Download presentation
Presentation is loading. Please wait.
1
计算机组成原理 The Principle of Computer
主讲 陈付龙 西北工业大学计算机学院
2
第3章 运算方法与运算器 3.1 运算器的设计方法 3.2 定点补码加减运算 3.3 定点乘法运算 3.4 定点除法运算
3.5 浮点四则运算 3.6 运算器的组成 3.7 十进制数的加减运算方法 3.8 逻辑运算和移动位运算 计算机组成原理 西北工业大学计算机学院
3
3.1 运算器的设计方法
4
计算机进行算术运算的特点 所有数据都是用二进制数位形式来表示的。 在机器内部,数是以编码形式即机器数来表示的。
机器运算规模有限,因而机器运算就要解决运算方法、数据表示格式及数据长度的选取、规定等问题。 用计算机进行运算时,都要把复杂的运算,简化为一系列的、最基本的运算才能实现。计算机可以实现的基本运算有算术运算(加、减、乘、除等)和逻辑运算(与、或、异或等)。 计算机组成原理 西北工业大学计算机学院
5
运算器的逻辑组织结构 根据机器的字长,将N个一位全加器通过加法进位链连接构成N位并行加法器;
利用多路选择逻辑在加法器的输入端实现多种输入组合,将加法器扩展成多功能的算术逻辑部件; 根据乘法运算的算法,将加法器和移位器组合,构成定点乘法器和除法器。将计算定点整数的阶码运算器和计算定点小数的尾数运算器组合构成浮点运算器; 在算术逻辑部件的基础上,配合各类相关寄存器,构成计算机中的运算器 计算机组成原理 西北工业大学计算机学院
6
3.2 定点加减运算
7
3.2.1 定点原码加减运算 原码加法运算规则 (1) 对符号位单独处理。首先要考虑符号,若两数符号相同,则进入(2); 否则进入(3)。
(2) 将两数绝对值相加,求其和。和的符号等于被加数的符号。 (3) 先将它们的绝对值相减,求得和。若运算结果为正,则和的符号等于被加数的符号;结果为负,和的符号等于加数的符号。 计算机组成原理 西北工业大学计算机学院
8
【例】[A]原 =1.01011 [B]原=0.01001 求[A]原+[B]原 解 比较符号: AS=1, BS=0, AS≠BS
绝对值相减: 差: C=|A|-|B|= = 差的符号:CS=0,所以,[A]原+[B]原= 【例】 [A]原= [B]原= 求[A]原+[B]原 解 比较符号: AS=0, BS=1, AS≠BS 差: C=|A|-|B|= = 差的符号:CS=1,对C取补为: 所以,[A]原+[B]原= 计算机组成原理 西北工业大学计算机学院
9
原码减法运算,可按如下步骤进行: (1) 先比较两数符号,若两数符号相异,则进入(2);两数符号相同进入(3)。
(2) 将两数绝对值相加,求得差数绝对值。差的符号等于被减数的符号。 (3) 将它们的绝对值相减,求得差数。若运算结果为正,则差的符号等于被减数的符号;结果为负,差的符号等于被减数的符号取反。 原码加减运算总结: (1) 符号位单独处理 (2) 绝对值加或减 (3) 合并(符号和数值) 计算机组成原理 西北工业大学计算机学院
10
3.2.2 定点补码加减运算 1.补码加减运算规则: [X+Y]补=[X]补+[Y]补(mod M)
[X-Y]补=[X]补+[-Y]补= [X]补-[Y]补 (mod M) 对定点小数,M=2;对定点整数,M=2n+1(n为定点整数数值部分的位数) 【例】X= Y= 求[X-Y]补 解 [X]补= [-Y]补= 则 [X-Y]补 = [X]补+[-Y]补 = = 计算机组成原理 西北工业大学计算机学院
11
【例】x= ,y= ,求x+y,x-y 解:∵[x]补=0.1001,[y]补=0.0101,[-y]补=1.1011 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =0.1110 [x-y]补=[x]补+[-y]补 (mod 2) = (mod 2) =0.0100 ∴x+y= , x-y= 0.1001 0.0101 0.1110 0.1001 1.1011 + + 计算机组成原理 西北工业大学计算机学院
12
[x+y]补=[x]+[y]补 (mod 2) =1.1010+1.1101 (mod 2) =1.0111
【例】x= ,y= ,求x+y,x-y 解:∵[x]补=1.1010,[y]补=1.1101,[-y]补=0.0011 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =1.0111 [x-y]补=[x]补+[-y]补 (mod 2) = (mod 2) =1.1101 ∴x+y= , x-y= 1.1010 1.1101 1.1010 0.0011 1.1101 + + 计算机组成原理 西北工业大学计算机学院
13
[x+y]补=[x]+[y]补 (mod 2) =1.1000+0.0110 (mod 2) =1.1110
【例】x= ,y= ,求x+y,x-y 解:∵[x]补=1.1000,[y]补=0.0110,[-y]补=1.1010 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =1.1110 [x-y]补=[x]补+[-y]补 (mod 2) = (mod 2) =1.0010 ∴x+y= , x-y= 1.1000 0.0110 1.1110 1.1000 1.1010 + + 计算机组成原理 西北工业大学计算机学院
14
补码加减运算的基本规则 参加运算的各个操作数均用补码表示,结果仍用补码表示; 按二进制“逢二进一”规则运算;
符号位与数值位按同样规则一起参与运算,结果的符号位有运算得出; 进行补码加法时,将两补码数直接相加,得两数之和的补码;进行补码减法运算时,将减数变补码(由[Y]补求[-Y]补),然后与被减数相加,得两数之差的补码; 补码总是对确定的模而言,若运算的结果超过了模,将超过部分丢弃 计算机组成原理 西北工业大学计算机学院
15
注意:补码加减运算时的结果可能超出机器所能表示的数据范围,称为溢出
【例】x= ,y= ,求x+y 解:∵[x]补=0.1010,[y]补=0.1001 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =1.0011 ∴x+y= ×正溢出 0.1010 0.1001 1.0011 + 计算机组成原理 西北工业大学计算机学院
16
[x-y]补=[x]+[-y]补 (mod 2) =1.0011+1.0101 (mod 2) =0.1000
+ 出现溢出后,机器将无法正确表示运算结果,需要进行判别并及时处理 计算机组成原理 西北工业大学计算机学院
17
[x]补=xf.x1x2…xn,[y]补=yf.y1y2…yn [x]补+ [y]补的和为[s]补=sf.s1s2…sn
2.溢出判断与变形补码: 设参加运算的操作数为 [x]补=xf.x1x2…xn,[y]补=yf.y1y2…yn [x]补+ [y]补的和为[s]补=sf.s1s2…sn 发生溢出的判别信号为OVR=1 则可有三种方法溢出判别方法: 根据 两个操作数的符号与结果的符号判别; 根据两数相加时产生的进位判别 采用变形补码进行运算 计算机组成原理 西北工业大学计算机学院
18
[x+y]补=[x]+[y]补 (mod 2) =0.1010+0.1001 (mod 2) =1.0011
(1)根据两个操作数的符号与结果的符号判别溢出 判断条件:如果xf和yf均与sf不同,则产生溢出 【例】x= ,y= ,求x+y 解:∵[x]补=0.1010,[y]补=0.1001 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =1.0011 ∴x+y= ×正溢出 0.1010 0.1001 1.0011 xf=0,yf=0,sf=1,则 OVR=(0 1)· ( )=1 + 计算机组成原理 西北工业大学计算机学院
19
【例】x= ,y= ,求x-y 解:∵[x]补=1.0011,[y]补=1.0101 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =0.1000 ∴x+y= ×负溢出 1.0011 1.0101 + xf=1,yf=1,sf=0,则 OVR=(1 0)· ( )=1 计算机组成原理 西北工业大学计算机学院
20
[x+y]补=[x]+[y]补 (mod 2) =0.1010+0.1001 (mod 2) =1.0011
(2)根据两数相加时产生的进位判别溢出 判断条件:如果Cf为符号位上产生的进位, C1为最高数值位上产生的溢出,则判断条件为: 【例】x= ,y= ,求x+y 解:∵[x]补=0.1010,[y]补=0.1001 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =1.0011 ∴x+y= ×正溢出 0.1010 0.1001 1.0011 Cf=0,C1=1,则 OVR=(0 1)=1 + 计算机组成原理 西北工业大学计算机学院
21
【例】x= ,y= ,求x-y 解:∵[x]补=1.0011,[y]补=1.0101 [x+y]补=[x]+[y]补 (mod 2) = (mod 2) =0.1000 ∴x+y= ×负溢出 1.0011 1.0101 + Cf=1,C1=0,则 OVR=(1 0)=1 计算机组成原理 西北工业大学计算机学院
22
【例】 x=-0.1101, 则[x]变形补=11.0011 x=+0.1011,则[x]变形补 =00.1011
(3)采用变形补码进行运算 变形补码:采用两位符号位,00代表正,11代表负, 定点小数的变形补码: 定点整数的变形补码: 【例】 x= , 则[x]变形补= x= ,则[x]变形补 = 计算机组成原理 西北工业大学计算机学院
23
[X+Y] 变补=[X] 变补+[Y] 变补 (mod 22) [X-Y] 变补=[X] 变补+[-Y] 变补 (mod 22)
变形补码: [X+Y] 变补=[X] 变补+[Y] 变补 (mod 22) [X-Y] 变补=[X] 变补+[-Y] 变补 (mod 22) 【例】利用变形补码求x+y。 ①x= ,y= ②x= ,y= ③x= ,y= ④x= ,y= 解:①[x+y]变形补=[x]变形补+[y]变形补= = ②[x+y]变形补=[x]变形补+[y]变形补= = ③[x+y]变形补=[x]变形补+[y]变形补= = ④[x+y]变形补=[x]变形补+[y]变形补= = 判断条件:如果sf1和s2f分别第一、第二符号位,则判断条件为: 计算机组成原理 西北工业大学计算机学院
24
3.2.3 算术逻辑部件(ALU) 加法运算的基本规则: (1)逢二进一。 (2)最低位是两个数最低位的相加,不需考虑进位。
运算器的基本功能是进行算术逻辑运算,其最基本最核心的部件是加法器 加法运算的基本规则: (1)逢二进一。 (2)最低位是两个数最低位的相加,不需考虑进位。 (3)其余各位都是三个数相加,包括加数、被、加数和低位来的进位。 (4)任何位相加都产生两个结果:本位和、向高位的进位。 计算机组成原理 西北工业大学计算机学院
25
A---加数;B---被加数;S---本位和; C---进位。
(1)半加器: 半加运算不考虑从低位来的进位 A---加数;B---被加数;S---本位和; C---进位。 真值表 A B C S 1 1 1 1 1 1 1 计算机组成原理 西北工业大学计算机学院
26
真值表 A B C S 1 1 1 1 1 1 1 S = A B + A B = A B C = AB 计算机组成原理
1 1 1 1 1 1 1 S = A B + A B = A B C = AB 计算机组成原理 西北工业大学计算机学院
27
逻辑图 逻辑符号 =1 & A B S C 半加器 A B C S 计算机组成原理 西北工业大学计算机学院
28
相加过程中,既考虑加数、被加数又考虑低位的进位位。
(2)全加器: 相加过程中,既考虑加数、被加数又考虑低位的进位位。 an---加数;bn---被加数;cn-1---低位的进位;sn---本位和;cn---进位。 逻辑状态表见下页 计算机组成原理 西北工业大学计算机学院
29
a b c s s = ( a b + a b ) c + ( a b + a b ) c c = ( a b + a b ) c + a
n b c - 1 s s = ( a b + a b ) c + ( a b + a b ) c n n n n n n - - 1 n n n n n 1 c = ( a b + a b ) c + a b n n n n n n - 1 n n 计算机组成原理 西北工业大学计算机学院
30
全加和 半加和: 所以: s = s c + s c c = sc + a b s = ( a b + a b ) c + ( a b +
n n n n n - - n 1 n n n n n 1 c = ( a b + a b ) c + a b n n n n n n - 1 n n 所以: s = s c + s c n n - 1 n - 1 c = sc + a b n n - 1 n n 计算机组成原理 西北工业大学计算机学院
31
逻辑图 逻辑符号 an bn sn an 全加器 bn sn cn cn-1 cn an sn bn cn cn-1 1 半加器
Scn-1 an bn cn-1 sn cn 全加器 an sn FA bn cn cn-1 计算机组成原理 西北工业大学计算机学院
32
… 应用举例:用FA构成m位串行进位全加器。 串行进位 Dm C D2 C D1 bn cn-1 sn cn an bn cn-1 sn
Bm B2 Am A2 A1 计算机组成原理 西北工业大学计算机学院
33
设参加运算的操作数为A、B,根据补码加减运算的规则:
(3)补码加减运算的逻辑实现: 设参加运算的操作数为A、B,根据补码加减运算的规则: [A]补+[B]补=[A+B]补 [A]补-[B]补=[A]补+[-B]补=[A]补+[B]补+1=[A-B]补 Fn Fn-1 F2 F1 Cn Cn-1 Cn-2 … C2 C1 C0 FA FA FA FA =1 =1 =1 =1 M An Bn An-1 Bn-1 A2 B2 A1 B1 串行进位的补码加减运算逻辑电路 M=0:加法 M=1:C0=1,减法 计算机组成原理 西北工业大学计算机学院
34
补码加减运算的逻辑电路 加法器F C0←1 & ≥1 F←A & & F←B F←B A B & A←F
F←A:控制将寄存器A的正向输出信号输入到加法器F的A输入端,加法/减法有效 F←B:控制将寄存器B的正向输出信号输入到加法器F的B输入端,加法有效 F←B:控制将寄存器B的反向输出信号输入到加法器F的B输入端,减法有效 C0←1:控制使加法器F的最低位进位C0=1,减法有效 A←F:控制使加法器F的运算结果写入到寄存器A,加法/减法有效 计算机组成原理 西北工业大学计算机学院
35
应用举例: 算术逻辑部件(Arithmetic and Logical Unit)SN74181
除了加法运算,运算器还能完成其它算术逻辑运算,在加法器的输入控制端加以输入控制,就可以将加法器的功能进行扩展。 SN74181是一个4位ALU,可完成16种算术运算功能和16种逻辑运算功能,其具体功能由S3 S2 S1 S0和M信号控制实现,有正负逻辑两种。 A3A2A1A0和 B3B2B1B0为参与运算的两组4位操作数 Cn为低位来的进位, Cn+4为向高位的进位 F3F2F1F0为运算结果 G为小组本地进位 P为小组传递函数 A=B用于输出两个操作数相等的情况 S3S2S1S0产生运算逻辑 M控制芯片执行运算类别:0时允许位间进位,执行算术运算;1时不允许位间进位,执行逻辑运算 F3 F2 F1 F0 S3 Cn+4 SN74181 4位ALU S2 A=B S1 G S0 P M B3 B2 B1 B0 A3 A2 A1 A0 Cn 计算机组成原理 西北工业大学计算机学院
36
SN ALU功能表 计算机组成原理 西北工业大学计算机学院
37
用两片SN74181 ALU构成8位ALU SN74181 4位ALU SN74181 4位ALU F3 F2 F1 F0 S3 Cn+4
A=B S1 G S0 P M F3 F2 F1 F0 B3 B2 B1 B0 A3 A2 A1 A0 Cn S3 Cn+4 SN74181 4位ALU S2 A=B S1 G S0 P M B3 B2 B1 B0 A3 A2 A1 A0 Cn 计算机组成原理 西北工业大学计算机学院
38
乘除运算的实现方式: 软件方式:利用加法器、移位器反复加减 硬件方式: 串行乘除部件 阵列乘除部件
3.3 定点乘法运算 乘除运算的实现方式: 软件方式:利用加法器、移位器反复加减 硬件方式: 串行乘除部件 阵列乘除部件
39
3.3.1原码乘法 1. 原码一位乘法 (1) 一位乘算法描述 设[X]原=Xs.X1X2…Xn [Y]原= Ys.Y1Y2…Yn 则乘积
(1) 一位乘算法描述 设[X]原=Xs.X1X2…Xn [Y]原= Ys.Y1Y2…Yn 则乘积 [Z]原= (Xs⊕ Ys).(0. X1X2…Xn *0. Y1Y2…Yn)=Zs.Z1Z2…Zn A.手算方法 例如 求A=0.1101 和B=0.0110的 乘积 计算机组成原理 西北工业大学计算机学院
40
(a) 从乘数的最低位开始,用乘数Y的每个二进制位去乘被乘数X,若Y 的某个二进制位为1,则得位积X;如为0,则得位积0。
(I)运算规则 (a) 从乘数的最低位开始,用乘数Y的每个二进制位去乘被乘数X,若Y 的某个二进制位为1,则得位积X;如为0,则得位积0。 (b) B的各位分别乘以A的所得的位积,因为位权不同,逐次向左移位,即在空间上按一定位数错开,这样逐位进行下去,直到乘数各位都乘完为止。 (c) 把经过移位对准的各次位积相加起来即得结果。 计算机组成原理 西北工业大学计算机学院
41
第一、 将多个数一次相加,机器难以实现。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的。
(II)缺点 第一、 将多个数一次相加,机器难以实现。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的。 第二、 乘积位数增长了一倍,即2n,而机器字长只有n位。 计算机组成原理 西北工业大学计算机学院
42
=X ×(2-1Y1+ 2-2Y2+ …+2-(n-1)Yn-1+ 2-nYn)
(III)改进 (a)把一次求和的操作,变成逐步累加求部分积的操作 (b)将求积过程中逐位按权左移位积的操作,改为位积不动,而是上次部分积右移的操作 设参加运算的被乘数X= 0.X1X2…Xn,乘数Y= 0.Y1Y2…Yn ,则 X×Y=X ×0. Y1Y2…Yn =X ×(2-1Y1+ 2-2Y2+ …+2-(n-1)Yn-1+ 2-nYn) = 2-1 X Y X Y2+ …+2-(n-1) X Yn-1+ 2-n X Yn =2-1{2-1[2-1…(2-1(0+XYn)+ XYn-1)+…+ XY2]+ XY1} 计算机组成原理 西北工业大学计算机学院
43
B.机器算法 若用Zi表示第i次部分积,则 Z0 = 0 Z1 = 2-1 (YnX + Z0) Z2 = 2-1 (Yn-1X + Z1)
… Zi = 2-1 (Yn-I+1X + Zi-1) Zn = 2-1 (Y1X + Zn-1) Zn即为X和Y的乘积,即X·Y=Zn 计算机组成原理 西北工业大学计算机学院
44
(4)将乘积的符号和数值位结合,形成最终结果
过程: (1)积的符号单独处理Zs=Xs⊕ Ys (2)以乘数的最低位作为乘法判别位,若判别位为1,则在前次部分积(初始部分为0)上加被乘数,然后 连同乘数一起右移一位;否则,在在前次部分积上加0,然后 连同乘数一起右移一位 (3)重复第(2)步,知道运算n次为止 (4)将乘积的符号和数值位结合,形成最终结果 计算机组成原理 西北工业大学计算机学院
45
则按原码一位乘法运算规则,求[X·Y]原的数值部分。 运算过程如下表所示。
【例】已知X= Y= 求[X·Y]原 解 [X]原= [Y]原=0.1001 |X| = |Y| = 则按原码一位乘法运算规则,求[X·Y]原的数值部分。 运算过程如下表所示。 所以|X|·|Y| = , 而Zs = Xs ⊕ Ys = 1 最后求得[X·Y]原 = 原码一位乘法的逻辑结构框图如图所示: 计算机组成原理 西北工业大学计算机学院
46
原码一位乘法运算过程 |X| = 0.1011 操作说明 部 分 积 乘 数 0. 0 0 0 0 1 0 0 1 设部分积初值Z0=0
乘 数 设部分积初值Z0=0 +) Y4=1,加|X| 右移一位得部分积Z1,乘数同时右移一位 +) Y3=0,加0 右移一位得部分积Z2,乘数同时右移一位 +) Y2=0,加0 右移一位得部分积Z3,乘数同时右移一位 +) Y1=1,加|X| 右移一位得部分积Z4,乘数同时右移一位 高 位 积 低 位 积 计算机组成原理 西北工业大学计算机学院
47
(1) 原码一位乘法逻辑结构原理 A.逻辑结构框图 图 原码一位乘法逻辑结构原理图 Yn 部分积Z 乘数Y A Yn C 计数器i
(1) 原码一位乘法逻辑结构原理 A.逻辑结构框图 Yn 部分积Z 乘数Y A Yn C 计数器i T1 , T2, … LDR1 LDR0 +1 ∑/2Z Y/2Y 加数器 Zs Ti R S Cx Q 乘法启动 Yn B 被乘数X Xs Ys 图 原码一位乘法逻辑结构原理图 计算机组成原理 西北工业大学计算机学院
48
(I) 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。
B.工作原理 (I) 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。 (II) 当乘数寄存器C最末位为“1”时,部分积Zi和寄存在B中的被乘数X在加法器中相加,其结果输出至A的输入端。 (III)一旦打入控制脉冲T到来,控制信号LDR0使部分积A右移一位,与此同时,C也在控制信号LDR1作用下右移一位,且计数器i计数一次。 (IV)当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关闭时序脉冲T, 乘法宣告结束。 若将A和C连接起来,乘法结束时乘积的高n位部分在A,低n位部分在C,C中原来的乘数Y由于移位而全部丢失。 计算机组成原理 西北工业大学计算机学院
49
0 0 Zi= 2-1 [2-1(Zi-1 +0)+0]=2-2(Zi-1+0*X)
2.原码两位乘法 (1) 规则 X*Y考察乘数的相邻两位二进制数 Yi-1Yi 部分积操作 Zi= 2-1 [2-1(Zi-1 +0)+0]=2-2(Zi-1+0*X) Zi= 2-1 [2-1(Zi-1 +X)+0]=2-2(Zi-1 +1*X) Zi= 2-1 [2-1(Zi-1 +0)+X]=2-2(Zi-1 +2*X) Zi= 2-1 [2-1(Zi-1 +X)+X]=2-2(Zi-1 +3*X) = 2-2(Zi-1 –X)+X 计算机组成原理 西北工业大学计算机学院
50
由乘数相邻两位的组合状态求部分积的规则 0 0 0 1 1 0 1 1 乘数判断位 Yi-1 Yi 求部分积 新部分积为原部分积右移两位
0 0 新部分积为原部分积加被乘数后右移两位 0 1 1 0 新部分积为原部分积加2倍被乘数后右移两位 1 1 新部分积为原部分积减被乘数,且置标志位Cj,右移两位 由乘数相邻两位的组合状态求部分积的规则 计算机组成原理 西北工业大学计算机学院
51
由乘数相邻两位的组合状态和标志位状态求部分积的规则
乘数判断位 标志位 Yi-1 Yi Cj 所进行的操作 部分积Z+0,Z和Y右移2位,Cj保持0 部分积Z+X,Z和Y右移2位,Cj保持0 部分积Z+2X,Z和Y右移2位,Cj保持0 部分积Z-X,Z和Y右移2位,Cj置1 部分积Z+0+X=Z+X,Z和Y右移2位,Cj置0 部分积Z+X+X=Z+2X,Z和Y右移2位,Cj置0 部分积Z+2X+X-4X=Z-X,Z和Y右移2位,Cj置 1 部分积Z+0,Z和Y右移2位,Cj置1 计算机组成原理 西北工业大学计算机学院
52
若操作数字长为奇数,则去掉一位符号位后,数值部分长度n为偶数,要做n/2次运算
(2) 运算次数的控制方法 若操作数字长为奇数,则去掉一位符号位后,数值部分长度n为偶数,要做n/2次运算 若操作数字长为偶数,则去掉一位符号位后,数值部分长度n为奇数,需将乘数加上一个符号位并使之为0,以形成偶数位,此时共需做(n+1)/2次运算,但最后一次移位仅移一位 若最后一次运算Cj仍然为1,则再做一次加x运算,最高符号位作为真正的符号位,才能保证运算正确 规定:000表示+,111表示-,运算过程中,最高符号位为真正的符号位,低两位记录左移和进位的数值;-X采用+[-|X|]补实现 计算机组成原理 西北工业大学计算机学院
53
解: 先求[-|X|]补=111.000001,其数值部分的乘积按两位乘法规则进行操作: 得数值部分积为 0.111000000111
【例】 设X= , Y= , 求[X·Y]原=? 解: 先求[-|X|]补= ,其数值部分的乘积按两位乘法规则进行操作: 得数值部分积为 符号 Zs = Xs ⊕ Ys = 0 ⊕ 1 = 1 所以 [X·Y]原 = 计算机组成原理 西北工业大学计算机学院
54
3.3.2 补码乘法 1 .补码一位乘法 (1) 校正法 A、[X] 补与真值的关系: 设[X]补 = X0 .X1X2…Xn
由此可得: X =[X]补 - 2X0 = X0 .X1X2…Xn- 2X0 =- X0+ 0 .X1X2…Xn 即X为正时,X0=0,真值X=[X]补 ; X为负时,X0=1,真值X=-1+0 .X1X2…Xn 故可推出,当Y为负时, XY=X(-1+0 .Y1Y2…Yn)=X(0 .Y1Y2…Yn)-X 可以得到:[X·Y]补 = [X]补·(0.Y1Y2…Yn) + [-X]补 计算机组成原理 西北工业大学计算机学院
55
设[Y]补 = Ys .Y1Y2…Yn ,我们用一个公式表示补码校正法的算法规则:
B、方法: 校正法的思想仍然是,先将任意两个补码[X]补、[Y]补看作是一般的二进制数,仍按原码运算规则求得[X]补·[Y]补,然后对其结果加以校正,而获得[X·Y]补之值。 当乘数Y为正时,与原码乘法相似,只是在部分积相加、右移操作时, 按补码性质进行;当乘数为负时,先不考虑乘数的符号,将乘数补码的数值部分与被乘数相乘;最后进行校正操作,即加上[-X]补。 设[Y]补 = Ys .Y1Y2…Yn ,我们用一个公式表示补码校正法的算法规则: [X·Y]补 = [X]补·(0.Y1Y2…Yn) + [-X]补·Ys 当Ys=0时, [X·Y]补 = [X]补·(0.Y1Y2…Yn) 当Ys=1时, [X·Y]补 = [X]补·(0.Y1Y2…Yn) + [-X]补 计算机组成原理 西北工业大学计算机学院
56
[X·Y]补= [X]补·(0.Y1Y2…Yn) + [-X]补·Ys
解:用补码一位乘法,过程如下: 补码部分积 补码乘数 操作说明 符号位 数值部分 数值部分 Z0=0,Y4=1 Z0+[X] 补→Z1 /2Z1,Y3=0,不加,Z1→Z2 /2Z2,Y2=1 Z2+[X] 补→Z3 /2Z3,Y1=0,不加, Z3→Z4 /2Z4,Ys=1,校正 Z4+[-X] 补,得[XY] 补 故[XY]补= ,即XY= 计算机组成原理 西北工业大学计算机学院
57
注意: (A)在补码乘中不必采用绝对值运算 (B)进行校正的前提: 为正:不校正;为负:校正+[-X] 补 计算机组成原理
西北工业大学计算机学院
58
又称为Booth乘法。比较法是对校正法的改进,不论乘数为正为负,符号位都参加运算,其运算规则统一起来了,克服了校正法的缺点。
(2) 比较法 又称为Booth乘法。比较法是对校正法的改进,不论乘数为正为负,符号位都参加运算,其运算规则统一起来了,克服了校正法的缺点。 A、公式 X·Y=X(-ys+0.y1y2……yn) [X·Y] 补=[X] 补·(-ys+y1·2-1+y2·2-2+……+yn·2-n) =[X] 补·[-ys+(y1-y1·2-1)+(y2·2-1-y2·2-2)+…+(yn·2-(n-1) -yn·2-n)] =[X] 补·[(y1-ys)+(y2-y1) ·2-1+……(yn-yn-1) ·2-(n-1) +(0-yn) ·2-n] 计算机组成原理 西北工业大学计算机学院
59
设yn+1=0,ys=y0,则写成递推式如下: [Z0] 补=0
[Z1] 补=2-1{[Z0] 补+( yn+1-yn)[X] 补} (yn+1=0) [Z2] 补=2-1{[Z1] 补+( yn-yn-1)[X] 补} …… [Zi] 补=2-1{[Zi-1] 补+( yn+2-i-yn+1-i)[X] 补} [Zn] 补=2-1{[Z n-1] 补+( y2-y1)[X] 补} [Z n+1] 补=2-1{[Z n] 补+( y1-y0)[X] 补} 计算机组成原理 西北工业大学计算机学院
60
首先设置附加位Yn+1=0,部分积初值[Z0]补=0。 l 当n≠0时,判YnYn+1,
A、Booth乘法规则 假设X、Y都是用补码形式表示的机器数,[X]补和[Y]补=Ys.Y1Y2…Yn,都是任意符号表示的数。比较法求新的部分积,取决于两个比较位的数位,即Yi+1Yi的状态。 布斯乘法规则归纳如下: 首先设置附加位Yn+1=0,部分积初值[Z0]补=0。 l 当n≠0时,判YnYn+1, 若YnYn+1=00或11,即相邻位相同时,上次部分积右移一位,直接得部分积。 若YnYn+1=01,上次部分积加[X]补,然后右移一位得新部分积。 若YnYn+1=10,上次部分积加[-X]补,然后右移一位得新部分积。 l 当n=0时,判YnYn+1(对应于Y0Y1),运算规则同(1)只是不移位。即在运算的最后一步,乘积不再右移。 计算机组成原理 西北工业大学计算机学院
61
(A)比较法中不管乘数为正为负,符号位都参加运算,克服了校正法的缺点 (B)运算过程中采用变形补码运算(双符号位)
注意: (A)比较法中不管乘数为正为负,符号位都参加运算,克服了校正法的缺点 (B)运算过程中采用变形补码运算(双符号位) (C)算法运算时的关键是YnYn+1的状态:后者(Yn+1)减前者(Yn),判断是加减(+/-X) 计算机组成原理 西北工业大学计算机学院
62
【例】 [X]补=0.1001 [Y]补=1.1011 求[X·Y]补 解 [-X]补 = 1.0111
为了提高乘法的运算速度,可采用两位乘法的方案,即直接按乘数的每两位的取值情况,一次求出对应于两位的部分积。 计算机组成原理 西北工业大学计算机学院
63
补码乘法运算过程 [-X]补 = 11.0111 [ X]补 = 00.1001 [Y]补=1.1011 附加位 Yn+1 部 分 积
乘 数 操作说明 设部分积初值Z0=0,附加位Yn+1=0 +) YnYn+1=10,+[-X]补 右移一位得部分积[Z1]补 YnYn+1=11,右移一位得[Z2]补 +) YnYn+1=01,+[X]补 右移一位得[Z3]补 +) YnYn+1=10,+[-X]补 右移一位得[Z4]补 高 位 积 低 位 积 YnYn+1=11,最后一步不移位 计算机组成原理 西北工业大学计算机学院
64
补码一位乘法逻辑结构原理图 Af1 Af2 Cf Cn Cn+1 Cn Cn+1 Cn Cn+1 B B Bf1 Bf2 Bn 乘数Y
计数器i T1 , T2, … +1 加数器 Ti Q R S CT Cn 乘法启动 Cn+1 Cn Cn+1 B B Bf1 Bf Bn 被乘数X 计算机组成原理 西北工业大学计算机学院
65
2.补码两位乘法 补码两位乘法可根据补码一位乘法的规则,把比较YnYn+1的状态应进行的操作,和比较Yn-1Yn的状态合并成一步。就可以推导出补码两位乘法的方法,即通过比较Yn-1YnYn+1状态,来决定Yn-1Yn这两位乘数应执行什么运算。 计算机组成原理 西北工业大学计算机学院
66
3.3.3 快速乘法运算 1.多位乘法 2.跳过连续“0”和跳过连续“1” 3.阵列乘法器 计算机组成原理 西北工业大学计算机学院
67
无符号数的阵列乘法器原理 A=A3A2A1A0,B=B3B2B1B0,则P=A*B=P7P6P5P4P3P2P1P0
A3 A A A0 × B3 B B B A3B0 A2B0 A1B0 A0B0 A3B1 A2B1 A1B1 A0B1 A3B2 A2B2 A1B2 A0B2 A3B3 A2B3 A1B3 A0B3 P7 P6 P P P P P P0 + 计算机组成原理 西北工业大学计算机学院
68
部分积输入 Ai Bi A3 A2 A1 A0 & B0 进位 输出 进位 输入 第四音 B1 部分积输出 B2 B3 P7 P6 P5
& B0 进位 输出 进位 输入 第四音 B1 部分积输出 B2 B3 P7 P6 P5 P4 P3 P2 P1 P0 4×4位无符号数阵列乘法器的逻辑原理图 计算机组成原理 西北工业大学计算机学院
69
有符号数的阵列乘法器原理图 A=Af.An-1 An-2… A0 ,B= Bf.Bn-1 Bn-2… B0 An-1 An-2… A0
n×n位无符号数阵列乘法器 P2n-1 P2n … P1 P0 =1 2n位算后求补器 Pf P2n-1 P2n-2… P1 P0 计算机组成原理 西北工业大学计算机学院
70
3.4 定点除法运算
71
3.4.1原码除法 1 原码一位除法 设被除数 [X]原 = Xs.X1X2…Xn 除数 [Y]原 = Ys.Y1Y2…Yn
商 [Q]原 = Qs.Q1Q2…Qn 余数 [R]原 = Rs.R1R2…Rn 则它们之间有如下关系: [X]原 = [Y]原·[Q]原 + [R]原 符号处理 Zs = Xs ⊕ Ys 计算机组成原理 西北工业大学计算机学院
72
手算: 假设被除数X=0.1001,除数Y=0.1011,计算X/Y 0.1 1 0 1 商Q
/ X(R0) Y,除数右移一位,减 R1 Y,除数右移一位,减 R2 Y,除数右移一位,不减 R3 Y,除数右移一位,减 R4 得商X/Y=0.1101,余数=R4= 计算机组成原理 西北工业大学计算机学院
73
(1) 每次都是由心算来比较余数和除数的大小,余数大时,商1;余数小时,商0。第一次比较时,余数就是被除数。
特点: (1) 每次都是由心算来比较余数和除数的大小,余数大时,商1;余数小时,商0。第一次比较时,余数就是被除数。 (2) 每做一次减法,总是保持余数不动,而除数向右移一位。 (3) 商的符号单独处理。 为适应机器运算,需要进行改进: (1) 用补码加代替直接减(两个符号位) (2) 除数右移改为余数左移。 计算机组成原理 西北工业大学计算机学院
74
在计算机中,小数点是固定的,不能简单地用手算的办法,为便于机器操作,除数Y固定不动(即小数点固定),使被除数和余数进行左移(相当于乘2),效果与手算相同。(比较法)
计算机组成原理 西北工业大学计算机学院
75
00.1011/----------------------------------------------
例如,X=0.1001,Y=0.1011,计算X/Y [-Y]补= 商Q / X<Y,商0 ← 被除数左移一位,2X>Y,商1 减Y,即+[-Y]补 余数R1 ← 左移一位,2R1>Y,商1 减Y 余数R2 ← 左移一位,2R2<Y,商0 余数R3 ← 左移一位,R3=4R2>Y,商1 减Y 余数R4 得商X/Y=0.1101,余数=2-4R4= + + + + 计算机组成原理 西北工业大学计算机学院
76
注意:余数不是真正的余数,由于每次所得的余数多乘了2,求得小数点后的n位商后,相当于多乘了2 n,故正确余数为2 -n Rn
另外,在进行数值部分除法时,因为定点数的绝对值小于1, 若被除数绝对值≥除数的绝对值,则商≥1,因而会产生溢出。 所以在执行除法以前,先要判断是否溢出,不溢出时才进行除法运算,否则除法就不进行,并由相应的程序进行处理。 计算机组成原理 西北工业大学计算机学院
77
2 原码恢复余数法 判断溢出,要求|被除数|<|除数|,否则溢出; 符号位单独处理,商的符号有被除数和除数的符号异或运算求得;
用被除数和除数的数值部分进行运算 ,被除数减去除数; 若所得余数为正,表示够减,相应位上1;若所得余数为负,表示不够减,相应位上0,余数加上除数(即恢复余数), 余数左移一位(相当于除数右移),减去除数; 重复4) ,直到求得所要求的商的各位为止。 注意:在原码除法运算过程中,数值部分的计算是对操作数的绝对值进行的;因为要进行减法,所以,采用双符号位的变形补码来实现 计算机组成原理 西北工业大学计算机学院
78
【例】X = -0.1011 Y= -0.1101 求[X/Y]原 解: [X]原 = 1.1011 [Y]原 = 0.1101
|X| = |Y| = [-|Y|]补 = 运算过程如下: 所以,Qf = Xf ⊕ Yf=1⊕ 0 = 0 [X/Y]原 = [Q]原 = [R]原 = 2-4R5 = 计算机组成原理 西北工业大学计算机学院
79
余数 上商 说明 + + + + + + + 00.1011 0.0 0 0 0 初始余数为被除数 11.0011 减Y,即加[-|Y|]补
余数 上商 说明 初始余数为被除数 减Y,即加[-|Y|]补 余数为负,上商0 加Y,恢复余数 左移一位 减Y 余数为正,上商1 左移一位 余数为正,上商1 左移一位 余数为负,上商0 左移一位 余数为正,上商1,结束计算 + + + + + + + 计算机组成原理 西北工业大学计算机学院
80
3 原码不恢复余数法 计算机组成原理 西北工业大学计算机学院
81
4 加减交替法 原码加减交替法的规则是:当余数为正时,商上1,余数左移一位,减除数绝对值得新余数;当余数为负时,商上0,余数左移一位, 加除数绝对值得新余数。 证明: 若被除数为X,除数Y,当上商操作进行到第i位商数时,设余数为Ri,则有下式: Ri = 2Ri-1 +(- |Y|) (1) 若Ri≥0,则该位商上“1”,下一步操作是: Ri+1 = 2Ri +(- |Y|) (2) 若Ri<0,则该位商上“0”,下一步恢复余数: Rj= Ri+|Y|,然后, Ri+1 = 2Rj +(- |Y|) =2(Ri+|Y|)+(- |Y|) =2Ri+|Y| 计算机组成原理 西北工业大学计算机学院
82
【例】X = -0.1011 Y=0.1101 求[X/Y]原 解: [X]原=1.1011 [Y]原=0.1101
[Y]补= [-Y]补=1.0011 商的符号 Qs= 1 0 = 1 所以 [X/Y]原 = 余数=0.0111*2-4 计算机组成原理 西北工业大学计算机学院
83
原码加减交替除法运算过程 操作说明 被除数(余数) 商 Q上商 计算机组成原理 西北工业大学计算机学院 +) 1 1. 0 0 1 1
+) +Y 余数与商左移一位 初始状态 +[-Y]补 +[-|Y|]补 余数为负,商“0” 余数为正,商“1” +[X]补 操作说明 商 Q上商 被除数(余数) 0. 0. 1 +) 商左移一位,余数不动 原码加减交替除法运算过程 计算机组成原理 西北工业大学计算机学院
84
原码加减交替法,省去了恢复余数的加法过程,加快了除法速度。原码加减交替法的逻辑结构图如图所示:
加数器 原码加减交替法逻辑结构框图 Yf Cx Qn Ti T1 , T2, … +1 LDR0 LDR1 被除数X或者余数寄存器R0 商Q寄存器R1 除数Y寄存器 ∑f R2 R 计数器i Qf Xf R0 R1 S Q 计算机组成原理 西北工业大学计算机学院
85
R1为n位寄存器,除法开始前可存放被除数的低n位,运算结束后存放n位的商。每次上商应置于R1的最末位,因为它是由加法器的运算结果最高位来控制的,所以由∑f来设置。运算过程中,商要逐位左移,故R1寄存器具有左移功能。R0 保存被除数或余数,运算过程中也要左移,所以它也是一个具有左移功能的寄存器。运算中被除数(余数)的低位部分由R1串行移至R0。n+1步运算后,求得n+1位商,其中一位整数位,n位小数位,这n位小数位的数值存于R1寄存器中,而整数位在最后一次左移时丢掉,而商的符号Qf由Xs和Ys通过异或运算得到, 所以可用一个异或门求得Qf。 计算机组成原理 西北工业大学计算机学院
86
3.4.2 补码除法 计算机组成原理 西北工业大学计算机学院
87
将浮点数化为定点数运算 阶码:定点整数 尾数:定点小数(规格化)
3.5 浮点四则运算 将浮点数化为定点数运算 阶码:定点整数 尾数:定点小数(规格化)
88
3.5.1浮点加减法运算 设有两个规格化的浮点数X与Y: X=Sx×2ex,Y= Sy×2ey 。
其中Sx和Sy分别为它们的尾数,ex和ey分别为它们的阶码。 浮点加减运算步骤: (1)对阶 (2)尾数加/减 (3)结果规格化 (4)尾数舍入 计算机组成原理 西北工业大学计算机学院
89
1. 对阶:小阶向大阶看齐 对阶的第一步是求阶差:△E =ex-ey 若△E =0,表示两数阶码相等,即ex=ey,不需要对阶
计算机组成原理 西北工业大学计算机学院
90
2.尾数求和(差) 对阶完成后,就按定点加减运算求两数的尾数之和。 计算机组成原理 西北工业大学计算机学院
91
3. 规格化 (1)对于原码表示法定点小数,其规格化数为: 0.1xx…x 1.1xx…x (2)对于负数的补码表示法,规格化定义有所不同:
根据规格化浮点数的定义可知,规格化的尾数应满足: S>0时 1/2≤S<1 对于S<0, 用补码表示时 /2>S≥-1 理论上,S可等于-1/2,但[-1/2]补=11.100…0,为了便于判别是否是规格化数,不把-1/2列为规格化数,而把-1列入规格化数。 ∵ [-1]补=11.00…0 ∴ 补码规格化的浮点数应有两种形式: 00.1xx…x 11.0xx…x 计算机组成原理 西北工业大学计算机学院
92
由此可知补码规格化的条件是: (A)若和或差的尾数两符号位相等且与尾数第一位相等,则需向左规格化。即将和或差的尾数左移,每移一位,和或差的阶码减一,直至尾数第一位与尾符不等时为止。 (B)若和或差的尾数两符号位不等,即01.xx…x或10.xx…x形式,表示尾数求和(差)结果绝对值大于1,向左破坏了规格化。此时应该将和(差)的尾数右移1位,阶码加1,即进行向右规格化。 计算机组成原理 西北工业大学计算机学院
93
4 .舍入 移出低位 (1)截断法(恒舍法),将右移的位一律舍去,余下的其它位不做任何改变。
(2) “0舍1入”法,即右移时丢掉的最高位为0,则舍去;是1,则将尾数的末位加1(相当于进入)。 (3)“恒置1”法,即不管移掉的是0还是1,都把尾数的末位置1。 计算机组成原理 西北工业大学计算机学院
94
5. 浮点数的溢出判断 表示成规格化数以后,由阶码进行判断是否溢出。 设阶码数值部分取7位,符号位取2位,用补码表示,则
能表示的最大阶码[E]补= =127; 最小阶码[E]补= =-128; (1) 小于-128,称为下溢:发生在左规时; 用机器0表示(阶码、尾数全0) 例如,和的尾数=11.00……0 左规一位时变成10.XXX……X (2) 大于+127时,称为上溢,这是浮点数的真正溢出 置溢出标志,作中断处理 例如,当和的尾数=00.111……1 而尾数还须右规时,会变成01.000……0 总结: [E]补=01 XX…X为上溢,真正溢出,需做溢出处理。 [E] 补=10 XX…X为下溢,浮点数值趋于零,用机器零表示。 计算机组成原理 西北工业大学计算机学院
95
假定两数在计算机中采用补码制(两位符号位),则 [x]补=0001,00.1101 Ex=0001
【例】 x = ×1001,y=- (0.1010)×1011,求x+y=? 解: (1)对阶: 假定两数在计算机中采用补码制(两位符号位),则 [x]补=0001, Ex=0001 [y]补=0011, Ey=0011 求阶差:△E =Ex-Ey= =1110,即△E =-2,表示x的阶码Ex小于y的阶码Ey,阶差为-2,所以应使x的尾数右移2位,阶码加2,则[x]补=0011, ,这时△E =0,对阶完毕。 计算机组成原理 西北工业大学计算机学院
96
x和y对阶后的尾数分别为:[Sx]补=00.0011,[Sy]补=11.0110
(2) 尾数求和(差) x和y对阶后的尾数分别为:[Sx]补= ,[Sy]补= 则 [Sx]补+[Sy]补= = ∴ [x+y]补=0011, (3) 规格化 和的尾数的两符号位相等,但小数点后的第一位也与符号位相等,不是规格化数,需要进行左规,即向左规格化:尾数左移一位,阶码减1,就可得到规格化的浮点数结果。 [x+y]补=0010, 计算机组成原理 西北工业大学计算机学院
97
3.5.2 浮点数乘法运算 设 X=Sx·2Ex , Y=Sy·2 Ey 则 X·Y=(Sx·Sy)·2 Ex+Ey
浮点数乘法运算的规则为: l 乘积的阶码由两数阶码相加求得 l 乘积的尾数等于被乘数和乘数的尾数之积 可采用定点数乘方法 (A)需要对浮点数尾数积进行规格化(左规、右规:均是最多一位) (B)舍入:0舍1入,若采用双倍字长乘积时,没有舍入问题。 计算机组成原理 西北工业大学计算机学院
98
可利用原码或补码定点数乘法求尾数之乘积,可得 [Sx·Sy]原 = 1.101010000000
【例】 已知 x= · y= ·10100,设阶码数值部分各取5位,阶符2位;尾数数值部分各取6位,尾符2位,按机器浮点数运算步骤,求x·y。 解 : (1) 求阶和 [Ex]补= [Ey]补= [△E]补=[Ex]补 + [Ey]补 = (2) 尾数相乘 可利用原码或补码定点数乘法求尾数之乘积,可得 [Sx·Sy]原 = 或 [Sx·Sy]补 = 计算机组成原理 西北工业大学计算机学院
99
可看出[Sx·Sy]原或[Sx·Sy]补已是规格化形式,勿需规格化。 (4) 舍入
(3) 规格化 可看出[Sx·Sy]原或[Sx·Sy]补已是规格化形式,勿需规格化。 (4) 舍入 若取单字长乘积,可得[Sx·Sy]原= 或[Sx·Sy]补= ,所以 [x·y]原= · [x·y]补= · 得 x·y = ·21001 = 计算机组成原理 西北工业大学计算机学院
100
3.5.3浮点数除法运算 1.浮点数除法的运算规则为: l 商的尾数由两数的尾数相除求得 l 商的阶码由两数阶码相减求得
设x=Sx·2Ex, y=Sy·2Ey , 则x/y=(Sx/Sy)·2 Ex-Ey 计算机组成原理 西北工业大学计算机学院
101
(2) 尾数调整:使被除数的绝对值小于除数绝对值,以满足定点除法运算规则。
2.步骤 (1) 预置:当除数为0时, 商为∞,置“上溢”标志, 终止除法运算; 若除数不为0时,而被除数为0,商和余数均被置成0,除法不必进行下去;只有当两个操作数均不为0时,除法才进行下去。 (2) 尾数调整:使被除数的绝对值小于除数绝对值,以满足定点除法运算规则。 (3) 求阶差:求阶差后可判断溢出(应在规格化后再判断),若阶码用补码表示,阶符(两位)为01时,表示上溢;阶符为10时,表示下溢,使除法结果为0。 (4) 尾数相除 (5) 规格化 (6) 舍入 计算机组成原理 西北工业大学计算机学院
102
3.6 运算器的组成 定点运算器 浮点运算器
103
运算器是机器的加工处理部件,是中央处理机的重要组成部分。 3.6.0 运算器与其它部件的关系及其功能、基本结构 1. 与控制器的关系
(1) 运算器接收控制器发来的各种运算控制命令: A、 控制接收数据命令 B、 控制运算操作命令 C、 控制输出传送命令 D、 控制通用寄存器读/写命令等 (2) 把运算过程中的反馈信号送回控制器:状态 A、 溢出否? B、 结果是否为“0”? C、 是否非法数? D、 是正还是负? (3) 进行地址运算,由地址总线互连 例如:(PC)+1→PC,寻址方式计算 计算机组成原理 西北工业大学计算机学院
104
存储器是计算机中保存程序和数据的功能部件。它的基本功能是:读、写。 (1) 运算器与存储器的联系,也是在控制器的控制下进行的。 例如:
2. 与存储器的关系 存储器是计算机中保存程序和数据的功能部件。它的基本功能是:读、写。 (1) 运算器与存储器的联系,也是在控制器的控制下进行的。 例如: A、运算器进行地址运算→存储器; B、运算器产生的运算结果→存储器; C、存储器READ →运算器加工。 (2) 控制器对主存是异步工作控制 异步控制方式也称可变时序控制方式 计算机组成原理 西北工业大学计算机学院
105
运算器的主要功能是对数据的加工和处理。它是在控制器的控制之下工作的,是一个加工处理部件。
3 .功能 运算器的主要功能是对数据的加工和处理。它是在控制器的控制之下工作的,是一个加工处理部件。 (1) 对数据的加工处理,主要包括对数值数据的算术运算,如加、减、乘、除运算,变更数据的符号等。 (2) 对各种数据的逻辑运算,例如进行与、或、求反等运算。 (3) 传递数据的一条重要途径。 计算机组成原理 西北工业大学计算机学院
106
(1) 能实现算术和逻辑运算功能的部件ALU; (2) 存放待加工的信息或加工后的结果信息的通用寄存器组;
4. 基本结构 (1) 能实现算术和逻辑运算功能的部件ALU; (2) 存放待加工的信息或加工后的结果信息的通用寄存器组; (3) 按操作要求控制数据输入的部件:多路开关或数据锁存器; 它可以接收来自外部设备或存储器中的数据,也可以是暂存在通用寄存器中的数据; (4) 按操作要求控制数据输出的部件:输出移位和多路开关; 可以将ALU的输出,根据要求进行左移、右移、直送、半字交换,从中选择之一进行输出,经总线送往其它部件,或作为中间结果送给通用寄存器,再次作为ALU的输入,进行下次运算。 (5) 计算器与其它部件进行信息传送的总线以及 总线接收器与发送器;总线接收器与发送器通常是由三态门构成的。 下图给出了运算器的基本逻辑框图。 计算机组成原理 西北工业大学计算机学院
107
总线 接收器 发送器 输出移位开关 ALU 多路开关 多路开关 通用寄存器 运算器基本逻辑框图 计算机组成原理 西北工业大学计算机学院
108
3.6.1定点运算器 单总线结构 双总线结构 三总线结构 计算机组成原理 西北工业大学计算机学院
109
单总线结构运算器 BUS A B 特殊 寄存器 通用 寄存器 ALU 计算机组成原理 西北工业大学计算机学院
110
双总线结构运算器 BUS1 缓冲 寄存器 特殊 寄存器 通用 寄存器 ALU BUS2 计算机组成原理 西北工业大学计算机学院
111
三总线结构运算器 BUS1 BUS2 特殊 寄存器 总线 旁路器 通用 寄存器 ALU BUS3 计算机组成原理 西北工业大学计算机学院
112
3.6.2浮点运算器 EC E1 R0 MQ -1 +1 +1 +1 FE FM 阶码运算部件 E2 R1 尾数运算部件 数据总线(输出)
数据总线(输入) 计算机组成原理 西北工业大学计算机学院
113
3.7 十进制数的加减运算方法
114
3.7.1 一位十进制加法器的设计 基本思想 将两个十进制的BCD码A=A4A3A2A1、B=B4B3B2B1及进位标志C0按二进制加法运算; 再根据运算结果S=S4S3S2S1和进位标志C4与十进制和数的正确BCD码的差别进行修正,正确结果F=F4F3F2F1和进位标志C4' 计算机组成原理 西北工业大学计算机学院
115
BCD码十进制加法器运算结果的修正关系 计算机组成原理 西北工业大学计算机学院
116
一位BCD码十进制加法器的逻辑电路 C4' F4 F3 F2 F1 C4'=C4+S4S3+S4S2 FA & =1 =1 ≥1 C4 &
A4 B4 A3 B3 A2 B2 A1 B1 计算机组成原理 西北工业大学计算机学院
117
3.7.2 多位十进制整数的加减运算 加法 按一位十进制加法规则运算和修正(考虑低位进位) 0001 0011 0111
+ 137 + 376 513 + 计算机组成原理 西北工业大学计算机学院
118
减法 把减法化为十进制补码加法进行 F=X-Y=X+[-Y]10补=X+10n-Y n为十进制数的位数 修正 最高位产生的进位,则F≥0,丢弃进位,结果正确,为正数 最高位不产生进位, 则F<0,结果为负,再变一次补,得正确结果 + + + + = =173 = =675 = =-325 计算机组成原理 西北工业大学计算机学院
119
3.8 逻辑运算和移位运算 逻辑运算 移位操作
120
3.8.1 逻辑运算 与 或 非 异或 按位测 按位清 按位置 判断符合或修改 计算机组成原理 西北工业大学计算机学院
121
与运算AND Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 X7Y7 X6Y6 X5Y5 X4Y4 X3Y3 X2Y2 X1Y1 X0Y0
计算机组成原理 西北工业大学计算机学院
122
或运算OR Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 X7Y7 X6Y6 X5Y5 X4Y4 X3Y3 X2Y2 X1Y1 X0Y0
计算机组成原理 西北工业大学计算机学院
123
非运算NOT Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 X7 X6 X5 X4 X3 X2 X1 X0 计算机组成原理
西北工业大学计算机学院
124
异或运算XOR X7Y7 X6Y6 X5Y5 X4Y4 X3Y3 X2Y2 X1Y1 X0Y0 Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 计算机组成原理 西北工业大学计算机学院
125
按位测 例如: 11010 AND 01100=01000 计算机组成原理 西北工业大学计算机学院
126
按位清 例如: 11010 AND 01100=01000 计算机组成原理 西北工业大学计算机学院
127
按位置 例如: XXXXX OR 01100=X11XX 计算机组成原理 西北工业大学计算机学院
128
判断符合或修改 例如: 11010 XOR 01100=00110≠00000 计算机组成原理 西北工业大学计算机学院
129
3.8.2移位操作 逻辑移位 算术移位 循环移位 计算机组成原理 西北工业大学计算机学院
130
逻辑移位:不考虑符号问题 C 逻辑左移 LR C 逻辑右移 LL 计算机组成原理 西北工业大学计算机学院
131
算术移位:考虑符号问题 C 算术左移 AL C 算术右移 AR 计算机组成原理 西北工业大学计算机学院
132
循环移位: C 不带进位 循环左移RL C 不带进位 循环右移RR C 带进位 循环左移RCL C 带进位 循环右移RCR 计算机组成原理
西北工业大学计算机学院
133
【例】设有两个寄存器A=11010101, B=00111100, 利用移位指令将两个寄存器的内容联合逻辑右移一位,其中A为高8位,B为低8位
解: LR A RCR B 计算机组成原理 西北工业大学计算机学院
134
[-|X|]补=111.000001 原码两位乘法运算过程 [|X|]原= 000.111111 部 分 积 乘 数 操作说明 符号位
乘 数 操作说明 符号位 数值位 数值部分Y 标志位Cj 初始化Z=0, Cj=0 +) Yj-1 Yj Cj=010,则Z+X 右移两位,置 Cj=0 Yj-1 Yj Cj=100 +) 则Z+2X 右移两位,置 Cj=0 Yj-1 Yj Cj=110 +) 则Z+[-X]补 右移两位,置 Cj=1 Yj-1 Yj Cj=001 +) 则Z+X 置 Cj=0 高 位 积 低 位 积 计算机组成原理 西北工业大学计算机学院
Similar presentations