Организация программного обмена

Обмен с любым устройством, подключенным к Каналу независимо от типа устройства и его адреса, производится с помощью одного и того же набора операций.

Большая часть устройств представлена в адресном пространстве двумя регистрами: регистром состояния и регистром данных. Непосредственно передача данных производится через регистр данных.

Регистр состояния отражает состояние устройства и, кроме того, служит для управления устройством. Как правило, регистр состояния имеет длину 16 разрядов и содержит следующие поля:

– состояние устройства в данный момент: свободно или занято; если занято, то какую операцию выполняет;

– информация о возникновении ошибки при выполнении операции: нет ошибки или есть, если есть, то характер ошибки;

– бит запроса обслуживания, в некоторых случаях может быть совмещен с битом «свободен»;

– поле управления: бит запуска, бит маскирования прерываний, код операции.

Поле управления заполняется центральным процессором; остальные устанавливаются устройством и доступны процессору только для чтения.

Большинство устройств не использует всех разрядов регистра состояний, некоторые сложные устройства требуют более одного регистра состояния, например устройства управления внешней памятью.

Обмен информацией в Канале осуществляется с помощью трех операций: чтение операнда из памяти или регистра; запись операнда в память или регистр; чтение — пауза — запись. При каждом обращении процессор сообщает в Канал адрес, и после ответа устройства, содержащего объект с этим адресом (это может быть регистр или ячейка памяти), сообщает требуемую операцию. При операции чтения требуемые данные в Канал посылает устройство, при операции записи — процессор, при операции чтение — пауза — запись устройство посылает, а затем принимает из Канала информацию по тому же адресу, Большинство команд присваивания, адресуемых к памяти или регистрам внешних устройств, используют операцию чтение — пауза — запись для одного из операндов.