《微型计算机系统与接口》电子教案 6第6章 浮点部件

上传人:E**** 文档编号:89404186 上传时间:2019-05-24 格式:PPT 页数:35 大小:306KB
返回 下载 相关 举报
《微型计算机系统与接口》电子教案 6第6章  浮点部件_第1页
第1页 / 共35页
《微型计算机系统与接口》电子教案 6第6章  浮点部件_第2页
第2页 / 共35页
《微型计算机系统与接口》电子教案 6第6章  浮点部件_第3页
第3页 / 共35页
《微型计算机系统与接口》电子教案 6第6章  浮点部件_第4页
第4页 / 共35页
《微型计算机系统与接口》电子教案 6第6章  浮点部件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《《微型计算机系统与接口》电子教案 6第6章 浮点部件》由会员分享,可在线阅读,更多相关《《微型计算机系统与接口》电子教案 6第6章 浮点部件(35页珍藏版)》请在金锄头文库上搜索。

1、1,第6章 浮点部件,2,Pentium 微处理器把浮点部件与整数部件、分段部件、分页部件等都集成到同一芯片之内,而且执行的是流水线操作方式。把整个浮点部件设计成每个时钟周期都能够进行一次浮点操作,每个时钟周期可以接受两条浮点指令,但是其中的一条浮点指令必须是交换类的指令。 对程序设计人员来说,可以把Pentium微处理器芯片内的浮点部件FPU(Floating Point Unit)看成是一组辅助寄存器,是数据类型的扩展;还可以把浮点部件的指令系统看成是Pentium微处理器指令系统的一个子集。本章将要说明的是Pentium微处理器片内的浮点部件结构、数值寄存器、浮点流水线操作以及数据类型等

2、。,3,61 浮点部件体系结构 611 数值寄存器 Pentium微处理器浮点部件的数值寄存器是由8个80位的数值寄存器、三个16位的寄存器以及五个错误指针寄存器构成。 其中,这八个80位的能各自独立进行寻址的数值寄存器,又可用来构成一个寄存器堆栈。 而三个16位的寄存器分别称之为浮点部件FPU的状态字寄存器、浮点部件控制字寄存器和标记字寄存器。,4,1. 寄存器堆栈 如上所述,Pentium微处理器片内浮点部件的八个80位的各自寻址的数值寄存器可以构成一个80位宽的寄存器堆栈,如图6.1所示。由于构成寄存器堆栈的每个数值寄存器都是80位宽。这8个80位的数据寄存器的容量相当于20个32位寄存

3、器的容量。而且每一个寄存器还可以进一步细分为几个字段,以便与浮点部件中的扩展精度数据形式相对应。 数值指令在对数据寄存器进行寻址时,是以堆栈栈顶的那个寄存器为基准实施操作的。任何时候堆栈栈顶那个寄存器都是由浮点部件的状态字寄存器中TOP(堆栈栈顶)字段指示的。在进行压栈操作时,栈顶值减1,同时将一个值装到新的栈顶寄存器。若从当前栈顶寄存器取出一个值(即将一个数上托出栈),栈顶TOP的值则增1。浮点部件中的这个寄存器堆栈与存储器中的堆栈类似,都是朝着地址值较低的寄存器向下增长。,5,浮点部件寄存器组,(a)浮点部件的数值寄存器,(b)控制、状态、标记字寄存器 (c)指令指针、数据指针寄存器,6,

4、图6.2中展示出了浮点部件的状态字寄存器结构,此状态字中各字段所标记的内容反映了浮点部件的整体状态。借助于Pentium 微处理器 CPU中的整数部件,还可以对浮点部件的状态实施检查。 Pentium 微处理器片内浮点部件状态字寄存器内容反映的是浮点部件的全部状态和环境。根据其作用状态字又可以进一步细分成两个字段: 一个是异常事故标志字段, 另一个则是状态位字段。 首先用一条存放在存储器中的浮点操作指令检查状态字,然后再使用Pentium 微处理器指令代码再检查各位状态。图中展示出了状态字各字段名字和功能。,7,图6.2 浮点部件的状态字,8,下面就来逐一介绍浮点部件状态字各字段意义。 (1)

5、位15B这是1位字段,是浮点部件忙标志位,表示浮点部件目前正在执行指令还是空闲状态。具体说来,位15反映的是位7(ES概括出错状态)的内容。 (2)位1311TOP这是一个三位字段,是栈顶指针位。表示八个寄存器组成的堆栈中的哪一个是当前栈顶。 若TOP值000 表示寄存器0为当前栈顶 若TOP值001 表示寄存器1为当前栈顶 若TOP值010 表示寄存器2为当前栈顶 . . . 若TOP值111 表示寄存器7为当前栈顶,9,(3)位14、位108C3 C2 C1 C0这是一个4位的字段,是4位数值条件码位,与Pentium 微处理器的标志寄存器EFLAGS中的标志类似。用这4位得到有关当前栈顶

6、的辅助信息,根据这些信息产生某些条件转移。 (4)位7ES是1位字段。是概括出错状态位。当任何一个非屏蔽的异常事故状态位,即本状态字中的位5位0被置成1时,就把位7ES位也置成1,否则,就将其置成0。而每当将出错状态位置成1时,就随之发出 FERR# 浮点出错信号。 (5) 位6SF是堆栈故障异常标志位,也是1位字段。用它来区别是由于堆栈上溢而出现的无效操作还是由于堆栈下溢而出现的无效操作。当堆栈标志位6被置成1,位9(C11)表示上溢、位9(C10)表示下溢。 (6)位5PE是1位字段,表示精度异常事故标志位。如果计算结果必须圆整,则将位5PE位置成1,因此可用浮点格式表示它们精确值。,10

7、,(7)位4UE是1位字段,是下溢事故标志位。当计算结果按指定的浮点格式存储时,由于其数值太小而不能给以正确表示时,就将位4UE置成1。 (8)位3OE这是1位字段,是溢出事故标志。每当计算结果按指定的浮点格式存储时,由于其数值太大而不能给以正确表示时,就将位3OE置成1。 (9)位2ZE 这是1位字段,是除数为0的事故标志位。它表示是否出现除数为0和被除数是否是一个非0值。 (10)位1DE 这是一位字段,是非规格化操作数事故标志位。它表示指令是否企图对非规格化数进行操作,或操作时至少出现了一个非规格化的操作数。 (11)位0IE这是一位字段,是无效操作事故标志位。表示是否为若干种非法操作中

8、的一种,例如在NaN(不是一个数)上操作、负数开平方等。,11,613 控制字寄存器 Pentium 微处理器 的片内浮点部件能提供几种处理选择,具体做法是:从存储器取出浮点部件的控制字,然后通过送入控制字寄存器实现处理选择。控制字内包括有事故屏蔽,允许中断屏蔽以及若干控制位。图6.3 中示出了控制字格式以及各字段的意义。 控制字中的低序字节是用来屏蔽数值异常事故的。控制字中的位0 位5就是对由Pentium微处理器识别的六个浮点异常事故中的每一个都能独立进行屏蔽;而控制字中的高序字节是用来对处理任选方式进行选择,其中包括对精度控制的选择和舍入方式的选择。,12,浮点部件的控制字,13,控制字

9、中的异常事故屏蔽表明:浮点部件应该处理哪一个异常事故,和哪一个异常事故能使浮点部件产生中断信号(一个未被屏蔽的异常事故)。 位11、位10RC 这是两位的圆整控制字段,用来表示选择四种圆整方式中的哪一种。这四种圆整方式是: 0 0 无偏差的向最近的值或偶数值圆整 0 1 舍去 (向负数方向 即无穷大 圆整) 1 0 舍入 (向正数方向 即 无穷大 圆整) 1 1 截去 (截去项趋向 0 ),14,位RC 圆整控制字段提供了几种 IEEE 标准规定的几种圆整方法,象直接舍入圆整、实际截去、保留几位有效值、偶数位圆整等。圆整控制只是对存实数 FST 指令、存实数和上托出栈 FSTP 指令以及整数存

10、储 FIST 指令等有效,在这三种指令执行完后会进行圆整操作(有可能会产生精度异常事故)。所有算术运算指令和所有超越函数指令都属于这一类。 位11、位10RC可提供公用的向最近数圆整方式,以及直接圆整和截断方式,圆整控制位不仅对算术运算指令有影响,而且对某些非算术运算类指令也有影响。 位9、位8 PC这是两位的精度控制字段,用来表示选择三种精度中的哪一种精度。三种精度表示分别是: 00-24 位短实数(单精度) 01-(保留) 10-53 位长实数 (双精度) 11-64 位暂时实数(扩展精度),15,614 标记字寄存器 标记字的功能优化了浮点部件的性能,图6.4中展示出标记字各字段,从图中

11、可以看出,标记字是由八个字段构成,每个字段长度均为两位,分别用来标志 八个数据寄存器。也就是说,每个数据寄存器的内容均用标记字中的一个字段标记。 浮点部件中的标记字是用来表示寄存器堆栈中的每一个寄存器中的内容,从图6.4中展示出的浮点部件中标记字的格式及内容中可以看出,只有浮点部件自己用标记字去区分空寄存器和非空寄存器的位置。异常事故处理程序也常用这些标记信息去检验某一数值寄存器中的内容,而且不必对数值寄存器中的实际数据进行复杂的译码操作。标记字中的标记值与物理寄存器07相对应。程序设计人员必须用当前堆栈栈顶作为堆栈指针并将其存放到浮点部件的状态字中,以便把标记值与相关堆栈寄存器ST(0) S

12、T(7)建立起联系。,16,各段标记值: 00 = 有效 01 = 零 10 = 特定值:无效(NaN,不支持的),无穷大,或非正常数 11 = 空 图6.4 标记字格式,17,62 浮点部件流水线操作,6.2.1 浮点流水线 从根本上来说,Pentium 微处理器把浮点部件集成到CPU芯片内大大提高了Pentium 微处理器 CPU性能。但令人遗憾的是,若CPU调用了一条浮点指令,其它浮点指令在这条浮点指令没完成之前均处于等待状态。 但Pentium 微处理器采用了一种全新的方法,且与前辈机完全兼容照样可以执行IEEE浮点运算标准。 Pentium微处理器的浮点部件则是在80486微处理器的

13、基础上重新进行了设计。它所采用的快速算法可以使象加法、乘法以及装入这样的常用操作速度提高了近10倍。,18,1浮点流水线操作 Pentium 微处理器浮点流水线是由 预取PF、 首次译码D1、 二次译码D2、 存储器和寄存器的读操作EX、 首次执行X1、 二次执行X2、 写浮点数WF和出错报告ER共八个操作步骤组成。 其中预取PF和首次译码D1这两个操作步骤与整数流水线中的前两个操作步骤公用同一硬件资源。而浮点流水线中的第三个操作步骤是开始激活浮点指令的执行逻辑,其实浮点流水线中的前五个操作步骤与整数流水线中的五个操作步骤是同步执行的,只是多出了三个步骤而已。,19,Pentium微处理器浮点

14、部件与其整数部件一样,执行的也是流水线操作。其流水线操作步骤共八个,而且前五个操作步骤与整数部件共享。整数指令仅仅是经历流水线操作的前五个操作步骤。整数指令还要用第五个操作步骤作为写回WB把计算结果写回存储器。浮点部件中的这八个操作步骤及其相应的操作和完成的工作分别为: PF 预取 D1 指令译码(首次译码) D2 地址生成(二次译码) EX 存储器和寄存器的读操作,将浮点数据转换成外部存储格式且还要执行存储器的写操作。 X1 浮点执行步骤1(首次执行);将外部存储器数据格式转换成内部浮点数据格式,并且还要把操作数写到浮点寄存器上。 X2 浮点执行步骤2(二次执行); WF 写浮点数,完成舍入

15、操作,并且把计算后的浮点结果写到浮点寄存器(此时可进行旁路2操作)。 ER 报告出现的错误/更新状态字的状态。,20,2. 浮点流水线微体系结构 Pentium微处理器的浮点流水线是由浮点接口、寄存器组及控制部件FIRC、浮点指数功能部件FEXP、浮点乘法部件FMUL、浮点加法部件FADD、浮点除法部件FDIV以及浮点舍入处理部件FRND共六个部件组成。在运行期间各部件进行的均是专项操作。,21,6.2.2 浮点指令的流动 Pentium微处理器的浮点指令,在流水线中是怎样流动的?它又是遵循怎样的规则执行操作的? Pentium微处理器规定了以下四条规则: 第一: 浮点指令与整数指令不能成对执

16、行。但两条浮点指令却可以有限制地配对执行操作。 第二: 当成对浮点指令进入浮点部件时,其中的第二条浮点指令只能是寄存器交换指令FXCH。而第一条浮点指令必须是浮点指令集中的一条浮点指令。 第三:除寄存器交换指令FXCH之外的那些浮点指令,以及属于浮点指令集中的那些浮点指令,其余指令总是单个地发送给浮点部件。 第四:只要不是紧跟在浮点交换指令之后的那些浮点指令, 都可以单独地发送给浮点部件。,22,6. 3 数值计算基础,下面将要介绍一些有关在数值计算方面程序设计的概念。其内容不仅包括Pentium微处理器片内浮点部件的内部数字系统,而且还包括在数值程序中被广泛采用的各种各样的数据类型。 而且还要对常用的由控制字符中舍入控制字段和精度控制字段选中的舍入任选项及精度任选项给以说明。同时对在浮点指令执行期间可能出现的异常事故条件也给以尽可能详细的说明。,23,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号