АТ-ИНТЕРФЕЙС НАКОПИТЕЛЕЙ НА ЖЕСТКИХ МАГНИТНЫХ ДИСКАХ Сигналы AT-интерфейса и регистры ввода-вывода AT-интерфейс аппаратно соответствует сокращенному слоту расширения, квази-продленному с помощью кабеля. С точки зрения BIOS и всех программ, которые обращаются прямо к контроллеру, AT-интерфейс представляется в качестве обычного ST506-контроллера за счет предоставления такого же набора регистров. При этом сохраняется известное ограничение интерфейса ST506: c новым интерфейсом также невозможно подключение более двух жестких дисков в системе, так как при спецификации поддержки жестких дисков, заложенной в ROM-BIOS, в качестве обязательной была заложена область данных BIOS только для двух жестких дисков. Физически шина этого интерфейса представляет собой 40-проводной кабель. Наименования и функциональное назначение отдельных линий шины и соответствующих сигналов приведены в приложении 1. В персональных компьютерах (ПК), совместимых с IBM PC AT, коммуни- кация с накопителем на жестком магнитном диске (НЖМД) выполняется через три группы регистров в области ввода-вывода (см. приложение 2): - 16-битный регистр данных ввода-вывода (1F0h); - семь "Task File"-регистров (1F1h...1F7h); - два регистра управления и состояния (3F6h...3F7h). Регистры 1F0h...1F7h подлежат обращению с декодированным сигналом выборки /CS0, при обращении к регистрам 3F6h...3F7h должен быть активен /СS1. Выборка отдельных регистров выполняется адресными линиями А0...А2. Из верхней области адресов этих регистров при работе с НМЖД для записи и чтения используется только регистр 3F6h. Адреса 3F2h...3F5h находятся в распоряжении контроллера накопителей на гибких магнитных дисках (НГМД). Регистр 3F7h в PC AT используется для записи только для контроллера НГМД; для чтения 7-й бит этого регистра используется при обмене с НГМД, а биты 0...6 информируют о текущем сос- тоянии НЖМД. Это разделение является осмысленным при комбинированном контроллере НЖМД и НГМД, но если эти функции разделяют, то необходимы более высокие затраты при управлении устройством сопряжения с шиной. При этом, если обмен с НГМД обрабатывается неправильно, то из-за ошибочного декодирова- ния может возникать обращение к 7-му биту регистра 3F7h. Наряду с модулем устройства сопряжения для сигналов шины ввода-вы- вода PC AT адаптер содержит также вентильную схему для формирования сигнала выборки. Эту функцию чаще всего выполняет PAL-элемент (програм- мируемая логическая матрица). Некоторые функции адаптера могут находить- ся под влиянием штекерных перемычек. Если контроллером НЖМД информационные сигналы еще не сформированы, то с помощью сигнала /IOCHRDY контроллер может побудить процессор к цик- лам ожидания. Необходимость в этом может возникнуть для ПК, которые могут работать на шине ввода-вывода с тактовой частотой выше, чем 8 мГц. Правда почти все предлагаемые в настоящее время на рынке НЖМД являются достаточно быстродействующими и до тактовой частоты в 12 МГц работают без формирования сигнала /IOCHRDY, так что, например, диски фирм Conner и Seagate этот сигнал не поддерживают. У первых НЖМД с АТ-интерфейсом (например, Conner CP342) были про- блемы с возвратам сигнала IRQ14, который указывает на выполнение команды и управляет передачей данных. Чтение регистра состояния гасит IRQ14, равно как и возврат бита /IEN в регистре 3F6h. Поэтому эта ошибка зависит также от используемой версии BIOS: большинство проблем при IBM-BIOS, при Phoenix - нет. Если появляются непонятные системные сооб- щения, то решению может помочь использование задуманного для управления светодиодом НЖМД сигнала /ACT для предотвращения освобождения прерывания во время выполнения команды. Подключение второго НЖМД. "Master" и "Slave". К адаптеру AT-интерфейса через один плоский кабель могут присоеди- няться два НЖМД. При этом первый НЖМД должен конфигурироваться как Master, второй - как Slave. Конфигурация выполняется путем соответствую- щей установки штекерных перемычек на печатных платах, входящих в состав НЖМД. Оба НЖМД в работе имеют одинаковые теты. Только при включении НЖМД-Master ожидает вырабатываемый НЖМД-Slave сигнал /PDIAG, который со- общает, что НЖМД-Slave закончил свой собственный тест. Если ожидается наличие НЖМД-Slave (первый диск сконфигурирован как "Master"), но сигнал /PDIAG от НЖМД-Slave не поступил в течении пяти секунд, то НЖМД-Master предполагает ошибку в НЖМД-Slave и устанавливает бит 7 своего байта ошибки (регистр 1F1h), что извещает процессор об "ошибке контроллера". Так же обрабатывается команда "Execute Drive Diagnostics" (90h). Так как некоторые НЖМД, как, например, Quantum ProDrive 40AT и 80AT не поддерживают сигнал PDIAG, то эти НЖМД должны всегда использоваться в конфигурации Master. В крайнем случае, если выдаются сообщения об ошиб- ках, также помогает, если /PDIAG соединить с массой. В дальнейшей работе оба НЖМД равноправны и не влияют друг на друга. Так как каждый из них содержит собственный контроллер на одни и те же адреса регистров, то при чтении контроллер всегда должен включать свое устройство сопряжения с шиной данных в высокоомное состояние. При при доступе для записи изменяются регистры обоих контроллеров. Выбор накопи- теля осуществляется через бит 4 регистра 1F6h. Обычно подключение и введение в эксплуатацию НЖМД с AT-интерфейсом значительно проще, чем, скажем, НЖМД с интерфейсом ST-506/RLL: необходи- мо только выбрать в списке Setup запись с соответствующей емкостью. Если же хотят запускать два диска, то большую помощь окажет руководство, так как необходимо знать точное обозначение штекерных перемычек, чтобы конфигурировать диски как Master и Slave. При этом в совокупности нужно различать три случая: 1. Если установлен только один НЖМД с AT-интерфейсом, то он уста- навливается в "Single Drive Mode". В этом режиме при старте вычислений он не ожидает сигнал /PDIAG от второго НЖМД. 2. Если в системе два НЖМД, то первый должен устанавливаться как "Master", чтобы при "холодном" старте проверять сигнал /PDIAG второго НЖМД и при выявлении ошибок (а также, если второй диск отсутствует) выдавать соответствующее сообщение об ошибке. 3. Второй диск должен конфигурироваться как "Slave" и активировать /PDIAG. В приложении 3 приведены все необходимые мероприятия с корректными обозначениями штекерных перемычек на примере некоторых НЖМД: Conner3114; Quantum ProDrive 40AT, 80AT, 52AT, 105AT и Seagate ST125A, ST138A, ST157A. Управление в стандарте AT-интерфейса Программирование "IBM Task File"-интерфейса является сравнительно простым. Если биты RDY и BSY в регистре состояния указывают, что диско- вод готов для следующей команды, то вначале должны быть правильно установлены все необходимые параметры в регистрах 1F0h..1F6h для запус- каемой команды. Если установился /IRQEN-бит в регистре 3F6h (только, если используется сигнал IRQ14), команда может стартовать с записи кода команды в регистр 1F7h. Сразу после выполнения команды бит BSY снова переключается в "0", IRQ14 становится активным, и в зависимости от типа команды командой DRQ-бит указывает соответствующий тип передачи данных. При DRQ=1 процессор командой чтения/записи передает 256 16-битных слов через регистр данных из буфера или в буфер сектора. Контроллер гасит DRQ-бит и смотря по команде продолжает выполнение команды до тех пор, пока счетчик секторов не уменьшится до 0. НЖМД, предназначенные для работы в составе PC AT, и, соответствен- но, НЖМД с AT-интерфейсом не обслуживаются через DMA (в режиме прямого доступа в память). Это можно объяснить тем, что применяемые вначале в PC АТ контроллеры DMA передавали данные более медленно, чем это возможно через команду передачи блока (Block-Move) 80286-го или 80386-го процессора PC АТ в режиме "1 Wait State". Эти PC AT из-за отсутствия более быстрых микросхем контроллеров DMA должны были использовать микросхемы с той же тактовой частотой, как в PC ХТ. Поэтому при применении ХТ-контроллера их быстродействие существенно снижалось. С внедрением новых стандартов, таких, как EISA, в будущем положение здесь может измениться. Форматирование дисков с AT-интерфейсами. Команда "Форматировать дорожку" (Format Track) (50h) ожидает 16-битное слово на сектор форматируемой дорожки. Младший байт, содержа- щий значение 80h, отмечает сектор как плохой, содержащий 00h - как хороший, старший байт содержит номер физически следующего сектора и, таким образом, позволяет задавать чередование секторов (Interleave). Незанятые слова вмещающего 512 байт буфера сектора заполняются нулями. Таким образом, чтобы форматировать дорожку с 17 секторами и Interlave 2:1 должны быть переданы следующие значения: 0100 0А00 0200 0В00 0380 0С00 .... 0900 0000 .... В этом примере логический сектор 3 отмечается как плохой. Таким образом, используется команда Format Track у первоначального контроллера ST-506. Многие НЖМД с интегрированными контроллерами не позволяют выполнение неограниченного низкоуровневого форматирования в описанной здесь форме, а выполняют только некоторые из функций. С одной стороны некоторые диски жестко разбиты на сектора. Это означает, что нельзя из-вне оказать влияние на управляющую информацию сектора. Например, не может изменяться значение Interlave (не путать со старыми жестко секторированными ГМД, которые имели "индексное отверстие" на сектор). С другой стороны для обеспечения режима трансляции, режима работы с различным числом секторов на разных дорожках (Zone-Bit-Recording или ZBR), интеллектуального управления обходом дефектов и Skewing-опти- мизаций (см. статью "Методы улучшения характеристик, используемые в интеллектуальных накопителях на жестких дисках") становится необходимой специальная программа низкоуровневого форматирования, которую однако чаще всего можно заказать только у изготовителя дисков. У большинства изготовителей, которые не применяют ZBR, по меньшей мере может проводиться низкоуровневое форматирование в физическом режиме (native Mode) по вышеописанному способу. Некоторые утилиты форматирова- ния специально позволяют к тому же задание параметров в обход списка BIOS. Практически все жесткие диски при форматировании нижнего уровня прописывают область данных, так что по меньшей мере можно стирать конфи- денциальную информацию или спрятавшиеся где-то вирусы. Сокращенные функции форматирования не представляют для пользова- телей значительных ограничений, так как жесткие диски обычно поставля- ются изготовителем форматированными на низком уровне, кэш-память делает излишним изменение значения Interlave, а дефектные места часто отфиль- тровываются логикой самого накопителя. Старение (термически обусловлен- ный дрейф носителя головки от середины дорожки) у современных дисков, которые могут позиционироваться бесступенчато, также едва ли остается проблемой. Проблемы правда могут возникнуть при использовании старых типов НЖМД совместно с такими программи, как COMPSURF (тест жесткого диска) при оборудовании сетью Novell, потому что последняя является очень аппа- ратно зависимой. Но такие трудности едва ли нужно ожидать при использо- вании современных типов НЖМД и вновь разрабатываемых программ. НЖМД с AT-интерфейсом и ПК типа Laptop НЖМД с AT-интерфейсом разрабатывались первоначально для применения в портативных ПК типа Laptop, и поэтому у многих НЖМД данного типа включена команда для понижения потребляемой мощности. Команда Е2h, на- пример, вызывает то, что после истечении времени, регулируемого 5-секун- дными шагами через регистр 1F2H, без доступа к диску НЖМД автоматически уводит головки в позицию парковки и выключает двигатель шпинделя. Новое обращение теперь, хотя и на немного, замедляется, так как прежде всего должен раскрутиться двигатель, но за счет этого заряда аккумулятора хватает на большее время. Жесткие диски можно легко повредить в процессе эксплуатации из-за ударов, хотя устанавливаемые в Laptop типы НЖМД как правило специфициро- ваны для высоких вибрационных нагрузок (но только после полностью выполненного выключения дисков вместе с процессом парковки). Также нужно знать, что некоторые изготовители дисков рассматривают возможность использования НЖМД в ПЭВМ типа Laptop только как предусмотренное электронное замедление при раскручивании диска, служащее для того, чтобы не перезагружать сетевую часть ПЭВМ при включении. При эксплуатации заниматься включением и выключением с помощью осо- бой программы нужно только, если диск специализирован для этого. Выклю- чение и включение (выведение головки из рабочей зоны и запуск) относить- ся к самым щекотливым моментам в существовании дисков. Поэтому они должны (особенно при применении в ПЭВМ типа Laptop) располагать возмож- ностью парковки (лучше автоматической) и запуска, которые с этой стороны значительно предотвращают повреждения из-за ударов. Приложение 1 Назначение выводов AT-интерфейса Все сигналы XT-интерфейса является TTL-совместимыми. I/O указывает направление сигнала. "I" означает вход жесткого диска, "O" - выход к процессору. Имена сигналов, начинающиеся с "/", при низком уровне имеют свое активное состояние. N | сигнал | I/O | Описание контакта| | | 2,19,22,| GND | | Масса. 24,26, | | | 30,40 | | | 1 | RES | I | Сигнал сброса от процессора. 18, 3 | D15,D7 | I/O | Двунаправленная шина данных (8/16 16, 5 | D14,D6 | I/O | бит) между процессором и жестким диском 14, 7 | D13,D5 | I/O | для передачи данных, информации о состоя- 12, 9 | D12,D4 | I/O | нии и управляющей информации. Линии перек- 10, 11 | D11,D3 | I/O | лючаюся в высокоомное состояние, если 8, 13 | D10,D2 | I/O | жесткий диск не выбран. 6, 15 | D9, D1 | I/O | 4, 17 | D8, D0 | I/O | 20 | | | Удаленный контакт. Используется в ка- | | | честве ключа против переворачивания кабе- | | | ля. 21 |/IOCHRDY| O | Процессор при доступе к жесткому дис- | | | ку должен ожидать до тех пор, пока этот | | | сигнал станет неактивен (у некоторых изго- | | | товителей не используется). 23 | /IOWR | I | Сигнал записи для адресов портов вво- | | | да-вывода. 25 | /IORD | I | Сигнал чтения для адресов портов вво- | | | да-вывода. 27 |/IOCHRDY| O | То же, что и контакт 21. 28 | ALE | I | Address Latch Enable: не используется | | | для существующих накопителей (добавлен на | | | основании совместимости). 29 | | | Зарезервирован для будущих расширений. 31 | IRQ14 | O | Interrupt Request: требование преры- | | | вания к процессору. 32 | IO16 | O | Указатель на 16-битную передачу дан- | | | ных. 34 | /PDIAG| I/O | Passed Diagnostics: Slave-диск сооб- | | | щает Master-диску, что отработала внутрен- | | | няя диагностика (отсутствует в жестком | | | диске Quantum ProDrive 40AT/80AT). 33 | A0 | I | Сигналы адреса от процессора для вы- 35 | A1 | I | бора адресов регистров. 36 | A2 | I | 37 | /CS0 | I | Card Select: сигнал выбора для адре- 38 | /CS1 | I | сов накопителей. 39 | /ACT | I/O | Может управлять светодиодом, чтобы | | | указывать активность накопителя. У некото- | | | рых изготовителей используется также, что- | | | бы указывать наличие 2-го накопителя. Приложение 2 Регистры ввода-вывода AT-интерфейса Адрес | /CS1 | /CS0 | A2 | A1 | A0 | биты | доступ | доступ (Hex) | | | | | | | по чтению | по записи 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" в этом регистре устанавливается число секторов на дорож- ке. Начальный сектор 1F3h. Начальный сектор для следующего доступа. Цилиндр MSB 1F5h. Биты 0 и 1 являются битами 8 и 9 адреса ци- линдра. Номера накопителя и головки 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 | Накопитель готов (например, после включе- | | | | ния). | | 7 | BSY | Накопитель выполняет команду. | Чтение регистра состояния гасит IRQ14. Регистр команд 1F7h (запись). Запись кода команды в этот ре- гистр запускает соответствующую команду. 2-й регистр состояния 3F6h (чтение). Как и регистр состояния 1F7h, но не изменяется состояние IRQ14. Сброс, маска прерываний 3F6h (запись). | Бит | Название | Описание | | 0,3...7 | | Не используются. | | 1 | /IRQEN | "0" - IRQ14 становится активным после | | | | окончания. | | 2 | Reset | Программный сброс. | Активный адрес 3F7h (чтение). | Биты | Описание | | 0 | "0" - активен Master-диск. | | 1 | "1" - активен Slave-диск. | | 2...5 | Дополнение к коду включенной головки. | | 6 | "0" - накопитель непосредственно выполняет запись | | 7 | "1" - только для НГМД: дискета вынута из накопителя | Приложение 3 Конфигурирование "Master"/"Slave". | Наименование | Штекерная | 1 НЖМД | 2 НЖМД | | НЖМД | перемычка | | Master | Slave | | Conner 3114 | /ACT | on | * | * | | | /CD | on | on | off | | | /HSP | off | off | ** | | | /DSP | off | on | off | *) В системе из двух НЖМД светодиод может управляться от обоих НЖМД. Сигналы /ACT и /HSP выведены на контакт 39 интерфейсного разъема и поэтому не могут быть замкнуты одновреиенно. **) Если подсоединен НЖМД-Slave, который извещает о своем присутс- твии через контакт 39 сигналом "Slave present", тогда должна быть установлена эта перемычка | Наименование | Штекерная | 1 НЖМД | 2 НЖМД | | НЖМД | перемычка | | Master Slave | | Quantum ProDrive | DS | on | on | off | | 40AT, 80AT, 52AT, 105AT | SS | off | on | off | Устанавливать комбинацию "DS - off" и "SS - on" избегают, так как это выбирает встроенный тест. | Наименование | Штекерная | 1 НЖМД | 2 НЖМД | | НЖМД | перемычка | | Master Slave | | Seagate | 1-2 | on | on | off | | ST125A, ST138A, ST157A | 3-4 | off | on | on | Приложение 4 Команды жесткого диска с 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 | Как и команда 22h, но без пов- | | | long no retry | торного чтения. | | 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 | Накопитель начинает собственный | | | | тест. | | 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 | Кэш-стратегия и обработка оши- | | | | бок. | | | Read Configuration | Читает текущую конфигурацию. | | | Defect List | Читает список дефектных мест. | * - Специальные команды, зависящие от изготовителя. ** - Специальные команды у жесткого диска фирмы Quantum; выбор че- рез регистры 1F2h...1F6h.