¿Qué es la nivelación del desgaste?
La nivelación del desgaste (el desgaste uniforme) es una técnica que utilizan algunos controladores de los discos de estado sólido (SSD) para aumentar la vida útil de la memoria. El principio es sencillo: distribuir uniformemente las entradas en todos los bloques de la SSD para que el desgaste también sea uniforme.
Todas las celdas reciben el mismo número de registros, con lo que se evita la escritura repetitiva en los mismos bloques y su consecuente desgaste, que sería más rápido que el del resto.
La memoria flash y las celdas flash de las SSD permiten un cierto número de procesos de lectura y de escritura, que normalmente se sitúa entre los 10.000 y los 100.000. En una SSD con 400 GB de espacio, escribimos y eliminamos 100 GB de datos cada día. La nivelación del desgaste garantizará que estos datos no se escriban siempre en la misma ubicación de los bloques flash físicos, sino que se distribuyan uniformemente en todas las celdas físicas de la SSD.
Explicado de manera sencilla, la nivelación del desgaste divide los 400 GB de la memoria física en 4 bloques de 100 GB cada uno: el bloque 1, el bloque 2, el bloque 3 y el bloque 4. Así, cuando escribes 100 GB de datos el día 1, estos datos se escriben en el bloque 1 una vez que eliminas y reescribes los datos el día 2. A continuación, estos datos se escriben en el bloque 2, y así sucesivamente.
Aplicaciones de nivelación del desgaste
La nivelación del desgaste puede instalarse mediante un microcontrolador o mediante firmware que controla los ciclos de escritura por celda o por archivos creados para sistemas de memoria flash.
Algoritmos de nivelación del desgaste
Existen multitud de algoritmos de nivelación del desgaste. Hoy nos centraremos en los dos principios básicos:
- La nivelación del desgaste dinámica
- La nivelación del desgaste estática
La nivelación del desgaste dinámica
Con la nivelación del desgaste dinámica, solo los bloques que se reescriben se trasladan a bloques nuevos. En el momento de la reescritura, el algoritmo selecciona un bloque vacío donde escribir los datos actualizados.
Para conseguirlo, el controlador SSD lleva la cuenta del número de escrituras en cada bloque mediante una memoria no volátil. Cuando la SSD está nueva y todavía no se ha usado, el contador está a 0 y aumentará de 1 en 1 con cada escritura.
La nivelación del desgaste dinámica, sin embargo, no está optimizada. Se asigna un bloque para la grabación de los datos de solo lectura o de los datos que no se actualizan frecuentemente y que se conservarán en esa ubicación. Es mejor colocar este tipo de datos en bloques utilizados y grabar los datos que se actualizan frecuentemente en bloques más desgastados.
La nivelación del desgaste estática
En este caso, el controlador selecciona un área de cualquier bloque del disco duro para reescribir los datos y elegirá el bloque que tiene relativamente menos entradas, como por ejemplo los bloques que contienen datos estáticos o los bloques vacíos que no se utilizan tan a menudo.
Debido a las características inherentes de las SSD, su optimización es importante. La nivelación del desgaste es una reconocida técnica para este propósito, pero existen también otros tipos de optimización que reducen el desgaste de las SSD limitando el volumen de escritura para mejorar su durabilidad. Pero de este tema nos ocuparemos en otro post.