Diviser par quatre la capacité d'un SSD pour améliorer ses performances

Pierre Dandumont |

Dans le petit monde des SSD, le type de mémoire flash NAND a de l'importance : la mémoire SLC (Single Level Cell, un bit par cellule) offre de meilleures performances et une meilleure endurance que de la mémoire MLC (deux bits par cellule), TLC (trois bits par cellule) ou même QLC (quatre bits par cellule). Mais saviez-vous qu'il est parfois possible de transformer un SSD à base de QLC en un SSD à base de (pseudo) mémoire SLC ?

La technique n'est pas nouvelle et est employée par les fabricants : elle consiste à traiter de la mémoire qui contient en théorie plusieurs bits par cellule en n'écrivant qu'un seul bit. Comme il ne s'agit pas tout à fait de la mémoire SLC, ce type d'astuce porte le nom de pseudo SLC. Beaucoup de SSD modernes utilisent un cache à base de mémoire pseudo SLC pour une raison simple : les performances en écriture sont plus élevées dans ce mode. Bien évidemment, cette voie a un défaut : une perte de capacité. Dans le cas de la mémoire cache, les fabricants ont tendance à soit définir une capacité maximale pour la mémoire cache, soit passer par un cache dynamique. Dans le premier cas, il est possible d'écrire rapidement pendant une période définie, ou plus exactement sur une capacité définie (par exemple 50 Go). Une fois le cache rempli, le SSD passe dans le mode standard, plus lent.

Un crucial BX500 moderne, à base de mémoire QLC.

La seconde voie, la dynamique, permet d'utiliser l'espace libre comme cache, donc avec une capacité qui est généralement du tiers (mémoire TLC) ou du quart (QLC) de l'espace disponible. Dans ce cas, il faut évidemment vider le cache une fois les tâches effectuées, et donc déplacer les données écrites en mode pseudo SLC vers de la mémoire TLC ou QLC.

Il est possible de modifier le firmware

Dans une longue vidéo, Grabiel Ferraz a choisi une voie plus radicale : il a modifié le firmware d'un Crucial BX500 (un modèle à base de mémoire QLC) pour qu'il travaille en permanence en mode pseudo SLC. Le SSD est donc plus rapide (avec quelques limites dues à l'interface SATA) et plus endurant… mais la capacité a été divisée par quatre. Dans l'exemple, il passe de 512 Go à 128 Go. Il emploie un outil de configuration du firmware qui peut se dénicher sur Internet (le fabricant du contrôleur, Silicon Motion, ne le distribue pas).

Pour le gain d'endurance, le calcul est relativement simple : on passe de 120 TBW (Tera Byte Written) a 4 000 TBW. Il s'agit d'une valeur théorique, souvent pessimiste, sur la durée de vie d'un SSD. Les constructeurs comptent le nombre d'octets écrits sur le SSD et quand la valeur limite (qui est en téraoctets) a été atteinte, la garantie du SSD se termine. Dans le même temps, l'indicateur de santé passe à 0 %. Sur le papier, un SSD qui atteint cette limite est considéré comme totalement usé et ne devrait plus être employé, les risques de corruptions et d'erreurs étant bien plus élevés. En pratique, la valeur est calculée avec des paramètres (très) pessimistes pour prendre en compte les différents usages. Un SSD qui a atteint cette limite peut donc parfaitement fonctionner pendant un temps… plus ou moins long. Il faut par ailleurs noter que son calcul est lui aussi pessimiste, il considère que la mémoire pseudo SLC peut atteindre 60 000 cycles d'écriture, contre 900 en mode QLC, alors que les mémoires SLC typiques sont données pour environ 100 000 cycles.

Le programme de test.

Au niveau des performances, la latence est plus faible en mode pseudo SLC et les performances sont améliorées en lecture aléatoire. En écriture, les résultats sont équivalents quand le cache est utilisé avec le firmware de base et le SSD sature le bus SATA. Mais si vous écrivez plus de 48 Go (la taille du cache), les débits descendent aux environs de 100 Mo/s et même vers 50 Mo/s quand le contrôleur tente de déplacer les données du cache vers la mémoire QLC. A contrario, le SSD modifié atteint environ 500 Mo/s en écriture en permanence. Enfin, la température reste du même ordre, c'est-à-dire assez basse : les SSD SATA chauffent assez peu par rapport aux modèles PCI-Express. De même, la consommation est (un peu) plus faible, mais de façon anecdotique : environ 0,15 W de différence (0,83 W en mode pseudo SLC, 0,99 W en QLC).

Maintenant, est-ce une solution intéressante ? Sur un SSD comme le Crucial BX500, pas nécessairement : il s'agit d'un modèle d'entrée de gamme et le prix (moins de 50 €) et la capacité sont probablement plus importants pour les acheteurs que les performances ou de l'endurance. Même avec des SSD haut de gamme, le gain en endurance et en performances ne contrebalance généralement pas le fait de diviser par trois ou quatre la capacité totale, surtout quand un cache pseudo SLC permet généralement d'obtenir des performances équivalentes sur un usage classique, même sur des tâches relativement longues.

Ce SSD de 24 Go Apple a une capacité réelle de 64 Go (en mémoire MLC) : 32 Go en mode pseudo SLC avec une réserve.

Pourtant, cette solution existe et a même été employée par Apple à une époque : dans certains Fusion Drive (une technologie vue dans les iMac et Mac mini dans les années 2010). Il s'agissait d'un contexte très particulier : la technologie hybride d'Apple limitait le nombre d'écritures sur le SSD (avec un cache de 4 Go) et la société avait donc choisi de configurer certains modèles en pseudo SLC pour écrire très rapidement dans un contexte précis, ou la perte de capacité n'était pas un souci étant donné la présence d'un disque dur.

Tags
avatar koko256 | 

Mais une fois le TBW dépassé en QLC, peut-on passer en TLC et augmenter la durée de vie (intuitivement j'ai l'impression que oui car on entre seize niveaux de tension et deux, on a une sacrée marge) ? Dans ce cas on n'a rien à perdre vu que le SSD est fichu.

avatar Pierre Dandumont | 
Probablement pas. Si la mémoire est usée, forcer en pseudo SLC ne devrait rien changer.
avatar koko256 | 

@Pierre Dandumont

Il est difficile de trouver des sources fiables mais les réponses des sites à la stack overflow disent que le problème vient d'électrons qui, au lieu d'arriver dans la cellule par effet tunnel, ratent leur cible et arrivent dans la structure ce qui fausse la mesure de la charge. A priori cela augmente la marge d'erreur mais comme il faut discriminer 16 niveaux en QLC et seulement deux en SLC on pourrait imaginer que l'erreur reste assez faible pour une utilisation SLC où l'on vide ou rempli au maximum la cellule. Si c'est vrai on pourrait avoir un recyclage des ssd (dans un fixe on a de la place) mais évidemment cela n'intéresse pas les fabricants de disques.

avatar Vaenoxis | 

Intéressant, je me demande si cette technique pourrait me servir pour rendre plus rapide mon SSD crucial où j’ai tous les installeurs MacOS dessus.

avatar Matlouf | 

Et à quand la technique inverse pour faire passer mes 256 Go de SSD en 1 To ?

avatar fte | 

Cela fait quelques années maintenant que l’endurance est un critère de sélection primaire de mes SSD, au même niveau que la capacité et avant la rapidité du SSD.

C’est encore plus vrai depuis quelques mois, maintenant que tous mes ordinateurs ne sont équipés que de SSD, les disques durs étant relégués aux NAS uniquement.

Autrement dit, QLC, je n’y touche pas, même pas en tant que clé USB. Pouah.

Aussi, ils ne sont pas 4x moins chers que des SSD plus endurants. Je ne pense pas que ce soit très économique de diviser la capacité par 4 pour augmenter l’endurance. Autant acheter un SSD plus endurant.

avatar Darkgam3rz | 

Ça s’use quand même pas trop un ssd, je suis étonné de voir par exemple les ssd de mes mba/mdp de fin 2012 usés à 3% !!! Je pensais que ça tenait vraiment moins que ça !!

CONNEXION UTILISATEUR