CPU缓存一致性问题

news2024/9/20 18:51:21

什么是可见性问题?

Further Reading :什么是可见性问题?
缓存一致性 内存一致性 内存可见性 顺序一致性区别

CPU缓存一致性问题

由于CPU缓存的出现,很好地解决了处理器与内存速度之间的矛盾,极大地提高了CPU的吞吐能力,但是也为计算机系统带来更高的复杂度,它引入了一个新的问题: 缓存一致性(Cache Coherence)

比如:多路处理器系统中, i++ 这个操作,在程序的运行过程中,首先需要将主内存中的数据复制一份存放到CPU Cache中,那么CPU寄存器在进行数值计算的时候就直接到Cache中读取和写入,当整个过程运算结束之后再将Cache中的数据刷新到主存当中
具体过程如下。
1)读取主内存的i到CPU Cache中。
2)对i进行加一操作。
3)将结果写回到CPU Cache中。
4)将数据刷新到主内存中。
i++在单线程的情况下不会出现任何问题,但是在多线程的情况下就会有问题。

每个线程都有自己的工作内存(本地内存,对应于CPU中的Cache),变量i会在多个线程的本地内存中都存在一个副本。如果同时有两个线程执行i++操作,假设i的初始值为0,每一个线程都从主内存中获取i的值存入CPU Cache中,然后经过计算再写入主内存中,很有可能i在经过了两次自增之后结果还是1,这就是 典型的缓存不一致性问题

PS:多路处理器系统,每个处理器都有自己的高速缓存,而它们又共享同一主内存(Main Memory),这种系统称为共享内存多核系统(Shared Memory Multiprocessors System)
-----------------------------------------------------------------------------读书笔记摘自 书名:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)作者:周志明

为了解决缓存不一致性问题,通常主流的解决方法有如下两种。

1、通过 总线加锁 的方式

第一种方式常见于早期的CPU当中,而且是一种悲观的实现方式,从而使得只有一个CPU(抢到总线锁)能够访问这个变量的内存。这种方式效率低下,所以就有了第二种通过缓存一致性协议的方式来解决不一致的问题。
Further Reading :处理器总线的工作机制

2、通过 缓存一致性协议的方式

在缓存一致性协议中最为出名的是Intel的 MESI 协议,MESI协议保证了每一个缓存中使用的共享变量副本都是一致的。它的大致思想是, 当CPU在操作Cache中的数据时,如果发现该变量是一个共享变量,那么进行如下操作:
1、读取操作,不做任何处理,只是将Cache中的数据读取到寄存器。
2、写入操作,发出信号通知其他CPU将该变量的Cache line置为无效状态,其他CPU在进行该变量读取的时候不得不到主内存中再次获取。

协议是规则,光说不做,MESI就是它的一个实现

在这里插入图片描述

-----------------------------------------------------------------------------读书笔记摘自 书名:Java高并发编程详解:多线程与架构设计 作者:汪文君

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

luttuce(RedisTempate)实现hash(动态数据) expire lua脚本

话不多说先放脚本: local argv ARGV local length #argv if length > 0 then local unpackArgs {} for i 1, length - 1 dotable.insert(unpackArgs, argv[i]) end if redis.call(exists, KEYS[1]) 1 thenredis.call(del, KEYS[1])redis.call(hset, KEYS[…

【ONE·English || 翻译作业 Development: Mendel‘s Legacy to Genetics】

总言 作业:没有严格按照语句结构进行翻译,有不规范之处。下述目录中每一小节是按照原文段落划分。   相关链接:pubmed中查阅的链接,提供了两处文章平台。 文章目录 总言part11.11.21.3 part2:Entwicklung and develo…

Linear Regression多重共线性

目录 介绍: 一、 corr ​二、pairplot 三、VIF 3.1自带vif 3.2自定义函数vif 四、heatmp(直观感受) 介绍: 多重共线性是指在线性回归模型中,自变量之间存在强相关性或线性关系,从而导致模型的稳定性…

使用相关序列方法做相位校准(附仿真代码)

TI对天线幅相校准提出了标准的方法和流程,可参考这篇文档使用级联毫米波传感器的成像雷达参考设计1(TI文档)-CSDN博客的3.3节。这里使用自相关序列的方法来对相位做校准。 自相关(Autocorrelation),也叫序列…

Hypervisor Display架构

Hypervisor Display架构部分 1,所有LA侧的APP与显示相关的调用最终都会交由SurfaceFlinger处理 2,SurfaceFlinger会最终调用android.hardware.graphics.composer2.4-service服务 3,android.hardware.graphics.composer2.4-service服务会调用G…

http代理的静态ip如何实现YouTube运营?有何优势?

一、静态ip是什么?静态住宅ip有什么优势? 静态ip是指网络中某个设备(如计算机、路由器)拥有的永久不变的ip地址,它的ip地址在设备与网络连接后,由网络管理员手动配置或预留,并且不会轻易更改。…

紫光FPGA学习之常见报错

紫光pango design suite报错: 一、4005: [D:/**/rtl/burstORsingle.v(line number: 47)] Logic for ddr_head_addr_rr does not match a standard flip-flop. 看来看去都没有发现这个定义没有问题呀,检查发现: 原来代码: always…

2023本四前端社招面经

美团 全程问项目,根据项目提问,SEO优化方案,还出了一道动态规划的题 SEO优化方案 一、内部优化 META 标签优化:例如:TITLE,KEYWORDS,DESCRIPTION (TDK)等的优化 内部链接…

轻量封装WebGPU渲染系统示例<53>- 多盏灯灯光照在地面的效果

WebGPU实时渲染实现模拟多盏灯的灯光照在地面的效果灯光效果 。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MultiLightsTest.ts 当前示例运行效果: 此示例基于此渲染系统实现,当前示例TypeScript源…

Java版直播商城规划:电商源码、小程序、三级分销与免 费搭建全攻略

【saas云平台】打造全行业全渠道全场景的saas产品,为经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营场景…

git命令查看提交代码行数和次数

右键点击Git Bash Here 查看代码提交次数 git log --since2022-7-1 --before2022-8-1 --author"XXXX" --pretty%aN |sort |uniq -c | sort -k1 -n -r查看代码提交行数 git log --since2022-8-1 --before2022-9-1 --authorXXXX --prettytformat: --numstat |awk {add…

无锡市某厂区工人上岗未穿工作服,殒命车间 富维AI守护每位工友

2018年12月23日,凌晨6点半左右,江阴华士某铜业公司轧球车间内,独自上夜班的操作工朱某正在操作行车吊运一筐切好的铜粒,吊运完成后,他开始解除料筐上的吊具。就在这时,意外突然发生,他身上穿着的…

前端开发新趋势:Web3、区块链和虚拟现实

目录 前言 Web3:下一代互联网 区块链技术 去中心化应用程序(DApps) 区块链:重塑数字世界 数字钱包 NFT(非同质化代币) 虚拟现实:沉浸式体验 WebVR和WebXR 三维图形 新挑战与机会 性…

中海达加入通信行业首个“北斗+5G专业委员会”

12月12日,广东省通信学会“北斗5G专业委员会暨北斗5G产业联盟”在广州成立。中国电信广东公司、中海达、华为、中兴、高德、小米等52家成员单位代表共约100人参加大会。作为全国通信行业首个“北斗5G专业委员会”,旨在加强北斗5G自主创新,构建…

【Hive】——DQL

1 SELECT 1.1 语法 从哪里查询取决于FROM关键字后面的table_reference。可以是普通物理表、视图、join结果或子查询结果。 [WITH CommonTableExpression (, CommonTableExpression)*] SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE wh…

sqlserver-事物日志

文章目录 前言事务日志逻辑体系结构事务日志物理体系结构虚拟日志文件 (VLF)事务日志的循环性质日志截断事务日志备份事务日志支持的操作恢复个别的事务。启动事务时恢复所有未完成SQL Server事务。将还原的数据库、文件、文件组或页前滚至故障点。支持事务复制。支持高可用性和…

虾多拉:帮助Shopee卖家提升运营效果的强大工具

在如今的电商领域,Shopee已经成为了一家备受欢迎的在线购物平台。然而,面对激烈的竞争,卖家们需要找到一种方法来提升他们的运营效果,实现更高的销售额和利润。幸运的是,有一款名为虾多拉(Shopdora&#xf…

迅为RK3588开发板瑞芯微国产化工业ARM核心板AI人工智能

性能强 iTOP-3588开发板采用瑞芯微RK3588处理器,是全新一代AloT高端应用芯片,采用8nm LP制程,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构,主频高达2.4GHz,8GB内存,32GB EMMC。 四核心…

复旦团队提出思维交流框架EoT,由CoT到EoT,可跨模型通信,表现更出色

大型语言模型(LLM)通过利用庞大的训练语料和强大的计算资源,在众多 NLP 任务中表现卓越。然而,在理解和进行推理方面,这些模型仍显得相对薄弱,仅依靠增加模型的大小无法解决这一问题。 然而,现…