¿Es cierto que una tarjeta SD / MMC se desgasta nivelando con su propio controlador?


51

No puedo encontrar ninguna información confiable sobre esto. No tengo la especificación completa del hardware de la tarjeta SD / MMC.

¿Es verdad? ¿Mi aplicación de alto nivel no necesita preocuparse por la nivelación del desgaste cuando trabajo con estas tarjetas?

EDITAR

¿Podría alguien confirmar que la especificación SD garantiza la nivelación del desgaste ? Quiero estar seguro, porque parece que la mayoría de los vendedores lo hacen, pero la especificación no lo exige.


55
No todos los fabricantes de medios flash invierten en algoritmos de nivelación de desgaste. La nivelación del desgaste es más frecuente en los SSD donde los fabricantes lideran el mercado debido a los algoritmos.
Chetan Bhargava

Respuestas:


43

Trabajo para una empresa que solía ser miembro de la asociación SD, estamos familiarizados con la especificación 2.0 (SDHC). La especificación de la tarjeta SD NO tiene entrada para nivelar el desgaste. Eso depende completamente del fabricante de SD para manejar eso si así lo eligen. Hemos visto que algunos probablemente lo hacen, mientras que otros no (tenga cuidado con las tarjetas SD super baratas). SDXC puede haber cambiado eso para incluir nivelación de desgaste, pero no estoy seguro de eso. Desafortunadamente, la única forma de demostrarlo es obtener las especificaciones oficiales. Lo puede encontrar en línea muy probablemente, pero la asociación SD realmente quiere que pague por ello.

Como nota al margen, tomar una tarjeta de 2GB y escribirla comenzando a terminar una y otra vez promedia aproximadamente 10 TB antes de que la tarjeta esté muerta y ya no se pueda escribir. Además, las tarjetas SD no le avisarán cuando los datos sean malos, es decir, no devolverán un error de E / S como lo hará un disco duro de PC. Esto podría no ser un problema para los diseños integrados, ya que 10 TB son MUCHOS datos, pero podrían ser un factor para alguien.


2
Supongo que a pesar de que no está en la especificación, las compañías aún quieren hacerlo para mantener su buena reputación. Si bien las imitaciones súper baratas no se preocupan por la reputación, se venden a personas que buscan ser baratas en todo. ¿Suena esto razonable?
Kellenjb

1
@Kellenjb Es una suposición muy razonable, y personalmente estaría de acuerdo con usted. Sin embargo, debido a que no está en la especificación, y es muy poco probable que obtenga acceso a los diseños de controladores SD de un fabricante en particular, realmente no se puede probar. Hemos realizado muchas pruebas a lo largo de los años, algunas marcas importantes funcionan mucho mejor que otras. Puede haber diferencias en los algoritmos internos o la falta total de ellos.
Kris Bahnsen

44
A las imitaciones baratas no les importará incluso si ESTÁ en la especificación. No es inmediatamente visible para el cliente, PODRÍA faltar. Estamos hablando de personas que venden enchufes de plomo como circuitos integrados. No he oído hablar de una tarjeta de marca que no use nivelación, pero supongo que es posible.
Darron

@KrisBahnsen, ¿puede explicar qué devuelve realmente la tarjeta SD cuando hay un error no recuperable? Estoy muy interesado en esto. ¿No hay forma de detectar esta condición?
Fred Basset

3
@fredbasset, forma de zombie el hilo;) Ha pasado un tiempo desde que hice cualquier trabajo de tarjeta SD. Sin embargo, las tarjetas SD IIRC mismas devolverán físicamente lo que quieran. Algunos de los más nuevos combinados con controladores decentes pueden detectar un error de E / S. Sin embargo, muchas de las tarjetas SD más antiguas solo devolverán datos incorrectos almacenados en NAND y lo considerarán bueno. Sin embargo, si una escritura no puede completarse, eso devolverá un error de E / S.
Kris Bahnsen

23

¡Es verdad! Las tarjetas MicroSD contienen un chip flash NAND unido a un microcontrolador (ARM) encapsulado en plástico negro. http://www.bunniestudios.com/blog/?p=898 explica.

Al final de la publicación de seguimiento http://www.bunniestudios.com/blog/?p=918 Bunnie postula que integrar el controlador probablemente cuesta menos que probar el flash antes de tiempo.

Citando el manual del producto de la tarjeta SD de SanDisk: "1.9 Nivelación de desgaste. La nivelación de desgaste es una parte intrínseca de la funcionalidad de agrupación de borrado de la tarjeta SD, utilizando memoria NAND". Puede leer todo en la hoja de datos de una tarjeta de marca SanDisk .


1
¡Bunnie Huang definitivamente es lo suficientemente creíble para mí!
vicatcu

Es bueno saberlo, pero esperaré a alguien que pueda aclarar esta pregunta según la especificación formal de esta tecnología.
ivarec

2
Digikey me mostró este folleto inútil de SanDisk cuando intenté buscar una hoja de datos. Las hojas de datos Wintec y Swissbit fueron mejores, y ambas mencionaron la nivelación del desgaste. ¿Puedes vincular a esa hoja de datos alojada por Digikey?
Kevin Vermeer

Esos son mucho mejores que el viejo SanDisk.
joeforker

¡El Wintec no fue genial, pero el nuevo SanDisk es el mejor del grupo! Gracias por la edición
Kevin Vermeer

19

Sí, las tarjetas SD / MMC tienen controladores que desgastan la nivelación. Si no lo hicieran, podría destruir uno en cuestión de minutos con los patrones de escritura incorrectos.

Eso es realmente un problema para algunos proyectos integrados. No hay absolutamente ninguna manera (aparentemente) de saber qué sectores podrían desgastarse nivelados en cualquier momento, por lo que un ciclo de energía en el momento equivocado puede destruir datos en cualquier lugar de la tarjeta, sin importar dónde PIENSAS que estás escribiendo. (no preguntes cómo lo sé :))

Las tarjetas SD deben usarse con un sistema que garantice un apagado limpio del sistema (o al menos que las escrituras tengan permiso para completarse), o se producirá (eventualmente) una pérdida de datos.

EDITAR

El problema es que el proceso de nivelación del desgaste está completamente oculto. CUALQUIER sector en el disco podría moverse en cualquier momento (intercambiado con la página escrita), y si la energía fallara en medio de ese proceso, ese sector aleatorio podría corromperse.

Si bien hay formas razonablemente seguras de implementar este movimiento, no está en ninguna especificación, por lo que no puede confiar en que la tarjeta lo hará. Podrías probar una tarjeta, hacer que funcione, luego el fabricante podría cambiar la implementación sin cambiar el número de pieza y estás jodido.

De la prueba, el controlador de mis tarjetas SD NO hace esto de manera segura.

Puedo buscar una tarjeta SD de "alta confiabilidad" que vi anunciada específicamente para la tolerancia a fallas de energía ... pero luego tienes que confiar en el fabricante para hacerlo correctamente, y no lo hago. Realmente quiero control directo sobre los borrados de página. Todavía estoy tratando de resolver esto.


44
Ver mi respuesta publicada. Dado que los algoritmos de nivelación de desgaste dependen del fabricante, es posible que no estén a la altura del tabaco. Un buen algoritmo de nivelación de desgaste moverá primero los datos, luego los marcará como buenos, luego la basura recolectará los datos originales. Esto podría ser un problema en algunas tarjetas, tal vez no en otras. SD es un diseño muy feo cuando llegas al fondo.
Kris Bahnsen

2
Sí, es un estándar de mierda en lo que a mí respecta. Es muy molesto que un estándar de almacenamiento de memoria tan omnipresente sea tan inherentemente poco confiable.
Darron

2
@jpc: Quizás haga una entrada en el blog entonces. Tengo la impresión de que no se considera a menudo. No me di cuenta de las implicaciones hasta que fue demasiado tarde. Luché con esto, hablé con el fabricante de mi tarjeta SD, etc. No hay otra solución que minimizar el tiempo de escritura. Ahora escribo en NAND flash y copio en SD una vez al día lo más rápido que puedo. Hay tarjetas SD diseñadas para ser "resistentes" a fallas de energía al azar, pero no estoy seguro de que incluso estas sean completamente confiables.
Darron

2
@fred basset Curiosamente, las especificaciones de las tarjetas industriales parecen haber cambiado desde que se escribió esta respuesta. Yo estaba viendo tarjetas microSD con garantías en las escrituras (con registro, creo) ... ahora, no hacen tal demanda. Hablando con un fabricante, ahora están usando supercaps ... pero solo las tarjetas flash compactas tienen espacio para ellas. Hacer cosas con seguridad reduce el rendimiento demasiado. Están diciendo que de alguna manera proporcionen suficiente potencia de respaldo para completar una escritura. Dado lo complejos que son los SBC ARM modernos ... es realmente difícil hacerlo si el diseño de referencia del proveedor no lo hace. Ninguno que yo sepa de hacer.
darron

2
@freq basset Estoy usando UBI y UBIFS. Parece funcionar bien ... He tenido muchos sistemas funcionando durante años sin problemas.
Darron

12

Cualquier tipo de tarjeta SD que use cualquier tipo de memoria flash NAND convencional tendrá que usar algún tipo de virtualización de sector, ya que ningún dispositivo flash NAND convencional puede soportar el borrado de sectores individuales de 512 bytes, y ningún dispositivo flash NAND convencional de tamaño significativo sería capaz de producir un rendimiento que estuviera dentro de un orden de magnitud de ser incluso marginalmente aceptable si cada intento de escribir un sector requiriera que el dispositivo copie todos los sectores en el bloque de borrado de ese sector (incluso en la RAM), luego borre el bloque y escriba Todos los sectores de vuelta. La mayoría de las técnicas de virtualización de sector son inherentemente algo niveladoras de desgaste. Esperaría que el mayor problema de variación entre los dispositivos de calidad y las imitaciones sea la medida en que un dispositivo intenta activamente igualar la nivelación entre bloques, versus simplemente usar la asignación de bloques pseudoaleatoria y esperar que arroje resultados aceptablemente cercanos a los uniformes. En la práctica, esperaría que incluso la asignación aleatoria / con la esperanza de la mejor sea adecuada en la mayoría de los casos.


Es muy posible que la "nivelación de desgaste" que implementan algunos fabricantes sea causada por la interfaz NAND en sí misma y bloquee a sector / sector para bloquear virtualizaciones.
Kris Bahnsen

1
@KrisBahnsen: esperaría que los fabricantes que afirman que la nivelación del desgaste supervisará activamente el desgaste relativo de los diferentes bloques y la antigüedad de los datos, y si se encuentra que los bloques con datos de larga duración están en bloques con mucho menos desgaste que el promedio, los datos de esos bloques se moverán a los bloques que tuvieron más desgaste (para minimizar el desgaste futuro de esos bloques). Esto podría mejorar en un factor de 10 la vida útil de un dispositivo que está lleno en un 95% de datos que nunca cambian, mientras que el 5% restante del espacio se agita con frecuencia.
supercat

Estoy de acuerdo, si lo anuncian, imagino que harían algún tipo de nivelación de desgaste real. Soy un poco negativo en todo el tema por el que me disculpo; Me han mordido algunas veces las peculiaridades de SD.
Kris Bahnsen

1
@KrisBahnsen: Creo que el mayor problema es un modelo de virtualización que asume un grupo lineal de sectores de 512 bytes numerados consecutivamente. Puede haber sido conveniente interactuar con DOS, pero realmente no encaja bien con el hardware que existe, ni con lo que realmente quiere el software host. Abra los números de bloque a 64 bits y permita que sean arbitrariamente no consecutivos, y luego organice que los archivos siempre se almacenen en bloques lógicamente consecutivos. Para eliminar un archivo, elimine su rango de bloques.
supercat

2
Esta es posiblemente la mejor respuesta. Sospecho que así es como lo hacen todos. Si lo piensa, no hay forma de nivelar el desgaste determinista con ningún tipo de algoritmo verdaderamente sofisticado porque el historial de desgaste en sí mismo debería almacenarse en algún lugar de la misma tarjeta y esa parte fallaría primero. La nivelación aleatoria es la única posibilidad práctica. No estoy convencido de que los SSD sean más inteligentes. Es posible que simplemente tengan más amortiguadores de reemplazo, aunque ciertamente es posible que almacenen información de desgaste muy gruesa (y, por lo tanto, actualizada con poca frecuencia).
Nimrod

7

Sandisk tiene un documento técnico que explica la lógica de nivelación del desgaste en sus tarjetas, y continúa dando estimaciones de la vida útil de la tarjeta en varios escenarios. Resumen ejecutivo: a menos que esté martillando la tarjeta sin parar, durará décadas.


Link está muerto y el contenido parece haber sido eliminado, porque ¿quizás reveló demasiado?
Cuadue

66
@Cuadue El enlace es accesible. En caso de que se rompa, la página se archiva ahora en web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/…
Lekensteyn el

2

Es interesante observar que, a pesar de esto, muchos dispositivos corrompen las tarjetas SD y microSD, especialmente las de alta densidad si la batería está baja o el teléfono se bloquea / se apaga / etc. Sospecho que el problema es una regulación inadecuada del suministro de voltaje, ya que esto es bien conocido en algunas tarjetas (tos Ad t / tos) para provocar el fenómeno de una tarjeta ilegible en ciertos lectores externos, pero funciona bien en la micro variedad suministrada por algunos tiendas de informática

Estoy en el proceso de recuperar una tarjeta en este momento con este fallo, por extraño que parezca, la mayoría de los datos son recuperables, pero algunos sectores no lo hacen aunque esto cambie en cada intento. ¿Podría ser la culpa la nivelación del desgaste? (Sí, probé varios lectores, ¡la misma falla!)


0

También tuvo algunas cartas de zombis "nucleares" exitosas, es decir, las que no completarán un formato o son de solo lectura. Solo funciona en un pequeño porcentaje, pero son mucho más sensibles que la mayoría de las pautas "oficiales" al respecto.

Una tarjeta de prueba así tratada duró cuatro meses completos antes de fallar nuevamente, si no hubiera sido por el dispositivo que se utilizó para suministrar voltaje ruidoso, la vida útil podría haber sido más larga.


1
Por "bombardeo" te refieres a ponerlo en el microondas ¿A qué potencia y por cuánto tiempo?
0x6d64

Uh, no :-) ¿También por qué hacer eso cuando una descarga luminiscente (RF) tendría un efecto similar y sería mucho menos peligroso que el método que utilicé? Resulta que las tarjetas uSD son mucho más sensibles debido a la falta de una carcasa metálica en un lado.
Conundrum5642Z

No puedo confirmar ni negar que el ataque nuclear se refiere al uso de un "gadget" 5642 + HVPS por razones legales. Sin embargo lo hizo el trabajo en varias ocasiones, y la técnica se conoce ahora como he publicado en HaD etc.
enigma
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.