¿Un microcontrolador recupera las instrucciones en bloques?

5

Parece que la memoria flash de la mayoría de los microcontroladores que almacena el código de ensamblaje es NAND flash, a la que solo se puede acceder por bloque. ¿La CPU tiene que buscar un bloque completo para ejecutar el código, o estoy equivocada y está hecha de flash NOR a la que se puede acceder con un byte?

La hoja de datos del ATmega 186 dice lo siguiente:

  

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

La hoja de datos no tiene muy claro qué tecnología está detrás de este "flash", pero parece ser diferente de la EEPROM que se usa para los datos, que tiene 10 veces más ciclos de escritura.

Editar: las posibles preguntas y respuestas duplicadas sugeridas se refieren a la canalización, no a la tecnología de almacenamiento.

    
pregunta Eloy

2 respuestas

12

No y sí.

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

Sí, porque algunas arquitecturas usan buses más anchos en sus interfaces flash, pre-captura y / o múltiples problemas para ayudar a superar la latencia de la memoria subyacente y mejorar el rendimiento general. Por ejemplo, las partes STM32F7 (Cortex M7) tienen un bus de 128/256 bits entre el controlador flash y la memoria subyacente, y luego un AHB de 64 bits entre el núcleo y el controlador flash. Esto significa que el controlador de flash recupera cuatro u ocho instrucciones a la vez, y el núcleo puede recuperar dos instrucciones del controlador de flash simultáneamente. En este caso, el núcleo desea dos instrucciones en cada ciclo porque utiliza una canalización de doble problema, lo que significa que puede obtener y decodificar 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 flash también puede pre-buscar instrucciones adicionales que el núcleo aún no ha solicitado, nuevamente para reducir el impacto de la latencia del flash. Hasta qué punto se adelantará el controlador, y si utiliza almacenamiento en caché adicional u otras estrategias en las que las instrucciones se obtienen en lotes depende en gran medida de la arquitectura.

    
respondido por el ajb
7

La mayoría de los microcontroladores usan flash NOR, no flash NAND. Y, por lo general, puede leer lo que quiera, por lo general solo se escriben y borran operaciones basadas en páginas. A menos que esté usando un flash NAND que use codificación / blanqueamiento, FEC, nivelación de desgaste, etc. En ese caso, el controlador hará todo ese procesamiento en base a bloque o página.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas