double arrow

Опрос устройств

Структура контроллера устройства

Контроллеры устройств ввода-вывода весьма различны как по своему внутреннему строению, так и по исполнению (от одной микросхемы до специализированной КС со своим процессором, памятью и т.д.), поскольку им приходится управлять совершенно разными приборами. Не вдаваясь в детали этих различий, выделим некоторые общие черты контроллеров, необходимые им для взаимодействия с КС.

Обычно контроллер имеет следующие внутренние регистры:

- регистры состояния;

- регистры управления;

- регистры входных данных;

- регистры выходных данных.

1) Регистр состояния содержит биты, значение которых определяется состоянием устройства ввода-вывода, и которые доступны только для чтения КС. Эти биты индицируют завершение выполнения текущей команды на устройстве (бит занятости), наличие очередного данного в регистре выходных данных (бит готовности данных), возникновения ошибки при выполнении команды (бит ошибки) и т.д.

2) Регистр управления получает данные, которые записываются КС для инициализации устройства ввода-вывода или выполнения очередной команды, а также изменения режима работы устройства. Часть битов в этом регистре может быть отведена под код выполняемой команды, часть битов кодировать режим работы устройства, бит готовностикоманды свидетельствует о том, что можно приступить к ее выполнению.

3) Регистр выходных данных служит для помещения в него данных для чтения КС.

4) Регистр входных данных предназначен для помещения в него информации, которая должна быть выведена на устройство. Обычно емкость этих регистров не превышает ширину линии данных (а чаще всего меньше ее), хотя некоторые контроллеры могут использовать в качестве регистров очередь FIFO для буферизации поступающей информации.

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

Построив модель контроллера и учитывая операции чтения информации из порта и записи информации в порт, следует рассмотреть процесса взаимодействия устройства и процессора. Примером послужит команда вывода данных на внешнее устройство. В модели вывода информации выводимая информация помещается в регистр входных данных процессора, а проверка успешности вывода не производится. Тогда действиями, выполняемыми процессором и контроллером в случае команды вывода данных на внешнее устройство, являются следующие:

1) Процессор в цикле читает информацию из порта регистра состояний и проверяет значение бита занятости. Если бит занятости установлен, то это означает, что устройство еще не завершило предыдущую операцию, и процессор уходит на новую итерацию цикла. Если бит занятости сброшен, то устройство готово к выполнению новой операции и процессор переходит на следующий шаг.

2) Процессор записывает код команды вывода в порт регистр управления.

3) Процессор записывает данные в порт регистра входных данных.

4) Процессор устанавливает бит готовности команды. В следующих шагах процессор не задействован.

5) Когда контроллер замечает, что бит готовности команды установлен, он устанавливает бит занятости.

6) Контроллер анализирует код команды в регистре управления и обнаруживает, что это команда вывода. Он берет данные из регистра входных данных и инициирует выполнение команды.

7) После завершения операции контроллер обнуляет бит готовности команды.

8) При успешном завершении операции контроллер обнуляет бит ошибки в регистре состояния, при неудачном завершении команды устанавливает его.

9) Контроллер сбрасывает бит занятости.

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

На первом шаге (и, возможно, после шага 4) процессор ожидает освобождения устройства, непрерывно опрашивая значение бита занятости. Такой способ взаимодействия процессора и контроллера получил название polling или, в русском переводе, способа опроса устройств. Если скорости работы процессора и устройства ввода-вывода примерно равны, то это не приводит к существенному уменьшению полезной работы, совершаемой процессором. Если же скорость работы устройства существенно меньше скорости процессора, то указанная техника резко снижает производительность системы и необходимо применять другой архитектурный подход.


Сейчас читают про: