Послідовний інтерфейс Serial ATA
Інтерфейс Serial ATA є хост-центричним, у ньому визначається лише взаємодія хоста з кожним із підключених пристроїв, а взаємодія між провідним та веденим пристроями, властиве традиційному інтерфейсу ATA, виключається. Програмно хост бачить безліч пристроїв, підключених до контролера, як набір каналів ATA, у кожного з яких є єдиний провідний пристрій. Є можливість емуляції пар пристроїв (провідне — ведене) однією каналі, якщо така необхідність виникне. Програмне взаємодію Космосу з пристроями Serial ATA практично збігається з колишнім, набір команд відповідає ATA/ATAPI-5. У той же час апаратна реалізація хост-адаптера Serial ATA дуже відрізняється від примітивного (у вихідному варіанті) інтерфейсу ATA. У паралельному інтерфейсі ATA хост-адаптер був простим засобом, що забезпечує програмне звернення до регістрів, розташованим у підключених пристроях. У Serial ATA ситуація інша: хост-адаптер має блоки про «тіньових» регістрів (Shadow Registers), що збігаються за призначенням із звичайними регістрами пристроїв ATA. Кожному підключеному пристрою відповідає свій набір регістрів. Звернення до цих тіньових регістрів викликають процеси взаємодії хост-адаптера з підключеними пристроями та виконання команд.
У стандарті розглядається багаторівнева модель взаємодії хоста та пристрою, де прикладним рівнем є обмін командами, інформацією про стан та даними, що зберігаються. Фізично для передачі інформації між контролером і пристроєм використовуються дві пари проводів. Дані передаються кадрами, транспортний рівень формує та перевіряє коректність інформаційних структур кадрів (Frame Information Structure, FIS). Для полегшення високошвидкісногопередачі на канальному рівні дані кодуються за схемою 8B/10B (8 біт даних кодуються 10-бітним символом) і скрембуються, після чого по фізичній лінії передаються за найпростішим методом NRZ (рівень сигналу відповідає біту, що передається). Між канальним та прикладним рівнем є транспортний рівень, який відповідає за доставку кадрів. На кожному рівні є свої засоби контролю достовірності та цілісності.
У першому поколінні Serial ATA дані кабелю передаються зі швидкістю 1500 Мбіт/с, що з урахуванням кодування 8B/10B забезпечує швидкість 150 Мбайт/с (без урахування накладних витрат протоколів верхніх рівнів). Надалі планується підвищувати швидкість передачі, і в інтерфейсі закладено можливість узгодження швидкостей обміну по кожному інтерфейсу відповідно до можливостей хоста та пристрою, а також якості зв'язку. Хост-адаптер має засоби управління з'єднаннями, програмно ці засоби доступні через спеціальні регістри Serial ATA.
У стандарті передбачається керування енергорежимом інтерфейсів. Кожен інтерфейс крім активного стану може перебувати в станахPARTIALіSLUMBERзі зниженим енергоспоживанням, для виходу з яких потрібен помітний час (10 мс).
Фізичний інтерфейс Serial ATA
Послідовний інтерфейс ATA, як і його паралельний попередник, призначений для підключення пристроїв усередині комп'ютера. Довжина кабелів не перевищує 1 м, при цьому всі радіальні з'єднання, кожен пристрій підключається до хост-адаптера своїм кабелем. У стандарті передбачається і безпосереднє підключення пристроїв до роз'єму крос-плати з можливістю «гарячої» заміни. Стандарт визначає новий однорядний двосегментний роз'єм з механічними ключами, що перешкоджають помилковому.підключення. Сигнальний сегмент має 7 контактів (S1-S7), живильний - 15 (P1-Р15); всі контакти розташовані в один ряд із кроком 1,27 мм. Призначення контактів наведено у табл. 9.11. Мінімальні розміри роз'єму (повна довжина - близько 36 мм) і мала кількість ланцюгів полегшують компонування системних плат і карт розширення. Живильний сегмент може бути відсутнім (пристрій може отримувати живлення і від звичайного 4-контактного роз'єму ATA). Вигляд роз'ємів наведено на рис. 9.6. Для забезпечення «гарячого» підключення контакти роз'ємів мають різну довжину, в першу чергу з'єднуються контакти «землі» Р4 і Р12, потім інші «землі» та контакти передзаряду конденсаторів у ланцюгах живлення P3, Р7 та Р13 (для зменшення кидка споживаного струму), після чого з'єднуються основні живильні контакти та сигнальні ланцюги.
Таблиця 9.11. Роз'єм Serial ATA
| Контакт | Ланцюг | Призначення |
| S1 | GND | Екран |
| S2 | А+ | Диференціальна пара сигналів А |
| S3 | А- | Диференціальна пара сигналів А |
| S4 | GND | Екран |
| S5 | В- | Диференціальна пара сигналів |
| S6 | В+ | Диференціальна пара сигналів |
| S7 | GND | Екран |
| Ключі та вільний простір |
Мал. 9.6. Роз'єми Serial ATA:a- повний роз'єм на пристрої,б- сигнальний сегмент кабельного роз'єму,в- живильний сегмент кабельного роз'єму,г- сигнальний сегмент роз'єму хост-адаптера,д- роз'єм хоста для безпосереднього підключення пристрою
Регістри Serial ATA
Новий блок регістрів 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.
Інші біти та значення полів зарезервовані.