【笔记】指令系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cbwem/article/details/79434039

一、机器指令

1.指令的一般格式

  指令是由操作码和地址码两部分组成的。

操作码

  操作码用来指明该指令所要完成的操作,如加法、减法、传送、移位、转移等。通常其位数反映了机器的操作种类,也即机器允许的指令条数。
  操作码的长度可以是固定的,也可以是变化的。前者将操作码集中放在一个指令字的一个字段内。这种格式便于硬件设计,指令译码时间段,广泛用于字长较长的、大中型计算机和超级小型计算机以及RISC中。
  对于操作码长度不固定的指令, 其操作码分散在指令字的不同字段中。这种格式可有效地压缩操作码的平均长度,在字长较短的微型计算机中被广泛采用。
  通常采用扩展操作码技术,使操作码的长度随操作数的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
  在设计操作码不固定的指令系统时,应尽量考虑安排指令使用频度(即指令在程序中出现的概率)高的指令占用短的操作码,对使用频度低的指令可占用较长的操作码,这样可以缩短经常使用的指令的译码时间。

地址码

  地址码用来指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一条指令的地址。“地址”可以是主存的地址,也可以是寄存器的地址,甚至可以是I/O设备的地址。

  (1)四地址指令


这里写图片描述

  其中,OP为操作码, A 1 为第一操作数地址, A 2 为第二操作数地址, A 3 为结果地址, A 4 为下一条指令的地址。
  因为程序中大多数指令是按顺序执行的,而程序计数器PC既能存放当前欲执行指令的地址,又有技术功能,因此它能自动形成下一条指令的地址。这样指令字中的第四地址字段 A 4 便可省区,即得三地址指令格式。

  (2)三地址指令


这里写图片描述

  它可完成 ( A 1 ) O P ( A 2 ) A 3 的操作,后续指令的地址隐含在程序计数器PC中。三地址指令操作数的直接寻址范围可达 2 8 = 256 。同理,若地址字段均为主存地址,则完成一条三地址指令也需访问4次存储器。
  机器在运行过程中,没有必要将每次运行结果都存入主存,中间结果可以暂时存放在CPU的寄存器中,这样又可以省去一个地址字段 A 3 ,从而得出二地址指令。

  (3)二地址指令


这里写图片描述

  它可完成 ( A 1 ) O P ( A 2 ) A 1 的操作,即 A 1 字段既代表源操作数的地址,又代表存放本次运算结果的地址。有的机器也可以表示 ( A 1 ) O P ( A 2 ) A 2 的操作,此时 A 2 除了代表源操作数的地址外, 还代表中间结果的存放地址。这两种情况完成一条指令仍需访问4次存储器。如果使其完成 ( A 1 ) O P ( A 2 ) A C C ,此时它完成一条指令只需3次访存,它的含义是中间结果暂存于累加器ACC中。二地址指令操作数的直接寻址范围为 2 12 = 4 K
  如果讲一个操作数的地址隐含在运算器的ACC中,则指令字中只需给出一个地址码,构成一地址指令。

  (4)一地址指令


这里写图片描述

  它可以完成 ( A C C ) O P ( A 1 ) A C C 的操作,ACC既存放参与运算的操作数,又存放运算的中间结构,这样完成一条一条指令只需两次访存。一地址指令操作数的直接寻址范围达 2 2 4 ,即16M。

  (5)零地址指令
  零地址指令在指令字中无地址码,例如空操作(NOP)、停机(HLT)这类指令只有操作码。而子程序返回(RET)、中断返回(IRET)这类指令没有地址码,其操作数的地址隐含在堆栈指针SP中。
  用一些硬件资源(如PC、ACC)承担指令字中需指明的地址码,可在不改变指令字长的前提下,扩大指令操作数的直接寻址范围。此外用PC、ACC等硬件代替指令字中的某些地址字段,还可缩短指令字长,并可减少访存次数。

2.指令字长

  指令字长取决于操作码的长度、操作数地址的长度、操作数地址的个数。为了提高指令的运行速度和节省存储空间,通常尽可能把常用的指令设计成单字长或短字长格式的指令。通常指令字长取8的整数倍。

二、操作数类型和操作类型

1.操作数类型

  机器中常见的操作数类型有地址、数字、字符、逻辑数据等。

  地址实际上也可看作是一种数据,在许多情况下要计算操作数的地址。这时地址可被认为是一个无符号的整数。

2.数据在存储器中的存放方式

  为了便于硬件实现,通常要求多字节的数据在存储器的存放方式能满足“边界对准”。
  在数据不对准边界的计算机中,数据可能在两个存储单元中,此时需要访问两次存储器,并对高低字节的位置进行调整后,才能取得一个字。

3.操作类型

数据传送

  数据传送包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送。

算术逻辑操作

  这类擦偶走可实现算术运算(加、减、乘、除、增1、减1、取负数即求补)和逻辑运算(与、或、非、异或)。有些机器还具有位操作功能,如位测试、位清除、位求反等。

移位

  移位可分为算数移位、逻辑移位、循环移位三种。

转移

  转移指令按其转移特征又可分为无条件转移、条件转移、跳转、过程调用与返回、陷阱等
  (1)无条件转移
  无条件转移不受任何条件约束,可直接把程序转移到下一条需执行指令的地址。
  (2)条件转移
  条件转移是根据当前指令的执行结果来决定是否需要转移。若条件满足,则转移;若条件不满足,则继续按顺序执行。
  还有一种条件转移指令,SKP,它暗示其下一条指令将被跳过,从而隐含了转移地址是SKP后的第二条指令。
  (3)调用与返回
  通常调用指令包括过程调用、系统调用、子程序调用。它可实现从一个程序转移到另一个至子程序的入口;RETURN用于子程序执行完后重新返回到原程序的断点。

  需要注意以下几点:
1. 子程序可在多出被调用。
2. 子程序调用可出现在子程序中,即允许子程序嵌套。
3. 每个CALL指令都对应一条RETURN指令。

  返回地址可存放在以下3处:
1. 寄存器内。机器内设有专用寄存器,专门用于存放返回地址。
2. 子程序的入口地址内。
3. 栈顶内。现代计算机都设有堆栈,执行RETURN指令后,便可自动从栈顶内去除应返回的地址。

  (4)陷阱与陷阱指令
  陷阱其实是一种意外事故的中断。一旦出现意外故障,计算机就发出陷阱信号,暂停当前程序的执行,转入故障处理程序进行相应的故障处理。
  计算机的陷阱指令一般不提供给用户直接使用,而作为隐指令(即指令系统中不提供的指令),在出现意外故障时,由CPU自动产生并执行。也有的机器设置供用户使用的陷阱指令或“访管”指令,利用它完成系统调用和程序请求。

  (5)输入输出
  通常设有输入输出指令,它完成从外设中的寄存器读入一个数据到CPU的寄存器内,或将数据从CPU的寄存器输出至某外设的寄存器中。

  (6)其他
  包括等待指令、停机指令、空操作指令、开中断指令、关中断指令、置条件码指令等。在多用户、多任务的计算机系统中,还设有特权指令,这类指令智能用于操作系统或其他系统软件,用户是不能使用的。
  在有些大型或巨型机中,还设有向量指令,可对整个向量或矩阵进行求和、求积运算。

三、寻址方式

  寻址方式分为指令寻址数据寻址两大类。

1.指令寻址

  指令寻址比较简单,它分为顺序寻址和跳跃寻址两种。
  顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。

2.数据寻址

  指令的地址码字段通常都不代表操作数的真实地址,把它称为形式地址,记作A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同来确定的。

立即寻址

  立即寻址的特点是操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数本身,又称为立即数。数据是采用补码形式存放的。
  优点在于只要取出指令,便可立即获得操作数,这种指令在执行阶段不必再访问存储器。A的位数限制了这类指令所能表述的立即数的范围。


这里写图片描述

直接寻址

  直接寻址的特点是,指令字中的形式地址A就是操作数的真实地址EA,即

E A = A


这里写图片描述

隐含寻址

  隐含寻址是指指令字中不明显地给出操作数的地址,其操作数的地址隐含在操作码或某个寄存器中。


这里写图片描述

间接寻址

  倘若指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址,有效地址是由形式地址间接提供的,即为间接寻址,即

E A = ( A )


这里写图片描述

  这种寻址方式与直接寻址相比,它扩大了操作数的寻址范围,因为A的位数通常小于字长,而存储字长可与指令字长相等。当多次间接寻址时,可用存储字的首尾来标志间接寻址是否结束。当存储字首位为“1”时,标明还需继续访存寻址;当存储字首位为“0”时,表明该存储字即为EA。寻址范围为 2 15
  间接寻址的第二个优点在于它便于编制程序。只要在调用前先将返回地址存入子程序最末条指令的形式地址A的存储单元内,便可准确返回到原程序断点。


这里写图片描述

  间接寻址的缺点在于指令的执行阶段需要访存两次或多次,致使指令执行时间延长。

寄存器寻址

  在寄存器寻址的指令字中,地址码字段直接指出了寄存器的编号,即

E A = R i
其操作数在由 R i 所指的寄存器内。由于操作数不再主存中,故寄存器寻址在指令执行阶段无须访存,减少了执行时间。

寄存器间接寻址

   R i 中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址EA=( R i )。与寄存器相比,指令的执行阶段还需访存。因有效地址不是存放在存储单元中,而是存放在寄存器中,故称其为寄存器间接寻址,它比间接寻址少访存一次。


这里写图片描述

基址寻址

  基址寻址需设有基址寄存器BR,其操作数的有效地址EA等于指令字中的形式地址与基址寄存器中的内容(称为基地址)相加,即

E A = A + ( B R )

  基址寄存器可采用 隐式的和 显示的两种。


这里写图片描述

  隐式是在计算机内专门设有一个基址寄存器BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征反映出基址寻址即可。
  显式是在一组通用寄存器里,由用户明确指出哪个寄存器用作基址寄存器,存放基地址。

  基址寻址可以扩大操作数的寻址范围,因基址寄存器的位数可以大于形式地址A的位数。当主存容量较大时,若采用直接寻址,因受A的位数限制,无法对主存所有单元进行访问,但采用基址寻址便可实现对主存空间的更大范围寻址。
  用户不必考虑自己的程序存于主存的哪一空间区域,完全可由操作系统或管理程序根据主存的使用状况,赋予基址寄存器一个初始值(即基地址),便可将用户程序的逻辑地址转化为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域。

变址寻址

  其有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即

E A = A + ( I X )

  只要变址寄存器位数足够,也可扩大操作数的寻址范围。


这里写图片描述

  基址寻址主要用于为程序或火速局分配存储空间,故基址寄存器的内容通常由擦偶走系统或管理程序确定,在程序的执行过程中其值是不可变的,而指令字中的A是可变的。在变址寻址中,变址寄存器的内容是由用户设定的,在程序执行过程中其值可变,而指令字中的A是不可变的。变址寻址主要用于处理数组问题,在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。

  有的机器的编址寻址具有自动变址的功能,即每存取一个数据,根据数据长度(即所占字节数),变址寄存器能自动增量或减量,以便形成下一个数据的地址。
  变址寻址还可以与其他寻址方式结合使用。变址寻址可与基址寻址合用,此时有效地址EA等于指令字中的形式地址A和变址寄存器IX的内容(IX)及基址寄存器BR中的内容(BR)相加之和,即

E A = A + ( I X ) + ( B R )

  变址寻址还可与间接寻址合用,形成先变址后间址或先间址再变址等寻址方式。

相对寻址

  相对寻址的有效地址是将程序计数器PC的内容与指令字中的形式地址A相加而成,即

E A = ( P C ) + A

  相对寻址常被用于转移类指令,转移后的目标地址与当前指令有一段距离,称为相对位移量,它由指令字的形式地址A给出,故A又称位移量。位移量A可正可负,通常用补码表示。
  相对寻址的最大特点是转移地址不固定,它可随PC值的变化而变,因此无论程序在主存的哪段区域,都可正确运行,对于编写浮动程序特别有利。
  相对寻址也可与间接寻址配合使用。

堆栈寻址

  堆栈寻址要求计算机中设有堆栈。堆栈既可用寄存器组(称为硬堆栈)来实现,也可利用主存的一部分空间作堆栈(称为软堆栈)。堆栈的运行方式为先进后出先进先出两种,先进后出型堆栈的操作数只能从一个口进行读或写。堆栈寻址也可视为一种隐含寻址,其操作数的地址总被隐含在SP中。堆栈寻址就其本质也可视为寄存器间接寻址,因SP可视为寄存器,它存放着操作数的有效地址。

四、RICS技术

1.RICS的主要特征

  RICS技术使用20%的简单指令的组合来实现不常用的80%的那些指令功能,在提高性能方面最有效的方法就是减少指令的执行周期数。
  计算机执行程序所需的时间P可用下式表述:

P = P × C × T
其中,I是高级语言程序编译后在机器上运行的机器指令数;C为执行每条机器指令所需的平均机器周期,T是每个机器周期的执行时间。
  RICS的性能优于CISC 2~5倍。

RISC的主要特点

  RISC机应具有如下一些特点:

  1. 选区使用频度较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令功能由频度高的简单指令的组合来实现。
  2. 指令长度固定,指令格式种类少,寻址方式种类少。
  3. 只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器内完成。
  4. CPU中有多个通用寄存器。
  5. 采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期。
  6. 控制器采用组合逻辑空控制,不用微程序控制。
  7. 采用优化的编译程序。

  CISC的指令系统复杂庞大,各种指令使用频度相差很大;指令字长不固定,指令格式多,寻址方式多;可以访存的指令不受限制;CPU中设有专用寄存器;绝大多数指令需要多个时钟周期方可执行完毕;采用微程序控制器;难以用优化编译生成高效的目标代码。

RICS II 指令系统举例

(1)指令种类
  RICS II共有39条指令,分为以下4类。

寄存器-寄存器操作:移位、逻辑、算术运算等12条指令。
取/存数指令:取存字节、半字、字等16条。
控制转移指令:条件转移、调用/返回等6条。
其他:存取程序状态字PSW和程序计数器等5条。

(2)指令格式
  RICS机的指令格式比较简单,寻址方式也比较少,如RICS II的指令格式有两种:短立即数格式长立即数格式。指令字长固定为32位,指令字中每个字段都有固定位置。

(3)寻址方式
  RICS II指令系统有两种访存方式。一种是变址寻址,另一种是相对寻址,还可以组合方式产生其他寻址方式。若令变址寄存器内容为0,则成为直接寻址方式;若令位移量为0,则称为寄存器间接寻址方式

RICS指令系统的扩充

  因用途不同还可扩充一些指令。

浮点指令
特权指令
读后置数指令
一些简单的专用指令

RISC和CISC的比较

  与CISC相比,RISC机的主要优点可归纳如下:

  1. 充分利用VLSI芯片的面积
  2. 提高计算机运算速度
  3. 便于设计,可降低成本,提高可靠性
  4. 有效支持高级程序设计语言

猜你喜欢

转载自blog.csdn.net/cbwem/article/details/79434039