instrucción dcbf (Data Cache Block Flush)

Finalidad

Copia los bloques de memoria caché modificados en el almacenamiento principal e invalida la copia en la memoria caché de datos.

Nota: La instrucción dcbf solo está soportada en la arquitectura PowerPC® .

Sintaxis

Bits VALOR
0-5 31
6-10 ///
11-15 RA
16-20 RB
21-30 86
31 /
PowerPC® 
dcbf RA, RB

Descripción

La instrucción dcbf calcula una dirección efectiva (EA) añadiendo el contenido del registro de propósito general (GPR) RA al contenido del GPR RB. Si el campo RA es 0, EA es la suma del contenido de RB y 0. Si el bloque de memoria caché que contiene las ubicaciones de almacenamiento de destino está en la memoria caché de datos, se copia de nuevo en el almacenamiento principal, siempre que sea diferente de la copia de almacenamiento principal.

Tenga en cuenta lo siguiente cuando utilice la instrucción dcbf :

  • Si un bloque que contiene el byte direccionado por el EA está en la memoria caché de datos y se ha modificado, el bloque se copia en la memoria principal. Si un bloque que contiene el byte direccionado por EA está en una de las memorias caché, el bloque se hace no válido.
  • Si el EA especifica una dirección de segmento de tienda directa, la instrucción se trata como no-op.

La instrucción dcbf tiene un formato de sintaxis y no afecta al registro de excepciones de punto fijo.

Parámetros

Elemento Descripción
RA Especifica el registro de propósito general de origen para la operación.
RB Especifica el registro de propósito general de origen para la operación.

Ejemplos

El software gestiona la coherencia del almacenamiento compartido por el procesador y otro componente del sistema, como un dispositivo de E/S que no participa en el protocolo de coherencia de almacenamiento. El código siguiente vacía el almacenamiento compartido de la memoria caché de datos antes de permitir que otro componente del sistema acceda al almacenamiento:


# Assume that the variable A is assigned to storage location
# 0x0000 4540.
# Assume that the storage location to which A is assigned
# contains 0.
# Assume that GPR 3 contains 0x0000 0040.
# Assume that GPR 4 contains 0x0000 4500.
# Assume that GPR 5 contains -1.
st      R5,R4,R3         # Store 0xFFFF FFFF to A
dcbf    R4,R3            # Flush A from cache to main memory
sync                     # Ensure dcbf is complete. Start I/O
                         # operation

Después del almacenamiento, pero antes de la ejecución de las instrucciones dcbf y sync, la copia de A en la caché contiene un -1. Sin embargo, es posible que la copia de A en la memoria principal todavía contenga 0. Una vez completada la instrucción sync, la ubicación a la que se asigna A en la memoria principal contiene -1 y la caché de datos del procesador ya no contiene una copia de la ubicación A.