计算机系统结构练习库

这里不是把刚做过的 A 卷原题换个排版,而是用同一批考法生成新参数、新场景的完整卷。完整卷练考试节奏,速测题检查知识点是否真的记住。

20 套完整卷160 道大题120 道速测详细答案
20完整卷
160大题
120速测题

怎么练

先任选一套完整卷限时做,不要展开答案。每道计算题必须写公式、代入和最后单位。
完整卷 11-20 是详细解答版:答案按“识别题型 → 公式 → 代入 → 结论 → 易错点”写,适合对着复盘。
再用“120 道速测”查漏。速测题不是卷子,只用来检查规则有没有记住。
本页故意不复刻刚做过的原题参数、置换、比例和场景都换过。题型相同,是为了练做题流程;数字不同,是为了防止靠记答案过关。
01 整卷模拟

先做完整卷 1-10,练“读题、列式、写单位、控时间”。不要一上来翻答案。

02 详细复盘

再做完整卷 11-20。每题答案拆成识别、公式、代入、结论、易错点和评分点。

03 速测补洞

最后刷 120 道速测,只检查概念和决策树有没有记住。

流水线停顿 BTB/BHT Cache/TLB 写策略事务 RAID/可靠性 Omega/互连函数 目录一致性 ILP/多发射

完整卷 1

建议限时 100-120 分钟。答案折叠在每题下面,先写完过程再展开。

12 分定量分析

1. CPI、MIPS 与 Amdahl

  1. 一台 800MHz 机器执行程序,整数指令占 55%,CPI=1;访存指令占 30%,CPI=3;浮点指令占 15%,CPI=4。求有效 CPI 和 MIPS。
  2. 若把访存指令的 CPI 从 3 降到 1.5,求加速比。
参考答案

有效 CPI = `0.55×1 + 0.30×3 + 0.15×4 = 2.05`。MIPS = `800 / 2.05 = 390.24`。

改进后 CPI = `0.55×1 + 0.30×1.5 + 0.15×4 = 1.60`,加速比 = `2.05 / 1.60 = 1.28`。

10 分BTB 与分支预测

2. 分支目标缓冲

条件分支占 8%,基本 CPI 为 1。BTB 命中率 85%,BTB 不命中开销 3 拍;BTB 命中后预测精度 92%,预测错误开销 7 拍。求实际 CPI。若 BTB 命中率提高到 95%,重新计算。

参考答案

额外 CPI = `0.08 × [(1-H)×3 + H×(1-0.92)×7]`。

H=0.85:`1 + 0.08×(0.15×3 + 0.85×0.08×7) = 1.07408`。

H=0.95:`1 + 0.08×(0.05×3 + 0.95×0.08×7) = 1.05456`。

12 分写策略事务数

3. Cache 写事务

一台机器 92% 访存命中 Cache,其中 25% 是写。Cache 块 64B,一次内存事务 32B,写失效采用写分配。

  1. 写直达时,一次访存平均产生多少下级事务?
  2. 写回时,30% 被替换块是脏块,一次访存平均产生多少下级事务?
参考答案

调入或写回整块要 `64/32 = 2` 次事务。

写直达:`0.92×0.25×1 + 0.08×0.75×2 + 0.08×0.25×3 = 0.41`。

写回:命中 0,下级事务只在 miss 时发生:`0.08 × (2 + 0.30×2) = 0.208`。

16 分Cache/TLB CPI

4. 写回、脏块和 TLB

基本 CPI 为 1.6,每条指令平均访问存储器 1.25 次。Cache 块 40B,主存固定延迟 30 拍,传输速率 8B/拍;Cache miss 率 2%,25% 被替换块为脏块,写回法。

  1. 理想 TLB 下实际 CPI 是多少?
  2. 若 Cache miss 产生的地址有 0.1% 发生 TLB miss,额外 30 拍,按“并入 miss penalty”口径计算实际 CPI。
参考答案

一次块读开销 = `30 + 40/8 = 35` 拍。写回平均事务倍数 = `1 + 0.25 = 1.25`,所以 penalty = `43.75`。

理想 TLB:`CPI = 1.6 + 1.25×0.02×43.75 = 2.69375`。

实际 TLB:`penalty = 1.25×(35 + 0.001×30) = 43.7875`,CPI = `1.6 + 1.25×0.02×43.7875 = 2.6946875`。

10 分RAID 与可靠性

5. RAID10 变体

4 块磁盘组成 RAID10,两组镜像再条带。系统只有一个必要控制器,可靠度 0.98;每块磁盘可靠度 0.96。忽略其他部件。写出可靠度表达式并计算。

参考答案

一组镜像可靠度 = `1-(1-0.96)^2 = 0.9984`。两组都要正常,再乘控制器。

R = 0.98 × [1-(1-0.96)^2]^2 = 0.9769,约 97.69%
10 分互连函数

6. 互连网络函数

N=32,处理器编号 0 到 31。求 `Cube2(19)`、`PM2+3(29)`、`σ(6)`。其中 σ 为 5 位二进制循环左移一位。

参考答案

`19 = 10011B`,第 2 位取反得 `10111B = 23`。

`PM2+3(29) = 29 + 8 mod 32 = 5`。

`6 = 00110B`,循环左移得 `01100B = 12`。

10 分远程访问

7. NUMA 远程访问

处理器频率 2.5GHz,基本 CPI 为 1.2。远程访问耗时 180ns,0.4% 指令需要远程访问且处理器挂起。求实际 CPI,以及只有本地访问时比它快多少。

参考答案

2.5GHz 周期 = 0.4ns;远程访问开销 = `180/0.4 = 450` 拍。

实际 CPI = `1.2 + 0.004×450 = 3.0`。只有本地访问 CPI=1.2,所以速度比 = `3.0/1.2 = 2.5` 倍。

20 分流水线与 ILP

8. 停顿判断与多发射

  1. 有正常定向时,`LW R1,0(R2)` 后紧跟 `ADD R3,R1,R4`,停几拍?
  2. `ADD R1,R2,R3` 后紧跟 `SW 0(R5),R1`,在有 store-data 定向时停几拍?
  3. `SUB R4,R3,R2` 后紧跟 `BNZ R4,L`,按本课常见口径停几拍?
  4. 3 段标量流水线执行 20 条指令需多少个 Δt?若 4 发射超标量且没有相关冲突,近似需多少个 Δt?
参考答案

1 拍;0 拍;1 拍。3 段标量流水线时间为 `(3+20-1)Δt = 22Δt`。4 发射时 20 条指令分 5 组,近似 `(3+5-1)Δt = 7Δt`。

完整卷 2-10

下面每套都是完整卷:8 大题、100 分、答案折叠。它们仿照期末卷的题型结构,但数字和场景都换过,不能靠背刚做过的原题。

完整卷 2

  1. 12 分 定量分析:某 1.2GHz 机器中 ALU 指令占 50%、CPI=1;访存指令占 35%、CPI=2;分支占 15%、CPI=1.5。求有效 CPI 和 MIPS。若访存 CPI 降到 1.2,求加速比。
  2. 12 分 流水线:五级 MIPS 流水线有正常定向,执行 `LW R1,0(R2); ADD R3,R1,R4; SUB R5,R3,R6; SW 4(R2),R5; ADDI R2,R2,#4; BNZ R2,L`。按本课口径判断数据相关停顿,并求一轮至少多少拍。
  3. 12 分 BTB:条件分支占 6%,基本 CPI 为 1.1。BTB 命中率 70%,不命中开销 4 拍;命中后预测精度 88%,预测错开销 8 拍。求实际 CPI。
  4. 14 分 两级 Cache:L1 命中时间 1 拍,L1 miss 率 3%;L2 命中时间 8 拍,L2 局部 miss 率 25%;主存开销 100 拍。求 AMAT。若每条指令访存 1.4 次且基本 CPI 已含 L1 命中时间,求存储停顿/指令。
  5. 12 分 RAID 可靠性:6 块磁盘组成 RAID10,即 3 个镜像对条带化。单盘可靠度 0.97;两个阵列控制器并联,每个 0.95;通道适配器可靠度 0.98 串联。求系统可靠度。
  6. 12 分 互连函数:N=16,计算 `Cube2(13)`、`PM2+2(14)`、`σ(9)`。其中 σ 为 4 位循环左移。
  7. 12 分 远程访存:处理器 2GHz,基本 CPI=0.8。远程访问 240ns,0.3% 指令需要远程访问且处理器挂起。求实际 CPI,以及只有本地访问时比它快多少。
  8. 14 分 简答:分别解释写直达、写回、写分配、不写分配各自回答的是写操作中的哪个问题。
参考答案
  1. CPI=`0.5×1+0.35×2+0.15×1.5=1.425`,MIPS=`1200/1.425=842.11`。改进后 CPI=`1.145`,加速比=`1.425/1.145=1.24`。
  2. `LW→ADD` 停 1 拍,`ADDI→BNZ` 按常见口径停 1 拍,其余可定向解决。6 条指令基础 `5+6-1=10` 拍,总计约 12 拍。
  3. CPI=`1.1+0.06×(0.30×4+0.70×0.12×8)=1.21232`。
  4. AMAT=`1+0.03×(8+0.25×100)=1.99` 拍。停顿/指令=`(1.99-1)×1.4=1.386` 拍。
  5. 镜像对可靠度=`1-0.03²=0.9991`;3 对条带化要求都正常,`0.9991³≈0.9973`。控制器并联可靠度=`1-0.05²=0.9975`。总可靠度≈`0.9975×0.98×0.9973=0.9749`。
  6. `13=1101`,翻转第 2 位得 `1001=9`;`14+4 mod 16=2`;`σ(1001)=0011=3`。
  7. 周期 0.5ns,远程开销 `240/0.5=480` 拍,CPI=`0.8+0.003×480=2.24`。本地情况 CPI=0.8,快 `2.24/0.8=2.8` 倍。
  8. 写直达/写回处理写命中后是否立刻写下一级;写分配/不写分配处理写 miss 时是否把块调入 Cache。

完整卷 3

  1. 12 分 可靠性:某磁盘子系统由 8 块磁盘、1 个控制器、1 个电源、1 个风扇串联构成。磁盘 MTTF=2,000,000h,控制器 MTTF=1,000,000h,电源和风扇各 500,000h。假设指数分布、独立失效,求系统 MTTF。
  2. 12 分 写事务:访存命中率 95%,40% 访存为写。Cache 块 128B,一次内存事务 64B,写 miss 采用写分配。分别求写直达和写回(20% 被替换块为脏块)下每次访存平均下级事务数。
  3. 12 分 分支预测:一位预测器初始预测“不跳”。某循环每轮执行 12 次分支,前 11 次跳转,最后 1 次不跳。求一轮预测准确率;若重复执行很多轮,稳定后每轮错几次?
  4. 14 分 Cache 地址划分:32 位地址,64KB 直接映像 Cache,块大小 64B。求块内偏移位、索引位、标记位。
  5. 12 分 流水线判定:有正常定向时,判断以下相邻关系停几拍:`LW→立即用`、`ALU→ALU`、`ALU→BNZ 条件寄存器`、无 RAW。
  6. 12 分 Omega 寻径:N=8,源 3 到目的 6。写出目的地址逐位寻径的控制位;再写出源地址异或目的地址寻径的控制位。
  7. 12 分 同步:解释 LL/SC 中 LL “盯住”的对象是什么,SC 成功和失败分别说明什么。
  8. 14 分 ILP 简答:说明寄存器重命名为什么能消除 WAR/WAW,却不能消除 RAW。
参考答案
  1. 系统失效率=`8/2000000+1/1000000+1/500000+1/500000=9/1000000`,MTTF≈111,111h。
  2. 调入整块需 2 次事务。写直达:`0.95×0.4×1+0.05×0.6×2+0.05×0.4×3=0.50`。写回:`0.05×(2+0.2×2)=0.12`。
  3. 第一轮第 1 次跳转错,最后退出错,中间 10 次对,准确率 `10/12=83.33%`。稳定后上一轮退出留下“不跳”,所以每轮仍错 2 次。
  4. 块内偏移 `log2 64=6` 位;Cache 行数 `64KB/64B=1024=2^10`,索引 10 位;标记 `32-10-6=16` 位。
  5. 依次为 1、0、1、0 拍。
  6. 目的 6=`110`,目的地址逐位寻径控制位为 110。源 3=`011`,`011 xor 110=101`,异或寻径控制位为 101。
  7. LL 盯住的是某个内存地址/存储单元;SC 成功表示从 LL 到 SC 期间该地址未被别人写过并完成写入;SC 失败表示期间被别人改过或保留被破坏,需要重试。
  8. WAR/WAW 是名字相关,给不同写结果分配不同物理寄存器即可消除;RAW 是真实数据依赖,消费者必须等生产者产生值。

完整卷 4

  1. 12 分 两级 Cache:1000 次访存中 L1 miss 50 次,L2 miss 15 次。求 L1 miss 率、L2 局部 miss 率、L2 全局 miss 率。若 L1 命中 1 拍,L2 命中 10 拍,主存 80 拍,求 AMAT。
  2. 12 分 BTB:条件分支占 7%,基本 CPI=1。BTB 命中率 75%,不命中 3 拍;命中后预测精度 88%,预测错 9 拍。求实际 CPI。若 BTB 命中率提高到 90%,重新计算。
  3. 12 分 伪相联 Cache:直接映像 miss 率 6%,两路组相联 miss 率 4%。伪相联第一位置命中 1 拍,第二位置伪命中额外 2 拍,真正 miss 开销 50 拍。求平均访问时间。
  4. 14 分 RAID10:4 块磁盘组成 RAID10,单盘可靠度 0.95;两个控制器并联,每个 0.90;通道适配器可靠度 0.97 串联。求系统可靠度。
  5. 12 分 指令调度:给定 `LW R1,0(R2); ADD R3,R1,R4; ADDI R2,R2,#4; SW -4(R2),R3; BNZ R2,L`,重排指令以尽量消除 load-use 停顿,且不改变语义。
  6. 12 分 Omega 阻塞:N=8,判断连接 0→4 与 1→5 能否同时无阻塞传输。用第一级开关出口说明理由。
  7. 12 分 原子操作:写出“用 LL/SC 实现对内存单元加 1”的伪代码,并说明失败时为什么要重试。
  8. 14 分 分支预测简答:区分 BHT/BHB、BTB、branch folding 分别解决什么问题。
参考答案
  1. L1 miss=`50/1000=5%`;L2 局部 miss=`15/50=30%`;L2 全局 miss=`15/1000=1.5%`。AMAT=`1+0.05×(10+0.30×80)=2.7` 拍。
  2. H=0.75:CPI=`1+0.07×(0.25×3+0.75×0.12×9)=1.1092`。H=0.90:CPI=`1+0.07×(0.10×3+0.90×0.12×9)=1.08904`。
  3. 第二位置命中率可看作 `6%-4%=2%`,真正 miss 率 4%。平均=`1+0.02×2+0.04×50=3.04` 拍。
  4. 镜像对可靠度=`1-0.05²=0.9975`,两对条带化可靠度=`0.9975²≈0.9950`。控制器并联=`1-0.1²=0.99`。总可靠度≈`0.99×0.97×0.9950=0.9554`。
  5. 一种可行顺序:`LW R1,0(R2); ADDI R2,R2,#4; ADD R3,R1,R4; SW R3,-4(R2); BNZ R2,L`。关键是让 `ADDI` 隔开 `LW` 和 `ADD`;因为 R2 已先加 4,所以存回地址要改成 `-4(R2)`。
  6. 0 与 1 进入同一个第一级 2×2 开关;目的 4=`100`、5=`101`,第一级都要走高出口,因此争同一出口,阻塞。
  7. `try: LL R1,0(Ra); ADDI R1,R1,#1; SC R1,0(Ra); BEQZ R1,try`。失败说明期间有人改过该地址,本次写不能算原子完成。
  8. BHT/BHB 预测跳不跳;BTB 保存分支 PC 到目标地址,解决跳到哪里;branch folding 进一步把目标指令也缓存起来,目标是让成功分支少停甚至零停顿。

完整卷 5

  1. 12 分 Amdahl:某程序 40% 时间花在存储系统上。若把存储部分加速 2 倍,求总加速比。若程序原运行 20s,改进后运行多久?
  2. 12 分 远程访存:处理器 3GHz,基本 CPI=1.1。远程访存 150ns,0.2% 指令需要远程访问且处理器挂起。求实际 CPI。
  3. 12 分 TLB 口径:Cache miss 率 1.5%,miss penalty 为 64 拍;题目说“Cache miss 产生的地址有 0.2% 发生 TLB miss,TLB miss 额外 20 拍”。把 TLB 并入 miss penalty 后,每次访存的平均额外开销是多少?若题目改成“每次访存地址有 0.2% TLB miss”,每条指令访存 1.2 次,TLB 额外 CPI 是多少?
  4. 14 分 写分配:访存命中率 90%,30% 是写,块 128B,事务 64B。写直达下,分别计算不写分配和写分配时每次访存平均下级事务数。
  5. 12 分 RAID5:4 块盘 RAID5 进行一次小写。说明读改写需要几次磁盘 I/O。若一块盘失效,读一个丢失数据块需要读几块幸存盘?
  6. 12 分 互连函数:N=32,求 `PM2+4(29)`、`PM2-0(0)`、`Cube4(7)`。
  7. 12 分 屏障同步:普通计数屏障中 `count`、`total`、`release` 分别表示什么?为什么循环复用屏障可能出问题?
  8. 14 分 ILP:比较超标量、VLIW、向量处理机三者“并行性由谁发现/表达”。
参考答案
  1. 加速比=`1/(0.6+0.4/2)=1.25`;改进后时间=`20/1.25=16s`。
  2. 3GHz 周期约 0.333ns,150ns≈450 拍。CPI=`1.1+0.002×450=2.0`。
  3. 并入口径:平均额外=`0.015×(64+0.002×20)=0.9606` 拍/访存。全访存口径:额外 CPI=`1.2×0.002×20=0.048`。
  4. 读 miss 调入整块 2 次。写直达不写分配:`0.90×0.30×1+0.10×0.70×2+0.10×0.30×1=0.44`。写分配:写 miss 要调入整块再写一次,`0.27+0.14+0.10×0.30×3=0.50`。
  5. 读旧数据、读旧校验、写新数据、写新校验,共 4 次 I/O。4 盘 RAID5 坏 1 盘时,重构一个丢失块要读其余 3 块。
  6. `29+16 mod 32=13`;`0-1 mod 32=31`;`7=00111` 翻转最高位得 `10111=23`。
  7. `count` 记录已到达进程数,`total` 是应到达总数,`release` 是放行信号。循环复用时,快进程可能进入下一轮并修改同一屏障变量,慢进程还停在上一轮,产生混乱;sense-reversing 用每轮翻转信号区分轮次。
  8. 超标量主要由硬件动态发射;VLIW 由编译器静态打包长指令;向量处理机由程序/编译器表达向量操作,硬件流水化处理大量同类数据。

完整卷 6

  1. 12 分 CPI/MIPS:某 1GHz 机器中 ALU 指令占 60%、CPI=1;访存指令占 30%、CPI=4;分支占 10%、CPI=2。求平均 CPI 和 MIPS。
  2. 12 分 流水线:4 级流水线执行 30 条无冲突指令需多少拍?若其中 20% 是分支,每个分支预测错罚 2 拍,假设都预测错,总拍数约多少?
  3. 12 分 Cache/TLB 地址:32KB、2 路组相联 Cache,块大小 64B,32 位地址。求组数、索引位、块内偏移位。若 TLB 64 项、页大小 4KB,TLB 覆盖范围是多少?
  4. 14 分 BTB 统计:程序执行 1000 条分支,BTB 命中 800 条,其中预测错 80 条;BTB 未命中罚 3 拍,预测错罚 6 拍。求总罚拍和平均每条分支罚拍。
  5. 12 分 RAID:两个磁盘做 RAID1,单盘可靠度 0.92,求阵列可靠度;两个磁盘做 RAID0,可靠度是多少?
  6. 12 分 Omega:N=16 的 Omega 网络有几级?每级有几个 2×2 交换单元?
  7. 12 分 MSI:一个块先被 P0 读,再被 P1 读,然后 P0 写。按写无效协议,说明共享状态大致如何变化。
  8. 14 分 主存带宽:Cache 块 64B,主存固定延迟 32 拍,总线 8B/拍。一次读块需要多少拍?若总线宽度翻倍为 16B/拍,需要多少拍?
参考答案
  1. CPI=`0.6×1+0.3×4+0.1×2=2.0`;MIPS=`1000/2=500`。
  2. 无冲突拍数=`4+30-1=33`。分支数约 6 条,罚拍 12,总计约 45 拍。
  3. 总块数=`32KB/64B=512`,2 路所以组数 256,索引 8 位,偏移 6 位。TLB 覆盖范围=`64×4KB=256KB`。
  4. 未命中 200 条,总罚拍=`200×3+80×6=1080`,平均每分支 `1.08` 拍。
  5. RAID1:`1-(0.08)^2=0.9936`;RAID0:`0.92²=0.8464`。
  6. 级数=`log2 16=4`;每级交换单元数=`16/2=8`。
  7. P0 读后可为 S/E;P1 也读后两者共享 S;P0 写时发无效,使 P1 副本 I,P0 变 M。
  8. 传输 64B 需 `64/8=8` 拍,总计 `32+8=40` 拍。翻倍后传输 4 拍,总计 36 拍。

完整卷 7

  1. 12 分 并行加速:某程序 80% 可并行,在 8 个处理器上运行。忽略通信开销,按 Amdahl 定律求加速比。
  2. 12 分 Cache:Cache 命中时间 1 拍,miss 率 3%,miss penalty 40 拍,求 AMAT。若把 miss 率降到 2%,AMAT 降到多少?
  3. 12 分 写回:写回 Cache,miss 率 5%,块 128B,一次事务 32B,40% 被替换块为脏块。每次访存平均下级事务数是多少?
  4. 14 分 流水线调度:序列 `LW R1,0(R2); ADD R3,R1,R4; SUB R5,R6,R7; SW 0(R2),R3`。有正常定向和 store-data 定向时,如何重排以消除 load-use 停顿?
  5. 12 分 MTTF:三个必要部件串联,MTTF 分别为 1,000,000h、2,000,000h、500,000h。求系统 MTTF。
  6. 12 分 静态网络:n 维超立方体有多少节点、每个节点度数是多少、直径是多少?
  7. 12 分 同步:比较 test-and-set 锁和 LL/SC 锁在总线流量上的直觉差异。
  8. 14 分 向量处理:说明向量处理为什么适合数组循环,以及它和普通循环展开的区别。
参考答案
  1. 加速比=`1/(0.2+0.8/8)=3.33`。
  2. AMAT=`1+0.03×40=2.2`;miss 率 2% 时 `1+0.02×40=1.8`。
  3. 调入整块 4 次,脏块写回 4 次,平均=`0.05×(4+0.4×4)=0.28` 次事务。
  4. 可改为 `LW R1,0(R2); SUB R5,R6,R7; ADD R3,R1,R4; SW 0(R2),R3`。用独立的 `SUB` 隔开 load 和使用者,`ADD→SW` 数据可由 store-data 定向解决。
  5. 失效率=`1e-6+0.5e-6+2e-6=3.5e-6`,MTTF≈285,714h。
  6. 节点数 `2^n`,每节点度数 `n`,直径 `n`。
  7. test-and-set 反复写/抢锁,容易产生大量无效和总线事务;LL/SC 可先本地读并只在 SC 时尝试写,失败后重试,通常流量更低。
  8. 向量处理把一条向量指令作用于多个元素,硬件按流水线连续处理;循环展开仍是多条标量指令,主要增加独立指令供调度。

完整卷 8

  1. 12 分 远程访问:16 处理器多处理机,处理器 2GHz,基本 CPI=1。远程访问 200ns,0.5% 指令远程访问且挂起。求实际 CPI。
  2. 12 分 TLB:基本 CPI=1.5,每条指令平均产生 1.2 次地址转换,TLB miss 率 0.1%,TLB miss 额外 30 拍。若该口径按所有地址转换计算,额外 CPI 是多少?
  3. 12 分 Cache 地址:128KB、4 路组相联 Cache,块大小 64B,32 位地址。求组数、索引位、偏移位、标记位。
  4. 14 分 BTB/折叠:分支占 8%,BTB 命中率 90%,BTB miss 罚 3 拍;命中后预测精度 95%,预测错罚 5 拍。若 BTB 命中且预测正确可视为 0 额外开销,求分支额外 CPI。
  5. 12 分 RAID10/01:4 块盘,单盘可靠度 0.96。分别按 RAID10 和 RAID01 计算阵列可靠度,并说明谁更高。
  6. 12 分 互连函数:N=16,σ 为 4 位循环左移。求 `σ(11)` 与 `σ(σ(11))`。
  7. 12 分 目录协议:64 处理器目录协议若采用全位向量记录共享者,每个目录项至少需要多少共享者位?目录项是按处理器还是按内存块维护?
  8. 14 分 流水线:解释为什么 `LW` 后面插入一条无关指令通常能消除 load-use 停顿,而 `ALU→ALU` 在有定向时通常不需要停。
参考答案
  1. 周期 0.5ns,远程开销 `200/0.5=400` 拍。实际 CPI=`1+0.005×400=3`。
  2. 额外 CPI=`1.2×0.001×30=0.036`。
  3. 总块数=`128KB/64B=2048`,4 路得 512 组;索引 9 位,偏移 6 位,标记 `32-9-6=17` 位。
  4. 额外 CPI=`0.08×(0.10×3+0.90×0.05×5)=0.042`。
  5. RAID10:每个镜像对 `1-0.04²=0.9984`,两对都正常 `0.9984²=0.9968`。RAID01:每个条带组 `0.96²=0.9216`,两个条带组镜像 `1-(1-0.9216)²=0.99385`。RAID10 更高。
  6. `11=1011`,循环左移得 `0111=7`;再左移得 `1110=14`。
  7. 至少 64 位共享者位;目录项按内存块维护,记录哪些处理器持有该块副本。
  8. `LW` 的数据通常到 MEM 末才可用,下一条进 EX 太早,所以要隔一拍;插入无关指令正好把距离拉开。ALU 结果 EX 末产生,可转发给下一条 EX 使用。

完整卷 9

  1. 12 分 CPU 时间:某程序 2×109 条指令,CPI=1.5,主频 1GHz。求运行时间。若主频提高 25% 但 CPI 增加到 1.8,求新时间和加速比。
  2. 12 分 Cache 事务:Cache 块 96B,一次内存事务 32B。一次读 miss 调入整块要几次事务?若 miss 率 4%,且只考虑读 miss 调入,每次访存平均读事务数是多少?
  3. 12 分 写 miss:解释写 miss 时写分配和不写分配的事务差异。以块 64B、事务 16B 为例,写分配至少需要几次读块事务?不写分配通常需要几次写事务?
  4. 14 分 分支预测:二位饱和计数器初始为强跳转。某循环分支执行 10 次,前 9 次跳转,最后 1 次不跳。求预测正确率。
  5. 12 分 RC 结构可靠性:4 块盘 RAID10,单盘可靠度 0.95;两个阵列控制器并联,每个 0.9;通道适配器可靠度 0.95 串联。求系统可靠度。
  6. 12 分 互连函数:N=16,求 `PM2+1(6)`、`PM2-2(1)`、`Cube0(10)`。
  7. 12 分 一致性:写无效协议中,一个共享块被 P0 写时,其他处理器的副本发生什么?若某块处于 M 状态而另一个处理器读它,通常需要发生什么?
  8. 14 分 ILP 技术:列出四种提高指令级并行的技术,并说明其中一种的基本作用。
参考答案
  1. 原时间=`2e9×1.5/1e9=3s`。新时间=`2e9×1.8/1.25e9=2.88s`,加速比=`3/2.88=1.04`。
  2. `96/32=3` 次;平均=`0.04×3=0.12` 次/访存。
  3. 写分配先把整块调入 Cache,再修改块;64B/16B=4 次读块事务。不写分配通常直接把要写的数据写到下一级,不调入整块,按题目事务粒度常记 1 次写事务。
  4. 强跳转会一直预测跳转,前 9 次全对,最后退出错 1 次,正确率 90%。
  5. 磁盘镜像对 `1-0.05²=0.9975`,两对条带化 `0.9975²≈0.9950`;控制器并联 `0.99`;总可靠度≈`0.99×0.95×0.9950=0.9358`。
  6. `6+2=8`;`1-4 mod 16=13`;`10=1010` 翻转最低位得 `1011=11`。
  7. 其他副本被置为无效 I;读 M 块时,拥有者要提供最新数据,常伴随写回/干预,状态可能转为共享。
  8. 例如动态调度、寄存器重命名、分支预测、推测执行、多发射、循环展开。寄存器重命名可消除名字相关,减少假依赖。

完整卷 10

  1. 12 分 Cache/TLB 综合:100% 命中 Cache 时 CPI=1.4。Cache miss 率 1%,每条指令访存 1.3 次。块 64B,主存固定延迟 32 拍,传输 8B/拍;写回法,50% 被替换块为脏块。求理想 TLB 下实际 CPI。若 Cache miss 产生的地址有 0.2% TLB miss,额外 40 拍,并入 miss penalty 后 CPI 为多少?
  2. 12 分 多发射:3 段标量流水线执行 60 条无冲突指令需要多少 Δt?若 4 发射且完全无相关冲突,近似分成 15 组发射,需要多少 Δt?
  3. 12 分 BTB CPI:条件分支占 6%,基本 CPI=1。BTB 命中率 82%,不命中 3 拍;命中后预测精度 91%,预测错 7 拍。求实际 CPI。
  4. 14 分 RAID10:8 块盘组成 4 个镜像对再条带化,单盘可靠度 0.97;控制器可靠度 0.98 串联。求系统可靠度。
  5. 12 分 Omega:N=8,分析两条连接 1→2 与 5→6 是否必然冲突。说明判断 Omega 阻塞题的一般步骤。
  6. 12 分 自旋锁:若 i 个处理器同时争用一个基于原子交换的锁,按“i 次读锁、i 次尝试写锁、1 次释放锁”的粗略模型,获得并释放一次锁产生多少总线事务?i=6 时是多少?
  7. 12 分 多体存储:8 个存储体可并行准备数据,每个固定延迟 32 拍;总线 8B/拍,Cache 块 64B。为什么一次取块不是 32 拍?总共约多少拍?
  8. 14 分 综合简答:考试遇到 Cache/TLB/CPI 综合题时,列出做题顺序。
参考答案
  1. 读入块开销 `32+64/8=40` 拍;脏块写回也 40 拍,平均 miss penalty=`40+0.5×40=60`。CPI=`1.4+1.3×0.01×60=2.18`。并入 TLB 后 penalty=`60+0.002×40=60.08`,CPI≈`1.4+1.3×0.01×60.08=2.18104`。
  2. 标量:`3+60-1=62Δt`。4 发射分 15 组:`3+15-1=17Δt`。
  3. CPI=`1+0.06×(0.18×3+0.82×0.09×7)=1.063396`。
  4. 镜像对可靠度=`1-0.03²=0.9991`;4 对条带化 `0.9991^4≈0.9964`;系统可靠度≈`0.98×0.9964=0.9765`。
  5. 不能只看终点是否不同,要逐级跟踪。一般步骤:写源和目的二进制,按寻径规则列每一级控制位,标出每条连接所在开关和出口;同一级同一开关同一出口被两条连接占用就阻塞。
  6. 事务数=`2i+1`;i=6 时为 13 次。
  7. 32 拍只是各存储体准备数据的固定延迟;数据还要通过总线传给处理器。64B 在 8B/拍总线上需 8 拍,所以约 `32+8=40` 拍。
  8. 先定基本 CPI 是否已含命中时间;再算每次 miss penalty:固定延迟、传输时间、脏块写回、TLB 是否并入;再乘 miss 率和每条指令访存次数;最后加回基本 CPI。

完整卷 11-20:详细答案版

这 10 套是专门给复盘用的。每套 8 大题,题目不重复前面的参数;答案都按“识别题型、公式、代入、结论、易错点”展开。

详细卷导航

先选一套卷子做题,再逐题展开答案。答案会额外给出“考场写法”和“评分点”。

120 道速测

每组 10 题。建议先看题目在纸上写答案,再展开该组答案。

1. 单位与定量分析

  1. 4GHz 的周期是多少 ns?
  2. 250ns 在 2GHz 下是多少拍?
  3. 10-6s 是什么单位?
  4. CPU 时间公式写出三个乘积项。
  5. 频率 1GHz、CPI=2,对应多少 MIPS?
  6. Amdahl 中 f 是改进前比例还是改进后比例?
  7. 40% 时间加速 10 倍,最大总加速比是多少?
  8. 基本 CPI=1,2% 指令各多停 5 拍,实际 CPI?
  9. “前者比后者快多少”通常用哪个 CPI 比哪个 CPI?
  10. MTTF 是平均失效前时间还是平均修复时间?
答案

0.25ns;500 拍;微秒;IC×CPI×时钟周期;500 MIPS;改进前;`1/(0.6+0.04)=1.5625`;1.1;后者 CPI / 前者 CPI;平均失效前时间。

2. 流水线停顿

  1. RAW 是读后写、写后读还是写后写?
  2. 有正常定向时,ALU 结果给下一条 ALU 用通常停几拍?
  3. 有正常定向时,Load 结果给下一条 ALU 用通常停几拍?
  4. Load 后隔一条再用,通常停几拍?
  5. 没有定向时,消费者为什么要等更久?
  6. 分支排空策略为什么慢?
  7. 预测分支失败就是默认预测什么?
  8. 延迟槽里应放什么指令?
  9. 最后一轮循环为什么还要加尾巴?
  10. 时空图横轴和纵轴分别是什么?
答案

写后读;0;1;0;要等写回寄存器;分支没确定前不取后续有效指令;不跳/顺序执行;无论跳不跳都能安全执行的指令;最后一条还没走完后续阶段;时间和流水段/指令。

3. ILP、超标量、VLIW

  1. ILP 中文是什么?
  2. 超标量靠硬件还是编译器动态发射?
  3. VLIW 靠谁把多条操作打包?
  4. 超流水线提高什么频率?
  5. 资源重复的典型例子说两个。
  6. 时间重叠的典型例子是什么?
  7. 寄存器重命名主要消除哪两类假相关?
  8. 保留站属于哪种动态调度思想?
  9. ILP 越高,分支预测要求怎样?
  10. 多发射的理想 CPI 下限约是多少?
答案

指令级并行;硬件;编译器;流水线启动频率;多个 ALU、多端口寄存器/分离 Cache;流水线;WAR、WAW;Tomasulo;更高;约 1/发射宽度。

4. 分支预测与 BTB

  1. BHT/BHD 管跳不跳还是跳去哪?
  2. BTB 管跳不跳还是跳去哪?
  3. BTB 用什么作为标识查表?
  4. BTB miss 时是否已经使用 BTB 目标路径?
  5. 一位预测器为什么循环常错两次?
  6. branch folding 除目标地址外还缓存什么?
  7. 无条件跳转适合放 BTB 吗?
  8. 预测错后错误路径指令怎么办?
  9. BTB 命中率提高只影响哪一项开销?
  10. 预测精度提高只影响哪一项开销?
答案

跳不跳;跳去哪;分支指令 PC;没有;第一轮入口和最后退出;目标指令;适合;清空/作废;BTB 不命中项;BTB 命中后的错预测项。

5. Cache/TLB

  1. 直接映像地址字段包含哪三类?
  2. 组相联地址字段中的组号由什么决定?
  3. 块内偏移位数由什么决定?
  4. L2 局部 miss 率分母是什么?
  5. L2 全局 miss 率分母是什么?
  6. AMAT 问平均访问时间时要不要减 L1 命中时间?
  7. 问“停顿时间”且基本 CPI 已含命中访问时要不要减?
  8. TLB 是什么的 Cache?
  9. TLB hit 后得到虚拟页号还是物理页号?
  10. 页失效和 TLB miss 哪个通常更贵?
答案

Tag/Index/Offset;组数;块大小;L1 miss 次数;总访存次数;不要;要;页表项;物理页号;页失效。

6. 写策略与主存带宽

  1. 写命中策略有哪两种?
  2. 写不命中策略有哪两种?
  3. 写分配是什么意思?
  4. 不写分配是什么意思?
  5. 写直达常配写分配还是不写分配?
  6. 写回常配写分配还是不写分配?
  7. 写回法什么时候写回主存?
  8. 脏位 dirty 表示什么?
  9. 写缓冲主要服务哪种写策略?
  10. victim buffer 主要减少哪类失效?
答案

写直达、写回;写分配、不写分配;miss 时先把块调入 Cache 再写;直接写下级不调入 Cache;不写分配;写分配;脏块被替换/一致性要求/刷回时;Cache 中块被改过且内存旧;写直达;冲突失效。

7. I/O 与 RAID

  1. 可靠性 R 是概率还是时间?
  2. 可用性 A 的公式?
  3. 串联系统可靠度怎么合成?
  4. 并联系统可靠度怎么合成?
  5. RAID0 有冗余吗?
  6. RAID1 的关键词是什么?
  7. RAID5 的关键词是什么?
  8. RAID6 可容忍几块盘失效?
  9. RAID10 是先镜像还是先条带?
  10. RAID5 小写常见四个动作是什么?
答案

概率;`MTTF/(MTTF+MTTR)`;相乘;`1-全坏概率`;没有;镜像;分布式校验;两块;先镜像再条带;读旧数据、读旧校验、写新数据、写新校验。

8. 互连网络

  1. 静态互连网络有没有中间可变开关?
  2. 动态互连网络的连接状态能不能变?
  3. 环的结点度通常是多少?
  4. n 维超立方体结点度是多少?
  5. 超立方体距离怎么求?
  6. PM2+i 的公式?
  7. Cubei 的动作?
  8. shuffle 常见动作?
  9. Omega 的 2×2 开关基础状态有哪些?
  10. 多级互联网络相比交叉开关的主要好处?
答案

没有;能;2;n;编号异或后 1 的个数;`x+2^i mod N`;第 i 位取反;循环移位;直连、交换;硬件开销低。

9. Omega 路由

  1. N=16 的 Omega 网络有几级?
  2. 每级有多少个 2×2 开关?
  3. 总开关数公式?
  4. 目的地址逐位寻径看谁的二进制位?
  5. 异或寻径先算什么?
  6. 源目的相同的异或结果?
  7. 阻塞发生在输入端相同还是开关出口冲突?
  8. Omega 是阻塞网络还是非阻塞网络?
  9. perfect shuffle 是级内交换还是级间连接?
  10. STARAN 级控制常实现什么功能?
答案

4;8;`N/2 × log2N`;目的地址;源地址异或目的地址;0;开关出口冲突;阻塞网络;级间连接;交换功能。

10. 多处理器与一致性

  1. UMA 访问所有内存延迟是否大致相同?
  2. NUMA 中本地和远程访问哪个慢?
  3. 监听协议依赖什么共享介质?
  4. 目录协议更适合什么规模?
  5. Cache 一致性关注同一地址还是不同地址顺序?
  6. 存储一贯性关注什么?
  7. Invalidate 写时做什么?
  8. Update 写时做什么?
  9. MSI 的 S 表示什么?
  10. MSI 的 I 表示什么?
答案

是;远程;总线;较大规模;同一地址多副本;不同地址读写呈现顺序;作废其他副本;广播新值;共享干净副本;无效副本。

11. 同步与原子操作

  1. LL 的英文全称?
  2. SC 的英文全称?
  3. LL/SC 能实现原子交换吗?
  4. SC 失败后通常怎么办?
  5. 旋转锁忙等时 CPU 是否一直退出等待?
  6. 支持 Cache 一致性后,等待者可以在哪里反复读锁?
  7. 屏障同步要求多少进程到达后释放?
  8. counterlock 保护什么?
  9. release 变量控制什么?
  10. sense reversing 中 local_sense 是共享还是私有?
答案

Load Linked;Store Conditional;能;重试;不是,会反复检查;本地 Cache;全部;计数器更新的原子性;是否放行;每个进程私有。

12. 综合判定

  1. 题目问“平均访存时间”优先用哪个公式?
  2. 题目问“每条指令停顿”还要乘什么?
  3. 题目问“事务次数”先看块大小还是先看 CPI?
  4. 题目问“可靠性框图”先找串联还是先代数?
  5. 题目问“无阻塞完成吗”要检查什么?
  6. 题目问“目录维护多少”按处理器数还是块数?
  7. 题目问“前者快多少”最后比较时间还是可靠度?
  8. 题目问“局部不命中率”先找分母还是分子?
  9. 题目出现“写分配”说明讨论读还是写 miss?
  10. 题目出现“远程请求处理器挂起”说明要加什么?
答案

AMAT;每条指令访存次数;块大小和事务大小;先找串并联结构;每级开关出口是否冲突;块数;执行时间/CPI;分母;写 miss;远程访问停顿周期。

错题复盘表

错题类型复盘问题下次做题第一步
BTB/分支我是把 BTB miss 和预测错混在一起了吗?先写 `miss 项 + 命中后错预测项`。
写事务我有没有把“调入整块”和“写一个事务”混掉?先列读命中、写命中、读 miss、写 miss 四格。
Cache/TLBTLB 是并入 miss penalty 还是全访存额外加?圈出题目里 TLB miss 的触发对象。
流水线我是不会看依赖,还是不会数尾巴?先标生产者和消费者,再数循环次数和最后尾巴。
互连网络我只是算了目的地,还是检查了开关冲突?逐级列开关出口占用。
可靠性我把并联冗余当串联必要部件了吗?先画“全好才好”还是“至少一个好”。