Процессоры. Система команд ЭВМ. Устройства управления. Организация внутрипроцессорных систем ввода-вывода информации, страница 18

Прежде всего, о том, почему прямой доступ необходим.

Прерывания экономят время. Для сравнительно медленно действующих устройств (дисплеи, печать и т.п.) обмен может быть в режиме прерываний посимвольный, т.е. программа обслуживания прерывания используется при передаче каждой величины.

Пусть время выполнения одной команды – 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.

            Как и в случае прерывания, ПДП может быть возложен на программируемый контроллер ПДП с широкими функциями выбора приоритетов, контроля и т.п.