计组章节测 02:存储器层次结构 与 指令系统

覆盖《存储器层次结构》《指令系统》两章,共 30 题(第 1-23 题选择,第 24-30 题计算大题),全部为模拟题。限时 65 分钟,先做后看答案。做错的题请登记到错题本。

第 1 题 存储系统中,Cache—主存层次主要解决的问题是( ),主存—辅存层次主要解决的问题是( )。 A. 速度;容量 B. 容量;速度 C. 速度;价格 D. 价格;容量

第 2 题 两个循环分别按行、按列遍历同一个二维数组(数组远大于 Cache),关于二者 Cache 命中率的说法正确的是( )。 A. 按行遍历命中率高,因为空间局部性好 B. 按列遍历命中率高,因为时间局部性好 C. 两者命中率相同,因为访问次数相同 D. 无法比较,取决于数组大小

第 3 题 DRAM 需要定期刷新的根本原因是( )。 A. 双稳态触发器状态不稳定 B. 存储信息靠电容电荷,电容会漏电 C. 读出采用破坏性方式,读后必须再生 D. 地址引脚复用导致信息丢失

第 4 题 关于 DRAM 三种刷新方式,下列说法正确的是( )。 A. 集中刷新没有死时间 B. 分散刷新的存取周期与普通读写周期相同 C. 异步刷新把死时间分散成多个极短的小段 D. 刷新按存储单元逐个进行

第 5 题 某 DRAM 芯片容量为 1M×8 位,采用行列地址复用,其地址引脚数为( )。 A. 20 B. 10 C. 8 D. 4

第 6 题 用 4K×4 位的 SRAM 芯片构成 16K×8 位的存储器,共需芯片( )片。 A. 4 B. 8 C. 12 D. 16

第 7 题 某主存存取周期为 T,总线传送周期为 r,采用低位交叉编址的多体存储器实现流水存取,则存储体数至少应为( )。 A. T/r B. T×r C. 2T D. 任意

第 8 题 下列写策略配对中,实际机器中最常搭配出现的是( )。 A. 写直达 + 写分配 B. 写回 + 非写分配 C. 写回 + 写分配 D. 两种配对出现的概率完全相同

第 9 题 增大 Cache 容量,命中率反而可能下降(Belady 异常)的替换算法是( )。 A. LRU B. OPT C. 随机 D. FIFO

第 10 题 主存地址 24 位(按字节编址),Cache 数据容量 16 KB,块大小 32 B,直接映射。标记字段为( )位。 A. 10 B. 11 C. 12 D. 15

第 11 题 2 路组相联 Cache 中,某一主存块可以映射到的位置是( )。 A. 任意 Cache 行 B. 唯一确定的一个 Cache 行 C. 唯一确定的一个组内的任意一行 D. 固定的两行

第 12 题 某系统 Cache 周期 1 ns,主存周期 50 ns,先访问 Cache、未命中再访问主存,命中率为 90%,则平均访问时间为( )。 A. 5.9 ns B. 6.0 ns C. 46 ns D. 51 ns

第 13 题 TLB 命中时,地址转换过程中( )。 A. 仍需访问主存中的页表 B. 不再访问页表,直接得到物理地址 C. 需要访问磁盘 D. 需要触发缺页中断

第 14 题 页式虚拟存储器中,访问的页不在主存时产生的中断属于( )。 A. 外中断 B. 内中断(故障) C. 内中断(陷入) D. 软中断

第 15 题 段式虚拟存储器进行地址转换时,若段内偏移量大于等于该段长度,将发生( )。 A. 缺页中断 B. 越界中断 C. 访管中断 D. 时钟中断

第 16 题 某磁盘转速 7200 rpm,则平均旋转延迟约为( )。 A. 8.33 ms B. 4.17 ms C. 16.67 ms D. 2.08 ms

第 17 题 一地址指令采用隐含寻址(另一操作数隐含在 ACC 中),执行阶段取操作数需访存( )次。 A. 0 B. 1 C. 2 D. 3

第 18 题 某机指令字长 16 位,每个地址字段 4 位,采用扩展操作码:三地址、二地址、一地址指令各 15 条,则零地址指令最多( )条。 A. 15 B. 16 C. 256 D. 65536

第 19 题 采用一次间接寻址的取数指令,执行阶段(不含取指令)需访存( )次。 A. 1 B. 2 C. 3 D. 4

第 20 题 转移指令长 4 字节,存放在字节地址 2000 处(按字节编址),相对寻址位移量为 +8,则转移目标地址为( )。 A. 2008 B. 2010 C. 2012 D. 2016

第 21 题 处理数组问题时,希望"一条指令在循环中不变、仅修改寄存器内容即可依次访问各元素",最适合的寻址方式是( )。 A. 基址寻址 B. 变址寻址 C. 相对寻址 D. 间接寻址

第 22 题 某机器上执行 union { unsigned int i; unsigned char c; } u; u.i = 1; 后 u.c 的值为 1,则该机器为( )。 A. 大端 B. 小端 C. 无法判断 D. 中端

第 23 题 AT&T 语法指令 movl %eax, %ebx 等价于 Intel 语法的( )。 A. mov eax, ebx B. mov ebx, eax C. movl ebx, eax D. add ebx, eax

第 24 题(计算大题) 某机主存地址 24 位,按字节编址;Cache 数据容量 8 KB,块大小 64 B,直接映射,采用写回法。 (1) 写出主存地址划分(标明各字段位数)。 (2) 求主存地址 0x0ABCD0 映射到的 Cache 行号、标记值、块内偏移(用位拆法并用模运算验算)。 (3) 求 Cache 的总存储位数(含标记位、有效位、脏位)。

第 25 题(计算大题) 某程序对主存块的访问序列(块号)为:0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6,7。Cache 周期 2 ns,主存周期 42 ns,先访问 Cache、未命中再访问主存。 (1) 若 Cache 共 4 行、直接映射,求命中率与平均访问时间。 (2) 若 Cache 共 8 行、2 路组相联(即 4 组、每组 2 行),LRU 替换,求命中率与平均访问时间。 (3) 由本题结果说明相联度对冲突的作用。

第 26 题(计算大题) 用 8K×8 位的 SRAM 芯片构成 32K×16 位的主存模块。 (1) 需要多少片芯片?说明字扩展与位扩展各几倍。 (2) 系统地址线共几根?芯片地址线接哪几位?高位地址如何处理? (3) 画出各组芯片的数据线连接方案(文字描述即可),并写出每组负责的地址范围(16 进制)。

第 27 题(计算大题) 某机指令字长 16 位,每个地址字段 4 位,采用扩展操作码,要求设计:三地址指令 8 条、二地址指令 96 条、一地址指令 500 条。 (1) 说明各级操作码的编码方案(扩展标志如何留)。 (2) 求零地址指令最多多少条。 (3) 用编码空间公式验证整个方案。

第 28 题(计算大题) 某机主存与寄存器状态如下:(R2)=0x40(R_2)=0x40,(PC)=0x20(PC)=0x20(PC 已指向下一条指令),(BR)=0x60(BR)=0x60,(IX)=8(IX)=8,(0x40)=0x80(0x40)=0x80,(0x80)=0x25(0x80)=0x25;指令中的地址码 A = 0x40。分别求下列寻址方式下取操作数的有效地址 EA、取得的操作数及取操作数的访存次数: (1) 直接寻址 (2) 一次间接寻址 (3) 寄存器间接寻址(用 R2R_2) (4) 相对寻址 (5) 基址寻址 (6) 变址寻址

第 29 题(计算大题) 某机访存流程:先查 TLB(2 ns),TLB 未命中则访问主存中的页表(100 ns,页表必命中,忽略缺页);得到物理地址后访问 Cache(10 ns),Cache 未命中再访问主存(100 ns,串行)。已知 TLB 命中率 98%,Cache 命中率 95%。 (1) 求一次数据访问中"访问 Cache"环节的平均时间。 (2) 求一次数据访问的总平均时间。

第 30 题(计算大题) 某磁盘转速 6000 rpm,每个磁道 100 个扇区,每扇区 512 B,平均寻道时间 6 ms。连续读取同一磁道上 8 个连续扇区(4 KB): (1) 求平均旋转延迟。 (2) 求传输时间。 (3) 求总平均访问时间。

答案与解析

第 1 题:A |考点:存储层次结构目的|难度:易 Cache—主存解决速度匹配(硬件管理),主存—辅存解决容量(虚拟存储器)。错因提醒:把"价格"算作某一层次的目的——层次结构整体兼顾三者,但两个映射各有明确分工,考试按分工作答。

第 2 题:A |考点:空间局部性|难度:易 C 数组行优先存放,按行访问地址连续、空间局部性好;按列访问每次跨一行,Cache 无法利用块内相邻数据。错因提醒:时间局部性由"重复访问同一元素"体现,两种遍历对每个元素都只访问一次,时间局部性无差别。

第 3 题:B |考点:DRAM 存储原理|难度:易 DRAM 用电容存电荷,漏电导致信息流失,须定期(典型 2 ms 内)按行刷新。错因提醒:C 是"破坏性读出需再生",与"定期刷新"是两件事,命题人常互换设错。

第 4 题:C |考点:DRAM 刷新方式|难度:中 集中刷新有死区(A 错);分散刷新存取周期被拉长为"读写+刷新"两段(B 错);刷新以行为单位(D 错)。错因提醒:三种方式的优劣对比要成套记,单句判断题最常在 A、B 上动手脚。

第 5 题:B |考点:DRAM 地址复用|难度:易 1M = 2202^{20},20 位地址分两次送,地址引脚 10 根(配 RAS̅/CAS̅ 选通)。错因提醒:选 A 忘了复用;SRAM 才引全部地址线。

第 6 题:B |考点:芯片扩展计算|难度:易 字扩展 16K/4K=416\text{K}/4\text{K}=4 倍,位扩展 8/4=28/4=2 倍,4×2=84\times2=8 片。错因提醒:只算一种扩展(得 4 或 2)是高频失误,两种扩展是相乘关系。

第 7 题:A |考点:多体交叉流水条件|难度:中 流水线不间断的条件是前一个体的数据尚未送完时下一个体已准备好,即体数 m≥T/rm \ge T/r。错因提醒:高位交叉编址不能流水提速,审题看清"低位交叉"。

第 8 题:C |考点:写策略配对|难度:中 写回寄存望后续命中再写同一块,故配写分配(调入再写);写直达每次都同步主存,调入意义小,配非写分配。错因提醒:A、B 交叉配对是典型干扰项。

第 9 题:D |考点:替换算法与 Belady 异常|难度:中 FIFO 只看进入时间,不满足"栈包含性质",可能出现容量增大命中率反降;LRU 与 OPT 不会。错因提醒:随机替换不保证无异常,但"Belady 异常"这一名词考点专指 FIFO。

第 10 题:A |考点:直接映射地址划分|难度:中 块内 log⁡232=5\log_2 32=5 位;行数 16K/32=512=2916\text{K}/32=512=2^9 → 行号 9 位;标记 =24−9−5=10=24-9-5=10 位。错因提醒:块数算错(如把 16 KB 当行数)会连锁算错标记位,务必先算行数再分配位数。

第 11 题:C |考点:组相联映射规则|难度:易 组号 = 块号 mod 组数,唯一确定;组内两路(行)任选。错因提醒:D"固定的两行"似是而非——组内放哪一行是动态选择,不是固定两行都放。

第 12 题:B |考点:平均访问时间|难度:中 串行口径:Ta=0.9×1+0.1×(1+50)=0.9+5.1=6.0T_a = 0.9\times1 + 0.1\times(1+50) = 0.9+5.1 = 6.0 ns。错因提醒:选 A 用了 0.1×500.1\times50(漏掉未命中路径中已花的 1 ns Cache 时间,即口径一),题干"先访问 Cache"明确是串行口径。

第 13 题:B |考点:TLB 工作过程|难度:易 TLB 即页表项的 Cache,命中直接得页框号拼物理地址,不再访问页表、更不涉及磁盘。错因提醒:TLB 缺失也不等于缺页,还要看页表。

第 14 题:B |考点:缺页中断类型|难度:中 缺页属内中断中的"故障"(fault),由当前指令执行引起,处理后重新执行该指令。错因提醒:陷入(trap)是自愿访管指令引起,外中断来自外围设备——中断分类考点与 OS 重叠,按"故障"记忆。

第 15 题:B |考点:段式地址转换与保护|难度:中 段式地址转换先查段表取段长,偏移越界发越界中断。错因提醒:页式没有越界检查(页号经页表有效位判定),"越界"是段式专属表述。

第 16 题:B |考点:磁盘平均旋转延迟|难度:易 每转 60/7200 s=8.3360/7200\ \text{s} = 8.33 ms,平均等半转 = 4.17 ms。错因提醒:忘记乘 1/2 选 A;平均旋转延迟恒等于"半转时间"。

第 17 题:B |考点:一地址指令访存计数|难度:易 隐含 ACC 不占访存,取 A 指明的一个操作数访存 1 次。错因提醒:若题目问"共几次"还要加取指 1 次,得 2;审清"执行阶段"三个字。

第 18 题:B |考点:扩展操作码计算|难度:中 三级各留全 1 扩展标志后,零地址 OP 占满 16 位且前 12 位全 1,剩 24=162^4=16 条。验证 15×212+15×28+15×24+16=65536=21615\times2^{12}+15\times2^8+15\times2^4+16=65536=2^{16}。错因提醒:选 D 是忘了前 12 位已被扩展标志锁死,零地址编码空间只有最后 4 位自由。

第 19 题:B |考点:间接寻址访存计数|难度:易 按 A 访存取有效地址 1 次 + 按有效地址取操作数 1 次 = 2 次。错因提醒:问"从取指到取得操作数共几次"则为 3 次(加取指)。

第 20 题:C |考点:相对寻址计算|难度:中 (PC) = 本条地址 + 指令长度 = 2000 + 4 = 2004,EA = 2004 + 8 = 2012。错因提醒:选 A 用 2000 作基数,忘了 PC 已指向下一条指令——相对寻址第一坑。

第 21 题:B |考点:变址寻址用途|难度:易 变址 EA = (IX)+A:数组首址放 A(不变),下标 i 放 IX(每次循环 +1)。错因提醒:基址是"基准不变、A 可变"面向系统重定位,方向恰好相反。

第 22 题:B |考点:大小端判断|难度:易 u.c 取的是低地址字节;其值为 1(即 int 1 的最低字节)说明低字节在低地址,小端。错因提醒:输出 0 才是大端;此判别法本身是选择题常考代码。

第 23 题:B |考点:AT&T 与 Intel 语法差异|难度:易 AT&T 源在前:%eax → %ebx;Intel 目的在前:mov ebx, eax。错因提醒:寄存器前 %、源目顺序是 AT&T 两大标志,反着记必错。

第 24 题 |考点:直接映射手推 + Cache 总容量|难度:中 (1) 块内地址 =log⁡264=6= \log_2 64 = 6 位;Cache 行数 =8K/64=128=27= 8\text{K}/64 = 128 = 2^7 → 行号 7 位;标记 =24−7−6=11= 24 - 7 - 6 = 11 位。地址 = 标记 11 | 行号 7 | 块内 6。 (2) 0x0ABCD0 二进制 24 位 = 0000 1010 1011 1100 1101 0000:

  • 标记(高 11 位)= 00001010101₂ = 85
  • 行号(中 7 位)= 1110011₂ = 115
  • 块内偏移(低 6 位)= 010000₂ = 16 验算:块号 = 0x0ABCD0 ÷ 64 = 10995;行号 = 10995 mod 128 = 10995 − 85×128 = 115 ✓;标记 = 10995 ÷ 128 = 85 ✓(两种算法一致)。 (3) 每行位数 = 数据 64×8=51264\times8 = 512 + 标记 11 + 有效 1 + 脏 1 = 525 位;总位数 =128×525=67200= 128\times525 = 67200 位 = 8400 B。错因提醒:直接映射 LRU 位为 0,但有效位、脏位(写回法才有)不能漏;只算数据位得 64 KB 是最常见失分。

第 25 题 |考点:映射方式对比、命中率与平均访问时间|难度:中 (1) 直接映射行号 = 块号 mod 4:每行的两个块(如行 0 轮流被块 0、4 占据)互相替换,16 次访问全部未命中,命中率 0%;Ta=0×2+1×(2+42)=44T_a = 0\times2 + 1\times(2+42) = 44 ns。 (2) 2 路组相联组号 = 块号 mod 4:每组两行恰好容纳该组的两个块(组 0 装块 0 和 4,以此类推),前 8 次未命中装入,后 8 次全部命中,命中率 50%;Ta=0.5×2+0.5×44=23T_a = 0.5\times2 + 0.5\times44 = 23 ns。 (3) 说明:访问序列在主存中"相隔正好一个 Cache 行数"时,直接映射发生严重的冲突颠簸;提高相联度让同组竞争者可以共存,命中率大幅提升——相联度就是用硬件成本换冲突开销。错因提醒:(2) 中若把组数当 8(忘除以 2 路)会退化为直接映射的结果。

第 26 题 |考点:芯片扩展连接设计|难度:中 (1) 字扩展 32K/8K=432\text{K}/8\text{K} = 4 倍,位扩展 16/8=216/8 = 2 倍,共 4×2=84\times2 = 8 片,分 4 组、每组 2 片。 (2) 系统地址:32K=21532\text{K} = 2^{15} → 15 根(A14A0);芯片地址:8K=2138\text{K} = 2^{13} → 13 根,接 A12A0;高 2 位 A14、A13 接 2:4 译码器,产生 4 个片选信号分别接 4 组。 (3) 每组 2 片位扩展:片 1 数据线接 D15D8,片 2 接 D7D0,两片共用同一片选与读写控制。各组地址范围:组 0:0000H1FFFH;组 1:2000H3FFFH;组 2:4000H5FFFH;组 3:6000H7FFFH。错因提醒:位扩展的两片共用片选(一起选中)、数据线分接;字扩展的各组数据线并联、片选互斥——两组关系说反是典型错法。

第 27 题 |考点:扩展操作码设计|难度:难 (1) 编码方案:

  • 三地址(OP 4 位):8 条用 00000111,留 **8 个编码(10001111)**作扩展标志。
  • 二地址(OP 8 位 = 标志 4 位 + 新增 4 位):可用编码 8×24=1288\times2^4 = 128 个,取 96 条,剩 32 个编码作扩展标志。
  • 一地址(OP 12 位):可用 32×24=51232\times2^4 = 512 个,取 500 条,剩 12 个编码。 (2) 零地址(OP 16 位):最多 12×24=19212\times2^4 = 192 条。 (3) 验证:8×212+96×28+500×24+192×20=32768+24576+8000+192=65536=2168\times2^{12} + 96\times2^{8} + 500\times2^{4} + 192\times2^{0} = 32768 + 24576 + 8000 + 192 = 65536 = 2^{16} ✓,编码空间恰好用满。错因提醒:每一级"剩余编码数 × 2新增位数2^{\text{新增位数}}"是逐级递推的关键;漏乘 2 的幂或忘记上一级用掉的数量都会导致下一级空间算错,最后务必用总空间公式验证。

第 28 题 |考点:寻址方式 EA 计算|难度:中

寻址方式EA 计算EA操作数访存次数
(1) 直接EA = A0x40(0x40) = 0x801
(2) 一次间接EA = (A)(0x40) = 0x80(0x80) = 0x252
(3) 寄存器间接EA = (R₂)0x400x801
(4) 相对EA = (PC) + A0x20 + 0x40 = 0x60(0x60)1
(5) 基址EA = (BR) + A0x60 + 0x40 = 0xA0(0xA0)1
(6) 变址EA = (IX) + A8 + 0x40 = 0x48(0x48)1
错因提醒:间接寻址取的是"(A) 当地址再去取数",两次访存;相对寻址的 (PC) 是下一条指令地址,本题为 0x20(题干已说明 PC 指向下一条),若题目给的是本条指令地址还需加指令字长。

第 29 题 |考点:TLB—页表—Cache 分层时间计算|难度:中 (1) 访 Cache 环节:TCache=0.95×10+0.05×(10+100)=9.5+5.5=15T_{\text{Cache}} = 0.95\times10 + 0.05\times(10+100) = 9.5 + 5.5 = 15 ns。 (2) 总时间分两条路径:

  • TLB 命中(98%):2 + 15 = 17 ns
  • TLB 未命中(2%):2 + 100(查页表)+ 15 = 117 ns Ta=0.98×17+0.02×117=16.66+2.34=19T_a = 0.98\times17 + 0.02\times117 = 16.66 + 2.34 = 19 ns。错因提醒:未命中路径中 TLB 已花掉的 2 ns 不能丢;两条路径最后都要访问 Cache,别只在命中路径加 15。

第 30 题 |考点:磁盘访问时间计算|难度:中 每转 60/6000=1060/6000 = 10 ms。 (1) 平均旋转延迟 =10/2=5= 10/2 = 5 ms。 (2) 8 个扇区占整道的 8/100,传输时间 =10×8/100=0.8= 10\times8/100 = 0.8 ms。 (3) 总时间 =6+5+0.8=11.8= 6 + 5 + 0.8 = 11.8 ms。错因提醒:传输时间 = 数据量占整道比例 × 每转时间,别用"扇区数 × 每扇区时间"之外的想当然公式;寻道 + 旋转才是磁盘访问的大头。