¿Por qué la memoria flash NAND no puede ser una memoria de acceso aleatorio?

Cuando leo cualquier documento sobre flashes NAND y NOR. Dicen que NAND es memoria secuencial mientras que NOR es aleatoria. No entiendo qué impide que la memoria NAND sea aleatoria también, ya que la única diferencia en estas dos memorias es que son en serie y en paralelo.

Sería útil si señalara la documentación a la que se refiere.
en lecturas, diría que la memoria flash NAND es una memoria RAM excelente; tiene capacidad de acceso aleatorio como cualquier DRAM moderna, donde también leerías un banco de memoria completo a la vez. En escritura, no es exactamente así, debido a la idiomática más compleja de "leer línea completa, borrar línea completa, reescribir línea modificada".
Cuidado con el uso del término "RAM" para memoria flash. - Me confundí por un segundo, otros también pueden hacerlo.
También puede preguntar por qué su automóvil no puede volar porque los aviones sí pueden y la única diferencia es que uno tiene alas y el otro no. Son estructuras de memoria fundamentalmente diferentes destinadas a diferentes casos de uso. Si necesita acceso aleatorio, use NOR, si necesita almacenamiento masivo barato, use NAND. Si necesita almacenamiento masivo barato con acceso aleatorio, decida qué es más importante porque no puede tener todo.

Respuestas (1)

NAND flash no almacena datos sin errores. Tiene una tasa de error de bit (comparativamente) alta. Por esta razón, las páginas de datos en NAND se almacenan con datos redundantes que permiten la verificación y corrección de errores. Esto significa que cuando lee un byte de NAND flash, puede tener un error. Para verificarlo o corregirlo, debe leer toda la página de datos para obtener los datos redundantes. Esto lo convierte fundamentalmente en un medio de almacenamiento orientado a páginas.

La tendencia durante los últimos 10 años ha sido que el tamaño de página y la densidad de NAND aumenten, pero la corrección de errores requerida también se ha vuelto más compleja y la probabilidad de errores de un solo bit también ha aumentado.

El tiempo efectivo de una operación de lectura de página depende de cuánto se tarde en leer, comprobar y corregir los datos. En los casos en que se debe corregir un error, el tiempo de lectura efectivo es mucho más largo que en el caso sin error. Esta suele ser una característica indeseable de la memoria RAM. El proceso de corrección de errores es computacionalmente intensivo y básicamente se requiere aceleración de hardware para que funcione sin afectar el rendimiento del sistema.

Cuando se trata de escribir datos en flash NAND, existen algunos problemas adicionales. Para escribir datos, primero debe borrar. NAND flash no permite la escritura aleatoria. Los borrados toman un tiempo relativamente largo y deben realizarse en un bloque completo de páginas. Entonces, para escribir un byte, primero debe leer un bloque en la memoria volátil, luego borrarlo y luego volver a escribir los datos modificados (incluidos los datos redundantes recién calculados para la página que modificó).

Ahora tenemos que hablar de la resistencia. El flash NAND solo se puede borrar tantas veces antes de que se estropee. Entonces, a veces, vas a modificar un byte y luego encuentras que el bloque es malo. Debe marcar el bloque como incorrecto, luego reubicar todo el bloque en otro lugar, solo para escribir un byte. Y eso significa que debe realizar un seguimiento de dónde se han reubicado o reasignado los bloques.

Espero que esté comenzando a ver algunas de las dificultades asociadas con el uso de NAND flash como RAM.

Si desea investigar más sobre esto, aquí hay algunos términos de búsqueda: resistencia de flash NAND, ECC de flash NAND, gestión de bloques defectuosos de flash NAND.

Además, ¿qué sucede si se corta la energía mientras está reubicando un bloque?
Cuando dice "Esta suele ser una característica indeseable de la RAM", ¿quiere decir que la RAM tiene una capacidad limitada o nula para la corrección de errores?
@Motivado, no, me refería al hecho de que el tiempo de lectura es variable en un amplio rango. Normalmente desea que las lecturas de RAM sean muy rápidas. Algunos buses RAM incorporan ECC.
Si lo he entendido correctamente, ¿la razón por la que NAND no puede ser una memoria de acceso aleatorio en esta etapa es por el tiempo de búsqueda de RAM? ¿Sería justo decir que NAND es comparable a RAM cuando lee datos y no cuando escribe?
Incluso una lectura puede desencadenar un evento de corrección de errores que llevará mucho más tiempo que una lectura sin errores. Por lo tanto, no es tan determinista, en cuanto al tiempo, como la RAM. Hay cosas como la memoria flash NAND programable una sola vez que es muy similar a la ROM.
¿Quiere decir que la tasa de corrección de errores de RAM es determinista y más rápida que NAND y, por lo tanto, NAND no puede ser RAM?
Entonces, ¿es posible construir una memoria flash NAND de acceso aleatorio?
Honestamente, no sé si es posible construir una memoria flash NAND de acceso aleatorio. Pero no tengo conocimiento de que exista ninguno. Cuando se desea un acceso aleatorio, normalmente se utiliza la memoria flash NOR.