Tecnología FTL para unidades de estado sólido
?FTL se refiere a la Capa de Traducción Flash, cuyo trabajo es traducir la dirección lógica del host a la dirección física de la memoria flash.
Cada vez que el controlador escribe datos en la memoria flash, registra la asignación de la dirección lógica a la dirección física de los datos, de modo que cuando el host quiera leer datos, leerá los datos reales. según este mapeo.
Primero, hablemos de las características de la memoria flash:
En vista de las características anteriores de la memoria flash, FTL también debe tener dieciocho tipos de funciones al completar la conversión de direcciones lógicas. a direcciones físicas:
?Recolección de basura, suavizado, gestión de bloques defectuosos, procesamiento de interferencias de lectura, procesamiento de retención de datos, etc.
?
?Los mapeos incluyen mapeo basado en bloques, mapeo basado en páginas y mapeo híbrido.
? El host de mapeo basado en bloques tiene un rendimiento deficiente al leer y escribir datos de tamaño pequeño (rendimiento aleatorio) y generalmente se usa en discos U (p.d.: no se sorprenda, también se usan discos U). en FTL), por lo que el disco U no es adecuado para instalar el sistema, pero sí para la transmisión de datos, lectura y escritura de datos de gran tamaño.
? El mapeo basado en páginas tiene un buen rendimiento (rendimiento aleatorio) para datos de tamaño pequeño, pero como la memoria flash tiene muchas más páginas que los bloques de memoria flash, requiere más espacio para la tabla de mapeo. Para lograr un mejor rendimiento aleatorio (que es lo que le importa al sistema operativo), los SSD emplean mapeo de páginas.
? El mapeo híbrido se encuentra en algún punto intermedio en términos de rendimiento y espacio requerido para almacenar la tabla de mapeo.
El FW dentro del SSD mantiene una tabla de mapeo de direcciones lógicas a direcciones físicas. Los usuarios deben cambiar la tabla de mapeo cada vez que escriben en una página lógica; al leer una página lógica, el SSD buscará la página física correspondiente a la página lógica en la tabla de mapeo y luego accederá a la memoria flash para leer la requerida. datos.
En términos generales, el tamaño de la página lógica asignada es de 4 KB y el tamaño de la dirección física es de 4 bytes. Por lo tanto, el tamaño de la tabla de asignación de SSD de 256 GB es: 256 GB/4 KB*4B. 256 MB, lo que significa que el tamaño de la tabla de mapeo es 1/1024 de la capacidad del SSD.
?Para almacenar la tabla de mapeo, los SSD suelen tener dos diseños: DRAM (con DRAM) y DRAM-less (sin DRAM). Con DRAM, los datos del búfer y la tabla de mapeo generalmente se almacenan en DRAM. La ventaja es que puede buscar y actualizar la tabla de mapeo rápidamente y tiene un mejor rendimiento. La desventaja es que con una DRAM más, el costo y el consumo de energía aumentan. La unidad de estado sólido convencional actual es Esta solución sin DRAM coloca una pequeña parte de la tabla de mapeo en la SRAM en el chip y el resto de la tabla de mapeo en la memoria flash. El costo y el consumo de energía aumentarán actualmente, las unidades de estado sólido convencionales son una de esas soluciones; sin DRAM, se coloca una pequeña parte de la tabla de mapeo en la SRAM en el chip y el resto de la tabla de mapeo en la memoria flash. La ventaja de esta solución es que ahorra el costo y el consumo de energía de la DRAM, pero la lectura y escritura de la memoria flash es mucho más lenta que la lectura y escritura de la DRAM, por lo que la velocidad no es tan buena como la de la solución DRAM y el rendimiento también es pobre. Actualmente, la mayoría de los SSD básicos utilizan esta solución.
?Una pregunta simple: todos sabemos que los datos se pierden cuando se apaga la DRAM, pero ¿qué pasa con la tabla de datos?
La respuesta es que antes de apagar el SSD, escribe la tabla de mapeo en la memoria flash, y la próxima vez que se enciende e inicializa, es necesario leerla nuevamente y colocarla en la DRAM o SRAM. Esto significa que la tabla de mapeo debe almacenarse en la memoria flash independientemente de si se utiliza DRAM.
?Hoy en día, la recogida de basura se ha convertido en una habilidad profesional, o en una importante habilidad interna.
?La recolección de basura es el proceso de leer datos válidos de un bloque flash, escribirlos en otro bloque flash y luego borrar el bloque flash original para hacerlo utilizable.
Te preguntarás, los datos están bien conservados en el bloque de memoria flash original, ¿por qué molestarse en leer los datos y escribirlos en otro bloque? ¡La razón es que hay demasiada basura (datos no válidos) en el bloque flash original! Como se mencionó anteriormente, los bloques de memoria flash deben borrarse antes de escribirlos, no sobrescribirse.
Si solo hay una pequeña cantidad de datos válidos en un bloque flash, pero los datos ocupan todo el bloque flash, entonces deberá sacar los datos válidos y luego borrar el bloque flash para que esté disponible, aumentando así la utilización del bloque flash. .
?Quizás quieras preguntar por qué los subdatos no son válidos. La razón todavía se debe a las características de la memoria flash. Para extender la vida útil de cada bloque de memoria flash, es necesario equilibrar la cantidad de veces que se borra cada bloque de datos. se borra, es necesario equilibrar las escrituras de datos de cada bloque. Ingrese el tiempo en lugar de escribir hasta morir por bloque. Cuando el espacio de usuario está lleno de datos, los datos deben escribirse en el espacio libre (la capacidad real del SSD es mayor que la capacidad nominal y la parte adicional es el espacio libre porque el espacio libre es invisible). el sistema operativo, en todas las direcciones Escribir datos en el espacio libre generará datos no válidos (basura) en el espacio del usuario.
?Existen rumores de que las unidades de estado sólido se vuelven más lentas con el uso. Lamentablemente, esto es cierto y está bien fundamentado. El nuevo disco no tiene basura que recolectar, ¡así que es rápido! Cuando lo usas durante mucho tiempo, producirá más basura y necesitarás usar energía interna para forzar la eliminación de la basura, por lo que, por supuesto, disminuirá la velocidad.
?De hecho, en la recolección de basura, ya hemos mencionado el motivo del equilibrio de desgaste: para extender la vida útil de cada bloque de memoria flash, debemos equilibrar la cantidad de veces que se borra cada bloque. y para equilibrar cada bloque, la cantidad de veces que se borra requiere que el tiempo de escritura de datos de cada bloque esté equilibrado, y un bloque no se puede escribir hasta morir, un bloque a la vez.
Entonces, ¿cuánto dura la vida útil de un bloque de memoria flash?
SLC: 100.000 ciclos
MLC: 1-10.000 ciclos
TLC: varios cientos a 2.000 ciclos
QLC: < TLC
3D: < QLC
¡Por lo tanto, nivelar las pérdidas es muy importante! Los siguientes conceptos:
Datos fríos, datos calientes
Bloques antiguos, bloques nuevos
¿Los datos fríos son datos que los usuarios no actualizan con frecuencia, como por ejemplo? Audio/vídeo, datos de sólo lectura, etc. Por el contrario, los datos calientes son datos que se actualizan con frecuencia, como el uso de software, etc., lo que genera una gran cantidad de datos basura.
?Los bloques antiguos son bloques que se borran con más frecuencia, mientras que los bloques jóvenes son bloques que se borran con menos frecuencia. PD: Cada bloque tiene un EC (recuento de borrado) para que puedas ver si es un SSD joven o viejo.
?SSD suele tener dos algoritmos (nivelación de desgaste): nivelación dinámica (Dynamic WL) y nivelación estática (Static WL). El principio básico del algoritmo de suavizado dinámico es escribir datos activos en bloques jóvenes; la idea básica del algoritmo de suavizado estático es escribir datos fríos en bloques antiguos. Aquí es donde puedes detenerte y saborear las razones para hacer esto en primer lugar.
DWL es fácil de entender: escribe datos en bloques más jóvenes y evita escribir datos en bloques más antiguos, así los bloques mantendrán un valor más equilibrado.
¿SWL? Los datos fríos básicamente no se actualizan y la cantidad de borrados de bloques que ocupan no aumentará, mientras que otros bloques escribirán datos con frecuencia y la cantidad de borrados de bloques aumentará, lo que resultará en un desequilibrio de borrado, que a SSD no le gusta más. Por lo tanto, los datos fríos deben trasladarse a bloques más antiguos, lo que permite que los bloques más jóvenes asuman el trabajo de los bloques más antiguos.