dcbf (Data Cache 块清空) 指令

用途

将修改后的高速缓存块复制到主存储器,并使数据高速缓存中的副本失效。

注: 仅在 PowerPC® 体系结构中支持 dcbf 指令。

语法

位数 VALUE
0-5 31
6-10 ///
11-15 亚美尼亚共和国
16-20 经常预算
21-30 86
31 /
PowerPC® 
DCBF RA RB

描述

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

在存储之后,但在执行dcbfsync指令之前,高速缓存中的 A 副本包含一个-1。 但是,主内存中 A 的副本可能仍包含 0。 同步指令完成后,主内存中分配给 A 的位置包含-1,处理器数据缓存中不再包含位置 A 的副本。