第5章 指令系统
指令系统(ISA)是计算机软硬件的交界面,规定了处理器能执行的指令集合和格式,决定了一台计算机硬件的主要性能和基本功能。
5.1 指令系统的发展
指令系统随着计算机的发展不断丰富,经历了从简单到复杂再到精简的过程。早期计算机指令少而简单,后来为增强功能增加了大量复杂指令(CISC),随后RISC思想回归精简。
5.2 机器指令特征
基本概念
- 指令:指示计算机执行某些操作的命令,用一个二进制位串表示
- 指令系统:一台计算机中所有机器指令的集合
机器指令的要素
每条机器指令必须包含:操作码、源操作数的引用、结果操作数引用、下一条指令引用。
指令系统的设计要素
| 设计要素 | 说明 |
|---|---|
| 操作清单 | 提供多少种操作、复杂程度 |
| 数据类型 | 对哪几种数据类型完成操作 |
| 指令格式 | 指令长度、地址数目、字段长度 |
| 寄存器 | 可访问的CPU寄存器数目及用途 |
| 寻址方式 | 操作数地址的产生方式 |
设计原则:完备性、有效性、规整性(对称性/均齐性/格式一致)、兼容性。
指令长度与数据字长的关系
- 指令字长:一条指令的二进制位数
- 机器字长:CPU一次能处理的数据位数(由ALU和寄存器位数决定)
- 数据字:数据类型的宽度度量单位
- 指令字长可以是机器字长的整数倍或分数倍(半字长/单字长/双字长指令)
指令类型
| 类型 | 功能 | 示例 |
|---|---|---|
| 数据处理指令 | 算术、逻辑、移位、比较 | ADD、AND、SHL |
| 数据传送指令 | 寄存器与主存间传送 | LOAD、STORE、MOV |
| 程序控制指令 | 改变程序执行顺序 | JMP、CALL、RET |
| 输入输出指令 | 与外设交换数据 | IN、OUT |
5.3 指令格式
操作码
| 类型 | 特点 | 适用 |
|---|---|---|
| 定长操作码 | 长度固定,硬件设计简单 | 字长较长的大中型机 |
| 变长操作码 | 长度可变,分散在不同字段 | 微型、小型计算机 |
地址码
| 地址数 | 格式 | 说明 |
|---|---|---|
| 三地址 | OP A1 A2 A3 | A1 = A2 op A3 |
| 二地址 | OP A1 A2 | A1 = A1 op A2 |
| 一地址 | OP A1 | A1 = ACC op A1 |
| 零地址 | OP | 栈顶操作或无操作数 |
操作数位置类型
| 类型 | 操作数位置 | 速度 |
|---|---|---|
| SS型 | 两个操作数都在主存 | 慢(多次访存) |
| RR型 | 两个操作数都在寄存器 | 快(无需访存) |
| RS型 | 一个在主存,一个在寄存器 | 中等 |
操作码扩展
变长操作码设计中,地址码位数减少时操作码位数增加。
例:16位指令字长,基本4位操作码,3个地址码字段各4位:
- 4位操作码→最多15条三地址指令
- 8位操作码→最多15条二地址指令
- 12位操作码→最多15条一地址指令
- 16位操作码→16条零地址指令
5.4 寻址方式
| 寻址方式 | 有效地址 | 访存次数 | 说明 |
|---|---|---|---|
| 立即寻址 | — | 0 | 操作数在指令中 |
| 直接寻址 | EA = D | 1 | 地址字段直接给出主存地址 |
| 间接寻址 | EA = (D) | 2 | D单元的内容是操作数地址 |
| 寄存器寻址 | EA = Ri | 0 | 操作数在寄存器中 |
| 寄存器间接寻址 | EA = (Ri) | 1 | 寄存器的内容是主存地址 |
| 相对寻址 | EA = (PC)+D | 1 | PC+偏移量,程序可浮动 |
| 基址寻址 | EA = (BR)+D | 1 | 基址寄存器+偏移量 |
| 变址寻址 | EA = (IX)+D | 1 | 变址寄存器+偏移量 |
| 隐含寻址 | 隐含约定 | — | 操作数地址隐含在操作码中 |
| 堆栈寻址 | SP | — | 栈顶操作,隐含由SP提供地址 |
5.5 CISC与RISC
| 特征 | CISC(复杂指令集) | RISC(精简指令集) |
|---|---|---|
| 指令数量 | 多(数百条) | 少(数十条) |
| 指令格式 | 可变长 | 固定长 |
| 寻址方式 | 多(十几种) | 少(几种) |
| 执行周期 | 可变 | 单周期为主 |
| 控制器实现 | 微程序控制为主 | 硬布线控制为主 |
| 存储器访问 | 多数指令可直接操作内存 | 只有LOAD/STORE访存 |
| 编译器设计 | 复杂 | 简单(优化空间大) |
| 硬件实现 | 复杂,资源利用率低 | 简单高效 |
RISC特点:指令少而简单、固定长度、单周期执行、LOAD/STORE架构、硬布线控制为主。典型代表:ARM、RISC-V、MIPS。
CISC特点:指令丰富、可变长度、多寻址方式、微程序控制为主。典型代表:x86(Intel/AMD)。
现代趋势:x86内部将CISC指令解码为RISC风格的微操作执行。
5.6 指令系统兼容性
系列机各机种之间应具有共同的基本指令集,以保证程序兼容。当用户更换新机器时,原来编写的程序可不必修改就使用在高档机中(如IBM 360系列)。
考试重点
★★☆ 第二梯队
| 考点 | 典型题型 |
|---|---|
| 指令格式设计(定长/变长操作码扩展) | 设计题 |
| 寻址方式有效地址计算 | 计算题 |
| CISC与RISC对比 | 简答/对比表 |
| SS/RR/RS型指令特点 | 简答 |
| 操作码扩展例题 | 计算 |
★☆☆ 第三梯队
| 考点 | 典型题型 |
|---|---|
| 指令的类型和功能 | 简答 |
| 指令系统的设计原则 | 简答 |
| 间接寻址的作用 | 简答 |
| 指令长度与数据字长的关系 | 简答 |
| 指令系统兼容性概念 | 简答 |