2.4指令系统的功能设计 完整性、规整性、高效率和兼容性等 2.4.1基本指令系统 通用计算机系统的5类基本指令 1、数据传送类指令, 由如下三个主要因素决定: (1)数据存储设备的种类 (2)数据单位:字、字节、位、数据块等 3)采用的寻址方式 ·指令种类(以字为传送单位,不考虑寻址方式等): 通用寄存器→通用寄存器 通用寄存器→主存储器 通用寄存器→堆栈 主存储器→通用寄存器 主存储器→主存储器 主存储器→堆栈 堆栈→通用寄存器 堆栈→主存储器 2、运算类指令 考虑四个因数的组合: (1)操作种类:加、减、乘、除、与、或、非、异或、比较、移位、检索 转换、匹配、清除、置位等 (2)数据表示:定点、浮点、逻辑、十进制、字符串、定点向量等 (3)数据长度:字、双字、半字、字节、位、数据块等 (4)数据存储设备:通用寄存器、主存储器、堆栈等 以加法指令为例,一般应设置如下几种: 寄存器-寄存器型的定点单字长加法指令 寄存器-寄存器型的定点双字长加法指令 寄存器-寄存器型的定点半字加法指令 寄存器-寄存器型的字节加法指令 寄存器-寄存器型的浮点单字长加法指令 寄存器-寄存器型的浮点双字长加法指令 寄存器-寄存器型的单字长逻辑加法指令 寄存器-寄存器型的定点向量加法指令 寄存器-寄存器型的浮点向量加法指令 ·对于移位指令,要组合以下三个因素: 1)移位方向:左移(L)、右移(R) (②)移位种类:算术移位(A)、逻辑移位①L)、循环移位(R) (3)移位长度:单字长(S)、双字长(D)
2-1 2.4 指令系统的功能设计 完整性、规整性、高效率和兼容性等 2.4.1 基本指令系统 通用计算机系统的 5 类基本指令 1、数据传送类指令, • 由如下三个主要因素决定: (1) 数据存储设备的种类 (2) 数据单位:字、字节、位、数据块等 (3) 采用的寻址方式 • 指令种类(以字为传送单位,不考虑寻址方式等): 通用寄存器→通用寄存器 通用寄存器→主存储器 通用寄存器→堆栈 主存储器→通用寄存器 主存储器→主存储器 主存储器→堆栈 堆栈→通用寄存器 堆栈→主存储器 2、运算类指令 • 考虑四个因数的组合: (1) 操作种类:加、减、乘、除、与、或、非、异或、比较、移位、检索、 转换、匹配、清除、置位等 (2) 数据表示:定点、浮点、逻辑、十进制、字符串、定点向量等 (3) 数据长度:字、双字、半字、字节、位、数据块等 (4) 数据存储设备:通用寄存器、主存储器、堆栈等 • 以加法指令为例,一般应设置如下几种: 寄存器-寄存器型的定点单字长加法指令 寄存器-寄存器型的定点双字长加法指令 寄存器-寄存器型的定点半字加法指令 寄存器-寄存器型的字节加法指令 寄存器-寄存器型的浮点单字长加法指令 寄存器-寄存器型的浮点双字长加法指令 寄存器-寄存器型的单字长逻辑加法指令, 寄存器-寄存器型的定点向量加法指令 寄存器-寄存器型的浮点向量加法指令 • 对于移位指令,要组合以下三个因素: (1) 移位方向:左移(L)、右移(R) (2) 移位种类:算术移位(A)、逻辑移位(L)、循环移位(R) (3) 移位长度:单字长(S)、双字长(D)
组合起来:3×2×2=12种,因逻辑左移与算术左移相同, 移位指令应该有10种,分别是 单字长算术左移 SRAS 单字长算术右移 SLS(SRLS)单字长逻辑左移,或单字长算术左移 SLRS 单字长循环左移 SRRS 单字长循环右移 双字长算术左移 SRAD 双字长算术右移 SLLD(SRLD)双字长逻辑左移,或双字长算术左移 双字长循环左移 SRRD 双字长循环右移 位操作指令:置位、清位、位测试、找位等 字符串指令:比较、查找、匹配、转换等 3、程序控制指令 ●主要包括三类:转移指令、调用和返回指令、循环控制指令 转移条件主要有:零(Z)、正负(N)、进位◎、溢出(V)及它们的组合 ●主要条件转移指令有: BEQ 等于零转移 BNEQ不等于零转移 BLS 小于转移 BGT 大于转移 BLFQ小于等于转移,或不大于转移 大于等于转移,或不小于转移 BLSU不带符号小于转移 BGTU 不带符号大于转移 BLEU不带符号小于等于转移,或不带符号不大于转移 BGEQU不带符号大于等于转移,或不带符号不小于转移 BCC 没有进位转移 BCS 有进位转移 BVC 没有溢出转移 BVS 有溢出转移 程序调用和返回指令 转入子程序 RETURN从子程序返回 本身可以带有条件, 中断控制指令:开中断、关中断、改变屏蔽、中断返回、自陷等 4、输入输出指令 ●主要有:启动、停止、测试、控制设备,数据输入、输出操作等 采用单一的直接寻址方式, 在多用户或多任务环境下,输入输出指令属于特权指令 ●也可以不设置输入输出指令 输入输出设备与主存储器共用同一个零地址空间 2-2
2-2 组合起来:3×2×2=12 种,因逻辑左移与算术左移相同, 移位指令应该有 10 种,分别是: SLAS 单字长算术左移 SRAS 单字长算术右移 SLLS(SRLS) 单字长逻辑左移,或单字长算术左移 SLRS 单字长循环左移 SRRS 单字长循环右移 SLAD 双字长算术左移 SRAD 双字长算术右移 SLLD(SRLD) 双字长逻辑左移,或双字长算术左移 SLRD 双字长循环左移 SRRD 双字长循环右移 • 位操作指令:置位、清位、位测试、找位等 • 字符串指令:比较、查找、匹配、转换等 3、程序控制指令 • 主要包括三类:转移指令、调用和返回指令、循环控制指令 转移条件主要有:零(Z)、正负(N)、进位©、溢出(V)及它们的组合 • 主要条件转移指令有: BEQ 等于零转移 BNEQ 不等于零转移 BLS 小于转移 BGT 大于转移 BLEQ 小于等于转移,或不大于转移 BGEQ 大于等于转移,或不小于转移 BLSU 不带符号小于转移 BGTU 不带符号大于转移 BLEQU 不带符号小于等于转移,或不带符号不大于转移 BGEQU 不带符号大于等于转移,或不带符号不小于转移 BCC 没有进位转移 BCS 有进位转移 BVC 没有溢出转移 BVS 有溢出转移 • 程序调用和返回指令: CALL 转入子程序 RETURN 从子程序返回 本身可以带有条件, 中断控制指令:开中断、关中断、改变屏蔽、中断返回、自陷等 4、输入输出指令 • 主要有:启动、停止、测试、控制设备,数据输入、输出操作等 采用单一的直接寻址方式, • 在多用户或多任务环境下,输入输出指令属于特权指令 • 也可以不设置输入输出指令 输入输出设备与主存储器共用同一个零地址空间
5、处理机控制和调试指令 处理机状态切换指令 处理机至少有两个或两个以上状态 硬件和软件的调试指令 硬件调试指令:钥匙位置、开关状态的读取, 寄存器和主存单元的显示等 软件调试指令:断点的设置、跟踪,自陷井指令等 2.4.2指令系统性能 ·完整性是指应该具备的基本指令种类, 通用计算机的5类基本指令 ·规整性包括对称性和均匀性 对称性:所有寄存器头等对待 操作码的设置等都要对称,如:A-B与B-A 均匀性:不同的数据类型、字长、存储设备、操作种类要设置相同的指令 高效率:指令的执行速度要快 指令的使用频度要高 各类指令之间要有一定的比例 兼容性:在同一系列机内指令系统不变(可以适当增加) 2.4.3指令系统的优化设计 指令系统的优化设计有两个截然相反的方向: 1.复杂指令系统计算机CISC( Complex Instruction Set Computer) 增强指令功能,设置功能复杂的指令 面向目标代码、面向高级语言、面向操作系统 用一条指令代替一串指令 2.精简指令系统计算机RISC( Reduced Instruction Set Computer) 简化指令功能,只保留功能简单的指令 较复杂的功能用子程序来实现 2.5精简指令系统计算机RISC 2.5.1从CISC到RISC 2.5.2RISC的定义与特点 2.5.3RISC的精华 2.5.4RISC的关键技术 2.5.5RISC优化编译技术 2.5.1从CISC到RISC ·70年代,指令系统已经非常庞大,指令功能相当复杂
2-3 5、处理机控制和调试指令 • 处理机状态切换指令 处理机至少有两个或两个以上状态 • 硬件和软件的调试指令 硬件调试指令:钥匙位置、开关状态的读取, 寄存器和主存单元的显示等 软件调试指令:断点的设置、跟踪,自陷井指令等 2.4.2 指令系统性能 • 完整性是指应该具备的基本指令种类, 通用计算机的 5 类基本指令 • 规整性包括对称性和均匀性 对称性:所有寄存器头等对待 操作码的设置等都要对称,如:A-B 与 B-A 均匀性:不同的数据类型、字长、存储设备、操作种类要设置相同的指令 • 高效率:指令的执行速度要快 指令的使用频度要高 各类指令之间要有一定的比例 • 兼容性:在同一系列机内指令系统不变(可以适当增加) 2.4.3 指令系统的优化设计 指令系统的优化设计有两个截然相反的方向: 1.复杂指令系统计算机 CISC(Complex Instruction Set Computer) 增强指令功能,设置功能复杂的指令 面向目标代码、面向高级语言、面向操作系统 用一条指令代替一串指令 2.精简指令系统计算机 RISC(Reduced Instruction Set Computer) 简化指令功能,只保留功能简单的指令 较复杂的功能用子程序来实现 2.5 精简指令系统计算机 RISC 2.5.1 从 CISC 到 RISC 2.5.2 RISC 的定义与特点 2.5.3 RISC 的精华 2.5.4 RISC 的关键技术 2.5.5 RISC 优化编译技术 2.5.1 从 CISC 到 RISC • 70 年代,指令系统已经非常庞大,指令功能相当复杂
机型IBM370/168VAx-11 APX 432 Dorado (生产年代)(1973) (1978) (1982) (1978) 指令种类 208 303 222 270 微程序容量 420K 480K 64K 136K 指令长度 16-48 16-456 6-321 8-24 采用的工艺 ECL MSITTL MSI「 NMOS VLSIECLMSI 存储器存储器存储器存储器面向堆栈 存器寄存器寄存器寄荐存储器存储器面向堆栈 指令操作类型存储器寄存器存储器寄存器 Cache容量 64KB 64KB 0 64KB ·1975年,IBM公司率先组织力量,开始研究指令系统的合理性问题 1979年研制出世界上第一台采用RISC思想的计算机IBM801, 1986年,IBM正式推出采用RISC体系结构的工作站 IBM RT PC, CISC指令系统存在的问题: (1979年,美国加洲伯克利分校 David Patterson) 1、20%与80%规律 CISC中,大约20%的指令占据了80%的处理机时间 Intel8088处理机指令系统使用频度和执行时间统计 (C语言编译程序和 PROLOG解释程序) 使用频度 执行时间 序号指令%累计%序号指令%累%
2-4 机 型 (生产年代) IBM370/168 (1973) VAX-11 (1978) iAPX 432 (1982) Dorado (1978) 指令种类 208 303 222 270 微程序容量 420K 480K 64K 136K 指令长度 16-48 16-456 6-321 8-24 采用的工艺 ECL MSI TTL MSI NMOS VLSI ECL MSI 指令操作类型 存储器-存储器 存储器-寄存器 寄存器-寄存器 存储器-存储器 存储器-寄存器 寄存器-寄存器 面向堆栈 存储器-存储器 面向堆栈 Cache 容量 64KB 64KB 0 64KB • 1975 年,IBM 公司率先组织力量,开始研究指令系统的合理性问题。 1979 年研制出世界上第一台采用 RISC 思想的计算机 IBM 801, 1986 年,IBM 正式推出采用 RISC 体系结构的工作站 IBM RT PC, CISC 指令系统存在的问题: (1979 年,美国加洲伯克利分校 David Patterson) 1、20%与 80%规律 CISC 中,大约 20%的指令占据了 80%的处理机时间。 Intel 8088 处理机指令系统使用频度和执行时间统计 (C 语言编译程序和 PROLOG 解释程序) 使用频度 执行时间 序号 指令 % 累计% 序号 指令 % 累%
MOV 24.85 24.85 IMUL 19.55 19.55 PUSH 10.3635.212Mov 7.4436.99 10.2845493PSH|1.1148.10 23456789012 JMPcc9.03 54.524JMcc10.5558.65 ADD POP 65.466|CALL7.27 73.72 RET 69.38 7 RET 78.57 CALL 73.278 DD 3.27 81.84 JUMP 2.70 75.97 9 JMP 85.10 0 SUB 2.43 78.4010|LES 87.93 INC 2.37 80.77 11 POP 2.61 90.54 PN1.92 84.67 14IML1.69 86.3614|XOR 94.25 15 DEC 1.37 87.73|15|INC 95.24 16 XOR 16 LOOP 0.64 17 REPNZ078 89.64 17 LDS 0.64 18CLD 0.54 90.18 18|cMPS0.44 19 LOOPcc 0.52 90.7019MVs0.39 97.35 TEST 0.40 91.10 20 JCXZ037 97.72 8088处理机的指令种类大约100种。 前11种指令的使用频度,前8种指令的运行时间就已经超过了80%, 前20种(20%)指令的使用频度达到91.1%,运行时间达到97.72%, 其余80%指令的使用频度只有8.9%,只占2.28%的处理机运行时间。 2、ⅥSI技术的发展引起的问题 ⅥLSI工艺要求规整性,RISC正好适应了ⅥSI工艺的要求 ·主存与控存的速度相当 简单指令没有必要用微程序实现, 复杂指令用微程序实现与用简单指令组成的子程序实现没有多大区别 由于ⅥSI的集成度迅速提高,使得生产单芯片处理机成为可能 3、软硬件的功能分配问题 ·复杂的指令使指令的执行周期大大加长。 般CISC处理机的指令平均执行周期都在4以上,有些在10以上, ·在CISC中,增强指令系统功能,简化了软件,硬件复杂了 ·1981年, Patterson等人研制了32位的 RISC I微处理器。 总共31种指令,3种数据类型,两种寻址方式 研制周期10个月,比当时最先进的M68000和Z8002快3至4倍, 1983年,又研制了 RISC II, 指令种类扩充到39种,单一的变址寻址方式,通用寄存器138个。 2.5.2RISC的定义与特点 ·卡内基梅隆 Carnegie Mellon)大学论述RISC特点:
2-5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 MOV PUSH CMP JMPcc ADD POP RET CALL JUMP SUB INC LES REPN IMUL DEC XOR REPNZ CLD LOOPcc TEST 24.85 10.36 10.28 9.03 6.80 4.14 3.92 3.89 2.70 2.43 2.37 1.98 1.92 1.69 1.37 1.13 0.78 0.54 0.52 0.40 24.85 35.21 45.49 54.52 61.32 65.46 69.38 73.27 75.97 78.40 80.77 82.75 84.67 86.36 87.73 88.86 89.64 90.18 90.70 91.10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IMUL MOV PUSH JMPcc CMP CALL RET ADD JMP LES POP DEC SUB XOR INC LOOPcc LDS CMPS MOVS JCXZ 19.55 17.44 11.11 10.55 7.80 7.27 4.85 3.27 3.26 2.83 2.61 1.49 1.18 1.04 0.99 0.64 0.64 0.44 0.39 0.37 19.55 36.99 48.10 58.65 66.45 73.72 78.57 81.84 85.10 87.93 90.54 92.03 93.21 94.25 95.24 95.88 96.52 96.96 97.35 97.72 8088 处理机的指令种类大约 100 种。 前 11 种指令的使用频度,前 8 种指令的运行时间就已经超过了 80%, 前 20 种(20%)指令的使用频度达到 91.1%,运行时间达到 97.72%, 其余 80%指令的使用频度只有 8.9%,只占 2.28%的处理机运行时间。 2、VLSI 技术的发展引起的问题 • VLSI 工艺要求规整性,RISC 正好适应了 VLSI 工艺的要求。 • 主存与控存的速度相当, 简单指令没有必要用微程序实现, 复杂指令用微程序实现与用简单指令组成的子程序实现没有多大区别。 由于 VLSI 的集成度迅速提高,使得生产单芯片处理机成为可能。 3、软硬件的功能分配问题 • 复杂的指令使指令的执行周期大大加长。 一般 CISC 处理机的指令平均执行周期都在 4 以上,有些在 10 以上, • 在 CISC 中,增强指令系统功能,简化了软件,硬件复杂了。 • 1981 年,Patterson 等人研制了 32 位的 RISC I 微处理器。 总共 31 种指令,3 种数据类型,两种寻址方式。 研制周期 10 个月,比当时最先进的 MC68000 和 Z8002 快 3 至 4 倍, • 1983 年,又研制了 RISC II, 指令种类扩充到 39 种,单一的变址寻址方式,通用寄存器 138 个。 2.5.2 RISC 的定义与特点 • 卡内基梅隆 Carnegie Mellon)大学论述 RISC 特点:
1、大多数指令在单周期内完成。 2、LOAD/ STORE结构 3、硬布线控制逻辑。 4、减少指令和寻址方式的种类 5、固定的指令格式。 6、注重编译优化技术。 ·90年代初,IEE的 Michael slater对RISC定义的描述 1、RISC为使流水线高效率执行,应具有下述特征: (1)简单而统一格式的指令译码。 (2)大部分指令可以单周期执行完成。 (3)只有LOAD和 STORE指令可以访问存储器。 (4)简单的寻址方式。 (5)采用延迟转移技术 (6)采用LOAD延迟技术 2、RISC为使优化编译器便于生成优化代码,应具有下述特征 (1)三地址指令格式 (2)较多的寄存器。 (3)对称的指令格式 2.5.3减少CPI是RISC思想的精华 程序执行时间的计算公式 P=I·CPI·T 其中:P是执行这个程序所使用的总的时间 I是这个程序所需执行的总的指令条数 CPI( Cycles Per Instruction)是每条指令执行的平均周期数 T是一个周期的时间长度 CISC与RISC的I、CPI和T的比较 类型 指令条数指令平均周期数周期时间 CPI CISC 2~15 33ns-5ns RISC 1.3~1.4 1.1~1.4 iOns- 2ns RISC的速度要比CISC快3倍左右,关键是RISC的CPI减小了 硬件方面:采用硬布线控制逻辑 减少指令和寻址方式的种类 使用固定的指令格式 采用LOAD/ STORE结构 指令执行过程中设置多级流水线等 ·软件方面:十分强调优化编译技术的作用 ·RISC设计思想也可以用于CISC中 例如:Inte公司的80x86处理机的CPI在不断缩小, 8088的CPI大于20, 2-6
2-6 1、大多数指令在单周期内完成。 2、LOAD/STORE 结构。 3、硬布线控制逻辑。 4、减少指令和寻址方式的种类。 5、固定的指令格式。 6、注重编译优化技术。 • 90 年代初,IEEE 的 Michael Slater 对 RISC 定义的描述: 1、RISC 为使流水线高效率执行,应具有下述特征: (1) 简单而统一格式的指令译码。 (2) 大部分指令可以单周期执行完成。 (3) 只有 LOAD 和 STORE 指令可以访问存储器。 (4) 简单的寻址方式。 (5) 采用延迟转移技术 (6) 采用 LOAD 延迟技术 2、RISC 为使优化编译器便于生成优化代码,应具有下述特征: (1) 三地址指令格式。 (2) 较多的寄存器。 (3) 对称的指令格式。 2.5.3 减少 CPI 是 RISC 思想的精华 • 程序执行时间的计算公式: P=I·CPI·T 其中:P 是执行这个程序所使用的总的时间; I 是这个程序所需执行的总的指令条数; CPI(Cycles Per Instruction)是每条指令执行的平均周期数; T 是一个周期的时间长度。 CISC 与 RISC 的 I、CPI 和 T 的比较 类 型 指令条数 I 指令平均周期数 CPI 周期时间 T CISC 1 2~15 33ns~5ns RISC 1.3~1.4 1.1~1.4 10ns~2ns • RISC 的速度要比 CISC 快 3 倍左右,关键是 RISC 的 CPI 减小了 • 硬件方面:采用硬布线控制逻辑 减少指令和寻址方式的种类 使用固定的指令格式 采用 LOAD/STORE 结构 指令执行过程中设置多级流水线等 • 软件方面:十分强调优化编译技术的作用 • RISC 设计思想也可以用于 CISC 中 例如:Intel 公司的 80x86 处理机的 CPI 在不断缩小, 8088 的 CPI 大于 20
80286的CPI大约是5.5, 80386的CPI进一步减小到4左右, 80486的CPI已经接近2 Pentium处理机的CPI已经与RISC十分接近 目前,超标量、超流水线处理机的CPI已经达到0.5, 实际上用IPC( Instruction Per Cycle)更确切 2.5.4RISC的关键技术 1、延时转移技术 定义:为了使指令流水线不断流,在转移指令之后插入一条有效的指令,而 转移指令被延迟执行,这种技术称为延迟转移技术 采用指令延迟转移技术时,指令序列的调整由编译器自动进行, ADd R1. R2 1:F,E 产生转移地址 2 JMP NEXT2 2 F E 3: NEXTl: Sub R3, R4 指令作废 3 重新取指令 n: NEXT2: MOvER4. A (a)一个程序 (b)流水线中指令作废 因转移指令引起的流水线断流 JMP NEXT2 1:FAB/产生转地抽 ADd R1, R2 3: NEXT1: sub R3 R4 n: F E 重新取指令 n: NEXT2: MoVE R4, A (a)调整后的程序 (b)指令调整后的流水线 采用延时转移技术的指令流水线 采用延迟转移技术的两个限制条件 (1)被移动指令在移动过程中所经过的指令之间不能有数据相关 (2)被移动的指令不破坏条件码,至少不影响后面的指令使用条件码 如果找不到符号条件的指令,必须在条件转移指令后面插入空操作 如果指令的执行过程分为多个流水段,则要插入多条指令 调整后的指令序列: MOVE R1. R2 234 CMPR3,R4;(R3)与(R4)比较 BEQ EXIT;如果(R3)=(R4)则转移到NXT ADD R4. R5 N: NEXT: MOVE R4, A 调整后的指令序列, 1: CMPR3,R4;(R3)与(R4)比较
2-7 80286 的 CPI 大约是 5.5, 80386 的 CPI 进一步减小到 4 左右, 80486 的 CPI 已经接近 2, Pentium 处理机的 CPI 已经与 RISC 十分接近。 • 目前,超标量、超流水线处理机的 CPI 已经达到 0.5, 实际上用 IPC(Instruction Per Cycle)更确切 2.5.4 RISC 的关键技术 1、延时转移技术 • 定义:为了使指令流水线不断流,在转移指令之后插入一条有效的指令,而 转移指令被延迟执行,这种技术称为延迟转移技术。 采用指令延迟转移技术时,指令序列的调整由编译器自动进行, 1: 2: 3: n: ADD R1, R2 JMP NEXT2 NEXT1: SUB R3, R4 ……… NEXT2: MOVE R4, A (a) 一个程序 1:F E 2: F E 3: F E n: F E (b) 流水线中指令作废 因转移指令引起的流水线断流 1: 2: 3: n: JMP NEXT2 ADD R1, R2 NEXT1: SUB R3, R4 ……… NEXT2: MOVE R4, A (a) 调整后的程序 1:F E 2: F E n: F E (b) 指令调整后的流水线 采用延时转移技术的指令流水线 • 采用延迟转移技术的两个限制条件 (1)被移动指令在移动过程中所经过的指令之间不能有数据相关 (2)被移动的指令不破坏条件码,至少不影响后面的指令使用条件码 如果找不到符号条件的指令,必须在条件转移指令后面插入空操作 如果指令的执行过程分为多个流水段,则要插入多条指令 调整后的指令序列: 1: MOVE R1, R2 2: CMP R3, R4 ;(R3)与(R4)比较 3: BEQ EXIT ;如果(R3)=(R4)则转移到 NEXT 4: ADD R4, R5 ……… N:NEXT: MOVE R4, A 调整后的指令序列, 1: CMP R3, R4 ;(R3)与(R4)比较 重新取指令 指令作废 产生转移地址 重新取指令 插入指令 产生转移地址
2: BEQ EXIT 如果(R3)=(R4)则转移到NEXT MOVE R1,R2;插入指令,不能有数据相关,不能改变条件吗 4 ADd R4. R5 N: NEXT: MOVE R4, A 2、指令取消技术 原因:采用指令延时技术,在许多情况下找不到可以用来调整的指令 分为三种情况: (1)向后转移(循环程序) 实现方法:循环体的第一条指令经调整后安排在两个位置,第一个位置是在 循环体的前面,第二个位置安排在循环体的后面, 如果转移成功,则执行循环体后面的指令,然后返回到循环体开始;否则, 则取消循环体后面的指令,继续执行后面的指令 ·例子: LoOP:ⅩXX YYY L00P: ZZZ ZZZ COMP Rl, R2, LOOP COMP Rl, R2, LOOP W XXX (a)调整前的程序 (b)调整后的程序 指令取消技术(向后转移) 效果:能够使指令流水线在绝大多数情况下不断流, 由于绝大多数情况下,转移是成功的 (2)向前转移( IF THEN) 实现方法:如果转移不成功执行下条指令,否则取消下条指令 例子: RRR “IF”部分的程序代码 COMP RI, R2. THRU TT T “THEN”部分的程序代码 UUU THRU: VV V 效果:成功与不成功的概率通常各为50%, (3)隐含转移技术 应用场合:用于 IF THEN结构,且THEN部分只有一条指令 实现方法:把IF的条件取反
2-8 2: BEQ EXIT ;如果(R3)=(R4)则转移到 NEXT 3: MOVE R1, R2 ;插入指令,不能有数据相关,不能改变条件吗 4: ADD R4, R5 ……… N: NEXT: MOVE R4, A 2、指令取消技术 原因:采用指令延时技术,在许多情况下找不到可以用来调整的指令 分为三种情况: (1)向后转移(循环程序) • 实现方法:循环体的第一条指令经调整后安排在两个位置,第一个位置是在 循环体的前面,第二个位置安排在循环体的后面, 如果转移成功,则执行循环体后面的指令,然后返回到循环体开始;否则, 则取消循环体后面的指令,继续执行后面的指令 • 例子: LOOP: X X X Y Y Y …… Z Z Z COMP R1, R2, LOOP W W W (a) 调整前的程序 X X X LOOP: Y Y Y …… Z Z Z COMP R1, R2, LOOP X X X W W W (b) 调整后的程序 指令取消技术(向后转移) • 效果:能够使指令流水线在绝大多数情况下不断流, 由于绝大多数情况下,转移是成功的, (2)向前转移(IF THEN ) • 实现方法:如果转移不成功执行下条指令,否则取消下条指令。 • 例子: R R R …… “IF”部分的程序代码 S S S COMP R1, R2, THRU T T T …… “THEN”部分的程序代码 U U U THRU: V V V • 效果:成功与不成功的概率通常各为 50%, (3)隐含转移技术 • 应用场合:用于 IF THEN 结构,且 THEN 部分只有一条指令 • 实现方法:把 IF 的条件取反
如果取反后的条件成立则取消下条指令,否则执行下条指令。 ·例子:IF(a=,Ra,Rb;若(Ra)>=(Rb)则取消下条指令 3、重叠寄存器窗口技术(0 verlapping register Window) 原因:RISC中,子程序比CISC中多 因传送参数而访问存的信息量很大 美国加洲大学伯克利分校的 F Baskett提出 实现方法:设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。在 每个过程使用的几个窗口中有一个窗口是与前一个过程共用,还有一个窗口是与 下一个过程共用。 例子:(在 RISC II中采用的方法) 寄存器重叠 A局部寄存器A局部寄存器 [AB公用寄存仁传送参数 传送参数 寄存器重叠 106 B局部寄存器 B局部寄存器 105B,C公用寄存 「传送参数 传送参数 90 B局部寄存器 C局部寄存器 89C,D公用寄存 传送参数 与上过程合温与上一过程合温上一过程合 6局部寄存器16局部寄存器16局部寄存器 10 与下一过程合1与下一过程合:下一过程合 全局寄存器 9 全局寄存器 全局寄存器 全局寄存器 物理寄存器 A过程的 B过程的 C过程的 寄存器窗口 寄存器窗口 寄存器窗口 重叠寄存器窗口技术 ·SUN公司的 SPARC、 SuperSParC、 UltrASparc处理机,把最后一个过程与第 个过程的公用寄存器重叠起来,形成一个循环圈。 效果:可以减少大量的访存操作 当寄存器溢出时,要在主存中开辟一个堆栈 寄存器窗口技术的效果 程序名称调用次数最大调用深度 RISCII. RISCII AX-11 溢出次数访存次数访存次数 2-9
2-9 如果取反后的条件成立则取消下条指令,否则执行下条指令。 • 例子: IF (a<b) THEN b=b+1 COMP >=, Ra, Rb ;若(Ra)>=(Rb)则取消下条指令 INC Rb 3、重叠寄存器窗口技术(Overlapping Register Window) • 原因:RISC 中,子程序比 CISC 中多 因传送参数而访问存的信息量很大 • 美国加洲大学伯克利分校的 F Baskett 提出 • 实现方法:设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。在 每个过程使用的几个窗口中有一个窗口是与前一个过程共用,还有一个窗口是与 下一个过程共用。 • 例子:(在 RISC II 中采用的方法) 137 132 寄存器重叠 131 122 A 局部寄存器 A 局部寄存器 121 116 A,B 公用寄存 器 传送参数 传送参数 寄存器重叠 115 106 B 局部寄存器 B 局部寄存器 105 100 B,C 公用寄存 器 传送参数 传送参数 99 90 B 局部寄存器 C 局部寄存器 89 84 C,D 公用寄存 器 传送参数 31 26 与上一过程合 用 31 26 与上一过程合 用 31 26 与上一过程合 …… 25 用 16 局部寄存器 25 16 局部寄存器 25 16 局部寄存器 10 15 10 与下一过程合 用 15 10 与下一过程合 用 15 10 与下一过程合 9 用 0 全局寄存器 9 0 全局寄存器 9 0 全局寄存器 9 0 全局寄存器 物理寄存器 A 过程的 寄存器窗口 B 过程的 寄存器窗口 C 过程的 寄存器窗口 重叠寄存器窗口技术 • SUN 公司的 SPARC、SuperSPARC、UtraSPARC 处理机,把最后一个过程与第 一个过程的公用寄存器重叠起来,形成一个循环圈。 • 效果:可以减少大量的访存操作。 当寄存器溢出时,要在主存中开辟一个堆栈 寄存器窗口技术的效果 程序名称 调用次数 最大调用深度 RISC II 溢出次数 RISC II 访存次数 VAX-11 访存次数
Quicksort 111K(0. 7%) 10 64 4K(0.8%)|696K60‰ Puzzle43K(8.0%) 20 148K(1.0%)44(8) 过程调用所需开销的比较 机器类型执行指令条数执行时间微秒)访问存储器次数 AX-11 PDP-1 MC68000 5996 19 052 RISC II 0.2 Quicksort程序的调用的次数多,深度不大,Puze程序正好相反 4、指令流调整技术 目标:通过变量重新命名消除数据相关,提高流水线执行效率 例子:调整后的指令序列比原指令序列的执行速度快一倍 ADR1,R2,R3;(R1)+(R2)→R3 DD R1. R2. R3 ADD R3, R4, R5:(R3)+(R4)-R5 MUL R6. R7. RO MULR6.R7,R3;(R6)×(R7)→R3 ADd R3, R4, R5 MULR3,R8,R9;(R3)×(R8)→R9 MUL RO, R8, R9 (a)调整前的指令序列 (b)调整后的指令序列 5、以硬件为主固件为辅 固件的主要缺点是:执行速度低 主要优点是:便于实现复杂指令,便于修改指令系统 ·RISC主要采用硬联逻辑来实现指令系统 对于复杂指令,也微程序技术实现。 2.5.5RISC优化编译技术 RISC对编译器带来的方便主要有: 1、指令系统比较简单、对称、均匀,指令选择工作简单。 2、选择寻址方式的工作简单,省去了是否生成访问存储器指令的选择工作。 3、用于大多数指令在一个周期内执行完成,为编译器调整指令序列提供了 极大的方便。 RISC对编译器造成的困难主要有: 1、必须精心安排每一个寄存器的用法,以便充分发挥每一个通用寄存器的 效率,尽量减少访问主存储器的次数。 2、做数据和控制相关性分析,要调整指令的执行序列,并与硬件相配合实 现指令延迟技术和指令取消技术等 3、要设计复杂的子程序库,RISC的子程序库通常比CISC的大得多。 本章重点: 1、浮点数的性质和设计方法 2、自定义数据表示方法的原理 2-10
2-10 Quicksort 111K(0.7%) 10 64 4K(0.8%) 696K(50%) Puzzle 43K(8.0%) 20 124 8K(1.0%) 444K(28%) 过程调用所需开销的比较 机器类型 执行指令条数 执行时间(微秒) 访问存储器次数 VAX-11 PDP-11 MC68000 RISC II 5 19 9 6 26 22 19 2 10 15 12 0.2 Quicksort 程序的调用的次数多,深度不大,Puzzle 程序正好相反 4、指令流调整技术 • 目标:通过变量重新命名消除数据相关,提高流水线执行效率 • 例子:调整后的指令序列比原指令序列的执行速度快一倍 ADD R1, R2, R3 ;(R1)+(R2)→R3 ADD R1, R2, R3 ADD R3, R4, R5 ;(R3)+(R4)→R5 MUL R6, R7, R0 MUL R6. R7, R3 ;(R6)×(R7)→R3 ADD R3, R4, R5 MUL R3, R8, R9 ;(R3)×(R8)→R9 MUL R0, R8, R9 (a) 调整前的指令序列 (b) 调整后的指令序列 5、以硬件为主固件为辅 • 固件的主要缺点是:执行速度低 主要优点是:便于实现复杂指令,便于修改指令系统 • RISC 主要采用硬联逻辑来实现指令系统 对于复杂指令,也微程序技术实现。 2.5.5 RISC 优化编译技术 RISC 对编译器带来的方便主要有: 1、指令系统比较简单、对称、均匀,指令选择工作简单。 2、选择寻址方式的工作简单,省去了是否生成访问存储器指令的选择工作。 3、用于大多数指令在一个周期内执行完成,为编译器调整指令序列提供了 极大的方便。 RISC 对编译器造成的困难主要有: 1、必须精心安排每一个寄存器的用法,以便充分发挥每一个通用寄存器的 效率,尽量减少访问主存储器的次数。 2、做数据和控制相关性分析,要调整指令的执行序列,并与硬件相配合实 现指令延迟技术和指令取消技术等。 3、要设计复杂的子程序库,RISC 的子程序库通常比 CISC 的大得多。 本章重点: 1、浮点数的性质和设计方法 2、自定义数据表示方法的原理