Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Блоки регистров контроллеров устройств SАТА.

Блоки регистров контроллеров устройств SАТА.

 

Каждое устройство, подключенное к адаптеру Serial ATA, представляется тремя блоками регистров, два из которых соответствуют традиционным регистрам ATA и называются «теневыми», третий блок является новым. Привязка адре­сов блоков к адресному пространству хоста стандартом не регламентируется, «теневые» регистры могут располагаться по стандартным адресам ATA.

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

Таблица 1. Два блока регистров (теневых) контроллеров устройств SАТА (ATA)

QIP Shot - Image: 2017-06-30 11:46:08

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

Регистры сектора, цилиндра, головки в режиме 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 (ЗF7h, 377h) использовался только в первой вер­сии АТА для совместимости со старыми контроллерами, чтением этого регистра можно было определить адресованный привод и головку. Адрес регистра совпадает с адресом диагностического регистра состояния контроллера НГМД, и рекомендуется, чтобы устройство АТА не отвечало на чтение этого регистра, а если устройство отвечает на чтение, то оно не должно управлять битом 7 во избежание конфликта с контроллером НГМД, у которого по этой линии переда­ется бит смены носителя.

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

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

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

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

-  биты [1:0]  -  nDS[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ооr 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) отражает текущее состояние устройства в про­цессе выполнения команд. Чтение регистра состояния разрешает дальнейшее из­менение его битов и сбрасывает запрос аппаратного прерывания.

Назначение битов регистра 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 устройство воспринимает только команды Ехесute Dеvice Diagnostic и Initialize Device Раrameters, прекращая выполнение текущей команды и сообщая об этом фла­гом ABRT в регистре ошибок и ERR в регистре состояния. Другие команды приводят к непредсказуемым результатам. Устройства АТАРI сбрасывают бит по любому сбросу и команде Ехecute Device Diagnostic. Бит устанавливается устройством АТА, когда оно готово к выполнению всех команд, а устройство АТАРI устанавливает бит до завершения выполнения команд, за исключением Device Reset и Ехесute Device Diagnostic;

-  бит 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. Команда Device Reset выполняется устройством АТАРI независимо от состояния битов BSY и DRQ, и даже в состоянии Sleep.

Новый блок регистров 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, ошибки, обрабатываемые обычным программным обеспечением:

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

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

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

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

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

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

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

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

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

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

бит 26  -  F - неопознанный тип FIS (ошибка, обнаруженная на транспорт­ном уровне при корректном CRC-коде);

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

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

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

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

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

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

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

Регистр 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.

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


Лицензия