Ultra DMA
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
Ultra DMA
С лета 1997 года в компьютерных фирмах постоянно звучит вопрос "А эта системная плата (или винчестер) поддерживает Ultra DMA?" Массированная реклама сделала свое дело - не только покупатели новых, но и владельцы существующих компьютеров озабочены переходом на этот новый тип EIDE-интерфейса. Многие идут даже на то, чтобы обменять еще гарантийное оборудование с обычным EIDE на плату и винчестер с Ultra DMA. Действительно, удвоенная скорость передачи и аппаратный контроль целостности - весьма привлекательные свойства нового интерфейса. Однако при ближайшем рассмотрении красиво и сочно нарисованная картина выглядит далеко не так привлекательно и гармонично.
Для начала - небольшой технический обзор. Ultra DMA - это не сам интерфейс, а лишь один из его режимов работы, а сам он называется Ultra ATA, или ATA-33. Предыдущая модель интерфейса - ATA-2 - обеспечивает скорость передачи до 16.6 Мб/с; такая скорость может реализовываться либо в режиме PIO 4 (Programmable Input/Output Mode 4 - программный ввод/вывод типа 4), либо в режиме Multiword DMA 2 (Multiword Direct Memory Access Mode 2 - многословный прямой доступ к памяти типа 2). Режимы PIO проще в управлении - их используют DOS и Windows при отсутствии специальных драйверов конкретной модели контроллера, однако требуют заметных затрат процессорного времени и затрудняют параллельное выполнение задач. Режимы DMA сложнее в использовании, зато позволяют исключить центральный процессор из переноса данных, оставив ему только роль инициатора и диспетчера обмена с устройством.
Ultra ATA удваивает скорость передачи - его предел равен 33.3 Мб/с в режиме Ultra DMA; таким образом, эта скорость недоступна в режимах PIO. Собственно, это не так важно, ибо все популярные операционные системы сейчас поддерживают работу в DMA - драйверы есть даже для DOS, хотя не совсем понятно, какой там от этого толк.
Однако указанные скорости - ни что иное, как максимально возможные скорости передачи. Для того, чтобы передавать по интерфейсу данные с такой скоростью, винчестер должен успевать их считывать с дисков, а принимая - записывать на диски. Скорость же вращения большинства современных винчестеров составляет 5400 об/мин, при которой скорость считывания данных с дисков получается максимум около 10 Мб/с, да и то лишь на внешних участках дисков, которые движутся с наибольшей линейной скоростью. Скорость записи обычно оказывается ниже, причем нередко - весьма существенно. Таким образом, даже старый интерфейс ATA-2 имеет полуторный запас по скорости обмена с поверхностями дисков, а максимальная скорость обоих интерфейсов реализуется лишь при обмене с буфером винчестера, который имеет небольшой размер - 100..256 кб, и к тому же является именно буфером, а не кэшем. Отличие буфера от кэша заключается в том, что буфером называется промежуточная память, предназначенная для сглаживания различий скорости чтения/записи и передачи по интерфейсу, а кэшем - память, сохраняющая наиболее часто читаемые блоки. Разумеется, буфер винчестера может работать и в качестве кэша, но эффективность его в этом смысле крайне низка - размер и скорость обмена очень малы по сравнению с программным кэшем операционной системы.
Чтобы примерно оценить преимущество Ultra ATA перед ATA-2, можно проделать несложные выкладки. Алгоритм обмена процессора с винчестером таков: процессор инициирует операцию чтения; винчестер считывает первый сектор в буфер и выдает прерывание, продолжая читать следующие секторы; процессор либо забирает данные из буфера по протоколу PIO, либо это делает сам контроллер винчестера по протоколу DMA; процесс повторяется до передачи последнего сектора. Возьмем винчестер из лучших, обеспечивающий чтение с поверхности со скоростью 10 Мб/с, и рассмотрим его работу с каждым из двух типов интерфейсов. Поскольку скорость чтения с поверхности неизменна и меняется только скорость передачи буфера по интерфейсу, общее время считывания с диска нужного объема информации в обоих случаях будет одинаковым - изменится лишь время передачи буфера в память и интервал между этими операциями. Для передачи одного сектора (0.5 кб) со скоростью 16.6 Мб/с требуется около 30 мкс; для скорости 33.3 Мб/с это время составит около 15 мкс. При считывании 10 Мб на весь процесс уйдет одна секунда, из которой около 6/10 или 3/10 уйдет на собственно перекачку данных по интерфейсу. Однако, в отличие от режимов PIO, это время не будет потеряно на ожидание - в течение него процессор будет успешно выполнять другие задачи.
Эти расчеты приведены только для идеального случая - большинство современных EIDE-винчестеров имеют среднюю скорость чтения в районе 6-8 Мб/с и еще более низкую скорость записи, процесс чтения/записи очень редко имеет дело с большим количеством последовательных секторов - чаще всего винчестер гораздо больше занимается перемещением головок, чем собственно чтением или записью данных. Кроме этого, в большинстве бытовых и офисных систем процессору нечем заняться до завершения передачи данных, и он попросту простаивает. Достаточную загрузку процессора в состоянии обеспечить либо параллельные приложения, занятые интенсивной обработкой данных, либо мощные системы - издательские, звуко- и видеомонтажные.
Однако многие владельцы винчестеров с Ultra DMA совершенно справедливо могут возразить, что после замены им "обычного" винчестера они почувствовали заметный прирост скорости. Так оно и есть - после принятия стандарта Ultra ATA несколько фирм анонсировали новые модели винчестеров с этим интерфейсом. Первым и наиболее популярным был Quantum Fireball ST, существенно о?/p>