Il est difficile de ne pas être satisfait de la vitesse des SSD actuels. Mais il serait idiot de ne pas s’enthousiasmer à l’idée qu’ils puissent être rendus quatre fois plus rapides par des astuces logicielles. Une équipe de chercheurs japonais, menée par un des inventeurs de la mémoire MLC, travaille à une optimisation du dialogue entre le système d’exploitation et le contrôleur du SSD capable de réduire la fragmentation des données et d’augmenter jusqu’à 300 % la vitesse d’écriture.
Les SSD souffrent d’un problème lié à la nature même de la mémoire Flash : avant de pouvoir écrire dans une cellule, il faut l’effacer. Or, la mémoire d’un SSD est découpée en pages (de 4 ko par exemple), elles-mêmes regroupées en blocs (de 128 pages par exemple). Le contrôleur peut écrire sur chaque page individuellement, mais il ne peut effacer que par bloc. L’écriture d’une seule page (4 ko) dans un bloc déjà occupé nécessite donc la copie de tout le bloc dans une zone tampon, puis l’effacement et la réécriture de tout le bloc. C’est le phénomène d’amplification de l’écriture, qui ralentit fortement les performances. Pour l’éviter, le plus simple est de toujours pouvoir écrire sur des pages vierges, mais à mesure que le SSD est utilisé, celles-ci se raréfient. C’est pourquoi les SSD utilisent des routines internes ramasse-miettes (garbage collection) qui passent avant (ou après) une écriture effective pour, schématiquement, regrouper les données de plusieurs pages partiellement occupées dans une page pleine, afin de recréer des pages vierges.
Ces processus ont malheureusement un coût en termes de temps (jusqu’à 100 ms rajoutées) et d’usure du SSD (la consolidation ajoute des cycles d’écriture). L’idée des chercheurs est de faire écrire les nouvelles données pendant le passage du ramasse-miettes. Concrètement, une couche intermédiaire – le LBA Scrambler – est introduite entre l’OS et le contrôleur du SSD. Avant chaque écriture, le contrôleur envoie au LBA Scrambler la liste des adresses des pages encore vides dans le bloc qui sera traité par le garbage collector. Le LBA Scrambler demande alors à ce que les nouvelles données soient écrites dans ses pages. Le garbage collector incorpore ainsi les nouvelles données aux anciennes et crée en une seule passe des pages consolidées.
Cette astuce permet, dans le meilleur des cas de quadrupler la vitesse d’écriture. Les gains sont la plupart du temps plutôt de l’ordre 30 à 50 %. L’usure du SSD est également diminuée de 55 % et même la consommation d’énergie est abaissée de 60 %. Enfin, puisque cette optimisation est une surcouche logicielle, elle peut théoriquement être appliquée rapidement, sur tous les SSD existants.