计算机组成原理14——指令系统1

本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。

机器指令

指令系统通俗讲解:https://zhuanlan.zhihu.com/p/368777813

计算机提供指令集合,供使用者在这个集合范围内使用。只要是这个指令集合中的指令,机器就能通过硬件将其解析,控制其它相关硬件完成这个指令指定的操作。
指令集反映了机器的功能,使用者使用集合中的指令来编写各种程序。使用者使用集合中的指令编写程序,计算机按照程序顺序执行,从而完成全自动操作。
计算机设计者研究机器的指令系统,用硬件电路、芯片、设备来实现机器指令系统的功能。

指令的一般形式:
在这里插入图片描述

操作码

1、操作码长度固定:

比如说,操作码长度占7位,直接放在指令字的第一个字段中,那么该机器的指令集合最多只有 2 7 = 128 2^7 = 128 27=128条指令。
这种格式的指令集易于硬件设计,指令译码时间短,广泛用于字长较长的、大中型计算机和超小型计算机以及RISC。

2、操作码长度不固定

看起来就知道硬件设计难度增大了,控制器的设计复杂。
通常,采用拓展操作码技术,如下图所示:
从指令中选择一个或多个字段用作操作码
至于为什么要选择多个字段,是因为地址和操作码在一条指令中
按照位来区分操作码和地址,想一想就觉得相当的复杂,很难区分开操作码和地址码
按照字段来区分操作码和地址码,对硬件和控制的要求简单一些,并且易于区分出操作码和地址码。
在这里插入图片描述

地址码

指出该指令的源操作数的地址、结果的地址以及下一条指令的地址。
这里的地址可以是主存的地址、寄存器的地址,设置可以是IO设备的地址。

四地址指令

在这里插入图片描述

需要访问四次存储器,取指令一次,取两个操作数两次,存放结果一次。 ( A 1 ) O P ( A 2 ) − > A 3 (A_1) OP (A_2)->A_3 (A1)OP(A2)>A3
通常程序中的指令是按照顺序执行的, A 4 A_4 A4这个字段可以由程序计数器PC来实现,PC计数形成下一条指令的地址。
从而可以省去 A 4 A_4 A4,地址的位数更多,寻址范围更大。

三地址指令

在这里插入图片描述

三地址指令将四地址指令中的 A 4 A_4 A4隐含在程序计数器PC中,但是如果所有地址字段全部都是主存地址,那么三地址指令也同样需要访问四次存储器:取指令一次,取两个操作数两次,存放结果一次。
在机器运行过程中,没有必要每次都将运算结果存入主存,中间结果可以暂时存放在CPU的寄存器中,比如ACC中,这样可以省掉存入主存的时间,而且可以省去一个地址字段 A 3 A_3 A3

二地址指令

在这里插入图片描述

二地址指令,将结果存放在ACC、 A 1 A_1 A1或者 A 2 A_2 A2
( A 1 ) O P ( A 2 ) − > A 1 (A_1) OP (A_2)->A_1 (A1)OP(A2)>A1 ( A 1 ) O P ( A 2 ) − > A 2 (A_1) OP (A_2)->A_2 (A1)OP(A2)>A2。结果存放在 A 1 A_1 A1还是 A 2 A_2 A2中,都需要访问四次存储器。
但是如果结果存放在ACC中, ( A 1 ) O P ( A 2 ) − > A C C (A_1) OP (A_2)->ACC (A1)OP(A2)>ACC,只需要3次访存。即取指令,取操作数1、取操作数2。
如果说有一个操作数的地址隐含在运算器的ACC中,则指令字中只需要给出一个地址码就行了,那么就会构成一地址指令。

一地址指令

在这里插入图片描述

( A C C ) O P ( A 1 ) − > A C C (ACC) OP (A_1)->ACC (ACC)OP(A1)>ACC的操作,ACC既存放参与运算的操作数,又存放运算的中间结果。
完成一条一地址指令只需要两次访存。取指令一次、取操作数1一次。

零地址指令

例如空操作、停机这类指令不需要地址码;子程序返回、中断返回这类指令没有地址码,其操作数的地址隐含在堆栈指针SP中。

四、三、二、一地址指令,地址的段数越少,其地址访问的范围越大。

操作数和操作类型

操作数类型通常有:地址、数字、字符、逻辑数据等。
一般机器中的数据都按照“边界对齐”的要求存放,以便于硬件实现。
在这里插入图片描述

如果数据不对齐,那么可能会导致一个数据存放在两个存储单元中,需要访问两次存储器。内存通常不会在一段时间内访问两次。
在这里插入图片描述

数据传送

寄存器与寄存器之间
寄存器与存储单元之间
存储单元与存储单元之间

算数逻辑操作

实现算数运算(加减乘除、增1、减1等)、逻辑运算(与、或、非、异或)
低档机一般只支持基本的二进制加减、比较、求补等;高档机还能支持浮点运算、十进制运算。

移位

算术移位
逻辑移位
循环移位

转移

转移操作用于计算机程序执行顺序的转移
1、无条件转移:直接把程序转移到下一条需执行指令的地址。
2、条件转移:根据当前指令的执行结果来决定是否需要转移。条件满足则转移,条件不满足则顺序执行。
3、调用与返回:在编写程序时,具有特定功能的程序段会被反复使用,如具有特定功能的子程序,当需要执行时,只需要调用子程序即可。
调用指令(CALL)一般与返回指令(RETURN)配合使用,CALL用于从当前的程序位置转移至子程序入口,RETURN用于子程序执行完后重新返回到原程序的断点。

下图是程序调用和返回指令的示意图。
主程序从2000地址单元开始,在2100调用子程序SUB1
然后CPU转到2400开始执行,执行到2500,调用子程序SUB2
然后在2700执行SUB2后,返回到2501继续执行SUB1
执行到2560,调用子程序SUB2
然后在2700执行SUB2后,返回到2561继续执行,然后返回到2101,继续执行主程序
在这里插入图片描述

4、陷阱是一种意外事故的中断。
一旦出现意外故障,计算机就发出陷阱信号,暂停当前程序的执行,转入故障处理程序进行响应的故障处理。
一般是隐指令,由CPU自动产生并执行。也可以提供供用户使用的陷阱指令,利用它完成系统调用和程序请求。

输入输出

输入输出指令,完成外设中的寄存器和CPU寄存器之间的数据交互。

其它

1、其他包括等待指令、停机指令、空操作指令、开中断指令、关中断指令、置条件码指令等。
2、为了适应计算机的信息管理、数据处理及办公自动化等领域的应用,有的计算机还设有非数值处理指令。如字符串传送、字符串比较、字符串查询及字符串转换等。
3、在多用户、多任务的计算机系统中,还设有特权指令,这类指令只能用于操作系统或其他系统软件,用户是不能使用的。
4、在有些大型或巨型机中,还设有向量指令,可对整个向量或矩阵进行求和、求积运算。在多处理器系统中还配有专门的多处理机指令。

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值