Nous utilisons des cookies pour améliorer votre expérience.

MacBidouille

Comprendre les SSD

SartMatt dévoile tout sur le fonctionnement des SSD, et partage des conseils pour optimiser les performances


Wear-leveling

En plus de l'adressage radicalement différent, les SSD ont une autre particularité par rapport aux disques durs traditionnels : les cellules s'usent au fil des effacements, ce qui réduit progressivement la durée de rétention des données (durée pendant laquelle une donnée reste lisible). Chaque cellule est donc spécifiée pour un nombre maximal d'effacements toléré. Selon les normes du JEDEC, ce nombre maximal doit être défini de telle sorte que la durée de rétention soit garantie à au moins dix ans pour une cellule ayant subi jusqu'à 10% du nombre de cycles maximal, et au minimum un an pour une cellule ayant atteint son nombre de cycle maximal. Sur les cellules MLC, le nombre maximal d'effacements toléré est d'au moins 10 000, contre au moins 100 000 pour les mémoires de type SLC. À noter que, si ce facteur 10 peut sembler énorme, il est quasiment sans conséquences en pratique pour un usage grand public. Dans ce cadre, les SSD auront généralement été remisés bien avant d'atteindre leurs limites, même en MLC. Par ailleurs, le nombre de cycles supportés décroît en fonction de la finesse de gravure. La MLC 34nm ne supporte par exemple plus que 3000 cycles.

Problème : nos systèmes d'exploitation ne sont pas adaptés à ce mode de fonctionnement, est vont donc parfois réécrire très souvent certains secteurs logiques, alors que d'autres ne sont jamais touchés. Les contrôleurs mémoire des SSD implémentent donc des algorithmes dits de "wear-leveling" ("nivellement d'usure"), qui va répartir les écritures sur toute la "surface" du SSD, pour éviter que certaines cellules ne s'usent prématurément.

Contrairement à ce qu'il se passe avec un disque dur, un secteur logique donné ne sera donc pas toujours écrit au même endroit, et va se "promener" au gré des écritures.

Revers de la médaille, ce mode de fonctionnement a tendance à diminuer les performances en écriture. À chaque fois, le contrôleur doit parcourir les descripteurs lui permettant de savoir quelle page est la mieux adaptée à accueillir les données. Cette chute de performance est particulièrement sensible sur les SSD à base de mémoire MLC et pour les petites opérations d'écriture aléatoire. Afin d'éviter une trop forte dégradation des performances, il est impératif que le SSD soit doté d'un cache conséquent, lui permettant de stocker les descripteurs, pour ne pas devoir les relire depuis la mémoire flash à chaque opération. En l'absence de cache (cas des SSD à base de contrôleur Jmicron JMF602), les performances dans ce cas tombent bien en dessous de celles des disques durs, avec des temps de réponse atteignant plusieurs centaines de millisecondes.

Mais le wear-leveling a une autre conséquence gênante : il provoque une "fragmentation" du volume qui a tendance à s'accroitre avec le temps, et à dégrader les performances en écriture. En effet, imaginons par exemple l'écriture d'un fichier de 1 Mo, sur un SSD doté de pages de 2 Ko et de blocs de 512 Ko. Sur un SSD neuf, toutes les cellules étant vierges, le fichier va être écrit séquentiellement sur deux blocs consécutifs. Plus tard, en cas de réécriture du fichier, le contrôleur va privilégier les pages encore vierges, puis, à défaut, les pages effaçables optimales (en privilégiant les pages appartenant à des blocs contenant beaucoup de pages effaçables ou vierges et ayant subi le moins d'effacements). Plus le SSD a été utilisé, moins il devient probable de trouver deux blocs entièrement utilisables (donc ne contenant que des pages vierges ou effaçables). Le fichier a donc toutes les chances d'être réparti sur plus de deux blocs. Au fil du temps, on finit donc par arriver à une situation où il ne reste aucun bloc entièrement utilisable pour des écritures, ce qui signifie que chaque nouvelle opération d'écriture va nécessiter l'effacement de blocs contenant des données, ce qui oblige à lire puis réécrire ces données (cf fin du paragraphe "Secteurs, pages, blocs...").

Lorsque la réécriture d'un secteur ne se fait pas physiquement au même endroit que l'écriture précédente, le contrôleur du SSD marque comme effaçable la page qui contenait le secteur avant sa réécriture.

Enfin, en plus du wear-leveling, le contrôleur doit s'assurer d'éviter le vieillissement des données. Comme nous l'avons expliqué plus haut, les données ont une durée de vie limitée après leur écriture. Lors des phases de faible activité, le contrôleur va donc vérifier l'âge des données sur le volume, et réécrire celles qui s'approchent de l'âge limite (avec généralement une marge conséquente par rapport à la durée de rétention garantie par les normes du JEDEC, pour éviter les pertes)

Partager sur

Sondage

Est-ce qu'Apple vous fait encore rêver ?