NVM Express
NVM Express (NVMe) lub Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) – otwarta specyfikacja logicznego interfejsu urządzenia, która umożliwia dostęp do pamięci trwałej poprzez magistralę PCI Express (PCIe). NVM (Non-Volatile Memory) oznacza pamięć nieulotną, która zwykle jest pamięcią typu flash w postaci dysków półprzewodnikowych (SSD). NVM Express, jako logiczny interfejs urządzenia, został zaprojektowany od podstaw tak, aby wykorzystywać niskie opóźnienia i wewnętrzną równoległą budowę pamięci masowych opartych na pamięciach flash[1], co odzwierciedla wielowątkowość współczesnych procesorów, systemów oraz aplikacji.
Dzięki swojej konstrukcji protokół NVM Express pozwala sprzętowi i oprogramowaniu w pełni wykorzystać możliwości nowoczesnych dysków SSD. W rezultacie protokół NVM Express zmniejsza obciążenie układu wejścia-wyjścia (I/O), wprowadza poprawę wydajności w porównaniu do starszych interfejsów urządzeń. Poprzednie protokoły zostały opracowane do współpracy z wolniejszymi dyskami twardymi (HDD), gdzie występuje bardzo duże opóźnienie między żądaniem a odebraniem danych. Prędkości przesyłu danych z dysku HDD są znacznie mniejsze niż z pamięci RAM, gdzie rotacja dysku i czas wyszukiwania wymuszają optymalizację interfejsu urządzeń.
Urządzenia z NVM Express można spotkać w formie kart rozszerzeń PCI Express[2], 2,5-calowych napędów, które zapewniają czteropasmowy interfejs PCI Express poprzez złącze U.2 (wcześniej znane jako SFF-8639)[3]. Pamięci masowe SATA Express oraz M.2, montowane w postaci kart rozszerzeń, także obsługują NVM Express jako logiczny interfejs urządzenia[4][5].
Tło
[edytuj | edytuj kod]Niegdyś większość dysków SSD komunikowała się z resztą systemu komputerowego poprzez takie magistrale jak SATA, SAS lub Fibre Channel. Od momentu pojawienia się dysków SSD na rynku, interfejs SATA stał się powszechnym sposobem podłączania dysków SSD w komputerach osobistych, jednakże złącze to było przystosowane do pracy z dyskami twardymi (HDD) i z czasem stało się niewystarczające dla dysków SSD, których szybkość znacząco wzrosła[6]. W ciągu 5 lat od wejścia na rynek wiele dysków SSD miało przepustowość ograniczoną przez magistralę SATA.
Przed pojawieniem się NVMe wysokiej klasy dyski SSD komunikowały się przy użyciu magistrali PCI Express używając niestandardowych specyfikacji interfejsów. Przy ustandaryzowanym interfejsie dysków SSD systemy operacyjne potrzebują tylko jednego sterownika do pracy ze wszystkimi dyskami SSD o zgodnych specyfikacjach. Oznacza to również, że producenci dysków SSD nie muszą ponosić dodatkowych kosztów związanych z projektowaniem odrębnych sterowników interfejsu. Zasada działania przypomina urządzenia pamięci masowej USB, które są zbudowane zgodnie z ustaloną specyfikacją i działają na wszystkich komputerach bez konieczności instalowania dodatkowych sterowników[7].
Historia
[edytuj | edytuj kod]Pierwsze informacje na temat nowego standardu dostępu do nieulotnej pamięci pojawiły się na Intel Developer Forum 2007, kiedy NVMHCI został przedstawiony jako projekt protokołu układów pamięci (flash), nad którym pracowała grupa Open NAND Flash Interface Working Group (ONFI). W tym też roku utworzono grupę NVMHCI 1.0 kierowaną przez Intel. Specyfikacja została ukończona w kwietniu 2008 roku i opublikowana na stronie internetowej Intela[8][9][10].
Prace techniczne nad NVMe rozpoczęły się w drugiej połowie 2009 roku[11]. Specyfikacje NVMe zostały opracowane przez NVM Express Workgroup, która składała się z ponad 90 firm, a przewodniczącym grupy roboczej była Amber Huffman z firmy Intel. Wersja 1.0 specyfikacji została wydana 1 marca 2011 roku[12], natomiast wersja 1.1 została wydana 11 października 2012 roku[13]. Główne funkcje dodane w wersji 1.1 to wielościeżkowe operacje I/O. Oczekuje się, że przyszłe poprawki znacznie poprawią zarządzanie obszarem nazw. Ze względu na oferowany zakres funkcji NVME 1.1 początkowo nosiło nazwę „Enterprise NVMHCI”. Aktualizacja podstawowej specyfikacji NVMe, zwanej 1,0e, została wydana w styczniu 2013 roku[14]. W czerwcu 2011 roku utworzono grupę kierowaną przez siedem przedsiębiorstw.
Pierwszy komercyjnie dostępny chipset NVMe został wydany przez Integrated Device Technology (89HF16P04AG3 i 89HF32P08AG3) w sierpniu 2012 roku[15][16]. Pierwszy dysk NVMe, Samsung XS1715, został zapowiedziany na lipiec 2013 roku. Według firmy Samsung dysk ten miał mieć prędkość odczytu 3GB/s, sześć razy większą niż w przypadku poprzedniej generacji dysków[17]. Rodzina kontrolerów LSI SandForce SF3700 zapowiedziana w listopadzie 2013 roku, miała także obsługiwać NVMe[18]. Przykładowe próbki inżynierskie kontrolera PCI Express 2.0 × 4 miały prędkość odczytu i zapisu równą 1,800 MB/sec oraz 150K/80K losowych operacji wejścia-wyjścia na sekundę (ang. input/output operations per second, IOPS)[19]. Dysk Kingston HyperX wykorzystujący ten kontroler został zaprezentowany podczas Consumer Electronics Show 2014 i posiadał podobną wydajność[20][21]. W czerwcu 2014 roku Intel zapowiedział swoje pierwsze produkty NVM Express Intel SSD data center family, która obejmuje serię DC P3700, DC P3600 i DC P3500.[22] Od listopada 2014 roku dyski NVMe są dostępne na rynku.
W marcu 2014 roku grupa została zarejestrowana jako NVM Express, Inc., która od listopada 2014 roku składa się z ponad 65 firm z całej branży. Specyfikacje NVMe są własnością NVM Express, Inc i zarządza nimi właśnie ta grupa, która promuje NVMe jako standard w całej branży. NVM Express, Inc. jest kierowane przez trzynastoosobową radę wybranych dyrektorów grupy, która obejmuje Cisco, Dell, EMC, HGST, Intel, Micron, Microsoft, NetApp, Oracle, PMC, Samsung, SanDisk i Seagate[23].
We wrześniu 2016 roku Stowarzyszenie Compact Flash zapowiedziało wydanie nowej specyfikacji kart pamięci, CFexpress, która ma wykorzystywać NVMe.
Porównanie z AHCI
[edytuj | edytuj kod]Advanced Host Controller Interface (AHCI) ma dużą zaletę w zakresie kompatybilności oprogramowania, ale jego wadą jest brak optymalnej wydajności podczas używania dysku SSD podłączonego do magistrali PCI Express. Jako interfejs logiczny AHCI został opracowany, gdy celem Host Bus Adapter (HBA) w systemie było połączenie podsystemu CPU / pamięci z wolniejszym podsystemem pamięci masowej opartym na obrotowym nośniku magnetycznym. W rezultacie AHCI wprowadza pewne nieefektywności, gdy korzysta się z dysków SSD, które działają w sposób podobny do DRAM niż jak nośniki wirujące[5].
Interfejs urządzeń NVMe został zaprojektowany od podstaw, wykorzystując niewielkie opóźnienia i równoległość obliczeń dysków SSD PCI Express oraz uzupełniając wielowątkowość współczesnych procesorów, platform i aplikacji. Na wysokim poziomie podstawowe zalety NVMe w stosunku do AHCI odnoszą się do jego zdolności do wykorzystania równoległości w sprzęcie i oprogramowaniu, co objawia się różnicami w głębokości kolejki poleceń, wydajnością przetwarzania przerwań, liczbą nieobsługiwanych rejestrów itp. powodując różnorodne ulepszenia w wydajności[24].
Poniższa tabela zawiera zestawienie różnic wysokiego poziomu między interfejsami urządzeń logicznych NVMe i AHCI.
AHCI | NVMe | |
---|---|---|
Maksymalna głębokość kolejki | 1 kolejka poleceń;
32 polecenia na kolejkę |
65535 kolejek;
65536 poleceń na kolejkę |
Dostęp do nieulotnego
rejestru (2000 cykli) |
sześć na polecenie niedwoiste;
Dziewięć na polecenie w kolejce |
dwa na polecenie |
MSI-X i
przerwania kierowane |
Pojedyncze przerwanie;
Brak sterowania |
2048 przerwań
MSI-X |
Równoległość i wiele wątków | Wymaga blokady synchronizacji
do wydania polecenia |
Bez blokowania |
Wydajność dla poleceń
o rozmiarze 4KB |
parametry polecenia wymagają dwóch
serializowanych pobrań DRAM hosta |
Pobiera parametry polecenia w
jednym 64 bajtowym pobieraniu |
Przypisy
[edytuj | edytuj kod]- ↑ Home, „NVM Express” [dostęp 2018-01-22] (ang.).
- ↑ Intel SSD DC P3700 PCIe Hardware Tour, „Tom’s Hardware”, 13 sierpnia 2014 [dostęp 2018-01-22] (ang.).
- ↑ SFFWG Renames PCIe SSD SFF-8639 Connector To U.2, „Tom’s Hardware”, 5 czerwca 2015 [dostęp 2018-01-22] (ang.).
- ↑ Paul Wassenberg , SATA Express PCIe Client Storage [online] .
- ↑ a b c AHCI and NVMe as Interfaces for SATA Express™ Devices – Overview [online] .
- ↑ A Comparison of NVMe and AHCI [online] .
- ↑ NVM Express Explained [online] .
- ↑ Extending the NVMHCI Standard to Enterprise [online] .
- ↑ Flash new standard tips up [online] [dostęp 2018-01-23] [zarchiwizowane z adresu 2018-01-23] .
- ↑ NVMHCI: The Optimized Interface for Caches and SSDs [online] .
- ↑ What’s New in NVMe 1.1 and Future Directions [online] .
- ↑ http://www.nvmexpress.org/wp-content/uploads/2013/04/NVMe_Press_Release_New-Promoter-Group_20110601.pdf
- ↑ Non-Volatile Memory Host Controller Interface [online], org/wp-content/uploads/2013/05/NVM_Express_1_1.pdf [dostęp 2024-04-24] .
- ↑ Non-Volatile Memory Host Controller Interface [online], org/wp-content/uploads/2013/04/NVM_10e_specification.pdf [dostęp 2024-04-24] .
- ↑ IDT releases two NVMe PCI-Express SSD controllers | TheINQUIRER [online], theinquirer.net [dostęp 2018-01-23] [zarchiwizowane z adresu 2018-01-23] (ang.).
- ↑ IDT Shows Off The First NVMe PCIe SSD Processor and Reference Design – FMS 2012 Update | The SSD Review [online], www.thessdreview.com [dostęp 2018-01-23] (ang.).
- ↑ Samsung Announces Industry’s First 2.5-Inch NVMe SSD | StorageReview.com – Storage Reviews [online], www.storagereview.com, 18 lipca 2013 [dostęp 2018-01-23] [zarchiwizowane z adresu 2014-01-10] (ang.).
- ↑ LSI SF3700 SandForce Flash Controller Line Unveiled | StorageReview.com – Storage Reviews [online], www.storagereview.com, 18 listopada 2013 [dostęp 2018-01-23] [zarchiwizowane z adresu 2014-01-11] (ang.).
- ↑ HotHardware, LSI Introduces Blazing Fast SF3700 Series SSD Controller, Supports Both PCIe and SATA 6Gbps | HotHardware, „HotHardware” [dostęp 2018-01-23] [zarchiwizowane z adresu 2018-01-23] (ang.).
- ↑ Kingston Unveils First PCIe SSD: 1800 MB/s Read Speeds, „Tom’s Hardware”, 7 stycznia 2014 [dostęp 2018-01-23] (ang.).
- ↑ HotHardware, Kingston HyperX Predator PCI Express SSD Unveiled With LSI SandForce SF3700 PCIe Flash Controller | HotHardware, „HotHardware” [dostęp 2018-01-23] [zarchiwizowane z adresu 2018-01-23] (ang.).
- ↑ Intel® SSD DC Family for PCIe* [online], Intel [dostęp 2018-01-23] .
- ↑ NVM Express Organization History, „NVM Express” [dostęp 2018-01-23] [zarchiwizowane z adresu 2018-01-23] (ang.).
- ↑ Advacements in Storage and File System in Windows 8.1 [online] [zarchiwizowane z adresu 2014-01-10] .
Linki zewnętrzne
[edytuj | edytuj kod]- Oficjalna witryna internetowa
- Multipathing PCI Express Storage. events.linuxfoundation.org. [zarchiwizowane z tego adresu (2016-11-18)]., Linux Foundation, March 12, 2015, by Keith Busch