MESI协议简介

来源:互联网 发布:淘宝代理发货流程 编辑:程序博客网 时间:2024/05/16 10:14

  MESI协议简介


From Wikipedia, the free encyclopedia.

    MESI 协议是一种被广泛使用的cache一致性和内存一致性协议。它是最常见的支持写回cache的协议。它被广泛应用于PC由于Intel的Pentium处理器采用了该协议,来支持更加高效的写回cache,除了先前在Intel486处理器中使用的写直达cache。

状态:

------------------------------------------------*********-------------------------------------------------

每一个cache 行都被标记为以下四种状态之一:

修改(Modified):

    该cache行只存在于当前的cache中,并且是dirty的,和内存中的值相比它是已经被修改过的。在允许任何其他读操作之前,cache需要将数据写回到主存。写回将该行的状态变为独占(Exclusive)。

独占(Exclusive):

    cache行只存在于当前的cache中,但却是clean的;它和主存中的数据是一致的。在任何时刻,回应一个读请求,它可能被改变为共享状态;同样的,当对它进行写操作时,可以被变成修改状态。

共享(Shared):

    该状态说明这个cache行可能被存储在系统中其他的cache中,并且是clean的,和主存中的内容是一致的。这个cache行可以在任何时候被丢弃。

无效(Invalid):

     该状态说明这个cache行是无效的。

 --------------------------------------------*********-------------------------------------------------

操作:

    一个典型的系统中,多个caches共享一个主存公共总线。cache的总体目标就是最小化对共享主存的使用。

    除了Invalid状态,cache可以满足任何一个读请求;一个无效行必须被内存中取出(变成共享或者独占状态)来实现读请求。

    当cache行是修改或者独占状态时,写操作才可以被执行。如果该行是共享状态,所有其他的cache拷贝必须首先被置为无效。这可以通过一个广播操作来完成(Request For Ownership RFO)。

    cache可以丢弃非修改状态的行,并且变为无效状态。一个修改行必须首先被写回。

    拥有修改状态行的cache必须监听所有对相关内存地址的读请求(来自系统中所有其他的cache),并且插入它所包含的数据。这通常通过强制读请求后退,然后将数据写到内存,将cache行的状态变为共享状态。

    拥有共享状态行的cache必须监听所有的来自其他cache无效广播,并且丢弃该行,置为无效状态。

     拥有独占状态cache行的cache必须窥探所有来自其他cache的读交易,并且将该行的状态置为共享状态。

0 0
原创粉丝点击