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

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

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

前言:

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

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

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

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

正文:

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

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

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

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

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

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

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

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

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

举例:Esc28资讯网——每日最新资讯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缓存一致模型等等。Esc28资讯网——每日最新资讯28at.com

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

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

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

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

标签:
  • 热门焦点
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 消费结构调整丨巨头低价博弈,拼多多还卷得动吗?

    来源:征探财经作者:陈香羽随着流量红利的退潮,电商的存量博弈越来越明显。曾经主攻中高端与品质的淘宝天猫、京东重拾“低价”口号。而过去与他们错位竞争的拼多多,靠
  • onebot M24巧系列一体机采用轻薄机身设计,现已在各平台开售

    onebot M24 巧系列一体机目前已在线上线下各平台同步开售。onebot M24 巧系列采用一体化轻薄机身设计,最薄处为 10.15mm,拥有宝石红、午夜蓝、石墨绿、雅致
Top