码迷,mamicode.com
首页 > 其他好文 > 详细

MESI 一致性协议

时间:2014-10-02 14:48:24      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   os   数据   sp   2014   c   on   

四态写回无效协议MESI

MESIMSI协议的基础上改进的,增加了一个互斥独占状态E

为什么要引入?

考虑当一个顺序先读入一个数据项,然后修改一个数据项时,就要产生一个BusRd事务用来得到内存块,并置为S状态,然后产生一个BusRdX事务,用来将该块状态从S变为M状态。而在顺序程序中数据项不存在共享者,因此只会在一个告诉缓存有该块拷贝,后一个事务是不必要的。

所以引入一个E状态,用来表示只有一个高速缓存中独占这个内存快,且该块内容没有被修改过。

 bubuko.com,布布扣

 

 

 

 


在产生总线读事务时,高速缓存控制器要知道别的高速缓存中是否存在该块的拷贝,来决定该块置为S状态还是E状态。这就需要提供一个额外的共享S信号线,

S信号线低电平,为E,高为S

 

关键在于E状态:

1.  当有处理器读PrRd事件时,因为就该cache有当前数据,所以直接命中还是E

2.  当有处理器写PrWr事件时,由EM状态,告知已经被修改过,且是最新的

3.  当观察到一个总线读(BusRd)事务,将导致由E状态转换到S状态,同时由该高速缓存提供数据。(因为只有改cache是独占此数据的,其他cache中没有任务拷贝)

4.  当观察到一个总线互斥读(BusRdX)事务,由该高速缓存提供数据。(因为只有改cache是独占此数据的,其他cache中没有任务拷贝)但是因为人家要当老大,自己只好FLUSH后转为无效状态

注意S状态,在MSI中,当观察到一个总线读和互斥读的事务,在进行状态转换的同时,由主存提供数据,而在MESI中由处于S状态下的某一个高速缓存提供数据,这个并不是一定的,这是一种选择的策略。怎么都可以。

MESI 一致性协议

标签:style   http   color   os   数据   sp   2014   c   on   

原文地址:http://my.oschina.net/u/551903/blog/323851

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!