Vista en caché mapeada en memoria del flash QSPI externo. La memoria caché se especifica como 32 KB con asociatividad de 4 vías.
¿Significa que mi Flash QSPI externo es solo de 32 Kb o que ha sido mapeado en memoria a 32 Kb?
¿La vista en caché significa que la lectura repetida obtendrá los datos almacenados en caché dentro del procesador y no accederá realmente a la memoria?
La confusión probablemente proviene de la formulación: "vista en caché asignada en memoria". El hecho de que esté asignada en memoria no tiene nada que ver con el hecho de que esté almacenada en caché. El tamaño de la asignación de memoria es independiente del tamaño de la memoria caché.
Entonces, te lo desglosaré:
mapeado en memoria
Significa que puede acceder al contenido de la memoria externa directamente leyendo/escribiendo el espacio de direcciones de la memoria principal (en alguna dirección especificada). También suele implicar que, si la memoria externa contiene código ejecutable, puede ejecutar este código simplemente ramificando: no necesita copiar el código en la memoria interna antes de ramificar. Esto lo logra la MCU que, internamente, traduce cualquier acceso a esta parte de la memoria en los comandos QSPI requeridos para leer el flash externo sobre la marcha. En este punto, no implica que haya un caché.
en caché
Significa que los datos leídos de esta parte de la memoria se colocarán en un área de memoria intermedia de menor tamaño (no accesible directamente), que la MCU buscará primero cuando se tenga que acceder de nuevo a la memoria externa. De esta forma, cuando se accede dos veces a los mismos datos, no es necesario volver a acceder a la memoria externa. Se recuperarán los datos del caché, que es mucho más rápido.
De hecho, esto es muy útil para QSPI mapeados en memoria. La interfaz QSPI es mucho más lenta que la CPU: cualquier operación de lectura/escritura debe traducirse en comandos enviados en serie en unas pocas líneas de señal, lo que agrega mucha sobrecarga. Para reducir esta sobrecarga, normalmente intentará leer varios bytes para cada acceso QSPI y almacenarlos en un caché para que, si la próxima lectura se dirige al byte vecino (lo que es probable), lo tenga listo.
32kB
Aquí, este es el tamaño del caché, no el tamaño del mapa de memoria. El tamaño del mapa de memoria normalmente será lo suficientemente grande para el tamaño total de la memoria externa (consulte las especificaciones detalladas).
asociatividad de 4 vías
Esta es la forma en que el caché está organizado internamente. El caché es mucho más pequeño que la memoria externa. La forma ingenua de implementar un caché sería almacenar todos los bytes a los que se accedió recientemente junto con sus direcciones correspondientes y, cuando se realicen accesos posteriores, verificar en todo el caché si un byte existente tiene su dirección correspondiente a la dirección a la que se accedió. Esto es extremadamente ineficiente. Para cada byte, tendría que almacenar la dirección, que multiplica por cinco el tamaño requerido para el caché (asumiendo direcciones de 32 bits: para cada byte, necesita el valor del byte de datos más cuatro bytes para la dirección correspondiente), y, para cada acceso, debe comparar la dirección con 32768 valores posibles para verificar si ya está en el caché o no.
Entonces, así es como se hace:
Esto es lo que es la asociatividad de caché: el número de líneas de caché por conjunto. Esto da una indicación de la probabilidad de que pueda recuperar datos en el caché si se han leído antes. Cuanto mayor sea la asociatividad, mejor, pero hace que la caché sea más compleja y costosa de fabricar. Y en algún momento, los beneficios ni siquiera valen la pena. 4 no está mal (por eso se enorgullecen de anunciarlo).
La frase es bastante clara:
La memoria caché se especifica como 32 KB con asociatividad de 4 vías.
Entonces,
¿Significa que mi Flash QSPI externo es solo de 32 Kb o que ha sido mapeado en memoria a 32 Kb?
Ni. El caché es de 32 kB (¡no Kb, que es Kelvinbit! ¡Cuidado con las mayúsculas!).
¿La vista en caché significa que la lectura repetida obtendrá los datos almacenados en caché dentro del procesador y no accederá realmente a la memoria?
Bueno, vea wikipedia sobre cachés. Sí, una lectura repetida dentro de las regiones almacenadas en caché obtendrá la información del caché. Eso es lo que hace un caché.
No, ese caché no es necesariamente parte del procesador, sino del periférico del controlador flash.
marcus muller
usuario105652
manyyack
timmy brolin