Clasificación de datos de instrucciones (ARM I-cache y D-cache)

Algunos núcleos ARM como la familia de núcleos ARM9 tienen una arquitectura Harvard, al menos a nivel de caché. Es decir, acceden a dos cachés separados, un I-cache para instrucciones y un D-cache para datos (ejemplo ARM926EJ-S).

Sin embargo, los cachés de I & D terminan siendo interconectados externamente con SDRAM normal y corriente. Así que parece que a nivel de RAM volvemos al diseño de von Neumann donde una tienda (SDRAM) contiene instrucciones > y < datos.

En los diseños de ejemplo que he visto, parece haber un solo bus que conecta la SDRAM con el chip SOC.

¿Cómo se diferencian, clasifican y enrutan las instrucciones y los datos desde el bus combinado que conecta la SDRAM externa con las cachés I y D internas?

Respuestas (2)

La lógica de control registra por qué emitió una búsqueda en particular a una dirección en particular, por lo que puede hacer algo sensato con el resultado. Habrá una pequeña cola de recuperaciones pendientes (recuerde, la recuperación de DRAM puede tardar cientos de ciclos). Cuando llega un valor, se vuelve a escribir en la parte de la arquitectura que lo solicitó y la parte relevante de la canalización del procesador se desata.

el caché L1 a menudo está en el núcleo del brazo, sram, muy rápido, L2 puede estar fuera del chip, puede que no.

La verdadera respuesta a su pregunta es ir a infocenter.arm.com, luego ir al enlace AMBA en el lado izquierdo y luego descargar una de las especificaciones AMBA o AXI, incluso la más antigua AMBA2 está bien.

Dentro del núcleo, si hay un caché L1, el procesador sabe si un acceso a la memoria es una obtención de instrucciones o datos, y esa información se coloca en el bus interno y, si el caché está habilitado, buscará ese resultado antes de ir al borde de el núcleo. el borde del núcleo es una especie de bus amba, ahb o axi que tiene como uno de los bits en el bus un tipo de acceso que incluye, entre otras cosas, caché o no. Entonces, lo que sea que esté pegado a eso, en particular si el proveedor ha comprado la lógica de caché L2 del brazo para pegarlo en este núcleo, esa lógica L2, usando los elementos en el bus, buscará y posiblemente devolverá el resultado al núcleo. De lo contrario, vaya a la memoria principal en el otro lado del caché l2 (también un bus amba/axi/lo que sea) para resolver la transacción o desalojar algo necesario para completar la transacción, etc.

Las diferencias en los sabores de los buses ARM o versiones, pueden/brindarán más o menos información dependiendo de los detalles del bus. Pero si el sistema es capaz de tener un caché, la transacción indicará que se puede almacenar en caché o no e indicará de alguna manera las instrucciones de los datos (si ese caché puede separar los dos, L1 podría y L2 podría no, por ejemplo, L1 en cierta medida impulsa lo que está en L2)

los buses de brazo son harvard en el sentido de que se usa la misma dirección y bus de datos, pero muchos otros campos en el bus se usan para distinguir un tipo de acceso de otro (hay muchos más de 2), por lo que en ese sentido tiene I separados y transacciones D a pesar de que todas comparten el mismo bus.
no son harvard en el sentido de que puede realizar escrituras de datos en ram y luego bifurcarse a ese ram y ejecutar los datos que acaba de escribir (los espacios de direcciones no están separados).
Técnicamente, uno no puede simplemente ramificarse a esa RAM. No se garantiza que la caché de instrucciones sea coherente. Para la mayoría de las implementaciones de RISC ISA, cualquier caché de instrucciones separada no es coherente y el software debe invalidar explícitamente los bloques de caché apropiados. Incluso con una memoria caché compartida o coherente, un RISC generalmente requerirá una sincronización de canalización o una operación similar, ya que el almacenamiento puede procesarse en el back-end de la canalización después de encontrar la rama en el front-end. x86 es extraño al admitir una coherencia y consistencia agresivas con el código automodificable.
Si el i-cache está seguro y no lo vacía. Si está creando un cargador de arranque o un sistema operativo, generalmente lo maneja. El punto es que el código y los datos están en el mismo espacio de direcciones en el mismo bus, lo que contradice la arquitectura de Harvard.