多处理机体系结构
我们讨论的多处理机局限于:
- 处理机的协调与使用由单一的处理器系统来控制
- 多处理机通过共享地址空间来共享存储器
- 各个处理机有自己的Cache
在逻辑上,多处理机共享地址空间。而在物理上,可以采取两种方式布置主存储器,可以采取集中式和分布式:
无论哪种结构,都可能会面临出现数据共享的问题,即两个不同处理机的Cache存放了缓存了同一个主存单元模块,即共享数据,这种情况就可能导致Cache一致性问题的出现
监听一致性协议
针对集中式共享存储器体系结构,假设Cache的写命中策略是写回法
所谓监听,就是每个CPU上都有一个Cache控制器,随时对通过总线的数据进行判断,判断自己是否拥有总线上请求的数据块
写作废方式:当某个CPU出现写请求,将其他副本直接丢弃
写更新方式:当某个CPU出现写请求,将其他副本一并更新(这种方式很需要总线和存储器的带宽,因为要经常性地广播修改的数据,使得这种方法被采用得越来越少)
目录一致性协议
目录是一种数据结构,记录Cache块的一些状态
- Cache块的访问状态:未缓冲,共享态,专有态
- Cache块的位向量,用于记录该Cache块的共享情况,即位向量的每一位代表一个处理器(CPU),若其为1,则表明该位置的CPU有该Cache块的副本

同样地,目录一致性协议也有两种实现方式,即写作废方法、写更新方法,在这里,我们同样假设Cache的写策略是写回法
此时,Cache每个块的状态转换模式和监听一致性协议是一样的
基于目录的一致性协议要避免不必要的性能损失,比如避免广播,而是根据位向量,找到对应的CPU向其发送信息
总结一下目录一致性协议的基本点:
- 每个CPU节点增加了目录存储器,用于存放目录
- 存储器的的每一块在目录中都有对应的一项
- 每一个目录项的组成成分是:访问状态、位向量
- 状态描述该目录项对应的存储块的访问状态:未缓冲、共享态、专有态
- 位向量的每一位对应于一个CPU的Cache,用于指出该CPU的Cache有无该块的缓存
- 当处理器对某一块进行写操作时,需要根据位向量,通知对应的CPU进行作废或更新操作
基于目录的一致性协议配合分布式共享存储器体系结构,能很好地支持系统的可扩展性,然而,这种多处理机的实现模式,需要带宽较大的网络来实现,普通的以太网是远远达不到带宽要求的