Definition

NVMe

Cette définition fait partie de notre Guide Essentiel : Accélérateurs : les GPUs, DPUs et autres architectures serveur en 2023

NVMe (Non-Volatile Memory express) est une spécification qui permet à un périphérique de stockage Flash de faire un usage optimal des capacités du bus PCI-express (Peripheral Component Interconnect Express ou PCIe) d’un ordinateur ou d’un serveur.

NVMe ne vise pas explicitement le remplacement des actuelles interfaces SATA ou SAS qui resteront durablement présentes dans les ordinateurs afin de connecter des disques durs traditionnels. Son objectif est plutôt de fournir un environnement idéal pour la connexion de SSD Flash au bus PCI-express afin de tirer parti de ses caractéristiques uniques de latence et de bande passante.

La plupart des SSD produits jusqu’en 2014, s’appuient sur les bus historiques de stockage comme SATA ou SAS pour s’interfacer avec les ordinateurs. Or ces bus et le protocole de commande SCSI ont été optimisés pour des disques durs.

Comparaison de NVMe vs SATA et SAS

Le problème est que les disques durs sont des périphériques mécaniques. Chaque plateau interne est découpé en pistes et secteurs sur lesquels sont stockées les données et la tête de lecture ne peut lire qu’un secteur à la fois. Tous les bus et protocoles de commandes ont été optimisés en conséquence. Dans un SSD, il n’y a aucun composant mécanique et rien qui tourne. Les SSD sont conçus par assemblage de modules de mémoire Flash et il est tout à fait possible d’accéder à de multiples blocs de mémoire simultanément ou d’effectuer au même moment des opérations de lecture et d’écriture sur des blocs différents.

Pourtant, jusqu’alors, afin de s’insérer de façon transparente dans nos ordinateurs, les SSD ont donc choisi en quelque sorte de se faire passer pour des disques durs, et il a été impossible d’en tirer la quintessence via les bus standards comme SATA ou SAS. Les gains de performances face à un disque dur sont certes impressionnants, mais ils le seraient encore plus si les SSD étaient reliés directement à un bus rapide et piloté via un jeu de commande optimisé, à même de tirer parti de leurs spécificités.

C’est tout le but de NVMe. Les principaux bénéfices du standard sont une forte réduction de la latence, un accroissement du niveau d’IOPS (via notamment une augmentation des files d’attente et un plus grand parallélisme) et une réduction de la consommation par rapport aux SSD SAS ou SATA (une pile I/O simplifiée requérant moins d’opérations de la part du contrôleur du disque permet d’en réduire la consommation électrique). NVMe supporte également le multipathing (plusieurs contrôleurs PCI-e d’une même machine peuvent fournir des chemins vers un périphérique unique pour plus de résilience) et une gestion avancée des espaces de noms (pour permettre par exemple le partage d’un périphérique SSD NVMe par plusieurs serveurs via un mécanismes de virtualisation tels que Multi-Root-IOV).

La spécification NVMe est à l’origine le fruit des travaux du groupe de travail Non-Volatile Memory Host Controller Interface (NVMHCI), qui inclut aujourd’hui près d’une centaine de sociétés. La version 1.0 du standard est sortie en mars 2011 et une version révisée, la 1.1, a fait son apparition en octobre 2012. Des pilotes de référence sont notamment disponibles pour Windows, Linux et FreeBSD.

Cette définition a été mise à jour en septembre 2014

En savoir plus NVMe

Pour approfondir sur Disques durs, SSD et Unités de stockage