局部性原理

一个编写良好的计算机程序常常具有良好的局部性(locality)。也就是,它们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

  • 时间局部性(temporal locality): 在一个具有良好时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再被多次引用
  • 空间局部性(spatial locality): 在一个具有良好空间局部性的程序中,如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附近的一个内存位置。

分类

存储器分类

计算机系统中的作用

  • 主存储器/内存: 主机的一部分,用于存放系统当前正在执行的数据和程序(临时存储器)
  • 辅助存储器/外存: 为外部设备,用于存放不用的数据和程序(永久存储器)
    CPU与存储器的交互

存储介质

  • 半导体器件: 半导体存储器(RAM,ROM,主存)
  • 磁性材料: 磁表面存储器(磁盘,磁带,辅存)
  • 光介质: 光盘存储器(辅存)

存取方式

  • 随机存取: 按地址访问,存取时间与存储单元的位置无关(主存)
  • 顺序存取: 按地址访问,存取时间与存储单元的位置有关(磁盘,磁带)
  • 相联存取: 可以按内容(Content)或标签(Tag)访问存储单元

读写方式

  • 只读存储器(ROM,Read-Only Memory)
  • 随机存取存储器(RAM,Random-Access Memory)

信息的可保存性

  • 永久记忆存储器/非易失性存储器: 断电后仍能保存信息(ROM,辅存)
  • 非永久记忆存储器/易失性存储器: 断电后信息丢失(主存中的RAM)

性能指标

  • 存储器容量: 存储器中所有存储单元的总数目(存储器可容纳的二进制信息量),描述单位通常为 字节
    • 是构成存储器的最小单位,字节是数据存储的基本单位
    • 单元地址是内存单元的唯一标志
    • 量化单位: 通常用 KB, MB, GB, TB 表示(B=8位,1个字节),其中 K=210K=2^{10}, M=220M=2^{20}, G=230G=2^{30}, T=240T=2^{40}
    • 总容量 = 存储单元个数 * 存储单元字长 (bit) 或 总容量 = 存储单元个数 * 存储单元字长 / 8 (Byte)
  • 存储速度
    • 存取时间(Memory Access Time): 启动一次存储器操作到完成该操作所需的全部时间,时间越短,性能越好(单位: ns)
    • 存取周期(Memory Cycle Time): 存储器进行连续两次独立存储器操作所需的最小间隔时间(通常存储周期不小于存取时间)
    • 存储器带宽: 单位时间内从存储器读出的二进制数信息量,一般用 B/S(字节/秒)或 b/S(位/秒)表示
  • 存储器价格: 以每个数据位的价格来衡量
    • 设存储器的容量为S,价格为C,则位价为C/S
    • 包含存储元件以及为该存储器操作服务的外围电路的价格
  • 可靠性: 表示存储器正常工作(正确存取)的性能

层次结构

背景

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

层次结构图

层次结构

  • L0 - L4 在主机内,往下的存储器位于主机外部
  • 存储器层次结构的本质是,每一层存储设备都是较低一层的缓存
  • 缓存和主存之间主要需要解决速度不匹配问题, 主存和辅存之间主要需要解决容量不匹配问题
  • 缓存和主存使用的是实地址(物理地址), 主存和辅存之间使用虚地址(逻辑地址)

性能特性比较

存储器层次 通用寄存器 Cache 主存储器 磁盘存储器 脱机存储器
存储周期 <10ns 10 ~ 60 ns 60 ~ 300ns 10 ~ 30 ms 2 ~ 20 min
存储容量 <512B 8KB ~ 2MB 32MB ~ 1GB 1GB ~ 1TB 5GB ~ 10TB
价格 很高 较高 较低
材料工艺 ECL SRAM DRAM 磁表面 磁、光等