Skip to content

计算机组成原理第三章:存储系统详解


一、存储系统的基本概念

1. 存储系统的层次结构

计算机存储系统采用多级层次结构,以满足速度、容量、成本的平衡需求:

  • 寄存器(CPU 内部):速度最快,容量最小(KB 级),直接参与运算。
  • 高速缓存(Cache):SRAM 实现,容量较小(MB 级),速度接近 CPU。
  • 主存储器(内存):DRAM 实现,容量较大(GB 级),速度较慢。
  • 外存储器(磁盘、SSD):容量最大(TB 级),速度最慢,用于长期存储。
  • 网络存储:分布式存储,通过互联网访问。

2. 存储器的性能指标

  • 存取时间(Access Time):从发出读写命令到数据准备就绪的时间。
  • 存储周期(Cycle Time):两次连续访问的最小间隔时间(含恢复时间)。
  • 带宽(Bandwidth):单位时间传输的数据量(如 GB/s)。
  • 容量(Capacity):存储器能存储的总二进制位数。

二、主存储器的基本组成

1. 主存储器结构

  • 存储体(Memory Bank):由多个存储单元构成,每个单元存放 1 字节(8 位)。
  • 地址译码器(Address Decoder):将地址总线输入的二进制地址转换为对应存储单元的选通信号。
  • 读写控制电路:根据 CPU 的读/写命令控制数据流向。
  • 数据寄存器(MDR):暂存待写入或读出的数据。
  • 地址寄存器(MAR):保存当前访问的地址。

2. 主存储器的工作流程

  1. CPU 将地址送入 MAR。
  2. 地址译码器选通对应存储单元。
  3. 读写控制电路根据命令(读/写)操作数据:
    • 读操作:数据从存储单元传送到 MDR,再通过数据总线送至 CPU。
    • 写操作:数据从 CPU 经数据总线存入 MDR,再写入存储单元。

三、SRAM 与 DRAM

1. SRAM(Static RAM)

  • 结构:基于触发器(Flip-Flop),6 个晶体管构成 1 位存储单元。
  • 特点
    • 无需刷新,存取速度快(1~10ns)。
    • 功耗高,集成度低,成本高。
  • 应用:Cache、寄存器。

2. DRAM(Dynamic RAM)

  • 结构:基于电容,1 个晶体管+1 个电容构成 1 位存储单元。
  • 特点
    • 需定期刷新(每 2~64ms),速度较慢(50~100ns)。
    • 集成度高,成本低,功耗较低。
  • 应用:主存储器。
  • 刷新方式
    • 集中刷新:固定时间停止读写,集中刷新所有行(可能引起“死时间”)。
    • 分散刷新:将刷新操作分散到正常读写周期中。
    • 异步刷新:按需刷新,结合上述两种方式。

3. SRAM 与 DRAM 对比

特性SRAMDRAM
存储单元结构6 晶体管触发器1 晶体管+电容
刷新需求无需刷新需定期刷新
速度快(1~10ns)较慢(50~100ns)
集成度
功耗
成本
应用场景Cache、寄存器主存储器

四、只读存储器(ROM)

1. ROM 的类型

  • MASK ROM:出厂时写入数据,不可修改。
  • PROM(Programmable ROM):用户通过烧写器一次性写入。
  • EPROM(Erasable PROM):紫外线擦除后重写。
  • EEPROM(Electrically EPROM):电信号擦除,支持局部修改。
  • Flash Memory:块擦除型 EEPROM,用于 U 盘、SSD。

2. ROM 的特点

  • 非易失性:断电后数据不丢失。
  • 只读性:写入后数据不可随意修改(需特殊操作)。
  • 应用:固件(BIOS)、嵌入式系统程序存储。

五、双端口 RAM 与多模块存储器

1. 双端口 RAM

  • 结构:具有两套独立的地址线、数据线和控制线。
  • 特点
    • 支持两个设备同时读写不同存储单元。
    • 若访问同一单元,需仲裁逻辑避免冲突。
  • 应用:多处理器系统中的共享内存。

2. 多模块存储器

  • 目标:提高存储器带宽。
  • 实现方式
    • 顺序编址:各模块按地址顺序分布,适合连续访问。
    • 交叉编址:地址低位选择模块,高位选择模块内地址。 示例:4 模块交叉编址
      • 模块号 = 地址 mod 4
      • 模块内地址 = 地址 div 4
      • 可并行访问连续地址,提升吞吐量。

六、主存储器与 CPU 的连接

1. 连接要素

  • 地址总线:传输地址信号(MAR 到存储器)。
  • 数据总线:双向传输数据(MDR 与存储器之间)。
  • 控制总线:传输读/写、片选、就绪等信号。

2. 典型连接设计

  • 位扩展:增加数据位数(如 8 位芯片组成 32 位存储器)。
  • 字扩展:增加存储单元数量(通过译码器选择不同芯片)。
  • 字位同时扩展:结合位扩展和字扩展。

3. 示例:8 位 CPU 连接 16KB 存储器

  • 芯片选择:4 片 4K×8 位芯片。
  • 地址分配
    • 地址线 A0~A11 选择芯片内地址。
    • A12~A13 通过 2-4 译码器选择芯片。
  • 控制信号:读(RD)、写(WR)、片选(CS)。

七、磁盘存储器

1. 磁盘结构

  • 盘片(Platter):表面覆盖磁性材料,双面存储。
  • 磁道(Track):同心圆轨道。
  • 扇区(Sector):磁道的等分区域(通常 512B~4KB)。
  • 柱面(Cylinder):相同半径的多个盘片磁道组合。

2. 磁盘访问过程

  1. 寻道时间(Seek Time):磁头移动到目标磁道(平均 3~15ms)。
  2. 旋转延迟(Rotation Latency):盘片旋转到目标扇区(平均半圈时间)。
  3. 数据传输时间(Transfer Time):读取或写入数据。

3. 性能计算

  • 平均访问时间 = 平均寻道时间 + 平均旋转延迟 + 数据传输时间。
  • 示例: 转速 7200 RPM → 旋转一周时间 = 60s/7200 = 8.33ms,平均旋转延迟 = 4.17ms。

八、固态硬盘(SSD)

1. 基本结构

  • NAND 闪存:非易失性存储单元,分为 SLC、MLC、TLC、QLC(寿命依次降低)。
  • 控制器:管理读写、磨损均衡、垃圾回收。
  • DRAM 缓存:加速映射表访问(部分低端 SSD 省略)。

2. SSD 与 HDD 对比

特性SSDHDD
存储介质NAND 闪存磁性盘片
读写速度快(μs 级)慢(ms 级)
抗震性
功耗较高
寿命有限(PE 次数)理论无限(机械磨损)
价格高(单位容量)

3. SSD 关键技术

  • 磨损均衡(Wear Leveling):分散写入操作,延长寿命。
  • TRIM 命令:通知 SSD 哪些数据块可回收。
  • 垃圾回收(Garbage Collection):合并有效数据块,释放无效块。

九、Cache 基本原理

1. Cache 的作用

  • 解决 CPU 与主存速度不匹配问题,减少平均访问时间。

2. 局部性原理

  • 时间局部性:最近访问的数据可能再次被访问。
  • 空间局部性:访问某个地址后,其邻近地址可能被访问。

3. Cache 结构

  • Cache 行(Cache Line):数据块的基本单位(通常 64B)。
  • 标记(Tag):标识主存数据块地址。
  • 有效位(Valid Bit):指示该行数据是否有效。
  • 脏位(Dirty Bit):标记数据是否被修改(用于写回策略)。

十、Cache 映射方式

1. 直接映射(Direct Mapping)

  • 规则:主存块映射到唯一 Cache 行,行号 = 主存块号 mod Cache 行数。
  • 地址划分[Tag][行号][块内偏移]
  • 优点:实现简单,访问速度快。
  • 缺点:冲突率高(不同主存块竞争同一 Cache 行)。

2. 全相联映射(Fully Associative)

  • 规则:主存块可映射到任意 Cache 行。
  • 地址划分[Tag][块内偏移]
  • 优点:冲突率低。
  • 缺点:查找速度慢(需遍历所有行的 Tag)。

3. 组相联映射(Set Associative)

  • 规则:Cache 分为多个组,主存块映射到特定组内的任意行。
  • 地址划分[Tag][组号][块内偏移]
  • 优点:平衡冲突率和查找速度(常用 2~8 路组相联)。
  • 替换算法:LRU、FIFO 等。

十一、Cache 写策略

1. 写直达(Write Through)

  • 规则:数据同时写入 Cache 和主存。
  • 优点:保证数据一致性。
  • 缺点:写操作速度慢(需等待主存写入)。

2. 写回(Write Back)

  • 规则:数据仅写入 Cache,脏位标记;替换时若脏位为 1,再写回主存。
  • 优点:减少主存访问次数,提升速度。
  • 缺点:数据一致性管理复杂。

3. 写分配(Write Allocation)

  • 规则:写失效时,将主存块加载到 Cache 再修改。
  • 适用场景:配合写回策略。

4. 非写分配(No-Write Allocation)

  • 规则:写失效时,直接写入主存,不加载到 Cache。
  • 适用场景:配合写直达策略。

十二、页式存储器

1. 分页机制

  • 页(Page):逻辑地址空间的固定大小块(如 4KB)。
  • 页框(Frame):物理内存的固定大小块,与页大小相同。
  • 页表(Page Table):记录逻辑页号到物理页框号的映射。

2. 地址转换

  • 逻辑地址 = 页号 + 页内偏移。
  • 物理地址 = 页框号 × 页大小 + 页内偏移。
  • 转换过程
    1. 根据页号查找页表获取页框号。
    2. 组合页框号和偏移得到物理地址。

3. 多级页表

  • 目的:减少页表内存占用(如 x86 使用两级页表)。
  • 示例
    • 一级页表:保存二级页表地址。
    • 二级页表:保存物理页框号。

十三、虚拟存储器

1. 虚拟地址空间

  • 每个进程拥有独立的虚拟地址空间(如 32 位系统为 4GB)。
  • 虚拟地址通过页表映射到物理地址或磁盘交换区。

2. 按需分页(Demand Paging)

  • 原理:仅加载进程当前需要的页到内存,其余页保留在磁盘。
  • 缺页中断(Page Fault):访问未加载的页时触发,由操作系统处理。

3. 页面置换算法

  • 最佳置换(OPT):淘汰未来最长时间不被访问的页(理论最优,不可实现)。
  • 先进先出(FIFO):淘汰最早进入的页(可能产生 Belady 异常)。
  • 最近最少使用(LRU):淘汰最久未被访问的页(近似 OPT,需硬件支持)。
  • 时钟算法(Clock):近似 LRU,通过引用位轮询淘汰页面。

4. 虚拟存储器的优点

  • 内存扩展:支持运行大于物理内存的程序。
  • 进程隔离:每个进程拥有独立地址空间。
  • 共享内存:不同进程可映射到同一物理页(如库代码共享)。

十四、总结图表

存储系统层次结构

寄存器 → Cache → 主存 → 磁盘 → SSD → 网络存储
(速度递减,容量递增)

Cache 映射方式对比

映射方式冲突率查找复杂度硬件成本
直接映射O(1)
组相联映射O(n)
全相联映射O(N)

十五、扩展思考

  • TLB(Translation Lookaside Buffer):加速虚拟地址到物理地址转换的专用缓存。
  • NUMA 架构:非均匀内存访问,多处理器系统中内存分布优化。
  • RAID 技术:磁盘阵列提升数据可靠性和性能。