NVMe (Non‑Volatile Memory Express)
NVMe – skrót od Non‑Volatile Memory Express – jest protokołem komunikacyjnym oraz interfejsem programistycznym (API) przeznaczonym do połączenia szybkich pamięci masowych typu pamięć flash oraz innych nieulotnych nośników z komputerem. Został opracowany specjalnie z myślą o wysokiej przepustowości oraz niskich opóźnieniach, które są charakterystyczne dla nowoczesnych dysków SSD podłączanych przez interfejs PCI Express.
Historia
W początkowych latach rozwoju pamięci flash, dyski SSD były podłączane do portu SATA, który został zaprojektowany pierwotnie z myślą o dyskach magnetycznych HDD. Ograniczenia przepustowości SATA (prędkość maksymalna 6 Gb/s) szybko okazały się niewystarczające dla rosnących możliwości pamięci flash. W odpowiedzi na te potrzeby, w 2011 roku grupa pracowników Intela oraz innych firm opracowała specyfikację NVMe 1.0, a pierwsze dyski NVMe pojawiły się na rynku w 2013 roku.
Architektura
NVMe opiera się na kilku kluczowych elementach:
- Warstwa transportowa – wykorzystuje protokół PCIe (generacje 2, 3, 4, 5 i 6), co pozwala na wielokrotne równoległe ścieżki (lane) i uzyskanie teoretycznej przepustowości rzędu kilku terabajtów na sekundę.
- Kolejki komend – NVMe obsługuje do 64 kolejek, przy czym każda kolejka może pomieścić do 64 kierunków (komend). Dzięki temu możliwe jest jednoczesne przetwarzanie tysięcy operacji I/O, co znacznie redukuje opóźnienia w porównaniu do tradycyjnych protokołów (np. AHCI).
- Skalowalność – projekt przewiduje łatwe zwiększanie liczby kolejki i pojemności pamięci przy minimalnym wpływie na wydajność.
Wersje i rozszerzenia
Z czasem specyfikacja NVMe była rozwijana:
- NVMe 1.0 – podstawowa wersja, wprowadzona w 2011 r.
- NVMe 1.2 – wsparcie dla funkcji Namespace Management oraz zwiększenie liczby obsługiwanych funkcji bezpieczeństwa.
- NVMe 1.3 – wprowadzenie Telemetry i dodatkowych trybów zasilania.
- NVMe 2.0 (2021) – rozszerzenie o protokół NVMe over Fabrics (NVMe‑of), umożliwiający dostęp do pamięci flash przez sieci (RDMA, TCP).
Formy fizyczne
Dyski NVMe występują w kilku standardowych formach, co ułatwia ich integrację w różnych urządzeniach:
- M.2 – mały moduł, często używany w laptopach i ultrabookach.
- U.2 (dawniej SFF‑8639) – 2,5‑calowy dysk zasilany i podłączany przez złącze PCIe, popularny w serwerach.
- E3 – karta rozszerzeń montowana w gniazdach PCIe o pełnym rozmiarze.
Zalety NVMe w porównaniu z SATA/AHCI
| Cecha | NVMe | SATA/AHCI |
|---|---|---|
| Przepustowość (teoretyczna) | Do 64 Gb/s (PCIe Gen 4 × 4) | Do 6 Gb/s (SATA III) |
| Liczba kolejek | Do 64 k (64 kierunków każda) | 1 kolejka, 32 kierunki |
| Opóźnienie | Około 10 µs | Około 100 µs |
| Skalowalność | Wysoka – łatwe dodawanie lane‑ów PCIe | Ograniczona – zależna od SATA |
Wsparcie systemowe
Współczesne systemy operacyjne natywnie obsługują NVMe:
- Linux – sterownik
nvmew jądrze od wersji 3.3. - Windows – od Windows 8/Server 2012, a od Windows 10 1709 obsługa pełnej funkcjonalności NVMe.
- macOS – od wersji 10.9 (Mavericks) z wbudowanym wsparciem NVMe.
Zastosowania
NVMe znajduje zastosowanie w wielu dziedzinach, m.in.:
- Komputery osobiste i laptopy – przyspieszone ładowanie systemu, krótszy czas uruchamiania aplikacji.
- Serwery i centra danych – wysokowydajne macierze dyskowe, przyspieszenie baz danych (OLTP), wirtualizacja.
- Systemy wbudowane i IoT – małe, energooszczędne moduły M.2 z niskim opóźnieniem.
- Rozwiązania pamięciowe w chmurze – dzięki NVMe‑of możliwość skalowania pamięci masowej na odległość.
Przyszłość NVMe
Rozwój technologii PCIe (kolejne generacje 5 i 6) oraz dalsze udoskonalenia specyfikacji NVMe (np. NVMe 2.0 z rozszerzonymi funkcjami bezpieczeństwa oraz Namespace Management) wskazują, że protokół pozostanie kluczowym elementem architektury przechowywania danych w najbliższych latach. Dodatkowo rosnąca popularność pamięci 3D XPoint i innych technologii nieulotnych wymaga dalszych optymalizacji warstwy protokołu, co w praktyce może doprowadzić do wprowadzenia kolejnych wersji, takich jak NVMe 3.0.