1718 字
9 分钟
408 计组冲刺讲义:Cache、流水线与 IEEE754 核心考点全攻略

同学们,计组这科被很多人劝退,其实它的套路感全 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 命中率与平均访问时间#

T平均=H×Tc+(1−H)×TmT_{平均} = H × T_c + (1−H) × T_m

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 存成单精度:

  1. 12.75 = 1100.11B = 1.10011 × 2³
  2. 阶码 = 3 + 127 = 130 = 1000 0010
  3. 符号 1,尾数去掉隐藏位 1 后补零:1001 1000 …0
  4. 结果:1 10000010 10011000…0 = C14C0000H

逆运算同理:先拆三段、阶码减 127、还原隐藏位 1、再调小数点。全零和全一阶码的四种特殊值要背。

2.3 检错码#

  • 海明码:纠 1 位错需满足 2^k ≥ n + k + 1;校验位放在 2^i 号位置
  • CRC:模 2 除法(异或不借位),余数拼接在数据后发送

三、指令系统#

3.1 寻址方式(取数速度排序背)#

方式有效地址访存次数(取操作数)
立即操作数在指令中0
直接EA = A1
间接EA = (A)2
寄存器EA = Rᵢ0
寄存器间接EA = (Rᵢ)1
相对EA = (PC) + A1
基址/变址EA = 基址寄存器 + A1

【高频】相对寻址: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 总线带宽#

带宽=工作频率×总线宽度(bit)÷8带宽 = 工作频率 × 总线宽度(bit) ÷ 8

【模板】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 张(无冒险/数据冒险/控制冒险各一张)。这三块拿稳,剩下的零散选择随缘,总分不会辜负你。

408 计组冲刺讲义:Cache、流水线与 IEEE754 核心考点全攻略
https://theywh.me/posts/408-architecture/
作者
鸢尾花
发布于
2026-10-24
许可协议
CC BY-NC-SA 4.0