company_banner

Введение в SSD. Часть 2. Интерфейсная



    В прошлой части цикла «Введение в SSD» мы рассказали про историю появления дисков. Вторая часть расскажет про интерфейсы взаимодействия с накопителями.

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

    Интерфейс — совокупность средств, методов и правил взаимодействия между элементами системы.

    Физическая реализация интерфейса влияет на следующие параметры:

    • пропускная способность канала связи;
    • максимальное количество одновременно подключенных устройств;
    • количество возникающих ошибок.

    Дисковые интерфейсы построены на портах ввода-вывода, что является противоположностью вводу-выводу через память и не занимает место в адресном пространстве процессора.

    Параллельные и последовательные порты


    По способу обмена данными порты ввода-вывода делятся на два типа:

    • параллельные;
    • последовательные.

    Как следует из названия, параллельный порт отправляет за раз машинное слово, состоящее из нескольких бит. Параллельный порт — самый простой способ обмена данными, так как не требует сложных схемотехнических решений. В самом простом случае каждый бит машинного слова отправляется по своей сигнальной линии, а для обратной связи используются две служебные сигнальные линии: Данные готовы и Данные приняты.


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

    Последовательные порты — противоположность параллельным. Отправка данных происходит по одному биту за раз, что сокращает общее количество сигнальных линий, но усложняет контроллер ввода-вывода. Контроллер передатчика получает машинное слово за раз и должен передавать по одному биту, а контроллер приемника в свою очередь должен получать биты и сохранять в том же порядке.


    Малое количество сигнальных линий позволяет без помех увеличивать частоту передачи сообщения.

    SCSI



    Small Computer Systems Interface (SCSI) появился в далеком 1978 году и был изначально разработан, чтобы объединять устройства различного профиля в единую систему. Спецификация SCSI-1 предусматривала подключение до 8 устройств (вместе с контроллером), таких как:

    • сканеры;
    • ленточные накопители (стримеры);
    • оптические приводы;
    • дисковые накопители и прочие устройства.

    Изначально SCSI имел название Shugart Associates System Interface (SASI), но стандартизирующий комитет не одобрил бы название в честь компании и после дня мозгового штурма появилось название Small Computer Systems Interface (SCSI). «Отец» SCSI, Ларри Баучер (Larry Boucher) подразумевал, что аббревиатура будет произноситься как «sexy», но Дал Аллан (Dal Allan) прочитал «sсuzzy» («скази»). Впоследствии произношение «скази» прочно закрепилось за этим стандартом.

    В терминологии SCSI подключаемые устройства делятся на два типа:

    • инициаторы;
    • целевые устройства.

    Инициатор отправляет команду целевому устройству, которое затем отправляет ответ инициатору. Инициаторы и целевые устройства подключены к общей шине SCSI, пропускная способность которой в стандарте SCSI-1 составляет 5 МБ/с.

    Используемая топология «общая шина» накладывает ряд ограничений:

    • на концах шины необходимы специальные устройства — терминаторы;
    • пропускная способность шины делится между всеми устройствами;
    • максимальное количество одновременно подключенных устройств ограничено.



    Устройства на шине идентифицируются по уникальному номеру, называемому SCSI Target ID. Каждый SCSI-юнит в системе представлен минимум одним логическим устройством, адресация которого происходит по уникальному в пределах физического устройства номера Logical Unit Number (LUN).


    Команды в SCSI отправляются в виде блоков описания команды (Command Descriptor Block, CDB), состоящих из кода операции и параметров команды. В стандарте описано более 200 команд, разделенных в четыре категории:

    • Mandatory — должны поддерживаться устройством;
    • Optional — могут быть реализованы;
    • Vendor-specific — используются конкретным производителем;
    • Obsolete — устаревшие команды.

    Среди множества команд только три из них являются обязательными для устройств:

    • TEST UNIT READY — проверка готовности устройства;
    • REQUEST SENSE — запрашивает код ошибки предыдущей команды;
    • INQUIRY — запрос основных характеристик устройства.

    После получения и отработки команды целевое устройство отправляет инициатору статус-код, которым описывается результат выполнения.

    Дальнейшее усовершенствование SCSI (спецификации SCSI-2 и Ultra SCSI) расширило список используемых команд и увеличило количество подключаемых устройств до 16-ти, а скорость обмена данными по шине до 640 МБ/c. Так как SCSI — параллельный интерфейс, повышение частоты обмена данными было сопряжено с уменьшением максимальной длины кабеля и приводило к неудобству в использовании.

    Начиная со стандарта Ultra-3 SCSI появилась поддержка «горячего подключения» — подключение устройств при включенном питании.

    Первым известным SSD диском с интерфейсом SCSI можно считать M-Systems FFD-350, выпущенный в 1995 году. Диск имел высокую стоимость и не имел широкой распространенности.

    В настоящее время параллельный SCSI не является популярным интерфейсом подключения дисков, но набор команд до сих пор активно используется в интерфейсах USB и SAS.

    ATA / PATA



    Интерфейс ATA (Advanced Technology Attachment), так же известный как PATA (Parallel ATA) был разработан компанией Western Digital в 1986 году. Маркетинговое название стандарта IDE (англ. Integrated Drive Electronics — «электроника, встроенная в привод») подчеркивало важное нововведение: контроллер привода был встроен в привод, а не на отдельной плате расширения.

    Решение разместить контроллер внутри привода решило сразу несколько проблем. Во-первых, уменьшилось расстояние от накопителя до контроллера, что положительным образом повлияло на характеристики накопителя. Во-вторых, встроенный контроллер был «заточен» только под определенный тип привода и, соответственно, был дешевле.


    ATA, как и SCSI, использует параллельный способ ввода-вывода, что отражается на используемых кабелях. Для подключения дисков с использованием интерфейса IDE необходимы 40-жильные кабели, также именуемые шлейфами. В более поздних спецификациях используются 80-жильные шлейфы: более половины из которых — заземления для уменьшения интерференции на высоких частотах.

    На шлейфе ATA присутствует от двух до четырех разъемов, один из которых подключается в материнскую плату, а остальные — в накопители. При подключении двух устройств одним шлейфом, одно из них должно быть сконфигурировано как Master, а второе — как Slave. Третье устройство может быть подключено исключительно в режиме «только чтение».


    Положение перемычки задает роль конкретного устройства. Термины Master и Slave по отношению к устройствам не совсем корректны, так как относительно контроллера все подключенные устройства — Slaves.

    Особенным нововведением в ATA-3 считается появление Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.). Пять компаний (IBM, Seagate, Quantum, Conner и Western Digital) объединили усилия и стандартизировали технологию оценки состояния накопителей.

    Поддержка твердотельных накопителей появилась с четвертой версии стандарта, выпущенной в 1998 году. Эта версия стандарта обеспечивала скорость обмена данными до 33.3 МБ/с.

    Стандарт выдвигает жесткие требования к шлейфам ATA:

    • шлейф обязательно должен быть плоским;
    • максимальная длина шлейфа 18 дюймов (45.7 сантиметров).

    Короткий и широкий шлейф был неудобен и мешал охлаждению. Повышать частоту передачи с каждой следующей версией стандарта становилось все сложнее, и ATA-7 решил проблему радикально: параллельный интерфейс был заменен последовательным. После этого ATA приобрёл слово Parallel и стал называться PATA, а седьмая версия стандарта получила иное название — Serial ATA. Нумерация версий SATA началась с единицы.

    SATA



    Стандарт Serial ATA (SATA) был представлен 7 января 2003 года и решал проблемы своего предшественника следующими изменениями:

    • параллельный порт заменен последовательным;
    • широкий 80-жильный шлейф заменен 7-жильным;
    • топология «общая шина» заменена на подключение «точка-точка».

    Несмотря на то, что стандарт SATA 1.0 (SATA/150, 150 МБ/с) был незначительно быстрее, чем ATA-6 (UltraDMA/130, 130 МБ/с), переход к последовательному способу обмена данными был «подготовкой почвы» к повышению скоростей.

    Шестнадцать сигнальных линий для передачи данных в ATA были заменены на две витые пары: одна для передачи, вторая для приема. Коннекторы SATA спроектированы для большей устойчивости к множественным переподключениям, а спецификация SATA 1.0 сделала возможным «горячее подключение» (Hot Plug).

    Некоторые пины на дисках короче, чем все остальные. Это сделано для поддержки «горячей замены» (Hot Swap). В процессе замены устройство «теряет» и «находит» линии в заранее определенном порядке.

    Чуть более, чем через год, в апреле 2004-го, вышла вторая версия спецификации SATA. Помимо ускорения до 3 Гбит/с в SATA 2.0 ввели технологию Native Command Queuing (NCQ). Устройства с поддержкой NCQ способны самостоятельно организовывать порядок выполнения поступивших команд для достижения максимальной производительности.


    Последующие три года SATA Working Group работала над улучшением существующей спецификации и в версии 2.6 появились компактные коннекторы Slimline и micro SATA (uSATA). Эти коннекторы являются уменьшенной копией оригинального коннектора SATA и разработаны для оптических приводов и маленьких дисков в ноутбуках.

    Несмотря на то, что пропускной способности второго поколения SATA хватало для жестких дисков, твердотельные накопители требовали большего. В мае 2009 года вышла третья версия спецификации SATA с увеличенной до 6 Гбит/с пропускной способностью.


    Особое внимание твердотельным накопителям уделили в редакции SATA 3.1. Появился коннектор Mini-SATA (mSATA), предназначенный для подключения твердотельных накопителей в ноутбуках. В отличие от Slimline и uSATA новый коннектор был похож на PCIe Mini, хотя и не был электрически совместим с PCIe. Помимо нового коннектора SATA 3.1 мог похвастаться возможностью ставить команды TRIM в очередь с командами чтения и записи.

    Команда TRIM уведомляет твердотельный накопитель о блоках данных, которые не несут полезной нагрузки. До SATA 3.1 выполнение этой команды приводило к сбросу кэшей и приостановке операций ввода-вывода с последующим выполнением команды TRIM. Такой подход ухудшал производительность диска при операциях удаления.

    Спецификация SATA не успевала за бурным ростом скорости доступа к твердотельным накопителям, что привело к появлению в 2013 году компромисса под названием SATA Express в стандарте SATA 3.2. Вместо того, чтобы снова удвоить пропускную способность SATA, разработчики задействовали широко распространенную шину PCIe, чья скорость превышает 6 Гбит/с. Диски с поддержкой SATA Express приобрели собственный форм-фактор под названием M.2.

    SAS



    «Конкурирующий» с ATA стандарт SCSI тоже не стоял на месте и всего через год после появления Serial ATA, в 2004, переродился в последовательный интерфейс. Имя новому интерфейсу — Serial Attached SCSI (SAS).

    Несмотря на то, что SAS унаследовал набор команд SCSI, изменения были значительные:

    • последовательный интерфейс;
    • 29-ти жильный кабель с питанием;
    • подключение «точка-точка»

    Терминология SCSI также была унаследована. Контроллер по-прежнему называется инициатором, а подключаемые устройства — целевыми. Все целевые устройства и инициатор образуют SAS-домен. В SAS пропускная способность подключения не зависит от количества устройств в домене, так как каждое устройство использует свой выделенный канал.

    Максимальное количество одновременно подключенных устройств в SAS-домене по спецификации превышает 16 тысяч, а вместо SCSI ID для адресации используется идентификатор World-Wide Name (WWN).

    WWN — уникальный идентификатор длиной 16 байт, аналог MAC-адреса для SAS-устройств.


    Несмотря на схожесть разъемов SAS и SATA, эти стандарты не являются полностью совместимыми. Тем не менее, SATA-диск может быть подключен в SAS-коннектор, но не наоборот. Совместимость между SATA-дисками и SAS-доменом обеспечивается при помощи протокола SATA Tunneling Protocol (STP).

    Первая версия стандарта SAS-1 имеет пропускную способность 3 Гбит/с, а самая современная, SAS-4, улучшила этот показатель в 7 раз: 22,5 Гбит/с.

    PCIe



    Peripheral Component Interconnect Express (PCI Express, PCIe) — последовательный интерфейс для передачи данных, появившийся в 2002 году. Разработка была начата компанией Intel, а впоследствии передана специальной организации — PCI Special Interest Group.

    Последовательный интерфейс PCIe не был исключением и стал логическим продолжением параллельного PCI, который предназначен для подключения карт расширения.

    PCI Express значительно отличается от SATA и SAS. Интерфейс PCIe имеет переменное количество линий. Количество линий равно степеням двойки и колеблется в диапазоне от 1 до 16.

    Термин «линия» в PCIe обозначает не конкретную сигнальную линию, а отдельный полнодуплексный канал связи, состоящий из следующих сигнальных линий:

    • прием+ и прием-;
    • передача+ и передача-;
    • четыре жилы заземления.

    Количество PCIe-линий напрямую влияет на максимальную пропускную способность соединения. Современный стандарт PCI Express 4.0 позволяет достичь 1.9 Гбайт/с по одной линии, и 31.5 Гбайт/с при использовании 16 линий.


    «Аппетиты» твердотельных накопителей растут очень быстро. И SATA, и SAS не успевают увеличивать свою пропускную способность, чтобы «угнаться» за SSD, что привело к появлению SSD-дисков с подключением по PCIe.

    Хотя PCIe Add-In карты прикручиваются винтом, PCIe поддерживает «горячую замену». Короткие пины PRSNT (англ. present — присутствовать) позволяют удостовериться, что карта полностью установлена в слот.

    Твердотельные накопители, подключаемые по PCIe регламентируются отдельным стандартом Non-Volatile Memory Host Controller Interface Specification и воплощены в множестве форм-факторов, но о них мы расскажем в следующей части.

    Удаленные накопители


    При создании больших хранилищ данных появилась потребность в протоколах, позволяющих подключить накопители, расположенные вне сервера. Первым решением в этой области был Internet SCSI (iSCSI), разработанный компаниями IBM и Cisco в 1998 году.

    Идея протокола iSCSI проста: команды SCSI «оборачиваются» в пакеты TCP/IP и передаются в сеть. Несмотря на удаленное подключение, для клиентов создается иллюзия, что накопитель подключен локально. Сеть хранения данных (Storage Area Network, SAN), основанная на iSCSI, может быть построена на существующей сетевой инфраструктуре. Использование iSCSI значительно снижает затраты на организацию SAN.

    У iSCSI существует «премиальный» вариант — Fibre Channel Protocol (FCP). SAN с использованием FCP строится на выделенных волоконно-оптических линиях связи. Такой подход требует дополнительного оптического сетевого оборудования, но отличается стабильностью и высокой пропускной способностью.

    Существует множество протоколов для отправки команд SCSI по компьютерным сетям. Тем не менее, есть только один стандарт, решающий противоположную задачу и позволяющий отправлять IP-пакеты по шине SCSI — IP-over-SCSI.

    Большинство протоколов для организации SAN используют набор команд SCSI для управления накопителями, но есть и исключения, например, простой ATA over Ethernet (AoE). Протокол AoE отправляет ATA-команды в Ethernet-пакетах, но в системе накопители отображаются как SCSI.

    С появлением накопителей NVM Express протоколы iSCSI и FCP перестали удовлетворять быстро растущим требованиям твердотельных накопителей. Появилось два решения:

    • вынос шины PCI Express за пределы сервера;
    • создание протокола NVMe over Fabrics.

    Вынос шины PCIe сопряжен с созданием сложного коммутирующего оборудования, но не вносит изменения в протокол.

    Протокол NVMe over Fabrics стал хорошей альтернативой iSCSI и FCP. В NVMe-oF используются волоконно-оптическая линии связи и набор команд NVM Express.

    DDR-T



    Стандарты iSCSI и NVMe-oF решают задачу подключения удаленных дисков как локальные, а компания Intel пошла другой дорогой и максимально приблизила локальный диск к процессору. Выбор пал на DIMM-слоты, в которые подключается оперативная память. Максимальная пропускная способность канала DDR4 составляет 25 ГБ/с, что значительно превышает скорость шины PCIe. Так появился твердотельный накопитель Intel® Optane™ DC Persistent Memory.

    Для подключения накопителя в DIMM слоты был изобретен протокол DDR-T, физически и электрически совместимый с DDR4, но требующий специального контроллера, который видит разницу между планкой памяти и накопителем. Скорость доступа к накопителю меньше, чем к оперативной памяти, но больше, чем к NVMe.

    Протокол DDR-T доступен только с процессорами Intel® поколения Cascade Lake или новее.

    Заключение


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

    В нашей лаборатории Selectel Lab вы можете самостоятельно протестировать SSD и NVMe диски.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Вытеснят ли NVMe-диски классические SSD в ближайшее время?

    • 55,0%Да126
    • 45,0%Нет103
    Selectel
    113,20
    ИТ-инфраструктура для бизнеса
    Поделиться публикацией

    Похожие публикации

    Комментарии 27

      +3
      Небольшие дополнения (по части страниц истории):
      1. Насколько я понимаю, SCSI появился не просто так, на пустом месте. Его создатели взяли за основу такую штуковину, как селекторный канал ввода-вывода, успешно применявшийся в архитектуре мэйнфреймов IBM-360. (Там операциями ввода-вывода занимался не центральный процессор, а т.н. «каналы», то есть, в сущности, специальные процессоры, у которых была своя собственная система команд. И существовало два типа таких каналов — селекторный и мультиплексный. К селекторному каналу подключались быстродействующие устройства ввода-вывода, такие как дисковые и ленточные накопители). SCSI получился в результате упрощения и усовершенствования того самого селекторного канала.

      2. Раз уж речь зашла об интерфейсах, то стоит вспомнить еще про MFM. Первые персональные компьютеры от IBM, содержащие в своих потрохах жесткие диски, использовали именно этот интерфейс (там на винчестере было аж три разъема — по одному для управления, для данных, и для питания). А теперь уже далеко не каждый про такое и вспомнит… Потом был еще ESDI, (тоже с отдельными разъемами для данных и управления), ныне основательно забытый. (Хотя многие SCSI — диски того времени были, в сущности, дисками ESDI, но с встроенными SCSI-адаптерами) IDE появился уже после них.
        +2
        А вот интересный вопрос. Почему на некоторых современных ноутбуках отсутствует светодиод, показывающий активность HDD/SSD?
          +8
          Чтобы не пугать пользователей как винда 10-ка насилует эти самые HDD/SSD своими обновлениями/индексациями/файлом подкачки и ещё чёрт знает чем.
          /irony
          +2
          Отличный материал.
          Тот самый случай, когда о сложном написано понятно и интересно.
            +1

            Каким это образом к шлейфу ATA можно подключить третье устройство? Даже если там физически будет ещё один разъём — для адресации устройства (Master/Slave) используется только один бит.

              0
              Дилетантский вопрос, который мучает меня с момента появления SATA: почему в интерфейсе передачи данных колодка питания имеет в ДВА РАЗА БОЛЬШЕ контактов, чем, собственно, для самих данных? Почему нельзя было сделать контакты питания толще/шире и т.д.?
              Выглядит как удешевление производства под соусом «так удобнее делать hot-swap».
                +1
                Распиновку этой колодки посмотрите внимательнее. Там по сути тройное резервирование контактов идёт так как на каждое питающее напряжение по 3 контакта выделено + целых 5 контактов GND
                  0
                  Я правильно понимаю — даже если останется по одному рабочему контакту 3.3, 5 и 12 вольт то на работе диска это не скажется?
                    0
                    Ну распиновку я, конечно, видел. Странное решение. Никакого резервирования для шины данных (у SATA) и тройное — для питания. При этом в обычном системном блоке один блок питания, а к диску подходит по одной жиле на каждое напряжение.
                    Единственное разумное объяснение — сила тока, но и это решается контактами соответствующего сечения.
                      +1
                      Вы забываете о толщине фольги на плате контактов и малой площади прижима пружинки кабеля к площадке устройства. Если ток потребления большой, точка контакта может сильно нагреться, а это нехорошо. В такой же конфигурации точек три, хоть в одной да получится приличный контакт.
                        0
                        Современный НЖМД потребляет хрен да маненько, чай, не 15к Чита в момент пуска.
                    0
                    Так как целостность шины питания для накопителя самая критичная (ошибки на линии данных обработает контроллер, а пропадание питания может привести к потере всех данных), применено трехкратное дублирование линий — разъем можно вставлять чуть криво, шевелить, подвергать вибрации — питание гарантированно будет.
                    Ну и вторично — снижение нагрузки по току на каждый пин, плюс возможный задел на будущее (для обратной совместимости), например, понижение напряжение питания или параметрические аппаратные данные.
                  +1
                  как то обошли вниманием M2, и его разновидности.
                    +1
                    Это ж все pcie. А так и U.2 стоит не забыть, который захватил корпоративный рынок
                      +1
                      M.2 и U.2 — это больше к форм-факторам, а не к интерфейсам. Эта тема будет затронута в следующих частях.
                    0
                    Следующий шаг — диск под одной крышку с процессором. За ним — диск на кристалле процессора. Ура, Intel изобретет микроконтроллер
                      0
                      Действительно, встроенная графика и контроллер памяти уже в CPU. В железе движемся от микросервисов обратно к монолиту. А потом кто-нибудь снова изобретёт модульность.
                      +2
                      Пояснили бы про необязаетльные 3.3v в питании SATA. И про Pin 3, на котором по новому стандарту теперь функция power cycle, с вытекающими проблемами совместимости.
                        +1
                        возможно кто-то очень сильно хотел продавать переходники для совместимости
                        +1
                        При создании больших хранилищ данных появилась потребность в протоколах, позволяющих подключить накопители, расположенные вне сервера. Первым решением в этой области был Internet SCSI (iSCSI), разработанный компаниями IBM и Cisco в 1998 году.

                        Fiber channel появился гораздо раньше, чем iSCSI.
                          +2

                          Также дополню, что вспоминая IDE ATA применительно к SSD, нельзя не упомянуть стандарт Compact Flash. CF совместим с IDE при помощи лишь пассивного переходника. Карты памяти CF широко использовались в роли SSD в различном оборудовании.

                            +1
                            Тогда, наверное, и CFast тоже.
                            +3
                            Про «опциональность» контактов S8-S14 для интерфейса SAS — это второй порт дискового контроллера для подключения этого диска к «двух-контроллерным» системам хранения. Когда оба контроллера могут одновременно и независимо обмениваться данными с диском.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое