L’histoire des périphériques de stockage est littéralement une course entre le support et la puissance de calcul, car le goulot d’étranglement de la préservation de milliards de uns et de zéros s’oppose au calcul du nirvana. Le joueur le plus récent est le Non-Volatile Memory Express (NVMe), une sorte d’hybride de ce qui a précédé.
Les premières générations d’ordinateurs domestiques utilisaient des disquettes et un stockage compact sur cassette, mais progressivement, un stockage plus grand et plus rapide est devenu important à mesure que les ordinateurs personnels se développaient en capacités. Dans les années 1990, le stockage sur disque dur était devenu monnaie courante, permettant de stocker de nombreux mégaoctets et finalement des gigaoctets de données. Cela augmenterait le besoin d’une liaison plus rapide entre le stockage et le reste du système, qui jusque-là avait largement utilisé l’interface ATA en mode d’entrée-sortie programmée (PIO).
Cela a conduit à l’utilisation de transferts basés sur DMA (interface UDMA, également appelée Ultra ATA et Parallel ATA), ainsi que des interfaces SCSI basées sur DMA du côté Apple et principalement du côté serveur de la clôture informatique. Finalement, Parallel ATA est devenu Serial ATA (SATA) et Parallel SCSI est devenu Serial Attached SCSI (SAS), le SATA étant principalement utilisé dans les ordinateurs portables et les systèmes de bureau jusqu’à l’arrivée de NVMe avec le stockage SSD.
Toutes ces interfaces ont été conçues pour suivre les périphériques de stockage connectés, mais NVMe est un peu étrange compte tenu de la façon dont il est intégré dans le système. NVMe est également différent du fait de ne pas être lié à une seule interface ou à un seul connecteur, ce qui peut prêter à confusion. Qui peut séparer M.2 et U.2, sans parler de quel protocole l’interface parle, que ce soit SATA ou NVMe?
Examinons en profondeur le monde merveilleux et farfelu de NVMe, d’accord?
Apparences trompeuses
Demandez à n’importe qui à quoi ressemble un emplacement NVMe sur une carte mère d’ordinateur et ils seront enclins à vous montrer une image d’un emplacement M.2, car c’est devenu la norme la plus utilisée dans l’électronique grand public pour les périphériques de stockage à semi-conducteurs. Pourtant, même un slot M.2 avec un disque SSD (Solid State Drive) ne peut même pas être un slot NVMe ou un SSD, car SATA utilise également cette interface.
Souvent, la sérigraphie de la carte mère à côté du slot M.2 mentionnera quelle technologie un slot M.2 peut accepter. Vérifier le manuel de la carte en question est également une bonne idée. La raison de cette confusion est qu’à l’origine, il existait une norme Mini-SATA (mSATA) pour les SSD qui utilisait le facteur de forme PCIe Mini Card, qui a évolué vers le facteur de forme M.2 ainsi que l’interface U.2. Cette dernière s’apparente davantage aux interfaces SATA et SAS, combinant les canaux SATA et PCIe en une seule interface pour connecter des SSD.
Pendant ce temps, la norme M.2 (après un bref détour avec la norme de courte durée SATA Express) a été étendue pour prendre en charge non seulement SATA, mais aussi AHCI et NVMe. C’est pourquoi les slots M.2 sont souvent (à tort) appelés «slots NVMe» alors qu’en réalité NVMe est un protocole basé sur PCIe et ne définit aucun facteur de forme physique ou type de connecteur.
Pendant ce temps, le facteur de forme M.2 est en lui-même plutôt polyvalent, ou alambiqué selon la façon dont vous le regardez. En termes de taille physique, il peut avoir une largeur de 12, 16, 22 ou 30 millimètres, tout en supportant des longueurs comprises entre 16 et 110 mm. Sur son interface de connecteur de bord, un motif d’encoches est utilisé pour indiquer sa fonctionnalité, qui correspond à l’emplacement M.2 lui-même. Les plus courants sont les encoches d’ID de clé ‘B’ et ‘M’ dans la liste d’ID de clé, qui contient par exemple:
- UNE: 2x PCIe x1, USB 2.0, I2C et DP x4.
- B: PCIe x2, SATA, USB 2.0 / 3.0, audio, etc.
- E: 2x PCIe x1, USB 2.0, I2C, etc.
- M: PCIe x4, SATA et SMBus.
Cela signifie que les dimensions physiques d’une carte d’extension M.2 peuvent être l’une des 32 permutations différentes, avant que les 12 permutations d’encoche d’identification de clé possibles ne soient incluses. Heureusement, dans une utilisation courante, l’industrie semble avoir normalisé les cartes de stockage sur des connecteurs de 22 mm de large avec un nombre assez limité de longueurs, ce qui entraîne des identifiants SSD NVMe tels que « 2242 », qui feraient 22 mm de large et 42 mm de long. carte. Pendant ce temps, les cartes SSD peuvent être codées pour B, M ou les deux.
Il est important de noter ici que les emplacements M.2 sont désormais couramment utilisés comme emplacements d’extension PCIe pour les situations où l’espace est important. C’est pourquoi les cartes WiFi sont également couramment trouvées dans le facteur de forme M.2.
Définition de NVMe
Cela nous amène alors à la définition essentielle de ce qu’est NVMe: une interface standard pour les périphériques de stockage qui sont directement connectés à PCIe. Ce qui rend NVMe si différent de SATA, c’est que ce dernier traduit le protocole PCIe en protocole SATA, qui doit ensuite être interprété par une puce sur le périphérique de stockage qui parle SATA avant que toute commande liée au stockage puisse être exécutée.
Au lieu de cela, NVMe définit l’interface qui peut être utilisée directement par tout système d’exploitation doté d’un pilote NVMe. Les commandes sont envoyées au périphérique de stockage NVMe, qui à son tour exécute ces commandes pour lire ou écrire des données, ou effectuer certaines opérations de maintenance, comme TRIM. Comme on peut supposer en toute sécurité que tout périphérique de stockage qui s’identifie comme un périphérique NVMe est un périphérique de stockage à semi-conducteurs (NAND Flash, 3D XPoint, etc.), cela signifie que le protocole NVMe est conçu autour de l’hypothèse d’une faible latence , périphérique de stockage à taux de rafale élevé.
Récemment, une fonctionnalité de NVMe appelée Host Memory Buffer (HMB) est devenue populaire comme moyen d’éviter le besoin d’un tampon DRAM sur un SSD basé sur NAND Flash. Cette fonctionnalité utilise une partie de la RAM système comme tampon, avec une perte de performances relativement faible, la mémoire tampon étant principalement utilisée pour un cache de table de mappage d’adresses.
Alors que les solutions de stockage continuent d’évoluer, de nouvelles technologies de stockage telles que 3D XPoint ont rendu ces fonctionnalités déjà inutiles à long terme, car la vitesse d’accès de 3D XPoint est plus proche de celle d’un tampon DRAM que de celle de NAND Flash. Étant donné que les SSD 3D XPoint n’ont pas de mémoire tampon DRAM, l’utilisation accrue de ces SSD peut entraîner l’optimisation de NVMe pour ces périphériques de stockage.
Piratage de NVMe
À un moment donné, il faut se demander ce que vous pouvez réellement faire avec NVMe, au-delà de l’achat de SSD NVMe et de les placer dans un emplacement à clé M.2 B et / ou M sur une carte mère. Ici, vous devriez probablement vous demander si vous êtes plus intéressé par le piratage du stockage à l’état solide (même sous la forme de DRAM ou de SRAM), ou si le slot M.2 lui-même est plus intrigant.
Là où les emplacements PCIe de taille normale sont assez grands et que les cartes d’extension offrent beaucoup d’espace pour les gros composants maladroits comme les puces BGA massives et les solutions de refroidissement gigantesques, les cartes d’extension M.2 sont conçues pour être petites et compactes, ce qui leur permet de s’intégrer ordinateurs portables. On pourrait, par exemple, combiner un FPGA avec les blocs matériels SerDes et PCIe requis avec un PCB de facteur de forme M.2 pour créer une carte d’extension PCIe compacte à utiliser dans les ordinateurs portables et les applications embarquées.
Certains hacks récents promettent d’ajouter le support NVMe aux modules de calcul Raspberry Pi, de remplacer le SSD d’un Pinebook Pro par une carte WiFi et de lire le module de stockage NVMe Flash d’un iPhone à l’aide d’un adaptateur ZIF pour PCIe.
Ce qui ne veut pas dire qu’il y a quoi que ce soit contre quelqu’un qui essaie de combiner quelque chose d’aussi stupide que de créer un lecteur de stockage NVMe en utilisant, par exemple, la mémoire centrale 🙂
Emballer
En regardant en arrière sur quelques décennies de calcul, il y a toujours eu cette distinction entre la mémoire système et le stockage, la première étant une RAM volatile SRAM ou DRAM rapide. Cette distinction a considérablement diminué ces dernières années. Alors que le stockage basé sur NAND Flash avec NVMe signifie que nous avons un potentiel de latence extrêmement faible et de gigaoctets par seconde de transfert de données (en particulier avec PCIe 4.0 NVMe), ce n’est pas la fin de l’histoire.
La nouveauté semble être l’utilisation de barrettes DIMM dites de «mémoire persistante» dans les emplacements de mémoire système ordinaires. Ceux-ci utilisent le stockage SSD Optane d’Intel, permettant d’augmenter la RAM système jusqu’à 512 Go par module. Naturellement, ces modules ne fonctionnent actuellement que dans les cartes Intel (serveur) qui fonctionnent avec ces modules de mémoire spéciaux. Leur utilisation est dans la mise en mémoire tampon, par exemple des bases de données, où la grande taille rendrait une mémoire tampon en mémoire d’un coût prohibitif ou peu pratique (par exemple plusieurs To de DIMM DDR4).
En ayant ce qui est essentiellement un stockage persistant très rapide directement sur le contrôleur de mémoire du processeur, la latence est réduite au minimum absolu. Même si 3D XPoint (en tant que forme de mémoire à changement de phase) n’est pas encore aussi rapide que la DDR SDRAM, cela peut nous montrer un aperçu de ce qui peut se trouver au-delà de NVMe, avec éventuellement la différence entre « RAM système » et « stockage » complètement effacé ou changé au-delà de la reconnaissance.