同学们,计组这科被很多人劝退,其实它的套路感全 408 最强:大题翻来覆去就是 Cache 计算题、IEEE754 转换题、流水线时空图三板斧。把这篇讲义的例题模板吃透,45 分里的大头就攥住了。
一、Cache:大题第一钉子户
1.1 三种映射的地址结构
主存地址按映射方式切三段:
| 映射方式 | 主存地址划分 | 特点 |
|---|---|---|
| 直接映射 | 标记 | 行号 | 块内地址 | 每块只有一个固定行,冲突高、比较一次 |
| 组相联 | 标记 | 组号 | 块内地址 | 组间直接、组内全相联(折中) |
| 全相联 | 标记 | 块内地址 | 任意放,标记位最长,比较所有行 |
【计算模板】主存 256MB、Cache 16KB、块大小 16B,直接映射:
- 主存地址 28 位(256MB = 2²⁸),块内地址 4 位(16B = 2⁴)
- Cache 共 16KB/16B = 1024 行 → 行号 10 位
- 标记 = 28 − 10 − 4 = 14 位
- 若改 2 路组相联:512 组 → 组号 9 位,标记 15 位
拿到题先写「总量−块内−行号/组号 = 标记」,三段对齐,分数到手。
1.2 命中率与平均访问时间
H 为命中率,T_c 为 Cache 访问时间,T_m 为主存访问时间。注意题干两种模型:未命中时「再访问主存」(上式)与「同时访问、未命中补齐」(此时为 H·Tc + (1−H)(Tc+Tm)),看清题目假设再代入,这是最阴的坑。
替换算法:随机 FIFO/LRU;写策略:写直达(write through) 与 写回(write back,脏位)——「写回法配脏位、写直达配写缓冲」配对判断题常考。
二、数据的表示与运算
2.1 补码速算
- 负数补码:原码除符号位取反加一;快速法:从右往左找到第一个 1,左边各位取反
- 补码范围(8 位):−128 ~ +127,多表示一个负数
- 溢出判断:双符号位(00→11 变化即溢)或「最高数值位进位 ⊕ 符号位进位 = 1 则溢」
2.2 IEEE754(必考一道)
单精度 1+8+23 位,偏置值 127;双精度 1+11+52 位,偏置 1023。规格化数:隐藏最高位的 1,阶码全 0 / 全 1 保留给 0、非规格化数、∞、NaN。
【转换模板】−12.75 存成单精度:
- 12.75 = 1100.11B = 1.10011 × 2³
- 阶码 = 3 + 127 = 130 = 1000 0010
- 符号 1,尾数去掉隐藏位 1 后补零:1001 1000 …0
- 结果:1 10000010 10011000…0 = C14C0000H
逆运算同理:先拆三段、阶码减 127、还原隐藏位 1、再调小数点。全零和全一阶码的四种特殊值要背。
2.3 检错码
- 海明码:纠 1 位错需满足 2^k ≥ n + k + 1;校验位放在 2^i 号位置
- CRC:模 2 除法(异或不借位),余数拼接在数据后发送
三、指令系统
3.1 寻址方式(取数速度排序背)
| 方式 | 有效地址 | 访存次数(取操作数) |
|---|---|---|
| 立即 | 操作数在指令中 | 0 |
| 直接 | EA = A | 1 |
| 间接 | EA = (A) | 2 |
| 寄存器 | EA = Rᵢ | 0 |
| 寄存器间接 | EA = (Rᵢ) | 1 |
| 相对 | EA = (PC) + A | 1 |
| 基址/变址 | EA = 基址寄存器 + A | 1 |
【高频】相对寻址:EA = PC(已指向下条指令)+ 偏移,用于转移指令、便于程序浮动。基址面向操作系统(基址寄存器内容不变、A 可变),变址面向用户(变址寄存器内容可变)——两者方向相反,判断题爱考。
3.2 扩展操作码
固定字长下让地址数多的指令操作码短、地址数少的操作码长。
【模板】16 位指令字,15 条三地址(操作码 4 位)+ 12 条二地址:三地址留 0000 作扩展标志,二地址操作码 8 位中前 4 位为 0000,取值范围 0000 0000 ~ 0000 1011 共 12 条——「留一个编码当下一个前缀」的套娃逻辑数清楚即可。
3.3 CISC vs RISC
RISC:指令定长、Load/Store 结构、寄存器多、便于流水;CISC 指令变长、寻址复杂。选择题考「以下哪项是 RISC 特征」。
四、CPU 与指令流水线:大题第二钉子户
4.1 五段流水线与公式
IF → ID → EX → MEM → WB。
- 流水线时钟周期 = 最慢段的耗时
- n 条指令 k 段流水线总时间 = (k + n − 1) × 周期
- 加速比 = nkΔt / 总时间;吞吐率 = n / 总时间;效率 = 实际格数 / 总格数(时空图)
【模板】5 段各 1ns,执行 100 条指令:T = (5+100−1) × 1ns = 104ns;加速比 ≈ 500/104 ≈ 4.8。若某段 2ns,周期变 2ns,重算即可。
4.2 三种冒险
| 冒险 | 原因 | 对策 |
|---|---|---|
| 结构冒险 | 硬件冲突(取指与取数同存) | 指令预取队列/哈佛结构 |
| 数据冒险 | RAW 后指令用前指令结果 | 转发/旁路;load-use 插入一个气泡 |
| 控制冒险 | 转移指令改变 PC | 分支预测、延迟分支 |
【真题手感】给你 5 条指令(含 beq 和 load)画时空图、标气泡——先把 RAW 依赖找出来,再看 load-use 必停一拍,beq 默认在 ID 段末才改 PC。
五、总线与 I/O
5.1 总线带宽
【模板】32 位总线、100MHz、每周期传一次:400MB/s。若题目说 DDR(上下沿都传),带宽 ×2。
异步总线三种握手:不互锁、半互锁、全互锁——可靠性依次升高、速度依次降低。
5.2 I/O 三方式对比(必考)
| 方式 | 数据通路 | CPU 干预 | 适用 |
|---|---|---|---|
| 程序查询 | 设备→寄存器→内存 | 全程忙等 | 低速、简单 |
| 中断 | 设备→寄存器→内存 | 每个字长一次 | 中速键盘 |
| DMA | 设备直接→内存 | 仅初始化和结束时 | 高速磁盘块 |
- 中断隐指令(硬件自动):关中断、保存断点、引出服务程序——保存通用寄存器由服务程序做,易错
- 中断嵌套:高优先级可打断低优先级,屏蔽字技术;多重中断堆栈保存现场
- DMA 三种传法:停止 CPU 访存、周期挪用(窃取,首选)、交替访存;DMA 结束才发一次中断
5.3 磁盘
- 存取时间 = 寻道时间 + 旋转延迟(平均半圈) + 传输时间
- 平均旋转延迟 = (60s ÷ 转速) ÷ 2:7200rpm → 约 4.17ms
- 数据传输率 = 每磁道字节数 × 转速/60
5.4 可靠性(小分也别丢)
- 串联:R = R₁×R₂×…;并联:R = 1 − (1−R₁)(1−R₂)…
- RAID0 条带无冗余、RAID1 镜像、RAID5 分布式奇偶校验
冲刺建议:计组最后两个月做三件事——① 把 Cache 三段划分的模板题刷 10 道;② IEEE754 正反转换各练 5 次保证 5 分钟内秒杀;③ 流水线时空图亲手画 3 张(无冒险/数据冒险/控制冒险各一张)。这三块拿稳,剩下的零散选择随缘,总分不会辜负你。