artykuły

SATA Express – nowy standard złącza dla nośników SSD

SATA Express tymczasowo, koniec SATA, nadchodzi PCI-E dla SSD

35
28 kwietnia 2014, 09:15 Mateusz Brzostek

NVM-E – duch dysków mechanicznych już nie straszy

Standardy SATA Express i M.2 opisują tylko konstrukcję złącza i wtyczki; można wykorzystać łącza SATA albo PCI Express. Strona logiczna tego systemu też jest niezależna od fizycznej budowy połączenia. Można zatem wykorzystać stary dobry protokół AHCI albo zaprojektowany specjalnie dla nośników przyszłości nowy protokół NVM.

Chwileczkę, proto... co?

W tym miejscu musimy pochylić się na chwilę nad nazewnictwem. Nazwy SATA zwykle używamy na określenie wszystkiego, co się wiąże z tym standardem, począwszy od fizycznego połączenia poprzez standard sygnałów elektrycznych i standard komunikacji między kontrolerami na obu końcach połączenia aż do zestawu poleceń wymaganych i rozumianych przez urządzenia na obu końcach. To dlatego, że każdy element układanki jest specyficzny, używany tylko w połączeniach SATA. Ale SATA nie określa, w jaki sposób system operacyjny i oprogramowanie mają się komunikować z nośnikiem danych.

Kto kiedykolwiek grzebał w programie konfiguracyjnym BIOS-u/UEFI jakiejś nowoczesnej płyty głównej, na pewno zna trzy opcje konfiguracji kontrolera dysków: IDE, AHCI, RAID. Te opcje nie zmieniają niczego w fizycznym połączeniu ani w komunikacji między nośnikiem a jego kontrolerem: tą częścią połączenia rządzi standard SATA. Wspomniane opcje zmieniają sposób, w jaki kontroler przedstawia się systemowi operacyjnemu i programom. Tryb IDE określa emulację starego protokołu IDE (PATA): w tym trybie system operacyjny nie musi nic wiedzieć o rodzaju nośnika albo połączenia, wystarczy, że ma sterownik IDE i umie się komunikować w sposób określony przez ten protokół. Tryb AHCI pozwala wykorzystać nowszy, bardziej funkcjonalny protokół, w którym przewidziano polecenia dla takich funkcji nośników i łącza SATA, jak wbudowana funkcja kolejkowania poleceń, hot swapping i tryb oszczędzania energii przez łącze. Oczywiście, AHCI wymaga odpowiedniego sterownika, wbudowanego w każdy nowoczesny OS (ale nie zawsze ładowanego domyślnie, o czym wie każdy, kto próbował przełączyć tryb z IDE na AHCI po zainstalowaniu systemu Windows 7). Tryb RAID to na ogół AHCI rozbudowane o jakieś funkcje specyficzne dla danego kontrolera nośników – konieczny, żeby można było wykorzystać zaawansowaną funkcjonalność, ale wymagający sterownika (który powinien zapewnić producent kontrolera).

Wszystkie wymienione protokoły komunikacji z nośnikiem są już dość stare: powstały w czasach jednowątkowych procesorów, obracających się talerzy i magnetycznych głowic. Protokół AHCI był wtedy wystarczająco dobry: kontroler dysków był traktowany jako swego rodzaju rozgałęziacz, węzeł systemu dyskowego. Niewielka kolejka skomplikowanych poleceń i obsługa nielicznych urządzeń wystarczały, bo procesor mógł wydawać kolejne polecenia znacznie szybciej, niż dyski je wykonywały. Ponadto dyski mechaniczne z natury działają szeregowo: mogą odczytywać dane po kolei z jednego miejsca na raz, potem muszą przesunąć głowicę w inne miejsce, żeby wykonać następną operację.

W erze pamięci półprzewodnikowej i wielowątkowych procesorów protokoły IDE i AHCI pokazują swoje niedostatki. Narzut skomplikowanego protokołu i bagaż kompatybilności wstecznej przejadają zbyt dużo czasu w porównaniu z czasem oczekiwania na dane z szybkiej pamięci flash. Do tego pamięć półprzewodnikowa działa bardziej równolegle; nośnik SSD może w pewnym zakresie wykonywać wiele operacji jednocześnie.

porównanie wydajności AHCI do NVMe
IOPS opóźnienie

NVMe jest zaprojektowanym od zera, prostym i skalowalnym protokołem dla nowoczesnych nośników danych. Polecenia są znacznie prostsze i wymagają mniejszej liczby transferów do pamięci operacyjnej. Aż 64 tys. kolejek, każda po 64 tys. poleceń, umożliwiają zarządzenie i wykonanie większej liczby operacji na sekundę (IOPS) przy mniejszym użyciu procesora. Sprzęt może przechodzić w stan niskoenergetyczny samoczynnie, bez interwencji oprogramowania. NVMe z założenia pozwala uruchomić wiele kanałów komunikacji, co umożliwia podłączenie wielu nośników bez pośrednictwa „węzła” (dziś) albo wielokanałową komunikację z bardzo szybkim nośnikiem (w przyszłości). Według pomiarów przeprowadzonych na nośniku PCI Express 4× z pamięcią DDR (a zatem nieograniczonym wydajnością pamięci NAND) przejście z AHCI na NVMe zmniejszyło opóźnienie w dostępie o ponad 50%, a liczbę wątków potrzebną do osiągnięcia 1 mln operacji na sekundę – z siedmiu do dwóch.

NVMe jest zatem znacznie lepszym sposobem na komunikację z nośnikami półprzewodnikowymi, a przy tym da się łatwo skalować na potrzeby superszybkich SSD przyszłości. Jedyną wadą jest ograniczona kompatybilność wsteczna, bo po prostu nie ma sterownika NVMe do starych systemów operacyjnych. Odpowiedni sterownik jest już dostępny i dołączony do większości nowoczesnych OS-ów: Windows (7 i nowszych, ale „w pudełku” jest dołączony tylko do 8.1 i Server 2012 R2), Linux (o kernelu 3.3 i nowszych), FreeBSD (w wersji 9.2 i nowszych), QEMU (w wersji 1.6 i nowszych), VMware ESX i ESXi. Brakuje tylko Solaris, ale spodziewany w nieokreślonej przyszłości Solaris 12 ma to zmienić.

W świecie komputerów domowych sterownik NVMe nie powinien być problemem – będzie nim raczej dostępność urządzeń NVMe. O ile wiemy, żadnego jeszcze nie ma na rynku. Nawet testowany niedawno przez nas Plextor M6e korzysta z interfejsu AHCI, co ma swoje uzasadnienie: w ten sposób jest łatwy w instalacji i nie wymaga oddzielnego sterownika, nawet jeśli użytkownik instaluje system starszy niż Windows 8.1.

3