《计算机组成原理(华科版)第四章指令系统.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理(华科版)第四章指令系统.ppt(43页珍藏版)》请在三一办公上搜索。
1、第四章指令系统,4.1 指令系统的发展与性能,计算机的性能与它所设置的指令系统有很密切的关系,而指令系统的设置又与机器的硬件结构紧密相关。通常性能好的计算机都要设置指令丰富、功能齐全、通用性强、使用方便高效的指令系统,而这些需要复杂的硬件结构来支持。,4.1.1 指令系统的发展,指令就是指挥计算机执行某种操作的命令。微指令是微程序级的命令,属于硬件;宏指令是由若干条机器指令组成的软件指令,属于软件;机器指令则介于微指令与宏指令之间,通常简称为指令。一台计算机中所有机器指令的集合,称为该计算机的指令系统。,20世纪70年代末期,随着大规模集成电路VLSI技术的飞速发展,硬件成本不断下降,而软件成
2、本不断上升。为增加计算机的功能,以及缩小指令系统与高级语言的差异,以便于高级语言的编译,降低软件开发成本,于是产生了以增加指令数和设计复杂指令为手段的计算机,大多数计算机的指令系统多达几百条,称这些计算机为复杂指令系统计算机,简称CISC(Complex Instruction Set Computer)。,IBM公司在1975年开始探讨指令系统的合理性问题,John cocke提出了精简指令系统的想法。1982年,美国加州伯克利大学、斯坦福大学、IBM公司都先后研制出便于VLSI技术实现的精简指令系统计算机,简称RISC(Reduced Instruction Set Computer)。1
3、983年后,RISC计算机商品化。,4.1.2 指令系统的性能,1.完备性 完备性是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、使用方便高效。2.高效性 高效性是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存储空间小,执行速度快。3.规整性 规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。4.兼容性 系列机各机种之间具有相同的基本结构和共同的基本指令集,因而,指令系统是兼容的,即各机种上基本软件可以通用。,4.1.3 计算机语言与硬件结构的关系,一台计算机能够直接识别并执行的语言并不
4、是高级语言,而是一种用二进制码表示的、由一系列指令组成的机器语言。因此,任何问题不管使用那一种计算机语言(汇编语言或某种高级语言)描述,都必须通过翻译程序转换成相应的机器语言后才能执行。机器语言存在着可读性差、不易编程、不易维护等许多缺陷,这就给编写程序带来许多困难。但是,可以用预先规定的符号来分别替代用二进制码表示的操作码、操作数或地址,这种用助记符来表示二进制码指令序列的语言,称为汇编语言(Assembly Language),它基本上是与机器语言一一对应的。,指令格式就是用二进制代码表示的一条指令的结构形式,通常由操作码和地址码两种字段组成。操作码字段表征指令操作的性质和功能,地址码字段
5、通常指定参与操作的操作数的地址。一条指令的指令格式形式为:计算机指令格式的设定一般与机器的字长、存储器的容量以及指令的功能有关。,42 指令格式,操作码字段地址码字段,4.2.1 指令操作码与地址码,1.操作码,2.地址码,指令中参加运算的操作数既可存放在主存储器中,也可存放在寄存器中,地址码应该指出该操作数所在的存储器地址或寄存器地址。根据指令的操作数地址码的数目的不同,可将指令分成零地址指令、一地址指令、二地址指令、三地址指令和多地址指令等多种格式。,操作码指出该指令应该执行什么性质的操作和具有何种功能。不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。,(1)三地址指令格式
6、 其格式为 OPCODE操作码,A1第一个源操作数存储器地址或寄存器地址,A2第二个源操作数存储器地址或寄存器地址,A3操作结果的存储器地址或寄存器地址。,其数学形式描述为:(A1)OP(A2)A3,OPCODEA1A2A3,(2)二地址指令格式 其格式为 OPCODE操作码,A1第一个源操作数存储器地址或寄存器地址,A2第二个源操作数和存放操作结果的存储器地址或寄存器地址。,其数学形式描述为:(A1)OP(A2)A1 或者(A1)OP(A2)A2,OPCODE A1 A2,(3)一地址指令格式,其格式为 OPCODE操作码,A操作数的存储器地址或寄存器地址。,其数学形式描述为:OP(A)A
7、或者(AC)OP(A)AC,OPCODE A,(4)零地址指令格式,其格式为 OPCODE操作码。,(5)多地址指令格式 性能较好的大、中型计算机甚至高档小型计算机中,往往设置一些功能很强的,用于处理成批数据的指令,例如,字符串处理指令,向量、矩阵运算等指令。为了描述一批数据,指令中往往需要用多个地址来指出数据存放的首地址、长度和下标等信息。例如 CDC STAR100矩阵运算指令,就有七个地址码段,用来指明两个矩阵的存储情况以及结果的存放情况。,OPCODE,从存放操作数的物理位置来划分,指令格式主要有三种类型。第一种为存储器存储器(SS)型指令,即参与操作的数据都放在内存里。第二种为寄存器
8、寄存器(RR)型指令,执行这类指令过程中,需要多个通用寄存器或专用寄存器,从寄存器中取操作数,把操作结果存放到另一寄存器中。第三种为寄存器存储器(RS)型指令,执行此类指令时,既要访问内存单元,又要访问寄存器。目前在计算机系统结构中,通常一个指令系统中指令字的长度和指令中的地址结构并不是单一的,往往采用多种格式混合使用,这样可以增强指令的功能。,4.2.2 指令字长度与扩展方法1.指令字长度 指令字中二进制代码的位数,称为指令字长度。如上所述,指令格式的设定一般与机器的字长、存储器的容量以及指令的功能有关。机器字长是指计算机能够直接处理的二进制数据的位数,是计算机的一个重要技术指标。,指令字长
9、度等于机器字长度的指令,称为单字长指令;指令字长度等于半个机器字长度的指令,称为半字长指令;指令字长度等于两个机器字长度的指令,称为双字长指令;余下以此类推。例如IBM 370系列的指令格式有16b(半字)的,有32b(单字)的,还有48b(一个半字)的。,2.指令操作码扩展方法,指令操作码通常有两种编码格式,一种是固定格式,即操作码的长度固定,且集中放在指令字的一个字段中。这种格式可以简化硬件设计,减少指令译码时间,一般用在字长较长的大、中型机和超级小型机以及 RISC机上,如IBM 370和VAX 11系列机,其操作码长度均为8b,可表示256种指令。另一种是可变格式,即操作码的长度可变,
10、且分散地放在指令字的不同字段中。这种格式能够有效地压缩程序中操作码的平均长度,在字长较短的微型机上广泛采用。如 Z80、Intel 8086等,操作码的长度都是可变的。,例如,某机器的指令字长度为16b,包括4b基本操作码字段和三个4b地址字段,其指令格式为:15 12 11 8 7 4 3 0 4b基本操作码有16种组合,若全部用于表示三地址指令,则只有16条。但是,如果三地址指令仅需15条,两地址指令需15条,一地址指令需15条,零地址指令需16条,共61条指令,应该如何安排操作码?显然,只有4b基本操作码是不够的,必须将操作码的长度向地址码字段扩展才行。这可采用如下操作码扩展方法:(1)
11、三地址指令仅需15条,由4b基本操作码的00001110组合给出,剩下的一个组合1111用于把操作码长度扩展到 A1,即4b扩展到8b;,OPCODE A1 A2 A3,(2)二地址指令需15条,由8b操作码的1111000011111110组合给出,剩下一个11111111用于把操作码长度扩展到 A2,即从8b扩展到12b;(3)一地址指令需15条,由12b操作码的组合给出,剩下一个组合用于把操作码长度扩展到A3,即从12b扩展到16b;(4)零地址指令需16条,由16位操作码的组合给出。采用上述指令操作码扩展方法后,三地址指令、二地址指令和一地址指令各15条,零地址指令16条,共计61条指
12、令。,4.2.3 指令格式举例,1.微型计算机Intel 8086/8088指令格式 Intel 8086是Intel公司于1978年推出的16b的微型计算机,字长16b。Intel 8088是在8086基础之上推出的扩展型准16b微型机,字长16b,但其外部数据总线8b,这样便于与众多的8b外部设备连接。由于Intel 8086/8088指令字较短,所以指令采用变长指令字结构。指令格式包含单字长指令、双字长指令、三字长指令等多种。,2.大型计算机IBM 370系列指令格式 IBM 370系统是IBM公司于1970年推出的32b大型计算机,1983年IBM又推出了370的扩充结构:IBM 37
13、0XA(eXtended Architecture),首次在3080系列上实现,后来又有扩充结构ESA370,于1986年推出3090系列。ESA370增加了指令格式,称为扩充格式,有16b操作码,包括了向量运算与128b长度的浮点运算指令。,3.SPARC计算机的指令格式 SPARC是Sun Microsystem公司于1987年推出的精简指令系统计算机(RISC),字长32b。SPARC共有三种指令格式,格式1、格式2和格式3,如图所示:,Sun Microsystem RISC SPARC指令格式,43 寻址方式,当某个操作数或某条指令存放在某个存储单元时,其存储单元的编号,就是该操作数
14、或指令在存储器中的地址。寻找并确定本条指令的数据(操作数)地址及下一条要执行的指令地址的方法,称为寻址方式。,寻址方式分为两大类:指令寻址方式和操作数寻址方式。在主存中,指令寻址方式与操作数寻址方式交替进行,前者比较简单,后者比较复杂。,4.3.1 指令的寻址方式 所谓指令寻址方式,就是确定下一条将要执行的指令地址的方法。指令寻址有两种基本方式:顺序寻址方式和跳跃寻址方式。,1.顺序寻址方式 指令在内存中是按地址顺序安排的,执行程序时,通常是一条指令接一条指令顺序进行。即从存储器取出第一条指令,然后执行第一条指令;接着从存储器取出第二条指令,再执行第二条指令;接着再取出第三条指令,执行第三条指
15、令这种程序按指令地址顺序执行的过程,称为指令的顺序寻址方式。,指令的顺序寻址方式,2.跳跃寻址方式 当程序要转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,又称跳转,是指下一条指令的地址并不是由程序计数器PC给出,而是由本条指令给出的。图4.4(b)所示的是指令跳跃寻址方式的示意图。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。,指令的跳跃寻址方式,4.3.2 操作数的寻址方式,所谓操作数寻址方式,就是形成操作数的有效地址(EA)的方法。指令字中的地址码字段,通常是由形式地址和寻址方式特征位组成的,并不是操作数的有效地址
16、。其表示形式为:形式地址,是指令字结构中给定的地址量。而寻址方式特征位,通常由间址位(I)和变址位(X)组成,若指令无间址和变址要求,则形式地址就是操作数的有效地址;若指令中指明要进行变址或间址变换,则形式地址就不是操作数的有效地址,而必须按指定方式进行变换,才能形成有效地址。,OPCODE寻址方式特征MOD 形式地址A,1.隐含寻址方式 指令字中并不明显指出操作数地址,而是将操作数的地址隐含在指令中。2.立即寻址方式 指令字中的地址字段指出的不是操作数的地址,而是操作数本身。立即寻址方式表示形式为:OPCODE 立即寻址方式 操作数Data3.寄存器寻址方式 当操作数不放在存储器中,而是放在
17、中央处理器的通用寄存器中时,存放操作数的寄存器,其地址编号便可通过指令地址码指出。这种所需要的操作数存放在某一通用寄存器中,由指令地址码的部分字段给出该通用寄存器地址的方式,称为寄存器寻址方式。,4.直接寻址方式 指令地址码字段直接给出操作数的有效地址,由于操作数的有效地址已由指令地址码直接给出而不需要经过某种变换或运算,所以称这种方式为直接寻址方式。直接寻址方式表示形式为:直接寻址方式又可分为寄存器直接寻址和存储器直接寻址两种。,OPCODE直接寻址方式操作数直接地址A,(1)寄存器直接寻址方式指令地址码字段直接给出所需操作数在通用寄存器中地址编号。其表示形式为:OPCODE 寄存器直接寻址
18、 寄存器地址编号Ri有效地址EA数学形式为:EARi(2)存储器直接寻址方式一般简称直接寻址方式,其指令地址码字段直接给出存放在存储器中操作数的存储地址。其表示形式为:存储器 OP MOD A A Data,有效地址EA数学形式为:EAA,5间接寻址方式 间接寻址是相对于直接寻址而言的。间接寻址时,指令地址码字段给出的不是操作数的真正地址,而是存放操作数地址的地址,换句话说就是形式地址A所指定单元中的内容才是操作数的有效地址。这种操作数有效地址由指令地址码所指示的单元内容间接给出的方式,称为间接寻址方式,简称间址。,按寻址特征间址位X的要求,根据地址码指的是寄存器地址还是存储器地址,间接寻址又
19、可分为寄存器间接寻址和存储器间接寻址两种方式。,(1)寄存器间接寻址方式 寄存器间接寻址时,需先访问寄存器,从寄存器读出操作数地址后,再访问存储器才能取得操作数。,有效地址EA数学形式为:EA(R),即Data(EA)(R),寄存器间接寻址方式示意图,(2)存储器间接寻址方式 存储器间接寻址时,需访问两次存储器才能取得数据,第一次先从存储器读出操作数地址,第二次才能根据读出的操作数地址再取出真正的操作数。,有效地址EA数学形式为:EA(A),即Data(EA)(A),存储器间接寻址方式示意图,6.相对寻址方式 所谓相对寻址方式,是指根据一个基准地址及其相对量来寻找操作数地址的方式。根据基准地址
20、的来源不同,它又分为基址方式和变址方式,以及PC相对寻址方式,这里主要指后者。PC相对寻址方式,一般简称相对寻址方式,是指将程序计数器 PC的内容(即当前执行指令的地址)与地址码部分给出的位移量(Disp)通过加法器相加,所得之和作为操作数的有效地址的方式。,相对寻址方式示意图,有效地址EA数学形式为:EA(PC)+Disp,7.基址寻址方式 计算机设置一个寄存器,专门用来存放基准地址,该寄存器就是基址寄存器(RB)。RB既可在CPU中专设,也可由指令指定某个通用寄存器担任。指令地址码给出的地址A和基址寄存器RB的内容通过加法器相加,所得的和作为有效地址,再从存储器中读出所需的操作数。这种操作
21、数的有效地址由基址寄存器中的基准地址和指令的地址码A相加得到的方式称为基址寻址方式。地址码 A在这种方式下通常被称为位移量(Disp)。,有效地址EA数学形式为:EA(RB)+Disp,有效地址EA数学形式为:EA(RI)+Disp,8.变址寻址方式 变址寻址方式在有效地址的求法上与基址寻址方式类似,即把某个变址寄存器的内容,加上指令格式中的形式地址而形成操作数的有效地址,如图(b)所示,其中XRI指出变址寻址方式的特征。,变址寻址方式,9.堆栈寻址方式 堆栈对数据的存取方式和寻址方法与一般存储器有所不同,一般存储器是按指定的地址随机读/写数据;而堆栈中数据的读出和写入是遵照一定的规律,按先进
22、后出原则存取的。下面以主存堆栈为例,说明堆栈寻址过程。,堆栈寻址方式,10.复合型寻址方式(1)相对间接寻址 这种寻址方式先把程序计数器PC的内容和形式地址(通常为位移量)Disp相加得(PC)+Disp,然后再间接寻址求得操作数的有效地址,即先相对寻址再间接寻址。操作数的有效地址EA数学形式为:EA(PC)+Disp)(2)间接相对寻址 这种寻址方式先将形式地址Disp作间接变换(Disp),然后将间接变换值和程序计数器PC的内容相加得到操作数的有效地址,即先间接寻址再相对寻址。操作数的有效地址EA数学形式为:EA(PC)+(Disp),(3)变址间接寻址 这种寻址方式先把变址寄存器RI的内
23、容和形式地址Disp相加得(RI)+Disp,然后再间接寻址求得操作数的有效地址,即先变址再间址。操作数的有效地址EA数学形式为:EA(RI)+Disp)(4)间接变址寻址 这种寻址方式先将形式地址Disp作间接变换(Disp),然后将间接变换值和变址寄存器RI的内容相加得到操作数的有效地址,即先间址再变址。操作数的有效地址EA数学形式为:EA(RI)+(Disp),44 指令系统的要求与指令分类,4.4.1 指令系统的要求,4.4.2 指令的分类,1.数据传送指令 这类指令用以实现寄存器与寄存器,寄存器与主存储器,主存储器与主存储器之间的数据传送,主要包括取数指令、存数指令、传送指令、成批传
24、送指令、字节交换指令、清累加器指令等。,2.算术逻辑运算指令(1)算术运算指令 这类指令用以实现二进制或十进制的定点算术运算和浮点运算功能。(2)逻辑运算指令 这类指令用以实现对两个数的逻辑运算和位操作功能,主要包括逻辑与(逻辑乘)、或(逻辑加)、非(求反)、异或(按位加)等逻辑操作指令,以及位测试、位清除、位求反等位操作指令。,3.移位操作指令 移位操作指令用以实现将操作数向左移动或向右移动若干位的功能,包括算术移位、逻辑移位和循环移位三种指令。左移时,若寄存器中的数为算术操作数,则符号位不动,其它位左移,最低位补零。右移时,其它位右移,最高位补符号位,这种移位称作算术移位。移位时,若寄存器
25、中的操作数为逻辑数,则左移或右移时,所有位一起移位,最低位或最高位补零,这种移位称作逻辑移位。循环移位按是否与“进位”位C一起循环分为小循环(即自身循环)和大循环(即和进位位 C一起循环)两种,用于实现循环式控制、高低字节互换或与算术、逻辑移位指令一起实现双倍字长或多倍字长的移位。,4.转移控制指令(1)无条件转移指令与条件转移指令 无条件转移指令不受任何条件限制,直接把程序转移到指令所规定的目的地,从那里开始继续执行程序。条件转移指令则根据计算机处理结果来控制程序的执行方向,实现程序的分支。首先测试根据处理结果设置的条件码,然后判断所测试的条件是否满足,从而决定是否转移。(2)调用指令与返回
26、指令 编写程序时,常常需要编写一些能够独立完成某一特定功能且经常使用的程序段,在需要时能随时调用,而不必多次重复编写,以便节省存储器空间和简化程序设计。这种程序段就称为子程序或过程。调用(Call)与返回(Return)是一对配合使用的指令,返回指令从堆栈中取出返回地址,然后继续执行调用指令的下一条指令。,(3)陷阱(Trap)与陷阱指令 在计算机运行过程中,有时可能会出现电源电压不稳、存储器校验出错、输入输出设备出现故障、用户使用了未定义的指令或特权指令等种种意外情况,使计算机不能正常工作,这时若不及时采取措施处理这些故障,将影响到整个系统的正常运行。因此,一旦出现故障,计算机就发出陷阱信号
27、,并暂停当前程序的执行(称为中断),转入故障处理程序进行相应的故障处理。陷阱实际上是一种意外事故中断。,5.输入/输出(I/O)指令 输入/输出指令主要用来启动外围设备,检查测试外围设备的工作状态,并实现外部设备和CPU之间,或外围设备与外围设备之间的信息传送。,6.字符串处理指令 字符串处理指令就是一种非数值处理指令,主要用于信息管理、数据处理、办公室自动化等领域中,在文字编辑和排版时对大量的字符串进行各种处理。7.堆栈操作指令 堆栈操作指令通常有两条:一条是入栈指令,另一条是出栈指令。入栈指令(PUSH)执行两个动作:将数据从CPU取出并压入堆栈栈顶;修改堆栈指示器。出栈指令(POP)也执行两个动作:修改堆栈指示器;从栈顶取出数据到CPU。这两条指令总是成对出现的,在程序的中断嵌套、子程序调用嵌套过程中非常实用和方便。,8.特权指令 在多用户、多任务的计算机系统中特权指令必不可少,它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。9.其他指令 除上述各类指令外,还有多处理器指令,向量指令,状态寄存器置位、空操作、复位指令、测试指令、停机指令等控制指令,以及其他一些特殊控制指令。,
链接地址:https://www.31ppt.com/p-6023915.html