Программно-управляемый ввод/вывод.
Прямой доступ.
Внешние устройства (принтер, клавиатура и др.) подключаются к
системному интерфейсу через специальные устройства - контроллеры (адаптеры).
Каждый контроллер имеет в своем составе ряд программно-доступных регистров (как
минимум имеет хотя бы регистр данных, регистр состояния и регистр управления).
Каждый регистр имеет свой индивидуальный адрес, по которому процессор может
обратиться и прочитать или записать в регистр (через регистр данных - данные,
из регистра состояния - прочитать информацию о состоянии устройства и
контроллера, в регистр команд - записать команду контроллеру и т.п.). Каждый
контроллер имеет свой набор команд. Получив команду от процессора, выполняющего
программу ввода-вывода, контроллер отрабатывает команду автономно, управляя
внешним устройством через "малый" интерфейс между устройством и
контроллером. Контроллер, отрабатывая принятую от процессора команду,
пересылает во внешнее устройство команды (свои), данные и читает из устройства
состояния, данные. Команды и состояния обычно представляют собой высокий или
низкий уровень напряжения в соответствующей линии "малого"
интерфейса, импульс или последовательность импульсов в соответствующей линии
"малого" интерфейса. Кроме того, контроллер может выполнять ряд
вспомогательных аппаратных функций инициируемых аппаратными сигналами или
записью управляющей информации в его программно-доступный регистр (например, «сброс»).
Существуют простые контроллеры и более сложные (интеллектуальные) контроллеры,
выполняющие более сложные аппаратные функции и команды.
Процессор управляет внешним устройством, выполняя соответствующую
программу ввода/вывода, где он с помощью команд IN, OUT (чтение порта, запись в
порт) имеет доступ к программно-доступным регистрам контроллера. В регистр
управления процессор записывает команду, из регистра состояния читает
информацию о состоянии устройства и контроллера, в регистр данных записывает
выводимые на устройство данные, или читает из регистра данных считываемую с
устройства информацию. Возможны два
способа организации программного обмена с внешними устройствами:
1. Обмен с
опросом готовности устройства. Выполняя программу ввода-вывода, процессор,
запустив в контроллере операцию, циклически читает регистр состояния контроллера.
Он ожидает появления (в соответствующем разряде регистра состояния) признака
готовности к обмену данными с процессором. При появлении этого признака в
регистре состояния, процессор, с помощью команды OUT, осуществляет запись в
регистр данных (при выводе на устройство), или выполняет чтение информации из
регистра данных контроллера с помощью команды IN (при вводе с устройства).
После чего запускает в контроллере следующую операцию и т. д.;
2. Обмен по запросам на
обслуживание устройства (запросам на маскируемое прерывание). При
выполнении программы процессор, запустив на контроллере операцию для считывания
регистра состояния, не ожидает готовности контролера к обмену данными. Он
продолжает выполнять полезную программу. Контроллер внешнего устройства в
случае полной готовности к обмену данными с процессором выдает на
соответствующую линию IRQ сигнал запроса на обслуживание. Процессор, через
выполнение процедуры прерывания по сигналу IRQ (в ее выполнении участвует
специальный контроллер - контроллер прерываний), переходит на выполнение
программы ввода/вывода для данного устройства. Эта программа осуществляет обмен
данными через регистр данных контроллера и запускает в контроллере следующую
операцию и т. д. Процессор возвращается из программы обслуживания к выполнению
прерванной программы через выполнение команды IRET (команда "возврат из
прерывания", на которой заканчивается программа ввода/вывода) и т. д.
Прямой доступ (DMA - Direct Memory
Access - прямой доступ к памяти). Прямой
доступ - это способ обмена между внешним устройством и динамической памятью,
при котором управление операциями обмена по интерфейсу между регистром данных
устройства и последовательно расположенными ячейками памяти осуществляет контроллер прямого доступа к памяти, а
микропроцессор в это время может исполнять программу. Прямой доступ может
осуществляться двумя способами: обычным DMA и busmastering DMA. В первом случае
используется стандартный контроллер прямого доступа (8 каналов). Во втором
случае, функции аналогичные функциям контроллера прямого доступа, выполняет
аппаратура, расположенная в составе
адаптера устройства (например, контроллер жестких дисков поддерживает режим
Bus Master IDE).
Режим DMA позволяет освободить процессор от рутинной пересылки данных
между внешними устройствами и памятью, отдав эту работу контроллеру DMA;
процессор в это время может обрабатывать другие данные или другую задачу в
многозадачной системе.