Оригинал материала: https://3dnews.ru/166009

Технология Serial ATA

Стр.1 - Часть 1

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

К чему вся суета

Традиционный, параллельный ATA интерфейс хорошо зарекомендовал себя благодаря своей простоте и низкой стоимости реализации (пусть даже и предоставляя гораздо меньшее число удобств и преимуществ и худшую производительность по сравнению с другими, но, тем не менее, удовлетворяющую нуждам большинства обычных ПК), но дальнейшее его развитие стало сопрягаться с большим числом технологических трудностей, и назрела необходимость разработать новый интерфейс для замены. Часто среди обоснований перехода на новый стандарт в статьях называют ограниченную скорость передачи параллельного интерфейса в 133 мбайт/с, но это ограничение конкретной его версии, а не его вида вообще (а у Serial ATA не намного-то и больше - 150 Мбайт/с).

Дальнейшее увеличение пропускной способности возможно и при параллельной шине, причем для нее большая скорость естественней, чем для последовательной, но такая модернизация - дорогостоящее удовольствие (взгляните на приборы SCSI) и при достигнутых скоростях на последовательной шине, просто экономически нецелесообразно. Это раз. В старом интерфейсе использовались сигналы высокого уровня 5V, а при современном технологическом процессе получить их на выходе микросхем очень сложно и в общем-то даже невозможно. Это два. Это основные причины. Называемые улучшение вентилируемости, сокращение числа проводов, упрощение технологии шлейфов и сокращение затрат на производство - являются лишь следствием. Но не будем забегать вперед.

Как все начиналось

Работа над SerialATA была начата еще 4 года назад. Версия 0.9 спецификации была представлена на Intel Developer Forum 2000, и окончательно доработанная 1.0 - в конце того же года. Первые продукты начали появляться в 2001 году, а массовое производство, как и сказал инженер Steve Collins компании Seagate в интервью Андрею Кузину на Cebit 2001 началось полтора года спустя - в 2002-2003 годах, т.е. сейчас.

В разработке стандарта принимали и принимают участие многие серьезные компании. Изначально в рабочую группу входили APT Technologies, Dell, IBM, Intel, Maxtor, Quantum и Seagate Technologies. Подключение новых игроков происходило очень быстро и сейчас список участников проекта очень велик. Продвигается стандарт на рынок сейчас в основном стараниями VITESSE, Dell, Intel, Maxtor и Seagate - так называемой промогруппой Serial ATA.

И что мы имеем сегодня

Как несложно догадаться по именам разработчиков и из названия самого стандарта - Serial ATA - высокоскоростной последовательный интерфейс предназначенный для устройств хранения. По своей внутренней организационной структуре - четырехуровневой модели - он очень похож на другие стандарты, например USB или SCSI-3 которые в свою очередь всегда напоминали мне модель OSI сетей передачи данных. В последовательном ATA декомпозиция выполнена следующим образом:


Не нужно объяснять, что использование многоуровневой модели дает возможность для гибкого дальнейшего совершенствования стандарта, доработкой только необходимых уровней и не правя весь стандарт сразу.

Для компьютера в котором установлен Serial ATA принципиально ничего не меняется, взаимодействие операционной системы через драйвер контроллера в целях обеспечения совместимости с предыдущими версиями ATA оставлено прежним. Наглядно сходства и различия можно представить так:


В привычном параллельном ATA два устройства объединяются кабелем в цепочку и подключаются к одному порту контроллера. Взаимодействие приложения и устройства происходит через операционную систему и драйвер контроллера.


На этом рисунке блоки определенного цвета функционально идентичны блокам соответствующего цвета с предыдущего рисунка. Видно, что функционирование приложений, операционной системы и драйверов осталось без изменений. Интерфейс между контроллером нового стандарта и драйвером (левая часть блока "контроллер") остался прежним: новый Serial ATA полностью эмулирует Parallel ATA: использует для обмена те же регистры и команды. Изменилось лишь взаимодействие между ним и непосредственно дисками. Сразу же обращает на себя внимание то, что для подключения тех же двух устройств контроллер уже имеет два порта, и каждый накопитель подключается отдельным кабелем.

В новом Serial ATA нет понятия ведомого и ведущего устройства (Master/Slave). Наконец-то пришла пора прекратить тягать перемычки из своих винчестеров. Все подключенные накопители являются независимыми устройствами и их работа выглядит с точки зрения старого стандарта как Master with no Slave Present (но не нужно боятся вероятных проблем со старым ПО в этом месте: из соображений совместимости предусмотрена возможность эмуляции работы устройств в режиме Master+Slave: в зависимости от бита, использующегося для определения устройства назначения на шине, обращения просто распределяются между портами SATA, хотя в этом режиме оказываются недоступными многие из возможностей новой шины). Чисто внешние различия на этом заканчиваются. Остальные - внутри.

Стр.2 - Часть 2

Физический уровень занимается передачей битов по физическим каналам связи. Здесь определяются основные характеристики среды используемой для передачи данных и характеристики электрических сигналов.

Сигналы. Мы уже вскользь касались этого вопроса. При современных технологиях использование 5-ти вольтовых сигналов стало очень затруднительно, и кроме того, с ростом скорости работы возникают дополнительные сложности при переключении из одного состояния в другое. С такой проблемой уже однажды столкнулась SCSI, и сейчас, в Serial ATA был использован тот же подход. Уровень сигналов снижен и составляет 250 мв.

Способ передачи. Кроме того, вместо использовавшейся раннее в ATA однополярной передачи, обладающей низкой помехоустойчивостью, применена двухполярная (или еще ее называют дифференциальной. Снова же, так как и SCSI). Преимущество ее в гораздо большей помехозащищенности. При дифференциальной передаче по двум проводам передается один и тот же сигнал, но разной полярности. Шумы наводимые в проводах симметричны, и сложив оба полученных разнополярных сигнала можно получить шум, а вычев его из полученного сигнала - непосредственно чистый переданный сигнал. Собственно использование дифференциальной передачи и дало возможность снизить уровни используемого сигнала. Для кодирования передаваемой информации используется потенциальный код без возвращения к нулю (Non Return to Zero, NRZ). Он является одним из самых простых в реализации, благодаря двум резко различающимся потенциалам обладает хорошей распознаваемостью ошибок, но не обладает необходимым свойством самосинхронизации. Но с этим недостатком в SATA успешно борются гениально простым методом, о котором скажем ниже.

Физическая среда. Ключевой момент, ради которого то все и было затеяно: используется не параллельная физическая шина, а последовательная, состоящая из 2-х пар проводов (одной передачи и одной на прием) и несколько нулевых. Всего семь. Провод которыми соединяются устройство последовательной ATA становится таким образом тонким и круглым, гибким и удобным в использовании, не препятствует воздухообмену.



С другой стороны, изготовление провода функционирующего на столь высоких скоростях, как у Serial ATA, и при этом обладающего высокими механическими характеристиками, пусть и содержащего всего 7 проводов, обходится вряд ли дешевле, чем обычного 80-ти жильного. И если где-то и содержится возможность снижения стоимости пользования, как обещано разработчиками изначально, то вряд ли здесь. Зато безусловно задача согласования (терминирования) решается теперь намного и дешевле. А длина кабелей может достигать 1 метра. SATA может быть не только интерфейсом внутренних устройств хранения, но и… внешниих…

Разъемы. Так как проводов мало, то разъемы соответственно получаются очень компактными и удобными в использовании. На рисунке для сравнения представлены коннекторы традиционного параллельного (справа, стоит ли говорить) и нового последовательного интерфейса (слева):


Как вы думаете, какой из двух является разъемом шины данных? Думаете, что так же как и Parallel ATA тот, что пошире? Вот и не угадали! Тот, маленький который. Разъем питания по размерам теперь превосходит разъем data-кабеля. Конструктивно они оба выполнены с защитой от дурака: предусмотрен сложный ключ и вставить по другому их просто нельзя, в отличие от интерфейса ATA, где такую защиту, похоже, придумывали на скорую руку потом, пытаясь сохранить совместимость с версиями без оной. В результате вряд ли есть сегодня человек, который бы хоть раз не подключил IDE шлейф неправильно. А шире разъем питания по тому, что контакты в нем больше и надежнее. И их не 4, как в старом разъеме, - добавилась возможность использовать питание 3.3v.


Предвижу вопрос: а откуда же брать питание для SATA дисков? Ответ: обычное через специальный переходник


Спецификация SATA жестко не ограничивает размещение основных разъемов и выполнение дополнительных, и предлагает несколько вариантов. Один родной, а второй как всегда, для поддержки ошибок предыдущих версий.


Вариант 1.


Вариант 2.

Современные диски Barracuda ATA 7200.7 находятся между ними где-то посредине. Конечно же, в спецификации приведены конкретные требования к проводам, чертежи разъемов и т.п. Но нам это совершенно неинтересно.

Физический уровень осуществляет над поступившим кадром необходимые преобразования - конвертирует в последовательность, кодирует и выдает в линию и тоже самое в обратном порядке, когда получает данные с физической шины, т.е. от другого устройства. Взаимодействие физического уровня с вышележащим происходит по параллельной шине шириной 10, 20, 40 или другой, на усмотрение разработчика.

Канальный уровень выполняет функции арбитража и результата выполнения операций передачи данных, скремблирование, а также реализует механизмы обнаружения и коррекции ошибок. Теперь обо всем подробней.

Арбитраж и контроль передачи. Сам по себе физический уровень может только передавать данные, поступившие на его вход. Для предотвращения конфликтов, когда одновременно и устройство, и хост контроллер хотят передать данные, на канальном уровне предусмотрен специальный механизм контроля, получивший название арбитража. Кроме того в обязанности канального уровня входит слежение за тем, были ли данные успешно переданы и сообщение об этом вышестоящему - транспортному уровню. Легко сообразить зачем это нужно.

Обнаружение и коррекция ошибок. В отличие от стандарта ATA, который различными механизмами обнаружения и коррекции ошибок обрастал по мере роста быстродействия, т.е. тогда, когда припирало и без них было не обойтись, в Serial ATA несколько механизмов заложены изначально. Во-первых, хорошей распознаваемостью обладает используемый на физическом уровне NRZ. Но это не главное, ряд ошибок может успешно его миновать. Как метод применяется избыточное кодирование 8B/10B. Суть его проста: 8 бит исходных данных дополняются 2-мя дополнительными битами. Итого получается 10 бит - т.е. 1024 возможных битовых комбинаций может быть в получившемся коде, в то время как в исходном - только 256.

Из результирующего кода отбирают 256 комбинаций, которые будут соответствовать 256-ти комбинациям исходного кода, а остальные считают запрещенными. Это позволяет распознавать искажение данных - если принята запрещенная последовательность, то при передаче произошла ошибка. Кроме того, в Serial ATA используется CRC код. О нем, не буду подробно, так как многие наверное наслышаны. Кстати то, что жесткие диски с SATA имеют максимальную скорость обмена по интерфейсу в 150 Мбайт в секунду, при том, что для SATA заявлена скорость передачи на физическом уровне в 1.5 Гбит/с, объясняется использованием избыточного 8B/10B кодирования, снижающего полезную пропускную способность интерфейса до 1.2 Гбит/с.

Скремблирование. Код NRZ, используемый на физическом уровне не обладает свойством самосинхронизации, так как при последовательности нулей или единиц сигнал в линии просто превращается в постоянный сигнал определенного уровня. Скремблирование помогает бороться с этим явлением, перемешивая данные, подлежащие передаче определенным образом так, чтобы вероятность появления единиц и нулей на выходе была приблизительно одинаковой.

Работает канальный уровень так: получает информационный кадр от транспортного, выполняя логическое кодирование и вычисление CRC, и спускает вниз - к физическому уровню. При получении данных от физического порядок действия обратный.

Задачей транспортного уровня является обеспечение вышележащим протоколам передачи с той степенью надежности, которая им требуется. Он упаковывает поступившие от прикладного уровня ATA команды в кадры и предает их следующему, или распаковывает поступившие снизу данные и передает на прикладной уровень. Задачей прикладного уровня является организация взаимодействия между драйвером контроллера и всего программного, что за ним дальше стоит и самим контроллером через блок регистров и портов. В SATA их набор расширен, но это уже нас занимает не так сильно. Особенно много об этих уровнях говорить нечего.

Т.е. что и как происходит на конкретном этапе вам теперь должно быть более или менее понятно, а именно дать общее преставление о работе я сейчас хотел. О преимуществах нового стандарта писано уже много раз, и только ленивый не читал про это. Хотя на самом деле их не шибко то и много. С точки зрения производительности пожалуй даже вообще никаких (не говоря про то, что в связке ATA - SATA через переходник вообще может быть проигрыш). Принципиально новыми функциями стандарт не наделили. Разве что поддержка горячего подключения и замены появилась. Она описана в спецификации, но, увы, опционально и целиком и полностью ее реализация на совести производителя. Может быть в будущем что то появится…

А что может появиться?

Программа развития стандарта составлена аж на десять лет вперед. В ней предусмотрена разработка трех версий. Первая - это та, которую мы имеем сегодня. Во второй будет в два раза увеличена пропускная способность - до 3 Гбит/с при сохранении полной совместимости с первой. А в третьей - до 6 Гбит/с. А вот совместимость будет под вопросом, говорится, что возможно будет механическая совместимость с предыдущими версиями. А может и нет. Электрическая быть должна. SATA II должна появится в середине следующего года, при том, что мы еще толком то и первой не видели. SATA III ожидается в середине 2007. Новую шину, наверное в обязательном порядке, будут учить думать - создавать очереди команд и их оптимизировать. Собственно говоря, это можно уже делать сегодня, но пока никто из производителей жестких дисков (а другая периферия на этой шине существует в крайне небольшом количестве, едва ли не в единичных экземплярах) не пытается ее воплотить в своих изделиях даже не смотря на то, что это обещает хороший прирост производительности, особенно в многозадачных средах. Дорого. Даже сейчас несмотря на все обещания разработчиков Serial ATA'ы диски с этим интерфейсом стоят дороже, равно как и оснащенные им материнские платы. Для тех применений где это действительно нужно существует SCSI, уже давно умеющий это делать. И вообще, мне кажется, что Serial ATA это попытки догнать быстрый уходящий поезд SCSI (вообще говоря, такую цель перед собой ставили разработчики). Но SCSI уже сегодня умеет очень много всего (о чем мы поговорим в отдельной статье), что и не снилось SATA и гораздо более высокие пропускные способности - 320 Мбайт/с уже доступны (Ultra320 SCSI), и ведутся работы над 640 Мбайт/с (Ultra640 SCSI)… И сложные громоздкие разъемы и дорогие кабеля тоже не аргумент - уже давно проработана поддержка последовательной физической среды. Впрочем, сравнение двух интерфейсов и прогнозирование развития на задумано в данной статье. Пора ставить точку. Поживем - увидим.



Оригинал материала: https://3dnews.ru/166009