• NAND Flash et contrôleurs

Nous vous en parlions en entamant ce dossier, le principe de fonctionnement des disques durs (lecture/écriture magnétique sur un disque en rotation par le biais de têtes situées au bout d'un bras articulé) est maintenant très ancien et malgré tous les progrès obtenus durant des décennies de développement, il reste le maillon faible tant d'un point de vue vitesse que fiabilité au sein d'un PC moderne. Pourtant, trouver un remplaçant à ce bon vieux HDD n'est pas si simple et ce n'est finalement que récemment qu'une solution à peu près satisfaisante émergeât !

 

A l'instar du lecteur de disquette qui vit avorter de nombreuses tentatives de remplacement avant l'avènement des clefs USB en tant que source de stockage amovible, c'est à nouveau la mémoire flash utilisée par ces dernières qui offre une alternative satisfaisante. La raison? Un coût de production toujours plus compétitif pour des capacités qui deviennent peu à peu compatibles avec les besoins courants. Mais ne rêvons pas, la mémoire flash n'est pas encore suffisamment "bon marché" pour concurrencer économiquement les gros HDD, nul doute que ce moment viendra un jour toutefois.

 un die de 16Go Micron en 34nm

En attendant celui-ci, de nombreux SSD utilisant la mémoire NAND Flash permettent dés à présent d'offrir assez d'espace pour installer l'OS et les applications courantes pour un prix qui commence à être "acceptable" par un grand nombre d'utilisateurs.

Certes pas encore la majorité, mais chaque évolution nous rapproche petit à petit de cette échéance. Le secret de cette poussée des SSD, l'amélioration continue des procédés de fabrication de la mémoire Flash. En 2004, une finesse de gravure à 90 nm était la norme, à l'heure actuelle, le 34nm est utilisé de manière industrielle par certains acteurs diminuant mécaniquement les coûts de production puisque toujours plus de puces sont créées sur la même surface.

 

La mémoire Flash de type NAND qui nous intéresse (ci contre, un die de 16Go en 34nm) n'est pas toute jeune puisqu'elle fut commercialisée par Toshiba en 1989. Elle faisait suite à la Flash de type NOR commercialisée un an plus tôt par Intel, principalement utilisée pour le stockage non volatile et fiable de petite capacité (bios d'une carte mère, OS d'un GSM, etc.). La NAND bien moins chère, est également une mémoire non volatile (pas de perte d'information en cas de coupure de l'alimentation électrique, une cellule neuve peut conserver jusqu'à 10 ans ses données) a percé en tant que stockage de masse, principalement destinée à l'amovible ou le monde du mobile dans un premier temps. Le nom NAND provient du type de porte logique utilisée pour son fonctionnement. Elle se décompose en 2 types, d'une part la SLC (Single Layer Cell) dans laquelle une cellule mémoire peut avoir 2 états et donc stocker un bit.

 

Dossier SSD SLC Micron

Cellule SLC (Micron)

 

D'autre part la MLC (Multiple Layer Cell), où plusieurs bits sont stockés par cellule, généralement 2. Avantage évident de cette dernière, une densité de données supérieure et donc un coût moindre au gigaoctet. Certaines contreparties existent toutefois par rapport à la SLC : les performances sont moindres, particulièrement en écriture, et la longévité des cellules en pâtit fortement puisque l'on passe de 100 000 cycles d'écritures sur la SLC à 10 000 sur la MLC.

 

Dossier SSD MLC Micron

Cellule MLC (Micron)

 

Malgré cela, la NAND Flash de type MLC est la plus utilisée sur les SSD récents pour une raison de coût. La SLC quant à elle, est de plus en plus réservée au monde professionnel capable d'investir d'avantage que l'utilisateur courant. Néanmoins, un SSD n'est pas uniquement composé de mémoire flash, il possède également un véritable chef d'orchestre, le contrôleur, qui pilote tout cela et va tenter de corriger une partie des défauts inhérents à la NAND Flash (usure, fiabilité des données écrites, performances en accès aléatoire) et ainsi permettre l'utilisation fiable et efficace de MLC sur un SSD malgré ses 10 000 cycles d'écriture.

 

Une puce mémoire Flash NAND est divisée en blocs, eux-mêmes subdivisés en pages, avec des cellules élémentaires reliées entre elles en série. Il n'est donc pas possible d'accéder directement à une cellule, sa lecture implique la lecture d'une page entière. Quant à l'écriture c'est pire, puisqu'il faut opérer au niveau du bloc entier en l'effaçant puis en le réécrivant intégralement. Le contrôleur agit à ce niveau en utilisant un cache (interne mais aussi complété pour certains par un second externe) qui permet de stocker de manière transitoire les données du block pour les réorganiser avant de les réécrire. La quantité doit donc être suffisante pour ne pas avoir à utiliser inutilement un autre bloc temporaire pour ces opérations et induire ainsi une usure supplémentaire sans compter une réduction des performances (le cache étant beaucoup plus rapide que la Flash). Second axe d'amélioration des performances, paralléliser les tâches en multipliant le nombre de canaux disponibles. En pratique les contrôleurs utilisent généralement entre 4 et 10 canaux.

 

Autre fonction dévolue au contrôleur, la fiabilité du SSD via l'ECC pour le contrôle des données écrites, et la gestion du Wear Leveling (gestion d'usure). En effet, comme nous l'avons vu, les puces flash ont un cycle d'écriture limité : si la même cellule est utilisée de manière systématique pour les opérations d'écriture elle arrivera très rapidement en fin de vie. Pour éviter cela, le contrôleur répartit de manière équitable entre toutes les cellules disponibles ces opérations pour éviter leur usure prématurée. Enfin, il dispose d'un "pool" ( généralement 2-3% de la capacité du SSD) de cellules de rechange qu'il peut utiliser pour palier aux défaillances lorsqu'elles se produisent et ainsi maintenir la capacité le plus longtemps possible à sa valeur d'origine.

 

Concernant sa conception, le contrôleur utilise un processeur (généralement de type ARM), un peu de mémoire vive, diverses puces d'interfaçage et de cache. Le tout est savamment (ou non) programmé afin d'assurer performance et fiabilité maximale. Enfin afin d'assurer une bonne tenue des performances dans le temps, la fonction TRIM est implémentée dans certains contrôleurs afin de permettre une liaison entre l'OS supportant cette fonctionnalité (Linux ou Seven) et le contrôleur pour lui indiquer les cellules qui ne sont plus utilisées au niveau de la table d'allocation des fichiers et simplifier ainsi grandement la tâche du contrôleur. Les opérations d'effacement de cellules étant comme nous l'avons vu les plus coûteuses en terme de performance, on comprend donc aisément l'utilité d'une telle fonctionnalité. Côté OS, si Windows 7 gère nativement le TRIM et l'invoque suite à certaines opérations NTFS (effacement de fichiers, déplacement via defrag, compression, etc.) la plupart des autres OS ne le supporte pas et il sera nécessaire au fabricant du SSD de développer un petit utilitaire pour l'invoquer manuellement.

Dossier SSD : Diagramme controleur Mtron

Schéma de principe du contrôleur Mtron

 

Suivant les SSD, on retrouve 2 approches : soit l'utilisation un contrôleur "propriétaire" développé en interne par la société qui conçoit le SSD (Intel, Mtron, Samsung), soit un contrôleur commercialisé par une société tierce (JMicron, Indilinx, Marvell, etc.). Dans ce dernier cas, il est difficile pour les différents acteurs de se démarquer puisque le contrôleur est l'élément déterminant pour les performances, le firmware étant généralement développé et fourni à tous les clients par le concepteur du-dit contrôleur. C'est fini pour les rappels (très succincts et sommaires) sur la théorie, passons à la pratique.

 



Plus d'infos avec le comptoir de l'info


Les 47 Ragots
   
Les ragots sont actuellement
ouverts à tous, c'est open bar !