Direccionando la memoria flash
La memoria flash tiene algunos modos de direccionamiento diferentes. El flasheo de la dirección es una técnica que le permite localizar rápidamente el último sector usado en su chip de memoria flash.
A diferencia de Nor Flash, que es un acceso aleatorio, NAND Flash usa escrituras de página para leer secuencialmente los datos de Flash Memory Chips. Este enfoque acelera las operaciones de escritura.
NI
Ni Flash es una tecnología intermitente de dirección, lo que significa que almacena datos de byte individual en lugar de en bloques. Es una memoria de baja latencia con una alta velocidad de escritura y lectura, lo que lo hace ideal para el almacenamiento de código en microcontroladores o procesadores integrados.
A diferencia de NAND, ni Flash no es volátil, lo que significa que se puede leer o escribir sin que se aplique ningún poder. Esta es una característica que es importante para las aplicaciones donde el consumo de energía es una preocupación, como en teléfonos móviles o dispositivos médicos.
También ofrece una velocidad de lectura más rápida que NAND Flash, que es útil en aplicaciones donde se requiere acceso aleatorio. También admite la funcionalidad XIP (Ejecutar en su lugar), que permite a los controladores de host ejecutar el código directamente desde ni flash sin tener que copiar el código en RAM primero.
Cada celda de memoria NOR NOR contiene un transistor de efecto de efecto de óxido de metal de la puerta flotante (FGMOS) que puede almacenar 0 o 1. En ni flash, estas celdas están conectadas en paralelo, lo que permite que se accedan rápidamente.
Otra diferencia clave entre NOR y NAND Flash es que NAND está diseñado para el almacenamiento de datos continuo y secuencial, mientras que ni es aleatorio. Esto puede ser una desventaja para las aplicaciones que necesitan una alta velocidad de lectura, pero es una gran ventaja para muchos otros usos.
Un beneficio importante de NOR es que se puede usar como un chip de arranque, por lo que las aplicaciones se pueden cargar en el dispositivo desde el principio. Esta es una característica crucial para muchas aplicaciones en las que el usuario necesita iniciarse con su dispositivo de inmediato.
Además, ni Flash se puede programar de la misma manera que los chips de memoria regulares, por lo que es ideal para sistemas integrados. Se puede configurar para realizar una amplia gama de funciones, incluida la ejecución de programas y la transferencia de datos.
La interfaz NOR se puede programar utilizando el protocolo SPI estándar o el protocolo QSPI más avanzado, según los requisitos de la aplicación. Independientemente de la interfaz elegida, la configuración del dispositivo debe ajustarse al caso de uso exacto y los patrones de acceso a la memoria. Esto requiere la comprensión del conjunto de comandos NOR y la configuración del dispositivo.
Noble
La memoria NAND Flash es un tipo de almacenamiento flash que se utiliza en muchos dispositivos, como reproductores de MP3, cámaras digitales y unidades de flash USB. No requiere energía para almacenar datos y no es volátil, lo que significa que puede almacenar datos durante un largo período de tiempo sin dañarlo. Tiene varios tipos, incluidos SLC, MLC y TLC. Cada tipo tiene diferentes características, como niveles de resistencia y costos, por lo que es importante seleccionar la adecuada para su aplicación.
Cada celda NAND se organiza en una configuración plana y utiliza transistores de puerta flotante para almacenar información. Estos transistores están hechos de polisilicio y tienen dos puertas: una puerta de control y una puerta flotante. La puerta flotante permite que el voltaje se envíe a la celda y la puerta de control controla el flujo de datos a través del transistor.
Una vez que la información se almacena en la celda, se organiza en bloques. Cada bloque contiene una serie de bits de datos y cada bit está vinculado a otra celda en el bloque. Los bloques se organizan en una cuadrícula para que el número de celdas por cuadrícula sea igual al número de bits que se almacenan en cada celda.
Cuando los datos en una celda cambian, se escriben en otra celda y los datos antiguos están marcados como 'listos para la eliminación'. Los nuevos datos se escriben en el siguiente bloque y si hay suficiente espacio en el nuevo bloque para los datos antiguos, se borra de la celda.
La cantidad de datos que se almacenan en una celda es proporcional a su capacidad, por lo que es posible almacenar una gran cantidad de datos en una sola celda NAND, pero el número de celdas en cada bloque limitará el número total de bits que pueden ser almacenado en el chip. Esto significa que NAND no es adecuado para su uso como reemplazo de ROM porque no se puede usar para el acceso aleatorio.
Dado que NAND Flash tiene un costo más bajo y tiempos de borrado y escritura más rápido que NOR, se ha convertido en una opción popular para su uso en unidades de estado sólido (SSD) y otras aplicaciones intensivas en datos. Sin embargo, NAND todavía no es ideal como reemplazo de ROM del programa porque no tiene un bus de direcciones externo de acceso aleatorio.
Interfaces de memoria flash
Las interfaces de memoria flash son la infraestructura física y lógica que permite que un dispositivo flash se comunique con un dispositivo de host. Contienen un circuito de interfaz, un controlador y un búfer de memoria que se puede usar para almacenar y recuperar datos del dispositivo Flash.
La mayoría de los dispositivos Flash modernos interfaz sobre I2C o SPI para habilitar la comunicación entre el dispositivo y un microcontrolador u otro procesador. Estas interfaces son económicas y accesibles, pero proporcionan niveles moderados de velocidad.
Varios sistemas de archivos flash están disponibles para su uso con estas interfaces. Sin embargo, la mejor opción de interfaz depende de la aplicación del dispositivo.
Los dispositivos Flash I2C (circuito interintegrado) son una opción popular para aplicaciones integradas que requieren una tecnología de memoria discreta y no volátil. Tienen baja latencia de lectura y están disponibles en una amplia gama de densidades.
Los dispositivos Flash SPI (interfaz periférica en serie) también son una opción popular para muchos sistemas integrados. Estas interfaces son fáciles de implementar y ofrecen una amplia gama de tamaños de flash.
Algunos sistemas de archivos flash tienen una capacidad de reescritura que puede reescribir todos los bocadillos en un sector cuando el contenido se borra o programa. Esta capacidad es útil para la nivelación del desgaste y la corrección de errores.
Es importante tener en cuenta que la mayoría de los sistemas de archivos flash no hacen uso de esta capacidad de reescritura, y que la mayoría de las reescrituras solo aclaran los bits. Esto puede causar un problema al escribir en múltiples sectores con los mismos valores de bits.
Además, las reescrituras también pueden borrar otros bits que no se han escrito desde la última escritura. Esto puede afectar negativamente el rendimiento de lectura/escritura de un dispositivo.
La función ARM_FLASH_PROGRAMDATA se puede usar para programar datos en un dispositivo flash. Esta función acepta un puntero a un búfer de datos para programar, y una variedad de parámetros de tamaño de datos (ARM_FLASH_CAPABILIDADES) que determina la granularidad de los datos.
El tamaño óptimo de la página de programación se define mediante el parámetro PAGE_SIZE y típicamente está en bytes. ARM_FLASH_CAPABLITS también describe cómo alinear los datos dentro de una página.
Esta función también permite al usuario especificar la unidad programable más pequeña en un sector. Este parámetro puede ser UINT8_T, UINT16_T o UINT32_T.
Direccionamiento de memoria flash
La dirección de memoria flash es la capacidad de una computadora para reconocer y acceder a la memoria almacenada en un chip de almacenamiento flash. El direccionamiento es importante porque determina cómo la computadora puede leer y escribir datos desde un dispositivo flash, y porque también determina el número de bits que una celda de memoria debe contener para almacenar datos.
El modo de direccionamiento que utiliza una memoria flash está determinado por su arquitectura interna. Algunos tipos de memoria flash usan un modo de direccionamiento de nivel de palabra, en el que se accede a toda la palabra simultáneamente. Otros tipos de memoria Flash usan un modo de direccionamiento de nivel de bit, en el que se accede a cada bit uno a la vez.
En ambos casos, la estructura interna del chip de memoria flash es una cuadrícula de células que se asemejan a las células de transistor de efecto de campo (MOSFET) estándar de óxido de metal-semiconductor. Cada celda está conectada a una línea de palabras y una línea de bits. La línea de palabras está conectada a la puerta de control de cada celda, mientras que la línea de bits conecta drenajes y fuentes en las celdas.
Cada celda también tiene un espacio auxiliar que se dedica a almacenar códigos de corrección de errores, metadatos e información de gestión. El área auxiliar se puede tamaño entre 2 kb y 8 kb.
Como resultado, la capacidad total de cada célula no es tan grande como lo sería si todas las células estuvieran dispuestas en múltiplos binarios estrictos. Este espacio adicional es necesario para distribuir escrituras (nivelación de desgaste), ahorro y corrección de errores.
Además, se necesita el área adicional para ayudar con la redundancia de datos y proporcionar alguna forma de capacidad libre para futuras operaciones de escritura. Estos espacios adicionales se llaman páginas.
La organización de la página es una consideración de diseño que prefieren muchas implementaciones. En general, cada página se divide en subpáginas. Estas subpáginas contienen la suma de verificación de corrección de errores para cada segmento de 512 bytes y otros metadatos.
El tamaño de cada subpágina generalmente se basa en una longitud de bloque. Un solo bloque puede incluir hasta 32 subpáginas. Durante la programación, el usuario debe asegurarse de que todas las subpáginas estén programadas en orden consecutivo dentro del bloque. Intentar escribir páginas fuera de orden aumenta la tasa de error.