Программно управляемый ввод-вывод
Способы организации ввода-вывода
В компьютерах находят применение три способа организации ввода-вывода:
программно управляемый ввод-вывод;
ввод-вывод по прерываниям;
прямой доступ к оперативной памяти.
При программно управляемом вводе-выводе все связанные с этим действия происходят по инициативе процессора и под его полным контролем. Процессор выполняет программу, которая обеспечивает прямое управление процессом ввода-вывода, включая проверку состояния устройства, выдачу команд ввода-вывода. Выдав в контроллер ПУ команду, процессор должен ожидать завершения ее выполнения, и, поскольку он работает быстрее, чем ПУ, это приводит к потере времени.
Ввод-вывод по прерываниям во многом совпадает с программно управляемым методом. Отличие состоит в том, что после выдачи команды ввода-вывода процессор не должен циклически опрашивать контроллер ПУ для выяснения состояния устройства. Вместо этого процессор может продолжать выполнение других команд до тех пор, пока не получит запрос прерывания от контроллера ПУ, извещающий о завершении выполнения ранее выданной команды ввода-вывода. Как и при программно управляемом вводе-выводе, процессор отвечает за извлечение данных из оперативной памяти (при выводе) и запись данных в оперативную память (при вводе).
Повышение, как скорости ввода-вывода,так и эффективности использования процессора, обеспечивает третий способ ввода-вывода — прямой доступ к оперативной памяти (ПДП). В этом режиме оперативная память и контроллер ПУ обмениваются информацией напрямую, минуя процессор.
Программно управляемый ввод-вывод
Наиболее простым методом управления вводом-выводом является небуферированный программно управляемый ввод-вывод.В этом режимев каждом циклеобмена передается только одна порция данных. Это может быть 1, 2, 4 байта. Здесь ввод-вывод происходит под полным контролем процессора и реализуется специальной процедурой ввода-вывода (драйвером периферийного устройства). В этой процедуре процессор, например, с помощью команды ввода-вывода сообщает контроллеру ПУ, а через него и устройству о предстоящей операции. Адрес контроллера ПУ, к которому производится обращение, указывается в адресной части команды ввода или вывода. Контроллер ПУ исполняет затребованное действие, после чего устанавливает в единицу соответствующий разряд в своем регистре состояния. Ничего другого, чтобы уведомить процессор, контроллер ПУ не предпринимает. Следовательно, для определения момента завершения операции или пересылки очередного элемента блока данных процессор должен периодически опрашивать и анализировать содержимое регистра состояния в контроллере ПУ.
В процедуре программно управляемого ввода блока данных с устройства ввода данные читаются пословно. Для каждого читаемого слова процессор должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных контроллера ПУ, то есть доступно для считывания.
Алгоритм выполнения обмена под управлением программы приведен на рис. 25.1.
Рис. 25.1. Алгоритм выполнения обмена под управлением программы
Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного контроллера ПУ и конкретного ПУ. Существуют четыре типа команд ввода-вывода, которые может получить контроллер ПУ:
управление;
проверка;
чтение;
запись.
Команды управления используются для активизации ПУ и указания требуемой операции. Например, в устройство памяти на магнитном диске может быть выдана команда «Поиск дорожки». Для каждого типа ПУ характерны специфичные для него команды управления.
Команда проверки применяется для проверки различных ситуаций, возникающих в ПУ в процессе ввода-вывода. С помощью таких команд процессор способен выяснить, включено ли ПУ, готово лионо к работе, завершена ли последняя операция ввода-вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния контроллера ПУ.
Команда чтения побуждает контроллер ПУ получить элемент данных из ПУ и занести его в буфер (регистр) данных. Процессор может получить этот элемент данных, запросив контроллер ПУ поместить его на шины данных внешнего интерфейса.
Команда записи заставляет контроллер ПУ принять элемент данных (байт, слово илидвойноеслово)с шин данных внешнего интерфейса, записать его в буфер данных и затем переслать его в ПУ.
Если к контроллеру ПУ подключено несколько ПУ, то в процедуре ввода-вывода нужно производить циклический опрос всех устройств, с которыми в данный момент производятся операции ввода-вывода.
Из приведенного описания явно виден основной недостаток программно управляемого ввода-вывода — неэффективное использование процессора из-за ожидания готовности очередной порции информации. В течение всего времени ожидания готовности ПУ процессор не выполняет никаких иных полезных действий. Кроме того, пересылка даже одной порции данных (например, слова) требует выполнения нескольких команд. Процессор должен тратить время на анализ разрядов состояния ПУ, запись в контроллер ПУ разрядов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно сказывается на эффективности ввода-вывода.
Главным аргументом в пользу программно управляемого ввода-вывода является простота контроллера ПУ, поскольку основные функции по управлению вводом-выводом берет на себя процессор. При одновременной работе с несколькими ПУ приоритет устройств легко изменить программными средствами (последовательностью опроса). Наконец, подключение к подсистеме ввода-вывода новых внешних устройств или отключение ранее подключенных также реализуется без особых сложностей.
Дата добавления: 2020-08-31; просмотров: 474;