
В В цикъла „Въведение в SSD“ разказахме за историята на появата на дисковете. Втората част ще разкаже за интерфейсите за взаимодействие с устройствата за съхранение.
Комуникацията между процесора и периферийните устройства протича в съответствие с предварително определени споразумения, наречени интерфейси. Тези споразумения регламентират физическото и програмно ниво на взаимодействие.
Интерфейсът е съвкупност от средства, методи и правила за взаимодействие между елементите на системата.
Физическата реализация на интерфейса влияе на следните параметри:
- пропускната способност на комуникационния канал;
- максималното количество едновременно свързани устройства;
- броя на възникващите грешки.
Дисковите интерфейси са изградени на входно-изходни портове, което е противоположно на входно-изхода чрез памет и не заема място в адресното пространство на процесора.
Паралелни и последователни портове
Според начина на обмен на данни входно-изходните портове се разделят на два типа:
- паралелни;
- последователни.
Както подсказва името, паралелният порт изпраща едновременно машинно слово, състоящо се от няколко бита. Паралелният порт е най-простият начин за обмен на данни, тъй като не изисква сложни схемотехнически решения. В най-простия случай всеки бит от машинното слово се изпраща по своя сигнална линия, а за обратна връзка се използват две служебни сигнални линии: Данните са готови и Данните са приети.
Паралелните портове на пръв поглед отлично се мащабират: повече сигнални линии — повече бита се предават наведнъж и следователно по-висока пропускна способност. Въпреки това, поради увеличаването на броя сигнални линии между тях възниква интерференционно взаимодействие, което води до из distortion на предаваните съобщения.
Последователните портове са противоположност на паралелните. Изпращането на данни става по един бит наведнъж, което намалява общия брой сигнални линии, но усложнява контролера за вход-изход. Контролерът на предавателя получава машинно слово наведнъж и трябва да предава по един бит, докато контролерът на приемника от своя страна трябва да получава битове и да ги запазва в същия ред.
Малкото количество сигнални линии позволява без смущения да се увеличи честотата на предаване на съобщението.
SCSI

Small Computer Systems Interface (SCSI) се появи през далечната 1978 година и първоначално беше разработен, за да обедини устройства с различен профил в една единствена система. Спецификацията SCSI-1 предвиждаше свързването на до 8 устройства (включително контролера), като:
- скенери;
- лентични устройства (стримери);
- оптични устройства;
- дискови устройства и други устройства.
Първоначално SCSI носеше името Shugart Associates System Interface (SASI), но стандартизиращият комитет не одобри това наименование в чест на компанията и след един ден на мозъчна атака се появи ново име: Small Computer Systems Interface (SCSI). "Бащата" на SCSI, Лари Бучер, предполагаше, че абревиатурата ще се произнася като "sexy", но прочете "sсuzzy" ("скъзи"). Впоследствие произношението "скъзи" трайно се утвърди за този стандарт.
В терминологията на SCSI свързаните устройства се делят на два типа:
- инициатори;
- целеви устройства.
Инициаторът изпраща команда на целевото устройство, което след това изпраща отговор на инициатора. Инициаторите и целевите устройства са свързани към общата шина SCSI, чиято пропускателна способност по стандарта SCSI-1 е 5 MB/s.
Използваната топология "обща шина" налага редица ограничения:
- на краищата на шината са необходими специални устройства — терминатори;
- пропускателната способност на шината се дели между всички устройства;
- максималното количество едновременно свързани устройства е ограничено.
Устройствата на шината се идентифицират с уникален номер, наречен SCSI Target ID. Всеки SCSI единица в системата е представена минимум от едно логическо устройство, адресацията на което се осъществява по уникален номер в рамките на физическото устройство, Logical Unit Number (LUN).

Командите в SCSI се изпращат под формата на блокове описание на командата (Command Descriptor Block, CDB), състоящи се от код на операция и параметри на командата. В стандарта са описани повече от 200 команди, разделени в четири категории:
- Задължителни — трябва да се поддържат от устройството;
- Опционални — могат да бъдат реализирани;
- Специфични за производителя — се използват от конкретен производител;
- Устарели — остарели команди.
Сред множеството команди само три от тях са задължителни за устройствата:
- TEST UNIT READY — проверка на готовността на устройството;
- REQUEST SENSE — запитва кода на грешката от предишната команда;
- INQUIRY — запитване за основни характеристики на устройството.
След като получи и обработи командата, целевото устройство изпраща на инициатора статус код, описващ резултата от изпълнението.
По-нататъшното усъвършенстване на SCSI (спецификациите SCSI-2 и Ultra SCSI) разширило списъка с команди и увеличило броя на свързаните устройства до 16, а скоростта на обмен на данни по шината до 640 MB/s. Тъй като 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 беше достатъчна за твърдотелни дискове, SSD устройствата нуждаеха от повече. През май 2009 г. беше издадена третата версия на спецификацията SATA с увеличена пропускна способност до 6 Гбит/с.
Особено внимание на твърдотелните дискове беше отделено в редакцията SATA 3.1. Появи се конектор Mini-SATA (mSATA), предназначен за свързване на SSD устройства в лаптопи. За разлика от Slimline и uSATA, новият конектор беше подобен на PCIe Mini, въпреки че не беше електрически съвместим с PCIe. Освен новия конектор, SATA 3.1 можеше да се похвали с възможността за поставяне на команди TRIM в опашка с командите за четене и запис.
Командата TRIM уведомява SSD устройството за блоковете данни, които не носят полезна информация. Преди SATA 3.1 изпълнението на тази команда водеше до нулиране на кешовете и спиране на входно-изходните операции, последвано от изпълнението на командата TRIM. Този подход влошаваше производителността на диска при операции по изтриване.
Спецификацията SATA не успяваше да настигне бързия растеж на скоростта на достъп до SSD устройства, което доведе до появата през 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 допълнителни карти се прикрепват с винт, PCIe поддържа „гореща смяна“. Късите пинове PRSNT (англ. present — присъства) осигуряват, че картата е напълно инсталирана в слота.
Твердотелните устройства, свързващи се чрез PCIe, са регламентирани с отделен стандарт. Спецификация за интерфейса на контролера на нестабилна памет. и са реализирани в множество форм-фактораме, но за тях ще говорим в следващата част.
Удалечени устройства.
При създаването на големи хранилища данни възникна нуждата от протоколи, които да позволят свързването на устройства, разположени извън сървъра. Първото решение в тази област беше 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 шина — .
Повечето протоколи за създаване на 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 GB/s, което значително надвишава скоростта на PCIe. Така се появи твердият диск Intel® Optane™ DC Persistent Memory.
За свързването на диска в DIMM слотове беше изобретен протокол DDR-T, физически и електрически съвместим с DDR4, но изискващ специален контролер, който разпознава разликата между модул памет и диск. Скоростта на достъп до диска е по-ниска от тази на оперативната памет, но по-висока от NVMe.
Протоколът DDR-T е достъпен само с процесори Intel® от поколение Cascade Lake или по-нови.
Заключение
Почти всички интерфейси преминаха дълъг път на развитие от последователен до паралелен метод за предаване на данни. Скоростите на твърдите дискове нарастват стремително, вчера SSD дисковете бяха рядкост, а днес NVMe вече не предизвиква особено учудване.
В нашата лаборатория можете сами да тествате SSD и NVMe дисковете.
Само регистрирани потребители могат да участват в анкетата. , моля.
Ще заменят ли NVMe дисковете класическите SSD в близко бъдеще?
55.5%Да100
44.4%Не80
Гласували 180 потребители. Въздържали се 28 потребители.
Източник: habr.com
