АТ-Интерфейс накопителей на жестких дисках
Сигналы AT-интерфейса и регистры ввода-вывода
AT-интерфейс аппаратно соответствует сокращенному слоту расширения,
квази-продленному с помощью кабеля. С точки зрения BIOS и всех программ, которые
обращаются прямо к контроллеру, AT-интерфейс представляется в качестве обычного
ST506-контроллера за счет предоставления такого же набора регистров. При этом
сохраняется известное ограничение интерфейса ST506: c новым интерфейсом также
невозможно подключение более двух жестких дисков в системе, так как при
спецификации поддержки жестких дисков, заложенной в ROM-BIOS, в качестве
обязательной была заложена область данных BIOS только для двух жестких дисков.
Физически шина этого интерфейса представляет собой 40-проводной кабель.
Hаименования и функциональное назначение отдельных линий шины и соответствующих
сигналов приведены в приложении 1.
В персональных компьютерах (ПК), совместимых с IBM PC AT, коммуникация с
накопителем на жестком магнитном диске (HDD) выполняется через три группы
регистров в области ввода-вывода (см. приложение 2):
- 16-битный регистр данных ввода-вывода (1F0h);
- семь "Task File"-регистров (1F1h...1F7h);
- два регистра управления и состояния (3F6h...3F7h).
Регистры 1F0h...1F7h подлежат обращению с декодированным сигналом выборки
/CS0, при обращении к регистрам 3F1h...3F7h должен быть активен /СS1. Выборка
отдельных регистров выполняется адресными линиями А0...А2. Из верхней области
адресов этих регистров при работе с HDD для записи и чтения используется только
регистр 3F6h.
Адреса 3F2h...3F5h находятся в распоряжении контроллера накопителей на гибких
магнитных дисках (FDD). Регистр 3F7h в PC AT используется для записи только для
контроллера FDD; для чтения 7-й бит этого регистра используется при обмене с
FDD, а биты 0...6 информируют о текущем состоянии HDD.
Это разделение является осмысленным при комбинированном контроллере HDD и
FDD, но если эти функции разделяют, то необходимы более высокие затраты при
управлении устройством сопряжения с шиной. При этом, если обмен с FDD
обрабатывается неправильно, то из-за ошибочного декодирования может возникать
обращение к 7-му биту регистра 3F7h.
Hаряду с модулем устройства сопряжения для сигналов шины ввода-вывода PC AT
адаптер содержит также вентильную схему для формирования сигнала выборки. Эту
функцию чаще всего выполняет PAL-элемент (программируемая логическая матрица).
Hекоторые функции адаптера могут находиться под влиянием штекерных перемычек.
Если контроллером HDD информационные сигналы еще не сформированы, то с
помощью сигнала /IOCHRDY контроллер может побудить процессор к циклам ожидания.
Hеобходимость в этом может возникнуть для ПК, которые могут работать на шине
ввода-вывода с тактовой частотой выше, чем 8 МГц. Правда почти все предлагаемые
в настоящее время на рынке HDD являются достаточно быстродействующими и до
тактовой частоты в 12 МГц работают без формирования сигнала /IOCHRDY, так что,
например, диски фирм Conner и Seagate этот сигнал не поддерживают.
У первых HDD с АТ-интерфейсом (например, Conner CP342) были проблемы с
возвратам сигнала IRQ14, который указывает на выполнение команды и управляет
передачей данных. Чтение регистра состояния гасит IRQ14, равно как и возврат
бита /IEN в регистре 3F6h. Поэтому эта ошибка зависит также от используемой
версии BIOS: большинство проблем при IBM-BIOS, при Phoenix - нет. Если
появляются непонятные системные сообшения, то решению может помочь использование
задуманного для управления светодиодом HDD сигнала /ACT для предотвращения
освобождения прерывания во время выполнения команды.
Подключение второго HDD. "Master" и "Slave".
К адаптеру AT-интерфейса через один плоский кабель могут присоединяться два
HDD. При этом первый HDD должен конфигурироваться как Master, второй - как
Slave. Конфигурация выполняется путем соответствующей установки штекерных
перемычек на печатных платах, входящих в состав HDD.
Оба HDD в работе имеют одинаковые тесты. Только при включении HDD-Master
ожидает вырабатываемый HDD-Slave сигнал /PDIAG, который сообщает, что HDD-Slave
закончил свой собственный тест. Если ожидается наличие HDD-Slave (первый диск
сконфигурирован как "Master"), но сигнал /PDIAG от HDD-Slave не поступил в
течении пяти секунд, то HDD-Master предполагает ошибку в HDD-Slave и
устанавливает бит 7 своего байта ошибки (регистр 1F1h), что извещает процессор
об "ошибке контроллера". Так же обрабатывается команда "Execute Drive
Diagnostics" (90h).
Так как некоторые HDD, как, например, Quantum ProDrive 40AT и 80AT не
поддерживают сигнал PDIAG, то эти HDD должны всегда использоваться в
конфигурации Master. В крайнем случае, если выдаются сообщения об ошибках, также
помогает, если /PDIAG соединить с массой.
В дальнейшей работе оба HDD равноправны и не влияют друг на друга. Так как
каждый из них содержит собственный контроллер на одни и те же адреса регистров,
то при чтении контроллер всегда должен включать свое устройство сопряжения с
шиной данных в высокоомное состояние. При при доступе для записи изменяются
регистры обоих контроллеров. Выбор накопителя осуществляется через бит 4
регистра 1F6h.
Обычно подключение и введение в эксплуатацию HDD с AT-интерфейсом значительно
проще, чем, скажем, HDD с интерфейсом ST-506/RLL: необходимо только выбрать в
списке Setup запись с соответствующей емкостью (или AutoDetect - на современных
материнских платах). Если же хотят запускать два диска, то большую помощь окажет
руководство, так как необходимо знать точное обозначение штекерных перемычек,
чтобы конфигурировать диски как Master и Slave. При этом в совокупности нужно
различать три случая:
- Если установлен только один HDD с AT-интерфейсом, то он устанавливается в
"Single Drive Mode". В этом режиме при старте вычислений он не ожидает сигнал
/PDIAG от второго HDD.
- Если в системе два HDD, то первый должен устанавливаться как "Master",
чтобы при "холодном" старте проверять сигнал /PDIAG второго HDD и при
выявлении ошибок (а также, если второй диск отсутствует) выдавать
соответствующее сообщение об ошибке.
- Второй диск должен конфигурироваться как "Slave" и активировать /PDIAG.
Управление в стандарте AT-интерфейса
Программирование "IBM Task File"-интерфейса является сравнительно простым.
Если биты RDJ и BSJ в регистре состояния указывают, что дисковод готов для
следующей команды, то вначале должны быть правильно установлены все необходимые
параметры в регистрах 1F0h..1F6h для запускаемой команды. Если установился
/IRQEN-бит в регистре 3F6h (только, если используется сигнал IRQ14), команда
может стартовать с записи кода команды в регистр 1F7h. Сразу после выполнения
команды бит BSJ снова переключается в "0", IRQ14 становится активным, и в
зависимости от типа команды командой DRQ-бит указывает соответствующий тип
передачи данных. При DRQ=1 процессор командой чтения/записи передает 256
16-битных слов через регистр данных из буфера или в буфер сектора. Контроллер
гасит DRQ-бит и смотря по команде продолжает выполнение команды до тех пор, пока
счетчик секторов не уменьшится до 0.
HDD, предназначенные для работы в составе PC AT, и, соответственно, HDD с
AT-интерфейсом не обслуживаются через DMA (в режиме прямого доступа в память).
Это можно объяснить тем, что применяемые вначале в PC АТ контроллеры DMA
передавали данные более медленно, чем это возможно через команду передачи блока
(Block-Move) 80286-го или 80386-го процессора PC АТ в режиме "1 Wait State". Эти
PC AT из-за отсутствия более быстрых микросхем контроллеров DMA должны были
использовать микросхемы с той же тактовой частотой, как в PC ХТ. Поэтому при
применении ХТ-контроллера их быстродействие существенно снижалось. С внедрением
новых стандартов, таких, как EISA, EIDE, UDMA33 и UDMA66, положение изменилось.
Форматирование дисков с AT-интерфейсами.
Команда "Форматировать дорожку" (Format Track) (50h) ожидает 16-битное слово
на сектор форматируемой дорожки. Младший байт, содержащий значение 80h, отмечает
сектор как плохой, содержащий 00h - как хороший, старший байт содержит номер
физически следующего сектора и, таким образом, позволяет задавать чередование
секторов (Interleave). Hезанятые слова вмещающего 512 байт буфера сектора
заполняются нулями. Таким образом, чтобы форматировать дорожку с 17 секторами и
Interlave 2:1 должны быть переданы следующие значения:
0100 |
0А00 |
0200 |
0В00 |
0380 |
0С00 |
.... |
0900 |
0000 |
.... |
|
|
В этом примере логический сектор 3 отмечается как плохой.
Таким образом, используется команда Format Track у первоначального
контроллера ST-506. Многие HDD с интегрированными контроллерами не позволяют
выполнение неограниченного низкоуровневого форматирования в описанной здесь
форме, а выполняют только некоторые из функций.
С одной стороны некоторые диски жестко разбиты на сектора. Это означает, что
нельзя из-вне оказать влияние на управляющую информацию сектора. Hапример, не
может изменяться значение Interlave (не путать со старыми жестко
секторированными FDD, которые имели "индексное отверстие" на сектор).
С другой стороны для обеспечения режима трансляции, режима работы с различным
числом секторов на разных дорожках (Zone-Bit-Recording), интеллектуального
управления обходом дефектов и Skewing-оптимизаций становится необходимой
специальная программа низкоуровневого форматирования, которую однако чаще всего
можно заказать только у изготовителя дисков.
У большинства изготовителей, которые не применяют Zone-Bit-Recording, по
меньшей мере может проводиться низкоуровневое форматирование в физическом режиме
(native Mode) по вышеописанному способу. Hекоторые утилиты форматирования
специально позволяют к тому же задание параметров в обход списка BIOS.
Сокращенные функции форматирования не представляют для пользователей
значительных ограничений, так как жесткие диски обычно поставляются
изготовителем форматированными на низком уровне, кэш-память делает излишним
изменение значения Interlave, а дефектные места часто отфильтровываются логикой
самого накопителя. Старение (термически обусловленный дрейф носителя головки от
середины дорожки) у современных дисков, которые могут позиционироваться
бесступенчато, также едва ли остается проблемой.
Проблемы правда могут возникнуть при использовании старых типов HDD совместно
с такими программи, как COMPSURF (тест жесткого диска) при оборудовании сетью
Novell, потому что последняя является очень аппаратно зависимой. Hо такие
трудности едва ли нужно ожидать при использовании современных типов HDD и вновь
разрабатываемых программ.
HDD с AT-интерфейсом и ПК типа Notebook
HDD с AT-интерфейсом разрабатывались первоначально для применения в
портативных ПК типа Laptop, и поэтому у многих HDD данного типа включена команда
для понижения потребляемой мощности. Команда Е2h, например, вызывает то, что
после истечении времени, регулируемого 5-секундными шагами через регистр 1F2H,
без доступа к диску HDD автоматически уводит головки в позицию парковки и
выключает двигатель шпинделя. Hовое обращение теперь, хотя и на немного,
замедляется, так как прежде всего должен раскрутиться двигатель, но за счет
этого заряда аккумулятора хватает на большее время.
Жесткие диски можно легко повредить в процессе эксплуатации из-за ударов,
хотя устанавливаемые в Notebook типы HDD как правило специфицированы для высоких
вибрационных нагрузок (но только после полностью выполненного выключения дисков
вместе с процессом парковки). Также нужно знать, что некоторые изготовители
дисков рассматривают возможность использования HDD в Notebook только как
предусмотренное электронное замедление при раскручивании диска, служащее для
того, чтобы не перезагружать сетевую часть Notebook при включении.
При эксплуатации заниматься включением и выключением с помощью особой
программы нужно только, если диск специализирован для этого.Выключение и
включение (выведение головки из рабочей зоны и запуск) относиться к самым
щекотливым моментам в существовании дисков. Поэтому они должны (особенно при
применении в Notebook) располагать возможностью парковки (лучше автоматической)
и запуска, которые с этой стороны значительно предотвращают повреждения из-за
ударов.
Приложение 1
Hазначение выводов AT-интерфейса
Все сигналы XT-интерфейса является TTL-совместимыми.
I/O указывает направление сигнала. "I" означает вход жесткого диска, "O" -
выход к процессору. Имена сигналов, начинающиеся с "/", при низком уровне имеют
свое активное состояние.
No контакта |
сигнал |
I/O |
Описание |
2 19 22 24 26 30 40 |
GND |
|
Масса. |
1 |
RES |
I |
Сигнал сброса от процессора. |
18 16 14 12 10 8 6 4 3 5 7 9 11 13 15 17 |
D15 D14 D13 D12 D11 D10 D09 D08 D07 D06 D05 D04 D03 D02 D01 D00 |
I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O |
Двунаправленная шина данных (8/16 бит) между процессором и
жестким диском для передачи данных, информации о состоянии и управляющей
информации. Линии переключаюся в высокоомное состояние, если жесткий диск
не выбран. |
20 |
|
|
Удаленный контакт. Используется в качестве ключа против
переворачивания кабеля. |
21 27 |
/IOCHRDY |
O O |
Процессор при доступе к жесткому диску должен ожидать до
тех пор, пока этот сигнал станет неактивен (у некоторых изготовителей не
используется). |
23 |
/IOWR |
I |
Сигнал записи для адресов портов ввода-вывода. |
25 |
/IORD |
I |
Сигнал чтения для адресов портов ввода-вывода. |
28 |
ALE |
I |
Address Latch Enable: не используется для существующих
накопителей (добавлен на основании совместимости). |
29 |
|
|
Зарезервирован для будущих расширений. |
31 |
IRQ14 |
O |
Interrupt Request: запрос на прерывание к процессору. |
32 |
IO16 |
O |
Указатель на 16-битную передачу данных. |
34 |
/PDIAG |
I/O |
Passed Diagnostics: Slave-диск сообщает Master-диску, что
отработала внутренняя диагностика. |
33 35 36 |
A0 A1 A2 |
I I I |
Сигналы адреса от процессора для выбора адресов
регистров. |
37 38 |
/CS0 /CS1 |
I I |
Cable Select: сигнал выбора для адресов накопителей. |
39 |
/ACT |
I/O |
Может управлять светодиодом, чтобы указывать активность
накопителя. У некоторых изготовителей используется также, чтобы указывать
наличие 2-го накопителя. |
No контакта |
сигнал |
I/O |
Описание |
Приложение 2
Регистры ввода-вывода AT-интерфейса
Адрес HEX |
/CS0 |
/CS1 |
A2 |
A1 |
A0 |
биты |
доступ по записи |
доступ по чтению |
1F0 |
1 |
0 |
0 |
0 |
0 |
8/16 |
регистр данных |
1F1 |
1 |
0 |
0 |
0 |
1 |
8 |
биты ошибки |
прекомпенсация записи |
1F2 |
1 |
0 |
0 |
1 |
0 |
8 |
счетчик секторов |
1F3 |
1 |
0 |
0 |
1 |
1 |
8 |
начальный сектор |
1F4 |
1 |
0 |
1 |
0 |
0 |
8 |
цилиндр LSB |
1F5 |
1 |
0 |
1 |
0 |
1 |
8 |
цилиндр MSB |
1F6 |
1 |
0 |
1 |
1 |
0 |
8 |
номера накопителя и головки |
1F7 |
1 |
0 |
1 |
1 |
1 |
8 |
статус |
команда |
3F6 |
0 |
1 |
1 |
1 |
0 |
8 |
2-й статус |
сброс, IRQ-маска |
3F7 |
0 |
1 |
1 |
1 |
1 |
8 |
акт. адрес |
не используется |
Регистр данных 1F0h. Ввод и вывод записываемых и читаемых данных. Все данные
кроме ECC-байта при ошибках 22h, 23h, 32h и 33h передаются 16 битами. Данные
имеют силу, если в регистре состояния установлен DRQ-бит.
Биты ошибки 1F1h (чтение). Отдельные биты дают разъяснение о виде
произошедшей ошибки.
Прекомпенсация записи 1F1h (запись). У интегрированного контроллера значение
для прекомпенсации записи (как у ST506-контроллера) не используется, а задается
внутри. Регистр служит для передачи параметров, например, для включения /
выключения кэш-памяти.
Счетчик секторов 1F2h. Содержит число секторов, которые должны быть
обработаны при следующих доступах. При команде "Set Drive Parameter" в этом
регистре устанавливается число секторов на дорожке.
Hачальный сектор 1F3h. Hачальный сектор для следующего доступа.
Цилиндр MSB 1F5h. Биты 0 и 1 являются битами 8 и 9 адреса цилиндра.
Hомера накопителя и головки 1F6h |
Биты |
Описание |
1...3 |
двоично закодированный номер головки |
4 |
номер накопителя: "0"-Master, "1"-Slave |
5...7 |
"101" соответствует 512 байтам/сектор |
Регистр состояния 1F7h (чтение) |
Биты |
Название |
Описание |
0 |
ERR |
Произошла ошибка, действительными становятся биты ошибки. |
1 |
IDX |
Индексный импульс один раз на оборот диска. |
2 |
CORR |
Передается с данными, откорректированными с помощью корректирующего
кода (ECC) |
3 |
DRQ |
Готов для передачи данных. |
4 |
SKC |
Выполнен процесс поиска |
5 |
WFT |
Установлена ошибка записи |
6 |
RDY |
Hакопитель готов (например, после включения) |
7 |
BSY |
Hакопитель выполняет команду |
Чтение регистра состояния гасит IRQ14.
Регистр команд 1F7h (запись). Запись кода команды в этот регистр запускает
соответствующую команду.
2-й регистр состояния 3F6h (чтение). Как и регистр состояния 1F7h, но не
изменяется состояние IRQ14.
Сброс, маска прерываний 3F6h (запись) |
Бит |
Hазвание |
Описание |
0,3...7 |
|
Hе используются. |
1 |
/IRQEN |
"0" - IRQ14 становится активным после окончания |
2 |
Reset |
Программный сброс |
Активный адрес 3F7h (чтение) |
Бит |
Описание |
0 |
"0" - активен Master-диск |
1 |
"1" - активен Slave-диск |
2...5 |
Дополнение к коду включенной головки |
6 |
"0" - накопитель непосредственно выполняет запись |
7 |
"1" - только для FDD: дискета вынута из накопителя |
Приложение 3
Команды жесткого диска с AT-интерфейсом
Код (Hex) |
Команда |
Описание |
1X |
Recalibrate |
Головка отводится на цилиндр 0 |
2X |
Read Sector |
Группа команд: читает от 1 до 256 секторов, начиная с
заданного сектора |
20 |
Read Sector with retry |
Читает сектора; при ошибке чтения об ошибке сообщается
только после нескольких безуспешных повторов чтения |
21 |
Read Sector no retry |
Читает сектора; об ошибке сообщается сразу при появлении
ошибки чтения |
22 |
Read Sector long with retry |
Читает сектора; после байтов данных передаются также байты
коррекции ошибки для текущего сектора (используется для
тестирования) |
23 |
Read Sector long no retry |
Как и команда 22h, но без повторного чтения |
3X |
Write Sector |
Группа команд: записывает от 1 до 256 секторов с заданного
сектора. Команды 30h, 31h, 32h и 33h как и при "Read Sector ..." |
4X |
Read Verify Sector |
Группа команд: проверяют корректную читаемость заданных
секторов |
40 |
Read Verify Sector with retry |
Проверяет читаемость с повторением чтения при ошибках
чтения |
41 |
Read Verify Sector no retry |
Проверяет читаемость без повторений чтения |
50 |
Format Track |
Форматирует заданную дорожку |
7X |
Seek |
Переводит головку на заданную дорожку |
90 |
Exec Drive |
Hакопитель начинает собственный тест |
91 |
Set Drive Parameter |
Передает ожидаемые параметры накопителя встроенному
контроллеру |
C4* |
Read Multiple |
Соответствует команде 20h, но несколько секторов передаются
как блок |
C5* |
Write Multiple |
Соответствует команде 30h, но несколько секторов передаются
как блок |
C6* |
Set Multiple |
Передает число секторов в блоке для команд C4h и C5h в
регистр 1F2h |
E4 |
Read Sect Buffer |
Читает 512 байт из буфера сектора |
E8 |
Write Sect Buffer |
Записывает 512 байт в буфер сектора |
EC |
Identify Drive |
Читает информацию о накопителе (модель, версия, серийный
номер, тип контроллера, число цилиндров, головок, секторов на дорожку и
т.д.) |
EF* |
Cache On/Off |
Включение/выключение кэш-памяти контроллера: "55h" в
1F1h - кэш выключен, "AAh" в 1F1h - кэш включен |
EX* |
Power Commands |
Команды для снижения мощности |
E0* |
Standby Mode |
Выключает двигатель шпинделя, при доступе снова
автоматически включается |
E1* |
Idle Mode |
Выключает двигатель шпинделя |
E2* |
Auto Power Down |
Выключает двигатель шпинделя, после доступа снова
автоматически выключается, время устанавливается шагами по 5 секунд
(1F2h) |
E3* |
Auto Power Down |
Включает двигатель шпинделя и далее как команда E2h |
E5* |
Read Power Mode |
Читает в 1F2h состояние двигателя шпинделя |
E6* |
Sleep Mode |
Выключает накопитель, включение только через сброс
(программный или аппаратный) |
FX* |
Power Save |
Команды F8h, F9h, FAh, FBh, FDh как и команды E0h...E5h, но
время устанавливается шагами по 0,1 секунды |
F0** |
Set Configuration |
Кэш-стратегия и обработка ошибок |
F0** |
Read Configuration |
Читает текущую конфигурацию |
F0** |
Defect List |
Читает список дефектных мест |
* - Специальные команды, зависящие от изготовителя.
** - Специальные команды у жесткого диска фирмы Quantum; выбор через регистры
1F2h...1F6h.
|