Программирование драйверов Windows

       

Возможности DMA


Спецификация PCI не включает понятия slave DMA. Вместо этого, собственные функции PCI (функциональные единицы) являются либо "хозяевами шины" (bus masters), выполняющими свой собственный DMA перенос данных, либо они используют программируемый ввод/вывод. Единственным типом устройств, которые могут использовать DMA перенос данных с использованием системных контроллеров (slave DMA), являются не-PCI платы, подключенные через (E)ISA мост.

В DMA операциях собственно PCI шины, участники называются агентами (agents), и в каждой транзакции всегда участвуют два из них, а именно:

  • Инициатор (Initiator). Это "хозяин шины" (bus master), который выиграл право доступа к шине и хочет определить операцию переноса.
  • Цель (Target). Это PCI функция (функциональная единица PCI устройства), адресуемая в настоящий момент инициатором с целью выполнения передачи данных.
  • Поскольку любой "хозяин шины" PCI может быть инициатором, то возможно передача данных напрямую между двумя PCI устройствами без промежуточной остановки данных в оперативной памяти. Эта мощная возможность просто предназначена для использования в высокоскоростных сетевых и видео приложениях.

    Необходимо также упомянуть, что спецификация PCI не определяет стратегию, которая должна быть использована при арбитрировании доступа к шине. Определены только временные диаграммы арбитрирующих сигналов в шине. Метод по нахождению того, "кто будет следующим" в использовании шины, является определяемым конкретной системой, где реализованы шины PCI.


    Хост-контроллер IEEE 1394 использует DMA для передачи данных и команд в/из системной памяти. Устройства, подключенные к шине 1394, не могут иметь прямого доступа к системной памяти, поэтому адаптеры OHCI предоставляют диапазон адресов (в системной памяти),с которыми, собственно, и работают прикладные программы и контроллер DMA. Таким образом, возникает иллюзия возможности DMA передачи данных для каждого устройства, подключенного к шине.




    Устройства USB шины не имеют прямого доступа к системной памяти. Они изолированы от системных ресурсов USB интерфейсом хост-компьютера и не поддерживают способа DMA передачи данных в привычном смысле. Тем не менее, USB интерфейс хост-компьютера обеспечивает "иллюзию" поддержки DMA для логических pipe-каналов, обеспечивающих доступ к конечным точкам (т.е. буферам) внутри подключенных к шине устройств. По мере получения данных от подключенных USB устройств, интерфейс хост-контроллера использует DMA доступ для того, чтобы поместить полученные из устройства данные в системную память. Таким образом, USB интерфейс, состоящий из внешнего устройства, контроллера в хост-компьютере и системные драйверы (но не каждое USB устройство по отдельности!), поддерживает возможность DMA передачи данных &#8212 или, строго говоря, ее иллюзию.




    Первоначально предложенный стандарт PC CARD не предполагал возможности DMA передачи данных. Более поздний стандарт, принятый в 1995 году, ввел DMA расширение в стандарт, названный 'DMA'. Это расширение стандарта позволяет выполнять передачу 16 разрядных слов в манере, сходной со стандартом ISA. Этот стандарт подразумевает, что все устройства, подключенные к шине, выступают в роли 'bus slave' устройств, совместно использующих DMA контроллеры. Так же, как и в архитектуре ISA, трудно реализовать режим 'bus master DMA'.

    Стандарт CardBus позволяет выполнять операции DMA передачи данный почти что таким же образом, как это выполняется в архитектуре PCI. Данное дополнение, позволяющее работать с устройствами в роли 'bus master', является весьма важным. 16 и 32 разрядные операции DMA передачи данных в стандарте CardBus могут выполняться при частоте 33 МГц. Правда, фактор ограниченности геометрических размеров требует использования компонентов (ИС) более высокой степени интеграции.



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