计组笔记 指令功能、类型与设计
指令类型与功能
指令分类方法
- 按指令格式分类:双操作指令、单操作数指令、无操作数指令(三操作数指令很少)
- 按操作数存储位置分类:RR型、RS型、SS型、RI型,R为寄存器、S为存储器、I为立即数
-
按指令功能分类:传输类指令、运算类指令、控制类指令等
这些指令是编程所关心的
传输类指令
传输类指令是计算机中最基本的指令,也是编程中使用最多的指令,
用于实现数据传输操作
从计算机工作机制看,计算机硬件操作基本都可以归结为信息的传送
注意:
传输指令实际为”
复制
“指令
因为数据从源地址传送到目的地后,源地址内容一般保持不变,可以被多次使用(涉及堆栈的数据除外,
因为数据出栈入栈,本身地址就发生了改变
)
我们可以根据传输位置分为三大类:
- 寄存器传送指令
-
访存指令
用于主存与CPU之间的数据传输,比如加载LOAD 存储:STORE
-
I/O指令
实现主机和各外围设备之间的信息传送
设计传输指令时需说明:
- 传输范围
- 传输单位
- 寻址方式
运算类指令
大概分为
- 算术运算指令
- 逻辑运算指令
- 移位运算指令
-
串运算指令
控制类指令
用于控制指令的执行顺序,选择程序执行方向,并使程序具有测试、分析和判断的能力
具体看下图
一些与指令设计有关的要求和需要考虑的因素
指令设计例题!
指令周期
定义
在介绍硬连线控制器前,先补充指令周期以及一些常见指令的指令周期,方便后面看题目时不懵逼
定义:指令周期是取出一条指令并执行这条指令的时间。由于各种指令的操作功能不同,因此各种指令的指令周期是不尽相同的。
指令周期常常用若干个
CPU周期数来表示
,CUP周期数又称为
机器周期
指令周期 CPU周期与时钟周期的关系
**CPU周期:**由于CPU访问一次内存所花的时间较长,
因此通常用内存中读取一个指令字的最短时间来规定CPU周期
换个角度来说,取指需要一个CPU周期
时钟周期(T周期/节拍脉冲):它是处理操作的最基本的单位
下图表明了这三个周期的关系
MOV指令的指令周期
MOV指令是一条RR型指令,需要两个CPU周期来完成,
其中取指需要一个CPU周期,执行周期需要一个CPU周期
下面简单介绍,具体还是得看课本。。。
总体来看就
取指PC+1 -> 译码 -> 执行
接着就到下一条指令了
取指周期
1. PC装入第一条指令的地址
2. PC的内容放到地址总线ABUS上,对指存进行译码,并启动读命令
3. 读出MOV指令通过指令总线IBUS装入指令寄存器IR
4. PC + 1
5. 指令寄存器中的操作码OP被译码
6. CPU识别出是MOV指令
接着译码
译码也算在取值周期中
执行周期
- 选择R1为源寄存器,R0为目标寄存器
- OC送控制信号到ALU,指定ALU做传输操作
-
将ALU输入到数据总线DBUS上
注意,任何时候DBUS上只能有一个数据
- 将DBUS上的数据打入到数据缓冲寄存器DR中
- 将DR中的数据打入目标寄存器R0,R0的内容改变
LAD指令的指令周期
LAD指令是RS型指令,需要三个CPU周期
个人理解类似load?加载数据到某个地方
取指周期
与MOV一致
执行周期
占用两个CPU周期
- 将指令中的直接地址码放到数据总线DBUS上
- 将地址码装入地址寄存器AR
- 将数存中AR对应的地址数读到DBUS上
- 将DBUS上的数据装入DR
- 将DR中的数装入通用寄存器R1,原本R1的数被替换
ADD指令的指令周期
ADD指令是RR型指令,在运算器中用两个寄存器R1和R2的数据进行加法运算。指令周期只需要两个CPU周期
取指周期
与MOV指令一致
执行周期
- 选择R1做源寄存器,R2做目标寄存器
- OC送控制命令到ALU,指定ALU做R1和R2的加法操作
- 打开ALU三态门,运算结果放到DBUS上
- 将DBUS上数据打入DR,ALU产生的进位信号保存在状态字寄存器PSWR中
- 将DR装入R2,R2原本的内容被替换掉
STO指令的指令周期
RS指令
先访问取出STO指令,然后按照按照R3的地址访问数存,将R2存放的数写入数存中R3的单元
需要3个CPU周期,执行周期为两个
取指周期
与MOV指令一致
执行周期
- 选择R3做数据存储器的地址单元
- 将R3上的地址放到DBUS上
- 将地址打入AR,并进行数存地址译码
- 将R2上的数据放到DBUS上
- 将R2的数据存入数存里R3对应的单元,这个地址原本的数被冲掉
先送地址,后送数据!
JMP指令的指令周期
JMP指令是一条无条件转移指令,用来改变程序执行顺序。
指令周期为两个CPU周期
取指周期
与MOV指令一致
执行周期
- 将IR中的地址码发到DBUS上
-
将DBUS上的地址码打入程序计数器PC中,PC中原本的内容被更换。
同时,由于PC中原先的内容被更换,下一条指令就不是从原来的位置取出了
用方框图表示指令周期
规则如图
对前面讲的几条指令进行归纳