计算机组成原理笔记(四)

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

1、第四章:指令系统

通过下面的思维导图来依次分享「指令系统」里面重要知识点的笔记。

2、第一节:指令格式

1.  指令:又称为机器指令,是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。指令系统是计算机的主要属性,位于硬件和软件的交互界面上。

2.  指令格式:一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。一条指令通常要包括操作码字段和地址码字段两部分。如下:

指令=操作码字段(OP)+地址码字段(A)

一条指令一般的执行过程:操作码字段代表着操作的类型,如加、减、移位等操作;地址码字段代表操作数存放的地址。故执行指令时,先通过地址码字段的地址取出操作数,然后由操作码字段所代表的操作类型进行相应的操作;最后将结果存回在相应的地址中。

3.  按指令中的操作数地址码的数目的不同,可将指令分成以下几种格式(其中“OP”代表操作码字段;“A”代码地址码字段)如下:

①零地址指令格式:

    指令 = OP

只有操作码OP,没有显地址码。

用于不需要操作数的指令,如空操作指令、停机指令、关中断指令等。

②一地址指令格式:

    指令 = OP+A1

a.  用于只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址。

b.  用于隐含约定目的地址的双操作数指令,按指令地址A1可读取源操作数,指令可隐含约定另一个操作数由ACC(累加器)提供,运算结果也将存放在ACC中。

③二地址指令格式:

    指令=OP+A1+A2

用于算数和逻辑运算指令,需要使用两个操作数,需分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果。

④三地址指令格式:

    指令=OP+A1+A2+A3(结果)

用于指定结果存放位置的二操作数的操作,即分别取出A1和A2两地址中的操作数,进行OP操作,将运算结果存放在A3的地址中。

⑤四地址指令格式:

    指令=OP+A1+A2+A3(结果)+A4(下址)

其中A4表示下一条将要执行指令的地址

在三地址指令的基础上加了下一条将要执行的地址A4。

4.  定长操作码指令:是在指令的最高位部分分配固定的若干位(定长)表示操作码,一般n位操作码字段的指令系统最大能够表示2^n条指令。定长指令码对于简化计算机硬件设计,提高指令译码和识别速度很有利。

5.  扩展操作码指令:是可变长操作码的一种常见的方式。即使操作码的长度随地址码的减小而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。

 

3、第二节:指令寻址方式

1.  寻址方式:是指寻找指令或寻找操作数有效地址的方式,也就是指确定本条指令的数据地址,以及下一条将要执行的指令地址的方法。寻址方式分为指令寻址和数据寻址

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

2.  指令寻址:即寻找下一条将要执行的指令地址。有以下两种方式:

①顺序寻址:通过程序计数器PC加1(1个指令字长),自动形成下一条指令的地址。

②跳跃寻址:通过转移类指令实现。跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出下条指令地址的计算方式。注意:跳跃的结果是当前指令修改PC值,所以下一条指令仍然是通过程序计数器PC给出。

3.  数据寻址:指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。常见的数据寻址方式如下:

①隐含寻址:不明显地给出操作数的地址,而是在指令中隐含着操作数的地址,如单地址的指令格式,不明显的给出第二操作数的地址,而是隐含在累加器中。如下图:

隐含寻址的优点是有利于缩短指令字长;缺点是需增加存储操作数或隐含地址的硬件。

②立即(数)寻址:即地址字段指出的不是操作数的地址,而是操作数本身,又称为立即数,数据采用二进制补码的形式存放。

立即寻址的优点是指令在执行阶段不访问主存,指令执行时间最短;缺点是地址码A的位置限制了立即数的范围。

③直接寻址:即指令中的形式地址A就是操作数的真实地址EA。如下图:

直接寻址的优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址;缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改。

④间接寻址:即指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址。间接寻址可以是一次间接寻址,还可以是两次间接寻址。如下图:

间接寻址的优点是可扩大寻址范围(有效地址EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可以方便地完成子程序返回);缺点是指令在执行阶段要多次访存,导致寻址速度慢。

⑤寄存器寻址:即指令中直接给出操作数所在的寄存器编号,其操作数在该编号所指的寄存器中。如下图:

寄存器寻址的优点是指令在执行阶段不需要访问主存,只访问寄存器(速度远快于访问主存),因寄存器数量较少,对应地址码长度较小,使得指令字短且因不访主存,所以执行速度快,支持向量/矩阵运算;缺点是寄存器价格昂贵,计算机中寄存器个数有限。

⑥寄存器间接寻址:是指在寄存器中给出的不是一个操作数,而是操作数所在主存单元的地址。如下图:

寄存器间接寻址的特点是与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)

⑦相对寻址:是把程序计数器PC的内容加上指令格式中的形式地址A,而形成操作数的有效地址,其中A是相对于当前指令地址的位移量,可正可负,补码表示。如下图:

相对寻址的特点是操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动。因此相对寻址广泛用于转移指令。

⑧基址寻址:是将CPU中基址寄存器(BR)的内容加上指令格式地址A,而形成操作数的有效地址。其中基址寄存器既可采用专用寄存器,也可以采用通用寄存器。如下图:

基址寻址的特点是可扩大寻址范围(基址寄存器的位数大于形式地址A的位数),用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序,但偏移量(形式地址A)的位数较短。

⑨变址寻址:即有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,其中IX为变址寄存器(专用),也可以用通用寄存器作为变址寄存器。如下图:

变址寻址的特点是可扩大寻址范围(变址寄存器的位数大于形式地址A的位数);在数组的处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序,偏移量(变址寄存器IX)的位数足以表示整个存储空间。

⑩堆栈寻址:堆栈是存储器(或专用寄存器组)中一块特定的按 “后进先出(LIFO)”原则管理的存储区,该存储区中被读写单元的地址是用个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。堆栈可分为硬堆栈与软堆栈两种。寄存器堆栈又称为硬堆栈。寄存器堆栈的成本比较高,不适合做大容量的堆栈;而从主存中划出一段区域来做堆栈是最合算且最常用的方法,这种堆栈称为软堆栈。在采用堆栈结构的计算机系统中,但部分指令表面上都变现为无操作数指令的形式,因为操作数地址都隐含使用了堆栈指针(SP)。

  

4、第三节:CISC和RISC的基本概念

1.  复杂指令系统计算机(Complex Instruction Set Computer,CISC):随着VLSI技术的发展,硬件成本不断下降,软件成本不断上升,促使人们在指令系统中增加更多更复杂的指令,以适应不同的应用领域,构成了复杂指令系统计算机(CISC).

2.  CISC的特点:

①指令系统复杂庞大,指令数目一般为200条以上。

②指令的长度不固定,指令格式多,寻址方式多。

③可以访存的指令不受限制。

④各种指令使用频度相差很大。

⑤各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成。

⑥控制器大多数采用微程序控制。

⑦难以用优化编译生成高效的目标代码程序。

3.  精简指令系统计算机(Reduced Instruction Set Computer,RISC):该计算机要求指令系统简化,尽量使用寄存器和寄存器操作指令,指令格式力求一致。

4.  CISC的特点

①选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现。

②指令长度固定,  指令格式种类少,寻址方式种类少。

③只有Load/Store  (取数/存数)指令访存,其余指令的操作都在寄存器之间进行。

④CPU中通用寄存器数量相当多。

⑤RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。

⑥以硬布线控制为主,不用或少用微程序控制。

⑦特别重视编译优化工作,以减少程序执行时间。

5.  CISC和RISC的比较:

①RISC更能充分利用VLSI芯片的面积;

②RISC更能提高运算速度;

③RISC便于设计,可降低成本,提高可靠性,RISC指令系统简单,故机器设计周期短,其逻辑简单,故可靠性高。

④RISC有利于编译程序代码优化,RISC指令类型少,寻址方式少,使编译程序容易选择更有效的指令和寻址方式,并适当的调整指令顺序,使得代码执行更高效化。

猜你喜欢

转载自blog.csdn.net/ziyu_one/article/details/87900886