总算是把Hennessy&Patterson的多处理器和线程级并行拿下了,由于多处理器领域的问题多多,很多也没有一个统一的解决标准,所以关于这一领域两位大师主要是把研究集中在了Cache一致性上,也就是如何保证多核间共享的数据可以保持一致。
总体上分为两种策略:1. snooping--监听策略,2. Directory based--基于目录
在我们分析两种策略前,先明白几个问题,首先我们要知道我们的,目标是什么?系统模型是什么?
1.模型与需求
系统模型有两种,分别对应两种策略,第一种模型是多处理器对称的共享存储器,每个处理器有自己的Cache,各Cache挂到总线上与存储器通信。第二种模型是多处理器分布的共享存储器,每个处理器有自己的存储器,Cache,各处理模块通过网络互连。这两种模型都共享存储器,他们的目的都是让个处理器都能访问到正确的数据,也即Cache和存储器中的数据对所有的处理器来说都是一致的。
2.确定计划
要想保证一致性,需要满足以下三大条件:
a.P1对X写数据,然后P1对X读数据,且期间没有别的P对X写,那么此时读到的是P1修改过的数据。
b.P1对X写数据,然后p2对X读数据,且期间没有别的P对X写,那么此时独到的是P1修改过的数据。
c.各个P对X的写需要串行化,也就是按序写。
我们假定只要满足以上三个条件就可以保证一致性,那么我们就设计协议以满足上面三个条件。
3.建立构思
在建立构思前,我们约定我们的系统具有以下的存储机制。
a.处理器通过Cache访