CPU cache

hi,你好,我是猿java

最近一个多月,一直在整理 JMM(Java内存模型)相关的知识,因为 JMM 和 CPU cache(CPU 缓存)密不可分,
可以毫不夸张地说:掌握 CPU cache(CPU 缓存)是理解 JMM(Java内存模型)的关键和前提。
因此,本文将全面分析 CPU cache,这样可以帮助我们更好地理解下文的 JMM原理。

计算机缓存

计算机缓存,主要分为两类:DRAM 和 SRAM

img.png

DRAM

DRAM 是安装在主板上的动态随机存取存储器(Dynamic Random Access Memory),也就是常规意义的内存条,用于存储正在运行的程序和数据。

DRAM 的特点和工作原理:

  • 动态性:DRAM 是一种动态存储器,使用电容器存储数据,这些电容器必须经常用电不断地动态更新,以存储数据。这与静态随机存取存储器(SRAM)不同,SRAM 不需要刷新操作。
  • 随机存取:DRAM 允许随机存取存储器中的任何位置,因此可以快速读取和写入数据。这使得 DRAM 成为主要的系统内存类型。
  • 存储容量:DRAM 的存储容量通常比 SRAM 大得多,因此被广泛用于计算机系统的主内存中。
  • 刷新操作:由于 DRAM 的存储单元是由电容器组成的,这些电容器会逐渐失去电荷,因此需要定期刷新以防止数据丢失。刷新操作会在存储周期性地重写存储单元中的数据,以确保数据的持续性。
  • 相对廉价:与其他类型的存储器相比,DRAM 相对廉价,因此被广泛应用于个人电脑、服务器和其他计算设备的内存中。
  • 稳定性:需要充电来存储数据,因此,断电后就容易丢数据。
    img.png

SRAM

SRAM 指的是静态随机存取存储器(Static Random Access Memory),SRAM 通常是指 CPU缓存,用于临时存储正在运行的程序和数据。

SRAM 的特点和工作原理:

  • 静态性:不需要定期刷新以保持存储的数据,访问速度比 DRAM 快。
  • 稳定性:由于 SRAM 的存储单元是由触发器(flip-flop)组成的,它们可以保持数据的状态,即使在没有电源的情况下也可以保持数据。这使得 SRAM 更加稳定,不易丢失数据。
  • 速度:由于 SRAM 的存储单元是触发器而不是电容器,因此它们的响应速度更快,访问时间更短,与 DRAM 相比,SRAM 的读取速度更快。
  • 功耗:尽管 SRAM 的访问速度快,但它的功耗相对较高。这是因为 SRAM 的存储单元需要使用额外的电力来保持其状态,即使在不访问数据时也是如此。
  • 用途:由于 SRAM 的快速访问速度和稳定性,它通常用于需要快速访问的高性能计算设备,例如高速缓存、寄存器文件和高性能处理器内部的存储。

img.png

CPU 缓存

CPU缓存,也就是我们上面说的 SRAM,它是 CPU内部的存储器。

CPU 缓存分级

老的 CPU有两级内存(L1和L2),新的 CPU有三级内存(L1,L2,L3 ),如下图所示:

img.png

其中:

  • L1和 L2缓存分别存存在每一个 CPU核中,L3是所有 CPU核心共享
  • 存取速度: L1 > L2 > L3,即越离 CPU越近,速度越快
  • 存储容量:L3 > L2 > L1,即越离 CPU越近,容量越小

交流学习

如果文章存在缺点和错误,欢迎批评指正。更多干货和面试经,关注公众号:猿java。

drawing