Рис. 9.6. Разъемы Serial ATA: a — полный разъем на устройстве, б — сигнальный сегмент кабельного разъема, в — питающий сегмент кабельного разъема, г — сигнальный сегмент разъема хост-адаптера, д — разъем хоста для непосредственного подключения устройства
Каждое устройство, подключенное к адаптеру Serial ATA, представляется тремя блоками регистров, два из которых соответствуют традиционным регистрам ATA (см. п. 9.2.1) и называются «теневыми», третий блок — новый. Привязка адресов блоков к адресному пространству хоста стандартом не регламентируется; для PCI-контроллера блоки задаются регистрами конфигурационного пространства и «теневые» регистры могут располагаться по стандартным адресам ATA.
В блоке управляющих регистров, как и в ATA, используется лишь один (AS
для чтения, DC
для записи). В блоке командных регистров разрядность регистров SC
, SN
, CL
и СН
расширена до 16 бит, назначение младших байтов сохранилось. В режиме LBA старшие байты регистров SN
, CL
и СН
несут биты логического адреса [24:31], [32:39] и [40:47] соответственно. В регистре D/H
бит DEV
игнорируется (при эмуляции пар устройств на одном канале бит DEV
используется для выбора устройства). Из спецификации не совсем ясно, используются ли младшие биты D/H
для задания бит LBA[27:24], поскольку эти же биты фигурируют в старшем байте SN
.
Новый блок регистров 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 — P
— протокольная ошибка, требует сброса интерфейса и повтора операции (в случае устойчивости может быть признаком несовместимости устройства и адаптера);
• бит 8 — T
— не исправленное нарушение целостности данных, требует повтора операции.
♦ Биты [31:16] — поле DIAG, используемое диагностическим ПО:
• бит 19 — В
— ошибка декодирования 10B/8B;
• бит 21 — С
— ошибка CRC на канальном уровне;
• бит 20 — D
— ошибка паритета блоков данных (Disparity);
• бит 26 — F
— неопознанный тип FIS (ошибка, обнаруженная на транспортном уровне при корректном CRC-коде);
• бит 17 — I
— внутренняя ошибка физического уровня интерфейса;
• бит 16 — N
— сигнал готовности физического уровня менял состояние;
• бит 22 — H
— ошибка подтверждения кадров (может возникать как следствие ошибок В
, С
, D
);
• бит 23 — S
— ошибка последовательности состояний канального уровня;
• бит 24 — T
— ошибка на транспортном уровне;
• бит 18 — W
— обнаружен пробуждающий сигнал Comm 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.