运算方法和运算部件幻灯片

上传人:爱****1 文档编号:929025 上传时间:2017-05-22 格式:PPT 页数:114 大小:2.27MB
返回 下载 相关 举报
运算方法和运算部件幻灯片_第1页
第1页 / 共114页
运算方法和运算部件幻灯片_第2页
第2页 / 共114页
运算方法和运算部件幻灯片_第3页
第3页 / 共114页
运算方法和运算部件幻灯片_第4页
第4页 / 共114页
运算方法和运算部件幻灯片_第5页
第5页 / 共114页
点击查看更多>>
资源描述

《运算方法和运算部件幻灯片》由会员分享,可在线阅读,更多相关《运算方法和运算部件幻灯片(114页珍藏版)》请在金锄头文库上搜索。

1、第一讲 不同层次程序员看到的运算及ALU第二讲 定点数运算及其运算部件第三讲 浮点数运算及其运算部件,Ch3: Arithmetic and Logic Operate and ALU运算方法和运算部件,第一讲:不同层次程序员看到的运算及ALU,主 要 内 容C语言程序中涉及的运算整数算术运、浮点数算术运算按位、逻辑、移位、位扩展和位截断指令集中与运算相关的指令( 以MIPS为参考 )涉及到的定点数运算算术运算带符号整数运算:取负 / 符号扩展 / 加 / 减 / 乘 / 除 / 算术移位无符号整数运算:0扩展 / 加 / 减 / 乘 / 除 逻辑运算逻辑操作:与 / 或 / 非 / 移位操作

2、:逻辑左移 / 逻辑右移涉及到的浮点数运算:加、减、乘、除基本运算部件ALU的设计,C语言程序中涉及的运算,算术运算(最基本的运算)无符号数、带符号整数、浮点数的运算按位运算用途对位串实现“掩码”(mask)操作或相应的其他处理(主要用于对多媒体数据或控制信息进行处理)操作按位或:“|” 按位与:“&”按位取反:“”按位异或:“”问题:如何从一个16位采样数据y中提取高位字节,并使低字节为0?可用“&”实现“掩码”操作:y & 0xFF00例如,当y=0x2C0B时,通过掩码操作得到结果为:0x2C00,C语言程序中涉及的运算,逻辑运算用途用于关系表达式的运算例如,if (xy and iy)

3、 & (i100) then “!”表示“NOT”运算 与按位运算的差别符号表示不同:& & ;| ; 运算过程不同:按位 整体结果类型不同:位串 逻辑值,C语言程序中涉及的运算,移位运算用途提取部分信息扩大或缩小数值的2、4、8倍操作左移::xk不区分是逻辑移位还是算术移位,由x的类型确定无符号数:逻辑左移、逻辑右移高(低)位移出,低(高)位补0,可能溢出!问题:何时可能发生溢出?如何判断溢出? 若高位移出的是1,则左移时发生溢出带符号整数:算术左移、算术右移左移:高位移出,低位补0。可能溢出! 溢出判断:若移出的位不等于新的符号位,则溢出。右移:低位移出,高位补符,可能发生数据丢失。,C语

4、言程序中涉及的运算,位扩展和位截断运算用途类型转换时可能需要数据扩展或截断操作没有专门操作运算符,根据类型转换前后数据长短确定是扩展还是截断扩展:短转长 无符号数:0扩展,前面补0 带符号整数:符号扩展,前面补符截断:长转短 强行将高位丢弃,故可能发生“溢出”例1:在大端机上输出si, usi, i, ui的十进制和十六进制值是什么?short si = -12345;unsigned short usi = si;int i = si;unsingned ui = usi ;,si = -12345 CF C7usi = 53191 CF C7i = -12345 FF FF CF C7 u

5、i = 53191 00 00 CF C7,例2:i和j是否相等?int i = 53191;short si = (short) i;int j = si;,不相等!i = 53191 00 00 CF C7si = -12345 CF C7 j = -12345 FF FF CF C7,原因:对i截断时发生了“溢出”,即:53191截断为16位数时,有效数据丢失,无法被正确表示!,MIPS定点算术运算指令,InstructionExampleMeaningCommentsadd add $1,$2,$3$1 = $2 + $33 operands; exception possiblesu

6、btractsub $1,$2,$3$1 = $2 $33 operands; exception possibleadd immediateaddi $1,$2,100$1 = $2 + 100+ constant; exception possibleadd unsignedaddu $1,$2,$3$1 = $2 + $33 operands; no exceptionssubtract unsignedsubu $1,$2,$3$1 = $2 $33 operands; no exceptionsadd imm. unsign.addiu $1,$2,100$1 = $2 + 100+

7、 constant; no exceptionsmultiply mult $2,$3Hi, Lo = $2 x $364-bit signed productmultiply unsignedmultu$2,$3Hi, Lo = $2 x $364-bit unsigned productdivide div $2,$3Lo = $2 $3,Lo = quotient, Hi = remainder Hi = $2 mod $3 divide unsigned divu $2,$3Lo = $2 $3,Unsigned quotient & remainder Hi = $2 mod $3,

8、涉及到的操作数:32/16位 无符号数, 32/16位带符号数涉及到的操作:加 / 减 / 乘 / 除(有符号 / 无符号),MIPS 逻辑运算指令,涉及到的操作数:32/16位 逻辑数涉及到的操作:按位与 / 按位或 / 按位或非 / 左移 / 右移,MIPS定点比较和分支指令,涉及到的操作数:32/16位 无符号数, 32/16位带符号数涉及到的操作:大小比较和相等比较(有符号 / 无符号),通过减法运算实现“比较”操作!,MIPS定点数据传送指令,涉及到的操作数: 32/16位带符号数(偏移量可以是负数)涉及到的操作:加 / 减 / 符号扩展 / 0扩展,MIPS中的浮点算术运算指令,涉

9、及到的浮点操作数: 32位单精度 / 64位双精度浮点数涉及到的浮点操作:加 / 减 / 乘 / 除,MIPS提供专门的浮点数寄存器: 32个32位单精度浮点数寄存器:$f0, $f1, , $f31 连续两个寄存器(一偶一奇)存放一个双精度浮点数,MIPS中的浮点数传送指令,涉及到的浮点操作数: 32位单精度浮点数涉及到的浮点操作:传送操作(与定点传送一样)还涉及到定点操作:加 / 减(用于地址运算),例:将两个浮点数从内存取出相加后再存到内存的指令序列为: lwcl $f1, x($s1) lwcl $f2, y($s2) add.s $f4, $f1, $f2 swlc $f4, z(s

10、3),MIPS中的浮点数比较和分支指令,涉及到的浮点操作数: 32位单精度浮点数/64位双精度浮点数涉及到的浮点操作:比较操作(用 减法来实现比较)还涉及到的定点操作:加 / 减(用于地址运算),有一个专门的浮点标志cond,无需在指令中明显给出cond,MIPS指令考察的结果,涉及到的操作数:无符号整数、带符号整数逻辑数浮点数涉及到的运算定点数运算带符号整数运算:取负 / 符号扩展 / 加 / 减 / 乘 / 除 / 算术移位无符号整数运算:0扩展 / 加 / 减 / 乘 / 除 逻辑运算逻辑操作:与 / 或 / 非 / 移位操作:逻辑左移 / 逻辑右移浮点数运算:加、减、乘、除,实现MIP

11、S定点运算指令的思路:先实现一个能进行基本算术运算(加/减)和基本逻辑运算、并生成基本条件码(ZF/OF/CF/NF)的ALU,再由ALU和移位器实现乘、除运算器。,ALU是运算部件的核心!以下介绍ALU的实现。,ALU的功能说明,ALU Control Lines (ALUop) Function000 And001 Or010 Add110 Subtract111Set-on-less-than,ALU,N,N,N,A,B,Result,Overflow,Zero,3,ALUop,CarryOut,ALU可进行基本的加/减算术运算、基本逻辑运算。其核心部件是加法器。有关串行加法器和并行加法

12、器的原理在数字逻辑电路课已讲过,在此仅简单回顾。,回顾:串行进位加法器,假定与/或门延迟为1ty,异或门3ty,则“和”与“进位”的延迟为多少?,串行加法器的缺点:进位按串行方式传递,速度慢!,问题:n位串行加法器从C0到Cn的延迟时间为多少?最后一位和数的延迟时间为多少?,2n+1级门延迟!,2n级门延迟!,Sum延迟为6ty;Carryout延迟为2ty。,回顾:并行进位加法器(CLA加法器),为什么用先行进位方式? 串行进位加法器采用串行逐级传递进位,电路延迟与位数成正比关系。 因此,现代计算机采用一种先行进位(Carry look ahead)方式。如何产生先行进位? 定义辅助函数:G

13、i=XiYi进位生成函数 Pi=Xi+Yi进位传递函数(或 Pi=XiYi ) 通常把实现上述逻辑的电路称为进位生成/传递部件 全加逻辑方程:Si=PiCi Ci+1=Gi+PiCi (i=0,1,n) 设n=4,则:C1=G0+P0C0 C2=G1+P1C1=G1+P1G0+P1P0C0 C3=G2+P2C2=G2+P2G1+P2P1G0+P2P1P0C0 C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0 由上式可知:各进位之间无等待,相互独立并同时产生。 通常把实现上述逻辑的电路称为4位CLA部件 由此,根据Si=PiCi ,可并行求出各位和。 通

14、常把实现Si=PiCi的电路称为求和部件 CLA加法器由“进位生成/传递部件”、“CLA部件”和“求和部件”构成。,回顾: 8位全先行进位加法器,进位生成/传递部件,A7,A0,B7,B0,P7,P1,P0,G7,G1,G0,8位 CLA部件,C0,求和部件,P7,P1,P0,C0,C1,C7,C8,S7,S0,S1,3ty,2ty,3ty,和的总延迟:3+2+3=8ty;进位C8的延迟:3+2=5ty,回顾:局部先行进位加法器,问题:所有和数产生的延迟为多少?,或称 单级先行进位加法器,5+2+2+5=14ty,多级先行进位加法器单级(局部)先行进位加法器的进位生成方式: “组内并行、组间串行”所以,单级先行进位加法器虽然比行波加法器延迟时间短,但高位组进位依赖低位组进位,故仍有较长的时间延迟通过引入组进位生成/传递函数实现“组内并行、组间并行”进位方式 设n=4,则:C1=G0+P0C0 C2=G1+P1C1=G1+P1G0+P1P0C0 C3=G2+P2C2=G2+P2G1+P2P1G0+P2P1P0C0 G3*=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0 P3*=P3P2P1P0 所以C4 =G3*+P3*C0。把实现上述逻辑的电路称为4位BCLA部件。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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