На рис. 11.2 представлена логическая схема прямого доступа к памяти. Устройство прямого доступа к памяти способно дублировать функции процессора, в частности получать от процессора управление системой. Эта возможность необходима ему для передачи данных по системной шине — как в память, так и из нее. Обычно модуль DMA использует системную шину лишь в том случае, когда процессор не нуждается в ней (в противном случае ему придется вынудить процессор временно приос тановить свою работу). Этот способ наиболее распространен и именуется захватом цикла, так как модуль DMA выполняет захват цикла шины
Рис. 11.2. Блок-схема прямого доступа к памяти
Рассмотрим работу схемы прямого доступа к памяти. В тот момент, когда процессору необходимо произвести считывание или запись блока данных, он выполняет запрос к модулю DMA, передавая ему следующую информацию.
• Какая из операций — чтения или записи — запрашивается. В зависимости от этого будет использоваться либо управляющая линия чтения, либо записи между процессором и модулем DMA.
• Адрес используемого устройства ввода-вывода, подключенного к данных.
• Начальный адрес считываемой (или записываемой) области памяти, хранящийся в адресном регистре модуля DMA.
• Какое количество слов необходимо прочесть или записать. Эта величина хранится в регистре счетчика данных модуля DMA.
После этого процессор продолжает свою работу с другим заданием, передав управление операцией ввода-вывода модулю DMA. В свою очередь модуль DMA, минуя процессор, передает весь блок данных непосредственно в память (или считывает данные из нее). После выполнения передачи данных модуль DMA посылает процессору сигнал прерывания. Таким образом, процессор включается в этот процесс лишь в начале и в конце передачи данных (рис. 1.19,в).
На рис. 11.3 показаны позиции цикла команд, в которых работа процессора может быть приостановлена. В любом случае приостановка работы процессора происходит только при необходимости использования шины. После этого устройство
DMA выполняет передачу одного слова и возвращает управление процессору. Обратите внимание на то, что это не прерывание: процессор не сохраняет контекст с переходом к выполнению другого задания. Процессор просто делает паузу на время одного цикла шины. Общее влияние DMA состоит в несколько более замедленной работе процессора. Тем не менее для передачи большого блока данных модулем ввода-вывода метод прямого доступа к памяти более эффективен, чем метод с использованием прерываний или программируемый ввод-вывод.
Рис. 11.3. DMA и точки прерывания цикла команд
Конфигурирование прямого доступа к памяти может быть выполнено различными способами; некоторые из них представлены на рис. 11.4. В первом примере все модули подключены к одной и той же системной шине. Модуль DMA, выступающий в качестве дублера процессора, использует программируемый ввод-вывод для обмена данными между памятью и устройством ввода-вывода с участием модуля DMA. Несмотря на достоинство такой конфигурации, заключающееся в относительной дешевизне, она малоэффективна. Поскольку используется программируемый ввод-вывод под управлением процессора, на передачу каждого слова затрачиваются два цикла шины (после запроса на передачу следует передача данных).
Число необходимых циклов шины может быть в значительной степени уменьшено путем интегрирования DMA и функций ввода-вывода. При этом подразумевается (как показано на рис. 11.4,6) наличие магистрали между модулем DMA и одним или несколькими устройствами ввода-вывода без подключения . системной шины. Логический узел DMA на самом деле может быть как частью модуля ввода-вывода, так и отдельным модулем, контролирующим один или несколько устройств ввода-вывода. Эту идею можно развивать путем добавления модулей ввода-вывода к модулю DMA с использованием шины ввода-вывода (рис. 11.4,в). Такая схема позволяет свести количество интерфейсов ввода-вывода в модуле DMA к одному и предусматривает легкое расширение этой конфигурации. Во всех представленных случаях (рис. 11.4,6 и в) совместно используемая модулем DMA, процессором и основной памятью системная шина служит модулю DMA только для обмена данными с памятью и обмена управляющими сигналами — с процессором. Обмен данными между DMA и модулями ввода-вывода происходит вне системной шины.
Рис. 11.4. Альтернативные конфигурации прямого доступа к памяти