Прежде всего, о том, почему прямой доступ необходим.
Прерывания экономят время. Для сравнительно медленно действующих устройств (дисплеи, печать и т.п.) обмен может быть в режиме прерываний посимвольный, т.е. программа обслуживания прерывания используется при передаче каждой величины.
Пусть время выполнения одной команды – 5 нс. Допустим программа обработки прерывания, включая операции по сохранению содержимого регистров, идентификации и т.п., составляет 20 команд и в худшем случае выполняется за 100 нс. Тогда даже в том случае, когда периферийное устройство обращается с запросами 100 раз в секунду, на прерывания будет расходоваться лишь 1% машинного времени. Хорошо!
Но совсем иная картина складывается, когда ведется обмен с быстродействующими устройствами внешней памяти (дисками, магнитной памятью и др.). Информация на них хранится блоками до 8 Кбайт. Простейшие способы передачи данных оказываются непригодными в связи с большим временем ожидания доступа (8-250 мкс – для «винчестеров»), что связано с выполнением механических операций. Прерывание? – Ну что ж… Даже для наиболее распространенного гибкого диска с ординарной плотностью записи время считывания (записи) 1 байта составляет 64 мкс. При двойной плотности, либо при жестких дисках оно и того меньше: 32, 16 мкс и менее. Но ведь это катастрофически мало при принятой длине программы прерывания. Что делать? Отказаться при считывании (но не при поиске!) блока данных от возвратов из прерываний? Тогда падает эффективность использования процессора и усложняется система прерываний.
Заметим, что быстродействие ОЗУ не является критичным (рабочий цикл 0.2-10 нс).
<150>
Каналом прямого доступа к памяти (ПДП) называют совокупность аппаратных средств, позволяющих осуществлять быстрый обмен данными между основной памятью и интерфейсом устройства ввода-вывода без участия процессора.
Обычно шиной ОЗУ управляет процессор, и вот именно канал ПДП способен временно брать на себя функции управления при передаче данных непосредственно между периферийным устройством и оперативной памятью.
Легко представить себе идеальный случай: с диска данные передаются с интервалом в 32 мкс; при рабочем цикле ОЗУ 2 мкс канал ПДП должен взять один цикл памяти из шестнадцати, т.е. из каждых шестнадцати циклов канал ПДП контролирует один, а пятнадцать пропускает для работы процессора с ОЗУ. В этом примере замедление составило бы не более 6,25% (лишь если процессор все время обращается к ОЗУ). Но здесь в тракте обмена нужна строгая аппаратная синхронизация, а ведь реально команды выполняются разное время. Тракт и шина ОЗУ оказываются сложными, дорогими. Здесь мы бы не пропустили у процессора ни одного такта.
Но ведь пропуск тактов процессора (изредка, в небольших дозах) лишь чуть дополнительно замедлит время выполнения программы, а на состояние процессора (его внутренних регистров) не влияет, не сможет исказить их содержимое.
Итак, существует две разновидности ПДП (по источнику синхронизирующего сигнала ПДП):
1) режим идентификации состояния памяти; передачи из канала ПДП происходят без информирования об этом процессора, но лишь тогда, когда процессор не обращается к памяти (процессор сообщает об этом, либо по обусловленной концепции работы процессора);
2) режим с пропуском тактов или «заёмом» тактов, при котором канал ПДП заставляет процессор на время отключиться от ОЗУ.
Как в первом, так и во втором режиме целесообразны и возможны совмещения внутренних операций процессора с передачами ПДП.
Рис. 3.3.4.1.
Аппаратная реализация каналов ПДП определяется особенностями ЭВМ и, главным образом, принятого интерфейса. Несколько слов об общих принципах работы в виде ГСА:
Рис. 3.3.4.2.
Как и в случае прерывания, ПДП может быть возложен на программируемый контроллер ПДП с широкими функциями выбора приоритетов, контроля и т.п.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.