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

 

1. При множественных линиях запроса ЦП начинает с линии, имеющей наивысший приоритет.

2. В варианте программной идентификации приоритет модулей определяется очередностью их проверки.

3. Для цепочечного метода приоритет модулей определяется порядком их следования в цепочке.

 

Вопрос № 1.3. «Ввод-вывод с использованием DMA (прямой доступ к памяти)»

 

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

 

1. темп передачи при вводе/выводе ограничен скоростью, с которой ЦП в состоянии опросить и обслужить устройство;

2. ЦП вовлечен в управление передачей, для каждой пересылки он должен выполнить определенное количество команд.

 

Когда пересылаются большие объемы данных, требуется более эффективный способ ввода/вывода — прямой доступ к памяти.

Прямой доступ к памяти предполагает наличие на системной шине дополнительного модуля — контроллера прямого доступа к памяти, способного брать на себя функции ЦП по управлению системной шиной и обеспечивать прямую пересылку информации между оперативной памятью и внешними устройствами без участия центрального процессора.

В сущности, контроллер прямого доступа к памяти — это и есть модуль ввода/вывода, реализующий режим прямого доступа к памяти.

 

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

 

1. вида запроса (чтение или запись);

2. адреса устройства ввода/вывода;

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

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

 

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

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

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

Количество слов, подлежащих чтению или записи. Размер блока в словах заносится в счетчик данных контроллера. После передачи каждого слова содержимое счетчика данных автоматически уменьшается на единицу. Нулевое состояние счетчика данных свидетельствует о том, что пересылка блока данных завершена.

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

 

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

 

Прямой доступ к памяти (DMA)

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

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

DMA-контроллер может получать доступ к системной шине независимо от центрального процессора.

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

· регистр адреса памяти,

· счетчик байтов

· один или более управляющих регистров.

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

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