Procesador - interfaz de caché de datos L1

4

Lo siento si la siguiente pregunta parece una pregunta muy especializada (o de programación), pero espero que haya gente en este foro que haya realizado el modelado VHDL / Verilog y pueda responder:

Estoy escribiendo un modelo de simulación de un sistema de caché multiprocesador. Mi modelo de procesador es un procesador Sparc V8 de 32 bits. Estaba tratando de entender cómo se ve la interfaz del caché de datos del procesador L1. Tengo las siguientes dudas:

  1. ¿Qué tan ancha es la interfaz del procesador L1? Si tiene 32 bits de ancho, ¿cómo se manejan atómicamente los accesos de doble palabra? Ejemplo: si la instrucción DoubleWord se divide en dos accesos de palabra, ¿se puede invalidar el bloqueo en el caché entre el primer y el segundo acceso de palabra? ¿No significa que la instrucción no es atómica? ¿Es la instrucción de doble palabra de carga / almacenamiento requerida para ser atómica?

  2. ¿Cómo se implementan las instrucciones carga atómica / almacenamiento o intercambio en esta interfaz? ¿Hay una señal que vaya del procesador al caché que diga "detener todas las demás operaciones hasta que yo lo diga", y luego ejecutar una carga seguida de almacenamiento?

Agradecería cualquier enlace que apunte en esta dirección

    
pregunta Neha Karanjkar

1 respuesta

2

(No conozco ningún HDL, pero espero que lo siguiente sea útil de todos modos).

Uno puede usar una interfaz amplia de 32 bits e implementar cargas / almacenes atómicos de 64 bits. Para las cargas, se puede "hacer trampa" leyendo la entrada de la memoria caché invalidada (solo se verifican las etiquetas en la primera carga de 32 bits), ya que se sabe que los dos accesos de 32 bits serán consecutivos y dentro de la misma memoria caché. bloque que se sabe que es un hit.

Para las tiendas, dado que el bloque de caché debe estar en estado modificado (o exclusivo si se permiten actualizaciones silenciosas) para aceptar una tienda, una solicitud de invalidación (realmente lectura para la propiedad) genera una respuesta de datos. Dado que se proporciona una respuesta de datos y el tiempo total de la escritura normalmente sería solo de dos ciclos de procesador, la respuesta de los datos podría retrasarse hasta que la tienda haya finalizado.

LDSTUB (load-and-store-unsigned-byte) y SWAP podrían manejarse de manera similar a un almacén de 64 bits retrasando la carga hasta que el bloque de caché esté en estado exclusivo / modificado; se sabe que la parte de la operación de la tienda se encuentra inmediatamente después de la parte de lectura y de todos modos se requiere una respuesta de datos, por lo que la respuesta de los datos se puede retrasar ligeramente.

Una implementación alternativa de LDSTUB y SWAP podría tratar una invalidación entre la carga y la tienda como una falla para la carga, reemitiendo efectivamente la carga. Sin embargo, esto presenta un peligro de salvavidas. Si bien los problemas de Livelock se pueden gestionar (por ejemplo, varias técnicas de interrupción), la implementación mencionada anteriormente es probablemente mucho más sencilla.

    
respondido por el Paul A. Clayton

Lea otras preguntas en las etiquetas