Est-il vrai qu'une carte SD / MMC corrige l'usure avec son propre contrôleur?

51

Je ne trouve aucune information fiable à ce sujet. Je n'ai pas toutes les spécifications du matériel de la carte SD / MMC.

Est-ce vrai? Mon application de haut niveau n'a pas besoin de se préoccuper du nivellement de l'usure lorsque je travaille avec ces cartes?

MODIFIER

Quelqu'un pourrait-il confirmer que le nivellement par l' usure est garanti par la spécification SD? Je veux en être sûr, car il semble que la plupart des fournisseurs le fassent, mais cela n'est pas requis par la spécification.

Ivarec
la source
5
Tous les fabricants de supports flash n'investissent pas dans des algorithmes de nivellement d'usure. Le nivellement par l'usure est plus répandu dans les disques SSD, où les fabricants sont en tête du marché en raison des algorithmes.
Chetan Bhargava

Réponses:

43

Je travaille pour une société qui était membre de l'association SD, nous connaissons les spécifications 2.0 (SDHC). La spécification de la carte SD n'a AUCUNE entrée pour le nivellement d'usure. Cela dépend entièrement du fabricant SD pour gérer cela s’ils le souhaitent. Nous avons vu que certains le font probablement, alors que d'autres pas (méfiez-vous des cartes SD imbriquées à très bon marché). SDXC a peut-être changé cela pour inclure le nivellement d'usure, mais je n'en suis pas certain. Malheureusement, la seule façon de vraiment montrer cela est de mettre la main sur les spécifications officielles. Vous pouvez le trouver en ligne très probablement, mais l’association SD souhaite vraiment que vous payiez pour cela.

En passant, prendre une carte de 2 Go et l’écrire en commençant à la fin revient en moyenne à environ 10 To avant que la carte ne soit morte et qu’elle ne puisse plus écrire. De plus, les cartes SD ne vous préviendront pas lorsque les données sont mauvaises, c’est-à-dire qu’elles ne renverront pas d’erreur I / O comme le ferait un disque dur PC. Ce n'est peut-être pas un problème pour les conceptions intégrées, car 10 To représente beaucoup de données, mais cela pourrait être un facteur pour quelqu'un.

Kris Bahnsen
la source
2
Je suppose que même si cela n’est pas dans les spécifications, les entreprises veulent toujours le faire pour préserver leur réputation. Alors que les imitations super bon marché se moquent de la réputation, elles vendent à des personnes qui cherchent à obtenir des prix bas pour tout. Cela vous semble-t-il raisonnable?
Kellenjb
1
@ Kellenjb C'est une hypothèse très raisonnable, et je serais personnellement d'accord avec vous. Cependant, comme il ne figure pas dans la spécification et qu'il est très peu probable d'accéder aux conceptions de contrôleurs SD d'un fabricant particulier, cela ne peut pas vraiment être prouvé. Nous avons effectué de nombreux tests au fil des ans, certaines grandes marques ont de bien meilleurs résultats que d’autres. Cela peut être dû à des différences dans les algorithmes internes ou à leur absence complète.
Kris Bahnsen
4
Imitations bon marché ne vont pas se soucier même si ce est dans les spécifications. Ce n'est pas immédiatement visible pour le client, cela pourrait être manquant. Nous parlons de personnes qui vendent des bouchons de plomb en tant que CI. Je n'ai pas entendu parler d'une carte de marque qui ne nivelle pas l'usure, mais je suppose que c'est possible.
darron
@KrisBahnsen pouvez-vous préciser ce que la carte SD renvoie réellement en cas d'erreur non récupérable? Je suis très intéressé par cela. N'y a-t-il aucun moyen de détecter cette condition?
fred basset
3
@fredbasset, façon de zombie le fil;) Cela fait un moment que je n'ai pas travaillé sur une carte SD. Cependant, les cartes SD de l'IIRC elles-mêmes renverront physiquement ce qu'elles veulent. Certains des plus récents combinés avec des pilotes décents peuvent être en mesure de détecter une erreur d'E / S. Cependant, certaines des anciennes cartes SD renverront simplement les mauvaises données stockées dans NAND et les qualifieront de bonnes. Cependant, si une écriture n'est pas en mesure de se terminer, une erreur IO sera renvoyée.
Kris Bahnsen
23

C'est vrai! Les cartes MicroSD contiennent une puce flash NAND liée à un microcontrôleur (ARM) encapsulé dans du plastique noir. http://www.bunniestudios.com/blog/?p=898 explique.

À la fin du post de suivi http://www.bunniestudios.com/blog/?p=918, Bunnie affirme que l'intégration du contrôleur coûte probablement moins que de tester le flash à l'avance.

Citant le manuel produit de la carte SD de SanDisk: "1.9. Nivellement de l'usure. Le nivellement de l'usure fait partie intégrante de la fonctionnalité de regroupement d'effacements de la carte SD, qui utilise la mémoire NAND." Vous pouvez lire le tout dans la fiche technique d'une carte de marque SanDisk .

Joeforker
la source
1
Bunnie Huang est vraiment assez crédible pour moi!
vicatcu
C'est bon à savoir, mais j'attendrai quelqu'un qui puisse éclairer cette question sur la base des spécifications formelles de cette technologie.
ivarec
2
Digikey m'a montré cette brochure inutile de SanDisk lorsque j'ai essayé de rechercher une fiche technique. Les fiches de données Wintec et Swissbit étaient meilleures, et les deux mentionnaient le nivellement par l'usure. Pouvez-vous créer un lien vers cette fiche technique hébergée par Digikey?
Kevin Vermeer
Celles-ci sont bien meilleures que l'ancienne SanDisk.
joeforker
Le Wintec n'était pas génial, mais le nouveau SanDisk est le meilleur du lot! Merci pour l'édition.
Kevin Vermeer
19

Oui, les cartes SD / MMC ont des contrôleurs qui nivellent l’usure. S'ils ne le faisaient pas, vous pourriez en détruire un en quelques minutes avec de mauvais modèles d'écriture.

C'est en fait un problème pour certains projets intégrés. Il n’ya absolument aucun moyen (apparemment) de savoir quels secteurs sont susceptibles d’être nivelés à tout moment, donc un cycle d’alimentation au mauvais moment peut détruire les données n’importe où sur la carte, où que vous pensiez. (ne demandez pas comment je sais :))

Les cartes SD doivent être utilisées avec un système garantissant un arrêt complet du système (ou au moins, que l'écriture est autorisée à se terminer), sans quoi une perte de données en résulterait (éventuellement).

MODIFIER

Le problème est que le processus de nivellement d'usure est entièrement caché. N'IMPORTE QUEL secteur sur le disque peut être déplacé à tout moment (échangé avec la page écrite), et en cas de panne de courant au milieu de ce processus, ce secteur aléatoire pourrait être corrompu.

Bien qu'il existe des moyens raisonnablement sûrs d'implémenter ce mouvement, il ne figure dans aucune spécification et vous ne pouvez donc pas vous assurer que la carte le fera. Vous pouvez tester une carte, le faire fonctionner, puis le fabricant peut modifier la mise en oeuvre sans changer le numéro de pièce et vous êtes foutu.

Lors des tests, le contrôleur de ma carte SD ne le fait PAS du tout de manière sûre.

Je peux regarder dans une carte SD "haute fiabilité" que j'ai vu annoncée spécifiquement pour la tolérance de panne de courant ... mais alors vous devez faire confiance au fabricant pour le faire correctement, et je ne le fais pas. Je veux vraiment un contrôle direct sur les pages effacées. J'essaie encore de comprendre celui-ci.

Darron
la source
4
Voir ma réponse postée. Puisque les algorithmes de nivellement d'usure sont à la hauteur du fabricant, ils pourraient ne pas être à la hauteur. Un bon algorithme de nivellement d'usure déplace d'abord les données, puis les marque comme bonnes, puis les ordures collectent les données d'origine. Cela pourrait être un problème sur certaines cartes, peut-être pas d'autres. SD est une conception très laide quand on va au fond des choses.
Kris Bahnsen
2
Oui, c'est une norme de merde en ce qui me concerne. Il est très gênant qu'une norme aussi omniprésente en matière de stockage en mémoire ne soit fondamentalement si fiable.
darron
2
@jpc: Peut-être que je ferais une entrée de blog alors. J'ai l'impression que ce n'est pas souvent considéré. Je n'ai pas réalisé moi-même les implications jusqu'à ce qu'il soit trop tard. Je me suis battu avec cela, j'ai discuté avec le fabricant de ma carte SD, etc. Aucune solution autre que de réduire le temps d'écriture. J'écris maintenant sur NAND Flash et copie sur SD une fois par jour le plus rapidement possible. Il existe des cartes SD conçues pour être "résistantes" à des pannes de courant aléatoires, mais je ne suis pas sûr que même celles-ci soient totalement fiables.
darron
2
@fred basset Bizarrement, les spécifications sur les cartes industrielles semblent avoir changé depuis la rédaction de cette réponse. Je me voyais des cartes microSD avec des garanties sur les écritures (journalisé, je pense) ... maintenant, ils ne font pas une telle réclamation. En parlant à un fabricant, ils utilisent maintenant des supercaps… mais seules les cartes Compact Flash ont de la place pour elles. Faire les choses en toute sécurité réduit trop les performances. Ils disent de fournir en quelque sorte suffisamment d’alimentation de secours pour effectuer une écriture. Étant donné la complexité des SBC ARM modernes, il est très difficile à faire si la conception de référence du fournisseur ne le fait pas. Aucun que je sache faire.
darron
2
@freq basset J'utilise UBI & UBIFS. Cela semble bien fonctionner ... Cela fait des années que beaucoup de systèmes fonctionnent sans problèmes.
darron
12

N'importe quel type de carte SD utilisant n'importe quel type de mémoire flash NAND conventionnelle va devoir utiliser un type de virtualisation de secteur, car aucun périphérique flash NAND conventionnel ne peut prendre en charge l'effacement de secteurs individuels de 512 octets et aucun périphérique flash NAND conventionnel de taille significative. serait capable d’obtenir des performances proches de l’ordre de grandeur si chaque tentative d’écriture d’un secteur obligeait le périphérique à copier tous les secteurs du bloc d’effacement de ce secteur (même en RAM), puis d’effacer le bloc et d’écrire tous les secteurs en arrière. La plupart des techniques de virtualisation de secteur impliquent en quelque sorte un nivellement par l'usure. Je m'attendrais à ce que le plus gros problème de variance entre les appareils de qualité et les imitations soit le degré auquel un appareil essaie activement de niveler la mise à niveau entre les blocs, par rapport à l'utilisation simplement d'allocation de blocs pseudo-aléatoire et à l'espoir d'obtenir des résultats acceptables, proches de l'uniformité. En pratique, je m'attendrais à ce que même une allocation aléatoire / espoir-pour-le-meilleur convienne dans la plupart des cas.

supercat
la source
Il se peut très bien que le "nivellement d'usure" mis en œuvre par certains fabricants soit causé par l'interface NAND elle-même et empêche un secteur à l'autre de bloquer la virtualisation.
Kris Bahnsen
1
@KrisBahnsen: Je m'attendrais à ce que les fabricants qui revendiquent un nivellement par l'usure surveillent activement l'usure relative de différents blocs et l'âge des données, et si des blocs contenant des données de longue durée se révèlent être des blocs avec moins d'usure que la moyenne les données de ces blocs seront transférées dans des blocs plus usés (de manière à minimiser l'usure future de ces blocs). Cela pourrait multiplier par 10 la durée de vie utile d'un appareil rempli à 95% de données qui ne changent jamais, alors que les 5% d'espace restant sont fréquemment utilisés.
Supercat
Je suis d’accord, s’ils font de la publicité, j’imagine qu’ils feraient une sorte de véritable nivellement de l’usure. Je suis un peu négatif sur tout le sujet pour lequel je m'excuse; J'ai été mordu à quelques reprises par les bizarreries de SD.
Kris Bahnsen
1
@KrisBahnsen: Je pense que le plus gros problème est un modèle de virtualisation qui suppose un groupe linéaire de secteurs de 512 octets numérotés de manière consécutive. L'interface avec DOS a peut-être été pratique, mais cela ne correspond pas vraiment au matériel existant, ni à ce que le logiciel hôte souhaite vraiment. Ouvrez les numéros de blocs à 64 bits et laissez-les être non consécutivement arbitrairement, puis organisez le stockage des fichiers dans des blocs consécutifs. Pour supprimer un fichier, supprimez sa plage de blocs.
Supercat
2
C'est peut-être la meilleure réponse. Je suppose que c'est comme ça qu'ils le font tous. Si vous y réfléchissez, il n’ya aucun moyen de faire un nivellement déterministe de l’usure avec un algorithme vraiment sophistiqué, car l’ historique de l’ usure lui - même devrait être stocké quelque part sur la même carte et cette partie échouerait en premier. La mise à niveau aléatoire est la seule possibilité pratique. Je ne suis pas convaincu que les disques SSD sont plus intelligents. Ils peuvent simplement avoir plus de tampons de remplacement, bien qu'il soit certainement possible qu'ils stockent des informations d'usure très grossières (et donc rarement mises à jour).
Nimrod
7

Sandisk a un livre blanc qui explique la logique de mise à niveau des cartes dans ses cartes, puis donne une estimation de la durée de vie de la carte selon plusieurs scénarios. Résumé: à moins que vous ne marteliez la carte sans arrêt, elle durera des décennies.

Michael Slade
la source
Link est mort et le contenu semble avoir été supprimé - parce qu'il en a révélé trop, peut-être?
Cuadue
6
@Cuadue Le lien est accessible. Au cas où cela casse, la page est maintenant archivée à l'
adresse
2

Il est intéressant de noter que malgré cela, de nombreux périphériques corrompent les cartes SD et microSD, notamment celles à haute densité, si la batterie est faible ou si le téléphone se bloque / s’éteint / etc. Je soupçonne que le problème est une régulation inadéquate de l’alimentation en tension, car il est bien connu sur certaines cartes (toux Ad t / toux) d’entraîner le phénomène d’une carte illisible sur certains lecteurs externes mais fonctionne bien sur la micro-variété fournie par certains magasins d'informatique.

Je suis en train de récupérer une carte en ce moment avec cette erreur. Étrangement, la plupart des données sont récupérables, mais certains secteurs ne le sont pas, même si cela change à chaque tentative. L'usure de nivellement elle-même pourrait-elle être en cause? (oui essayé plusieurs lecteurs, même faute!)

Énigme
la source
0

Également eu un certain succès "nuking" cartes de zombies, à savoir ceux qui ne compléteront pas un format ou sont en lecture seule. Ne fonctionne que sur un petit pourcentage mais ils sont beaucoup plus sensibles que la plupart des directives "officielles" à cet effet.

Une carte de test ainsi traitée a duré quatre mois complets avant d’échouer de nouveau. Sans l’appareil utilisé pour fournir une tension bruyante, sa durée de vie aurait peut-être été plus longue.

Problème 5642Z
la source
1
Par "nuking", vous voulez dire le mettre dans un micro-ondes? A quelle puissance et combien de temps?
0x6d64
Euh, non :-) Aussi, pourquoi faire cela lorsqu'une décharge luminescente (RF) aurait un effet similaire et serait beaucoup moins dangereuse que la méthode que j'ai utilisée? Il s'avère que les cartes USD sont beaucoup plus sensibles en raison de l'absence d'un boîtier en métal sur un côté.
Conundrum5642Z le
Je ne peux ni confirmer ni nier que le terme «nuking» désigne l'utilisation d'un «gadget» 5642 + HVPS pour des raisons juridiques. Cependant, cela a fonctionné à plusieurs reprises, et la technique est maintenant connue comme je l'ai publiée sur HaD etc.
Conundrum