计组笔记指令功能、类型与设计

计组笔记 指令功能、类型与设计

指令类型与功能

指令分类方法

  • 按指令格式分类:双操作指令、单操作数指令、无操作数指令(三操作数指令很少)
  • 按操作数存储位置分类:RR型、RS型、SS型、RI型,R为寄存器、S为存储器、I为立即数
  • 按指令功能分类:传输类指令、运算类指令、控制类指令等 这些指令是编程所关心的

传输类指令

传输类指令是计算机中最基本的指令,也是编程中使用最多的指令,用于实现数据传输操作

从计算机工作机制看,计算机硬件操作基本都可以归结为信息的传送

注意:

传输指令实际为”复制“指令

因为数据从源地址传送到目的地后,源地址内容一般保持不变,可以被多次使用(涉及堆栈的数据除外,因为数据出栈入栈,本身地址就发生了改变)

我们可以根据传输位置分为三大类:

  1. 寄存器传送指令
  2. 访存指令 用于主存与CPU之间的数据传输,比如加载LOAD 存储:STORE
  3. I/O指令 实现主机和各外围设备之间的信息传送

设计传输指令时需说明:

  1. 传输范围
  2. 传输单位
  3. 寻址方式

计组笔记指令功能、类型与设计_第1张图片
计组笔记指令功能、类型与设计_第2张图片

运算类指令

大概分为

  • 算术运算指令
  • 逻辑运算指令
  • 移位运算指令
  • 串运算指令
    计组笔记指令功能、类型与设计_第3张图片

控制类指令

用于控制指令的执行顺序,选择程序执行方向,并使程序具有测试、分析和判断的能力

具体看下图

计组笔记指令功能、类型与设计_第4张图片

一些与指令设计有关的要求和需要考虑的因素

计组笔记指令功能、类型与设计_第5张图片

指令设计例题!

计组笔记指令功能、类型与设计_第6张图片

计组笔记指令功能、类型与设计_第7张图片

指令周期

定义

在介绍硬连线控制器前,先补充指令周期以及一些常见指令的指令周期,方便后面看题目时不懵逼

定义:指令周期是取出一条指令并执行这条指令的时间。由于各种指令的操作功能不同,因此各种指令的指令周期是不尽相同的。

指令周期常常用若干个 CPU周期数来表示,CUP周期数又称为 机器周期

指令周期 CPU周期与时钟周期的关系

**CPU周期:**由于CPU访问一次内存所花的时间较长,因此通常用内存中读取一个指令字的最短时间来规定CPU周期

换个角度来说,取指需要一个CPU周期

时钟周期(T周期/节拍脉冲):它是处理操作的最基本的单位

下图表明了这三个周期的关系
计组笔记指令功能、类型与设计_第8张图片
计组笔记指令功能、类型与设计_第9张图片

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指令

接着译码 译码也算在取值周期中

执行周期
  1. 选择R1为源寄存器,R0为目标寄存器
  2. OC送控制信号到ALU,指定ALU做传输操作
  3. 将ALU输入到数据总线DBUS上 注意,任何时候DBUS上只能有一个数据
  4. 将DBUS上的数据打入到数据缓冲寄存器DR中
  5. 将DR中的数据打入目标寄存器R0,R0的内容改变

LAD指令的指令周期

LAD指令是RS型指令,需要三个CPU周期

个人理解类似load?加载数据到某个地方

取指周期

与MOV一致

执行周期

占用两个CPU周期

  1. 将指令中的直接地址码放到数据总线DBUS上
  2. 将地址码装入地址寄存器AR
  3. 将数存中AR对应的地址数读到DBUS上
  4. 将DBUS上的数据装入DR
  5. 将DR中的数装入通用寄存器R1,原本R1的数被替换

ADD指令的指令周期

ADD指令是RR型指令,在运算器中用两个寄存器R1和R2的数据进行加法运算。指令周期只需要两个CPU周期

取指周期

与MOV指令一致

执行周期
  1. 选择R1做源寄存器,R2做目标寄存器
  2. OC送控制命令到ALU,指定ALU做R1和R2的加法操作
  3. 打开ALU三态门,运算结果放到DBUS上
  4. 将DBUS上数据打入DR,ALU产生的进位信号保存在状态字寄存器PSWR中
  5. 将DR装入R2,R2原本的内容被替换掉

STO指令的指令周期

RS指令

先访问取出STO指令,然后按照按照R3的地址访问数存,将R2存放的数写入数存中R3的单元

需要3个CPU周期,执行周期为两个

取指周期

与MOV指令一致

执行周期
  1. 选择R3做数据存储器的地址单元
  2. 将R3上的地址放到DBUS上
  3. 将地址打入AR,并进行数存地址译码
  4. 将R2上的数据放到DBUS上
  5. 将R2的数据存入数存里R3对应的单元,这个地址原本的数被冲掉

先送地址,后送数据!

JMP指令的指令周期

JMP指令是一条无条件转移指令,用来改变程序执行顺序。

指令周期为两个CPU周期

取指周期

与MOV指令一致

执行周期
  1. 将IR中的地址码发到DBUS上
  2. 将DBUS上的地址码打入程序计数器PC中,PC中原本的内容被更换。同时,由于PC中原先的内容被更换,下一条指令就不是从原来的位置取出了

用方框图表示指令周期

规则如图
计组笔记指令功能、类型与设计_第10张图片

对前面讲的几条指令进行归纳

计组笔记指令功能、类型与设计_第11张图片

你可能感兴趣的:(计组学习笔记,其他)