版权所有,引用请注明出处 第三章、运算方法与运算器 原著 谭志虎 主讲(改编) 蒋文斌
Outline 定点补码加/减法运算 定点乘法运算 浮点运算 运算器组织 运算器部件举例
3.1 定点补码加/减法运算 定点补码的加减法运算 [X]补+ [Y]补= [X + Y]补 [X]补 - [Y]补= [X]补+ [-Y]补=[X-Y]补 - [Y]补= [-Y]补 (规则来源于补码的特点,也即模运算的特点。存在模运算与溢出的关系问题)
注意: 模运算与溢出的关系 (例如, 4位2进制运算器): 0.111+1.100=10.011 (0.875-0.5=0.375) (多出一位丢掉) √ 0.111+0.010 =1.001 (0.875+0.25=1.125) (机器得到- 0.875) 1.001+1.100 =10.101 (-0.875-0.5= -1.325) (机器得到+0.625) 结论: 运算的实际结果没有超出字长可以表示的数值范围,取模的结果是正确。 超出范围则溢出,出现错误。判断方法: 正 + 正 得负 或 负 + 负 得正
补码加法的几种情况及其溢出检测 符号位进位Cf (C0) ,最高位进位C1 0 .1 0 1 0 1 + 0 .0 1 0 0 0 0 .1 1 1 0 1 1 .1 0 1 0 1 + 1 .1 1 0 0 0 1 .0 1 1 0 1 1 正常结果 符号位进位舍去,正常结果 Cf = 0,C1 = 0 Cf = 1,C1 = 1 0 .1 0 1 0 1 + 0 .1 1 0 0 0 .0 1 1 0 1 1 1 .0 0 1 0 1 + 1 .1 1 0 0 0 .1 1 1 0 1 1 正正得负,正溢出 负负得正,负溢出 Cf = 0,C1 = 1 Cf = 1,C1 = 0 计算机如何识别运算结果是否溢出
单符号数溢出检测 Cf C1 V 1 V=Cf⊕C1 溢出信号V对应的真值表
双符号数溢出检测 f1 f2 0 0 .1 0 1 0 1 + 0 0 .0 1 0 0 0 0 0 .1 1 1 0 1 1 1 .1 0 1 0 1 + 1 1 .1 1 0 0 0 1 1 .0 1 1 0 1 1 Sf1 Sf2 符号位进位舍去,正常结果 正常结果 0 0 .1 0 1 0 1 + 0 0 .1 1 0 0 0 .0 1 1 0 1 0 1 1 1 .0 0 1 0 1 + 1 1 .1 1 0 0 0 .1 1 1 0 1 1 0 1 非正常符号位,溢出 非正常符号位,溢出 V = Sf1 ⊕Sf2
加法运算的逻辑实现 + ?0 ? 1…….…?n 多位加法运算依赖于各位逐位相加的运算, 所以我们先讨论一位全加器 [X]补=X0 X1………Xn + [Y]补=Y0 Y1…….…Yn ?0 ? 1…….…?n 多位加法运算依赖于各位逐位相加的运算, 所以我们先讨论一位全加器
一位全加器 输入: 加数Ai 、Bi 、低位进位输入Ci+1 输出: 和数Si ,进位输出Ci Ai Bi Ci+1 Si Ci 1
C B A S Å = C B A ) ( Å + = 一位加法器逻辑表达式 注意:逻辑表达式可以变形,故电路形式不是唯一的。 i+1 i
典型门 电路 & A B 与非 ≥1 A B 或非 非 1 A & A B 与 ≥1 A B 或 =1 A B 异或 =1 A B 异或非
FA 一位全加器逻辑电路实现 C B A ) ( Å + = 一位全加器时间延迟 一位全加器 Ci+1 Ai Bi Si Ci FA Si
双符号补码加/减器电路实现 s0 s1 sn-1 sn V C2 C C0 C1 …Cn-1 Cn Cn+1 Σ0 Σ0 Σ1 Σn-1 1、N个合起来; 2、M控制加减; 3、 串行行波加法器 V s0 s1 sn-1 sn C2 C C0 C1 …Cn-1 Cn Cn+1 Σ0 Σ0 Σ1 Σn-1 Σn M x0 y0 x1 y1 xn-1 yn-1 xn yn M由汇编语言中的加法指令add,以及sub等产生
快速加法器 能否提前产生各位的进位输入 使得各位的加法运算能并行起来 提高多位加法器运算速度
并行加法器进位链 Si=Xi⊕Yi⊕Ci+1 (Xi⊕Yi) Ci= XiYi + Ci+1 Gi = XiYi Pi=Xi⊕Yi Pi进位传递i函数,进位传递条件 Ci = Gi+PiCi+1
并行加法器进位链 能否提前得到当前位的进位输入, 这样就可以完全并行,大大提高运算速度 Cn = XnYn+(Xn⊕Yn)Cn+1=Gn+PnCn+1 Cn-1 = Xn-1Yn-1+(Xn-1⊕Yn-1)Cn=Gn-1+Pn-1Cn Cn-2 = Xn-2Yn-2+(Xn-2⊕Yn-2)Cn-1=Gn-2+Pn-2Cn-1 …… C2 = X2Y2+(X2⊕Y2)C3=G2+P2C3 C1 = X1Y1+(X1⊕Y1)C2=G1+P1C2 高位的运算依赖于低位运算进位的产生,计算不能并行
并行加法器进位链 Cn = XnYn+(Xn⊕Yn)Cn+1=Gn+PnCn+1 Cn-1 = Gn-1+Pn-1Cn = Gn-1+Pn-1 (Gn+PnCn+1) = Gn-1+Pn-1 Gn+Pn-1PnCn+1 Cn-2 =Gn-2+Pn-2Cn-1= Gn-2+Pn-2(Gn-1+Pn-1 Gn+Pn-1PnCn+1) = Gn-2+Pn-2Gn-1+Pn-2Pn-1 Gn+Pn-2Pn-1PnCn+1 …… C2 = G2+P2G3+P2P3G4 …+P2 P3 …PnCn+1 C1 = G1+P1G2+P1P2G3 +P1P2P3G4…+P1 P2 …PnCn+1
C C C C 1 2 3 4 C 5 X1 Y1 G1 P1 X2 Y2 G2 P2 X3 Y3 G3 P3 X4 Y4 G4 P4
先行进位电路CLA74182 先行进位的多功能算术/逻辑运算单元ALU74181 C1 C2 C3 C4 ⊕ ⊕ CLA74182 G1 P1 G2 P2 G3 P3 G4 P4 G1 P1 G2 P2 G3 P3 G4 P4 与门异或门电路 X1 Y1 X2 Y2 X3 Y3 X4 Y4 C5 ⊕ ⊕ Si=Xi⊕Yi⊕Ci+1 S1 S2 S3 S4
16位组内先行进位,组间串行进位 C1 = G1+P1G2+P1P2G3 +P1P2P3G4…+P1 P2 …PnCn+1 ALU74181 X1Y1X2Y2X3Y3X4Y4 C5 P1* G1* C1 S1S2S3 S4 P1* G1* S1 ~S4 P2* G2* S5 ~S8 P3* G3* S9 ~S12 P4* G4* S13 ~S16 C5 C9 C13 C1 ALU74181 ALU74181 ALU74181 ALU74181 C17 X1Y1~X4Y4 X5Y5~X8Y8 X9Y9~X12Y12 X13Y13~X16Y16 C1 = G1+P1G2+P1P2G3 +P1P2P3G4…+P1 P2 …PnCn+1 成组进位发生输出G1* ,成组进位传送输出P1*
16位组内先行进位,组间先行进位 32/64位? X1Y1~X4Y4 X5Y5~X8Y8 X9Y9~X12Y12 X13Y13~X16Y16 P* G* C1 C5 CLA (74182) P1 G1 C2 P2 G2 C3 P3 G3 C4 P4 G4 P1* G1* S1 ~S4 S5 ~S8 P3* G3* S9 ~S12 P4* G4* S13 ~S16 P2* G2* C5 C9 C13 ALU74181 ALU74181 ALU74181 ALU74181 C17 X1Y1~X4Y4 X5Y5~X8Y8 X9Y9~X12Y12 X13Y13~X16Y16 32/64位?
Outline 定点补码加/减法运算 定点乘法运算 浮点运算 运算器组织 运算器部件举例
3.2 定点乘法运算 原码乘法运算方法 原码乘法运算实现 补码乘法运算方法 补码乘法运算实现
+ p9p8p7p6p5p4p3p2p1p0 多位乘法必须先计算一位乘法,然后累加求和 a4a3a2a1a0 x b4b3b2b1b0 p9 a4b0 a3b0 a2b0 a1b0 a0b0 a4a3a2a1a0 p9p8p7p6p5p4p3p2p1p0 x b4b3b2b1b0 a3b1 a2b1 a1b1 a0b1 a4b1 a3b2 a2b2 a1b2 a0b2 a4b2 a3b3 a2b3 a1b3 a0b3 a4b3 + a3b4 a2b4 a1b4 a0b4 a4b4 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 多位乘法必须先计算一位乘法,然后累加求和
乘法运算实现方法 执行乘法运算子程序实现乘法运算 设置专用乘法器实现乘法运算 借助加法器配置相应部件实现乘法运算
乘法器 一位乘法电路实现 S=X*Y Output Yi Xi 1 1 1 一个与门就可以实现一位乘法
多位原码乘法 符号位直接异或即可得到乘积的符号 仅仅需要考虑其数值部分的计算 以定点小数为例进行讨论
相加数产生部件 经过一级门电路延迟,即可得到所有的相加数 … a4b4 a1b0 a0b0 A = 0. a4 a3 a2 a1 a0 B = 0. b4 b3 b2 b1 b0 & 经过一级门电路延迟,即可得到所有的相加数
5位无符号数阵列乘法器电路 p5 p4 p3 p6 p7 p9 p8 p2 p1 p0 COUT a4b0 a3b0 a2b0 a1b0 a4b0 a3b0 a2b0 a1b0 a0b0 p4 p3 a1b1 a0b1 a3b1 a2b1 a4b1 COUT a3b2 a2b2 a1b2 a0b2 a4b2 COUT a3b3 a2b3 a1b3 a0b3 a4b3 p6 COUT p7 a3b4 a2b4 a1b4 a0b4 a4b4 p9 COUT p8 p2 p1 p0 5位无符号数阵列乘法器电路
5位无符号数阵列乘法器电路 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 a4b0 a3b0 a2b0 a1b0 a0b0 a1b1 a0b1 a3b1 a2b1 a4b1 a3b2 a2b2 a1b2 a0b2 a4b2 a3b3 a2b3 a1b3 a0b3 a4b3 a3b4 a2b4 a0b4 a4b4 a1b4 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 5位无符号数阵列乘法器电路
. nn位原码乘法器框图 A = af. an1 an2…a1 a0 B = bf. bn1 bn2…b1 b0 … 相加数产生部件 an1bn1 … a1b0 a0b0 n×n乘法阵列 =1 … P2n1 P2n2 P2n3 P1 P0 Pf .
4*5个全加器, 8个全加器延迟 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 a4b0 a3b0 a2b0 a1b0 a4b1 a4b2 a3b2 a2b2 a1b2 a0b2 a4b3 a3b3 a2b3 a1b3 a0b3 a4b4 a3b4 a2b4 a1b4 a0b4 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 4*5个全加器, 8个全加器延迟
原码阵列乘法器时间延迟 n(n-1)个FA 延迟时间 故总延迟为 (n-1)FA +(n-1)FA 每一个FA包含三级门电路延迟T 2(n-1)*3T +T(相加数产生时间)
补码乘法器原理图 [A]补 = af. an1 … a1 a0 [B]补 = bf. bn1 … b1 b0 n位求补器 n位求补器 数值同原码 相加数产生电路(同前) 相加数 乘法阵列(同前n×n阵列) =1 … 积绝对值 Pf . 2n位求补器 … (补码乘积) P2n1 P1 P0
乘法运算实现方法 执行乘法运算子程序实现乘法运算 设置专用乘法器实现乘法运算 借助加法器配置相应部件实现乘法运算 原码一位乘法的运算方法与逻辑实现 补码一位乘法的运算方法与逻辑实现
5位无符号数阵列乘法器电路 p5 p4 p3 p6 p7 p9 p8 p2 p1 p0 COUT a4b0 a3b0 a2b0 a1b0 a4b0 a3b0 a2b0 a1b0 a0b0 p4 p3 a1b1 a0b1 a3b1 a2b1 a4b1 COUT a3b2 a2b2 a1b2 a0b2 a4b2 COUT a3b3 a2b3 a1b3 a0b3 a4b3 p6 COUT p7 a3b4 a2b4 a1b4 a0b4 a4b4 p9 COUT p8 p2 p1 p0 5位无符号数阵列乘法器电路
0.p9p8p7p6p5p4p3p2p1p0 0.a4a3a2a1a0 x 0.1 0 1 0 1 5位无符号数阵列乘法器电路 p5 p4 a4 a3 a2 a1 a0 p4 p3 COUT a3 a2 a1 a0 a4 COUT p6 COUT p7 a3 a2 a1 a0 a4 p9 COUT p8 p2 p1 p0 5位无符号数阵列乘法器电路
5位无符号数阵列乘法器电路 Σ=XYn Σ 右移一位 Σ+=XYn-1 Σ 右移一位 Σ+=XYn-2 Σ 右移一位 Σ+=XYn-3 p5 a4 a3 a2 a1 a0 p4 p3 Σ 右移一位 COUT Σ+=XYn-1 Σ 右移一位 a3 a2 a1 a0 a4 COUT Σ+=XYn-2 p6 Σ 右移一位 COUT Σ+=XYn-3 p7 a3 a2 a1 a0 a4 p9 COUT p8 p2 p1 p0 5位无符号数阵列乘法器电路
部分积累加的数学表示 X*Y=X[Y12-1+Y22-2+…Yn2-n] 部分积=XYn 部分积=XYn-1+XYn 2-1 =XY12-1+XY22-2+…XYn2-n X*Y=X[Y12-1+Y22-2+…Yn2-n]
原码乘法 算法流程图 开始 i = 0, 0→∑ N Yn=1 Y ∑ + 0→ ∑ N i = n Y X0⊕Y0→P0 结束 i+1→i N i = n Y X0⊕Y0→P0 结束
例子 已知X=0.1101 Y=-0.1011 计算[X]原[Y]原
部分积 乘数 判断位 说明 00.0000 00.1101 + P0=0 Y4=1,+|X| Y0.1011 00.1101 00.0110 1 右移一位得P1 Y4=1,+ |X| Y0.101 + 01.0011 1 00.1001 11 00.0000 Y0.10 右移一位得P2 Y4=0,+0 + 00.1001 11 00.0100 111 00.1101 右移一位得P3 Y4=1,+ |X| Y0.1 + 01.0001 111 00.1000 1111 Y0 右移一位得P4=|X|·|Y|
原码乘法逻辑结构 ∑= ∑+YnX R1 乘数Y Yn R0 部分积∑ 计 数 器 +1计数器 Σ→R0 移位控制 加法器Σ & 控制电路 计 数 器 Σ→R0 +1计数器 移位控制 加法器Σ & & 控制电路 X0 被乘数X R2 ∑= ∑+YnX
部分积R0 乘数R1 Yn 判断位 1 + |X| 1 1 1 1 1 + |X| 1 1 1 1 + 0 1 1 1 + |X| 1 1 1 + |X| 1 1 1 |X|= 0.1101, |Y|= 0.1011 1 1 + |X| 1 1 1 1 + 0 1 1 1 + |X| 1 1 1 1
部分积累加的数学表示 部分积=XYn 部分积=XYn-1+XYn*2-1 部分积=XYn-2+(XYn-1+XYn*2-1)2-1 =XY1*2-1+XY2*2-2+…XYn*2-n X*Y= X[Y1*2-1+Y2*2-2+…Yn*2-n]
补码一位乘法 1) 被乘数[X]符号任意,乘数[Y]为正 [X]补=X0.X1X2…Xn [Y]补=0.Y1Y2…Yn [X]补[Y]补=(2+X) Y =(2n+1+X) Y =2n+1Y+XY =2 2n 0.Y1Y2…Yn+XY =2(Y1Y2…Yn)+XY =2+XY =[X Y]补 [X Y]补= [X]补[Y]补
补码一位乘法 1) 被乘数[X]符号任意,乘数[Y]为负数 [X]补=X0.X1X2…Xn [Y]补=1.Y1Y2…Yn [X Y]补=[X (0.Y1Y2…Yn - 1) ]补 =[X 0.Y1Y2…Yn - X ]补 =[X 0.Y1Y2…Yn]补- [X]补 =[X]补 0.Y1Y2…Yn- [X]补 =[X]补 0.Y1Y2…Yn - Y0[X ]补
补码一位乘法 [X Y]补=[X]补 0.Y1Y2…Yn-Y0 [X ]补 =[X]补(-Y0+0.Y1Y2…Yn) =[X]补(-Y0+Y12-1+Y22-2+…Yn 2-n) =[X]补[-Y0+(Y1-Y12-1)+(Y22-1-Y22-2)+…(Yn2-n+1-Yn2-n)] = [X]补[Y1-Y0+(Y2-Y1)2-1+(Y3-Y2)2-2+…(0-Yn)2-n] XY= X [ Y12-1 + Y22-2 + … Yn2-n] 原码乘法
开始 i = 0, 0→ ∑ 01 Yn Yn+1=? 10 00或11 ∑ + [X]补→∑ ∑不变 ∑ + [X]补→∑ Y i=n+1 结束 N ∑、[Y]补右移一位 i + 1
例子 已知X=1.0101 Y=1.0011计算[X]补[Y]补 解: [-X]补=0.1011
部分积 乘数 判断位 说明 00.0000 00.1011 + Yn+1=0 YnYn+1=10,加[–X]补 1.00110 00.1011 00.0101 00.0000 1 右移一位得P1 末2位为11,+ 0 1.0011 + 00.0101 1 00.0010 11 11.0101 右移一位得P2 末2位为01 +[X]补 1.001 + 11. 0111 11 11.1011 111 00.0000 右移一位得P3 末2位为00 +0 1.00 + 11.1011 111 11.1101 1111 00.1011 1.0 右移一位得P4 末2位为10 –[-X]补 + 00.1000 1111
补码一位乘法逻辑结构 ∑=2-1 ∑+(Yn+1-Yn) [X]补 R0部分积∑ R1乘数[Y]补 Yn Yn+1 移位控制 加法器C 00/11 01 10 & 1 =1 ∑=2-1 ∑+(Yn+1-Yn) [X]补 R2 被乘数[X]补
Outline 定点补码加/减法运算 定点乘法运算 浮点运算 运算器组织 运算器部件举例
浮点加减法运算 假设: 计算X+Y=? 求解: 如:Ex=Ey S=2Ex × (Mx+My) 如:Ex≠Ey ?????
对阶 大阶对小阶还是小阶对大阶??? 对阶(使得小数部分可以按位权值按位相加) 对阶过程应该是小阶对大阶 尾数右移 210*(0.11000)+28*(0.00110) 大阶对小阶 210*(0.11000)--28*(11.000) 11.000+0.00110 ????????? 小阶对大阶 28*(0.00110)--210*(0.00001) 0.00001+0.11000=0.11001 对阶过程应该是小阶对大阶 尾数右移
尾数运算 Ex=Ey 满足后 S=2Ex(Mx+My)
运算结果规格化 210*(0.11000) 也可表示为 211*(0.01100) 为提高精度,尾数不为零的时,要求其绝对值大于1/2,即尾数最高有效位为1,否则要以修改阶码的方式同时左右移小数点,使其变成这一要求的表示形式,这个过程称为浮点数的规格化 同一个浮点数的编码唯一 将运算结果右移以实现规格化表示称为向右规格化,右归 将运算结果左移以实现规格化表示称为向左规格化,左归
规格化形式 规格化数形式 0.1XXXX -0.1XXXX 补码规格化形式 00.1XXXX 11.0XXXX
计算机在表示浮点数时,通常进行向左规格化处理 规格化方法 连符号位一起移位 00.0XXXX -- 00.1XXX0 左规 11.1XXXX -- 11.0XXX0 左规 01.XXXXX -- 00.1XXXX 右规 10.XXXXX -- 11.0XXXX 右规 计算机在表示浮点数时,通常进行向左规格化处理 上溢的时候,右归 下溢的时候,左归
向左规格化 1 尾数左移两位, 阶码减2 1 1 1 尾数左移一位, 阶码减1 1 1
向右规格化 1 尾数连同符号位 进位位右移一位, 阶码加1 1 1 1 尾数连同符号位 进位位右移一位, 阶码加1 1 1
规格化规则小结 运算结果产生溢出时,必须进行右归 如出现10.XX或者01.XXX 如结果出现00.0XXX或11.1XX必须左归 左归时最低数据有效位补0 右归时连同符号位进位位一起右移 左归时,阶码作减法,右归时,阶码作加法
舍入处理 右规后低位部分丢失了一位, 这会对数产生一定的误差 0舍1入法 如被丢的最高数位为0,舍去, 如为1,则将尾数末位加一 截去法 1 1 1 右规后低位部分丢失了一位, 这会对数产生一定的误差 0舍1入法 如被丢的最高数位为0,舍去, 如为1,则将尾数末位加一 截去法
溢出处理 尾数上溢 右归 尾数下溢 左归 阶码上溢 正无穷和负无穷 阶码下溢 0
浮点数加减法 五个基本步骤 对阶 尾数求和 规格化(左规,右规) 舍入(截去、0舍1入) 检查溢出
解:将x,y转换成浮点数据格式 步骤1:对阶,阶差为Ex-Ey [x]浮 = 00 101, 00.11011011 例1 两浮点数x = 2101×0.11011011, y = 2111×(-0.10101100)。假设尾数在计算机中以补码表示,可存储10位尾数,2位符号位,阶码以补码表示,双符号位,求x+y。 解:将x,y转换成浮点数据格式 [x]浮 = 00 101, 00.11011011 [Y]浮 = 00 111, 11.01010011+1 00 111, 11.01010100 步骤1:对阶,阶差为Ex-Ey -Ey=11000+1=11001 Ex-Ey=00101+11001=11110=-2 < 0 Ex-Ey<0 Ex<Ey 小阶对大阶, X阶码加2 X尾数右移2位
[x]浮 = 00 111, 00.00110110(11) 步骤2:尾数求和 [X+Y]浮 = 00 111, 00.00110110(11) + 00 111, 11.01010100 = 00 111, 11.10001010(11)
步骤3:计算结果规格化 步骤4:舍入处理 步骤5:溢出判断 无溢出 [X+Y]浮 = 2110 x (-00.11101011) 00110, 11.00010101(1) 步骤4:舍入处理 [X+Y]浮 = 00 110, 11.00010110 (0舍1如法) [X+Y]浮 = 00 110, 11.00010101 (截去法) 步骤5:溢出判断 无溢出 [X+Y]浮 = 2110 x (-00.11101011)
浮点数乘法运算 如:X=2m Mx Y=2n My X Y=2m Mx ( 2n My ) =2m+n (Mx My)
浮点数乘法运算 (1) 阶码相加 (2) 尾数相乘 (3) 结果规格化 阶码相加可能产生溢出,若产生溢出,则给出溢出指示,计算机进行溢出处理。 (2) 尾数相乘 尾数部分相乘可得积的尾数,尾数相乘可按定点乘法运算的方法进行运算。 (3) 结果规格化 当运算结果需要进行规格化操作时,可按浮点加/减法运算规格化方式处理,舍入方式也与加/减法方式中的相同。
Outline 定点补码加/减法运算 定点乘法运算 浮点运算 运算器组织 运算器部件举例
运算器功能 数据进行算术运算和逻辑运算 暂存参加运算的数据及运算的中间结果 选取相应部件中的数据参与运算 反映运算处理的状态
算术逻辑运算单元ALU A L U o p e r a t i o n a A L U R e s u l t O v e r f l o w b
寄存器组
多路选择电路 OUT(i) R → OUT R → OUT R → OUT R → OUT R (i) R (i) R (i) R (i) ≥1 & & & & R → OUT 3 R → OUT 2 R → OUT 1 R → OUT R (i) R (i) R (i) R (i) 1 2 3
运算器结构 数据总线DBUS 移位器 ALU PSW CLA ADD 30 STA 40 NOP JMP 21 … 000 006 000 006 000 004 20 21 22 23 24 30 40 操作数X 操作数Y 左路开关选择 右路开关选择 AX BX CX DX DR 数据总线DBUS
BUS BUS→bus SRBUS 状态寄存器 ALUBUS bus→BUS ALU A B bus 锁存器LA 锁存器LB LDLA LDLB Lbus 选择电路 RiL … bus→L R0 R1 LDR0 … Rn LDRn
Outline 定点补码加/减法运算 定点乘法运算 浮点运算 运算器组织 运算器部件举例
运算部件举例 ALU74181 先行进位的多功能算术/逻辑运算单元 SN74181 4位ALU Cn+4 S3 S2 S1 S0 A3 A2 B3 B2 B1 B0 Cn M A=B P G SN74181 4位ALU F3 F2 F1 F0 18 20 22 1 19 21 23 2 7 8 14 15 17 13 11 10 9 16 3 4 5 6 C0
先行进位电路CLA74182 先行进位电路74182 P4G4 P3G3 P2G2 P1G1 C0 C4 C3 C2 C1 P* G*
是否可以如下连接? 16位组内先行进位,组间先行进位 是否可以如下连接? 16位组内先行进位,组间先行进位 P* G* P4 G4 C3 P3 G3 C2 P2 G2 C1 P1 G1 CLA (74182) C0 C4 ALU74181 X16Y16X15Y15X14Y14X13Y13 C12 P16 * G16 * ALU74181 X12Y12 X11Y11 X10Y10X9Y9 C8 P12 * G12 * ALU74181 X8Y8X7Y7X6Y6 X5Y5 C4 P8 * G8 * ALU74181 X4Y4X3Y3X2Y2 X1Y1 C0 P4* G4 *
成组进位 C4 = G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 G4 *= G4+P4G3+P4P3G2+P4P3P2G1 成组进位发生输出 P4 *= P4P3P2P1 成组进位传递函数 C4 = G4*+P4*C0
两级先行进位电路(74181里实现) G * P * C C C & & & & & & & & & & C G P G P G P G P 3 2 1 ≥1 & ≥1 ≥1 ≥1 & & & & & & & & & C G P G P G P G P 4 4 3 3 2 2 1 1
成组进位 C4 = G4*+P4*C0 C8 = G8*+P8* C4 =G8*+P8* (G4*+P4*C0) =G8*+P8*G4*+P8*P4*C0 C16 = G16*+P16* C12 =G16*+P16*G12*+P16*P12*G8* +P16*P12*P8*G4*+P16*P12*P8*P4*C0 用4组 P* G*作输入,即可复用原先行进位电路 产生组间先行进位信号
16位组内先行进位,组间先行进位 P* G* CLA (74182) P4 G4 C3 P3 G3 C2 P2 G2 C1 P1 G1 ALU74181 X16Y16X15Y15X14Y14X13Y13 C12 P16 * G16 * ALU74181 X12Y12 X11Y11 X10Y10X9Y9 C8 P12 * G12 * ALU74181 X8Y8X7Y7X6Y6 X5Y5 C4 P8 * G8 * ALU74181 X4Y4X3Y3X2Y2 X1Y1 C0 P4* G4 *
32位先行进位系统 P* G* CLA (74182) P* G* CLA (74182) P G Cout C0 P G Cout C0 C3 C2 C1 CLA (74182) C4 C0 P* G* C3 C2 C1 CLA (74182) P G Cout C0 P G Cout C0 P G Cout C0 P G Cout C0 P G Cout C0 P G Cout C0 P G Cout C0 Cout C0
64位先行进位系统 16片74181 ,5片74182芯片 CLA (74182) P* G* CLA (74182) P* G* P4 G4 C3 P3 G3 C2 P2 G2 C1 P1 G1 CLA (74182) C0 P* G* C3 C2 C1 P G C0 CLA (74182) C3 C2 C1 P G C0 P* G* CLA (74182) C0 C3 C2 C1 P G P* G* CLA (74182) C0 C3 C2 C1 P G P* G* CLA (74182) 16片74181 ,5片74182芯片
本章重点内容… 定点补码加/减法运算 原码补码一位乘法运算 无符号位乘法器的电路实现 浮点数加减法运算 先行进位电路CLA74182原理 利用74182及74181电路构造多级先行进位电路