07 计算机的运算方法04

47
线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email protected] 《 计算机组成原理 第六章 计算机的运算方法

Upload: huaijin-chen

Post on 21-Jul-2015

700 views

Category:

Education


1 download

TRANSCRIPT

Page 1: 07 计算机的运算方法04

系统总线

存储器

运算器

控制器

接口与通信

输入 / 输出设备

林楠

办公室: 408

办公电话: 0371-63887293

电子邮件: [email protected]

《 计算机组成原理 》

第六章 计算机的运算方法

Page 2: 07 计算机的运算方法04

4 、定点除法运算4.1 、原码一位除法4.2 、补码一位除法4.3 、阵列除法器

5 、浮点四则运算5.1 、浮点加减运算

对阶、执行加减、规格化、舍入、判溢出

5.2 、浮点乘除运算阶码加减、尾数乘除、规格化、舍入、判溢出

第六章 计算机的运算方法

Page 3: 07 计算机的运算方法04

原码一位除法基本上是从手算演变过来,符号位单独处理。

两个原码表示的数相除运算规则: 商的符号位:两数的符号相异或 商的数值部分:两作数的绝对值相除。

运算方法与普通的十进制小数除法相类似, 设 n 位被乘数 X 和 乘数 Y 用定点小数表示(定点整数同样)

被除数: [X] 原 = Xf . Xn-1 … X1 X0

除数: [Y] 原 = Yf . Yn-1 … Y1 Y0

商 [ Q ] 原 = ( Xf Y⊕ f ) + (0.Xn-1 … X1 X0) / (0.Yn-1 … Y1 Y0) 于是原码与原码相除就变成如何进行两个正数相除的问题了。

两种除法: 恢复余数法 不恢复余数法(加减交替法)

4.1 、原码一位除法

Page 4: 07 计算机的运算方法04

人会心算,一看就知道够不够减。但机器不会,必须先作减法。若余数为正,才知道够减;若余数为负,才知道不够减。不够减时,必须恢复原来的余数,顾名思义恢复余数法。

被除数 X=0.1011 除数 Y=0.1101 求 X/Y 。商精确到小数点后四位。手算方法计算步骤如下:

4.1 、原码一位除法

0.1101 0.1101 0 . 1011 - 0 . 1101 + 0.1101 0 . 10110 - 0 . 01101

0 . 010010 - 0 . 001101

0 . 0001010 - 0 . 0001101 + 0.0001101 0 . 00010100 - 0 . 00001101 0 . 00000111

- Y 不够减, + Y ,整数位商 0 , X 低位补 0 - 2-1Y 够减,商 1 , X 低位补 0 - 2-2Y够减,商 1 , X 低位补 0 - 2-3Y

不够减, + 2-3Y ,商 0 , X 低位补 0

- 2-4Y 够减,商 1

Page 5: 07 计算机的运算方法04

4.1 、原码一位除法

1 )恢复余数法

1 、符号单独处理, Q f = ( Xf Y⊕ f ) ,取绝对值相除;

2 、作减法,若不溢出,运算开始;3 、 -Y ,若余数 R 为正(够减),商 1 ,左移一位 ; -Y ,若余数 R 为负(不够减),商 0 ,恢复余数,左移一位;4 、重复 n 步;5 、最后一步余数为负(不够减),应恢复为正余数( +[Y] 补)

右移除数,可以通过左移被除数 ( 余数 ) 来替代,左移出界的被除数 ( 余数 ) 的高位都是无用的零,对运算不会产生任何影响。 如果,余数一共被左移了四次,需要校正。

最终的余数再右移四次,即 × 2-4 。得: R = R4 × 2-4 = 0.0111 × 2-4 = 0.00000111

Page 6: 07 计算机的运算方法04

寄存器 A 存放 被除数 X = 0.1011

寄存器 B 存放 除数 Y = 0.1101 寄存器 C 中存放商 X / Y

另外设置计数器 CR 控制循环次数。

-Y 用 [-Y] 补取代; [Y] 补 = 0.1101 [-Y] 补 = 1.0011

4.1 、原码一位除法

被除数 X = 0.1011

除数 Y = 0.1101

Page 7: 07 计算机的运算方法04

被除数 X (余数) 商 操作

0. 1011 0 0 0 0 0+ 1. 0011 - Y ( + [-Y] 补)

1. 1110 0 0 0 0 0 负数:不够减,商 0+ 0. 1101 +Y 恢复余数, ( + [Y] 补)

0. 1011 0 0 0 0 0 余数和商同时左移一位 1. 0110 0 0 0 0 0 + 1. 0011 - Y ( + [-Y] 补)

0. 1001 0 0 0 0 1 正数:够减,商 1 1. 0010 0 0 0 1 0 余数和商同时左移一位+ 1. 0011 - Y ( + [-Y] 补)

0. 0101 0 0 0 1 1 正数:够减,商 1 0. 1010 0 0 1 1 0 余数和商同时左移一位+ 1. 0011 - Y ( + [-Y] 补)

1. 1101 0 0 1 1 0 负数:不够减,商 0+ 0. 1101 + Y 恢复余数, ( + [Y] 补)

0. 1010 0 0 1 1 0 余数和商同时左移一位 1. 0100 0 1 1 0 0+ 1. 0011 - Y ( + [-Y] 补)

0. 0111 0 1 1 0 1 正数:够减,商 1

被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余0.0111*2-4

余数再右移四位得正确结果。

Page 8: 07 计算机的运算方法04

2 )加减交替法

加减交替法是对恢复余数除法的一种修正。

当余数为负时,不恢复,继续求下一位商,

但用加上除数 (+Y) 的办法来取代 (-Y) 操作,其他操作不变。

加减交替法的规则如下:

余数为正,商 1 ,左移一位,减去除数;

余数为负,商 0 ,左移一位,加上除数。

此方法不用恢复余数,所以又叫不恢复余数法。

但若最后一次上商为 0 ,则仍需恢复余数。

4.1 、原码一位除法

Page 9: 07 计算机的运算方法04

被除数(余数) 商 操作

0. 1011 0 0 0 0 0+ 1. 0011 - Y ( + [-Y] 补)

1. 1110 0 0 0 0 0 负数:商 0 1. 1100 0 0 0 0 0 余数和商同时左移一位+ 0. 1101 + Y 0. 1001 0 0 0 0 1 正数:商 1 1. 0010 0 0 0 1 0 余数和商同时左移一位+ 1. 0011 - Y ( + [-Y] 补)

0. 0101 0 0 0 1 1 正数:商 1 0. 1010 0 0 1 1 0 余数和商同时左移一位+ 1. 0011 - Y ( + [-Y] 补)

1. 1101 0 0 1 1 0 负数:商 0 1. 1010 0 1 1 0 0 被除数和商同时左移一位+ 0. 1101 + Y 0. 0111 0 1 1 0 1 正数:商 1

4.1 、原码一位除法被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余0.0111*2-4

余数再右移四位得正确结果。

Page 10: 07 计算机的运算方法04

4 、定点除法运算4.1 、原码一位除法4.2 、补码一位除法4.3 、阵列除法器

5 、浮点四则运算5.1 、浮点加减运算

对阶、执行加减、规格化、舍入、判溢出

5.2 、浮点乘除运算阶码加减、尾数乘除、规格化、舍入、判溢出

第六章 计算机的运算方法

Page 11: 07 计算机的运算方法04

4.2 、补码一位除法

补码加减交替法 , 法则如下: ( [ Ri ]补为余数,数值部分共 n 位 )

2[ Ri]补 - [Y]

2[ Ri]补 + [Y]

10

同号 (不够减 )异号 (够减 )

[X] 补 +[Y]

补1异号

2[ Ri]补 - [Y]

2[ Ri]补 + [Y]

10

同号 (够减 )异号 (不够减 )

[X] 补 -[Y] 补0同号

求新余数 (共 n步)

上商[R] 补 ,[Y] 补符

号求余数 [R] 补商符

[X] 补 [Y[] 补符

1) 比较 2) 上商 3) 求新余数

2[ Ri]补 + [Y]

0异号

2[ Ri]补 + [-Y]

1同号

求新余数 (共 n步)

上商[R] 补 ,[Y] 补符

1) 比较 2) 上商 3) 求新余数

由上式化简

Page 12: 07 计算机的运算方法04

4 )商的符号

两种常见的做法:

方法一:第一步比较 XY 同号做 [X] 补– [Y] 补;异号做 [X]

补 +[Y] 补;

方法二:一开始就将被除数 X 当作初始余数 R0 ,

R0 与 Y 同号商 1 ,异号商 0 ,得的假商最后求反进行

校正。

// 由于方法一开始比较被除数与除数,后来比较余数与除数,

控制部署不一样。所以采用方法二,全部是比较余数与除数,

便于计算机控制。

5 )商的校正 对于方法一,商符正确,商末位恒置 1 。 对于方法二,商符取反,商末位恒置 1 。

4.2 、补码一位除法

Page 13: 07 计算机的运算方法04

4.2 、补码一位除法

被除数 X (余数 R ) 商 Q 操作 0. 1011 0 0 0 0 0+ 1. 0011 X Y 同号: + [-Y] 补

1. 1110 0 0 0 0 0 R Y 异号:商 0 1. 1100 0 0 0 0 0 余数 R 和商同时左移一位+ 0. 1101 + [Y] 补

0. 1001 0 0 0 0 1 R Y 同号:商 1 1. 0010 0 0 0 1 0 余数 R 和商同时左移一位+ 1. 0011 + [-Y] 补

0. 0101 0 0 0 1 1 R Y 同号:商 1 0. 1010 0 0 1 1 0 余数 R 和商同时左移一位+ 1. 0011 + [-Y] 补

1. 1101 0 0 1 1 0 R Y 异号:商 0 1. 1010 0 1 1 0 0 余数 R 和商同时左移一位+ 0. 1101 + [Y] 补

0. 0111 0 1 1 0 1 商的末位恒置 1

使用方法一: [X] 补 =0.1011 [Y] 补 =0.1101 [-Y] 补 =1.0011

被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余0.0111*2-4

余数再右移四位得正确结果。

Page 14: 07 计算机的运算方法04

4.2 、补码一位除法

被除数 X (余数 R ) 商 Q 操作

0. 1011 0 0 0 0 1 R Y 同号:商 1 1. 0110 0 0 0 1 0 余数 R 和商同时左移一位+ 1. 0011 + [-Y] 补

0. 1001 0 0 0 1 1 R Y 同号:商 1 1. 0010 0 0 1 1 0 余数 R 和商同时左移一位+ 1. 0011 + [-Y] 补

0. 0101 0 0 1 1 1 R Y 同号:商 1 0. 1010 0 1 1 1 0 余数 R 和商同时左移一位+ 1. 0011 + [-Y] 补

1. 1101 0 1 1 1 0 R Y 异号:商 0 1. 1010 1 1 1 0 0 余数 R 和商同时左移一位+ 0. 1101 + [Y] 补

0. 0111 1 1 1 0 0 0 1 1 0 1 校正:商符取反,商末位置 1

使用方法二: [X] 补 =0.1011 [Y] 补 =0.1101 [-Y] 补 =1.0011

被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余0.0111*2-4

余数再右移四位得正确结果。

Page 15: 07 计算机的运算方法04

4.2 、补码一位除法

被除数 X (余数 R ) 商 Q 操作

0. 0100 0 0 0 0 0 R Y 异号:商 0 0. 1000 0 0 0 0 0 余数 R 和商同时左移一位+ 1. 1000 + [Y] 补

0. 0000 0 0 0 0 0 R Y 异号:商 0 0. 0000 0 0 0 0 0 余数 R 和商同时左移一位+ 1. 1000 + [Y] 补

1. 1000 0 0 0 0 1 R Y 同号:商 1 1. 0000 0 0 0 1 0 余数 R 和商同时左移一位+ 0. 1000 + [-Y] 补

1. 1000 0 0 0 1 1 R Y 同号:商 1 1. 0000 0 0 1 1 0 余数 R 和商同时左移一位+ 0. 1000 + [-Y] 补

1. 1000 0 0 1 1 0 1 0 1 1 1 校正:商符取反,商末位置 1

使用方法二: [X] 补 =0. 0100 [Y] 补 = 1.1000 [-Y] 补 = 0.1000

被除数 X = 0. 0100 除数 Y = 1.1000 商 1.0111 余 11.1000*2-4

余数再右移四位得正确结果。

Page 16: 07 计算机的运算方法04

4 、定点除法运算4.1 、原码一位除法4.2 、补码一位除法4.3 、阵列除法器

5 、浮点四则运算5.1 、浮点加减运算

对阶、执行加减、规格化、舍入、判溢出

5.2 、浮点乘除运算阶码加减、尾数乘除、规格化、舍入、判溢出

第六章 计算机的运算方法

Page 17: 07 计算机的运算方法04

和阵列乘法器相比,阵列除法器也是一种并行运算部件,采用大规模集成电路制造。它比早期的串行除法器的控制线路少,并提供较高的运算速度。

4.3 、阵列除法器 P297

可控加法 / 减法单元 (CAS) 0.1101

0.1101 0 . 10110 - 0 . 01101 0 . 010010 - 0 . 001101 0 . 0001010 - 0 . 0001101 0 . 00010100 - 0 . 00001101 0 . 00000111

Page 18: 07 计算机的运算方法04

4 、定点除法运算4.1 、原码一位除法4.2 、补码一位除法4.3 、阵列除法器

5 、浮点四则运算5.1 、浮点加减运算

对阶、执行加减、规格化、舍入、判溢出

5.2 、浮点乘除运算阶码加减、尾数乘除、规格化、舍入、判溢出

第六章 计算机的运算方法

Page 19: 07 计算机的运算方法04

浮点数的表示形式 ( 以 2 为底 ) :

X = S · 2 j

S 尾数,绝对值小于 1 的规格化二进制小数,决定数的有效精度。

j 阶码,用移码或补码表示的整数,决定数的表示范围。

2 基数

例如: A = 104 = 01101000 = 0.1101000 * 27

B = 40 = 0.101000 * 26

浮点数的表示:A = 0 0111 1101000 B = 0 0110 101000

5 、浮点四则运算

所以,阶码相同,尾数才能运算,等于先把小数点对齐,对大阶!

Page 20: 07 计算机的运算方法04

IEEE754 国际标准:阶码 j 用移码、基为 2 、尾数 S 用原码。

符号位数 阶码 j 位数 尾数 S 位数 总位数

短浮点数 1 8 23 32长浮点数 1 11 52 64临时浮点数 1 15 64 80

通常计算机中,尾数用补码表示,阶码用补码或移码表示。

移码:[ X ]补的符号位取反,即得[ X ]移。

例: X=+1011 [ X ]补 =01011 [ X ]移 =11011

X=-1011 [ X ]补 =10101 [ X ]移 =00101

5 、浮点四则运算

Page 21: 07 计算机的运算方法04

移码具有以下特点:

1 ) 最高位符号位, 1 表示正号, 0 表示负号。 如果是双符号位,最高位保持 0 : 01 正数, 00 负数。 溢出判断:最高位为 1 , 10 上溢, 11 下溢。

2 )在计算机中,移码只执行加减法运算,且运算结果 +2n修正; 即对结果的符号位取反,得到[ X ]移。

例如: X=+1010 Y=+0011, 则[ X ]移 =1.1010 [ Y ]

移 =1.0011 [ X ]移 + [ Y ]移 =1.1010+1.0011 = 01101, 修正:[ X+Y ]移 = 01101+10000 =11101

3 )数据 0有唯一的编码,即[ +0 ]移 = [ -0 ]移 =1000…0 。

[ X + Y ]移 = [ X ]移 + [ Y ]补

[ X - Y ]移 = [ X ]移 + [ -Y ]补

5 、浮点四则运算

Page 22: 07 计算机的运算方法04

浮点数的阶码为什么用移码表示呢?

1 ) 正数的移码大于负数的移码: [X] 移 > [-X] 移

原码、补码、反码都不具备。

2 ) 如果: X > Y 则 [X] 移 > [Y] 移

所以,在浮点运算中,可以方便地通过比较移码的大小来实现阶码真值大小的比较,其他三种码都不具备这一特性。

5 、浮点四则运算

Page 23: 07 计算机的运算方法04

4 、定点除法运算4.1 、原码一位除法4.2 、补码一位除法4.3 、阵列除法器

5 、浮点四则运算5.1 、浮点加减运算

对阶、执行加减、规格化、舍入、判溢出

5.2 、浮点乘除运算阶码加减、尾数乘除、规格化、舍入、判溢出

第六章 计算机的运算方法

Page 24: 07 计算机的运算方法04

设有两浮点数 X , Y ,其中: X = SX * 2 jX Y = SY * 2 jY

X±Y 运算执行以下五步:

1) “ 对大阶”操作 对大阶:使两数的阶码值相等。 求阶码差 Δj , Δj≠0 时,小阶码的尾数右移 Δj 位:阶码 +Δj ,

2) 尾数的加 / 减运算 两尾数进行加 / 减运算。

3) 规格化操作 尾数符号 01 或 10 :尾数溢出。右规:尾数右移 1 位,阶码 +1 尾数符号 00 或 11 :尾数不溢出。 但如最高数值位与符号位相同 : 00 0 或 11 1 左规:尾数连续左移直到最高数值位与符号位不同为止 ( 00 1 , 11 0 ) 同时从阶码中减去移位的位数。

5.1 、浮点加减运算

Page 25: 07 计算机的运算方法04

4) 舍入(处理多余位)

在执行右规或对阶时,尾数低位上的数值会移掉,使数值的精度

受到影响,常用“ 0” 舍“ 1” 入法。

(三种舍去法:恒舍去,末位恒置 1 , 0 舍 1 入;

取其精度受影响最小的方法)

5) 检查阶码是否溢出

在规格化和舍入时都可能发生溢出,

若阶码符号 10 为下溢,置运算结果为零,

若阶码符号 01 为上溢,置溢出标志。

5.1 、浮点加减运算

Page 26: 07 计算机的运算方法04

X = 0111 00.1101000 jX SX

Y = 0110 00.1010000 jY SY

SY

jY + 1SX

jX + 1

SX

jX + 1

No

No

Yes

jX = jY

SX +- SY SX

jX (or jY) jX

Xf1 X⊕ f2 = 1

Xf1Xf2 X1+

Xf1Xf2 X1

= 1 ?

SX

jX - 1输出

Yes

Yes

No

3 )规格化处理

00.1101000 SX

+ 00.0101000 SY

01.0010000右规: 1000 00.10010000

左规 右规

2 )尾数运算

1 )阶码对齐

4 )舍入处理5 )溢出判断

jX > jY

No

Yes

Page 27: 07 计算机的运算方法04

例 : 已知 X = 0.11011011 * 2010, Y = - 0.10101100 * 2100 求 X + Y

解 : ① 对大阶:[ jX]补 = 00 0010 [ jY]补 = 00 0100 [ - jY]补 = 11 1100

求阶差 Δj= [ jX]补 + [ - jY]补 = 00 0010 + 11 1100 = 11 1110 ( -2 ) X 的阶码小: X 阶码 + 2 ( [ jX]补 = [ jY]补 = 00 0100 ) X 的尾数右移 2 位,前面补符号位 [ SX]补 = 00 0011011011 (此时保留右移数据,不丢不舍)

② 尾数相加[ SX]补 = [ SX]补 + [ SY]补 = 00 0011011011 + 11 01010100 = 11 10001010 11

③ 规格化操作:左规 : 数值位左移 1 位 = 11 000101011 阶码 - 1 ([ jX]补 = 00 0011 )

④ 舍入 舍去的附加位最高位为 1 ,结果最低位 +1 : [ Sx]补 =11 00010110 S= - 0.11101010

⑤ 判溢出 阶码符号为 00 ,不溢出。 最终结果为: X+Y = - 0.11101010 * 2011

实际运算时,先确定位数。假设机器字长 16 位,采用浮点表示数,其中阶符 2 位,阶码 4 位,尾符 2 位,尾数 8 位,都用补码表示。

Page 28: 07 计算机的运算方法04

4 、定点除法运算4.1 、原码一位除法4.2 、补码一位除法4.3 、阵列除法器

5 、浮点四则运算5.1 、浮点加减运算

对阶、执行加减、规格化、舍入、判溢出

5.2 、浮点乘除运算阶码加减、尾数乘除、规格化、舍入、判溢出

第六章 计算机的运算方法

Page 29: 07 计算机的运算方法04

X = SX · 2 jX Y = SY · 2 jY

X * Y = ( SX * SY ) 2 jX + jY

X / Y = ( SX / SY ) 2 jX - jY

5.2 、浮点乘除运算

1 )阶码加减: 乘法: jX + jY ,除法: jX - jY 2 )尾数乘除: 乘法: SX * SY ,除法: SX / SY 3 )规格化处理;4 )舍入操作: 有可能带来又一次规格化;5 )判溢出: 检查阶码上下溢出。

Page 30: 07 计算机的运算方法04

例如:求 X*Y ,

X = 0.0110011 * 2 -5

Y = - 0.1110010 * 2 3

阶码(含符号位)用 4 位移码表示,采用单符号位。

尾数(含符号位)用 8 位补码表示,采用单符号位。

[jX] 补 = 1 011 [jX] 移 = 0 011

[jY] 补 = 0 011 [jY] 移 = 1 011

[SX] 补 = 0.0110011 [-SX] 补 =1.1001101 [SY] 补 =1.0001110

[X] 浮 = 0 011 , 0.0110011

[Y] 浮 = 1 011 , 1.0001110

5.2 、浮点乘除运算

Page 31: 07 计算机的运算方法04

1 )阶码相加: [ jX + jY ] 移 = [ jX ] 移 + [ jY ] 补

= 0 011 + 0 011 = 0 110

2 )尾数相乘: [SX] 补 * [SY] 补 = 0.0110011 * 1.0001110

= 1.10100101001010 [XY] 浮 = 0 110, 1.10100101001010

3 )规格化处理 : 符号位与最高数值位相同,需要规格化(尾数左移一位,阶码 -1 )

[XY] 浮 = 0.101, 1.01001010010100

4 )舍入操作:

尾数设 8 位, 0 舍 1 入,则 [XY] 浮 = 0 101, 1.0100101

5 )判溢出:

阶码两符号位相同,不溢出。

5.2 、浮点乘除运算

Page 32: 07 计算机的运算方法04

浮点运算器

浮点运算器

由阶码定点运算器和尾数定点运算器组成。

阶码部分仅执行加减法运算。

尾数部分则执行加减乘除运算,左规时有时需要左移多位。

Page 33: 07 计算机的运算方法04

6 、定点运算器的基本结构 6.1 、单总线结构的运算器6.2 、双总线结构的运算器6.3 、三总线结构的运算器

第六章 计算机的运算方法

Page 34: 07 计算机的运算方法04

定点运算器是数据的加工处理部件, 是 CPU 的重要组成部分。

包括:ALU 算术 /逻辑单元 ,阵列乘除器,数据寄存器,累加器,多路转换器,数据总线(内部总线)

等逻辑构成。

6 、定点运算器的基本结构

移位门

ALU

选择门 A 选择门 B

通用寄存器组

数据总线

数据总线

运算器结构框图

Page 35: 07 计算机的运算方法04

定点运算部件框图

Page 36: 07 计算机的运算方法04

A , B , C 寄存器的作用

商除数 被除数 余数除法

乘数,乘积低位被乘数 部分积 乘积高位乘法

无用减数 被减数 运算结果减法

无用加数 被加数 运算结果加法

CBA运算

5 、定点运算器的基本结构

Page 37: 07 计算机的运算方法04

ALU 74181 逻辑电路图 P281 P299

S 是状态控制端,

S=1, 执行逻辑运算

S=0, 执行算术运算

F3~ F0 是运算结

S0~S3 是运算选择控制端

决定电路执行哪种算术运算

或哪种逻辑运算。

Cn 是 ALU 的最低位进位输

A3~A0 , B3~ B0

参加运算的两个数

Page 38: 07 计算机的运算方法04

A· B(A·B)减 1A·B1110

A减 BA减 B减 1AAB0110

(A·B)加 (A+B)加 1

(A·B)加 (A+B)B1010

A加 (A·B)加 1A加 (A·B)A·B0010

“0”减 1“0”1100

(A+B)加 1A+BA·B0100

(A+B)加 1A+BA+B1000

A+1AA0000

Cn=0Cn=1

S=0 算术运算S=1逻辑运算

正 逻 辑S0S1S2S3

1.2 、算术逻辑单元S 是状态控制端,

S=1, 执行逻辑运算

S=0, 执行算术运算

S0~S3 是运算选择控制端

决定电路执行哪种算术运算

或哪种逻辑运算。

Cn 是 ALU 的最低位进位输

A3~A0 , B3~ B0

参加运算的两个数

ALU 74181 算术 /逻辑运算功能表 P281 P299

Page 39: 07 计算机的运算方法04

用四片 4 位 ALU 电路可组成 16 位 ALU 。( 1110 1101 0101 0001 )片内进位是并行快速的,但片间进位是串行慢速的,计算时间长。

把 16 位 ALU 中的每四位作为一组,用类似四位超前进位加法器 “ 位间快速进位” 的方法来实现 16 位 ALU 的 “组间快速进位” 。

16 位快速 ALU

Review: 算术逻辑单元

Page 40: 07 计算机的运算方法04

运算器的设计主要是围绕 ALU 和寄存器之间,怎样通过数据总线传送 操作数和运算结果进行的。

在决定设计方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺。

运算器大体有单总线、双总线、三总线三种结构形式。

根据总线所在位置,总线分为内部总线和外部总线两类。

内部总线是指 CPU内,各部件的连线。(本章讲的是内部总线)

外部总线是指系统总线,即 CPU 与存储器、 I/O 系统之间的连线。

6 、定点运算器的基本结构

Page 41: 07 计算机的运算方法04

6 、定点运算器的基本结构 6.1 、单总线结构的运算器6.2 、双总线结构的运算器6.3 、三总线结构的运算器

第六章 计算机的运算方法

Page 42: 07 计算机的运算方法04

CPU内部所有部件都接到同一总线上。数据可以在任何两个寄存器之间,或任一个寄存器和 ALU之间传送。如果有阵列乘法器或除法器,它们所处的位置应与 ALU 相当。

同一时刻,只能有一个操作数放在总线上,不能同时传送两个数据。

结构特点:操作速度较慢,控制电路比较简单。

6.1 单总线结构的运算器

Page 43: 07 计算机的运算方法04

6 、定点运算器的基本结构 6.1 、单总线结构的运算器6.2 、双总线结构的运算器6.3 、三总线结构的运算器

第六章 计算机的运算方法

Page 44: 07 计算机的运算方法04

这种结构有两条总线:总线 1 、总线 2 。

两个操作数可以同时加到 ALU 中进行运算,只需一次操作控制,而把运算结果送到缓冲器,缓冲器的数据可以送到任意一条总线上,两条总线的数据通过通用寄存器组来存储。

优点:速度比单总线结构快。

6.2 双总线结构的运算器

Page 45: 07 计算机的运算方法04

6 、定点运算器的基本结构 6.1 、单总线结构的运算器6.2 、双总线结构的运算器6.3 、三总线结构的运算器

第六章 计算机的运算方法

Page 46: 07 计算机的运算方法04

有三条总线: 两端接 ALU 的输入:输入总线 1 ,输入总线 2 一端接 ALU 的输出:输出总线 3

这样一步就可以控制两个数的运算,速度可以大大提高,通过通用寄存器把总线 3 的数据送到总线 1 与总线 2 。

6.3 双总线结构的运算器

Page 47: 07 计算机的运算方法04

复习与作业

复习章节: 第 6 章 计算机的运算方法

6.3 定点运算6.3.1 移位运算

6.3.4 除法运算

6.4 浮点四则运算

作业: P291 6.21 6.26 6.29