Bios dma data transfers что это

Обновлено: 07.07.2024

После подключения накопителей к системной плате нужно правильно выставить их параметры в BIOS. По традиции они сосредоточены в разделе Standard CMOS Features (Main для версий BIOS с горизонтальной строкой меню). Для настройки каждого из IDE-устройств обычно предназначено отдельное подменю со сле­дующими названиями:

  1. IDE Primary Master;
  2. IDE Primary Slave;
  3. IDE Secondary Master;
  4. IDE Secondary Slave.

В некоторых версиях BIOS эти параметры могут иметь другие названия, например: IDE Channel 0 Master, IDE Channel 0 Slave, IDE Channel 1 Master и IDE Channel 1 Slave. Иногда эти параметры сосредоточены в отдельном подменю, которое может называться IDE Devices, Hard Disks или как-нибудь иначе.

Для накопителей SATA в разделе Standard CMOS Features (Main) могут присутствовать несколько подменю с именами SATA ½/¾,SATA Channel ½/¾ или аналогичными. Иногда также можно встретить версии BIOS, где SATA-устрой- ства именуются но традиции IDE-устройствамн. Перечень параметров для устройств SATA практически не отличается от параметров IDE-устройств, однако почти все они недоступны для редактирования, поскольку эти накопители настраиваются автоматически.

Все устройства имеют идентичный набор параметров, поэтому далее рассмотрим настройку только одного из них, например подключенного к каналу IDE Primary Master.

Обратите внимание, что параметры IDE-устройств могут отсутствовать или быть недоступными, если в разделе Integrated Peripherals отключены один или оба IDE-канала.


IDE HDD Auto-Detection

После выбора этого параметра и нажатия Enter запустится процедура автоматического определения устройства, подключенного к данному каналу. После ее успешного выполнения будут автоматически установлены значения параметров Cylinder, Head, Sector, Capacity и некоторых других в соответствии с обнаруженным устройством.

Большинство HDD поддерживают функцию автоопределения; исключение составляют лишь некоторые модели очень старых жестких дисков, для них значения параметров Cylinder, Head и Sector нужно вводить вручную.

HDD определяется некорректно или не определяется вообще из-за нескольких причин.

1. Неправильно установлены перемычки или неверно подключены шлейфы. Если два устройства расположены на одном шлейфе, попробуйте подсоединять их и настраивать по очереди.

Чтобы выйти из этой ситуаций, можно попытаться обновить имеющуюся версию BIOS, если обновление есть на сайте производителя системной платы. Другой способ — использовать жесткий диск не на полную емкость с теми параметрами, которые были определены вашей версией BIOS, однако такой способ не всегда гарантирует полную совместимость. Для корректной работы HDD в режиме неполной емкости в некоторых моделях предусмотрены перемычки, ограничивающие объем.

3. Жесткий диск или контроллер на системной плате неисправен. Чтобы диагностировать подобную ситуацию, обычно подключают к проблемному IDE-кана- лу заведомо исправный жесткий диск или же проблемное устройство — к другой, заведомо исправной, системной плате.

Type, IDE Primary Master

Параметр определяет тип устройства, подключенного к данному каналу. Возможно несколько основных значений.

1. Auto. Тип подключенного устройства будет автоматически определяться при каждой загрузке компьютера. Практически все современные устройства опознаются безошибочно, и это значение всегда рекомендуется производителями системных плат. Единственный его недостаток — несколько увеличенное время загрузки компьютера.

В некоторых версиях BIOS процедуру автоматического определения можно запустить принудительно с помощью описанного выше параметра IDE HDD Auto-Detection, там же были подробно описаны проблемы, возникающие при определении жестких дисков.

2. Manual (User), Выбрав этот тип, параметры подключенного устройства нужно задать вручную. Обычно достаточно ввести количество головок диска (Head), количество дорожек, или цилиндров, (Cylinder) для каждой головки и количество секторов на дорожке (Sector). Этот тип обычно применяется при подключении очень старых жестких дисков, не поддерживающих автоматическое определение.

Установив значение Manual для жесткого диска, поддерживающего автоопределение, иногда можно сэкономить несколько долей секунды при загрузке компьютера. В этом случае обычно удается избежать ручного ввода параметров: сначала выполняется автоматическое определение, а затем выбирается Manual. Если такой трюк не прошел, придется вводить все параметры диска вручную или же оставить значение Auto.

3. CDROM/DVD. Значение устанавливается, когда к каналу подключено устройство для чтения и/или записи CD или DVD. Если это значение отсутствует в списке доступных параметров, выбирайте для подобных накопителей значение Auto, хотя вполне допустимо и None.

4. LS-120, ZIP-100, МО, JAZ (JAZ2) — служат для подключения устаревших устройств со сменными носителями, которые должны были прийти на место
дискет, но уступили в конкурентной борьбе записывающим CD/DVD-приводам и устройствам flash-памяти,

5. None. Значение устанавливается, если на данном канале нет подключенных устройств. При этом компьютер будет загружаться быстрее, поскольку не тратится лишнее время на поиск отсутствующих накопителей. Значение None также рекомендуется, если подключаются нестандартные устройства, не поддерживаемые данной версией BIOS. В этом случае они будут доступны только после установки соответствующих драйверов. Следует отметить, что большинство современных версий BIOS при выборе значения None успешно справляются с определением приводов для CD, DVD и некоторых других устройств.

Если значение None выбирается для второго или третьего жесткого диска, в большинстве случаев они все равно будут распознаны операционной системой Windows, однако распределение букв для логических дисков такого накопителя может отличаться от общепринятого.

Mode, Access Mode, LBA Mode

Параметр определяет режим доступа к данным на диске и актуален лишь для старых жестких дисков. Практически все HDD от 1 Гбайт и более будут нормально работать при значении Auto, а при необходимости подключить и настроить старый диск, возможно, понадобится разобраться с секторами, головками и др. Есть несколько основных значений этого параметра.

1. Auto. Режим доступа определяется автоматически. Это значение устанавливается по умолчанию и рекомендуется для всех современных жестких дисков.

2. Normal (CHS). Этот вариант используется только для старых дисков размером менее 504 Мбайт, в которых применяется режим непосредственной адресации секторов. В этом режиме количество доступных головок (Head), цилиндров (Cylinder) и секторов (Sector) ограничено значениями 1024/16/63, что соответствует объему в 504 Мбайт.

3. LBA (Logical Block Addressing). Режим логической адресации секторов, который используется во всех жестких дисках объемом более 1 Гбайт. Именно этот режим устанавливается для большинства накопителей при выборе значения Auto.

Если BigLBA поддерживается BIOS, можно добиться этого и в системах семейства Windows 98/Ме, но с использованием дополнительных утилит, например Intel Application Accelerator для плат с чипсетами Intel. Об обновлениях BIOS и других утилитах для вашей системной платы можно узнать на сайте ее производителя.

4. Large. Еще один способ логической адресации блоков, который не получил распространения и применялся лишь в некоторых моделях жестких дисков размером до 1 Гбайт, fie поддерживающих LBA.

5. МРТ. Редко используемое значение, применяющееся для дисков с неизвестным методом трансляции.

В некоторых версиях BIOS вариант доступа определяется в параметре LBA Mode со следующими значениями.

6. Auto. Режим LBA включен; возможен также автоматический переход в режим Large, если есть соответствующий диск.

7. Disabled. Режим LBA отключен, а для доступа к диску используется Normal/ CHS.

При неправильном выборе режима данные на диске, скорее всего, будут недоступны, кроме того, есть вероятность повредить имеющиеся данные. По этой причине необходимо использовать только тот режим, в котором жесткий диск был изначально отформатирован.

Геометрия жесткого диска характеризуется следующими параметрами.

  1. Head — общее количество магнитных поверхностей диска и соответствующих им магнитных головок.
  2. Cylinder — общее количество дорожек, или цилиндров, на каждой поверхности диска.
  3. Sector — количество секторов, на которые делится каждая дорожка.
  4. Capacity — это информационный параметр, указывающий расчетную емкость данного диска. Все жесткие диски имеют стандартный размер сектора в 512 байт, и объем диска будет определяться по следующей формуле:

Capacity = Head * Cylinder * Sector * 512.

5. Precomp, WPCOMP — устаревший параметр, определяющий номер цилиндра, с которого будет выполняться более плотная запись данных на диск. Не используется для HDD с режимом LBA, да и для многих старых дисков с режимом Normal его не нужно устанавливать.

6. Landing Zone, LZONE — еще один устаревший параметр, указывающий номер дорожки, на которую должны переместиться головки перед остановкой жесткого диска (дорожки для парковки). Практически все HDD стандарта IDE паркуются автоматически независимо от значения рассматриваемого параметра.

Геометрические параметры жесткого диска обычно определяются автоматически и недоступны для редактирования. Как уже отмечалось, ручной ввод этих параметров может понадобиться только для очень старых дисков с режимом доступа Normal и только для таких дисков значения будут соответствовать их физическому устройству. Для HDD, использующих LBA, эти параметры условны, но они необходимы, чтобы правильно организовать доступ к данным.

Если вы обнаружили, что в установленном жестком диске емкостью 120 Гбайт на самом деле доступно только 112 Гбайт, не нужно сразу же бежать к продавцу и размахивать кулаками. Этому есть объяснение, которое связано с различными методиками подсчета объема производителями плат и операционной системой. Например, в рассматриваемом диске 57 474 цилиндра, 16 головок и 255 секторов, что соответствует емкости в 120,061 миллиардов байт. Для такого диска производитель указывает объем в 120 Гбайт, принимая 1 Гбайт -1 млрд байт. Но в информатике между основными единицами информации приняты следующие соотношения: 1 Кбайт = 210 байт = 1024 байт, 1 Мбайт = 220 байт = 1 048 576 байт, а 1 Гбайт = 230 байт = 1,074 млрд байт. Таким образом, фактический объем рассматриваемого диска: 120,06 / 1,074 = 111,8 Гбайт, именно такое значение будет указано при форматировании диска, а также в окне Компьютер.

Extended IDE Drive

Параметр позволяет включать или отключать автоматическое определение устройств на выбранном SATA-канале. Рассмотрим возможные значения.

1. Auto — параметры устройства определяются автоматически, это значение следует установить при подключении к данному каналу жесткого диска.

2. None — автоопределение устройств не выполняется. Установка этого значения при отсутствии накопителя на данном канате может ускорить загрузку на несколько долей секунды. Значение None также может помочь избавиться от проблем в работе некоторых моделей DVD-приводов, подключенных к данному каналу.
Настройка работы IDE-контроллера

В некоторых современных версиях BIOS можно встретить и другие параметры настройки накопителей:

Опция позволяет указать режим прямого доступа к памяти (DMA — Direct Memory Access, UDMA — Ultra DMA), используемый при работе накопителя, подключенного к данному каналу стандартного IDE/SATA-контроллера чипсета. Как правило, можно использовать режим автоматического определения возможностей накопителя (Auto). В случае проблем с данным конкретным диском можно попытаться отключить режим DMA (Disabled). Только стоит иметь в виду, что это приведет к существенному падению производительности дисковой подсистемы, использовать эту меру можно только в крайнем случае.

Зачастую среди значений данной опции присутствуют не только варианты, дающие возможность включить или отключить режим прямого доступа к памяти, но и значения, позволяющие указать конкретный режим. Тогда, если накопитель работает нестабильно, можно попробовать вместо полного отключения DMA перейти на один из младших режимов. Возможно, это полностью решит проблему, при этом не столь пагубно сказавшись на производительности дисковой подсистемы.

Для справки приведем названия режимов и максимальную скорость обмена данными с накопителем интерфейса IDE или SATA для каждого из режимов (следует учитывать, что режимы DMA дополняют режимы PIO Mode, обеспечивая существенно большую скорость работы):

Single-Word DMA 02.1 Мбайт/сек
Single-Word DMA 14.2 Мбайт/сек
Single-Word DMA 28.3 Мбайт/сек
Multi-Word DMA 04.2 Мбайт/сек
Multi-Word DMA 113.3 Мбайт/сек
Multi-Word DMA 216.7 Мбайт/сек
Ultra DMA 016.7 Мбайт/сек
Ultra DMA 125.0 Мбайт/сек
Ultra DMA 2 или Ultra DMA 3333.3 Мбайт/сек
Ultra DMA 344.4 Мбайт/сек
Ultra DMA 4 или Ultra DMA 6666.7 Мбайт/сек
Ultra DMA 5 или Ultra DMA 100100.0 Мбайт/сек
Ultra DMA 6 или Ultra DMA 133133.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 способы/режимы доступа к данным на жестком диске:

Максимальная пропускная способность протоколов передачи данных (Мб/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(R) 82801DB Ultra ATA Controller
  • Поставщик драйвера: Intel
  • Дата разработки: 01.10.2002
  • Версия драйвера: 2.3.0.2160
  • Цифровая подпись: Microsoft Windows Hardware Compatibility Publisher

Дальше, по рекомендации Intel® " If you need a Bus Master driver for the newer Intel® 800 series chipsets, we recommend using the Intel® Application Accelerator. ", был установлен Intel® Application Accelerator. Стоит отметить, что при установке Intel® Application Accelerator устанавливается и драйвер Intel(R) 82801DB Ultra ATA Controller , тот который Дата разработки: 01.10.2002, Версия драйвера: 2.3.0.2160 .

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)!, а все настройки выполнять ручками или стандартными средствами администрирования самой ОС.

Тонкая настройка DMA /UDMA в Windows XP

Для более тонкой настройки DMA /UDMA в Windows XP нужно нырять в дебри реестра Windows. Паpаметpы контpолёpа хранятся в pеестpе Windows, по адpесy HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass <4D36E96A-E325-11CE-BFC1-08002BE10318>. Внyтpи этой ветки находится 4 каталога:

Выбираем каталог который отвечает за нужный нам канал, и заходим в него. Каждому из каналов (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 другого устройства), должен был читать эти данные из регистров устройства. Давайте разберемся на примере:

  • На сетевую карту пришло 1500 байт данных.
  • Сетевая карта инициирует прерывание с целью сообщить процессору, что данные необходимо забрать с устройства, иначе произойдет так называемый buffer overrun.
  • Операционная система ловит прерывание от контроллера прерываний и отдает его на обработку драйверу.
  • Драйвер в цикле побайтно читает данные с регистров сетевой карты.

В итоге, если чтение одного байта отнимает около 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 портам.
  • IO порты могут отображать не более 65535 байт регистров, в то время как размер ОЗУ современных компьютеров в разы больше.
  • Читать регистры устройства из ОЗУ проще, нежели с помощью IO портов 🙂

Данные о том, какой диапазон IO портов или ОЗУ закреплен за устройством, хранятся в конфигурационном пространстве PCI, а именно в регистрах BAR0, BAR1, BAR2, BAR4, BAR5 [1].

Итак, существует два метода утилизации DMA: contiguous DMA и scatter/gather DMA.

Contiguous DMA

Данный метод очень прост и сейчас практически отжил свое, однако до сих пор используется для программирования звуковых контроллеров (к примеру Envy24HT). Его принцип следующий:

  • Выделяется один буфер достаточно большого размера в оперативной памяти.
  • Физический адрес (точнее сказать адрес на шине участка памяти, потому как physical address и bus address – равны в x86 архитектуре, но не равны в PPC) этого буфера записывается в регистр устройства.
  • Во время того, как приходят данные на устройство, контроллер устройства инициирует DMA трансфер.
  • После того, как буфер полностью заполнен, контроллер устройства инициирует прерывание, чтобы сообщить центральному процессору, что буфер следует передать операционной системе.
  • Драйвер операционной системы обрабатывает прерывание, и передает полученные данные из буфера, далее по стеку устройств операционной системы.

Как видите все достаточно просто, и как только шина ISA обзавелась поддержкой DMA, данный метод нашел очень широкое применение. Например драйвера сетевых карт имели два таких DMA буфера: один на прием данных (rx), другой на отсылку (tx).

Scatter/gather DMA

С ростом скорости Ethernet адаптеров, contiguous DMA показал свою несостоятельность. В основном из-за того, что требовались области памяти достаточно большого размера, которые подчас невозможно было выделить, так как в современных системах фрагментация физической памяти достаточно высока. Во всем виноват механизм виртуальной памяти, без которого нынче никуда 🙂

Решение напрашивается само собой: использовать вместо одного большого участка памяти несколько, но в разных регионах этой самой памяти. Возникает вопрос, но как же сообщить контроллеру устройства, как инициировать DMA трансфер и по какому адресу писать данные? И тут нашли решение, использовать дескрипторы, чтобы описывать каждый вот такой участок в оперативной памяти.

Типичный дескриптор DMA буфера содержит следующие поля:

  1. Адрес участка ОЗУ (именно bus address), который предназначен для DMA трансфера.
  2. Размер описываемого участка ОЗУ.
  3. Опциональные флаги и другие специфические аргументы.
  4. Адрес следующего дескриптора в памяти.

Структура дескрипторов определяется конкретным производителем контроллера устройства, и может содержать какие-либо другие поля. Дескриптор также как и DMA буфер, размещается в оперативной памяти.

Алгоритм scatter/gather DMA следующий:

  • Драйвер операционной системы выделяет и иницилизирует дескрипторы DMA буферов.
  • Драйвер выделяет DMA буферы (участки ОЗУ для DMA трансфера) и записывает необходимую информацию о них в дескрипторы.
  • Устройство по мере возникновения потребности, заполняет DMA буферы, и после того, как заполнен один или несколько буферов инициирует прерывание.
  • Драйвер ОС просматривает все дескрипторы DMA буферов, определяет какие из них были заполнены контроллером устройства, пересылает данные из буфера далее по стеку устройств и помечает буфер как готовый к DMA трансферу.

Порядок в каком контроллер устройства заполняет DMA буферы, определяется производителем. Контроллер может писать в первый свободный DMA буфер, либо просто писать подряд (дескрипторы DMA буферов в данном случае образуют односвязный кольцевой список) во все буфера и т.д.

На сегодня пожалуй все, иначе информации станет слишком много. В следующей статье я покажу вам, как с этой уличной магией работает IOKit. Жду отзывов и дополнений 😉

Термин DMA наверняка не раз встречался читателям в различных компьютерных статьях. Что же он означает, влияет ли это понятие на работу компьютера, и если да, то как? В этом мы и попытаемся разобраться.

DMA - Direct Memory Access

Принцип работы

Большинство устройств ПК нуждаются в периодическом обмене данными не только с центральным процессором (ЦП), но и с оперативной памятью. В первых вариантах персональных компьютеров процесс обмена данными какого-либо устройства с ОЗУ протекал при помощи процессора. Такой метод получил название 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 и материнской платой.

Поскольку именно с BIOS и ее настройками очень часто возникают вопросы, то данный справочник поможет вам в них разобраться. Пока что это небольшой материал, хотя в нем достаточно много интересных данных. В дальнейшем статья будет дополнять, чтобы максимально полно охватить все встречающиеся в BIOS опции.

Для облегчения поиска описания интересующей вас настройки, они идут в алфавитном порядке. Также можно воспользоваться и функциями поиска по документу (в большинстве браузеров комбинация клавиш Ctrl+F вызывает окно «Поиска»).

Обращаю внимание, что в некоторых опциях может быть достаточно большое количество разных вариантов настройки, что обуславливается классом материнской платы, чипсетом, производителем и типами поддерживаемых устройств. Поэтому, в качестве примера настраиваемых значений, будут приводиться наиболее актуальные на момент описания опции.


32Bit Data Transfer – 32 битный режим передачи данных
[Disabled] [Enabled]
При работе дисковых накопителей IDE или других, которые работают в совместимом режиме, 32 битный режим оптимизирует обмен данными по шине PCI. Если его отключить, то может немного снизиться быстродействие дисковой подсистемы, особенно в случае подключения двух IDE-устройств на один шлейф, поэтому лучше ставить опцию в положении Enabled.

3.3V Voltage, 5V Voltage, 12V Voltage – отображает напряжение на линиях питания +3.3 В, +5 В и +12 В в разделе мониторинга.

ACPI 2.0 Support – поддержка ACPI 2.0
[Disabled] [Enabled]
Опция Enabled активирует поддержку интерфейса управления питанием ACPI (Advanced Configuration and Power Interface) спецификации 2.0, которая поддерживает 64-разрядные операционные системы и является обратно совместимой с версией ACPI 1.0b.

ACPI APIC Support – поддержка ACPI APIC
[Disabled] [Enabled]
Опция Enabled активирует поддержку Расширенным Интерфейсом Конфигурирования и управления Питанием (ACPI) Улучшенного Программируемого Контроллера Прерываний (APIC). Это дает возможность работы с многопроцессорными системами и системами с одним процессором многоядерной архитектуры или поддерживающим технологию Hyper-Threading. Для того, чтобы операционная система наиболее корректно использовала возможности многоядерного процессора, перед ее установкой необходимо включить эту опцию (например, Windows XP автоматически установит ядро ACPI Multiprocessor PC).

ACPI Suspend Type – Режим приостановки работы
[S1(POS)][ S3(STR)]
В этом пункте задается, насколько глубоким может быть спящий режим работы ПК:
S1(POS) – в этом режиме спящее состояние определяется переходом системы в состояние низкого энергопотребления всех компонентов, но при необходимости можно быстро вернуться в нормальный режим;
S3(STR) – в этом режиме содержимое оперативной памяти сохраняется в постоянной памяти и останавливаются практически все узлы ПК, что позволяет ему стать более экономным, чем в режиме S1(POS), но на возврат в рабочее состояние из этого режима уходит больше времени.

Agere Firewire 1394 – контроллер IEEE 1394a.
[Disabled] [Enabled]
Опция Enabled включает, а Disabled отключает интегрированный контроллер IEEE 1394a (FireWire) на чипе Agere. Отключение неиспользуемого контроллера может освободить системные ресурсы для других устройств.

AI Overclocking
[Manual] [Auto] [Standard] [N.O.S.]
Настройка (на материнских платах ASUS) позволяет определить тип конфигурирования параметров системы, которые касаются разгона. Опция Manual соответствует пользовательскому режиму, в котором самостоятельно можно установить параметры системы, отвечающие за разгон. Auto соответствует режиму автоматической настройки системы, Standard – стандартному виду параметров, N.O.S. – активирует работу фирменной технологии ASUS N.O.S. динамического разгона.

BIOS EHCI Hand-off – Отключение интерфейса EHCI
[Disabled] [Enabled]
Опция Enabled отключает поддержку улучшенного интерфейса хост-контроллера USB 2.0 EHCI (Enhanced Host Controller Interface). Интерфейс EHCI полностью совместим со стандартами USB 1.1 и 2.0 и призван уменьшить участие процессора в работе контролера USB.

Block (Multi-Sector Transfer)
[Disabled] [Auto]
При настройке режимов работы SATA-контроллера опция Disabled позволяет выключить режим передачи данных блоками, если он не поддерживается вашим жестким диском. Делать это без нужды, конечно, не стоит, так как блочная адресация позволяет за один раз считывать сразу несколько секторов, что, безусловно, ускоряет процесс обмена данными.

C1E Support – Технология C1E
[Disabled] [Enabled]
Управляет технологией «C1E Support», которая разрешает отключение блоков процессора во время бездействия системы, чтобы уменьшить его энергопотребление. Опция Enabled разрешает работу технологии.

Chassis 1 Speed [xxxRPM] – скорость вращения корпусных вентиляторов
[Ignore] [N/A]
В данном пункте меню производится мониторинг скорости вращения корпусных вентиляторов в об/мин. Эту функцию можно отключить, если установить в настройке опцию Ignore.

Chasis Fan Ratio – Определение минимальной скорости вращения корпусных вентиляторов
[Auto] [90%] [80%] [70%] [60%]
В настройке «Chasis Fan Ratio» в процентах определяется минимальная скорость вращения корпусных вентиляторов, значению которой при регулировании функцией управления скоростью вращения Chasis Q-fan Control будет соответствовать минимальная температура процессора, указанная в настройке «Chassis Target Temperature». Практически минимальная скорость корпусных вентиляторов определяется по значению минимального напряжения питания установленных в корпусе вентиляторов и вычисляется с учетом того, что при напряжении питания 12 В скорость достигает 100%.

Chassis Target Temperature – параметр настройки Chasis Q-fan Control
[28ºC], [31ºC], [34ºC], [37ºC], [40ºC], [42ºC], [46ºC]
Настройка необходима для определения значения температуры процессора, при которой функция автоматического регулирования скоростью вращения корпусными вентиляторами ASUS Q-fan будет устанавливать минимальную скорость вращения. Эта настройка нужна для конфигурирования параметров регулятора.

Clock Over-Charging Mode
[Auto] [700mV] [800mV] [900mV] [1000mV]
Настройка необходима для повышения стабильности шины FSB при работе на повышенных частотах. Чем выше при разгоне устанавливается частота, тем выше рекомендуется выбирать и значения в настройке Clock Over-Charging Mode, но следует учесть, что это вызовет повышение нагрева северного моста чипсета.

Controller Mode – Выбор режима работы контроллера SATA
[RAID] [IDE] [AHCI]
В настройке «Controller Mode» можно определить режим работы дополнительного контроллера. Опция RAID позволит создавать SATA RAID массивы, опция IDE определит контроллер в режим эмуляции IDE устройств. Опция AHCI сконфигурирует SATA порты для работы по протоколу AHCI (Advanced Host Controller Interface), в котором реализованы такие функции оптимизации обращения к жесткому диску, как NCQ (Native Command Queuing), Hot Swap, Port Multiplier, Staggered Spin-Up.

Command Rate – Время декодирования команды
[1T][2T][3T]
Синонимы: CR, Command Per Clock, CMD
Задает время, которое необходимо контроллеру памяти для декодирования команды и адреса. Иногда описывается проще – время между началом выполнения двух команд. Настройка заметно влияет на производительность подсистемы памяти – чем меньше задержка, тем лучше. Но возможность ее успешного изменения, даже если она доступна, сильно зависит от количества и архитектуры установленных модулей памяти.

CPU EIST Function – поддержка функции управления частотой
[Disabled] [Enabled]
Опция разрешает работу Enhanced Intel SpeedStep Technology, которая позволяет при неполной загрузке процессора уменьшать его тактовую частоту и напряжение питания, что приводит к снижению энергопотребления и уменьшению тепловыделения системой.

CPU Enhanced Halt (C1E) – поддержка расширенного режима «простоя»
[Disabled] [Enabled]
Опция предназначена для включения поддержки расширенных функций энергосбережения процессором в режиме простоя (C1E), когда в целях экономии не только автоматически снижается частота и напряжение, но и могут отключаться некоторые блоки.

CPU Fan Profile – профиль функции ASUS Q-fan
[Optimal], [Silent Mode] [Performance Mode]
С помощью профиля для функции автоматического регулирования скоростью вращения процессорного кулера ASUS Q-fan, можно подбирать подходящую для вашего режима работы компьютера интенсивность регулирования. То есть выбрать профиль Performance Mode с достаточно высокой эффективностью охлаждения кулера, но при этом относительно высоким уровнем шума, либо выбрать тихий, но менее эффективный режим Silent Mode. Средним между производительным и тихим режимом является профиль Optimal.

CPU Fan Speed [xxxRPM] – скорость вращения процессорного кулера
[Ignore] [N/A]
В данном пункте меню производится мониторинг скорости вращения процессорного кулера в об/мин. Эту функцию можно отключить, если установить в настройке опцию Ignore.

CPU Host Frequency (MHz) – Опорная частота процессора
Синонимы: CPU FSB Clock, FSB Frequency, External Clock
Ручная установка опорной тактовой частоты (или частоты системной шины), с которой посредством множителей и делителей синхронизируются тактовые частоты остальных компонентов системы. При нормальной работе ПК чаще всего находится в положении Auto. Изменяется значение CPU Host Frequency только при разгоне процессора и/или других компонентов. Но следует помнить, что увеличение рабочих частот для микросхем приводит к увеличению их энергопотребления, а вследствие и тепловыделения – без хорошего охлаждения разгон крайне опасен.

CPU Multi-Threading – поддержка многоядерных процессоров
[Enable][Disable]
Позволяет для многоядерных процессоров, в том числе и с поддержкой логической многоядерности Hyper-Threading, включать и отключать режим многопоточных вычислений. Фактически при выборе варианта Disable отключаются все ядра процессора кроме первого физического. При использовании многоядерного процессора или процессора с поддержкой технологии Hyper-Threading опция должна всегда быть Enable.

CPU Spread Spectrum – Функция понижающая фон электромагнитного излучения
[Auto] [Disabled]
Функция CPU Spread Spectrum призвана понизить уровень электромагнитного излучения EMI возникающий от высокочастотных пульсирующих сигналов системной шины. Опция Disabled отключает ее. Для работы в режиме разгона функцию CPU Spread Spectrum желательно отключить, так как она понижает стабильность системы.

CPU Temperature [xxx°C/xxx°F] – отображает температуру процессора в разделе мониторинга системы.

CPU TM Function (Thermal Monitor 2, TM2) – Функция защиты процессоров Intel от перегрева
[Disabled] [Enabled]
Настройка «CPU TM Function» отвечает за функцию Thermal Monitor защиты процессора от перегрева. При достижении критической температуры процессора механизм Thermal Monitor производит комплекс мер, таких как пропуск тактовых импульсов, снижение тактовой частоты и рабочего напряжения, вплоть до отключения ПК, которые предотвращают выход системы из строя.

CPU Voltage – Напряжение на ядре процессора
[Auto] … [1.1V] …[1.7V] …
Настройка «CPU Voltage» определяет напряжение питания ядра процессора. Для стандартного режима работы следует оставить опцию Auto, а уже для режима разгона напряжение можно повысить, но при этом обязательно следует учитывать условия его охлаждения, потому что повышение напряжение на ядре напрямую влияет на его тепловыделение.

CPU Voltage Damper – Функция понижающая просадку напряжения на процессоре
[Auto] [Disabled] [Enabled]
Функция CPU Voltage Damper понижает проседание напряжения на процессоре, которое может возникать при повышенной его загрузке. Опция Enable включает функцию, которая в большей степени является актуальной лишь для «оверлокинга».

DMA Mode – выбор режима DMA при настройке режимов работы с устройствами хранения информации
[Auto] [SWDMA0] [SWDMA1] [SWDMA2] [MWDMA0] [SWDMA1] [SWDMA2] [UDMA0] [UDMA1] [UDMA2] [UDMA3] [UDMA4] [UDMA5]
Опция позволяет выбрать соответствующий режим DMA, который поддерживает устройство, хотя в большинстве случаев BIOS справится с этим самостоятельно.

Зависимость пропускной способности от выбранного режима DMA приведена в таблице:

Читайте также: