Cache工作原理-5
来源:互联网 发布:淘宝商家怎么收款 编辑:程序博客网 时间:2024/04/30 19:40
2.4.5 MESI协议
一.概述
一致性要求是指,若cache中某个字被修改,那么在主存(以及更高层次)上,该字的副本必须立即或最后加以修改,并确保它者引用主存上该字内容的正确性。
当代多处理器系统中,每个处理器大都有自己的cache,呈现出如图2.34所示的结构。同一主存块的拷贝能同时存于不同cache中,若允许处理器各自独立地修改自己的cache,就会出现不一致问题。解决此问题有软件办法和硬件办法。硬件办法能动态地识别出不一致产生的条件并予以及时处理,从而使cache的使用有很高的效率。并且此办法对程序员和系统软件开发人员是透明的,减轻了软件研制负担,从而普遍被采用。
硬件办法也称为cache一致性协议,分为两类:
◆ 目录协议(Directory Protocol)::它由位于主存的目录来保存有关各个局部cache的全局性状态信息,并由一个集中式的主存/cache控制器来维护cache一致性。
◆ 监听协议(Snoop Protocol)::它是将维护cache一致性的责任分散到各个cache控制器。每个控制器必须识别出,它的cache中哪些块是与其它cache共享的。当修改一个共享块时必须在系统中广播有关信息,其它cache控制器监听到此信息时予以响应。根据广播的信息以及反应的不同,监听协议又分为写--修改协议和写--无效协议两种方式。
写--修改(Write-update)协议是,某处理器要修改它的cache中一个共享块时要广播具体的修改字及地址,容纳有此共享块的各个cache同时予以修改。写--无效(write--invalidate)协议是,某处理器要修改它的cache中一个共享块时,无需广播具体的修改字,只需给出块地址和其它必要的指示信息,令其它cache中此块变为无效,然后处理器对其cache的此块完成一次本地写操作。显然这种写--无效协议是以牺牲命中率为代价而采取的"宁缺毋滥"方针来换取cache / cache,cache / 主存各层数据一致性的一种协议。
二.MESI协议状态转换规则
MESI协议是一种采用写--无效方式的监听协议。它要求每个cache行有两个状态位,用于描述该行当前是处于修改态(M)、专有态(E)、共享态(S)或者无效态(I)中的哪种状态,从而决定它的读/写操作行为。这四种状态的定义是:
·修改态(Modified)--此cache行已被修改过(脏行),内容已不同于主存并且 为此cache专有;
·专有态(Exclusive)--此cache行内容同于主存,但不出现于其它cache中;
·共享态(Shared)--此cache行内容同于主存,但也出现于其它cache中;
·无效态(Invalid)--此cache行内容无效(空行)。
MESI协议适合以总线为互连机构的多处理器系统。各cache控制器除负责响应自己CPU的内存读写操作(包括读/写命中与未命中)外,还要负责监听总线上的其它CPU的内存读写活动(包括读监听命中与写监听命中)并对自己的cache予以相应处理。所有这些处理过程要维护cache一致性,必须符合图2.35所示的MESI协议状态转换规则。
下面由图的四个顶点出发,介绍转换规则:(规则中与图2.35 的相应位置以*数字序号对照给出)
*1 该无效行在自身Cache读未命中将被相应内存块填充以建立新行时,读监听命中,说明其它Cache正在读同地址的内存块,以建立新行。故为多Cache共享行,应为S状态,并应继续发出读监听广播,使其它Cache的类似情况效仿。
*2该无效行在自身Cache读未命中将被相应内存块填充以建立新行时,未读监听命中,为本Cache专有,故新建行应为E状态。
*3 该无效行在自身Cache写未命中时,将先读入相应内存块填充新行后,再进行写修改,与原内存正本的数据不一至,故新建行为M状态。
*4 该共享行写监听命中,说明别的Cache由于写命中修改了同此地址的行,根据写无效原则,此共享行应改变为无效(I)状态。
*5 该共享行读命中,状态不变。
*6 该共享行读监听命中,说明其它Cache正在读同地址内存块,以建立新行,此时该共享行状态不必改变,但应继续发读监听广播,供它者监听。
*7 该共享行被写命中,其中某字被改写,与内存正本不一至,故应改为M状态,且应发出共享行写命中监听广播,使其它Cache同地址行作废(同*4)。
*8 该E态行读监听命中说明别的Cache正在读同地址的内存正本,以建立新行,故其状态应改为S状态,并发出读监听广播,以使同此情况及* 1效仿之。
*9 该E态行读命中不必改变状态。
*10 该E态行写监听命中,说明别的Cache由于写未命中而访问同地址的内存正本,该E态行内容即将过时,故应作废。
*11该E态行写命中,只改变状态为M态即可,无须他者监听。
*12该M态行写命中状态不变。
*13该M态行读命中状态不变。
*14该M态行读监听命中,应将该行最新数据写回内存正本后变为S状态。并发出读监听广播,供他者监听。
*15该M态行写监听命中,说明别的Cache由于写未命中而访问了同地址的内存块(同* 3),将实行先读后修改,此时本地M态行应抢先写回主存,然后作废,以保证别的Cache读出整行而未被修改数据的正确性。
*16该M态行写监听命中,说明别的Cache由于写未命中而访问了同地址的内存块,将实行先读后整行的修改,此时本地M态行不必写回主存,只作废即可。
上述分析可以看出,虽然各cache控制器随时都在监听系统总线,但能监听到的只有读未命中、写未命中以及共享行写命中三种情况。读监听命中的有效行都要进入S态并发出监听命中指示,但M态行要抢先写回主存;写监听命中的有效行都要进入I态,但收到RWITM时的M态行要抢先写回主存。总之监控逻辑并不复杂,增添的系统总线传输开销也不大,但MESI协议却有力地保证了主存块脏拷贝在多cache中的唯一性,并能及时写回,保证cache主存存取的正确性。
- Cache工作原理-5
- Cache工作原理-1
- Cache工作原理-2
- Cache工作原理-3
- Cache工作原理-4
- Cache工作原理-6
- cache工作原理
- Cache工作原理-1
- Cache工作原理-1
- Cache的工作原理
- Cache的工作原理
- Cache的工作原理
- Cache工作原理
- cache的工作原理
- Cache的工作原理
- 2.1 Cache的工作原理
- cache结构与工作原理
- 高速缓冲存储器Cache的工作原理
- ant初始1
- Cache工作原理-2
- vb ado 连接mysql
- Cache工作原理-3
- Cache工作原理-4
- Cache工作原理-5
- Cache工作原理-6
- OSPF详解
- 10分钟让你了解当前的世界金融危机(2008)-----转的
- 鼠标移动ListBox行
- 注意职场“十不要”,让你少奋斗30年
- JavaScript 中的面向对象
- ubuntu 8.04 ATI 显卡官方驱动安装 心得
- 都有第一次