← 返回学习笔记

Lecture 7:知识 - 存储器的分类、层次结构与单位

408 学习笔记:Lecture 7:知识 - 存储器的分类、层次结构与单位。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。

本页目录

描述:存储系统用多级层次协调速度、容量、价格三者的矛盾。关键是分清“CPU 能否直接访问”“数据经哪一层流动”以及存取时间、存取周期、带宽三种速度指标。

3.1 存储器分类

3.1.1 按作用分类

类型 位置与用途 CPU 直接访问 典型特点
寄存器 CPU 内保存当前操作数、地址和状态 由指令显式或隐式使用 最快、容量最小、位价最高
主存(内存) 保存运行期间所需程序和数据 可以,按地址随机访问 容量较小、速度较快、位价较高
Cache 位于 CPU 与主存之间,保存近期常用指令和数据 可以 速度可匹配 CPU、容量小、价格高,现代常集成于 CPU 内
辅存(外存) 保存暂不用或永久保存的信息 不可以,必须调入主存 容量大、速度慢、单位成本低
  • 主存可以与 CPU、Cache 和辅存交换信息;Cache、主存均可和 CPU 直接交换信息;辅存通常经主存再被 CPU 使用。
  • “CPU 直接访问”指 CPU 可通过相应地址/总线访问,不等同于“程序员直接编程访问”;虚拟内存与 Cache 的管理细节常对程序员透明。

3.1.2 按介质与保存性分类

分类维度 类型与示例
存储介质 磁表面存储器(磁盘、磁带)、磁芯存储器、半导体存储器(MOS、双极型)、光存储器(光盘)
信息保存性 易失性:断电丢失,如 RAM;非易失性:断电仍保持,如 ROM、磁表面和光存储器

3.2 容量、速度与基本单位

3.2.1 存储组织

定义:#存储元、存储单元、存储体
  • 存储元:保存一个二进制位的物理器件,是最基本构件。
  • 存储单元:具有同一地址的多个存储元的集合;一次按该地址读写。
  • 存储体:若干存储单元的集合。

关系为:存储元 -> 存储单元 -> 存储体。一个单元保存的位数是字长,单元总数(存储字数)刻画地址空间大小。

$$\text{存储容量}=\text{存储字数}\times\text{字长}$$

  • $1\text{ B}=8\text{ b}$;题中若写“$64K\times32$ 位”,应先明确是 $64K$ 个单元、每单元 32 位,再换算为字节。
  • 单位成本常用“每位价格”衡量:$\text{每位价格}=\text{总成本}/\text{总容量}$。
  • 集成度表示单芯片可容纳的元件数目(亦与最小线宽相关);集成度越高,单片能容纳的元件越多。

3.2.2 速度指标

指标 含义 关系
存取时间 $T_a$ 从发出一次读/写请求到操作完成经历的时间 分读出时间与写入时间
存取周期 $T_m$ 连续两次独立读/写操作间的最小时间间隔 通常 $T_m>T_a$
主存带宽 $B_m$ 单位时间主存可传输的最大信息量 单位可为字/s、B/s 或 bit/s

$$\text{数据传输率}=\frac{\text{一次传送的数据宽度}}{\text{存取周期}}$$

  • 存取操作完成后通常还需恢复内部状态,因此存取周期一般大于存取时间;破坏性读出存储器的恢复时间较长,差异尤其明显。
  • 计算带宽时先统一数据宽度与时间单位,区分“每次访问传几位”与“一个存储单元有几位”。
  • 上式对应一次访问只完成一次固定宽度传送的基本模型;采用突发传送、多体交叉或流水化接口时,应按稳态传送间隔和每拍数据量计算,不能机械地只除以单体存取周期。

3.3 多级存储体系

3.3.1 基本思想与数据流

多级层次的基本思想是:上一层作为下一层的高速缓存。CPU 请求数据时,通常按如下顺序查找:

CPU -> Cache -> 主存 -> 辅存(磁盘)

  • Cache 未命中则访问主存;主存也没有时再从磁盘调入主存,随后数据再进入 Cache 供 CPU 使用。
  • 层次越靠近 CPU,速度越高、容量越小、每位价格越高;越远则相反。

3.3.2 两个核心层次

层次 对 CPU 的效果 解决的问题 管理方式
Cache–主存 命中率足够高时,平均速度接近 Cache,容量/位价接近主存 CPU 与主存速度不匹配 硬件自动完成,对程序员透明
主存–辅存 缺页率足够低时,常规访问速度接近主存,容量/价格接近辅存 主存容量有限 虚拟存储技术提供远大于主存的可编程地址空间
  • Cache 利用程序的局部性,让经常访问的块留在靠近 CPU 的高速层。
  • 主存–辅存层形成虚拟存储器:程序使用虚拟地址空间,实际内容按需在主存与辅存之间调入调出。
  • 多级体系并非让单一存储器同时“又快又大又便宜”,而是以层次分工取得整体近似效果。

题型:#容量与带宽计算

第一部分:计算顺序

  • 先确认地址数/存储字数是否以 $K=2^{10}$、$M=2^{20}$ 给出;再将字长从 bit 换成 B,最后得到总容量。
  • 若题目给 MAR 位数,单元数为 $2^{\text{MAR 位数}}$;若给 MDR 位数,通常对应每个单元的字长。两者相乘才是完整容量。
  • 带宽题先找“一次独立访问传送多少位”和“一个存取周期多长”,按数据宽度除以周期;读写方向不会改变以最大传输量衡量的主存带宽定义。

第二部分:易错点

  • “存取时间 50 ns”不能直接推出每 50 ns 发起一次访问;若存取周期为 80 ns,连续独立访问仍以 80 ns 为间隔。
  • Cache 容量小、价格高但不等于“替代主存”;主存保存当前工作集,辅存保存更大且持久的数据,三者协作才能同时获得速度、容量与较低成本。
  • 容量、速度和单位成本呈明显制约关系:越靠近 CPU,通常访问越快但单位位价格越高、可提供容量越小;这正是分层设计而非只扩大高速存储器的根本原因。
  • 考题若问“哪一层最接近 CPU”,优先区分寄存器、Cache、主存、辅存的层次位置,不能把主存与 Cache 混为同层。

相关知识

3.4 本节复盘

  • 主存、Cache 可被 CPU 直接访问;辅存数据必须先调入主存。Cache 位于 CPU 与主存之间,现代常集成在 CPU 内。
  • 容量是存储字数乘字长;存取时间是一次操作耗时,存取周期是两次访问的最小间隔,带宽是单位时间传送量。
  • 一般有 $T_m>T_a$,因为操作完成后还需恢复;带宽计算要统一字、字节、位与时间单位。
  • Cache–主存层主要补速度,主存–辅存层主要扩容量;二者共同平衡速度、容量和成本。