欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    计算机体系结构.ppt

    • 资源ID:3597514       资源大小:1.14MB        全文页数:113页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机体系结构.ppt

    2019/9/15,中国科学技术大学,Chapter2.1,计算机体系结构,2019/9/15,中国科学技术大学,Chapter2.2,Review,设计发展趋势 Capacity Speed Logic 2x in 3 years 2x in 3 years DRAM 4x in 3 years 2x in 10 years Disk 4x in 3 years 2x in 10 years 运行任务的时间 Execution time, response time, latency 单位时间内完成的任务数 Throughput, bandwidth “X性能是Y的n倍 ” : ExTime(Y) Performance(X) - = - ExTime(X) Performance(Y),2019/9/15,中国科学技术大学,Chapter2.3,Amdahls 定律: CPI Law: 执行时间是计算机系统度量的最实际,最可靠的方式,2019/9/15,中国科学技术大学,Chapter2.4,第2章 指令集结构设计,2.1 指令集结构分类 2.2 寻址方式 2.3 操作数的类型、表示和大小 2.4 指令集功能设计 2.5 指令格式 2.6 编译技术与计算机体系结构 2.7 DLX指令集结构,2019/9/15,中国科学技术大学,Chapter2.5,指令集设计,2019/9/15,中国科学技术大学,Chapter2.6,指令集结构: 我们必须说明哪些东西?,指令格式或编码方式。即如何编码? 操作数和操作结果的存放位置 存放位置? 多少个显式操作数? 存储器操作数如何定位? 哪些操作数可以或不可以放到存储器中? 数据类型和大小 寻址方式 支持哪些操作 下一条指令地址 jumps, conditions, branches fetch-decode-execute is implicit!,2019/9/15,中国科学技术大学,Chapter2.7,有关ISA的7个方面,Class of ISA Memory addressing Addressing modes Types and sizes of operands Operations Control flow instructions Encoding an ISA,2019/9/15,中国科学技术大学,Chapter2.8,2.1 ISA 的基本分类,2019/9/15,中国科学技术大学,Chapter2.9,ISA 的基本分类,累加器型(Accumulator) (1 register): 1 address add A acc ¬ acc + memA 1+x address addx A acc ¬ acc + memA + x 堆栈型(Stack): 0 address add tos ¬ tos + next 通用寄存器型(General Purpose Register): Register-memory 2 address add A B EAA ¬ EAA + EAB 3 address add A B C EAA ¬ EAB + EAC Load/Store: 3 address add Ra Rb Rc Ra ¬ Rb + Rc load Ra Rb Ra ¬ memRb store Ra Rb memRb ¬ Ra 存储器-存储器型 (目前已经没有),2019/9/15,中国科学技术大学,Chapter2.10,比较指令条数,计算 C = A+B,2019/9/15,中国科学技术大学,Chapter2.11,通用寄存器型占主导地位,1980以后至今几乎所有的机器都用通用寄存器结构 原因 寄存器比存储器快 对编译器而言寄存器更容易使用 (A*B)-(B*C)-(A*D) 寄存器可以存放变量 代码紧凑,2019/9/15,中国科学技术大学,Chapter2.12,通用寄存器的分类,分类原则: ALU指令到底是两地址指令还是三地址指令 ALU指令中有多少个操作数可以用存储器寻址,即有多少个存储器操作数,2019/9/15,中国科学技术大学,Chapter2.13,常见的通用寄存器型指令集结构的优缺点,2019/9/15,中国科学技术大学,Chapter2.14,2.2 寻址技术,如何解释存储器地址?如何说明寻址方式? 1980年以来几乎所有机器的存储器都是按字节编址的 ISA设计要关注两个问题: 8bits字节, 16bits-半字,32bits 字, 64bits 双字 如何读32位字,两种方案 每次一个字节,四次完成 每次一个字,一次完成 问题: (1)如何将字节地址映射到字地址 (尾端问题) (2)一个字是否可以存放在任何字节边界上 (对齐问题) 即尾端(Endian)和对齐问题,2019/9/15,中国科学技术大学,Chapter2.15,尾端问题,little endian, big endian, 在一个字内部的字节顺序问题,如地址xxx00指定了一个字(int), 存储器中从xxx00处连续存放ffff0000, 则有两种方式: Little endian 方式下xxx00位置是字的最低字节,整数值为0000ffff, Intel 80x86, DEC Vax, DEC Alpha (Windows NT) Big endian 方式下xxx00位置是字的最高字节,整数值为ffff0000, IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA,2019/9/15,中国科学技术大学,Chapter2.16,对齐问题,对一个s字节的对象访问,地址为A,如果A mod s =0 那么它就是边界对齐的。 边界对齐的原因是存储器本身读写的要求,存储器本身读写通常就是边界对齐的,对于不是边界对齐的对象的访问可能要导致存储器的两次访问,然后再拼接出所需要的数。(或发生异常),2019/9/15,中国科学技术大学,Chapter2.17,寻址方式,寻址方式:如何说明要访问的对象地址 有效地址:由寻址方式说明的某一存储单元的实际存储器地址。 有效地址 vs. 物理地址,2019/9/15,中国科学技术大学,Chapter2.18,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,¬,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,寻址方式,2019/9/15,中国科学技术大学,Chapter2.19,各种寻址方式的使用情况? (忽略寄存器直接寻址),三个SPEC89程序在VAX结构上的测试结果: 立即寻址,偏移寻址使用较多,2019/9/15,中国科学技术大学,Chapter2.20,偏移寻址,主要问题:偏移的范围(偏移量的大小),Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000),2019/9/15,中国科学技术大学,Chapter2.21,立即数寻址,Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000),2019/9/15,中国科学技术大学,Chapter2.22,立即数的大小,The distribution of immediate values. About 20% were negative for CINT2000 and about 30% were negative for CFP2000. These measurements were taken on a Alpha, where the maximum immediate is 16 bits, for the spec cpu2000 programs. A similar measurement on the VAX, which supported 32-bit immediates, showed that about 20% to 25% of immediates were longer than 16 bits.,2019/9/15,中国科学技术大学,Chapter2.23,寻址方式小结,重要的寻址方式: 偏移寻址方式, 立即数寻址方式, 寄存器间址方式 SPEC测试表明,使用频度达到 75%-99% 偏移字段的大小应该在 12 - 16 bits 可满足75%-99%的需求 立即数字段的大小应该在 8 -16 bits 可满足50%-80%的需求,2019/9/15,中国科学技术大学,Chapter2.24,Review lecture3,ISA需考虑的7个方面 Class of ISA Memory addressing Addressing modes Types and sizes of operands Operations Control flow instructions Encoding an ISA ISA的类型 通用寄存器型占主导地位 寻址方式 重要的寻址方式: 偏移寻址方式, 立即数寻址方式, 寄存器间址方式 SPEC测试表明,使用频度达到 75%-99% 偏移字段的大小应该在 12 - 16 bits, 可满足75%-99%的需求 立即数字段的大小应该在 8 -16 bits, 可满足50%-80%的需求,2019/9/15,中国科学技术大学,Chapter2.25,2.3 操作数的类型、表示和大小,操作数类型和操作数表示也是软硬件的主要界面之一。 操作数类型:是面向应用、面向软件系统所处理的各种数据结构。 整型、浮点型、字符、字符串、向量类型等 类型由操作码确定或数据附加硬件解释的标记,一般采用由操作码确定 数据附加硬件解释的标记,现在已经不采用 操作数的表示:硬件结构能够识别,指令系统可以直接调用的结构 整型:原码、反码、补码 浮点:IEEE 754标准 十进制:BCD码,二进制十进制表示,2019/9/15,中国科学技术大学,Chapter2.26,操作数的大小,基准测试的结论:(1)对单字、双字的数据访问具有较高的频率 (2)定义操作数字段长度为64位,更具有一般性,2019/9/15,中国科学技术大学,Chapter2.27,2.4 指令集结构的功能设计,CISC计算机指令集结构的功能设计 RISC计算机指令结构的功能设计,2019/9/15,中国科学技术大学,Chapter2.28,典型操作类型,一般计算机都支持前三类所有的操作; 不同计算机系统 对系统支持程度不同,但都支持基本的系统功能。 对最后四类操作的支持程度差别也很大,有些机器不支持,有些机器还在此基础上做一些扩展,这些指令有时作为可选的指令。,2019/9/15,中国科学技术大学,Chapter2.29,Top 10 80x86 Instructions,2019/9/15,中国科学技术大学,Chapter2.30,控制类指令,四种类型的控制流改变:条件分支( Conditional branch) 、跳转(Jump)、过程调用(Procedure calls)、过程返回(Procedure returns),Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000),2019/9/15,中国科学技术大学,Chapter2.31,控制流类指令中的寻址方式,PC-relative 方式 (相对寻址) 说明动态的转移地址方式: 编译时不知道转移地址,程序执行时动态确定 转移地址放到某一寄存器中 其他方式,2019/9/15,中国科学技术大学,Chapter2.32,转移目标地址与当前指令的距离,Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000) 建议:PC-relative 寻址,偏移地址至少8位,2019/9/15,中国科学技术大学,Chapter2.33,分支比较类型比较,Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000),2019/9/15,中国科学技术大学,Chapter2.34,ISA对操作类型的选择,需考虑的因素:速度、价格和灵活性 基本要求:指令系统的完整性、规整性、高效率和兼容性 完整性设计:具备基本指令种类 兼容性:系列机 高效率:指令执行速度快、使用频度高 规整性 让所有运算部件都能对称、均匀的在所有数据存储单元之间进行操作。 对所有数据存储单元都能同等对待,无论是操作数或运算结果都可以无约束地存放到任意数据存储单元中 正交性 数据类型独立于寻址方式 寻址方式独立于所要完成的操作 当前对这一问题的处理有两种截然不同的方向 CISC和RISC,2019/9/15,中国科学技术大学,Chapter2.35,CISC计算机ISA的功能设计,目标:强化指令功能,减少指令的指令条数,以提高系统性能 基本优化方法 1. 面向目标程序的优化 面向目标程序的优化是提高计算机系统性能最直接的方法 其指标主要 缩短程序的长度 缩短程序的执行时间 优化方法 对大量的目标程序机器执行情况进行统计分析,找出使用频度高,执行时间长的指令或指令串 对于那些使用频度高的指令,用硬件加快其执行,对于那些使用频度高的指令串,用一条新的指令来代替它,2019/9/15,中国科学技术大学,Chapter2.36,优化目标程序的主要途径(1/2),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之间的数据块传送可有效的支持向量和矩阵运算,如IBM370 R-Stack之间设置数据块传送指令,能够在程序调用和程序中断时,快速保存和恢复程序现场,如 VAX-11,2019/9/15,中国科学技术大学,Chapter2.37,优化目标程序的主要途径(2/2),3) 增强程序控制指令的功能 在CISC中,一般均设置了多种程序控制指令,正常仅需要转移指令和子程序控制指令 2. 面向高级语言和编译程序改进指令系统 主要是缩小HL-ML之间的差距 1)增强面向HL和Compiler支持的指令功能 在用高级语言编写的源程序中,对各种语句的使用频度和执行时间进行统计分析,对使用频度高、执行时间长的语句,增强有关指令的功能,或增加相关的专门指令,从而达到缩短目标程序长度,减少目标程序执行时间的目的,同时也缩短了编译时间,2019/9/15,中国科学技术大学,Chapter2.38,例如FORTRAN语言和COBOL语言中各种主要语句的使用频度,观察结果: (1)一元赋值在其中比例最大,增强数据传送类指令功能,缩短这类指令的执行时间是对高级语言非常有力的支持, (2)其他赋值语句中,增1操作比例较大,许多机器都有专门的增1指令 (3)条件转移和无条件转移占22,38.2%,因此增强转移指令的功能,增加转移指令的种类是必要的,2019/9/15,中国科学技术大学,Chapter2.39,2)高级语言计算机系统 缩小HL和ML的差别时,走到极端,就是把HL和ML合二为一,即所谓的高级语言计算机。在这种机器中,高级语言不需要经过编译,直接由机器硬件来执行。如LISP机,PROLOG机 3)支持操作系统的优化实现特权指令 任何一种计算机系统必须有操作系统的支撑才能工作,而OS又必须用指令系统来实现,指令系统对OS的支持主要有 处理器工作状态和访问方式的转换 进程的管理和切换 存储管理和信息保护 进程同步和互斥,信号量的管理等,2019/9/15,中国科学技术大学,Chapter2.40,Review,ISA 研究的问题 ISA的分类 操作数部分 理解存储器地址(尾端和对齐问题) 寻址方式 操作数的类型、表示和大小问题 操作码部分 支持哪些类型的操作 指令格式 研究方法:基于统计的方法 研究的一些结论 常用寻址方式:立即数、偏移寻址、寄存器间址 偏移字段的大小应该在 12 - 16 bits,可满足75%-99%的需求 立即数字段的大小应该在 8 -16 bits,可满足50%-80%的需求 操作数大小:单字、双字的数据访问具有较高的频率,定义操作数字段长度为64位,更具有一般性,2019/9/15,中国科学技术大学,Chapter2.41,ISA的功能设计 任务:确定硬件支持哪些操作 方法:统计的方法 两种类型:CISC和RISC 控制类指令 条件分支最常用 寻址方式:PC-relative 和偏移地址至少8位,说明动态的转移地址方式 CISC 强化指令功能,减少程序中指令条数,以提高系统性能,2019/9/15,中国科学技术大学,Chapter2.42,RISC计算机指令集结构的功能设计,采用RISC体系结构的微处理器 SUN Microsystem: SPARC, SuperSPARC, Ulta SPARC SGI: MIPS R4000, R5000, R10000, IBM: Power PC Intel: 80860, 80960 DEC: Alpha Motorola 88100 HP HP300/930系列,950系列,2019/9/15,中国科学技术大学,Chapter2.43,从CISC到RISC,1975 IBM公司率先组织力量,研究指令系统的合理性问题,John Coche (1987年图灵奖获得者)1979年 IBM 801, 1986年推出IBM RT PC 1979 David Patterson 研究了CISC指令系统主要存在以下几方面的问题: 指令使用频度;CISC指令系统复杂-增加研制时间和成本,容易出错; VLSI设计困难,不利于单片集成; 许多复杂指令操作复杂,运行速度慢; 各条指令不规整,不利于先进计算机体系结构技术来提高系统的性能。 1981: Patterson等人研制成功了32位RISC I 微处理器。31种指令,三种数据类型,只有变址和相对寻址两种寻址方式,字长 32位 1983:RISC II,2019/9/15,中国科学技术大学,Chapter2.44,RISC的定义和特点,RISC是一种计算机体系结构的设计思想,它不是一种产品。RISC是近代计算机体系结构发展史中的一个里程碑,直到现在,RISC还没有一个确切的定义 CMU的一篇论文选择论述RISC的特点 大多数指令在单周期内完成 采用Load/Store结构 硬布线控制逻辑 减少指令和寻址方式的种类 固定的指令格式 注重代码的优化 从目前的发展看,RISC体系结构还应具有如下特点: 面向寄存器结构 十分重视流水线的执行效率尽量减少断流 重视优化编译技术,2019/9/15,中国科学技术大学,Chapter2.45,90年代,IEEE的Michael Slater对RISC的定义做了如下描述: RISC为使流水线高效执行,应具有如下特征: 简单而统一格式的指令译码 大部分指令可以单周期执行完成 只有Load/Store指令访存 简单寻址方式 采用Load延迟技术 RISC为使优化编译便于产生优化代码,应具有如下特征: 三地址指令格式 较多的寄存器 对称的指令格式 减少指令平均执行周期数是RISC思想的精华,2019/9/15,中国科学技术大学,Chapter2.46,问题,RISC的指令系统精简了,CISC中的一条指令可能由一串指令才能完成,那么为什么RISC执行程序的速度比CISC还要快? ExecuteTime = CPI X IC X T IC CPI T CISC 1 215 33ns5ns RISC 1.31.4 1.11.4 10ns2ns IC : 实际统计结果,RISC的IC只比CISC 长3040% CPI: CISC CPI一般在46之间,RISC 一般CPI =1 , Load/Store 为2 T: RISC采用硬布线逻辑,指令要完成的功能比较简单,,2019/9/15,中国科学技术大学,Chapter2.47,RISC为什么会减少CPI,硬件方面:硬布线控制逻辑,减少指令和寻址方式的种类,使用固定格式,采用Load/Store,指令执行过程中设置多级流水线。 软件方面:十分强调优化编译的作用,2019/9/15,中国科学技术大学,Chapter2.48,RISC的关键技术,延时转移技术 指令取消技术 重叠寄存器窗口技术 指令流调整技术 硬件为主固件为辅,2019/9/15,中国科学技术大学,Chapter2.49,操作类型小结,以下指令类型使用频度最高,指令系统应该支持这些类型的指令 load, store, add, subtract, move register-register, and, shift, compare equal, compare not equal, branch, jump, call, return;,2019/9/15,中国科学技术大学,Chapter2.50,review,ISA功能设计确定提供哪些操作类型。 CISC 目标:强化指令功能,减少指令的指令条数,以提高系统性能 基本方法:面向目标程序的优化,面向高级语言和编译器的优化 RISC 目标:通过简化指令系统,用最高效的方法实现最常用的指令 主要手段:充分发挥流水线的效率,提高CPI,2019/9/15,中国科学技术大学,Chapter2.51,2.5 指令格式,2019/9/15,中国科学技术大学,Chapter2.52,指令格式选择策略, 如果代码长度最重要,那么使用变长指令格式 如果性能至关重要,使用固定长度指令 有些嵌入式CPU附加可选模式, 由每一应用自己选择性能还是代码量 有些机器使用边执行边解压的方式,2019/9/15,中国科学技术大学,Chapter2.53,指令格式,如果每条指令存在多个存储器操作数,或有多种寻址方式 =每一操作数都要说明其寻址方式 对于Load-store型机器,每条指令有一个存储器地址,并且只有较少的寻址方式 = 可以将寻址方式反映在操作码中,2019/9/15,中国科学技术大学,Chapter2.54,review,ISA的分类 累加器型、堆栈型和寄存器型 寻址方式 立即寻址、偏移寻址和寄存器寻址 偏移量字段:12 16 bits 立即数字段: 8 to 16 bits 指令格式 变长指令格式、定长指令格式、 以上两种格式的折中,2019/9/15,中国科学技术大学,Chapter2.55,MIPS 寻址方式/指令格式,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?,2019/9/15,中国科学技术大学,Chapter2.56,2.6 编译技术与计算机体系结构设计,使用汇编语言编程已不是主流 现在使用汇编的人很少 因此编译器更需要ISA 编译器的设计目标 正确性 编译后代码的速度 其他目标 编译的速度 调试的支持 语言间的互操作性等,2019/9/15,中国科学技术大学,Chapter2.57,现代编译器的典型结构,2019/9/15,中国科学技术大学,Chapter2.58,优化类型 (1/2),高级优化在源代码级 例如:仅一次调用的过程,采用in-line方式,避免CALL 局部优化 消去公共子表达式:用临时变量保存第一次计算的公共子表达式的值 常数传递,将所有被赋值为常数的变量,用该常数值代替 降低堆栈的深度,对表达式重新组织,尽量减少表达式求值所用的资源 全局优化对循环和分支进行优化转换 代码移动将在每次循环中计算相同值的代码移到循环外面 简化或消去数组下标的计算,2019/9/15,中国科学技术大学,Chapter2.59,优化类型 (2/2),寄存器分配 与机器相关的优化 降低计算负载 如乘法用移位和加法来完成 指令调度:重新组织指令序列,尽可能减少断流现象 分支偏移的优化 重新安排代码,使分支偏移尽可能小,2019/9/15,中国科学技术大学,Chapter2.60,Level 0 is the same as unoptimized code. Level 1 includes local optimizations, code scheduling, and local register allocation. Level 2 includes global optimizations, loop transformations (software pipelining), and global register allocation. Level 3 adds procedure integration. These experiments were performed on the Alpha compilers.,Change in instruction count for the programs lucas and mcf from the SPEC2000 as compiler optimization levels vary.,2019/9/15,中国科学技术大学,Chapter2.61,2019/9/15,中国科学技术大学,Chapter2.62,Stanford Ucode Compiler 优化的效果,2019/9/15,中国科学技术大学,Chapter2.63,Review,功能设计 RISC vs. CISC 指令格式 变长指令格式、定长指令格式、 以上两种格式的折中 编译技术与计算机系统结构 现代编译器的基本结构 编译优化-4个层次 高层优化:一般在源码上进行,同时把输出传递给以后的优化扫描步骤 局部优化:仅在一系列代码片断之内(基本块)将代码优化 全局优化:将局部优化扩展为跨越分支,并且引入一组针对优化循环的转换 与机器相关的优化:充分利用特定的系统结构,2019/9/15,中国科学技术大学,Chapter2.64,ISA设计需了解的有关Compiler的问题,如何分配变量 如何寻址变量 需要多少寄存器 优化技术对指令使用频度有何影响 使用哪些控制结构 这些控制结构使用频度,2019/9/15,中国科学技术大学,Chapter2.65,高级语言分配数据的区域,栈(Stack) 用来分配局部变量 用于存储活动记录(过程调用和返回),通过堆栈指针访问其中的内容。 全局数据区(global data area) 用来分配被静态说明的对象,如常量和全局变量。其中数组和其他聚集类型的数据结构占很大比例 堆(heap) 用于分配动态对象,用指针访问,通常不是标量。全局变量和堆变量因为存在别名问题而无法分配到寄存器,2019/9/15,中国科学技术大学,Chapter2.66,寄存器分配问题,栈中对象的寄存器分配相对简单 全局变量的寄存器分配相对比较困难 堆对象的寄存器分配几乎是不可能的 原因:一般用指针来访问,使得几乎无法分配 有些全局变量和栈对象由于存在别名问题也无法分配 原因:存在多条路径来访问变量的地址。 寄存器分配是优化的主要手段,因此在这方面的努力是非常重要的,2019/9/15,中国科学技术大学,Chapter2.67,关于编译优化的一些研究的结论,减少分支语句非常困难 大量的优化使得存储器访问操作减少 可以减少一些ALU操作 结果是 控制类指令在统计上占较大比例 控制类指令很难加速,2019/9/15,中国科学技术大学,Chapter2.68,编译技术与计算机体系结构设计小结,有利于编译器的ISA 规整性和正交性: 没有特殊的寄存器,例外情况尽可能少, 所有操作数模式可用于任何数据类型和指令类型,要求操作、数据类型和寻址方式必须正交,有利于简化代码生成过程。 完整性: 支持基本的操作和满足目标的应用系统需求 帮助编译器设计者了解各种代码序列的执行效率和代价,有助于编译器的优化 对于在编译时就已经可确定的量,提供能够将其变为常数的指令 寄存器分配是关键问题 寄存器数目多有利于编译器的设计与实现,2019/9/15,中国科学技术大学,Chapter2.69,提供至少16个通用寄存器和独立的浮点寄存器 保证所有的寻址方式可用于各种数据传送指令 最小指令集,2019/9/15,中国科学技术大学,Chapter2.70,一些统计比较结果,2019/9/15,中国科学技术大学,Chapter2.71,一些结论 Load-Store 型ISA,move类指令比例大于M-M型ISA Load-Store型ISA,Branch类指令比例小于M-M型ISA Load-Store型ISA,平均CPI和T较小,2019/9/15,中国科学技术大学,Chapter2.72,ISA的评价-ISA小结,执行的指令条数 CPI 和时钟周期 涉及控制和数据通路 指令译码的难易程度 有效地址计算的复杂程度 存储模式 控制结构的实现方式 编码和对齐问题 是否有冗余,是否完备,2019/9/15,中国科学技术大学,Chapter2.73,ISA的度量,动态度量 性能分析的主要依据 静态度量 一般只要代码可以装入存储器,我们不太关心 要关心的只是在虚拟存储系统中,页式管理的性能 一些统计特性 操作类型 寻址模式 有效地址定位 指令和数据存取 分支成功和失败 指令格式是否有利于预取操作,2019/9/15,中国科学技术大学,Chapter2.74,2.7 DLX指令集结构,目标: 支持大概率事件 不常用的操作由软件来完成 简单的Load-Store型 流水线可高效实现 ISA容易编码 支持编译器的优化实现 显式地说明一些事情,便于优化 有较多的寄存器,便于编译器使用,2019/9/15,中国科学技术大学,Chapter2.75,DLX的结构,32个GPR,R0 总是0 Load R0是没有用的 32 个FPR 用于单精度或双精度数运算 对于单精度数运算: F0, F1, . , F31 对于双精度数运算:F0, F2, . , F30 附加一些状态寄存器 存储器模型 big endian byte addressable - halfword, word, and double 所有的访问必须对齐 装载字节或半字时,放在寄存器的低位部分,高位部分或者扩展为符号位或者添0 指令都是32位的,并且对齐存放,2019/9/15,中国科学技术大学,Chapter2.76,DLX结构(续),浮点格式为IEEE754 单双精度数的转换是显式的 ALU操作总是R-R型的 立即数16位 寻址方式 寄存器寻址,立即值寻址,偏移寻址 控制类指令jumps 和branches 跳转并链接时,返回地址在R31中 目标地址是相对与PC的偏移(最大225)或寄存器 四种类型的指令move, alu, control, fl.pt.,2019/9/15,中国科学技术大学,Chapter2.77,LB, LBU, SB - load byte, load byte unsigned, store byte LH, LHU, SH - same as above but with halfwords LW, SW - load or store word LF, SF - load/store single precision float from/to FPRs LD, SD - load/store double precision float from/to FPR pair MOVI2S - move from GPR to a special register MOVS2I - move from special register to a GPR MOVFP2I - move 32-bits from an FPR to a GPR MOVI2FP - move 32-bits from a GPR to an FPR,2019/9/15,中国科学技术大学,Chapter2.78,DLX move 类指令举例,LH R1,40(R3) - load halfword (signed) R1-32 (M40+R30)16 # M40+R3 # M41+R3 LBU R1, 40(R3) - load byte unsigned R1-32 024# M40+R3 SF 40(R3),F0 - store float M40+R3-32 F0 LD F0,40(R3) - load double F0#F1-64 M40+R3 - (can think of it as 2 words but they represent a 64 bit formatted value) SD 40(R3),F0 - store double M4

    注意事项

    本文(计算机体系结构.ppt)为本站会员(少林足球)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开