Qu’est-ce que le FTL (Flash Translation Layer) d’un SSD?
Le controlleur d’un SSD a un rôle fondamental: c’est lui qui va permettre à l’ordinateur d’accéder aux données, en traduisant la demande (logique) vers son adresse physique (sur le disque). C’est aussi lui qui va gérer les « mauvais blocs » et supprimer les cellules non fonctionnelles et les remplacer par d’autres cellules, situées sur la zone de NAND prévue pour ce genre de cas (over-provisioning). C’est aussi le controlleur qui va déplacer les données sur la NAND pour user celle-ci de manière uniforme, qui décidera quelle partie de la NAND est utilisée comme cache SLC (nous reviendrons en détail sur ce point dans un prochain article).
Pour accomplir toutes ces taches, le controlleur se base sur ce que l’on nomme le FTL, pour Flash Translation Layer, littéralement la couche de translation flash, couche qui permet de passer de la mémoire flash à des données compréhensibles par le système d’exploitation (ou de données envoyées par le système, en bits sur la NAND), en fonction du protocole utilisé par le disque (SATA, PCIe, etc.). En obervant schématiquement un SSD, on s’apperçoit du rôle fondamental joué par ce FTL:

Le FTL, élément à la fois matériel (hardware) et logiciel (software).
Cette couche est à la fois matérielle et logicielle, et au sein même des produits d’un constructeur, on peut trouver différentes approches et algorithmes, ceux-ci évoluant avec les générations de controleurs. Les données du FTL sont des métadonnées: des données au sujet des données, des données sur les données. Il s’agit donc de la cartographie sur la NAND des différents bits qui composent vos fichiers, mais aussi de tout le système de gestion de l’usure de la NAND par le controleur du SSD.
Ce processus est fortement lié aux capacités matérielles du disque. Le processeur interne (CPU ARM, présent dans le controlleur) peut posséder un ou plusieurs coeurs. Dans certains cas, un coeur doit s’occuper de toutes les taches, quand dans d’autres cas différents threads sont dédiés à des processus différents. Pourtant, la capacité CPU du controlleur n’est pas la limite principale, du moins pour les disques SATA: ceux-ci étant limités par le protocole SATA, le talon d’achile n’est pas la vitesse de calcul du processeur interne au SSD. Dans le cadre d’un disque NVMe par contre, les controlleurs sont en général multi-core, ce qui permet d’optimier le fonctionnement à des débits d’écriture et de lecture très rapides.
C’est le FTL qui nous permet de comprendre le rôle de la puce de DDRAM souvent présente sur un SSD. Le logiciel interne au controleur y stockera principalement la cartographie, ou mapping entre l’organisation logique des données et leur localisation physique à un instant t. En effet les données ne sont pas à une place fixe sur un SSD, contrairement à un disque dur ou un DVD: le controlleur les déplace régulièrement, en fonction de l’usure de la NAND, afin de veiller à un usage minimum et à une usure stable sur l’ensemble du disque. On estime en moyenne qu’il faut 4-octets (32-bit) d’adressage pour 4KO de données ce qui revient à 1GO par 1TO de données.
Si le SSD n’a pas de puce de DRAM (comme les SSDs DRAMLess, les plus économiques) c’est une partie de la NAND sur laquelle le controlleur lira ces données. Si le controlleur est bien programmé, cette zone sera mouvante dans le disque, pour éviter toute usure prématurée; mais si ce n’est pas le cas, passé un certain stade le disque ne pourra plus charger ces données, et refusera de démarrer ou démarrera en présentant un espace ridicule, sur lequel il sera impossible d’écrire.
Fonctionnement du cache SLC « souple »
De plus, les données ne sont pas écrites directement sur la NAND MLC ou TLC, mais elles vont dans un cache SLC temporairement afin de pouvoir être traduites dans le format adéquat à un stockage MLC ou TLC, ce qui ajouterait sinon un certain temps de latence et perturberait les performances du disque. Si les meilleurs disques SSD disposaient par le passé d’une puce SLC dédiée servant de cache, avant que les données soient écrites sur les puces MLC, maintenant c’est généralement une partie de l’espace NAND TLC ou QLC qui se « transforme » en tampon TLC: au lieu d’y écrire 3 ou 4 bits, le controlleur va utiliser les cellules comme des cellules de SLC, et n’y mettre que « 0 » ou « 1 ». Ce cache « souple » utilisera physiquement l’espace libre sur la NAND, et pourra donc voir sa taille varier en fonction de l’usage du disque: il restera moins d’espace sur un disque plein et usé, sur lequel les cellules prévues en plus pour faire face à l’usure (over provisioning) seront utilisées.
Ce cache est fondamental pour le bon fonctionnement du disque: sans lui – et c’est encore plus vrai avec un disque en QLC – les performances s’éffondrent. Or ici aussi, on voit l’importance du FTL: ce cache n’est pas purement matériel mais est géré par le FTL.
Conclusion: rôle fondamental du FTL, importance du hardware comme du software.
Comme nous l’avons vu, le FTL joue un rôle fondamental pour le bon fonctionnement d’un SSD. Les stratégies mises en oeuvre par le fabricant déterminera à la fois les performances et la durée de vie du disque. Le matériel joue ici un rôle important, et notamment la présence ou non de DRAM, que celle-ci soit en DDR3 ou DDR4 étant totalement secondaire. Cela est vrai pour un disque SATA, un disque NVMe peut se passer de DDR sans soucis ni pour ses performances, ni pour sa durée de vie, de part le protocole utilisé, plus adapté aux disques basés sur de la mémoire Flash.
Mais le hardware ne fait pas tout: le logiciel joue ici un rôle fondamental, certains controlleurs étant dotés d’algorithmes bien plus performants que d’autres, que ce soit pour limiter l’usure des puces ou pour garantir une bonne performance du disque, même quand celui-ci est plein, ou même dans des copies de fichiers dont la taille dépasse les capacités du cache.
Le rôle central du FTL dans un SSD est à mon sens l’élément clef qui invite à favoriser un disque d’assez bonne qualité plutôt qu’un disque bas de gamme, le premier étant plus durable, et offrant des performances plus stables dans le temps. Un SSD est en effet très complexe, et il vaut mieux que ses différents éléments soient correctement optimisés et agencés entre eux, afin d’éviter toute perte de donnée. Cela limite aussi, in fine, leur impact écologique. Un disque de qualité n’est pas forcément beaucoup plus cher qu’un disque bas de gamme, voir par exemple à ce sujet notre selection de promos et de bons plans du moment.






Commentaires récents