3. 原码一位除法基本上是从手算演变过来, 符号位单独处理 。 两个原码表示的数相除运算规则: 商的符号位 :两数的 符号 相 异或 商的数值部分: 两作数的 绝对值相除 。 运算方法与普通的十进制小数除法相类似, 设 n 位被乘数 X 和 乘数 Y 用 定点小数 表示(定点整数同样) 被除数: [X] 原 = X f . X n-1 … X 1 X 0 除数: [Y] 原 = Y f . Y n-1 … Y 1 Y 0 商 [ Q ] 原 = ( X f ⊕ Y f ) + (0.X n-1 … X 1 X 0 ) / (0.Y n-1 … Y 1 Y 0 ) 于是原码与原码相除就变成如何进行 两个正数相除 的问题了。 两种除法: 恢复余数法 不恢复余数法(加减交替法) 4.1 、原码一位除法
26. X = 0111 00.1101000 j X S X Y = 0110 00.1010000 j Y S Y S Y j Y + 1 S X j X + 1 S X j X + 1 No No Yes j X = j Y ? S X +- S Y S X j X (or j Y ) j X X f1 ⊕X f2 = 1 X f1 X f2 X 1 + X f1 X f2 X 1 = 1 ? S X j X - 1 输出 Yes Yes No 3 )规格化处理 00.1101000 S X + 00.0101000 S Y 01. 0 010000 右规: 1000 00.10010000 左规 右规 2 )尾数运算 1 )阶码对齐 4 )舍入处理 5 )溢出判断 j X > j Y ? No Yes
27. 例 : 已知 X = 0.11011011 * 2 010 , Y = - 0.10101100 * 2 100 求 X + Y 解 : ① 对大阶: [ j X ] 补 = 00 0010 [ j Y ] 补 = 00 0100 [ - j Y ] 补 = 11 1100 求阶差 Δj= [ j X ] 补 + [ - j Y ] 补 = 00 0010 + 11 1100 = 11 1110 ( -2 ) X 的阶码小: X 阶码 + 2 ( [ j X ] 补 = [ j Y ] 补 = 00 0100 ) X 的尾数右移 2 位,前面补符号位 [ S X ] 补 = 00 00110110 11 (此时保留右移数据,不丢不舍) ② 尾数相加 [ S X ] 补 = [ S X ] 补 + [ S Y ] 补 = 00 00110110 11 + 11 01010100 = 11 1 0001010 11 ③ 规格化操作: 左规 : 数值位左移 1 位 = 11 0 0010101 1 阶码 - 1 ([ j X ] 补 = 00 0011 ) ④ 舍入 舍去的附加位最高位为 1 ,结果最低位 +1 : [ S x ] 补 = 11 00010110 S= - 0.11101010 ⑤ 判溢出 阶码符号为 00 ,不溢出。 最终结果为: X+Y = - 0.11101010 * 2 011 实际运算时,先确定位数。假设机器字长 16 位,采用浮点表示数, 其中阶符 2 位,阶码 4 位,尾符 2 位,尾数 8 位,都用补码表示。
29. X = S X · 2 j X Y = S Y · 2 j Y X * Y = ( S X * S Y ) 2 j X + j Y X / Y = ( S X / S Y ) 2 j X - j Y 5.2 、浮点乘除运算 1 )阶码加减: 乘法: j X + j Y ,除法: j X - j Y 2 )尾数乘除: 乘法: S X * S Y ,除法: S X / S Y 3 )规格化处理; 4 )舍入操作: 有可能带来又一次规格化; 5 )判溢出: 检查阶码上下溢出。
30. 例如: 求 X*Y , X = 0.0110011 * 2 -5 Y = - 0.1110010 * 2 3 阶码(含符号位)用 4 位移码表示,采用单符号位。 尾数(含符号位)用 8 位补码表示,采用单符号位。 [j X ] 补 = 1 011 [j X ] 移 = 0 011 [j Y ] 补 = 0 011 [j Y ] 移 = 1 011 [S X ] 补 = 0.0110011 [-S X ] 补 =1.1001101 [S Y ] 补 =1.0001110 [X] 浮 = 0 011 , 0.0110011 [Y] 浮 = 1 011 , 1.0001110 5.2 、浮点乘除运算
36. A , B , C 寄存器的作用 5 、定点运算器的基本结构 商 除数 被除数 余数 除法 乘数,乘积低位 被乘数 部分积 乘积高位 乘法 无用 减数 被减数 运算结果 减法 无用 加数 被加数 运算结果 加法 C B A 运算
37. ALU 74181 逻辑电路图 P281 P299 S 是状态控制端, S=1, 执行逻辑运算 S=0, 执行算术运算 F 3 ~ F 0 是运算结果 S 0 ~S 3 是运算选择控制端, 决定电路执行哪种算术运算 或哪种逻辑运算。 C n 是 ALU 的最低位进位输入 A 3 ~A 0 , B 3 ~ B 0 是 参加运算的两个数
38. 1.2 、算术逻辑单元 S 是状态控制端, S=1, 执行逻辑运算 S=0, 执行算术运算 S 0 ~S 3 是运算选择控制端, 决定电路执行哪种算术运算 或哪种逻辑运算。 C n 是 ALU 的最低位进位输入 A 3 ~A 0 , B 3 ~ B 0 是 参加运算的两个数 ALU 74181 算术 / 逻辑运算功能表 P281 P299 A· B (A·B) 减 1 A·B 1 1 1 0 A 减 B A 减 B 减 1 A B 0 1 1 0 (A·B) 加 (A+B) 加 1 (A·B) 加 (A+B) B 1 0 1 0 A 加 (A·B) 加 1 A 加 (A·B) A·B 0 0 1 0 “ 0” 减 1 “ 0” 1 1 0 0 (A+B) 加 1 A+B A·B 0 1 0 0 (A+B) 加 1 A+B A+B 1 0 0 0 A+1 A A 0 0 0 0 C n =0 C n =1 S=0 算术运算 S=1 逻辑运算 正 逻 辑 S 0 S 1 S 2 S 3
39. 用 四片 4 位 ALU 电路可组成 16 位 ALU 。( 1110 1101 0101 0001 ) 片内进位是并行快速的,但片间进位是串行慢速的,计算时间长。 把 16 位 ALU 中的每四位作为一组,用类似四位超前进位加法器 “ 位间快速进位 ” 的方法来实现 16 位 ALU 的 “ 组间快速进位 ” 。 16 位快速 ALU Review: 算术逻辑单元