dcbf (Data Cache 块清空) 指令
用途
将修改后的高速缓存块复制到主存储器,并使数据高速缓存中的副本失效。
注: 仅在 PowerPC® 体系结构中支持 dcbf 指令。
语法
| 位数 | VALUE |
|---|---|
| 0-5 | 31 |
| 6-10 | /// |
| 11-15 | 亚美尼亚共和国 |
| 16-20 | 经常预算 |
| 21-30 | 86 |
| 31 | / |
描述
dcbf 指令通过将通用寄存器 (GPR) RA 的内容添加到 GPR RB的内容来计算有效地址 (EA)。 如果 RA 字段为 0 ,那么 EA 是 RB 和 0 的内容总和。 如果包含目标存储位置的高速缓存块位于数据高速缓存中,那么会将其复制回主存储器,前提是它与主存储器副本不同。
使用 dcbf 指令时,请考虑以下事项:
- 如果包含由 EA 寻址的字节的块在数据高速缓存中并且已修改,那么会将该块复制到主内存。 如果包含由 EA 寻址的字节的块位于其中一个高速缓存中,那么该块将无效。
- 如果 EA 指定直接存储段地址,那么该指令将被视为 no-op。
dcbf 指令有一种语法形式,不会影响定点异常寄存器。
参数
| 项 | 描述 |
|---|---|
| RA | 指定操作的源通用寄存器。 |
| 经常预算 | 指定操作的源通用寄存器。 |
示例
该软件管理由处理器和其他系统组件 (例如不参与存储一致性协议的 I/O 设备) 共享的存储器的一致性。 以下代码先从数据高速缓存清空共享存储器,然后再允许其他系统组件访问该存储器:
# 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
在存储之后,但在执行dcbf和sync指令之前,高速缓存中的 A 副本包含一个-1。 但是,主内存中 A 的副本可能仍包含 0。 同步指令完成后,主内存中分配给 A 的位置包含-1,处理器数据缓存中不再包含位置 A 的副本。