Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
XII. Организация ввода-вывода.doc
Скачиваний:
31
Добавлен:
27.03.2015
Размер:
100.86 Кб
Скачать

2. Ввод/вывод по прерыванию.

Напомним основные принципы обслуживания запросов прерывания от периферийных устройств

Периферийные устройства, при необходимости передачи информации в память компьютера, или ее приема от него, посылают в контроллер прерывания запрос прерывания в виде электрического сигнала. Эти запросы фиксируются в регистре запросов прерываний контроллера, а в процессор посылается общий запрос прерывания – сигнал INTR, который определяет наличие в данный момент хотя бы одного незамаскированного запроса прерывания от периферийных устройств. Процессор, в конце цикла выполнения каждой очередной команды опрашивает этот бит INTR и, в случае наличия разрешения приема запросов прерывания (IF = 1), приостанавливает процесс выполнения текущей программы и запоминает состояние процессора на данный момент времени (как минимум содержимое регистров CS, IP и регистра флагов Flags). После этого процессор посылает контроллеру прерывания сигнал готовности выполнять процесс обслуживания прерывания – INTA (Interrupt Acknowledge). Получив этот сигнал, контроллер прерываний выдает процессору код типа прерывания от источника, который имеет наивысший приоритет изо всех принятых к этому времени запросов на прерывания. Этот код представляет собой 8-ми разрядное слово, определяющее логический адрес (вектор) процедуры обработки данного прерывания, хранящийся в таблице векторов прерывания, расположенной в первом килобайте адресного пространства оперативной памяти.

Получив код типа прерывания, процессор по указанному коду извлекает логический адрес процедуры, формирует из него физический адрес и передает управление процедуре обслуживания данного прерывания. А эта процедура заключается в передаче в периферийное устройство, запросившее прерывание, или приеме из периферийного устройства адресуемых данных. Таким образом, ввод/вывод по прерываниям позволяет существенно сократить непроизводительное время процессора, затрачиваемое на опрос и ожидание готовности периферийных устройств к приему или выдачи информации. Однако сам процесс ввода или вывода происходит под управлением процессора и, следовательно, при операциях ввода/вывода процессор все равно отвлекается от своей основной обязанности – обработки информации. Поэтому, когда приходится вводить или выводить большие объемы данных, например, при обмене информации с дисками при свопинге, или при одновременном вводе больших объемов данных при проведении научно-технических экспериментов, то отвлечение процессора от вычислительных задач, особенно при мультипрограммном режиме работы процессора, крайне нежелательно. При этом следует учитывать, что обмен большими объемами информации осуществляется всегда блоками между периферийными устройствами и оперативной памятью компьютера.

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

3. Ввод/вывод с прямым доступом к памяти.

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

Прямой доступ к памяти называют также обменом информацией по каналам DMA (Direct Memory Access).

Напомним, что пересылка слова информации между периферийным устройством и памятью, или между двумя областями памяти в предыдущих описанных способах обмена проходит в два этапа. На первом этапе процессор получает это слово из памяти или периферийного устройства и записывает в свой регистр (AL, AX, EAX). На втором этапе он записывает этот байт в место назначения. Этот способ, характерный как для программно-управляемого обмена, так и при обмене по прерыванию, имеет два недостатка:

- во время перемещения слова процессор не может заниматься ничем другим;

- на перемещение слова требуется два шага.

Это кажется мелочью, но если нужно переместить не одно слово, а целый блок это становится существенным. А обмен информацией с такими периферийными устройствами как HDD, FDD, CD и DVD – накопителями, а также Streamer’ами, осуществляется, как правило, большими массивами данных (блоками) и с большой скоростью. Звуковые карты также очень интенсивно пересылают блоки байт, и в настоящее время широко используются такие периферийные интерфейсы, как USB, Fire Wire и др. Кроме того, следует учесть, что большой объем пересылок информации необходим и при осуществлении регенерации оперативной памяти.

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

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

Контроллер DMA, таким образом, при обмене информацией берет на себя целый ряд вспомогательных операций, таких как:

- буферизация данных;

- преобразование форматов данных;

- формирование очередного адреса в памяти;

- подсчет количества слов переданных данных;

и т.п.

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

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

В заключение следует, однако, напомнить, что программно-управляемый ввод/вывод, выполняемый командами REP INS/OUTS, может иметь производительность почти в 2 раза выше, чем обмен по каналам DMA. Поэтому часто обмен информацией с жесткими дисками (винчестерами) выполняется с помощью этих команд, несмотря на то, что процессор, при этом, будет занят.

Рис.XIII.2 Иллюстрация принципа организации прямого доступа к

памяти.

159