Comment ça marche un disque SSD (Solid State Drive)

Il est encore difficile aujourd’hui d’avoir des informations précises et détaillées sur le fonctionnement d’un disque flash ou SSD (Solid State Drive)

Que se soit sur le fonctionnement du “wear levelling“, sur l’organisation de chaque disque (différente selon le constructeur).On se heurte rapidemment au secret industriel et peu de données sortent…

nom memoire flash

D’ou vient le nom flash?

Pendant le cycle d’éffacement des blocks sur une mémoire flash, on applique une tension (électrique) sur les cellules d’un ou plusieurs blocks, ce qui “ouvre les portes”. Les électrons “s’en vont” et ca ressemble à un flash d’appareil photo…d’où le nom….

Les avantages du flash par rapport à un disque dur classique:

– Consomme moins d’énergie. Les pc portables ont donc une meilleure autonomie

– Si le pc subit un choc ou si il est secoué, le problème des têtes de lecture qui viendraient toucher les plateaux magnétique n’existe plus.

– Plus rapide

– Plus léger

Les désavantages:

– Un coût élevé

– Un durée de vie moindre qu’un disque dur classique

– En cas de panne un coût de réparation ou récupération de données plus élevé qu’un disque classique.

structure ssd disque flash

En terme de structure

1. Une puce de contrôle “Control Chip” qui va gérer tout un tas d’opérations:

– ECC Checking (Error Correction Code)qui va verifier que le block qui vient d’être écrit est bon.

– Le concept dewear levelling: Le but est d’optimiser la durée de vie des cellules flash. On garde un nombre de cycles effacement/écriture identique sur chaques cellules.

– True FFS: Contrôle le nombre de fois où on réecrit sur le même block avant qu’il soit inutilisable…On parle de 100 000 fois ce qui doit être proche de la réalité.

2. Ensuite vous avez les composants flash eux mêmes qui font peu de choses sinon stocker de l’information.(Cache inclus)

Les 3 types de mémoire flash

NOR, NAND, DRAM

NOR: Qui est plutôt utilisée pour le bios ou ce genre de choses qui ont besoin de lecture rapide. Un des problèmes des mémoires NOR est la difficulté qu’on a à écrire plusieurs fois de suite dessus.

NAND: Ce qui est utilisé aujourd’hui dans les disques SSD. J’y reviens…

DRAM: utilisé par les banques et les militaires. Très rapide. Le Dram fonctionne environs 300 fois plus vite qu’un disque dur.

Toutes ces technologies existent depuis plus de 30 ans. Les mémoires de type NAND et NOR ont été inventées en 1984 par Fujio Masuoka.

Revenons sur les mémoires NAND qui sont le type de cellules flash utilisée sur les disques SSD:

Sur un disque SSD, on enregistre et stock une information binaire donc un 0 ou un 1 (ATTENTION ce n’est pas le cas sur un disque dur comme tout le monde le dit ou pense: sur un disque dur on encode et décode un signal qui ressemble à un son…il y a d’ailleurs l’utilisation d’un préamplificateur sur un disque dur .
Si le préamplificateur tombe en panne il faut changer la tête de lecture en salle blanche.

Une cellule NAND est composée de

– Un transitor “Floating Gate”
– Une couche d’oxyde
– Un électron ou non
– Un autre transistor

Les 2 transistors vérifient si il y a une forme d’énergie de stockée dans la cellule ou non. Quant à l’oxyde, il s’agit d’une enduction fine qui permet de faire passer un électron dans la cellule.

Le passage d’un électron dans la cellule est appelé: Injection d’électron chaud.

Dans ce cas, la cellule passe à un état de 0 ( 1 etant l’état à vide…On pourrait penser l’inverse).

cellule nand disque ssd

Qu’est ce qu’une MLC (Multi layer chip)?

En fait ce sont plusieurs couches de cellules simples. Lorsqu’on écrit une info sur de la MLC on écrit toutes les couches en même temps. Plus il y a de couches, plus on peut écrire d’infos. Typiquement l’iphone d’apple utilise de la MLC.

Revenons sur une celllule unique. Le fonctionnement en MLC est identique.

Un bit=8 cellules

Un mot=16 cellules

Un secteur= 512 Bits ou 2048 Bits

Un block= 64 fois la taille d’un secteur soit 128Kbits

Un secteur a donc une taille de 512 Bit+16 Bit (si la taille totale du disque est < 256Mega) ( les 16 bits servent a étiquetter (flag) le secteur) ou alors 2048Bits +64 Bits (si la taille totale du disque est >256Mega)

L’ensemble secteur+ drapeau/étiquette (flag) s’appelle une page.

Un block est composé de 64 secteurs. Si on l’efface son état repasse à 1. On efface donc 128Kb à chaque fois et nous n’avons aucun contrôle la dessus.

Sur un disque dur tout est fragmenté en élements de 512 Bits. Le plus petit élement écrivable ou effaçable et le plus petit mauvais secteur fait 512 Bits.

Sur une mémoire de type NAND…si la plus petit unité écrivable est de 512 Bits ou 2048 Bits,
la plus petite unité effaçable quand à elle est de 128Kbits, ce qui correspond a un block.

Si par exemple une cellule est défectueuse dans un block, alors tout le block est marqué comme défectueux. Donc avec le temps le volume de stockage sur mémoire flash diminue….vite.

Sur disque dur comme sur disque ssd, il y a cependant une réserve supplémentaire de blocks. Vous pouvez voir à cet effet ce que sont une P-list et une G-list sur un disque dur classique. La P-list et G-List et les pannes de disque dur.

Sur un disque SSD, tout est géré au niveau du block (la taille varie en fonction du fabricant). On ne peut donc pas parler à un secteur en particulier comme on peut le faire sur un disque dur classique.

Un block est la plus petite entité effaçable sur NAND. On ne peut pas effacer un secteur.

Si on veut par exemple écrire une nouvelle info sur un secteur en particulier il faut d’abord effacer le block en entier si il n’est pas libre.

Si par exemple vous avez 2 fichiers sur le même block et que vous effacez un des deux fichiers, il ne le sera pas vraiment puisque le fichier “non effacé” empêchera l’effacement du block.

Sur un disque dur, si vous voulez écrire ou lire ou modifier un secteur en particulier, vous pouvez le faire.

Sur un disque ssd vous ne pouvez pas réecrire un fichier sur le même secteur…du moins pas avant d’avoir effacé le block en entier.

Si vous modifiez un fichier sur du flash vous ne pourrez pas le sauver là où il était. Il sera sauvegardé dans un nouveau block et l’ancien block sera noté “à effacer” jusqu’à ce que le cycle d’effacement passe par là.

Si un block est ajouté au cycle d’effacement il n’est pas effacé de suite..il fait la queue et donc il est théoriquement possible de parler a cet ancien block avant qu’il ne soit vraiment effacé….ce qui devient très intéressant en terme d’investigation informatique (forensic)…

Le wear levelling:

Cette partie est gérée par un software ou firmware.

L’idée est de maximiser la durée de vie des cellules flash en faisant en sorte que toutes les cellules aient le même nombre de cycle d’effacement.

Endurance en écriture:

Avec le temps la cellule s’altère et garde une forme d’énergie et devient inutilisable. Je ne suis pas sûr que l’on sache vraiment pourquoi se phénomène apparaisse mais en tous cas, ces cellules ont une durée de vie limitée.

Lors de la fabrication de cellules flash, on identifie 3 niveaux de qualité:

Mauvais, faible et fort.

Les mauvaises cellules sont écartées…les faibles vont dans la grande distribution pour les utilisateurs comme vous et moi et les fortes sont utilisées pour des applications industrielles…

Comparaison d’un secteur sur un disque ssd et un disque dur classique.

Vous pouvez donc voir que sur un disque dur classique, vous avez énormement d’informations pour pouvoir stocker des données.

*Les informations de la zone système tel que le firmware par exemple.

*La P-list et G-list qui sont des listes de secteurs défectueux de votre hdd.

*Les informations SMART

En comparaison un disque SSD est beaucoup plus basique et il faut beaucoup moins d’informations pour stocker des données.Vous avez plusieurs puces silicones qui sont virtualisées en 1 seul disque.

Un disque SSD est composé d’une:

*Header List: Qui gère les fonctions de “wear levelling” et qui déplace les données à droite et à gauche en donnant l’impression qu’elles sont au même endroit.

*Free block list: Explicite

*User Area: Qui est la seule partie à laquelle un utilisateur a accès.

La difficulté en terme de récupération de données, c’est que chaque constructeur a son propre plan de structure de disque. Donc si on veut parler a un block en particulier il faut d’abord connaître le plan du disque. Ce qui ne facilite pas la récupération de données.

Si un disque ssd à une panne physique, il y a beaucoup moins d’options pour réparer que sur un disque dur classique.

Si la panne est visible (composant brulé ou coupure sur un circuit) alors la réparation est faisable plus facilement. Mais si rien n’est visible, c’est beaucoup plus difficile et limité en comparaison d’un disque sur classique.

Si vous voulez changer les puces nand de support il faut un disque identique pour pouvoir décoder et donc accéder de nouveau aux informations. Certe il est possible pour certains cas de piloter directement des puces flash.

Si vous bougez les puces flash de support. L’opération est delicate et une fois qu’elle sont remontées sur un nouveau support il faut faire attention de ne pas avoir un cycle d’effacement qui commence et donc bouge les données et efface certains block.

Malgré les avantages du flash, en cas de panne ou besoin de récupération de données le coût est plus élevé en comparaison d’un disque dur classique.