Les disques SSD, la fin des disques durs

La durée de vie de la mémoire flash

Une des remarques que l’on voit le plus dès que l’on parle de la mémoire flash, c’est sa durée de vie. Nous allons expliquer la raison de cette durée de vie limitée, et pourquoi ce n’est pas véritablement un problème actuellement.

Pourquoi la durée de vie est-elle limitée ?

Il y a deux raisons à la durée de vie limitée de la mémoire flash. La première vient de l’oxyde utilisé pour séparer les grilles. Comme nous l’avons vu, les électrons doivent traverser cet oxyde pour passer dans la grille flottante ou en sortir. De temps en temps, il peut arriver que des électrons restent captifs de cet oxyde, et soient relâchés plus tard, ce qui peut perturber les écritures et la lecture.

La deuxième vient de la structure de la grille flottante elle-même : avec le temps, les tensions élevées peuvent l’endommager, ce qui à terme va la rendre inutilisable. On considère généralement qu’une cellule de mémoire SLC peut subir environ 100 000 écritures avant destruction, et que la mémoire MLC est moins endurante : entre 3 000 et 10 000 cycles d'écriture, en fonction de la finesse de gravure. Une mémoire intermédiaire, la eMLC, atteint 30 000 cycles.

Comment remédier au problème ?

La majorité des dispositifs utilisant de la mémoire flash disposent d’un contrôleur interne, qui va gérer les accès à la mémoire. Il est utilisé pour les transferts de données, mais aussi pour vérifier que le dispositif fonctionne bien.

Ce contrôleur vérifie automatiquement les écritures en relisant la dernière donnée écrite. S’il lui est impossible de la relire, le bloc complet est déterminé comme défectueux et l’écriture est relancée sur un autre bloc. Donc sauf si la mémoire flash est entièrement utilisée ou défectueuse, les données seront écrites sur le support.

La deuxième vérification s’effectue aussi durant l’écriture, avec la correction d’erreurs ECC. Toutes les puces de mémoire flash disposent de bits de contrôle, qui servent à la vérification des données écrites. En général, le contrôle ECC permet de corriger les erreurs de 1 bit et de détecter les erreurs sur 2 bits. Dans ce deuxième cas, le bloc est indiqué comme défectueux et l’écriture relancée sur un autre bloc.

Une petite explication sur le fonctionnement. On dispose de 3 octets d’ECC par bloc de 512 octets (donc 24 bits). À chaque écriture, le code ECC est calculé et écrit dans la zone inutilisée des blocs de données. Pendant la relecture, le code ECC des données est calculé et comparé au code ECC de départ (celui calculé à l’écriture). Si les deux codes sont identiques, le travail continue. Le premier cas intervient s’il y a une erreur sur 1 bit, à ce moment-là c’est corrigé et l’écriture continue. Enfin, il se peut qu’il y ait une erreur de 2 bits, ou une erreur dans le code ECC lui-même. Ces deux cas spécifiques ne sont pas corrigibles, et l’écriture est relancée sur un autre bloc et le bloc est indiqué comme défectueux. La mémoire réservée, dont nous parlons dans les prochaines pages, sert à gérer ce genre de cas.