¿Cuál es el concepto de estas tres opciones para configurar la memoria de STM32?

4

He leído el STM32F10x Manual de referencia pero en una sección sobre "La lectura de la memoria flash" no está claro para mí, todavía. Me refiero a esta parte (página 59):

Tengovariaspreguntas:

  1. ¿Cuáleslalatencia?dehecho,nopuedosubestimarestaparte"operación de lectura programada sobre la marcha". especialmente "sobre la marcha"? ¿Es un concepto? ¿Por qué debo configurar la latencia? ¿Qué pasará si no lo configuro?
  2. ¿Es un tipo de caché? ¿Para qué sirve?
  3. ¡Medio ciclo! ok, eso está claro, pero quiero saber cómo puede ahorrar energía cuando lo deshabilitamos o lo habilitamos.
pregunta Roh

1 respuesta

3

Latencia: la memoria flash es más lenta que la CPU.
Por lo tanto, si necesita ejecutar la CPU a toda velocidad (que es opcional, porque una velocidad más baja ahorra energía), entonces es necesario programar el número de estados de espera. IIRC, la CPU puede ejecutarse sin ningún estado de espera a 24 MHz o menos. La ejecución a esas velocidades más bajas ahorrará una gran cantidad de energía en una aplicación de baja potencia, que aún funciona con un buen rendimiento.

"on-the-fly": la CPU puede ajustar la velocidad del reloj mientras se está ejecutando.
Por lo tanto, para obtener el mejor rendimiento frente a la potencia, puede funcionar a una velocidad de reloj baja para ahorrar energía, mientras sigue trabajando, y cuando sea necesario, aumente el reloj, cuando el flash necesitará más ciclos de espera para funcionar de manera confiable. p>

Caché: el búfer de captación previa es un tipo simple de caché.
La memoria flash interna es de 64 bits de ancho. El búfer de captura previa es del mismo ancho, por lo que puede contener hasta 4 instrucciones en cada uno de sus dos bloques. AFAIK se usa menos recientemente, y por lo tanto solo ciclos. Me imagino que tener dos bloques simplifica los circuitos y evita la contención entre la carga del programa y la decodificación de instrucciones.

Medio ciclo: esto solo se aplica cuando la CPU se está ejecutando a menos de 8MHz
El manual de los programadores dice:

  

La configuración de medio ciclo no está disponible en combinación con una   preescala en el AHB. El reloj del sistema (SYSCLK) debe ser igual al   Reloj HCLK. Por lo tanto, esta característica solo se puede utilizar con un   Reloj de baja frecuencia de 8 MHz o menos.

El subsistema de memoria flash es lo suficientemente rápido como para ser leído en medio ciclo de reloj. Eso podría permitir que el chip optimice el uso de energía, o evitar la contención entre DMA o la CPU, leer dos bloques de instrucciones, o tal vez algo más. No sé lo que realmente hace, y no recuerdo haberlo leído en los manuales. Pido disculpas por especular; tal vez una búsqueda en la web o una consulta en el foro de ST pueda encontrar una mejor respuesta.

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas