|
Bog BOS: hardware: Интерфейс ATA (IDE)
|
Последнее изменение файла: 2016.02.26
Скопировано с www.bog.pp.ru: 2024.09.01
Bog BOS: hardware: Интерфейс ATA (IDE)
ATA (Advanced Technology Attachment), также называемый IDE (Integrated Drive
Electronics) - стандарт на интерфейс между компьютером (контроллером) и
накопителем на жестких магнитных дисках (дисководом, HDD), включая
физический уровень (разъёмы, кабели),
электрические и логические характеристики сигналов,
регистры устройства, команды и протоколы. Включает ATAPI (AT Attachment
interface with Packet Interface). Для описания ATAPI команд предлагается
обращаться к стандартам SCSI.
Имеет также множество
маркетинговых названий: EIDE (ATA-2 и Enhanced BIOS), FASTATA (урезанный ATA-2),
FASTATA-2 (просто ATA-2), UltraDMA (ATA-4 в режиме UDMA mode 3),
UltraATA/33 (ATA-4), UltraATA/66 (ATA-5), UltraATA/100 (ATA-6) и др.
Первоначально представлял собой AT-совместимый
дисковый контроллер, встроенный в дисковод и подсоединённый
упрощённой 16-битной шиной ISA (в девичестве AT bus).
Простейший контроллер представлял
дешифратор адреса, остальные сигналы передавались "как есть",
причём на оба устройства сразу.
По мере развития всё больше и больше напоминает SCSI (терминаторы,
очередь команд, ATAPI).
Поддерживается 2 дисковода (master - 0, slave - 1) на канал (host adapter).
Номер дисковода определяется джамперами на дисководе и/или специальным кабелем.
Современные чипсеты поддерживают 2 канала (primary, secondary),
можно также использовать дополнительные контроллеры. В старых
чипсетах оба канала разделяли некоторые сигналы (от одного пина
в микросхеме шли 2 проводка на 2 канала :).
Каждый канал может обрабатывать только одну команду одномоментно.
Следующая команда (даже к другому устройству) будет ждать
(в ATA-4 появились наложения - overlap - команд и очереди в устройстве,
должны поддерживаться обоими устройствами).
В некоторых ситуациях хост должен переключаться в режим более медленного
устройства даже при обращении к быстрому (например, при записи в регистры).
Поэтому желательно ставить на каждый канал только одно устройство, причём
в крайний разъём (иначе не будет работать UDMA)
и конфигурировать как master, т.к. slave не может определить
наличие master устройства, а команда диагностики не сгенерирует
прерывания.
Стандарты принимаются Technical Committee T13 National
Committee on Information Technology Standards (NCITS), уполномоченным ANSI.
Ранее назывался ASC (Accredited Standards Committee) X3T10.
- ATA (IDE, ATA-1). AT Attachment Interface. ANSI X3.221-1994.
1994 (сейчас отменён). Интегрированный 16-битный
шинный интерфейс для обмена информацией между контроллером и дисководом.
LBA и передача нескольких секторов на одно прерывание уже есть!
- ATA-2 (ATA Interface with Extensions, ANSI X3.279-1996).
1996 (сейчас отменён). Добавлены: увеличение идентификационной
информации выдаваемой дисководом (в основном тайминги новых режимов),
загрузка микрокода, новые режимы - PIO3 (11.1 MB/сек),
PIO4 (16.6 МБ/сек), DMA Multiword 1 (13.3 МБ/сек), DMA Multiword 2
(16.6 МБ/сек).
- ATA-3 (ANSI X3.298-1997 AT Attachment - 3 Interface). 1997 (сейчас отменён).
Добавлены SMART,
режим безопасности (блокировка доступа до ввода пароля), LBA теперь обязателен,
удалены устаревшие возможности (8-битный режим и некоторые команды,
singleword DMA). Добавлен разъём, совместимый с PCMCIA. Появились терминаторы
и другие средства, увеличивающие надёжность передачи.
Только теперь стандарт можно считать зрелым (устройства сообщают
поддерживаемую версию и набор функций).
- ATA/ATAPI-4 (ANSI NCITS 317-1998 AT Attachment - 4 with Packet Interface
Extension). 1998. Добавлены: ATAPI, Ultra DMA (33 МБ/сек), CRC-16,
наложение (overlap) команд и очереди команд, HPA (SET MAX ADDRESS),
кабель с 80 проводниками (разъем остался 40-контактным).
- MMC-5 (ISO/IEC 14776-365) - набор команд для работы с CD/DVD,
которые оформляются в пакеты ATAPI.
- Address Offset Reserved Area Boot Method. Официально не принят.
- ATA/ATAPI-5 (ANSI NCITS 340-2000 AT Attachment - 5 with Packet Interface).
2000. Добавлены режимы передачи со скоростью 44 МБ/сек и
66 МБ/сек (кабель с 80 проводами обязателен), команды CFA.
Отказ от совместимости с ATA-1.
- ANSI NCITS 346-2001 Protected Area Run Time Interface Extension Services.
Расширение интерфейса BIOS для доступа к адресному пространству, скрытому
командой SETMAX (проблема лимита 130 GB).
- ANSI NCITS 347-2001 BIOS Enhanced Disk Drive Services. Дальнейшее
расширение расширенного в TR-21 интерфейса BIOS INT13.
- NCITS TR-21 BIOS Enhanced Disk Drive Specification. Увеличение адресного
пространства, поддерживаемого BIOS до 16*10**18 байт.
- ATA/ATAPI-6 (2002).
Добавлены: увеличение скорости до 100 МБ/сек (UDMA 5), увеличение
адресного пространства LBA с 28 до 48 бит, увеличение числа секторов в
одной команде с 256 до 64K, управление шумом, команды чтения/записи
потока (AV), удалена адресация CHS.
Отказ от совместимости с ATA-2.
- ATA/ATAPI-7 (2003).
Добавлены: увеличение скорости до 133 МБ/сек (UDMA 6).
Стандарт разбит на описание команд и регистров (том 1, Command Set),
описание параллельного транспортного протокола и интерфейса (том 2, ISO/IEC 14776-881),
описание последовательного протокола и интерфейса (том 3, ISO/IEC 14776-891).
- BIOS Enhanced Disk Drive Services - 2. Не дозрел даже до проекта.
- ATA/ATAPI-8 Architecture Model (ATA8-AAM), ISO/IEC 14776-861
- ATA/ATAPI-8 Command Set (ATA8-ACS), ISO/IEC 14776-871
- SATA 1.0 (2003), 1.5 Gbps
- SATA 2.0 (2004), 3 Gbps
- SATA 3.0 (2009), 6 Gbps
- SATA 3.2 (2013)
Сигнальный разъём - 40 контактов в 2 ряда (чётный и
нечетный. 20й контакт - ключ (контакт на разъёме устройства удаляется,
отверстие на разъёме кабеля затыкается). Кабель - 40 проводов.
Требуется 80 проводной кабель для режима UDMA3 и выше (провода заземления
между сигнальными). Наличие улучшенного кабеля определяется автоматически.
Точнее, должно определяться автоматически, но описание таково, что в это
не верится, особенно при наличии старого устройства на том же канале
в режиме slave. 1й провод - красный.
Длина кабеля - от 25 до 46 см (крайний разъём для хоста голубого цвета и
два разъёма для дисководов чёрного и серого цветов).
Режим UDMA требует терминаторов с обеих сторон кабеля.
Стандарт определяет также разъём питания - 4 контакта
(+12V, возврат +12V, возврат +5V, +5V).
Экзотические разъёмы: прямое соединение (без кабеля);
сборки сигнального разъёма с джамперами и разъёмами питания; 50-контактный
(совместимый со старыми 44-контактными) разъём для устройств 2 1/2 дюйма,
совмещающий сигнальные проводники с кабелем питания и выбором устройства;
68-контактный разъём, совместимый с PCMCIA устройствами; разъём CompactFlash.
Данные пишутся/читаются секторами (512 байт, 256 слов) или блоками.
Базовый протокол обмена данными - PIO (Programmed I/O), включая блочный режим
(только одно прерывание на весь блок). Блок может состоять из нескольких
секторов. Процессор лично "пропихивает" каждый байт/слово через регистр данных.
Режимы (mode) определяют скорость обмена:
- 0 (3.3 MB/sec)
- 1 (5.2 MB/sec)
- 2 (8.3 MB/sec)
- 3 (11.1 MB/sec)
- 4 (16.7 MB/sec)
Более "щадящий" для процессора режим - DMA (Direct Memory Access). В сочетании
с перехватом управления шиной (bus mastering, должна быть поддержка в BIOS
и чипсете) позволяет дисководу обмениваться
с памятью напрямую, что разгружает процессор, но требует специального
драйвера для каждого чипсета. Может быть однословный (single word) -
упразднён в ATA-3,
многословный (multiword) и Ultra DMA (double edge clocking, стробирование,
CRC-16).
Для режима UDMA 3 и выше требуется кабель с 80 проводами.
Режимы (mode) определяют скорость обмена:
- single word 0 (2.08 MB/sec)
- single word 1 (4.16 MB/sec)
- single word 2 (8.33 MB/sec)
- multiword 0 (4.2 MB/sec)
- multiword 1 (13.3 MB/sec)
- multiword 2 (16.7 MB/sec)
- ultra 0 (16.7 MB/sec)
- ultra 1 (25 MB/sec)
- ultra 2 (33.3 MB/sec)
- ultra 3 (44.4 MB/sec)
- ultra 4 (66.7 MB/sec)
- ultra 5 (100 MB/sec)
Под 32-битным доступом к диску имеется ввиду
блокирование 2 16-битных слов при передаче от процессора к дисководу
по шине PCI (шина ATA в любом случае имеет ширину 16 бит).
- чтение/запись/верификация до 256 секторов
(PIO, блочный PIO, DMA/UDMA, из буфера, с повтором, с ECC), сбросить кеш,
позиционирование головок
- набор команд с 48-битной адресацией LBA (сброс кеша, чтение/запись
PIO/DMA/многоблочный-PIO/DMA-с-очередью, чтение/установка максимального
адреса блока), счетчик секторов в этих командах - двухбайтныйю
Команды имеют суффикс EXT.
- наложение/совмещение (overlap) команд - позволяет устройству освободить шину
до завершения выполнения команды, чтобы хост мог параллельно использовать второе
устройство. Могут совмещаться команды чтения/записи с постановкой в очередь,
пакетные команды. Передача данных может происходить немедленно (если
устройство имеет данные "на руках") или при получении команды SERVICE.
Появились в ATA-4.
- очередь команд - позволяет хосту выдавать несколько параллельных команд
к одному устройству. В очереди могут быть команды чтения/записи. Каждая команда
должна иметь уникальную метку от 0 до 31. Максимальная глубина очереди
определяется устройством (но не более 32).
Передача данных может происходить немедленно (если
устройство имеет данные "на руках") или при получении команды SERVICE
(шина до тех пор освобождается).
Появились в ATA-4.
- сервисные команды
(идентификация устройства, установить число секторов и головок для
текущего режима трансляции адресов, диагностика, загрузка микрокода,
рекалибровка, сброс)
- установка параметров (разрешение кеширование записи,
протокол и режим передачи данных, уровень APM, уровень шума,
разрешение автоматического назначения плохих секторов (отменено),
разрешение повторов (отменено),
число ECC байт (отменено), использование ECC (отменено),
разрешение предварительного чтения, размер сегмента кеша (отменено),
запрещение возврата к значениям по умолчание при программном сбросе,
потребляемый ток)
- Host Protected Area - позволяет резервировать часть устройства,
устанавливая максимальный адрес блока (SET MAX ADDRESS, SET MAX ADDRESS EXT
для 48-битной адресации)
и защищая всё что поверх его паролем, а также узнать реальную ёмкость
устройства (READ NATIVE MAX ADDRESS [EXT]). Предназначено для
использования в BIOS, причем однократно после включения (RAM to HDD).
Используется также, если устройство слишком велико для BIOS.
Установленный максимальный адрес может сохраняться после выключения
питания или сбрасываться.
Появились в ATA-4.
- Device Configuration Overlay - позволяет отключать некоторые возможности
устройства (режимы multiword DMA, режимы Ultra DMA, 48-битную адресацию,
наличие команды SET MAX ADDRESS, команды управления шумом, очереди
команд, команды безопасности, SMART)
и изменять его ёмкость (в сторону уменьшения, конечно ;). Влияет также
на результат команд IDENTIFY DEVICE, READ NATIVE MAX ADDRESS [EXT].
Имеются подкоманды возврата к "естественному" состоянию и блокировка
изменений до следующего включения питания (сброс не снимает блокировку),
а также возможность посмотреть "естественное" состояние.
Появились в ATA-6.
- управление энергосбережением (режимы: ACTIVE, IDLE, STANDBY, SLEEP).
В режиме SLEEP интерфейс неактивен до сброса (наименьшее потребление энергии).
Устройство может переходить
в режим STANDBY по истечение установленного интервала неактивности
(меньшее потребление энергии, чем в режиме IDLE).
- APM (Advanced Power Management) - позволяет задать уровень
сбережения энергии (соответственно, производительности) от 1 до 254.
Появились в ATA-4.
- управление сменными носителями - два набора команд
(выброс носителя, блокировка/разблокировка дверцы, распознавание
смены носителя)
- парольная защита (пользовательский и мастер пароли - 32 байта; в режиме
HIGH мастер пароль позволяет снять защиту, в режиме MAX - стереть данные).
Предусматривается блокировка изменения пароля и попыток подбора.
После установки пользовательского пароля и перезагрузки устройство
переходит в защищенный режим и не дает доступа к данным без пароля.
Появились в ATA-3.
- SMART - дисковод самостоятельно отслеживает своё состояние и пытается
предсказать сбои в работе (разрешить/запретить; проверить состояние;
запуск упрощенного (около минуты)
или полного (десятки минут) самотестирования в фоновом режиме (off line mode)
- может быть пауза при приеме следующей команды до 2 секунд - или
непосредственно (captive mode), прочитать SMART-способности,
чтение/запись журналов).
В упрощенном журнале ошибок хранится общее число ошибок за время жизни
устройства, для последних 5 ошибочных команд
и их 5 предшественников сохраняются параметры и время в миллисекундах от
включения (гм, до 40 дней),
для самих ошибочных команд сохраняются содержимое регистров.
Расширенный журнал ошибок может хранить до 255 последних ошибок.
Журнал самотестирования. Журналы изготовителя. Журналы хоста (хост может
в них писать).
Производитель устанавливает набор атрибутов надежности и их граничные
значения. Есть команда позволяющая проверить не превышены ли границы.
Типы атрибутов: Old_age (срок службы истёк), Pre-fail (диск собирается умереть).
Появились в ATA-3. Была команда чтения значений атрибутов и границ, но
потом исчезла. Примеры атрибутов:
- 1 - характеристика числа ошибок чтения
- 4 - количество остановок
- 5 - количесиство переназначенных секторов
- 7 - характеристика числа ошибок позиционирования
- 9 - количество часов после включения
- 12 - число включений питания
- 194 - температура
- 195 - число ошибок, исправленных с помощью ECC
- 199 - число ошибок передачи UDMA
- 232 - available reserved space (SSD)
- 233 - media wearout indicator (SSD)
- ATAPI (сброс, идентификация пакетного устройства, выполнить пакет команд).
ATAPI-устройствам запрещено исполнять команды чтения/записи секторов
(обычных и DMA) и идентификацию устройства. Пакет команд описывается
в стандарте SCSI (SCSI Primary Commands -2, SPC-2). Пакет может быть
поставлен в очередь, а шина освобождена. В этом случае, завершение
передачи данных происходит при выполнении команды SERVICE.
Данные, ассоциированные с пакетом могут передаваться по протоколу PIO,
DMA или Ultra DMA. Появились в ATA-4.
- управление уровнем издаваемого шума (256 уровней шума/производительности).
Появились в ATA-6.
- набор команд для CompactFlash Association (CFA). Команды записи без
очистки, очистка, 8-битная передача данных без DMA (вот же мичуринцы),
узнать число циклов записи для данного сектора. Появились в ATA-4.
- сквозная передача команд MediaCard (разновидность flash-памяти).
В настоящее время определены SD Card ATA Extension и Smart Media ATA Extension
(и MMC?).
- потоковые команды - AV (конфигурация потока, чтение/запись PIO/DMA,
чтение журнала ошибок и производительности) -
позволяют считать/записать непрерывный интервал блоков
за указанное время при допустимости потери данных (пропуски, ошибки).
Используется только 48-битная LBA-адресация. Устройство устанавливает
минимальный размер потока. Можно определить 8 потоков. Появились в ATA-6.
Реальная геометрия диска известна только его производителю. Любая информация,
которую диск предоставляет о своей геометрии, виртуальна и может оказаться
другой при следующем обращении (кстати, есть команда ATA, устанавливающая
текущую геометрию). Для современного дисковода, имеющего различное количество
секторов на дорожку в разных зонах диска, её в принципе невозможно задать
в понятиях - число цилиндров, число головок и число секторов на дорожке.
Все эти понятия виртуальны и оставлены для совместимости со старыми
программами/устройствами. Виртуальная геометрия используется для
трансляции виртуального CHS-адреса в реальное местоположение
сектора на диске (а может во флэш памяти, где нет ни головок, ни секторов).
Адресация CHS (cylinder, head, sector). Удалена из стандарта ATA-6.
Номер цилиндра - 16 бит (от
0 до 65535). Номер головки - 4 бита (от 0 до 15). Номер сектора - 8 бит
(от 1 до 255). Максимально возможная емкость - 136.9 GB.
Диск предоставляет по команде "IDENTIFY DEVICE"
две CHS-геометрии (и, соответственно, две схемы трансляции адресов):
начальную (defaultCHS, physical в
/proc/ide/hda/geometry, RawCHS в hdparm -i) и текущую (CurCHS
и CurSects в hdparm -i). Хотя надежнее посмотреть самому в
/proc/ide/hdX/identify.
Текущая геометрия устанавливается командой ATA "Initialize device parameters"
(только число головок и число секторов на дорожку, число цилиндров
вычисляется дисководом) и используется для пересчета в реальный адрес.
Устройство может отказаться устанавливать указанную геометрию.
Число текущих цилиндров определяется как результат деления
min (числа LBA-блоков, 16514064)
на число заявленных головок и секторов, но не более 65535.
В ATA-3 вместо 16514064 используется 16515072.
Ни одна из них не отражает реальную геометрию диска.
Для дисков больших 8.4 GB начальная геометрия выдается
как 16383/16/63, соответственно, размер диска не может быть вычислен
из его геометрии (ATA-3). Для меньших дисков начальная геометрия
не должна превышать 16383/16/63. Согласно ATA-4, диск более 8.4 ГБ не
обязан поддерживать CHS-трансляцию. Желательно, чтобы число секторов
на дорожке в текущей трансляции не превышало 63 (иначе могут быть
проблемы со старым BIOS). Также для совместимости со старым BIOS,
если число цилиндров начальной геометрии более 8192, то число головок
желательно устанавливать равным 15 (ATA-5).
На число цилиндров начальной геометрии
может повлиять команда SET MAX ADDRESS CHS (число головок и секторов не
изменяется), но не более 16383. После чего пересчитывается число текущих
цилиндров и число текущих блоков (число головок и секторов не изменяется)
и блоков LBA. Команда SET MAX ADDRESS LBA устанавливает число блоков LBA,
не меняет число начальных/текущих головок и секторов. Число начальных
цилиндров устанавливается в 16383 (если число блоков LBA больше 16514064)
или в min( 65535, число блоков LBA/число начальных секторов/число начальных
головок) (если больше). Аналогично вычисляется число текущих цилиндров.
Число текущих блоков в режиме CHS определяется как произведение C*H*S.
Команда READ NATIVE MAX ADDRESS выдает начальную геометрию (емкость
диска может отличаться в CHS и LBA режимах).
Некоторые модели дисков имеют специальные джампера
или программы (Maxtor), позволяющие задать или ограничить
defaultCHS геометрию. Например, установить число цилиндров равным
4092 или число головок равным 15, чтобы обойти ошибки в старых BIOS.
Соответственно, BIOS будет видеть только часть диска. Полную ёмкость
диска надо будет получать другими способами.
Адресация LBA (Linear Block Addressing). Задаётся номер
сектора, начиная с нуля - 28 бит. Максимально возможная емкость - 137.4 GB.
LBA-адрес можно рассчитать как c*H*S + h*S + (s-1). Firmware старых
дисков (все диски до 500 MB и некоторые большей ёмкости) не умеет использовать
адресацию LBA. Является обязательным режимом начиная с ATA-3
и режимом по умолчанию, если число секторов превышает 16515072.
Команда "IDENTIFY DEVICE" возвращает возможность LBA-адресации и общее число
секторов в режиме LBA (/sbin/hdparm -i: LBAcapacity).
Для дисков больших 137.4 GB возвращается 2^28-1 сектор.
С помощью команды SET MAX ADDRESS можно установить максимальный номер блока.
С помощью команды READ NATIVE MAX ADDRESS можно узнать настоящий
размер диска. Используется для резервирования верхней части диска
и обхода проблемы со старым BIOS.
Адресация LBA 48 бит. Используется отдельный
набор команд ATA. Команда "IDENTIFY DEVICE" возвращает возможность
48-битной LBA-адресации и общее число секторов в режиме LBA48.
Аналогично старому LBA-режиму имеются команды SET MAX ADDRESS EXT и
READ NATIVE MAX ADDRESS EXT.
Команда "Identify drive" позволяет получить разнообразную
информацию об устройстве (256 слов):
- ATA/ATAPI
- сменный носитель или нет
- число цилиндров (16 бит) в режиме трансляции адресов по умолчанию
(до ATA-5)
- число головок (16 бит) (до ATA-5)
- число секторов на дорожке (16 бит) (до ATA-5)
- серийный номер (20 символов) (комбинация модель/серийный номер должна
быть уникальна для каждого устройства данного производителя)
- тип и размер буфера (в секторах)
- версия firmware (8 байт)
- модель (40 символов)
- максимальное число секторов за одну команду/прерывание в многосекторном
режиме PIO
- есть ли поддержка LBA
- есть ли поддержка DMA
- число цилиндров (16 бит), головок (16 бит) и секторов на дорожку
(16 бит) и секторов (32 бита, д.б. равно C*H*S, не может быть больше
числа секторов в режиме LBA) в текущем режиме трансляции адресов.
Отменен в ATA-6.
- текущее число секторов за одну команду
- число секторов в режиме LBA (не зависит от текущей CHS-геометрии)
(ограничивается SET MAX ADDRESS)
- поддерживаемые и текущие режимы singleword DMA
- поддерживаемые и текущие режимы multiword DMA
- поддерживаемые и текущие режимы PIO
- максимальная глубина очереди команд (до 32)
- номер версии (может быть несколько) и ревизию стандарта - начиная с ATA-3
(IBM-DHEA-38451 - ATA-4;
ST330630A - ATA-5; HP CD-Writer Plus 8100 - до ATA-3, PIO3, mDMA1)
- какие наборы функций реализованы и какие включены сейчас
- поддерживаемые и текущие режимы Ultra DMA
- текущий уровень APM
- текущий уровень шума
- число секторов в режиме 48-битного LBA (ограничивается SET MAX ADDRESS EXT)
- текущий уровень безопасности (High/Maximum)
- серийный номер сменного носителя (40 байт номер и 20 байт изготовитель)
ATAPI-устройства имеют аналогичную команду
"IDENTIFY PACKET DEVICE", которая позволяет получить примерно такую
же информацию об устройстве с учетом особенностей ATAPI:
- тип устройства (прямого доступа, последовательного доступа, принтер,
процессор, CD-ROM, сканер, RAID и др.)
История развития истандарта ATA производит тяжелое впечатление
(мягко говоря). Просто интересно: почему в интерфейсе SCSI (принятом гораздо
раньше первого ATA) сразу додумались до 32-битной LBA адресации
(и 15 лет с этим живут), а разработчики
ATA уже 10 лет издеваются надо всеми ежегодно преодолевая очередной барьер
емкости HDD - 528 MB, 2 GB, 4 GB, 8 GB, 33 GB, теперь вот 134 GB?
Одно слово "developed by the ad hoc working group" (сляпано из подручных
материалов). Остальные изменения делаются аналогично. Например, сначала
из стандарта удаляется 8-битный обмен, а потом он опять вводится,
но только для "хороших парней" из CFA. В результате, получился не стандарт,
а полный бардак.
P.S. А сигналы замечательно описаны :)
|
Bog BOS: hardware: Интерфейс ATA (IDE)
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru