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

Малък компютърен системен интерфейс (SCSI) се появи през далечната 1978 година и първоначално беше разработен с цел да свързва устройства с различен профил в една единствена система. Спецификацията SCSI-1 предвиждаше свързване на до 8 устройства (включително контролера), като:
- скенери;
- лентови устройства (стримери);
- оптични устройства;
- дискови устройства и други устройства.
Първоначално SCSI носеше името Shugart Associates System Interface (SASI), но стандартизиращият комитет не одобри името в чест на компанията и след един ден на мозъчна атака се появи името Малък компютърен системен интерфейс (SCSI). „Бащата“ на SCSI, Лари Бучер (Larry Boucher), имаше предвид, че абревиатурата ще се произнася като „секси“, но прочете „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 MB/s.
Стандартът поставя строги изисквания към шлейфовете 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 MB/s) беше незначително по-бърз от ATA-6 (UltraDMA/130, 130 MB/s), преминаването към последователен метод на обмен на данни беше «подготвяне на терена» за увеличение на скоростите.
Шестнадесет сигнални линии за предаване на данни в 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 Гбит/с пропускна способност.
Особено внимание на SSD устройствата беше отделено в редакцията SATA 3.1. Появи се конектор Mini-SATA (mSATA), предназначен за свързване на SSD устройства в лаптопи. В сравнение със Slimline и uSATA, новият конектор беше подобен на PCIe Mini, въпреки че не беше електрически съвместим с PCIe. Освен новия конектор, SATA 3.1 можеше да се похвали и с възможността да поставя команди TRIM в опашка с команди за четене и запис.
Командата TRIM уведомява SSD устройството за блоковете данни, които нямат полезна информация. Преди SATA 3.1 изпълнението на тази команда водеше до нулиране на кешовете и спиране на входно-изходните операции с последващо изпълнение на командата TRIM. Този подход влошаваше производителността на диска при операции по изтриване.
Спецификацията SATA не успяваше да навакса бързия ръст на скоростта на достъп до SSD устройства, което доведе до създаването на компромис, наречен 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 линии.

„Апетитите“ на SSD-ите растат много бързо. И SATA, и SAS не успяват да увеличат своята пропускателна способност, за да „изоставят“ SSD, което доведе до появата на SSD дискове с PCIe свързаност.
Въпреки че PCIe Add-In картите се закрепват с винт, PCIe поддържа „гореща смяна“. Кратките пинове PRSNT (присъствие) удостоверяват, че картата е напълно поставена в слота.
Твърдотелните дискове, свързващи се чрез PCIe, се регулират от отделен стандарт. Спецификация на интерфейса на контролера за памет без волатилност. и се реализират в много форм-фактори, но за тях ще говорим в следващата част.
Отдалечени хранилища.
Създаването на големи хранилища за данни наложи нужда от протоколи, позволяващи свързването на дискове, разположени извън сървъра. Първото решение в тази област беше Интернет 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 престанаха да отговарят на бързо растящите изисквания на SSD. Появиха се две решения:
- извеждане на 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 шина. Така се появи SSD Intel® Optane™ DC Persistent Memory.
За свързването на устройството в DIMM слотове бе изобретен протокол DDR-T, физически и електрически съвместим с DDR4, но изискващ специален контролер, който вижда разликата между модула памет и устройството. Скоростта на достъп до устройството е по-ниска от тази на оперативната памет, но по-висока от наглед NVMe.
Протоколът DDR-T е наличен само с процесори Intel® от поколение Cascade Lake или по-нови.
Заключение
Почти всички интерфейси преминаха дълъг път на развитие от последователни до паралелни методи за предаване на данни. Скоростите на SSD устройвата бързо нарастват, вчера SSD устройствата бяха рядкост, а днес NVMe вече не предизвиква особено удивление.
В нашата лаборатория можете сами да тествате SSD и NVMe дискове.
Само регистрирани потребители могат да участват в анкетата. , моля.
Ще изместят ли NVMe дисковете класическите SSD в близко бъдеще?
55.5%Да100
44.4%Не80
Гласували 180 потребители. Придържали се 28 потребители.
Източник: habr.com
