@[toc]
硬件 - CPU 为什么要分一级二级三级缓存
1、为什么要给 CPU 设置缓存
由于数据的局限性,CPU往往需要在短时间内重复多次读取数据,内存的运行频率自然是远远跟不上CPU的处理速度的
所以有了缓存,L1 Cache 的命中率大概在 80% 左右
配合三级缓存之后,CPU 的缓存命中率大约为 95% 左右
2、L1 Cache、L2 Cache、L3 Cache
L1 Cache、L2 Cache、L3 Cache 都是集成在 CPU 内部的物理缓存
L1 Cache 速度最快
L2 Cache 速度较快
L3 Cache 速度较慢
L1 Cache
一级缓存因为容量和结构问题会对 CPU 的性能造成较大影响,另外一方面考虑到成本因素,导致一级缓存容量比较小,一般只能做到 256KB 的水平
一级缓存还划分为两个部分,分别是
一级数据缓存(Data Cache,D-Cache,L1d)
一级指令缓存(Instruction Cache,I-Cache,L1i)
分别用于存放数据及执行数据的指令解码,两者可同时被CPU访问,减少了CPU多核心、多线程争用缓存造成的冲突,提高了处理器的效能。一般CPU的L1i和L1d具备相同的容量
L2 Cache
二级缓存的容量会直接影响 CPU 的性能,越大越好(但是 Inter 和 AMD 的 CPU 对于缓存的依赖程度不一样,所以有一些出入)
一般二级缓存是单个核心独享的,一般比较好的 CPU 是有 256KB 二级缓存每核心
L3 Cache
三级缓存和一级、二级缓存不同的是,三级缓存是核心共享的,可以把容量做的较大,一般有16 MB
3、三个级别的缓存与内存数据交互速度的大概对比
假设 L1 Cache 读取数据需要大约3个周期
L1 Cache 读取数据大约需要大约3个周期
L2 Cache 读取数据大约需要大约10个周期
L3 Cache 读取数据大约需要大约50个周期
Memory 读取数据大约需要大约几百个周期
4、SmartCache
SmartCache 一般是 L3 Cache