定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt

上传人:啊飒飒 文档编号:10524295 上传时间:2021-05-21 格式:PPT 页数:104 大小:2.75MB
返回 下载 相关 举报
定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt_第1页
第1页 / 共104页
定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt_第2页
第2页 / 共104页
定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt_第3页
第3页 / 共104页
定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt_第4页
第4页 / 共104页
定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt》由会员分享,可在线阅读,更多相关《定点数运算及其运算部件第三讲 浮点数运算及其运算部件.ppt(104页珍藏版)》请在三一文库上搜索。

1、第一讲 不同层次程序员看到的运算及ALU第二讲 定点数运算及其运算部件第三讲 浮点数运算及其运算部件,Ch3: Arithmetic and Logic Operate and ALU运算方法和运算部件,第一讲:不同层次程序员看到的运算及ALU,高级语言程序中涉及的运算(以C语言为例) 整数算术运算、浮点数算术运算 按位、关系、逻辑、移位、位扩展和位截断 汇编语言中涉及到的运算(以MIPS为例) 定点数运算 浮点数运算 基本运算部件ALU的设计,人的行为靠什么来支配?,脑-思维(判断)-控制,计算机的工作靠什么来完成?,CPU-运算-控制,人的思维其本质是基于运算来完成的:学习,搜索(记忆/存

2、储),数学计算,比较,表达,C语言程序中涉及的运算,(1)算术运算(最基本的运算) 无符号数、带符号整数、浮点数的+、-、*、/ 运算 (2)按位运算 按位或:“|” 按位与:“ unsigned short usi = si; int i = si; unsigned int ui = usi ; si = ui ;,si = -32768 80 00 usi = 32768 80 00 符号扩展 i = -32768 FF FF 80 00 0扩展 ui = 32768 00 00 80 00 截断 si = -32768 80 00,截断时发生了“溢出”,因为32768超过了16位补码能

3、表示的最大值!,如何实现高级语言源程序中的运算?,将各类表达式转换成指令序列 计算机执行指令来完成运算,0000 0010 0011 0010 0100 0000 0010 0000,datapath,control信号输入,信息输入,信息输出,指令+数据 int a,b=5,c=-8; c=a+b 为变量分配寄存器 把变量按类型编码 机器数放入寄存器 按类型完成运算 运算结果放入寄存器 Add $t0,$s1,$s2 0232 4020H,运算!,a,b,c,高级语言程序中涉及的运算(以C语言为例) 整数浮点数算术运算,按位、关系、逻辑、移位、位扩展和位截断 汇编语言中涉及到的运算( 以MI

4、PS为例 ) 数据存取 涉及到的定点数运算 算术运算 带符号整数运算:取负 / 符号扩展 / 加 / 减 / 乘 / 除 / 算术移位 无符号整数运算:0扩展 / 加 / 减 / 乘 / 除 逻辑运算 逻辑操作:与 / 或 / 非 / 移位操作:逻辑左移 / 逻辑右移 涉及到的浮点数运算:加、减、乘、除,(1)MIPS定点算术运算指令,InstructionExampleMeaningComments add add $1,$2,$3$1 = $2 + $33 operands; exception possible subtractsub $1,$2,$3$1 = $2 $33 operan

5、ds; exception possible add immediateaddi $1,$2,100$1 = $2 + 100+ constant; exception possible add unsignedaddu $1,$2,$3$1 = $2 + $33 operands; no exceptions subtract unsignedsubu $1,$2,$3$1 = $2 $33 operands; no exceptions add imm. unsign.addiu $1,$2,100$1 = $2 + 100+ constant; no exceptions multipl

6、y mult $2,$3Hi, Lo = $2 x $364-bit signed product multiply unsignedmultu$2,$3Hi, Lo = $2 x $364-bit unsigned product divide div $2,$3Lo = $2 $3, Hi = $2 mod $3 divide unsigned divu $2,$3Lo = $2 $3, Hi = $2 mod $3,涉及到的数据类型(操作数):32/16位 无符号数/带符号数 涉及到的操作:加 / 减 / 乘 / 除(带符号数 / 无符号数),高级语言 中的 +-*/,(2)MIPS 按

7、位和移位运算指令,涉及到的操作数: 32/16位 逻辑数(位串),定点数 涉及到的操作:按位与 /或 /或非; 左移 / 右移,sra $s1,$s2,10,Shift right arithmetic,高位补符,高级语言中的 位和移位运算,(3)MIPS定点比较和分支指令,涉及到的操作数:32/16位 无符号数, 32/16位带符号数 涉及到的操作:大小比较和相等比较(有符号 / 无符号),通过减法运算实现“比较”操作!,高级语言中 的关系和逻 辑运算,(4)MIPS定点数据传送指令,涉及到的操作数: 32/16位带符号数(偏移量可以是负数) 涉及到的操作:加 / 减 / 符号扩展 / 0扩

8、展,高级语言中的 load和store? 赋值b2=1 变量使用b2+3,(5)MIPS中的浮点算术运算指令,涉及到的浮点操作数: 32位单精度 / 64位双精度浮点数 涉及到的浮点操作:加 / 减 / 乘 / 除,MIPS提供专门的浮点数寄存器: 32个32位单精度浮点数寄存器:$f0, $f1, , $f31 连续两个寄存器(一偶一奇)存放一个双精度浮点数,高级语言 中的 +-*/,(6)MIPS中的浮点数传送指令,涉及到的浮点操作数: 32位单精度浮点数 涉及到的浮点操作:传送操作(与定点传送一样) 还涉及到定点操作:加 / 减(用于地址运算),例:将两个定点数从内存取出相加后再存到内存

9、的指令序列分别为:,lw $t1, x($s1) lw $t2, y($s2) add $t3, $t1, $t2 sw $t3, z(s3),(7)MIPS中的浮点数比较和分支指令,涉及到的浮点操作数: 32位单精度浮点数/64位双精度浮点数 涉及到的浮点操作:比较操作(用 减法来实现比较) 还涉及到的定点操作:加 / 减(用于地址运算),高级语言中 的关系和逻 辑运算,MIPS指令考察的结果,涉及到的操作数: 无符号整数、带符号整数 逻辑数(位串) 浮点数 涉及到的运算 定点数运算 带符号整数运算: 无符号整数运算: 逻辑运算 浮点数运算:加、减、乘、除,完全能够支持高级语言对运算的需求!

10、,实现MIPS定点和浮点运算指令的思路: 先实现一个ALU 能进行基本算术运算(加/减)和基本逻辑运算 并生成基本条件码(ZF/OF/CF/NF) 再由ALU和移位器实现乘、除、浮点运算器。,ALU是运算部件的核心! 以下介绍ALU的实现。,ALU的功能说明,ALUop Function (ALU Control Lines) 000 And 001 Or 010 Add 110 Subtract 111Set-on-less-than,ALU,N,N,N,A,B,Result,Overflow,Zero,3,ALUop,CarryOut,ALU可进行基本的加/减算术运算、基本逻辑运算。 其核

11、心部件是加法器。,回顾:串行进位加法器,假定与/或门延迟为1ty,异或门3ty,则“和”与“进位”的延迟为多少?,串行加法器的缺点: 进位按串行方式传递,速度慢!,问题:n位串行加法器从C0到Cn的延迟时间为多少? 最后一位和数的延迟时间为多少?,(2n2) + 3 级门延迟!,2n级门延迟!,Sum延迟为6ty;Carryout延迟为2ty。,回顾:并行进位加法器(CLA加法器),为什么用先行进位方式? 串行进位电路延迟与位数成正比关系。效率低。 现代计算机采用一种先行进位(Carry look ahead)方式。 如何产生先行进位? 定义辅助函数:Gi=Ai 作为舍入的依据。,举例:十进制

12、数,最终有效位数为 3,假定采用两位附加位。,2.3400 * 10 0.0253 * 10 2.3653 * 10,2,2,2,问题:若没有舍入位,采用就近舍入到偶数,则结果是什么?,结果为2.36!精度没有2.37高!,IEEE 754的舍入方式,IEEE 754的舍入方式 ( Z1和Z2分别是结果Z的最近可表示的左、右数 ) (1)就近舍入:舍入为最近可表示的数 非中间值:0舍1入; 中间值:强迫结果为偶数-慢 (2)朝+方向舍入:舍入为Z2(正向舍入) (3)朝-方向舍入:舍入为Z1(负向舍入) (4)朝0方向舍入:截去。正数:取Z1; 负数:取Z2,0,0,Z,Z1,Z2,例:1.1

13、10111 1.1110; 1.110101 1.1101; 1.110110 1.1110; 1.111110 10.0000;,IEEE 754通过在舍入位后再引入“粘位sticky bit”增强精度 加减运算对阶过程中,若阶码较小的数的尾数右移时,舍入位之后有非0数,则可设置sticky bit。,举例: 1.110 x 25 + 1.010 x 21 分别采用二位、三位附加位时,结果各是多少?(就近舍入到偶数),尾数精确结果为1.110101, 所以分别为: 1.110,1.111(误差较小),IEEE 754的舍入方式的说明,浮点加/减法器,Sx,右 移,Ex,Mx,Sy,Ey,My

14、,小ALU,大ALU,阶码相减,左移 或 右移,舍 入,阶 差,控制逻辑,Sb,Eb,Mb,阶小的数的尾数右移,尾数加/减,规格化,舍入,阶码增/减,浮点数加减的有关问题,何时需要规格化?,1x .xxx 形式时,则右规: 尾数右移1位, 阶码加1 0.001xx 时,则左规: 尾数左移k位, 阶码减k,对IEEE754 SP格式来说, |E|大于等于多少时,结果就等于阶大的那个数 ?,1.xxx 0.0001xxx(右移24位后,尾数变为0),24!,浮点数加减的有关问题(2),问题:IEEE754 SP格式的偏置常数是127,这会不会影响阶码运算电路的复杂度?,对计算E1E2补 (mod

15、2n) 没有影响,E补= 256+E1E2=256+127+E1 (127+E2) = 256 + E1移 E2移 = E1移+E2移补 (mod 256),但E1+E2移和 E1E2移的计算会变复杂! 浮点乘除运算涉及之。,问题:IEEE754加减时,尾数加法器最多需要多少位?,1+1+23+3,浮点数加减的有关问题(3),问题:为何IEEE 754 加减运算右规时最多只需一次?,因为即使是两个最大的尾数相加,得到的和的尾数也不会达到4,故尾数的整数部分最多有两位,保留一个隐含的“1”后,最多只有一位被右移到小数部分。例如:1.11+1.11 = 11.10,问题:在E为何值时无法根据E补来

16、判断阶差?,溢出时! 例子?,例如,4位移码,E1=7,E2=-7, 则E补=1111+1111=1110,E0,错!,浮点数乘/除法基本要点,浮点数乘法:A*B =(Ma * Mb).2 Ea+Eb 浮点数除法:A/B =(Ma / Mb).2 Ea-Eb,浮点数乘 / 除法步骤 求阶: Ea + Eb + 127 尾数相乘除: Ma */Mb (两个形为1.xxx的数,原码乘/除) (3) 两数符号相同,结果为正;两数符号相异,结果为负; (4) 当尾数高位为0,需左规;当尾数最高位有进位,需右规。 (5) 如果尾数比规定的长,则需考虑舍入。 若尾数是0,则需要将阶码也置0。 阶码溢出判断

17、,问题1:乘法运算结果最多左规几次?最多右规几次?,不需左规!最多右规1次!,问题2:除法呢?,左规次数不定!不需右规!,溢出判断,以下情况下,可能会导致阶码溢出 左规(阶码 - 1)时 先判断阶码是否为全0, 若是,则直接置阶码下溢; 否则,阶码减1后判断阶码是否为全0,若是,则下溢。 右规(阶码 +1)时 先判断阶码是否为全1, 若是,则直接置阶码上溢; 否则,阶码加1后判断阶码是否为全1,若是,则上溢。,问题:机器内部如何减1?,+-1补 = + 111,若运算后尾数为全0,也算作下溢(结果为0),举例,例:若Eb = 0000 0001,则左规一次后,结果的阶码 Eb = ? 解:Eb

18、 = Eb+-1补 = 0000 0001 + 1111 1111 = 0000 0000 阶码下溢! 例:若Ex=1111 1110,Ey=1000 0000,则乘法运算时,结果的阶码 Eb=? 解:Eb = Ex+Ey+129 = 1111 1110 + 1000 0000 + 1000 0001 = 1111 1111 阶码上溢!,以下情况下,可能会导致阶码溢出 乘法运算求阶码的和时 若Ex和Ey最高位皆1,而Eb最高位是0或Eb为全1,则阶码上溢 若Ex和Ey最高位皆0,而Eb最高位是1或Eb为全0,则阶码下溢 除法运算求阶码的差时 若Ex的最高位是1,Ey的最高位是0,Eb的最高位是

19、0或Eb为全1,则阶码上溢。 若Ex的最高位是0,Ey的最高位是1,Eb的最高位是1或Eb为全0,则阶码下溢。,左规或右规结束后再作最终判定!,第三讲小结,浮点运算指令( 以MIPS为参考 ) 浮点数的表示(IEEE754标准) 单精度SP(float)和双精度DP(double) 浮点数加减运算 对阶、尾数加减、规格化(上溢/下溢处理)、舍入 浮点数乘除运算 浮点数的精度问题 中间结果加保护位、舍入位、粘位 最终进行舍入,本章总结,算术逻辑单元ALU的实现 ALU:实现基本的加减运算和逻辑运算。 加法运算是所有定点和浮点运算(加/减/乘/除)的基础,加法速度至关重要 并行进位方式能加快加法速

20、度 定点数运算:ALU + 移位器 经典的乘除算法 浮点数运算:多个ALU + 移位器实现,*思考:不同ISA中的运算和指令,问题:IA-32指令如何区分无符号数加减法和带符号数加减法? 例如,若 (AH)=A0H, (BH)=7EH, 则ADD AH, BH的值为多少? 无符:160+126=30(不正确);带符:-96+126=30(正确) 问题:IA-32指令如何区分装入 / 存储?如何区分传送不同宽度数据? 问题:IA-32中浮点数寄存器是80位,这会给float和double类型变量的运算带来什么隐患?,感受不同ISA的不同做法,以比较各自的优缺点! 如果你来设计一台机器时,你也可以有你的做法!,本章作业,习题3中的5、7、9(1)、9(2)、9(4)、 13(2)、14(1),10月12号上周一的课 第一节课进行小测验(第1-3章),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1