計算機(jī)組成原理第二章課件(白中英編-科學(xué)出版社)_第1頁
計算機(jī)組成原理第二章課件(白中英編-科學(xué)出版社)_第2頁
計算機(jī)組成原理第二章課件(白中英編-科學(xué)出版社)_第3頁
計算機(jī)組成原理第二章課件(白中英編-科學(xué)出版社)_第4頁
計算機(jī)組成原理第二章課件(白中英編-科學(xué)出版社)_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章運算方法和運算器2.1數(shù)據(jù)與文字的表示方法2.2定點加法、減法運算2.3定點乘法運算2.4定點除法運算2.5定點運算器的組成2.6浮點運算方法和浮點運算器第二章運算方法和運算器重點:數(shù)據(jù)表示簡介:運算方法和運算器數(shù)制2.1

數(shù)據(jù)與文字的表示方法2.1.1數(shù)據(jù)格式2.1.2數(shù)的機(jī)器碼表示2.1.3字符與字符串的表示方法2.1.4漢字的表示方法2.1.5校驗碼2.1數(shù)據(jù)與文字的表示方法計算機(jī)中使用的數(shù)據(jù)可分成兩大類:符號數(shù)據(jù):非數(shù)字符號的表示(ASCII、漢字、圖形等)數(shù)值數(shù)據(jù):數(shù)字?jǐn)?shù)據(jù)的表示方式(定點、浮點)計算機(jī)數(shù)字和字符的表示方法應(yīng)有利于數(shù)據(jù)的存儲、加工(處理)、傳送;編碼:用少量、簡單的基本符號,選擇合適的規(guī)則表示盡量多的信息,同時利于信息處理(速度、方便)計算機(jī)中常用的數(shù)據(jù)表示格式有兩種,一是定點格式,二是浮點格式定點格式容許的數(shù)值范圍有限,但要求的處理硬件比較簡單浮點格式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜2.1.1

數(shù)據(jù)格式定點數(shù)的表示方法定點表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點位置是固定不變的。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)定點數(shù)x=x0x1x2…xn

在定點機(jī)中表示如下(x0表示符號位,0代表正號,1代表負(fù)號)定點整數(shù)的小數(shù)點位置定點小數(shù)的小數(shù)點位置2.1.1數(shù)據(jù)格式例如,n=8,最大值編碼:0.11111111

表示:0.11111111=1.0-0.00000001

=1-2-82.1.1數(shù)據(jù)格式2.1.1數(shù)據(jù)格式目前計算機(jī)中多采用定點純整數(shù)表示,因此將定點數(shù)表示的運算簡稱為整數(shù)運算例如:n=8,最大值編碼:11111111

表示:11111111=100000000-1

=28-1定點數(shù)例例:X=+1010110.純整數(shù):X=01010110.正數(shù),符號位取0Y=-1101001.純整數(shù):Y=11101001.(原碼)負(fù)數(shù),符號位取1X=+0.11011Y=-0.10101符號位取0純小數(shù):X=0.11011符號位取1純小數(shù):X=1.10101(原碼)如何用定點數(shù)來表示非常大(e.g.2×10+33

)的數(shù)和非常小(e.g.9×10-28

)的數(shù)?2×10+33

=0.2×1034

9×10-28

=0.9×10-27引入比例因子1034和10-27

非常大和非常小的數(shù)浮點數(shù)的表示方法把一個數(shù)的有效數(shù)字和數(shù)的范圍在計算機(jī)的一個存儲單元中分別予以表示數(shù)的小數(shù)點位置隨比例因子的不同而在一定范圍內(nèi)自由浮動

一個十進(jìn)制數(shù)N可以寫成

N=10e×M一個R進(jìn)制數(shù)N可以寫成

N=Re×MM

尾數(shù)e

指數(shù)R 基數(shù)數(shù)的科學(xué)表達(dá)法階碼和尾數(shù)用定點小數(shù)表示,給出有效數(shù)字的位數(shù)決定了浮點數(shù)的表示精度表達(dá)指數(shù)部分用整數(shù)形式表示,指明小數(shù)點在數(shù)據(jù)中的位置決定浮點數(shù)的表示范圍早期計算機(jī)表達(dá)法32位單精度浮點數(shù)E:含階符的階碼,8位階碼采用移碼方式來表示正負(fù)指數(shù)S:1位符號位0表示正數(shù)1表示負(fù)數(shù)M:尾數(shù),23位小數(shù)表示,小數(shù)點放在尾數(shù)域最前面IEEE754標(biāo)準(zhǔn)64位雙精度浮點數(shù)E:含階符的階碼,11位S:1位符號位M:尾數(shù),52位小數(shù)IEEE754標(biāo)準(zhǔn)浮點數(shù)的規(guī)格化例:156.78 =15.678×101 =

1.5678×102 =0.15678×103=RE×M對于二進(jìn)制數(shù)1011.1101 =0.10111101×2+4 =10.111101×2+2 =1.0111101×2+3(規(guī)格化表示法)

=1.0111101×2+11(規(guī)格化表示法)

=RE×M那么,計算機(jī)中究竟采用哪種數(shù)據(jù)形式?多種數(shù)據(jù)形式二進(jìn)制數(shù)尾數(shù)最高有效位為1,隱藏,并且隱藏在小數(shù)點的左邊(即:1≤M<2)32位單精度浮點數(shù)規(guī)格化表示 x=(-1)s×(1.M)×2E-127 e=E-127(E=e+127)64位雙精度浮點數(shù)規(guī)格化表示 x=(-1)s×(1.M)×2E-1023 e=E-1023(E=e+1023)指數(shù)真值e用偏移碼形式表示為階碼E規(guī)格化表示原則IEEE754標(biāo)準(zhǔn)④X=(-1)s×1.M×2e

=+(1.011011)×23

=+1011.011=(11.375)10②指數(shù)e=階碼-127=10000010-01111111

=00000011=(3)10③包括隱藏位1的尾數(shù)1.M=1.011011例1:浮點機(jī)器數(shù)(41360000)16,求其十進(jìn)制數(shù)值①十六進(jìn)制數(shù)展開成二進(jìn)制數(shù)010000010011011000000000

0000

0000S階碼E(8位)尾數(shù)M(23位)例2:真值20.59375,求32位單精度浮點數(shù)①分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù)

20.59375=10100.10011②移動小數(shù)點,使其在第1、2位之間10100.10011=1.010010011×24e=4S=0E=4+127=131=10000011M=010010011③得到32位浮點數(shù)的二進(jìn)制存儲格式為:0

100000110100100110000000000

0000=(41A4C000)16

十進(jìn)制數(shù)串的表示方法1.字符串形式每個十進(jìn)制的數(shù)位或符號位都用一個字節(jié)存放+12-38-382.壓縮的十進(jìn)制數(shù)串形式一個字節(jié)存放兩個十進(jìn)制的數(shù)位,符號位占半個字節(jié)(例如用C表示正,D表示負(fù))+12123

C012D+123-12

每個數(shù)位可用BCD碼或ASCII碼BCD碼(BinaryCodedDecimal)二進(jìn)制編碼的十進(jìn)制數(shù)一個十進(jìn)制數(shù)位用4位二進(jìn)制編碼來表示壓縮BCD碼:一個字節(jié)表達(dá)兩位BCD碼非壓縮BCD碼:一個字節(jié)表達(dá)一位BCD碼(低4位表達(dá)數(shù)值,高4位常設(shè)置為0)BCD碼很直觀BCD碼:0100100101111000.000101001001十進(jìn)制真值: 4978.149BCD碼便于輸入輸出,表達(dá)數(shù)值準(zhǔn)確真值:一般書寫的數(shù)機(jī)器碼:機(jī)器中表示的數(shù),要解決在計算機(jī)內(nèi)部數(shù)的正、負(fù)符號和小數(shù)點運算問題。原碼反碼補碼移碼2.1.2數(shù)的機(jī)器碼表示定點整數(shù)的原碼表示定點整數(shù)的原碼形式為x0x1x2…xn

X

2n

>X≥0

[X]原=

2n-X=2n+|X|

0≥X>-2n使用8位二進(jìn)制:[105]10=[01101001]2X=+105,則[X]原=01101001X=-105,則[X]原=111010010使用原碼有兩種表達(dá)形式

[+0]原

=00000000

[-0]原

=10000000符號位

采用原碼表示法簡單易懂,但它的最大缺點是加法運算復(fù)雜。這是因為,當(dāng)兩數(shù)相加時,如果是同號則數(shù)值相加;如果是異號,則要進(jìn)行減法。而在進(jìn)行減法時還要比較絕對值的大小,然后大數(shù)減去小數(shù),最后還要給結(jié)果選擇符號。為了解決這些矛盾,人們找到了補碼表示法。對定點整數(shù),補碼表示的定義是[x]補=x

2n>x≥02n+1+x=2n+1-|x|

0≥x≥-2n思考:

計算機(jī)中,為何要對負(fù)數(shù)采用補碼形式?符號位可直接參加運算,無須特殊處理。由于加法運算與減法運算的規(guī)則不統(tǒng)一,采用負(fù)數(shù)的補碼表示后,減法運算可變換為加法運算,可少去減法運算的邏輯電路。采用補碼表示法,0的表示唯一(00000000)對定點整數(shù),反碼表示的定義為x

2n>x≥0(2n+1-1)+x

0≥x>-2n[x]反=原碼、反碼、補碼正數(shù)的原碼、反碼、補碼都相同負(fù)數(shù)的反碼為原碼除符號位外全部按位取反負(fù)數(shù)的補碼為其反碼加1例:x=+122,y=-122,求[x]原、[x]反、[x]補、[y]原、[y]反、[y]補定點整數(shù)的移碼移碼通常用于表示浮點數(shù)的階碼有符號整數(shù)采用移碼最高位表示符號:正數(shù)用1,負(fù)數(shù)用0移碼的傳統(tǒng)定義:

[X]移碼=2n+X

2n

>X≥-2n [105]移碼=10000000+01101001=11101001 [-105]移碼=10000000-01101001=00010111傳統(tǒng)定義與標(biāo)準(zhǔn)浮點數(shù)階碼的定義不同[例3]以定點整數(shù)為例,用數(shù)軸形式說明原碼、反碼、補碼表示范圍和可能的數(shù)碼組合情況。[例4]將十進(jìn)制真值(-127,-1,0,+1,+127)列表表示成二進(jìn)制數(shù)及原碼、反碼、補碼、移碼值。真值原碼反碼補碼移碼-128

1000000000000000-12711111111100000001000000100000001...............-110000001111111101111111101111111-010000000111111110000000010000000+000000000000000000000000010000000+100000001000000010000000110000001...............+12701111111011111110111111111111111例5

設(shè)機(jī)器字長16位,定點表示,尾數(shù)15位,數(shù)符1位,問:定點原碼整數(shù)表示時,最大正數(shù)是多少?最小負(fù)數(shù)是多少?

例5之解定點原碼整數(shù)表示最大正數(shù)值=(215-1)10=(+32767)10

最小負(fù)數(shù)值=-(215-1)10

=(-32767)10

0

11111111111

1111

1

11111111111

1111

[例6]假設(shè)由S,E,M三個域組成的一個32位二進(jìn)制字所表示的非零規(guī)格化浮點數(shù)x,真值表示為:x=(-1)s×(1.M)×2E-128問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是多少?(1)最大正數(shù)011111111111111111

111

111

111

11111

x=[1+(1-2-23)]×2127

(2)最小正數(shù)000000000000000000

000

000

000

00000

x=1.0×2-128(3)最小負(fù)數(shù)

111111111111111111

111

111

111

11111

x=-[1+(1-2-23)]×2127(4)最大負(fù)數(shù)100000000000000000

000

000

000

00000

x=-1.0×2-128

三種編碼的比較相同點:1、三種編碼(原碼、反碼、補碼)的最高位都是符號位。2、當(dāng)真值為正時,三種編碼的符號位都用0表示,數(shù)值部分與真值相同。即它們的表示方法是相同的。3、當(dāng)真值為負(fù)時,三種編碼的符號位都用1表示,但數(shù)值部分的表示各不相同,數(shù)值部分存在這樣的關(guān)系:補碼是原碼的“求反加1”(整數(shù));反碼是原碼的“每位求反”。4、它們所能表示的數(shù)據(jù)范圍基本一樣,-2n<X<2n(整數(shù)),補碼多表示一個數(shù)-2n(整數(shù))。區(qū)別:在于對負(fù)數(shù)的表示方法有所不同。2.1.3字符與字符串的表示方法1.字符的表示方法目前國際上普遍采用的字符系統(tǒng)是七單位的ASCII碼(美國國家信息交換標(biāo)準(zhǔn)字符碼),它包括10個十進(jìn)制數(shù)碼,26個英文字母和一定數(shù)量的專用符號,如$,%,+,=等,共128個元素,因此二進(jìn)制編碼需7位,高位加一位0,共8位一個字節(jié)。

ASCII碼表示的符號基本的ASCII字符集共有128個字符95個可打印字符(常用字母、數(shù)字、標(biāo)點符號等)33個控制字符

ASCII碼編碼:

每個字節(jié)的最高位補0特殊字符的ASCII碼空格(32)

A(65)

a(97)

0(48)表2.1ASCII字符編碼表000000010010001101000101011001110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2"2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\1|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL0-3位4-7位字符串的表示方法字符串是指連續(xù)的一串字符,通常占用主存中連續(xù)的多個字節(jié),每個字節(jié)存一個字符

IFA>BTHENREAD(C)20H42H3EH41H54H20H46H49H存儲器地址低地址高地址從低位字節(jié)向高位字節(jié)的順序存放20H42H3EH41H54H20H46H49H存儲器地址高地址低地址從高位字節(jié)向低位字節(jié)的順序存放漢字的輸入編碼數(shù)字編碼國標(biāo)區(qū)位碼,用數(shù)字串代表一個漢字輸入

拼音碼以漢字拼音為基礎(chǔ)的輸入方法字形編碼用漢字的形狀(筆劃)來進(jìn)行的編碼例如五筆字形漢字內(nèi)碼漢字內(nèi)碼是用于漢字信息的存儲、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個字節(jié)表示漢字內(nèi)碼有多種方案,常以國標(biāo)碼為基礎(chǔ)的編碼例如,將國標(biāo)碼兩字節(jié)的最高位置1后形成漢字“啊”的內(nèi)碼

B0A1H(1011000010100001)字模碼漢字的字模碼為:16位×16位=32字節(jié)漢字字模點陣及編碼字符形狀的描述方法:點陣描述漢字點陣類型點陣占用字節(jié)數(shù)簡易型16

1632普及型2424提高型3232精密型4848漢字的表示方法漢字的輸入編碼、交換碼、漢字內(nèi)碼、字模碼是計算機(jī)中用于輸入、內(nèi)部處理、交換、輸出四種不同用途的編碼,不要混為一談

顯示輸出打印輸出機(jī)內(nèi)碼向字形碼轉(zhuǎn)換機(jī)內(nèi)碼輸入碼向機(jī)內(nèi)碼轉(zhuǎn)換字符代碼化(輸入)校驗碼校驗碼:能夠發(fā)現(xiàn)甚至糾正信息傳輸或存儲過程中出現(xiàn)錯誤的編碼檢錯碼:僅能檢測出錯誤的編碼糾錯碼:能夠發(fā)現(xiàn)并糾正錯誤的編碼最簡單且應(yīng)用廣泛的檢錯碼:奇偶校驗碼奇校驗:使包括校驗位在內(nèi)的數(shù)據(jù)中為“1”的個數(shù)恒為奇數(shù)偶校驗:使包括校驗位在內(nèi)的數(shù)據(jù)中為“1”的個數(shù)恒為偶數(shù)只能檢測出奇數(shù)個位出錯的情況,不能糾錯例7:用奇校驗和偶校驗進(jìn)行編碼數(shù)據(jù)1010101001010100000000000111111111111111偶校驗碼101010100010101001000000000011111111111111110奇校驗碼101010101010101000000000001011111110111111111運算方法和運算器2.2定點加法、減法運算2.3定點乘法運算2.4定點除法運算2.5定點運算器的組成2.6浮點運算方法和浮點運算器2.2.1補碼加法

負(fù)數(shù)用補碼表示后,可以和正數(shù)一樣來處理。這樣,運算器里只需要一個加法器就可以了,不必為了負(fù)數(shù)的加法運算,再配一個減法器。補碼加法的公式是

[x]補+[y]補=[x+y]補例8:x=1001,y=0101,求x+y[x]

補=01001,[y]

補=00101

[x]

01001+[y]

00101

[x+y]

01110

所以x+y=+1110

例9:x=+1011,y=-0101,求x+y[x]

補=01011,[y]

補=11011

[x]

01011+[y]

11011

[x+y]

100110

所以x+y=001102.2.2補碼減法

負(fù)數(shù)的減法運算也要設(shè)法化為加法來做,其所以使用這種方法而不使用直接減法,是因為它可以和常規(guī)的加法運算使用同一加法器電路,從而簡化了計算機(jī)的設(shè)計。數(shù)用補碼表示時,減法運算的公式為[x-y]補=[x]補-[y]補=[x]補+[-y]補從[y]補求[-y]補的法則是:對[y]補包括符號位“求反且最末位加1”,即可得到[-y]補。寫成運算表達(dá)式,則為[-y]補=﹁[y]補+2-n

其中符號﹁表示對[y]補作包括符號位在內(nèi)的求反操作,2-n表示最末位的1[x1]補=10010[-x1]補=﹁[x1]補+2-4

=01101+00001=01110[x2]補=01101[-x2]補=﹁[x2]補+2-4

=10010+00001=10011

例10:

已知x1=-1110,x2=+1101

求:[x1]補,[-x1]補,[x2]補,[-x2]補例11:x=+1101,y=+0110,求x-y[x]補=01101,[y]補=00110[-y]補=11010

[x]

補01101

+[-y]

11010

[x-y]

100111

所以x-y=+01112.2.3

溢出概念與檢驗方法兩個正數(shù)相加,結(jié)果為負(fù)(即:大于機(jī)器所能表示的最大正數(shù)),稱為上溢。兩個負(fù)數(shù)相加,結(jié)果為正(即:小于機(jī)器所能表示的最小負(fù)數(shù)),稱為下溢。運算出現(xiàn)溢出,結(jié)果就是錯誤的[例12]

x=+1011,y=+1001,求x+y。[解:]

[x]補=01011,[y]補=01001[x]補

01011+[y]補

01001[x+y]補

10100

兩正數(shù)相加,結(jié)果為負(fù),顯然錯誤。--運算中出現(xiàn)了“上溢”有進(jìn)位無進(jìn)位[又例]

x=+1011,y=+0010,求x+y。[解:]

[x]補=01011,[y]補=00010[x]補

01011+[y]補

00010[x+y]補

01101兩正數(shù)相加,結(jié)果無溢出無進(jìn)位無進(jìn)位[例13]

x=-1101,y=-1011,求x+y。[解:]

[x]補=10011[y]補=10101

[x]補

10011

+[y]補

10101[x+y]補

01000兩負(fù)數(shù)相加,結(jié)果為正,顯然錯誤。--運算中出現(xiàn)了“下溢”無進(jìn)位有進(jìn)位[又例]

x=-1101,y=-0010,求x+y。[解:]

[x]補=10011[y]補=11110

[x]補

10011

+[y]補

11110[x+y]補

10001兩負(fù)數(shù)相加,結(jié)果為負(fù),無溢出。有進(jìn)位有進(jìn)位進(jìn)一步結(jié)論:

當(dāng)最高有效位產(chǎn)生進(jìn)位而符號位無進(jìn)位時,產(chǎn)生上溢;當(dāng)最高有效位無進(jìn)位而符號位有進(jìn)位時,產(chǎn)生下溢。產(chǎn)生“溢出”的原因:分析可知,當(dāng)最高有效數(shù)值位的運算進(jìn)位與符號位的運算進(jìn)位不一致時,將產(chǎn)生運算“溢出”“溢出”檢測方法:

為了判斷“溢出”是否發(fā)生,可采用兩種檢測的方法。第一種方法:采用雙符號位法,稱為“變形補碼”或“模4補碼”,可使模2補碼所能表示的數(shù)的范圍擴(kuò)大一倍第二種溢出檢測方法:采用“單符號位法”。當(dāng)最高有效位產(chǎn)生進(jìn)位而符號位無進(jìn)位時,產(chǎn)生上溢;當(dāng)最高有效位無進(jìn)位而符號位有進(jìn)位時,產(chǎn)生下溢。故:溢出邏輯表達(dá)式為:

V=Cf⊕Co其中:

Cf為符號位產(chǎn)生的進(jìn)位,Co為最高有效位產(chǎn)生的進(jìn)位。(顯然:此邏輯關(guān)系可用異或門方便地實現(xiàn))[例14]

x=+01100,y=+01000,求x+y。[解:]

[x]補=001100,

[y]補=001000[x]補001100

+[y]補001000

010100兩個符號位出現(xiàn)“01”,表示已溢出,即結(jié)果大于+2n。[例15]x=-01100,y=-01000,求x+y。[解:]

[x]補=110100,

[y]補=111000[x]補110100

+[y]補111000

101100兩個符號位出現(xiàn)“10”,表示已溢出,即結(jié)果小于-2n+1

。2.2.4基本的二進(jìn)制加法/減法器在計算機(jī)中完成兩個二進(jìn)制數(shù)相加的基本加法器有半加器和全加器。半加器在完成兩數(shù)相加時,不需要考慮低位進(jìn)位。全加器用來完成兩個二進(jìn)制數(shù)相加,并且同時考慮低位的進(jìn)位,即全加器完成三個一位數(shù)相加的功能。設(shè):

Ai表示被加數(shù)的第i位

Bi表示加數(shù)的第i位

Ci為第i-1位向第i位產(chǎn)生的進(jìn)位

Ci+1為第i位向第i+1位產(chǎn)生的進(jìn)位

Si為第i位產(chǎn)生的和則全加器以Ai、Bi、Ci為輸入,以Ci+1、Si為輸出構(gòu)成一個邏輯圖。2.2.4基本的二進(jìn)制加法/減法器全加器邏輯圖CiAiBiSiCi+1FACiAiBiSiCi+1輸出輸入0110100001101000100010100010111010111111表2-2全加器真值表2.2.4基本的二進(jìn)制加法/減法器全加器的表達(dá)式為:

Si=AiBi

Ci

Ci+1=AiBi+BiCi

+AiCi一位全加器內(nèi)部邏輯圖

BCSiCi+1ABCAAiBiCi2.2.4基本的二進(jìn)制加法/減法器利用全加器可以實現(xiàn)兩數(shù)的和或差1、串行加法:從低位開始,每步只完成一位運算的加法。串行加法器只需要一個全加器和一個進(jìn)位觸發(fā)器計算兩個n位數(shù)之和,需要n+1步(1位符號位),或n+2步(2位符號位)運算。高位運算只有等低位運算完成后才能進(jìn)行,速度較慢2、并行加法器:可在同一時刻完成n位數(shù)的運算。運算速度比串行進(jìn)位加法器高很多,這是用足夠多的硬件設(shè)備換來的2.2.4基本的二進(jìn)制加法/減法器2.3.1原碼乘法1.人工算法與機(jī)器算法的同異性在定點計算機(jī)中,兩個原碼表示的數(shù)相乘的運算規(guī)則是:乘積的符號位由兩數(shù)的符號位按異或運算得到,而乘積的數(shù)值部分則是兩個正數(shù)相乘之積。設(shè)n位被乘數(shù)和乘數(shù)用定點整數(shù)表示被乘數(shù)[x]原=xf

xn-1…x1x0乘數(shù)[y]原=yf

yn-1…y1y0則乘積[z]原=(xf⊕yf)+(xn-1…x1x0)(yn-1…y1y0)設(shè)x=1101,y=1011.讓我們先用習(xí)慣方法求其乘積,其過程如下:

人們習(xí)慣的算法對機(jī)器并不完全適用。原因之一,機(jī)器通常只有n位長,兩個n位數(shù)相乘,乘積可能為2n位。原因之二,只有兩個操作數(shù)相加的加法器難以勝任將各n位積一次相加起來的運算。自從大規(guī)模集成電路問世以來,出現(xiàn)了各種形式的流水式陣列乘法器,它們屬于并行乘法器。2.不帶符號的陣列乘法器設(shè)有兩個不帶符號的二進(jìn)制整數(shù):A=am-1…a1a0B=bn-1…b1b0它們的數(shù)值分別為a和b,即在二進(jìn)制乘法中,被乘數(shù)A與乘數(shù)B相乘,產(chǎn)生m+n位乘積P:P=pm+n-1…p1p0實現(xiàn)這個乘法過程所需要的操作和人們的習(xí)慣方法非常類似:上述過程說明了在m位乘n位不帶符號整數(shù)的陣列乘法中,“加法—移位”操作的被加數(shù)矩陣。每一個部分乘積項(位積)aibj叫做一個被加數(shù)。這m×n個被加數(shù)可以用m×n個“與”門并行地產(chǎn)生。顯然,設(shè)計高速并行乘法器的基本問題,就在于縮短被加數(shù)矩陣中每列所包含的1的加法時間。2、不帶符號位的陣列乘法器3.帶符號的陣列乘法器對2求補器電路令A(yù)=an…a1a0是給定的(n+1)位帶符號的數(shù),要求確定它的補碼形式。進(jìn)行求補的方法就是從數(shù)的最右端a0開始,由右向左,直到找出第一個“1”,例如ai=1,0≤i≤n。這樣,ai以左的每一個輸入位都求反,即1變0,0變1。3、帶符號位的陣列乘法器E=0時,輸入和輸出相等E=1時,則從數(shù)最右端往左邊掃描,直到第一個1的時候,該位和右邊各位保持不變0⊕A=A,左邊各數(shù)值位按位取反1⊕A=乛A可以用符號作為E的輸入

通常,把包括這些求補級的乘法器又稱為符號求補的陣列乘法器。在這種邏輯結(jié)構(gòu)中,共使用三個求補器。其中兩個算前求補器的作用是:將兩個操作數(shù)A和B在被不帶符號的乘法陣列(核心部件)相乘以前,先變成正整數(shù)。而算后求補器的作用則是:當(dāng)兩個輸入操作數(shù)的符號不一致時,把運算結(jié)果變成帶符號的數(shù)。3、帶符號的陣列乘法器原碼/補碼[例17]設(shè)x=+15,y=-13,用帶求補器的原碼陣列乘法器求出乘積x·y=?[解:]設(shè)最高位為符號位,則輸入數(shù)據(jù)為

[x]原=01111

[y]原=11101符號位單獨考慮,算前求補級后|x|=1111,|y|=1101

算后經(jīng)求補級輸出并加上乘積符號位1,則原碼乘積值111000011。換算成二進(jìn)制數(shù)真值是x·y=(-11000011)2=(-195)10十進(jìn)制數(shù)驗證:x×y=15×(-13)=-195相等。[例18]設(shè)x=+15,y=-13,用帶求補器的補碼陣列乘法器求出乘積x·y=?[解:]設(shè)最高位為符號位,則輸入數(shù)據(jù)用補碼表示為

[x]補=01111

[y]補=10011符號位單獨運算,x0⊕y0=0+1=1尾數(shù)部分算前求補器輸出為:|x|=1111,|y|=1101|x||y|=11000011算后求補器輸出為00111101,加符號位1,得

[x·y]補=100111101補碼二進(jìn)制數(shù)真值是x·y=-1×28+1×25+1×24+1×23+1×22+1×20=(-195)10

十進(jìn)制數(shù)驗證:

x×y=(+15)×(-13)=-195相等。2.4定點除法運算2.4.1原碼除法算法原理主要內(nèi)容:原碼一位除法兩個原碼表示的數(shù)相除時,商的符號由兩數(shù)的符號“異或”求得,即同號時為正,異號為負(fù)。商的數(shù)值可由兩數(shù)的絕對值相除求得。2.4.1原碼一位除法手算:假設(shè)被除數(shù)X=0.1001,除數(shù)Y=0.1011,計算X/Y0.1101 商Q0.1011

/----------------------------------------------

0.10010 X(R0)-0.01011 2-1Y,除數(shù)右移一位,減

----------------------------------0.001110 R1-

0.001011 2-2Y,除數(shù)右移一位,減

----------------------------------0.0000110 R20.0001011 2-3Y,除數(shù)右移一位,不減

----------------------------------0.00001100 R3-

0.00001011 2-4Y,除數(shù)右移一位,減

----------------------------------0.00000001 R4

得商X/Y=0.1101,余數(shù)=R4=0.000000012.4.1原碼一位除法筆算特點:(1)每次都是由心算來比較余數(shù)和除數(shù)的大小,余數(shù)大時,商1;余數(shù)小時,商0。第一次比較時,余數(shù)就是被除數(shù)。(2)每做一次減法,總是保持余數(shù)不動,而除數(shù)向右移一位。(3)商的符號單獨處理。為適應(yīng)機(jī)器運算,需要進(jìn)行改進(jìn):(1)用補碼加代替直接減[例23]x=0.101001,y=0.111,求x÷y。采用補碼加減交替法完成除法運算解:[x]補=0.101001,[y]補=0.111,[-y]補=1.001

0.101001

;被除數(shù)

+[-y]補

1.001

;第一步減除數(shù)y

————————————————————————

1.110001

<0q4=0;余數(shù)為負(fù),商0

+[y]補→0.0111

;除數(shù)右移1位加

————————————————————————

0.001101

>0q3=1;余數(shù)為正,商1

+[-y]補→1.11001

;除數(shù)右移2位減

————————————————————————

1.111111

<0q2=0;余數(shù)為負(fù),商0

+[y]補→0.000111

;除數(shù)右移3位加

————————————————————————

0.000110

>0q1=1;余數(shù)為正,商1

商q=q4.q3q2q1=0.101,余數(shù)r=(0.00r6r5r4r3)=0.000110第一行:P=1減法運算;不恢復(fù)余數(shù)算法商Q=0.q3q2q1余數(shù)R=0.00r6r5r4r3

可控的加法/減法單元CAS單元P=0,作加法運算P=1,作減法運算2.5

定點運算器的組成運算器是數(shù)據(jù)的加工處理部件,是CPU的重要組成部分;最基本的結(jié)構(gòu)中包含:算術(shù)/邏輯運算單元、數(shù)據(jù)緩存寄存器、通用寄存器、多路轉(zhuǎn)換器和數(shù)據(jù)總線等邏輯構(gòu)件。2.5.1

邏輯運算計算機(jī)中除了進(jìn)行加、減、乘、除等基本算術(shù)運算外,還可對兩個或一個邏輯數(shù)進(jìn)行邏輯運算。所謂邏輯數(shù)是指不帶符號的二進(jìn)制數(shù)。利用邏輯運算可以進(jìn)行兩個數(shù)的比較,或者從某個數(shù)中選取某幾位等操作。主要有邏輯非(反)、邏輯加(或)、邏輯乘(與)、邏輯異或四種基本運算。2.5.2多功能算術(shù)/邏輯運算單元全加器的表達(dá)式為:

Si=AiBi

Ci

Ci+1=AiBi+BiCi

+AiCi一位全加器內(nèi)部邏輯圖

BCSiCi+1ABCAAiBiCi圖2-2

行波進(jìn)位補碼加法/減法器FAFAFAFAFAS0S1Sn-1Bs1As1Bs2As2Cs2Cs1Ss2Ss1Bn-1An-1Cn-1Cn-2B1A1B0A0C1C2C0溢出M方式控制M=1減M=0加該行波進(jìn)位加法器存在兩個主要問題:1、由于串行進(jìn)位,它的運算時間很長;2、只能完成加法和減法運算,不能實現(xiàn)邏輯操作。故本節(jié)介紹的多功能算術(shù)/邏輯運算單元ALU,它不僅能實現(xiàn)多種算術(shù)運算和邏輯運算功能,還具有先行進(jìn)位邏輯,從而實現(xiàn)高速運算。2.5.2多功能算術(shù)/邏輯運算單元ALU多功能算術(shù)/邏輯運算單元ALU,本節(jié)介紹的是74LS181的基本邏輯結(jié)構(gòu)是先行進(jìn)位加法器,通過改變其輸入端Ai和Bi來實現(xiàn)算術(shù)運算和邏輯運算功能。怎樣實現(xiàn)呢?基本思想:一位全加器FA的邏輯表達(dá)式:為了實現(xiàn)多種算術(shù)邏輯運算,可將Ai和Bi輸入一個函數(shù)發(fā)生器(進(jìn)位傳遞函數(shù)和進(jìn)位產(chǎn)生函數(shù))得到輸出Xi和Yi,作為一位全加器的輸入(見下頁圖)。加法器FA、減法單元CAS和一位ALU邏輯圖一位ALU邏輯圖ALU的邏輯圖與邏輯表達(dá)式S0S1

Yi

S2S3

Xi

0

0

0

1

1

0

110

0

0

1

1

0

1

11

XiYi

與控制參數(shù)和輸入量的關(guān)系構(gòu)造如下真值表2.5.2多功能算術(shù)/邏輯運算單元ALU2.5.2多功能算術(shù)/邏輯運算單元ALUALU的某一位邏輯表達(dá)式見下:例如:S3S2S0S1=0000代入:則可以處理16種算術(shù)\邏輯運算,每種運算只針對1位二進(jìn)制編碼。2.5.2多功能算術(shù)/邏輯運算單元ALU2.5.2多功能算術(shù)/邏輯運算單元ALU4位ALU

問題1:片內(nèi)是串行進(jìn)位還是并行進(jìn)位?2.5.2多功能算術(shù)/邏輯運算單元ALU設(shè)計16位ALUCn+x=G0+P0CnCn+y=G1+P1Cn+x

Cn+x=G2+P2Cn+yCn+4=G3+P3Cn+z片內(nèi)先行進(jìn)位,片間串行進(jìn)位總線是計算機(jī)內(nèi)各部件之間傳送信息的公用的一組連線。由于計算機(jī)內(nèi)部的主要工作過程是信息傳送和加工的過程,因此在機(jī)器內(nèi)部各部件之間的數(shù)據(jù)傳送非常頻繁。為了減少內(nèi)部的傳送線并便于控制,通常將一些寄存器之間數(shù)據(jù)傳送的通路加以歸并,組成總線結(jié)構(gòu),使不同來源的信息在此傳輸線上分時傳送。2.5.3

內(nèi)部總線內(nèi)部總線和外部總線根據(jù)總線所在位置,總線分為內(nèi)部總線和外部總線兩類。內(nèi)部總線是指CPU內(nèi)各部件的連線外部總線是指系統(tǒng)總線,即CPU與存儲器、I/O系統(tǒng)之間的連線。單向總線和雙向總線按總線的邏輯結(jié)構(gòu)來說,總線可分為單向傳送總線和雙向傳送總線。所謂單向總線,就是信息只能向一個方向傳送所謂雙向總線,就是信息可以分兩個方向傳送,既可以發(fā)送數(shù)據(jù),也可以接收數(shù)據(jù)。2.5.4

定點運算器的基本結(jié)構(gòu)

運算器包括ALU\陣列乘除器\寄存器\多路開關(guān)\三態(tài)緩沖器\數(shù)據(jù)總線等邏輯部件。運算器的設(shè)計,主要是圍繞ALU和寄存器同數(shù)據(jù)總線之間如何傳送操作數(shù)和運算結(jié)果進(jìn)行的。在決定方案時,需要考慮數(shù)據(jù)傳送的方便性和操作速度,在微型機(jī)和單片機(jī)中還要考慮在硅片上制作總線的工藝。2.5.4定點運算器的基本結(jié)構(gòu)1、單總線結(jié)構(gòu)的運算器2.5.4定點運算器的基本結(jié)構(gòu)2、雙總線結(jié)構(gòu)的運算器2.5.4定點運算器的基本結(jié)構(gòu)3、三總線結(jié)構(gòu)的運算器2.6浮點運算方法和浮點運算器2.6.1浮點加法、減法運算2.6.2浮點乘法、除法運算2.6.3浮點運算流水線2.6.4浮點運算器實例2.6.1

浮點加法、減法運算設(shè)有兩個浮點數(shù)x和y,它們分別為:x=2Ex·Mxy=2Ey·MyEx和Ey分別為數(shù)x和y的階碼,Mx和My為數(shù)x和y的尾數(shù)。

兩浮點數(shù)進(jìn)行加法和減法的運算規(guī)則是:x±y=(Mx2Ex-Ey±My)·

2Ey,Ex≤

Ey浮點加減運算的操作過程分為四步:

1.0操作數(shù)的檢查;

2.比較階碼大小并完成對階;

3.尾數(shù)進(jìn)行加或減運算;

4.結(jié)果規(guī)格化并進(jìn)行舍入處理。(1)0操作數(shù)檢查浮點加減運算過程比定點運算過程復(fù)雜如果判知兩個操作數(shù)x或y中有一個數(shù)為0,即可得知運算結(jié)果而沒有必要再進(jìn)行后續(xù)的一系列操作以節(jié)省運算時間。0操作數(shù)檢查步驟則用來完成這一功能。(2)比較階碼大小并完成對階對階:小階向大階看齊對階的第一步是求階差:△E=Ex-Ey

若△E=0,表示兩數(shù)階碼相等,即Ex=Ey,不需要對階若△E>0,表明Ex>Ey

若△E<0,表明Ex<Ey

對于Ex≠Ey的這種情況,需要對階。采用“小階向大階看齊”的方法,即小階的尾數(shù)右移△E位,小階的階碼增加△E與大階相等。(3)尾數(shù)求和運算對階結(jié)束后,即可進(jìn)行尾數(shù)的求和運算。不論加法運算還是減法運算,都按加法進(jìn)行操作,其方法與定點加減法運算完全一樣。(4)結(jié)果規(guī)格化在浮點加減運算時,尾數(shù)求和的結(jié)果也可以得到01.ф…ф或10.ф…ф,即兩符號位不等,這在定點加減法運算中稱為溢出,是不允許的。但在浮點運算中,它表明尾數(shù)求和結(jié)果的絕對值大于1,向左破壞了規(guī)格化。此時將運算結(jié)果右移以實現(xiàn)規(guī)格化表示,稱為向右規(guī)格化,簡稱右規(guī)。規(guī)則是:尾數(shù)右移1位,階碼加1。尾數(shù)不是1.M形式時,需向左規(guī)格化,簡稱左規(guī)由此可知補碼規(guī)格化的條件是:(A)若和或差的尾數(shù)兩符號位相等且與尾數(shù)第一位相等,則需向左規(guī)格化。即將和或差的尾數(shù)左移,每移一位,和或差的階碼減一,直至尾數(shù)第一位與尾符不等時為止。(B)若和或差的尾數(shù)兩符號位不等,即01.xx…x或10.xx…x形式,表示尾數(shù)求和(差)結(jié)果絕對值大于1,向左破壞了規(guī)格化。此時應(yīng)該將和(差)的尾數(shù)右移1位,階碼加1,即進(jìn)行向右規(guī)格化。

補碼規(guī)格化的浮點數(shù)應(yīng)有兩種形式:

00.1xx…x11.0xx…x(5)舍入處理在對階或向右規(guī)格化時,尾數(shù)要向右移位,被右移的尾數(shù)的低位部分會被丟掉,即:舍入處理。舍入處理會造成一定誤差。簡單的舍入方法有兩種:一種是“0舍1入”法,即如果右移時被丟掉數(shù)位的最高位為0則舍去,1則將尾數(shù)的末位加“1”。另一種是“恒置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末尾恒置"1"。0.100001→0.10000.100001→0.1001(6)浮點數(shù)的溢出階碼上溢:機(jī)器浮點數(shù)值大于最大正數(shù)A值(正上溢),或小于最小負(fù)數(shù)B值(負(fù)上溢) 認(rèn)為是+∞或-∞(階碼E為全1)階碼下溢:機(jī)器浮點數(shù)值小于最小正數(shù)a值(正下溢),或大于最大負(fù)數(shù)b值(負(fù)下溢) 通??醋鳛闄C(jī)器零(階碼E為0)例x=0.1101×1001,y=-(0.1010)×1011,求

x+y=?解:(1)對階: 假定兩數(shù)在計算機(jī)中采用補碼制,則

[x]補=0001,00.1101Ex=0001[y]補=0011,11.0110Ey=0011

求階差:△E=Ex-Ey=0001+1101=1110,即△E=-2,表示x的階碼Ex小于y的階碼Ey,階差為-2,所以應(yīng)使x的尾數(shù)右移2位,階碼加2,則[x]補=0011,00.0011,這時△E=0,對階完畢。(2)尾數(shù)求和(差)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論