Иллюстрированный самоучитель по теории операционных систем

Запоминающие устройства прямого доступа

Контроллер жестких дисков 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 Ошибка
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.