1.1 为什么需要Cache?
因为随着共计和设计的演进,CPU的计算性能其实发生了翻天覆地的变化,但DRAM的存储性能没有发展那么快。
由于大量循环的存在,我们访问是数据其实在内存中的位置是相近的。换句专业点的话说,我们访问数据有局部性。我们只需要将这些数据放入一个小而快的存储中,这样就可以快速访问相关数据了。
总结起来Cache是为了给CPU提供高速存储访问,利用数据局部性而设计的小存储单元。
1.2 实际系统中的Cache
整个系统的存储架构包括了CPU寄存器,L1/L2/L3 Cache,DRAM和硬盘。
数据访问时先找寄存器,寄存器里没有找L1Cache,L1Cache没有找L2Cache依次类推,最后找到硬盘中。
同时我们可以看到,速度与存储容量的折中关系。容量越小,访问速度越快!
其中,一个概念需要搞清楚。CPU和Cache是Word传输的,而Cache到主存储是以块传输的,一块大约64Byte。
1.3 Cache的分类
按照数据类型划分:
I-Cache、D-Cache。I-Cache负责放置指令,D-Cache负责放置数据
两者最大的不同是D-Cache的数据可以写回,I-Cache的数据是只读的。
按照大小划分:
分为small Cache/large Cache . 没路组(后文组相连介绍)<4KB叫small Cache,多用于L1 Cache;>4KB叫large Cache,多用于L2及其他Cache。按照位置划分:Inner Cache 和Outer Cache。一般独属于CPU微架构的叫Inner Cache,例如L1 L2Cache;不属于CPU微架构的的叫Outer Cache。
按照数据关系划分:Inclusive/exclusive Cache,下级Cache包含上级的数据叫Inclusive Cache.不包含叫exclusive Cache。