计算机系统结构----多处理器与集群:Cache一致性大纲2020/1/292私有数据与共享数据•私有数据被单个处理器使用•共享数据被多个处理器使用•Cache一致性问题2020/1/293Cache一致性问题•若任何一项的返回结果均是最近写入的数值,则具有Cache一致性–一致性•读行为–连贯性•读写操作的行为2020/1/294Cache一致性的条件•同时满足如下条件–读操作返回最后一次写入的值–写操作是串行的,以最后一次写入的值为准•存储器连贯性模型–所有处理器都更新结果后写操作才算完成–写操作次序不能变2020/1/295解决Cache一致性的方法•共享数据的迁移和复制–数据迁移至本地Cache–存在数据的副本•Cache一致性协议–目录式•共享状态存放在一个地点–监听式•Cache广播,本地Cache监听总线的更新•目前应用最广泛2020/1/296监听协议•写无效协议–处理器写数据之前,保证独占访问,使其他所有副本无效–有可能产生写竞争2020/1/297监听协议(2)•写更新协议(写广播协议)–更新所有副本–需要更大的带宽–使用很少2020/1/298监听协议的实现•使用总线广播无效操作–必须首先获得总线的访问权–总线仲裁实现串行化–第一个取得总线的处理器把其他的副本置为无效•写直达的Cache实现容易–最新值必定在内存中–应用少2020/1/299监听协议的实现(2)•写回的Cache应用广泛–占用带宽低–最新的数据有可能存在Cache中–写回式Cache监听Cache缺失•找回Cache块的脏数据副本–利用标识位实现•标志是否共享•若没有共享,直接写即可,同时标志为私有2020/1/2910实现技术•MESI协议–modified,exclusive,shared,invalid–修改/独占/共享/无效•可以用修改表示独占,成为三状态–MOESI协议•O表示owned2020/1/2911状态表2020/1/2912状态表(续)•Cache块状态只有3种–无效/共享/修改•Cache操作有4种–一般命中–一般缺失(同单处理器缺失)–替换(同单处理器替换缺失)–一致(要求保持Cache一致性)•其他处理器发生缺失,状态从独占变为共享2020/1/2913状态图2020/1/2914状态图(2),即把上图合并2020/1/2915状态图•任何状态回到独占状态必须总线放置一个写缺失信号,所有Cache副本无效•假设操作都是原子操作–不会有其他操作干扰–其实不存在,有死锁的可能2020/1/2916一致性缺失•真共享缺失–都直接由处理器间数据共享引起•假共享缺失–由于一致性算法引起•QaP219例子2020/1/2917基于目录的一致性•每个数据块分配一个条目2020/1/2918基于目录的一致性协议•2个基本问题–读缺失–共享未修改Cache块的写操作•可能的状态如下–共享•所有Cache块及其副本的数据最新–未缓存•没有数据副本–修改•只有一个处理器拥有,且执行写操作,存储器中的副本是无效的2020/1/2919实现方式•跟踪Cache中块的状态位•同时跟踪共享数据副本的处理器–每个存储器保留一个向量–每一位表示相应的处理器是否拥有该副本2020/1/2920状态表2020/1/2921状态位2020/1/2922