风行者Cache(一)


风行者Cache(一)之初入江湖
==================

        风,看不见摸不着,却拥有着巨大的力量。对于江湖上时常出现的不明身份的武功高手,我们通常称之为风行者

​ Cache就是其中之一,现代计算机的处理速度能达到如此之高,Cache是功不可没的。但是这么一个重要的部件,对于普通人,甚至是程序员而言,是根本感受不到它的存在的。

        高速缓存在计算机体系结构中的地位宛若风一般,程序员无法感受到它的存在,但是它却为系统新歌能的提升做出了巨大的贡献。

为什么需要Cache

        最早的计算机中并不存在Cache结构,因为当时CPU和内存的速度都不是十分快,但是随着摩尔定律的不断应验,CPU一直处于高度发展当中,反过来,内存却进步很小。它们之间的速度差距越来越大,意味着,CPU处理各种计算的时候,等待IO将数据从内存取回来的时间将显得十分明显,如图1所示,很明显,内存大大拖累了处理器的处理速度,业界常称这种速度差距为剪刀差。

图1之初入江湖/CPU-DRAM.png)


图1 CPU与内存的速度随时间的差异图

​ 为了弥补处理器和内存之间的这些差距,Cache就诞生了,Cache又叫高速缓存,顾名思义它会将内存中一些常用的数据存起来,当处理器后续访问这些数据时就可以直接返回结果,而不需要再劳神费力地去访问内存了。有人可能会说,既然Cache的速度如此之快,那为什么还需要内存呢,将缓存做的大不就可以了吗?理论上确实如此,但是Cache的成本实在太高,如果完全得将Cache做的像内存那样大,恐怕计算机会十分贵。这一点参考前些年固态硬盘和机械硬盘的价格就可以理解了,固态硬盘虽然比机械硬盘快很多,但是固态硬盘又贵又小,满足不了日常需求,计算机的价格却因此大大提升。关于Cache和内存为什么会有速度差距,请参看另一篇文章,DRAM&SRAM之争。

Cache的三种结构

直接映射

全相连

组相连

替换法则

时间空间局部性原理

举个循环的例子

举个数组的例子

替换法则

Limin Wang wechat
Welcome!
I'm happy it's useful to you!
Show comments from Gitment