
Un controlador de memoria flash (o controlador flash ) administra los datos almacenados en la memoria flash (generalmente memoria flash NAND ) y se comunica con una computadora o dispositivo electrónico . Los controladores de memoria flash pueden diseñarse para operar en entornos de bajo ciclo de trabajo , como tarjetas de memoria u otros medios similares para su uso en PDA , teléfonos móviles , etc. Las unidades flash USB utilizan controladores de memoria flash diseñados para comunicarse con computadoras personales a través del puerto USB con un bajo ciclo de trabajo. Los controladores flash también pueden diseñarse para entornos de mayor ciclo de trabajo, como unidades de estado sólido (SSD) utilizadas como almacenamiento de datos para sistemas de computadoras portátiles , hasta matrices de almacenamiento empresarial de misión crítica . [ 1 ]
Configuración inicial
Tras la fabricación inicial de un dispositivo de almacenamiento flash, el controlador flash se utiliza primero para formatear la memoria flash. Esto garantiza el correcto funcionamiento del dispositivo, identifica las celdas de memoria flash defectuosas y asigna celdas de reserva para sustituir a las que fallen en el futuro. Parte de las celdas de reserva también se utiliza para almacenar el firmware que controla el controlador y otras funciones especiales del dispositivo. Se crea una estructura de directorios que permite al controlador convertir las solicitudes de sectores lógicos en las ubicaciones físicas de los chips de memoria flash. [ 1 ]
Leer, escribir y borrar
Cuando el sistema o dispositivo necesita leer o escribir datos en la memoria flash, se comunica con el controlador de memoria flash. Los dispositivos más sencillos, como las tarjetas SD y las unidades flash USB, suelen tener un número reducido de chips de memoria flash conectados simultáneamente. Las operaciones están limitadas por la velocidad de cada chip de memoria flash. En cambio, una unidad de estado sólido de alto rendimiento tendrá más chips organizados con rutas de comunicación paralelas para permitir velocidades mucho mayores que las de un solo chip de memoria flash.
Nivelación del desgaste y selección de bloques
La memoria flash puede soportar un número limitado de ciclos de programación y borrado. Si un bloque de memoria flash se programara y borrara repetidamente sin escribir en ningún otro bloque, este se desgastaría antes que los demás, acortando así prematuramente la vida útil del dispositivo de almacenamiento. Por este motivo, los controladores de memoria flash utilizan una técnica denominada nivelación de desgaste para distribuir las escrituras de la forma más uniforme posible entre todos los bloques de memoria flash de la SSD. En un escenario ideal, esto permitiría que cada bloque alcanzara su límite de terabytes escritos . [ 2 ]
Capa de traducción Flash (FTL) y mapeo
Por lo general, los controladores de memoria flash también incluyen la "capa de traducción de flash" (FTL), una capa debajo del sistema de archivos que asigna las direcciones de bloques lógicos (LBA) del host o del sistema de archivos a la dirección física de la memoria flash (mapeo lógico-físico). Las LBA hacen referencia a números de sector y a una unidad de mapeo de 512 bytes. Todas las LBA que representan el tamaño lógico visible y administrado por el sistema de archivos se asignan a una ubicación física (ID de bloque, ID de página e ID de sector) de la memoria flash. Como parte de la nivelación de desgaste y otros algoritmos de administración de flash (administración de bloques defectuosos, administración de perturbaciones de lectura, manejo seguro de flash, etc.), la ubicación física de una LBA puede cambiar dinámicamente con frecuencia. Las unidades de mapeo de una FTL pueden variar, de modo que las LBA se asignan a nivel de bloque, página o incluso subpágina. Dependiendo del patrón de uso, una granularidad de mapeo más fina puede reducir significativamente el desgaste de la memoria flash y maximizar la durabilidad de un medio de almacenamiento basado en flash. [ 3 ] [ 4 ] [ 5 ] La función de deduplicación para eliminar datos redundantes y escrituras duplicadas también se agrega en FTL. [ 6 ]
Dado que los metadatos FTL ocupan su propio espacio en la memoria flash, necesitan protección en caso de pérdida de energía. Además, es posible que la tabla de mapeo se desgaste antes que otras partes de la memoria flash, lo que acortaría prematuramente la vida útil del dispositivo de almacenamiento. Esto suele evitarse en dispositivos empresariales asignando un espacio sobredimensionado para repuestos, aunque también se han propuesto formas de almacenamiento más duraderas, como la MRAM, para FTL.
La FTL puede tener tres tipos: mapeo de páginas, mapeo de bloques y mapeo híbrido. El mapeo de páginas puede tener un mayor rendimiento, pero tiene un mayor tamaño de metadatos FTL y un mayor costo, y generalmente se usa en unidades de estado sólido . El mapeo de bloques puede tener un menor tamaño de metadatos y un menor costo, pero tiene un rendimiento menor, y generalmente se usa en unidades flash USB . En las implementaciones de FTL de mapeo de páginas, la relación entre el tamaño de los metadatos FTL y la capacidad de almacenamiento suele ser de 1:1000; por ejemplo, un dispositivo de almacenamiento flash de 1 TB puede tener 1 GB de metadatos FTL.
Por lo general, la FTL se implementa mediante firmware que se ejecuta en un controlador de memoria flash integrado en el dispositivo de almacenamiento (como casi todas las SSD, eMMC, tarjetas SD, unidades flash USB, etc.). Sin embargo, algunos sistemas conectan el procesador principal directamente a chips de memoria flash sin un controlador de hardware intermedio, y en su lugar gestionan los bloques defectuosos y la nivelación del desgaste con software que se ejecuta en el procesador principal. [ 7 ]
Recogida de basura
Una vez que se ha escrito una vez en cada bloque de un dispositivo de almacenamiento de estado sólido, el controlador de memoria flash deberá volver a algunos de los bloques iniciales que ya no contienen datos (también llamados bloques obsoletos). Los datos de estos bloques se reemplazaron con bloques recién escritos y ahora esperan a ser borrados para poder escribir nuevos datos en ellos. Este proceso se denomina recolección de basura (GC). Todos los SSD, tarjetas CF y otros dispositivos de almacenamiento flash incluyen algún nivel de recolección de basura. La velocidad a la que un controlador de memoria flash realiza esta tarea puede variar. [ 8 ]
Referencias
- 1 2 "Guía de memoria flash" (PDF) . kingston.com . Consultado el 7 de marzo de 2013 .
- ↑ Chang, Li-Pin (2007-03-11). "Sobre la nivelación eficiente del desgaste para sistemas de almacenamiento de memoria flash a gran escala". CiteSeerX 10.1.1.103.4903 .
- ↑ Goodson, Garth; Iyer, Rahul. "Compromisos de diseño en una capa de traducción Flash" (PDF) . Archivado del original (PDF) el 23 de junio de 2015.
- ↑ "Comprendiendo Flash: La capa de traducción de Flash" . 17 de septiembre de 2014.
- ↑ Heidrich, Susan (febrero de 2015). "Nueva arquitectura de gestión de memoria flash habilita MLC para almacenamiento industrial" (PDF) . Archivado del original (PDF) el 23 de junio de 2015. Recuperado el 23 de junio de 2015 .
- ↑ Chen, Feng; Luo, Tian; Zhang, Xiaodong (2011). CAFTL: una capa de traducción flash sensible al contenido que mejora la vida útil de las unidades de estado sólido basadas en memoria flash . FAST' 11. pág. 6.
- ↑ "UBIFS - Sistema de archivos UBI: memoria flash sin procesar frente a dispositivos FTL" .
- ↑ "SSDs - Amplificación de escritura, TRIM y GC" (PDF) . OCZ Technology. Archivado del original (PDF) el 26 de mayo de 2012. Consultado el 31 de mayo de 2010 .
- Memoria de computadora
- Almacenamiento informático de estado sólido
- Circuitos integrados de aplicación específica