🗄️ 计算机存储系统(考研复试终极版)
🧠 一、存储器层次结构
1.1 多级存储系统
寄存器 → Cache → 主存 → 辅存
↑ 速度↑ 容量↓ 成本↑ ↓
✅ 步骤分解:
- 寄存器:CPU内部,速度最快但容量最小
- Cache:SRAM实现,解决CPU与主存速度差
- 主存:DRAM实现,存放运行中的程序和数据
- 辅存:磁盘/U盘,长期存储
▸ 快递仓库:常用包裹放前台(Cache),不常用放仓库(辅存)
📊 性能对比:
| 类型 |
速度(ns) |
容量 |
成本/GB |
| 寄存器 |
0.1-1 |
<1KB |
极高 |
| Cache |
1-10 |
1-8MB |
高 |
| 主存 |
50-100 |
8-64GB |
中 |
| 辅存 |
5-10ms |
1-10TB |
低 |
❗ 误区:
🔍 二、主存工作原理
2.1 DRAM刷新三方式
集中刷新 → 死时间集中刷新
分散刷新 → 每周期刷新一行
异步刷新 → 间隔固定时间刷新
✅ 步骤分解:
- 集中刷新:2ms内集中处理,产生"死区"
▸ 商场闭店大扫除
- 分散刷新:每个读写周期后刷新一行
▸ 边营业边打扫
- 异步刷新:折中方案,间隔刷新
❗ 注意:刷新操作对CPU透明,不影响程序执行
📝 实例:
4MB DRAM,8192行 → 异步刷新间隔=2ms/8192≈244ns
🚀 三、Cache映射方式
3.1 三种映射对比
直接映射 → 固定位置存放
全相联 → 任意位置存放
组相联 → 组内自由存放
✅ 步骤分解:
- 直接映射:主存块号%Cache总块数
▸ 快递柜:每个包裹固定格子
- 全相联:主存块可存任意Cache行
▸ 超市寄存:随便选空柜
- 组相联:分组后组内全相联
❗ 误区:认为组数越多性能越好(实际4-8组最佳)
📊 命中率对比:
| 映射方式 |
命中率 |
实现复杂度 |
| 直接 |
低 |
简单 |
| 全相联 |
高 |
复杂 |
| 组相联 |
中高 |
中等 |
🔄 四、虚拟存储器
4.1 地址转换流程
逻辑地址 → TLB查询 → 页表查询 → 物理地址
↑______命中______↓ ↑__缺页中断__↓
✅ 步骤分解:
- TLB查找:快表优先查询
- 页表查询:未命中则查内存页表
- 缺页处理:触发中断调入页面
▸ 图书馆找书:先查索引卡(TLB),再查总目录(页表)
📝 实例:
32位系统,页大小4KB → 页内偏移12位,页号20位
❗ 注意:
- 虚拟地址位数≠物理地址位数
- TLB未命中时需两次访存(查页表+取数据)
📦 五、存储扩展技术
5.1 三种扩展方式
位扩展 → 增加数据位数
字扩展 → 增加存储单元数
字位扩展 → 同时扩展
✅ 步骤分解:
- 位扩展:多片并联,增加字长
▸ 拼积木:多块拼成更宽结构
- 字扩展:片选信号控制多片
▸ 书架扩容:增加书架数量
- 字位扩展:行列同时扩展
❗ 关键:地址线/数据线连接方式不同
📊 连接方式:
| 扩展类型 |
地址线 |
数据线 |
片选线 |
| 位扩展 |
并联 |
串联 |
并联 |
| 字扩展 |
部分译码 |
并联 |
独立控制 |
🔧 六、Cache写策略
6.1 写回法 vs 全写法
写回法 → 修改后标记脏位,替换时写回
全写法 → 同时写入Cache和主存
✅ 步骤分解:
- 写回法:减少写主存次数,需维护脏位
▸ 草稿纸:改完先不交,最后统一整理
- 全写法:保证数据一致性,增加带宽压力
❗ 注意:通常搭配非写分配法使用
📝 应用场景:
- 写回法:多核CPU私有Cache
- 全写法:显卡显存等需要实时同步场景
核心概念总结自
复试重点:存储器层次、Cache映射、虚拟存储、DRAM刷新