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

3

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

Creo que entiendo los pros y los contras básicos de ambos tipos. Tal como lo veo, la memoria NOR es adecuada para el almacenamiento de programas, en lugar del almacenamiento de datos, porque tiene tiempos de lectura rápidos y tiempos de escritura / borrado tremendamente lentos. Claro hasta ahora Además, NOR ofrece acceso aleatorio verdadero (debido a las compuertas NOR, que son esencialmente paralelas y no seriales, si lo entendí correctamente), a diferencia de NAND, que normalmente funciona en el nivel de las palabras, en serie, no en bits individuales.

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

Un seguimiento si es así: tengo la impresión de que NAND realmente puede implementarse de una manera que logre acceso aleatorio (aunque no hay una razón real para hacerlo, AFAIK) . ¿Podría el XIP teóricamente también lograrse con dicha memoria NAND?

    
pregunta ReoTheYokel

1 respuesta

4

XIP requiere acceso aleatorio: la CPU necesita leer el flujo de instrucciones a medida que lo ejecuta. Si hay un bucle, es necesario volver a leer las mismas instrucciones nuevamente (a menos que estén almacenadas en caché). Si hay una sucursal, debe seguirla sin demora.

Las interfaces flash NAND generalmente están diseñadas para permitir el acceso por bloques solamente. Si desea ejecutar código desde esa memoria, puede leer todo el bloque y descartar todo menos la instrucción que le interesa (lo que sería terriblemente lento), o agregar un mecanismo de almacenamiento en caché.

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

Tenga en cuenta que para cualquier cosa que no sean grandes ejecuciones de producción, todas estas consideraciones son bastante obsoletas. La RAM es lo suficientemente barata como para que unos pocos miles de unidades la diferencia en el costo del hardware sea aún menor que la diferencia en el esfuerzo de ingeniería.

    
respondido por el Simon Richter

Lea otras preguntas en las etiquetas