存储器系统
1. 存储器概述
1.1 存储器分类
按存储介质分类
- 半导体存储器:速度快,容量小,易失性
- 磁表面存储器:速度慢,容量大,非易失性
- 光存储器:速度中等,容量大,非易失性
按存取方式分类
- 随机存取存储器(RAM):任意地址直接访问
- 顺序存取存储器(SAM):按顺序访问
- 直接存取存储器(DAM):先定位再顺序访问
按读写功能分类
- 只读存储器(ROM):只能读取,不能写入
- 随机读写存储器(RAM):可读可写
1.2 存储器性能指标
主要指标
- 存储容量:能存储的二进制位数
- 存取时间:从启动读/写操作到完成的时间
- 存取周期:连续两次存取操作的最小时间间隔
- 存储器带宽:单位时间内传输的数据量
2. 存储器层次结构
2.1 层次结构原理
局部性原理
- 时间局部性:最近访问的数据很可能再次被访问
- 空间局部性:相邻地址的数据很可能被连续访问
层次结构特点
- 容量递减:从外到内容量逐渐减小
- 速度递增:从外到内访问速度逐渐提高
- 成本递增:从外到内单位成本逐渐提高
2.2 典型层次结构
寄存器
- 特点:速度最快,容量最小
- 用途:存储当前操作的数据和地址
高速缓存(Cache)
- L1 Cache:容量小,速度极快
- L2 Cache:容量中等,速度快
- L3 Cache:容量较大,速度较快
主存储器(RAM)
- 特点:容量大,速度中等
- 类型:SRAM、DRAM
辅助存储器
- 特点:容量最大,速度最慢
- 类型:硬盘、SSD、光盘

3. 主存储器
3.1 静态随机存取存储器(SRAM)
基本结构
- 存储单元:6个晶体管组成一个存储位
- 特点:速度快,功耗大,成本高
- 应用:高速缓存、寄存器
工作原理
- 读操作:字线有效,位线输出数据
- 写操作:字线有效,位线输入数据
3.2 动态随机存取存储器(DRAM)
基本结构
- 存储单元:1个晶体管+1个电容
- 特点:速度较慢,功耗小,成本低
- 应用:主存储器
工作原理
- 读操作:字线有效,电容放电到位线
- 写操作:字线有效,位线对电容充电
- 刷新:定期对电容充电,防止数据丢失
3.3 存储器组织
存储体结构
- 存储体:由多个存储单元组成
- 地址译码:将地址转换为行列选择信号
- 读写控制:控制数据的读写操作
地址映射
- 直接映射:每个主存块只能映射到Cache的一个特定位置
- 全相联映射:每个主存块可以映射到Cache的任意位置
- 组相联映射:每个主存块可以映射到Cache的一个特定组内的任意位置

4. 高速缓存(Cache)
4.1 Cache基本概念
工作原理
- 命中:CPU要访问的数据在Cache中
- 未命中:CPU要访问的数据不在Cache中
- 命中率:Cache命中的次数占总访问次数的比例
性能指标
- 命中率:影响系统性能的关键因素
- 平均访问时间:T = H×Tc + (1-H)×Tm
- H:命中率
- Tc:Cache访问时间
- Tm:主存访问时间
4.2 Cache映射方式
直接映射
- 特点:简单,成本低,但冲突率高
- 映射关系:Cache行号 = 主存块号 mod Cache行数
全相联映射
- 特点:灵活,冲突率低,但成本高
- 映射关系:任意主存块可映射到任意Cache行
组相联映射
- 特点:折中方案,平衡了成本和性能
- 映射关系:主存块映射到特定组内的任意行
4.3 Cache替换算法
先进先出(FIFO)
- 原理:替换最早进入Cache的块
- 特点:简单,但可能替换掉经常使用的块
最近最少使用(LRU)
- 原理:替换最近最少使用的块
- 特点:效果好,但实现复杂
随机替换
- 原理:随机选择一个块进行替换
- 特点:简单,但效果不确定

5. 虚拟存储器
5.1 虚拟存储概念
基本原理
- 虚拟地址:程序使用的地址
- 物理地址:实际内存中的地址
- 地址转换:将虚拟地址转换为物理地址
主要优点
- 扩大存储空间:程序可以使用比物理内存更大的地址空间
- 内存保护:不同程序的内存空间相互隔离
- 内存共享:多个程序可以共享同一段内存
5.2 分页管理
基本概念
- 页:虚拟地址空间的固定大小块
- 页框:物理内存的固定大小块
- 页表:记录虚拟页与物理页框的映射关系
地址转换过程
- 虚拟地址分解:页号+页内偏移
- 页表查找:根据页号查找页表
- 物理地址生成:页框号+页内偏移
5.3 分段管理
基本概念
- 段:逻辑上相关的数据集合
- 段表:记录段与物理内存的映射关系
- 段描述符:包含段的基址、长度、属性等信息
地址转换过程
- 段选择:从段选择符中获取段号
- 段表查找:根据段号查找段表
- 地址检查:检查偏移量是否超出段长度
- 物理地址生成:段基址+段内偏移

6. 总结
存储器系统是计算机系统的重要组成部分,涉及存储器的分类、层次结构、主存储器、高速缓存、虚拟存储器等多个方面。理解存储器系统的工作原理对于优化程序性能和系统设计具有重要意义。

