《深入了解计算机系统》的存储器体系结构一章介绍了存储器的层次结构,CPU内的L1级cache,主板上的L2级cache,主存,磁盘,速率逐级递减。
高速的cache(L1,L2)一般使用SRAM技术实现,以提高性能。
主存使用DRAM技术,现在使用的DDRAM是在SDRAM基础上的改进,SDRAM是指利用同步信号的动态随机访问存储器。
磁盘一般就是我们说的硬盘,使用一系列的盘片组合而成,磁道就像树的年轮,柱面就是所有盘片上相同磁道号的组合,磁道上每512k大小的空间分为扇区,内圈跟外圈的扇区数不一样。磁盘上还有保留柱面作为损坏柱面的替补。

高速缓存
地址可分为3部分
1,标记位m
2,索引位s
3,偏移位b

通过索引位可以定位到哪一组缓存,缓存组数S等于2的s次方。
使用标记位可定位到某组缓存的某一行,标记位的范围等于2的m次方。
一行缓存可存储的数据空间称为块,一般的可理解为一行等于一块,但行包括标记和有效位信息。
行的有效位如果是1(有效),则称为缓存命中,按偏移位读取信息,每行最大存储字节数B等于2的b次方。

局部性
时间局部性:访问同一个地址空间的时间越短局部性越好。
空间局部性:连续访问的地址越近局部性越好。
一般而已,我们需要更多的关注空间局部性,这个对程序员来讲比较重要,尽量让程序访问连续的地址空间或距离最近的地址空间。
另外缓存的命中率对程序性能影响很大,某些时候需具体分析对于某个数据结构的定义是否会导致命中率下降,从而影响性能下降,这块内容虽然大致理解,但实际应用还不是很清楚,待继续深入研究。

存储器山
说白了,就是注意两点,空间局部性--尽量使用小步长;时间局部性--数据结构大小定义尽量小,至少控制在L1cache或L2cache大小内。