MESI 一致性协议

四态写回无效协议MESI

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

为什么要引入?

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

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

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

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

关键在于E状态:

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

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

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

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

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

时间: 2024-10-10 07:12:32

MESI 一致性协议的相关文章

多线程之:MESI-CPU缓存一致性协议

MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在Intel奔腾系列的CPU中,详见“support the more efficient write-back cache in addition to the write-through cache previously used by the Intel 486 processor” MESI

多核程序设计——缓存一致性协议MESI

MESI协议 在MP系统中,每个CPU都有自己独立的cache,缓存之间的一致性很很容易受到破坏的,所以缓存一致性协议就应运而生了.MESI是一种使用非常广泛的缓存一致性协议. MESI存在"modified","exclusive","shared"和"invalid"四种状态,协议可以在一个指定的缓存中应用这四种状态.因此,协议在每一个缓存行中维护一个两位的状态"tag",这个"tag&quo

一篇文章让你明白CPU缓存一致性协议MESI

CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要高速的数据.广州SEO为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理. **时间局部性(Tempora

缓存一致性协议MESI

1. 缓存一致性协议的由来: 计算机的存储设备速度与cpu的运算速度之间是数量级的差距,现代计算机不得不加入一层读写速度尽可能接近cpu运算速度的高速缓存来作为内存和cpu之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样cpu就无须等待缓慢的内存读写了. 基于高速缓存的存储交互很好地解决了cpu与内存的速度矛盾,但是也引入了新的问题:缓存一致性.在多cpu系统中,每个cpu都有自己的高速缓存,而它们又共享同一主内存,当多个cpu的运算任务

《大话处理器》Cache一致性协议之MESI【转】

转自:https://blog.csdn.net/muxiqingyang/article/details/6615199 Cache一致性协议之MESI          处理器上有一套完整的协议,来保证Cache一致性.比较经典的Cache一致性协议当属MESI协议,奔腾处理器有使用它,很多其他的处理器都是使用它的变种. 单核Cache中每个Cache line有2个标志:dirty和valid标志,它们很好的描述了Cache和Memory(内存)之间的数据关系(数据是否有效,数据是否被修改

聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响

Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口.Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了底层的硬件实现细节,支持大部分的主流硬件平台.要理解Java内存模型以及一些处理高并发的技术手段,理解一些基本的硬件知识是必须的.这篇会说一下跟并发编程相关的一些硬件知识. 一个基本的CPU执行计算的过程如下: 1. 程序以及数据被加载到主内存 2. 指令和数据被加载到CPU的高速缓存 3. CPU执行

多线程之缓存一致性协议

前言: CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要 高速的数据.为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 首先在电脑中,CPU读取RAM中的数据数据的流程是,通过I/O总线(BUS),将数据从RAM中获取需要操作的数据进CPU需要如下几个步骤 CPU中的三级缓存从RAM中获取该数据. CPU中的二级缓存从三级

Zookeeper的一致性协议:Zab(转)

Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量.低延迟.健壮.简单,但不过分要求其扩展性.下面将展示一些该协议的核心内容: 另,本文仅讨论Zookeeper使用的一致性协议而非讨论其源码实现 Zookeeper的实现是有Client.Server构成,Server端提供了一个一致性复制.存储服务,Client端会提供一些具体的语义,比如分布式锁

【分布式】一致性协议

一.前言 继续前面的学习,这篇我们来学习在分布式系统中最重要的一块,一致性协议,其中就包括了大名鼎鼎的Paxos算法. 二.2PC与3PC 在分布式系统中,每一个机器节点虽然能够明确知道自己在进行事务操作过程中的结果是成功或是失败,但是却无法直接获取到其他分布式节点的操作结果,因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID的特性,需要引入协调者的组件来统一调度所有分布式节点的执行逻辑,而被调度的节点则被称为参与者,协调者负责调度参与者的行为并最终决定这些参与者是否要