计算机体系结构第2章课件.ppt
《计算机体系结构第2章课件.ppt》由会员分享,可在线阅读,更多相关《计算机体系结构第2章课件.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第2章 计算机指令集结构张晨曦张晨曦 刘依刘依www.GotoS2.1指令集结构的分类2.2寻址方式2.3指令集结构的功能设计2.4操作数的类型和大小2.5指令格式的设计2.6MIPS指令集结构1.区别不同指令集结构的主要因素 CPU中用来存储操作数的存储单元的类型2.CPU中用来存储操作数的存储单元的主要类型堆栈累加器通用寄存器组3.将指令集结构分为三种类型2.1 指令集结构的分类2.1 指令集结构的分类堆栈结构累加器结构通用寄存器结构根据操作数的来源不同,又可进一步分为根据操作数的来源不同,又可进一步分为:q寄存器寄存器-存储器结构存储器结构(RMRM结构)结构)(操作数可以来自存储器操作
2、数可以来自存储器)q寄存器寄存器-寄存器结构寄存器结构(RRRR结构)结构)(所有操作数都是来自通用寄存器组所有操作数都是来自通用寄存器组)也称为也称为load-storeload-store结构,这个名称强调:只有结构,这个名称强调:只有loadload指令和指令和storestore指令能够访问存储器。指令能够访问存储器。2.1 指令集结构的分类4.对于不同类型的指令集结构,操作数的位置、个数以及操作数的给出方式(显式或隐式)也会不同。显式给出:用指令字中的操作数字段给出隐式给出:使用事先约定好的存储单元 5.4种指令集结构的操作数的位置以及结果的去向灰色块:操作数黑色块:结果灰色块:操作
3、数黑色块:结果TOSTOS(Top Of StackTop Of Stack):栈顶):栈顶 2.1 指令集结构的分类 例:表达式表达式C=A+BC=A+B在在4 4种类型指令集结构上的代码。种类型指令集结构上的代码。假设:假设:A A、B B、C C均保存在存储器单元中,并且不能均保存在存储器单元中,并且不能 破坏破坏A A和和B B的值。的值。堆 栈 累加器寄存器(RM型)寄存器(RR型)push Aload Aload R1,Aload R1,Apush Badd Badd R1,Bload R2,Baddstore Cstore R1,Cadd R3,R1,R2pop Cstore R
4、3,C2.1 指令集结构的分类6.通用寄存器结构现代指令集结构的主流在灵活性和提高性能方面有明显的优势q跟其他的跟其他的CPUCPU内部存储单元一样,寄存器的访问内部存储单元一样,寄存器的访问 速度比存储器快。速度比存储器快。q对编译器而言,能更加容易、有效地分配和使用对编译器而言,能更加容易、有效地分配和使用 寄存器。寄存器。q寄存器可以用来存放变量。寄存器可以用来存放变量。(1 1)减少对存储器的访问,加快程序的执行速度;减少对存储器的访问,加快程序的执行速度;(因为寄存器比存储器快)(因为寄存器比存储器快)2.1 指令集结构的分类(2 2)用更少的地址位(相对于存储器地址来说)来对寄用更
5、少的地址位(相对于存储器地址来说)来对寄 存器进行寻址,从而有效地减少程序的目标代码的存器进行寻址,从而有效地减少程序的目标代码的 大小。大小。7.根据ALU指令的操作数的两个特征对通用寄存器型指 令集结构进一步细分ALU指令的操作数个数q3 3个操作数的指令个操作数的指令 两个源操作数、一个目的操作数两个源操作数、一个目的操作数q2 2个操作数的指令个操作数的指令其中一个操作数既作为源操作数,又作为目的操作数。其中一个操作数既作为源操作数,又作为目的操作数。2.1 指令集结构的分类ALU指令中存储器操作数的个数可以是可以是0 0中的某一个,为中的某一个,为0 0表示没有存储器操作数。表示没有
6、存储器操作数。ALU指令中存储器操作数的个数 ALU指令中操作数的最多个数 结构类型 机器实例 03RR MIPS,SPARC,Alpha,PowerPC,ARM12RM IBM 360/370,Intel 80 x86,Motorola 680003RM IBM 360/370 22MM VAX 33MM VAX 8.ALU指令中操作数个数和存储器操作数个数的典型组合2.1 指令集结构的分类9.通用寄存器型指令集结构进一步细分为3种类型寄存器-寄存器型(RR型)寄存器-存储器型(RM型)存储器-存储器型(MM型)10.3种通用寄存器型指令集结构的优缺点11.表中(m,n)表示指令的n个操作数
7、中有m个存12.储器操作数。指令集结构类型指令集结构类型 优优 点点 缺缺 点点 寄存器寄存器型寄存器寄存器型 (0 0,3 3)指令字长固定,指令结构指令字长固定,指令结构简洁,是一种简单的代码简洁,是一种简单的代码生成模型,各种指令的执生成模型,各种指令的执行时钟周期数相近行时钟周期数相近 与指令中含存储器操作数的指令集结与指令中含存储器操作数的指令集结构相比,指令条数多,目标代码不够构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大紧凑,因而程序占用的空间比较大 寄存器存储器型寄存器存储器型 (1 1,2 2)可以在可以在ALUALU指令中直接对存指令中直接对存储器操作数进行
8、引用,而储器操作数进行引用,而不必先用不必先用loadload指令进行加指令进行加载。容易对指令进行编码,载。容易对指令进行编码,目标代码比较紧凑目标代码比较紧凑 指令中的两个操作数不对称。在一条指令中的两个操作数不对称。在一条指令中同时对寄存器操作数和存储器指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所操作数进行编码,有可能限制指令所能够表示的寄存器个数。指令的执行能够表示的寄存器个数。指令的执行时钟周期数因操作数的来源(寄存器时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较大或存储器)不同而差别比较大 存储器存储器型存储器存储器型 (2 2,2 2)或(或(3 3
9、,3 3)目标代码最紧凑,不需要目标代码最紧凑,不需要设置寄存器来保存变量设置寄存器来保存变量 指令字长变化很大,特别是指令字长变化很大,特别是3 3操作数操作数指令。而且每条指令完成的工作也差指令。而且每条指令完成的工作也差别很大。对存储器的频繁访问会使存别很大。对存储器的频繁访问会使存储器成为瓶颈。这种类型的指令集结储器成为瓶颈。这种类型的指令集结构现在已不用了构现在已不用了1.一种指令集结构如何确定所要访问的数据的地址?2.当前的指令集结构中所采用的一些操作数寻址方式:赋值操作Mem:存储器Regs:寄存器组方括号:表示内容qMem Mem:存储器的内容:存储器的内容qRegs Regs
10、:寄存器的内容:寄存器的内容qMemRegsR1MemRegsR1:以寄存器:以寄存器R1R1中的内容作为地址的中的内容作为地址的 存储器单元中的内容存储器单元中的内容2.2 寻址方式寻址方式指令实例含 义寄存器寻址Add R4,R3RegsR4RegsR4RegsR3立即值寻址Add R4,#3RegsR4RegsR43偏移寻址Add R4,100(R1)RegsR4RegsR4Mem100+RegsR1寄存器间接寻址Add R4,(R1)RegsR4RegsR4MemRegsR1索引寻址Add R3,(R1+R2)RegsR3RegsR3MemRegsR1+RegsR2直接寻址或绝对寻址A
11、dd R1,(1001)RegsR1RegsR1Mem1001存储器间接寻址Add R1,(R3)RegsR1RegsR1MemMemRegsR3自增寻址Add R1,(R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自减寻址Add R1,-(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2缩放寻址AddR1,100(R2)R3RegsR1RegsR1Mem100RegsR2RegsR3*d2.2 寻址方式 采用多种寻址方式可以显著地减少程序的指令条 数,但可能增加计算机的实现复杂度以及指令的CPI。2.2 寻址方式立即数寻址方式和偏移寻
12、址方式的使用频度最高。3.各种寻址方式的使用情况统计结果在在VAXVAX机器上运行机器上运行gccgcc、SpiceSpice和和Tex Tex 基准程序基准程序2.2 寻址方式4.偏移量的取值范围在在load-storeload-store结构的机器(结构的机器(AlphaAlpha)上运行上运行SPEC CPU2000SPEC CPU2000基准程序基准程序2.2 寻址方式从该图可以看出:程序所使用的偏移量大小分布十分广泛 主要是因为在存储器中所保存的数据并不是十分主要是因为在存储器中所保存的数据并不是十分集中,需要使用不同的偏移量才能对其进行访问。集中,需要使用不同的偏移量才能对其进行访
13、问。较小的偏移量和较大的偏移量均占有相当大 的比例 2.2 寻址方式5.立即数寻址方式立即数寻址方式的使用频度 指令类型 使用频度 整型平均 浮点平均 load指令 23%22%ALU指令 25%19%所有指令 21%16%大约1/4的load指令和ALU指令采用了立即数寻址。2.2 寻址方式立即数的取值范围 2.2 寻址方式q最常用的是较小的立即数;最常用的是较小的立即数;q有时也会用到较大的立即数(主要是用于地址计算)。有时也会用到较大的立即数(主要是用于地址计算)。q在指令集结构设计中,至少要将立即数的大小设置在指令集结构设计中,至少要将立即数的大小设置 为为8 81616位。位。q在在
14、VAXVAX机(支持机(支持3232位立即数)上做过类似的统计,结果位立即数)上做过类似的统计,结果 表明表明20%20%25%25%的立即数超过的立即数超过1616位。位。1.指令集结构的功能设计确定软、硬件功能分配,即确定哪些基本功能应该由硬件实现,哪些功能由软件实现比较合适。2.在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性硬件实现的特点 速度快、成本高、灵活性差速度快、成本高、灵活性差软件实现的特点 速度慢、价格便宜、灵活性好速度慢、价格便宜、灵活性好2.3 指令集结构的功能设计2.3 指令集结构的功能设计3.对指令集的基本要求 完整性、规整性、高效率、兼容性
15、完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够用。q要求指令集功能齐全、使用方便要求指令集功能齐全、使用方便q下表为许多指令集结构都包含的一些指令类型下表为许多指令集结构都包含的一些指令类型 n前前4 4类类属于通用计算机系统的基本指令属于通用计算机系统的基本指令n对于最后对于最后4 4种类型的操作,不同指令集结构的支种类型的操作,不同指令集结构的支 持大不相同持大不相同。2.3 指令集结构的功能设计操作类型 实 例 算术和逻辑运算 算术运算和逻辑操作:加,减,乘,除,与,或等 数据传输 load,store控制 分支,跳转,过程调用和返回,自陷
16、等 系统 操作系统调用,虚拟存储器管理等 浮点 浮点操作:加,减,乘,除,比较等 十进制 十进制加,十进制乘,十进制到字符的转换等 字符串 字符串移动,字符串比较,字符串搜索等 图形 像素操作,压缩/解压操作等 2.3 指令集结构的功能设计规整性:主要包括对称性和均匀性。q对称性:对称性:所有与指令集有关的存储单元的使用、所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。操作码的设置等都是对称的。例如:例如:在存储单元的使用上,所有通用寄存器都要同等对在存储单元的使用上,所有通用寄存器都要同等对 待。在操作码的设置上,如果设置了待。在操作码的设置上,如果设置了A-BA-B的指的指 令
17、,就应该也设置令,就应该也设置B-AB-A的指令。的指令。q均匀性:均匀性:指对于各种不同的操作数类型、字长、操作指对于各种不同的操作数类型、字长、操作 种类和数据存储单元,指令的设置都要同等对待。种类和数据存储单元,指令的设置都要同等对待。例如:例如:如果某机器有如果某机器有5 5种数据表示,种数据表示,4 4种字长,两种存储单种字长,两种存储单 元,则要设置元,则要设置542=40542=40种同一操作的指令。种同一操作的指令。2.3 指令集结构的功能设计高效率:指指令的执行速度快、使用频度高。4.在设计指令集结构时,有两种截然不同的设计策略。(产生了两类不同的计算机系统)CISC(复杂指
18、令集计算机)q增强指令功能,把越来越多的功能交由硬件来实增强指令功能,把越来越多的功能交由硬件来实 现,并且指令的数量也是越来越多。现,并且指令的数量也是越来越多。RISC(精简指令集计算机)q尽可能地把指令集简化,不仅指令的条数少,而且尽可能地把指令集简化,不仅指令的条数少,而且 指令的功能也比较简单。指令的功能也比较简单。2.3 指令集结构的功能设计1.CISC结构追求的目标 强化指令功能,减少程序的指令条数,以达到提高性能的目的。2.增强指令功能主要是从以下几个方面着手:面向目标程序增强指令功能 q增强运算型指令的功能增强运算型指令的功能q增强数据传送指令的功能增强数据传送指令的功能q增
19、强程序控制指令的功能增强程序控制指令的功能 丰富的程序控制指令为编程提供了多种选择。丰富的程序控制指令为编程提供了多种选择。2.3.1 CISC指令集结构的功能设计2.3 指令集结构的功能设计例如:循环在程序中占有相当大的 比例,所以在指令上提供专 门的支持。循环控制部分通常用3条指令完成:q一条加法指令一条加法指令q一条比较指令一条比较指令q一条分支指令一条分支指令设置循环控制指令,用一条指令完成上述3条指令的功能。一般循环程序的结构一般循环程序的结构2.3 指令集结构的功能设计面向高级语言的优化实现来改进指令集 (缩小高级语言与机器语言的语义差距)高级语言与一般的机器语言的语义差距非常大,
20、为高级语言程序的编译带来了一些问题。(1 1)编译器本身比较复杂。)编译器本身比较复杂。(2 2)编译生成)编译生成的目标代码比较难以达到很好的优化。的目标代码比较难以达到很好的优化。2.3 指令集结构的功能设计2.3 指令集结构的功能设计q增强对高级语言和编译器的支持增强对高级语言和编译器的支持 p对源程序中各种高级语言语句的使用频度进行对源程序中各种高级语言语句的使用频度进行 统计与分析,对使用频度高、执行时间长的语句,统计与分析,对使用频度高、执行时间长的语句,增强有关指令的功能,加快这些指令的执行速度,增强有关指令的功能,加快这些指令的执行速度,或者增加专门的指令,可以达到减少目标程序
21、的或者增加专门的指令,可以达到减少目标程序的执行时间和减少目标程序长度的目的。执行时间和减少目标程序长度的目的。p增强系统结构的规整性,减少系统结构中的各种增强系统结构的规整性,减少系统结构中的各种例外情况。例外情况。(面向高级语言的计算机(面向高级语言的计算机)2.3 指令集结构的功能设计q高级语言计算机高级语言计算机 间接执行高级语言机器间接执行高级语言机器 高级语言成为机器的汇编语言,这时高级语言和机高级语言成为机器的汇编语言,这时高级语言和机器语言是一一对应的。用汇编的方法把高级语言源程序器语言是一一对应的。用汇编的方法把高级语言源程序翻译成机器语言程序。翻译成机器语言程序。直接执行高
22、级语言的机器直接执行高级语言的机器 直接把高级语言作为机器语言,直接由固件直接把高级语言作为机器语言,直接由固件/硬件对硬件对高级语言源程序的语句逐条进行解释执行。这时既不用高级语言源程序的语句逐条进行解释执行。这时既不用编译,也不用汇编。编译,也不用汇编。2.3 指令集结构的功能设计面向操作系统的优化实现改进指令集 q操作系统和计算机系统结构是紧密联系的,操作系操作系统和计算机系统结构是紧密联系的,操作系 统的实现在很大程度上取决于系统结构的支持。统的实现在很大程度上取决于系统结构的支持。q指令集对操作系统的支持主要有:指令集对操作系统的支持主要有:p处理机工作状态和访问方式的切换。处理机工
23、作状态和访问方式的切换。p进程的管理和切换。进程的管理和切换。p存储管理和信息保护。存储管理和信息保护。p进程的同步与互斥,信号灯的管理等。进程的同步与互斥,信号灯的管理等。支持操作系统的有些指令属于特权指令,一般用户支持操作系统的有些指令属于特权指令,一般用户程序是不能使用的。程序是不能使用的。2.3 指令集结构的功能设计1.CISC指令集结构存在的问题 (1979年开始,Patterson等人的研究)各种指令的使用频度相差悬殊q据统计:只有据统计:只有2020的指令使用频度比较高,占运的指令使用频度比较高,占运行时间的行时间的8080,而其余,而其余8080的指令只在的指令只在2020的运
24、行时的运行时间内才会用到。间内才会用到。q使用频度高的指令也是最简单的指令。使用频度高的指令也是最简单的指令。2.3.2 RISC指令集结构的功能设计执行频度排序 80 x86指令 指令执行频度(占执行指令总数的百分比)1load 22%2条件分支 20%3比较 16%4store 12%5加 8%6与 6%7减 5%8寄存器-寄存器间数据移动 4%9调用子程序 1%10返回 1%合 计 95%Intel 80 x86最常用的10条指令2.3 指令集结构的功能设计指令集庞大,指令条数很多,许多指令的功能又 很复杂,使得控制器硬件非常复杂。导致的问题:q占用了大量的芯片面积(如占用占用了大量的芯
25、片面积(如占用CPUCPU芯片总面积的芯片总面积的一半以上),给一半以上),给VLSIVLSI设计造成很大的困难;设计造成很大的困难;q增加了研制时间和成本,容易造成设计错误。增加了研制时间和成本,容易造成设计错误。许多指令由于操作繁杂,其CPI值比较大,执行 速度慢。采用这些复杂指令有可能使整个程序的 执行时间反而增加。由于指令功能复杂,规整性不好,不利于采用流 水技术来提高性能。2.3 指令集结构的功能设计2.设计RISC机器遵循的原则 指令条数少而简单。只选取使用频度很高的指令,在此基础上补充一些最有用的指令。采用简单而又统一的指令格式,并减少寻址方式;指令字长都为32位或64位。指令的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机体系结构 课件
限制150内