计算机考研 408 机组 Cache缓存 计算题例题及解析

常用概念

映射方式

假设 cache 有 M 个 cache 块 ,对于块号为 k (主存号 / 块大小) 的 主存块

  • 直接映射 :被映射到块号 k % Mcache 块
  • 全相连映射 :可能被映射到任意一个 cache 块
  • 组相连映射 :对于 m 路组相连,被映射到组号为 k % (M / m)cache 组 中的任意一个 cache 块

cache 写策略

如果某次地址查询命中 cache,可以使用如下策略:

  • 直写法-写主存 (Write Through):
    • 每次写操作都会同时更新缓存和主存。
    • 这种写策略是 同步的 ,每次更新 缓存 时要同步地更新 主存
  • 回写法-写cache (Write Back):
    • 当数据被修改时,它首先被缓存在 cache 中,只有当 cache 块被替换时才写入对应的主存块
    • 这种写策略是异步的,并不是写入 cache 后立马就要写入主存,可以多次写入 cache 后在另一个时刻再将cache 块写入主存。

如果 没有命中 cache,有如下策略:

  • 写分配法-写cache (Write Allocate):
    • 物理地址对应主存块被 加载 到 cache 块中(先执行一次对应主存块的读操作),然后更新 cache 块
  • 非写分配法-写主存 (Not Write Allocate):
    • 不加载 主存块至 cache 中,直接更新主存块,只有当执行读操作时才将主存块加载进入 cache 块

cache 地址结构

cache 存储结构(数据)

  • 有效位 (valid):
    • cache 行 是否存储有缓存数据,位数为 1 位。
  • 标记 (tag):
    • 根据物理地址中的 tag 字段(通常为高t位)与该字段匹配,以判断是否命中。
    • 直接映射位数:t = m(log2主存地址数) - c(log2cache行数)
    • 全相连映射位数:t = m(log2主存地址数)
    • 组相连映射位数:t = m(log2主存地址数) - q(log2cache组数)
  • 脏位 (dirty)- 非必须
    • 标记该 cache 是否修改过,与 写策略 相关。
      • 如果采用 直写法,则无需设置 脏位
      • 如果采用 回写法,设置 1 位 脏位
    • 该字段也常被称为 修改位
  • 访问位 (reference)- 非必须
    • 用于记录访问信息,服务于 块替换算法,其位数取决于替换算法。
    • 如果采用 LRU 替换算法,则 访问位 的位数为 log2(主存快对应的缓存块数量)log2(主存快对应的缓存块数量) 。
  • 数据块 (block):
    • 缓存的数据块,为 主存块 的一个副本。

公式

命中率 = 命中次数 / 访存总次数

缺失率 = 未命中次数 / 访存总次数

例题

例1 某存储系统中,主存容量是 Cache 容量的 4096 倍,Cache 被分为 64 个块,当主存地址和 Cache 地址采用直接映像方式时,地址映射表的大小应为( )(假设不考虑一致维护和替换算法位。)

A. 6x4097bit

B.64x12bit

C.6x4096bit

D.64x13bit

答: D

由于主存容量是 Cache 的 4096 倍,主存地址比 Cache 地址多 12 位,直接映射下,每行需存 12 位标记加 1 位有效位,因此地址映射表大小为 64 × 13 位。

例2 有效容量为128KB的Cache,每块16B,采用8路组相联。字节地址为1234567H的单元调入该 Cache,则其Tag 应为( ).

A.1234H

B.2468H

C.048DH

D.12345H

答: C

主存2^24块, cache一共2^10组,故标记字段为14 位,页内地址4位, 组号10位, 将 1234567H (0001 0010 0011 0100 0101 0110 0111)转为二进制后取其高 28位~14 位,得到 Tag = 048DH。

例3有一主存-Cache 层次的存储器,其主存容量为 1MB,Cache 容量为 16KB,每块有8个字, 每字 32 位, 采用直接地址映像方式, Cache起始字块为第0块, 若主存地址为 35301H, 且 CPU 访问Cache 命中,则在 Cache 的第()(十进制表示)字块中。

A. 152

B. 153

C. 154

D. 151

答: A

先将主存地址写成二进制0011 0101 0011 0000 0001,再按直接映射地址结构划分:低 5 位为块内地址,高 6 位为主存字块标记[20(主存位数)-5(块容量位数)-9(块数位数)=6],其余位为 Cache 字块地址,98H对应十进制为 152。

例4 某计算机的 Cache 有 16 行,块大小为 16B,其映射方式可配置为直接映射或 2-路组相联映射,主存按字节编址,主存单元从0开始编号。若依次访问下列主存单元,则不论采取上述哪种映射方式都可能引起Cache 冲突的是()

A.52 号和 102 号单元

B.48 号和 308 号单元

C.60号和160号单元

D.46 号和 236 号单元

答: B

块大小 16B ⇒ 块内地址 4 位,直接映射时 Cache 行号 = ⌊主存地址 / 16⌋ % 16,48 和 308 计算结果均为 3

例5 假设主存按字节编址,Cache 共有64 行,采用四路组相联映射方式,主存块大小为 32字节,所有编号都从0开始。则第 2593号存储单元所在主存块的Cache组号是

A.1

B. 15

C. 14

D. 4

答案: A

块大小 32B 得块内地址 5 位,64 行四路组相联划分为 16 组得组号 4 位,由地址 2593 的主存地址(2048+512+32+1=101 | 0001 | 00001)可知其所在主存块映射到 Cache 的第 0001 组。

例6 【2021统考真题】若计算机主存地址为 32 位,按字节编址,Cache 数据区大小为 32KB,主存块大小为 32B,采用直接映射方式和回写(Write Back)策略,则 Cache 行的位数至少是( )。

A.275

B.274

C.258

D.257

答: A

1(有效位) + 1(脏位) + 17(Tag) + 32*8(数据位) = 275

例7【2022 统考真题】若计算机主存地址为 32 位,按字节编址,某 Cache 的数据区容量为32KB,主存块大小为64B,采用8路组相联映射方式,该Cache 中比较器的个数和位数分别为()

A. 8, 20

B. 8, 23

C. 64, 20

D. 64, 23

答: A

8路 ->8个比较器

Tag20位 -> 20位比较器

参考

计算机考研杂货铺-Cache

相关推荐
Solitary-walk3 小时前
26考研初试的感想
考研
元亓亓亓1 天前
考研408--计算机网络--day13--电子邮件&万维网&HTTP
网络·计算机网络·考研·http·408
蒙奇D索大1 天前
【数据结构】排序算法精讲 | 交换排序全解:交换思想、效率对比与实战代码剖析
数据结构·笔记·考研·算法·排序算法·改行学it
蒙奇D索大1 天前
【数据结构】排序算法精讲 | 快速排序全解:分治思想、核心步骤与示例演示
数据结构·笔记·学习·考研·算法·排序算法·改行学it
元亓亓亓2 天前
考研408--组成原理--day12--五段式指令流水线&多处理器&硬件多线程
考研·流水线·408·组成原理·多处理器
你要飞2 天前
第十四课:考研阅读方法论
笔记·考研
元亓亓亓3 天前
考研408--计算机网络--day12--网络应用模型&DNS&FTP
服务器·计算机网络·考研·408
imbackneverdie3 天前
更经济实惠的润色方法,告别“中式英文”!
人工智能·考研·ai·自然语言处理·ai写作·研究生·ai工具
蒙奇D索大3 天前
【数据结构】排序算法精讲|折半插入排序全解:高效优化、性能对比、实战剖析
数据结构·学习·考研·算法·排序算法·改行学it