(计算机组成原理)第4章 运算方法与运算器-fjw-1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• Sf1 Sf2=10时,结果正溢出; • Sf1 Sf2=11时,结果负溢出。 ▪ 由于移码运算用于浮点数的阶码,当运算结果正 溢出时,浮点数上溢;当运算结果负溢出时,浮 点数下溢,当作机器零处理。
17
四、十进制加法运算
❖ 十进制加法器实现: 二进制加法器+校正 电路
❖ 当相加的两数之和
S>9时,加6校正;当
来实现。 ▪ 算法:在微程序中依据串行乘除运算算法,循环累
加、右移指令→乘法,循环减、左移指令→除法。 ▪ 运算速度:有所提高,但硬件设计也相对复杂。 ▪ 适用场合:低性能CPU。
21
一、原码乘法及实现
❖ Ⅲ.用高速的阵列乘法器和阵列除法器来实现。
▪ 硬件上:设置有专用的、并行运算的阵列乘法器和 阵列除法器。
24
举例
❖ 例如:X=+1011, Y=-1101,用原码 一位乘法计算 P=X·Y。
❖ [X]原=0,1011 ❖ [Y]原=1,1101 ❖ Ps=Xs⊕Ys
=0⊕1=1 ❖ |P| = |X|·|Y|
[P]原=1,10001111
部分积 0,0000 + 0,1011 0,1011 0,0101 + 0,0000 0,0101 0,0010 + 0,1011 0,1101 0,0110 + 0,1011 1,0001 0,1000
例: [X]补 =0.1101,则: [-X]补 = 1?.0011 [Y]补 =1.1101,则: [-Y]补 = ?0.0011
6
补码加减运算举例
❖例:已知X=+1011,Y=-0100,用补码计算X+Y和X-Y。
▪写出补码:
[X]补 =0,1011 ▪ 计算:
[Y]补 =1,1100 [-Y]补 =0,0100
右移指令→乘法,循环减、左移指令→除法。 ▪ 运算速度:较慢。 ▪ 适用场合:单片机。
20
一、原码乘法及实现
❖ Ⅱ.用硬件乘法器和除法器实现。
▪ 硬件上:设置有并行加法器、移位器和若干循环、 计数控制逻辑电路搭成的串行乘除法器。
▪ 指令系统:具有乘除法指令。 ▪ 实现:乘除运算通过微程序一级(硬件+微程序)
13
补码的算术移位
❖ 算术左移:符号位不变,高位移出,低位补0。
▪ 为保证补码算术左移时不发生溢出,移位的数据 最高有效位必须与符号位相同。
▪ 在不发生溢出的前提下,用硬件实现补码的算术 左移时,直接将数据最高有效位移入符号位,不 会改变机器数的符号。
❖算术右移:符号位不 变,低位移出,高位 正数补0,负数补1, 即高位补符号位。
▪ 指令系统:具有乘除法指令。 ▪ 实现:完全通过硬件来实现。 ▪ 算法:并行乘/除法。 ▪ 运算速度:很快,但硬件设计相当复杂。 ▪ 适用场合:高性能CPU。
1、手工乘法算法 2、原码一位乘法算法 3、原码乘法的硬件实现
22
1、手工乘法算法
❖ 手工计算1011×1101,步骤: ❖ 手工算法:对应每1位乘数求得1项位
Xf 符号位
X1 X2
Xf 符号位
X1 X2
Xn
0
Xn
14
补码的算术移位举例
❖ 例:设X=0.1001,Y=-0.0101,求 ▪ [X]补= 0?.1001 ▪ [2X]补= ?1.0010(溢出) ▪ [X/2]补=?0.0100 ▪ [Y]补= 1?.1011 ▪ [2Y]补= ?1.0110 ▪ [Y/2]补=?1.1101
❖ 确定发生溢出的情况: ▪ 正数相加,且结果符号位为1; ▪ 负数相加,且结果符号位为0; ▪ 正数-负数,且结果符号位为1; ▪ 负数-正数,且结果符号位为0;
8
常用的判溢方法(补码加减运算)
❖ (1)单符号位判溢方法2 ▪ 当最高有效位产生的进位和符号位产生的进位不 同时,加减运算发生了溢出。 ▪ V=C1⊕Cf
乘数Y 1101
操作说明 Y4=1,+|X|
1110
右移一位 Y3=0,+0
1 1 1 1 右移一位 Y2=1,+|X|
1 1 1 1 右移一位 Y1=1,+|X|
1111
右移一位
25
3、原码乘法的硬件实现
A(部分积)
Q(乘数|Y|) Qn
右移一位
缓冲器 C F
Cn 并行加法器(n位) C0
C
计数器 P =0
❖ (2)双符号位判溢方法 ▪ X和Y采用双符号位补码参加运算,正数的双符号 位为00,负数的双符号位为11;当运算结果的两 位符号Sf1 Sf2不同时(01或10),发生溢出。 ▪ V= Sf1 ⊕ Sf2= Xf ⊕Yf ⊕Cf⊕ Sf ▪ Sf1 Sf2=01,则正溢出;Sf1 Sf2=10,则负溢出。
控制逻辑
B(0被1乘0数1|X1|)
31
第三次求部分积 加运算:+|X| 00000 1101
01011 1101
A(0 部01 01分10积01)
Q(1乘数1 |1Y|) 1Qn 00101 1110
右移一位
CF
缓冲器
CP
00101 1110 00010 1111
Cn 并行加法器(n位) C0
01101 1111
A(0 部01 0分01积01)
Q(1乘数1 |Y0|) Q1n
右移一位
CF
缓冲器
CP
00000 1101 01011 1101
Cn 并行加法器(n位) C0
控制逻辑
B(0被1乘0数1|X1|)
28
第一次求部分积 右移1位
A(0 部10 01分10积1)
Q(1乘1数11|Y10|) 0Q1n
右移一位
9
双符号位判溢方法举例
❖ 例:用补码计算X+Y和X-Y ▪ (1)X=+1000,Y=+1001 ▪ (2)X=-1000,Y=1001
[X]补 00,1000 + [Y]补 00,1001
[X+Y]补 01,0001
Sf1 Sf2=01,正溢出
[X]补 11,1000 + [Y]补 00,1001
15
三、移码加减运算与判溢
❖ 移码和移码计算
❖ [X]移 =2n+X
[Y]移 =2n+Y -2n≤X≤2n-1
❖ [X]移 + [Y]移 =2n+X+2n+Y= 2n+(2n +X+Y)
❖
= 2n + [ X+Y]移
❖ [X]移 + [-Y]移 = 2n + [ X-Y]移
❖移码和补码混合计算
❖[Y]补 =2n+1+Y (mod 2n+1) ❖[X]移 + [Y]补 = [ X+Y]移
CF
缓冲器
CP
00000 1101 01011 1101 00101 1110
Cn 并行加法器(n位) C0
控制逻辑
B(0被1乘0数1|X1|)
29
第二次求部分积 加运算:+0
A(0 部0 1分0积1)
Q(1乘1数11|1Y1|)00Qn
Байду номын сангаас
右移一位
CF
缓冲器
CP
00000 1101 01011 1101 00101 1110 00101 1110
16
三、移码加减运算与判溢
❖ 移码运算结果判溢:双符号位 0 Xf X1 X2 ……Xn
▪ [X]移的最高符号位恒为0
+ Yf Yf Y1 Y2 ……Yn
▪ [Y]补采用双符号位
Sf1 Sf2 S1 S2 ……Sn
❖ 移码运算结果溢出的判断条件是:
▪ 当结果的最高符号位Sf1=1时溢出,Sf1=0时结果正 确。
一 原码乘法及实现 二 补码乘法及实现 三 阵列乘法器
19
一、原码乘法及实现
❖ 由于计算机的软硬件在逻辑上具有一定的等价性,因 此实现乘除法运算,可以有三种方式:
❖ Ⅰ.用软件实现。
▪ 硬件上:设计简单,没有乘法器和除法器。 ▪ 指令系统:没有乘除指令,但有加/减法和移位指
令 ▪ 实现:乘除运算通过编制一段子程序来实现 ▪ 算法:程序中运用串行乘除运算算法,循环累加、
3
求补运算:[Y]补 → [-Y]补
❖ 求补规则:将[Y]补包括符号位在内每一位取反,末 位加1。
❖ 若[Y]补 = Y0 ,Y1……Yn ,则:
[-补 Y]Y 0Y 1 Y n1
❖ 若[Y]补 = Y0 .Y1……Yn ,则:
[-补 Y Y 0 ]Y 1 Y n 0 .0 0 1
B ……
Qn Q
…… Bi
控制逻辑电路
控制逻辑
Q D MUL
Q CLR
B(被乘数|X|)
26
原码一位乘法 为各寄存器赋初值 00000 1101
A(0 部0 0分0积0)
Q(乘1 数1|Y0|) Q1n
右移一位
CF
缓冲器
CP
Cn 并行加法器(n位) C0
控制逻辑
B(0被1乘0数1|X1|)
27
第一次求部分积 加运算:+|X|
S≤9时,结果正确,
不需校正。
C1
❖ 对于8421 BCD码,校
正条件为:
▪ S8’S4’S2’S1’ ≥1010
▪ 或C=1
S8 S4 S2 S1
四位二进制加法器
0
0
P
S8'S4' S2'S1'
四位二进制加法器
C
C0
A8 A4 A2 A1 B8 B4 B2 B1
18
4.2 定点数的乘法运算及实现
C1
Cf V
二进制并行加法器
ADD/SUB
取反电路
A B
11
3、补码加减运算器的实现
❖ 核心部件:一个普通的二进制并行加法器。 ❖ A:累加器,存放[X]补;B:寄存器,存放[Y]补; ❖ 取反电路: ❖ ADD/SUB =0时,补码加法器,将B寄存器直接送入并行
加法器; ❖ ADD/SUB =1时,补码减法器,将B取反送入并行加法器,
0,1011 + 1,1100
0,0111
[X+Y]补 = 0, 0111
0,1011 + 0,0100
0,1111
[X-Y]补 = 0, 1111
7
2、补码加减运算的溢出判断
❖ 当运算结果超出机器数的表示范围时,称为溢出。计 算机必须具备检测运算结果是否发生溢出的能力,否 则会得到错误的结果。
❖ 对于加减运算,可能发生溢出的情况:同号(两数) 相加,或者异号(两数)相减。
同时,并行加法器的最低位产生进位,即B取反加1, 此时并行加法器的运算相当于[A]补加[-B]补 ,完成减 法运算。
12
二、机器数的移位运算
❖二进制数据(真值)每相对于小数点左移一位,相当 于乘以2;每相对于小数点右移一位,相当于除以2。
❖计算机中的移位运算分为: ▪ 1、逻辑移位:将移位的数据视为无符号数据,各 数据位在位置上发生了变化,导致无符号数据的数 值(无正负)放大或缩小。 ▪ 2、算术移位:将移位的数据视为带符号数据(机 器数)。算术移位的结果,在数值的绝对值上进行 放大或缩小,同时,符号位必须要保持不变。 ▪ 3、循环移位:所有的数据位在自身范围内进行左 移或者右移,左移时最高位移入最低位,右移时最 低位移入最高位。
积,并将位积逐位左移,然后将所有 的位积一次相加,得到最后的乘积。
❖ 乘法的机器算法: ▪ 从乘数的最低位开始,每次根据乘 数位得到其位积,乘数位为0,位 积为0,乘数位为1,则位积为被乘 数;
▪ 用原部分积右移1位加上本次位积, 得新部分积;初始部分积为0。
1011 × 1101
1011 0000 1011 1011 10001111
控制逻辑
B(0被1乘0数1|X1|)
32
第三次求部分积
[X+Y]补 00,0001
Sf1 Sf2=00,无溢出
[X]补 00,1000 + [-Y]补 11,0111
[X-Y]补 11,1111
Sf1 Sf2=11,无溢出
[X]补 11,1000 + [-Y]补 11,0111
[X-Y]补 10,1111
Sf1 Sf2=10,负溢出
10
3、补码加减运算器
Cn 并行加法器(n位) C0
控制逻辑
B(0被1乘0数1|X1|)
30
第二次求部分积
右移1位
A(0 部0 10分01积10)
Q(1乘1 数11|1Y1|)0Q1 n
右移一位
CF
缓冲器
CP
00000 1101 01011 1101 00101 1110 00101 1110 00010 1111
Cn 并行加法器(n位) C0
第4章 运算方法与运算器
4.1 定点数的加减运算及实现 4.2 定点数的乘法运算及实现 4.3 定点数除法运算及实现 4.4 定点运算器的组成与结构 4.5 浮点运算及运算器 4.6 浮点运算器举例
作业
2
4.1 定点数的加减运算及实现
一 补码加减运算与运算器 二 机器数的移位运算 三 移码加减运算与判溢 四 十进制加法运算
23
2、原码一位乘法算法:
❖ 假设[X]原=XS X1 X2 ……Xn , [Y]原=YS Y1 Y2 ……Yn , P=X·Y,PS是积的符号:
❖ 符号位单独处理 Ps=Xs ⊕ Ys ❖ 绝对值进行数值运算 |P|=|X|*|Y| ❖ 初始部分积为0,Yi=1,部分积加|X|,Yi=0,
部分积加0,累加结果右移一位,得新部分 积。 ❖ 累加右移n次,即i=n,n-1,…,2,1。