当前位置:首页 > 科技  > 软件

每天一道面试题-CPU伪共享

来源: 责编: 时间:2023-08-05 11:46:18 5631观看
导读前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习CPU伪共享,但是不太理解,能不能给我讲讲呢?正文

前言:

了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 2A228资讯网——每日最新资讯28at.com

了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 2A228资讯网——每日最新资讯28at.com

了不起:那你最近学习的什么呢? 2A228资讯网——每日最新资讯28at.com

了不起学弟:最近在学习CPU伪共享,但是不太理解,能不能给我讲讲呢?2A228资讯网——每日最新资讯28at.com

正文:

首先,我们先了解一下CPU的缓存模型。2A228资讯网——每日最新资讯28at.com

CPU的缓存分为三层,一级缓存,二级缓存,三级缓存。2A228资讯网——每日最新资讯28at.com

如果要获取一个内存中的数据,首先会从一级缓存中获取,如果一级缓存中没有,就会从二级缓存中获取,如果二级缓存中没有,就会从三级缓存中获取,如果三级缓存中没有,就会从内存中获取。2A228资讯网——每日最新资讯28at.com

一级缓存是最快的,越到后面就越慢。那CPU的缓存,是由缓存行组成的,每个缓存行的大小是64字节,也就是说,如果我们要获取一个数据,那么就会把这个数据所在的内存地址,以及这个数据所在的内存地址的前后64字节的数据,都会加载到缓存行中。 2A228资讯网——每日最新资讯28at.com

聊到这里,我就给大家看看常见的伪共享问题的案例。 2A228资讯网——每日最新资讯28at.com

假设有两个线程a和b,同时有两个long类型的变量A和B。两个变量都是互相紧挨着的。那线程a要去操作A,就会把变量A和B一起带入的缓存行,线程b要去操作变量B,也会同时把AB带入缓存行。此时如果线程a把A做了修改,再通过BUS总线进行了通知,内存再做了修改。线程b重新从内存获取变量B,那么此时这种还需要从内存获取变量,这就是伪共享了。 2A228资讯网——每日最新资讯28at.com

伪共享:变量AB毫不相关,但是一旦其中一个变量被修改,另一个变量也会被重新加载。2A228资讯网——每日最新资讯28at.com

伪共享的解决方案: 2A228资讯网——每日最新资讯28at.com

  1. 使用缓存行填充,也就是说,我们在变量AB之间,加入一些无用的变量,让AB不在同一个缓存行中,这样就不会出现伪共享的问题了。

举例:2A228资讯网——每日最新资讯28at.com

private static class Padding{    private volatile long a;    public volatile long a1,a2,a3,a4,a5,a6,a7;    private volatile long b;  }
2.使用@Contened注解在变量上,同时在jdk8中还需要在jvm启动参数中加入-XX:-RestrictContended,jdk8以上的版本就不需要这个参数即可,这样就可以解决伪共享的问题了。
private static class Padding{    @Contended    private volatile long a;    @Contended    private volatile long b;  }

结尾:

今天就给大家分享了一下关于CPU伪共享的问题,大家如果对CPU缓存模型那块还有疑问,可以多查找一下资料,比如MESI缓存一致模型等等。2A228资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-153-0.html每天一道面试题-CPU伪共享

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 为什么你不应该使用Div作为可点击元素

下一篇: 使用AIGC工具提升安全工作效率

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 跑分安卓第一!Redmi K60至尊版8月发布!卢伟冰:目标年度性能之王

    8月5日消息,Redmi K60至尊版将于8月发布,在此前举行的战略发布会上,官方该机将搭载搭载天玑9200+处理器,安兔兔V10跑分超177万分,是目前安卓阵营最高的分数
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    北京时间2月27日晚,华为在巴塞罗那举行春季智慧办公新品发布会,在海外市场推出之前已经在中国市场上市的笔记本、平板、激光打印机等办公产品,并首次推出搭载
Top