编辑: kieth | 2018-11-04 |
R2 ? R2+d Pre-decrement Add R1,C(R2) R2 ? R2Cd;
R1 ? R1+Mem[R2] Scaled Add R1,100(R2)[R3] R1 ? R1+Mem[100+R2+R3*d] 寻址方式 各种寻址方式的使用情况? (忽略寄存器直接寻址) 三个SPEC89程序在VAX结构上的测试结果:立即寻址,偏移寻址使用较多 偏移寻址 主要问题:偏移的范围(偏移量的大小) Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000) 立即数寻址 Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000) 立即数的大小 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. 寻址方式小结 重要的寻址方式:偏移寻址方式, 立即数寻址方式, 寄存器间址方式SPEC测试表明,使用频度达到 75%--99% 偏移字段的大小应该在
12 -
16 bits可满足75%-99%的需求 立即数字段的大小应该在
8 -16 bits可满足50%-80%的需求 Review lecture3 ISA需考虑的7个方面Class of ISAMemory addressingAddressing modesTypes and sizes of operandsOperationsControl flow instructionsEncoding an ISAISA的类型通用寄存器型占主导地位寻址方式重要的寻址方式: 偏移寻址方式, 立即数寻址方式, 寄存器间址方式SPEC测试表明,使用频度达到 75%--99%偏移字段的大小应该在
12 -
16 bits, 可满足75%-99%的需求立即数字段的大小应该在
8 -16 bits, 可满足50%-80%的需求 2.3 操作数的类型、表示和大小 操作数类型和操作数表示也是软硬件的主要界面之一.操作数类型:是面向应用、面向软件系统所处理的各种数据结构.整型、浮点型、字符、字符串、向量类型等类型由操作码确定或数据附加硬件解释的标记,一般采用由操作码确定数据附加硬件解释的标记,现在已经不采用操作数的表示:硬件结构能够识别,指令系统可以直接调用的结构整型:原码、反码、补码浮点:IEEE 754标准十进制:BCD码,二进制十进制表示 操作数的大小 基准测试的结论:(1)对单字、双字的数据访问具有较高的频率(2)定义操作数字段长度为64位,更具有一般性 2.4 指令集结构的功能设计 CISC计算机指令集结构的功能设计RISC计算机指令结构的功能设计 典型操作类型 一般计算机都支持前三类所有的操作;
不同计算机系统 对系统支持程度不同,但都支持基本的系统功能. 对最后四类操作的支持程度差别也很大,有些机器不支持,有些机器还在此基础上做一些扩展,这些指令有时作为可选的指令. Top
10 80x86 Instructions 控制类指令 四种类型的控制流改变:条件分支( 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) 控制流类指令中的寻址方式 PC-relative 方式 (相对寻址)说明动态的转移地址方式: 编译时不知道转移地址,程序执行时动态确定转移地址放到某一寄存器中其他方式 转移目标地址与当前指令的距离 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位 分支比较类型比较 Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000) ISA对操作类型的选择 需考虑的因素:速度、价格和灵活性基本要求:指令系统的完整性、规整性、高效率和兼容性完整性设计:具备基本指令种类兼容性:系列机高效率:指令执行速度快、使用频度高规整性让所有运算部件都能对称、均匀的在所有数据存储单元之间进行操作.对所有数据存储单元都能同等对待,无论是操作数或运算结果都可以无约束地存放到任意数据存储单元中正交性数据类型独立于寻址方式寻址方式独立于所要完成的操作当前对这一问题的处理有两种截然不同的方向CISC和RISC CISC计算机ISA的功能设计 目标:强化指令功能,减少指令的指令条数,以提高系统性能基本优化方法1. 面向目标程序的优化 面向目标程序的优化是提高计算机系统性能最直接的方法其指标主要缩短程序的长度缩短程序的执行时间优化方法对大量的目标程序机器执行情况进行统计分析,找出使用频度高,执行时间长的指令或指令串对于那些使用频度高的指令,用硬件加快其执行,对于那些使用频度高的指令串,用一条新的指令来代替它 优化目标程序的主要途径(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之间的数据块传送可有效的支持向量和矩阵运算,如IBM370R-Stack之间设置数据块传送指令,能够在程序调用和程序中断时,快速保存和恢复程序现场,如VAX-11 优化目标程序的主要途径(2/2) 3) 增强程序控制指令的功能在CISC中,一般均设置了多种程序控制指令,正常仅需要转移指令和子程序控制指令2. 面向高级语言和编译程序改进指令系统 主要是缩小HL-ML之间的差距1)增强面向HL和Compiler支持的指令功能 在用高级语言编写的源程序中,对各种语句的使用频度和执行时间进行统计分析,对使用频度高、执行时间长的语句,增强有关指令的功能,或增加相关的专门指令,从而达到缩短目标程序长度,减少目标程序执行时间的目的,同时也缩短了编译时间 例如FORTRAN语言和COBOL语言中各种主要语句的使用频度 3.4 0.17 0.17 8.46 19.1 19.1 7.5 42.1 COBOL 15.0 6.0 4,5 6.5 10.5 11.5 15.0 31.0 FORTRAN 其他 CALL DO I/O GOTO IF 其他赋值 一元赋值 语言 观察结果:(1)一元赋值在其中比例最大,增强数据传送类指令功能,缩短这类指令的执行时间是对高级语言非常有力的支持,(2)其他赋值语句中,增1操作比例较大,许多机器都有专门的增1指令(3)条件转移和无条件转移占22........