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 | / |
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.