计算机体系结构5_缓存一致性协议
一,AMD64缓存一致性协议
通过缓存一致性协议保证各个缓存之间,缓存与主存之间,多处理器之间的数据一致性。AMD64的缓存一致性协议为MOESI(modified, owned,
exclusive,shared,invalid)协议。
当cache line没有保存有效的数据时,被称作invalid,有效的数据可以来自主存或者其他处理器的缓存。
、
当cache line保存的数据为最近,最新的,被拷贝的数据在主存中也为最近,最新的数据,同时其他处理器没有持有此数据的拷贝,
称作exclusive。
当cache line保存的数据为最近,最新的,其他处理器持有此数据的拷贝,称作shared。当其他处理器以owned模式持有此数据,则当前数
据在主存中也为最近最新的。
当cache line保存的数据为最近,最新的,在主存中的数据为过时的,没有其他处理器持有此数据的拷贝,称作modified。
当cache line保存的数据为最近,最新的,称作owned。owned与shared相似之处在于,其他处理器可以持有此数据最近,最新的拷贝,
与shared不同在于,主存中此数据可能为过时的。一份数据只可以有一个处理器持有其owned状态,其他处理器对此数据持有shared状态。
二,AMD64缓存一致性状态图
下图为软件观点的,多种访存操作驱动的MOESI状态图:
为了保证内存的一致性,其他具有内部缓存的处理器在缓存数据时,需要获取最新的数据拷贝,此拷贝可以在主存中或者在其他
处理器的内部缓存中。当一个设备访存miss时,探测其他设备的是否持有此数据最新的拷贝,此操作称作probe。如果其他设备、
中持有此数据最新的拷贝,它将其提供给请求设备,否则主存提供最新的数据。
主要有两类设备probe方式:
read probe,指示其他设备请求数据出于读意图。
write probe,指示其他设备请求数据出于修改意图。
图7-2指出,由probe导致的状态转移包含probe的发起设备和接收设备。一些read probe由那些打算缓存此数据的设备发起,另外一些
发起的read probe并不是为了缓存此数据,如I/O设备。
读命中不会导致MOESI状态转移,写命中通常导致MOESI状态转移到modified状态。如果cache line已经为modified状态,写命中不会改变
它的状态。
参考:
AMD64 Architecture Programmer’s Manual Volume 2: System Programming
最后更新:2017-04-03 14:54:06
上一篇:
平方根是否为整数
下一篇:
信息系统项目管理师考试之历年真题资源大放送(附带个人珍藏论文)
跟着实例学习ZooKeeper的用法: 队列
2012.12.21围观搜索引擎首页,非常给力!
OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed t
未来的超级智能网络攻击需要AI竞技俱乐部来拯救
Java类集--认识类集、Collection接口
理解并使用Docker
CDN和SLB正式售卖
使用DOM动态创建js实现多附件上传客户端
一个完美DCIM应该具备的功能与价值
Deepgreen数据库日志清理脚本