当前位置:
文档之家› 计算机组成原理CPU运算方法(Part4)
计算机组成原理CPU运算方法(Part4)
一、加减法运算 二、乘法运算 三、除法运算 四、浮点数运算 五、算术逻辑运算单元
简单回顾—基本逻辑电路
与、或、非、多路选择器
AND/OR/INVERT/MUX
a b Out
a b
Out
0 0 1 1
0 1 0 1
0 0 0 1
a
b
Out
a b
+
Out
0 0 1 1
0 1 0 1
0 1 1 1
简单回顾—基本逻辑电路
与、或、非、多路选择器
AND/OR/INVERT/MUX
a
Out
a 0 1
Out 1 0Biblioteka a b0Out
1
d 0 1
Out a b
d
简单回顾—2的补码表示法
假设A由 假设 由an-1an-2…a1a0表示 最高位a 最高位 n-1为符号位
an-1= 0 表示 为正数 表示A为正数 an-1= 1 表示 为负数 表示A为负数
n
2.2 补码乘法(一位比较法,又称一位Booth法) 补码乘法(一位比较法,又称一位Booth法 Booth
令 Q−1 = 0 则
[ P]补 = [ M × Q]补 = [ M] 补 × Q 1 1 1 1 n n n = Qn−2 − Qn−1 [ M]补 2 + Qn−3 − Qn−2 [ M]补 2 + L+ 0 − Q0 [ M]补 2 L 2 2 2 2 P0 = 0 1 P1 = P0 + ( Q−1 − Q0 )[ M ] 补 2 n 2 1 P2 = P1 + ( Q0 − Q1 )[ M ] 补 2 n 变成分步算式: 变成分步算式: 2 M 1 Pi = Pi −1 + ( Qi − 2 − Qi −1 )[ M ] 补 2 n 2 M 1 Pn = P n −1 +( Qn − 2 − Qn −1 )[ M ] 补 2 n 2
逻辑部件 加法器Adder 加法器 被乘数寄存器M 被乘数寄存器 乘数寄存器Q(乘积低位部分) 乘数寄存器 (乘积低位部分) 累加器A(部分积,乘积高位部分) 累加器A(部分积,乘积高位部分) 控制逻辑 数据通路 Adder M Adder A A Adder A Shr A, Q Shr Q, Qn-1 A0
S12
S11
S8
S7 S6 S5 S4
S3 S2 S1 S0
C 16
4位并行加法器
C 12
4位并行加法器
C8
4位并行加法器
C4
4位并行加法器
C0
B15 A 15
B12 A 12
B11 A 11
B8 A8
B7 A7
B4 A4
B3 A3
B0 A0
1.1 加减法运算
分组并行进位加法器(组内并行,组间并行) 分组并行进位加法器(组内并行,组间并行)
[ P ] 补 = [ M × Q] 补 = [ M ] 补 × Q
问题与约束
参加运算的操作数本身是补码形式 机器中不能直接表示真值 必须寻求一种直接利用操作数补码进行运算来实现补码 乘法的算法 结果要求直接是补码形式
2.2 补码乘法(一位比较法,又称一位Booth法) 补码乘法(一位比较法,又称一位Booth法 Booth
0000 0101 0101 0010 1 0101 0111 1 0011 11 0101 1000 11 0100 011 0000 0100 011 0010 0011
2.1 无符号数乘法
机器算法改进
通过多次加法实现乘法 每次加法均在上一次加法的结果(部分积) 每次加法均在上一次加法的结果(部分积)的基础上进行 每完成一次加法, 每完成一次加法,结果右移一位
产生原因: 产生原因:同符号数相加
4位2进制补码表示范围 位 进制补码表示范围
-8…7 (1000…0111)
正数相加溢出
7+7 (0111+0111)=14(1110)
负数相加溢出
-8-8(1000+1000)=(0000)
1.1 加减法运算
判断溢出的办法
采用双符号位: (表示正数), 表示负数); ),11(表示负数);符 采用双符号位:00(表示正数), 表示负数);符 号位出现01或 ,表明发生溢出。 号位出现 或10,表明发生溢出。
C 16 C 12 C8 C4
C0 组间并行进位链
S15
S12
S11
S8
S7 S6 S5 S4
S3 S2 S1 S0
4位并行加法器
4位并行加法器
4位并行加法器
4位并行加法器
B15 A 15
B12 A 12 A 11
B11
B8 A8
B7 A7
B4 A4
B3 A3
B0 A0
1.1 加减法运算
加(减)溢出问题
P0 = 0
变成分步算式: 变成分步算式:
1 P = P0 + Q0 M 2 n 1 2 1 P2 = P + Q1M 2 n 1 2 M 1 Pi = Pi −1 + Qi −1M 2 n 2 M
( ( ( (
)
)
) )
1 Pn = Pn −1 + Qn −1M 2 n 2
2.1 无符号数乘法
逻辑实现
A取值范围:[-2n-1,2n-1-1] 取值范围: 取值范围
A = −2n −1 an −1 + ∑ 2i ai
i =0 n− n− 2
1) A ≥ 0(即an −1 = 0) A = ∑ 2i ai
i =0
n−2
2) A < 0(即an −1 = 1) A = −2n −1 + ∑ 2i ai
i =0
4位2进制补码表示范围 位 进制补码表示范围
-8…7 (11000…00111)
正数相加溢出
7+7 (00111+00111)=14(01110),发生溢出 ,
负数相加溢出
-8-8(11000+11000)=(10000),发生溢出 ,
一、加减法运算 二、乘法运算 三、除法运算 四、浮点数运算 五、算术逻辑运算单元
2.1 无符号数乘法
逻辑实现结构图
Multiplier c
An-1 A0 Shift right Qn-1 Q0
shift & add Control logic
n-Bit Adder
Add
Mn-1
M0
Multiplicand
2.2 补码乘法
补码乘法规则
乘积的补码= 乘积的补码=被乘数的补码 ×乘数的真值
2.1 无符号数乘法
笔算分析
A3A2A1A0×B3B2B1B0 (0101 × 0111) )
0101 × 0111 0101 01010 0 010100 00
+
0000000 000 0100011
P0 +A×B0 P1 P1右移 +A×B1 P2 P2右移 +A×B2 P3 P3右移 +A×B3 P4 P4右移
计算机组成原理与汇编语言
(2006级 (2006级)
北航计算机学院 Tel :82316285 Mail:liuxd@ liuxd@ 刘旭东©
第四部分
中央处理器--运算方法 中央处理器--运算方法 --
一、加减法运算及其实现 二、乘法运算及其实现 三、除法运算 四、浮点数运算 五、算术逻辑运算单元
1.1 加减法运算
原则(以定点整数为例说明) 原则(以定点整数为例说明)
[ A + B] 补 = [ A] 补 + [ B] 补
[ A − B ] 补 = [ A] 补 + [ − B] 补
[-X] [X]补与[- ]补 ]
若[ x]补=x0 x1 x2 ...xn −1 则[− x]补 = x 0 x1 x 2 ...x n −1 + 1 所以有 [ A − B ]补=[ A]补+[ B ]补+1
(
)
(
)
((
)
)
[ [ [
]
]
]
[
]
2.2 补码乘法(一位比较法,又称一位Booth法) 补码乘法(一位比较法,又称一位Booth法 Booth
n−2
简单回顾—2的补码表示法
假设A由 表示, 假设 由a3a2a1a0表示,a3为符号位
十进制表示 +7 +6 +5 +4 +3 +2 +1 0 2的补码表示 的补码表示 0111 0110 0101 0100 0011 0010 0001 0000 十进制表示 -1 -2 -3 -4 -5 -6 -7 -8 2的补码表示 的补码表示 1111 1110 1101 1100 1011 1010 1001 1000
并行进位的特点
同时产生进位 加法延时缩短 实现相对复杂
1.1 加减法运算
并行进位链
C4 C3 C2 C1
+
+
+
+
C0
G3 P3
G2 P2
G1 P1
G0 P0
1.1 加减法运算
并行进位加法器
1.1 加减法运算
分组并行进位加法器(组内并行,组间传递) 分组并行进位加法器(组内并行,组间传递)
S15
2.1 无符号数乘法
算法推导(以定点整数为例) 算法推导(以定点整数为例)
M = M n −1 M n − 2 ...... M 0 Q = Qn −1Qn − 2 ...... Q0 = Qn −1 2 n −1 + Qn − 2 2 n − 2 +L+ Q0 2 0