CPU Cache模型

计算机程序的本质是指令的执行过程 也就是处理器的寄存器(Register)从内存load数据,然后store回内存的过程
---------------------------------------------------ref 理解CPU的Load和Store操作

在这里插入图片描述

[Q&A] 为何引入CPU Cache模型

在计算机中,所有的运算操作都是由CPU的寄存器来完成的,CPU指令的执行过程需要涉及数据的读取和写入操作,CPU所能访问的所有数据只能是计算机的主存(通常是指RAM),虽然CPU的发展频率不断地得到提升,但受制于制造工艺以及成本等的限制,计算机的内存反倒在访问速度上并没有多大的突破,因此CPU的处理速度和内存的访问速度之间的差距越拉越大,通常这种差距可以达到上千倍,极端情况下甚至会在上万倍以上。由于两边速度严重的不对等,通过传统FSB直连内存的访问方式很明显会导致CPU资源受到大量的限制,降低CPU整体的吞吐量,于是就有了在CPU和主内存之间增加缓存的设计。

吞吐量是指在单位时间内CPU从存储设备 读取->处理->存储 信息的量

一句话:CPU吞吐量太低了,为了提高CPU吞吐量


CPU Cache模型

CPU和主内存之间的缓存的数量都可以增加到3级了,最靠近CPU的缓存称为L1,然后依次是L2,L3和主内存,CPU缓存模型如下图所示。

在这里插入图片描述
Cache的出现是为了解决CPU直接访问内存效率低下问题的,程序在运行的过程中,会将运算所需要的数据从主存复制一份到CPU Cache中,这样CPU进行计算时就可以直接对CPU Cache中的数据进行读取和写入,当运算结束之后,再将CPU Cache中的最新数据刷新到主内存当中 ,CPU通过直接访问Cache的方式替代直接访问主存的方式极大地提高了CPU的吞吐能力,有了CPU Cache之后,整体的CPU和主内存之间交互的架构大致如下图所示。

在这里插入图片描述


[Q&A] 引入缓存的效果

Cache与主内存访问速度对比图
在这里插入图片描述
-----------------------------------------------------------------------------书名:Java高并发编程详解:多线程与架构设计 作者:汪文君

程序的指令,如果需要从CPU Register里面取数据,CPU只需要0 cycles(CPU周期)。如果需要直接访问内存,则需要几百个cycles。如果能从高速缓存取到目标数据,需要4-75个cycles
-----------------------------------------------------------------------------ref cpu运行速度分析——延迟与数据吞吐量 - 知乎

在这里插入图片描述

[Q&A] CPU缓存一致性问题

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值