cache的基本原理
cpu从内存一条一条取指令
但是cpu速度很快,内存速度很慢
我们把使用频率高的代码读取到cache里与cpu交互,因为cache速度很快,这样内存和cpu的速度矛盾会被缓和
内存大概37GB/s
cache大概1000GB/s
如今的cache被集成在cpu内部,用sram实现,由于集成度不高,没法做的很大,因此容量肯定不会很大
空间局部性
在最近的未来要用到的信息,可能是与现在正在使用的信息在存储空间上邻近
时间局部性
在最近的未来要用到的信息,可能是现在正在用到的信息
cache命中率
cpu要找到某个功能的代码,
有两种情况
会同时在cache和内存中找
此时设cache的命中率为H
查找时间为t
那么查找时间为
\[t=Ht_c+(1-H)t_m
\]
如果不是同时,而是先找cache,再去内存找
\[t=Ht_c+(1-H)(t_c+t_m)
\]

局部性的规则
将主存分块,如每1KB为1块,主存和cache之间以块为单位进行信息交换
在操作系统中,这样一个块也被称为“页/页面/页框” cache的块也被叫做cache行
