UNE NOUVELLE VERSION D'INFOBIDOUILLE EST EN LIGNE CLIQUEZ-ICI POUR LA VISITER

OCZ Vertex : la nouvelle star des SSD ?

L'usure et le TRIM

Avant de conclure, nous sommes obligés de parler de la fonction TRIM, qui est un peu la cerise sur le gâteau avec ce SSD... Pour comprendre l'intérêt de cette commande, il faut tout d'abord se pencher sur le mode de fonctionnement de la mémoire flash, qui est très différent de celui d'un disque dur.

Sur un disque dur, les données sont découpées en secteurs, généralement de 512 octets, et chaque opération de lecture ou d'écriture sur le disque se fait sur un multiple de la taille d'un secteur.

Avec les SSD, l'adressage logique se fait également par secteurs de 512 octets, pour garantir une parfaite compatibilité avec l'existant, mais en interne les choses changent radicalement. La mémoire flash est en effet découpée en blocs de plusieurs dizaines de Ko (512 Ko dans le cas du Vertex), eux même découpés en pages de quelques Ko.

La lecture et l'écriture se font page par page, mais l'écriture ne peut se faire que sur une page vierge, c'est-à-dire une page qui n'a jamais été écrite ou qui a été préalablement effacée. Et c'est là que se pose le gros problème des SSD : l'effacement se fait bloc par bloc, et non page par page. Ainsi, dans le pire des cas, l'écriture d'un secteur de 512 octet va entrainer la lecture de 512 Ko, l'effacement de ces 512 Ko, puis la réécriture de ces 512 Ko, en prenant juste soin de modifier au passage les 512 octets que l'on voulait réécrire.

Pour éviter ce problème, il faut que le SSD sache quelles cellules sont libres, ce qui permet de les effacer sans avoir à les lire au préalable. Sur un SSD neuf, les performances sont donc maximales : le contrôleur sait que toutes les cellules sont vierges, et les écritures se font au maximum des capacités du contrôleur. Mais une fois que toutes les cellules ont été écrites une fois, le contrôleur devient incapable de savoir lesquelles sont libres, en dehors des quelques cellules de réserve prévues pour cet usage, et les opérations d'écriture vont donc se ralentir, le contrôleur devant effectuer de nombreux traitements supplémentaires. Ni le Vertex ni le Samsung PM410 n'échappent à ce problème, comme le montrent leurs performances après un certain temps d'utilisation :

OCZ Vertex "usé" : lecture séquentielle OCZ Vertex "usé" : écriture séquentielle OCZ Vertex "usé" : lecture aléatoire OCZ Vertex "usé" : écriture aléatoire

Performances du Vertex "usé"

Samsung PM410 "usé" : lecture séquentielle Samsung PM410 "usé" : écriture séquentielle Samsung PM410 "usé" : lecture aléatoire Samsung PM410 "usé" : écriture aléatoire

Performances du Samsung PM410 "usé"

On remarquera au passage que le Samsung souffre plus en écriture aléatoire, alors que l'OCZ Vertex perd surtout en séquentiel.

Ceci n'est heureusement pas une fatalité, un effacement du SSD via la commande ATA d'effacement sécurisée redonne généralement un coup de jeune au SSD, qui retrouve ses performances d'origine. Mais le problème, c'est que l'utilisation de cette commande efface l'intégralité du contenu du SSD, et ne résoud que temporairement le problème, qui finira par survenir à nouveau... C'est là que la commande TRIM intervient.

Prévue pour la prochaine évolution de la norme ATA, la commande TRIM est destinées spécifiquement aux SSD : elle permettra aux systèmes d'exploitation d'informer le contrôleur du SSD lors de la suppression d'un fichier, pour lui signaler que les adresses qu'il occupait peuvent désormais être considérées comme libre. Sachant ça, le contrôleur pourra anticiper les effacements, pour maximiser le nombre de pages vides prêtes à être réécrites.

Cette commande n'étant pas encore normalisée, Indilinx en a réalisé sa propre implémentation, qui s'appuyer sur un petit logiciel à lancer périodiquement et qui va analyser le système de fichier pour repérer les adresses libres et en envoyer la liste au contrôleur du SSD. Ce logiciel est disponible pour l'instant uniquement pour Windows, mais une version Mac devrait arriver prochainement.

Wiper

Cette solution ressemble donc pour l'instant à un petit bricolage, et est probablement moins efficace que ne le sera la vraie commande TRIM (puisqu'elle sera lancé par le système dès la suppression d'un fichier, et pas seulement une fois de temps en temps au lancement d'un programme) tout en étant plus contraignante (ne fonctionne qu'avec certains systèmes de fichiers et OS, ne fonctionne pas sur les sytèmes RAID, etc...), mais elle tient tout de même ses promesses, en restaurant les performances du Vertex :

OCZ Vertex "trimé" : lecture séquentielle OCZ Vertex "trimé" : écriture séquentielle OCZ Vertex "trimé" : lecture aléatoire OCZ Vertex "trimé" : écriture aléatoire

Performances du Vertex après TRIM