CPU的一二三级缓存有什么用处? 发布日期:2019-03-28
为什么都只有i9都只有27MB,而内存是G为单位?
先看看为什么CPU会有L1、L2、L3这样的缓存设计,正如下图所示,现在的处理器太快了,而从内存中读取数据实在太慢(一个是因为内存本身速度不够,另一个是因为它离CPU太远了,总的来说需要让CPU等待几十甚至几百个时钟周期),这个时候为了保证CPU的速度,就需要延迟更小速度更快的内存提供帮助,而这就是缓存。
现在让我们看看多级缓存(L1,L2,L3)的好处,而不仅仅是单个缓存。
1、高速缓存越靠近ALU等核心单元,访问速度就越快,所以会有靠近核心的L1缓存,虽然它小,但它真的快啊;
2、高速缓存的容量越大,缓存命中(Cache hit)就越高,所以当L1没有命中时,需要一个容量更大的但速度也不慢的缓存来提供数据,这就是L2;
3、更大的缓存意味着更高的命中,同时也意味着更高的成本、更慢的速度、更多的晶体管,更大的面积,因此它不可能靠近所有核心单元,这就是L3;
这就是CPU缓存的层次结构,基于性能、成本、设计上的一个平衡,L1缓存可以最大化单个内核的位置和速度(甚至分离指令和数据)。L2高速缓存会更大些,命中更高,速度稍慢,一般还是位于每个核心内,而L3缓存通常在系统中的所有内核间共享,提供合理的速度和容量。比如英特尔Core i7-8700K它的L1大小只有64K,还分为32K数据和32K指令,L2大小为256K,L3达到12MB。
现代CPU的高速缓存体系结构是非常复杂的,其中包括硬件预取和数据转发,以便能提供最佳的高速缓存命中机会。有些CPU甚至还加入了L4缓存。