对称多处理器 Cache写回策略:写一次法(write-one)
2013-11-27 22:43
239 查看
用于对称多处理器系统中(每个处理器地位相同,且都有内置的Cache),保证高速缓存与主存的数据一致性。
Cache行有四种状态
1.Invalid:数据无效
2.Valid:该行与主存对应块的数据相一致,且不唯一(其它CPU的Cache中可能也有对应内存块数据)
3.Reserved:该行与主存对应块的数据相一致,且唯一(其它CPU的Cache中没有对应内存块数据)
4.Dirty:该行与主存对应块的数据不一致
Cache行状态的演变
1.读命中:从Cache中取数据,行状态不变。
2.读缺失:从主存中读数据块到Cache。其它Cache嗅探到这个读操作,若其中任何一个Cache有缓存这块数据,且处于Dirty状态,则读操作被中断,那个Dirty数据被写回主存,然后继续读操作。任何与该内存块对应的、状态为Dirty或Reserved的Cache行,其状态改为Valid.
3.写命中:若命中的Cache行状态为Dirty或Reserved,则只更新该Cache行,且该行的状态设为Dirty.若命中行状态为Valid,则同时写Cache和主存,并将命中行的状态改写Reserved.其它Cache嗅探到写操作,将相应内存块的Cache行状态置为Invalid.
4.写缺失:先按读缺失处理,再按写命中处理。最终的结果是包含对应块的其它Cache的对应行状态被置成Invalid,当前Cache的对应行状态为Reserved.
总结:
1、读操作:如果其他cache有dirty数据,就先把dirty数据先写入主存,然后再读取到当前cache;最后将所有持有该内存块对应的cache行,状态都要被置为valid;
2、写操作:写完之后,只有当前cache状态为dirty(原始状态为dirty或者reserved),或者reserved(原始状态为valid);其他cache状态都为invalid;
转自: http://blog.sina.com.cn/s/blog_6322836e0100lt6b.html
Cache行有四种状态
1.Invalid:数据无效
2.Valid:该行与主存对应块的数据相一致,且不唯一(其它CPU的Cache中可能也有对应内存块数据)
3.Reserved:该行与主存对应块的数据相一致,且唯一(其它CPU的Cache中没有对应内存块数据)
4.Dirty:该行与主存对应块的数据不一致
Cache行状态的演变
1.读命中:从Cache中取数据,行状态不变。
2.读缺失:从主存中读数据块到Cache。其它Cache嗅探到这个读操作,若其中任何一个Cache有缓存这块数据,且处于Dirty状态,则读操作被中断,那个Dirty数据被写回主存,然后继续读操作。任何与该内存块对应的、状态为Dirty或Reserved的Cache行,其状态改为Valid.
3.写命中:若命中的Cache行状态为Dirty或Reserved,则只更新该Cache行,且该行的状态设为Dirty.若命中行状态为Valid,则同时写Cache和主存,并将命中行的状态改写Reserved.其它Cache嗅探到写操作,将相应内存块的Cache行状态置为Invalid.
4.写缺失:先按读缺失处理,再按写命中处理。最终的结果是包含对应块的其它Cache的对应行状态被置成Invalid,当前Cache的对应行状态为Reserved.
总结:
1、读操作:如果其他cache有dirty数据,就先把dirty数据先写入主存,然后再读取到当前cache;最后将所有持有该内存块对应的cache行,状态都要被置为valid;
2、写操作:写完之后,只有当前cache状态为dirty(原始状态为dirty或者reserved),或者reserved(原始状态为valid);其他cache状态都为invalid;
转自: http://blog.sina.com.cn/s/blog_6322836e0100lt6b.html
相关文章推荐
- asp 页面允许CACHE的方法
- ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
- ASP.NET笔记之 viewstate与cache的使用
- 解决php中Cannot send session cache limiter 的问题的方法
- IE cache缓存 所带来的问题收藏
- 用PHP的ob_start() 控制您的浏览器cache
- IIS设置CACHE过期时间的教程
- php cache类代码(php数据缓存类)
- ASP.NET Cache的一些总结分享
- 对于mysql的query_cache认识的误区
- ASP.NET中Application和Cache的区别分析
- android 清除缓存cache
- 深入理解缓存cache(1):获取计算机的cache参数
- Cache 的write back和write through
- linux cache buffer
- oracle libary cache 命中率
- linux 内存 cache的释放
- Tokyo Tyrant简介
- ARM920T的MMU与Cache ——转载
- (亚嵌)ARM920T的MMU与Cache之操作MMU和Cache的内核启动代码