28定律我想就不用多介绍了吧,在《不懂精简指令集还敢说自己是程序员》这篇文章中也介绍过,CPU执行指令符合28定律,大部分时间都在执行那一少部分指令,这一现象的发现奠定了精简指令集设计的基础。而程序操作的数据也符合类似的定律,只不过不叫28定律,而是叫principle of locality,程序局部性原理。如果我们访问内存中的一个数据A,那么很有可能接下来再次访问到,同时还很有可能访问与数据A相邻的数据B,这分别叫做时间局部性和空间局部性。如图所示,该程序占据的内存空间只有一少部分在程序执行过程经常用到。有了这个发现重点就来了,既然只用到很少一部分,那么我们能不能把它们集中起来呢?就像这样:集中起来然后呢?放到哪里呢?当然是放到一种比内存速度更快的存储介质上,这种介质就是我们熟悉的SRAM,普通内存一般是DRAM,这种读写速度更快的介质充当CPU和内存之间的Cache,这就是所谓的缓存。