当我们对各组件有了认识之后,那么我们在认识了CPU直接去访问内存的时候,需要申请总线控制权,而且一个8G的内存我们需要访问的地址也许就高达2的30次方,一次寻址访问拿到数据可能就要近百ns,而在CPU主频普遍高于3GHz的今天,内存无疑成为了拖累CPU的主要部件,而速率较快的SRAM又造价昂贵,所以早在一开始,内存速率开始拖累CPU的时候,就引入了高速缓存的机制。
什么是高速缓存?
我们在购买电脑时,通常查看参数时除了注意CPU的主频及核心数量,也会注意到有个缓存数量和缓存大小,一般分为L1,L2,L3缓存,以下图为例,分别为i7-10700F(左)和i5-10400F,两者价格相差了将近一倍,除了CPU核心数量跟多以外,还有智能高速缓存大小带来的价格差异,智能不智能咱不知道,但是很快很贵就对了。下图中的16MB和12MB就分别代表L3级缓存的大小,而通常大小L1<L2<L3的。
缓存SRAM造价昂贵,所以通常不会太大,但是却带来了巨大的提升,为了弥补两者之间的性能差异,我们能真实地把 CPU 的性能提升用起来,而不是让它在那儿空转,我们在现代 CPU 中引入了高速缓存。
内存中的指令、数据,会被加载到 L1-L3 Cache 中,而不是直接由 CPU 访问内存去拿。在 95% 的情况下,CPU 都只需要访问 L1-L3 Cache,从里面读取指令和数据,而无需访问内存。
缓存的理论支持:局部性原理
什么是局部性原理,做过生产开发或者用过Redis的应该知道,Redis就是主要拿来做缓存使用的,我们会缓存热点数据,下次再请求这些数据就不会去访问数据库了而是直接从缓存中获取,直接返回,这就是局部性原理中的时间局部性。