跳转至

计算机组成原理

考试重点

本文档整理了计算机组成原理课程的核心知识点与重点,涵盖8个章节。

最后更新:2026-05-26 | 整理人:赫尔墨斯(小弟一号)


目录

  1. 计算机系统概述
  2. 数据信息的表示
  3. 运算方法与运算器
  4. 存储系统
  5. 指令系统
  6. 中央处理器
  7. 系统总线
  8. 输入输出系统
  9. 公式速查表
  10. 记忆口诀汇总

一、计算机系统概述

1.1 计算机发展历史

时代 时间 核心技术 代表
第一代 1946-1958 电子管 ENIAC
第二代 1958-1964 晶体管 -
第三代 1964-1971 集成电路 IBM 360
第四代 1971-至今 大规模集成电路 现代计算机

1.2 冯·诺依曼思想(核心!)

存储程序:将程序存放在计算机的存储器中

程序控制:按指令地址访问存储器并取出指令,经译码依次产生指令执行所需的控制信号

五大功能部件: - 运算器:完成算术运算、逻辑运算 - 控制器:控制指令的执行 - 主存储器:存放程序及数据 - 输入设备 - 输出设备

💡 记忆要点:冯·诺依曼 = 存储程序 + 程序控制 + 五大部件

1.3 计算机层次结构

高级语言 (C)          ← 用户层
    ↓ Compiler
汇编语言 (MIPS)       ← 汇编层
    ↓ Assembler
指令集架构层           ← ISA层
微代码层              ← 微程序层
硬件逻辑层            ← 硬件层

1.4 性能评价指标

非时间指标

  • 机器字长:CPU一次能处理的二进制位数
  • 总线宽度:数据总线一次能传输的位数
  • 主存容量:主存能存储的二进制位数
  • CPU内核数

时间指标

CPI(Clock cycles Per Instruction)

\[CPI = \frac{\text{程序中所有指令的时钟周期数之和}}{\text{指令条数}}\]
\[CPI = \sum_{i=1}^{n} CPI_i \times P_i\]

CPU执行时间

\[CPU时间 = CPI \times IC \times T = \frac{CPI \times IC}{f}\]

MIPS(Million Instructions Per Second)

\[MIPS = \frac{IC}{T_{cpu} \times 10^6} = \frac{f}{CPI \times 10^6} = IPC \times f\]

MFLOPS(Million Floating-Point Operations Per Second)

\[MFLOPS = \frac{\text{浮点运算次数}}{T_{cpu} \times 10^6}\]

💡 关键公式:CPU性能 = IPC × f(频率)

💡 MIPS单位:Mega = 10⁶, Giga = 10⁹, Tera = 10¹², Peta = 10¹⁵, Exa = 10¹⁸


二、数据信息的表示

2.1 进制转换

二进制 → 八进制:从小数点向左右三位一分组

二进制 → 十六进制:从小数点向左右四位一分组

2.2 机器码表示(重点!)

原码(Signed Magnitude)

  • 最高位为符号位,0正1负
  • 数值位不变
  • 两个机器零:+0 和 -0

反码(One's Complement)

  • 符号位与原码相同
  • 正数不变,负数各位取反
  • 两个机器零

补码(Two's Complement)⭐

公式: $\([X]_补 = \begin{cases} X & 0 \leq X < 2^n \\ 2^{n+1} + X & -2^n \leq X < 0 \end{cases}\)$

简便方法: - 正数:直接取原码,符号位为0 - 负数:逐位取反,末位加1,符号位为1

特性: - 只有一个零(+0 = -0) - 加减运算统一 - 符号位参与运算

移码(Biased Notation)

  • 用于浮点数的阶码
  • 补码符号位取反

💡 记忆口诀:正数三码相同,负数原码符号不变、反码各位取反、补码取反加1

2.3 定点数表示

定点整数:小数点固定在最低位之后

定点小数:小数点固定在符号位之后

表示范围(n位): - 原码:\(-(2^n-1) \sim +(2^n-1)\) - 补码:\(-2^n \sim +(2^n-1)\)

2.4 浮点数表示

IEEE 754 标准(重点!)

格式 符号位 阶码 尾数 总位数
单精度 1位 8位 23位 32位
双精度 1位 11位 52位 64位

表示公式: $\(V = (-1)^S \times 1.M \times 2^{E-Bias}\)$

  • S:符号位
  • M:尾数(隐含前导1)
  • E:阶码(移码表示)
  • Bias:偏移量(单精度127,双精度1023)

特殊值: - :S=0, E=0, M=0 - 无穷大:S=0, E=255, M=0 - NaN:E=255, M≠0

2.5 数据校验

奇偶校验

  • 奇校验:数据位中1的个数 + 校验位 = 奇数
  • 偶校验:数据位中1的个数 + 校验位 = 偶数
  • 只能检测奇数个错误,不能纠错

海明码(Hamming Code)

校验位数量\(2^r \geq m + r + 1\)(m为数据位数,r为校验位数)

校验位位置:2的幂次方位置(1, 2, 4, 8, ...)

校验规则:每个校验位负责校验特定位置的数据位

CRC校验(循环冗余校验)

生成多项式:G(x)

编码方法: 1. 数据位后补r个0(r为G(x)的最高次幂) 2. 用模2除法除以G(x) 3. 余数即为校验码

💡 校验能力:CRC > 海明码 > 奇偶校验


三、运算方法与运算器

3.1 补码加减法

补码加法\([X+Y]_补 = [X]_补 + [Y]_补\)

补码减法\([X-Y]_补 = [X]_补 + [-Y]_补\)

💡 关键:补码加减法符号位参与运算,结果自动为补码

3.2 溢出检测

溢出条件:两个正数相加结果为负,或两个负数相加结果为正

检测方法: 1. 单符号位法\(V = C_s \oplus C_1\)(符号位进位与最高数据位进位异或) 2. 双符号位法\(V = S_1 \oplus S_2\)(两个符号位异或) 3. 变形补码法:两个符号位不同即溢出

3.3 定点乘法

原码一位乘法: - 符号位单独处理(异或) - 数值部分用移位加法实现

补码一位乘法(Booth算法): - 符号位参与运算 - 根据相邻两位判断操作

3.4 定点除法

原码除法: - 符号位单独处理 - 数值部分用恢复余数法或不恢复余数法

补码除法: - 符号位参与运算 - 加减交替法

3.5 浮点运算

浮点加减法步骤: 1. 对阶:小阶向大阶看齐 2. 尾数运算:加减法 3. 规格化:结果规格化 4. 舍入:处理精度 5. 溢出判断:检查阶码

3.6 运算器组成

ALU(算术逻辑单元): - 完成算术运算和逻辑运算 - 核心部件:加法器

加法器类型: - 串行进位加法器:简单但慢 - 并行进位加法器:快但复杂 - 分组并行进位加法器:折中方案


四、存储系统

4.1 存储器分类

分类方式 类型 特点
存储介质 半导体/磁/光 速度/容量/成本
存取方式 随机/顺序/直接 访问特性
读写功能 ROM/RAM 可写性
易失性 易失/非易失 断电保持

4.2 SRAM vs DRAM

特性 SRAM DRAM
存储元件 触发器 电容
速度 快(<1ns) 慢(10ns)
集成度
功耗
刷新 不需要 需要
用途 Cache 主存

4.3 存储系统层次结构

寄存器 ←→ Cache ←→ 主存 ←→ 磁盘 ←→ 光盘/磁带
  KB      KB~MB     GB      TB      TB~PB
 <1ns     1-2ns    10ns    10ms     10s

4.4 主存组织

存储扩展: - 位扩展:增加字长(数据位数) - 字扩展:增加字数(地址空间) - 字位同时扩展:两者都增加

地址计算: - 芯片数 = 总容量 / 单片容量 - 地址线数 = log₂(字数) - 数据线数 = 字长

4.5 Cache(重点!)

程序局部性原理

  • 时间局部性:刚访问的数据很快会被再次访问
  • 空间局部性:刚访问的数据附近很快会被访问

Cache地址映射

直接映射: - 主存块只能映射到Cache的固定位置 - 映射关系:\(Cache行号 = 主存块号 \mod Cache行数\) - 优点:简单快速 - 缺点:冲突率高

全相联映射: - 主存块可以映射到Cache的任意位置 - 优点:冲突率低 - 缺点:硬件复杂,查找慢

组相联映射: - Cache分组,组间直接映射,组内全相联 - 折中方案

Cache替换算法

算法 策略 特点
FIFO 先进先出 简单,不反映局部性
LRU 最近最少使用 反映局部性,常用
LFU 最不经常使用 统计频率
Random 随机替换 最简单

Cache写策略

写命中: - 写直达(Write Through):同时写Cache和主存 - 写回(Write Back):只写Cache,替换时写回主存

写不命中: - 写分配(Write Allocate):先调入Cache再写 - 非写分配(No Write Allocate):直接写主存

Cache性能计算

命中率\(H = \frac{命中次数}{总访问次数}\)

平均访问时间: $\(T_{avg} = H \times T_{cache} + (1-H) \times T_{main}\)$

带多级Cache: $\(T_{avg} = H_1 \times T_1 + (1-H_1) \times H_2 \times T_2 + (1-H_1)(1-H_2) \times T_{main}\)$

4.6 虚拟存储器

概念:将主存和辅存统一管理,提供比实际主存更大的地址空间

页式虚拟存储: - 虚拟地址 → 页号 + 页内偏移 - 页表:记录虚拟页到物理页的映射 - TLB(快表):加速地址转换


五、指令系统

5.1 指令格式

指令基本格式

| 操作码 | 地址码 |

操作码:指定操作类型

地址码: - 三地址指令:OP A1, A2, A3 - 二地址指令:OP A1, A2 - 一地址指令:OP A1 - 零地址指令:OP

5.2 寻址方式

寻址方式 有效地址 特点
立即寻址 操作数在指令中 速度快,不访存
直接寻址 EA = A 简单,范围有限
间接寻址 EA = (A) 灵活,多次访存
寄存器寻址 EA = R 速度快
寄存器间接 EA = (R) 灵活
基址寻址 EA = (B) + A 程序重定位
变址寻址 EA = (I) + A 数组访问
相对寻址 EA = (PC) + A 程序转移

5.3 CISC vs RISC

特性 CISC RISC
指令数量
指令长度 可变 固定
寻址方式 复杂 简单
访存次数 少(Load/Store)
流水线 难优化 易优化
代表 x86 MIPS, ARM, RISC-V

💡 RISC特点:指令少、长度固定、寻址简单、Load/Store结构


六、中央处理器

6.1 CPU组成

运算器:ALU、寄存器组、状态寄存器

控制器:PC、IR、时序发生器、操作控制器

主要寄存器: - PC(程序计数器):存放下一条指令地址 - IR(指令寄存器):存放当前指令 - MAR(地址寄存器):存放访存地址 - MDR(数据寄存器):存放访存数据 - PSW(程序状态字):存放程序状态

6.2 指令周期

指令周期组成

取指周期 → 执行周期 → [间址周期] → [中断周期]

时序层次: - 时钟周期(节拍):最小时间单位 - 机器周期(CPU周期):完成一次访存操作 - 指令周期:取指+执行

6.3 控制器类型

硬布线控制器

  • 用组合逻辑电路产生控制信号
  • 速度快,但设计复杂,不灵活

微程序控制器

  • 用微指令产生控制信号
  • 灵活,易于修改,但速度较慢

微指令格式: - 水平型微指令:并行操作,效率高 - 垂直型微指令:串行操作,类似机器指令

6.4 流水线(重点!)

流水线原理:将指令执行过程分成多个阶段,各阶段并行执行

流水线阶段: 1. IF(取指) 2. ID(译码) 3. EX(执行) 4. MEM(访存) 5. WB(写回)

流水线性能

理想情况: $\(T_{pipeline} = n \times \Delta t + (k-1) \times \Delta t\)$

其中:n为指令数,k为流水线级数,Δt为时钟周期

加速比: $\(S = \frac{T_{sequential}}{T_{pipeline}} = \frac{n \times k}{n + k - 1}\)$

吞吐率: $\(TP = \frac{n}{T_{pipeline}} = \frac{1}{\Delta t}\)$

流水线冲突: 1. 结构冲突:硬件资源冲突 2. 数据冲突:数据依赖 3. 控制冲突:分支指令

数据冲突解决: - 数据旁路(Forwarding):直接传递结果 - 插入气泡(Stall):等待数据就绪 - 编译器调度:重排指令顺序


七、系统总线

7.1 总线分类

分类方式 类型
传输方式 并行/串行
传输方向 单向/双向
时序控制 同步/异步
连接部件 片内/系统/外部/I/O

7.2 总线组成

数据总线:传输数据,双向

地址总线:传输地址,单向

控制总线:传输控制信号,混合

7.3 总线仲裁

集中式仲裁: - 链式查询:简单,但对故障敏感 - 计数器定时查询:灵活,但速度慢 - 独立请求:速度快,但硬件复杂

分布式仲裁: - 各设备自行仲裁

7.4 总线定时

同步定时: - 统一时钟信号 - 简单快速 - 适合短距离、高速

异步定时: - 握手协议 - 灵活可靠 - 适合不同速度设备

半同步定时: - 结合同步和异步


八、输入输出系统

8.1 I/O方式比较(重点!)

方式 CPU介入 数据传输 适用场景
程序查询 全程 CPU 低速设备
程序中断 每次传输 CPU 随机事件
DMA 开始和结束 DMAC 成组数据
通道 开始和结束 通道处理器 复杂I/O

8.2 程序中断方式

中断处理过程: 1. 中断请求 2. 中断判优 3. 中断响应 4. 保存现场 5. 执行中断服务程序 6. 恢复现场 7. 中断返回

中断分类: - 外部中断:I/O设备、定时器 - 内部中断(异常):溢出、除零、缺页

8.3 DMA方式

DMA工作过程: 1. CPU初始化DMA控制器 2. DMAC接管总线 3. DMAC直接在内存和外设之间传输数据 4. 传输完成后DMAC向CPU发中断

DMA传送方式: - 停止CPU访问:CPU停止工作 - 周期挪用:CPU让出一个总线周期 - 交替访问:DMA和CPU交替访问

8.4 通道方式

通道类型: - 选择通道:连接高速设备 - 数组多路通道:连接多台高速设备 - 字节多路通道:连接多台低速设备

通道与DMA区别: - DMA需要CPU初始化,通道有自己的通道程序 - 通道可以处理更多I/O细节,进一步减轻CPU负担


公式速查表

性能指标

公式 说明
\(CPI = \sum CPI_i \times P_i\) 平均CPI
\(CPU时间 = \frac{CPI \times IC}{f}\) CPU执行时间
\(MIPS = \frac{f}{CPI \times 10^6}\) 每秒百万指令
\(CPU性能 = IPC \times f\) 性能决定因素

Cache

公式 说明
\(T_{avg} = H \times T_c + (1-H) \times T_m\) 平均访问时间
\(H = \frac{命中次数}{总次数}\) 命中率

流水线

公式 说明
\(T = n \times \Delta t + (k-1) \times \Delta t\) 流水线时间
\(S = \frac{n \times k}{n + k - 1}\) 加速比
\(TP = \frac{n}{T}\) 吞吐率

浮点数

公式 说明
\(V = (-1)^S \times 1.M \times 2^{E-Bias}\) IEEE 754
Bias(单精度) = 127 偏移量
Bias(双精度) = 1023 偏移量

记忆口诀汇总

核心口诀

  1. 冯·诺依曼:存储程序、程序控制、五大部件
  2. 补码:正数不变,负数取反加1
  3. 溢出检测:双符号位异或
  4. Cache:时间局部性、空间局部性
  5. RISC:指令少、长度固定、Load/Store结构
  6. 流水线:IF → ID → EX → MEM → WB
  7. I/O方式:查询→中断→DMA→通道(CPU介入越来越少)

范式判断

  • 直接映射:固定位置,简单快速
  • 全相联映射:任意位置,灵活复杂
  • 组相联映射:折中方案

中断处理

  1. 中断请求
  2. 中断判优
  3. 中断响应
  4. 保存现场
  5. 执行服务程序
  6. 恢复现场
  7. 中断返回

最后更新:2026-05-26 | 整理人:赫尔墨斯(小弟一号)