1.5 CISC与RISC
本节导学
CISC 与 RISC 是指令体系结构的两条典型路线。CISC 倾向于不断增加功能强的复杂指令;RISC 倾向于保留少量常用、规则、执行快的指令,再用这些简单指令组合出复杂功能。
这不是“谁更高级谁淘汰谁”的问题,而是设计取舍不同。CISC 在早期内存昂贵、汇编程序更接近硬件的环境下有优势;RISC 在流水线、编译优化和高频执行场景中更容易发挥性能。
两条指令体系路线
CISC 和 RISC 是指令体系结构的两种典型设计风格。CISC 倾向于提供复杂、功能强的指令;RISC 倾向于保留少量简单、高频、易流水化的指令。
| 缩写 | 全称 | 中文 |
|---|---|---|
| CISC | Complex Instruction Set Computer | 复杂指令集计算机 |
| RISC | Reduced Instruction Set Computer | 精简指令集计算机 |
指令集设计要在“硬件复杂度、编译器工作量、执行速度、代码长度”之间取舍。CISC 把复杂功能更多放到指令和微码中;RISC 把复杂功能更多交给简单指令组合和编译器优化。
看到题干时不要只看“强不强”,要看具体特征:复杂、多样、变长通常偏 CISC;简单、定长、寄存器、流水线通常偏 RISC。
CISC:把复杂性放进指令
CISC 的思路是:需要新功能时,可以新增一条指令。这样指令越来越多,功能越来越强,但指令长度、执行周期、寻址方式也会更复杂。
CISC 是复杂指令集,指令数量多,指令功能强,寻址方式丰富,常见变长指令和多周期执行。
它希望一条机器指令能完成较复杂的操作,从而减少早期程序代码长度,也让汇编层面表达更直接。
这种路线的优势是表达能力强、单条指令可完成较多工作;代价是指令长度不一、执行周期差异大、译码和控制复杂。复杂指令往往通过微程序/微码解释执行:微码不是“微信小程序”,而是硬件层面用于实现某条机器指令的一小段控制程序。
题干出现“指令多、功能强、变长、寻址方式多、微程序控制、指令周期差异大”,一般判断为 CISC。
RISC:把复杂性交给组合与编译器
RISC 的思路是:保留少量常用、简单、执行快的指令,用这些有限指令组合出复杂功能。它更强调定长指令、寄存器操作、硬布线控制和流水线执行。
RISC 是精简指令集,指令数量少,格式相对固定,通常以寄存器操作为主,只有 load/store 访问内存。
简单、定长、规整的指令更容易译码,更适合流水线,也更容易用硬布线控制实现快速执行。
RISC 的关键不是“功能少”,而是“指令简单、频率接近、适合快速组合”。新功能不一定新增复杂指令,而是由已有简单指令组合实现。为了减少访存,RISC 通常增加通用寄存器数量;为了让控制更快,倾向于硬布线逻辑控制;为了提高吞吐,定长、单周期倾向也更适合流水线。
题干出现“指令少、定长、单周期、寄存器多、硬布线控制、load/store、利于流水线”,一般判断为 RISC。
对比维度
| 对比维度 | CISC | RISC |
|---|---|---|
| 指令数量 | 多 | 少 |
| 指令格式 | 变长较多 | 定长较多 |
| 寻址方式 | 多样 | 少,以寄存器寻址为主 |
| 控制方式 | 微程序/微码较常见 | 硬布线逻辑控制 |
| 指令周期 | 较长、差别较大 | 多为单周期 |
| 流水线适配 | 相对不利 | 更适合 |
软考喜欢把对比维度交叉提问,例如把“寻址方式复杂多样”放进 RISC 选项中让你判断错误。
做题时先看题干问“正确”还是“错误”,再逐项匹配维度。不要把“RISC 精简”理解成“功能弱”,它是用简单指令组合实现复杂功能。
技术取舍与演进
| 维度 | CISC 优势 | CISC 局限 | RISC 如何改进 |
|---|---|---|---|
| 代码密度 | 一条指令做更多事,程序可能更短 | 复杂指令难译码、难流水 | 定长简单指令更易取指译码 |
| 功能表达 | 指令功能强,寻址方式丰富 | 指令使用频率差异大,控制复杂 | 保留高频简单指令,靠组合完成复杂功能 |
| 控制实现 | 微码便于扩展复杂指令 | 多周期、控制路径长 | 硬布线控制更快 |
| 访存方式 | 指令可直接访问内存,表达灵活 | 内存访问慢且不利于流水线 | load/store 架构,运算主要在寄存器完成 |
| 流水线 | 复杂指令可做但成本高 | 变长、多周期造成节拍不稳 | 定长、单周期倾向更适合流水线 |
做题路线
- 先看题干问“正确”还是“错误”,RISC/CISC 题经常考反向选择。
- “指令功能强、寻址方式复杂多样、变长、微程序、多周期”归 CISC。
- “指令少、定长、寄存器多、硬布线、load/store、适合流水线”归 RISC。
- 不要把 RISC 的“精简”理解成“功能弱”,它是用简单指令组合和编译器优化实现复杂功能。
- 不要把“寄存器多”误解成“寻址方式多”;RISC 是以寄存器为主,而不是寻址方式复杂。
🧪 例题(按难度)
简单(3题)
中级(3题)
例题1(找错误选项)
以下关于 RISC 技术的叙述中,错误的是:
例题2(概念判断)
下列特征更符合 CISC 的是:
困难(1题)
📚 本课小结
- CISC:多指令、变长、多寻址、常微程序
- RISC:少指令、定长、寄存器为主、硬布线、利于流水线