存储器层次结构练习题
存储器层次结构练习题
练习 1
简述存储器的层次结构及各层特点。
参考答案
存储器的层次结构包括:
-
寄存器:
- 速度最快,容量最小(几十个)
- 与 CPU 集成,成本最高
- 存储当前操作的数据
-
Cache:
- 速度很快,容量较小(KB-MB)
- 存储近期访问的数据
- 利用局部性原理提高命中率
-
主存:
- 速度较快,容量较大(GB)
- 存储程序和数据
- 与 CPU 直接交换数据
-
辅存:
- 速度较慢,容量最大(TB)
- 永久存储数据
- 成本最低
各层通过层次化设计,实现速度、容量、成本的平衡,利用局部性原理提高整体性能。
练习 2
SRAM 和 DRAM 有何区别?
参考答案
SRAM 和 DRAM 的主要区别:
-
工作原理:
- SRAM:基于触发器电路,不需要刷新
- DRAM:基于电容存储,需要定期刷新
-
速度:
- SRAM:速度快,访问时间短
- DRAM:速度较慢,需要刷新时间
-
功耗:
- SRAM:功耗低,静态功耗小
- DRAM:功耗较高,动态功耗大
-
成本:
- SRAM:成本高,电路复杂
- DRAM:成本低,电路简单
-
容量:
- SRAM:容量小,集成度低
- DRAM:容量大,集成度高
-
应用:
- SRAM:用作 Cache、寄存器
- DRAM:用作主存储器
练习 3
Cache 的三种映射方式分别是什么?
参考答案
Cache 的三种映射方式:
-
直接映射:
- 主存块映射到 Cache 的固定位置
- 映射关系:Cache 行号 = 主存块号 mod Cache 行数
- 优点:实现简单,访问速度快
- 缺点:冲突率高,命中率低
-
全相联映射:
- 主存块可以映射到 Cache 的任意位置
- 需要比较所有 Cache 行的标记
- 优点:冲突率低,命中率高
- 缺点:实现复杂,访问速度慢
-
组相联映射:
- 主存块映射到固定组内的任意行
- 结合直接映射和全相联的优点
- 优点:冲突率适中,命中率较高
- 缺点:实现复杂度适中
练习 4
虚拟存储器的基本原理是什么?常见的页面置换算法有哪些?
参考答案
虚拟存储器的基本原理:
-
基本概念:
- 将外存空间扩展为主存空间
- 程序可以访问比物理内存更大的地址空间
- 实现内存管理的自动化
-
工作原理:
- 程序使用虚拟地址
- 通过地址转换得到物理地址
- 按需调入页面到内存
-
优势:
- 扩大地址空间
- 提高内存利用率
- 简化程序开发
常见的页面置换算法:
-
OPT(最优算法):
- 选择未来最长时间不使用的页面
- 理论最优,实际无法实现
-
FIFO(先进先出):
- 选择最先进入内存的页面
- 实现简单,效果一般
-
LRU(最近最少使用):
- 选择最久未被访问的页面
- 效果较好,实现复杂
-
CLOCK 算法:
- 结合 LRU 和 FIFO 的优点
- 使用引用位,循环扫描
- 实现相对简单,效果较好
练习 5
TLB 的作用是什么?
参考答案
TLB(Translation Lookaside Buffer,快表)的作用:
-
加速地址转换:
- 缓存常用的地址转换结果
- 减少页表查找次数
- 提高地址转换速度
-
减少内存访问:
- 避免每次地址转换都访问页表
- 减少内存访问延迟
- 提高系统整体性能
-
优化访问模式:
- 利用程序的空间局部性
- 缓存近期访问的地址转换
- 提高 TLB 命中率
-
支持多级缓存:
- 作为地址转换的缓存
- 与数据 Cache 配合工作
- 形成完整的内存层次结构
-
降低功耗:
- 减少页表访问次数
- 降低内存访问功耗
- 提高能效比
练习 6
页式虚拟存储器和段式虚拟存储器有何区别?
参考答案
页式虚拟存储器和段式虚拟存储器的区别:
-
基本单位:
- 页式:页面,固定大小
- 段式:段,可变大小
-
地址结构:
- 页式:页号 + 页内偏移
- 段式:段号 + 段内偏移
-
管理方式:
- 页式:按页面管理,支持页面置换
- 段式:按段管理,支持段交换
-
地址转换:
- 页式:页表查找,计算物理地址
- 段式:段表查找,检查段内偏移
-
内存分配:
- 页式:按页面分配,可能产生内碎片
- 段式:按段分配,可能产生外碎片
-
保护机制:
- 页式:页面级保护
- 段式:段级保护,更灵活
-
适用场景:
- 页式:通用系统,支持多任务
- 段式:专用系统,支持模块化程序
练习 7
计算题:假设有一个 32KB 的 Cache,采用直接映射方式,每行 64 字节,计算 Cache 的行数和地址结构。
参考答案
计算过程:
-
Cache 行数:
- Cache 总容量 = 32KB = 32 × 1024 = 32768 字节
- 每行大小 = 64 字节
- Cache 行数 = 32768 ÷ 64 = 512 行
-
地址结构:
- 虚拟地址位数:假设 32 位
- 块内偏移位数:log₂64 = 6 位
- 行号位数:log₂512 = 9 位
- 标记位数:32 - 6 - 9 = 17 位
-
地址结构:
[标记位(17位)] [行号(9位)] [块内偏移(6位)]
-
映射关系:
- 主存块号 = 虚拟地址 ÷ 64
- Cache 行号 = 主存块号 mod 512
练习 8
分析题:分析 Cache 的写策略对系统性能的影响。
参考答案
Cache 写策略对系统性能的影响:
-
写直达(Write-Through):
- 优点:数据一致性好,主存始终是最新数据
- 缺点:写操作速度慢,增加总线负载
- 性能影响:降低写操作性能,但保证数据一致性
-
写回(Write-Back):
- 优点:写操作速度快,减少总线负载
- 缺点:数据一致性复杂,需要脏位管理
- 性能影响:提高写操作性能,但增加系统复杂性
-
写分配(Write-Allocate):
- 优点:提高后续访问命中率
- 缺点:增加写未命中的开销
- 性能影响:适合空间局部性好的程序
-
写不分配(Write-No-Allocate):
- 优点:减少 Cache 污染
- 缺点:可能降低命中率
- 性能影响:适合随机写访问的程序
-
性能优化建议:
- 根据程序特点选择合适的写策略
- 结合多级 Cache 优化整体性能
- 考虑硬件成本和性能需求的平衡