Интернет магазин китайских планшетных компьютеров



Компьютеры - Прямой доступ к памяти - DMA и виртуальная память, IOMMU и AGP GART

23 января 2011


Оглавление:
1. Прямой доступ к памяти
2. Захват шины
3. DMA и виртуальная память, IOMMU и AGP GART
4. DMA и IDE/ATA, Ultra DMA
5. Режимы Ultra DMA протокола ATA для ОС Linux



В ОС со страничной виртуальной памятью, таких, как Windows и семейство UNIX, непрерывный регион виртуальных адресов может быть реализован разрывно расположенными физическими страницами.

Исполнение DMA по такому региону представляет собой довольно сложную задачу. Также сложной задачей является исполнение DMA по отгружаемой памяти.

Решение этой задачи требует выявления физических страниц, реализующих регион, и их блокировку от отгрузки обращением к подсистеме виртуальной памяти. Далее становится возможным нахождение физических адресов страниц региона, которые в общем случае не являются непрерывными и формируют так называемый scatter-gather list — SGL.

Задача исполнение DMA по таковому списку может быть решена одним из следующих способов:

  • выделение подряд идущей физической памяти в ядре ОС и промежуточное копирование всех данных туда/оттуда. Поддерживается всеми ведущими ОС, для активации поддержки в Windows требуется вызов IoGetDmaAdapter с DEVICE_DESCRIPTION::ScatterGather, установленном в FALSE.

Недостатки: трата времени процессора на копирование, потребление крайне ограниченного ресурса непрерывной физической памяти, занятие места в ограниченной части памяти, к которой есть доступ у DMA.

  • разбиение операции на подоперации по границам элементов SGL, с прерыванием в конце каждой операции. Использовалось в старых 8битных SCSI-контроллерах, поставляемых со сканерами типа HP ScanJet.

Недостатки: большое количество прерываний.

  • поддержка SGL самим устройством, с требованием копирования SGL, преобразованного в формат, специфичный для устройства, в устройство через многочисленные обращения к регистрам устройства.

Недостатки: крайне высокая сложность устройства, невысокая производительность большого числа записей в регистры.

  • поддержка SGL самим устройством, с требованием размещения SGL, преобразованного в формат, специфичный для устройства, в физически непрерывном регионе основной памяти. Устройство читает SGL тем же механизмом DMA с захватом шины, что и собственно данные, тем самым реализуя функциональность некоего процессора, читающего и исполняющего свою собственную «программу», реализованную как список дескрипторов SGL. Данная архитектура называется chain DMA, реализована в практически всем стандартном оборудовании современного компьютера — Intel IDE, UHCI и OHCI USB, OHCI 1394, а также в большинстве PCI-адаптеров Ethernet и SCSI. Как хороший пример реализации данной архитектуры в очень сложном и развитом виде см. спецификацию оборудования OHCI 1394. По некоторым сведениям, данная архитектура под названием «канальные программы» использовалась еще в IBM 360, известных в СССР как ЕС ЭВМ.

Недостатки: высокая сложность устройства, хотя и ниже в числе транзисторов, чем предыдущий вариант. Например, UHCI USB контроллер требует около 5000 транзисторов.

  • поддержка SGL в межшинном оборудовании, при которой представление физически разрывного буфера для стороны устройства выглядит физически непрерывным. Таковое оборудование называется IOMMU. Реализовывалось как на компьютерах фирмы Sun для шины SBus, так и на компьютерах DEC Alpha для шины PCI. До недавних времен практически никогда не реализовывалось в обыкновенных x86/PCI системах, хотя в настоящее время есть тенденция к изменению этой ситуации, главным образом с целью повышения производительности гипервизоров виртуальных машин. Всегда реализовывалось для шины AGP под названием AGP GART с целью облегчить произвольный доступ трехмерного видеопроцессора к текстурам, находящимся в основной памяти. Со стороны устройства данное оборудование было стандартизировано спецификацией AGP, со стороны ПО стандартизации не существовало, и реализация зависела от производителя микросхемы северного моста между AGP и памятью. Набор вызовов ядер развитых ОС, таких, как Windows, всегда содержал архитектурную абстракцию IOMMU, позволяющую одному и тому же драйверу устройства поддерживать его при присоединении через различные IOMMU.

Недостатки: требование сложной логики уже не в устройстве, а в платформе.



Просмотров: 4907


<<< Синтез речи