Запоминающие устройства прямого доступа
Контроллер жестких дисков ST506
Более сложный контроллер ST506 был разработан фирмой Western Digital в конце 70-х годов прошлого века для управления жесткими дисками, подключаемыми к микропроцессорным системам. Этот контроллер и его усовершенствованная версия, ST412, широко применялись для подключения жестких дисков к IBM PC и совместимых с ними компьютерах [citforum.ukrpak.net IDE, Гук 2000, PC Guide IDE].
Контроллер ST506 допускал подключение двух жестких дисков емкостью до 40МЬ, использующих модифицированную частотную модуляцию, а более поздние версии контроллера – групповую модуляцию RLL. Как и описанный выше КМД, контроллер содержал логику управления мотором шпинделя и подачей головок, буфер для одного сектора и схемы модуляции и демодуляции МЧМ. Диски присоединялись к контроллеру двумя плоскими кабелями: один, с 34-мя проводами, использовался для передачи сигналов управления двигателями, а второй, 20-проводной – для передачи модулированных сигналов МЧМ.
Центральному процессору контроллер ST506 доступен в виде двух блоков регистров, управляющего и командного. Блок управляющих регистров размещается по адресам Ox3F4-Ox3F7, а блок командных – по адресам 1FO-1F7 (табл. 9.8).
Таблица 9.8. Командные регистры контроллера ST506, цит. по [chip.ms.mff.cuni.cz АТА2].
Адрес | Функция (чтение) | Функция (запись) | Код |
---|---|---|---|
0x1 F0 | Данные (младш.) | Данные (младш.) | |
0x1 F1 | Ошибка | Прекомпенсация | PC |
0x1 F2 | Счетчик секторов | – " – | SC |
0x1 F3 | Номер сектора | – " – | SN |
0x1 F4 | Цилиндр (младш.) | – " – | CY |
0x1 F5 | Цилиндр (старш.) | – " – | CY |
0x1 F6 | Устройство/поверхность | – " – | DH |
0x1 F7 | Статус | Команда |
Управляющие регистры используются для доступа к регистрам данных и статуса без подачи контроллеру сигнала о том, что регистр прочитан (смысл этого станет ясен далее). Пожалуй, единственный самостоятельно полезный бит в этих регистрах управляет разрешением прерываний от контроллера. Основная работа с контроллером происходит через блок из восьми командных регистров, один из которых является регистром данных.
При исполнении команды записи контроллер подает головку к дорожке, указанной регистрами CY и DK, генерирует прерывание и выставляет сигнал DRQ (табл. 9.9), сигнализируя процессору, что готов принять данные. Затем процессор производит 512 операций записи в порт данных, заполняя буфер. Контроллер выполняет запись, генерирует прерывание и, если счетчик секторов еще не сравнялся с нулем, увеличивает номер сектора и снова выставляет сигнал DRQ.
Таблица 9.9. Биты регистра статуса ST506, цит. по [chip.ms.mff.cuni.cz IDE].
Бит | Мнемоника | Описание |
---|---|---|
7 | BUSY | Устройство занято |
6 | DRDY | Устройство готово принимать команды |
5 | DWF | Ошибка записи |
4 | DSC | Подача головки завершена |
3 | DRQ | Запрос данных |
2 | CORR | Исправимая ошибка при чтении данных |
1 | INDEX | Маркер начала дорожки |
0 | ERROR | Ошибка |