В начале 1990-х годов технологии производства накопителей на жестких дисках достигли такого уровня, что стало ясно — архитектура АТА в самом скором времени перестанет соответствовать их возможностям. Выходом из сложившейся ситуации стала разработка стандарта АТА-2, который можно рассматривать как расширение первоначальной версии АТА. Внесенные в новый стандарт дополнения существенно улучшили параметры интерфейса. В нем определены более быстрые режимы передачи данных программного ввода/вывода (РЮ — Programmed I/O) и с использованием прямого доступа к памяти (DMA), добавлены новые команды для накопителя (в частности, команда «Identify Drive», позволяющая BIOS автоматически распознавать тип и определять параметры жесткого диска), введен второй канал для подключения дисководов, предусмотрен специальный режим блочной передачи данных (Block Transfer Mode) и определены новые способы обращения к секторам на жестком диске с использованием логической адресации блоков (LBA — Logical Block Addressing). Логическая адресация блоков стала самым эффективным средством для преодоления традиционно существовавшего ограничения емкости жесткого диска в 504 Мбайт. Несмотря на столь впечатляющие усовершенствования, в стандарте АТА-2 для подключения накопителей используются те же самые 40-контактные разъемы, что и в предыдущей версии, а старые IDE-накопители полностью совместимы с новым интерфейсом.
Наряду с АТА-2, можно встретить два других названия этого интерфейса: EIDE и Fast-АТА. Это не другие стандарты, а просто разные реализации стандарта АТА-2. Версия EIDE была разработана фирмой Western Digital на базе как стандарта АТА-2, так и ATAPI. Она оказалась настолько удачной, что аббревиатурой EIDE стали обозначать все модернизированные варианты интерфейса IDE. Фирмы Seagate и Quantum сосредоточили свои усилия на разработке реализации Fast-ATA стандарта АТА-2. Ее отличие от EIDE заключается в том, что она разрабатывалась только на основе стандарта АТА-2. С практической точки зрения разницы между АТА-2, EIDE и Fast-ATA нет, поэтому часто эти названия используются как синонимы (хотя с технической точки зрения это не совсем корректно).
Граница емкости в 504 Мбайт
Предел в 504 Мбайт (528 Мб в десятичных единицах), являющейся, возможно, наиболее существенным ограничением в рамках традиционной IDE-архитектуры, возник из-за несогласованности действий разработчиков BIOS и создателей архитектуры контроллера накопителей WD1003. Чтобы уяснить суть этого ограничения, необходимо понять, как осуществляется адресация данных в IDE-накопителях. Классической схемой адресации является схема CHS (Cylinder, Head, Sector—цилиндр, головка, сектор). Проще говоря, необходимо ввести в регистры контроллера WD1003 необходимые вам номер цилиндра, номер головки и номер сектора, а затем через программное прерывание INT13 вызвать из BIOS процедуру, перемещающую головки накопителя на заданный сектор для считывания или записи информации.
В теории все выглядит прекрасно, но на практике возникает проблема. Дело в том, что предельные значения количества цилиндров, головок и секторов в BIOS и в контроллере WD1003 разные. В табл. 11.2 приведены эти значения и показаны итоговые ограничения на доступное дисковое пространство накопителя с классическим IDE-интерфейсом. В BIOS определены следующие максимальные значения: 1024 цилиндров, 256 головок и 63 сектора на дорожку. Если перемножить все эти числа, а результат затем умножить на 512 (количество байт в секторе), то получается, что теоретический предел ограничения емкости накопителя на уровне BIOS составит 8 455 716 864 байт (примерно 7,88 Гбайт или 8,4 Гб в десятичных единицах). Контроллер WD1003 может работать с 65536 цилиндрами, 16 головками и 256 секторами на дорожке, т.е. теоретическая емкость накопителя составляет 128 Гбайт (137 Гб).
Проблема заключается в том, что каждый из параметров накопителя ограничивается на минимальном уровне. Так, максимально доступное количество цилиндров оказывается равным 1024, максимальное количество головок — 16, а максимальное количество секторов — 63. Если перемножить эти три числа, а результат умножить на 512, то получим величину 504 Мбайт (528 Мб). Если бы разработчики BIOS и контроллера WD1003 заранее договорились о единых предельных значениях параметров накопителей, то проблема была бы устранена, даже не возникнув, и предел емкости IDE-накопителей изначально оказался бы равным 128 Гбайт. Но реальность, увы, такова, что доступное дисковое пространство стандартных IDE-накопителей в сочетании со старыми версиями BIOS составляет всего лишь 504 Мбайт.
Из приведенных расчетов становится ясно, почему к IDE-интерфейсу можно без проблем подключать накопители емкостью до 504 Мбайт — и не более. Конечно, существуют методы преодоления этого ограничения. Поскольку BIOS по своей сути является программным обеспечением, наиболее простой и экономичный способ преодоления барьера состоит в расширении возможностей процедур INT13, за счет запуска специализированного драйвера в момент загрузки компьютера. Доработка процедур, вызываемых через прерывание INT13, позволяет работать с накопителями, емкость которых превышает 7,88 Гбайт. Наиболее популярными драйверами такого типа являются Drive Rocket и Disk Manager фирмы Ontrack, которые позволяют персональному компьютеру обращаться ко всему дисковому пространству больших IDE-накопителей, а не только к первым 504 Мбайт.
Для интерфейсов EIDE и UDMA допускается работа с оверлейными (обеспечивающими адресацию дискового пространства свыше 504 Мбайт) драйверами, причем драйвер Disk Manager (или подобные ему) часто входят в комплект поставки современных жестких дисков большой емкости. Однако есть несколько причин, по которым нежелательно использовать такие оверлейные драйверы. Во-первых, они обычно занимают часть очень ценной области оперативной памяти в пределах первых 640 Кбайт, поскольку далеко не во всех системах для них находится свободное место в верхней памяти UMA. Во-вторых, старые оверлейные драйверы не всегда хорошо работают с операционными системами Windows, что приводит к традиционным проблемам совместимости жестких дисков большой емкости с Windows. В-третьих, оверлейные драйверы могут конфликтовать с загруженными в память драйверами других устройств и резидентными программами.
В конечном счете, наиболее предпочтительным способом введения поддержки накопителей большой емкости в интерфейсах EIDE и UDMA является модернизация BIOS до версии с усовершенствованными процедурами, вызываемыми через прерывание INT13. Фирмы AMI и Micro Firmware первыми начали выпускать системные BIOS, совместимые с EIDE, однако впоследствии поддержка стандарта EIDE стала неотъемлемым свойством всех BIOS и контроллеров накопителей. В настоящее время общепринятой нормой стала поддержка режима UDMA/66 и выше при соблюдении обратной совместимости с EIDE и IDE. Хотя замена BIOS — операция более сложная, чем установка драйвера, в большинстве случаев она себя полностью оправдывает (экономится память и обеспечивается лучшая совместимость с операционными системами). Разумной альтернативой модернизации системной BIOS может стать замена контроллера накопителей, т.е. установка нового адаптера с собственной встроенной BIOS и модернизированными процедурами, вызываемыми через прерывание INT13.