Вопросы и ответы по IDE | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Этот раздел написан на основе распространяемых в сети Internet документов FAQ (Frequently Asked Questions) и содержит ответы на ряд вопросов, касающихся использования устройств IDE/ATA в современных компьютерах. Технические деталиКак работает ATA(-2)? Способы передачи команд, их интерпретации, отклика на них и т. п. формируют основу Advanced ATA. Существуют 7 регистров (Task File), которые BIOS использует для чтения/записи при создании команд. Восьмой регистр используется для чтения и записи данных. Сигналами чтения/записи управляет BIOS, но их тактирование определяется контроллером и спецификациями ATA, задающими скорость отклика на те или иные сигналы. Существует 4 режима программируемого ввода/вывода (Programmed Input/Output - PIO) и 3 режима прямого доступа к памяти (Direct Memory Access - DMA). Скорость передачи (transfer rate) определяется быстротой работы регистров и частотой тактирования операций чтения/записи. Что такое режимы PIO? 1 цикл 1 сектор 1 Мегабайт 2000 * ---- * ------ * -------- = 3.3Mбайт/сек 600нс 256 слов 2048 сект. 600нс показывает скорость обмена данными. Таким образом, максимальная скорость обмена в режиме 0 может составлять 3.3 мегабайта в секунду. В таблице 5 приведен список параметров для остальных режимов:
Режимы ATA-2 (3 и 4) используют аппаратное управление потоком данных (IORDY). Это означает, что диск может использовать линию IORDY для замедления контроллера при необходимости. Контроллеры, не поддерживающие IORDY, могут приводить к потере данных при использовании быстрых режимов PIO; в этом случае следует использовать менее скоростные режимы. При получении команды Identify Drive диск возвращает, наряду с другими параметрами, информацию о поддерживаемых режимах PIO и DMA [Эти параметры можно определить с помощью программы WDTBLCHK.EXE, которую вы можете найти на приложенной к книге дискете.] . Что такое режимы DMA? Существует два различных типа прямого доступа к памяти: DMA и busmastering DMA. Стандартный DMA использует установленный на системной плате контроллер DMA для выполнения арбитража запросов задач, захвата шины и передачи данных. В случае busmastering DMA, перечисленные операции выполняются контроллером. Безусловно, это увеличивает стоимость контроллера. К несчастью, в системах ISA используются старые и медленные контроллеры DMA, неэффективные при работе с современными дисками. Платы VLB не могут использовать режим DMA и должны быть busmastering DMA. Использование обычного режима DMA возможно только с контроллерами EISA и PCI: для EISA тип \'B\' будет обеспечивать скорость обмена 4MB/s, для PCI тип \'F\' от 6 до 8MB/s. Сегодня качественная программная поддержка DMA достаточно редка, как и контроллеры, поддерживающие DMA. Возможные режимы DMA перечислены в таблице 6.
Отметим, что некоторые контроллеры способны использовать эти режимы DMA как способ обмена с диском без реального прямого доступа к памяти. В таких случаях режимы DMA используются просто как дополнение к режимам PIO. Адреса регистров Task File и ввода/вывода
Второй канал ATA использует порты 170-177. Нет никаких причин, запрещающих расширение пространства адресов портов ввода/вывода; стандартом de-facto для третьего и четвертого портов стали адреса 1E8 и 168. Потенциальная поддержка портов с другими адресами известна только в спецификации BIOS фирмы Phoenix. Что делает контроллер ATA-2? На рисунке 6 приведены диаграммы сигналов для 8- и 16-битового обмена данными. |------------ t0 ------------------------| __________________________________________ | Address Valid *1 _____/ \\________ |-t1-|----------- t2 -----------|-t9-| | | |____________________________|---t2i-----|_ DIOR-/DIOW- ____________/ \\_____________/ | | | | | | ________|__ -| |-t8 Write Data *2 --------------------------------___________------------ | | |--t3--| | | | | -|t4|- | | | _______|___ ____ | Read Data *2 ---------------------------------___________X____------ -|t7|- | | -|t6 |- | | | | -| tA |- |-t5--|-t6Z--| | |___________________________________________| IOCS16- ________/ | | \\____ | -|tRd|- | _________________|___________________|___________________ IORDY XXXXXXXXXXXXXXXXX____________________/ |-------tB--------| *1 Адреса устройств содержат сигналы CS0-, CS1- and DA2-0 На рисунке t0 означает продолжительность цикла чтения/записи, наиболее значимый параметр для определения скорости PIO. Как вы можете видеть число различных режимов PIO и DMA несколько больше, чем значений t0. Создание недорогого интерфейса, полностью соответствующего спецификации ATA-2, является достаточно сложной задачей. Наиболее часто используемым решением является полное программирование процесса тактирования; к несчастью, способ программирования контроллеров ATA не стандартизирован и они несовместимы с этой точки зрения. Вследствие этого, для каждого контроллера приходится использовать специфические для каждой операционной системы драйверы, чтобы обеспечить высокую производительность дисковых операций. Что такое блочный режим? Вместо явного увеличения скорости обмена Fast ATA и многие другие драйверы устройств допускают команды множественного чтения/записи, которые увеличивают число секторов, передаваемых без использования прерываний. Это снижает нагрузку на хост, поскольку каждое прерывание заставляет процессор переключать контекст, проверять устройство и устанавливать скорость передачи (или передавать данные в случае PIO). Команды Read Multiple Command (0xC4) и Write Multiple Command (0xC5) являются командами на уровне диска и позволяют передавать несколько секторов данных без использования линии запроса прерывания IRQ на диске, сообщающей процессору о запросе от винчестера. Линия IRQ используется в тех случаях, когда:
При обычном чтении или записи прерывания могут постоянно приостанавливать работу CPU и, в зависимости от процессора и обрабатываемой задачи (многозадачная ОС, Unix, и т.п.), может возникать та или иная задержка при обработке запросов диска. Множественное чтение/запись позволяет передавать большое число секторов (от 2 до 128) в один прием, обеспечивая ускорение операций до 30%. В однозадачных системах, подобных DOS, любое увеличение производительности сверх нескольких процентов обычно говорит о плохом управлении кэш-буферами для части диска. Замечание: Что такое LBA? LBA уменьшает загрузку CPU поскольку операционная система адресует сектора линейно (LBA), и эти адреса обычно пересчитываются в CHS (цилиндр-головка-сектор) для обращения к диску. При использовании же LBA, пересчета адресов не требуется. Что общего и в чем различия между ATAPI и ATA(-2)? Смысл этого заключается в том, что 8-битовые регистры Task File, используемые винчестерами, недостаточно велики для поддержки некоторых структур команд CD-ROM. Следовательно, ATAPI-устройства поддерживают только минимум команд ATA. Для реализации большинства своих функций устройства используют транспортный протокол ATAPI (ATAPI Transport Protocol), при котором через регистр данных (Data Register) передаются пакеты длиной по крайней мере 12 байт. Эти пакеты команд образованы на основе команд SCSI, что упрощает переписывание SCSI-драйверов приводов CD-ROM и стриммеров для стандарта ATAPI. Остерегайтесь того, что интеллектуальные (например, кэшированные) контроллеры, не поддерживающие ATAPI будут конфликтовать с пакетными командами. Традиционно регистры данных используются только для передачи 512-байтовых секторов; 12-байтовые пакеты команд полностью отличаются от них и должны передаваться контроллером другим способом. Чем отличается второй порт? На самом деле есть другая причина использования второго порта для устройств ATAPI. Это значительное число расширенных возможностей, поддерживаемых дисковыми интерфейсами, таких, как буферы упреждающего чтения и обратная запись, которые могут появляться из-за совместимости с ATAPI. Это означает, что если драйверы интеллектуальных портов ATA-2 не поддерживают ATAPI или просто не функционируют должным образом они могут создавать массу проблем. Способом избежать этих проблем является использование второго порта, обеспечивающего только базовые функции ATA. Наконец, устройства ATAPI на первом порту будут вызывать проблемы при использовании драйверов Windows FastDisk. Как происходит трансляция? 1. Стандартная трансляция.
Здесь присутствует только один этап трансляции (T1), который является внутренним свойством винчестера. Реальная (физическая) геометрия устройства полностью невидима извне. Количества цилиндров, головок и секторов, напечатанные на этикетке для использования в программе установки параметров BIOS, никак не связаны с физическими параметрами винчестера. Логическая геометрия ограничена со стороны IDE (16 головок) и со стороны BIOS (1024 цилиндра), что в общей сложности ограничивает размер дисков (504MB). CHS означает адресацию цилиндр-головка-сектор.
Логическая геометрия используется для обмена между диском и BIOS, тогда как другая (трансляционная) геометрия служит для обмена между BIOS и операционной системой. Трансляция осуществляется в два приема (T1 и T2). Этап T2 выполняется BIOS. Эта процедура позволяет преодолеть барьер 528MB, поскольку не накладывается одновременных ограничений BIOS и IDE: логическая геометрия не позволяет использовать более 16 головок, но число цилиндров не ограничено 1024. В трансляционной геометрии - наоборот. В большинстве BIOS расширенная CHS-трансляция обозначается как опция \'LARGE\'. Отметим, что геометрия, которую вы задаете в программе установки параметров BIOS (setup), является логической геометрией, а не трансляционной. 3. Логическая адресация блоков (Logical Block Addressing - LBA)
Этот режим позволяет преодолеть барьер 528MB, также, как в extended CHS. Поскольку эта схема несколько проще в сравнении с CHS, она зачастую незначительно (читайте: незаметно) быстрее (в зависимости от качества драйвера LBA может оказаться даже несколько медленнее). BIOS с трансляцией можно реализовать на системной плате или на плате контроллера. В общем случае используется принятая по умолчанию геометрия диска и, если число цилиндров превышает 1024, номер цилиндра делится на подходящее число (степень 2), а число головок умножается на то же число. Возьмем в качестве примера диск 540 Мб с 1057 цилиндрами и 16 головками. DOS может использовать только 1024 цилиндра, но умеет адресовать до 255 головок. BIOS с трансляцией будет передавать ОС через прерывание INT 13 измененную геометрию с 528 (1057/2 (округленно) цилиндрами и 32 головками (16*2). В этом случае при запросе к диску BIOS будет выполнять обратную трансляцию или вычислять LBA-номер (если режим LBA включен). Такой способ позволяет использовать диски размером до 8 Гб. Детальное описание трансляции. Для дисков с размером более 528MB, CHS-адреса, которые BIOS получает от операционной системы, должны конвертироваться в адреса Extended CHS или LBA. Рассмотрим вариант использования Extended CHS. Во-первых, при установке параметров BIOS, должно быть определено значение N. Это число используется для преобразования геометрии диска в геометрию, поддерживаемую BIOS для прерывания INT 13H. Этот интерфейс требует, чтобы значение Cyl было не более 1024. Число цилиндров (слово 1 Identify Device) делится на N, тогда как число головок (слово 3 Identify Device) умножается на это число. N может иметь значения 2, 4, 8, ..., (степени 2). Во-вторых, в большинстве BIOS с трансляцией используется приведенный ниже алгоритм используемый при работе с INT 13H: eCyl = ( Cyl * N) + ( Head / dHead ); eHead = ( Head % dHead ); eSector = Sector; Для примера предположим, что диск имеет 2000 цилиндров, 16 головок и 63 сектора (Identify Words 1, 3, 6), а значение N=2. BIOS сообщает DOS, что диск имеет 1000 цилиндров, 32 головки и 63 сектора при вызове INT 13H с AH=08H. Общее число секторов равно 2016000.
Отметим одну особенность данного алгоритма: физический порядок секторов на диске не изменяется - за сектором n следует сектор n+1 при любой адресации CHS, Extended CHS и LBA. Разные способы адресации означают лишь различные алгоритмы трансляции, однако не все реализации BIOS поддерживают каждый из вариантов трансляции. Поэтому изменение алгоритма трансляции является потенциально опасным действием и может привести к потере данных на диске.. Что такое Enhanced Disk Parameter Table? Расширенная таблица параметров (Enhanced Disk Parameter Table - EDPT) является расширением стандартной таблицы, допускающим использование неопределенных полей для обеспечения информации об используемом способе трансляции. Она использует сигнатуру (A0 в байте 3) и контрольную сумму (байт 15) для того, чтобы программы не могли ошибиться при произвольном доступе к EDPT. Этот способ является более или менее общепринятым для BIOS с трансляцией. Стандарт Phoenix Enhanced BIOS задает ряд расширений INT13 и 16-байтовое расширение FDPT. Более поздние версии содержат детальную информацию о текущих режимах PIO или DMA, использовании блочного режима, адресации LBA или (E)CHS, 32-битовой передаче, типе среды (съемный диск, CD-ROM), базовом адресе порта управления и IRQ. Иными словами, таблица описывает все новые возможности ATA и достаточно гибка для работы более, чем с 4 устройствами, нестандартными адресами портов и IRQ. Корректная поддержка перечисленных особенностей важна для использования технологии Plug\'n\'Play с устройствами ATA. Спецификация EIDE BIOS компании Western Digital не содержит полного набора перечисленных функций. Что делает программа Disk Manager? Если Disk Manager (DM) использовался только для форматирования ведомого (slave) диска, DDO можно установить в файле config.sys как обычный драйвер (device=dmdrvr.bin). С другой стороны, использование DM на ведущем (master) диске недостаточно просто с технической точки зрения. Поскольку DOS загружается с ведущего диска, вы должны загрузить DDO до того, как начнете работать с диском, существует единственный способ сделать это - загрузка драйвера до загрузки ОС. Для реализации этой возможности требуется вносить изменения в Master Boot Record (MBR). Эта схема работает хорошо, но имеет ряд недостатков. Во-первых, DDO должен быть загружен до операционной системы, что не позволяет загрузить ОС с дискеты. При попытке загрузки с дискеты DDO не может загрузиться и раздел диска будет недоступен. Это затруднение можно преодолеть, включив в файл config.sys на загрузочной дискете строку \"device=dmdrvr.bin\". Во-вторых (это более важно), недостатком является то, что при установке ОС переписывается MBR, после чего модуль DDO становится недоступным и вы не сможете получить доступ к диску до тех пор, пока не создадите новую MBR с помощью программы DiskManager. В-третьих, ошибка в секторе с DDO приведет к невозможности загрузки операционной системы и доступа к диску. Хотя переписать сектор с DDO не составляет труда (с помощью программы DMCFIG.EXE), возникновение такой ситуации может явиться предвестником серьезных проблем (например, вирусной атаки). Вы можете в таких случаях обращаться в службу технической поддержки фирмы Ontrack (tech@ontrack.com). Преимущество форматирования ведущего диска с помощью DM вместо загрузки DDO из config.sys заключается в том, что вы можете в этом случае использовать 32-битовый доступ к файлам Windows for Workgroups на обоих дисках - при использовании dmdrvr.bin ведомый диск допускает только 16-битовый доступ. Disk Manager версий 6.x имеет некоторые дополнительные недостатки, которые были исправлены в версии 7. К ним относится неполная совместимость с драйверами большинства плат VLB ATA(-2), затруднения при работе с устройствами, не являющимися винчестерами (ATAPI) и отсутствие поддержки цепочек. Disk Manager v6.x поддерживал только DOS (и Windows 3.x), поскольку использовалась нестандартная таблица разделов (v7.x более совместима с OS/2 Warp, Windows NT и Windows 95; Linux можно успешно установить, но полная совместимость не гарантируется). На самом деле, Windows 95 будет поддерживать Disk Manager версий 6.x и выше, также как OS/2 Warp и Windows NT 3.5.1. IBM и MicroSoft обеспечили коррективы, позволяющие старым версиям OS/2 Warp и Windows NT работать с Disk Manager v6.x. Напоследок о дисковых утилитах. Если программа напрямую обращается к функциям INT13, она не будет видеть DDO и может привести к разрушению диска. Как работает 32-битовый доступ в Windows? Windows поставляется с таким устройством - *wdctrl. К несчастью, это устройство поддерживает только контроллеры, совместимые со стандартом WD1003, исключая винчестеры SCSI, ATA-2, с трансляцией CHS, с числом цилиндров более 1024 и даже не поддерживает некоторые особенности ATA. Если при инициализации обнаруживается одно из перечисленных устройств, загрузка прерывается. Для современных компьютеров это означает чрезвычайно редкое использование *wdctrl, вместо этого применяются обычно внешние драйверы виртуальных устройств (VxD). 32BDA имеет некоторые преимущества по сравнению с доступом к диску через BIOS. Во-первых, драйверы FastDisk VxD являются реентерабельными, что позволяет Windows использовать виртуальную память в DOS-сессиях. Использование виртуальной памяти без 32BDA будет приводить к зависанию при возникновении ошибок page fault в процессе выполнения программ BIOS. Поскольку функции BIOS не реентерабельны, невозможно использовать BIOS для повторного считывания страницы с диска, пока первый вызов BIOS не будет прерван. 32BDA позволяет Windows управлять памятью при открытии одной или нескольких сессий DOS. Вторым преимуществом 32-битового доступа является то, что он оставляет всего два (сравнительно медленных) переключения между стандартным и защищенным режимом на каждое обращение к диску. Возьмем, к примеру, обращение к диску прикладной программы DOS. В отсутствие 32BDA каждый такой вызов будет формировать приведенную ниже последовательность событий:
Использование 32-битового доступа к диску заменяет шаги 6-8 единственным вызовом FastDisk VxD. Это позволяет избавиться от двухкратного переключения режима, что обычно приводит к некоторому росту производительности дисковых операций. |