3.1 存储器层次结构

为解决容量、速度、价格之间的矛盾,现代计算机采用三级存储体系:

层次位置速度容量位价格作用
寄存器CPU 内最快(ns 级)极小(百字节)最贵存放当前使用的数据
CacheCPU 与主存间快(ns 级)小(KB~MB)缓存主存中活跃的数据
主存主板中(10~100ns)大(GB)存放运行中的程序
辅存外存慢(ms 级)极大(TB)便宜存放待命程序
核心思想:上一层存放下一层中更活跃的数据,基于局部性原理——程序访问具有时间局部性(刚访问的会再访问)和空间局部性(邻近的会被访问)。

3.2 主存储器与编址

主存编址
主存由若干存储单元构成,每个单元有一个唯一地址。编址单位可以是字节(按字节编址)或字(按字编址)。

主存地址 = MAR 中的二进制码。若 MAR 为 n 位,则最大寻址空间为 2ⁿ 个编址单元。

编址计算:设存储器容量为 C 字节,按字节编址,则地址位数 n = ⌈log₂ C⌉。例如 1KB 主存需 10 位地址。

SRAM vs DRAM:SRAM(静态随机存取存储器)用触发器存储,无需刷新,速度快但集成度低,用于 Cache;DRAM(动态随机存取)靠电容存储,需定期刷新,集成度高速度慢,用于主存。刷新方式有集中刷新、分散刷新、异步刷新。

3.2.1 多模块存储器

多模块存储器
为提高存储器带宽,将存储芯片组织为多个模块并行工作。分为单体多字存储器和多体并行存储器两种结构。

单体多字存储器:一个存储体中每个存储单元存放多个字,一次访存可读出多个字,但要求访问的多个字为连续地址(同一存储单元内),灵活性较差。

多体并行存储器:由多个独立存储模块组成,每个模块可独立编址和读写,各模块可并行工作,大幅提升带宽。按编址方式不同分为以下两种:

编址方式编址规则特点适用场景
高位交叉编址
(顺序方式)
地址高位选模块号,低位为体内地址
例如:模块号 = 地址 / 模块大小
连续地址在同一模块内,方便容量扩展;但各模块无法同时响应连续地址访问适合容量扩展
低位交叉编址
(交错方式)
地址低位选模块号,高位为体内地址
例如:模块号 = 地址 mod 模块数
连续地址分布在不同模块中,可实现流水线方式并行存取适合带宽提升
流水线存取时间
对于 m 个模块的低位交叉存储器,采用流水线方式连续读取 n 个字的总时间:T = (m − 1)τ + nτ,其中 τ 为单个模块的存储周期。第一个字需 mτ,之后每个字只需 τ 即可读出。
高位 vs 低位:高位交叉中,相邻地址在同一模块,模块内地址连续 → 适合当"大容量存储器"用;低位交叉中,相邻地址在不同模块,可通过流水线实现"每个周期出一个字"的高带宽 → 适合当"高速缓存"用。408 常考低位交叉的流水线时间计算。

3.3 Cache 工作原理

Cache
高速缓冲存储器,介于 CPU 与主存之间,用于存放主存中近期将使用的程序和数据,解决 CPU 与主存速度不匹配问题。

Cache 与主存以块(Block)为单位交换数据。主存块调入 Cache 后存放于 Cache 行(也称行/槽 Line/Slot)。Cache 行中有:

命中率
CPU 欲访问的数据在 Cache 中的比率。设命中次数 N₁,缺失次数 N₂,则命中率 h = N₁ / (N₁+N₂),平均访问时间 tₐ = h·tₐ_cache + (1−h)·tₐ_main。

3.4 主存与 Cache 的映射方式

主存块如何装入 Cache 行,由映射方式决定,共三种:

映射方式映射规则优点缺点
直接映射主存块 j → Cache 行 (j mod C),C 为 Cache 行数实现简单、速度快冲突多、命中率低、空间利用率差
全相联映射主存块可装入任意 Cache 行命中率高、灵活比较器复杂、成本高
组相联映射主存块 j → Cache 组 (j mod Q),组内任意行折中前两者实现复杂度中等
地址结构
  • 直接映射:主存地址 = Tag + 行号 + 块内地址
  • 全相联映射:主存地址 = Tag + 块内地址(无行号)
  • 组相联映射:主存地址 = Tag + 组号 + 块内地址

3.5 替换算法

Cache 满或对应行被占用时,需选择替换哪一行(全相联与组相联需要):

408 重点:LRU 是最常考的替换算法。对 2 路组相联,每行只需 1 位"使用位"即可实现 LRU。

3.6 Cache 写策略

3.7 外部存储器 [22新增]

外部存储器
位于主机外部,用于长期保存大量数据和程序。主要包括磁盘存储器和固态硬盘(SSD)。外存属于 I/O 设备,CPU 需通过 I/O 接口访问。

磁盘存储器

磁盘地址格式:驱动器号 + 柱面(磁道)号 + 盘面号 + 扇区号。寻址过程:先定位柱面(寻道),再选盘面(磁头),最后定位扇区。

磁盘访问时间
T = 寻道时间 + 旋转延迟 + 传输时间。寻道时间将磁头移动到目标磁道(ms 级,最慢);旋转延迟等待目标扇区转到磁头下(平均为旋转半圈时间);传输时间取决于转速和扇区数。

磁盘性能指标:转速(RPM,如 7200 RPM)、平均存取时间数据传输率存储密度(道密度 × 位密度)。

SSD 固态硬盘

SSD(Solid State Drive)基于闪存(Flash Memory)技术,无机械运动部件,具有以下特点:

磁盘 vs SSD 对比

对比项磁盘(HDD)固态硬盘(SSD)
随机访问速度慢(ms 级,受机械运动限制)快(μs 级,纯电子)
顺序读写速度中等(100~200 MB/s)快(500~7000 MB/s)
功耗较高(需驱动电机)
价格(单位容量)较高
抗震性差(机械结构易损)好(无机械部件)
寿命长(无磨损上限)有限(闪存擦写次数有限,需磨损均衡)
噪音有(盘片旋转噪音)

3.8 虚拟存储器

虚拟存储器
通过将辅存的一部分当作主存使用,使程序员可用比实际主存大得多的地址空间。主存—辅存层次解决了主存容量不足问题。

页式虚拟存储器

虚拟地址空间和主存都划分为固定大小的(通常 4KB)。虚地址 = 虚页号 + 页内地址;实地址 = 实页号 + 页内地址。通过页表完成虚实转换,页表项含实页号、有效位、访问位、修改位(脏位)等。

TLB(快表)

页表存在主存中,每次访存都要查页表会慢一倍。TLB(Translation Lookaside Buffer)是页表项的 Cache,也称快表。地址转换时先查 TLB,命中则直接得实页号;不命中再查页表(可能引发缺页中断)。

访存过程:虚地址 → 查 TLB → (命中)得实页号 / (缺失)查页表 → 实地址 → 查 Cache → (命中)返回数据 / (缺失)访问主存。

段式与段页式