Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Схемотехника и МП техника.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
25.54 Mб
Скачать

Iord#. Данные из порта считываются процессором во внутренний шинный буфер.

· Процессор генерирует шинный цикл записи в память, выставляя адрес ячейки и формируя сигнал

MEMWR#. Данные из внутреннего шинного буфера записываются в память.

· Эти шаги автоматически повторяются с изменением адреса памяти. Количество повторов

определяется содержимым регистра СХ, направление изменения адреса (инкремент-декремент) —

флагом DF. Во время передачи всего блока процессор занят.

Обобщенные временные диаграммы циклов чтения или записи памяти или ввода/вывода

приведены на рис. 2.25. Здесь условный сигнал CMD* изображает один из сигналов:

· SMEMRD#, MEMRD# - в цикле чтения памяти;

· SMEMWR#, MEMWR# - в цикле записи памяти;

· IORD# - в цикле чтения порта ввода/вывода;

· IOWR# - в цикле записи порта ввода/вывода.

Сигнал BCLC соответствует сигналу Bclock, сигналы SA(19: 0) – сигналам Addr (19: 0) а сигналы

SD(15 : 0) – сигналам Data(15 : 0).

В каждом из рассматриваемых циклов активными (с низким уровнем) могут быть только сигналы

(сигнал) лишь из одной строки данного списка. (В циклах прямого доступа к памяти это правило не

соблюдается.) По адресованному ему спаду сигнала чтения устройство должно выдать на шину

данных содержимое адресуемой ячейки и удерживать его, пока не произойдет подъем данного

сигнала. Во время циклов записи процессор выставляет действительные данные несколько позже

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

по подъему сигнала записи. Обращение к портам ввода/вывода отличается тем, что сигналы LA[32:17]

не используются.

Рис. 2.25. Временные диаграммы циклов чтения или записи на шине ISA

Высокоскоростные режимы программного обмена PIO (Programmed

Input/output) с успехом применяются и в интерфейсе ide (ata). Эти режимы используют инструкции

блочной пересылки REP-INS/OUTS (используются в процессорах начиная с i80286), при которых

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

минимальное количество тактов системной шины. Скорость такого обмена превышает скорость

стандартного канала прямого доступа (DMA) Поскольку эту полную скорость периферийные

устройства воспринять обычно не могут, контроллер интерфейса «притормаживает» обмен до

разумных скоростей, определяемых режимом обмена. Параметры этих режимов, называемых PIO

Mode (Programmed input/output Mode — режимы программного ввода/вывода). В режимах 0, 1 и 2 синхронизация с устройством не предусматривается — считается, что оно

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

117

сигнал готовности от устройства. Режим PIO задается при инициализации контроллера интерфейса

АТА. Обмен в режиме PIO (Programmed Input/Output — программируемый ввод-вывод) выполн-

яется в виде следующих друг за другом операций чтения или записи в пространстве ввода-

вывода по адресу регистра данных. Традиционные режимы 0, 1 и 2 имеют временные пара-

142

метры, задаваемые только хост-адаптером. Для прогрессивных режимов АТА-2 (PIO Mode 3

и выше) устройство может затормозить обмен сигналом готовности IORDY. Программный

обмен на все время передачи блока занимает и процессор, и шину ИВВ хоста.

  1. Ввод/вывод в режиме прерываний: схемотехнические особенности формирования запроса.

Программный ввод-вывод с прерываниями программы является основным способом

организации ввода-вывода в ПЭВМ, мини- и микроЭВМ для ПУ малого и среднего быстродействия.

Для синхронизации процессов в ЦП и ПУ используется механизм прерываний, а управление

передачами данных и управляющей информации для ПУ осуществляется программно. Данные

передаются между регистрами ПУ и ЦП; пересылку данных в ОП осуществляет ЦП по адресу,

который он определил при выполнении программы драйвера. После выполнения каждой команды в

ЦП (рис. 3.4) производится анализ запроса прерываний, а при его наличии проверяется — разрешено

ли данное прерывание. При наличии разрешенного прерывания ЦП инициирует его обслуживание.

Маскирование прерываний позволяет защищать от прерываний так называемые критические

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

оказывать влияние изменение содержимого памяти, вызываемое процессом ввода.

Запрос прерывания может формироваться не только ПУ, но и по специальной команде ЦП. Все

запросы прерываний обрабатываются последовательно в соответствии с приоритетами. При

инициировании обработки прерываний вначале определяется источник запроса; если источником

запроса прерываний является ПУ, то управление передается соответствующему драйверу.

Существует несколько способов определения, от какого ПУ поступил запрос на прерывание; эти

способы сводятся к различным вариантам аппаратного и программного опроса ПУ. В результате

такого опроса программе обработки прерываний становится доступным адрес ПУ, по которому

вычисляется начальный адрес программы-драйвера; ей и передается управление. С этой целью в

большинстве микроЭВМ и ПЭВМ для каждого ПУ в основной памяти предусматривается по две

ячейки, хранящие векторы прерываний. Совокупность этих ячеек для всех ПУ образует область

«векторов». Вектор прерывания однозначно определяется адресом ПУ. В его ячейках хранится адрес

перехода к программе-драйверу для обслуживания данного ПУ а ,иногда информация о состоянии

программы и возврата. При программном вводе-выводе каждое прерывание позволяет передать между

ОП и ПУ один байт или одно слово данных. Параллельная работа ЦП и ПУ происходит только в

интервале между прерываниями. Обработка прерываний приводит к большим непроизводительным

затратам времени ЦП, что не позволяет использовать такую организацию ввода-вывода для быстрых

ПУ.