您的位置:首页 > 其它

对称多处理器 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息