Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 25. Методы управления вводом-выводом.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
123 Кб
Скачать
☆

25.3. Ввод-вывод по прерываниям

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

Рис. 25.2. Алгоритм обработки прерывания в процессоре

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

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

Обмен очередной порцией данных происходит по команде «Ввод» из процессора. Контроллер внешнего интерфейса ПУ помещает информацию из выходного буфера на шины данных внешнего интерфейса. После выдачи очередной порции информации контроллер ПУ готов к следующему сеансу обмена.

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

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

Рис. 25.3. Алгоритм операции обмена по прерываниям

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

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

Хотя ввод-вывод по прерываниям эффективнее программно управляемого, оба эти метода страдают двумя недостатками:

темп передачи при вводе-выводе ограничен скоростью, с которой процессор в состоя­нии опросить и обслужить устройство;

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

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

Рис. 25.4. Обобщенная структура канала прямого доступа

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

вида операции (чтение, запись, размер порции обмена и т.п.);

адреса периферийного устройства;

адреса начальной ячейки блока оперативной памяти, откуда будет извлекаться или куда бу­дет вводиться информация;

количества порций данных, подлежащих чтению или записи.

Первый параметр определяет направление пересылки данных: из оперативной памяти в ПУ или наоборот. За исходную точку обычно принимается оперативную память, поэтому под чтением снимают считывание данных из оперативной памяти и выдачу их в устройство вывода, а под записью — прием данных из ПУ и запись в оперативную память. Вид операции запоминается в устройстве управления контроллера.

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

Третий параметр — адрес начальной ячейки — хранится в регистре адреса (РА) контроллера. После передачи каждой порции обмена содержимое РА автоматически увеличивается на единицу, то есть в нем формируется адрес следующей порции данных в оперативной памяти.

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

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

После пересылки каждой порции данных логика управления прибавляет единицу к содержимому РА (формирует адрес следующей ячейки оперативной памяти) и уменьшает на единицу содержимое СД (ведет подсчет переданных порций).

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