题目
分层存储体系和 CPU 三级缓存
答案
@[toc] --- ## 什么是分层存储体系 每个人都希望自己的计算机拥有这样一个存储器:它容量无限大,CPU 访问它的速度无限快,并且能够永久性的存储数据(断电不会丢失数据),而且价格不能太高昂。 But,遗憾的是,现阶段的技术仍然满足不了我们的幻想。 为此,经过多年的探索,人们提出了分层存储体系的概念,把我们的幻想一个一个拆开对应到不同的存储器上 - 在这个体系中,计算机拥有若干 KB 超级快速、超级昂贵且易失性的**寄存器** - 若干 MB 快速、昂贵且易失性的**高速缓存**(CPU Cache,也称为 **CPU 缓存**) - 若干 GB 的速度与价格都适中、且同样易失性的**内存** - 以及若干 TB 低速、廉价、非易失性的**磁盘**存储 - 另外还有诸如磁带等可移动的存储装置 至于为什么这些存储器的造价不同,那就和它们的成本、材料、制作工艺等息息相关了。 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210415105520.png) > 寄存器和高速缓存都直接内嵌在 CPU 中 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210415130522.png) ## 三级缓存架构 L1、L2、L3 为了缓解内存和 CPU 之间速度不匹配的矛盾,引入了高速缓存这个东西,它的容量比内存小很多,但是交换速度却比内存要快得多。 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20220123103126.png) CPU Cache 按照访问速度由快到慢又分为 L1 Cache、L2 Cache、L3 Cache 三层架构: - L1 和 L2 一般是内嵌在 CPU Core 里面的,L1 最快,L2 其次,他俩都是都是只能被一个单独的 CPU Core 使用 - 而 L3 在 Core 的外面,可以被单个 CPU 上的所有 CPU Core 共享 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20220123103333.png) **越靠近 CPU 的缓存,速度越快,容量也越小**。所以 L1 缓存容量最小但是速度最快;L3 缓存容量最大同时速度也最慢 当 CPU 执行运算的时候,它会先去 L1 缓存查找所需的数据、如果没有找到的话就再去 L2 缓存、然后是 L3 缓存,如果最后这三级缓存中都没有命中,那么 CPU 就要去访问内存了。 显然,**CPU 走得越远,运算耗费的时间就越长。所以尽量确保数据存在 L1 缓存中能够提升大计算量情况下的运行速度**。 需要注意的是,CPU 和三级缓存以及内存的对应使用关系: - L1 和 L2 都是只能被一个单独的 CPU 核心使用 - L3 可以被单个 CPU 上的所有 CPU 核心共享 - 内存由全部 CPU 上的所有 CPU 核心共享 如下图所示: ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20220123103836.png)