Меню

Регистры контроллера жесткого диска



Регистры устройств Serial ATA.

Регистры устройств Serial ATA.

Каждое устройство, подключенное к адаптеру SATA, представляется тремя блоками регистров, два из которых соответствуют традиционным регистрам (см. табл. 1) АТА и называются «теневыми», третий блок регистров — новый. Привязка адресов блоков к адресному пространству хоста стандартом не регламентируется (для PCI-контроллера блоки задаются регистрами конфигурационного пространства и «теневые» регистры могут располагаться по стандартным адресам АТА).

Любая программа, в конечном счете, осуществляет управление накопителями на жестких дисках на физическом уровне через программно-доступные регистры их контроллеров, используя для этого команды процессора IN и OUT (чтение порта, запись в порт). Стандартный набор регистров контроллера ATA-дисков состоит из двух блоков регистров, выбираемых сигналами СS0# и СS1#, из которых активным может быть только один. В табл. 1 приведены адреса регистров для первого и второго каналов контроллеров АТА-дисков. Блок командных регистров служит для приема команд, управляющей информации и чтения информации о состоянии и ошибках. На действительность содержимого регистров команд­ного блока и альтернативного регистра состояния указывает нулевое значение бита BSY – 7 разряд регистра состояния (SR). Запись в регистры должна производиться лишь при BSY= 0 и DRQ = 0 (3 разряд регистра SR), кроме особо оговоренных случаев. Если устройство поддержива­ет управление энергопотреблением, в «спящем» режиме содержимое этих регист­ров недействительно и запись игнорируется, кроме особых случаев.

Таблица 1. Адреса и функциональное назначение регистров контроллеров устройств АТА

Адрес для канала

Сигналы адресации

(0 — низкий уровень, 1 – высокий)

Назначение (R — чтение, W — запись)

1

2

СS0#

СS1#

DА2

DА1

DА

Нет обращения (шина данных в третьем состоянии)

Недопустимый адрес (шина данных в третьем состоянии)

Control Block Registers – блок управляющих регистров

Не используется (шина данных в третьем состоянии)

Не используется (шина данных в третьем состоянии)

R: Alternate Status (AS) — альтернативный регистр состояния

W: Device Control (DС) — регистр управления устройством

R: Device Address (DА) — регистр адреса (не используется) 1

Command Block Registers — блок командных регистров

R/W: Data (DR) — регистр данных

R: Errоr (ER) — регистр ошибок

W: Features (FR) — регистр свойств

R/W: Sector Count (SС) — регистр счетчика секторов

R/W: Sector Number (SN) — регистр номера сектора/LВА [7:0] 2

R/W: Cylinder Low (СL) — регистр младшего байта номера цилиндра/LВА[ 15:8] 2

R/W: Cylinder High (СН) — регистр старшего байта номера цилиндра/LВА[23:16] 2

R/W: Device/Head (D/Н) — регистр номера устройства и головки/LВА[27:24] 2

R: Status (SR) — регистр состояния

W: Command (СR) — регистр команд

Примечания: 1 Рекомендуется, чтобы на сигнал чтения по этому адресу устройство не отвечало.

2 Регистры сектора, цилиндра, головки в режиме LBA содержат указанные разряды логического адреса.

Альтернативный регистр состояния АS (для первого канала его адрес ЗF6h, для вто­рого канала — 376h) имеет те же биты, что и основной SR, но его чтение не приво­дит ни к каким изменениям состояния устройства.

Регистр управления устройством DС (ЗF6h, 376h) служит для программного сбро­са обоих устройств одновременно и управления разрешением прерывания выбран­ного устройства. Запись в этот регистр возможна в любой момент. Программный сброс через регистр DC должен отрабатываться и в состоянии Sleep.

Назначение битов регистра DC:

— биты [7:3] зарезервированы;

— бит 2 — SRST(Software Reset) — программный сброс, действует все время, пока бит не будет снят. Оба устройства на шине воспринимают программный сброс одновременно;

— бит 1 — n/IEN (Interrup Еnаble) — бит запрещения прерывания (при нулевом значении бита выбранное устройство может вырабатывать сигнал INTRQ через тристабильный выход);

— бит 0 равен нулю.

Регистр адреса устройства DA (3F7h, 377h) использовался только в первой вер­сии АТА для совместимости со старыми контроллерами, чтением этого регистра можно было определить адресованный привод и головку. Адрес регистра совпадает с адресом диагностического регистра состояния контроллера НГМД, и рекомендуется, чтобы устройство АТА не отвечало на чтение этого регистра, а если устройство отвечает на чтение, то оно не должно управлять битом 7 во избежание конфликта с контроллером НГМД, у которого по в этом бите хранится признак смены носителя.

Назначение битов регистра DA:

— бит 7 — (HiZ) — высокоимпедансный, при считывании не выдается на шину;

Читайте также:  Запрет записи на жестком диске

— бит 6 — nWTG — инверсный признак записи (во время физического выполне­ния записи на носитель бит нулевой);

— биты [5:2] — пНS[3:0] — номер головки (инверсные биты);

— биты [1:0] — пDS[1:0] — выбор устройства (инверсные биты): 10 — выбрано устройство 0, а 01 — выбрано устройство 1.

Регистр данных DR (1F0h, 170h) может использоваться как 8-битный или 16-бит­ный в зависимости от типа данных, передаваемых в текущей команде (обращение к этому регистру происходит в режиме обмена РIO (когда DМАСК# неактивен), при выполнении передач протокола РО (РIO Оut) хост производит запись в этот регистр, при РI (РIO In) – чтение, а в режиме DMA обмен данными происхо­дит через порт данных, при этом активны DМАRQ и DМАСК#, а СS0# и СS1# неактивны).

Регистр ошибок ER (1F1h, 171h) хранит состояние контроллера после выполнения последней опера­ции или диагностический код ошибки. После завершения операции на наличие ошибки указывает бит ERR регистра состояния.

Назначение битов регистра ER:

— бит 7 зарезервирован;

— бит 6 — UNC (Uncorrectable Data Еггог) — неисправимая ошибка данных;

— бит 5 — MC(Меdiа Сhanged) — смена носителя (после смены носителя первая команда обращения отвергается и устанавливается данный бит, а после сброса бита следующие команды будут выполняться нормальным образом);

— бит 4 — IDNF (ID Not Found) — указывает на ненайденный идентификатор сектора;

— бит 3 — ABRT (Аbort Соmmand) — устанавливается, если команда отвергну­та как недействительная или в случае возникновения иной ошибки;

— бит 2 — MCR (Меdia Сhange Requested) — индикатор запроса смены носителя (после обнаружения запроса смены носителя команды Dоог Lock будут возвра­щать бит ошибки ЕRR и бит MCR, а бит MCR сбрасывается командами Door Unlock, Media Eject или аппаратным сбросом);

— бит 1 — TK0NF (Тгаск 0 Nоt Found) указывает на то, что по команде Recalibrate не удалось найти нулевой трек;

— бит 0 — AMNF (Аddress Mark Not Found) — не найден адресный маркер данных в заголовке сектора.

После выполнения любого сброса или команды Execute Device Diagnostic регистр ошибок содержит диагностический код. Трактовка битов, за исключением бита 3 (ABRT), может меняться в зависимости от исполненной команды.

Регистр свойств FR (1F1h, 171h) используется в зависимости от команды. В коман­де Set Features, через регистр свойств, задается код подкоманды (некоторые старые устройства могут игнорировать запись в этот регистр, до принятия стандарта АТА-2 в этот регистр поме­щали значение рекомендуемого номера цилиндра для предкомпенсации записи.

Регистр счетчика секторов SC (1F2h, 172h) содержит число секторов, участвую­щих в обмене (хост инициализирует этот регистр до подачи команды (нулевое значение соответствует 256 секторам). По успешному завершению операции до­ступа к данным регистр должен обнулиться. Если команда завершилась с ошибкой, в регистре будет число секторов, которые должны быть переданы для успешного завершения предыдущего запроса. Команды Initialize Device Parameters или Write Same могут переопределить значение этого регистра, а в некоторых командах ре­гистр используется для передачи иных параметров.

Регистры номера сектора SN (1FЗh, 173h) и номера цилиндра — младшего CL (1F4h, 174h) и старшего байта CH (1F5h, 175h) — имеют двоякое назначение в зависимо­сти от выбранной системы адресации (СНS или LВА), они инициализируются хост-адаптером, а в случае возникновения ошибки при выполнении операции, устройство поместит в них адрес, по которому встретилась ошибка.

Регистр номера устройства и головки D/H (1F6h, 176h) кроме хранения части ад­ресной информации служит для выбора ведущего или ведомого устройства и ме­тода адресации регистра D/H:

Назначение битов номера устройства и головки D/H:

— биты 7 и 5 вплоть до АТА-3 должны были быть единичными, в АТА/АТАРI-4 их объявили устаревшими.

— бит 6 — L — единичным значением указывает на применение режима адреса­ции LВА, а при нулевом значении бита используется режим СНS;

— бит 4 — DEV (Device) — выбор устройства, при DEV= 0 выбрано ведущее, при DEV = 1 — ведомое; — биты [3:0] имеют двоякое назначение в зависимости от выбранной системы адресации, в режиме СНS они содержат номер головки, в режиме LВА — стар­шие биты логического адреса.

Читайте также:  Проги для создания виртуальных жестких дисков

Как и предыдущие (SN, CH, CL) этот адресный регистр инициализируется хост-адаптером, а в случае возникновения ошибки при операции устройство поместит в них адрес, по которому встретилась ошибка (до принятия АТА-2 считалось, что адресные регистры должны модифицироваться и после успешного выполнения операции, отражая текущее значение адреса в носителе).

Регистр состояния SR (1F7h, 177h) отражает текущее состояние устройства в про­цессе выполнения команд. Чтение регистра состояния разрешает дальнейшее из­менение его битов и сбрасывает запрос аппаратного прерывания (IRQ). Назначение битов регистра SR:

— бит 7 — BSY (Busy) указывает на занятость устройства, значение этого бита действительно всегда, при

BSY = 1, устройство игнорирует попытки записи в командный блок регистров, а чтение этих регистров дает неопределенный ре­зультат, а при BSY = 0 регистры командного блока доступны, в это время устрой­ство не может устанавливать бит DRQ, изменять значение битов ERR и содер­жимое остальных командных регистров (могут меняться только значения битов IDX, DRDY, DF, DSC, CORR); бит BSY может устанавливаться на кратковре­менный интервал, так что хост может этого не заметить; бит BSY устанавливается: при сбросе устройства; по получении команды, если не устанавливается DRQ; между передачами блоков данных в режиме РIO и после них, пока не обнулился DRQ; во время передач данных в режиме DМА;

— бит 6 — DRDY(Device Ready) указывает на готовность устройства к воспри­ятию любых кодов команд, если состояние бита изменилось, оно не может измениться обратно до чтения регистра состояния (при DRDY = 0 устройство воспринимает только команды Ехесиte Dеvice Diagnosnic и Initialize Device Раrameters, прекращая выполнение текущей команды и сообщая об этом фла­гом ABRT в регистре ошибок и ERR в регистре состояния. Другие команды приводят к непредсказуемым результатам. Бит устанавливается устройством АТА, когда оно готово к выполнению всех команд;

— бит 5 — DF(Device Fault) — индикатор отказа устройства;

— бит 4 — DSC (Device Seek Complete) — индикатор завершения поиска трека, а в командах, допускающих перекрытие, бит называется SERV(Service Required) — устройство требует обслуживания;

— бит 3 — DRQ (Data Request) — индикатор готовности к обмену словом или бай­том данных;

— бит 2 — CORR (Соггеcted Datа) — индикатор исправленной ошибки данных;

— бит 1 — IDX (Index) — индекс, трактуется особо каждым производителем;

— бит 0 — ERR (Еггог) — индикатор ошибки выполнения предыдущей операции. Дополнительная информация содержится в регистре ошибок. Если установ­лен бит ЕRR, до приема следующей команды, программного или аппаратного сброса устройство не изменит состояние этого бита, а также регистра ошибок, регистра количества секторов и регистров цилиндра, головки и номера секто­ра. Для команд Packet и Service бит называется CHK и служит признаком ис­ключительной ситуации. В стандарте АТА/АТАРI-4 для некоторых команд биты 4 и 5 могут иметь иное назначение, а биты 1 и 2 объявлены устаревшими.

Регистр команд СR (1F7h, 177h) – его назначение очевидно из названия. Устройство начинает исполнять команду сразу, после записи кода команды в регистр CR.

После включения электропитания, по окончании сигнала начального сброса (power on reset), или после аппаратного сброса (hardware reset) по сигналу RESET, или после программного сброса (software reset) по установке бита SRST регистра DC — выполняется самотестирова­ние, запускается двигатель, проверяется механика, устанавливаются парамет­ры умолчания, интерфейс и регистры сбрасываются в исходное состояние.

После любого «сброса» или выполнения команды диагностики устройство АТА в блоке командных регистров содержит сигнатуру, определяющую его тип: SC=01h, SN=01h, CL=00h, CH=00h, DH=00h. Основной функцией контроллера жесткого диска является отработка определенного для него разработчиком набора команд. В системе команд контроллера жесткого диска имеются служебные команды для идентификации и управления свойствами устройств, включая возможность обновления встроенного программного обеспечения (микрокода). Эти команды позволяют получить подробнейшую информацию об устройстве, в том числе и по средствам защиты от несанкционированного доступа к накопителю.

В блоке управляющих регистров дисков SATA, как и в АТА, используется лишь один (AS для чтения, DC для записи). В блоке командных регистров разрядность регистров SC, SN, CL и СН расширена до 16 бит (назначение их младших байтов сохранилось). В режиме LBA старшие байты регистров SN, CL и СН несут биты логического адреса [24: 31], [32: 39] и [40: 47] соответственно. В регистре D/H бит DEV игнорируется (при эмуляции пар устройств на одном канале бит DEV используется для выбора устройства).

Читайте также:  Мониторинг жесткого диска server

Новый блок регистров SCR (Serial ATA Status and Control registers) состоит из 16 смежных 32-разрядных регистров SCR0-SCR15, из которых пока были определены лишь 3 (остальные были зарезервированы).

Регистр SStatus (SCR0) — регистр текущего состояния интерфейса хост адаптера (только чтение).

Биты [3: 0] — поле DET, подключение устройств:

— 0000 — устройство не обнаружено, физической связи нет;

— 0001 — устройство обнаружено, но физическая связь не установлена;

— 0011 — устройство обнаружено, физическая связь установлена;

— 0100 — устройство отключено (запретом интерфейса или запуском внутреннего теста).

Биты [7: 4] — SPD, скорость:

— 0000 — нет согласованной скорости (устройство не подключено или связь не установлена);

— 0001 — согласована скорость 1-го поколения.

Биты [11: 8] — поле IPM, состояние энергопотребления интерфейса:

— 0000 — устройство не обнаружено, физической связи нет;

— 0001 — интерфейс в активном состоянии;

— 0010 — интерфейс в состоянии PARTIAL;

— 0110 — интерфейс в состоянии SLUMBER.

Остальные биты и значения полей зарезервированы.

Регистр SError (SCR1) — регистр диагностической информации, относящейся к интерфейсу. В регистре представлены ошибки, накапливающиеся с момента последней очистки регистра. Регистр очищается операцией сброса, отдельные биты можно сбрасывать операцией записи в регистр (единицы в позициях сбрасываемых бит).

Биты [15: 0] — поле ERR, ошибки, обрабатываемые обычным программным

— бит 0 — I — исправленное нарушение целостности данных (не требует действий со стороны ПО, но может учитываться, например, для принятия решения о снижении скорости);

— бит 1 — М — исправленная ошибка связи (может возникать при временном отключении устройства, потере синхронизации, не требует действий со стороны ПО);

— бит 8 — Т — не исправленное нарушение целостности данных, требует повтора операции

— бит 9 — С — устойчивая неисправимая ошибка связи или нарушение целостности данных (может возникать при неправильном подключении, отказе или отключении устройства);

— бит 10 — Р — протокольная ошибка, требует сброса интерфейса и повтора операции (в случае устойчивости может быть признаком несовместимости устройства и адаптера);

— бит 11 — Е — внутренняя ошибка, обнаруженная хост-адаптером (если ошибка повторяется после сброса, она может быть признаком несовместимости адаптера и устройства).

Биты [31: 16] — поле DIAG, используемое диагностическим ПО:

— бит 16 — N — сигнал физического уровня менял состояние,

— бит 17 — I — внутренняя ошибка физического уровня интерфейса;

— бит 18 — W — обнаружен пробуждающий сигнал Сотт Wake;

— бит 19 — В — ошибка декодирования 10В/8В;

— бит 20 — D — ошибка паритета блоков данных (Disparity);

— бит 21 — С — ошибка CRC на канальном уровне;

— бит 22 — Н — ошибка подтверждения кадров (может возникать как следствие ошибок В, С, D);

— бит 23 — 5 — ошибка последовательности состояний канального уровня;

— бит 24 — Т — ошибка на транспортном уровне;

— бит 26 — F — неопознанный тип FIS (ошибка, обнаруженная на транспорт-

ном уровне при корректном CRC-коде).

Остальные биты зарезервированы.

Регистр SControl (SCR2) — регистр управления интерфейсом (запись и чтение).

Биты [3: 0] — поле DET, управление обнаружением и инициализацией устройств:

— 0000 — нет действий;

— 0001 — инициализация и установление соединения (эквивалентно аппаратному сбросу);

— 0100 — запрет интерфейса и перевод физического уровня в режим Offline.

Биты [7: 4] — поле SPD, задает ограничение на скорость при согласовании соединений:

— 0000 — нет ограничений;

— 0001 — скорость не выше 1-го поколения.

Биты [11: 8] — поле IPM, управление энергорежимом интерфейса:

— 0000 — нет ограничений;

— 0001 — запрет перехода в состояние PARTIAL;

— 0010 — запрет перехода в состояние SLUMBER;

— 0011 — запрет перехода в состояние PARTIAL и SLUMBER.

Источник