Reglas tácitas de FTL: el ajuste es la esencia del algoritmo

prefacio

En el campo del almacenamiento, existe un concepto de FTL, que es un algoritmo de administración de memoria Flash , que pertenece al secreto central de cada fabricante. Cada fabricante tiene diferentes métodos de procesamiento, algunos son simples y otros complejos.

FTL, es decir, la capa de traducción flash, es decir, la capa de traducción flash, puede completar la conversión de direcciones lógicas a direcciones físicas, lo que se conoce como mapeo.

¿Por qué necesitas FTL?

Debido a que la calidad de Flash es desigual , el área rota en el interior no se puede utilizar después de la finalización.

El Host envía un comando para almacenar un dato en la dirección A. En este momento, A es la dirección lógica y es difícil morir. La dirección A en Flash resulta ser un bloque defectuoso, entonces, ¿qué debo hacer? ¿hacer?

En este momento, la dirección B es buena y FTL almacenará los datos en la dirección B. En este momento, B se pierde como dirección física y, al mismo tiempo, se registra la dirección lógica A: la dirección física B Este registro es la relación de mapeo.

La próxima vez, cuando el host necesite leer los datos de la dirección lógica A, FTL leerá los datos de la dirección física B y los devolverá al host.

La ubicación de la FTL

Conozca algunos sustantivos primero

UCL

La capa de control USB, la capa de control USB, se utiliza principalmente para analizar los comandos USB enviados desde el host.

FTL

La capa de traducción de Flash, la capa de traducción de Flash, se utiliza principalmente para convertir direcciones lógicas en direcciones físicas.

FCL

La capa de control de Flash, la capa de control de Flash, se utiliza principalmente para convertir las direcciones asignadas en instrucciones de Flash y enviarlas a Flash.

La ubicación de UCL, FTL, FCL

Reglas seguidas por FTL

El algoritmo de administración de memoria de FTL sigue naturalmente las características de Flash , y todo solo puede ejecutarse bajo las características de Flash.

  • Escribir datos con la página como la unidad más pequeña
  • Los datos escritos deben interrumpirse para que el almacenamiento sea estable.
  • Solo cuando se llene todo el bloque de datos será estable
  • Erase toma Block como la unidad más pequeña, y generalmente no es fácil borrar todo el bloque

Por supuesto, hay otras características, pero debido a los diferentes lotes, procesos de fabricación y fabricantes de Flash, los flashes que salen de fábrica también tienen algunas características diferentes, que en realidad se analizan en función de problemas reales.

Varias afinaciones en FTL

Diferentes fabricantes tienen diferentes soluciones FTl Además de la función de mapeo de dirección lógica y dirección física, un buen FTL también tiene la siguiente sintonía:

Granularidad de mapeo

Hay dos formas de mapear entre direcciones lógicas y direcciones físicas: mapeo de bloques y mapeo de páginas.

Al usar el mapeo de bloques, los bloques lógicos se asignan a bloques físicos, lo que se ve bien, pero si se encuentra con la situación de las páginas operativas, por ejemplo, si desea modificar una página en un bloque que se acaba de llenar, a menudo necesita borrar todo el bloque, reduciendo en gran medida la eficiencia.

El uso de la asignación de páginas, aunque compensa los problemas anteriores, pero si cada página está asignada, la cantidad de páginas es grande y hay muchas páginas asignadas. Debe saber que almacenar la relación de asignación también consume memoria. El mapeo de páginas consume mucho espacio.

Por lo tanto, la mayoría de los métodos en el mercado adoptan: mapeo de bloques + mapeo de página, denominado mapeo híbrido , que no solo puede cumplir con los requisitos de almacenamiento, sino también mantenerlo con partículas de página.

Almacenamiento de tablas de mapeo

La tabla de mapeo se puede cambiar en cualquier momento, y también se usa en cualquier momento . Generalmente, se usa en la RAM cuando se usa, y debe almacenarse cuando no se usa. Por lo general, se almacena en algún lugar libre. bloques Estos bloques libres no almacenan datos Solo coloque la tabla de mapeo.

procesamiento de fusión

En el campo del almacenamiento, el manejo de datos es indispensable, por lo general, merge y GC trabajan juntos.

recuperación de GC

Ahora, sin importar lo que implique una recolección de basura, la memoria siempre es un punto a considerar para un buen algoritmo.

La recolección de basura debe elegir un buen momento. Nadie quiere que un dispositivo de almacenamiento inicie la recolección de GC después de que no haya memoria utilizable. Esto es como comenzar un período de tiempo en el que el progreso es completamente invisible.

Un buen firmware a menudo toma precauciones y hace un buen trabajo de recuperación del GC sin saberlo.

Balance de vida

El mapeo de direcciones lógicas y físicas en sí mismo tiene un efecto positivo en el equilibrio de la vida útil .

Como se mencionó hace un momento, la tabla de mapeo se puede modificar en cualquier momento, por lo que la dirección física correspondiente a la dirección lógica también se modificará, y algunos bloques físicos a menudo se borran, lo que a menudo acelera el daño.

Podemos evitar borrar con frecuencia el mismo bloque físico modificando el bloque lógico para que el bloque físico sea diferente cada vez, lo que a su vez garantiza que ningún bloque físico se borre con frecuencia.

Pero hay una situación con la que no puede lidiar, es decir, los bloques de datos inactivos, que no se han cambiado después de escribirse, ocupan algunos bloques físicos todo el tiempo, y estos bloques físicos tienen una vida larga, mientras que otros bloques son desgastándose rápidamente.

Ante esta situación, solo podemos cambiar sus posiciones en el momento adecuado. Cómo elegir este momento es muy importante, y el movimiento de fusión en sí mismo también consumirá la vida misma.

Estas estrategias también son la esencia de cada algoritmo FTL.

He recopilado algunos materiales de Linux, hojas de trucos de algoritmos y materiales informáticos básicos, que son solo para estudio y uso personal. Bienvenidos a todos a estudiar y discutir juntos.

Documentación de la versión completa del tutorial de nivel de niñera de Linux

Supongo que te gusta

Origin blog.csdn.net/weixin_41904238/article/details/131105140
Recomendado
Clasificación