Dma mode в биосе что это
DMA Mode
Название опции:
DMA Mode
Возможные значения:
Описание:
Опция позволяет указать режим прямого доступа к памяти (DMA — Direct Memory Access, UDMA — Ultra DMA), используемый при работе накопителя, подключенного к данному каналу стандартного IDE/SATA-контроллера чипсета. Как правило, можно использовать режим автоматического определения возможностей накопителя (Auto). В случае проблем с данным конкретным диском можно попытаться отключить режим DMA (Disabled). Только стоит иметь в виду, что это приведет к существенному падению производительности дисковой подсистемы, использовать эту меру можно только в крайнем случае.
Зачастую среди значений данной опции присутствуют не только варианты, дающие возможность включить или отключить режим прямого доступа к памяти, но и значения, позволяющие указать конкретный режим. Тогда, если накопитель работает нестабильно, можно попробовать вместо полного отключения DMA перейти на один из младших режимов. Возможно, это полностью решит проблему, при этом не столь пагубно сказавшись на производительности дисковой подсистемы.
Для справки приведем названия режимов и максимальную скорость обмена данными с накопителем интерфейса IDE или SATA для каждого из режимов (следует учитывать, что режимы DMA дополняют режимы PIO Mode, обеспечивая существенно большую скорость работы):
Single-Word DMA 0 | 2.1 Мбайт/сек |
Single-Word DMA 1 | 4.2 Мбайт/сек |
Single-Word DMA 2 | 8.3 Мбайт/сек |
Multi-Word DMA 0 | 4.2 Мбайт/сек |
Multi-Word DMA 1 | 13.3 Мбайт/сек |
Multi-Word DMA 2 | 16.7 Мбайт/сек |
Ultra DMA 0 | 16.7 Мбайт/сек |
Ultra DMA 1 | 25.0 Мбайт/сек |
Ultra DMA 2 или Ultra DMA 33 | 33.3 Мбайт/сек |
Ultra DMA 3 | 44.4 Мбайт/сек |
Ultra DMA 4 или Ultra DMA 66 | 66.7 Мбайт/сек |
Ultra DMA 5 или Ultra DMA 100 | 100.0 Мбайт/сек |
Ultra DMA 6 или Ultra DMA 133 | 133.0 Мбайт/сек |
Все современные жесткие диски с интерфейсом IDE способны работать как минимум в режиме Ultra DMA 100. Приводы оптических дисков и им подобные устройства обычно используют режим Ultra DMA 33, есть модели, использующие Ultra DMA 66. Таким образом, для более или менее современных жестких дисков должна быть установлена комбинация PIO Mode 4 и Ultra DMA 100 (как вариант, Ultra DMA 133), но лучше установить значение Auto. Для приводов оптических дисков и им подобных устройств — PIO Mode 4 и Ultra DMA 33 (как вариант, Ultra DMA 66), но, опять же, лучше использовать Auto.
DMA — технология прямого доступа к памяти
Термин DMA наверняка не раз встречался читателям в различных компьютерных статьях. Что же он означает, влияет ли это понятие на работу компьютера, и если да, то как? В этом мы и попытаемся разобраться.
Принцип работы
Большинство устройств ПК нуждаются в периодическом обмене данными не только с центральным процессором (ЦП), но и с оперативной памятью. В первых вариантах персональных компьютеров процесс обмена данными какого-либо устройства с ОЗУ протекал при помощи процессора. Такой метод получил название PIO (Programmable Input-Output, программируемый ввод-вывод). Однако этот метод имел ряд недостатков. Прежде всего, было очевидно, что поскольку процессор загружен множеством задач, то он не всегда может отвлекаться на то, чтобы управлять процессом чтения и записи данных ОЗУ, тем более, что объем этих данных в результате прогресса компьютерной техники все увеличивался и увеличивался.
Так появилась идея технологии DMA (сокращение от Direct Memory Access, т.е. Прямой Доступ к Памяти), состоящая в том, чтобы позволить различным устройствам обращаться к оперативной памяти напрямую, минуя ЦП. Также часто используется русская аббревиатура данной технологии – ПДП.
Первоначально практическая реализация этой технологии (в материнских платах на основе шины ISA) была осуществлена при помощи встроенного в материнскую плату контроллера ПДП, который был призван управлять процессом обмена данными между устройством и ОЗУ. При этом процессор также не был полностью исключен из этого процесса. Прежде всего, механизм ПДП инициализировался самим процессором, однако в ход процесса передачи данных он не вмешивался, занимаясь в это время другими задачами. После того, как обмен информацией между устройством и ОЗУ завершался, то процессор получал соответствующее прерывание, которое отсылал ему контроллера DMA.
В шине ISA также использовались специальные каналы ПДП, которые часто закреплялись за отдельным устройством:
Обычно данные каналы можно было устанавливать программным путем, но на некоторых старых устройствах, например, картах расширения для подключения накопителей CD-ROM, необходимо было вручную устанавливать значения нужных каналов при помощи перемычек.
Современная реализация
Начиная с появления шины ввода-вывода PCI, концепция практической реализации ПДП претерпела изменения. В материнских платах с шиной PCI больше не использовался контроллер DMA, а вместо этого стала применяться технология Bus Mastering. Суть этой технологии заключается в том, что любое устройство может обратиться к шине и полностью использовать ее в своих целях, в том числе, и для доступа к оперативной памяти. Кроме того, в шине PCI отпала необходимость в использовании каналов доступа к памяти. Подобный механизм используется также и в преемниках шины PCI –сверхбыстрых шинах AGP и PCI-Express.
Прямой доступ к памяти могут использовать любые устройства, расположенные в слотах расширения материнской платы, или подключенные к ней при помощи внутренних шин. Это могут быть, например, жесткие диски, накопители для оптических дисков, видеокарты, звуковые и сетевые карты, и т.д. Кроме того, технология DMA может использоваться как внутри процессоров – для передачи данных между отдельными ядрами, так и внутри самой оперативной памяти – для обмена данными между различными участками памяти.
Современные операционные системы, такие как MS Windows, умеют управлять режимом ПДП для многих устройств. В частности, пользователь имеет возможность включить или выключить режим DMA для жестких дисков.
В жестких дисках с интерфейсом IDE технология ПДП получила свое развитие в виде дополнительных режимов ПДП, получивших название Ultra DMA (UDMA). Всего стандарт Ultra DMA поддерживает 8 основных режимов передачи данных, обеспечивающих скорость от 16,7 до 167 МБ/c. Использование режимов Ultra DMA для винчестеров позволило значительно увеличить пропускную способность шины IDE. Включить или изменить режим Ultra DMA для жестких дисков можно при помощи специальной опции BIOS, обычно носящей название DMA (UDMA) Mode.
Заключение
Появление технологии ПДП позволило разгрузить процессор и избавить его от большого объема рутинной работы по пересылке данных между оперативной памятью и устройствами, расположенными на материнской плате или подключенными к ней. Особенно важно использование разновидности технологии ПДП – Ultra DMA в винчестерах на основе интерфейса IDE, что позволяет значительно ускорить обмен данными между накопителем IDE и материнской платой.
DMA для новичков или то, что вам нужно знать
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
DMA, что это? О чем вы говорите?
DMA, или Direct Memory Access – технология прямого доступа к памяти, минуя центральный процессор. В эпоху 486-ых и первых Pentium во всю царствовала шина ISA, а также метод обмена данными между устройствами – PIO (Programmed Input/Output).
Когда объемы данных, которыми оперирует процессор начали возрастать, стало понятно, что нужно минимизировать участие процессора в цепочке обмена данными, а то прийдется туго. И вот тогда активное применение нашла технология прямого доступа к памяти.
Кстати говоря, DMA используется не только для обмена данными между устройством и ОЗУ, но также между устройствами в системе, возможен DMA трансфер между двумя участками ОЗУ (хотя данный маневр не применим к x86 архитектуре). Также в своем процессоре Cell, IBM использует DMA как основной механизм обмена данными между синергетическими процессорными элементами (SPE) и центральным процессорным элементом (PPE). Также каждый SPE и PPE может обмениватся данными через DMA с оперативной памятью. Данный прием – на самом деле большое преимущество Cell, ибо избавляет от проблем когерентности кешей при мультипроцессорной обработке данных.
И снова теория
Прежде чем мы перейдем к практике, я бы хотел осветить несколько важных аспектов программирования PCI, PCI-E устройств.
Я вскользь упомянул о регистрах устройства, но как же к ним имеет доступ центральный процессор? Как многие из вас знают, есть такая сущность в компьютерных технологиях, как IO порты (Input/Output ports). Они предназначены для обмена информацией между центральным процессором и периферийными устройствами, а доступ к ним возможен с помощью специальных ассемблерных инструкций — in/out. BIOS (или OpenFirmware на PPC based системах) на ранних этапах инициализации PCI устройств, а также некоторых других (Super IO контроллера, контроллера PS/2 устройств, ACPI timer и т.д.), закрепляет за определенным контроллером собственный диапазон IO портов, куда и отображаются регистры устройства.
Итак, существует два метода утилизации DMA: contiguous DMA и scatter/gather DMA.
Contiguous DMA
Scatter/gather DMA
С ростом скорости Ethernet адаптеров, contiguous DMA показал свою несостоятельность. В основном из-за того, что требовались области памяти достаточно большого размера, которые подчас невозможно было выделить, так как в современных системах фрагментация физической памяти достаточно высока. Во всем виноват механизм виртуальной памяти, без которого нынче никуда 🙂
Решение напрашивается само собой: использовать вместо одного большого участка памяти несколько, но в разных регионах этой самой памяти. Возникает вопрос, но как же сообщить контроллеру устройства, как инициировать DMA трансфер и по какому адресу писать данные? И тут нашли решение, использовать дескрипторы, чтобы описывать каждый вот такой участок в оперативной памяти.
На сегодня пожалуй все, иначе информации станет слишком много. В следующей статье я покажу вам, как с этой уличной магией работает IOKit. Жду отзывов и дополнений 😉
Настройка жестких дисков с IDE интерфейсом (DMA/UDMA) под Windows ХР
Статья будет полезна тем у кого на ПК установлено несколько жестких дисков с IDE интерфейсом. При неправильной настройке DMA /UDMA для жестких дисков с IDE интерфейсом могут возникать различные проблемы с подозрением на не исправную оперативную память, например застывание/залипание мыши или системы в целом хоть и не факт что DMA /UDMA сему виной.
Для начала немного про PIO /DMA/UDMA способы/режимы доступа к данным на жестком диске:
Максимальная пропускная способность протоколов передачи данных (Мб/c (Мбайт/сек))
Single-Word DMA 0 = 2.1
Single-Word DMA 1 = 4.2
Single-Word DMA 2 = 8.3
Multi-Word DMA 0 = 4.2
Multi-Word DMA 1 = 13.3
Multi-Word DMA 2 = 16.7
Ultra DMA 0 = 16.7
Ultra DMA 1 = 25.0
Ultra DMA 2 или Ultra DMA 33 = 33.3
Ultra DMA 3 = 44.4
Ultra DMA 4 или Ultra DMA 66 = 66.7
Ultra DMA 5 или Ultra DMA 100 = 100.0
Ultra DMA 6 или Ultra DMA 133 = 133.0
Для работы UDMA устройств требуется соблюдение следующих условий :
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Настройки DMA /UDMA в BIOS
Настройки DMA /UDMA в Windows XP
Intel® Application Accelerator предоставляет графический интерфейс для управления Intel(R) контроллером но, после перезагрузки никакой акселерации подразумеваемой или явной ощутить не представилось возможным!:)
Мало того, система стала туго/долго входить в спящий режим и это при том, что в так званом Intel® Application Accelerator стоял режим передачи UDMA-5. Дальше больше.
С другими версиями драйвера Intel(R) 82801DB Ultra ATA Controller кроме как с Дата разработки: 01.10.2002 Версия драйвера: 2.3.0.2160 штука по имени Intel® Application Accelerator работать отказывается и выдаёт:
После восстановления драйвера проблемы со спящим режимом улетучились, а время ухода в спящим режим сократилось до 5-10 сек.!
Мораль сей басни такова: если не хочешь себе геморроя, то не стоит использовать/всякие твикеры и акселераторы даже если они от Intel(R)!, а все настройки выполнять ручками или стандартными средствами администрирования самой ОС.
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Тонкая настройка DMA /UDMA в Windows XP
Для более тонкой настройки DMA /UDMA в Windows XP нужно нырять в дебри реестра Windows. Паpаметpы контpолёpа хранятся в pеестpе Windows, по адpесy HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\ <4D36E96A-E325-11CE-BFC1-08002BE10318>. Внyтpи этой ветки находится 4 каталога:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Выбираем каталог который отвечает за нужный нам канал, и заходим в него. Каждому из каналов (yстpойств), соответствуют по два ключа, MasterDeviceTimingModeAllowed и SlaveDeviceTimingModeAllowed (или UserMasteDeviceTimingModeAllowed и UserSlaveDeviceTimingModeAllowed, если pежимы выбиpались вpyчнyю), определяющие максимальный режим работы Master и Slave yстpойств, yстановленных на контpолёpе, и MasterDeviceTimingMode и SlaveDeviceTimingMode, котоpые опpеделяют в каком pежиме pеально pаботают Slave и Master yстpойства.
Для того что бы pазpешить использовать yстpойство в UDMA pежиме, MasterDeviceTimingModeAllowed (или Slave:, зависит от того к чемy диск подключен) должно иметь значение 0хffffffff. Если оно бyдет 0x0000001f, то yстpойство сможет pаботать только в PIO pежиме. Убедившись что этот ключ стоит пpавильно, выставляем MasterDeviceTimingMode, опpеделяя в каком pежиме должен pаботать пpивод.
Возможны следyющие ваpианты (цифpы в HEX) значений в шестнадцатеричной системе:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Кроме этого, UDMA Mode 4 можно включить 0xffff, а UDMA Mode 5 — 0xfffff. Выставляйте нyжное, и пеpезагpyжайтесь, диск должен пеpейти в тpебyемый pежим
ВНИМАНИЕ!: Для Windows 7 ключи в реестре от ХР не совпадают.
Проблемы с DMA /UDMA на жестких дисках с IDE интерфейсом
Исходя из расшифровки DMA (DMA — Direct Memory Access) это аппаратная возможность обмена информацией между устройствами и основной памятью (RAM), практически не требующая участия центрального процессора, тобишь возможность обмена данными при помощи прямого доступа к оперативной (основной) памяти.
Так как оперативная память является основной и от её достатка и оперативности зависит скорость работы всех приложений и отображения результата их работы на экране, то при её нехватке и одновременном доступе DMA /UDMA устройства к памяти ВОЗМОЖНО (не факт) могут возникать проблемы типа хаотичного перемещения указателя мыши, застывания мыши/изображения и т.п., а особенно эти проблемы могут проявляться при наличии в системе нескольких DMA /UDMA устройств!
Лечение проблем с DMA /UDMA на жестких дисках с IDE интерфейсом
Первое на что следует обратить внимание, так это на то, что многие очень часто ставят на один канал жесткий диск как Primary master и другое, более медленное устройство, типа CD-ROM, как Primary slave. Но так как IDE может обращаться только к одному устройству на канале одномоментно, то снижается производительность системы в целом. Так что Лучше не иметь slave-устройств в принципе.
На каком IDE диске ограничивать DMA /UDMA когда все на одном IDE канале?
Также в случае когда в системе используется несколько модулей оперативной памяти разной ёмкости (256/512/1024 МВ и т.д.), рекомендуется на первое место/слот (DIMM1) устанавливать тот модуль который имеет наибольший объем памяти! Проверить где и какой модуль установлен можно при помощи программы » EVEREST > Системная плата > SPD (смотреть DIMM1/DIMM2) «.
Автор: Олег Головский
Рекомендуемый контент
А тут же ж мог быть рекомендуемый контент от гугла 🙂 Для отображения рекомендуемого контента необходимо в браузере разрешить выполнение JavaScript скриптов, включая скрипты с доменов googlesyndication.com и doubleclick.net
Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).
Dma mode в биосе что это
Название опции:
DMA Mode
Возможные значения:
Описание:
Опция позволяет указать режим прямого доступа к памяти (DMA — Direct Memory Access, UDMA — Ultra DMA), используемый при работе накопителя, подключенного к данному каналу стандартного IDE/SATA-контроллера чипсета. Как правило, можно использовать режим автоматического определения возможностей накопителя (Auto). В случае проблем с данным конкретным диском можно попытаться отключить режим DMA (Disabled). Только стоит иметь в виду, что это приведет к существенному падению производительности дисковой подсистемы, использовать эту меру можно только в крайнем случае.
Зачастую среди значений данной опции присутствуют не только варианты, дающие возможность включить или отключить режим прямого доступа к памяти, но и значения, позволяющие указать конкретный режим. Тогда, если накопитель работает нестабильно, можно попробовать вместо полного отключения DMA перейти на один из младших режимов. Возможно, это полностью решит проблему, при этом не столь пагубно сказавшись на производительности дисковой подсистемы.
Для справки приведем названия режимов и максимальную скорость обмена данными с накопителем интерфейса IDE или SATA для каждого из режимов (следует учитывать, что режимы DMA дополняют режимы PIO Mode, обеспечивая существенно большую скорость работы):
Single-Word DMA 0 | 2.1 Мбайт/сек |
Single-Word DMA 1 | 4.2 Мбайт/сек |
Single-Word DMA 2 | 8.3 Мбайт/сек |
Multi-Word DMA 0 | 4.2 Мбайт/сек |
Multi-Word DMA 1 | 13.3 Мбайт/сек |
Multi-Word DMA 2 | 16.7 Мбайт/сек |
Ultra DMA 0 | 16.7 Мбайт/сек |
Ultra DMA 1 | 25.0 Мбайт/сек |
Ultra DMA 2 или Ultra DMA 33 | 33.3 Мбайт/сек |
Ultra DMA 3 | 44.4 Мбайт/сек |
Ultra DMA 4 или Ultra DMA 66 | 66.7 Мбайт/сек |
Ultra DMA 5 или Ultra DMA 100 | 100.0 Мбайт/сек |
Ultra DMA 6 или Ultra DMA 133 | 133.0 Мбайт/сек |
Все современные жесткие диски с интерфейсом IDE способны работать как минимум в режиме Ultra DMA 100. Приводы оптических дисков и им подобные устройства обычно используют режим Ultra DMA 33, есть модели, использующие Ultra DMA 66. Таким образом, для более или менее современных жестких дисков должна быть установлена комбинация PIO Mode 4 и Ultra DMA 100 (как вариант, Ultra DMA 133), но лучше установить значение Auto. Для приводов оптических дисков и им подобных устройств — PIO Mode 4 и Ultra DMA 33 (как вариант, Ultra DMA 66), но, опять же, лучше использовать Auto.
Для начала немного про PIO /DMA/UDMA способы/режимы доступа к данным на жестком диске:
Прямой доступ к памяти (DMA — Direct Memory Access) — это аппаратная возможность обмена информацией между устройствами, практически не требующая участия центрального процессора (протоколы — Multiword DMA и Ultra DMA), что позволяет во время выполнения передачи данных использовать ресурсы центрального процессора для выполнения других задач. Для режимов Ultra DMA-3 и выше необходим 80-жильный интерфейсный кабель.
Максимальная пропускная способность протоколов передачи данных (Мб/c (Мбайт/сек))
Single-Word DMA 0 = 2.1
Single-Word DMA 1 = 4.2
Single-Word DMA 2 = 8.3
Multi-Word DMA 0 = 4.2
Multi-Word DMA 1 = 13.3
Multi-Word DMA 2 = 16.7
Ultra DMA 0 = 16.7
Ultra DMA 1 = 25.0
Ultra DMA 2 или Ultra DMA 33 = 33.3
Ultra DMA 3 = 44.4
Ultra DMA 4 или Ultra DMA 66 = 66.7
Ultra DMA 5 или Ultra DMA 100 = 100.0
Ultra DMA 6 или Ultra DMA 133 = 133.0
Для работы UDMA устройств требуется соблюдение следующих условий :
Настройки DMA /UDMA в BIOS
Настройки DMA /UDMA в Windows XP
Intel® Application Accelerator предоставляет графический интерфейс для управления Intel(R) контроллером но, после перезагрузки никакой акселерации подразумеваемой или явной ощутить не представилось возможным!:)
Мало того, система стала туго/долго входить в спящий режим и это при том, что в так званом Intel® Application Accelerator стоял режим передачи UDMA-5. Дальше больше.
При выходе из спящего режима Windows стал зависать на сообщении «Восстановление Windows» с белой полосой загрузки внизу. Эта проблема проявляется только когда Windows отправлен в спящий режим из под учётной записи обычного (ограниченного в правах) пользователя. Проблема отсутствует если Windows отправлен в спящий режим из под учётной записи пользователя с административными правами (администратора), в таком случае Windows успешно выходит из спящего режима. Но, тем не менее выход в спящий режим был нудно долгим и затяжным процессом — около 30-40 сек.
С другими версиями драйвера Intel(R) 82801DB Ultra ATA Controller кроме как с Дата разработки: 01.10.2002 Версия драйвера: 2.3.0.2160 штука по имени Intel® Application Accelerator работать отказывается и выдаёт:
После восстановления драйвера проблемы со спящим режимом улетучились, а время ухода в спящим режим сократилось до 5-10 сек.!
Мораль сей басни такова: если не хочешь себе геморроя, то не стоит использовать/всякие твикеры и акселераторы даже если они от Intel(R)!, а все настройки выполнять ручками или стандартными средствами администрирования самой ОС.
Тонкая настройка DMA /UDMA в Windows XP
Выбираем каталог который отвечает за нужный нам канал, и заходим в него. Каждому из каналов (yстpойств), соответствуют по два ключа, MasterDeviceTimingModeAllowed и SlaveDeviceTimingModeAllowed (или UserMasteDeviceTimingModeAllowed и UserSlaveDeviceTimingModeAllowed, если pежимы выбиpались вpyчнyю), определяющие максимальный режим работы Master и Slave yстpойств, yстановленных на контpолёpе, и MasterDeviceTimingMode и SlaveDeviceTimingMode, котоpые опpеделяют в каком pежиме pеально pаботают Slave и Master yстpойства.
Для того что бы pазpешить использовать yстpойство в UDMA pежиме, MasterDeviceTimingModeAllowed (или Slave:, зависит от того к чемy диск подключен) должно иметь значение 0хffffffff. Если оно бyдет 0x0000001f, то yстpойство сможет pаботать только в PIO pежиме. Убедившись что этот ключ стоит пpавильно, выставляем MasterDeviceTimingMode, опpеделяя в каком pежиме должен pаботать пpивод.
Возможны следyющие ваpианты (цифpы в HEX) значений в шестнадцатеричной системе:
Кроме этого, UDMA Mode 4 можно включить 0xffff, а UDMA Mode 5 — 0xfffff. Выставляйте нyжное, и пеpезагpyжайтесь, диск должен пеpейти в тpебyемый pежим
ВНИМАНИЕ!: Для Windows 7 ключи в реестре от ХР не совпадают.
Проблемы с DMA /UDMA на жестких дисках с IDE интерфейсом
Исходя из расшифровки DMA (DMA — Direct Memory Access) это аппаратная возможность обмена информацией между устройствами и основной памятью (RAM), практически не требующая участия центрального процессора, тобишь возможность обмена данными при помощи прямого доступа к оперативной (основной) памяти.
Так как оперативная память является основной и от её достатка и оперативности зависит скорость работы всех приложений и отображения результата их работы на экране, то при её нехватке и одновременном доступе DMA /UDMA устройства к памяти ВОЗМОЖНО (не факт) могут возникать проблемы типа хаотичного перемещения указателя мыши, застывания мыши/изображения и т.п., а особенно эти проблемы могут проявляться при наличии в системе нескольких DMA /UDMA устройств!
Лечение проблем с DMA /UDMA на жестких дисках с IDE интерфейсом
Первое на что следует обратить внимание, так это на то, что многие очень часто ставят на один канал жесткий диск как Primary master и другое, более медленное устройство, типа CD-ROM, как Primary slave. Но так как IDE может обращаться только к одному устройству на канале одномоментно, то снижается производительность системы в целом. Так что Лучше не иметь slave-устройств в принципе.
На каком IDE диске ограничивать DMA /UDMA когда все на одном IDE канале?
Также в случае когда в системе используется несколько модулей оперативной памяти разной ёмкости (256/512/1024 МВ и т.д.), рекомендуется на первое место/слот (DIMM1) устанавливать тот модуль который имеет наибольший объем памяти! Проверить где и какой модуль установлен можно при помощи программы » EVEREST > Системная плата > SPD (смотреть DIMM1/DIMM2) «.
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
DMA, что это? О чем вы говорите?
DMA, или Direct Memory Access – технология прямого доступа к памяти, минуя центральный процессор. В эпоху 486-ых и первых Pentium во всю царствовала шина ISA, а также метод обмена данными между устройствами – PIO (Programmed Input/Output).
PIO по своей сути прост: чтобы получить данные с устройства, драйвер операционной системы (или же firmware другого устройства), должен был читать эти данные из регистров устройства. Давайте разберемся на примере:
В итоге, если чтение одного байта отнимает около 1 мс процессорного времени, то чтение 1500 байт – соответственно 1500 мс. Но это всего лишь один Ethernet пакет, представте себе, сколько пакетов получает сетевая карта, когда вы читаете любимый хабрахабр. Конечно в реальности чтение в PIO режиме можно организовывать по 2, 4 байта, однако потери производительности при этом все равно будут катастрофическими.
Когда объемы данных, которыми оперирует процессор начали возрастать, стало понятно, что нужно минимизировать участие процессора в цепочке обмена данными, а то прийдется туго. И вот тогда активное применение нашла технология прямого доступа к памяти.
Кстати говоря, DMA используется не только для обмена данными между устройством и ОЗУ, но также между устройствами в системе, возможен DMA трансфер между двумя участками ОЗУ (хотя данный маневр не применим к x86 архитектуре). Также в своем процессоре Cell, IBM использует DMA как основной механизм обмена данными между синергетическими процессорными элементами (SPE) и центральным процессорным элементом (PPE). Также каждый SPE и PPE может обмениватся данными через DMA с оперативной памятью. Данный прием – на самом деле большое преимущество Cell, ибо избавляет от проблем когерентности кешей при мультипроцессорной обработке данных.
И снова теория
Прежде чем мы перейдем к практике, я бы хотел осветить несколько важных аспектов программирования PCI, PCI-E устройств.
Я вскользь упомянул о регистрах устройства, но как же к ним имеет доступ центральный процессор? Как многие из вас знают, есть такая сущность в компьютерных технологиях, как IO порты (Input/Output ports). Они предназначены для обмена информацией между центральным процессором и периферийными устройствами, а доступ к ним возможен с помощью специальных ассемблерных инструкций — in/out. BIOS (или OpenFirmware на PPC based системах) на ранних этапах инициализации PCI устройств, а также некоторых других (Super IO контроллера, контроллера PS/2 устройств, ACPI timer и т.д.), закрепляет за определенным контроллером собственный диапазон IO портов, куда и отображаются регистры устройства.
Также регистры устройства могут отображатся в ОЗУ (Memory Mapped Registers), т.е. на физическое адресное пространство. Данный метод имеет ряд преимуществ, а именно:
Данные о том, какой диапазон IO портов или ОЗУ закреплен за устройством, хранятся в конфигурационном пространстве PCI, а именно в регистрах BAR0, BAR1, BAR2, BAR4, BAR5 [1].
Итак, существует два метода утилизации DMA: contiguous DMA и scatter/gather DMA.
Contiguous DMA
Данный метод очень прост и сейчас практически отжил свое, однако до сих пор используется для программирования звуковых контроллеров (к примеру Envy24HT). Его принцип следующий:
Как видите все достаточно просто, и как только шина ISA обзавелась поддержкой DMA, данный метод нашел очень широкое применение. Например драйвера сетевых карт имели два таких DMA буфера: один на прием данных (rx), другой на отсылку (tx).
Scatter/gather DMA
С ростом скорости Ethernet адаптеров, contiguous DMA показал свою несостоятельность. В основном из-за того, что требовались области памяти достаточно большого размера, которые подчас невозможно было выделить, так как в современных системах фрагментация физической памяти достаточно высока. Во всем виноват механизм виртуальной памяти, без которого нынче никуда 🙂
Решение напрашивается само собой: использовать вместо одного большого участка памяти несколько, но в разных регионах этой самой памяти. Возникает вопрос, но как же сообщить контроллеру устройства, как инициировать DMA трансфер и по какому адресу писать данные? И тут нашли решение, использовать дескрипторы, чтобы описывать каждый вот такой участок в оперативной памяти.
Типичный дескриптор DMA буфера содержит следующие поля:
Структура дескрипторов определяется конкретным производителем контроллера устройства, и может содержать какие-либо другие поля. Дескриптор также как и DMA буфер, размещается в оперативной памяти.
Алгоритм scatter/gather DMA следующий:
Порядок в каком контроллер устройства заполняет DMA буферы, определяется производителем. Контроллер может писать в первый свободный DMA буфер, либо просто писать подряд (дескрипторы DMA буферов в данном случае образуют односвязный кольцевой список) во все буфера и т.д.
На сегодня пожалуй все, иначе информации станет слишком много. В следующей статье я покажу вам, как с этой уличной магией работает IOKit. Жду отзывов и дополнений 😉