计算机组成原理第三章:存储系统详解
一、存储系统的基本概念
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. 主存储器的工作流程
- CPU 将地址送入 MAR。
- 地址译码器选通对应存储单元。
- 读写控制电路根据命令(读/写)操作数据:
- 读操作:数据从存储单元传送到 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 对比
特性 | SRAM | DRAM |
---|---|---|
存储单元结构 | 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. 磁盘访问过程
- 寻道时间(Seek Time):磁头移动到目标磁道(平均 3~15ms)。
- 旋转延迟(Rotation Latency):盘片旋转到目标扇区(平均半圈时间)。
- 数据传输时间(Transfer Time):读取或写入数据。
3. 性能计算
- 平均访问时间 = 平均寻道时间 + 平均旋转延迟 + 数据传输时间。
- 示例: 转速 7200 RPM → 旋转一周时间 = 60s/7200 = 8.33ms,平均旋转延迟 = 4.17ms。
八、固态硬盘(SSD)
1. 基本结构
- NAND 闪存:非易失性存储单元,分为 SLC、MLC、TLC、QLC(寿命依次降低)。
- 控制器:管理读写、磨损均衡、垃圾回收。
- DRAM 缓存:加速映射表访问(部分低端 SSD 省略)。
2. SSD 与 HDD 对比
特性 | SSD | HDD |
---|---|---|
存储介质 | 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. 地址转换
- 逻辑地址 = 页号 + 页内偏移。
- 物理地址 = 页框号 × 页大小 + 页内偏移。
- 转换过程:
- 根据页号查找页表获取页框号。
- 组合页框号和偏移得到物理地址。
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 技术:磁盘阵列提升数据可靠性和性能。