大学计算机体系结构课件.pptx
《大学计算机体系结构课件.pptx》由会员分享,可在线阅读,更多相关《大学计算机体系结构课件.pptx(98页珍藏版)》请在三一办公上搜索。
1、第2章 指令集结构设计,2.1 指令集结构分类2.2 寻址方式2.3指令格式2.4 操作数的类型、表示和大小2.5指令集功能设计2.6 编译技术与计算机体系结构2.7 DLX指令集结构,http:/,指令集设计,指令集结构:我们必须说明那些东西?,指令格式或编码方式。即如何编码?操作数和操作结果的存放位置存放位置?多少个显式操作数?存储器操作数如何定位?哪些操作数可以或不可以放到存储器中?数据类型和大小支持哪些操作下一条指令地址jumps,conditions,branchesfetch-decode-execute is implicit!,2.1 ISA 的基本分类,累加器型(Accumu
2、lator)(1 register):1 address add Aacc acc+memA1+x addressaddx Aacc acc+memA+x堆栈型(Stack):0 address addtos tos+next通用寄存器型(General Purpose Register):2 address add A BEAA EAA+EAB3 address add A B CEAA EAB+EACLoad/Store:3 addressadd Ra Rb RcRa Rb+Rcload Ra Rb Ra memRbstore Ra RbmemRb Ra,比较指令条数,Code seque
3、nce for(C=A+B)for four classes of instruction sets:,Stack,Accumulator,Push A,Load A,Load R1,A,Push B,Add B,Load R2,B,Add,Store C,Add R3,R1,R2,Pop C,Store C,R3,1975以后至今 几乎所有的机器都用通用寄存器结构,原因,寄存器比存储器快,对编译器而言寄存器更容易使用,-,例如(A*B)(C*D)(E*F)其中的乘法操作可以以任意序计算,但堆栈型 结构不行,寄存器可以存放变量,-,减少访存量,提高程序效率,-,代码紧凑,通用寄存器型占主导地位
4、,通用寄存器的分类,分类原则:ALU指令到底是两地址指令还是三地址指令ALU指令中有多少个操作数可以用存储器寻址,即有多少个存储器操作数,常见的三种通用寄存器型指令集结构的优缺点,2.2 寻址技术,1980年以来几乎所有机器的存储器都是按字节编址的ISA设计要关注两个问题:8bits字节,16bits-半字,32bits 字,64bits 双字如何读32位字,两种方案每次一个字节,四次完成每次一个字,一次完成问题:(1)如何将字节地址映射到字地址(2)一个字是否可以存放在任何字节边界上即尾端(Endian)和对齐问题,尾端问题,little endian,big endian,在一个字内部的字
5、节顺序问题,如地址xxx00指定了一个字(int),存储器中从xxx00处连续存放ffff0000,则有两种方式:Little endian 方式下xxx00位置是字的最低字节,整数值为0000ffff,Intel 80 x86,DEC Vax,DEC Alpha(Windows NT)Big endian 方式下xxx00位置是字的最高字节,整数值为ffff0000,IBM 360/370,Motorola 68k,MIPS,Sparc,HP PA,对齐问题,对一个s字节的对象访问,地址为A,如果A mod s=0 那么它就是边界对齐的。边界对齐的原因是存储器本身读写的要求,存储器本身读写通
6、常就是边界对齐的,对于不是边界对齐的访问可能要导致存储器的两次访问,然后再拼接出所需要的数。,Addressing mode,Example,Meaning,Register,Add R4,R3,R4,R4+R3,Immediate,Add R4,#3,R4,R4+3,Displacement,Add R4,100(R1),R4,R4+Mem100+R1,Register indirect,Add R4,(R1),R4,R4+MemR1,Indexed/Base,Add R3,(R1+R2),R3,R3+MemR1+R2,Direct or absolute,Add R1,(1001),R1,
7、R1+Mem1001,Memory indirect,Add R1,(R3),R1,R1+MemMemR3,Post-increment,Add R1,(R2)+,R1,R1+MemR2;R2,R2+d,Pre-decrement,Add R1,(R2),R2,R2d;R1,R1+MemR2,Scaled,Add R1,100(R2)R3,R1,R1+Mem100+R2+R3*d,寻址方式,各种寻址方式的使用情况?(忽略寄存器直接寻址),3 programs measured on machine with all address modes(VAX)-Displacement:42%avg,
8、32%to 55%75%-Immediate:33%avg,17%to 43%85%-Register deferred(indirect):13%avg,3%to 24%-Scaled:7%avg,0%to 16%-Memory indirect:3%avg,1%to 6%-Misc:2%avg,0%to 3%75%displacement&immediate85%displacement,immediate®ister indirect,偏移量字段大小的使用情况,Address Bits,立即数大小?,用8位可满足50%to 60%需求 用16位可满足75%to 80%需求,寻址方式
9、小结,重要的寻址方式:偏移寻址方式,立即数寻址方式,寄存器寻址方式 偏移字段的大小应该在 12 to 16 bits 立即数字段的大小应该在 8 to 16 bits,2.3 指令格式,指令格式选择策略,如果代码长度最重要,那么使用变长指令格式 如果性能至关重要,使用固定长度指令 有些嵌入式机器附加可选模式,由每一应用自己选择性能还是代码量 有些机器使用边执行边解压的方式,指令格式,如果每条指令存在多个存储器操作数,或有多种寻址方式=每一操作数都要说明其寻址方式 对于Load-store型机器,每条指令有一个存储器地址,并且只有1到2种寻址方式=可以将寻址方式反映在操作码中,MIPS 寻址方式
10、/指令格式,op,rs,rt,rd,immed,Register(direct),op,rs,rt,Base+index,+,Memory,immed,op,rs,rt,Immediate,immed,op,rs,rt,PC,PC-relative,+,Memory,所有指令都是32位宽,Register Indirect?,2.4 操作数的类型、表示和大小,操作数类型和操作数表示也是软硬件的主要界面之一。操作数类型:是面向应用、面向软件系统所处理的各种数据结构。整型、浮点型、字符、字符串、向量类型等、十进制类型由操作码确定或数据附加硬件解释的标记,一般采用由操作码确定操作数的表示:硬件结构能
11、够识别,指令系统可以直接调用的结构整型:原码、反码、补码浮点:IEEE 754标准十进制:BCD码,二进制十进制表示,操作数的大小,基准测试的结论:(1)对单字、双字的数据访问具有较高的频率(2)定义操作数字段长度为64位,更具有一般性,2.5 指令集结构的功能设计,CISC计算机指令集结构的功能设计RISC计算机指令结构的功能设计控制类指令,典型操作类型(ISA到底应该支持哪些操作),数据传送类,Load(from memory)Store(to memory)memory-to-memory moveregister-to-register moveinput(from I/O devic
12、e)output(to I/O device)push,pop(to/from stack),算术运算类,integer(binary+decimal)or FPAdd,Subtract,Multiply,Divide,逻辑运算,not,and,or,set,clear,移位,shift left/right,rotate left/right,控制类(Jump/Branch),unconditional,conditional,子程序调用类,call,return,异常处理类,trap,return,同步操作类,test&set,字符串类,search,translate,图形处理(MMX)
13、,parallel subword ops(4 16bit add),ISA对操作类型的选择,需考虑的因素:速度、价格和灵活性基本要求:指令系统的完整性、规整性、高效率和兼容性完整性设计:具备基本指令种类兼容性:系列机高效率:指令执行速度快、使用频度高规整性让所有运算部件都能对称、均匀的在所有数据存储单元之间进行操作。对所有数据存储单元都能同等对待,无论是操作数或运算结果都可以无约束地存放到任意数据存储单元中当前对这一问题的处理有两种截然不同的方向CISC和RISC,CISC计算机ISA的功能设计,目标:强化指令功能,减少指令的指令条数,以提高系统性能基本优化方法1.面向目标程序的优化 面向目
14、标程序的优化是提高计算机系统性能的最直接方法,其指标主要缩短程序的长度缩短程序的执行时间优化方法对大量的目标程序机器执行情况进行统计分析,找出使用频度高,执行时间长的指令或指令串对于那些使用频度高的指令,用硬件加快其执行,对于那些使用频度高的指令串,用一条新的指令来代替它,优化目标程序的主要途径,1)增强运算型指令的功能如sin(x),Cos(x),SQRT(X),甚至多项式计算如用一条三地址指令完成P(X)=C(0)+C(1)X+C(2)X2+C(3)X3+.2)增强数据传送类指令的功能主要是指数据块传送指令R-R,R-M,M-M之间的数据块传送可有效的支持向量和矩阵运算,如IBM370R-
15、Stack之间设置数据块传送指令,能够在程序调用和程序中断时,快速保存和恢复程序现场,如 VAX-11,3)增强程序控制指令的功能在CISC中,一般均设置了多种程序控制指令,正常仅需要转移指令和子程序控制指令2.面向高级语言和编译程序改进指令系统 主要时缩小HL-ML之间的差距1)增强面向HL和Compiler支持的指令功能 在用高级语言编写的源程序中,对各种语句的使用频度和执行时间进行统计分析,对使用频度高、执行时间长的语句,增强有关指令的功能,或增加相关的专门指令,从而达到缩短目标程序长度,减少目标程序执行时间的目的,同时也缩短了编译时间,例如FORTRAN语言和COBOL语言中各种主要语
16、句的使用频度,观察结果:(1)一元赋值在其中比例最大,增强数据传送类指令功能,缩短这类指令的执行时间是对高级语言非常有力的支持,(2)其他赋值语句中,增1操作比例较大,许多机器都有专门的增1指令(3)条件转移和无条件转移占22,38.2%,因此增强转移指令的功能,增加转移指令的种类是必要的,2)高级语言计算机系统 缩小HL和ML的差别时,走到极端,就是把HL和ML合二为一,即所谓的高级语言计算机。在这种机器中,高级语言不需要经过编译,直接由机器硬件来执行。如LISP机,PROLOG机3)支持操作系统的优化实现特权指令任何一种计算机系统必须有操作系统的支撑才能工作,而OS又必须用指令系统来实现,
17、指令系统对OS的支持主要有处理器工作状态和访问方式的转换进程的管理和切换存储管理和信息保护进程同步和互斥,信号灯的管理等,RISC计算机指令集结构的功能设计,采用RISC体系结构的微处理器SUN Microsystem:SPARC,SuperSPARC,Ulta SPARCSGI:R4000,R5000,R10000,IBM:Power PC Intel:80860,80960DEC:AlphaMotorola 88100HP HP300/930系列,950系列,从CISC到RISC,1975 IBM公司率先组织力量,研究指令系统的合理性问题,John Coche(1987年图灵奖获得者)19
18、79年 IBM 801,1986年推出IBM RT PC1979 David Pattern 研究了CISC指令系统主要存在以下几方面的问题:见p47 1981:Patterson等人研制成功了32位RISC I 微处理器。31种指令,三种数据类型,只有变址和相对寻址两种寻址方式,字长 32位1983:RISC II,RISC的定义和特点,RISC是一种计算机体系结构的设计思想,它不是一种产品。RISC是近代计算机体系结构发展史中的一个里程碑,直到现在,RISC还没有一个确切的定义CMU的一篇论文选择论述RISC的特点大多数指令在单周期内完成采用Load/Store结构硬布线控制逻辑减少指令和
19、寻址方式的种类固定的指令格式注重代码的优化从目前的发展看,RISC体系结构还应具有如下特点:面向寄存器结构十分重视流水线的执行效率尽量减少断流重视优化编译技术,90年代,IEEE的Michael Slater对RISC的定义做了如下描述:RISC为使流水线高效执行,应具有如下特征:简单而统一格式的指令译码大部分指令可以单周期执行完成只有Load/Store指令访存简单寻址方式采用Load延迟技术RISC为使优化编译便于产生优化代码,应具有如下特征:三地址指令格式较多的寄存器对称的指令格式减少指令平均执行周期数是RISC思想的精华,问题,RISC的指令系统精简了,CISC中的一条指令可能由一串指
20、令才能完成,那么为什么RISC执行程序的速度比CISC还要快?ExecuteTime=CPI X IC X T IC CPI TCISC 1 215 33ns5nsRISC 1.31.4 1.11.4 10ns2nsIC:实际统计结果,RISC的IC只比CISC 长3040%CPI:CISC CPI一般在46之间,RISC 一般CPI=1,Load/Store 为2T:RISC采用硬布线逻辑,指令要完成的功能比较简单,,RISC为什么会减少CPI,硬件方面:硬布线控制逻辑,减少指令和寻址方式的种类,使用固定格式,采用Load/Store,指令执行过程中设置多级流水线。软件方面:十分强调优化编译
21、的作用,RISC的关键技术,延时转移技术指令取消技术重叠寄存器窗口技术指令流调整技术硬件为主固件为辅,Top 10 80 x86 Instructions,操作类型小结,以下指令类型使用频度最高,指令系统应该支持这些类型的指令load,store,add,subtract,move register-register,and,shift,compare equal,compare not equal,branch,jump,call,return;,控制指令,Jump无条件转移,branch条件转移四种控制流的改变条件分支Conditional branches 使用频率最高,目标地址的指定,
22、条件码的实现跳转Jumps过程调用Procedure calls过程返回Procedure returns如p49图2.5所示 四种控制指令的使用频度P49 表2.9 表示分支条件的主要技术及其优缺点,转移目标地址与当前指令的距离,分支比较类型比较,比较相等和不相等最多,分支转移的方向统计,2.6 编译技术与计算机体系结构设计,使用汇编程序编程已不是主流现在使用汇编的人很少因此编译器更需要ISA编译器的主要目标是正确性其次是目标代码的速度其他目标编译的速度编译调试语言间的互操作性易于实现,现代编译器的典型结构,优化类型(1/2),高级优化在源代码级例如:仅一次调用的过程,采用in-line方式
23、,避免CALL局部优化消去公共子表达式:用临时变量保存第一次计算的公共子表达式的值常数传递,将所有被赋值为常数的变量,用该常数值代替降低堆栈的深度,对表达式重新组织,尽量减少表达式求值所用的资源全局优化对循环和分支进行优化转换代码移动将在每次循环中计算相同值的代码移到循环外面简化或消去数组下标的计算,优化类型(2/2),与机器相关的优化降低计算负载如乘法用移位和加法来完成指令调度:重新组织指令序列,尽可能减少断流现象分支偏移的优化重新安排代码,使分支偏移尽可能小,Stanford Ucode Compiler 优化的效果,ISA设计针对Compiler需了解的问题,如何分配变量如何寻址变量需要
24、多少寄存器优化技术对指令使用频度有何影响使用哪些控制结构这些控制结构使用频度,高级语言分配数据的区域,堆栈当前活动记录的局部变量全局数据区常量和全局静态赛结构,其中数组和其他联合类型的数据结构占很大比例堆用于动态数据,通常用指针访问,一般都不是标量,寄存器分配问题,堆栈对象的分配相对简单全局变量的分配由于存在别名问题比较困难堆对象和指针对象就更困难原因:一般用指针来访问,由于指针计算问题,使得几乎无法分配寄存器分配是优化的主要手段,因此在这方面的努力是非常重要的,一些研究的结论,减少分支语句非常困难大量的优化使得存储器访问操作减少可以减少一些ALU操作,但通常也比较少。结果是控制类指令在统计上
25、占较大比例 控制类指令很难加速,编译技术与计算机体系结构设计小结,有利于编译器的ISA 规整性:没有特殊的寄存器,例外情况尽可能少,所有操作数模式可用于任何数据类型和指令类型,要求操作、数据类型和寻址方式必须正交,有利于简化代码生成过程。完整性:支持基本的操作和满足目标应用系统的需求 帮助编译器设计者了解各种代码序列的执行效率和代价,有助于编译器的优化对于在编译时就已经知道的量,提供能够将其变为常数的指令寄存器分配是关键问题 寄存器数目多有利于编译器的设计与实现,提供至少16个通用寄存器,和独立的浮点寄存器 保证所有的寻址方式可用于各种数据传送指令 最小指令集,一些统计比较结果,一些结论Loa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 计算机体系结构 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3019147.html