Лекции.Орг


Поиск:




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




 

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

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

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

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

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

 

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

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

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

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

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

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

 

Прямое управление шиной

 

В случае прямого управления шиной (bus mastering) инициатором обмена становится контроллер какого-либо устройства или интерфейса, но не процессор и не канал DMA. Прямое управление позволяет контроллеру, не отвлекая центральный процессор, выполнять обмен данными с высокой производительностью и, возможно, по более сложным правилам и без ограничений, присущих каналам DMA (невозможность пересечения границы страницы). Контроллер, как правило, обеспечивает обмен данными между системным ОЗУ и своим периферийным устройством или интерфейсом. В принципе он может общаться с памятью или портами другого абонента шины, но для упрощения организации всех информационных связей центральным «перевалочным пунктом» все-таки является системное ОЗУ. Получить право на управление шиной ISA может только контроллер, подключенный к 16- битному слоту. Для арбитража запросов на управление шиной от нескольких источников — центрального процессора, контроллера DMA и контроллеров- абонентов шины используется второй контроллер DMA (каналы 5–7). Устройство, желающее получить управление, выставляет запрос DRQx (x=5…7), по которому контроллер DMA запрашивает управление шиной у центрального процессора. Получив подтверждение от процессора, контроллер устанавливает сигнал AEN (для блокировки дешифрации адреса портов) и формирует сигнал DACKx. Получив этот сигнал, устройство устанавливает низкий уровень на линии MASTER#, по которому контроллер шины DMA снимает сигнал AEN и освобождает линии командных сигналов. Таким образом, управление шиной переходит к данному устройству до тех пор, пока оно не снимет запрос DRQx. В режиме прямого управления шиной ISA устройство становится полновластным и бесконтрольным хозяином как самой шины, так и системы в целом (через мост шины). Если шина захватывается более чем на 15 мкс, контроллер устройства должен заботиться о регенерации памяти (см. ниже). Устройства (и память), к которым обращается задатчик шины, могут потребовать введения тактов ожидания сигналом IOCHRDY, и это требование должно удовлетворяться.

 

Регенерация памяти

 

Динамическая память, применяемая в компьютере в качестве системного ОЗУ, а также, возможно, находящаяся на картах расширения, требует регенерации — периодического обновления (refresh) всех строк матрицы. На системной плате всегда имеется контроллер регенерации памяти, в задачу которого входит регулярный перебор строк памяти с формированием специального цикла регенерации. Каждые 15 мкс контроллер регенерации формирует цикл регенерации (сигнал REFRESH#), диаграмма которого аналогична циклу DMA, но вместо чтения данных выполняется регенерация. В этом цикле считывания данных из микросхем памяти не производится, но стробы строк формируются (подробнее о методах регенерации см. в книге «Аппаратные средства IBM PC. Энциклопедия»). На шине ISA контроллер регенерации работает как нулевой канал DMA (в старых машинах он непосредственно и использовался). Каждые 15 мкс контроллер регенерации формирует сигнал REFRESH#, во время действия которого устанавливается AEN=H и BALE=H, формируется сигнал MEMR#, а на линиях SA[7:0] устанавливается адрес текущей регенерируемой строки. Диаграмма цикла регенерации аналогична циклу DMA, но сигнал REFRESH# указывает на то, что вместо чтения данных выполняется регенерация.

Если какое-либо устройство захватывает управление шиной более чем на 15 мкс, оно должно позаботиться о регенерации памяти. Для этого раз в 15 мкс оно должно вырабатывать сигнал REFRESH#, «отпуская» все адресные и управляющие сигналы. При этом контроллер шины, расположенный на системной плате и отвечающий за регенерацию памяти, сформирует очередной адрес на линиях SA[7:0] и сигнал MEMR#, а также установит AEN=0 и BALE=1 на все время цикла регенерации. Если устройство, надолго захватившее шину, сигнал регенерации не формирует, то запросы регенерации накапливаются в контроллере регенерации, и, как только управление будет возвращено, эти запросы будут немедленно удовлетворены. Однако число безнаказанно пропущенных запросов ограничено свойствами динамической памяти, и очередь запросов в контроллере регенерации может ограничиваться, например, четырьмя.

 

Прерывания

 

На шине ISA имеются линии запросов маскируемых и немаскируемых аппаратных прерываний. Линии запросов маскируемых прерываний IRQ2-IRQ7 поступают на входы первичного контроллера прерываний, IRQ9-IRQ15 — на входы вторичного. Контакт B4 (IRQ2/9) запрос IRQ2 вырабатывал только у машин PX/XT. На всех современных машинах (класса AT) он является запросом IRQ9, хотя на многих адаптерах (всех 8-битных) он обозначается как IRQ2. Приоритеты у запросов убывают по порядку IRQ9…IRQ15 и далее IRQ3…IRQ7. Запросы от конкретных линий могут быть замаскированы записью в регистры контроллера (см. п. 12.4), общий запрет/разрешение осуществляется манипулированием флагом разрешения прерываний (IF) процессора. Устройство может использовать одну или несколько линий запроса прерывания. На используемой линии запроса устройство в покое должно формировать низкий уровень сигнала, а при возникновении условия прерывания устанавливать на нем высокий уровень запроса. Неиспользуемые линии должны быть электрически отключены от шины или же их выходные формирователи должны переводиться в третье состояние. Переход из низкого в высокий уровень является сигналом для контроллера прерываний на формирование запроса прерывания к процессору. Устройство должно удерживать высокий уровень запроса до тех пор, пока к нему не обратится программа-обработчик прерывания, что будет означать не только обнаружение, но и правильную идентификацию источника запроса прерывания. Если запрос снят преждевременно, идентификация будет некорректной. Детально механизм обслуживания прерываний рассмотрен в п. 12.4.

Способ подачи сигнала прерывания, принятый в ISA, — чувствительность к уровню, причем к высокому, — имеет меньшую помехозащищенность, чем срабатывание по отрицательному перепаду, и отрезает путь к нормальному разделению (совместному использованию) линий запросов.

Линия IOCHK# позволяет вызывать немаскируемое прерывание (NMI), на которое процессор реагирует вне зависимости от каких-либо флагов. Это прерывание принято использовать для сообщения о серьезных ошибках, требующих реакции системы, но не для регулярной работы. Вызов NMI от данной линии разрешается установкой бита 3 (EIC) системного порта 061h, а признаком того, что прерывание NMI вызвано сигналом IOCHK#, является единичное значение бита 6 (IOCHK) того же порта.

 

Шина PC/104

 

Шина PC/104, предназначенная для построения относительно несложных встраиваемых контроллеров, логически эквивалентна ISA. В ее названии 104 — число контактов коннектора, на который выводятся сигналы шины ISA. От ISA шина PC/104 отличается только типом коннектора и нагрузочными характеристиками линий: поскольку протяженность линий значительно сократилась, сигнальные цепи могут быть слаботочными. Формирователи сигналов MEMCS16#, IOCS16#, MASTER# и 0WS# должны обеспечивать вытекающий ток до 20 мА, для остальных достаточно 4 мА.

Вид платы PC/104 приведен на рис. 6.4, назначение контактов дано в табл. 6.5 и 6.6. Плата компьютера с шиной PC/104 имеет разъемы- розетки. Плата расширения имеет вилку PC/104, которая вставляется в плату контроллера. Кроме вилки на плате расширения может присутствовать и розетка PC/104 (коннектор двусторонний), так что можно собрать «бутерброд» из нескольких плат (рис. 6.4, а). Для предотвращения неправильного соединения у розеток в позициях B10 и C19 нет ни контактов, ни отверстий; у вилок в этих позициях штырек отсутствует. Если плат более трех, то сверху «бутерброда» устанавливают терминатор. Для фиксации плат стандартизовано расположение крепежных отверстий. Платы скрепляются четырьмя несущими стоечками высотой 0,6" (или длинными винтами с втулками). Отметим особенности коннекторов: J1 — коннектор шины ISA-8, J2 — его расширение до ISA-16; эти коннекторы обычно имеют дюймовый шаг контактов (2,54 мм), но могут встречаться и метрические, с шагом 2,5 мм (они взаимно несовместимы!). Обратим внимание и на специфическую нумерацию рядов контактов В, А, С, D и номеров контактов (у J2 нумерация начинается с нуля, нулевые контакты не используются).

 

Рис. 6.4. Компьютер с шиной PC/104: а — стопка плат, б — расположение системных коннекторов

 

Таблица 6.5. Разъем J1/P1 шины PC-104

 

 РЯДА Ряд В
IOCHK# 1 GND
SD7 2 RESET
SD6 3 +5 В
SD5 4 IRQ2/9
SD4 5 –5 В
SD3 6 DRQ2
SD2 7 –12 В
SD1 8 0WS#
SD0 9 +12 В
IOCHRDY 10 Ключ
AEN 11 SMEMW#
SA19 12 SMEMR#
SA18 13 IOWR#
SA17 14 IORD#
SA16 15 DACK3#
SA15 16 DRQ3
SAM 17 DACK1#
SA13 18 DRQ1
SA12 19 REFRESH*
SA11 20 BCLK
SA10 21 IRQ7
SA9 22 IRQ6
SA8 23 IRQ5
SA7 24 IRQ4
SA6 25 IRQ3
SA5 26 DACK2#
SA4 27 TC
SA3 28 BALE
SA2 29 +5 В
SA1 30 OSC
SA0 31 GND
GND 32 GND

 

Таблица 6.6. Разъем J2/P2 шины PC-104

 

 Ряд C Ряд D
GND 0 GND
SBHE 1 MEMCS16#
LA23 2 IOCS16#
LA22 3 IRQ10
LA21 4 IRQ11
LA20 5 IRQ12
LA19 6 IRQ15
LA18 7 IRQ14
LA17 8 DACK0#
MEMR# 9 DRQ0
MEMW# 10 DACK5#
SD8 11 DRQ5
SD9 12 DACK6#
SD10 13 DRQ6
SD11 14 DACK7#
SD12 15 DRQ7
SD13 16 +5 В
SD14 17 MASTER#
SD15 18 GND
Ключ 19 GND

С широким использованием процессоров Pentium и следующих моделей в модуль ввели еще и шину PCI, так появился стандарт PC/104-Plus (именно такая карта показана на рис. 6.4). Трехрядный коннектор PCI имеет метрический шаг контактов 2 мм. Платы микрокомпьютеров с шинами PC/104 могут иметь и краевые разъемы ISA, PCI или комбинированный; с их помощью контроллеры подключаются к пассивной кросс-плате, в которую устанавливаются карты расширения (ISA, PCI) обычного (PC) конструктива.

 





Поделиться с друзьями:


Дата добавления: 2018-11-11; Мы поможем в написании ваших работ!; просмотров: 286 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

1230 - | 1175 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.