钱晓捷,微机原理与接口技术·第4版——基于IA-32处理器和32位汇编语言第9章处理器性能提高技术9.1精简指令集计算机技术9.2指令流水线技术9.3浮点数据处理单元9.4多媒体指令微机原理与接口技术·第4版机械工业出版社9.1精简指令集计算机技术精简指令集计算机技术起源向量巨型机CRAY-I:精简指令、面向寄存器操作IBM801小型机:单周期固定格式指令、高速缓冲存储器以及编译技术相结合RISC-I:第一个精简指令集计算机处理器芯片在高档的工程工作站得到广泛应用最新开发的处理器普遍采用精简指令集计算机设计思想Simplebutelegant微机原理与接口技术·第4版机械工业出版社9.1.1复杂指令集和精简指令集复杂指令集计算机CISC指令系统丰富、程序设计方便、程序短小、执行性能高处理器硬件复杂,不易使用先进的流水线技术,导致其执行速度和性能难以进一步提高精简指令集计算机RISC指令系统很简单,只有少数简单、常用的指令处理器硬件简单,比较方便地实现优化80%和20%规律微机原理与接口技术·第4版机械工业出版社处理器性能公式处理器执行时间=IC×CPI×TIC=程序的指令条数CPI=执行每条指令所需的平均时钟周期数T=每个时钟周期的时间(时钟频率的倒数)处理器执行程序时间越少,计算机性能越高减少时钟周期时间T,即提高时钟频率CISC通过使用复杂指令减少ICRISC使用简单指令减少CPI相互借鉴、共同提高微机原理与接口技术·第4版机械工业出版社9.1.2RISC技术的主要特点指令条数较少寻址方式简单面向寄存器操作指令格式规整单周期执行先进的流水线技术编译器优化……Load-Store结构微机原理与接口技术·第4版机械工业出版社9.2指令流水线技术洗衣房的流水作业三个阶段:1.水洗(30)2.烘干(40)3.熨烫(20)ABCD6PM789任务顺序时间304040404020微机原理与接口技术·第4版机械工业出版社9.2.1指令流水线取指执行取指译码执行取指译码地址执行回写S1S2S3S4S5指令读取指令译码地址计算指令执行结果回写微机原理与接口技术·第4版机械工业出版社1.流水线思想指令流水线技术:把执行指令这个过程分解成多个子过程,执行指令的功能单元也设计成多个相应的处理单元,多个子过程在多个处理单元并行操作,同时处理多条指令没有减少每个指令的执行时间有助于减少整个程序(多条指令)的执行时间指令流水线开始需要“填充时间(Fill)”,最后有一个“排空时间(Drain)”要发挥流水线效率需要连续不断地处理指令时空图微机原理与接口技术·第4版机械工业出版社2.流水线中的指令相关指令相关:指令之间存在相互依赖关系常使下一条指令无法在设计的单位时间内执行导致流水线的“断流”,性能降低有三种类型的指令相关资源冲突:当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求数据相关:在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)无法得到控制相关:流水线遇到分支指令或其他改变PC值的指令数据旁路分支预测预取分支目标微机原理与接口技术·第4版机械工业出版社9.2.280486的指令流水线5级指令流水线,每级1个时钟周期PF指令预取(prefetch)D1指令译码1(decodestage1)对所有操作码和寻址方式信息进行译码D2指令译码2(decodestage2)将操作码扩展为ALU控制信号,存储器地址计算EX指令执行(execute)完成ALU操作和Cache存取WB回写(writeback)更新在EX步骤得到的寄存器数据和状态标志微机原理与接口技术·第4版机械工业出版社数据旁路(直通)MOVreg1,mem1ADDreg1,reg2MOVmem2,reg1数据相关微机原理与接口技术·第4版机械工业出版社流水线停顿MOVreg1,mem1ADDreg2,[reg1]数据相关停顿微机原理与接口技术·第4版机械工业出版社预取分支目标CMPreg,immJCtarget……target:结构相关目标指令预取微机原理与接口技术·第4版机械工业出版社9.3浮点数据处理单元传统的处理器或简单的微控制器只有整数处理单元有些实数经过移动小数点位置,可以用整数编码表达和处理,但可能要损失精度实数经过一定格式转换后,完全用整数指令仿真,但处理速度难尽人意计算机表达实数要采用浮点数据格式x87FPU(Floating-PointUnit)Intel80x87浮点协处理器与80x86处理器配合80486及以后的IA-32处理器集成浮点处理单元微机原理与接口技术·第4版机械工业出版社9.3.1实数编码实数(RealNumber)的科学表示法表达-123.456=-1.23456×102包括三个部分指数:反映数据的大小或量级有效数字:反映数据的精度符号位:表达数据的正负实数是一个连续系统,理论上可以表示任意大小与精度的数据计算机表达实数的浮点格式采用科学表达法,精度和大小有限,表达的数值离散,只是实数系统的一个子集微机原理与接口技术·第4版机械工业出版社1.浮点数据格式符号(Sign)表示数据的正负在最高有效位(MSB)负数=1,正数=0指数(Exponent)=阶码表示数据以2为底的幂恒为整数,使用偏移码表达有效数字(Significand)表示数据的有效数字,反映数据的精度一般采用规格化形式,是一个纯小数尾数(Mantissa)、小数或分数(Fraction)MSB有效数字指数符号示意图微机原理与接口技术·第4版机械工业出版社2.浮点阶码标准偏移码N位偏移码=真值+2N标准偏移码的真值=偏移码-2NIEEE754标准浮点阶码全0、全1两个编码用作特殊目的单精度浮点数据真值=浮点阶码-127,浮点阶码=真值+127双精度浮点数据真值=浮点阶码-1023浮点阶码=真值+1023微机原理与接口技术·第4版机械工业出版社3.规格化浮点数通常使用的浮点数据是规格化浮点数有效数字表达的数值:1.XXX…XX去除前导0最高位恒为1,隐含一个整数1小数点在最左端有效数字只表达小数部分1≤有效数值<2微机原理与接口技术·第4版机械工业出版社〔例9-1〕把浮点格式数据转换为实数表达某个单精度浮点数如下:BE580000H=10111110010110000000000000000000B=10111110010110000000000000000000B符号位为1,表示负数指数编码是01111100,表示指数=124-127=-3有效数字部分是1011000000000000000表示有效数=1.1011B=1.6875这个实数为:-1.6875×2-3=-1.6875×0.125=-0.2109375微机原理与接口技术·第4版机械工业出版社〔例9-2〕把实数转换成浮点数据格式100.25=01100100.01B=1.10010001B×26符号位=0指数部分是68位阶码为10000101(=6+127=133)有效数字部分是10010001000000000000000100.25表示成单精度浮点数为:01000010110010001000000000000000B=01000010110010001000000000000000B=42C88000H微机原理与接口技术·第4版机械工业出版社4.非规格化浮点数浮点格式的规格化数表达的实数有限下溢(Underflow):比最小数还要接近0上溢(Overflow):比最大数还要大单精度浮点规格化浮点数范围±1.18×10-38~±3.40×1038非规格化浮点数指数编码为全0表示-126有效数字仅表示小数部分、但不能是全0能够表示到±1.40×10-45非规格化浮点数表示下溢微机原理与接口技术·第4版机械工业出版社5.零和无穷大机器零:真值0的浮点数据格式指数和有效数字的编码都是全0符号位可以是0或1,分成+0和-0无穷大:大于最大数的真值的规格化浮点数指数编码为全1,有效数字编码为全0正无穷大(+∞)和负无穷大(-∞)非数NaN:特殊的编码,不是实数的一部分指数编码是全1、有效数字编码不是全0示意图微机原理与接口技术·第4版机械工业出版社9.3.2浮点寄存器x87FPU浮点执行环境的寄存器8个浮点数据寄存器标记寄存器状态寄存器控制寄存器处理器需要寄存器协助进行操作微机原理与接口技术·第4版机械工业出版社1.浮点数据寄存器8个浮点数据寄存器,编号FPR0~FPR780位浮点寄存器存储扩展精度格式数据采用早期处理器的堆栈结构8个数据寄存器不是随机存取按照“后进先出”的堆栈原则工作并且首尾循环浮点数据寄存器常被称为浮点数据栈每个FPR寄存器对应一个2位标记(Tag)8个标记组成一个16位标记寄存器示意图微机原理与接口技术·第4版机械工业出版社2.浮点状态寄存器堆栈标志TOP字段指明当前栈顶SF和C1表达堆栈上溢和下溢C3/C2/C0保存比较结果异常标志:反映浮点运算可能出现的异常PE精度异常UE下溢异常OE上溢异常ZE被零除异常DE非规格化操作数异常IE非法操作异常微机原理与接口技术·第4版机械工业出版社3.浮点控制寄存器异常屏蔽控制(MaskControl)决定6种错误是否被屏蔽x87FPU初始化后默认屏蔽所有异常精度控制(PrecisionControl)控制浮点计算结果的精度程序通常采用默认扩展精度舍入控制(RoundingControl)控制浮点计算采用的舍入类型默认采用就近舍入(偶)示意图微机原理与接口技术·第4版机械工业出版社舍入控制RC舍入类型舍入原则00就近舍入(偶)舍入结果最接近准确值。如果上下两个值一样接近,就取偶数结果(最低位为0)01向下舍入(趋向-∞)舍入结果接近但不大于准确值10向上舍入(趋向+∞)舍入结果接近但不小于准确值11向零舍入(趋向0)舍入结果接近但绝对值不大于准确值微机原理与接口技术·第4版机械工业出版社〔例9-3〕把实数0.2转换成浮点数据格式0.2=0.001100110011B=1.100110011B×2-3符号位=0指数部分是-3,8位阶码为01111100有效数字是无限循环数取前23位:10011001100110011001100后面是110011B,默认最近舍入,进位1有效数字编码是:10011001100110011001101这样,0.2表示成单精度浮点数为:00111110010011001100110011001101B=00111110010011001100110011001101B=3E4CCCCDH微机原理与接口技术·第4版机械工业出版社9.3.3浮点指令及其编程x87FPU具有自己的指令系统共有几十种浮点指令指令助记符均以F开头常用的指令类型:浮点传送指令、浮点算术运算指令、浮点超越函数指令、浮点比较指令和FPU控制指令浮点指令的操作数寻址方式:①隐含寻址:在当前数据寄存器顶ST(0)②寄存器寻址:在指定的数据寄存器栈ST(i)③存储器寻址:在主存中微机原理与接口技术·第4版机械工业出版社1.浮点传送指令取数指令FLD从存储器或浮点数据寄存器取得数据并压入(Push)浮点寄存器栈顶st(0)存数指令FST浮点数据寄存器栈顶数据存入主存或另一个浮点数据寄存器,寄存器栈没有变化存数且出栈指令FSTP执行相应存数指令功能并弹出(Pop)浮点寄存器栈顶示意图微机原理与接口技术·第4版机械工业出版社〔例9-4〕浮点传送程序-1;数据段0000000042C880003E4CCCCDf32dreal4100.25,0.2;单精度浮点数00000008BFCB000000000000f64dreal8-0.2109375;双精度浮点数000000104023BABAECD400000000f80dreal10100.25e9;扩展精度浮点数0000001A0000000