authors: Jason Lowe-Power

缓存一致性协议

通用符号和数据结构

一致性消息 (Coherence Messages)

这些在每个协议的 <protocol-name>-msg.sm 文件中描述。

消息 (Message) 描述 (Description)
ACK/NACK 对等待解决方向的请求的肯定/否定确认,然后再决定下一个动作。例如写回请求,独占请求。
GETS 请求共享权限以满足 CPU 的加载或取指 (IFetch)。
GETX 请求独占访问。
INV 无效请求。这可以由一致性协议本身触发,也可以由下一级缓存/目录触发以强制包含或触发 DMA 访问的写回,以便获得最新副本。
PUTX 请求写回缓存块。某些协议(例如 MOESI_CMP_directory)可能仅将其用于独占数据的写回请求。
PUTS 请求写回处于共享状态的缓存块。
PUTO 请求写回处于拥有 (owned) 状态的缓存块。
PUTO_Sharers 请求写回处于拥有 (owned) 状态的缓存块,但该块存在其他共享者。
UNBLOCK 解除下一级缓存/目录阻塞的消息,用于阻塞协议。

访问权限 (AccessPermissions)

这些与每个缓存块相关联,并确定该块上允许哪些操作。它与一致性协议状态密切相关。

权限 (Permissions) 描述 (Description)
Invalid 缓存块无效。在执行加载/存储之前,必须先(从内存层次结构的其他位置)获取该块。对无效操作不执行任何操作(除了可能发送 ACK)。对替换不执行任何操作。相关的一致性协议状态是 I 或 NP,并且在每个协议中都是稳定状态。
Busy 忙碌状态,通常表示正在进行某种状态转换或处理。
Read_Only 仅允许加载、写回、无效操作。在转换到其他状态之前无法执行存储。
Read_Write 允许加载、存储、写回、无效。通常表示该块是脏的。

数据结构

一致性控制器 FSM 图