double arrow

Программно управляемый ввод-вывод


Глава 25. Методы управления вводом-выводом

Способы организации ввода-вывода

В компьютерах находят применение три способа организации ввода-вывода:

программно управляемый ввод-вывод;

ввод-вывод по прерываниям;

прямой доступ к оперативной памяти.

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

Ввод-вывод по прерываниям во многом совпадает с программно управляемым методом. Отличие состоит в том, что после выдачи команды ввода-вывода процессор не должен циклически опрашивать контроллер ПУ для выяснения состояния устройства. Вме­сто этого процессор может продолжать выполнение других команд до тех пор, пока не получит запрос прерывания от контроллера ПУ, извещающий о завершении выполнения ранее выданной команды ввода-вывода. Как и при программно управляемом вводе-выводе, процессор отвечает за извлечение данных из оперативной памяти (при выводе) и запись данных в оперативную память (при вводе).

Повышение, как скорости ввода-вывода,так и эффективности использования процессора, обеспечивает третий способ ввода-вывода — прямой доступ к оперативной памяти (ПДП). В этом режиме оперативная память и контроллер ПУ обмениваются информацией на­прямую, минуя процессор.

Программно управляемый ввод-вывод

Наиболее простым методом управления вводом-выводом является небуферированный программно управляемый ввод-вывод.В этом режимев каждом циклеобмена передается только одна порция данных. Это может быть 1, 2, 4 байта. Здесь ввод-вывод происходит под полным контролем процессора и реа­лизуется специальной процедурой ввода-вывода (драйвером периферийного устройства). В этой процедуре процессор, например, с помощью команды ввода-вывода сообщает контроллеру ПУ, а через него и устройству о предстоящей операции. Адрес контроллера ПУ, к которому производит­ся обращение, указывается в адресной части команды ввода или вывода. Контроллер ПУ исполняет затребованное действие, после чего устанавливает в единицу соответ­ствующий разряд в своем регистре состояния. Ничего другого, чтобы уведомить процессор, контроллер ПУ не предпринимает. Следовательно, для определения момента за­вершения операции или пересылки очередного элемента блока данных про­цессор должен периодически опрашивать и анализировать содержимое регис­тра состояния в контроллере ПУ.

В процедуре программно управляемого ввода блока данных с уст­ройства ввода данные читаются пословно. Для каждого чи­таемого слова процессор должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных контроллера ПУ, то есть доступно для считывания.

Алгоритм выполнения обмена под управлением программы приведен на рис. 25.1.

 
 


Рис. 25.1. Алгоритм выполнения обмена под управлением программы

Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного контроллера ПУ и конкретного ПУ. Существуют четыре типа команд ввода-вывода, которые может получить контроллер ПУ:

управление;

проверка;

чтение;

за­пись.

Команды управления используются для активизации ПУ и указания требуемой операции. Например, в устройство памяти на магнитном диске может быть выдана команда «Поиск дорожки». Для каждого типа ПУ харак­терны специфичные для него команды управления.

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

Команда чтения побуждает контроллер ПУ получить элемент данных из ПУ и занести его в буфер (регистр) данных. Процессор может получить этот элемент данных, запросив контроллер ПУ поместить его на шины данных внешнего интерфейса.

Команда записи заставляет контроллер ПУ принять элемент данных (байт, слово илидвойноеслово)с шин данных внешнего интерфейса, записать его в буфер данных и затем переслать его в ПУ.

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

Из приведенного описания явно виден основной недостаток программно управляемого ввода-вывода — неэффективное использование процессора из-за ожидания готовности очередной порции информации. В течение всего времени ожидания готовности ПУ процессор не выполняет никаких иных по­лезных действий. Кроме того, пересылка даже одной порции данных (например, слова) тре­бует выполнения нескольких команд. Процессор должен тратить время на анализ разрядов состояния ПУ, запись в контроллер ПУ разрядов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно ска­зывается на эффективности ввода-вывода.

Главным аргументом в пользу программно управляемого ввода-вывода явля­ется простота контроллера ПУ, поскольку основные функции по управлению вводом-выводом берет на себя процессор. При одновременной работе с несколькими ПУ приоритет устройств легко изменить программными средствами (последовательностью опроса). Наконец, подключение к подсистеме ввода-вывода новых внешних устройств или отключение ранее подключенных также реализуется без особых сложностей.


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