5 votos

¿Un microcontrolador obtiene las instrucciones en bloques?

Parece que la memoria flash de la mayoría de los microcontroladores que almacena el código en ensamblador es una flash NAND, a la que sólo se puede acceder por bloques. ¿La CPU tiene que buscar un bloque entero para ejecutar el código, o estoy equivocado y está hecha de flash NOR que es accesible por bytes?

La hoja de datos del ATmega 186 dice lo siguiente:

Este es el concepto básico de pipelining para obtener hasta 1 MIPS por MHz con los correspondientes resultados únicos para funciones por coste, funciones por relojes y funciones por unidad de potencia.

La hoja de datos no es muy clara en cuanto a la tecnología que hay detrás de esta "flash", pero parece ser diferente de la EEPROM que se utiliza para los datos, que tiene 10 veces más ciclos de escritura.

Edición: la posible pregunta duplicada sugerida y las respuestas se refieren a la canalización, no a la tecnología de almacenamiento.

0 votos

12voto

Nate Kerkhofs Puntos 113

No y sí.

No, porque como señala alex.forencich, la mayoría de las MCUs utilizan NOR flash. Esto simplifica enormemente las arquitecturas de los MCU, ya que les permite buscar y comenzar a ejecutar una sola instrucción a la vez. Es casi seguro que así es como funcionan los AVRs de 8 bits, y los PICs, etc.

Sí, porque algunas arquitecturas utilizan buses más amplios en sus interfaces flash, pre-fetch, y/o multiple-issue para ayudar a superar la latencia de la memoria subyacente y mejorar el rendimiento general. Por ejemplo, las piezas STM32F7 (Cortex M7) tienen un bus de 128/256 bits entre el controlador de la flash y la memoria subyacente, y luego un AHB de 64 bits entre el núcleo y el controlador de la flash. Esto significa que el controlador flash recupera cuatro u ocho instrucciones a la vez, y el núcleo puede recuperar dos instrucciones del controlador flash simultáneamente. En este caso, el núcleo quiere dos instrucciones en cada ciclo porque utiliza un pipeline de doble emisión, lo que significa que puede obtener y descodificar ambas instrucciones simultáneamente y, en muchos casos, enviar ambas instrucciones a diferentes unidades de procesamiento para su ejecución simultánea.

El controlador de la memoria flash también puede precargar instrucciones adicionales que el núcleo aún no ha solicitado, de nuevo para reducir el impacto de la latencia de la memoria flash. La antelación con la que el controlador realizará la precarga, y si utiliza caché adicional u otras estrategias en las que las instrucciones se obtienen por lotes, depende en gran medida de la arquitectura.

7voto

silverbolt Puntos 18

La mayoría de los microcontroladores utilizan flash NOR, no flash NAND. Y normalmente se puede leer lo que se quiera, normalmente sólo las operaciones de escritura y borrado se basan en la página. A menos que utilices una flash NAND que utilice codificación/blanqueo, FEC, nivelación de desgaste, etc. En ese caso, el controlador realizará todo ese procesamiento en base a bloques o páginas.

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