Что такое Ultra-DMA, и зачем мне это надо?

Вот краткий обзор технологий IDE дисков:

IDE, EIDE и ATAPI

Это старые технологии. Большинство жестких дисков и не-SCSI интерфейсов, которые вы можете купить сегодня или уже используете - EIDE, хотя множество винчестеров большой емкости - UDMA.

Bus Master DMA

Bus Master DMA - это технология, повышающая скорость обмена с жестким диском, требующая поддержки материнской платы, BIOS и, по крайней мере, какой-то поддержки от самого жесткого диска.

Подробнее смотрите на http://developer.intel.com/design/pcisets/busmastr/FAQs.htm.

Ultra-DMA он же Ultra-ATA он же Ultra33 он же...

Ultra-DMA может называться по-разному, но мы его будем называть просто UDMA.

UDMA - это более продвинутая технология, обеспечивающая передачу данных жесткого диска со скоростью до 33.3 Мб/сек в UDMA режиме 2 и 66.7 Мб/сек в режиме 4, что от двух до четырех раз быстрее, чем EIDE, и дешевле, чем SCSI. Много новых компьютеров уже поставляется с UDMA-дисками большого размера и UDMA-интерфейсами, однако возможна установка дополнительной карты UDMA-интерфейса (такой как Promise Ultra33 или Ultra66), чтобы увеличить скорость даже на старых не-UDMA дисках.

Подробнее о UDMA смотрите на http://www.quantum.com/src/whitepapers/ultraata/

Замечу, что длина кабеля UDMA, по сравнению с простым DMA, желательно должна быть менее 30см, и не более 18 дюймов. Для скорости 66Мб/сек требуется специальный 80-жильный кабель не большей длины. Если у вас появляется большое количество CRC-ошибок, то попробуйте использовать кабель покороче.

По крайней мере "Ultra"?

Прежде, чем пойдем дальше, давайте проясним заблуждение. Эти 33 и 66 MB/сек - максимальная скорость передачи (burst transfer rate), а это встречается не очень часто. Вот кусок из UDMA.txt:

Быстрый (burst) (немедленный) режим передачи предполагает от 16.6МБ/сек
(PIO режим 4) до 16.6МБ/сек (DMA режим 2) и до 33МБ/сек (UDMA).
Kim-Hoe Pang в своем патче ядра 2.1.55 логически проверил скорость передачи
в максимальном режиме UDMA: 60 нс/слово, что означает 33МБ/сек.

Замечу, что скоростной (burst) режим передачи влияет только на данные,
передаваемые из кэша EIDE винчестера (476Кб на IBM 6.4Гб),
а это IMHO не особенно актуально для большинства пользователей Linux.

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

Намного большее значение имеет устойчивая скорость передачи (sustained transfer rate) - скорость, на которой данные передаются с винчестера в память. Проще всего использовать hdparm, чтобы измерить устойчивую скорость передачи, например "hdparm -t /dev/hda", для измерения скорости первого IDE диска.

Вот некоторые данные, собранные после большого количества испытаний, с
использованием утилиты hdparm (Mark Lord):

PIO в режиме 4 под Linux дает скорость передачи:   +/- 5.2MB/s

DMA в режиме 2 под Linux дает скорость передачи:   +/- 7.2MB/s

UDMA в режиме 2 под Linux дает скорость передачи:  +/- 9.8MB/s

Как вы можете видеть, UDMA все еще в два раза быстрей обычного EIDE, и все еще значительно быстрей Bus Master DMA. Большинство современных UDMA-дисков дают от 10 до 15 МБ/сек с использованием UDMA в режиме 2 (33 MB/s) или 4 (66 МБ/сек).

Кроме того, использование DMA, в отличии от PIO, значительно сокращает использование процессора во время обмена с диском.

UDMA или SCSI?

Я не могу дать вам точные цифры, но, по общему мнению, SCSI может дать лучшую производительность, чем UDMA. Тем не менее, если вы посмотрите на цены винчестеров, то заметите, что UDMA значительно дешевле. В большинстве случаев, коэффициент цена/производительность говорит в пользу UDMA.