版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1/90/90第2章 指令系统的设计2 2/90/90计算机是“聪明傻瓜”,不告诉它怎样干它什么也不会干,告诉它怎样干它会干得很好;这就要给计算机一个个它能够明白的命令,这个命令就是指令;计算机明白指令的意思叫做译码;指令存储在存储器中。计算机指令指令基本格式指令基本格式 操作码操作码 地址码地址码 D D 一个一个一个或几个一个或几个3 3/90/90指令系统u指令系统是指令系统是计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。不同计算机的指令系统包含的指令种类和数目也不同。一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、输入和输出型等指令。
2、u指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。 4 4/90/90指令系统5 5/90/90最早的指令集单累加器来源于计算器。一般指令数少于246 6/90/9050年代中期的计算机硬件昂贵存储空间小(1000 words), 因为没有地方保存,所以没有常因为没有地方保存,所以没有常 驻的系统软件驻的系统软件!访问内存比处理器慢十到五十倍 指令执行时间主要取决于内存访问时间指令执行时间主要取决于内存访问时间相对于解码和ALU的速度,设计复杂的控制电路来执行一条指令的能力是重点关注的。程序员对机器的见解与实际
3、硬件执行分不开7 7/90/90早期的解决办法:处理机中设计快速本地存储器 为累加器添置为累加器添置8-16个寄存器个寄存器增强索引能力 减少指令索引时间减少指令索引时间使用复杂的指令 减少取指令次数减少取指令次数紧缩指令,例如,隐式地址操作数位8 8/90/9070年代,指令系统已经非常复杂机机 型型(生生产产年年代代)I IB BM M3 37 70 0/ /1 16 68 8(1 19 97 73 3)V VA AX X- -1 11 1(1 19 97 78 8)i iA AP PX X 4 43 32 2(1 19 98 82 2)D Do or ra ad do o(1 19 97
4、 78 8)指指令令种种类类2 20 08 83 30 03 32 22 22 22 27 70 0微微程程序序容容量量4 42 20 0K K4 48 80 0K K6 64 4K K1 13 36 6K K指指令令长长度度1 16 6- -4 48 81 16 6- -4 45 56 66 6- -3 32 21 18 8- -2 24 4采采用用的的工工艺艺E EC CL L M MS SI IT TT TL L M MS SI IN NM MO OS S V VL LS SI IE EC CL L M MS SI I指指令令操操作作类类型型存存储储器器- -存存储储器器存存储储器器-
5、-寄寄存存器器寄寄存存器器- -寄寄存存器器存存储储器器- -存存储储器器存存储储器器- -寄寄存存器器寄寄存存器器- -寄寄存存器器面面向向堆堆栈栈存存储储器器- -存存储储器器面面向向堆堆栈栈C Ca ac ch he e 容容量量6 64 4K KB B6 64 4K KB B0 06 64 4K KB B9 9/90/90复杂的指令使指令的执行周期大大加长,指令平均执行周期都在4以上在复杂指令系统中,增强指令系统功能,简化了软件,硬件复杂了复杂指令系统存在的问题 1975年,IBM公司率先组织力量开始研究指令系统的合理性问题1010/90/90前进的方向二八原则1897年,意大利经济学
6、家帕累托(18481923)偶然注意到英国人的财富和收益模式,于是潜心研究这一模式,并于后来提出了著名的二八法则。一般情况下,我们付出的80的努力,也就是绝大部分的努力,都没有创造收益和效果,或者是没有直接创造收益和效果。而我们80的收获却仅仅来源于20的努力,其他80的付出只带来20的成果。20时间赢得80的快乐1111/90/90复杂指令系统的二八原则 1979年,美国加洲伯克利分校 David Patterson 提出:2020与与8080规律规律在在复杂指令系统复杂指令系统中,大约中,大约2020的指令占据了的指令占据了8080的处理机执行时间。的处理机执行时间。 例如:8088处理机
7、的指令种类大约100种 前11种(11)指令的使用频度已经超过80 前8种(8)指令的运行时间已经超过80 前20种(20)指令:使用频度达到91.1 运行时间达到97.72 其余80的指令:使用频度只有8.9 2.28的处理机运行时间1212/90/90IntelIntel80888088 处理机指令系统使用频度和执行时间统计处理机指令系统使用频度和执行时间统计 (C C 语言编译程序和语言编译程序和 PROLOGPROLOG 解释程序)解释程序) 使用频度使用频度 执行时间执行时间 序号序号 指令指令 累计累计 序号序号 指令指令 累累 1 1 2 2 3 3 4 4 5 5 6 6 7
8、7 8 8 9 9 1010 1111 1212 1313 1414 1515 1616 1717 1818 1919 2020 MOVMOV PUSHPUSH CMPCMP JMPccJMPcc ADDADD POPPOP RETRET CALLCALL JUMPJUMP SUBSUB INCINC LESLES REPNREPN IMULIMUL DECDEC XORXOR REPNZREPNZ CLDCLD LOOPccLOOPcc TESTTEST 24.8524.85 10.3610.36 10.2810.28 9.039.03 6.806.80 4.144.14 3.923.92
9、3.893.89 2.702.70 2.432.43 2.372.37 1.981.98 1.921.92 1.691.69 1.371.37 1.131.13 0.780.78 0.540.54 0.520.52 0.400.40 24.8524.85 35.2135.21 45.4945.49 54.5254.52 61.3261.32 65.4665.46 69.3869.38 73.2773.27 75.9775.97 78.4078.40 80.7780.77 82.7582.75 84.6784.67 86.3686.36 87.7387.73 88.8688.86 89.6489
10、.64 90.1890.18 90.7090.70 91.1091.10 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1010 1111 1212 1313 1414 1515 1616 1717 1818 1919 2020 IMULIMUL MOVMOV PUSHPUSH JMPccJMPcc CMPCMP CALLCALL RETRET ADDADD JMPJMP LESLES POPPOP DECDEC SUBSUB XORXOR INCINC LOOPccLOOPcc LDSLDS CMPSCMPS MOVSMOVS JCXZJCXZ 19.5519.55
11、 17.4417.44 11.1111.11 10.5510.55 7.807.80 7.277.27 4.854.85 3.273.27 3.263.26 2.832.83 2.612.61 1.491.49 1.181.18 1.041.04 0.990.99 0.640.64 0.640.64 0.440.44 0.390.39 0.370.37 19.5519.55 36.9936.99 48.1048.10 58.6558.65 66.4566.45 73.7273.72 78.5778.57 81.8481.84 85.1085.10 87.9387.93 90.5490.54 9
12、2.092.03 3 93.2193.21 94.2594.25 95.2495.24 95.8895.88 96.5296.52 96.9696.96 97.3597.35 97.7297.72 指令系统的二八原则1313/90/90RISC指令集对于80%的指令采取加速策略 - 使用硬件线路实现指令操作,提高速度,降低成本 - RISC还加强了并行处理能力,非常适合于采用处理器 的流水线、超流水线和超标量技术,从而实现指令级 并行操作,提高处理器的性能 RISC指令集利用多条简单指令实现原有复杂指令的功能RISC指令集1414/90/901979年研制出世界上第一台采用RISC思想的计算机
13、IBM 8011981年,Patterson等人研制了32位的RISC I微处理器,总共31种指令,3种数据类型,两种寻址方式,研制周期10个月,比当时最先进的MC68000和Z8002快3至4倍1983年,又研制了RISC II,指令种类扩充到39种,单一变址寻址方式,通用寄存器138个1986年,IBM正式推出采用RISC体系结构的工作站IBM RT PC指令系统由复杂走向简单1515/90/90PowerPC微处理器 ,20世纪90年代,IBM、Apple和Motorola共同开发了PowerPC,这款RISC架构的芯片的主要特点是可伸缩性好、方便灵活;MIPS处理器,MIPS处理器是八
14、十年代中期RISC CPU设计的一大热点 ,1999年以前世界上用得最多的处理器 ;SPARC处理器 ,1987年,Sun和TI公司合作开发了RISC架构的微处理器,此后出现了64位高性能UltraSPARC 处理器,为Sun公司的工作站和服务器提供了发展原动力PA-RISC处理器 ,1986年,HP发布了代号为PA-8000的第一款64位芯片,HP和Intel在IA-64芯片方面的合作,将把HP在PA-RISC芯片研制过程中的技术转移到IA-64中。 主流RISC芯片1616/90/90由于RISC指令集自身的优势,在处理器的高端服务器领域的处理器上得到了广泛的运用;而CISC指令集主要运用
15、桌面领域的处理器产品中,比如 Intel的Pentium系列和AMD的K8系列处理器;在嵌入式处理器,RISC如ARM(Advanced RISC Machines)已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场 现实的指令集1717/90/90所谓X86架构的处理器就是采用了Intel X86指令集的处理器,X86指令集是Intel公司为其第一块16位处理器i8086所专门开发的。为了增加计算机的浮点运算能力,增加了X87数学协助处理器和加入了X87指令集,于是就将采用了X86指令集和X87指令集的处理器统称为X86架构的处理器。 X86指令集1818/90/90
16、1968年,诺宜斯、摩尔、葛洛夫创建了年,诺宜斯、摩尔、葛洛夫创建了Intel公司。公司。 CISC vs. RISC - -Intel公司创建公司创建1919/90/901. 英特尔的一家客户(Busicom)要求英特尔为其专门设计一些处理芯片。在研究过程中,英特尔的研究员霍夫(Hoff) 做出大胆的设想:使用通用的硬件设计加上外部软件支持来完成不同的应用,这就是最初的通用微处理器的设想。 2. 1971 年英特尔诞生了第一个微处理器 4004。4004 处理只能处理4位数据,但内部指令是8位的。4004拥有46条指令,采用16针直插式封装。数据内存和程序内存分开,1K数据内存,4K程序内存
17、。这款处理器很快得到了整个业界的承认,IBM还将4004 装备在IBM 1620机器上。 3.1978 年,8086处理器诞生了。这个处理器标志着x86王朝的开始 通用处理器的诞生通用处理器的诞生2020/90/901. 1981年,IBM公司推出了基于Intel 8088处理器的个人电脑;和不久后的8086处理器相比,它是一台低价格,低性能的处理器。8088处理器和DOS操作系统能够支持大部分的应用软件,因此IBM的PC推出不久就受到各界的好评 。 2.随着PC的成功推出,IBM着手于X86系统架构标准的制定,并且希望成为全球最大的电脑制造商。Intel和Microsft都参与了此标准的定制
18、,并且携手进行个人电脑的开发。 。 3.第一个x86架构的“婴儿”便是于1985年推出的32位的80386处理器(386处理器)。 X86架构的诞生架构的诞生2121/90/901.从19世纪80年代开始,RISC(精简指令集)架构也受到人们的关注,并且有不少成功的产品,如SPARC ,PARISC,MIPS等,RISC处理器占领了高端大型机的市场 。 2.从价格上而言,X86架构的PC机最便宜;而那些基于RISC处理器的大型机价格昂贵。在功能上,PC机定位于整数的运算,而大型机却是以浮点数的运算来衡量性能的高低。 3.但是在1990年初,Sun Microsystems公司推出了桌面的微型R
19、ISC系统“MicroSPARC”。 RISC处理器处理器的发展的发展2222/90/901.针对Sun公司这个行为,Intel公司不久后就推出了性能和MicroSPARC相当的Pentium Pro处理器,Pentium Pro处理器是X86架构发展过程中的一个里程碑。 2.Pentium Pro 处理器首先在x86体系中引入了“微指令”的概念,即一条指令能够完成原先几条指令的操作。在256KB二级缓存的协助下,微指令使得系统的整体性能有了突破性的飞跃。 3.由0.35微米制成技术制造的Pentium Pro处理器可以和原先任何一款RISC处理器叫板。 4.RISC的开发者们不得不承认,当时
20、的RISC架构达不到Pentium Pro的性能。 Pentium Pro处理器的诞生处理器的诞生2323/90/901.在1995年,一个名叫NexGen的公司(后被AMD收购)认识到X86指令集是提高CPU性能的一个很大的障碍,因为X86指令的长度和格式都各不相同,会造成解码困难。于是他们开发出了NX586(AMD在NX586的基础上开发出了K6核心),NX586在相同时钟频率下的运行速度比Pentium快,秘密就在于它把那些长度不定的X86指令集翻译成了短小且长度固定的类RISC指令; 2.Pentium Pro也具有一个快速的RISC核心,后来的P、P、赛扬等CPU都是在这个核心(P6
21、)上繁衍出来的,P6核心的速度更快,具有更长的流水线。RISC的威力的威力2424/90/901.当CPU集成的晶体管数量超过1百万后,“制成工艺”和“晶体管集成度”成为衡量系统性能的另一个标准; 2.RISC系统针对高端的服务器市场,CPU和所有的部件都必须确保系统的“稳定性”,大型机的CPU非常昂贵,x86的价格要低12个数量级,它主要是确保系统的性能,或者尽可能的提高系统的性价比 ;3.微软等众多软件公司对X86 PC的支持。 X86架构的优势架构的优势2525/90/90只有偏执狂才能生存1.只有偏执狂才能生存是一部影响巨大的管理学著作,它提出了一个新的管理理念:偏执狂管理。企业发展过
22、程中,企业将会出现一个战略转折点,这时候,企业有机会上升到新的高度,但它也同样有可能标志着没落的开始。在这一过程中,偏执狂式的管理能使公司保持足够的谨慎,时常提防他人的袭击。 2626/90/901.20 世纪90 年代发生的计算机技术另一重大发展是高端系统和应用从32 位RISC 向64 位过渡。最早问世的64 位RISC 微处理器是 Alpha 21064 和MIPS R4000。64位位RISC的发展的发展2727/90/901.64 位技术揭开了信息时代的新篇章,支持全球性Internet 和电子商务的大型和 7*24 网站、破译人类基因密码、数字技术的广泛应用、全球性的天气和灾害分析
23、预报、 人类对外层空间的探测都离不开各种基于64 位微处理器的计算机系统。2.但是,RISC 从一开始就走上了各自为政、以邻为壑的发展道路。各主要厂商都拥有自己64 位RISC 微处理器产品系列、名为“开放”实际上不完全开放的UNIX 操作系统、号称“兼容”其实并不完全兼容的中间件和应用编程界面(API)以及一大堆引以自豪的专利。64位位RISC处理器面临的挑战处理器面临的挑战2828/90/901.1994 年6 月,Intel 和HP 签署合作协议,为高端服务器和工作站市场共同开发全新的、开放性的64 位架构。1997 年11 月,Intel 和HP 宣布推出 64 位的EPIC(EPIC
24、-Explicitly Parallel Computing;显性并行指令计算)架构以及相应的产品计划;2.2001 年 5 月经过7 年的艰苦努力,IPF 系列的第一代产品Itanium终于正式上市,Intel 于2002 年和2003 年又先后推出了二代、四款新型的Itanium2 产品一举确立了IPF 性能相对于所有RISC 处理器的领先地位;3.高端的竞争将由原来的各厂商的64 位RISC 芯片之间的竞争,逐步变为开放性的IA-64 芯片与少数厂商专利的RISC 芯片之间的竞争。EPIC2929/90/90X86系统结构 3030/90/90然而随着处理器技术的发展,虽然处理器的主频和
25、制造工艺都有一定的进步,但是处理器的性能确不能非常明显的提高,其中一个非常重要的原因就是受到了X86所采用的SISC指令集的限制。这一点Intel方面也非常清楚。而目前IA-32(Intel Architechure-32 英特尔32位体系架构)的X86系列处理器存在着一系列的问题,使得Intel方面已经打算放弃X86指令体系处理器的发型,而将重点放在下一代的IA-64体系处理器和EPIC(Explicitly Parallel Instruction Computing)显性并行指令方面。 Intel指令集发展3131/90/90提高处理器每个时钟频率的指令执行数来提高处理器的性能,而这也是
26、Intel开发新指令集的主要目的,这样一来,处理器可以让指令更容易解码,并且更容易进行并行处理,这样就可以不受指令集的限制来开发新型的处理器。而X86指令集的劣势就在于它的限制过多。(1)由于X86指令集是属于CISC类型的指令集,其每条指令的长度是不固定的,而且有几种不同的格式,这样一来,就造成了X86处理器的解码工作非常复杂。而为了提高处理器的工作频率,就不得不延长处理器中的流水线,而过长的流水线在分支如果出现预测出错的情况,又会带来CPU工作停滞时间较长的弊端。 X86指令集的缺陷3232/90/90(2)X86指令采用了可访问内存地址的方法,这样的方法容易造成处理器与内存之间的不平衡工
27、作,从而降低处理器的工作效率;(3)X86构架处理器中的FPU(Floating Point Unit)浮点运算单元的运算能力较差,可以说现今市面上所有类型处理器中最慢的,其主要原因就是X86指令集中所使用的一个操作数堆栈。如果在运算过程中,没有足够的寄存器进行计算,系统就不得不使用堆栈来存放数据;X86指令集的缺陷3333/90/90IA-64体系,由于采用了RISC指令集,可由一个指令、两个输入寄存器和一个输出寄存器组成,指令只对寄存器进行操作。并且具有多个不同的流水线或执行单元,能够并行执行许多指令。在对指令的处理速度上要明显优于CISC类型的IA-32体系。 IA-64体系3434/9
28、0/90目前市面上Intel和AMD的桌面级处理器在X86指令集的基础上,为了提升处理器各方面的性能,所以又各自开发新的指令集。指令集中包含了处理器对多媒体、3D处理等方面的支持,这些指令集能够提高处理器对这某些方面处理器能力,但是需要有必要的软件支持。 提升性能:扩展指令集3535/90/90指令集是Intel公司在1996年为旗下的Pentium系列处理器所开发的一项多媒体指令增强技术。MMX指令集中包括了57条多媒体指令,通过这些指令可以一次性处理多个数据,在处理结果超过实际处理能力的时候仍能够进行正常处理,如果在软件的配合下,可以得到更强的处理性能。使用 MMX指令集的好处就是当时所使
29、用的操作系统可以在不做任何改变的情况下执行MMX指令。 MMX指令集3636/90/90Streaming SIMD Extension(SIMD扩展指令集)的缩写,而其中SIMD的为含意为Single Istruction Multiple Data(单指令多数据),所以SSE指令集也叫单指令多数据流扩展。 SSE指令集3737/90/903DNow!指令集最由AMD公司所推出的,3DNow!指令集主要针对三维建模、坐标变换和效果渲染等3D数据的处理,在相应的软件配合下,可以大幅度提高处理器的3D处理性能。 3DNow!指令集3838/90/90在现在的处理器市场上,64位技术已经开始普及起
30、来,像AMD的Athlon 64处理器和Intel的Pentium 5XX/6XX处理器已经成为市场的主流。但是大家要值得主意的是,目前的桌面级64位处理器仍然还是基于X86架构之上,而不是IA-64架构。这里的64位处理器是指的处理器的通用寄存器GPR(General-Purpose Registers)的数据宽度为64位。也就是说处理器可一次运算64 位数据。现在市面上主流的64位技术主要是Intel的EM64T技术和AMD和AMD64技术。而这两项技术都是基于IA-32体系,而真正的IA-64体系上处理器目前只有Itanium(安腾)以及其后续产品,是Intel独立开发的,它不兼容现在3
31、2位计算机。 未来:迈向64位体系3939/90/902.1指令系统结构的分类2.2寻址方式2.3指令系统的设计与优化2.4 指令系统的发展和改进2.5操作数的类型和大小2.6MIPS指令系统结构4040/90/901. 区别不同指令系统结构的主要因素 CPU中用来存储操作数的存储单元的类型2. CPU中用来存储操作数的存储单元堆栈累加器通用寄存器组3. 将指令系统的结构分为三种类型2.1 指令系统结构的分类4141/90/902.1 指令系统结构的分类堆栈结构累加器结构通用寄存器结构根据操作数的来源不同,又可进一步分为根据操作数的来源不同,又可进一步分为:q寄存器寄存器- -存储器结构存储器
32、结构(RMRM结构)结构) ( (操作数可以来自存储器操作数可以来自存储器 ) )q寄存器寄存器- -寄存器结构寄存器结构(RRRR结构)结构) ( (所有操作数都是来自通用寄存器组所有操作数都是来自通用寄存器组) ) 也称为也称为load-storeload-store结构,这个名称强调:只有结构,这个名称强调:只有loadload指令和指令和storestore指令能够访问存储器。指令能够访问存储器。 4242/90/902.1 指令系统结构的分类 对于不同类型的结构,操作数的位置、个数以及操作数的给出方式(显式或隐式)也会不同。显式给出:用指令字中的操作数字段给出隐式给出:使用事先约定好
33、的单元 4343/90/902.1 指令系统结构的分类 例: 表达式表达式Z Z=X+Y=X+Y在在4 4种类型指令系统结构上的代码。种类型指令系统结构上的代码。 假设:假设:X X、Y Y、Z Z均保存在存储器单元中,并且不能均保存在存储器单元中,并且不能 破坏破坏X X和和Y Y的值。的值。堆 栈 累加器寄存器(RM型) 寄存器(RR型) push Xload Xload R1,Xload R1,Xpush Yadd Yadd R1,Yload R2,Yaddstore Zstore R1,Zadd R3,R1,R2pop Zstore R3,Z4444/90/902.1 指令系统结构的分
34、类 通用寄存器型结构现代指令系统结构的主流在灵活性和提高性能方面有明显的优势q跟其它的跟其它的CPUCPU内部存储单元一样,寄存器的访问内部存储单元一样,寄存器的访问 速度比存储器快。速度比存储器快。q对编译器而言,能更加容易、有效地分配和使用对编译器而言,能更加容易、有效地分配和使用 寄存器。寄存器。q寄存器可以用来存放变量。寄存器可以用来存放变量。 (1 1)减少对存储器的访问,加快程序的执行速度;减少对存储器的访问,加快程序的执行速度; (因为寄存器比存储器快)(因为寄存器比存储器快) 4545/90/902.1 指令系统结构的分类(2 2)用更少的地址位(相对于存储器地址来说)来对寄用
35、更少的地址位(相对于存储器地址来说)来对寄 存器进行寻址,从而有效地减少程序的目标代码的存器进行寻址,从而有效地减少程序的目标代码的 大小。大小。 根据ALU指令的操作数的两个特征对通用寄存器型结 构进一步细分ALU指令的操作数个数q3 3个操作数的指令个操作数的指令 两个源操作数、一个目的操作数两个源操作数、一个目的操作数q2 2个操作数的指令个操作数的指令其中一个操作数既作为源操作数,又作为目的操作数。其中一个操作数既作为源操作数,又作为目的操作数。4646/90/902.1 指令系统结构的分类ALU指令中存储器操作数的个数可以是可以是0 0中的某一个,为中的某一个,为0 0表示没有存储器
36、操作数。表示没有存储器操作数。ALU指令中存储器操作数的个数 ALU指令中操作数的最多个数 结构类型 机器实例 03RR MIPS,SPARC,Alpha,PowerPC,ARM12RM IBM 360/370,Intel 80 x86,Motorola 680003RM IBM 360/370 22MM VAX 33MM VAX 7. ALU指令中操作数个数和存储器操作数个数的典型组合4848/90/902.1 指令系统结构的分类 通用寄存器型结构进一步细分为3种类型寄存器寄存器型(RR型)寄存器存储器型(RM型)存储器存储器型(MM型) 3种通用寄存器型结构的优缺点 表中表中(m(m,n)
37、n)表示指令的表示指令的n n个操作数中有个操作数中有m m个存个存储器操作数。储器操作数。指令系统结构类型指令系统结构类型 优优 点点 缺缺 点点 寄存器寄存器型寄存器寄存器型 (0 0,3 3) 指令字长固定,指令结构指令字长固定,指令结构简洁,是一种简单的代码简洁,是一种简单的代码生成模型,各种指令的执生成模型,各种指令的执行时钟周期数相近。行时钟周期数相近。 与指令中含存储器操作数的指令系与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间码不够紧凑,因而程序占用的空间比较大。比较大。 寄存器存储器型寄存器存储器型 (
38、1 1,2 2) 可以在可以在ALUALU指令中直接对指令中直接对存储器操作数进行引用,存储器操作数进行引用,而不必先用而不必先用loadload指令进行指令进行加载。容易对指令进行编加载。容易对指令进行编码,目标代码比较紧凑。码,目标代码比较紧凑。 指令中的两个操作数不对称。在一指令中的两个操作数不对称。在一条指令中同时对寄存器操作数和存条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。指指令所能够表示的寄存器个数。指令的执行时钟周期数因操作数的来令的执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别源(寄存器或存储器
39、)不同而差别比较大。比较大。 存储器存储器型存储器存储器型 (2 2,2 2) 或(或(3 3,3 3) 目标代码最紧凑,不需要目标代码最紧凑,不需要设置寄存器来保存变量。设置寄存器来保存变量。 指令字长变化很大,特别是指令字长变化很大,特别是3 3操作操作数指令。而且每条指令完成的工作数指令。而且每条指令完成的工作也差别很大。对存储器的频繁访问也差别很大。对存储器的频繁访问会使存储器成为瓶颈。这种类型的会使存储器成为瓶颈。这种类型的指令系统结构现在已不用了。指令系统结构现在已不用了。 5050/90/901. 寻址方式:指令系统中如何形成所要访问的数据的地址。 寻址方式可以指明指令中的操作数
40、是一个常数、一个寄存器操作数或者是一个存储器操作数。对于存储器操作数来说,由寻址方式确定的存储器地址称为有效地址。 2.2 寻址方式5151/90/902.2 寻址方式 一些操作数寻址方式:赋值操作Mem:存储器Regs:寄存器组方括号:表示内容qMem Mem :存储器的内容:存储器的内容qRegs Regs :寄存器的内容:寄存器的内容qMemRegsR1MemRegsR1:以寄存器:以寄存器R1R1中的内容作为地址的中的内容作为地址的 存储器单元中的内容存储器单元中的内容寻址方式指令实例含 义寄存器寻址ADD R1 , R2RegsR1RegsR1RegsR2立即值寻址ADD R3 ,
41、#6RegsR3RegsR36偏移寻址ADD R3 , 120(R2)RegsR3RegsR3Mem120+RegsR2寄存器间接寻址ADD R4 , (R2)RegsR4RegsR4MemRegsR2索引寻址ADD R4 , (R2 + R3)RegsR4RegsR4MemRegsR2+RegsR3直接寻址或绝对寻址ADD R4 , (1010)RegsR4RegsR4Mem1010存储器间接寻址ADD R2 , (R4)RegsR2RegsR2MemMemRegsR4自增寻址ADD R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自减寻址ADD R1
42、, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2缩放寻址ADDR1 , 80(R2)R3RegsR1RegsR1Mem80RegsR2RegsR3*d5353/90/902.2 寻址方式 采用多种寻址方式可以显著地减少程序的指令条 数,但可能增加计算机的实现复杂度以及指令的CPI。5454/90/902.2 寻址方式 1% 0% 24% 43% 32% 6% 16% 3% 17% 55% 1% 6% 11% 39% 40% 0% 10% 20% 30% 40% 50% 60% 70% 存存储储器器间间接接寻寻址址 缩缩放放寻寻址址 寄寄存存器器间间接接寻寻址
43、址 立立即即数数寻寻址址 偏偏移移寻寻址址 Tex Spice gcc 立即数寻址方式和偏移寻址方式的使用频度最高。 各种寻址方式的使用情况统计结果在在VAXVAX机器上运行机器上运行gccgcc、SpiceSpice和和Tex Tex 基准程序基准程序5555/90/902.2 寻址方式 立即数寻址方式立即数寻址方式的使用频度 指令类型 使用频度 整型平均 浮点平均 load指令 23% 22% ALU指令 25% 19% 所有指令 21% 16% 大约1/4的load指令和ALU指令采用了立即数寻址。 5656/90/902.2 寻址方式 两种表示寻址方式的方法将寻址方式编码于操作码中,由
44、操作码描述相应操作的寻址方式。适合适合:处理机采用:处理机采用load-store结构,寻址方式只有很少几种。结构,寻址方式只有很少几种。在指令字中设置专门的寻址字段,用以直接指出寻址方式。q灵活,操作码短,但需要设置专门的寻址方式字段,而灵活,操作码短,但需要设置专门的寻址方式字段,而且操作码和寻址方式字段合起来所需要的总位数可能会且操作码和寻址方式字段合起来所需要的总位数可能会比隐含方法的总位数多。比隐含方法的总位数多。 适合适合:处理机具有多种寻址方式,且指令有多个操作数。:处理机具有多种寻址方式,且指令有多个操作数。5757/90/902.2 寻址方式 一个需要注意的问题:物理地址空间
45、的信息如何存放?如何在存储器中存放不同宽度的信息? 以IBM370为例子进行讨论。q信息有信息有字节、半字(双字节)、单字(字节、半字(双字节)、单字(4字节)和双字字节)和双字(8字节)字节)等宽度。等宽度。q主存宽度为主存宽度为8个字节。采用按字节编址,各类信息都是个字节。采用按字节编址,各类信息都是用该信息的首字节地址来寻址。用该信息的首字节地址来寻址。 允许它们任意存储q很可能会出现一个信息跨存储字边界而存储于两个存很可能会出现一个信息跨存储字边界而存储于两个存储单元中储单元中5858/90/902.2 寻址方式信息宽度不超过主存宽度的信息必须存放在一个存储字内,不能跨边界。q必须做到
46、:必须做到:信息在主存中存放的起始地址必须是该信信息在主存中存放的起始地址必须是该信息宽度(字节数)的整数倍息宽度(字节数)的整数倍 信息存储的整数边界概念信息存储的整数边界概念q满足以下条件满足以下条件n字节信息的起始地址为:字节信息的起始地址为:n半字信息的起始地址为:半字信息的起始地址为:n单字信息的起始地址为:单字信息的起始地址为:n双字信息的起始地址为:双字信息的起始地址为: q存在存储空间的浪费存在存储空间的浪费 ,但保证访问速度。,但保证访问速度。5959/90/902.2 寻址方式 8 8 个个字字节节 字字节节 半半字字 单单字字 双双字字 字字节节 双双字字 单单字字 单单
47、字字 字字节节 (a) 8 8 个个字字节节 字字节节 单单字字 字字节节 双双字字 单单字字 字字节节 (b) 浪浪费费 浪浪费费 半半字字 6060/90/901. 指令系统的设计首先考虑所应实现的基本功能,确定哪些基本功能应该由硬件实现,哪些功能由软件实现比较合适。包括q指令的功能设计指令的功能设计q指令格式的设计指令格式的设计2. 在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性。2.3 指令系统的设计与优化6161/90/902.3 指令系统的设计与优化硬件实现的特点 速度快、成本高、灵活性差速度快、成本高、灵活性差软件实现的特点 速度慢、价格便宜、灵活性好速度
48、慢、价格便宜、灵活性好 对指令系统的基本要求 完整性、规整性、正交性、高效率、兼容性 完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令系统所提供的指令足够使用。6262/90/902.3 指令系统的设计与优化q要求指令系统功能齐全、使用方便要求指令系统功能齐全、使用方便q下表为许多指令系统结构都包含的一些指令类型下表为许多指令系统结构都包含的一些指令类型 n前前4 4类类属于通用计算机系统的基本指令属于通用计算机系统的基本指令n对于最后对于最后4 4种类型的操作,不同指令系统结构的种类型的操作,不同指令系统结构的支持大不相同支持大不相同 。 6363/90/902.
49、3 指令系统的设计与优化操作类型 实 例 算术和逻辑运算 算术运算和逻辑操作:加,减,乘,除,与,或等 数据传输 load,store控制 分支,跳转,过程调用和返回,自陷等 系统 操作系统调用,虚拟存储器管理等 浮点 浮点操作:加,减,乘,除,比较等 十进制 十进制加,十进制乘,十进制到字符的转换等 字符串 字符串移动,字符串比较,字符串搜索等 图形 像素操作,压缩/解压操作等 6464/90/902.3 指令系统的设计与优化规整性:主要包括对称性和均匀性。q对称性:对称性:所有与指令系统有关的存储单元的使用、所有与指令系统有关的存储单元的使用、 操作码的设置等都是对称的。操作码的设置等都是
50、对称的。例如:例如:在存储单元的使用上,所有通用寄存器都要同等对在存储单元的使用上,所有通用寄存器都要同等对 待。在操作码的设置上,如果设置了待。在操作码的设置上,如果设置了A AB B的指的指 令,就应该也设置令,就应该也设置B BA A的指令。的指令。 q均匀性:均匀性:指对于各种不同的操作数类型、字长、操作指对于各种不同的操作数类型、字长、操作 种类和数据存储单元,指令的设置都要同等对待。种类和数据存储单元,指令的设置都要同等对待。例如:例如:如果某机器有如果某机器有5 5种数据表示,种数据表示,4 4种字长,两种存储单种字长,两种存储单 元,则要设置元,则要设置5 54 42=402=
51、40种同一操作的指令。种同一操作的指令。 6565/90/902.3 指令系统的设计与优化正交性:在指令中各个不同含义的字段,如操作类型、数据类型、寻址方式字段等,在编码时应互不相关、相互独立。 高效率:指指令的执行速度快、使用频度高。兼容性:主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。6666/90/902.3 指令系统的设计与优化 在设计指令系统时,有两种截然不同的设计策略。 (产生了两类不同的计算机系统 )CISC(复杂指令系统计算机)q增强指令功能,把越来越多的功能交由硬件来实增强指令功能,把越来越多的功能交由硬件来实 现,并且指令的数量也是越来越多。
52、现,并且指令的数量也是越来越多。RISC(精简指令系统计算机)q尽可能地把指令系统简化,不仅指令的条数少,而且尽可能地把指令系统简化,不仅指令的条数少,而且 指令的功能也比较简单。指令的功能也比较简单。 6767/90/902.3 指令系统的设计与优化1. 控制指令是用来改变控制流的。 跳转:当指令是无条件改变控制流时,称之为跳转指令。分支:当控制指令是有条件改变控制流时,则称之为分支指令。 2. 能够改变控制流的指令q分支分支q跳转跳转q过程调用过程调用q过程返回过程返回2.3.2 控制指令6868/90/902.3 指令系统的设计与优化 控制指令的使用频度 (load-storeload-
53、store型指令系统结构的机器,基准程序为型指令系统结构的机器,基准程序为SPEC CPU2000SPEC CPU2000)指令类型 使用频度 整型平均 浮点平均 调用/返回 19% 8% 跳转 6% 10% 分支 75% 82% 改变控制流的大部分指令是分支指令(条件转移)。 分支条件的方法及其优缺点 名 称 检测分支条件的方法 优 点 缺 点 条件码(CC) 检测由ALU操作设置的一些特殊的位(即CC) 可以自由设置分支条件 条件码是增设的状态。而且它限制了指令的执行顺序,因为要保证条件码能顺利地传送给分支指令。 条件寄存器 比较指令把比较结果放入任何一个寄存器,检测时就检测该寄存器。 简
54、单 占用了一个寄存器 比较与分支 比较操作是分支指令的一部分,通常这种比较是受到一定限制的。 用一条指令(而不是两条)就能实现分支 当采用流水方式时,该指令的操作可能太多,在一拍内做不完。 7070/90/902.3 指令系统的设计与优化 转移目标地址的表示最常用的方法 在指令中提供一个偏移量,由该偏移量和程序计数在指令中提供一个偏移量,由该偏移量和程序计数器(器(PCPC)的值相加而得出目标地址。)的值相加而得出目标地址。 (PCPC相对寻址)相对寻址)优点q有效地减少表示该目标地址所需要的位数有效地减少表示该目标地址所需要的位数q位置无关(代码可被装载到主存的任意位置执行)位置无关(代码可
55、被装载到主存的任意位置执行)关键:确定偏移量字段的长度q模拟结果表明:采用模拟结果表明:采用4 48 8位位的偏移量字段(以指令字的偏移量字段(以指令字为单位)就能表示大多数控制指令的转移目标地址了。为单位)就能表示大多数控制指令的转移目标地址了。7171/90/902.3 指令系统的设计与优化 过程调用和返回除了要改变控制流之外,可能还要保存机器状态。至少也得保存返回地址(放在专用的链接寄存器或堆栈中)。过去有些指令系统结构提供了专门的保存机制来保存许多寄存器的内容。现在较新的指令系统结构则要求由编译器生成load和store指令来保存或恢复寄存器的内容。 7272/90/902.3 指令系
56、统的设计与优化2.3.3 指令操作码的优化指令由两部分组成:操作码、地址码指令格式的设计 确定指令字的编码方式,包括操作码字段和地确定指令字的编码方式,包括操作码字段和地址码字段的编码和表示方式。址码字段的编码和表示方式。指令格式的优化:如何用最短的位数来表示指令的操作信息和地址信息。 7373/90/902.3 指令系统的设计与优化1. 哈夫曼编码 基本思想:当各种事件发生的概率不均等时,可以对发生概率最高的事件用最短的位数(时间)来表示(处理),而对于出现概率较低的事件,则可以用较长的位数(时间)来表示(处理),从而使总的平均位数(时间)缩短。构造哈夫曼树的方法 q将各事件按其使用频度从小
57、到大依次排列将各事件按其使用频度从小到大依次排列 ;q每次从中选择两个频度值最小的结点,将其合并成一每次从中选择两个频度值最小的结点,将其合并成一个新的结点,并把新结点画在所选结点的上面,个新的结点,并把新结点画在所选结点的上面, 7474/90/902.3 指令系统的设计与优化q然后用两条边把新结点分别与那两个结点相连。然后用两条边把新结点分别与那两个结点相连。n新结点的频度值是所选两个结点的频度值的和。新结点的频度值是所选两个结点的频度值的和。q把新结点与其他剩余未结合的结点一起,再以上面的步把新结点与其他剩余未结合的结点一起,再以上面的步骤进行处理,反复进行,直到全部结点都结合完毕、形骤
58、进行处理,反复进行,直到全部结点都结合完毕、形成根结点为止。成根结点为止。 0.05 画哈夫曼树的一个基本步骤画哈夫曼树的一个基本步骤 0.02 0.03 7575/90/902.3 指令系统的设计与优化操作码优化的程度可以用信息熵来衡量。 q表示用二进制编码表示表示用二进制编码表示n个码点时,理论上的最短个码点时,理论上的最短平均编码长度平均编码长度 。 例例2.1 假设某模型机有假设某模型机有7条指令,这些指令的使用频度如表左条指令,这些指令的使用频度如表左边所示。边所示。 (1) (1) 计算这计算这7 7条指令的操作码编码的最短平均码长;条指令的操作码编码的最短平均码长; (2) (2
59、) 画出哈夫曼树,写出这画出哈夫曼树,写出这7 7条指令的哈夫曼编码,并计算该条指令的哈夫曼编码,并计算该编码的平均码长和信息冗余量。编码的平均码长和信息冗余量。niiippH12log7676/90/902.3 指令系统的设计与优化指令指令 频度频度pi 操作码使用操作码使用哈夫曼编码哈夫曼编码 操作码操作码长度长度li 利用哈夫曼概念利用哈夫曼概念的扩展操作码的扩展操作码 操作码操作码长度长度li I1 0.40 0 1 0 0 2 I2 0.30 1 0 2 0 1 2 I3 0.15 1 1 0 3 1 0 2 I4 0.05 1 1 1 0 0 5 1 1 0 0 4I5 0.04
60、1 1 1 0 1 5 1 1 0 1 4I6 0.03 1 1 1 1 0 5 1 1 1 0 4I70.03 1 1 1 1 1 5 1 1 1 1 47777/90/902.3 指令系统的设计与优化 解解 (1)(2)其哈夫曼树如图所示,该树的每个叶结点分别对应于一条指)其哈夫曼树如图所示,该树的每个叶结点分别对应于一条指令。在该树中,对每个结点向下的两个分支,分别用二进制令。在该树中,对每个结点向下的两个分支,分别用二进制“1”和和“0”来表示。来表示。 从该哈夫曼树可以很容易地写出哈夫曼编码。从该哈夫曼树可以很容易地写出哈夫曼编码。 具体方法具体方法:对于任意一条指令:对于任意一条指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国婴儿床市场前景规模及发展趋势分析报告
- 2024年港口起重机采购与租赁合同3篇
- 2024年塔吊租赁合同及操作培训服务3篇
- 茂名职业技术学院《刑法2》2023-2024学年第一学期期末试卷
- 2024年度物业服务合同履行监督与违约责任追究研究3篇
- 2024年标准离婚合同样本图片直接下载版B版
- 2024年版测绘服务委托书2篇
- 2024年歌手经纪公司合约3篇
- 2025年兰州货运从业资格证考试试题和答案
- 2025公对公借款合同范本
- 《物流系统规划与设计》课程教学大纲
- 护理质控分析整改措施(共5篇)
- 金属矿山安全教育课件
- 托盘演示教学课件
- 中华农耕文化及现实意义
- DB32T 4353-2022 房屋建筑和市政基础设施工程档案资料管理规程
- DBJ61-T 112-2021 高延性混凝土应用技术规程-(高清版)
- 2023年高考数学求定义域专题练习(附答案)
- 农产品品牌与营销课件
- 苏科版一年级心理健康教育第17节《生命更美好》教案(定稿)
- 车辆二级维护检测单参考模板范本
评论
0/150
提交评论