您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第2章计算机指令系统的设计.
计算机系统结构第2章计算机指令系统的设计2.1指令集结构的分类2.2寻址方式2.3指令系统的设计和优化2.3.1按CISC方向发展和改进指令系统2.3.2按RISC方向发展和改进指令系统2.3.3指令操作码的优化2.3.4指令字格式的优化2.4MIPS指令系统结构计算机系统结构第2章计算机指令系统的设计计算机指令集结构的设计是计算机体系结构设计的核心问题之一,是软、硬件功能分配最主要的界面,它历来是计算机体系结构设计者、系统软件设计者和硬件设计者所共同关注的问题。2.1指令集结构的分类一般来说,可以从以下5个因素考虑对计算机的指令集结构进行分类:1.CPU中操作数的存储方法2.指令中显式表示的操作数个数3.操作数的寻址方式4.指令集所提供的操作类型5.操作数的类型和大小2.1指令集结构的分类其中,CPU中操作数的存储方法,即在CPU中用来存储操作数的存储单元的类型,是各种指令集结构之间的最主要区别所在。CPU中用来存储操作数的存储单元堆栈累加器通用寄存器组2.1指令集结构的分类将指令系统的结构分为三种类型堆栈结构累加器结构通用寄存器结构根据操作数的来源不同,又可进一步分为:寄存器-存储器结构(RM结构)(操作数可以来自存储器)寄存器-寄存器结构(RR结构)(所有操作数都是来自通用寄存器组)也称为load-store结构,这个名称强调:只有load指令和store指令能够访问存储器。2.1指令集结构的分类对于不同类型的结构,操作数的位置、个数以及操作数的给出方式(显式或隐式)也会不同。显式给出:用指令字中的操作数字段给出隐式给出:使用事先约定好的单元2.1指令集结构的分类例:表达式C=A+B在4种类型指令系统结构上的代码。假设:A、B、C均保存在存储器单元中,并且不能破坏A和B的值。堆栈累加器寄存器(RM型)寄存器(RR型)pushAloadAloadR1,AloadR1,ApushBaddBaddR1,BloadR2,BAddstoreCstoreR1,CaddR3,R1,R2popCstoreR3,C2.1指令集结构的分类通用寄存器型结构现代指令系统结构的主流在灵活性和提高性能方面有明显的优势跟其它的CPU内部存储单元一样,寄存器的访问速度比存储器快。对编译器而言,能更加容易、有效地分配和使用寄存器。寄存器可以用来存放变量。(1)减少对存储器的访问,加快程序的执行速度;(因为寄存器比存储器快)(2)用更少的地址位(相对于存储器地址来说)来对寄存器进行寻址,从而有效地减少程序的目标代码的大小。2.1指令集结构的分类根据ALU指令的操作数的两个特征对通用寄存器型结构进一步细分ALU指令的操作数个数3个操作数的指令两个源操作数、一个目的操作数2个操作数的指令其中一个操作数既作为源操作数,又作为目的操作数。ALU指令中存储器操作数的个数可以是0~3中的某一个,为0表示没有存储器操作数。2.1指令集结构的分类ALU指令中存储器操作数的个数ALU指令中操作数的最多个数结构类型机器实例03RRMIPS,SPARC,Alpha,PowerPC,ARM12RMIBM360/370,Intel80x86,Motorola680003RMIBM360/37022MMVAX33MMVAX•ALU指令中操作数个数和存储器操作数个数的典型组合2.1指令集结构的分类通用寄存器型结构进一步细分为3种类型寄存器-寄存器型(RR型)寄存器-存储器型(RM型)存储器-存储器型(MM型)3种通用寄存器型结构的优缺点下表中(m,n)表示指令的n个操作数中有m个存储器操作数。2.1指令集结构的分类指令系统结构类型优点缺点寄存器-寄存器型(0,3)指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大。寄存器-存储器型(1,2)可以在ALU指令中直接对存储器操作数进行引用,而不必先用load指令进行加载。容易对指令进行编码,目标代码比较紧凑。指令中的两个操作数不对称。在一条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。指令的执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较大。存储器-存储器型(2,2)或(3,3)目标代码最紧凑,不需要设置寄存器来保存变量。指令字长变化很大,特别是3操作数指令。而且每条指令完成的工作也差别很大。对存储器的频繁访问会使存储器成为瓶颈。这种类型的指令系统结构现在已不用了。第2章计算机指令系统的设计2.2寻址方式寻址方式:指令系统中如何形成所要访问的数据的地址。寻址方式可以指明指令中的操作数是一个常数、一个寄存器操作数或者是一个存储器操作数。对于存储器操作数来说,由寻址方式确定的存储器地址称为有效地址。2.2寻址方式一些操作数寻址方式:赋值操作Mem:存储器Regs:寄存器组方括号:表示内容Mem[]:存储器的内容Regs[]:寄存器的内容Mem[Regs[R1]]:以寄存器R1中的内容作为地址的存储器单元中的内容2.2寻址方式寻址方式指令实例含义寄存器寻址ADDR1,R2Regs[R1]←Regs[R1]+Regs[R2]立即值寻址ADDR3,#6Regs[R3]←Regs[R3]+6偏移寻址ADDR3,120(R2)Regs[R3]←Regs[R3]+Mem[120+Regs[R2]]寄存器间接寻址ADDR4,(R2)Regs[R4]←Regs[R4]+Mem[Regs[R2]]索引寻址ADDR4,(R2+R3)Regs[R4]←Regs[R4]+Mem[Regs[R2]+Regs[R3]]直接寻址或绝对寻址ADDR4,(1010)Regs[R4]←Regs[R4]+Mem[1010]存储器间接寻址ADDR2,@(R4)Regs[R2]←Regs[R2]+Mem[Mem[Regs[R4]]]自增寻址ADDR1,(R2)+Regs[R1]←Regs[R1]+Mem[Regs[R2]]Regs[R2]←Regs[R2]+d自减寻址ADDR1,-(R2)Regs[R2]←Regs[R2]-dRegs[R1]←Regs[R1]+Mem[Regs[R2]]缩放寻址ADDR1,80(R2)[R3]Regs[R1]←Regs[R1]+Mem[80+Regs[R2]+Regs[R3]*d]2.2寻址方式采用多种寻址方式可以显著地减少程序的指令条数,但可能增加计算机的实现复杂度以及指令的CPI。2.2寻址方式各种寻址方式的使用情况统计结果在VAX机器上运行gcc、Spice和Tex基准程序1%0%24%43%32%6%16%3%17%55%1%6%11%39%40%0%10%20%30%40%50%60%70%存储器间接寻址缩放寻址寄存器间接寻址立即数寻址偏移寻址TexSpicegcc立即数寻址方式和偏移寻址方式的使用频度最高。2.2寻址方式偏移寻址偏移量的取值范围在load-store结构的机器(Alpha)上运行SPECCPU2000基准程序2.2寻址方式位移量字段的大小直接影响到指令的长度。从图中可以看出:程序所使用的偏移量大小分布十分广泛主要是由于在存储器中所保存的数据并不是十分集中,需要使用不同的偏移量对其进行访问。较小的偏移量和较大的偏移量均占有相当大的比例。2.2寻址方式立即数寻址方式立即数寻址方式的使用频度指令类型使用频度整型平均浮点平均load指令23%22%ALU指令25%19%所有指令21%16%大约1/4的load指令和ALU指令采用了立即数寻址。2.2寻址方式立即数的取值范围2.2寻址方式立即数取值的大小也影响到指令长度最常用的是较小的立即数有时也会用到较大的立即数(主要用于地址计算)测试表明,16位的长度覆盖大约80%,8位可以覆盖大约50%。2.2寻址方式两种表示寻址方式的方法将寻址方式编码于操作码中,由操作码描述相应操作的寻址方式。适合:处理机采用load-store结构,寻址方式只有很少几种。在指令字中设置专门的寻址字段,用以直接指出寻址方式。灵活,操作码短,但需要设置专门的寻址方式字段,而且操作码和寻址方式字段合起来所需要的总位数可能会比隐含方法的总位数多。适合:处理机具有多种寻址方式,且指令有多个操作数。第2章计算机指令系统的设计2.3指令系统的设计和优化指令系统的设计首先考虑所应实现的基本功能,确定哪些基本功能应该由硬件实现,哪些功能由软件实现比较合适。包括指令的功能设计指令格式的设计在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性。2.3指令系统的设计和优化在设计新的指令系统时,一般按以下步骤反复多次地进行,直至指令系统的效能达到很高为止。1.根据应用,初拟出指令的分类和具体的指令。2.试编出用该指令系统设计的各种高级语言的编译程序。3.对各种算法编写大量测试程序并进行模拟测试,看指令系统的操作码和寻址方式效能是否都比较高。4.将程序中高频出现的指令串复合,将其改成一条强功能新指令,即改用硬件方式实现,而将出现频度很低的指令的操作改成用基本指令组成的指令串来完成,即用软件方式实现。对指令系统的基本要求完整性、规整性、正交性、高效率、兼容性完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令系统所提供的指令足够使用。要求指令系统功能齐全、使用方便下表为许多指令系统结构都包含的一些指令类型前4类属于通用计算机系统的基本指令对于最后4种类型的操作,不同指令系统结构的支持大不相同。2.3指令系统的设计和优化2.3指令系统的设计和优化操作类型实例算术和逻辑运算算术运算和逻辑操作:加,减,乘,除,与,或等数据传输load,store控制分支,跳转,过程调用和返回,自陷等系统操作系统调用,虚拟存储器管理等浮点浮点操作:加,减,乘,除,比较等十进制十进制加,十进制乘,十进制到字符的转换等字符串字符串移动,字符串比较,字符串搜索等图形像素操作,压缩/解压操作等2.3指令系统的设计和优化规整性:主要包括对称性和均匀性。对称性:所有与指令系统有关的存储单元的使用、操作码的设置等都是对称的。例如:在存储单元的使用上,所有通用寄存器都要同等对待。在操作码的设置上,如果设置了A-BA的指令,就应该也设置A-BB的指令。均匀性:指对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待。例如:如果某机器有5种数据表示,4种字长,两种存储单元,则要设置5×4×2=40种同一操作的指令。2.3指令系统的设计和优化正交性:在指令中各个不同含义的字段,如操作类型、数据类型、寻址方式字段等,在编码时应互不相关、相互独立。高效率:指指令的执行速度快、使用频度高。兼容性:主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。2.3指令系统的设计和优化在设计指令系统时,有两种截然不同的设计策略。(产生了两类不同的计算机系统)CISC(复杂指令系统计算机)ComplexInstructionSetComputer增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。RISC(精简指令系统计算机)ReducedInstructionSetComputer尽可能地把指令系统简化,不仅指令的条数少,而且指令的功能也比较简单。2.3指令系统的设计和优化20世纪50年代,由于硬件价格高、体积大、可靠性低,因此计算机的指令系统比较简单。随着半导体技术和微电子技术的发展,为增强系统功能和提高速度就不断增加指令系统的复杂度。大致有以下几个原因:当高级语言(如C语言)取代汇编语言后,就不断增加新的复杂指令来支持高级语言程序的高效实现。由于访主存的速度显著低于访CPU寄存器的速度,因
本文标题:第2章计算机指令系统的设计.
链接地址:https://www.777doc.com/doc-2155228 .html