Pocket

Le stockage sur mémoire Flash a été popularisé dans les baies de stockage par EMC dès 2008, lorsque le PDG du leader mondial du stockage, Joe Tucci, a annoncé son intention de faire de ce nouveau support de stockage, un élément stratégique de la performance des baies Clariion et Symmetrix. Depuis, tous les constructeurs ont adopté la technologie et ajouté un étage de mémoire Flash dans leurs baies quand ils n’ont tout simplement pas fait de la Flash le support de stockage primaire de leurs baies de stockage.

Pourquoi tant d’intérêt pour la mémoire Flash ?

L’intérêt que porte l’industrie du stockage, au stockage sur mémoire Flash, s’explique par la caractéristique essentielle de ce support : la réduction de la latence d’accès au stockage et son corollaire, le support d’un très grand nombre d’opérations d’entrées/sorties par seconde.

Pour s’en convaincre, il suffit de regarder l’évolution de la performance des disques durs au cours des 25 dernières années et de mettre en parallèle la performance de la mémoire Flash. Ainsi un disque dur d’entreprise avait un temps d’accès de 60 ms en 1987. Depuis on est passé à 5 ms pour les disques d’entreprises à 15 000 tr/mn, mais toujours à environ 9 ms pour un disque SATA 7 200 tr/mn. Cette amélioration par un facteur de 6 à 12 fois peut paraître impressionnante. Sauf que dans le même temps, la latence d’accès à la mémoire a été divisée par plus de 100 000 pour passer sous la barre de la nanoseconde.

Entre ces deux extrêmes, la mémoire Flash crée une nouvelle classe de stockage qui vient s’intercaler entre la mémoire vive et les disques durs traditionnels. Ainsi un disque SSD utilisant de la mémoire eMLC affiche une latence de l’ordre de 30 microsecondes. Surtout, alors que le caractère mécanique des disques durs limite le nombre d’opérations d’entrées/sorties par seconde (environ 180 IOPS pour un disque moderne rapide), la Flash, de part sa nature électronique, peut être adressée en parallèle comme une mémoire. D’où des performances en I/O qui sur certains SSD peuvent approcher la barre du million d’I/O par seconde.

Les caractéristiques d’IOPS et de latence des systèmes à base de mémoire Flash ont un intérêt immédiat pour la performance des serveurs. Car pour un serveur dont les processeurs fonctionnent à une fréquence de 2 Gigahertz, une latence de 5 ms représente près de 400 000 cycles d’horloge passés à attendre des données, si ces dernières ne sont pas dans le cache du processeur. De quoi sérieusement torpiller la performance d’un système.

Ce qu’il faut retenir

La mémoire SLC est la plus fiable, la plus performante, mais aussi la plus coûteuse au Go.

La mémoire MLC est moins fiable, moins performante mais bien plus abordable du fait de son aptitude à stocker plusieurs bits de données par cellule.

La mémoire eMLC est un intermédiaire dont les performances sont similaires à la MLC, mais dont la durée de vie est un intermédiaire entre MLC et SLC. Le prix des systèmes eMLC se situe entre celui de la MLC et de la SLC.

 

Clairement la mémoire SLC est celle qui est adaptée aux applications les plus intensives en entrées/sorties et présente les caractéristiques les plus adaptées aux applications critiques. Mais le génie des constructeurs de stockage tend à limiter l’écart entre eMLC et SLC. Afin de limiter les cycles multiples d’effacement/écriture et donc l’usure des modules mémoire, les constructeurs ont en effet développé des algorithmes très subtils pour répartir l’usure (on parle aux États-Unis de « Wear Leveling »).

Il s’agit d’éviter de trop solliciter les mêmes cellules et en répartissant donc les écritures à travers un maximum de cellules d’un même système Flash. En procédant ainsi, on évite que certaines cellules ne s’usent prématurément.

Qu’est-ce que la Flash

La mémoire Flash est une invention de Toshiba, qui reste l’un des grands producteurs mondiaux aux côtés de géants comme Samsung ou Intel/Micron. Ce nouveau type de mémoire EEPROM (Electronicaly Erasable Programmable Read Only Memory) a été conçu il y a près de 25 ans dans les laboratoires du géant japonais. Très coûteuse à ses débuts et surtout bien plus lente qu’aujourd’hui, la Flash a, tout d’abord, été utilisée dans les ordinateurs pour stocker le Bios (ou le firmware) des ordinateurs, avant de se banaliser avec l’émergence des clés de stockage USB (un format popularisé par IBM sous le nom « Thumb Drive » au début des années 2000).

La caractéristique qui fait de la Flash un support idéal pour le stockage de données est son caractère EEPROM. Comme avec les mémoires ROM, les données écrites sur une mémoire Flash sont écrites de façon persistante (à savoir que sans alimentation, la mémoire conserve son contenu). Mais contrairement aux ROM, il est possible d’effacer les données d’une EEPROM pour libérer l’espace occupé et pouvoir réécrire de nouvelles données. En fait, au lieu de supporter les deux opérations de base d’un support de stockage traditionnel, la lecture et l’écriture, les mémoires flash proposent trois opérations de base : l’écriture (ou programmation), la lecture et l’effacement. L’écriture se produit sur un emplacement vierge de l’EEPROM tandis que si l’espace est occupé, il faut réaliser deux opérations : tout d’abord l’effacement des données présentes, puis l’écriture des nouvelles données. On verra plus tard qu’une partie du savoir-faire essentiel dans l’optimisation de la performance des systèmes Flash est de maîtriser la technologie des contrôleurs permettant d’optimiser le positionnement des données afin de réduire au maximum ces doubles opérations, qui pénalisent les performances. Une dernière idée à conserver en mémoire est que les mémoires Flash ont une « durée de vie ». Chaque cellule d’une mémoire Flash ne supporte en effet qu’un nombre limité de cycles d’effacement et d’écriture et ce nombre varie selon les caractéristiques des mémoires Flash.

MLC, eMLC, SLC

Il existe aujourd’hui plusieurs catégories de mémoires flash sur le marché. Tout d’abord les fabricants distinguent les mémoires Flash NOR des mémoires Flash NAND (selon le type de porte logique utilisée pour la fabrication). Dans cet article nous nous concentrerons sur les mémoires NAND, car ce sont elles qui sont utilisées dans les systèmes de stockage, les mémoires NOR, étant beaucoup plus coûteuses.

La différence entre mémoire SLC et MLC (cliquer sur l'image pour agrandir) est que la mémoire MLC supporte de multiple niveaux de voltage et donc peut stocker plusieurs bits d'information par cellule - ici une mémoire MLC-2 avec 4 niveaux de tension. ( source : Electronic Design)

Dans les mémoires NAND, on distingue plusieurs familles de modules mémoire : les mémoires MLC (Multiple Level Cell) et les mémoires SLC (Single Level Cell). Dans les premières, chaque cellule est capable de stocker plusieurs bits d’information. Tandis que les mémoires SLC ne stockent qu’un bit par cellule.
Pour parvenir à stocker plusieurs bits, les mémoires MLC supportent plusieurs niveaux de voltage, ce qui permet de stocker quatre valeurs différentes (dans le cas de la mémoire MLC-2, aujourd’hui la plus couramment utilisée) alors que les mémoires SLC ne gèrent que deux niveaux de tension. Il est à noter que l’on commence à voir apparaître des systèmes à base de MLC-3 (six niveaux de voltage) et que certains fabricants travaillent sur la MLC -4 (huit niveaux). Ces nouvelles mémoires MLC offrent plus de capacité de stockage par cellule, mais au prix de compromis en matière de fiabilité, de performance et de consommation.

Dans la pratique, les mémoires SLC sont à la fois les plus performantes et les plus coûteuses. Elles sont aussi celles dont la fiabilité est la plus élevée. On l’évoquait précédemment, les mémoires Flash NAND n’utilisent pas un mécanisme d’écriture standard, mais un mécanisme combinant effacement et écriture. Ces mémoires ne sont capables de supporter qu’un nombre limité de cycles d’effacement/écriture et ce nombre de cycle est d’autant plus élevé que la densité des cellules est faible, du fait notamment des voltages à appliquer pour les opérations d’effacement/écriture. Une cellule de mémoire SLC peut ainsi supporter environ 150 000 cycles d’écriture, alors qu’une mémoire MLC typique supportera environ 5 000 cycles d’écriture. Une mémoire de type eMLC (en fait une mémoire MLC un peu particulière, qui utilise des techniques spécifiques de correction d’erreurs, de gestion de l’usure…) supporte quant à elle environ 25 000 cycles d’écriture.

Les constructeurs de stockage ont tout d’abord privilégié la mémoire SLC pour les applications critiques et elle reste encore aujourd’hui majoritaire chez les grands fournisseurs de baies de stockage. Mais la mémoire eMLC gagne de plus en plus de terrain, du fait de son bien meilleur rapport fiabilité/performances/prix, mais aussi parce que les mécanismes avancés de « wear leveling » (voir encadré) mis en oeuvre par les constructeurs permettent de garantir une fiabilité dans le temps suffisante pour des systèmes de stockage critiques. En 2012, il est vraisemblable que la mémoire eMLC prendra le dessus sur la mémoire SLC en termes de capacités livrées, mais que la SLC restera la mémoire reine pour les applications à très hautes performances.

Quel type de support ?

Un disque SSD de marque STEC (à droite) et son contenu (à gauche). On distingue bien les modules de mémoire Flash soudés sur la carte électronique

Les mémoires Flash sont aujourd’hui utilisées de plusieurs façons dans les systèmes de stockage, mais le format de plus mis en œuvre est celui des SSD (Solid State Drive). Un SSD à l’apparence d’un disque dur traditionnel et se connecte au système de stockage par une interface SAS ou SATA traditionnel. Dans un  SSD, on trouve en fait de multiples modules de mémoire Flash pilotés par un contrôleur qui a la tâche de gérer l’ensemble des opérations liées au pilotage de la Flash ainsi que l’interfaçage avec le bus SAS ou SATA.

Une carte Flash PCI-express VFCache d'EMC

Un second format devient également de plus en plus populaire, celui des cartes PCI-express. Avec ces dernières, les modules Flash sont assemblés sur la carte et pilotés par un contrôleur spécifique. L’avantage est que la connexion au bus PCI-express réduit la latence d’accès par le serveur puisque l’on ne passe pas par le contrôleur SAS embarqué du serveur. Les cartes Flash PCI-express, comme celles que propose EMC avec VFCache sont notamment utilisées pour fournir un stockage local à très haute performance (par exemple pour le stockage des index de bases de données) ainsi qu’un étage de cache local pour accélérer l’accès au stockage SAN.

À suivre le mois prochain : « Comprendre : pourquoi la mémoire Flash s’impose dans les systèmes informatiques modernes? »

Pocket