初步认识Volatile-缓存一致性协议
为了达到数据访问的一致,需要各个处理器在访问缓存时遵循一些协议,在读写时根据协议来操作,常见的协议有MSI,MESI,MOSI等。最常见的就是MESI协议。接下来给大家简单讲解一下MESI
MESI表示缓存行的四种状态,分别是
1. M(Modify) 表示共享数据只缓存在当前CPU缓存中,并且是被修改状态,也就是缓存的数据和主内存中的数据不一致
2. E(Exclusive) 表示缓存的独占状态,数据只缓存在当前CPU缓存中,并且没有被修改
3. S(Shared) 表示数据可能被多个CPU缓存,并且各个缓存中的数据和主内存数据一致
4. I(Invalid) 表示缓存已经失效
在MESI协议中,每个缓存的缓存控制器不仅知道自己的读写操作,而且也监听(snoop)其它Cache的读写操作
对于MESI协议,从CPU读写角度来说会遵循以下原则:
CPU读请求:缓存处于M、E、S状态都可以被读取,I状态CPU只能从主存中读取数据
CPU写请求:缓存处于M、E状态才可以被写。对于S状态的写,需要将其他CPU中缓存行置为无效才可写
使用总线锁和缓存锁机制之后,CPU对于内存的操作大概可以抽象成下面这样的结构。从而达到缓存一致性效果
初步认识Volatile-缓存一致性协议相关推荐
- 两个例子详解并发编程的可见性问题和有序性问题,通过volatile保证可见性和有序性以及volatile的底层原理——缓存一致性协议MESI和内存屏障禁止指令重排
1. 并发编程的可见性问题 2. 并发编程的有序性问题 3. 使用volatile关键字解决可见性问题 4. 可见性问题的本质--缓存不一致 因为cpu执行速度很快,但是内存执行速度相对于CPU很慢, ...
- 同时存多个变量缓存 微信小程序_CPU缓存一致性协议MESI,memory barrier和java volatile...
MESI协议 MESI协议是一个被广泛使用的CPU缓存一致性协议.我们都知道在CPU中存在着多级缓存,缓存级别越低,容量就越小,速度也越快.有了缓存,CPU就不需要每次都向主存读写数据,这提高了CPU ...
- 4.什么是MESI缓存一致性协议?怎么解决并发的可见性问题?
MESI一致性协议 小陈:老王,上一章你让我看看MESI一致性协议,我大概了解了一下. 老王:哦,来说说你对MESI一致性协议的理解 小陈:MESI协议也叫做缓存一致性协议,主要是用来进行协调多核CP ...
- 关于缓存一致性协议、MESI、StoreBuffer、InvalidateQueue、内存屏障、Lock指令和JMM的那点事
前言 事情是这样的,一位读者看了我的一篇文章,不认同我文章里面的观点,于是有了下面的交流. 可能是我发的那个狗头的表情,让这位读者认为我不尊重他.于是,这位读者一气之下把我删掉了,在删好友之前,还叫我 ...
- 缓存一致性协议硬核讲解
作者 | 牛在舒 面向护发编程程序员,呵护每一根秀发 从缓存一致性协议说起 相信大家都听说过 "缓存一致性协议",那么它是为了解决哪些问题?在实际应用中的现状又是如何呢? 首先让我 ...
- Java并发编程(六):从CPU缓存一致性协议到JMM(Java内存模型)
注:本系列主要注重并发编程这块儿,JVM内容很多,会另外开专栏总结,此系列可能只是会稍微提及 一.跨平台和JVM 经过前面几篇博文的介绍,我们知道,任何编程语言编写的程序要想被计算机执行,都必须被翻译 ...
- 缓存一致性协议-MESI
背景 带有高速缓存的CPU执行计算的流程 程序以及数据被加载到主内存 指令和数据被加载到CPU的高速缓存 CPU执行指令,把结果写到高速缓存 高速缓存中的数据写回主内存 高速缓存的数据结构 高速缓存的 ...
- 缓存一致性协议(MESI)
在目前主流的计算机中,cpu执行计算的主要流程如图所示: 数据加载的流程如下: 将程序和数据从硬盘加载到内存中 将程序和数据从内存加载到缓存中(目前多三级缓存,数据加载顺序:L3->L2-> ...
- MESI缓存一致性协议详解
MESI缓存一致性协议详解 1.CPU为何要有高速缓存 CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 带有高速缓存的CPU执行计算的流程 程序以及数据被加载到主内存 ...
- “了解高并发底层原理”,面试官:讲一下MESI(缓存一致性协议)吧
目录 前言: 1.什么是(Who): 2.为何来(How): 2.1缓存不一致带来的后果 2.2解决方法: 3.是什么(What) 3.1数据在缓存中的四种状态: 3.2MESI的六种消息(请求消息和 ...
最新文章
- 用C#编写获取远程IP,MAC的方法
- 尚学堂requireJs课程---3、私有和公有属性和方法
- python统计字符在文件中出现的次数_python字符串中字符出现次数(python获取字符串个数)...
- jQuery的prev next
- java对mysql读写权限设置_Java学习笔记——MySQL开放3306接口与设置用户权限
- python 画三角函数_用Python计算三角函数之acos()方法的使用
- 使用FlexBox和Json实现类似ComboBox(类似Google的输入提示和自动)功能-基于JQuery-ASP.NET...
- dubbo的线程模型、派发策略、线程池策略
- 官方 mysql管理工具下载_飘云mysql管理工具
- aspx 微型_最初的十亿分钟:正在向世界授课的微型非营利组织背后的数字
- linux查看数据库实例名端口号,查看数据库tns配置
- 在线上传图片二维码识别解析
- 贼好玩!我用Python写了一个AI玩星际争霸2!
- vue-cli脚手架卡在 ‘98%’ after emitting CopyPlugin 报错,无法运行
- 互联网 IT 精英:龙泉寺静心之旅
- Mac电脑使用:Mac电脑如何用自带的Safari浏览器,一键翻译英文网页为中文网页
- mac上通过自动操作达到右键通过vscode打开文件、文件夹
- 网页浏览速度慢的排查原因
- docker搭建openstf, 远程无延时控制手机
- 【工控基础】1. SCADA系统介绍