计算机系统结构:第二章 计算机指令集结构设计2010_第1页
计算机系统结构:第二章 计算机指令集结构设计2010_第2页
计算机系统结构:第二章 计算机指令集结构设计2010_第3页
计算机系统结构:第二章 计算机指令集结构设计2010_第4页
计算机系统结构:第二章 计算机指令集结构设计2010_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 计算机指令集结构设计 主要介绍计算机指令集结构的分类,寻址技术,计算机指令集结构的功能设计, Huffman编码法。 重点是CISC计算机指令集和RISC计算机指令集的设计思想、设计原则、结构特点、改进思路和改进方法等。2.1指令集结构的分类2.1.1指令集结构的分类 指令集是软硬件功能分配最主要的界面指令集结构的分类分类所考虑的因素如下:(1)在CPU中操作数的存储方法;(2)指令中显式表示的操作数个数;(3)操作数的寻址方式;(4)指令集所提供的操作类型;(5)操作数的类型和大小。2.1指令集结构的分类按CPU中操作数的存储方法分为:堆栈型指令集结构; 累加器型指令集结构; 通用寄

2、存器型指令集结构RM及RR。2.1指令集结构的分类CPU对操作数的不同存取方式CPU提供的暂存器ALU指令显式表示的操作数个数运算结果的目的地访问显式操作数的方法堆栈0堆栈PUSH/POP累加器1累加器LOAD/STORE累加器一组寄存器2/3寄存器或存储器LOAD/STORE寄存器或存储器2.1指令集结构的分类C=A+B在三种类型指令集结构上的实现堆栈累加器寄存器(寄存器存储器)寄存器(寄存器寄存器)PUSH ALOAD ALOAD R1,ALOAD R1,APUSH BADD BADD R1,BLOAD R2,BADDSTORE CSTORE C,R1ADD R3,R1,R2POP CST

3、ORE C,R32.1指令集结构的分类三类指令集结构的优缺点类型优点缺点堆栈型表示计算的简单模型;指令短小不能随机访问堆栈,从而很难生成有效代码;堆栈是瓶颈,很难被高效地实现累加器型减小了机器的内部状态;指令短小由于累加器是唯一的暂存器,这种机器的存储器通信开销很大寄存器型是代码生成的最一般模型所有操作数均需命名,且要显示表示,因而指令比较长2.1指令集结构的分类2.1.2 通用寄存器型指令集结构分类利用寄存器的优势:(1)在表达式求值方面,具有更大的灵活性;(2)利用寄存器存放变量,不但能够减少存储器的通信量,加快程序的执行速度,而且和存储器相比;(3)还可以用更少的地址位来寻址寄存器,从而

4、能够有效改进程序的目标代码大小。2.1指令集的结构分类ALU指令中操作数个数和存储器操作数个数ALU指令中存储器操作数个数ALU指令中操作数的最大个数机器实例02IBM RT-PC3SPARC,MIPS12PDP-10,IBM 360,Motorola 680003IBM 360的部分指令22PDP-11,部分IBM 360指令333VAX2.2 寻址技术通用寄存器型指令集结构可分为三类:寄存器寄存器型(R-R);寄存器存储器型(R-M);存储器存储器型(M-M)。寻址方式指令实例含义寄存器寻址ADD R4,R3RegR4 RegR4 + RegR3 立即值寻址ADD R4,#3RegR4 R

5、egR4+3偏移寻址ADD R4,100(R1)RegR4 RegR4+Mem100+RegR1寄存器间接寻址ADD R4,(R1)RegR4 RegR4+MemRegR1索引寻址ADD R3,(R1+R2)RegR3 RegR3+MemRegR1+RegR2直接寻址ADD R1,(1001)RegR1 RegR1+Mem1001存储器间接寻址ADD R1,(R3)RegR1 RegR1+MemMemRegR3自增寻址ADD R1,(R2)+RegR1 RegR1+MemRegR2RegR2 RegR2+d自减寻址ADD R1,-(R2)RegR2 RegR2-dRegR1 RegR1+Mem

6、RegR2缩放寻址ADD R1,100(R2)R3RegR1 RegR1+Mem100+RegR2+RegR3*d2.2 寻址技术2.2 寻址技术指令集结构中选择那些寻址方式?在指令集结构中采用多种寻址方式可以显著地减少程序的指令条数,但同时可能增加实现的复杂度和使用这些寻址方式的指令的执行时钟周期数(CPI)。所以应该选择使用频率比较高的寻址方式。统计表明,立即值寻址方式和偏移寻址方式的使用频率非常高。2.2 寻址技术决定指令字长度的主要因素有哪些?(1)指令集中指令的条数;(2)CPU中通用寄存器的数目;(3)所支持存储器容量的大小;(4)偏移寻址中所支持的偏移量大小;(5)立即值寻址中所

7、支持的立即值大小。统计表明75%99%的偏移量大小可用1216位表示;50%80%的立即值大小可用816位表示。2.3指令集结构的功能设计指令集结构的功能设计一种指令集结构中的指令到底要支持哪些类型的操作呢?这就是所谓的指令集结构的功能设计问题。指令集结构的功能设计的两个方向:CISC:尽量多地支持各种类型的操作,实现软件功能向硬件功能的转移。RISC:只支持使用频率比较高的操作,优化这些操作的实现以提高性能。2.3指令集结构的功能设计指令集结构中操作的分类:操作类型实例算术逻辑运算整数的算术和逻辑操作:加、减、乘、除、与、或等数据传输Load/Store控制分支、跳转、过程调用和返回、自陷等

8、系统操作系统调用、虚拟存储器管理等浮点浮点操作:加、减、乘、除等十进制十进制加、减、乘、除、十进制到字符的转换等字符串字符串移动、比较、搜索等图形像素操作、压缩、解压操作等2.3.1 CISC指令集结构的功能设计CISC计算机指令集结构的功能设计CISC计算机提高性能的途径:强化指令功能,减少程序指令的条数。增强机器指令功能的方法:1面向目标程序增强指令功能;2面向高级语言和编译程序改进指令系统;3面向操作系统的优化改进指令系统。2.3.1 CISC指令集结构的功能设计面向目标程序增强指令功能:用一条新的指令代替使用频率较高的指令串,或优化使用频率较高的指令。主要方法:(1)提高运算型指令功能

9、;(2)提高传送指令功能;(3)增加程序控制指令功能。2.3.1 CISC指令集结构的功能设计面向高级语言和编译程序改进指令系统: 编译程序形成的目标程序比直接用机器语言编写的程序要长; 编译程序运行时间在总的运行时间中占较大的比例; 编译通过,目标程序运行时没通过时,查找错误很困难。2.3.1 CISC指令集结构的功能设计改进方法:(1)增加对高级语言和编译系统支持的指令功能。(a)对使用频度高的高级语言语句,设置专门的机器指令或增加相应指令的功能,以提高编译速度和执行速度;(b)增加指令结构的规整性来改进指令系统。(2)高级语言计算机指令系统。2.3.1 CISC指令集结构的功能设计面向操

10、作系统的优化改进指令系统: 对中断处理、进程管理、存储管理和保护、系统工作状态的建立和切换等提供支持。通过设置支持系统工作状态和访问方式转换的指令、支持进程切换的指令、支持进程同步和互斥的指令等达到优化实现操作系统的目的。2.3.1 CISC指令集结构的功能设计CISC结构的缺点:(1)指令的使用频率相差悬殊;(2)体系结构复杂,增加研制时间和成本,容易出现设计错误;(3)VLSI设计困难,不利于单片集成;(4)复杂指令运行速度慢;(5)指令功能不均衡,不利于流水。2.3.2 RISC指令集结构的功能设计进行RISC计算机指令集结构功能设计时必须遵循如下原则:(1)选择使用频率最高的指令,并补

11、充一些最有用的指令;(2)每条指令的功能应尽可能简单,并在一个机器周期内完成;(3)所有指令长度均相同;(4)只有Load和Store才访问存储器,其他指令操作均在寄存器之间进行;(5)以简单有效方式支持高级语言。2.3.2 RISC指令集结构的功能设计(补)RISC的重叠寄存器窗口技术(1)在处理器中设置数量比较大的寄存器堆,并把它们划分成很多个窗口。(2)其中一个窗口为公共窗口,用来存放全局变量。(3)每个过程使用三个相邻的窗口和公共窗口。(4)本过程所使用的三个窗口中,有一个高区窗口,一个本区窗口和一个低区窗口。(5)被调用过程的高区窗口与调用过程的低区窗口重叠,用于调用过程向被调用过程

12、传递参数,或用于被调用过程向调用过程传送结果。故称作为重叠寄存器窗口。2.3.2 RISC指令集结构的功能设计(补)RISC 的重叠寄存器窗口R137R132R131R122R121R116R9R0R115R106R105R100A过程的窗口B过程的窗口高区高区本区本区低区低区重叠窗口,用于传递参数和结果全局变量全局变量2.3.3 控制指令控制指令在本书中,当控制指令为无条件改变控制流时,成为“跳转”;当控制指令有条件改变控制流时,成为“分支”。有四类控制指令:条件分支、跳转、过程调用、过程返回,改变控制流的大部分指令是条件分支指令。2.3.2 控制指令每次CALL/RETURN的开销计算机执

13、行时间(us)执行指令的条数访问存储器的次数VAX-1126519PDP-11221915MC 6800019912RISC 260.22.3.3 控制指令如何表示分支条件?表示分支条件的技术测试分支条件的方法优点缺点条件码(CC)在程序的控制下,由ALU操作设置特殊的位可以自由设置分支条件因为必须从一条指令将分支条件信息传送到分支指令,所以CC是额外的状态,条件码限制了指令顺序条件寄存器根据比较结果测试条件寄存器简单占用了一个寄存器比较且分支比较操作是分支指令的一部分,通常这种比较是受一定限制的一条指令完成了两条指令的功能分支指令中的操作增多2.3.3 控制指令如何指出目标地址? 除返回指令

14、外,都在控制指令中给出目标地址。一般方法是在指令中提供一个和程序计数器PC的相加的偏移量。这种寻址方式称为PC相对寻址。使用PC相对寻址的好处:(1)控制转移的目标一般和当前指令比较近,可以缩短控制指令中目标地址字段的长度;(2)使用PC相对寻址,可以使代码在执行时与它被载入的地址无关。如何确定控制指令中目标地址字段的长度?根据控制指令中偏移量大小的分布情况确定。2.3.3 控制指令对于过程调用和返回指令来说,如何保存机器状态?机器状态:各个寄存器的值和返回地址,一般保存在内存的特定区域,例如堆栈。指令集结构是否提供保存指令?保存寄存器内容的方法有两种:“调用者保存”策略;“被调用者保存”策略

15、。2.4 操作数类型、表示和大小操作数类型、表示和大小数据类型是面向应用、面向软件系统所处理的各种数据结构;数据表示是硬件结构能够识别、指令系统可以直接调用的数据结构。数据表示所表征的那些操作数类型是应用软件和系统软件所处理的操作数类型的子集。2.4 操作数类型、表示和大小对指令所处理的操作数类型的表示方法有两种:(1)操作数的类型由指令操作码的编码指定。这是最常见的方法;(2)数据可以附上由硬件解释的标记,由这些标记指定操作数的类型,从而选择适当的运算。一般的操作数类型大小选择主要有:字节、半字、单字和双字。2.5 指令集格式的设计指令集格式的设计指令集中的每条指令由操作码和地址码组成,指令

16、集格式的设计就是要确定操作码字段和地址码字段的大小及其组合形式,以及各种寻址方式的编码方法。格式优化设计的目标有两个:(1)节省程序的存储空间;(2)指令格式要尽量规整,以减少硬件译码的复杂度。2.5 指令集格式的设计在指令集格式的设计中,必须在以下三个方面折衷:(1)尽可能增加寄存器数目和寻址方式类型;(2)充分考虑寄存器字段和寻址方式字段对指令平均字长的影响,以及它们对目标代码大小的影响;(3)在具体实现中能够容易地处理所设计的指令集格式。2.5 .1 寻址方式的表示方法寻址方式的表示方法(1)将寻址方式编码于操作码中,由操作码在描述指令操作的同时,也描述了相应操作的寻址方式;(2)为每个

17、操作数设置一个地址描述符,由该地址描述符表示相应操作数的寻址方式。2.5 .2 指令集格式的选择指令集格式的选择有三种指令集编码格式:(1)变长编码格式;当有多种寻址方式和操作类型时,常采用这种格式。(2)固定长度编码格式;将操作类型和寻址方式组合编码在操作码中,当寻址方式和操作类型非常少时,常采用这种格式。(3)混合型编码格式,其目的是提供一定类型的指令字长,期望能够兼顾降低目标代码长度和降低译码复杂度两个目标。补充: Huffman编码法操作码的优化表示操作码的表示方法通常有三种:固定长度操作码,Huffman编码法,扩展编码法。Huffman压缩的思想高概率指令的操作码用较短的位数表示,

18、低概率指令的操作码用较长的位数表示,就可以使得指令操作码的平均长度较短。所以指令操作码的优化的前提是知道各条指令在程序中出现的概率。补充: Huffman编码法操作码的信息源熵实例:I1:0.40; I2:0.30; I3:0.15; I4:0.05; I5:0.04; I6:0.03 I7:0.03信息源熵 H=0.401.32 +0.301.74+0.152.74+0.054.32 +0.044.64+0.035.06+0.035.06 =2.17补充: Huffman编码法操作码表示的信息冗余量采用固定长度操作码时信息冗余量=(3-2.17)/(2.17)=0.28补充: Huffman

19、编码法Huffman编码法Huffman树的生成方法:1)将所有指令的使用频度由小到大排序,每个频度作为一个节点:2)选择其中频度最小的两个节点,将它们合并成一个新的节点,新节点的频度是这两个节点频度的和;3)将新节点按频度大小插入未合并的节点中;4)再从未合并的节点中选择两个频度最小节点,将它们合并成一个新的节点;5)如此继续进行,直至全部节点合并完成形成根节点;6)之后,从根节点开始,向下延伸,分出两个分支,分别用一位代码的“0”和“1”来表示。补充: Huffman编码法I70.03I60.03I50.04I40.05I30.15I20.30I10.400.090.060.150.300

20、.601.00011010001101从根节点开始,沿线到达各指令所经过的代码序列就构成该指令的操作码。短码不可能是长码的前缀。I1:0I2:10I3:110I4:11100I5:11101I6:11110I7:11111补充: Huffman编码法Huffman编码指令平局长度L=0.401+0.302+0.153+0.055 +0.045+0.035+0.035 =2.20信息冗余量为(2.20-2.17)2.201.36%无法达到理论值2.17,是因为操作码必须用整数位表示。补充: Huffman编码法扩展Huffman编码介于固定长度操作码编码和Huffman编码之间的一种编码方式,操

21、作码长度虽不是定长的,但是只有几种码长,但仍然是概率高的指令用短操作码表示,概率低的指令用短操作码表示。仍然符合Huffman压缩的思想。补充: Huffman编码法I1:00I2:01I3:10I4:1100I5:1101I6:1110I7:1111扩展Huffman编码扩展Huffman编码指令平局长度L=0.402+0.302+0.152+0.054+0.044+0.034+0.034 =2.30信息冗余量为(2.30-2.17)2.305.65%补充:B-1700计算机操作码编码方式比较 B-1700计算机操作码编码方式比较编码方式整个操作系统所用指令总位数改进的百分比8位定长编码30

22、124804-6-10扩展编码18496639%全Huffman编码17234643%补充:地址码的优化表示地址码的优化表示 与地址码域长度相关的主要因素:地址码的个数、操作数所存放的存储设备(通用寄存器、主存储器、堆栈等)、存储设备的寻址空间大小、编址方式、寻址方式等。补充:地址码的优化表示地址码个数的选择(1)三地址指令:op Ad,As1,As2(2)二地址指令:op Ad,As(3)一地址指令:op A(4)零地址指令:op补充:地址码的优化表示表达式x=(a*b+c-d)/(e+f)的不同实现三地址二地址R型二地址一地址零地址MUL X,A,BADD X,X,CSUB X,X,DADD Y,E,FDIV X,X,YMOVE X,AMUL X,BADD X,CSUB X,DMOVE Y,EADD Y,FDIV X,YMOVE R1,AMUL R1,BADD R1,CSUB R1,DMOVE R2,EADD R2,FDIV R1,R2MOVE X,R1LOAD EADD FSTORE XLOAD AM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论