《计算机组成原理ppt课件第4章.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理ppt课件第4章.ppt(61页珍藏版)》请在三一办公上搜索。
1、第四章 指令系统,主讲教师 庄春兴,上午2时17分,2,本章主要内容,4.1 指令系统的发展和性能要求4.2 指令格式4.3 指令和数据的寻址方式4.4 堆栈寻址方式4.5 典型指令,上午2时17分,3,指令系统基本概念,机器指令(指令)计算机能直接识别、执行的某种操作命令。微指令:微程序级的命令,它属于硬件;宏指令:由若干条机器指令组成的软件指令,它属于软件;机器指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算。程序是解决某一实际问题的指令序列指令系统(指令集) 一台计算机中所有机器指令的集合。机器硬件设计的依据,也是软件设计的基础。硬件和软件间的界面,直接影
2、响计算机系统性能,上午2时17分,4,系列计算机,指基本指令系统相同、基本体系结构相同的一系列计算机。IBM,PDP-11,VAX-11,ARM,Intel-x86, Pentium系列计算机主要是解决软件兼容的问题。新计算机中必须包含老计算机的指令系统,保证软件向上兼容,保护用户投资。,上午2时17分,5,RISC 与 CISC,CISC(复杂指令系统计算机)Complex Instruction System Computer指令数量多(多达几百条),指令功能,复杂的计算机。难以保证正确性,不易调试维护,造成硬件资源浪费RISC(精简指令系统计算机)Reduced Instruction
3、System Computer指令数量少,指令功能单一的计算机。,上午2时17分,6,4.1.2对指令系统性能的要求,完备性:指令丰富,功能齐全,使用方便。有效性:程序占空间小,执行速度快。规整性:对称性(所有寄存器、存储单元同等对待)、匀齐性(一种操作支持多种数据类型):指令格式和数据格式的一 致性(指令长度和数据长度通常是字节的整数倍):兼容性:系列机软件向上兼容,上午2时17分,7,高级语言(如C,FORTRAN等)其语句和用法与具体机器的指令系统无关,易编程。不能用于编写直接访问机器硬件资源的系统软件或设备控制软件低级语言机器语言(二进制语言)汇编语言(符号语言)面向机器的语言,和具体
4、机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。必须借助汇编程序或编译程序,把符号语言或高级语言翻译成二进制码组成的机器语言。,4.1.3低级语言与硬件结构的关系,上午2时17分,8,4.2 指令格式,表示一条指令的机器字,称为指令字,简称指令。指令格式:用二进制代码表示指令的结构形式。,上午2时17分,9,4.2.1 操作码(OP),操作码字段表征指令的操作特性与功能指令系统中每一条指令对应一个操作码操作码字段的位数取决于指令系统的规模n=2L 定长指令、变长指令(固定位数和可变位数),上午2时17分,10,4.2.2 地址码(AC),地址码通常指定参与
5、操作的操作数的地址或操作数本身地址码包括被操作数,操作数,操作结果,二地址格式,三地址格式,一地址格式,零地址格式,上午2时17分,11,4.2.2 地址码(AC),(1)零地址指令两种情况:不需要操作数,如空操作指令NOP;隐含一个操作数位于累加器AC中。如十进制修正指令DAA。(2)一地址指令有两种情况:只需要一个操作数,如求反指令NOT;需要两个操作数,但另一个操作数在累加寄存器AC中(AC)OP(A)-AC,上午2时17分,12,4.2.2 地址码(AC),(3)二地址指令(A1)OP(A2)-A1(4)三地址指令(A1)OP(A2)-A3A1为被操作数地址,也称源操作数地址; A2为
6、操作数地址,也称终点操作数地址; A3为存放结果的地址。 A1,A2,A3可以是内存中的单元地址,也可以是运算器中通用寄存器的地址。,上午2时17分,13,按操作数的物理位置分类,存储器存储器(SS)型寄存器寄存器(RR)型寄存器存储器(RS)型,上午2时17分,14,4.2.3指令字长度,指令中包含二进制代码的位数机器字长计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度指令字长度与机器字的长度有关: 单字长,双字长,半字长。等长指令: 结构简单,控制线路简单。变长指令: 结构灵活,充分利用指令长度,控制复杂,上午2时17分,15,指令字助记符,为了书写和阅读程序,每条指令通常用3
7、个或4个英文缩写字母来表示。,表4.2指令助记符举例,上午2时17分,16,4.2.5 指令格式举例,1.八位微型计算机的指令格式 8位微型机字长只有8位,指令结构是一种可变字长形式,包含单字长、双字长、三字长指令等多种。,单字长指令,双字长指令,三字长指令,上午2时17分,17,4.2.5 指令格式举例,2.PDP/11系列机指令格式,操作码字段是不固定,长度不相同。这样做可以扩展操作码以包含较多的指令。但是操作码字段不固定,对控制器的设计来说必将复杂化,上午2时17分,18,4. ARM指令格式,上午2时17分,19,4.2.5 指令格式举例,4.pentium指令格式,entium机的指
8、令字长度是可变的:从字节到12字节,还可以带前缀,指令格式如下所示。 0或1 0或10或10或1(字节数),1或20或1 0或1 0,1,2,4 0,1,2,4(字节数),2位3位 3位 2位 3位3位,上午2时17分,20,指令格式分析,例1指令格式如下所示,其中OP为操作码,试分析指令格式的特点。,15 9 8 7 4 3 0,解: (1)单字长二地址指令。(2)操作码字段OP可以指定128条指令。(3)源寄存器和目标寄存器都是通用寄存器(可分别指定16个),所以是RR型指令,两个操作数均在寄存器中。(4)这种指令结构常用于算术逻辑运算类指令。,上午2时17分,21,指令格式分析,例2 指
9、令格式如下所示,OP为操作码字段,试分析指令格式特点,解:(1)双字长二地址指令,用于访问存储器。 (2)操作码字段OP为6位,可以指定64种操作。(3)一个操作数在源寄存器(共16个),另一个操作数在存储器中(由变址寄存器和位移量决定)所以是RS型指令。,15 10 7 43 0,上午2时17分,22,4.3 指令和数据的寻址方式,在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。当采用地址指定方式时,寻找指令或操作数有效地址的方式指令寻址 顺序寻址 跳跃寻址操作数寻址,上午2时17分,23,1.顺序寻址方式(PC)1PC,程序的指令序列在主存顺序存放。
10、程序执行时从第一条指令开始,逐条取出并逐条执行,这种程序的顺序执行过程,称为顺序寻址方式。为了达到顺序寻址的目的,CPU中必须有一个程序计数器(PC)对指令的顺序号进行计数。PC中开始时存放程序的首地址,每执行一条指令,PC 加1,以指出下条指令的地址,直到程序结束。PC存放下一条指令的地址,上午2时17分,24,跳跃寻址 目标地址PC,当程序中出现分支或循环时,就会改变程序的执行顺序。此时对指令寻址就要采取跳跃寻址方式。所谓跳跃,就是指下条指令的地址不是通过程序计数器PC当前值获得的,而是由指令本身给出。跳跃的处理方式是重新修改PC的内容。然后进入取指令阶段。,上午2时17分,25,跳跃寻址
11、过程,IR,100,JMP 103,MOV AX,BX,PC,内存,100,101,102,103,+1,JMP 103,指令寄存器IR,MOV AX,BX,103,上午2时17分,26,4.3.2 操作数的寻址方式,形成操作数有效地址的方法。例如,一种单地址指令的结构如下所示,其中用X,I,D各字段组成该指令的操作数地址。寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程。实际有效地址为E, 实际操作数S S= (E),上午2时17分,27,隐含寻址,在指令中不明显的给出而是隐含着操作数的地址例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二
12、操作数地址,AC对单地址指令格式来说是隐含地址。,上午2时17分,28,立即寻址,指令的地址字段指出的不是操作数的地址,而是操作数本身这种方式的特点是指令执行时间很短,不需要访问内存取数,例如:单地址的移位指令格式为,这里D不是地址,而是一个操作数。F为标志位,当F1,操作数进行右移;当F0时,操作数进行左移。,上午2时17分,29,直接寻址特点是:在指令格式的地址字段中直接指出操作数在内存的地址D。采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,既ED。因此通常把形式地址D又称为直接地址。此时,由寻址模式给予指示。 如果用S表示操作数,那么直接寻址的逻辑表达式为 S(E)(D
13、),直接寻址,上午2时17分,30,间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址如果把直接寻址和间接寻址结合起来,指令有如下形式:,寻址特征位I0,表示直接寻址,这时有效地址ED; I1,表示间接寻址,这时有效地址E(D)。,间接寻址,上午2时17分,31,寄存器寻址方式和寄存器间接寻址方式,寄存器寻址操作数在CPU的内部寄存器中.寄存器间接寻址指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中,上午2时17分,32,相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的
14、有效地址。采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。,相对寻址方式,上午2时17分,33,基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。 优点是可以扩大寻址能力。,基址寻址方式,上午2时17分,34,变址寻址方式变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化。块寻址方式 块寻址方式经常用在输入
15、输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块搬家。 块寻址时,通常在指令中指出数据块的起始地址(首地址)和数据块的长度(字数或字节数)。如果数据块是变长的,可用三种方法指出它的长度:(1)指令中划出字段指出长度;(2)指令格式中指出数据块的首地址与末地址;(3)由块结束字符指出数据块长度。,上午2时17分,35,段寻址,Intel 8086/8088微机中,ALU16位运算,但其寻址范围可到1M,即地址有20位。实质是基值寻址。,4位,16位逻辑地址,16位段寄存器,20位物理地址,ALU,上午2时17分,36,例3一种二地址RS型指令的结构如下
16、所示: 6位 4位 1位 2位16位,其中I为间接寻址标志位,X为寻址模式字段,D位偏移量字段。通过I,X,D的组合,可构成下表所示的寻址方式。 请写出六种寻址方式的名称。,解:直接寻址 相对寻址 变址寻址 寄存器间接寻址 间接寻址 基址寻址,上午2时17分,37,例:某16位机器所使用的指令格式和寻址方式如下所示,该机有两个20位基址寄存器,四个16位变址寄存器,十六个16位通用寄存器,指令汇编格式中的S和D都是指通用寄存器,M指主存中的一个单元。三种指令的操作码分别是MOV为0AH ,STA为1BH ,LDA为3CH。,(1)分析三种指令的指令格式与寻址方式特点。,(2)CPU完成哪一种操
17、作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有时会等于第三种指令的执行时间吗?,(3)下列情况下每个十六进制指令字分别代表什么操作?其中如果有编码不正确,如何改正才能成为合法指令?,LDA D,M,上午2时17分,38,例:某16位机器所使用的指令格式和寻址方式如下所示,该机有两个20位基址寄存器,四个16位变址寄存器,十六个16位通用寄存器,指令汇编格式中的S和D都是指通用寄存器,M指主存中的一个单元。三种指令的操作码分别是MOV为0AH ,STA为1BH ,LDA为3CH。说明:MOV是传送指令,STA为写数指令,LDA为读数指令。,(1)分析三种指令的指令格式与寻址方式特
18、点。,该指令是单字长二地址指令,是RR型,源寄存器S由03位指定,目标寄存器D由47位指定。,该指令是双字长二地址指令,是RS型,源寄存器S由47位指定,存储器M由采用03位指定的变址寄存器加位移量的变址方式得到或者由89位指定的基址寄存器加位移量的基址寻址得到。,上午2时17分,39,LDA D,M,该指令是双字长二地址指令,RS型,其中目标寄存器D由47位指定,存储器由指令中给出的20位地址由直接内存寻址决定。,(2)CPU完成哪一种操作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有时会等于第三种指令的执行时间吗?,CPU完成第一种指令所花时间最短,因为是RR型指令,不需要访
19、问存储器 CPU完成第二种指令所花时间最长,因为是RS型指令需要访问存储器,同时要进行寻址方式的变换运算,基址寄存器的内容加位移量或变址寄存器内容加位移量,这也需要时间。 第二种指令的执行时间不会等于第三种指令,因为第三种指令也访问存储器,但节省了求有效地址运算的时间开销。,上午2时17分,40,(3)下列情况下每个十六进制指令字分别代表什么操作?其中如果有编码不正确,如何改正才能成为合法指令?, F0F13CD2H,根据已知条件: MOV(OP)0AH00 1010 STA(OP)1BH01 1011 LDA(OP)3CH11 1100,1111 0000 1111 0001 0011 11
20、00 1101 0010, 2856H,0010 1000 0101 0110,编码正确,其含义是把主存(13CD2)H 地址单元的内容取至15号寄存器。,编码正确,含义是把6号源寄存器的内容传送至5号目标寄存器。, 6FD6H,0110 1111 1101 0110,编码错误,可改正为28D6H,上午2时17分,41,200,500,1100,200,100,500,800,100,200,2100,OP,X,D=100,PC=1000,R基=2000,寻址方式,X,操作数,立即,0,100,直接,1,200,间接,2,500,相对,3,100,变址,4,200,变址间址,5,500,有效地
21、址E,S=D,E=D=100,E=(D)=200,E=PC+D=1100,E=(R)+D=2100,E=(R)+D)=200,例:设某机的指令格式、有关寄存器和主存内容如下,X为寻址方式,D为形式地址,请在下表中填入有效地址E及操作数的值。?,上午2时17分,42,4.4 堆栈寻址方式,堆栈-一组能存取数据的暂时存储单元。存储器一般采用随机存储方法,而堆栈采用先进后出的存储方法串联堆栈一组专门的寄存器,一个R保存一个数据。数据的传送在栈顶和通用寄存器之间进行。 快速:在CPU内部实现串行:进栈和出栈涉及到栈内所有其它数据的移动;破坏性读出:读数据的同时也离开了堆栈;栈容量有限:取决于CPU内堆
22、栈专用寄存器的数量;栈顶不动,数据移动。,上午2时17分,43,堆栈寻址方式,A,A,B,B,A,C,C,B,A,C,B,A,堆栈顶,PUSH A,PUSH B,PUSH C,POP C,通用寄存器,上午2时17分,44,存储器堆栈,用一部分主存空间作堆栈称为存储器堆栈堆栈的数目、长度可随意指定 SP-堆栈指示器(栈指针), CPU中一个专门寄存器,SP内容是栈顶单元地址。改变SP内容即可移动栈顶的位置。堆栈操作期间,堆栈中数据不动,栈顶移动非破坏性读出,上午2时17分,45,进栈,进栈-累加器中的数送堆栈保存.(AC) 堆栈MSP 堆栈指针(sp) 1 sp,a,PUSH a,PUSH b,
23、100,99,98,97,a,b,b,AC,上午2时17分,46,出栈,出栈-将堆栈中的数取出送累加器堆栈指针(sp) 1 sp (堆栈MSP) AC,100,99,98,97,a,b,b,AC,a,上午2时17分,47,1)存储器堆栈是一个由高地址向低地址延伸的空间。2)存储器堆栈的栈顶由堆栈指针SP指示,如果用A表示通用寄存器A的内容,SP表示堆栈指示器,Msp表示堆栈指示的存储器栈顶单元,入栈操作和出栈操作可以表示为: 入栈:AMsp ,SP1SP 出栈:SP1SP,MspA 存储器堆栈的优点:1)堆栈能够具有程序员要求的任意长度;2)存储器堆栈的数目由程序员自己决定;3)可以用对存储器
24、寻址的任何一条指令来对堆栈中的数据进行寻址。,存储器堆栈的特点,上午2时17分,48,数据传送指令取数指令存数指令传送指令算术运算指令定点, 浮点, 求反,求补,比较等,4.5 典型指令,成组传送指令 字节交换指令 清累加器指令 堆栈操作指令,上午2时17分,49,逻辑运算指令NOT,AND,OR,XOR,TEST程序控制指令无条件转移 条件转移(C,Z,N,P,V)转子程序 子程序返回 RET 中断返回 IRET输入输出指令IN AX,n OUT n, A,4.5 典型指令,上午2时17分,50,字符串处理 字符串传送、转换、比较、查找特权指令: 系统资源的分配和管理其他类状态寄存器置位、复
25、位指令(如CLC ,STC,CLI,STI)测试指令、暂停指令,空操作指令,4.5 典型指令,上午2时17分,51,指令系统发展方向,CISC-复杂指令系统计算机 Complex Instruction System Computer指令数量多,指令功能,复杂的计算机。 RISC-精简指令系统计算机Reduced Instruction System Computer指令数量少,指令功能单一的计算机。,上午2时17分,52,精减指令系统(RISC),选取使用频率最高的一些简单指令,指令条数少;寻址方式简单指令长度固定,指令格式简单CPU设置大量寄存器只有存/取数指令才能访问存储器,其余指令的操
26、作都在寄存器之间进行.每一个机器周期完成一条机器指令。,上午2时17分,53,CISC与RISC的比较,上午2时17分,54,典型RISC机指令系统,上午2时17分,55,4.6 ARM汇编语言,汇编语言是计算机机器语言(二进制指令代码)进行符号化的一种表示方法,每一个基本汇编语句对应一条机器指令。表4.11列出了嵌入式处理机ARM的汇编语言。其中操作数使用16个寄存器(r0 , r1r12 , sp , Ir , pc),230个存储字(字节编址,连续的字的地址间相差4)。,上午2时17分,56,上午2时17分,57,上午2时17分,58,例5 将ARM汇编语言翻译成机器语言。已知5条ARM
27、指令格式译码如下表所示:,设r3寄存器中保存数组A的基址,h放在寄存器r2中。C语言程序语句A30=h+A30 可编译成如下3条汇编语言指令:LDR r5, r3, #120;寄存器r5中获得A30ADD r5, r2,r5;寄存器r5中获得h+A30STR r5, r3, #120;将h+A30存入到A30请问这3条汇编语言指令的机器语言是什么?,上午2时17分,59,解,LDR r5 , r3, #120;寄存器r5中获得A30ADD r5 , r2 , r5 , ;寄存器r5中获得h+A30STR r5 , r3, #120;将h+A30存入到A30,上午2时17分,60,4.6 ARM汇编语言,在进行汇编语言程序设计时,可直接使用英文单词或其缩写表示指令,使用标识表示数据或地址,从而有效地避免了记忆二进制的指令代码。不用由程序设计人员对指令和数据分配内存地址,直接调用操作系统的某些程序段完成输入输出。用编辑程序建立好的汇编语言源程序,需要经过系统软件中的“汇编器”翻译为机器语言程序之后,才能交付给计算机硬件系统去执行。,上午2时17分,61,本章重点内容,指令系统基本概念指令基本格式指令系统寻址方式,