存储器层次结构

存储技术

存储技术主要有以下几种:

  • SRAM,静态随机访问存储器,作为高速缓存存储器,断电信息丢失。
  • DRAM,动态随机访问存储器,速度比SRAM慢,作为内存,断电信息丢失。
  • 固态硬盘,大量数据的存储设备,基于闪存的存储技术,比DRAM慢,比磁盘快,断电信息不丢失。
  • 磁盘,大量数据的存储设备,断电信息不丢失。

使用缓存的原因

  • 存储技术:不同存储技术的访问时间差异很大。速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小。CPU和主存之间的速度差距在增大。
  • 计算机软件:一个编写良好的程序倾向于展示出良好的局部性。

总的来说,存储器层次结构分为以下几个部分:

  • L0,寄存器;
  • L1,高速缓存(SDRAM);
  • L2,高速缓存(SDRAM);
  • L3,高速缓存(SDRAM);
  • L4,主存(DRAM);
  • L5,本地二级存储(本地磁盘);
  • L6,远程二级存储(分布式文件系统、Web服务器)。

缓存

一般而言,高速缓存是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓存区域。使用高速缓存的过程称为缓存。

缓存可以分为多层。数据总是以块大小为传送单元在第k层和第k+1层之间来回复制的。虽然在层次结构中任何一对相邻层次之间的块大小是固定的,但是其他的层次对之间可以有不同的块大小。

高速缓存的通用组织如下图所示。

整个过程就是一个查找的过程,首先根据索引位,找到对应的组,然后根据标记位,找到组中对应的行,然后根据块偏移,找到对应的字节。

写缓存

写缓存的情况比较复杂,书上只讲了两组策略。如果已经缓存了,有以下的策略:

  • 直写:立即将高速缓存写到低一层中。
  • 写回:尽可能推迟更新,只有当替换算法要驱逐这个更新过的块时,才让它写回到低一层中。

如果没有缓存,也有两种策略:

  • 写分配:加载相应的低一层的缓存到高速缓存,然后更新这个高速缓存。
  • 非写分配:直接对低一层的缓存进行写操作。

对于程序员编程来说,我们心里应该采用写分配和写回的高速缓存模型。

高速缓存对程序性能的影响

高速缓存对程序的性能影响比较大,如缓存可能出现“抖动”,即高速缓存反复地加载和驱逐相同的高速缓存块的组,如果是虚拟内存作为缓存,被称为内存抖动,这种情况下,页面的频繁更换,导致整个系统效率急剧下降。

总的来说,这一章还是比较简单的,虽然实验的part B不太会。

你可能感兴趣的:(存储器层次结构)