Аппаратные интерфейсы ПК

         

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


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

Для интерфейса ПУ каждый канал DMA представляется парой сигналов: запрос об­мена — DRQx и подтверждение обмена — DACKx#, где х — номер используемого ка­нала. На рис. 6.3 приведена диаграмма стандартного цикла передачи байта (для 8-битного канала) или слова (для 16-битного) от ПУ в память по каналу DMA. Цикл передачи блока байтов или слов в память будет выглядеть следующим образом.

1.   По сигналу DRQx контроллер DMA запрашивает управление шиной и дожидается его предоставления процессором (и другими контроллерами шины).

2.   Контроллер выставляет адрес ячейки памяти и формирует в одном цикле шины

сигналы IOR#, DACKx* и MEMW#. Адрес на всех линиях, включая LA[23:17], дей­ствителен во время всего цикла (защелкивание не требуется), BALE=H в тече­ние всего цикла. Сигнал DACKx# указывает на то, что операция выполняется для канала х, a IOR# — на направление в канале (для пересылки из памяти в канал использовался бы сигнал IOW#). Чтобы по сигналу IOR# не было ложного чте­ния (по IOW# — ложной записи) порта, адрес которого совпадает с адресом памяти,  присутствующим в цикле DMA, контроллер высоким уровнем сигнала

158

Глава 6. Шины и карты расширения

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

3.    Контроллер модифицирует счетчик адреса и повторяет шаги 1-2 для каждого следующего сигнала DRQx, пока не будет исчерпан счетчик циклов. В последнем цикле обмена контроллер формирует общий сигнал окончания ТС (Terminate Count), который может быть использован устройством для формирования сиг­нала аппаратного прерывания.




Рис. 6.З. Цикл обмена DMA

Диаграмма обратной пересылки (из памяти в ПУ) отличается только тем, что на месте сигнала IOR# будет сигнал MEMR#, а на месте MEMW* — сигнал IOW#. Направление обмена и параметры режима задаются программированием кон­троллера DMA.

Цикл DMA, и так довольно длинный, может быть растянут устройством с помо­щью сигнала IOCHRDY (но сократить его сигналом OWS# невозможно). Запраши­вать удлинение цикла может только адресованная память — подразумевается, что когда ПУ выставляет запрос DRQx, оно уже должно быть готово к обмену.

На 16-битной шине ISA доступно 7 каналов DMA: четыре 8-битных (номера 0-3) и три 16-битных (5-7), подключенные к первичному и вторичному контроллерам соответственно. Канал 4 используется для каскадирования (соединения контрол­леров). На 8-битном слоте доступны только четыре 8-битных канала (в XT только 3 — канал 0 требовался для регенерации памяти).

Кроме приведенного на рисунке режима одиночной передачи возможны и иные, описанные в п. 12.4.

6.1. Шины ISA, EISA и PC/104                                                                                                 159

Напомним, что по 8-битным каналам DMA за один сеанс настройки контроллера можно передавать не более 64К байт данных, начинающихся с любого адреса (но не пересекая границ страниц, см. п. 12.3.2 и 12.5). По 16-битным каналам за сеанс можно передавать не более 64К слов данных, начинающихся с четного адреса, и границы страниц иные. Используя DMA в режимах, отличных от одиночного, длительность непрерывной передачи не должна превышать 15 мкс (для обесцече­ния регенерации памяти).


Содержание раздела