安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

深入底层了解Java并发机制系列之CPU缓存模型

11月15日 火云谷投稿
  Javaer都知道,我们在编译器上面编写的Java代码经过编译后会形成字节码,然后由类加载器加载到JVM中,JVM在执行字节码时,将它们转换成一条条的汇编指令,最终由CPU的寄存器来运行,在CPU执行这些汇编的过程中需要读取数据或者写入数据,但CPU能读取的数据只能来自计算机中的内存,随着科技的发展,像Intel的部分CPU频率特别是睿频后已经到达了4。3GHZ了,但内存发展就比较缓慢,比如顶级的内存就3600MHZ左右,因此就造成了CPU的处理速度已经远远超过了内存的访问速度,正常情况都是千倍的速度差距。
  CPU缓存模型
  因为速度差距过大的原因,如果还是采用CPU直接读取内存上面的数据,就会导致CPU资源严重的浪费!于是那些生产CPU的科技公司就设计出了,在CPU和内存之间增加一层缓存的方案,刚才刻意到京东查了一下,现在的CPU基本都是三级缓存了,L1,L2,L3缓存,我从百度图片找来了两张图(如有侵权,请联系我,我马上删除)
  CPU缓存模型
  CPU缓存和内存访问速度对比图
  通过这两张图,我们就可以更加直观地感受到CPU缓存和内存在访问上面的速度的差距了,至于CPU核心的计算速度,和他们相比又是另一个级别的差距了。
  那么在有了CPU缓存之后,我们就可以在程序运行的过程中,先从内存拷贝一份数据到CPU缓存中,然后CPU计算都操作缓存里的数据,等执行完成的时候,再把缓存中的数据更新到内存里,从而增加CPU的使用效率。
  CPU借助缓存和内存进行数据交互
  在引入CPU缓存之后,主了提高CPU的使用效率之外,还带来了一个数据不一致的问题。比如i这一个操作,在引入了CPU缓存之后,他具体的情况是这样的:1:将内存中的i复制一份到CPU缓存当中
  2:CPU核心读取CPU缓存中的i
  3:对i执行1操作
  4:将更新后的i写回CPU缓存
  5:将CPU缓存中的i更新到内存中
  对于单线程来说,这完成不会有什么问题,但是对于多线程来说,就会出现错误了,因为每个线程都有自己的工作空间。比如,现在有线程A和线程B同时对i执行i操作,我们假设i一开始为0,我们期望最后的结果是2,但是最后的结果可能1:比如:1:线程A将内存中的i复制一份到CPU缓存当中,此时i0;
  2:线程B将内存中的i复制一份到CPU缓存当中,此时i0;
  3:线程A对应的CPU核心1读取CPU缓存中的i,并执行1操作,然后把更新后的i写回CPU缓存(i1)
  4:线程B对应的CPU核心2读取CPU缓存中的i,并执行1操作,然后把更新后的i写回CPU缓存(i1)
  5:线程A将CPU缓存中的i更新到内存(i1)
  6:线程B将CPU缓存中的i更新到内存(i1)
  出现这种情况的原因也是很简单的,比如多个CPU核心都从内存拷贝了一份数据到各自的缓存当中,然后直接拿缓存中的数据来执行1操作,最后再把数据刷新内存,于是就造成了这个问题。由于Demo过于简单,我就不给出来了。下面我们回顾一下历史,看看这个问题是怎么被解决的,其实解决这个问题的方案有两种:第一种是早期的方案,因为CPU和计算机的其他组件通信是通过总线来进行的,
  比如数据通信就是通过数据总线来进行,如果一个CPU核心要操作某个数据了,
  就通过向总线发送一个LOCK的信号来获取总线锁,那么其他CPU核心就被阻塞了,
  从而只有一个CPU核心能对内存进行访问。
  但是这种方案明显效率是比较低的,于是就提出了第二方案:通过缓存一致性协议来解决数据不一致的问题,即CPU在操作CPU缓存中的数据时,
  如果发现它是一个共享变量(其他CPU也缓存了一个副本),那么他会进行以下的两种操作:
  (1)读操作,只会将数据单纯读到寄存器,不做额外处理
  (2)写操作,发出一个信号告诉其他CPU核心,你缓存的数据已经无效啦,让其他CPU在读取共享变量时,不得不重新去内存中重新拿过数据。
  至此CPU缓存模型我们已经介绍的差不多了,下一篇我们去了解Java内存模型,有了CPU缓存模型和Java内存模型的知识,我们重新认识Java高并发又是另一种理解境界,下期见。
投诉 评论 转载

新能源医药半导体白酒接下来怎么办最近很多小伙伴被这连续四天的下跌都跌麻木了吧!下边说说我的个人看法:新能源短期还是要回避一下,毕竟涨了这么长时间了,回调是很正常的,刚回调这点,我觉得还不够,我看好……为何港股大涨,A股却普跌?今天连港股都大涨了,A股还是不争气的普跌。不过,这种盘面出现,说明苦日子结束整体已经不远了。简单说下原因。首先,港股目前的主要权重股是阿里、腾讯、京东等为代表的互联……B站就员工猝死一事发声已成立专项小组,扩招审核,关注员工身体红星资本局获悉,2月8日晚23时许,B站(即哔哩哔哩,09626。HK)通过官方微博就此前员工猝死一事发表长文。(该事件详见此前报道《B站有员工过年因加班猝死?回应:事发前一周……手机听筒被灰尘堵塞了如何清洗?1,找一片双面胶或透明胶,撕成带状;2,将双面胶或透明胶,在听筒喇叭、充电接口处清扫一圈,基本就清理完成了;3,对于较难去除的灰尘,如听筒,可用牙签小心的将胶带戳进……5。ElasticSearch数据写入与删除1。数据写入路由机制shardhash(routing)一个索引有多个分片组成,多个分片数据组成了所有数据。当数据写入时……从5799元跌至3499元,12GB256GB,小米MIX4从5799元跌至3499元,12GB256GB,小米MIX4冰点破价加速退场本文原创,禁止搬运和抄袭,违者必究!导语:很多人都知道,小米品牌最近几年主打的几款新旗舰……深入底层了解Java并发机制系列之CPU缓存模型Javaer都知道,我们在编译器上面编写的Java代码经过编译后会形成字节码,然后由类加载器加载到JVM中,JVM在执行字节码时,将它们转换成一条条的汇编指令,最终由CPU的寄……如何看待雷军发问大家真的需要D8100D9000版本的小米1感觉他既然问了,肯定现在已经在生产天玑81009000版本的小米12了。就高通现在这两代处理器的表现再加上三星的代工,功耗和发热太高了。市场反应都不太好。而天玑这两个处理……字节内测汽水音乐,国内在线音乐要变天了?近日在微信、微博等社交平台上,不少用户都在求汽水音乐的App邀请码。红星资本局获悉,汽水音乐为字节跳动(以下简称:字节)旗下产品,是一款面向热爱音乐潮流的年轻人的听歌平台……这世界上怎么会有这么牛的人听说马斯克当选院士了,不过不是中国院士,是M国的工程院院士。马斯克,一个本科生毕业的,凭什么能当上院士,M国的院士是不是太水了。M国的院士选举委员会给出的理由是,马……干货你不知道的Windows快捷键,但IT人都在用(建议收藏头条教育星师计划我是IT悟道,点击右上方关注,每天为你分享IT、科技、数码方面的干货。言简意赅,图文并茂,直截了当,只聊干货。Windows的常用快捷键相信大……金九失色,银十未卜?2021年Android面试知识点整理,金九银十马上过去,但今年金九失色,银十未卜,不少有面试的小伙伴都感叹现在的Android招聘与以往有很大不同。面试各种深挖,简单的背背面试题对于面试官的连环炮式提问毫无帮助,只……
浅谈新能源汽车8月程序员工资数据出炉!Java的工资居然这么高可实现自我繁殖!全球首个活体机器人诞生鄂尔多斯的比特币矿机是怎样运转的?泳池筹款派对加密货币和迷你特朗普PeterThiel离开Fa华为发布首款鸿蒙打印机PixLabX1,零门槛颠覆打印机市场华为新笔记本电脑将发布或可运行安卓App真没钱了!手机出货量连续4年下跌,居民开始存钱了阿里巴巴打造最好的团队,必须用好这4种员工加码自动驾驶,传收购深动科技,雷军的大整合开始了?随手拍对比真我GTNeo3iPhoneSE3OPPOFind购买电视竟然要靠抢,TCLX11也太火了吧

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利