视频地址:

http://player.bilibili.com/player.html?aid=31289365&bvid=BV1iW411d7hd&cid=91346822&page=11

课件地址:

对应于书中的6.1-6.3。


需要看到代码就能判断代码的局部性,避免代码出现差的局部性。

理想状态中,我们将存储器系统视为一个线性字节数组,CPU能在常数时间内访问每个存储器位置。但实际上**存储器系统(Memory System)**是一个具有不同容量、成本和访问时间的存储设备的层次结构,分别具有以下几部分:

  1. CPU中的寄存器保存最常使用的数据,能在0个时钟周期内访问
  2. **高速缓存存储器(Cache Memory)是靠近CPU的、较小的快速存储器,保存一部分从主存储器(Main Memory)**取出的常用指令和数据,能在4~75个时钟周期内访问
  3. 主存缓存存储磁盘上的数据,需要上百个时钟周期访问
  4. 磁盘存储通过网络连接的其他机器的磁盘或磁带上的数据,需要几千万格周期进行访问

上方存储器作为下方存储器的缓存,速度更快、容量更小。

存储器的层次结构之所有有效,是因为程序具有**局部性(Locality)**的基本属性,倾向于不断访问相同的数据项集合,或者倾向于访问相邻的数据项集合。我们希望程序能具有更好的局部性,使得数据项存储在较高层次的存储器中,这样程序就会倾向于从存储器结构中较高层次访问数据项,运行会更快。


1 存储技术

1.1 随机访问存储器

**随机访问存储器(Random-Access Memory,RAM)**根据存储单元实现方式可以分为两类:静态的RAM(SRAM)和动态的RAM(DRAM)。