Nous commencons avec un disque vierge (cliquez ici pour remettre le système à zéro). Notre disque d'exemple contient 4 blocs de 9 pages, donc une capacié de 147.456 octets.
Status blocs (HDD) et pages (SDD)
| Vierge
|
---|
| En fonction
|
---|
| Invalide (uniquement SSD)
|
---|
| TRIM (uniquement SSD *)
|
---|
|
---|
Disque dur (HDD)
|
---|
|
---|
Solid State Disk (SDD)
|
---|
|
---|
SSD avec fonction TRIM
|
---|
|
---|
Cliquez sur les liens (dans l'ordre!) pour voir l'animation
- Le système d'exploitation formate le disque. Nous supposons que le répertoire a toujours une longueur d'un bloc (indiqué Δ). Le disque devient rouge pendant l'opération pour avoir une idée de la durée de l'opération.
- On écrit un petit fichier. On écrit le fichier A au premier endroit disponible et le répertoire est mis à jour. Le système d'exploitation modifie les données du répertoire sur place, mais un SSD ne peut pas modifier des données. Le SSD utilise une page vierge pour le répertoire et invalide l'ancien emplacement. Le système d'exploitation croit toujours que le répertoire se trouve à la même place, ce qui n'est plus le cas. Le tableau d'adresses du SSD effectue la translation.
- Le fichier A est étendu d'une page à 2 pages. C'est une situation qui se présente souvent (fichiers log, répertoires, registry, fichiers de données). Le système d'exploitation écrit le fichier à la même place et y ajoute un bloc. Le SSD doit utiliser de nouvelles pages. Le répertoire et le fichier ne se trouvent plus à leur place d'origine (assignée par le système d'exploitation).
- On écrit le fichier B. Le fichier B est écrit à la première place disponible. le répertoire est mis à jour.
- Le fichier B est étendu d'une page. Alors que le disque est utilisé à moins de 50%, il n'y a pratiquement plus de pages vierges.
- On efface le fichier B. Le système d'exploitation indique qu'un fichier est effacé en le signalant dans le répertoire. Les données du fichier restent sur place. Le SSD croit que le fichier existe toujours et va recopier (inutilement) son contenu lors d'opérations d'effacement. Linux et Windows 7 disposent de la commande TRIM avec laquelle ils indiquent les emplacements qui sont libérés. Une page libérée (en jaune) est comparable à une page invalidée (en rose). C'est à partir d'ici que le fonctionnement d'un SSD avec système d'exploitation utilisant la fonction TRIM diffère d'un système d'exploitation classique.
- On écrit le fichier C (5 pages). Il y a trop peu de place disponible. Le premier morceau du fichier est écrit aux emplacements disponible, puis il faut effacer un bloc. Nous avons heureusement un bloc qui ne contient que des pages invalidées. On efface le bloc, le reste du fichier est écrit, et puis on écrit à nouveau le répertoire.
- Le fichier C est modifié et étendu (1 page). Il y a à nouveau trop peu de place.
Sans fonction TRIM:
- Le bloc 1 contient le fichier A et des pages invalidées.
- Le bloc 2 contient le second bout du fichier C, le répertoire et qquelques pages vierges.
- Le bloc 3 contient un répertoire invalidé et le fichier B (le SSD ne sait pas qu'il n'existe plus)
- Le bloc 4 contient le reste du fichier B, le premier morceau du fichier C et deux répertoires invalidés.
Aucun bloc ne contient que des pages invalidées, mais l'effacement du premier bloc fournira le plus de pages vierges. On déplace le fichier A vers la mémoire vive, on efface le bloc et on réécrit le fichier A, le reste du fichier C et le répertoire.
Avec la fonction TRIM:
- Le bloc 3 ne contient que des pages invalidées et un fichier effacé
On peut donc effacer tout le bloc sans avoir à recopier des données.
- On augmente le fichier A (3 pages). Le fichier est fragmenté en deux morceaux sur le disque classique.
Sans TRIM:
On peut placer le fichier dans les pages vierges qui restent, mais il faut à nouveau libérer un bloc pour le répertoire. Le disque SSD décide d'effacer le bloc 4. Comme le SSD ne sait pas que le fichier B n'existe plus (fichier fantôme), il est recopié.
Avec TRIM:
Le fichier et le répertoire sont placés dans les pages vierges du bloc 3.
Comme vous l'aurez remarqué, le SSD dispose d'une mémoire vive autonome qui a au minimum la grandeur d'un bloc (pour y placer le contenu non-invalidé en cas d'effacement). Il y a un phénomène d'amplification d'écriture qui se produit: l'écriture d'un petit fichier produit plusieurs opérations d'écriture au niveau de la mémoire flash. Or il faut essayer d'éviter les opérations d'écriture, car elles usent la mémoire.
Les disques SSD plus chers disposent d'une alimentation de secours (de gros condensateurs) qui permet de terminer une opération sans perte de données. Si la panne de courant se produit pendant une phase d'effacement, le disque pert le contenu de tout un bloc, ce qui n'est pas le cas avec les SSD de meilleure qualité technique.
Nous avons utilisé ici un format très élémentaire: un seul répertoire et les fichiers (comparable à DOS 3.0). Plus le format devient complexe (FAT, NTFS) et plus il faut d'opérations d'écriture pour stocker un seul fichier. Les SSD préfèrent donc les formats les plus simples (comme le format FAT) qui occasionnent moins d'opérations d'écriture par fichier à modifier.
|