Qu'est-ce que NVMe ?

Norme d'interface permettant d'exploiter à grande vitesse des SSD connectés en PCI Express. Elle traite de nombreuses commandes en parallèle et offre une latence inférieure au SATA, conçu pour les disques durs.

Nom japonais: NVMe

« NVMe » apparaît dans 3 questions d'entraînement réparties sur 2 thèmes, dont SRAM et mémoire flash, Interfaces d'E/S et bus.

Domaine: SRAM et mémoire flash

Pourquoi les SSD avaient besoin d'une nouvelle interface

Les SSD SATA utilisent l'AHCI, une interface hôte conçue pour les disques durs : une seule file de commandes de 32 commandes au maximum, derrière une liaison plafonnant à environ 600 Mo/s. La mémoire flash peut traiter de nombreuses requêtes en parallèle, et cette interface est donc devenue le goulot d'étranglement. NVMe (NVM Express) est un protocole conçu pour la mémoire non volatile reliée directement au PCI Express. Il prend en charge jusqu'à 64K files d'E/S, chacune d'une profondeur allant jusqu'à 64K commandes, utilise un jeu de commandes compact et permet à chaque cœur de CPU de disposer de ses propres files, ce qui réduit la surcharge logicielle et la contention sur les verrous.

Files de soumission et de complétion

Les files NVMe sont des anneaux situés en mémoire hôte. Pour lancer une lecture ou une écriture, le pilote place une commande de 64 octets dans une file de soumission et écrit la nouvelle position de queue dans un registre doorbell du périphérique. Le contrôleur récupère les commandes par DMA, transfère les données directement depuis ou vers la mémoire hôte, et écrit une entrée de 16 octets dans la file de complétion associée, en signalant généralement l'hôte par une interruption MSI-X. L'hôte met ensuite à jour le doorbell de tête de la file de complétion. Hôte et périphérique avancent indépendamment, si bien que de nombreux transferts sont en cours simultanément.

Bande passante et formats

Comme NVMe s'appuie sur PCIe, sa bande passante dépend de la génération de la liaison et du nombre de voies : environ 7 Go/s pour les disques PCIe 4.0 x4 et plus de 10 Go/s en PCIe 5.0 x4. La latence du protocole est de quelques microsecondes, faible devant les temps de lecture de la flash de quelques dizaines de microsecondes. Les disques NVMe existent en cartes M.2 compactes, en disques U.2 de 2,5 pouces et en cartes d'extension. Attention : M.2 n'est qu'un connecteur. Un emplacement M.2 peut transporter du SATA ou du PCIe, et un SSD M.2 n'est donc pas forcément NVMe. NVMe over Fabrics étend le protocole à travers les réseaux.

Commandes de gestion

Outre les lectures et écritures, NVMe définit des commandes d'administration pour créer des files, identifier le contrôleur, gérer les espaces de noms (namespaces) et mettre à jour le firmware. L'opération Deallocate, qui fait partie de la commande Dataset Management, est l'équivalent NVMe du TRIM ATA : elle indique au SSD quels blocs logiques ne contiennent plus de données utiles, afin que le ramasse-miettes (garbage collection) puisse les effacer sans les copier. Cela réduit l'amplification d'écriture, ce qui améliore les performances en écriture soutenue et prolonge l'endurance de la flash.

S'entraîner : questions sur NVMe

Quelle description du mécanisme de DMA utilisant un anneau de descripteurs en mémoire, largement employé par les cartes réseau et les SSD NVMe, est correcte ?

  1. ALe CPU transfère les données en les écrivant octet par octet dans les registres du périphérique
  2. BLe CPU se contente d'écrire l'adresse et la longueur du transfert dans un descripteur et d'en informer le périphérique, qui lit le descripteur et effectue lui-même le transfert
  3. CLes descripteurs se trouvent uniquement dans le périphérique et sont invisibles pour le CPU
Afficher la réponse et l'explication

Réponse : B. Le CPU se contente d'écrire l'adresse et la longueur du transfert dans un descripteur et d'en informer le périphérique, qui lit le descripteur et effectue lui-même le transfert

L'anneau de descripteurs est une table placée en mémoire principale, décrivant « à partir de quelle adresse et combien d'octets transférer », utilisée de façon circulaire. Le CPU écrit le contenu du transfert dans un descripteur libre, puis signale une fois au périphérique, via un registre, « écrit jusqu'ici ». Le périphérique lit le descripteur par DMA, transfère les données et marque comme terminés les descripteurs traités. CPU et périphérique peuvent ainsi mener de nombreux transferts sans s'attendre mutuellement.

Questions fréquentes

Que signifie NVMe ?

NVMe signifie Non-Volatile Memory Express, également écrit NVM Express. C'est une interface hôte et un protocole de commandes permettant d'accéder aux SSD et à d'autres mémoires non volatiles via PCI Express.

Quelle est la différence entre un SSD NVMe et un SSD SATA ?

Un SSD SATA utilise le protocole AHCI avec une seule file de 32 commandes et une liaison limitée à environ 600 Mo/s. Un SSD NVMe se connecte en PCIe avec des milliers de files parallèles, ce qui donne de plusieurs à plus de dix gigaoctets par seconde et une latence logicielle plus faible.

NVMe prend-il en charge le TRIM ?

Oui. NVMe offre la même fonction grâce à l'attribut Deallocate de la commande Dataset Management, que les systèmes d'exploitation émettent lorsque des fichiers sont supprimés.

« NVMe » dans les explications

Questions mentionnant « NVMe » (3)

  1. Quelle description du mécanisme de DMA utilisant un anneau de descripteurs en mémoire, largement employé par les cartes réseau et les SSD NVMe, est correcte ?
  2. Quelle commande permet à l'OS de signaler au SSD les zones des fichiers supprimés, afin de rendre le ramasse-miettes plus efficace ?
  3. Quelle norme d'interface basée sur PCI Express est largement utilisée pour connecter les SSD rapides à l'hôte ?

Comparatifs incluant ce terme

Termes associés

DMA (accès direct à la mémoire) Via Ramasse-miettes (garbage collection) TRIM Amplification d'écriture (write amplification) PCI Express 3D NAND Cellule à piégeage de charge Cellule SRAM 6T Courant tunnel FN (Fowler-Nordheim)

Retour au glossaire