CPU多核并发缓存架构介绍
CPU多核并发缓存架构
为什么要加入缓存
从主内存中读取数据的时候,会经过系统总线以及内存总线,这时会受到总线的限制,速度会大大降低。而且会存在众多问题。读入缓存,下次用时从缓存读取,效率会大大提高。
如何解决缓存不一致问题
- 为什么会缓存不一致?
如果左边CPU改变了主内存中读取的一个数据,而右边CPU也刚好访问访问 这个数据,那么读到的就会是为改变的值,造成缓存不一致问题 - 怎么解决缓存不一致问题
为了解决缓存一致性问题,需要各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作。常用的方法是总线加锁或缓存一致性协议-MESI
什么是缓存一致性协议
MESI代表四种状态:
- M:修改
- E:独享、互斥
- S:共享
- I:无效
MESI缓存一致性协议原理
- 假如现在有CPU1和CPU2,主内存有变量X= 1 。现在要做 x+1的操作。 如果在变量 x = 1
- 上加上volatile,则就会触发MESI 当CPU1从主内存中读取到X=1时,CPU1会把此变量标记成独享状态
- 并监听总线,是否有其它CPU去读取此变量 当CPU2从主内存中读取X=1变量时,CPU1会通过嗅探机制监听到。
- 此时CPU1的X变量会变成共享状态。继续进行计算,计算完变成X=2。
- 此时要回写到主内存之前。先锁住缓存行。并标记X变量为修改状态。并向总线发消息。 其它CPU2监听总线时,会监听到,并把X标记成无效状态。
- CPU1把变量X=2回写到主内存后,会由修改状态变成独享状态。
- 此时,如果CPU2如果想修改X变量时,要重启从主内存中读取。然后开始新的轮回
指令重排
- 为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该 结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的 顺序一致。因此,如果存在一个计算任务依赖另一个计算任务的中间结果,那么其顺序性并不 能靠代码的先后顺序来保证。
- 与处理器的乱序执行优化类似,Java虚拟机的即时编译器中也有 类似的指令重排序(Instruction Reorder)优化
CPU多核并发缓存架构介绍相关推荐
- 深入理解并发内存模型||JMM与内存屏障||多核并发缓存架构 ||JMM内存模型||volatile 关键字的作用 ||JMM 数据原子操作||JMM缓存不一致的问题
深入理解并发内存模型||JMM与内存屏障 多核并发缓存架构 JMM内存模型 volatile 关键字的作用 JMM 数据原子操作 JMM缓存不一致的问题
- 亿级流量电商详情页系统实战-25.亿级流量商品详情页的多级缓存架构介绍
1.前言 很多人以为,有了redis缓存,就可以支持对高并发的业务场景了.其实做复杂的缓存,如支撑电商复杂的场景下的高并发的缓存,遇到的问题是非常非常之多,绝对不是说简单的访问一下redis就可以了. ...
- 剑指offer之java缓存总结,从单机缓存到分布式缓存架构
1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...
- 让国内顶尖程序员低头的这份面试题之java缓存总结,从单机缓存到分布式缓存架构
1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...
- 亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构
<缓存架构+高可用服务架构+微服务架构>深入讲解了亿级流量电商详情页系统的完整大型架构.同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动 ...
- 并发编程之CPU缓存架构缓存一致性协议详解(二)
并发编程之CPU缓存架构&缓存一致性协议详解 CPU高速缓存(Cache Memory) CPU高速缓存 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就 ...
- JVM——CPU缓存架构与Java 内存模型
导航 一.CPU缓存架构与一致性协议 1.1 CPU缓存架构 1.2 缓存行与伪共享问题 1.3 MESI 缓存一致性协议 1.4 伪共享的解决办法 二.JMM Java 内存模型 2.1 JMM 简 ...
- 多CPU 多核CPU | 多进程 多线程 | 并行 并发
文章目录 区分 多CPU && 多核CPU CPU缓存 并行 && 并发 多CPU && 多核CPU | 多进程 && 多线程 | 并行 ...
- 设计高并发架构与系统多级缓存架构如何设计?
高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己 ...
最新文章
- 非法关机 mysql_一次非法关机造成mysql数据表损坏的例子
- HTTP协议SSL协议HTTPS协议
- 国庆期间,我造了台计算机
- TIS教程04-客户端
- 带有Netflix Ribbon的Spring Cloud Rest Client-基础知识
- 正整数 n 所有可能的和式的组合
- KMP算法———模板
- 项目管理学习总结(17)——关于前后端分离的分析
- Netty工作笔记0013---Channel应用案例4Copy图片
- python3.5.4安装_linux-centos系统下安装python3.5.4步骤
- 群晖硬盘已损毁 Linux 修复,通用解决方案:修复Synology系统硬盘损坏
- 实操:将C盘用户配置文件移动到非系统盘(windows10系统)
- 大家保险发布“早下班一小时”倡议,呼吁“重阳节,不脱节”
- 易语言浏览本地html,简单的易语言读取网页文本程序
- 给大家分享一些IT网课资源的学习网站啦
- java 斗地主洗牌发牌
- JS逆向:猿人学爬虫比赛第五题详细题解(下)
- 移动端测试和开发工作中常用的安卓开发者选项
- 廉价底板套胶对比总结
- 磁盘挂载失败Couldn't create temporary archive name