美文网首页
JVM-003-MESI

JVM-003-MESI

作者: Docker_Compose | 来源:发表于2020-11-13 14:04 被阅读0次

    MESI

    一、缓存一致性协议

      缓存一致性协议有很多,不同的厂商使用的缓存一致性协议是不同的,其中intel使用的缓存一致性协议是MESI。

      MESI是一种广泛使用的支持写策略的缓存一致性协议。

    1、缓存行

     缓存行,cache line。

     64 byte。缓存的最小单位。


    2、MESI协议中的四种状态
    M

     Modified,被修改的

     cache line 被某个cpu缓存,并被修改过,即与主存的data不一致。

     未来某个时间点,允许其他cpu读取主存中的相应内存之前,cache line将被写回主存。

    E

     Exclusive,独享的

     cache line被某个cpu缓存,并未被修改过,即与主存的data一致。

     Exclusive-->Shared:任何时刻,其他cpu读取主存中相应的内存时,该cache line的状态就会变成Shared。

     Exclusive-->Modified:该cpu修改了cache line,cache line的状态就会变成Modified。

    S

     Shared,共享的

      该缓存行被多个cpu缓存,并且与主存的data一致。

      Shared-->Invalid。某一个cpu修改了cache line,其他cpu的cache line的状态就会变成Invalid。

    I

      Invalid,无效的

     cahce line是无效的。因为其他cpu修改过。



    3、伪共享问题

    cache line之间相互影响。x与y问题




    二、合并写机制

     合并写机制也是底层优化的方式之一。
     它将多个指令load到了WCBuffer中,然后一块执行


    WCBuffer

     WCBuffer是介于cpu与二级缓存之间的缓存。其只有4 byte,但效率比一级缓存还要快。它主要是用于合并写机制。

    cpu读/写data流动:cpu->寄存器->WCbuffer>三级缓存->内存




    三、cpu指令乱序执行

     由于cpu在寄存器,三级缓存以及内存执行的效率是不一样的,因此,cpu的指令顺序执行的话,cpu的执行效率就会十分的低下。
     因此,为了提高cpu的执行效率,cpu指令允许乱序执行。
     但是,cpu指令乱序执行有一个大前提,那就是多个指令之间不相干。
     cpu在不同位置执行的效率:寄存器>lv1缓存>lv2缓存>lv3缓存>内存。

    相关文章

      网友评论

          本文标题:JVM-003-MESI

          本文链接:https://www.haomeiwen.com/subject/wahsbktx.html