CISC与RISC
CISC 与 RISC
1. CISC(复杂指令集计算机)
基本概念
CISC 定义:
- Complex Instruction Set Computer
- 复杂指令集计算机
- 指令功能强大,格式多样
设计理念:
- 通过复杂指令减少程序长度
- 提高代码密度
- 简化编译器设计
CISC 特点
指令特点:
- 指令多样:支持各种复杂操作
- 长度不一:指令长度可变
- 功能强大:单条指令完成复杂功能
- 寻址丰富:支持多种寻址方式
硬件特点:
- 微程序控制:使用微程序实现复杂指令
- 复杂译码:需要复杂的指令译码器
- 多周期执行:复杂指令需要多个周期
- 硬件复杂:控制逻辑复杂
软件特点:
- 代码密度高:程序长度短
- 编译简单:编译器设计相对简单
- 向后兼容:支持老版本程序
- 功能丰富:支持高级语言特性
CISC 指令示例
复杂指令:
; 字符串复制指令
MOVSB ; 复制一个字节
MOVSW ; 复制一个字
MOVSD ; 复制一个双字
; 循环指令
LOOP label ; 循环控制
REP MOVSB ; 重复字符串操作
; 复杂寻址
MOV AX, [BX+SI+100] ; 基址变址寻址
优势:
- 代码密度高:减少程序存储空间
- 功能强大:支持复杂操作
- 兼容性好:支持老版本程序
劣势:
- 执行效率低:复杂指令执行慢
- 硬件复杂:控制逻辑复杂
- 难以流水线:指令长度不一
2. RISC(精简指令集计算机)
基本概念
RISC 定义:
- Reduced Instruction Set Computer
- 精简指令集计算机
- 指令简单,格式统一
设计理念:
- 通过简单指令提高执行效率
- 便于流水线实现
- 优化硬件设计
RISC 特点
指令特点:
- 指令简单:每条指令功能单一
- 长度固定:指令长度统一
- 格式规整:指令格式标准化
- 寻址简单:主要使用寄存器寻址
硬件特点:
- 硬布线控制:使用组合逻辑实现
- 简单译码:指令译码简单快速
- 单周期执行:大部分指令单周期完成
- 硬件简单:控制逻辑简单
软件特点:
- 代码密度低:程序长度较长
- 编译复杂:编译器需要优化
- 寄存器优化:需要寄存器分配优化
- 流水线友好:便于流水线实现
RISC 指令示例
简单指令:
; 加载指令
LOAD R1, [R2] ; 从内存加载到寄存器
STORE R1, [R2] ; 从寄存器存储到内存
; 算术指令
ADD R1, R2, R3 ; R1 = R2 + R3
SUB R1, R2, R3 ; R1 = R2 - R3
; 分支指令
BEQ R1, R2, label ; 相等则跳转
BNE R1, R2, label ; 不等则跳转
优势:
- 执行效率高:简单指令执行快
- 硬件简单:控制逻辑简单
- 便于流水线:指令格式规整
劣势:
- 代码密度低:程序长度较长
- 编译复杂:需要编译器优化
- 功能简单:不支持复杂操作
3. CISC 与 RISC 比较
指令特点比较
指令复杂度:
- CISC:指令复杂,功能强大
- RISC:指令简单,功能单一
指令长度:
- CISC:长度可变,格式多样
- RISC:长度固定,格式统一
寻址方式:
- CISC:寻址方式丰富
- RISC:主要使用寄存器寻址
硬件实现比较
控制方式:
- CISC:微程序控制,复杂
- RISC:硬布线控制,简单
译码复杂度:
- CISC:译码复杂,多级译码
- RISC:译码简单,单级译码
执行效率:
- CISC:多周期执行,效率低
- RISC:单周期执行,效率高
软件支持比较
代码密度:
- CISC:代码密度高,程序短
- RISC:代码密度低,程序长
编译复杂度:
- CISC:编译相对简单
- RISC:编译需要优化
兼容性:
- CISC:向后兼容性好
- RISC:兼容性相对较差
4. 现代处理器的发展
融合趋势
现代 CISC:
- 借鉴 RISC 设计思想
- 内部使用 RISC 核心
- 外部保持 CISC 兼容性
现代 RISC:
- 增加复杂指令支持
- 提高代码密度
- 优化编译器设计
混合架构
x86-64 架构:
- 外部 CISC 接口
- 内部 RISC 核心
- 动态翻译技术
ARM 架构:
- 精简指令集
- 高效流水线
- 低功耗设计
发展趋势
性能优化:
- 提高指令级并行度
- 优化流水线设计
- 增强分支预测
功耗控制:
- 动态频率调节
- 多核设计
- 异构计算
功能增强:
- 向量指令支持
- 安全指令扩展
- 虚拟化支持
5. 应用场景分析
CISC 适用场景
桌面计算:
- 兼容性要求高
- 代码密度重要
- 功能需求复杂
服务器应用:
- 向后兼容性
- 复杂业务逻辑
- 稳定性要求
嵌入式系统:
- 功能丰富
- 开发效率高
- 成本控制
RISC 适用场景
移动设备:
- 低功耗要求
- 高性能需求
- 电池续航
高性能计算:
- 并行处理
- 流水线优化
- 向量运算
物联网设备:
- 简单控制
- 低功耗
- 成本敏感
练习题
练习 1
CISC 与 RISC 的主要区别是什么?
参考答案
CISC 与 RISC 的主要区别:
-
指令特点:
- CISC:指令复杂,功能强大,长度可变
- RISC:指令简单,功能单一,长度固定
-
硬件实现:
- CISC:微程序控制,译码复杂,多周期执行
- RISC:硬布线控制,译码简单,单周期执行
-
软件支持:
- CISC:代码密度高,编译简单,兼容性好
- RISC:代码密度低,编译复杂,兼容性差
-
性能特点:
- CISC:执行效率低,硬件复杂,难以流水线
- RISC:执行效率高,硬件简单,便于流水线
-
应用场景:
- CISC:桌面计算、服务器、嵌入式系统
- RISC:移动设备、高性能计算、物联网
练习 2
指令的有效地址如何计算?
参考答案
指令的有效地址计算方法:
-
立即寻址:
- 有效地址 = 指令中的立即数
- 无需计算,直接使用
-
直接寻址:
- 有效地址 = 地址码
- 直接使用地址码作为地址
-
间接寻址:
- 有效地址 = [地址码]
- 先取地址码的内容作为地址
-
寄存器寻址:
- 有效地址 = 寄存器内容
- 直接使用寄存器值
-
寄存器间接寻址:
- 有效地址 = [寄存器内容]
- 先取寄存器内容作为地址
-
基址寻址:
- 有效地址 = 基址寄存器 + 偏移量
- 基址寄存器内容加上偏移量
-
变址寻址:
- 有效地址 = 变址寄存器 + 基地址
- 变址寄存器内容加上基地址
-
相对寻址:
- 有效地址 = PC + 偏移量
- 程序计数器加上偏移量
术语对照表
| 中文术语 | 英文术语 | 缩写 | 说明 |
|---|---|---|---|
| 复杂指令集计算机 | Complex Instruction Set Computer | CISC | 指令功能强大的体系结构 |
| 精简指令集计算机 | Reduced Instruction Set Computer | RISC | 指令简单高效的体系结构 |
| 指令级并行 | Instruction Level Parallelism | ILP | 多条指令并行执行 |
| 流水线 | Pipeline | - | 指令重叠执行技术 |
| 超标量 | Superscalar | - | 多发射流水线 |
| 超长指令字 | Very Long Instruction Word | VLIW | 编译器调度的多发射 |
| 寄存器窗口 | Register Window | - | RISC的寄存器管理技术 |
| 延迟槽 | Delay Slot | - | 分支指令后的指令槽 |
| 加载/存储结构 | Load/Store Architecture | - | 只有访存指令访问内存 |
| 定长指令 | Fixed-Length Instruction | - | 指令长度固定 |
| 变长指令 | Variable-Length Instruction | - | 指令长度可变 |
| 寻址方式 | Addressing Mode | - | 操作数寻址方式 |
| 硬布线控制 | Hardwired Control | - | 硬件实现的控制器 |
| 微程序控制 | Microprogrammed Control | - | 微程序实现的控制器 |
| 控制存储器 | Control Store | - | 存放微程序的存储器 |
| 微指令 | Microinstruction | - | 微程序的基本单位 |
| 微操作 | Microoperation | - | 最基本的硬件操作 |
| ARM | Advanced RISC Machine | ARM | 主流RISC架构 |
| MIPS | Microprocessor without Interlocked Pipeline Stages | MIPS | 经典RISC架构 |
| x86 | x86 | - | 主流CISC架构 |
