第七章 指令系统
7.1 机器指令
- 指令的格式是什么
- 操作码 地址码 寻址方式
- 指令的字长
- 固定字长、可变字长
一、指令的一般格式

1. 操作码 映机器做什么操作
(1) 长度固定
用于指令字长较长的情况,RISC
(2) 长度可变
操作码分散在指令字的不同字段中
(3) 扩展操作码技术
操作码的位数随地址数的减少而增加

2. 地址码
(1) 四地址

A1 第一操作数地址
A2 第二操作数地址
A3 结果的地址
A4 下一条指令地址
4 次访存
寻址范围 2^6 = 64
(2) 三地址
若 PC 代替 A4

4 次访存
寻址范围 2^8 = 256
(3) 二地址
若 A3 用 A1 或 A2 代替

4 次访存
寻址范围 2^12 = 4 K
(4) 一地址
若ACC 代替 A1(或A2)

2 次访存
寻址范围 224 = 16 M
二、指令字长

1. 指令字长固定
指令字长 = 存储字长
2. 指令字长可变
按字节的倍数变化
小结
- 当用一些硬件资源代替指令字中的地址码字段后
- 可扩大指令的寻址范围
- 可缩短指令字长
- 可减少访存次数
- 当指令的地址字段为寄存器时
- 可缩短指令字长
- 指令执行阶段不访存
7.2 操作数类型和操作类型
一、操作数类型
地址 无符号整数
数字 定点数、浮点数、十进制数
字符 ASCII
逻辑数 逻辑运算
二、数据在存储器中的存放方式
字节编址,数据在存储器中的存放方式(存储字长64位,机器字长32位)
1. 从任意位置开始存储

优点:不浪费存储资源
缺点:除了访问一个字节之外,访问其它任何类型的数据,都可能花费两个存储周期的时间。读写控制比较复杂。
2. 从一个存储字的起始位置开始访问

优点:无论访问何种类型的数据,在一个周期内均可完成,读写控制简单。
缺点:浪费了宝贵的存储资源
3. 边界对准方式——从地址的整数倍位置开始访问

数据存放的起始地址是数据长度(按照编址单位进行计算)的整数倍
本方案是前两个方案的折衷,在一个周期内可以完成存储访问,空间浪费也不太严重。
三、操作类型
1. 数据传送
| 源 | 目的 | 例如 |
|---|---|---|
| 寄存器 | 寄存器 | MOVE |
| 寄存器 | 存储器 | STORE MOVE PUSH |
| 存储器 | 寄存器 | LOAD MOVE POP |
| 存储器 | 存储器 | MOVE |
2. 算术逻辑操作
加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算
与、或、非、异或、位操作、位测试、位清除、位求反
3. 移位操作
算术移位
逻辑移位
循环移位(带进位和不带进位)
4. 转移
(1) 无条件转移
JMP
(2) 条件转移
结果为零转 (Z = 1) JZ
结果溢出转 (O = 1)JO
结果有进位转(C = 1)JC
跳过一条指令 SKP
(3) 调用和返回

(4) 陷阱(Trap)与陷阱指令
意外事故的中断
- 一般不提供给用户直接使用
- 设置供用户使用的陷阱指令
5. 输入输出
入 端口中的内容 ——> CPU 的寄存器
出 CPU 的寄存器 ——> 端口中的内容
7.3 寻址方式
确定 本条指令 的 操作数地址下一条 要执行 指令 的 指令地址
一、指令寻址
顺序:( PC ) + 1——> PC
跳跃:由转移指令指出

二、数据寻址

形式地址 指令字中的地址
有效地址 操作数的真实地址
约定 指令字长 = 存储字长 = 机器字长
1. 立即寻址
形式地址 A 就是操作数

指令执行阶段不访存
A 的位数限制了立即数的范围
2. 直接寻址
EA = A 有效地址由形式地址直接给出

执行阶段访问一次存储器
A 的位数决定了该指令操作数的寻址范围
操作数的地址不易修改(必须修改A)
3. 隐含寻址
操作数地址隐含在操作码中

MUL 指令:被乘数隐含在 AX(16位)或AL(8位)中
指令字中少了一个地址字段,可缩短指令字长
4. 间接寻址
EA =(A) 有效地址由形式地址间接提供

执行指令阶段 2 次访存
可扩大寻址范围
便于编制程序
多次访存
5. 寄存器寻址
EA = Ri 有效地址即为寄存器编号

执行阶段不访存,只访问寄存器,执行速度快
寄存器个数有限,可缩短指令字长
6. 寄存器间接寻址
EA = ( Ri ) 有效地址在寄存器中

有效地址在寄存器中, 操作数在存储器中,执行阶段访存
便于编制循环程序
7. 基址寻址
(1) 采用专用寄存器作基址寄存器
EA = ( BR ) + A
BR 为基址寄存器

可扩大寻址范围
有利于多道程序
BR 内容由操作系统或管理程序确定
在程序的执行过程中 BR 内容不变,形式地址 A 可变
(2) 采用通用寄存器作基址寄存器

由用户指定哪个通用寄存器作为基址寄存器
基址寄存器的内容由操作系统确定
在程序的执行过程中 R0 内容不变,形式地址 A 可变
8. 变址寻址
EA = ( IX ) +A
IX 为变址寄存器(专用)
通用寄存器也可以作为变址寄存器

可扩大寻址范围
IX 的内容由用户给定
在程序的执行过程中 IX 内容可变,形式地址 A 不变
便于处理数组问题
9. 相对寻址
EA = ( PC ) + A
A 是相对于当前指令的位移量(可正可负,补码)

A 的位数决定操作数的寻址范围
程序浮动
广泛用于转移指令
10. 堆栈寻址

先进后出(一个入出口)
栈顶地址 由 SP 指出
进栈 (SP)– 1 ——> SP
出栈 (SP)+ 1 ——> SP

7.4 设计指令格式时应考虑的各种因素
一、 指令系统的兼容性
二、 其他因素
操作类型 包括指令个数及操作的难易程度
数据类型 确定哪些数据类型可参与操作
指令格式 指令字长是否固定
地址码位数、地址个数、寻址方式类型
操作码位数、是否采用扩展操作码技术
寻址方式 指令寻址、操作数寻址
寄存器个数 寄存器的多少直接影响指令的执行时间
7.5 RISC 技术
一、RISC 的产生和发展
80 — 20 规律
二、RISC 的主要特征
选用使用频度较高的一些 简单指令, 复杂指令的功能由简单指令来组合
指令 长度固定、指令格式种类少、寻址方式少
只有 LOAD / STORE 指令访存
CPU 中有多个 通用 寄存器
采用 流水技术 一个时钟周期 内完成一条指令
采用 组合逻辑 实现控制器
三、CISC 的主要特征
系统指令 复杂庞大,各种指令使用频度相差大
指令 长度不固定、指令格式种类多、寻址方式多
访存 指令 不受限制
CPU 中设有 专用寄存器
大多数指令需要 多个时钟周期 执行完毕
采用 微程序 控制器
四、RISC和CISC 的比较
- RISC更能 充分利用 VLSI 芯片的面积
- RISC 更能 提高计算机运算速度
指令数、指令格式、寻址方式少,
通用 寄存器多,采用 组合逻辑 ,
便于实现 指令流水 - RISC 便于设计,可 降低成本,提高 可靠性
- RISC 不易 实现 指令系统兼容
487

被折叠的 条评论
为什么被折叠?



