Особенности реализации интерфейса и регистры Serial ATA.
Спецификация SATA (Serial ATA), описывает интерфейс для жестких дисков с последовательным способ обмена информацией. Последовательный SATA интерфейс программно совместим с традиционным - параллельным. Для обмена в нем используются те же регистры и команды, что обеспечивает программную совместимость с предыдущими версиями ATA. Все жесткие диски SATA подключаются независимым информационным кабелем, который состоит из 7 проводов, из которых 3 провода не используются, а оставшиеся 4 используются парами (одна пара для передачи, другая для приема). Кабель стал тонким и круглым, что позволило снизить температуру компонентов внутри системного блока компьютера за счет улучшения вентиляции. Разъем конструктивно предусматривает защиту от неправильного подключения. Нахождение кабеля SATA вблизи источников сильных электромагнитных помех нежелательно, т.к. в кабеле SATA уровень сигналов снижен до 0.4 вольт, что привело к снижению помехозащищенности при передаче информации. Поддержка подключения и замены жестких дисков без выключения компьютера описана в стандарте опционально, и производители жестких дисков стали реализовывать ее по своему усмотрению, что тоже привело к различным проблемам совместимости.
Спецификация Serial ATA версии 2.0 обеспечивала большую пропускную способность и специальные средства для поддержки сетевых устройств хранения. Расширения SATA-2 были направлены на повышение надежности этой системы и оптимизацию обработки запросов, однако подавляющая часть нововведений рассчитана на применение в серверах. Пропускная способность SATA-2 составляет 300 мегабайт в секунду (современный жесткий диск пока способен использовать не более 60-70 процентов от пропускной способности SATA). Спецификация SATA-2 предусматривает возможность подключения к одному порту нескольких жестких дисков при помощи так называемого концентратора или умножителя портов (port multiplier). При этом уменьшается число кабельных соединений, экономится место и достигается возможность гибкого масштабирования системы. Спецификация SATA Revision 3.0 предусматривает возможность передачи данных на скорости до 6 Гбит/с (600 Мбайт/с) и обладает полной обратной совместимостью с устройствами, поддерживающие предыдущие версии стандарта. В спецификации SATA 3.0 добавлены новые возможности, позволяющие улучшить работу NCQ, увеличить энергосбережение и использовать новые, более компактные разъемы.
Интерфейс Serial ATA является хост-центрическим, в нем определяется только взаимодействие хоста с каждым из подключенных устройств, а взаимодействие между ведущим и ведомым устройствами, свойственное традиционному интерфейсу АТА, исключается. Программно хост видит множество устройств, подключенных к контроллеру, как набор каналов АТА, у каждого из которых имеется единственное ведущее устройство (имеется возможность эмуляции пар устройств «ведущее — ведомое» на одном канале, если такая необходимость возникнет).
Программное взаимодействие с устройствами Serial ATA практически совпадает с прежним, набор команд соответствует ATA/ATAPI-5. В то же время аппаратная реализация хост-адаптера Serial ATA сильно отличается от достаточно простого (в исходном варианте) интерфейса АТА.
ATA/ATAPI-7 – определил протокол Ultra DMA-6 (133 Мбайт/с), расширенные режимы самотестирования SMART (Selective, Conveyance), поддержка расширенных журналов SMART, версия последовательного интерфейса ATA - SATA. ATA/ATAPI-8 – добавил аппаратное шифрование (Trusted Computing feature), датчик свободного падения (Free-fall Control), проверка чтением после записи (Write-Read-Verify feature), дополнительный протокол управления параметрами жесткого диска и чтения расширенной информации (SCT Command Transport), флэш память с возможностью управления ее энергосбережением (NV Cache, NV Cache Power Mode), определение номинальной скорости вращения двигателя (Nominal media rotation rate), время раскрутки магнитных пластин до номинальной скорости (Time to Spin Up in Seconds), команду - WRITE UNCORRECTABLE EXT.
В параллельном интерфейсе АТА хост-адаптер был простым средством, обеспечивающим программное обращение (доступ) к регистрам, расположенным в самих подключенных устройствах. В Serial ATA ситуация иная: хост-адаптер имеет блоки так называемых «теневых» регистров (Shadow Registers), совпадающих по назначению с обычными регистрами устройств АТА. Каждому подключенному устройству соответствует свой набор регистров. Обращения к этим теневым регистрам вызывают процессы взаимодействия хост-адаптера с подключенными устройствами и исполнение команд.
В стандарте SATA рассматривается многоуровневая модель взаимодействия хоста и устройства, где прикладным уровнем является обмен командами, информацией о состоянии и хранимыми данными. На физическом уровне для передачи информации между контроллером и устройством используются две пары проводов. Данные передаются кадрами. Транспортный уровень формирует и проверяет корректность информационных структур кадров (Frame Information Structure - FIS).
Для облегчения высокоскоростной передачи на канальном уровне данные кодируются по схеме 8В/10В (8 бит данных кодируются 10-битным символом) и скремблируются, после чего по физической линии передаются по простейшему методу NRZ (уровень сигнала соответствует передаваемому биту).
Между канальным и прикладным уровнем имеется транспортный уровень, отвечающий за доставку кадров. На каждом уровне имеются свои средства контроля достоверности и целостности.
В первом поколении Serial ATA данные по кабелю передавались со скоростью 1500 Мбит/с, что с учетом кодирования 8В/10В обеспечивало скорость 150 Мбайт/с (без учета накладных расходов протоколов верхних уровней). В дальнейшем была повышена скорость передачи, и в интерфейсе была заложена возможность согласования скоростей обмена по каждому интерфейсу в соответствии с возможностями хоста и устройства, а также качеством связи.
Хост-адаптер имеет средства управления соединениями, программно эти средства доступны через специальные регистры Serial ATA.
В стандарте предусматривается управление энергорежимом интерфейсов. Каждый интерфейс кроме активного состояния может находиться в состояниях PARTIAL и SLUMBER с пониженным энергопотреблением, для выхода из которых требуется заметное время (10 мс).
Команды, требующие передачи данных, могут исполняться в различных режимах обмена. Обращение в режиме PIO и традиционный способ обмена по DMA (legacy DMA) выполняется аналогично привычному интерфейсу ATА. Однако внутренний протокол обмена между хост-адаптером и устройствами позволяет передавать между ними разноплановую информацию (структуры FIS определены не только для команд, состояния и собственно хранимых данных). В приложении D к спецификации описывается своеобразный способ обмена по DMA, который предполагается основным (First-party DMA) для устройств Serial ATA. В традиционном контроллере DMA адаптера ATА для каждого канала имеется буфер, в который перед выполнением операции обмена загружают дескрипторы блоков памяти, участвующей в обмене. Теперь же предполагается, что адресная информация, относящаяся к оперативной памяти хост компьютера, будет доводиться до устройства хранения, подключенного к адаптеру Serial ATA. Эта информация из устройства хранения при исполнении команд обмена выгружается в контроллер DMA хост-адаптера и используется им для формирования адреса текущей передачи (расплатой за это некоторое упрощение хост-адаптера - особенно многоканального, является усложнение протокола и расширение функций, выполняемых устройством хранения). При традиционном разделении функций, задача устройств внешней памяти была лишь хранить данные, «не интересуясь» тем, в каком месте оперативной памяти компьютера они должны находиться при операциях обмена.
Последовательный интерфейс SATA, как и его параллельный предшественник ATA, предназначен для подключений устройств внутри компьютера. Длина кабелей не превышает 1 м, при этом все соединения радиальные, каждое устройство подключается к хост-адаптеру своим кабелем. В стандарте предусматривается и непосредственное подключение устройств к разъемам кросс-платы с возможностью «горячей» замены.
Стандарт определяет новый однорядный двухсегментный разъем с механическими ключами, препятствующими ошибочному подключению. Сигнальный сегмент имеет 7 контактов (S1-S7), питающий - 15 (Р1- Р15); все контакты расположены в один ряд с шагом 1,27 мм. Назначение контактов приведено в табл.1. Малые размеры разъема (полная длина — около 36 мм) и малое количество цепей облегчают компоновку системных плат и карт расширения. Питающий сегмент может отсутствовать (устройство может получать питание и от обычного 4-контактного разъема ATА).
Для обеспечения «горячего» подключения контакты разъемов имеют разную длину, в первую очередь соединяются контакты «земли» Р4 и Р12, затем остальные «земли» и контакты предзаряда конденсаторов в цепях питания РЗ, Р7 и Р13 (для уменьшения броска потребляемого тока), после чего соединяются основные питающие контакты и сигнальные цепи.
Таблица 1. Разъем Serial ATA
Контакт |
Цепь |
Назначение |
S1 |
GND |
Экран3 |
S2 |
А+ |
Дифференциальная пара сигналов А |
S3 |
А- |
Дифференциальная пара сигналов А |
S4 |
GND |
Экран |
S5 |
В- |
Дифференциальная пара сигналов В |
S6 |
В+ |
Дифференциальная пара сигналов В |
S7 |
GND |
Экран |
Ключи и свободное пространство |
||
Р1 |
V33 |
Питание 3, 3 В |
Р2 |
V33 |
Питание 3, 3 В |
РЗ |
V33 |
Питание 3, 3 В, предзаряд |
Р4 |
GND |
Общий |
Р5 |
GND |
Общий |
Р6 |
GND |
Общий |
Р7 |
V5 |
Питание 5 В, предзаряд |
Р8 |
V5 |
Питание 5 В, предзаряд |
Р9 |
V5 |
Питание 5 В, предзаряд |
Р10 |
GND |
Общий |
P11 |
Резерв |
|
Р12 |
GND |
Общий |
Р13 |
V12 |
Питание 12В, предзаряд |
Р14 |
V12 |
Питание 12 В |
Р15 |
V12 |
Питание 12 В |
Регистры Serial ATA. Каждое устройство, подключенное к адаптеру SATA, представляется тремя блоками регистров, два из которых соответствуют традиционным регистрам (см. табл. 2) АТА и называются «теневыми», третий блок регистров - новый. Привязка адресов блоков к адресному пространству хоста стандартом не регламентируется (для PCI-контроллера блоки задаются регистрами конфигурационного пространства и «теневые» регистры могут располагаться по стандартным адресам АТА).
Таблица 2. Адреса и функциональное назначение регистров контроллеров устройств АТА
Адрес для канала |
Сигналы адресации (0 - низкий уровень, 1 – высокий) |
Назначение (R - чтение, W - запись) |
|||||
1 |
2 |
СS0# |
СS1# |
DА2 |
DА1 |
DА0 |
|
|
|
1 |
1 |
X |
X |
X |
Нет обращения (шина данных в третьем состоянии) |
|
|
0 |
0 |
X |
X |
X |
Недопустимый адрес (шина данных в третьем состоянии) |
ЗFХ |
37Х |
Control Block Registers – блок управляющих регистров |
|||||
|
|
1 |
0 |
0 |
X |
X |
Не используется (шина данных в третьем состоянии) |
|
|
1 |
0 |
1 |
0 |
X |
Не используется (шина данных в третьем состоянии) |
ЗF6 |
376 |
1 |
0 |
1 |
1 |
0 |
R: Alternate Status (AS) - альтернативный регистр состояния |
ЗF6 |
376 |
1 |
0 |
1 |
1 |
0 |
W: Device Control (DС) - регистр управления устройством |
ЗF7 |
377 |
1 |
0 |
1 |
1 |
1 |
R: Device Address (DА) - регистр адреса (не используется)1 |
1FХ |
17Х |
Command Block Registers - блок командных регистров |
|||||
1F0 |
170 |
0 |
1 |
0 |
0 |
0 |
R/W: Data (DR) - регистр данных |
1F1 |
171 |
0 |
1 |
0 |
0 |
1 |
R: Errоr (ER) - регистр ошибок |
1F1 |
171 |
0 |
1 |
0 |
0 |
1 |
W: Features (FR) - регистр свойств |
1F2 |
172 |
0 |
1 |
0 |
1 |
0 |
R/W: Sector Count (SС) - регистр счетчика секторов |
1FЗ |
173 |
0 |
1 |
0 |
1 |
1 |
R/W: Sector Number (SN) - регистр номера сектора/LВА [7:0]2 |
1F4 |
174 |
0 |
1 |
1 |
0 |
0 |
R/W: Cylinder Low (СL) - регистр младшего байта номера цилиндра/LВА[ 15:8]2 |
1F5 |
175 |
0 |
1 |
1 |
0 |
1 |
R/W: Cylinder High (СН) - регистр старшего байта номера цилиндра/LВА[23:16]2 |
1F6 |
176 |
0 |
1 |
1 |
1 |
0 |
R/W: Device/Head (D/Н) - регистр номера устройства и головки/LВА[27:24]2 |
1F7 |
177 |
0 |
1 |
1 |
1 |
1 |
R: Status (SR) - регистр состояния |
1F7 |
177 |
0 |
1 |
1 |
1 |
1 |
W: Command (СR) - регистр команд |
Примечания: 1 Рекомендуется, чтобы на сигнал чтения по этому адресу устройство не отвечало. 2 Регистры сектора, цилиндра, головки в режиме LBA содержат указанные разряды логического адреса. |
Любая программа, в конечном счете, осуществляет управление накопителями на жестких дисках на физическом уровне через программно-доступные регистры их контроллеров, используя для этого команды процессора IN и OUT (чтение порта, запись в порт). Стандартный набор регистров контроллера ATA-дисков состоит из двух блоков регистров, выбираемых сигналами СS0# и СS1#, из которых активным может быть только один. В табл. 2 приведены адреса регистров для первого и второго каналов контроллеров АТА-дисков. Блок командных регистров служит для приема команд, управляющей информации и чтения информации о состоянии и ошибках. На действительность содержимого регистров командного блока и альтернативного регистра состояния указывает нулевое значение бита BSY – 7 разряд регистра состояния (SR). Запись в регистры должна производиться лишь при BSY= 0 и DRQ = 0 (3 разряд регистра SR), кроме особо оговоренных случаев. Если устройство поддерживает управление энергопотреблением, в «спящем» режиме содержимое этих регистров недействительно и запись игнорируется, кроме особых случаев.
Альтернативный регистр состояния А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 используется для выбора устройства).
Новый блок регистров 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.
Остальные биты и значения полей зарезервированы.