java并发编程之基础与原理2

本文剖析了CPU缓存结构,介绍了CPU缓存的概念与作用,它能减少CPU等待时间、提高系统效率。还阐述了缓存分类、多CPU多核缓存架构、缓存访问延迟,探讨了缓存一致性、窥探协议、MESI协议等问题,以及解决原子性问题的总线仲裁机制和锁定方法,最后提及伪共享问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cpu缓存结构剖析

 下面说一下概念与作用

CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储
器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中
保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调
用,减少CPU的等待时间,提高了系统的效率。

计算机在程序执行过程中有两种局部性原理:1.时间局部性和2.空间局部性

cpu的缓存分类

缓存一般分为了三级缓存:

 

 下面看一下多cpu的多核缓存架构

上面l1缓存有两个,一个缓存指令,一个用来缓存数据  

 cpu的缓存访问延迟

主内存访问延迟的时钟周期是167个,然后l1缓存最小,是4个

我们可以这样来进行一个计算

 下面说一下缓存一致性的问题

 

 下面说一下窥探协议类型

 下面说一下MESI协议:

        

 如何解决原子性问题

 先来说一个总线的仲裁机制

在计算机中,数据通过总线在处理器和内存之间传递。每次处理器和内存之间的数据传递都
是通过一系列步骤来完成的,这一系列步骤称之为总线事务(Bus Transaction)

总线会同步试图并发使用总线的事务。在一个处理器执行总线事务期间,总线会
禁止其他的处理器和I/O设备执行内存的读/写

假设处理器A,B和C同时向总线发起总线事务,这时总线仲裁(Bus Arbitration)会对竞
争做出裁决,这里假设总线在仲裁后判定处理器A在竞争中获胜(总线仲裁会确保所有处理器都
能公平的访问内存)。此时处理器A继续它的总线事务,而其他两个处理器则要等待处理器A的
总线事务完成后才能再次执行内存访问。假设在处理器A执行总线事务期间(不管这个总线事务
是读事务还是写事务),处理器D向总线发起了总线事务,此时处理器D的请求会被总线禁止。
总线的这种工作机制可以把所有处理器对内存的访问以串行化的方式来执行。在任意时间
点,最多只能有一个处理器可以访问内存。这个特性确保了单个总线事务之中的内存读/写操作
具有原子性。
原子操作是指不可被中断的一个或者一组操作。处理器会自动保证基本的内存操作

两个方法保证了锁定

就是总线锁定与缓存锁定

伪共享的问题

 

 

 下面讲解两个原则

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值