本章的知识结构图如下:

【王道笔记-计算机组成原理】第四章 指令系统

  • 指令(又称机器指令)是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
  • 一台计算机的所有指令的集合构成该机的指令系统/指令集
  • 指令系统是计算机的主要属性,位于硬件和软件的交界面上。指令系统是计算机硬/软件的界面。
  • 指令系统是计算机硬件的语言系统,和机器语言有关。
  • 因为主存一般按字节编址,指令长度通常为字节的整数倍。为了便于取指,指令长度也可能是存储字长的整数倍。

一、指令格式

1.指令的基本格式

【王道笔记-计算机组成原理】第四章 指令系统

  操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。地址码给出被操作的信息(指令或数据)的地址。
  指令长度与机器字长没有固定的关系。
  在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构。定字长指令的执行速度快,控制简单。若各种指令的长度随指令功能而异,则称为变长指令字结构。然而,因为主存一般是按字节编址的,所以指令字长多为字节的整数倍。

  • 零地址指令
    【王道笔记-计算机组成原理】第四章 指令系统

  适用情况:
  ①不需要操作数的指令。
  ②操作数从栈顶和次栈顶弹出。

  • 一地址指令

【王道笔记-计算机组成原理】第四章 指令系统

  适用情况:
  ①单操作数指令,OP(A1)——>A1。
  ②有两个操作数,但另一个操作数由累加器ACC提供,结果也放在ACC中,(ACC)OP(A1)——>ACC。

  • 二地址指令

【王道笔记-计算机组成原理】第四章 指令系统

  A1是目的操作数,保存运算结果。
  (A1)OP(A2)——>A1。

  • 三地址指令
    【王道笔记-计算机组成原理】第四章 指令系统

  (A1)OP(A2)——>A3。

  • 四地址指令
    【王道笔记-计算机组成原理】第四章 指令系统

  (A1)OP(A2)——>A3,A4是下一条指令的地址。

2.变长操作码指令格式

  为了在指令字长有限的前提下仍保持比较丰富的指令种类,可采取可变长度操作码,即全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。显然,这将增加指令译码和分析的难度,使控制器的设计复杂化。

【王道笔记-计算机组成原理】第四章 指令系统

  在设计扩展操作码指令格式时,必须注意以下两点∶
  ①不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
  ②各指令的操作码一定不能重复。
  ③指令的地址数和指令的长度是否固定没有一定的关系。
  通常情况下,对使用频率较高的指令分配较短的操作码,对使用频率较低的指令分配较长的操作码,从而尽可能减少指令译码和分析的时间。

二、指令的寻址方式

  指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址(A)。形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址(EA)。

1.指令寻址和数据寻址

  寻址方式分为指令寻址和数据寻址两大类:寻找下一条将要执行的指令地址称为指令寻址。寻找操作数的地址称为数据寻址。

  • 指令寻址(都是通过PC给出)

顺序寻址:程序计数器PC+1自动形成下一条指令的地址。
跳跃寻址:通过转移类指令实现,由本条指令给出下一条指令的地址的计算方式,得到地址偏移量/相对地址或绝对地址。跳跃的结果是当前指令修改PC值。可以实现程序的无条件转移和条件转移。

  • 数据寻址:

由寻址特征指出寻址方式,结合形式地址A,得出操作数地址。
【王道笔记-计算机组成原理】第四章 指令系统

2.常见的数据寻址方式

【王道笔记-计算机组成原理】第四章 指令系统

  • 隐含寻址

优点是有利于缩短指令字长;缺点是需增加存储操作数或隐含地址的硬件。
【王道笔记-计算机组成原理】第四章 指令系统

  • 立即(数)寻址

地址字段指出的不是操作数的地址,而是操作数本身,又称立即数。
优点是指令在执行阶段不访问主存,指令执行时间最短;缺点是A的位数限制了立即数的范围。
【王道笔记-计算机组成原理】第四章 指令系统

  • 直接寻址

指令字中的形式地址A是操作数的真实地址EA,即EA=A。
优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址;缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改。
【王道笔记-计算机组成原理】第四章 指令系统

  • 间接寻址

指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)。
主存字第一位为1时,表示取出的仍不是操作数的地址,即多次间址;主存字第一位为0时,表示取得的是操作数的地址。
优点是可扩大寻址范围(有效地址 EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可方便地完成子程序返回)
缺点是指令在执行阶段要多次访存(一次间接寻址需两次访存,多次间接寻址需根据存储字的最高位确定访存次数)。
由于访问速度过慢,这种寻址方式并不常用。一般问到扩大寻址范围时,通常指的是寄存器间接寻址。
【王道笔记-计算机组成原理】第四章 指令系统

  • 寄存器寻址

寄存器寻址是指在指令字中直接给出操作数所在的寄存器编号,即 EA=Ri,其操作数在由Ri所指的寄存器内。
优点是指令在执行阶段不访问主存,只访问寄存器,因寄存器数量较少,对应地址码长度较小(可有效缩短指令中某个地址段的位数),使得指令字短且因不用访存,所以执行速度快,支持向量/矩阵运算;
缺点是寄存器价格昂贵,计算机中的寄存器个数有限。
【王道笔记-计算机组成原理】第四章 指令系统

  • 寄存器间接寻址

寄存器间接寻址是指在寄存器 Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri)。
特点是,与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。
【王道笔记-计算机组成原理】第四章 指令系统

  • 相对寻址

相对寻址是把程序计数器(PC)的内容加上指令格式中的形式地址A而形成操作数的有效地址,EA=(PC)+A,其中A是相对于当前指令地址的位移量,可正可负,补码表示。
优点是操作数的地址不是固定的,它随PC值的变化而变化,且与指令地址之间总是相差一个固定值,因此便于程序浮动。相对寻址广泛应用于转移指令。对于多道程序设计来说最重要。
【王道笔记-计算机组成原理】第四章 指令系统
注意:对于转移指令JMP A,当CPU从存储器中取出一字节时,会自动执行(PC)+1→PC。若转移指令的地址为X,且占2B,在取出该指令后,PC的值会增2,即(PC)=X+2,这样在执行完该指令后,会自动跳转到X+2+A 的地址继续执行。

  • 基址寻址

基址寻址是指将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(BR)+A。其中基址寄存器既可采用专用寄存器,又可采用通用寄存器。
基址寻址面向系统
优点是可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪个空间区域,因此有利于多道程序设计,并可用于编制浮动程序,但偏移量(形式地址A)的位数较短。
【王道笔记-计算机组成原理】第四章 指令系统

  • 变址寻址

变址寻址是指有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容之和,即 EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址 A 不变(作为基地址)。
优点是可扩大寻址范围(变址寄存器的位数大于形式地址A 的位数);在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。偏移量(变址寄存器IX)的位数足以表示整个存储空间。
【王道笔记-计算机组成原理】第四章 指令系统

  • 堆栈寻址

寄存器堆栈又称硬堆栈。寄存器堆栈的成本较高,不适合做大容量的堆栈;而从主存中划出一段区域来做堆栈是最合算且最常用的方法,这种堆栈称为软堆栈。
在采用堆栈结构的计算机系统中,大部分指令表面上都表现为无操作数指令的形式,因为操作数地址都隐含使用了SP。通常情况下,在读/写堆栈中的一个单元的前后都伴有自动完成对SP内容的增量或减量操作。

三、CISC和RISC的概念

  CISC复杂指令系统计算机,功能更强大,指令更复杂;RISC精简指令系统计算机,指令简单,执行速度快。

【王道笔记-计算机组成原理】第四章 指令系统

  RISC精简指令系统计算机,要求指令系统简化,尽量使用寄存器-寄存器操作指令:

  • 指令格式一致,指令长度固定、种类少,寻址方式种类少,指令功能没那么强
  • 选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现。
  • CPU中通用寄存器很多,只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。
  • RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。

附:王道选择题笔记

1.程序控制类的指令
  功能是改变程序执行的顺序,包括:无条件转移、有条件转移、子程序调用、返回指令、循环指令的。

2.指令系统中采用不同的寻址方式的目的
  缩短指令字长、扩大寻址空间、提高编程灵活性。不过指令译码难度择增加了。

相关文章:

  • 2021-12-25
  • 2021-07-26
  • 2021-10-12
  • 2022-01-05
  • 2021-07-20
  • 2021-04-24
  • 2021-11-09
  • 2021-06-20
猜你喜欢
  • 2021-11-30
  • 2021-08-30
  • 2021-04-23
  • 2021-09-11
  • 2021-09-15
  • 2021-05-18
相关资源
相似解决方案