logo
导航

存储器层次结构练习题

存储器层次结构练习题

练习 1

简述存储器的层次结构及各层特点。

参考答案

存储器的层次结构包括:

  1. 寄存器

    • 速度最快,容量最小(几十个)
    • 与 CPU 集成,成本最高
    • 存储当前操作的数据
  2. Cache

    • 速度很快,容量较小(KB-MB)
    • 存储近期访问的数据
    • 利用局部性原理提高命中率
  3. 主存

    • 速度较快,容量较大(GB)
    • 存储程序和数据
    • 与 CPU 直接交换数据
  4. 辅存

    • 速度较慢,容量最大(TB)
    • 永久存储数据
    • 成本最低

各层通过层次化设计,实现速度、容量、成本的平衡,利用局部性原理提高整体性能。

练习 2

SRAM 和 DRAM 有何区别?

参考答案

SRAM 和 DRAM 的主要区别:

  1. 工作原理

    • SRAM:基于触发器电路,不需要刷新
    • DRAM:基于电容存储,需要定期刷新
  2. 速度

    • SRAM:速度快,访问时间短
    • DRAM:速度较慢,需要刷新时间
  3. 功耗

    • SRAM:功耗低,静态功耗小
    • DRAM:功耗较高,动态功耗大
  4. 成本

    • SRAM:成本高,电路复杂
    • DRAM:成本低,电路简单
  5. 容量

    • SRAM:容量小,集成度低
    • DRAM:容量大,集成度高
  6. 应用

    • SRAM:用作 Cache、寄存器
    • DRAM:用作主存储器

练习 3

Cache 的三种映射方式分别是什么?

参考答案

Cache 的三种映射方式:

  1. 直接映射

    • 主存块映射到 Cache 的固定位置
    • 映射关系:Cache 行号 = 主存块号 mod Cache 行数
    • 优点:实现简单,访问速度快
    • 缺点:冲突率高,命中率低
  2. 全相联映射

    • 主存块可以映射到 Cache 的任意位置
    • 需要比较所有 Cache 行的标记
    • 优点:冲突率低,命中率高
    • 缺点:实现复杂,访问速度慢
  3. 组相联映射

    • 主存块映射到固定组内的任意行
    • 结合直接映射和全相联的优点
    • 优点:冲突率适中,命中率较高
    • 缺点:实现复杂度适中

练习 4

虚拟存储器的基本原理是什么?常见的页面置换算法有哪些?

参考答案

虚拟存储器的基本原理

  1. 基本概念

    • 将外存空间扩展为主存空间
    • 程序可以访问比物理内存更大的地址空间
    • 实现内存管理的自动化
  2. 工作原理

    • 程序使用虚拟地址
    • 通过地址转换得到物理地址
    • 按需调入页面到内存
  3. 优势

    • 扩大地址空间
    • 提高内存利用率
    • 简化程序开发

常见的页面置换算法

  1. OPT(最优算法)

    • 选择未来最长时间不使用的页面
    • 理论最优,实际无法实现
  2. FIFO(先进先出)

    • 选择最先进入内存的页面
    • 实现简单,效果一般
  3. LRU(最近最少使用)

    • 选择最久未被访问的页面
    • 效果较好,实现复杂
  4. CLOCK 算法

    • 结合 LRU 和 FIFO 的优点
    • 使用引用位,循环扫描
    • 实现相对简单,效果较好

练习 5

TLB 的作用是什么?

参考答案

TLB(Translation Lookaside Buffer,快表)的作用:

  1. 加速地址转换

    • 缓存常用的地址转换结果
    • 减少页表查找次数
    • 提高地址转换速度
  2. 减少内存访问

    • 避免每次地址转换都访问页表
    • 减少内存访问延迟
    • 提高系统整体性能
  3. 优化访问模式

    • 利用程序的空间局部性
    • 缓存近期访问的地址转换
    • 提高 TLB 命中率
  4. 支持多级缓存

    • 作为地址转换的缓存
    • 与数据 Cache 配合工作
    • 形成完整的内存层次结构
  5. 降低功耗

    • 减少页表访问次数
    • 降低内存访问功耗
    • 提高能效比

练习 6

页式虚拟存储器和段式虚拟存储器有何区别?

参考答案

页式虚拟存储器和段式虚拟存储器的区别:

  1. 基本单位

    • 页式:页面,固定大小
    • 段式:段,可变大小
  2. 地址结构

    • 页式:页号 + 页内偏移
    • 段式:段号 + 段内偏移
  3. 管理方式

    • 页式:按页面管理,支持页面置换
    • 段式:按段管理,支持段交换
  4. 地址转换

    • 页式:页表查找,计算物理地址
    • 段式:段表查找,检查段内偏移
  5. 内存分配

    • 页式:按页面分配,可能产生内碎片
    • 段式:按段分配,可能产生外碎片
  6. 保护机制

    • 页式:页面级保护
    • 段式:段级保护,更灵活
  7. 适用场景

    • 页式:通用系统,支持多任务
    • 段式:专用系统,支持模块化程序

练习 7

计算题:假设有一个 32KB 的 Cache,采用直接映射方式,每行 64 字节,计算 Cache 的行数和地址结构。

参考答案

计算过程

  1. Cache 行数

    • Cache 总容量 = 32KB = 32 × 1024 = 32768 字节
    • 每行大小 = 64 字节
    • Cache 行数 = 32768 ÷ 64 = 512 行
  2. 地址结构

    • 虚拟地址位数:假设 32 位
    • 块内偏移位数:log₂64 = 6 位
    • 行号位数:log₂512 = 9 位
    • 标记位数:32 - 6 - 9 = 17 位
  3. 地址结构

    [标记位(17位)] [行号(9位)] [块内偏移(6位)]
    
  4. 映射关系

    • 主存块号 = 虚拟地址 ÷ 64
    • Cache 行号 = 主存块号 mod 512

练习 8

分析题:分析 Cache 的写策略对系统性能的影响。

参考答案

Cache 写策略对系统性能的影响:

  1. 写直达(Write-Through)

    • 优点:数据一致性好,主存始终是最新数据
    • 缺点:写操作速度慢,增加总线负载
    • 性能影响:降低写操作性能,但保证数据一致性
  2. 写回(Write-Back)

    • 优点:写操作速度快,减少总线负载
    • 缺点:数据一致性复杂,需要脏位管理
    • 性能影响:提高写操作性能,但增加系统复杂性
  3. 写分配(Write-Allocate)

    • 优点:提高后续访问命中率
    • 缺点:增加写未命中的开销
    • 性能影响:适合空间局部性好的程序
  4. 写不分配(Write-No-Allocate)

    • 优点:减少 Cache 污染
    • 缺点:可能降低命中率
    • 性能影响:适合随机写访问的程序
  5. 性能优化建议

    • 根据程序特点选择合适的写策略
    • 结合多级 Cache 优化整体性能
    • 考虑硬件成本和性能需求的平衡