首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试系列之-MSI协议MESI协议(JAVA基础)

MSI协议 多核CPU都有自己的专有高速缓存(一般为L1、L2),以及同一个CPU芯片板上不同CPU内核之间共享的高速缓存(一般为L3)。...这就需要用到缓存一致性协议。 缓存一致性协议的基础版本为MSI协议,也叫作写入失效协议。如果同时有多个CPU要写入,总线会进行串行化,同一时刻只会有一个CPU获得总线的访问权。...MESI协议 缓存行的相容关系 目前主流的缓存一致性协议MESI写入失效协议,而MESI是MSI协议的扩展。...在MESI协议中,每个缓存行(Cache Line)有4种状态,即M、E、S和I(全名是Modified、Exclusive、Shared和Invalid) 1.M:被修改(Modified) 该缓存行的数据只在本...MESI状态转换 (1)初始阶段:开始时,缓存行没有加载任何数据,所以它处于“I状态”。

54020
您找到你想要的搜索结果了吗?
是的
没有找到

缓存一致性协议——MESI

可见性问题的产生 CPU的高速缓存 缓存包含L1(L1d-数据缓存(存放数据)、L1i指令缓存(执行数据的指令码))、L2、L3,其中L3是CPU共享,而L1和L2是每个cpu独占的缓存空间。...因为L1、L2缓存是独立的,所以就会导致什么问题? 可见性问题!! 当多个线程并行执行一个共享数据时,都同时在本cpu的高速缓存中的时候,最新的数据对其他的cpu是不可见的!!...缓存锁引入了缓存一致性协议来保证,有MSI,MESI.MOSI等等! CPU为何要有高速缓存 CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。...带有高速缓存的CPU执行计算的流程: 程序以及数据被加载到主内存 指令和数据被加载到CPU的高速缓存 CPU执行指令,把结果写到高速缓存 高速缓存中的数据写回主内存 CPU缓存一致性协议MESI MESI...每个Cache line有4个状态,它们分别是: 协议动态演示地址 超级好用 链接: MESI动态地址 具体的细节动态图里有详细体现,比我在这哔哔哔半天有用的多 总结Volatile作用 1

33520

MESI协议,JMM,线程常见方法等

缓存一致性——MESI协议 CPU多级缓存官方概念 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU,所以才引入了缓存的概念。...解决方式二——MESI协议(重点) 针对上面缓存数据不一致的情况,提出了MESI协议用以保证多个CPU缓存中共享数据的一致性,定义了缓存行Cache Line四个状态,分表是M(Modified),E(...注意:lock和unlock存在着一个性能问题,我们发现写的代码明明是多线程并发操作,但是底层还是串行化,并没有真正实现并发。 可见性原理 ?...上面说的MESI协议是在总线那边实践的,线程A,B可以同时获取主内存a的值,a进行自增操作之后在进行操作6write写入的时候,会经过总线。...此篇是并发系列的基础,主要聊了硬件的MESI协议,原子的八种操作,线程和进程的关系,线程的一些基础操作,JMM的基础等。如果有什么错误,或者不对的地方,欢迎指正。

65611

小议CPU缓存一致性协议MESI

比如我在腾讯云买的最低配云主机…… MESI 并发场景下(比如多线程)如果操作相同变量,如何保证每个核中缓存的变量是正确的值,这涉及到一些”缓存一致性“的协议。...其中应用最广的就是MESI协议(当然这并不是唯一的缓存一致性协议)。 状态介绍 在缓存行的元信息中有一个Flag字段,它会表示4种状态,分为对应如下所说的M、E、S、I状态。...L3 Cache在MESI中的角色 L3 缓存是所有CPU共享的一个缓存。纵观刚才描述的MESI,好像涉及的都是CPU内的缓存更新,不涉及L3缓存,那么L3缓存在MESI中扮演什么角色呢?...其实在常见的MESI的状态流程描述中(我上文也是),所有提到”内存“的地方都是值得商榷的。比如我上一节举的例子中,CPU0中某缓存行是I,CPU1 中是M。...个人猜测是如果描述MESI状态流转的时候引入L3缓存,会造成描述会极其复杂。所以一般的描述都好似有意地忽略了L3缓存。

45910

3 CPU缓存一致性协议MESi

现在使用最普遍的是mesi协议, 三. mesi协议的工作原理 四个字母分别代表在缓存里不同的四个状态: M:已修改 E:独占 S:共享 I:已失效 MESI 是4种状态的首字母。...跨缓存行就不是原子的了, 不是原子的, 缓存一致性协议就搞不定了, 缓存一致性协议就升级为总线锁了 ,谁抢到谁赢. 问题2: 既然最终都可以总线锁解决问题, 为什么还要用总线裁决呢?...多数情况下, 总线裁决是可以解决问题的. 很少会遇到超过64字节的变量 四. volatile为什么不能保证原子性呢? 缓存一致性协议, 不能对寄存器生效. 上面那句话是什么意思呢? ?...--------------------------------------以下是课件内容---------------------------------------------- 1.1 MESI协议缓存状态...可能出现的阻塞都会导致各种各样的性能问题和稳定性问题

80120

JUC并发编程之MESI缓存一致协议详解

那么该文章就来用为简洁的话语来解释MESI协议。...为了保持数据的一致性,MESI将缓存条目的状态划分为Modified.Exclusive,Shared,Invalid MESI协议中一个缓存条目的状态Flag值分为以下四种 1....如下图,就是MESI的概要图。 ? 通过上面的理论,还不好解释MESI协议在CPU多核中到底是如何运用的,我会在下面通过几张图片的案例,来详细剖析它协议的转换过程。...以上是针对正常的情况,MESI协议能够正常的对缓存行进行状态标识转换,那么我们来聊一聊针对非正常情况,MESI协议是否还适用呢?...协议无法同时对线程内的两个缓存行进行lock加锁,这时MESI协议失效,缓存行锁失效,从而晋升到bus总线锁。

58960

4.什么是MESI缓存一致性协议?怎么解决并发的可见性问题

MESI一致性协议 小陈:老王,上一章你让我看看MESI一致性协议,我大概了解了一下。...老王:哦,来说说你对MESI一致性协议的理解 小陈:MESI协议也叫做缓存一致性协议,主要是用来进行协调多核CPU的高级缓存的数据一致的。...小陈:MESI实现的缓存一致性协议,正是CPU0修改了数据,通知到CPU1的那套通知机制的一种规范,计算机厂商根据这套规范实现了这种通知机制,但是不同的厂商之间实现方式可能稍微不同。...看来两天不见,你竟然把问题研究得这么深入了。 小陈:那是,问了看懂这个MESI协议,我可是连续肝了两天晚上,点了无数根华子......4.什么是MESI缓存一致性协议?怎么解决并发的可见性问题? JAVA并发专题《练气篇》 5.volatile怎么保证可见性? 6.什么是内存屏障?具有什么作用?

25130

Memory Consistency and Cache Coherence—— cache一致性协议MESI

读写cache需要cache一致性协议保证数据正确,MESI协议规定了一块内存的五种状态:Modified(M,修改),Exclusive(E,独占),Share(S,共享),Invalid(I,无效)...这种方式一致性协议实现比较简单,因为所有的数据都会更新到存储器,所以其他处理器读取存储器时都是最新值。      ...这种方式实现一致性协议比较复杂,因为最新值可能存在私有缓存,而不是共享缓存或者存储器,但是写回缓存可以为缓存缺失和写入操作使用相同的监听机制:每个处理器都监听放在共享总线上的所有地址。...在MESI协议下,读取内存块如果其它cpu都是I状态,则当前cpu该块会变成E状态,然后写入的时候直接写就可以,不需要发送使该块失效的信号。...MESI协议和MSI协议最大不同就是其他状态到S or E状态,还有E到M状态,其他和MSI协议没啥区别。

63910

已经有 MESI 协议,为什么还需要 volatile 关键字?

我们也讨论了 MESI 协议通过写传播和事务串行化实现缓存一致性。...不知道你是不是跟我一样,在学习 MESI 协议的时候,自然地产生了一个疑问:在不考虑写缓冲区和失效队列的影响下,在硬件层面已经实现了缓存一致性,那么在 Java 语言层面为什么还需要定义 volatile...MESI 协议能够满足写传播和事务串行化 2 点特性,通过 “已修改、独占、共享、已失效” 4 个状态实现了 CPU Cache 的一致性; 现代 CPU 为了提高并行度,会在增加写缓冲区 & 失效队列将...Cache 不一致问题 MESI 协议在线模拟 网站地址:https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESI.htm 现在,我们的问题是...:既然 CPU 已经实现MESI 协议,为什么 Java 语言层面还需要定义 volatile 关键字呢?

77162

图解 | CPU-Cache | 一致性

优点是CPU执行的效率提高,缺点是实现起来技术比较复杂。 其中write back可以减少不必要的内存写入,减轻总线压力。...那么多处理器如何解决缓存一致性问题呢? 多处理器的一致性方法 多处理器一般是采用基于总线监听机制的高速缓存一致性协议。包括写无效和写更新协议。另外还有基于目录的高速缓存一致性机制。...两类总线监听协议 根据管理本地Cache块副本的方式,有两类总线监听协议: 写更新(Write-update) 写无效(Write-invalidate)。...写直通无效协议、写一次协议、MSI、MESI、MOSI、MOESI、MESIF都属于写无效这一类协议。 ?...下面以最为常用的MESI协议为例子分析写无效协议 MESI MESI协议又叫Illinois协议MESI,"M", "E", "S", "I"这4个字母代表了一个cache line的四种状态,分别是

1.1K50

吊打字节面试官,CPU缓存一致性协议MESI

前言:今天,我们就深入聊聊关于CPU缓存一致性协议MESI的有关知识,希望能够为小伙伴们带来实质性的帮助。...多级缓存结构 多核CPU多级缓存一致性协议MESI 多核CPU的情况下有多个一级缓存,如何保证缓存内部数据的一致,不让系统数据混乱。这里就引出了一个一致性的协议MESI。...MESI协议缓存状态 MESI 是指4中状态的首字母。每个Cache line有4个状态,可用2个bit表示,它们分别是: 缓存行(Cache line):缓存存储数据的单元。...MESI优化和他们引入的问题 缓存的一致性消息传递是要时间的,这就使其切换时会产生延迟。...可能出现的阻塞都会导致各种各样的性能问题和稳定性问题

72810

netty同端口监听tcp和websocket协议

本片文章目的: 使用netty同端口监听tcpsocket和websocket消息传输。...实现思想: 在netty编程中,对于不同的消息肯定需要不同的编解码来处理,所以我们需要利用netty具有动态增删处理器handle的功能。    ...实现代码如下:  // 1.socket方式服务 // 设置N秒没有读到数据,则触发一个READER_IDLE事件。...("byteToBuf","WebSocketAggregator",new WebSocketFrameAggregator(65535)); // 在管道中添加我们自己的接收数据实现方法...文档 文档 特点 1、简单易用:通过简单的配置文件即可建立完善的启动方案,然后就可以开心的关注业务代码了; 2、串行设计 :单用户的所有请求都是串行进行,完美解决单用户并发问题,减少锁的使用; 3、高性能

2.9K30
领券