计算机组成原理计算机组成原理PiilfCtOitiPiilfCtOitiPrincipleofComputerOrganizationPrincipleofComputerOrganization第四章第四章指令系统指令系统第章第章指令系统指令系统InstructionSetInstructionSet北京邮电大学志InstructionSetInstructionSet北京邮电大学计算机学院戴志涛12009-4-13计算机学院本章内容¾指令系统的概念及其发展¾对指令系统的性能要求¾指令格式寻址方式¾寻址方式¾指令类型和典型指令介绍¾指令类型和典型指令介绍¾RISC¾RISC22009-4-13计算机学院指令系统的概念¾程序是由一系列有序且有一定意义的指令组成的¾指令(机器指令):命令计算机直接进行某种基本操作的二进制代码串操作的制代码串每条指令可以完成一个独立的算术运算或逻辑运算操作,或者数据传送等基本操作或者数据传送等基本操作直接由硬件支持、软件可控制的昀小的动作单位¾程序员按照指令格式编写软件而不必考虑机器如何¾程序员按照指令格式编写软件而不必考虑机器如何实现指令的功能¾指令是软件和硬件之间的接口¾指令系统(InstructionSet)一台计算机能直接¾指令系统(InstructionSet):台计算机能直接理解与执行的全部指令的集合32009-4-13计算机学院指令概念的引申¾机器指令(指令):每条指令完成一个独立的算术运算或逻辑运算微指令微程序级的命令软件不可见¾微指令:微程序级的命令,软件不可见¾宏指令由若干条机器指令组成的机器¾宏指令:由若干条机器指令组成的机器指令序列,硬件不可见指令序列,硬件不可见42009-4-13计算机学院计算机指令系统的发展过程¾50年代:本的指令定点加减辑算数据传送昀基本的指令:定点加减、逻辑运算、数据传送、转移等指令数目十几至几十条¾60年代后期:¾60年代后期:增加乘除运算、浮点运算、十进制运算、字符串处理等指令处理等指令指令数目多达一二百条寻址方式多样化出现系列计算机出现系列计算机52009-4-13计算机学院计算机指令系统的发展过程¾70年代末期:指令系统多达几百条复杂指令系统计算机复杂指令系统计算机(CISC)ComplexInstructionSetComplexInstructionSetComputer庞大的指令系统难以保证正确性,不易调试维护造成硬件资源浪费试维护,造成硬件资源浪费精简指令系统计算机(RISC)出现精简指令系统计算机(SC)出现ReducedInstructionSet62009-4-13计算机学院Computer对指令系统的要求¾完备性:指令齐全、编程方便¾高效性:时空效率高¾规整性指令与运算规则统¾规整性:指令与运算规则统一对称性:所有的寄存器和存储器单元都可等同对称性:所有的寄存器和存储器单元都可等同对待,所有的指令都可使用各种寻址方式匀齐性种操作性质的指令可以支持各种数匀齐性:一种操作性质的指令可以支持各种数据类型指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取据长度有定的关系,以方便处理和存取¾兼容性:新旧机器指令向上兼容72009-4-13计算机学院低级语言与硬件结构的关系¾高级语言(算法语言):语法与具体机器的指令系统基本无关器的指令系统基本无关¾低级语言面向机器和具体机器的指¾低级语言:面向机器,和具体机器的指令系统密切相关机器语言(二进制语言)汇编语言(符号语言)汇编语言(符号语言)82009-4-13计算机学院高级语言与低级语言的性能比较比较内容高级语言低级语言比较内容高级语言低级语言对程序员的训练要求对程序员的训练要求(1)通用算法(2)语言规则对硬件的了解有较少相对较少有较多相对较多(3)对硬件的了解相对较少相对较多对机器独立的程度独立不独立对机器独立的程度独立不独立编制程序的难易程度易难软件编程和维护所需时间短较长程序执行时间较长短程序执行时间较长短编译过程中对计算机资源的要求多少92009-4-13计算机学院指令格式¾指令字(指令):表示一条指令的机器字¾指令格式:指令字用二进制代码表示的结构形式形式¾机器执行一条指令所必须的全部信息都必须明显或隐含地在指令中给出明显或隐含地在指令中给出:操作类型操作码参加运算的若干个源操作数的地址(内存单元或寄存器)地址码存单元或寄存器)目的操作数(运算结果)存放的地址(内存单元或寄存器)地址码(内存单元或寄存器)下一条指令的存放地址(内存单元)地址码112009-4-13计算机学院操作码地址码操作码¾每一条指令都有一个操作码,表示该指令应什性作进行什么性质的操作¾不同的指令用操作码字段的不同编码表示¾不同的指令用操作码字段的不同编码表示¾操作码字段的位数一般取决于计算机指令系操作码字段的位数般取决于计算机指令系统的规模个特定的机器的指令系统不同指令字中¾一个特定的机器的指令系统,不同指令字中操作码字段和地址码字段的长度可以相同,操作码字段和地址码字段的长度可以相同,也可以不同122009-4-13计算机学院操作码¾等长操作码(固定长度操作码):操作码所占的二进制位数固定不变如果系统中所有指令的操作码都用位如果系统中所有指令的操作码都用n位二进制数表示,则系统中的指令条数不会超进制数表示,则系统中的指令条数不会超过2n条有利于简化硬件设计,减少指令译码时间广泛用于字长较长的计算机的指令系统中广泛用于字长较长的计算机的指令系统中132009-4-13计算机学院操作码¾可变长度操作码:不同的指令的操作码长度不同操作码扩展技术操作码扩展技术对地址少的指令使用较长的操作码对地址少的指令使用较长的操作码,对地址数多的指令使用较短的操作码使用频度高的指令分配短的操作码,频度低的指令分配较长的操作码频度低的指令分配较长的操作码142009-4-13计算机学院操作码¾可变长度操作码:优点:有效缩短操作码的平均长度节省存储空间有效缩短操作码的平均长度,节省存储空间缩短常用指令的译码时间,提高程序的运行速度缺点:缺点:指令译码系统比等长操作码复杂在字长较短的微型机中应用广泛¾操作码的长度应与地址码的长度以及整个指¾操作码的长度应与地址码的长度以及整个指令长度综合考虑152009-4-13计算机学院地址码¾指令中的地址码用来指出该指令的源操作数地址(0至2个)目标操作数(结作数地址(0至2个)、目标操作数(结果)地址,以及下一条指令的地址果)地址,以及下条指令的地址¾操作数的存放位置:主存单元CPU内部数据寄存器CPU内部数据寄存器I/O设备接口内的寄存器I/O设备接口内的寄存器¾如果一条指令中有n个操作数地址,则将该指令称为操作数指令或地址指令将该指令称为n操作数指令或n地址指令212009-4-13计算机学院四地址指令指令格式指令格式:OPA1A2A3A4OP:操作码;A1:第一地址码,存放被操作数(第一源操作数)A1:第地址码,存放被操作数(第源操作数)A2:第二地址码,存放操作数(第二源操作数)A3:第三地址码,存放操作结果A:第四地址码,存放下条要执行指令的地址A4:第四地址码,存放下条要执行指令的地址操作:(A)OP(A)→A操作:(A1)OP(A2)→A3232009-4-13计算机学院四地址指令¾指令可直接寻址的地址范围与地址字段的位数有数有关例:指令字长32位操作码占8位4个地址段OPA1A2A3A4例:指令字长32位,操作码占8位,4个地址段各占6位,则指令的直接寻址范围为:26=64¾如果地址字段均指示主存的地址,则完成一条四地址指令,共需访存四次条四地址指令,共需访存四次¾优点:指令直观易懂,后续指令的地址可任意安排¾缺点指令长度长仅用于字长较长的机器¾缺点:指令长度长,仅用于字长较长的机器242009-4-13计算机学院地址的个数¾非转移类指令的下一条指令地址:本条指令在内存中的存放首地址加上本条指令的长度本条指令在内存中的存放首地址加上本条指令的长度¾转移类指令:转移类指令通常不需要源操作数地址和结果地址¾有些情况下约定某些指令的结果存放在某个源¾有些情况下,约定某些指令的结果存放在某一个源操作数地址中¾操作数中的一个或全部源地址可隐含给出:约定某条指令的操作数(或其中之一)固定来自CPU内约定某条指令的操作数(或其中之)固定来自CPU内的某个特定寄存器或特定的内存单元¾有些指令无需操作数¾有些指令无需操作数252009-4-13计算机学院三地址指令指令格式:OPAAA3指令格式:OPA1A2A3¾操作(A)OP(A)A¾操作:(A1)OP(A2)-A3A被操作数(第一源操作数)地址A1:被操作数(第源操作数)地址A2:操作数(第二源操作数)地址2操作数第源操作数A3:存放结果的地址262009-4-13计算机学院二地址指令OPA1A2指令格式:12¾双操作数操作:(A1)OP(A2)-A1A1:既作被操作数(第一源操作数)地址,又作目的操作数地址作目的操作数地址A2:操作数(第二源操作数)地址¾单操作数操作:OP(A1)-A2A1:被操作数(源操作数)地址A2:操作数(目的操作数)地址A2:操作数(目的操作数)地址272009-4-13计算机学院一地址指令(单操作数指令)OPA1指令格式:1¾双操作数操作:(A1)OP(X)-XA1:第一源操作数地址X第二源操作数地址和目的操作数地址隐X:第二源操作数地址和目的操作数地址,隐含使用寄存器或堆栈寻址¾单操作数操作:OP(A1)-A1A1:既作被操作数地址,又作目的操作数地址282009-4-13计算机学院零地址指令OP指令格式:¾指令字中只有操作码,没有地址码令无需操作数的指令,如空操作、停机等运算的操作数地址全部隐含源操作数和结果隐含使用寄存器堆源操作数和结果隐含使用寄存器、堆栈或特定操作数292009-4-13计算机学院地址码个数对指令系统性能的影响¾早期:多采用二地址指令和一地址指令¾随着处理机字长和指令字长的增加,三地址指令已很普遍很普¾地址多的指令:功能强使用灵活功能强,使用灵活占用的存放单元多,执行时间长¾隐含地址的指令:节省了指令地址字段,但牺牲灵活性节省了指令地址字段,但牺牲灵活性¾一个实际的指令系统往往混合使用多种指令格式302009-4-13计算机学院双操作数运算指令的三种类型¾存储器-存储器(SS)型指令:参与操作的数都放在内存中机器执行SS型指令需多次访问内存机器执行SS型指令需多次访问内存¾寄存器-寄存器(RR)型指令:从寄存器中取操作数,把操作结果放到另一寄存器中器中机器执行RR型指令速度快,但需要多个寄存器¾寄存器-存储器(RS)型指令:执行RS型指令时既要访存又要访问寄存器执行RS型指令时,既要访存,又要访问寄存器312009-4-13计算机学院指令字长与机器字长¾机器字长(简称字长):指计算机能直接处理的二进制数据的位数通常是CPU运算器的字长进制数据的位数,通常是CPU运算器的字长字长越长,计算机的运算精度越高为便于处理字符数据及尽可能地利用存储空间,一般把机器字长定为字节长度的整数倍¾指令字长:一个指令字中包含二进制代码的位数取决于操作码的长度操作数地址的长度和操作数地址取决于操作码的长度、操作数地址的长度和操作数地址的个数通常指令字长等于机器字长的整数倍通常指令字长等于机器字长的整数倍如果机器字较长,指令字长也可是机器字长的一半的整数倍数倍322009-4-13计算机学院指令字长与机器字长的关系¾根据指令字长等于多少机器字长,可以将机令器指令分为:单字长指令:指令字长等于机器字长单字长指令:指令字长等于机器字长半字长指令:指令字长等于半个机器字长双字长指令:指令字长等于两个机器字长¾多字长指令¾多字长指令优点:可以给操作码和地址码提供较大的空间缺点:占用了较多的内存空