题目
分层存储体系和 CPU 三级缓存
答案
@[toc]
---
## 什么是分层存储体系
每个人都希望自己的计算机拥有这样一个存储器:它容量无限大,CPU 访问它的速度无限快,并且能够永久性的存储数据(断电不会丢失数据),而且价格不能太高昂。
But,遗憾的是,现阶段的技术仍然满足不了我们的幻想。
为此,经过多年的探索,人们提出了分层存储体系的概念,把我们的幻想一个一个拆开对应到不同的存储器上
- 在这个体系中,计算机拥有若干 KB 超级快速、超级昂贵且易失性的**寄存器**
- 若干 MB 快速、昂贵且易失性的**高速缓存**(CPU Cache,也称为 **CPU 缓存**)
- 若干 GB 的速度与价格都适中、且同样易失性的**内存**
- 以及若干 TB 低速、廉价、非易失性的**磁盘**存储
- 另外还有诸如磁带等可移动的存储装置
至于为什么这些存储器的造价不同,那就和它们的成本、材料、制作工艺等息息相关了。

> 寄存器和高速缓存都直接内嵌在 CPU 中

## 三级缓存架构 L1、L2、L3
为了缓解内存和 CPU 之间速度不匹配的矛盾,引入了高速缓存这个东西,它的容量比内存小很多,但是交换速度却比内存要快得多。

CPU Cache 按照访问速度由快到慢又分为 L1 Cache、L2 Cache、L3 Cache 三层架构:
- L1 和 L2 一般是内嵌在 CPU Core 里面的,L1 最快,L2 其次,他俩都是都是只能被一个单独的 CPU Core 使用
- 而 L3 在 Core 的外面,可以被单个 CPU 上的所有 CPU Core 共享

**越靠近 CPU 的缓存,速度越快,容量也越小**。所以 L1 缓存容量最小但是速度最快;L3 缓存容量最大同时速度也最慢
当 CPU 执行运算的时候,它会先去 L1 缓存查找所需的数据、如果没有找到的话就再去 L2 缓存、然后是 L3 缓存,如果最后这三级缓存中都没有命中,那么 CPU 就要去访问内存了。
显然,**CPU 走得越远,运算耗费的时间就越长。所以尽量确保数据存在 L1 缓存中能够提升大计算量情况下的运行速度**。
需要注意的是,CPU 和三级缓存以及内存的对应使用关系:
- L1 和 L2 都是只能被一个单独的 CPU 核心使用
- L3 可以被单个 CPU 上的所有 CPU 核心共享
- 内存由全部 CPU 上的所有 CPU 核心共享
如下图所示:

