33

Click here to load reader

08 计算机的运算方法05

Embed Size (px)

Citation preview

Page 1: 08 计算机的运算方法05

系统总线

存储器

运算器

控制器

接口与通信

输入 / 输出设备

林楠

办公室: 408

办公电话: 0371-63887293

电子邮件: [email protected]

《 计算机组成原理 》

第六章 计算机的运算方法

Page 2: 08 计算机的运算方法05

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

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

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

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

第六章 计算机的运算方法

Page 3: 08 计算机的运算方法05

设有两浮点数 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 4: 08 计算机的运算方法05

4) 舍入(处理多余位)

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

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

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

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

5) 检查阶码是否溢出

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

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

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

5.1 、浮点加减运算

Page 5: 08 计算机的运算方法05

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 6: 08 计算机的运算方法05

例 : 已知 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 7: 08 计算机的运算方法05

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

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

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

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

第六章 计算机的运算方法

Page 8: 08 计算机的运算方法05

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 9: 08 计算机的运算方法05

例如:求 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 10: 08 计算机的运算方法05

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 11: 08 计算机的运算方法05

浮点运算器

浮点运算器

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

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

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

Page 12: 08 计算机的运算方法05

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

第六章 计算机的运算方法

Page 13: 08 计算机的运算方法05

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

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

等逻辑构成。

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

移位门

ALU

选择门 A 选择门 B

通用寄存器组

数据总线

数据总线

运算器结构框图

Page 14: 08 计算机的运算方法05

定点运算部件框图

Page 15: 08 计算机的运算方法05

A , B , C 寄存器的作用

商 S除数 Y被除数 X 余数

R除法

乘数 Y 乘积低位 S

被乘数 X 部分积 乘积高位 S乘法

无用减数 Y被减数 X 运算结果

S减法

无用加数 Y被加数 X 运算结果

S加法

CBA运算

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

Page 16: 08 计算机的运算方法05

算术逻辑单元 ALU 74181 逻辑电路图 P281 P299

M 是状态控制端,

M=1, 执行逻辑运算

M=0, 执行算术运算

F3 ~ F0 是运算结

S0~S3 是运算选择控制端

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

或哪种逻辑运算。

Cn 是 ALU 的最低位进位输

A3~A0 , B3 ~ B0

参加运算的两个数

Page 17: 08 计算机的运算方法05

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

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

正 逻 辑S0S1S2S3

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

M=1, 执行逻辑运算

M=0, 执行算术运算

S0~S3 是运算选择控制端

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

或哪种逻辑运算。

Cn 是 ALU 的最低位进位输

A3~A0 , B3 ~ B0

参加运算的两个数

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

Page 18: 08 计算机的运算方法05

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

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

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

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

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

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

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

Page 19: 08 计算机的运算方法05

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

第六章 计算机的运算方法

Page 20: 08 计算机的运算方法05

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

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

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

6.1 单总线结构的运算器

Page 21: 08 计算机的运算方法05

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

第六章 计算机的运算方法

Page 22: 08 计算机的运算方法05

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

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

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

6.2 双总线结构的运算器

Page 23: 08 计算机的运算方法05

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

第六章 计算机的运算方法

Page 24: 08 计算机的运算方法05

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

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

6.3 双总线结构的运算器

Page 25: 08 计算机的运算方法05

复习与作业

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

6.3 定点运算6.3.1 移位运算

6.3.4 除法运算

6.4 浮点四则运算

作业: P291 6.21 6.26 6.29

Page 26: 08 计算机的运算方法05

1 、 数据的表示方式

1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换)

1.3 、小数点的处理(定点、浮点)

1.4 、原码的表示方法1.5 、反码的表示方法

1.6 、补码的表示方法(重点研究补码运算)

1.7 、字符的表示方法( ASCII 码)1.8 、汉字的表示方法(字型码、内码)

1.9 、校验码(奇偶校验、海明威校验、 CRC校验)

Review: 第六章 计算机的运算方法

机器数的表示方法

真值表示问题解决

Page 27: 08 计算机的运算方法05

2 、定点加、减法运算与实现2.1 、补码定点加、减运算(减法通过加法来实现)2.2 、溢出概念与检测方法(数值超出了表示范围)2.3 、补码定点加法器

3 、定点乘法运算3.1 、原码一位乘法(符号位单独处理)3.2 、补码一位乘法(矫正法、比较法(布斯 Booth ) )3.3 、补码两位乘法3.4 、阵列乘法器(并行计算结果)

4 、定点除法运算4.1 、原码一位除法(恢复余数法、加减交替法)4.2 、补码一位除法4.3 、阵列除法器(并行计算结果)

Review: 第六章 计算机的运算方法

Page 28: 08 计算机的运算方法05

5 、浮点四则运算(引入移码)

5.1 、浮点加减运算

对大阶(对齐小数点)、 执行加减(定点小数加减)、 规格化(尾数加减结果右规或

左规)、 舍入(尾数按机器字长进行 0

舍 1 入)、 判溢出(阶码的符号判运算结

果是否溢出)

5.2 、浮点乘除运算

阶码加减、尾数乘除、规格化、舍入、判溢出

Review: 第六章 计算机的运算方法

Page 29: 08 计算机的运算方法05

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

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

等逻辑构成。

移位门

ALU

选择门 A 选择门 B

通用寄存器组

数据总线

数据总线

定点运算器的基本结构框图

Review: 第六章 计算机的运算方法

Page 30: 08 计算机的运算方法05

考研题精选

1 、当采用两位符号位进行加法运算时,如果结果的符号位为()表示负溢出。

A 00 B 01 C 10 D 11

两符号位相同不溢出。最高位符号位代表真正的符号,所以 01 表示正溢出, 10 表示负溢出。

2 、在补码定点加法运算中,采用 1 位符号位,则当()时,表示结果溢出。

A 符号位有进位 B 符号位进位和最高位进位异或结果为 0C 符号位为 1 D 符号位进位和最高位进位异或结果为 1

3 、在补码加减交替法中,参加操作的数是(),商符()。

A 绝对值的补码 在形成商值的过程中自动形成B 补码 在形成商值的过程中自动形成C 补码 由两个数符号位异或形成D 绝对值的补码 由两个数符号位异或形成

Page 31: 08 计算机的运算方法05

考研题精选

1 、真值 0 表示形式唯一的机器数是()

A 原码 B 补码和移码 C 反码 D 以上都不对

2 、什么是机器零?浮点数采用什么机器数形式表示时,可用全 0 表示机器零?

当一个浮点数尾数为 0 ,无论阶码为何值;或者当阶码等于或小于它所能表示的最小数时,无论尾数为何值;机器都把该浮点数当做机器零处理。

阶码用移码表示:最小的阶码是全 0 ;尾数用补码表示:真值 0 表示为全 0 。

3 、计算机中表示地址时,采用()

A 原码 B 补码 C 反码 D 无符号数

Page 32: 08 计算机的运算方法05

考研题精选

1 、浮点数的表示范围和精度取决于()

A 阶码的位数和尾数的机器数形式B 阶码的机器数形式和尾数的位数C 阶码的位数和尾数的位数D 阶码的机器数形式和尾数的机器数形式

2 、采用规格化的浮点数是为了()

3 、当定点运算发生溢出时,应该()。

A 向左规格化 B 向右规格化 C 发出出错信息 D 舍入处理

A 增加数据的表示范围B 方便浮点运算C 防止运算时数据溢出D 增加数据的表示精度

当阶码和尾数的位数确定后,采用规格化尾数可获得最好的表示精度。

Page 33: 08 计算机的运算方法05

考研题精选

1 、大部分计算机减法是用()实现的。

A 将被减数加到减数中 B 从被减数中减去减数C 补码的加法 D 从减数中减去被减数

2 、 ALU属于()

4 、浮点机器数中,()是隐含的。

A 阶码 B 数符 C 尾数 D 基数

A 时序电路 B 组合逻辑电路 C 控制器 D 寄存器

3 、运算器由许多部件组成,其核心部分是()

A 数据总线 B 算术逻辑单元 C 累加寄存器 D 多路开关

5 、定点补码加减法运算中,产生溢出的条件是什么? 浮点加减运算中,产生溢出的条件是什么?

定点补码加减运算,产生溢出的条件是两个符号数加减, 结果超出了它的表示范围。• V=Xf Yf Sf+XfYfSf = 1 • 双符号位异或为 1 • 双进位异或为 1

浮点加减运算,产生溢出的条件是阶码超出了它的表示范围。