Борьба интерфейсов подключения периферийных устройств ввода/вывода и хранения информации началась, когда перед компьютером замаячила перспектива стать персональным, т. е. доступным и ориентированным на приложения, невзыскательные к ресурсам и скорости исполнения. SCSI всегда был более дорогой альтернативой IDE хотя бы в силу своей декларируемой производительности. Благодаря то ли цене, то ли действиям производителей готовых систем, то ли общественному мнению или всему сразу областью применения SCSI постепенно стали считаться исключительно серверы высокого уровня и специализированные рабочие станции. Более того, громкие анонсы новых протоколов передачи данных создали представление, что EIDE является не только более дешевым, но и не уступающим SCSI по скорости решением. Ниже пойдет речь о родовых различиях двух интерфейсов и их "профессиональной" пригодности в современных задачах широкого спектра.
Выписка из "истории болезни"
Термин Integrated Device Electronics, или IDE, стал синонимом недорогой дисковой подсистемы. Массовое распространение интерфейса, несколько поколений ценовых войн и история развития аппаратных и программных средств привели к тому, что сейчас около 90% всех PC стандартно снабжены контроллером жесткого диска IDE и используют накопители EIDE. Процессоры стали в сотни раз быстрее, емкость жестких дисков увеличилась в той же пропорции, а вот скорость передачи данных между диском и PC через контроллер IDE возросла примерно раз в десять, и сам контроллер в общих чертах остался тем же. На заре развития интерфейса для ускорения передачи данных IBM применила режим программируемого ввода/вывода (PIO), подразумевающий участие центрального процессора в транзакциях между системой и накопителем. Все остальные функции процессора на это время приостанавливаются. PIO -- это однозадачный подход. IDE -- это тоже однозадачный подход, в него с самого начала заложен принцип: один интерфейс -- одна инструкция. Гармонично довершала картину актуальная тогда операционная система DOS, также являвшаяся однозадачной. Напротив, SCSI (Small Computer System Interface) изначально был построен по "интеллектуальному" принципу. Адаптеры выполняют передачу данных, управляя шиной в режиме прямого доступа к системной памяти (Bus Master), а устройства активизируются "по необходимости". Это освобождает ресурсы процессора для выполнения других задач и позволяет осуществлять доступ к нескольким дискам одновременно. Предпринятое Western Digital со товарищи введение в начале 90-х стандарта Enhanced IDE расширило спектр совместимых устройств, привнесло двухканальную схему работы и способность к управлению шиной. Родовая травма "однозадачности" не помешала массовому распространению действительно быстрых и дешевых EIDE-устройств, а также мифа об их самодостаточности и адекватности современным задачам. Разработка новых протоколов передачи данных продолжает время от времени увеличивать предельные значения скоростей, теоретически доступных по интерфейсу EIDE.
К несчастью, скорость передачи данных отдельным устройством ввода/вывода -- не единственный фактор, имеющий значение для производительности системы в целом, а часто -- и не определяющий. Стандарту Enhanced IDE по-прежнему не хватает оснований считаться интерфейсом, удовлетворяющим требованиям современного скоростного PC. Пресловутое десятикратное отставание в прогрессе скорости контроллеров IDE от CPU, известное как I/O Gap, привело к тому, что процессоры большинства PC часто расходуют время на холостые циклы ожидания данных от подсистем ввода/вывода. Зато компьютеры получаются действительно дешевые.
PIO и Bus Master
Существует два механизма передачи данных адаптером от устройства хранения информации в системную шину: процессорный, или программируемый ввод/вывод (PIO) и ввод/вывод с использованием способности самого устройства захватывать шину, управлять ею и загружать данные непосредственно в системную память (Bus Master DMA).
Первый, классический способ приема данных от устройства состоит в том, что процессор выполняет команду чтения порта, считывает байт или слово данных в свой регистр, после чего переписывает его в память, затем повторяет эту процедуру до тех пор, пока вся необходимая информация не будет считана из устройства в память. Типичным примером реализации PIO являются IDE-контроллеры, практически без изменений прожившие с нами последнее десятилетие. При работе IDE-контроллера процессор отвечает за передачу данных, в это время выполнение других его функций приостанавливается. Проблема в том, что, кроме общения с периферийными устройствами хранения данных, CPU должен осуществлять множество других действий. В многозадачных операционных системах особенно накладно использовать процессор исключительно для операций ввода/вывода. Поэтому контроллеры внешних устройств стали наделяться возможностями, замещающими функции процессора. В стандарт интерфейса ввода/вывода Enhanced IDE, помимо расширения класса обслуживаемых устройств (жесткие диски, CD-ROM, магнитооптические и ZIP-накопители и т. д.) и увеличения их количества до четырех -- по два на каждом из двух возможных каналов, была внесена функция управления системной шиной. Процессор программирует контроллер EIDE, указывая ему, откуда он должен взять данные и куда в память их положить. Затем контроллер захватывает управление шинами PCI и памяти и выполняет операции по считыванию данных с жесткого диска или CD-ROM непосредственно в память в режиме прямого доступа (DMA -- Direct Memory Access). При таком способе обмена данными процессор свободен после выдачи команд контроллеру EIDE и занимается другими задачами.
Тем не менее, даже наделенный свойством управления шиной интерфейс EIDE сохранил свой главный недостаток, будучи по своей природе однозадачным. EIDE хорош для операционных систем, таких, как DOS и ранняя Windows, которые сами являются однозадачными, так как он в состоянии выставить в определенный момент времени ровно один запрос ввода/вывода. Многозадачные среды, такие, как OS/2, NT, Windows 95 или NetWare, не только упростили работу с приложениями, но и сделали очевидным преимущество применения контроллеров, обслуживающих множественные запросы к данным. А это под силу только SCSI.
Что же касается EIDE, то, недорогой и ограниченный в применении, он только некоторыми чертами отдаленно напоминает своего более развитого соперника. Функция Bus Master наделяет интерфейс EIDE SCSI-подобными свойствами. Само расширение интерфейса IDE до двух независимых (что тоже неочевидно) каналов, обслуживающих одновременно выполнение двух запросов к двум из четырех устройств, вносит некоторый параллелизм и дает определенный выигрыш в производительности. Однако это далеко не то же самое, что запустить семь параллельных запросов к устройствам на одном контроллере SCSI! Характерно, что реализация одновременного обслуживания двух запросов к устройствам на двух независимых каналах EIDE, заложенная в основу интерфейса, до недавнего времени имела некоторую поддержку под Windows 95 только для контроллеров Intel PIIX. В других случаях операционная система не могла обращаться более чем к одному устройству EIDE в каждый момент времени, что, конечно же, сказывалось на производительности системы в целом, особенно при наличии медленных (по сравнению с жесткими дисками) устройств вроде приводов CD-ROM или стримеров. Можно надеяться, что со стандартизацией интерфейсных чипов и улучшением программной поддержки со стороны операционных систем EIDE сможет обеспечивать и одновременный поканальный доступ к устройствам, и эффективное управление системной шиной, но ему все равно будет далеко до возможностей SCSI.
Многозадачность
Важнейшей характеристикой производительности используемых в PC контроллеров ввода/вывода является способность к одновременной обработке данных нескольких приложений. В компьютере много устройств, несоответствие скоростей которых составляет несколько порядков. Процессор мощностью в сотни MIPS, в течение десятков миллисекунд ожидающий отработки запроса ввода/вывода, подобен Ferrari, вздумавшему полетать по проселкам Фастовского района. Десять лет назад процессору нужно было 100 мс для формирования запроса ввода/вывода к одному диску, отработка запроса занимала также около 100 мс. Сегодня на запрос требуется 1 мс, на отработку же инструкции уходит порядка 10 мс. В однозадачной среде 9 мс, или 90% времени, составляет время ожидания. В многозадачной среде вместо ожидания отработки инструкции процессор переключается на другую задачу, генерирует новый запрос и т. д. Одновременная обработка различных инструкций многократно повышает производительность дисковой подсистемы. Контроллер Enhanced IDE по-прежнему работает только с одним устройством ввода/вывода в каждый момент времени. Отсутствие механизма параллельной обработки нескольких потоков данных и реальной поддержки операций ввода/вывода в режиме DMA без участия центрального процессора -- основной бич дисковой EIDE-подсистемы и ее "черная метка". В действительности не подвергается сомнению преимущество SCSI перед EIDE -- иначе почему в высокоуровневых системах и серверах баз данных сплошь используется только SCSI? Вопрос состоит в том, имеет ли смысл применение SCSI-устройств в настольных компьютерах, типичным приложением для которых является работа в Internet. Ответ -- однозначно. Причин несколько, но самыми весомыми являются две. Во-первых, SCSI -- это интерфейс, реализующий множественные одновременные запросы к устройствам на одной шине. Во-вторых, SCSI реально обеспечивает управление шиной в режиме Bus Master с минимальной нагрузкой на центральный процессор. Когда жесткий диск и CD-ROM подсоединены к одному интерфейсу SCSI, медленное позиционирование головок привода компакт-дисков не сказывается на быстродействии операций с жестким диском, поскольку устройство SCSI отключается от шины, пока не наступает готовность к передаче данных. Сколько бы ни было на шине SCSI-устройств, активизация, или подсоединение к шине каждого из них, производится самим устройством только при передаче данных. Поскольку поток информации с жесткого диска измеряется несколькими мегабайтами в секунду (и для отдельно взятых дисков EIDE и SCSI с одинаковыми механическими характеристиками идентичен), то даже относительно недорогого контроллера Ultra SCSI с пропускной способностью до 20 MBps достаточно для обеспечения полноценной параллельной работы двух-трех накопителей SCSI на одной шине. Необходимость в более дорогом контроллере Ultra/Ultra2 Wide SCSI с его запасом производительности в 40/80 MBps может возникнуть разве что при интенсивной обработке мультимедийной информации.