先做完整卷 1-10,练“读题、列式、写单位、控时间”。不要一上来翻答案。
计算机系统结构练习库
这里不是把刚做过的 A 卷原题换个排版,而是用同一批考法生成新参数、新场景的完整卷。完整卷练考试节奏,速测题检查知识点是否真的记住。
怎么练
再做完整卷 11-20。每题答案拆成识别、公式、代入、结论、易错点和评分点。
最后刷 120 道速测,只检查概念和决策树有没有记住。
完整卷 1
建议限时 100-120 分钟。答案折叠在每题下面,先写完过程再展开。
1. CPI、MIPS 与 Amdahl
- 一台 800MHz 机器执行程序,整数指令占 55%,CPI=1;访存指令占 30%,CPI=3;浮点指令占 15%,CPI=4。求有效 CPI 和 MIPS。
- 若把访存指令的 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`。
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`。
3. Cache 写事务
一台机器 92% 访存命中 Cache,其中 25% 是写。Cache 块 64B,一次内存事务 32B,写失效采用写分配。
- 写直达时,一次访存平均产生多少下级事务?
- 写回时,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`。
4. 写回、脏块和 TLB
基本 CPI 为 1.6,每条指令平均访问存储器 1.25 次。Cache 块 40B,主存固定延迟 30 拍,传输速率 8B/拍;Cache miss 率 2%,25% 被替换块为脏块,写回法。
- 理想 TLB 下实际 CPI 是多少?
- 若 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`。
5. RAID10 变体
4 块磁盘组成 RAID10,两组镜像再条带。系统只有一个必要控制器,可靠度 0.98;每块磁盘可靠度 0.96。忽略其他部件。写出可靠度表达式并计算。
参考答案
一组镜像可靠度 = `1-(1-0.96)^2 = 0.9984`。两组都要正常,再乘控制器。
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`。
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` 倍。
8. 停顿判断与多发射
- 有正常定向时,`LW R1,0(R2)` 后紧跟 `ADD R3,R1,R4`,停几拍?
- `ADD R1,R2,R3` 后紧跟 `SW 0(R5),R1`,在有 store-data 定向时停几拍?
- `SUB R4,R3,R2` 后紧跟 `BNZ R4,L`,按本课常见口径停几拍?
- 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
- 12 分 定量分析:某 1.2GHz 机器中 ALU 指令占 50%、CPI=1;访存指令占 35%、CPI=2;分支占 15%、CPI=1.5。求有效 CPI 和 MIPS。若访存 CPI 降到 1.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`。按本课口径判断数据相关停顿,并求一轮至少多少拍。
- 12 分 BTB:条件分支占 6%,基本 CPI 为 1.1。BTB 命中率 70%,不命中开销 4 拍;命中后预测精度 88%,预测错开销 8 拍。求实际 CPI。
- 14 分 两级 Cache:L1 命中时间 1 拍,L1 miss 率 3%;L2 命中时间 8 拍,L2 局部 miss 率 25%;主存开销 100 拍。求 AMAT。若每条指令访存 1.4 次且基本 CPI 已含 L1 命中时间,求存储停顿/指令。
- 12 分 RAID 可靠性:6 块磁盘组成 RAID10,即 3 个镜像对条带化。单盘可靠度 0.97;两个阵列控制器并联,每个 0.95;通道适配器可靠度 0.98 串联。求系统可靠度。
- 12 分 互连函数:N=16,计算 `Cube2(13)`、`PM2+2(14)`、`σ(9)`。其中 σ 为 4 位循环左移。
- 12 分 远程访存:处理器 2GHz,基本 CPI=0.8。远程访问 240ns,0.3% 指令需要远程访问且处理器挂起。求实际 CPI,以及只有本地访问时比它快多少。
- 14 分 简答:分别解释写直达、写回、写分配、不写分配各自回答的是写操作中的哪个问题。
参考答案
- 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`。
- `LW→ADD` 停 1 拍,`ADDI→BNZ` 按常见口径停 1 拍,其余可定向解决。6 条指令基础 `5+6-1=10` 拍,总计约 12 拍。
- CPI=`1.1+0.06×(0.30×4+0.70×0.12×8)=1.21232`。
- AMAT=`1+0.03×(8+0.25×100)=1.99` 拍。停顿/指令=`(1.99-1)×1.4=1.386` 拍。
- 镜像对可靠度=`1-0.03²=0.9991`;3 对条带化要求都正常,`0.9991³≈0.9973`。控制器并联可靠度=`1-0.05²=0.9975`。总可靠度≈`0.9975×0.98×0.9973=0.9749`。
- `13=1101`,翻转第 2 位得 `1001=9`;`14+4 mod 16=2`;`σ(1001)=0011=3`。
- 周期 0.5ns,远程开销 `240/0.5=480` 拍,CPI=`0.8+0.003×480=2.24`。本地情况 CPI=0.8,快 `2.24/0.8=2.8` 倍。
- 写直达/写回处理写命中后是否立刻写下一级;写分配/不写分配处理写 miss 时是否把块调入 Cache。
完整卷 3
- 12 分 可靠性:某磁盘子系统由 8 块磁盘、1 个控制器、1 个电源、1 个风扇串联构成。磁盘 MTTF=2,000,000h,控制器 MTTF=1,000,000h,电源和风扇各 500,000h。假设指数分布、独立失效,求系统 MTTF。
- 12 分 写事务:访存命中率 95%,40% 访存为写。Cache 块 128B,一次内存事务 64B,写 miss 采用写分配。分别求写直达和写回(20% 被替换块为脏块)下每次访存平均下级事务数。
- 12 分 分支预测:一位预测器初始预测“不跳”。某循环每轮执行 12 次分支,前 11 次跳转,最后 1 次不跳。求一轮预测准确率;若重复执行很多轮,稳定后每轮错几次?
- 14 分 Cache 地址划分:32 位地址,64KB 直接映像 Cache,块大小 64B。求块内偏移位、索引位、标记位。
- 12 分 流水线判定:有正常定向时,判断以下相邻关系停几拍:`LW→立即用`、`ALU→ALU`、`ALU→BNZ 条件寄存器`、无 RAW。
- 12 分 Omega 寻径:N=8,源 3 到目的 6。写出目的地址逐位寻径的控制位;再写出源地址异或目的地址寻径的控制位。
- 12 分 同步:解释 LL/SC 中 LL “盯住”的对象是什么,SC 成功和失败分别说明什么。
- 14 分 ILP 简答:说明寄存器重命名为什么能消除 WAR/WAW,却不能消除 RAW。
参考答案
- 系统失效率=`8/2000000+1/1000000+1/500000+1/500000=9/1000000`,MTTF≈111,111h。
- 调入整块需 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`。
- 第一轮第 1 次跳转错,最后退出错,中间 10 次对,准确率 `10/12=83.33%`。稳定后上一轮退出留下“不跳”,所以每轮仍错 2 次。
- 块内偏移 `log2 64=6` 位;Cache 行数 `64KB/64B=1024=2^10`,索引 10 位;标记 `32-10-6=16` 位。
- 依次为 1、0、1、0 拍。
- 目的 6=`110`,目的地址逐位寻径控制位为 110。源 3=`011`,`011 xor 110=101`,异或寻径控制位为 101。
- LL 盯住的是某个内存地址/存储单元;SC 成功表示从 LL 到 SC 期间该地址未被别人写过并完成写入;SC 失败表示期间被别人改过或保留被破坏,需要重试。
- WAR/WAW 是名字相关,给不同写结果分配不同物理寄存器即可消除;RAW 是真实数据依赖,消费者必须等生产者产生值。
完整卷 4
- 12 分 两级 Cache:1000 次访存中 L1 miss 50 次,L2 miss 15 次。求 L1 miss 率、L2 局部 miss 率、L2 全局 miss 率。若 L1 命中 1 拍,L2 命中 10 拍,主存 80 拍,求 AMAT。
- 12 分 BTB:条件分支占 7%,基本 CPI=1。BTB 命中率 75%,不命中 3 拍;命中后预测精度 88%,预测错 9 拍。求实际 CPI。若 BTB 命中率提高到 90%,重新计算。
- 12 分 伪相联 Cache:直接映像 miss 率 6%,两路组相联 miss 率 4%。伪相联第一位置命中 1 拍,第二位置伪命中额外 2 拍,真正 miss 开销 50 拍。求平均访问时间。
- 14 分 RAID10:4 块磁盘组成 RAID10,单盘可靠度 0.95;两个控制器并联,每个 0.90;通道适配器可靠度 0.97 串联。求系统可靠度。
- 12 分 指令调度:给定 `LW R1,0(R2); ADD R3,R1,R4; ADDI R2,R2,#4; SW -4(R2),R3; BNZ R2,L`,重排指令以尽量消除 load-use 停顿,且不改变语义。
- 12 分 Omega 阻塞:N=8,判断连接 0→4 与 1→5 能否同时无阻塞传输。用第一级开关出口说明理由。
- 12 分 原子操作:写出“用 LL/SC 实现对内存单元加 1”的伪代码,并说明失败时为什么要重试。
- 14 分 分支预测简答:区分 BHT/BHB、BTB、branch folding 分别解决什么问题。
参考答案
- 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` 拍。
- 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`。
- 第二位置命中率可看作 `6%-4%=2%`,真正 miss 率 4%。平均=`1+0.02×2+0.04×50=3.04` 拍。
- 镜像对可靠度=`1-0.05²=0.9975`,两对条带化可靠度=`0.9975²≈0.9950`。控制器并联=`1-0.1²=0.99`。总可靠度≈`0.99×0.97×0.9950=0.9554`。
- 一种可行顺序:`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)`。
- 0 与 1 进入同一个第一级 2×2 开关;目的 4=`100`、5=`101`,第一级都要走高出口,因此争同一出口,阻塞。
- `try: LL R1,0(Ra); ADDI R1,R1,#1; SC R1,0(Ra); BEQZ R1,try`。失败说明期间有人改过该地址,本次写不能算原子完成。
- BHT/BHB 预测跳不跳;BTB 保存分支 PC 到目标地址,解决跳到哪里;branch folding 进一步把目标指令也缓存起来,目标是让成功分支少停甚至零停顿。
完整卷 5
- 12 分 Amdahl:某程序 40% 时间花在存储系统上。若把存储部分加速 2 倍,求总加速比。若程序原运行 20s,改进后运行多久?
- 12 分 远程访存:处理器 3GHz,基本 CPI=1.1。远程访存 150ns,0.2% 指令需要远程访问且处理器挂起。求实际 CPI。
- 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 是多少?
- 14 分 写分配:访存命中率 90%,30% 是写,块 128B,事务 64B。写直达下,分别计算不写分配和写分配时每次访存平均下级事务数。
- 12 分 RAID5:4 块盘 RAID5 进行一次小写。说明读改写需要几次磁盘 I/O。若一块盘失效,读一个丢失数据块需要读几块幸存盘?
- 12 分 互连函数:N=32,求 `PM2+4(29)`、`PM2-0(0)`、`Cube4(7)`。
- 12 分 屏障同步:普通计数屏障中 `count`、`total`、`release` 分别表示什么?为什么循环复用屏障可能出问题?
- 14 分 ILP:比较超标量、VLIW、向量处理机三者“并行性由谁发现/表达”。
参考答案
- 加速比=`1/(0.6+0.4/2)=1.25`;改进后时间=`20/1.25=16s`。
- 3GHz 周期约 0.333ns,150ns≈450 拍。CPI=`1.1+0.002×450=2.0`。
- 并入口径:平均额外=`0.015×(64+0.002×20)=0.9606` 拍/访存。全访存口径:额外 CPI=`1.2×0.002×20=0.048`。
- 读 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`。
- 读旧数据、读旧校验、写新数据、写新校验,共 4 次 I/O。4 盘 RAID5 坏 1 盘时,重构一个丢失块要读其余 3 块。
- `29+16 mod 32=13`;`0-1 mod 32=31`;`7=00111` 翻转最高位得 `10111=23`。
- `count` 记录已到达进程数,`total` 是应到达总数,`release` 是放行信号。循环复用时,快进程可能进入下一轮并修改同一屏障变量,慢进程还停在上一轮,产生混乱;sense-reversing 用每轮翻转信号区分轮次。
- 超标量主要由硬件动态发射;VLIW 由编译器静态打包长指令;向量处理机由程序/编译器表达向量操作,硬件流水化处理大量同类数据。
完整卷 6
- 12 分 CPI/MIPS:某 1GHz 机器中 ALU 指令占 60%、CPI=1;访存指令占 30%、CPI=4;分支占 10%、CPI=2。求平均 CPI 和 MIPS。
- 12 分 流水线:4 级流水线执行 30 条无冲突指令需多少拍?若其中 20% 是分支,每个分支预测错罚 2 拍,假设都预测错,总拍数约多少?
- 12 分 Cache/TLB 地址:32KB、2 路组相联 Cache,块大小 64B,32 位地址。求组数、索引位、块内偏移位。若 TLB 64 项、页大小 4KB,TLB 覆盖范围是多少?
- 14 分 BTB 统计:程序执行 1000 条分支,BTB 命中 800 条,其中预测错 80 条;BTB 未命中罚 3 拍,预测错罚 6 拍。求总罚拍和平均每条分支罚拍。
- 12 分 RAID:两个磁盘做 RAID1,单盘可靠度 0.92,求阵列可靠度;两个磁盘做 RAID0,可靠度是多少?
- 12 分 Omega:N=16 的 Omega 网络有几级?每级有几个 2×2 交换单元?
- 12 分 MSI:一个块先被 P0 读,再被 P1 读,然后 P0 写。按写无效协议,说明共享状态大致如何变化。
- 14 分 主存带宽:Cache 块 64B,主存固定延迟 32 拍,总线 8B/拍。一次读块需要多少拍?若总线宽度翻倍为 16B/拍,需要多少拍?
参考答案
- CPI=`0.6×1+0.3×4+0.1×2=2.0`;MIPS=`1000/2=500`。
- 无冲突拍数=`4+30-1=33`。分支数约 6 条,罚拍 12,总计约 45 拍。
- 总块数=`32KB/64B=512`,2 路所以组数 256,索引 8 位,偏移 6 位。TLB 覆盖范围=`64×4KB=256KB`。
- 未命中 200 条,总罚拍=`200×3+80×6=1080`,平均每分支 `1.08` 拍。
- RAID1:`1-(0.08)^2=0.9936`;RAID0:`0.92²=0.8464`。
- 级数=`log2 16=4`;每级交换单元数=`16/2=8`。
- P0 读后可为 S/E;P1 也读后两者共享 S;P0 写时发无效,使 P1 副本 I,P0 变 M。
- 传输 64B 需 `64/8=8` 拍,总计 `32+8=40` 拍。翻倍后传输 4 拍,总计 36 拍。
完整卷 7
- 12 分 并行加速:某程序 80% 可并行,在 8 个处理器上运行。忽略通信开销,按 Amdahl 定律求加速比。
- 12 分 Cache:Cache 命中时间 1 拍,miss 率 3%,miss penalty 40 拍,求 AMAT。若把 miss 率降到 2%,AMAT 降到多少?
- 12 分 写回:写回 Cache,miss 率 5%,块 128B,一次事务 32B,40% 被替换块为脏块。每次访存平均下级事务数是多少?
- 14 分 流水线调度:序列 `LW R1,0(R2); ADD R3,R1,R4; SUB R5,R6,R7; SW 0(R2),R3`。有正常定向和 store-data 定向时,如何重排以消除 load-use 停顿?
- 12 分 MTTF:三个必要部件串联,MTTF 分别为 1,000,000h、2,000,000h、500,000h。求系统 MTTF。
- 12 分 静态网络:n 维超立方体有多少节点、每个节点度数是多少、直径是多少?
- 12 分 同步:比较 test-and-set 锁和 LL/SC 锁在总线流量上的直觉差异。
- 14 分 向量处理:说明向量处理为什么适合数组循环,以及它和普通循环展开的区别。
参考答案
- 加速比=`1/(0.2+0.8/8)=3.33`。
- AMAT=`1+0.03×40=2.2`;miss 率 2% 时 `1+0.02×40=1.8`。
- 调入整块 4 次,脏块写回 4 次,平均=`0.05×(4+0.4×4)=0.28` 次事务。
- 可改为 `LW R1,0(R2); SUB R5,R6,R7; ADD R3,R1,R4; SW 0(R2),R3`。用独立的 `SUB` 隔开 load 和使用者,`ADD→SW` 数据可由 store-data 定向解决。
- 失效率=`1e-6+0.5e-6+2e-6=3.5e-6`,MTTF≈285,714h。
- 节点数 `2^n`,每节点度数 `n`,直径 `n`。
- test-and-set 反复写/抢锁,容易产生大量无效和总线事务;LL/SC 可先本地读并只在 SC 时尝试写,失败后重试,通常流量更低。
- 向量处理把一条向量指令作用于多个元素,硬件按流水线连续处理;循环展开仍是多条标量指令,主要增加独立指令供调度。
完整卷 8
- 12 分 远程访问:16 处理器多处理机,处理器 2GHz,基本 CPI=1。远程访问 200ns,0.5% 指令远程访问且挂起。求实际 CPI。
- 12 分 TLB:基本 CPI=1.5,每条指令平均产生 1.2 次地址转换,TLB miss 率 0.1%,TLB miss 额外 30 拍。若该口径按所有地址转换计算,额外 CPI 是多少?
- 12 分 Cache 地址:128KB、4 路组相联 Cache,块大小 64B,32 位地址。求组数、索引位、偏移位、标记位。
- 14 分 BTB/折叠:分支占 8%,BTB 命中率 90%,BTB miss 罚 3 拍;命中后预测精度 95%,预测错罚 5 拍。若 BTB 命中且预测正确可视为 0 额外开销,求分支额外 CPI。
- 12 分 RAID10/01:4 块盘,单盘可靠度 0.96。分别按 RAID10 和 RAID01 计算阵列可靠度,并说明谁更高。
- 12 分 互连函数:N=16,σ 为 4 位循环左移。求 `σ(11)` 与 `σ(σ(11))`。
- 12 分 目录协议:64 处理器目录协议若采用全位向量记录共享者,每个目录项至少需要多少共享者位?目录项是按处理器还是按内存块维护?
- 14 分 流水线:解释为什么 `LW` 后面插入一条无关指令通常能消除 load-use 停顿,而 `ALU→ALU` 在有定向时通常不需要停。
参考答案
- 周期 0.5ns,远程开销 `200/0.5=400` 拍。实际 CPI=`1+0.005×400=3`。
- 额外 CPI=`1.2×0.001×30=0.036`。
- 总块数=`128KB/64B=2048`,4 路得 512 组;索引 9 位,偏移 6 位,标记 `32-9-6=17` 位。
- 额外 CPI=`0.08×(0.10×3+0.90×0.05×5)=0.042`。
- RAID10:每个镜像对 `1-0.04²=0.9984`,两对都正常 `0.9984²=0.9968`。RAID01:每个条带组 `0.96²=0.9216`,两个条带组镜像 `1-(1-0.9216)²=0.99385`。RAID10 更高。
- `11=1011`,循环左移得 `0111=7`;再左移得 `1110=14`。
- 至少 64 位共享者位;目录项按内存块维护,记录哪些处理器持有该块副本。
- `LW` 的数据通常到 MEM 末才可用,下一条进 EX 太早,所以要隔一拍;插入无关指令正好把距离拉开。ALU 结果 EX 末产生,可转发给下一条 EX 使用。
完整卷 9
- 12 分 CPU 时间:某程序 2×109 条指令,CPI=1.5,主频 1GHz。求运行时间。若主频提高 25% 但 CPI 增加到 1.8,求新时间和加速比。
- 12 分 Cache 事务:Cache 块 96B,一次内存事务 32B。一次读 miss 调入整块要几次事务?若 miss 率 4%,且只考虑读 miss 调入,每次访存平均读事务数是多少?
- 12 分 写 miss:解释写 miss 时写分配和不写分配的事务差异。以块 64B、事务 16B 为例,写分配至少需要几次读块事务?不写分配通常需要几次写事务?
- 14 分 分支预测:二位饱和计数器初始为强跳转。某循环分支执行 10 次,前 9 次跳转,最后 1 次不跳。求预测正确率。
- 12 分 RC 结构可靠性:4 块盘 RAID10,单盘可靠度 0.95;两个阵列控制器并联,每个 0.9;通道适配器可靠度 0.95 串联。求系统可靠度。
- 12 分 互连函数:N=16,求 `PM2+1(6)`、`PM2-2(1)`、`Cube0(10)`。
- 12 分 一致性:写无效协议中,一个共享块被 P0 写时,其他处理器的副本发生什么?若某块处于 M 状态而另一个处理器读它,通常需要发生什么?
- 14 分 ILP 技术:列出四种提高指令级并行的技术,并说明其中一种的基本作用。
参考答案
- 原时间=`2e9×1.5/1e9=3s`。新时间=`2e9×1.8/1.25e9=2.88s`,加速比=`3/2.88=1.04`。
- `96/32=3` 次;平均=`0.04×3=0.12` 次/访存。
- 写分配先把整块调入 Cache,再修改块;64B/16B=4 次读块事务。不写分配通常直接把要写的数据写到下一级,不调入整块,按题目事务粒度常记 1 次写事务。
- 强跳转会一直预测跳转,前 9 次全对,最后退出错 1 次,正确率 90%。
- 磁盘镜像对 `1-0.05²=0.9975`,两对条带化 `0.9975²≈0.9950`;控制器并联 `0.99`;总可靠度≈`0.99×0.95×0.9950=0.9358`。
- `6+2=8`;`1-4 mod 16=13`;`10=1010` 翻转最低位得 `1011=11`。
- 其他副本被置为无效 I;读 M 块时,拥有者要提供最新数据,常伴随写回/干预,状态可能转为共享。
- 例如动态调度、寄存器重命名、分支预测、推测执行、多发射、循环展开。寄存器重命名可消除名字相关,减少假依赖。
完整卷 10
- 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 为多少?
- 12 分 多发射:3 段标量流水线执行 60 条无冲突指令需要多少 Δt?若 4 发射且完全无相关冲突,近似分成 15 组发射,需要多少 Δt?
- 12 分 BTB CPI:条件分支占 6%,基本 CPI=1。BTB 命中率 82%,不命中 3 拍;命中后预测精度 91%,预测错 7 拍。求实际 CPI。
- 14 分 RAID10:8 块盘组成 4 个镜像对再条带化,单盘可靠度 0.97;控制器可靠度 0.98 串联。求系统可靠度。
- 12 分 Omega:N=8,分析两条连接 1→2 与 5→6 是否必然冲突。说明判断 Omega 阻塞题的一般步骤。
- 12 分 自旋锁:若 i 个处理器同时争用一个基于原子交换的锁,按“i 次读锁、i 次尝试写锁、1 次释放锁”的粗略模型,获得并释放一次锁产生多少总线事务?i=6 时是多少?
- 12 分 多体存储:8 个存储体可并行准备数据,每个固定延迟 32 拍;总线 8B/拍,Cache 块 64B。为什么一次取块不是 32 拍?总共约多少拍?
- 14 分 综合简答:考试遇到 Cache/TLB/CPI 综合题时,列出做题顺序。
参考答案
- 读入块开销 `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`。
- 标量:`3+60-1=62Δt`。4 发射分 15 组:`3+15-1=17Δt`。
- CPI=`1+0.06×(0.18×3+0.82×0.09×7)=1.063396`。
- 镜像对可靠度=`1-0.03²=0.9991`;4 对条带化 `0.9991^4≈0.9964`;系统可靠度≈`0.98×0.9964=0.9765`。
- 不能只看终点是否不同,要逐级跟踪。一般步骤:写源和目的二进制,按寻径规则列每一级控制位,标出每条连接所在开关和出口;同一级同一开关同一出口被两条连接占用就阻塞。
- 事务数=`2i+1`;i=6 时为 13 次。
- 32 拍只是各存储体准备数据的固定延迟;数据还要通过总线传给处理器。64B 在 8B/拍总线上需 8 拍,所以约 `32+8=40` 拍。
- 先定基本 CPI 是否已含命中时间;再算每次 miss penalty:固定延迟、传输时间、脏块写回、TLB 是否并入;再乘 miss 率和每条指令访存次数;最后加回基本 CPI。
完整卷 11-20:详细答案版
这 10 套是专门给复盘用的。每套 8 大题,题目不重复前面的参数;答案都按“识别题型、公式、代入、结论、易错点”展开。
120 道速测
每组 10 题。建议先看题目在纸上写答案,再展开该组答案。
1. 单位与定量分析
- 4GHz 的周期是多少 ns?
- 250ns 在 2GHz 下是多少拍?
- 10-6s 是什么单位?
- CPU 时间公式写出三个乘积项。
- 频率 1GHz、CPI=2,对应多少 MIPS?
- Amdahl 中 f 是改进前比例还是改进后比例?
- 40% 时间加速 10 倍,最大总加速比是多少?
- 基本 CPI=1,2% 指令各多停 5 拍,实际 CPI?
- “前者比后者快多少”通常用哪个 CPI 比哪个 CPI?
- MTTF 是平均失效前时间还是平均修复时间?
答案
0.25ns;500 拍;微秒;IC×CPI×时钟周期;500 MIPS;改进前;`1/(0.6+0.04)=1.5625`;1.1;后者 CPI / 前者 CPI;平均失效前时间。
2. 流水线停顿
- RAW 是读后写、写后读还是写后写?
- 有正常定向时,ALU 结果给下一条 ALU 用通常停几拍?
- 有正常定向时,Load 结果给下一条 ALU 用通常停几拍?
- Load 后隔一条再用,通常停几拍?
- 没有定向时,消费者为什么要等更久?
- 分支排空策略为什么慢?
- 预测分支失败就是默认预测什么?
- 延迟槽里应放什么指令?
- 最后一轮循环为什么还要加尾巴?
- 时空图横轴和纵轴分别是什么?
答案
写后读;0;1;0;要等写回寄存器;分支没确定前不取后续有效指令;不跳/顺序执行;无论跳不跳都能安全执行的指令;最后一条还没走完后续阶段;时间和流水段/指令。
3. ILP、超标量、VLIW
- ILP 中文是什么?
- 超标量靠硬件还是编译器动态发射?
- VLIW 靠谁把多条操作打包?
- 超流水线提高什么频率?
- 资源重复的典型例子说两个。
- 时间重叠的典型例子是什么?
- 寄存器重命名主要消除哪两类假相关?
- 保留站属于哪种动态调度思想?
- ILP 越高,分支预测要求怎样?
- 多发射的理想 CPI 下限约是多少?
答案
指令级并行;硬件;编译器;流水线启动频率;多个 ALU、多端口寄存器/分离 Cache;流水线;WAR、WAW;Tomasulo;更高;约 1/发射宽度。
4. 分支预测与 BTB
- BHT/BHD 管跳不跳还是跳去哪?
- BTB 管跳不跳还是跳去哪?
- BTB 用什么作为标识查表?
- BTB miss 时是否已经使用 BTB 目标路径?
- 一位预测器为什么循环常错两次?
- branch folding 除目标地址外还缓存什么?
- 无条件跳转适合放 BTB 吗?
- 预测错后错误路径指令怎么办?
- BTB 命中率提高只影响哪一项开销?
- 预测精度提高只影响哪一项开销?
答案
跳不跳;跳去哪;分支指令 PC;没有;第一轮入口和最后退出;目标指令;适合;清空/作废;BTB 不命中项;BTB 命中后的错预测项。
5. Cache/TLB
- 直接映像地址字段包含哪三类?
- 组相联地址字段中的组号由什么决定?
- 块内偏移位数由什么决定?
- L2 局部 miss 率分母是什么?
- L2 全局 miss 率分母是什么?
- AMAT 问平均访问时间时要不要减 L1 命中时间?
- 问“停顿时间”且基本 CPI 已含命中访问时要不要减?
- TLB 是什么的 Cache?
- TLB hit 后得到虚拟页号还是物理页号?
- 页失效和 TLB miss 哪个通常更贵?
答案
Tag/Index/Offset;组数;块大小;L1 miss 次数;总访存次数;不要;要;页表项;物理页号;页失效。
6. 写策略与主存带宽
- 写命中策略有哪两种?
- 写不命中策略有哪两种?
- 写分配是什么意思?
- 不写分配是什么意思?
- 写直达常配写分配还是不写分配?
- 写回常配写分配还是不写分配?
- 写回法什么时候写回主存?
- 脏位 dirty 表示什么?
- 写缓冲主要服务哪种写策略?
- victim buffer 主要减少哪类失效?
答案
写直达、写回;写分配、不写分配;miss 时先把块调入 Cache 再写;直接写下级不调入 Cache;不写分配;写分配;脏块被替换/一致性要求/刷回时;Cache 中块被改过且内存旧;写直达;冲突失效。
7. I/O 与 RAID
- 可靠性 R 是概率还是时间?
- 可用性 A 的公式?
- 串联系统可靠度怎么合成?
- 并联系统可靠度怎么合成?
- RAID0 有冗余吗?
- RAID1 的关键词是什么?
- RAID5 的关键词是什么?
- RAID6 可容忍几块盘失效?
- RAID10 是先镜像还是先条带?
- RAID5 小写常见四个动作是什么?
答案
概率;`MTTF/(MTTF+MTTR)`;相乘;`1-全坏概率`;没有;镜像;分布式校验;两块;先镜像再条带;读旧数据、读旧校验、写新数据、写新校验。
8. 互连网络
- 静态互连网络有没有中间可变开关?
- 动态互连网络的连接状态能不能变?
- 环的结点度通常是多少?
- n 维超立方体结点度是多少?
- 超立方体距离怎么求?
- PM2+i 的公式?
- Cubei 的动作?
- shuffle 常见动作?
- Omega 的 2×2 开关基础状态有哪些?
- 多级互联网络相比交叉开关的主要好处?
答案
没有;能;2;n;编号异或后 1 的个数;`x+2^i mod N`;第 i 位取反;循环移位;直连、交换;硬件开销低。
9. Omega 路由
- N=16 的 Omega 网络有几级?
- 每级有多少个 2×2 开关?
- 总开关数公式?
- 目的地址逐位寻径看谁的二进制位?
- 异或寻径先算什么?
- 源目的相同的异或结果?
- 阻塞发生在输入端相同还是开关出口冲突?
- Omega 是阻塞网络还是非阻塞网络?
- perfect shuffle 是级内交换还是级间连接?
- STARAN 级控制常实现什么功能?
答案
4;8;`N/2 × log2N`;目的地址;源地址异或目的地址;0;开关出口冲突;阻塞网络;级间连接;交换功能。
10. 多处理器与一致性
- UMA 访问所有内存延迟是否大致相同?
- NUMA 中本地和远程访问哪个慢?
- 监听协议依赖什么共享介质?
- 目录协议更适合什么规模?
- Cache 一致性关注同一地址还是不同地址顺序?
- 存储一贯性关注什么?
- Invalidate 写时做什么?
- Update 写时做什么?
- MSI 的 S 表示什么?
- MSI 的 I 表示什么?
答案
是;远程;总线;较大规模;同一地址多副本;不同地址读写呈现顺序;作废其他副本;广播新值;共享干净副本;无效副本。
11. 同步与原子操作
- LL 的英文全称?
- SC 的英文全称?
- LL/SC 能实现原子交换吗?
- SC 失败后通常怎么办?
- 旋转锁忙等时 CPU 是否一直退出等待?
- 支持 Cache 一致性后,等待者可以在哪里反复读锁?
- 屏障同步要求多少进程到达后释放?
- counterlock 保护什么?
- release 变量控制什么?
- sense reversing 中 local_sense 是共享还是私有?
答案
Load Linked;Store Conditional;能;重试;不是,会反复检查;本地 Cache;全部;计数器更新的原子性;是否放行;每个进程私有。
12. 综合判定
- 题目问“平均访存时间”优先用哪个公式?
- 题目问“每条指令停顿”还要乘什么?
- 题目问“事务次数”先看块大小还是先看 CPI?
- 题目问“可靠性框图”先找串联还是先代数?
- 题目问“无阻塞完成吗”要检查什么?
- 题目问“目录维护多少”按处理器数还是块数?
- 题目问“前者快多少”最后比较时间还是可靠度?
- 题目问“局部不命中率”先找分母还是分子?
- 题目出现“写分配”说明讨论读还是写 miss?
- 题目出现“远程请求处理器挂起”说明要加什么?
答案
AMAT;每条指令访存次数;块大小和事务大小;先找串并联结构;每级开关出口是否冲突;块数;执行时间/CPI;分母;写 miss;远程访问停顿周期。
错题复盘表
| 错题类型 | 复盘问题 | 下次做题第一步 |
|---|---|---|
| BTB/分支 | 我是把 BTB miss 和预测错混在一起了吗? | 先写 `miss 项 + 命中后错预测项`。 |
| 写事务 | 我有没有把“调入整块”和“写一个事务”混掉? | 先列读命中、写命中、读 miss、写 miss 四格。 |
| Cache/TLB | TLB 是并入 miss penalty 还是全访存额外加? | 圈出题目里 TLB miss 的触发对象。 |
| 流水线 | 我是不会看依赖,还是不会数尾巴? | 先标生产者和消费者,再数循环次数和最后尾巴。 |
| 互连网络 | 我只是算了目的地,还是检查了开关冲突? | 逐级列开关出口占用。 |
| 可靠性 | 我把并联冗余当串联必要部件了吗? | 先画“全好才好”还是“至少一个好”。 |