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

46

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

¿Es cierto? Mi aplicación de alto nivel no tiene que preocuparse por la nivelación del desgaste al trabajar con estas tarjetas.

EDIT

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

    
pregunta ivarec

7 respuestas

36

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 nivelación de desgaste. Eso depende completamente del fabricante de SD para manejar eso si así lo desean. Hemos visto que es probable que algunos lo hagan, mientras que otros no (tenga cuidado con las tarjetas SD súper baratas). Es posible que SDXC haya cambiado eso para incluir la nivelación de desgaste, pero no estoy seguro de eso. Desafortunadamente, la única forma de demostrarlo es tener las manos en la especificación oficial. Lo más probable es que lo encuentres en línea, pero la asociación de SD realmente quiere que lo pagues.

Como nota al margen, tomar una tarjeta de 2GB y escribirla comienza 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 son malos, es decir, no devolverá un error de E / S como lo haría un disco duro de PC. Esto podría no ser un problema para los diseños integrados, ya que 10 TB es MUCHA información, pero podría ser un factor para alguien.

    
respondido por el Kris Bahnsen
22

¡Es cierto! Las tarjetas MicroSD contienen un chip flash NAND unido a un microcontrolador (ARM) encapsulado en un poco de plástico negro. enlace explica.

Al final de la publicación de seguimiento enlace Bunnie postula que la integración del controlador probablemente cueste menos que las pruebas el flash antes de tiempo.

Cotización del manual del producto de la tarjeta SD: "1.9 Nivelación de desgaste. La nivelación de desgaste es una parte intrínseca de la funcionalidad de borrado de la tarjeta SD, utilizando la memoria NAND". Puede leerlo completo en digikey como la hoja de datos de una tarjeta SD de tamaño completo de la marca SanDisk: enlace

    
respondido por el joeforker
19

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

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

las tarjetas SD deben usarse con un sistema que garantice un cierre limpio del sistema (o al menos que las escrituras tengan permiso para completarse), o la pérdida de datos resultará (eventualmente).

EDIT

El problema es que el proceso de nivelación de desgaste está completamente oculto. CUALQUIER sector en el disco podría moverse en cualquier momento (intercambiarse 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ía probar una tarjeta, hacer que funcione, luego el fabricante podría cambiar la implementación sin cambiar el número de pieza y ya está jodido.

En las pruebas, el controlador de mis tarjetas SD NO hace esto de manera segura.

Puedo ver una tarjeta SD de "alta confiabilidad" que vi anunciada específicamente para tolerancia a fallas de energía ... pero luego tiene que confiar en el fabricante para que lo haga correctamente, y no lo hago. Realmente quiero un control directo sobre las páginas borradas. Todavía estoy tratando de resolver esto.

    
respondido por el darron
10

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 admitir 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 requería que el dispositivo copie todos los sectores en el bloque de borrado de ese sector (incluso en la RAM), luego borre el Bloquea y escribe todos los sectores atrás. La mayoría de las técnicas de virtualización de sectores son inherentemente algo de nivelación de desgaste. Yo esperaría que el mayor problema de variación entre los dispositivos de calidad y las imitaciones sea la medida en que un dispositivo intente activamente nivelar la nivelación entre bloques, en lugar de simplemente usar la asignación de bloques pseudoaleatorios y la esperanza de que esto resulte aceptable. - Resultados uniformes. En la práctica, esperaría que incluso la asignación aleatoria / esperanza de lo mejor sería adecuada en la mayoría de los casos.

    
respondido por el supercat
7

Sandisk tiene un white paper que explica la lógica de nivelación de desgaste en sus tarjetas, y continúa proporcionando 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.

    
respondido por el Michael Slade
1

Es interesante observar que, a pesar de esto, muchos dispositivos dañan las tarjetas SD y microSD, especialmente las de alta densidad, si la batería está baja o el teléfono se apaga / se apaga / etc. Sospecho que el problema es una regulación inadecuada de la fuente 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 algunas tiendas de informática.

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

    
respondido por el Conundrum
0

También tuve algunos "zombies" de tarjetas de zombies, es decir, que no completan 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" en este sentido.

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

    
respondido por el Conundrum5642Z

Lea otras preguntas en las etiquetas