Sur Internet, il y a eu une émeute appelée «pourquoi charger une clé USB». À première vue, c’est drôle, mais je propose de repenser et de comprendre le problème. Après avoir lu cet article, vous commencerez également à charger vos clés USB.
Personnellement, le concepteur en chef de l'une des entreprises de l'industrie de la radio-électronique a jeté le lien vers l'article avec le libellé "voulez-vous hennir?"
Quelques liens connexes:
- www.youtube.com/watch?v=EuCSS9VtxCA
- zen.yandex.ru/media/id/5cebc7044d24ad00b31ddccc/zachem-liudi-zariajaiut-fleshnakopiteli-5d113734e1551900b0ad97a9
Bien sûr, j'ai ri, mais pas sur ce que vous pensiez. J'ai dû participer au développement de disques SSD basés sur la mémoire flash NAND, y compris pour les clés USB. À première vue, pour une personne avertie en technologie, il semble évident que la connexion du lecteur au chargeur n'a pas de sens, car en plus de fournir de l'énergie, aucune autre action n'est effectuée avec le lecteur, par conséquent, nous n'obtiendrons rien à part la dissipation thermique. Il existe de nombreuses "révélations" différentes sur Internet, des rires et même des plaisanteries sur les humanitaires pauvres qui se demandent s'il vaut la peine de charger une clé USB. Vous pouvez rire, mais j'ai vu de mes propres yeux comment les développeurs de clés USB "chargeaient" leurs produits en les installant dans des chargeurs pendant un moment!
Une clé USB est un périphérique de stockage par blocs: tout l'espace d'adressage est divisé en secteurs de 512 octets. Le système d'exploitation peut accéder à l'adresse d'un secteur spécifique (LBA) et la lire ou l'écraser, tout est simple.
Jetons maintenant un œil sous le capot de notre clé USB ...
La clé USB comprend des microcircuits:
- manette;
- MĂ©moire flash NAND.
Les puces mémoire sont assez spécifiques en termes d'adressage, d'écriture et de stockage des données, ce qui est dicté par son architecture (et nous devrions l'aimer tel quel). Les règles suivantes sont définies pour NAND-flash:
- La mémoire est divisée en blocs de l'ordre de mégaoctets;
- Avant d'écrire dans un bloc mémoire, il doit être effacé. Lors de l'effacement, tous les octets de données du bloc sont mis à 0xFF;
- Le bloc se compose de pages d'une taille de dizaines de kilo-octets;
- , ;
- ;
- .
Ici, cet ensemble de règles transforme une action aussi simple (du point de vue de l'utilisateur) comment écrire un secteur sur une clé USB en un véritable puzzle pour le développeur du contrôleur de cette même clé USB.
Essayez d'imaginer comment vous résoudriez ce problème, et vous verrez des similitudes avec la tour jouet de Hanoi .
Afin de «se faire des amis» l'adressage de bloc convivial du lecteur et l'adressage sadique de la mémoire flash NAND, un processeur tourne à l'intérieur du contrôleur du lecteur flash, qui implémente l'algorithme de traduction d'adresse, aka FTL (Flash Translation Layer). Les tâches de l'algorithme FTL comprennent:
- construire et maintenir une table de mappage de pages;
- Collecte des ordures;
- nivellement d'usure des blocs de mémoire flash NAND.
Des personnes compétentes diront qu'il ya aussi d' autres tâches, telles que le suivi des blocs défectueux de la mémoire flash NAND (gestion des blocs défectueux), mais je ne veux pas parler de cela maintenant, car il ne concerne pas le cas en cours ...
Un petit programme éducatif sur les points indiqués :
Mappage de page
Eh bien, ici, peut-être, tout est clair ... L'espace d'adressage logique du lecteur (LBA) est traduit en adresses de blocs et de pages de mémoire flash NAND (adresse physique) à travers un énorme tableau, dont l'index signifie LBA, et la valeur de l'élément est l'adresse physique. S'il est nécessaire de réécrire une page, les données de cette page sont écrites dans un bloc libre dans l'ordre, puis, dans le tableau, le numéro de page est remplacé par le nouveau. Lorsqu'un élève achète un lecteur flash de 32 Go et découvre qu'il ne dispose que de 29 Go, l'étudiant ne sait pas encore que ce ne sont pas les Chinois qui ont volé l'espace manquant dans l'usine, mais les développeurs de l'algorithme FTL. Pour pouvoir écrire des données sur le lecteur.
Collecte des ordures
Et qu'adviendra-t-il de la page qui a perdu sa pertinence? Les données qui y sont écrites ne sont plus nécessaires, mais nous ne pouvons pas les effacer, car l'effacement n'est autorisé que par blocs et dans le même bloc, il peut encore y avoir des pages réelles. Tôt ou tard, une situation se développera lorsque nous n'aurons plus de blocs libres dans lesquels nous pouvons écrire des pages. Mais, dans les blocs restants, ici et là , il y aura des pages non pertinentes. Pour éviter que cela ne se produise, les lecteurs exécutent la fonctionnalité d'un "garbage collector", qui est engagé dans la recherche de blocs "fuyants", qui ont le moins de pages pertinentes, et transfère les pages réelles vers un nouveau bloc. Ainsi, le bloc "qui fuit" est complètement libéré des pages réelles et peut être effacé ... Et dans le nouveau bloc, toutes les pages restent pertinentes. Réminiscence de la défragmentation.
Nivellement de l'usure
Rien ne dure éternellement sous la lune, en particulier le flash NAND. Il se trouve que la mémoire flash NAND a une ressource limitée, qui s'exprime par un nombre limité de cycles d'effacement de bloc (âge de bloc). Les blocs qui ont été effacés plus souvent (vieux blocs) sont plus susceptibles d'échouer que ceux moins usés (blocs jeunes).
Avez-vous déjà pensé à déplacer la table FAT à partir des adresses zéro du lecteur ailleurs afin de ne pas effacer un trou dans l'espace d'adressage du lecteur flash? Ceci est peu probable et ne devrait pas être pensé. Parce qu'un mécanisme de nivellement d'usure de bloc fonctionne dans le lecteur flash. Son essence est que les jeunes blocs sont obligés d'échanger leurs places avec les anciens afin que l'usure de tous les blocs soit uniforme pendant le fonctionnement du lecteur. Ainsi, le lecteur a une chance de vivre heureux pour toujours jusqu'à ce que tous ses blocs meurent en un jour.
Et maintenant Ă propos de la chose principale - pourquoi "charger" le lecteur flash?
1) Avez-vous déjà eu une situation où vous allez laver vos chaussettes jour après jour, mais chaque soir, il s'avère que ce n'est pas le cas? Et puis il arrive un tel moment qu'il ne reste tout simplement plus de chaussettes propres pour demain! Et puis il faut sacrifier le sommeil pour laver ses chaussettes. C'est encore pire si vous devez être en retard au travail avec un sèche-cheveux à la main.
La même chose se produit avec l'algorithme de garbage collection dans FTL. L'utilisateur utilise souvent une clé USB pour transférer certaines données d'un ordinateur à un autre. Dans ce cas, le scénario des actions est le suivant: branchez la clé USB à l'ordinateur - écrivez rapidement les fichiers - retirez la clé USB - exécutez sur un autre ordinateur - branchez la clé USB - lisez les fichiers. Après un certain temps, l'utilisateur commence à remarquer que sa conduite est lente. Habituellement, dans de tels cas, le péché est que «eh bien, c'est juste une vieille clé USB bon marché. Tiens, j'en achèterai un nouveau, il volera! " Et ça le sera vraiment! Mais elle souffrira probablement le même sort après un certain temps. Le fait est que le scénario de ces "courts métrages" ne permet pas à l'algorithme de ramassage des ordures de libérer des blocs pour l'écriture, ce qui, tôt ou tard, conduira au fait qu'il n'y aura tout simplement plus de blocs libres.Et puis le contrôleur est obligé de traiter d'abord les blocs de libération, puis de ne leur écrire que vos fichiers, d'où la perte de vitesse. Pour être prêt à recevoir vos données à pleine vitesse, le lecteur a besoin de temps libre pour «laver les chaussettes» au préalable. Comme vous pouvez le deviner, "charger" le lecteur flash supprime ce problème, laissant au contrôleur suffisamment de temps pour rétablir l'ordre dans les données.
2) Le problème du manque de «temps personnel» du contrôleur est également pertinent pour l'algorithme de nivellement d'usure. L'algorithme de nivellement d'usure est exécuté par le contrôleur lorsque le variateur est inactif, alors qu'il n'y a aucune tâche pour écrire ou lire les données utilisateur. Si le lecteur fonctionne en mode "courts métrages", il n'y a tout simplement pas le temps de niveler l'usure du bloc. Une usure inégale des blocs conduit au fait que les anciens blocs échouent. Dans le même temps, le nombre de blocs disponibles pour l'écriture diminue jusqu'à ce qu'un moment critique arrive, quand il n'y aura tout simplement pas de blocs libres pour l'écriture, bien que la mémoire flash NAND dans son ensemble ne soit pas encore épuisée et pourrait servir pendant longtemps.
3) L'évolution nous a appris à enterrer les objets de valeur qui nous sont chers quelque part loin des passages. Cela fonctionne bien pour les trésors et les îles inhabitées. Mais avec les données numériques et NAND, le contraire est vrai. Vous avez sûrement eu des cas où vous avez jeté des photos du mariage d'un ami sur un lecteur flash, le lecteur flash est resté dans un tiroir pendant un an (comme il vous a semblé, sain et sauf), puis certaines des photos n'ont été lues qu'à moitié. Le fait est que les informations une fois enregistrées dans la mémoire flash NAND peuvent «pourrir» avec le temps. Le fabricant de la mémoire ne garantit pas la rétention des données à 100%, mais annonce simplement la probabilité d'erreurs sur les bits.
Bien sûr, le contrôleur de lecteur résout le problème de l'élimination des erreurs de bits en ajoutant du code redondant aux données, mais quelle que soit la taille de ce code, au fil du temps, la charge dans les cellules de mémoire NAND se dissipera et le nombre d'erreurs de bits peut dépasser toute capacité de correction. Vous ne pouvez pas laisser les données pendant longtemps seules dans la mémoire flash NAND, vous devez en prendre soin. À savoir - écraser périodiquement. Le contrôleur approprié relit périodiquement les données, vérifie le nombre d'erreurs sur les bits et réécrit les données si nécessaire (jusqu'à ce que le nombre d'erreurs sur les bits dépasse la valeur autorisée). Bien entendu, le contrôleur a également besoin de «temps libre» pour cela.
De tout ce qui précède, je vais résumer: n'hésitez pas à "charger" les lecteurs flash, cela a un effet bénéfique sur leurs performances et leur fiabilité. Et si des techniciens vous frappent, donnez-leur simplement un lien vers cet article.