Организация асинхронного обмена в БЭВМ. Пример программы. Временные издержки асинхронного обмена

Асинхронный обмен — это способ программно-управляемого ввода-вывода, при котором процессор и внешнее устройство работают с разными скоростями. Поэтому перед выполнением обмена процессор должен убедиться, что устройство готово к передаче данных.

Готовность внешнего устройства определяется по специальному флагу в регистре состояния КВУ (6 бит SR). Процессор циклически (spin-loop) опрашивает этот флаг до тех пор, пока устройство не станет готовым. После этого выполняется команда ввода или вывода данных.

Алгоритм асинхронного обмена (ввод):

  1. Проверить флаг готовности устройства (6 бит SR).
  2. Если устройство не готово — продолжать ожидание.
  3. Если готово, процесор выходит из цикла ожидания и выполняет команду ввода.
  4. Процессор выставляет на шину адрес контроллера. Дешифратор адреса активирует ЛУ контроллера.
  5. ЛУ подает ток на приёмо-передатчики регистра DR.
  6. Байт из регистра DR записывается по системной шине данных в младшие 8 бит регистра AC процессора.
  7. ЛУ контроллера мгновенно подает импульс на сброс 6-м бита SR обратно в 0, переводя устройство в режим ожидания нового символа.

Пример программы асинхронного ввода:

RES:  WORD 0

START: CLA
WAIT: IN 5       
      AND #0x40
      BEQ WAIT
      IN 4
      ST RES
      HLT

Временные издержки асинхронного обмена

Недостатком асинхронного обмена является необходимость постоянного опроса флага готовности устройства. Во время ожидания процессор выполняет spin-loop и не может заниматься полезной обработкой данных. В результате часть процессорного времени расходуется впустую, особенно при работе с медленными внешними устройствами.