590 likes | 814 Views
§4 指令系统的发展和改进. CISC 和 RISC 按 CISC 方向发展和改进指令系统 按 RISC 方向发展和改进指令系统. 指令系统的优化设计. 优化指令系统设计的 3 个阶段:
E N D
§4 指令系统的发展和改进 • CISC和RISC • 按CISC方向发展和改进指令系统 • 按RISC方向发展和改进指令系统
指令系统的优化设计 • 优化指令系统设计的3个阶段: • CISC:复杂指令系统60年代至70年代中期 • RISC:精简指令系统70年代后期至现在 • VLIW:80年代初期至现在 • 关键在软硬件的功能分配,系统的综合性能时间与空间;执行、编译、编写时间
复杂指令系统计算机 • Complex Instruction Set Computer CISC • 增强原有指令的功能,设置更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬化。 • IBM 370、VAX-11/780、VAX 8600、Intel i486、MC 68040 • 方法:用一条指令代替一串指令 • 增加新的指令 • 增强指令功能,设置功能复杂的指令 • 增加寻址方式 • 增加数据表示方式 • 优化的途径: • 面向目标代码 • 面向高级语言 • 面向操作系统
指令系统复杂的原因 • 当高级语言(如C语言)取代汇编语言后,就不断增加新的复杂指令来支持高级语言程序的高效实现; • 由于访主存的速度显著低于访CPU寄存器的速度,因此在功能相同时,不断用一条功能复杂的新指令来取代原先需一连串指令完成的功能,将程序软件固化和硬化; • 系列机软件要求向上兼容和向后兼容,使得指令系统不断扩大和增加;
精简指令系统计算机 • Reduced Instruction Set Computer RISC • 减少指令总数和简化指令的功能,降低硬件设计的复杂性,提高指令的执行速度。 • Sun SPARC、Intel i860、MC 88100、IBM 6150 • 只保留功能简单的指令 • 功能较复杂的指令用软件实现 • 提高流水线效率
超长指令字 • Very Long Instruction Word VLIW • 一种显式指令级并行指令系统 • 二维程序结构 • 指令级并行度高
按CISC方向发展与改进指令系统 • 面向目标程序的优化实现改进 • 面向高级语言的优化实现改进 • 面向操作系统的优化实现改进
面向目标程序的优化实现来改进 • 对使用频度高的指令增强其功能 • 静态使用频度---减少存储空间 • 动态使用频度---减少执行时间 • 提高运算型指令功能 • 提高传送指令功能 • 增加成组取、成组传送指令 • 增加条件转移指令 • 增加程序控制指令功能
举例 • IBM360指令串: (VARIABLE)+N->(VARIABLE) ST REG,SAVE L REG,VARIABLE 增设一条指令 LA REG,N,(REG) 增量 N X2 B2 D2 ST REG VARIABLE L REG,SAVE 5条,20个字节,8.8微秒 1条,4个字节,2.7微秒
面向高级语言的优化实现来改进 • 增加对高级语言和编译系统支持的指令功能 • 高级语言计算机指令系统 • 对源程序中各种高级语言语句的使用频度进行统计 • 面向编译,优化代码生成 • 改进指令系统,减少语义差距 • 让机器具有分别面向各种高级语言的多种指令系统、多种系统结构,并能动态切换 • 发展高级语言计算机; • 间接执行高级语言机器:高级语言直接成为机器的汇编语言 • 直接执行高级语言机器:让高级语言本身作为机器语言,由硬件或固件对高级语言源程序的语句逐条进行解释执行;
COBOL PL/1 Von Neumann结构 APL BASIC FORTRAN 各种语言与传统机器指令系统结构的语义差距
高级语言程序 汇编 直 接 执 行 高 级 语 言 机 器 解 释 间接执行 高级语言 机 器 编译 编译 面向 高级语言 机 器 传统 机器 解释 解释 解释 微程序机器级 各种机器的语义差距
面向操作系统的优化实现来改进 • 通过对操作系统中常用的指令和指令串的使用频度进行统计和分析来改进 • 专用于操作系统的新指令,举例: • 测试与置定 自学 • 比较与交换 自学 • 把操作系统由软件子程序实现的某些功能进行硬化或固化,改用硬件和固件实现 • 发展让操作系统由专门的处理机来完成的功能分布处理系统结构
按RISC方向发展与改进指令系统 • 精简指令系统思想的提出 • IBM公司的John Cocke设计一个电话交换系统的控制器,1979年研制出32位的IBM 801 小型计算机,120条指令,10MIPS(1千万条指令/秒)。 • 1979年,美国加州大学伯克利分校David Patterson研究小组开始研究RISC系统。 • 1981年Patterson等人研制了32位RISC I微处理器,共31种指令,3种数据类型,2种寻址方式;研制周期10个月,比当时最先进的MC68000和Z8002快3至4倍; • 1983年又研制了RISC II,指令种类扩充到39种,单一的变址寻址方式,通用寄存器138个
CISC的主要特点 • 指令系统庞大,指令功能复杂,指令格式、寻址方式多; • 绝大多数指令需多个机器周期完成; • 各种指令都可访问存储器; • 采用微程序控制; • 有专用寄存器,少量; • 难以用优化编译技术生成高效的目标代码程序;
CISC存在的问题 • 指令系统庞大,指令功能复杂,指令格式、寻址方式多; • 执行速度慢; • 难以优化编译,编译程序复杂; • 80%的指令在20%的运行时间使用; • 无法并行; • 无法兼容;
导致CISC指令系统复杂的主要原因 • 减少语义差距 • 减少存储空间,提高速度 • 为了向上兼容 • 带来的后果 • 电路复杂,编译效率低 • 无法并行; • 无法兼容
项目 VAX11/780 1978年 Intel 80386 1985年 MC68020 1984年 指令条数 304 111 101 寻址方式 24 11 16 指令格式 变长 (2-57byte) 变长 (1-17byte) 16 典型的CISC产品
从CISC到RISC • CISC指令系统存在的问题: • 20%与80%规律 • CISC中,大约20%的指令占据了80%的处理机时间。其余80%指令:使用频度只占20%的处理机运行时间 • VLSI技术的发展引起的问题 • VLSI工艺要求规整性,RISC正好适应了VLSI工艺的要求 • 主存与控存的速度相当,简单指令没有必要用微程序实现,复杂指令用微程序实现与用简单指令组成的子程序实现没有多大区别; • 由于VLSI的集成度迅速提高,使得生产单芯片处理机成为可能。
二八法则 • 1897年,意大利经济学家帕累托(1848~1923)偶然注意到英国人的财富和收益模式,于是潜心研究这一模式,并于后来提出了著名的二八法则。 • 一般情况下,我们付出的80%的努力,也就是绝大部分的努力,都没有创造收益和效果,或者是没有直接创造收益和效果。而我们80%的收获却仅仅来源于20%的努力,其他80%的付出只带来20%的成果。
二八法则 • 为公司创造80%收益的客户实际上只占所有客户的20%;而在企业中,20%的员工为企业创造了80%的收益。 • 80%的交通事故是被那些20%的违规驾驶者造成的;家里的地毯有20%遭受了80%程度的磨损;你所有衣服中的20%占据了你全部生活时间的80%;你的电脑80%的故障是由20%的原因导致的;你一生使用的80%的文句是用字典里20%的字组成的。而在考试中,20%的知识能为你带来80%的分数。同样的道理,你20%的朋友,占据了你80%与朋友见面的时间……
二八法则 • 20%时间赢得80%的快乐 • 研究二八法则的专家理查德·科克认为:凡是洞悉了二八法则的人,都会从中受益匪浅,有的甚至会因此改变命运。 • 传统的智慧教你不要把所有的鸡蛋放在同一个篮子里,可是二八法则却要你小心选定一个篮子,将你所有的鸡蛋放进去,然后像老鹰一样盯紧它。
二八法则 • 在CISC中,大约20%的指令占据了80%的处理机执行时间。 • 例如:8088处理机的指令种类大约100种 • 前11种(11%)指令的使用频度已经超过80% • 前8种(8%)指令的运行时间已经超过80% • 前20种(20%)指令:使用频度达到91.1%,运行时间达到97.72% • 其余80%的指令:使用频度只有8.9%,2.28%的处理机运行时间
从CISC到RISC(续) • 软硬件的功能分配问题 • 复杂的指令使指令的执行周期大大加长一般CISC处理机的指令平均执行周期都在4以上,有些在10以上 • CISC增强了指令系统功能,简化了软件,但硬件复杂了,设计周期加长。
RISC的定义 • 卡内基梅隆(Carnegie Mellon)大学论述RISC的特点如下: • 大多数指令在单周期内完成 • LOAD/STORE结构 • 硬布线控制逻辑 • 减少指令和寻址方式的种类 • 固定的指令格式 • 注重编译的优化
RISC的定义 • 90年代初,IEEE的Michael Slater对RISC定义的描述: • RISC为使流水线高效率执行,应具有: • 简单而统一格式的指令译码 • 大部分指令可以单周期执行完成 • 仅Load和Store指令可以访问存储器 • 简单的寻址方式 • 采用延迟转移技术 • 采用LOAD延迟技术 • RISC为使优化编译器便于生成优化代码,应具有: • 三地址指令格式、较多的寄存器、对称的指令格式
减少CPI是RISC思想的精华 • 程序执行时间的计算公式: P = I· CPI · T 其中: • P是执行这个程序所使用的总的时间; • I是这个程序所需执行的总的指令条数; • CPI (Cycles Per Instruction)是每条指令执行的平均周期数 • T是一个周期的时间长度。 • RISC的速度要比CISC快3倍左右,关键是RISC的CPI减小了
类型 指令条数I 指令平均周期数CPI 周期时间T CISC 1 2~15 33ns~5ns RISC 1.3~1.4 1.1~1.4 10ns~2ns • 同类问题的程序长度,RISC比CISC长30%~40% • CPI,RISC比CISC少2倍~10倍 • 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十分接近例如: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)更确切。
RISC的设计原则 Simple is fast,Small is fast • 使用频度很高的指令 • 大大减少寻址方式 • 所有指令在一个机器周期完成 • 扩大通用寄存器个数 • 采用硬联控制实现 • 通过精简指令和优化设计编译程序,易简单有效的方式支持高级语言
功能 CISC RISC 指令系统 复杂、庞大 简单、精确 指令条数 >200 <100 指令格式 >4 <4 寻址方式 >4 <4 指令字长 不固定 32bit 可访存指令 不加限制 只有LOAD/STORE 各种指令使用频率 相差太大 相差不大 各种指令执行时间 相差太大 绝大多数一周期完成 优化编译系统 很难 较容易 程序源代码长度 短 长 控制逻辑实现方式 绝大多数微程序控制 绝大多数为硬连线控制 CISC与RISC的主要特征对比
主要RISC产品 • DEC公司 • Alpha 21064,21066, 21164 ,21264,21364-end • MIPS公司(SGI公司) • R3000,R4000,R8000,R10000,R12000, R14000,R18000 • IBM, Motorola ,Apple • PowerPC 601,602,603,603E,604,615,620,630,640 • Power3、Power4、Power4+、Power5 • HP公司 • PA-RISC8000:8800,8700,8900 • SUN公司 • SPARC MicroSPARC, SuperSPARC,UltraSPARC I,II,III,IV,V
RISC结构采用的基本技术 • 遵循按RISC机器一般原则设计的技术 • 在逻辑上采用硬联实现和微程序固件实现相结合的技术 • 在CPU中设置数量较大的寄存器组,并采用重叠寄存器窗口的技术 • 指令的执行采用流水和延迟转移技术 • 采用认真设计和优化编译系统设计的技术
重叠寄存器窗口技术 • 目标:缩短CALL、RETURN操作时间 • 方法:将设置的大量的寄存器,分成多个组和全局区;每个组中分高、本地、低三个区;相邻组的高、低区重叠,加速参数与结果的传递。 • 结果:节省了保存现场和恢复现场等辅助时间。
延迟转移技术(Delayed Branch) • 将转移指令与其前面的一条指令对换位置,让成功转移总是在紧跟的指令执行之后发生,从而使预取的指令不作废,节省一个机器周期。
采用比较转移指令 • 在RISC机中,把比较和转移(在CISC机中需用两条指令完成的功能)合并成一条指令。该指令将直接对两个对象(寄存器-寄存器或存储器-立即数)进行相等或不等比较,然后根据比较结果判别是否进行转移。这样就可省去一条指令,并不受条件码的约束。
优化编译技术 • 使用大量寄存器,优化寄存器的分配和使用,提高效率,减少访存次数。 • 减少局部变量和工作变量的中间传递。 • 优化调整指令的执行次序,减少机器的空等时间。
举例 设A,A+1,B,B+1为主存单元。
RISC技术的发展 • 采用RISC后的好处 • 简化指令系统设计 • 提高机器的执行速度和效率 • 降低设计成本,提高系统可靠性 • 提供直接支持高级语言的能力,简化编译程序的设计 • RISC的不足 • 指令少,加重汇编程序员的负担 • 浮点运算和虚拟存储器支持不足 • 编译程序难写
VLIW • 由美国J. A. Fisher教授于1981年首先提出最初来源于水平微程序 • 由J. A. Fisher创建的Mutiflow公司研制了的世界上第一台VLIW处理机TRACE28/300 • 一条指令中包含有多个能够同时执行的操作TRACE28/300处理机的一条超长指令中最多有28条可以同时执行的指令。 • 算法和编译技术是关键 • 在下一代处理机中将普遍采用
一种显式指令级并行指令系统。 • 在一条VLIW指令中包含有多个相同或不同的操作字段(每个操作字段的功能相当于一般处理机中的一条指令)。 • 每个操作字段能够分别独立控制各自的功能部件同时工作。 • 二维程序结构 • 指令级并行度高