6.1 存储技术

这一节主要讲述存储技术的发展,从 SRAM、DRAM、ROM 再到硬盘。

随机访问存储器(RAM),分为静态 RAM 和动态 RAM,前者比后者更快,但也贵得多。SRAM 应用于高速缓存,DRAM 应用于主存和帧缓冲区。

高速缓存存储器作为 CPU 和主存之间的缓存区域,对应用程序性能的影响最大。现代计算机频繁使用基于 SRAM 的高速缓存,试图弥补处理器和内存之间的差距。

数据流通过总线(bus)在 CPU 和主存之间传递,总线携带地址、数据和控制信号。

连接 CPU 和主存的总线

像显示器、鼠标、键盘这样的 I/O 设备,都是通过 I/O 总线连接到 CPU 和主存的。I/O 总线比系统和内存总线慢,但可以容纳多种第三方 I/O 设备。

总线结构图

CPU 使用内存映射的技术向 I/O 设备发出命令,地址空间有一块是为 I/O 设备通信保留的 I/O 端口。

6.2 局部性原理

程序倾向于引用最近引用过的数据项,或者与最近引用过的数据项邻近的数据项。

局部性有两种表现形式:时间局部性和空间局部性。有着良好局部性的程序比局部性差的程序运行得更快。

对于一个循环求数组元素之和的函数,结果 sum 每次循环都被引用,具有良好的时间局部性。而数组按顺序迭代,具有良好的空间局部性。
而对于多维数组,步长会影响程序的空间局部性。

评价程序中局部性的一些简单原则:

  • 重复引用相同变量的程序具有良好的时间局部性。
  • 对于具有步长的引用模式的程序,步长越小,空间局部性越好。在内存中以大步长跳来跳去的程序,空间局部性会很差。
  • 对于取指令来说,循环具有好的时间和空间局部性。循环体越小,迭次次数越多,局部性越好。

6.3 存储器的层次结构

存储器层次结构

一般而言,从高层到底层,存储设备变得更慢、更便宜和更大容量。

存储器层次结构的本质是:每一层存储设备都是较低一层的缓存。