encyklopedia.run.place

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

CechaNVMeSATA/AHCI
Przepustowość (teoretyczna)Do 64 Gb/s (PCIe Gen 4 × 4)Do 6 Gb/s (SATA III)
Liczba kolejekDo 64 k (64 kierunków każda)1 kolejka, 32 kierunki
OpóźnienieOkoło 10 µsOkoło 100 µs
SkalowalnośćWysoka – łatwe dodawanie lane‑ów PCIeOgraniczona – zależna od SATA

Wsparcie systemowe

Współczesne systemy operacyjne natywnie obsługują NVMe:

  • Linux – sterownik nvme w 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.

Podstawowe pojęcia powiązane