Como lo entiendo, nivelar el desgaste en Memorias USB / unidades flash será:
- Ayuda a hacer el último más largo. (reducir el "desgaste", que una celda de flash físico solo se puede escribir XX veces)
- Sólo puede funcionar realmente si hay celdas de memoria flash sin usar para cambiar. (Cuanto más llena esté la memoria USB, menos celdas alternativas habrá para nivelar el desgaste)
En el peor de los casos, en un momento dado, he agotado todas y cada una de las memorias de la memoria USB. Entonces es menos probable que se produzca alguna nivelación de desgaste. ¿Puedo / (¿Cómo) revertiría este estado?
Quiero decir en términos de dispositivos USB lo que está vacío
0000 0000 0000 0000
(Relleno cero) me parece que es tan válido como un dato
1111 1111 1111 1111
o 1010 1110 0011 1111
o cualquier otro patrón de bits.
El firmware de la memoria USB de alguna manera necesita saber qué se considera un "no usado" Flash-cell, para que pueda usarlo de nuevo para nivelar el desgaste. ¿Pero después de que una vez haya llenado toda la memoria USB, tengo problemas para ver cómo el firmware podrá determinar qué datos pueden "sobrescribirse" ya que no contienen datos?
Así que mi pregunta es: ¿El llenado a cero puede ser una forma de restablecer la nivelación del desgaste de una memoria USB?
Aunque me temo que esto dependerá a menudo de la implementación ("firmware" y "fabricante"), sigo pensando que este enfoque podría tener una lógica para asumir que el "llenado a cero" puede restablecer la memoria USB en ciertos mejor diseñado- Memorias usb .
La lógica que imagino sería que la nivelación de desgaste del firmware reconocería que un bloque completo (es decir, 512 bytes o 2 kbytes) se establecería solo en ceros.
Bloquear antes: 1101 1011 1000 0010 ... 0001 0011
Bloquear después de: 0000 0000 0000 0000 ... 0000 0000
Cuando leo de este Bloque, me gustaría recibir, por supuesto, esta información:
Bloquear después de: 0000 0000 0000 0000 ... 0000 0000
Pero esta información podría generarse sobre la marcha almacenando ese
Bloque XYZ = vacío en una determinada celda flash solo disponible para el firmware.
Si este fuera el caso, el grupo cuando "reiniciar" (mediante el llenado a cero) se habilitaría para otros fines, ya que la información se almacena en la parte de la memoria del firmware BLOCK XYZ = vacío.
He leído que debería haber algunas memorias USB que tengan ese firmware y, por lo tanto, se puedan restablecer. ¿Puede esto ser verdad? Me gustaría saber, por la pregunta, una "tendencia" tal vez respaldada por información de un fabricante destacado. Tal vez exista incluso una lista que enumere dispositivos USB que puedan restablecerse de esta manera. Para que la respuesta pueda contener un enlace a dicha lista.
También asumo que no hay "un nuevo firmware" diseñado por cada dispositivo USB producido y tal vez hay un firmware USB prominente (que se usa a menudo) que hace tal nivel de desgaste. Entonces, la pregunta podría responderse con respecto a ese firmware.
En el mejor de los casos, alguna persona inteligente podría encontrar una manera de responder a la pregunta en esa forma que contiene algunas instrucciones que nos permitieron a los usuarios (de superusuario) "averiguar" si esta nivelación de desgaste está habilitada o no.
algunos antecedentes de mi pregunta
Las memorias USB / unidades de memoria flash son una buena cosa segura. Pero el problema es que la forma en que almacenan los datos se desgasta, lo que significa que después de solo XX ¡Escribe en una celda de datos! ¡BINGO! tu palo esta muerto
Una forma de aliviar el problema (que Células de memoria flash solo se puede escribir en un número bastante pequeño de veces) es "nivelación de desgaste". Lo que importará es que, si es posible, los datos no siempre se escriban en el mismo. celdas de memoria flash .
La forma en que funciona es que, en lugar de escribir los datos siempre en las mismas celdas físicas, los datos (cuando se modifican) se escriben en otras celdas físicas nuevas. Esto reduce el "estrés" porque, en el mejor de los casos, esto seguirá así.
Para ayudar a entender algunos niveles básicos de desgaste, incluí este concepto a continuación, que muestra cómo la información de "hola", "salut", "hola" y "hi" se almacena posteriormente en una celda de datos lógica llamada datos , que en realidad se escribe en una memoria flash física diferente cada vez (por lo tanto, un pequeño "concepto" de nivelación de desgaste).
state 1: [CELL1: e-m-p-t-y] [CELL2:e-m-p-t-y] [CELL3: e-m-p-t-y] => write data "hello" state 2: [CELL1: hello] [CELL2:e-m-p-t-y] [CELL3: e-m-p-t-y] data=CELL1 => update data to "salut" state 3: [CELL1: hello] [CELL2: salut] [CELL3: e-m-p-t-y] data=CELL2 => update data to "hola" state 4: [CELL1: hello] [CELL2: salut] [CELL3: hola] data=CELL3 => update data to "hi" state5 [CELL1: hi] [CELL2: salut] [CELL3: hola] data=CELL1
Observa cómo después de escribir 4 veces. datos Cada celda en promedio solo fue escrita 1.33 veces. Observe también que la información de qué celda contiene la "lógica datos "también debe almacenarse y actualizarse (lo que requiere que el firmware realice esta contabilidad, usando algo de memoria reservada para esto también)
fuente
TRIM tiene la intención de resolver este problema, al proporcionar un mecanismo donde el sistema operativo puede decirle a la unidad que no está esperando que un sector contenga datos. TRIM es una especificación de SAS / SATA y no una especificación de USB, por lo que no funciona para las unidades flash USB, desafortunadamente.
Sin TRIM, no es seguro que la unidad asuma que los datos no son necesarios.
Claro, si el firmware funciona de esta manera. No hay forma de saberlo sin el código fuente del firmware o la documentación del desarrollador. Los chips flash funcionan en páginas y bloques. El chip puede borrar solo bloques completos a la vez (128 KB, por ejemplo), que constan de muchas páginas (por ejemplo, 2 KB) que son generalmente más grandes que los sectores de disco duro tradicionales que emulan las unidades USB (512 bytes).
Es muy probable que, dado que las unidades flash USB sean muy baratas en estos días, realmente no valga la pena para el fabricante proporcionar esta información.
Cada unidad flash USB tiene un microcontrolador (microcontrolador = CPU + ROM o firmware). Puede abrir la unidad de memoria flash y buscar en función de los números en el chip para intentar averiguar el tipo. Probablemente hay un número limitado de estos en comparación con el número total de unidades flash producidas, pero no me sorprendería que hubiera muchas variaciones de algunos tipos de núcleo. Ciertamente no hay ningún firmware estándar único ni nada de eso.
Existen utilidades de chip que le permiten reprogramar el microcontrolador en algunos de estos para crear CD-ROM virtuales y en ciertos tipos de unidades flash. Esta es un área muy indocumentada y es difícil encontrar información sobre ella. No he tenido mucha suerte.
No, solo esa celda. Los SSD (y las tarjetas SD y las unidades de memoria flash) están sobreajustados, lo que significa que tienen más flash de lo anunciado en el paquete. Este flash adicional se usa como área "de repuesto" para cubrir los bloques que se desgastan. También cubre los defectos del fabricante: ningún flash tiene bloques de trabajo 100% garantizados, excepto el primer bloque.
fuente
El almacenamiento USB no es mecánico (como las primeras cuentas en una cuadrícula) ni magnético (como en una cinta) ni óptico (como los CD), sino eléctrico. Considere cada ubicación como una pequeña celda de batería que se descarga con el tiempo (mucho tiempo). Toda escritura causa degradación. El llenado a cero solo empeorará las cosas. El chip en sí tiene un controlador que usa nivelación de desgaste o no lo hace; un usuario no puede cambiar esto. En términos simples, la nivelación del desgaste solo garantiza que las diferentes partes del USB obtengan una parte justa de la carga de requisitos de almacenamiento.
fuente