¿Cuáles son las diferencias y dónde usaría cada una?
Hay mucha compensación en ello.
Wikipedia también:
A pesar de los transistores adicionales, la reducción en los cables de tierra y las líneas de bits permite un diseño más denso y una mayor capacidad de almacenamiento por chip. Además, normalmente se permite que el flash NAND contenga un cierto número de fallas (se espera que el flash NOR, como se usa para una ROM de BIOS, esté libre de fallas). Los fabricantes intentan maximizar la cantidad de almacenamiento utilizable reduciendo el tamaño del transistor por debajo del tamaño en el que se pueden hacer de manera confiable, hasta el tamaño en que las reducciones adicionales aumentarían el número de fallas más rápido de lo que aumentaría el almacenamiento total disponible.
Por lo tanto, el flash NOR puede dirigirse más fácilmente, pero ni siquiera es tan denso.
Si echas un vistazo a un PDF de comparación bastante decente.
NOR tiene un menor poder de espera, es fácil para la ejecución de código y tiene una alta velocidad de lectura.
NAND tiene una potencia activa mucho menor (escribir bits es más rápido y de menor costo), mayor velocidad de escritura (por mucho), mucha mayor capacidad, mucho menor costo por bit y es muy fácil para el uso de almacenamiento de archivos. debido a su velocidad de lectura más baja cuando se usa para la ejecución de código, realmente necesita fantasma para ram.
Para citar una pequeña sección con una gran tabla encima ...
El flash NAND es más barato, por lo que debes usarlo si puedes. El inconveniente es que no es tan confiable. NAND flash es más rápido en la mayoría de las operaciones, con la notable excepción de pequeñas lecturas de acceso aleatorio. Si desea leer un par de bytes de una dirección aleatoria en la memoria, NOR es más rápido. Para lecturas de memoria grandes, NAND funciona razonablemente bien, y en realidad supera a NOR por fragmentos suficientemente grandes.
La mayoría de los sistemas operativos incorporados incluyen código para corregir los errores en NAND Flash. También hay microcontroladores con corrección de errores de hardware. El problema real ocurre en el momento del arranque: los cargadores de arranque de primer nivel no tienen un código de corrección de errores y todavía no han configurado el controlador de memoria para ejecutar el ECC de hardware. Es un problema de huevo y gallina: no puede cargar el código ECC sin errores porque aún no ha cargado el código ECC.
Para solucionar este problema, algunos fabricantes de memoria especificarán una determinada región del chip que se garantiza que estará libre de errores (los primeros 4 kB, o algo así). Pones un gestor de arranque con software ECC allí (como U-boot ), lo lees sin errores y luego lo usas para leer el kernel de tu sistema operativo, corrigiendo los errores a medida que avanzas. También puede almacenar un gestor de arranque en una memoria flash serie, y simplemente usar la memoria flash NAND para cosas grandes como un núcleo del sistema operativo o un sistema de archivos.
He encontrado útil esta nota de aplicación de Atmel: http://www.atmel.com/dyn/resources/prod_documents/doc6255.pdf
NOR permite el acceso aleatorio, pero NAND no (solo acceso a la página).
De Wikipedia :
fuente