Articulo de referencia

Sustitución de la memoria flash NOR

Si bien la memoria flash sigue siendo uno de los sistemas de almacenamiento más populares en sistemas embebidos debido a su no volatilidad , resistencia a golpes, tamaño reducid...

Si bien la memoria flash sigue siendo uno de los sistemas de almacenamiento más populares en sistemas embebidos debido a su no volatilidad , resistencia a golpes, tamaño reducido y bajo consumo de energía, su aplicación ha crecido mucho más allá de su diseño original: la memoria flash NOR está diseñada para almacenar el código binario de los programas porque admite XIP (eXecute-In-Place) y ofrece un alto rendimiento en las operaciones de lectura, mientras que la memoria flash NAND se utiliza como almacenamiento de datos debido a su menor precio y mayor rendimiento en las operaciones de escritura/borrado, en comparación con la memoria flash NOR. En los últimos años, el precio de la memoria flash NAND ha disminuido mucho más rápido que el de la memoria flash NOR. Por lo tanto, para reducir el costo del hardware, el uso de memoria flash NAND en lugar de memoria flash NOR (motivado por una fuerte demanda del mercado) se está convirtiendo en una nueva tendencia en el diseño de sistemas embebidos, especialmente en teléfonos móviles y juegos arcade .

Descripción general

El reemplazo depende de una gestión bien diseñada de la memoria flash, que se lleva a cabo mediante software en un sistema anfitrión (como medio de almacenamiento) o circuitos de hardware/firmware dentro de sus dispositivos. Aquí, se propone un mecanismo de predicción eficiente con requisitos de espacio de memoria limitados y una implementación eficiente. El mecanismo de predicción recopila los patrones de acceso de la ejecución del programa para construir un grafo de predicción mediante la adopción del concepto de conjunto de trabajo . Según el grafo de predicción, el mecanismo de predicción precarga datos (/código) en la caché SRAM , para reducir la tasa de fallos de caché. Por lo tanto, se mejora el rendimiento de la ejecución del programa y se cierra eficazmente la brecha de rendimiento de lectura entre NAND y NOR. El uso de memoria flash NAND para el código de arranque requiere el uso de DRAM para ocultar el código. [ 1 ]

Otro método consiste en que la CPU cargue un pequeño cargador de arranque desde la memoria flash NAND; dicho cargador de arranque inicializa la DRAM utilizando la caché de la CPU como RAM ( SRAM ) y luego carga una versión completa del cargador de arranque.

Una estrategia de precarga eficaz

A diferencia de las ideas de almacenamiento en caché convencionales en la jerarquía de memoria , este enfoque se centra en un mecanismo de almacenamiento en caché orientado a aplicaciones, que adopta la precarga asistida por predicción basada en los rastros de ejecución de las aplicaciones. Los diseños de sistemas embebidos se consideran con un conjunto limitado de aplicaciones, como un conjunto de programas del sistema seleccionados en teléfonos móviles o juegos arcade de máquinas recreativas. Además, la capacidad de la SRAM y la potencia de cálculo están restringidas en la implementación.

Arquitectura de hardware

Arquitectura para la mejora del rendimiento de la memoria flash NAND

El diseño del hardware incluye cuatro componentes esenciales: interfaz de host, SRAM (caché), memoria flash NAND y lógica de control. Para compensar la diferencia de rendimiento entre NAND y NOR, la SRAM actúa como capa de caché para el acceso a datos sobre NAND. La interfaz de host se encarga de la comunicación con el sistema host mediante buses de direcciones y datos . La lógica de control gestiona la actividad de caché y proporciona la emulación del servicio de memoria flash NOR con memoria flash NAND y SRAM; debe contar con un mecanismo de predicción inteligente para mejorar el rendimiento del sistema. La lógica de control consta de dos componentes principales: el convertidor emula el acceso a la memoria flash NOR sobre la memoria flash NAND con una caché SRAM, donde la traducción de direcciones se realiza desde el direccionamiento por byte (para NOR) al direccionamiento de bloque lógico (LBA) (para NAND). Cabe destacar que cada página NAND de 512 B/2 KB corresponde a uno y cuatro LBA, respectivamente. El procedimiento de precarga intenta precargar datos de NAND a SRAM para que la tasa de aciertos del acceso a NOR sea alta sobre SRAM. El procedimiento debe analizar y extraer el comportamiento de la aplicación objetivo a través de un conjunto de trazas recopiladas. Según los patrones de acceso extraídos de las trazas recopiladas, el procedimiento genera información predictiva, denominada grafo de predicción.

Gráfico de predicción

El patrón de acceso de la ejecución de una aplicación sobre NOR (o NAND) consiste en una secuencia de LBA. A medida que una aplicación se ejecuta varias veces, puede aparecer una imagen prácticamente completa del posible patrón de acceso de su ejecución. Dado que la mayoría de las ejecuciones de aplicaciones dependen de la entrada o de los datos, puede haber más de un LBA subsiguiente después de un LBA dado, donde cada LBA corresponde a un nodo en el grafo. Los nodos con más de un LBA subsiguiente se denominan nodos de ramificación, y los demás, nodos regulares. El grafo que corresponde a los patrones de acceso se denomina grafo de predicción de la aplicación específica. Si las páginas en la memoria flash NAND pudieran precargarse en tiempo real y hubiera suficiente espacio SRAM para el almacenamiento en caché, entonces todos los accesos a los datos podrían realizarse a través de SRAM.

Para guardar el grafo de predicción en la memoria flash con sobrecarga (capacidad de SRAM) minimizada, la información LBA subsiguiente de cada nodo regular se guarda en el área de reserva de la página correspondiente. Esto se debe a que el área de reserva de una página en las implementaciones actuales tiene espacio sin usar, y la lectura de una página generalmente implica la lectura simultánea de sus datos y áreas de reserva. De esta manera, el acceso a la información LBA subsiguiente de un nodo regular no tiene costo adicional. Dado que un nodo de ramificación tiene más de un LBA subsiguiente, el área de reserva de la página correspondiente podría no tener suficiente espacio libre para almacenar la información. Por lo tanto, se mantiene una tabla de ramificación para guardar la información LBA subsiguiente de todos los nodos de ramificación. La dirección de entrada inicial de la tabla de ramificación que corresponde a un nodo de ramificación se puede guardar en el área de reserva de la página correspondiente. La entrada inicial registra el número de LBA subsiguientes del nodo de ramificación, y los LBA subsiguientes se almacenan en las entradas posteriores a la entrada inicial. La tabla de ramificación se puede guardar en la memoria flash. Durante la ejecución , la tabla completa se puede cargar en la memoria SRAM para un mejor rendimiento. Si no hay suficiente espacio en la memoria SRAM, se pueden cargar partes de la tabla bajo demanda .

Procedimiento de precarga

El objetivo del procedimiento de precarga es precargar datos de la memoria NAND según un grafo de predicción dado, de manera que la mayoría de los accesos a datos se produzcan a través de la memoria SRAM. La idea básica es precargar datos siguiendo el orden LBA en el grafo. Para buscar eficientemente una página seleccionada en la caché, se adopta una cola cíclica en la gestión de la caché. Los datos precargados de la memoria flash NAND se encolan, mientras que los transferidos al host se desencolan. El procedimiento de precarga se realiza de forma voraz : sea P1 la última página precargada. Si P1 corresponde a un nodo regular, entonces se precarga la página que corresponde al siguiente LBA. Si P1 corresponde a un nodo de bifurcación, entonces el procedimiento debe precargar páginas siguiendo todos los enlaces LBA siguientes posibles de forma equitativa y por turnos .

Sustitución de la memoria NAND 2D por memoria NAND 3D

A partir de 2021, comenzó la sustitución de la memoria NAND 2D por la NAND 3D. [ 2 ] La NAND 3D ofrece las ventajas de un menor coste por bit y la tecnología de controlador más reciente para una mayor fiabilidad. En consecuencia, incluso a niveles bajos de GB, la NAND 3D es la opción preferida para el almacenamiento de código. [ 3 ] [ 4 ]

Implementaciones

Los smartphones modernos con iOS y Android, como el iPhone 7 y posteriores, no suelen usar una memoria flash NOR dedicada en el proceso de arranque. En este proceso, la ROM de arranque integrada de la CPU/SoC busca y carga el gestor de arranque desde la memoria flash NAND, como la eUFS . Este proceso de arranque se denomina "sin NOR".

Referencias

  1. Arranque desde la memoria flash NAND
  2. "Utility/Utility+ pSLC (2D MLC) SD y microSD" (PDF) . Archivado del original (PDF) el 15 de enero de 2022.
  3. "Sustitución de memorias flash NOR por SSD de montaje superficial" (PDF) . Archivado del original (PDF) el 28/11/2019.
  4. "Greenliant > Almacenamiento de estado sólido > Unidad eMMC NANDrive > GLS85VM1002E" . www.greenliant.com . Consultado el 8 de julio de 2024 .
  • Una estrategia de emulación NOR sobre memoria flash NAND
  • NAND frente a NOR
  • Memoria flash OneNAND de Samsung
  • Grupo de Investigación de Memoria Flash Archivado el 2 de mayo de 2008 en Wayback Machine
  • Descripción general de la memoria no volátil
  • ¿Qué es la memoria flash NAND?
  • Aplicaciones de memoria flash NAND