La fin des années 1990 a vu l’introduction généralisée du stockage à semi-conducteurs basé sur la mémoire Flash NAND. Des cartes mémoire pour appareils portables au stockage pour ordinateurs de bureau et portables, l’avenir du stockage des données était censé nous débarrasser des entraves du stockage magnétique qui nous avait jusqu’alors entravés. Alors que les disques SSD (Solid State Drives) prenaient leur envol sur le marché grand public, certains savaient avec certitude qu’avant longtemps tout le monde utiliserait des SSD et que les disques durs (HDD) seraient relégués aux oubliettes de l’histoire, le prix par gigaoctet et les performances générales des SSD étant tout simplement trop compétitifs.
Quelques années plus tard, nous nous trouvons à une époque où les gens modifient les SSD pour avoir moins d’espace de stockage, juste pour que leurs performances et leur durée de vie soient moins mauvaises. La raison en est que la mémoire Flash NAND a désormais atteint un certain nombre de limites qui l’empêchent d’évoluer davantage en termes de densité, principalement en termes de taille de ses fonctionnalités. Les solutions de contournement incluent l’empilement de couches supplémentaires les unes sur les autres (NAND 3D) et l’augmentation du nombre de niveaux de tension – et donc de bits – dans une cellule individuelle. Bien que cela ait augmenté la capacité de stockage, la transition de la cellule à un seul niveau (SLC) à la cellule à plusieurs niveaux (MLC) et les mémoires Flash NAND TLC et QLC actuelles ont eu de lourdes conséquences, principalement sous la forme de cycles d’écriture limités et de vitesses de transfert considérablement réduites.
Alors, comment en sommes-nous arrivés là et existe-t-il une vie au-delà du QLC NAND Flash ?
Portes flottantes
Au cœur de la mémoire Flash NAND se trouve le concept de grilles flottantes, tel qu’il a été mis au point dans les années 1960 avec le MOSFET à grille flottante (FGMOS). Comme un FGMOS permet de conserver une charge dans la grille flottante, il a permis le développement de technologies de stockage de semi-conducteurs non volatiles comme l’EPROM, l’EEPROM et la mémoire flash. Avec l’EPROM, chaque cellule est constituée d’un seul FET avec les grilles flottante et de contrôle. En induisant l’injection de porteurs chauds (HCI) avec une tension de programmation sur la grille de contrôle, des électrons sont injectés dans la grille flottante, ce qui active ainsi efficacement le FET. Cela permet ensuite de lire l’état du transistor et de l’interpréter comme la valeur binaire stockée.
Naturellement, le simple fait de pouvoir programmer une EPROM une fois et de devoir ensuite effacer les valeurs en exposant la puce entière à un rayonnement UV (pour induire une ionisation dans l’oxyde de silicium qui décharge le FET) est un peu gênant, même si cela permet de réécrire la puce des milliers de fois. Afin de rendre les EPROM réinscriptibles en circuit, les EEPROM modifient la structure de base uniquement FET avec deux transistors supplémentaires. À l’origine, les EEPROM utilisaient le même principe HCI pour effacer une cellule, mais plus tard, elles sont passées à l’utilisation du tunneling Fowler-Nordheim (FNT, la forme mécanique des ondes de l’émission d’électrons de champ) pour effacer et écrire une cellule, ce qui supprime l’impact dommageable de la dégradation des porteurs chauds (HCD). La HCD et l’application de la FNT sont toutes deux une source majeure de dommages physiques qui finissent par rendre une cellule « étanche » et la rendre inutilisable.
Associées à un flash à piège de charge (CTF) qui remplace la grille flottante en silicium polycristallin d’origine par un matériau en nitrure de silicium plus durable et plus performant, les EEPROM modernes peuvent prendre en charge environ un million de cycles de lecture/écriture avant de s’user.
La mémoire Flash est une évolution de l’EEPROM, dont les principales différences sont la vitesse et la densité de stockage élevée, ainsi que l’utilisation de HCI pour les écritures dans la mémoire Flash NOR, en raison des avantages de vitesse que cela procure. La différence entre la mémoire Flash NOR et la mémoire Flash NAND vient de la façon dont les cellules sont connectées, la mémoire Flash NOR étant appelée ainsi car elle ressemble à une porte NOR dans son comportement :
Pour écrire une cellule Flash NOR (la régler sur « 0 » logique), une tension élevée est appliquée à la grille de contrôle, ce qui induit un HCI. Pour effacer une cellule (la réinitialiser sur « 1 » logique), une tension élevée de polarité opposée est appliquée à la grille de contrôle et au terminal source, ce qui extrait les électrons de la grille flottante en raison de la FNT.
La lecture d’une cellule est ensuite effectuée en tirant la ligne de mot cible vers le haut. Étant donné que tous les FET de stockage sont connectés à la fois à la masse et à la ligne de bits, cela tirera la ligne de bits vers le bas si la porte flottante est active, créant un « 1 » logique et vice versa. La mémoire Flash NOR est configurée pour permettre l’effacement et l’écriture bit par bit, bien que la mémoire Flash NOR moderne évolue vers un modèle dans lequel l’effacement est effectué par blocs, un peu comme avec la mémoire Flash NAND :
La raison pour laquelle la mémoire Flash NAND est appelée ainsi est évidente à partir de la façon dont les cellules sont connectées, avec un certain nombre de cellules connectées en série (une chaîne) entre la ligne de bits et la masse. La mémoire Flash NAND utilise FNT pour l’écriture et l’effacement des cellules, qui, en raison de sa disposition, doivent toujours être écrites (définies sur « 0 ») et lues en pages (une collection de chaînes), tandis que l’effacement est effectué au niveau du bloc (une collection de pages).
Contrairement à la mémoire Flash NOR et à la mémoire (E)EPROM, la lecture d’une valeur est beaucoup plus compliquée que le basculement d’une porte de contrôle et la vérification du niveau de la ligne de bits. Au lieu de cela, la porte de contrôle d’une cellule cible doit être activée, tout en appliquant une tension beaucoup plus élevée (> 6 V) sur la porte de contrôle des cellules indésirables dans une chaîne (ce qui les allume quoi qu’il arrive). En fonction de la charge à l’intérieur de la porte flottante, la tension de la ligne de bits atteindra un certain niveau, qui peut alors être interprété comme une certaine valeur de bit. C’est également ainsi que la mémoire Flash NAND peut stocker plusieurs bits par cellule, en s’appuyant sur des mesures précises du niveau de charge de la porte flottante.
Tout cela signifie que, tandis que la mémoire Flash NOR prend en charge l’accès et l’effacement aléatoires (au niveau des octets) et donc l’exécution sur place (XiP, qui permet d’exécuter des applications directement à partir de la ROM), la mémoire Flash NAND est beaucoup plus rapide avec l’écriture et l’effacement (par bloc), ce qui, avec les densités plus élevées possibles, a fait de la mémoire Flash NAND la préférée des applications de stockage de données de bureau et mobiles.
Les douleurs de l’échelle
La demande de stockage Flash en nombre croissant d’octets par millimètre carré étant de plus en plus forte, les fabricants ont fait de leur mieux pour réduire la taille des transistors et autres structures qui composent une mémoire Flash NAND. Cela a entraîné des problèmes tels qu’une diminution de la rétention des données en raison des fuites d’électrons et une usure accrue due à des structures plus fines. La méthode rapide et facile pour augmenter la taille totale du stockage en stockant plus de bits par cellule a non seulement exacerbé ces problèmes, mais a également introduit une complexité significative.
L’usure accrue peut être facilement observée en examinant l’endurance nominale (cycles de programmation/effacement (P/E) par bloc) de la mémoire Flash NAND, la mémoire Flash NAND SLC atteignant jusqu’à 100 000 cycles P/E, la mémoire Flash MLC inférieure à 10 000, la mémoire Flash TLC autour d’un millier et la mémoire Flash QLC descendant à des centaines de cycles P/E. Parallèlement, les tailles plus petites des mémoires Flash NAND ont rendu la mémoire Flash NAND plus sensible aux fuites d’électrons dues à la mobilité des électrons, notamment en raison des températures environnementales élevées. La rétention des données diminue également avec l’usure, ce qui rend la perte de données de plus en plus probable avec la mémoire Flash NAND haute densité à plusieurs bits par cellule.
En raison de la complexité de la mémoire Flash NAND QLC avec quatre bits (et donc 16 niveaux de tension) par cellule, les vitesses d’écriture et de lecture ont chuté par rapport à celles de la mémoire TLC et surtout de la mémoire SLC. C’est pourquoi les SSD QLC (et TLC) utilisent un cache pseudo-SLC (pSLC), qui alloue une partie de la mémoire Flash du SSD pour être utilisée uniquement avec le modèle d’accès SLC beaucoup plus rapide. Dans le tutoriel référencé précédemment par Gabriel Ferraz, cela est douloureusement illustré en écrivant au-delà de la taille du cache pSLC du SSD cible (un Crucial BX500) :
Bien que les écritures sur le SSD cible soient initialement proches de 500 Mo/s, dès que le cache pSLC d’environ 45 Go se remplit, les vitesses d’écriture sont réduites aux vitesses d’écriture de la mémoire NAND Micron 3D QLC sous-jacente, qui sont d’environ 50 Mo/s. En réalité, la mémoire Flash QLC NAND n’est pas plus rapide qu’un disque dur mécanique et ses caractéristiques de rétention et d’endurance des données sont moins bonnes. Il est clair que c’est à ce stade que l’avenir du stockage SSD prophétisé s’effondre, car même la mémoire Flash NAND relativement bon marché n’a toujours pas rattrapé le rapport prix/performance des disques durs.
La modification effectuée par Gabriel Ferraz sur le SSD BX500 consiste à reprogrammer son contrôleur Flash NAND Silicon Motion SM2259XT2 à l’aide du logiciel MPTools, qui n’est pas fourni aux consommateurs mais qui a fuité sur Internet. Bien que ce ne soit pas aussi simple que d’activer une option « utiliser le SSD entier comme pSLC », c’est finalement ce à quoi cela se résume après avoir flashé le firmware modifié sur le lecteur.
Le SSD BX500 fonctionnant désormais en mode pSLC, la capacité de stockage passe de 500 Go à 120 Go, mais le rapport P/E passe de 900 cycles en mode QLC à 60 000 cycles en mode pSLC, soit bien plus de 3 000 %. Les performances d’écriture sont soutenues à 496 Mo/s sans aucun des pics observés en mode QLC, ce qui conduit à environ le double du score du test PCMark 10 Full System Drive.
Avec tout cela à l’esprit, il n’est pas facile d’envisager une voie à suivre pour la mémoire Flash NAND qui ne rendra pas les problèmes existants encore plus graves. Peut-être qu’Intel et Micron sortiront bientôt de nulle part avec une nouvelle version de la mémoire à changement de phase 3D XPoint, ou peut-être que nous continuerons simplement à nous débrouiller dans un avenir proche avec des SSD de plus en plus mauvais et des disques durs apparemment immortels.
Il est évident qu’il ne faut jamais croire les prophètes, surtout pas ceux qui nous annoncent des technologies futuristes et brillantes.
Image en vedette : « OCZ Agility 3 PCB » par [Ordercrazy]