計算機組成原理課件-第3章-計算機中的算術(shù)運算_第1頁
計算機組成原理課件-第3章-計算機中的算術(shù)運算_第2頁
計算機組成原理課件-第3章-計算機中的算術(shù)運算_第3頁
計算機組成原理課件-第3章-計算機中的算術(shù)運算_第4頁
計算機組成原理課件-第3章-計算機中的算術(shù)運算_第5頁
已閱讀5頁,還剩121頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第三章計算機中的算術(shù)運算

第1講:算術(shù)邏輯單元ALU(>1)

定點加減運算

第2講:定點乘除運算

運算器組織、浮點運算、本章復(fù)習(xí)

1

-1-

3.1算術(shù)邏輯單元ALU

ALU是運算器的核心組成部分,以邏輯運算為基礎(chǔ).

ALU的核心部件是加法器.

3.1.1加法器及其進位結(jié)構(gòu)

2

-2-

門電路的幾種表示方法

與或與非或非異或異或非非

(AND)(OR)(NAND)(NOR)(EXOR)(EXNOR)(NOR)

ABXY=AdBY=A+BY=ABY=A+BY=A?BY=AeBY=A

000011011

010110101

100110100

111100010

A___DA1\Y

-NlY

廿■好打

B-

以A.A__A_kY2AY

部一上?+X一,■->-?

標(biāo)呼

BB

外AAAAA

A

流心

」B

注:表中的國標(biāo)符號引用ANSIIEEEStd.91—1984:國外流行符號引用補充ANSIIEEEStd.91a—1991

3

-3-

一、半加器

圖3?1半加器框圖及真值表

4

-4-

G+i=AiBi

E=45.+AiBi=44

Si

AiBj

圖3?2半加器邏輯電路

5

-5-

二、全加器

si

ci+1

AiBi

3-3全加器框圖及真

值表

6

-6-

Sj=Aj?BjeCj

Cj+1=AjBj+AjCj+BjCj

=AiBi+(Aj+Bi)Ci

=AjBj+(AjeBj)Cj

.5ty

3-4全加器邏輯電路

7

-7-

Fulladderconstructedfrom2HalfAdders!

8

-8-

三、串行加法器

圖3?5串行加法器框圖

-9-

四、并行加法器

①進位公式分析

Ci+l=AjBi+(Ai?Bi)Ci

=AjBi+(Ai+Bi)Ci

定義兩個輔助函數(shù)

Gj=AjBj

Pi=Aj?Bi

Gi(CarryGenerateFunction)

Pj(CarryPropagateFunction)

10

-10-

Ci+1=Gi+PjCj

②串行進位加法器(RippleCarryAdder)

S3S2S1SO

A3B3A2B2A1B1A0BO

圖3?6見位串行進位加法器框圖

11

-11

C1=G0+P0C0

C2=G1+P1C1

C3=G2+P2C2

I

I

I

Cn=Gn-1+Pn-1Cn-1

最長進位延遲時間為[4+2.5(n-1)]ty,

形成最后和的時間是[4+2.5(n-2)+1.5]ty,

與n成正比.

12

-12-

③先行進位加法器

提高加法器運算速度的關(guān)鍵是消除行波進位中進位逐

位串行傳播,讓各位進位獨立同時形成.

13

_13_

C1=G0+P0C0

C2=G1+P1C1=G1+P1(G0+P0C0)

C3=G2+P2c2

=G2+P2(G1+P1(GO+POCO))

C4=G3+P3C3

=G3+P3(G2+P2

(G1+P1(G0+P0C0)))

14

-14-

展開并整理得到

C1=G0+P0C0

C2=G1+P1G0+P1P0C0

C3=G2+P2G1+P2P1G0+P2P1POCO

C4=G3+P3G2+P3P2G1+P3P2PlGO

+P3P2P1P0C0(圖3?8)

先行進位CLA(CarryLookAhead)力口法器(圖3?9).

15

-15-

Pi

=1

AiBj

圖I位并行進位線路

-16-

④組間行波進位加法器

圖3?11組間行波進位形成過程

-18-

S14S12S10SsS6s4S2So

Si15S13SuS907S5S3S1

iffiit"j[

wiMrwLiranra行ti

CLACLACLA

1l

/nU\Jium\*

AI5A14Al3A12Al1AloA9AsA7A6A5A4A3A2A1A0

B15B14B13B12B11B10B9B8B7B6B5B4B3B2B1B0

16位組間行波進位加法器

19

-19-

⑤兩嚶行進位加法器

Gi為第i組先行進位加法器的進位

產(chǎn)生函抑,

Pi為第i組先行進位加法器的進位傳

遞函*數(shù)

Gi=G4i+3+P4i+3G4i+2+P4i+3P4i+2G4i+1

*+P4i+3P4i+2P4i+lG4i

Pj=P4i+3P4i+2P4i+1P4i,i=0,1,2,3

20

-20-

小組間產(chǎn)住四個進位

C4=G0+P0*CO***

C8=G1+P1GO+P1POCO*

C12=G2*+P?GJ+P2P1GO+

P2rP11*POwCOw***

C16=G3+P3G2+P3P2G1+

P3P2P1GO+P3P2P1POCO

21

-21-

圖雷組間先行進位BCLA(Block

CarryLookAhead)部碎

22

-22-

一ZJ一

Cl6組間先行進位部件BCLA

C4

C8

Si

So

四位四位gl位Co

CLAJAA

加盤器

加法器c8

Al5A14Al3A12A11A10AQASA7AeAsA4A3A2AiAo

BI5B14B13B12B11BioB9BeB7BeB5B4B3B2BiBo

兩級先行進位加法器

24

24

25

-25-

⑥其它的并行加法器

3-1632位進位選擇加法器

26

-26-

五、一位8421碼十進制加法器

3十進制數(shù)的8421碼加法運算規(guī)則

⑴和01001時,不必修正

27

-27-

例x=3,y=4,求x+y=?

解:十進制數(shù)運算

3

8421碼

+40011

7十)0100

0111(+7)

止確結(jié)果

28

-28-

(2)和21010時,需要修正

例x=8,y=5,求x+y=?

解:十進制數(shù)運算

8421碼

8

1000

+5

+)0101

131101

錯誤結(jié)果

29

-29-

例x=9,y=8,求x+y=?

解:十進制數(shù)運算

98421碼

1001

+8

+)1000

17

10001

錯誤結(jié)果

30

-30-

1101

10001

+)0110

+)0110

10011(13)

——10111(17)

止碉

正確

2、8421碼十進制加法器的組成

31

-31-

表348421碼加法器修正關(guān)系

32

-32-

需要修正的項為:C4,+S3,S2,+S3,S1=1;

33

一33-

A34津2AiBjHoBoC。

IIf11(3—UI

圖3778421碼十進制加法器

34

-34-

3.1.2多功能算術(shù)邏輯單元ALU

一、多功能算術(shù)邏輯單元74181

Fi=Ai?BieCi=Pi十Ci

35

-35-

74181的邏輯結(jié)構(gòu)框圖

36

-36-

Xi=S3AiBi

表3?2XiYi與AiBi的關(guān)系

XiS1SOYi

00100

01Ai+Bi01AiBi

10Ai+Bi10A舊i

11Ai110

-37-

對于任一Xi、Yi都滿足

Xi+Yi=Xi

XiYi=Yi

■/Gi=XiYi

Pj=Xi?Yi=Xi+Yi

則Yi=Gi

Xi=Pi

Ci+1=Gi+PiCi=Yi+XiCi

38

-38-

則C1=YO+XOCO

C2=Y1+X1C1=Y1+X1Y0+X1X0C0

C3=Y2+X2C2=Y2+X2Y1+X2X1YO

+X2X1X0C0

39

-39-

-40-

二、先行進位發(fā)生器74182

圖中G0~G3即?3

*女

■P3

41

-41

Cn+x=G0(PO+Cn)

****

Cn+y=Gl(P1+G0(PO+Cn))

******

Un+Z=G2(P2+G1(P1+GO(PO+Cn)))

********

G(G)=G3(P3+G2)(P3+P2+G1)

****

(P3+P2+P1+GO)

******

P(P)=P3+P2+P1+PO

42

-42-

P3G3P2G2P1G1PoGoCn

o74182邏輯圖

43

-43-

圖,116位先行進位加法器框圖

44

-44-

多功能算邏單元總結(jié)

?SN74181是4位先行進位ALU芯片,中規(guī)模集成電路.

?SN74182是4位BCLA(組間先行進位)芯片.

?多芯片級聯(lián)構(gòu)成先行進位ALU

-4個SN74181芯片串行構(gòu)成一個16位單級先行進位ALU

-4個SN74181芯片與1個SN74182芯片可構(gòu)成16位兩級先行進位ALU

-16個SN74181芯片與5個SN74182芯片可構(gòu)成64位先行進位ALU

?現(xiàn)代主流計算機中ALU并非通過芯片級聯(lián)而成

-一個CPU芯片中有多個處理器核

-一個核中有多個32位/64位ALU!

45

-45-

3.2定點運算

3.2.1定點加減運算

一、補碼加減法所依據(jù)的關(guān)系式

1、加法[x]補+囚]補=僮+丫]補

⑴x>0,y>0,貝!|x+y>0

[x]#+[y]#=x+y=[x+y]#

46

-46-

(2)x>0,y<0

[x]#=x,[y]#=2+y

則[x]補+[y]補=2+(x+y)

(i)|x|>|y|

O0x+y<1(正數(shù))

[x]補+[y]補=2+(x+y)

=x+y=[x+y]1bO.xx...x

47

-47-

(ii)N<|y|

-1Sx+y<0(負數(shù))

岡補+[y]補=2+(x+y-[x+y]補

(3)x<0,y>0與(2)類似

(4)x<0,y<0x+y<0

區(qū)補=2+x,[y]補=2+y,

貝lj[x]|b+[y]1b=2+x+2+y=2+(2+x+y)

48

-48-

???x+y<0,而且其絕對值又小于1.

則1S2+x+y<2

[XX

2+(2+x+y)=2+(x+y)

---[x]#+[y]#=2+(x+y)=[x+y]1b

2、減法[xy]補=[x+(?y)]補

=[x]補+[?y]補

49

-49-

(1)0Sy<1(正數(shù))

[y]補=[y]原=0.yiy2???yn

[■y]原=i?yiy2…yn

[■y]補=1?yiy2...yn+2

50

-50-

因[y]#=2+y

1.11...1

貝。=?]補2—1.y1y2...yn

=(21.y1y2...yjn)

=(1.11...1+21.yly2...yn)

=(0.y1y2…yn+2)

n

y=0.yly2…yn+2

??,(y)為正數(shù)

/.[y]補=0?yly2…yn+2

51

-51-

例1y=0.0110

[y]|b=1.1010

[y]補=0.0110

例2y=0.0111

[y]補=0.0111

[y]1b=1.1001

52

-52-

二、運算規(guī)則

①參加運算的操作數(shù)用補碼表示.

②符號位參加運算.

③對于兩數(shù)相加減的各種情況,計算

機都執(zhí)行求和操作.當(dāng)操作碼為加運算時

,兩數(shù)直接相加;當(dāng)操作碼為減運算時,

將減數(shù)連同符號位一起求反加1與被減數(shù)相加.

④運算結(jié)果以補碼表示.

53

-53-

例1已知:x=0.1001,y=0.0110,

求:x+y=?

解:[x]補=0.1001[y]補=1.1010

[x]補0.1001

+M補1.1010

[x+y]補10.0011

x+y=O.OO11

54

-54-

例2已知:x=0.1001

y=0.0101,求:x+y=?

解:3]補=1.0111[y]|b=1.1011

岡補1.0111

+M補1.1011

[x+y]補11.0010

x+y=0.1110

55

-55-

例3已知:x=0.1001,y=0.0110,

求:xy=?

解:[x]補=0.1001[y]|b=0.0110

[y]補=1.1010

[x]補0.1001

+[y]補1.1010

[x?y]補10.0011

xy=0.0011

56

-56-

例4已知:x=0.1001

y=0.0110,求次y=?

解:兇補=1.0111[y]|b=1.1010

[y]補=0.0110

[x]補1.0111

+[y]補0.0110

[x?y]補1.1101

xy=0.0011

57

-57-

三、實現(xiàn)補碼加減運算的邏輯電路

實現(xiàn)補碼加減運算的邏輯電路圖

58

-58-

S3s2S1s。

圖3?22四位串行進位補碼加減法器

59

-59-

四、溢出檢測

1、溢出的概念

加法器和寄存器由多少個二進制

位組成通常稱為定點運算器的字長.

計算機執(zhí)行算術(shù)運算所產(chǎn)生的結(jié)

果超出機器數(shù)所能表示的數(shù)據(jù)范兌

,稱為溢出.

60

-60-

例如x=0,110,y=0,011,

則岡補0,110

+[y]補0,011

[x+y]補1,001(溢出)

x*y=

正溢

負溢

61

-61-

(a)0,110(+6)(b)1,110(2)

+)1,011(5)+)1,101(3)

AC113

IVrVZ■\■II

無溢出

(c)0,110(+6)(d)1,100(4)

+)0,011(+3)+)1,011(5)

1,001、10,111

溢出溢出

62

-62-

2、溢出檢測方法

(1)采用一個符號位

A=an-1an-2......aO

B=bn-1bn-2......bO

S=sn-1sn-2……so

OVR=an-1bn-1sn-1+an-1bn-1sn-1

63

-63-

an-1

Sn-1

R

bn-1

圖3?24溢出檢測電路

64

-64-

(2)用cn-1和cn判斷

0VR=cn-1ecn

(3)采用雙符號位(模4補碼或變形補碼)

模4補碼的定義為

岡補=

x0^x<2

岡補+[y]補=□+y]補一

4+x2<x<0

65

-65-

兩數(shù)相加后結(jié)果符號為:

00或11沒有溢出;

01正溢;

10負溢.

OVR=sf1esf2

66

-66-

例1已知x=0?010,y=0,011,求x+y=?

解[x]補=00.010[y]補=00.011

兇補00.010

+)[y]補00.011

00.101

無溢出x+y=0.101

67

-67-

例2已知x=0.010,y=0.011,求x+y=?

解岡補=11.110[y]補=11.101

[x]補11.110

+)[y]補11.101

11.011

無溢出x+y=0.101

68

-68-

例3已知x=0.110,y=0,011,求x+y=?

解M|b=00.110[y]補=00.011

[x]補00.110

+)[y]補00.011

01,001

正溢出

69

-69-

例4已知x=0.100,y=0.101,求x+y=?

解岡補=11.100[y]補=11.011

岡補11.100

+)[y]補11.011

10.111

負溢出

70

-70-

關(guān)于溢出標(biāo)志位

?除Zero(ZF)、Overflow(OF)外,許多機器還生成進/借

位標(biāo)志(CF)、符號標(biāo)志(NF/SF)等.

?標(biāo)志(Flag)在運算電路中產(chǎn)生,被記錄到專門的寄存

器中,以便在分支指令中被用來作為條件.

?存放標(biāo)志的寄存器通常稱為程序/狀態(tài)字寄存器或標(biāo)

志寄存器.每個標(biāo)志對應(yīng)標(biāo)志寄存器中的一個標(biāo)志位.

無符號教:CF表示進住、

溢出(不考慮OF)

有符號教:OF表示溢出

(不考慮CF)

71

-71-

3.3.2定點乘法運算

通過多次相加和移位來實現(xiàn)乘除運算.

一、移位操作

1、移位操作的種類

邏輯移位

循環(huán)移位

算術(shù)移位

72

-72-

2、邏輯移位(圖3?25)

左移低位補0,右移高位補0

如10110101

01101010

01011010

3、循環(huán)移位(圖3?25)

10011001

00110011

11001100

73

-73-

4、算術(shù)移位

算術(shù)移位則數(shù)的符號不變而數(shù)量

發(fā)生變化.左移一位將使數(shù)值擴大一

倍(乘以2)(在不產(chǎn)生溢出的情況下),

右移一位則使數(shù)值縮小一倍(乘以1/2)

(如果不考慮舍入的情況).

(1)正數(shù)

移位后的空位均補0(符號不變)

74

-74-

例0.0110

0.1100

0.G011

例:某變重初值:01111111(=127)

左移1位后為:

11111110(=?126/254,溢出,錯誤)

75

-75-

(2)負數(shù)

①負數(shù)的原碼移位后的空位補0

②負數(shù)的補碼左移后的空位補0,右移

后的空位補1.

③負數(shù)的反碼移位后的空位補1

76

-76-

二、原碼一位乘法

設(shè)岡原=xs,x1x2???xn

[y]B=ys.yiy2...yn

貝U[x]原?[y]原

=[xs?ys].(0.x!x2--.xn)(O.y1y2-..yn)

78

-78-

1、運算方法

例x=0.1101y=0.1011

0.1101

x)0.1011

1101

1101

uuuu

1101

0.10001111

乘數(shù)寄存器

79

-79-

x-y=x-(0,1011)

=0,1-x+O.OO-x+0.001-x+0.0001?x

=0.1{x+0.1[Ox+0.1(x+0.1x)]}

■1-1

=2{x+2-[Ox+2"(x+2"(x+0))]}

P1

P2

P3

P480

-80-

對于一般情況

設(shè)x=0.xi平???xn,y=y.y1y2???,n

貝l]xy=2/y1x+2(y2x+2(...

+2(yn-1x+2(ynx+O))...)))

81

-81-

其遞推公式為:

P0=01

P1=21(ynx+PO)

P2=2(yn-1x+Pl)

p^■=21

1(yn-i+1x+Pi-1)

I

;1

Pn=2(ylx+Pn-1)

[xy]=(xs?ys)Pn

82

-82-

舉例:x=0.1101y=0.1011,

[x?y]原=(xseys)Pn=0.10001111

x-y=0.10001111

83

-83-

部分積(A)乘數(shù)(C)

000001011

+)01101

―011011011

—>00110ihoi

+)01101

ikoi

10011

—01001iiho

+)00000

0100111H0

—00100nih

+)01101

10001111H

1111]

f0100084

-84-

2、原理框圖

86

-86-

三、補碼一位乘法

1、補碼與真值之間的關(guān)系

設(shè)[x]|b=xs-x1x2...xn

貝ljx="xs+0.x1x2...xn

(證明略)

87

-87-

2、補碼乘法算法的推導(dǎo)

設(shè)被乘數(shù)[X]補=xs.x1X2.?.xn,

乘數(shù)M補=ys?yiy2…yn

則[X?y]補=[x]補?y

(證明略)

88

-88-

3、補碼乘法比較法一布斯(Booth)乘法

(1)運算規(guī)則

12n

區(qū)叨補=岡補[ys+y12+y22+...+yn2]

=岡補[ys+(y1y12)+(y22

2(n-1)

y22)+...+(yn2

=岡補[(y14*y2yi)2

(n1)

+(ynyn-1)2—+(0yn)2

89

-89-

+

+

2

2

0一

(

o【

x

+

】"

【*

x

x

】M

*

y

*

M

3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論