转:cache一致性中 写无效、写更新;直写、写回 的区别
来源:互联网 发布:魂斗罗归来 知乎 编辑:程序博客网 时间:2024/05/14 09:19
转自: http://ninghuiming977.blog.163.com/blog/static/41767482200914112822530/
原文:
1.基于监听协议:
通常使用两种策略来解决Cache一致性问题:写无效策略和写更新策略。
写无效策略(write invalidate)是指当某个处理器更新其私有Cache中的某个数据时,它通知所有其它Cache这一数据在它们中的副本从此均无效。这样就可以避免其它"过时"的副本被使用而造成错误。
写更新策略(write update)是指当某个处理器更新其私有Cache中的某个数据时,它把所更新的数据发送给所有的其它Cache,以更新这一数据在其它Cache中的所有副本。一般来说,使用写更新策略,需要传输更新后的数据,而写无效只需传输写无效信息,因此写更新传输的数据量比写无效要大。而且,被更新的数据的某些副本以后也不一定再被使用。例如上图中,P1更新X后,P2不一定再使用变量X的值。因此每次都对所有的副本都更新是没有必要的。
请注意,写无效和写更新是维护Cache一致性的策略,它与维护Cache与主存储器一致性的策略没有必然的关系。无论是使用写无效策略还是写更新策略,共享存储器中的数据副本都可以通过写直达或写回策略来维护与Cache的一致性。
写回法:当CPU写Cache命中时,只修改Cache的内容,而不立即写入主存;只有当此行被换出时才写回主存。
写直达:又称全写法,当写Cache命中时,Cache与主存同时发生写修改,因而较好的维护了与主存的内容一致性。
写一次法:是写回法与全写法的折中方法:写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。这是因为第一次写Cache时,CPU要在总线上启动一个存储写周期,其他Cache监听到此主存块地址及写信号后,即可拷贝该块或及时作废,以便维护系统全部Cache的一致性。
例如,如果采用写无效策略和写直达策略,当处理器P修改私有Cache中的某一数据时,不但要向其它处理器的Cache发送无效信息,而且要将共享存储器中该数据的副本更新。最终,处理器P的私有Cache和共享存储器中的数据是相同而且是正确的,而其它处理器Cache中该数据的副本被标记为无效。如果采用写无效策略和写回策略,当处理器P修改私有Cache中的某一数据时,不但要向其它处理器的Cache发送无效信息,而且要向共享存储器发送无效信息。最终,只有处理器P的私有Cache中的数据是正确的,而共享存储器和其它处理器Cache中该数据的副本均被标记为无效。
2.基于目录协议
使用Cache目录来存放有关数据块拷贝驻留在Cache中的信息,把使其他Cache数据块无效的一致性命令只发给存放有相应数据块的Cache,从而支持Cache的一致性。 根据目录的结构特点,基于目录的协议可分为3类:全映射(full-map)目录、有限(limited)目录、和链式(chained)目录。
- 转:cache一致性中 写无效、写更新;直写、写回 的区别
- 直写与回写
- 懒人写的Cache
- cache 写回策略
- OR1200数据Cache的通写、回写应用举例
- oracle 写一致性的测试
- 写
- 写
- 关于游戏中cache的后写入回写机制
- dsp中的cache回写
- Cache 写操作策略
- sp1234在CSDN写的Cache精华贴
- 写代码更新GridView
- 反写更新代理
- properties 读、写、更新
- linux下写穿/直写(Write-Through)与写回(Write-Back)
- 写回
- 写了一个LRU Cache
- GridView问题集合
- static和extern
- 给正在读硕士阶段学生的小建议
- Windows游戏编程 - 简单的弹球窗口
- DB2监控
- 转:cache一致性中 写无效、写更新;直写、写回 的区别
- 学习任何一门编程语言的过程步骤
- 2014年国务院批准放假调休日期的具体安排通知
- 深入浅出TCP之send和recv
- Android 代码保存时自动格式化
- JXLS生成Excel图表
- Android学习——windows下搭建Cygwin环境
- 关于RPM的%config和(noreplace)
- android的进程和线程(Processes and Threads)