MESI缓存一致性协议
每个处理器,在自己的高速缓存中都有变量副本,这就有了缓存不一致问题,因此有了MESI协议。
MESI协议将缓存行状态flag分为4种:
- invalid:无效的,标记为I,当前cache entry无效,数据不能使用
- shared:共享的,标记为S,当前cache entry有效,数据在各个处理器中都有副本,且副本值都和主内存一致
- exclusive:独占的,E,当前处理器对这个数据独占,只有它有数据副本,其他处理器没有
- modified:修改过的,M,只能有1个处理器对共享数据更新
处理器0读取某个变量的数据,根据内存地址解码,得到index + tag + offset,并以此从高速缓存的拉链散列表中拿到数据。如果发现数据无效,就会发送read消息到总线bus。此时主内存会把数据交给总线bus,总线bus再将其return给处理器0。处理器0会把数据放到高速缓存的cache entry中,flag设为 共享。
处理器1也会读取数据到自己的高速缓存中。
当处理器0修改数据时,会发送invalidate消息到总线bus。处理器1会嗅探到这条invalidate消息,会将自己高速缓存中的flag设为无效,并return invalidate ack消息给总线bus。
处理器0嗅探到 其他所有处理器返回的invalidate ack消息,会将自己高速缓存中的数据加锁,并将状态从共享S —> 独占E。
处理器0对这条消息独占期间,其他处理器就不允许修改数据了。即使其他处理器也想修改这条数据,发送invalidate消息给总线bus,处理器0是不会回复invalidate ack消息的。因此其他处理器的修改操作无效。
等处理器0修改数据完毕后,会把状态设为 修改过的M,同时处理器0不再持有这条数据的锁了。
MESI缓存一致性协议相关推荐
- 4.什么是MESI缓存一致性协议?怎么解决并发的可见性问题?
MESI一致性协议 小陈:老王,上一章你让我看看MESI一致性协议,我大概了解了一下. 老王:哦,来说说你对MESI一致性协议的理解 小陈:MESI协议也叫做缓存一致性协议,主要是用来进行协调多核CP ...
- MESI 缓存一致性协议
本文目录 场景再现 1.总线锁 2.MESI 缓存一致性协议 1.MESI 协议概念 2.通过例子来介绍 MESI 协议 1.MESI 场景 2.MESI 协议下,执行步骤 3.MESI协议失效问题 ...
- MESI缓存一致性协议详解
MESI缓存一致性协议详解 1.CPU为何要有高速缓存 CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 带有高速缓存的CPU执行计算的流程 程序以及数据被加载到主内存 ...
- 并发编程实战-MESI缓存一致性协议
大家好,最近呢我对并发编程展现出了兴趣(没办法,别人都会你不会说不过去啊),然后我就要奋发图强学好并发编程,那么接下来让我们一起进入学习吧.我们在学习并发编程实战之前,应该先要了解一下我们的cpu缓存 ...
- 简述Intel的MESI缓存一致性协议
①M:modified--与主存的内容相比,有改动就标记为M.我改过,那么对于别人来说就是i了. ②E:exclusive--内容为我锁独占,标记为E. ③S:shared--与此同时别人也在读,标记 ...
- 两个例子详解并发编程的可见性问题和有序性问题,通过volatile保证可见性和有序性以及volatile的底层原理——缓存一致性协议MESI和内存屏障禁止指令重排
1. 并发编程的可见性问题 2. 并发编程的有序性问题 3. 使用volatile关键字解决可见性问题 4. 可见性问题的本质--缓存不一致 因为cpu执行速度很快,但是内存执行速度相对于CPU很慢, ...
- “了解高并发底层原理”,面试官:讲一下MESI(缓存一致性协议)吧
目录 前言: 1.什么是(Who): 2.为何来(How): 2.1缓存不一致带来的后果 2.2解决方法: 3.是什么(What) 3.1数据在缓存中的四种状态: 3.2MESI的六种消息(请求消息和 ...
- 同时存多个变量缓存 微信小程序_CPU缓存一致性协议MESI,memory barrier和java volatile...
MESI协议 MESI协议是一个被广泛使用的CPU缓存一致性协议.我们都知道在CPU中存在着多级缓存,缓存级别越低,容量就越小,速度也越快.有了缓存,CPU就不需要每次都向主存读写数据,这提高了CPU ...
- CPU缓存一致性协议MESI - 笔记
CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造 ...
最新文章
- mysql 表空间收缩_mysql表碎片清理和表空间收缩
- yii2 nginx去掉index.php?r=
- 你有多了解hybris ?
- css水平垂直居中(绝对定位居中)
- @NotBlank注解使用不生效的解决办法
- div图片垂直居中 如何使div中图片垂直居中
- java判断float相等_在java中判断两个浮点型(float)数据是否相等的案例
- android设置window背景颜色,Android WindowManager 背景暗化
- 条形码、二维码的区别和组成结构介绍
- 关于文件的存储——windows和Linux比较
- Geoserver入门操作系列之二:创建图层样式
- 百融云创被传赴港IPO急辟谣 旗下信贷业务存众多质疑
- 基木鱼html标签,基木鱼 | QA常见问题|【其他类】
- Executor框架-Executors
- Windows添加网络位置向导(即我的电脑中添加网络盘符)
- 【我的DOT语言学习之旅】 学习DOT语言并使用Graphviz软件来打开.dot文件
- 为什么计算机不显示桌面工具栏,快速解决电脑任务栏显示桌面图标不见了几个实用方法...
- 《Linguistic Regularities in Continuous Space Word Representations》翻译与理解
- 【图像识别与处理】图像相似度对比的几种办法
- 计算机电缆电压实验,计算机电缆的执行标准与规格型号