Appearance
CISC与RISC
考情分析
CISC 与 RISC 的对比是 408 选择题常考点,每隔 1~2 年就出现一次。重点掌握两者的核心特征及各自适用场景,以及为什么现代处理器趋向于 RISC 或混合架构。
CISC(复杂指令集计算机)
Complex Instruction Set Computer,以 x86(Intel/AMD)为代表。
设计理念:用一条复杂指令完成尽可能多的操作,减少程序的指令条数,降低对编译器的要求(早期编译器能力弱)。
主要特征:
| 特征 | 说明 |
|---|---|
| 指令数量多 | 数百条甚至上千条 |
| 指令长度变长 | 指令长度不固定(如 x86 指令 1~15 字节) |
| 寻址方式多 | 支持多种复杂寻址(内存 ↔ 内存操作) |
| 控制方式 | 微程序控制(便于设计复杂指令) |
| 访存频繁 | 指令可直接操作内存,不强制 Load/Store |
| 寄存器少 | 通用寄存器数量少(x86 早期只有 8 个) |
| 执行时钟 | 不同指令的执行周期数差异大 |
RISC(精简指令集计算机)
Reduced Instruction Set Computer,以 ARM、MIPS、RISC-V 为代表。
设计理念:只保留最常用的简单指令,通过编译器优化生成高效指令序列,依赖硬件流水线实现高吞吐。
主要特征:
| 特征 | 说明 |
|---|---|
| 指令数量少 | 几十条核心指令 |
| 指令定长 | 所有指令等长(如 MIPS 固定 32 位) |
| 寻址方式少 | 数据操作在寄存器间进行,访存指令使用基址+偏移,种类远少于 CISC |
| 控制方式 | 硬布线控制(速度快) |
| Load/Store 架构 | 只有 Load/Store 指令访问内存,其余操作均在寄存器间进行 |
| 寄存器多 | 通用寄存器多(MIPS/RISC-V 有 32 个) |
| 执行时钟 | 理想流水线下 CPI = 1(每周期完成一条指令的吞吐率),单条指令延迟仍为 |
核心对比表
| 特性 | CISC | RISC |
|---|---|---|
| 指令集规模 | 大(数百条) | 小(几十条) |
| 指令长度 | 变长 | 定长 |
| 寻址方式 | 多种复杂方式 | 少(Load/Store) |
| 控制器实现 | 微程序(ROM 存储) | 硬布线(逻辑电路) |
| 内存访问 | 指令可直接访存 | 只有 Load/Store 访存 |
| 通用寄存器 | 少 | 多 |
| 流水线 | 难以实现(变长指令) | 易于流水线化 |
| 编译器要求 | 低(指令复杂,编译简单) | 高(依赖编译器优化) |
| 典型代表 | x86, x86-64 | ARM, MIPS, RISC-V, PowerPC |
微程序控制 vs 硬布线控制
微程序控制:
- 将每条复杂指令分解为微操作,存储在控制存储器(ROM)中
- 修改方便,适合复杂指令集
- 速度较慢(需要查微程序存储器)
硬布线控制:
- 用组合逻辑直接产生控制信号
- 速度快,延迟低
- 设计复杂,修改困难,适合简单固定指令集
RISC 指令简单且定长,硬布线控制电路规模可控,因此速度更快。
Load/Store 架构的含义
RISC 中,只有 LOAD(从内存读到寄存器)和 STORE(从寄存器写到内存)两类指令可以访存。
所有运算都在寄存器之间进行:
# RISC 风格:计算 A + B 并存入 C
LOAD R1, [A] ; 从内存加载 A
LOAD R2, [B] ; 从内存加载 B
ADD R3, R1, R2 ; 寄存器间运算
STORE R3, [C] ; 结果写回内存# CISC 风格:直接内存操作
ADD [C], [A], [B] ; 一条指令完成(但内部很复杂)现代处理器的融合趋势
现代 x86 处理器(Intel Core, AMD Ryzen)在外部维持 CISC 接口,内部将复杂指令翻译为微操作(μops),用类似 RISC 的核心执行,兼顾兼容性与性能。
ARM 架构从移动端扩展到服务器(Apple M 系列、AWS Graviton),RISC 的能效优势越来越明显。
考点清单
- CISC:变长指令、微程序控制、多寻址方式、少寄存器、指令可直接访存
- RISC:定长指令、硬布线控制、Load/Store 架构、多寄存器、流水线友好
- 微程序控制修改灵活但速度慢;硬布线速度快但设计复杂
- RISC 不是指令少就行,关键是"简单、定长、Load/Store"
- 现代 CPU 多为混合架构,内部微操作是 RISC 风格