计算机组成原理 · 公式与知识点大全

约 45 分(选择题 24 + 综合题 21)。数据表示、存储、CPU 流水、总线与 I/O 是计算题高频区。 橙色=易错 · 蓝色=概念 · 红色=必背
一、数据与编码

1. 进位计数制转换

R进制 → 10进制:N = Σ dᵢ × Rⁱ (按权展开)
10 → R:整数部分除R取余(逆序),小数部分乘R取整(顺序)
2 ↔ 8/16:3位二进制=1位八进制;4位二进制=1位十六进制
技巧:二进制转十六进制从小数点向两侧每4位一组,不足补0。

2. 机器数:原 / 反 / 补 / 移码(n位,含1位符号)

正数:原 = 反 = 补
负数·反码 = 原码符号位不变、数值位取反
负数·补码 = 反码 + 1;或"原码数值位从右起首个1及其右不变、其左取反"
移码 = 补码符号位取反(整数移码 = 真值 + 2ⁿ⁻¹ 偏移)
补码表示范围:−2ⁿ⁻¹ ~ +(2ⁿ⁻¹−1);原/反码:−(2ⁿ⁻¹−1) ~ +(2ⁿ⁻¹−1)。补码多表示一个"−2ⁿ⁻¹"(100…0)。
📌 移码只用于表示阶码,便于浮点数阶码比较(全0最小、全1最大)。

3. 定点数(纯小数/纯整数)

定点小数范围:−1 ≤ x ≤ 1 − 2⁻ⁿ(补码,n位含符号)
溢出(双符号位/模4补码):结果符号位 01=正溢,10=负溢;00/11=正常
单符号位溢出:最高位进位 ⊕ 次高位进位 = 1 → 溢出

4. 浮点数(IEEE 754)

单精度(32):1符号 + 8阶码(E,偏置127) + 23尾数(M,隐含1)
双精度(64):1 + 11(E,偏置1023) + 52
规格化真值 = (−1)^S × (1.M) × 2^(E−偏置) (E非全0非全1)
阶码全0:非规格化 = (−1)^S × (0.M) × 2^(1−偏置);全1:±∞/NaN
⚠ 阶码用移码存但偏置是 127/1023,尾数用原码隐含整数1。比较大小时先比阶码(高位),再比尾数。阶码对阶时"小阶向大阶看齐",尾数右移。

5. 校验码

海明码:校验位k满足 2ᵏ ≥ n + k + 1(n=信息位长)
校验位放在 2ⁱ 位置(1,2,4,8…);每位数据由若干校验位负责(其下标=各2的幂之和)。纠错:各校验位异或结果组成错误位位置。
CRC:被除数=信息位左移r位(r=G(x)阶),模2除生成多项式G(x),余数(补r位)接在末尾
✅ 校验能力:r位校验码可检出 ≤r 位突发性错误;CRC擅长检测突发错。
二、运算方法与运算器

1. 补码加减

[A+B]补 = [A]补 + [B]补;[A−B]补 = [A]补 + [−B]补([−B]补=[B]补连符号取反+1)

2. 移位运算

  • 算术左移:补0,相当于 ×2(可能溢出)
  • 算术右移:符号位复制,相当于 ÷2(向下取整)
  • 逻辑移位:无符号,两端补0
  • 循环移位:移出位进另一端(可带进位位)

3. 原码 / 补码一位乘法

原码乘:符号位异或定,数值部分累加+右移
布斯(Booth)补码乘:看当前位 yᵢ 与 高位 yᵢ₊₁:00/11→只右移;01→+[X]补后右移;10→+[−X]补后右移
布斯规则看的是相邻两位之差 (yᵢ − yᵢ₊₁):+1、−1、0,统一处理正负,减少加法次数。

4. 除法(原码恢复 / 不恢复余数)

不恢复余数法:余数≥0 → 商1、左移减除数;余数<0 → 商0、左移加除数(末位恒置1)
三、存储器系统

1. 存储容量与芯片扩展

容量 = 存储单元数 × 字长(bit);主存地址位数 = log₂(单元数)
芯片数 = (总容量) ÷ (单芯片容量) 位扩展×字扩展分别算后相乘
位扩展:片数=总字长/片字长(地址同、数据线并联);字扩展:片数=总单元/片单元(数据同、片选译码)。

2. Cache 地址映射 核心

映射方式主存地址结构特点
直接映射标记Tag + 行号/Index(log₂行数) + 块内偏移主存块→唯一Cache行;冲突多但简单
全相联标记Tag + 块内偏移任意行;命中率高、比较器贵
组相联标记Tag + 组号(log₂组数) + 块内偏移每组r路;折中方案
⚠ 块内偏移位数 = log₂(块大小/字大小);行数=Cache容量/块大小;组数=行数/r(r=路数)。标记位 = 主存地址总位 − 组号位 − 偏移位,别忘了还有1位有效位(及脏位)。

3. 命中率与平均访问时间 核心

命中率 H = 命中次数 ÷ 总访问次数
平均访问时间 T = H·Tc + (1−H)·(Tc + Tm) (写回法,Tc=Cache命中时间,Tm=主存访问)
等效访问时间(不命中惩罚法) T = Tc + (1−H)·Tp (Tp=不命中开销)
Cache 容量↑ → H↑;块大小↑ → 空间局部性利用↑但冲突↑,存在最佳块大小

4. 主存地址与编址

按字编址:地址数 = 容量/字长;按字节编址:地址数 = 容量(字节)
MAR位数 = log₂(主存单元数);MAR决定可寻址空间上限

5. 磁盘 / RAID

磁盘容量 = 磁头数 × 柱面(磁道)数 × 每道扇区数 × 512B
存取时间 Ta = 寻道时间 + 旋转延迟(平均1/2圈=1/(2r)) + 传输时间( b/(r·N) )
RAID0 条带(无冗余)、RAID1 镜像、RAID5 分布式奇偶(1块冗余)、RAID10 = 镜像+条带。
四、指令系统

1. 指令格式

指令 = 操作码(OP) + 地址码(地址码可为0/1/2/3地址)
定长操作码:n位OP → 最多 2ⁿ 条指令;扩展操作码靠"留空码点"借用地址位
扩展操作码设计:短OP用掉除前缀外的码点;剩余前缀 + 地址位续编,注意不允许地址码全0与OP冲突

2. 寻址方式

  • 立即:Operand 即操作数(#data)
  • 直接:EA = A(地址码即有效地址)
  • 间接:EA = (A)
  • 寄存器/寄存器间接:R 或 (R)
  • 基址:EA = (基址R) + A(面向OS,可浮动)
  • 变址:EA = (变址R) + A(面向用户,数组遍历)
  • 相对:EA = (PC) + A(转移指令,与位置无关)
  • 堆栈:EA = SP
📌 有效地址 EA 的计算是选择题常考点;注意相对寻址的 PC 是取指后的值(下一条指令地址)。

3. CISC vs RISC

CISC(x86)RISC(MIPS/ARM)
指令数多、复杂少、定长
寻址多样简单(load/store)
实现微程序硬布线/流水线
访存指令可直接访存仅load/store访存
五、CPU 与数据通路

1. CPU 基本组成

  • 运算器:ALU、ACC、MQ、X(暂存)、PSW(标志)
  • 控制器:PC、IR、MAR、MDR、指令译码、时序、微操作信号
  • CPU内部总线连接各寄存器;数据总线双向、地址总线单向

2. 数据通路与时钟

主频 f = 1 / T(时钟周期);CPI = 总时钟周期数 ÷ 指令数
CPU时间 = 指令数 × CPI × 时钟周期 = 指令数 × CPI / f
MIPS = 指令数 ÷ (执行秒 × 10⁶) = f / (CPI × 10⁶)

3. 控制器:硬布线 vs 微程序

微程序:每条机器指令对应一段微程序,存于控制存储器(CM);微指令格式(水平/垂直)。硬布线:组合逻辑直接生成,快但难修改。
六、指令流水线 核心计算

1. 基本吞吐率 / 加速比 / 效率

实际吞吐率 TP = n / Tₖ (n条指令,Tₖ为完成总时钟周期×时钟周期)
最大吞吐率 TPmax = 1 / Δt (Δt = 瓶颈段处理时间)
加速比 S = (k·n) / (k + n − 1) (k段流水线,n条指令)
效率 E = (k·n) / (k·(k+n−1)) = S / k (设备利用率)
连续 n 条指令:总时钟周期 = (k + n − 1)·Δt。n≫k 时 S≈k、TP≈TPmax。

2. 流水线相关(阻塞来源)

  • 结构相关:资源冲突 → 暂停/资源重复
  • 数据相关:RAW(真相关)/WAR/WAW → 转发(旁路)/阻塞
  • 控制相关:转移指令 → 预测/延迟槽
⚠ 计算"插入气泡后总周期":先排各相关,RAW 需插入 1~2 个 stall;分支延迟按题意加周期。综合题常给数据相关链,逐拍画时空图最稳。

3. 流水线多发技术

超标量(多条独立指令/拍)、超流水(细分段)、VLIW(编译打包)。CPI < 1 靠多发射实现。
七、总线

1. 总线性能指标

总线带宽 B = (总线宽度/8) × 总线频率 × 每周期传输次数
突发(Burst)传输有效带宽 ≈ 数据字段 / 总传输时间(地址相位只1次)
总线宽度=一次传多少 bit;工作频率 vs 等效频率(DDR=2×)。串行总线用波特率/GT/s

2. 总线仲裁与定时

  • 集中仲裁:链式(优先级固定)、计数器、独立请求
  • 分布仲裁:自举
  • 同步定时(统一时钟) vs 异步定时(握手信号)
八、中断与 I/O 系统

1. 中断

中断向量 = 中断服务程序入口地址;中断向量表存放各向量
中断响应过程:关中断→保存断点→引出中断向量→执行ISR→恢复→开中断
中断优先级 + 屏蔽字决定嵌套;多重中断需开中断且高优先级可打断低优先级。

2. I/O 方式对比

方式CPU干预适用
程序查询持续轮询简单低速
中断驱动每次I/O完成干预中速、可并行
DMA仅起始/结束高速块传输
通道几乎不干预大型机多设备
DMA传送周期 ≈ 数据量 / (总线带宽) ;DMA与CPU分时使用总线(窃取周期)

3. 磁盘调度算法(求平均寻道)

  • FCFS:按到达顺序,公平但可能很远
  • SSTF:选最近磁道,可能饥饿
  • SCAN(电梯):单向到头再返(含最远端)
  • C-SCAN:到头后立即回起点,只单向服务
  • LOOK / C-LOOK:到最远请求即返,不到物理端点
✅ 平均寻道长度 = 总移动磁道数 ÷ 请求数。SCAN 系列比 SSTF 更公平且更稳。