При обмене с принтером «по запросам на обслуживание от устройства» (запросам на маскируемое прерывание), процессор, выполняя программу вывода, запустив в контроллере принтера операцию, не ожидает готовности контролера к обмену данными. Он продолжает выполнять полезную программу. Контроллер принтера, в случае полной готовности к обмену данными с процессором, выдает на соответствующую линию IRQ (например, для принтера — IRQ7) сигнал запроса на обслуживание, который поступает на вход контроллера прерываний (который находится в микросхеме «южного моста»). Контроллер прерываний выдает на вход INTR процессора активный сигнал, а процессор, через выполнение процедуры прерывания по сигналу INTR (в ее выполнении участвуют контроллер прерываний и контроллер шины), переходит на выполнение программы вывода для данного устройства. Эта программа осуществляет запись данных в регистр данных контроллера и запись команды в регистр управления, т. е. запускает в контроллере следующую операцию вывода. Процессор в конце программы обслуживания устройства выбирает и выполняет команду IRET (возврат из прерывания, которой заканчивается программа ввода/вывода), и возвращается к выполнению прерванной ранее программы и т. д.
Программный обмен с жесткими дисками (PIO). Все современные контроллеры накопителей на жестких магнитных дисках, как правило, поддерживают несколько способов программного обмена данными с оперативной памятью компьютера (РIO-0 — РIO-4). Режим PIO-0 является самым медленным его поддерживают все IDE диски (в каждом цикле длительность примерно 600 не передаются 16 бит данных, скорость передачи — 3,3 Мбайт/с). Более скоростные режимы PIO-3, PIO-4 (стандарта АТА-2) с использованием блочных передач данных поддерживают более высокую скорость обмена. Пример минимального набора команд, который выполняет любой контроллер жестких дисков, поддерживающий режим PIO-0 приведен в табл. 2. Все контроллеры жестких магнитных дисков обязаны поддерживать режим PIO Mode 0, в котором всегда считывается блок параметров идентификации. В блоке имеются поля, описывающие режим обмена по умолчанию и более эффективные режимы обмена, поддерживаемые устройством.
Командой Set Features — установка свойств (код команды -EFh) можно изменить параметры режима.
Таблица 1. Управление режимом обмена
Биты [7:0] | Режим обмена |
00000000 | Режим PIO, принятый для устройства по умолчанию |
00000001 | Режим PIO, принятый для устройства по умолчанию; запрет IORDY |
00001 nnn | Режим PIO mode х с сигналом 10RDV |
00010 nnn | Режим одиночного DMA mode х |
00100nnn | Режим множественного DMA mode х |
01000nnn | Режим ULTRA DMA mode х |
10000nnn | Зарезервированы |
ПРИМЕЧАНИЕ. х определяется значением поля nnn. |