6 votos

¿Por qué la memoria NOR se considera XIP y la NAND no?

He estado leyendo en Memorias NOR y NAND en busca de una respuesta a por qué exactamente NOR es un XIP (eXecute In Place), y NAND no lo es. Aunque ambos enlaces eran extremadamente informativos y estaban bien escritos, ninguno satisfacía explícitamente mi curiosidad.

Creo que entiendo los pros y los contras básicos de ambos tipos. Tal y como yo lo veo, la memoria NOR es adecuada para almacenar programas, en lugar de datos, porque tiene tiempos de lectura rápidos y tiempos de escritura/borrado terriblemente lentos. Hasta aquí todo claro. Además, NOR ofrece acceso aleatorio real (debido a las puertas NOR, que son esencialmente paralelas y no en serie, si lo he entendido bien), a diferencia de NAND, que normalmente funciona a nivel de palabras, en serie, no de bits individuales.

Esto me hizo pensar que la parte XIP es de alguna manera debido a la capacidad de acceder a cada bit individual, NOR ser al azar. Sin embargo, no estoy totalmente convencido de que esto sea así. ¿Es así, o estoy diciendo tonterías?

Si es así, he tenido la impresión de que la NAND en realidad peut implementarse de forma que se consiga un acceso aleatorio (aunque no hay ninguna razón real para hacerlo, AFAIK). Entonces, ¿podría lograrse teóricamente un XIP con este tipo de memoria NAND?

7voto

dwestbrook Puntos 1754

XIP requiere acceso aleatorio: la CPU necesita leer el flujo de instrucciones a medida que lo ejecuta. Si hay un bucle, tiene que volver a leer las mismas instrucciones (a menos que estén almacenadas en caché). Si hay una bifurcación, necesita seguirla sin retraso.

Las interfaces flash NAND suelen estar diseñadas para permitir únicamente el acceso en sentido de las agujas del reloj. Si quieres ejecutar código desde esa memoria, o bien lees todo el bloque y descartas todo menos la instrucción que te interesa (lo que sería terriblemente lento), o bien añades un mecanismo de almacenamiento en caché.

Hay implementaciones que implementan XIP en NAND capturando un fallo de página, leyendo un bloque en la caché y luego fijando la caché al espacio de direcciones virtual. Con programas optimizados para ello (hay compiladores que entienden las arquitecturas paginadas y saben alinear el código para que las funciones que se llaman entre sí acaben en la misma página) no se pierde mucho rendimiento.

Tenga en cuenta que, salvo para grandes series, todas estas consideraciones son prácticamente obsoletas. La memoria RAM es lo bastante barata como para que, con unos pocos miles de unidades, la diferencia en el coste del hardware siga siendo menor que la diferencia en el esfuerzo de ingeniería.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X