Appearance
Flynn 分类法
按指令流和数据流的多倍性将计算机分为 4 类。
| 分类 | 说明 | 典型代表 |
|---|---|---|
| SISD | 单指令流单数据流 | 传统单处理器、冯·诺依曼机器 |
| SIMD | 单指令流多数据流 | 阵列处理机、并行处理机 |
| MISD | 多指令流单数据流 | 极少见(有文献将流水线归为此类) |
| MIMD | 多指令流多数据流 | 多核计算机、多处理机、超级计算机 |
当前主流多核计算机属于 MIMD。
指令系统 CISC 和 RISC
CISC vs RISC

| 对比 | CISC(复杂指令集) | RISC(精简指令集) |
|---|---|---|
| 指令数量 | 多 | 少 |
| 指令长度 | 可变 | 固定 |
| 实现方式 | 微程序控制 | 组合逻辑(硬件实现) |
| 寻址方式 | 多样 | 少 |
| 寄存器 | 少 | 大量寄存器 |
| 执行时间 | 差别大 | 多数单周期 |
指令组成与执行
一条指令 = 操作码(决定操作类型)+ 地址码(操作数地址)。整条指令以二进制编码存放。
执行三阶段:取指令(PC→地址总线,从内存取)→ 分析指令(ID 解析操作码)→ 执行指令。
寻址方式
| 方式 | 说明 | 特点 |
|---|---|---|
| 顺序寻址 | 一条接一条顺序执行 | 下一条地址由 PC 给出 |
| 跳跃寻址 | 下条地址由本条指令直接给出 | PC 内容相应改变 |
操作数寻址方式:
| 方式 | 说明 | 速度 |
|---|---|---|
| 立即寻址 | 地址码直接包含操作数本身 | — |
| 直接寻址 | 地址码是操作数的内存地址 | — |
| 间接寻址 | 地址码指向存有操作数地址的单元 | 慢 |
| 寄存器寻址 | 操作数在寄存器中 | 最快 |
| 基址寻址 | 基址寄存器 + 形式地址 → 有效地址 | 用于静态数据 |
| 变址寻址 | 变址寄存器 + 形式地址 → 有效地址 | 用于数组/动态数据 |
指令的流水处理
流水线原理

- RISC中的流水线技术:超流水线(在每个机器周期内能完成一个甚至两个浮点操作,以时间换空间)、超标量(内装多条流水线同时执行多个处理,以空间换时间)、超长指令字 VLIW (同时执行多条指令,发挥软件作用)。
流水线时间计算
流水线核心公式:
| 指标 | 公式 |
|---|---|
| 流水线周期 | 各段中执行时间最长的段的时间 |
| 执行时间 | 1条指令总执行时间 +(总指令条数 - 1)× 流水线周期 |
| 吞吐率 | 指令条数 / 流水线执行时间 |
| 加速比 | 不使用流水线执行时间 / 使用流水线执行时间 |
- 流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
- 流水线执行时间:1条指令总执行时间+(总指令条数-1)* 流水线周期。
- 单缓冲区和双缓冲区:此类题型不给出具体流水线执行阶段,需要考生自己区分出流水线阶段,一般来说,能够同时执行的阶段就是流水线的独立执行阶段:只能独立执行的阶段应该合并为流水线中的一个独立执行阶段。
例如有三个阶段即读入缓冲区+送入用户区+数据处理,在单缓冲区中,缓冲区和用户区都只有一个,一个盘块必须执行完前两个阶段,下一个盘块才能开始,因此前两个阶段应该合并,整个流水线为送入用户区+数据处理;
而在双缓冲区中,盘块可以交替读入缓冲区,但用户区只有一个,因为缓冲区阶段可以同时进行,流水线前两个阶段不能合并,就是读入缓冲区+送入用户区+数据处理三段。
划分出真正的流水线阶段后,套用流水线时间计算公式可以轻易得出答案。
- 流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。公式:指令条数/流水线执行时间。
- 流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,公式:不使用流水线执行时间/使用流水线执行时间。
指令流水线
将指令分成不同段,每段由不同部件并行处理。
RISC 流水线三种技术:
| 技术 | 核心理念 | 本质 |
|---|---|---|
| 超流水线 | 细化流水、增加级数、提高主频 | 时间换空间 |
| 超标量 | 多条流水线同时执行多个处理 | 空间换时间 |
| 超长指令字(VLIW) | 软件调度并行,简化硬件 | 软件发挥主要作用 |
超线程技术(Hyper-Threading)
🎯 一句话结论:超线程让一个物理核心模拟两个逻辑核心,共享执行资源,提高 CPU 并行计算能力。
- 一个物理核心配备两套寄存器组和中断逻辑,操作系统看到"两个核心"
- 共享物理执行单元(ALU、Cache 等),并非真正的双核
- 适合多线程负载,单线程密集型收益有限
- 属于提高 CPU 并行计算能力的技术(区别于加密/压缩/缓存技术)