版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2.5.1邏輯運(yùn)算計(jì)算機(jī)中除了進(jìn)行加、減、乘、除等基本算術(shù)運(yùn)算外,還可對(duì)兩個(gè)或一個(gè)邏輯數(shù)進(jìn)行邏輯運(yùn)算。所謂邏輯數(shù)是指不帶符號(hào)的二進(jìn)制數(shù)。利用邏輯運(yùn)算可以進(jìn)行兩個(gè)數(shù)的比較,或者從某個(gè)數(shù)中選取某幾位等操作。計(jì)算機(jī)中的邏輯運(yùn)算,主要是指邏輯非、邏輯加、邏輯乘、邏輯異四種基本運(yùn)算。2.5.1邏輯運(yùn)算計(jì)算機(jī)中除了進(jìn)行加、減、乘、除等基本算術(shù)12.5.1邏輯運(yùn)算(續(xù)1)邏輯非也稱(chēng)求反。對(duì)某數(shù)進(jìn)行邏輯非運(yùn)算,就是按位求反,常用變量上方加一橫來(lái)表示。
設(shè)一個(gè)數(shù)x表示成:x=
x0x1x2…xn對(duì)x求邏輯非,則有:
x=z=z0z1z2…znzi=xi(i=0,1,2,…n)
1.邏輯非運(yùn)算
ˉˉ2.5.1邏輯運(yùn)算(續(xù)1)邏輯非也稱(chēng)求反。對(duì)某數(shù)進(jìn)行邏輯非22.5.1邏輯運(yùn)算(續(xù)2)例21:
x1=01001011,x2=11110000求x1,x2
解:x1
=10110100
x2
=00001111ˉˉˉˉ2.5.1邏輯運(yùn)算(續(xù)2)例21:ˉˉˉˉ3第2章運(yùn)算方法和運(yùn)算器課件42.5.1邏輯運(yùn)算(續(xù)4)例22:x=10100001,y=10011011,求x∨y。
解:
10100001x
∨10011011y
10111011z
即x∨y=101110112.5.1邏輯運(yùn)算(續(xù)4)例22:x=10100001,y52.5.1邏輯運(yùn)算(續(xù)5)
對(duì)兩數(shù)進(jìn)行邏輯乘,就是按位求它們的“與”,所以邏輯乘又稱(chēng)“邏輯與”,常用記號(hào)“∧”或“·”來(lái)表示。設(shè)有兩數(shù)x和y,它們表示為
x=
x0x1x2…xny=
y0y1y2…yn若x∧y=z=z0z1z2…zn則
zi=xi∧yi(i=0,1,2,…,n)
3.邏輯乘運(yùn)算
2.5.1邏輯運(yùn)算(續(xù)5)對(duì)兩數(shù)進(jìn)行邏輯乘,就是按位求它62.5.1邏輯運(yùn)算(續(xù)6)例23:x=10111001,y=11110011,求x∧y。解:
10111001x
∧11110011y
10110001z即x∧y=101100012.5.1邏輯運(yùn)算(續(xù)6)例23:x=10111001,y72.5.1邏輯運(yùn)算(續(xù)7)對(duì)兩數(shù)進(jìn)行異就是按位求它們的模2和,所以邏輯異又稱(chēng)“按位加”,常用記號(hào)“⊕”表示。設(shè)有兩數(shù)x和y:x=
x0x1x2…xny=
y0y1y2…yn若x和y的邏輯異為z:
x⊕y=z=z0z1z2…zn則
zi=xi⊕yi(i=0,1,2,…,n)
4.邏輯異運(yùn)算
2.5.1邏輯運(yùn)算(續(xù)7)對(duì)兩數(shù)進(jìn)行異就是按位求它們的模282.5.1邏輯運(yùn)算(續(xù)8)例23:x=10101011,y=11001100,求x⊕y。解:
10101011x
⊕11001100y
01100111z即x⊕y=01100111
2.5.1邏輯運(yùn)算(續(xù)8)例23:x=10101011,y92.5.1邏輯運(yùn)算(續(xù)9)事實(shí)上,邏輯加還可以通過(guò)邏輯乘和邏輯非來(lái)實(shí)現(xiàn):
zi=xi∨yi
=xi∧yi
同樣,邏輯乘也可以用邏輯加和邏輯非來(lái)實(shí)現(xiàn):
zi=xi∧yi=xi∨yi
2.5.1邏輯運(yùn)算(續(xù)9)事實(shí)上,邏輯加還可以通過(guò)102.5.2
多功能算術(shù)/邏輯運(yùn)算單元(ALU)
由一位全加器(FA)構(gòu)成的行波進(jìn)位加法器,它可以實(shí)現(xiàn)補(bǔ)碼數(shù)的加法運(yùn)算和減法運(yùn)算。這種加法/減法器存在兩個(gè)問(wèn)題:一是由于串行進(jìn)位,它的運(yùn)算時(shí)間很長(zhǎng)。假如加法器由n位全加器構(gòu)成,每一位的進(jìn)位延遲時(shí)間為20ns,那么最壞情況下,進(jìn)位信號(hào)從最低位傳遞到最高位而最后輸出穩(wěn)定,至少需要n*20ns,這在高速計(jì)算中顯然是不利的。二是就行波進(jìn)位加法器本身來(lái)說(shuō),它只能完成加法和減法兩種操作而不能完成邏輯操作。本節(jié)我們介紹的多功能算術(shù)/邏輯運(yùn)算單元(ALU)不僅具有多種算術(shù)運(yùn)算和邏輯運(yùn)算的功能,而且具有先行進(jìn)位邏輯,從而能實(shí)現(xiàn)高速運(yùn)算。2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)由一位全加112.5.2
多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)1)一位全加器(FA)的邏輯表達(dá)式為:
Fi=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi
1.基本思想2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)1)一位全加12將Ai和Bi先組合成由控制參數(shù)S0,S1,S2,S3控制的組合函數(shù)Xi和Yi,然后再將Xi,Yi和下一位進(jìn)位數(shù)通過(guò)全加器進(jìn)行全加。這樣,不同的控制參數(shù)可以得到不同的組合函數(shù),因而能夠?qū)崿F(xiàn)多種算術(shù)運(yùn)算和邏輯運(yùn)算。因此,一位算術(shù)/邏輯運(yùn)算單元的邏輯表達(dá)式為:
Fi=Xi⊕Yi⊕Cn+iCn+i+1=XiYi+YiCn+i+Cn+iXi將Ai和Bi先組合成由控制參數(shù)S0,S1,S13圖2.10ALU的邏輯結(jié)構(gòu)原理框圖圖2.10ALU的邏輯結(jié)構(gòu)原理框圖142.5.2
多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)2
上式中進(jìn)位下標(biāo)用n+i代替原來(lái)全加器中的i,i代表集成在一片電路上的ALU的二進(jìn)制位數(shù)。對(duì)于4位一片的ALU,i=0,1,2,3。n代表若干片ALU組成更大字長(zhǎng)的運(yùn)算器時(shí)每片電路的最低位計(jì)數(shù),例如當(dāng)4片組成16位字長(zhǎng)的運(yùn)算器時(shí),n=0,4,8,12。2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)215
控制參數(shù)S0,S1,S2,S3分別控制輸入Ai和Bi,產(chǎn)生Y和X的函數(shù)。其中Yi是受S0,S1控制的Ai和Bi的組合函數(shù),而Xi是受S2,S3控制的Ai和Bi組合函數(shù),其函數(shù)關(guān)系如表2.4所示。2.邏輯表達(dá)式表2.4與控制參數(shù)和輸入量的關(guān)系A(chǔ)i11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1控制參數(shù)S0,S1,S2,S3分別控制輸入A16根據(jù)上面所列的函數(shù)關(guān)系,即可列出Xi和Yi的邏輯表達(dá)式:
Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai
Yi=S0S1Ai+S0S1AiBi+S0S1AiBi根據(jù)上面所列的函數(shù)關(guān)系,化簡(jiǎn)Yi的邏輯表達(dá)式得:Yi=S0S1Ai+S0S1AiBi+S0S1AiBi=Ai(S0S1+S0S1Bi+S0S1Bi)=Ai(S0S1(Bi+Bi)+S0S1Bi+S0S1Bi)=Ai(S0Bi+S1Bi)=Ai+(S0+Bi)(S1+Bi)=Ai+(S0S1+S0Bi+S1Bi)=Ai+S0Bi+S1Bi根據(jù)上面所列的函數(shù)關(guān)系,即可列出Xi和Yi的邏輯表達(dá)式:根據(jù)17根據(jù)上面所列的函數(shù)關(guān)系,化簡(jiǎn)Xi的邏輯表達(dá)式得:
Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai
=S2S3+S2Ai+S2Bi+S3Ai+S3Bi+S2S3Ai=S2S3+S2Ai+S2Bi+S3Bi+Ai(S3
+S2)=S2S3+S2Ai+S2Bi+S3Bi+AiS3
+AiS2=S2S3+Ai+S2Bi+S3Bi+AiS3=S2S3+S2Ai+AiAi+Ai(Bi+Bi)+S2Bi+S3Bi+AiS3+BiBi=S2(S3+Ai+Bi)+Ai(S3+Ai+Bi)+Bi(S3+Ai+Bi)=
(S3+Ai+Bi)(S2+Ai+Bi)
=S3AiBi+S2AiBi根據(jù)上面所列的函數(shù)關(guān)系,化簡(jiǎn)Xi的邏輯表達(dá)式得:18Ai11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1進(jìn)一步化簡(jiǎn)可得:
Xi=S3AiBi+S2AiBi
Yi=Ai+S0Bi+S1Bi
XiYi=S3AiBi+S2AiBi·Ai+S0Bi+S1Bi=Y(jié)i將Xi和Yi代入前面的進(jìn)位表達(dá)式,可簡(jiǎn)化為:Cn+i+1=Y(jié)i+XiCn+i=S3AiBi+S2AiBi+Ai+S0Bi+S1Bi=Ai+S0Bi+S1Bi=Y(jié)iAi11011Ai+Bi10AiB19
定點(diǎn)運(yùn)算器的組成綜上所述,ALU的某一位邏輯表達(dá)式如下:Xi=S3AiBi+S2AiBi
Yi=Ai+S0Bi+S1Bi
Fi=Xi⊕Yi⊕Cn+iCn+i+1=Y(jié)i+XiCn+i(2.36)定點(diǎn)運(yùn)算器的組成(2.36)20
4位之間采用先行進(jìn)位公式,根據(jù)式(2.36),每一位的進(jìn)位公式可遞推如下:第0位向第1位的進(jìn)位公式為:Cn+1=Y(jié)0+X0Cn其中Cn是向第0位(末位)的進(jìn)位。
第1位向第2位的進(jìn)位公式為:Cn+2=Y(jié)1+X1Cn+1=Y(jié)1+Y0X1+X0X1Cn
第2位向第3位的進(jìn)位公式為:Cn+3=Y(jié)2+X2Cn+2=Y(jié)2+Y1X1+Y0X1X2+X0X1X2Cn
第3位的進(jìn)位輸出(即整個(gè)4位運(yùn)算進(jìn)位輸出)公式為:Cn+4=Y(jié)3+X3Cn+3=Y(jié)3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn定點(diǎn)運(yùn)算器的組成
設(shè):G=Y(jié)3+Y2X3+Y1X2X3+Y0X1X2X3
P=X0X1X2X3則:Cn+4=G+PCn4位之間采用先行進(jìn)位公式,根據(jù)式(2.36),每一定點(diǎn)21G稱(chēng)為進(jìn)位發(fā)生輸出,P稱(chēng)為進(jìn)位傳送輸出。在電路中多加這兩個(gè)進(jìn)位輸出的目的,是為了便于實(shí)現(xiàn)多片(組)ALU之間的先行進(jìn)位,為此還需一個(gè)配合電路,稱(chēng)之為先行進(jìn)位發(fā)生器(CLA)。Cn+4是本片(組)的最后進(jìn)位輸出。邏輯表達(dá)式表明,這是一個(gè)先行進(jìn)位邏輯。換句話(huà)說(shuō),第0位的進(jìn)位輸入Cn可以直接傳送到最高位上去,因而可以實(shí)現(xiàn)高速運(yùn)算。
設(shè):
G=Y(jié)3+Y2X3+Y1X2X3+Y0X1X2X3
P=X0X1X2X3則:Cn+4=G+PCnG稱(chēng)為進(jìn)位發(fā)生輸出,P稱(chēng)為進(jìn)位傳送輸出。在電路中多
設(shè):G22定點(diǎn)運(yùn)算器的組成
圖2.11(a)示出了用負(fù)邏輯表示的4位算術(shù)/邏輯運(yùn)算單元(ALU)的邏輯電路圖(CAI演示),它是根據(jù)上面的原始推導(dǎo)公式用TTL電路實(shí)現(xiàn)的。這個(gè)器件的商業(yè)標(biāo)號(hào)為74181ALU。
M(Y2+Y1X2+Y0X1X2+X0X1X2Cn)=M
Cn+3M(Y1+Y0X1+X0X1Cn)=M
Cn+2Y3+Y2X3+Y1X2X3+Y0X1X2X3=GX0X1X2X3=PPG+CnG=G+PCn=Cn+4=Cn+4Yi=Ai+S0Bi+S1BiXi=S3AiBi+S2AiBiM(Y0+X0Cn)
=M
Cn+1定點(diǎn)運(yùn)算器的組成圖2.11(a)示出了用負(fù)邏輯表示的23除了S0-S3四個(gè)控制端外,還有一個(gè)控制端M,它使用來(lái)控制ALU是進(jìn)行算術(shù)運(yùn)算還是進(jìn)行邏輯運(yùn)算的。當(dāng)M=0時(shí),進(jìn)行算術(shù)操作。M對(duì)進(jìn)位信號(hào)沒(méi)有任何影響。此時(shí)F不僅與本位的被操作數(shù)Y和操作數(shù)X有關(guān),而且與本位的進(jìn)位輸出,即C有關(guān)。當(dāng)M=1時(shí),進(jìn)行邏輯操作。封鎖了各位的進(jìn)位輸出,即C=0,各位的運(yùn)算結(jié)果F僅與Y和X有關(guān)。3.算術(shù)邏輯運(yùn)算的實(shí)現(xiàn)
2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)8除了S0-S3四個(gè)控制端外,還有一個(gè)控制端M24圖2.11(b)示出了工作于負(fù)邏輯和正邏輯操作數(shù)方式的74181ALU方框圖。顯然,這個(gè)器件執(zhí)行的正邏輯輸入/輸出方式的一組算術(shù)運(yùn)算和邏輯操作與負(fù)邏輯輸入/輸出方式的一組算術(shù)運(yùn)算和邏輯操作是等效的。
圖2.11(b)示出了工作于負(fù)邏輯和正邏輯
25表2.5列出了74181ALU的運(yùn)算功能表,它有兩種工作方式。對(duì)正邏輯操作數(shù)來(lái)說(shuō),算術(shù)運(yùn)算稱(chēng)高電平操作,邏輯運(yùn)算稱(chēng)正邏輯操作(即高電平為“1”,低電平為“0”)。對(duì)于負(fù)邏輯操作數(shù)來(lái)說(shuō),正好相反。由于S0-S3有16種狀態(tài)組合,因此對(duì)正邏輯輸入與輸出而言,有16種算術(shù)運(yùn)算功能和16種邏輯運(yùn)算功能。同樣,對(duì)于負(fù)邏輯輸入與輸出而言,也有16種算術(shù)運(yùn)算功能和16種邏輯運(yùn)算功能。表2.5列出了74181ALU的運(yùn)算功能表,它有兩種26表2.574181ALU算術(shù)/邏輯運(yùn)算功能表
表2.574181ALU算術(shù)/邏輯運(yùn)算功能表27注意:表2.5中算術(shù)運(yùn)算操作是用補(bǔ)碼表示法來(lái)表示的。其中“加”是指算術(shù)加,運(yùn)算時(shí)要考慮進(jìn)位,而符號(hào)“+”是指“邏輯加”。其次,減法是用補(bǔ)碼方法進(jìn)行的,其中數(shù)的反碼是內(nèi)部產(chǎn)生的,而結(jié)果輸出“A減B減1”,因此做減法時(shí)需在最末位產(chǎn)生一個(gè)強(qiáng)迫進(jìn)位(加1),以便產(chǎn)生“A減B”的結(jié)果。另外,“A=B”輸出端可指示兩個(gè)數(shù)相等,因此它與其他ALU的“A=B”輸出端按“與”邏輯連接后,可以檢測(cè)兩個(gè)數(shù)的相等條件。注意:282.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)134.兩級(jí)先行進(jìn)位的ALU
74181ALU設(shè)置了P和G兩個(gè)本組先行進(jìn)位輸出端。如果將四片74181的P,G輸出端送入到74182先行進(jìn)位部件(CLA),又可實(shí)現(xiàn)第二級(jí)的先行進(jìn)位,即組與組之間的先行進(jìn)位。假設(shè)4片(組)74181的先行進(jìn)位輸出依次為P0,G0,G1,P1,P2,G2,P3,G3,74182CLA所提供的進(jìn)位邏輯關(guān)系如下:2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)134.兩級(jí)先292.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)14
Cn+x=G0+P0CnCn+y=G1+P1Cn+x=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y=G2+G1P2+G0P1P2+P0P1P2Cn
(2.38)Cn+4=G3+P3Cn+z=G3+G2P3+G1P2P3+G0P1P2P3+P0P1P2P3Cn
=G*+P*Cn其中:成組進(jìn)位傳送輸出:
P*=P0P1P2P3成組進(jìn)位發(fā)生輸出:G*=G3+G2P3+G1P2P3+G0P1P2P32.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)14Cn+x30根據(jù)以上表達(dá)式,用TTL器件實(shí)現(xiàn)的成組先行進(jìn)位部件74182的邏輯電路圖如圖2.12所示
其中G*稱(chēng)為成組進(jìn)位發(fā)生輸出,P*稱(chēng)為成組進(jìn)位傳送輸出。
CAI根據(jù)以上表達(dá)式,用TTL器件實(shí)現(xiàn)的成組
CAI31P*=P0P1P2P3=P0+
P1+
P2+P3G*=G3+G2P3+G1P2P3+G0P1P2P3=G3(G2+P3)(G1+P2+P3)(G0+P1+P2+P3)
=G3P3+P2G2G3+P1G1G2G3+G0G1G2G3P*=P0P1P2P3=P0+P1+P2+P322.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)15如何用若干個(gè)74181ALU位片,與配套的74182CLA在一起,構(gòu)成一個(gè)全字長(zhǎng)的ALU。下圖示出了用兩個(gè)16位全先行進(jìn)位部件級(jí)聯(lián)組成的32位ALU邏輯方框圖。在這個(gè)電路中使用了8個(gè)74181ALU和2個(gè)74182CLA器件。對(duì)一個(gè)16位來(lái)說(shuō),CLA部件構(gòu)成了第二級(jí)的先行進(jìn)位邏輯,即實(shí)現(xiàn)四個(gè)小組(位片)之間的先行進(jìn)位,從而使全字長(zhǎng)ALU的運(yùn)算時(shí)間大大縮短。2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)續(xù)15如何用若干33圖2.13用兩個(gè)16位全先行進(jìn)位部件級(jí)聯(lián)組成的32位ALU(組內(nèi)先行進(jìn)位,組間串行進(jìn)位)進(jìn)位同時(shí)生成圖2.13用兩個(gè)16位全先行進(jìn)位部件級(jí)聯(lián)組成的32位ALU34用兩級(jí)CLA(74182)級(jí)聯(lián)組成的64位具有全先行進(jìn)位的ALU用兩級(jí)CLA(74182)級(jí)聯(lián)組成的35
由于計(jì)算機(jī)內(nèi)部的主要工作過(guò)程是信息傳送和加工的過(guò)程,因此在機(jī)器內(nèi)部各部件之間的數(shù)據(jù)傳送非常頻繁。為了減少內(nèi)部的傳送線并便于控制,通常將一些寄存器之間數(shù)據(jù)傳送的通路加以歸并,組成總線結(jié)構(gòu),使不同來(lái)源的信息在此傳輸線上分時(shí)傳送。(總線是計(jì)算機(jī)內(nèi)各部件之間傳送信息的公用的一組連線)2.5.3內(nèi)部總線由于計(jì)算機(jī)內(nèi)部的主要工作過(guò)程是信息傳送和加工的過(guò)程,因此362.5.3內(nèi)部總線
(續(xù)1)根據(jù)總線所在位置,總線分為內(nèi)部總線和外部總線兩類(lèi)。內(nèi)部總線是指CPU內(nèi)各部件的連線外部總線是指系統(tǒng)總線,即CPU與存儲(chǔ)器、I/O系統(tǒng)之間的連線。本節(jié)只討論內(nèi)部總線。2.5.3內(nèi)部總線(續(xù)1)根據(jù)總線所在位置,總線分為內(nèi)部372.5.3內(nèi)部總線
(續(xù)2)按總線的邏輯結(jié)構(gòu)來(lái)說(shuō),總線可分為單向傳送總線和雙向傳送總線。所謂單向總線,就是信息只能向一個(gè)方向傳送所謂雙向總線,就是信息可以分兩個(gè)方向傳送,既可以發(fā)送數(shù)據(jù),也可以接收數(shù)據(jù)。2.5.3內(nèi)部總線(續(xù)2)按總線的邏輯結(jié)構(gòu)來(lái)說(shuō),總線可分382.5.3內(nèi)部總線
(續(xù)3)
圖2.14(a)是帶有緩沖驅(qū)動(dòng)器的4位雙向數(shù)據(jù)總線。其中所用的基本電路就是三態(tài)邏輯電路。
當(dāng)“發(fā)送”信號(hào)有效時(shí),數(shù)據(jù)從左向右傳送。
當(dāng)“接收”信號(hào)有效時(shí),數(shù)據(jù)從右向左傳送。
這種類(lèi)型的緩沖器通常根據(jù)它們的不同用途而分別稱(chēng)為總線擴(kuò)展器、總線驅(qū)動(dòng)器、總線接收器等等。2.5.3內(nèi)部總線(續(xù)3)圖2.14(a)是帶有39發(fā)送接收發(fā)送接收發(fā)送接收發(fā)送接收40若E=0,觸發(fā)器Q保持原值,數(shù)據(jù)D被封鎖,不接收。而三態(tài)門(mén)被打開(kāi),鎖存器的數(shù)據(jù)經(jīng)三態(tài)門(mén)發(fā)送到數(shù)據(jù)總線D上。
若E=1,觸發(fā)器接收數(shù)據(jù)D,Q=D。而三態(tài)門(mén)被禁止,因而數(shù)據(jù)總線D上的數(shù)據(jù)只能被接收到鎖存器。E輸入端控制D的輸入發(fā)送接收若E=0,觸發(fā)器Q保持原值,數(shù)據(jù)D被封鎖,不接收。而三態(tài)41
圖2.14(b)所示的是帶有鎖存器的4位雙向數(shù)據(jù)總線。它主要由一個(gè)DE觸發(fā)器和一個(gè)三態(tài)緩沖器組成。DE觸發(fā)器是在一個(gè)普通D觸發(fā)器上另加一個(gè)E輸入端(允許端)而構(gòu)成的。此處E輸入端用以控制D的輸入。若E=0,觸發(fā)器的輸入D被封鎖,即使D為“1”,也不能輸入。
當(dāng)接收數(shù)據(jù)時(shí),E=1,三態(tài)門(mén)被禁止,因而數(shù)據(jù)總線上的數(shù)據(jù)只能被接收到鎖存器。
當(dāng)發(fā)送數(shù)據(jù)時(shí),E=0,觸發(fā)器的輸入D被封鎖,而三態(tài)門(mén)被打開(kāi),因而鎖存器的數(shù)據(jù)經(jīng)三態(tài)門(mén)發(fā)送到數(shù)據(jù)總線上。圖2.14(b)所示的是帶有鎖存器的4位雙向數(shù)據(jù)總422.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)
運(yùn)算器包括ALU\陣列乘除器\寄存器\多路開(kāi)關(guān)\三態(tài)緩沖器\數(shù)據(jù)總線等邏輯部件。運(yùn)算器的設(shè)計(jì),主要是圍繞ALU和寄存器同數(shù)據(jù)總線之間如何傳送操作數(shù)和運(yùn)算結(jié)果進(jìn)行的。在決定方案時(shí),需要考慮數(shù)據(jù)傳送的方便性和操作速度,在微型機(jī)和單片機(jī)中還要考慮在硅片上制作總線的工藝。計(jì)算機(jī)的運(yùn)算器大體有如下三種結(jié)構(gòu)形式2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)運(yùn)算器包括ALU\陣列乘432.5.4
定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)(續(xù)1)1.單總線結(jié)構(gòu)的運(yùn)算器
單總線結(jié)構(gòu)的運(yùn)算器如(a)所示。所有部件都接同一總線上,所以數(shù)據(jù)可以在任何兩個(gè)寄存器之間,或者在任一個(gè)寄存器和ALU之間傳送。如果具有陣列乘法器或除法器,那么它們所處的位置應(yīng)與ALU相當(dāng)。
在同一時(shí)間內(nèi),只能有一個(gè)操作數(shù)放在單總線上。為了把兩個(gè)操作數(shù)輸入到ALU,需要分兩次來(lái)做,而且還需要A,B兩個(gè)緩沖寄存器。這種結(jié)構(gòu)的主要缺點(diǎn)是操作速度較慢。2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)(續(xù)1)1.單總線結(jié)構(gòu)的運(yùn)44①②③①②③45注意到:
雖然在這種結(jié)構(gòu)中,輸入數(shù)據(jù)和操作結(jié)果需要三次串行的選通操作,但它并不會(huì)對(duì)每種指令都增加很多執(zhí)行時(shí)間。只有在對(duì)全都是CPU寄存器中的兩個(gè)操作數(shù)進(jìn)行操作時(shí),單總線結(jié)構(gòu)的運(yùn)算器才會(huì)造成一定的時(shí)間損失。但是由于它只控制一條總線,故控制電路比較簡(jiǎn)單。注意到:462.5.4
定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)(續(xù)2)雙總線結(jié)構(gòu)的運(yùn)算器如(b)所示。
在這種結(jié)構(gòu)中,兩個(gè)操作數(shù)同時(shí)加到ALU進(jìn)行運(yùn)算,只需一次操作控制,而且馬上就可以得到運(yùn)算結(jié)果兩條總線各自把其數(shù)據(jù)送至ALU的輸入端。特殊寄存器分為兩組,分別與一條總線交換數(shù)據(jù)。通用寄存器中的數(shù)就可進(jìn)入到任一組特殊寄存器中,使數(shù)據(jù)傳送更為靈活。ALU的輸出不能直接加到總線上去。因?yàn)?,?dāng)形成操作結(jié)果的輸出時(shí),兩條總線都被輸入數(shù)占據(jù),因而必須在ALU輸出端設(shè)置緩沖寄存器。2.雙總線結(jié)構(gòu)的運(yùn)算器
2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)(續(xù)2)雙總線結(jié)構(gòu)的運(yùn)算器如47①②①①②①48
在雙總線結(jié)構(gòu)的運(yùn)算其中,操作的控制要分兩步完成:
1.在ALU的兩個(gè)輸入端輸入操作數(shù),形成結(jié)果并送入緩沖寄存器;
2.把結(jié)果送入目的寄存器。假如在總線1,2和ALU輸入端之間再各加一個(gè)輸入緩沖寄存器,
并把兩個(gè)輸入數(shù)先放至這兩個(gè)緩沖寄存器,那么,ALU輸出端就可以直接把操作結(jié)果送至
總線1或總線2上去。在雙總線結(jié)構(gòu)的運(yùn)算其中,操作的控制要分492.5.4
定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)(續(xù)3)ALU的輸入端分別由兩條總線供給,ALU的輸出與第3三條總線相連。運(yùn)算操作可以在一步控制內(nèi)完成。由于ALU本身有時(shí)間延遲,所以打入輸出結(jié)果的選通脈沖必須考慮到包括這個(gè)延遲??偩€旁路器。如果一個(gè)操作數(shù)不需要修改,而直接從總線2傳送到總線3,可以通過(guò)控制總線旁路器把數(shù)據(jù)傳出;如果一個(gè)操作數(shù)傳送時(shí)需要修改,那么就借助于ALU。三總線結(jié)構(gòu)的運(yùn)算器的特點(diǎn)是操作時(shí)間快。
3.三總線結(jié)構(gòu)的運(yùn)算器
2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)(續(xù)3)ALU的輸入端分別由50①①①①①①512.6浮點(diǎn)運(yùn)算方法和浮點(diǎn)運(yùn)算器2.6.1浮點(diǎn)加法、減法運(yùn)算2.6.2浮點(diǎn)乘法、除法運(yùn)算2.6.3浮點(diǎn)運(yùn)算流水線2.6.4浮點(diǎn)運(yùn)算器實(shí)例2.6浮點(diǎn)運(yùn)算方法和浮點(diǎn)運(yùn)算器522.6.1浮點(diǎn)加法、減法運(yùn)算
設(shè)有兩個(gè)浮點(diǎn)數(shù)x和y,它們分別為:x=2Ex·Mxy=2Ey·My
其中Ex和Ey分別為數(shù)x和y的階碼,Mx和My為數(shù)x和y的尾數(shù)。
兩浮點(diǎn)數(shù)進(jìn)行加法和減法的運(yùn)算規(guī)則是:x±y=(Mx2Ex-Ey±My)·2Ey,Ex≤
Ey2.6.1浮點(diǎn)加法、減法運(yùn)算設(shè)有兩個(gè)浮點(diǎn)數(shù)x和y,532.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)1)完成浮點(diǎn)加減運(yùn)算的操作過(guò)程大體分為四步:
1.0操作數(shù)的檢查;
2.比較階碼大小并完成對(duì)階;
3.尾數(shù)進(jìn)行加或減運(yùn)算;
4.結(jié)果規(guī)格化并進(jìn)行舍入處理。浮點(diǎn)加減運(yùn)算的操作流程
2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)1)完成浮點(diǎn)加減運(yùn)算的操作54浮點(diǎn)運(yùn)算0操作數(shù)檢查對(duì)階操作尾數(shù)相加(CAI演示)浮點(diǎn)運(yùn)算0操作數(shù)檢查對(duì)階操作尾數(shù)相加(CAI演示)552.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)2)⑴0操作數(shù)檢查浮點(diǎn)加減運(yùn)算過(guò)程比定點(diǎn)運(yùn)算過(guò)程復(fù)雜。如果判知兩個(gè)操作數(shù)x或y中有一個(gè)數(shù)為0,即可得知運(yùn)算結(jié)果而沒(méi)有必要再進(jìn)行后續(xù)的一系列操作以節(jié)省運(yùn)算時(shí)間。0操作數(shù)檢查步驟則用來(lái)完成這一功能。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)2)⑴0操作數(shù)檢查562.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)3)⑵比較階碼大小并完成對(duì)階兩浮點(diǎn)數(shù)進(jìn)行加減,首先要看兩數(shù)的階碼是否相同,即小數(shù)點(diǎn)位置是否對(duì)齊。若二數(shù)階碼相同,表示小數(shù)點(diǎn)是對(duì)齊的,就可以進(jìn)行尾數(shù)的加減運(yùn)算。若二數(shù)階碼不同,表示小數(shù)點(diǎn)位置沒(méi)有對(duì)齊,必須使二數(shù)階碼相同,這個(gè)過(guò)程叫作對(duì)階。要對(duì)階,首先應(yīng)求出兩數(shù)階碼Ex和Ey之差,即
△E=Ex-Ey2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)3)⑵比較階碼大小并完成572.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)4)△E=0,表示Ex=Ey,兩數(shù)階碼相等;△E<0,表示Ex<Ey;△E>0,表示Ex>Ey。當(dāng)Ex≠Ey時(shí),通過(guò)尾數(shù)的移動(dòng)以改變Ex或Ey使之相等原則上,既可以通過(guò)Mx移位以改變Ex來(lái)達(dá)到Ex=Ey,也可以通過(guò)My移位以改變Ey來(lái)實(shí)現(xiàn)Ex=Ey。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)4)△E=0,表示Ex=58
但是,由于浮點(diǎn)表示的數(shù)多是規(guī)格化的,尾數(shù)左移會(huì)引起最高有效位的丟失,造成很大誤差。尾數(shù)右移雖引起最低有效位的丟失,但造成誤差較小。因此,對(duì)階操作規(guī)定使尾數(shù)右移,尾數(shù)右移后階碼作相應(yīng)增加,其數(shù)值保持不變。顯然,一個(gè)增加后的階碼與另一個(gè)階碼相等,增加的階碼的一定是小階。因此在對(duì)階時(shí),總是使小階向大階看齊,即小階的尾數(shù)向右移位(相當(dāng)于小數(shù)點(diǎn)左移)每右移一位,其階碼加1,直到兩數(shù)的階碼相等為止,右移的位數(shù)等于階差△E。
但是,由于浮點(diǎn)表示的數(shù)多是規(guī)格化的,尾數(shù)左移592.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)5)⑶尾數(shù)求和運(yùn)算對(duì)階結(jié)束后,即可進(jìn)行尾數(shù)的求和運(yùn)算。不論加法運(yùn)算還是減法運(yùn)算,都按加法進(jìn)行操作,其方法與定點(diǎn)加減法運(yùn)算完全一樣。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)5)⑶尾數(shù)求和運(yùn)算602.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)6)⑷結(jié)果規(guī)格化在浮點(diǎn)加減運(yùn)算時(shí),尾數(shù)求和的結(jié)果也可以得到01.ф…ф或10.ф…ф,即兩符號(hào)位不等,這在定點(diǎn)加減法運(yùn)算中稱(chēng)為溢出,是不允許的。但在浮點(diǎn)運(yùn)算中,它表明尾數(shù)求和結(jié)果的絕對(duì)值大于1,向左破壞了規(guī)格化。此時(shí)將運(yùn)算結(jié)果右移以實(shí)現(xiàn)規(guī)格化表示,稱(chēng)為向右規(guī)格化,簡(jiǎn)稱(chēng)右規(guī)。規(guī)則是:尾數(shù)右移1位,階碼加1。尾數(shù)不是1.M形式時(shí),需向左規(guī)格化,簡(jiǎn)稱(chēng)左規(guī)。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)6)⑷結(jié)果規(guī)格化612.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)7)⑸舍入處理在對(duì)階或向右規(guī)格化時(shí),尾數(shù)要向右移位,被右移的尾數(shù)的低位部分會(huì)被丟掉,從而造成一定誤差,因此要進(jìn)行舍入處理。簡(jiǎn)單的舍入方法有兩種:一種是“0舍1入”法,即如果右移時(shí)被丟掉數(shù)位的最高位為0則舍去,1則將尾數(shù)的末位加“1”。另一種是“恒置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末尾恒置"1"。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)7)⑸舍入處理622.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)8)IEEE754標(biāo)準(zhǔn)中,舍入處理提供了四種可選方法:就近舍入就是通常所說(shuō)的“四舍五入”。例如,尾數(shù)超出規(guī)定的23位的多余位數(shù)字是10010(>10000),多余位的值超過(guò)規(guī)定的最低有效位值的一半(16),故最低有效位應(yīng)增1。若多余的5位是01111(<10000),則簡(jiǎn)單的截尾即可。對(duì)多余的5位10000這種特殊情況:若最低有效位為0則截尾;若為1,則向上進(jìn)一位使其變?yōu)?。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)8)IEEE754標(biāo)準(zhǔn)中,632.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)9)朝0舍入朝數(shù)軸原點(diǎn)方向舍入,就是簡(jiǎn)單的截尾。無(wú)論尾數(shù)是正還是負(fù),截尾都使取值的絕對(duì)值比原值的絕對(duì)值小。這種方法容易導(dǎo)致誤差積累。朝+∞舍入對(duì)正數(shù),只要多余位不全為0則向最低有效位進(jìn)1;對(duì)負(fù)數(shù),則是簡(jiǎn)單的截尾。朝-∞舍入處理方法正好與朝+∞舍入情況相反。對(duì)正數(shù),只要多余位不全為0則簡(jiǎn)單截尾;對(duì)負(fù)數(shù),向最低有效位進(jìn)1。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)9)朝0舍入朝數(shù)軸原點(diǎn)642.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)10)⑹浮點(diǎn)數(shù)的溢出當(dāng)機(jī)器浮點(diǎn)數(shù)值大于最大正數(shù)A值,或小于最小負(fù)數(shù)B值時(shí),稱(chēng)為上溢,這兩種情況意味著階碼運(yùn)算值超出了它所表示的范圍,機(jī)器必須做中斷處理。當(dāng)機(jī)器浮點(diǎn)數(shù)值小于最小正數(shù)a值,或大于最大負(fù)數(shù)b值時(shí),稱(chēng)為下溢。下溢不是一個(gè)嚴(yán)重問(wèn)題,通??醋鳛闄C(jī)器零。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)10)⑹浮點(diǎn)數(shù)的溢出652.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)12)階碼上溢超過(guò)了階碼可能表示的最大值的正指數(shù)值,一般將其認(rèn)為是+∞和-∞。階碼下溢超過(guò)了階碼可能表示的最小值的負(fù)指數(shù)值,一般將其認(rèn)為是0。尾數(shù)上溢
兩個(gè)同符號(hào)尾數(shù)相加產(chǎn)生了最高位向上的進(jìn)位,將尾數(shù)右移,階碼增1來(lái)重新對(duì)齊。尾數(shù)下溢在將尾數(shù)右移時(shí),尾數(shù)的最低有效位從尾數(shù)域右端流出,要進(jìn)行舍入處理。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)12)階碼上溢超過(guò)了階碼662.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)11)浮點(diǎn)數(shù)的溢出是以其階碼溢出表現(xiàn)出來(lái)的。在加減運(yùn)算過(guò)程中要檢查是否產(chǎn)生了溢出:若階碼正常,加(減)運(yùn)算正常結(jié)束;若階碼溢出,則要進(jìn)行相應(yīng)處理。另外對(duì)尾數(shù)的溢出也需要處理。2.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)11)浮點(diǎn)數(shù)的溢出是以其階672.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)13)例25:設(shè)x=2010×0.11011011,
y=2100×(-0.10101100),求x+y。[解]:為了便于直觀理解,假設(shè)兩數(shù)均以補(bǔ)碼表示,階碼采用雙符號(hào)位,尾數(shù)采用單符號(hào)位,則它們的浮點(diǎn)表示分別為:[x]?。?0010,0.11011011[y]浮=00100,1.010101002.6.1浮點(diǎn)加法、減法運(yùn)算(續(xù)13)例25:設(shè)x=2068<1>求階差并對(duì)階[△E]補(bǔ)=[Ex-Ey]補(bǔ)=[Ex]補(bǔ)+[-Ey]補(bǔ)=00010+11100=11110即△E的真值為-2,x的階碼小,應(yīng)使Mx右移2位,Ex+2,[x]浮=00100,0.00110110(11)其中(11)表示Mx右移2位后移出的最低兩位數(shù)。[例25]<2>尾數(shù)求和0.00110110(11)+1.010101001.10001010(11)[x]?。?0010,0.11011011[y]?。?0100,1.01010100<1>求階差并對(duì)階[例25]<2>尾數(shù)求和[x]?。?069<3>規(guī)格化處理
尾數(shù)運(yùn)算結(jié)果的符號(hào)位與最高數(shù)值位同值,
1.10001010(11)應(yīng)執(zhí)行左規(guī)處理,結(jié)果為1.00010101(10),階碼減1,即:00100+11111=00011。<3>規(guī)格化處理70浮點(diǎn)運(yùn)算<4>舍入處理采用0舍1入法處理,則有:1.00010101+0.00000001
1.00010110<5>判溢出
階碼符號(hào)位為00,不溢出,故得最終結(jié)果為
x+y=2011×(-0.11101010)浮點(diǎn)運(yùn)算<4>舍入處理712.6.2浮點(diǎn)乘法、除法運(yùn)算
1.浮點(diǎn)乘法、除法運(yùn)算規(guī)則
設(shè)有兩個(gè)浮點(diǎn)數(shù)x和y:x=2Ex·Mxy=2Ey·My浮點(diǎn)乘法運(yùn)算的規(guī)則是:x×y=2(Ex+Ey)·(Mx×My)(2.40)
即乘積的尾數(shù)是相乘兩數(shù)的尾數(shù)之積,乘積的階碼是相乘兩數(shù)的階碼之和。也有規(guī)格化與舍入等步驟。2.6.2浮點(diǎn)乘法、除法運(yùn)算1.浮點(diǎn)乘法、除法運(yùn)算規(guī)則72浮點(diǎn)除法運(yùn)算的規(guī)則是:x÷y=2(Ex-Ey)·(Mx÷My)(2.41)即商的尾數(shù)是相除兩數(shù)的尾數(shù)之商,商的階碼是相除兩數(shù)的階碼之差。也有規(guī)格化和舍入等步驟。浮點(diǎn)除法運(yùn)算的規(guī)則是:732.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)2)浮點(diǎn)數(shù)的乘除運(yùn)算大體分為四步:第一步0操作數(shù)檢查;第二步階碼加/減操作;第三步尾數(shù)乘/除操作;第四步結(jié)果規(guī)格化及舍入處理。2.浮點(diǎn)乘、除法運(yùn)算步驟
2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)2)浮點(diǎn)數(shù)的乘除運(yùn)算大體分742.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)3)⑴浮點(diǎn)數(shù)的階碼運(yùn)算對(duì)階碼的運(yùn)算有+1、-1、兩階碼求和、兩階碼求差四種,運(yùn)算時(shí)還必須檢查結(jié)果是否溢出。在計(jì)算機(jī)中,階碼通常用補(bǔ)碼或移碼形式表示。補(bǔ)碼運(yùn)算規(guī)則和判定溢出的方法,前面已經(jīng)講過(guò)。這里只對(duì)移碼的運(yùn)算規(guī)則和判定溢出的方法進(jìn)行講解。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)3)⑴浮點(diǎn)數(shù)的階碼運(yùn)算752.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)4)移碼的定義為(n+1位):[x]移=2n+x2n>x≥-2n按此定義,則有:[x]移+[y]移=2n+x+2n+y=2n+(2n+(x+y))
=2n+[x+y]移即直接用移碼實(shí)現(xiàn)求階碼之和時(shí),結(jié)果的最高位多加了個(gè)1,要得到正確的移碼形式結(jié)果,必須對(duì)結(jié)果的符號(hào)再執(zhí)行一次求反。浮點(diǎn)乘法、除法運(yùn)算2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)4)移碼的定義為(762.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)5)混合使用移碼和補(bǔ)碼時(shí),考慮到對(duì)同一個(gè)數(shù)值,移碼和補(bǔ)碼的數(shù)值位完全相同,而符號(hào)位正好完全相反。[y]補(bǔ)的定義為:[y]補(bǔ)=2n+1+y則求階碼和用如下方式完成:[x]移+[y]補(bǔ)=2n+x+2n+1+y=2n+1+(2n+(x+y))即:[x+y]移=[x]移+[y]補(bǔ)(mod2n+1)(2.42)同理:[x-y]移=[x]移+[-y]補(bǔ)(2.43)
2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)5)混合使用移碼和772.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)6)如果階碼運(yùn)算的結(jié)果溢出,上述條件則不成立。使用雙符號(hào)位的階碼加法器,并規(guī)定移碼的第二個(gè)符號(hào)位,即最高符號(hào)位恒用0參加加減運(yùn)算.溢出條件是結(jié)果的最高符號(hào)位為1。低位符號(hào)位為0,結(jié)果上溢;為1時(shí),結(jié)果下溢。當(dāng)最高符號(hào)位為0時(shí),表明沒(méi)有溢出低位符號(hào)位為1,結(jié)果為正;為0時(shí),結(jié)果為負(fù)。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)6)如果階碼運(yùn)算的結(jié)果溢出782.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)7)
[例26]:x=+011,y=+110,求[x+y]移和[x-y]移,并判斷是否溢出。[解]:[x]移=01011,[y]補(bǔ)=00110,[-y]補(bǔ)=11010
[x+y]移=[x]移+[y]補(bǔ)=10001。
[x-y]移=[x]移+[-y]補(bǔ)=00101
x-y=
-3結(jié)果上溢結(jié)果正確2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)7)[例26]:x=+792.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)8)⑵尾數(shù)處理按定點(diǎn)小數(shù)乘除法運(yùn)算規(guī)則進(jìn)行尾數(shù)乘除運(yùn)算。浮點(diǎn)加減法對(duì)結(jié)果的規(guī)格化及舍入處理也適用于浮點(diǎn)乘除法。第一種簡(jiǎn)單方法--截?cái)嗵幚頍o(wú)條件地丟掉正常尾數(shù)最低位之后的全部數(shù)值。這種辦法被稱(chēng)為截?cái)嗵幚?。好處是處理?jiǎn)單缺點(diǎn)是影響結(jié)果的精度。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)8)⑵尾數(shù)處理第一種簡(jiǎn)802.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)9)第二種簡(jiǎn)單辦法--舍入處理運(yùn)算過(guò)程中保留右移中移出的若干高位的值,最后再按某種規(guī)則用這些位上的值修正尾數(shù)。這種處理方法被稱(chēng)為舍入處理。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)9)第二種簡(jiǎn)單辦法--舍入812.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)10)當(dāng)尾數(shù)用原碼表示時(shí),舍入規(guī)則比較簡(jiǎn)單。最簡(jiǎn)便的方法:只要尾數(shù)的最低位為1,即形式為:.xx…x1或移出的幾位中有為1的數(shù)值位,即形式為:.xx…xx(x..1…xx)則就使最低位的值為1。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)10)當(dāng)尾數(shù)用原碼表示時(shí),820舍1入法:當(dāng)丟失的最高位為1時(shí),即形式為:.xx…xx(1xx…xx)把這個(gè)1加到最低數(shù)值位上進(jìn)行修正,即.xx…xx
+.00…01
否則舍去丟失的的各位值,即形式為:.xx…xx(0xx…xx)
丟失這些多余位這樣處理時(shí),舍入效果對(duì)正數(shù)負(fù)數(shù)相同,入將使數(shù)的絕對(duì)值變大,舍則使數(shù)的絕對(duì)值變小。0舍1入法:當(dāng)丟失的最高位為1時(shí),即形式為:832.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)11)尾數(shù)是用補(bǔ)碼表示時(shí),所用的舍入規(guī)則,應(yīng)該與用原碼表示時(shí)產(chǎn)生相同的處理效果。具體規(guī)則是:當(dāng)丟失的各位均為0時(shí),不必舍入當(dāng)丟失的最高位為0時(shí),以下各位不全為0時(shí),或者丟失的最高位為1,以下各位均為0時(shí),則舍去丟失位上的值當(dāng)丟失的最高位為1,以下各位不全為0時(shí),則執(zhí)行在尾數(shù)最低位入1的修正操作。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)11)尾數(shù)是用補(bǔ)碼表示842.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)12)例27:設(shè)[x1]補(bǔ)=11.01100000,[x2]補(bǔ)=11.01100001[x3]補(bǔ)=11.01101000,[x4]補(bǔ)=11.01111001,求執(zhí)行只保留小數(shù)點(diǎn)后4位有效數(shù)字的舍入操作值。解:執(zhí)行舍入操作后,其結(jié)果值分別為
[x1]補(bǔ)=11.0110(不舍不入)[x2]補(bǔ)=11.0110(舍)[x3]補(bǔ)=11.0110(舍)[x4]補(bǔ)=11.1000(入)2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)12)例27:設(shè)[x1]852.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)13)例28:設(shè)有浮點(diǎn)數(shù)x=2-5×0.0110011,y=23×(-0.1110010)階碼用4位移碼表示,尾數(shù)(含符號(hào)位)用8位補(bǔ)碼表示。求[x×y]補(bǔ)。要求用補(bǔ)碼完成尾數(shù)乘法運(yùn)算,運(yùn)算結(jié)果尾數(shù)保留高8位(含符號(hào)位),并用尾數(shù)低位字長(zhǎng)值處理舍入操作。2.6.2浮點(diǎn)乘法、除法運(yùn)算(續(xù)13)例28:設(shè)有浮點(diǎn)數(shù)x86例28之解移碼采用雙符號(hào)位,尾數(shù)補(bǔ)碼采用單符號(hào)位,則有:
[Mx]補(bǔ)=0.0110011,[My]補(bǔ)=1.0001110,
[Ex]移=00011,[Ey]移=01011,[Ey]補(bǔ)=00011,[x]?。?0011,0.0110011,[y]浮=01011,1.0001110⑴求階碼和
[Ex+Ey]移=[Ex]移+[Ey]補(bǔ)=00011+00011=00110,值為-2。例28之解移碼采用雙符號(hào)位,尾數(shù)補(bǔ)碼采用單符號(hào)位,則有:
[87例28之解(續(xù))⑵尾數(shù)乘法運(yùn)算
采用補(bǔ)碼陣列乘法器(用間接補(bǔ)碼陣列乘法器)實(shí)現(xiàn),即有,[Mx]補(bǔ)×[My]補(bǔ)
=[0.0110011]補(bǔ)×[1.0001110]補(bǔ)=[1.1010010,1001010]補(bǔ)⑶規(guī)格化處理
乘積的尾數(shù)符號(hào)位與最高數(shù)值位符號(hào)相同,不是規(guī)格化的數(shù),需要左規(guī),階碼由00110變?yōu)?0101(-3),尾數(shù)變?yōu)椋?.0100101,0010100。例28之解(續(xù))⑵尾數(shù)乘法運(yùn)算88⑷舍入處理
尾數(shù)為負(fù)數(shù),取尾數(shù)高位字長(zhǎng),按舍入規(guī)則,舍去低位字長(zhǎng),故尾數(shù)為1.0100101。最終相乘結(jié)果為:[x×y]?。?0101,1.0100101其真值為:
x×y=2-3×(-0.1011011)例28之解(續(xù))⑷舍入處理例28之解(續(xù))892.6.3浮點(diǎn)運(yùn)算流水線
計(jì)算機(jī)的流水處理過(guò)程同工廠中的流水裝配線類(lèi)似。為了實(shí)現(xiàn)流水,首先必須把輸入的任務(wù)分割為一系列的子任務(wù),使各子任務(wù)能在流水線的各個(gè)階段并發(fā)地執(zhí)行。將任務(wù)連續(xù)不斷地輸入流水線,從而實(shí)現(xiàn)了子任務(wù)的并行。流水處理大幅度地改善了計(jì)算機(jī)的系統(tǒng)性能,是在計(jì)算機(jī)上實(shí)現(xiàn)時(shí)間并行性的一種非常經(jīng)濟(jì)的方法。1.流水線原理
2.6.3浮點(diǎn)運(yùn)算流水線計(jì)算機(jī)的流水處理過(guò)程同工廠中的流902.6.3浮點(diǎn)運(yùn)算流水線(續(xù)1)在流水線中,原則上要求各個(gè)階段的處理時(shí)間都相同。若某一階段的處理時(shí)間較長(zhǎng),勢(shì)必造成其他階段的空轉(zhuǎn)等待。因此對(duì)子任務(wù)的劃分,是決定流水線性能的一個(gè)關(guān)鍵因素,它取決于操作部分的效率、所期望的處理速度,以及成本價(jià)格等等。假定作業(yè)T被分成k個(gè)子任務(wù),可表達(dá)為T(mén)={T1,T2,···,Tk}各個(gè)子任務(wù)之間有一定的優(yōu)先關(guān)系:若i<j,則必須在Ti完成以后,Tj才能開(kāi)始工作。具有這種線性?xún)?yōu)先關(guān)系的流水線稱(chēng)為線性流水線。2.6.3浮點(diǎn)運(yùn)算流水線(續(xù)1)在流水線中,原則上91處理一個(gè)子任務(wù)的過(guò)程高速緩沖寄存器統(tǒng)一的時(shí)鐘CAI演示處理一個(gè)子任務(wù)高速緩沖寄存器統(tǒng)一的時(shí)鐘CAI演示922.6.3浮點(diǎn)運(yùn)算流水線(續(xù)2)處理一個(gè)子任務(wù)的過(guò)程為過(guò)程段(Si)。線性流水線由一系列串聯(lián)的過(guò)程段組成,各個(gè)過(guò)程之間設(shè)有高速的緩沖寄存器(L),以暫時(shí)保存上一過(guò)程子任務(wù)處理的結(jié)果。在一個(gè)統(tǒng)一的時(shí)鐘(C)控制下,數(shù)據(jù)從一個(gè)過(guò)程段流向相鄰的過(guò)程段。設(shè)過(guò)程段Si所需的時(shí)間為τi,緩沖寄存器的延時(shí)為τl,線性流水線的時(shí)鐘周期定義為:
τ=max{τi}+τl=τm+τl(2.44)故流水線處理的頻率為:f=1/τ。浮點(diǎn)運(yùn)算流水線2.6.3浮點(diǎn)運(yùn)算流水線(續(xù)2)處理一個(gè)子任務(wù)的932.6.3浮點(diǎn)運(yùn)算流水線(續(xù)3)在流水線處理中,當(dāng)任務(wù)飽滿(mǎn)時(shí),每隔一個(gè)時(shí)鐘周期都能輸出一個(gè)任務(wù)。從理論上說(shuō),具有k級(jí)過(guò)程段的流水線處理n個(gè)任務(wù)需要的時(shí)鐘周期數(shù)為:Tk=k+(n-1)(2.45)
其中k個(gè)時(shí)鐘周期用于處理第一個(gè)任務(wù)。K個(gè)周期后,流水線被裝滿(mǎn),剩余的n-1個(gè)任務(wù)只需n-1個(gè)周期就完成了。用非流水線的硬件來(lái)處理n個(gè)任務(wù),時(shí)間上只能串行進(jìn)行,則所需時(shí)鐘周期數(shù)為:
TL=n·k
(2.46)2.6.3浮點(diǎn)運(yùn)算流水線(續(xù)3)在流水線處理中,當(dāng)942.6.3浮點(diǎn)運(yùn)算流水線(續(xù)4)將TL和Tk的比值定義為k級(jí)線性流水線的加速比:Ck===(2.47)
由上式可以得出:當(dāng)n>>k時(shí),Ck->k。
理論上k級(jí)線性流水線處理幾乎可以提高k倍速度。但實(shí)際上由于存儲(chǔ)器沖突、數(shù)據(jù)相關(guān),這個(gè)理想的加速比不一定能達(dá)到。浮點(diǎn)運(yùn)算流水線TL
Tkn·k
k+(n-1)非流水線時(shí)所需周期數(shù)流水線時(shí)所需周期數(shù)2.6.3浮點(diǎn)運(yùn)算流水線(續(xù)4)將TL和Tk的比值定義為k95
例X=1.1000×y=1.1100×例X=1.1000×960.0110×24+1.1100×2410.0010×24其結(jié)果要進(jìn)行規(guī)格化,將尾數(shù)向右移1位,階碼加1。即規(guī)格化的結(jié)果為1.0001×25。在圖2.18標(biāo)出了上述例子在每一個(gè)過(guò)程段和鎖存器L中保存的流水運(yùn)算結(jié)果值。0.0110×2497第2章運(yùn)算方法和運(yùn)算器課件98[例29]上述演示中,(1)假設(shè)每個(gè)過(guò)程段所需的時(shí)間為:求階差τ1=70ns,對(duì)階τ2=60ns,相加τ3=90ns,規(guī)格化τ4=80ns,緩沖寄存器L的延時(shí)為tl=10ns,求:(1)4級(jí)流水線加法器的加速比為多少?(2)如果每個(gè)過(guò)程段的時(shí)間相同,即都為75ns,(包括緩沖寄存器時(shí)間),加速比是多少?[例29]上述演示中,(1)假設(shè)每個(gè)過(guò)程段所需的時(shí)間為:求99[解]:(1)加法器的流水線時(shí)鐘周期至少為:τ=90ns+10ns=100ns如果采用同樣的邏輯電路,但不是流水線方式,則浮點(diǎn)加法所需的時(shí)間為:τ1+τ2+τ3+τ4=300ns
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度安徽省租賃房屋租賃合同解除協(xié)議2篇
- 二零二五版多功能會(huì)議場(chǎng)地租賃服務(wù)合同模板3篇
- 二零二五版廢渣運(yùn)輸合同環(huán)保評(píng)估與整改方案3篇
- 二零二五版公積金貸款個(gè)人公積金提取借款合同3篇
- 二零二五版工業(yè)自動(dòng)化生產(chǎn)線改造項(xiàng)目承包合同范本3篇
- 二零二五版房屋屋頂光伏發(fā)電系統(tǒng)檢測(cè)維修合同范本3篇
- 二零二五年度智慧能源管理系統(tǒng)集成合同2篇
- 二零二五年機(jī)床設(shè)備采購(gòu)與客戶(hù)項(xiàng)目整體解決方案合同3篇
- 二零二五年抖音廣告創(chuàng)意策劃與投放服務(wù)合同3篇
- 二零二五年新型環(huán)保建材生產(chǎn)與建筑垃圾回收處理合同3篇
- 常用靜脈藥物溶媒的選擇
- 當(dāng)代西方文學(xué)理論知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋武漢科技大學(xué)
- 2024年預(yù)制混凝土制品購(gòu)銷(xiāo)協(xié)議3篇
- 2024-2030年中國(guó)高端私人會(huì)所市場(chǎng)競(jìng)爭(zhēng)格局及投資經(jīng)營(yíng)管理分析報(bào)告
- GA/T 1003-2024銀行自助服務(wù)亭技術(shù)規(guī)范
- 《消防設(shè)備操作使用》培訓(xùn)
- 新交際英語(yǔ)(2024)一年級(jí)上冊(cè)Unit 1~6全冊(cè)教案
- 2024年度跨境電商平臺(tái)運(yùn)營(yíng)與孵化合同
- 2024年電動(dòng)汽車(chē)充電消費(fèi)者研究報(bào)告-2024-11-新能源
- 湖北省黃岡高級(jí)中學(xué)2025屆物理高一第一學(xué)期期末考試試題含解析
- 上海市徐匯中學(xué)2025屆物理高一第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
評(píng)論
0/150
提交評(píng)論