La nivelación de desgaste (también escrita como nivelación de desgaste ) es una técnica [1] para prolongar la vida útil de algunos tipos de medios de almacenamiento de computadora borrables , como la memoria flash , que se utiliza en unidades de estado sólido (SSD) y unidades flash USB . y memoria de cambio de fase . Existen varios mecanismos de nivelación del desgaste que proporcionan distintos niveles de mejora de la longevidad en dichos sistemas de memoria. [2] [3]
Western Digital ha utilizado el término nivelación de desgaste preventiva (PWL) para describir su técnica de preservación utilizada en unidades de disco duro (HDD) diseñadas para almacenar datos de audio y video. [4] Sin embargo, los discos duros generalmente no son dispositivos con nivel de desgaste en el contexto de este artículo.
La EEPROM y los medios de memoria flash tienen segmentos que se pueden borrar individualmente, cada uno de los cuales puede pasar por un número limitado de ciclos de borrado antes de dejar de ser confiable. Esto suele ser alrededor de 3000/5000 ciclos [5] [6] , pero muchos dispositivos flash tienen un bloque con una vida útil especialmente extendida de más de 100 000 ciclos que puede ser utilizado por el controlador de memoria Flash para rastrear el desgaste y el movimiento de datos a través de segmentos. Los medios ópticos borrables , como CD-RW y DVD-RW, tienen una capacidad nominal de hasta 1000 ciclos (100 000 ciclos para medios DVD-RAM ).
La nivelación de desgaste intenta solucionar estas limitaciones organizando los datos de manera que los borrados y reescrituras se distribuyan uniformemente en todo el medio. De esta manera, ningún bloque de borrado falla prematuramente debido a una alta concentración de ciclos de escritura. [7] En la memoria flash, un solo bloque en el chip está diseñado para una vida útil más larga que los demás, de modo que el controlador de memoria pueda almacenar datos operativos con menos posibilidades de corrupción. [3] [8]
Los sistemas de archivos convencionales como FAT , UFS , HFS / HFS+ , EXT y NTFS se diseñaron originalmente para discos magnéticos y, como tales, reescriben muchas de sus estructuras de datos (como sus directorios) repetidamente en la misma área. Cuando estos sistemas se utilizan en soportes de memoria flash, esto se convierte en un problema. El problema se agrava por el hecho de que algunos sistemas de archivos rastrean los tiempos del último acceso, lo que puede llevar a que los metadatos del archivo se reescriban constantemente en el lugar. [9]
Hay tres tipos básicos de mecanismos de nivelación de desgaste utilizados en dispositivos de almacenamiento de memoria flash: [2]
Un sistema de almacenamiento de memoria flash sin nivelación de desgaste no durará mucho si se escriben datos en la memoria flash. Sin nivelación de desgaste, el controlador flash subyacente debe asignar permanentemente las direcciones lógicas del sistema operativo (OS) a las direcciones físicas de la memoria flash. Esto significa que cada escritura en un bloque escrito previamente debe primero leerse, borrarse, modificarse y reescribirse en la misma ubicación. Este enfoque requiere mucho tiempo y las ubicaciones escritas con frecuencia se desgastarán rápidamente, mientras que otras ubicaciones no se utilizarán en absoluto. Una vez que algunos bloques llegan al final de su vida útil, dicho dispositivo deja de funcionar. [2]
El primer tipo de nivelación de desgaste se llama nivelación de desgaste dinámica y utiliza un mapa para vincular direcciones de bloques lógicos (LBA) desde el sistema operativo a la memoria flash física. Cada vez que el sistema operativo escribe datos de reemplazo, el mapa se actualiza de modo que el bloque físico original se marca como datos no válidos y se vincula un nuevo bloque a esa entrada del mapa. Cada vez que se reescribe un bloque de datos en la memoria flash, se escribe en una nueva ubicación. Sin embargo, los bloques de memoria flash que nunca obtienen datos de reemplazo no sufrirían desgaste adicional, por lo que el nombre proviene únicamente de los datos dinámicos que se reciclan. Un dispositivo de este tipo puede durar más que uno sin nivelación de desgaste, pero aún quedan bloques activos aunque el dispositivo ya no esté operativo. [2] [3]
El otro tipo de nivelación de desgaste se llama nivelación de desgaste estática y también utiliza un mapa para vincular el LBA a las direcciones de memoria física. La nivelación de desgaste estático funciona igual que la nivelación de desgaste dinámico, excepto que los bloques estáticos que no cambian se mueven periódicamente para que estas celdas de bajo uso puedan ser utilizadas por otros datos. Este efecto de rotación permite que un SSD continúe funcionando hasta que la mayoría de los bloques estén cerca del final de su vida útil. [2] [3]
Tanto la nivelación de desgaste dinámica como estática se implementan a nivel local. Esto simplemente significa que en un producto de múltiples chips, cada chip se administra como un único recurso. La cantidad de bloques defectuosos en diferentes chips dentro de una memoria flash NAND varía: un chip determinado podría tener todos sus bloques de datos desgastados mientras que otro chip en el mismo dispositivo podría tener todos sus bloques aún activos. La nivelación de desgaste global aborda este problema administrando todos los bloques de todos los chips en la memoria flash juntos, en un solo grupo. Garantiza que todas las celdas de todos los chips del producto se desgasten de manera uniforme. [10] [11]
La siguiente tabla compara la nivelación de desgaste estática y dinámica: [3]
Existen varias técnicas para prolongar la vida útil de los medios:
En las tarjetas Secure Digital y unidades flash USB , las técnicas [12] se implementan en el hardware mediante un microcontrolador incorporado . En dichos dispositivos, la nivelación del desgaste es transparente y el sistema de archivos convencional como FAT se puede utilizar tal cual.
La nivelación del desgaste también se puede implementar en software mediante sistemas de archivos de propósito especial como JFFS2 y YAFFS en medios flash o UDF en medios ópticos. Los tres son sistemas de archivos estructurados en registros en el sentido de que tratan sus medios como registros circulares y les escriben en pases secuenciales. Los sistemas de archivos que implementan estrategias de copia en escritura , como ZFS , también implementan una forma de nivelación de desgaste.