計(jì)算機(jī)組成原理第4章 浮點(diǎn)數(shù)運(yùn)算方法_第1頁
計(jì)算機(jī)組成原理第4章 浮點(diǎn)數(shù)運(yùn)算方法_第2頁
計(jì)算機(jī)組成原理第4章 浮點(diǎn)數(shù)運(yùn)算方法_第3頁
計(jì)算機(jī)組成原理第4章 浮點(diǎn)數(shù)運(yùn)算方法_第4頁
計(jì)算機(jī)組成原理第4章 浮點(diǎn)數(shù)運(yùn)算方法_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章浮點(diǎn)運(yùn)算規(guī)則浮點(diǎn)加減運(yùn)算浮點(diǎn)乘除法運(yùn)算1編輯課件浮點(diǎn)數(shù)的表示機(jī)器中任何一個(gè)浮點(diǎn)數(shù)可寫成:Mx為浮點(diǎn)數(shù)的尾數(shù),一般為絕對(duì)值小于1的規(guī)格化數(shù)(補(bǔ)碼表示時(shí)允許為-1),機(jī)器中可用原碼或補(bǔ)碼表示。Ex為浮點(diǎn)數(shù)的階碼,一般為整數(shù),機(jī)器中大多用補(bǔ)碼或移碼表示。R為浮點(diǎn)數(shù)的基數(shù),常用2、8、10或16表示。以下以基數(shù)為2進(jìn)行討論。2編輯課件浮點(diǎn)加減運(yùn)算設(shè)兩個(gè)浮點(diǎn)數(shù)尾數(shù)的加減運(yùn)算規(guī)則與定點(diǎn)數(shù)完全相同。當(dāng)兩浮點(diǎn)數(shù)階碼不等時(shí),因兩尾數(shù)小數(shù)點(diǎn)的實(shí)際位置不一樣,尾數(shù)部分無法直接進(jìn)行加減運(yùn)算。如:x=0.123×103y=4.56×102=0.456×1033編輯課件浮點(diǎn)加減運(yùn)算的步驟對(duì)階,使兩數(shù)的小數(shù)點(diǎn)位置對(duì)齊。尾數(shù)求和,將對(duì)階后的兩尾數(shù)按定點(diǎn)加減運(yùn)算規(guī)則求和(差)。規(guī)格化,為增加有效數(shù)字的位數(shù),提高運(yùn)算精度,必須將求和(差)后的尾數(shù)規(guī)格化。舍入,為提高精度,要考慮尾數(shù)右移時(shí)丟失的數(shù)值位。判斷結(jié)果,即判斷結(jié)果是否溢出4編輯課件1.對(duì)階這一步操作是將兩個(gè)加數(shù)的小數(shù)點(diǎn)對(duì)齊。小階向大階看齊,階碼較小的數(shù),其尾數(shù)向右移,每右移一位,階碼加“1”,直到兩數(shù)階碼相同為止。尾數(shù)右移時(shí)可能會(huì)發(fā)生數(shù)碼丟失,影響精度。

5編輯課件例:兩浮點(diǎn)數(shù)x=0.1101×201,y=-(0.1010)×211,求x+y。

(1)首先寫出x、y在計(jì)算機(jī)中的補(bǔ)碼表示。[x]補(bǔ)=00,01;00.1101,[y]補(bǔ)=00,11;11.0110階碼EX尾數(shù)MxEyMy(2)在進(jìn)行加法前,必須先對(duì)階,故先求階差:[ΔE]補(bǔ)=[Ex]補(bǔ)-[Ey]補(bǔ)=[Ex]補(bǔ)+[-Ey]補(bǔ)=00,01+11,01=11,10即ΔE=-2,表示x的階碼比y的階碼小,再按小階向大階看齊的原則,將x的尾數(shù)右移兩位,其階碼加2。得[x]’補(bǔ)=00,11;00.0011(01)此時(shí),ΔE=0,表示對(duì)階完畢。6編輯課件2.尾數(shù)求和將對(duì)階后的兩個(gè)尾數(shù)按定點(diǎn)加(減)運(yùn)算規(guī)則進(jìn)行運(yùn)算。注意:并不考慮溢出——溢出由階碼決定

接上例,兩數(shù)對(duì)階后得:[x]ˊ補(bǔ)=00,11;00.0011(01)[y]補(bǔ)=00,11;11.0110則[Mx+My]補(bǔ)=00.0011+11.0110=11.1001(01)即[x+y]補(bǔ)=00,11;11.1001(01)7編輯課件3.規(guī)格化如果采用雙符號(hào)位的補(bǔ)碼,則當(dāng)M>0時(shí),其補(bǔ)碼規(guī)格化形式為[M]補(bǔ)=00.1××…×當(dāng)M<0時(shí),其補(bǔ)碼規(guī)格化形式為[M]補(bǔ)=11.0××…×但對(duì)M<0時(shí),有兩種情況需特殊處理。M=-1/2,則[M]補(bǔ)=11.100…0。對(duì)于補(bǔ)碼而言,它不滿足于上面的規(guī)格化表示式。為了便于硬件判斷,特規(guī)定-1/2是規(guī)格化的數(shù)(對(duì)補(bǔ)碼而言)。M=-1,則[M]補(bǔ)=11.000…0。因小數(shù)補(bǔ)碼允許表示-1,故-1視為規(guī)格化的數(shù)。8編輯課件規(guī)格化又分左規(guī)和右規(guī)兩種。左規(guī)。當(dāng)尾數(shù)出現(xiàn)00.0××…×或11.1××…×?xí)r,需左規(guī)。左規(guī)時(shí)尾數(shù)左移一位,階碼減1,直到符合補(bǔ)碼規(guī)格化表示式為止。右規(guī)。當(dāng)尾數(shù)出現(xiàn)01.××…×或10.××…×?xí)r,表示尾數(shù)溢出,這在定點(diǎn)加減運(yùn)算中是不允許的,但在浮點(diǎn)運(yùn)算中這不算溢出,可通過右規(guī)處理。右規(guī)時(shí)尾數(shù)右移一位,階碼加1。接上例,求和結(jié)果為[x+y]補(bǔ)=00,11;11.1001(01)尾數(shù)的第一數(shù)值位與符號(hào)位相同,需左規(guī),即將其左移一位,同時(shí)階碼減1,得[x+y]補(bǔ)=00,10;(1)11.0010(1)。9編輯課件4.舍入在對(duì)階和右規(guī)的過程中,可能會(huì)將尾數(shù)的低位丟失,引起誤差,影響精度,為此可用舍入法來提高尾數(shù)的精度。進(jìn)行舍入時(shí)應(yīng)滿足兩個(gè)要求首先,對(duì)每一次運(yùn)算的結(jié)果而言,要保證誤差不超過給定的范圍。比如,設(shè)機(jī)器尾數(shù)長(zhǎng)39位,要求每次運(yùn)算誤差不超過末位(即第39位)的“1”,即小于2-39。其次在大量的運(yùn)算過程中要保證誤差的平衡,即在每一次運(yùn)算時(shí),由于舍入處理,可能使運(yùn)算結(jié)果增大了,也可能減少了。但總的說來,增加和減少的機(jī)會(huì)必需是均等的,否則會(huì)產(chǎn)生很大的積累誤差。10編輯課件4.舍入—常用的舍入方法“0舍1入”法:“0舍1入”法類似于十進(jìn)制運(yùn)算中的“四舍五入”法,即在尾數(shù)右移時(shí),被移去的最高數(shù)值位為0,則舍去;被移去的最高數(shù)值位為1,則在尾數(shù)的末位加1。這樣做可能使尾數(shù)又溢出,此時(shí)需再做一次右規(guī)。特點(diǎn):最大誤差是最低位上的-1/2到接近于1/2之間,正誤差可以和負(fù)誤差抵消。屬于比較理想的方法,但實(shí)現(xiàn)起來比較復(fù)雜。

如上例:

[x+y]補(bǔ)=00,10;(1)11.0010(1)=00,10;11.0011“恒置1”法:尾數(shù)右移時(shí),不論丟掉的最高數(shù)值位是“1”或“0”,都使右移后的尾數(shù)末位恒置“1”。這種方法同樣有使尾數(shù)變大和變小的兩種可能。特點(diǎn):誤差范圍擴(kuò)大,但正負(fù)誤差可以相互抵消,實(shí)現(xiàn)相對(duì)容易。11編輯課件5.溢出判斷在浮點(diǎn)規(guī)格化中已指出,當(dāng)尾數(shù)之和(差)出現(xiàn)01.××…×或10.××…×?xí)r,并不表示溢出,只有將此數(shù)右規(guī)后,再根據(jù)階碼來判斷浮點(diǎn)運(yùn)算結(jié)果是否溢出。若機(jī)器數(shù)為補(bǔ)碼,尾數(shù)為規(guī)格化形式,并假設(shè)階符取2位,階碼取7位,數(shù)符取2位,尾數(shù)取n位,則它們能表示的補(bǔ)碼在數(shù)軸上的表示范圍如下圖。A最小負(fù)數(shù)2+127×(-1)

B最大正數(shù)2+127×(1-2-n)

a最大負(fù)數(shù)2-128×(-2-1-2-n)

b最小正數(shù)2-128×2-1

12編輯課件浮點(diǎn)機(jī)的溢出與否可由階碼的符號(hào)決定。即階碼[E]補(bǔ)=01,××…×為上溢。階碼[E]補(bǔ)=10,××…×為下溢,按機(jī)器零處理。當(dāng)階符為“01”時(shí),需做溢出處理。下溢時(shí),浮點(diǎn)數(shù)值趨于零,故機(jī)器不做溢出處理,僅把它作為機(jī)器零。上溢時(shí)才是浮點(diǎn)數(shù)真正溢出,機(jī)器需停止運(yùn)算,作溢出中斷處理。一般所說的浮點(diǎn)溢出,均是指上溢。13編輯課件例:設(shè)x=2-101×(-0.101000),y=2-100×(+0.111011),并假設(shè)階符取2位,階碼取3位,數(shù)符取2位,尾數(shù)取6位,求x-y。

解:由x=2-101×(-0.101000),y=2-100×(+0.111011)得[x]補(bǔ)=11,011;11.011000,[y]補(bǔ)=11,100;00.111011①對(duì)階[ΔE]補(bǔ)=[Ex]補(bǔ)-[Ey]補(bǔ)=11,011+00,100=11,111即ΔE=-1,則x的尾數(shù)向右移一位,階碼相應(yīng)加1,即[x]ˊ補(bǔ)=11,100;11.101100②求和[Mx]ˊ補(bǔ)-[My]補(bǔ)=[Ex]補(bǔ)+[-Ey]補(bǔ)=11.101100+11.000101=10.110001即[x-y]補(bǔ)=11,100;10.110001尾數(shù)符號(hào)位出現(xiàn)“10”,需右規(guī)。14編輯課件(續(xù)):即[x-y]補(bǔ)=11,100;10.110001,尾數(shù)符號(hào)位出現(xiàn)“10”,需右規(guī)。③規(guī)格化右規(guī)后得[x-y]補(bǔ)=11,101;(1)1.011000(1)④舍入處理采用0舍1入法,其尾數(shù)右規(guī)時(shí)末位丟1,則[x-y]補(bǔ)=11,101;11.011001⑤溢出判斷經(jīng)舍入處理后階符為“11”,不溢出,故最終結(jié)果:x-y=2-011×(-0.100111)15編輯課件浮點(diǎn)數(shù)加減運(yùn)算流程圖16編輯課件浮點(diǎn)加減法運(yùn)算大型計(jì)算機(jī)和高檔微型機(jī)中,浮點(diǎn)加減法運(yùn)算是由硬件完成的。低檔的微型機(jī)浮點(diǎn)加減法運(yùn)算是由軟件完成的,但無論用硬件實(shí)現(xiàn)或由軟件實(shí)現(xiàn)加減法運(yùn)算,基本原理是一致的。浮點(diǎn)加減法運(yùn)算要經(jīng)過對(duì)階、尾數(shù)求和、規(guī)格化、舍入和溢出判斷五步操作。其中尾數(shù)運(yùn)算與定點(diǎn)加減法運(yùn)算相同,而對(duì)階、舍入、規(guī)格化和溢出判斷,則是浮點(diǎn)加減法與定點(diǎn)加減法運(yùn)算不同的操作。在補(bǔ)碼浮點(diǎn)運(yùn)算中,階碼與尾數(shù)可以都用補(bǔ)碼表示。在硬件實(shí)現(xiàn)的運(yùn)算中,階符和數(shù)符常常采取雙符號(hào)位,正數(shù)數(shù)符用00表示,負(fù)數(shù)數(shù)符用11表示。17編輯課件18編輯課件浮點(diǎn)乘除法運(yùn)算設(shè)兩浮點(diǎn)數(shù)則階碼運(yùn)算尾數(shù)運(yùn)算19編輯課件1.階碼運(yùn)算若階碼用補(bǔ)碼運(yùn)算,乘積的階碼為[jx]補(bǔ)+[jy]補(bǔ),商的階碼為[jx]補(bǔ)-[jy]補(bǔ)。若階碼用移碼運(yùn)算,則[jx]移=2n+jx-2n≤jx<2n(n為整數(shù)的位數(shù))[jy]移=2n+jy-2n≤jy<2n(n為整數(shù)的位數(shù))

所以[jx]移+[jy]移=2n+jx+2n+jy=2n+(2n+(jx+jy))=2n+[jx+jy]移可見,直接用移碼求階碼和時(shí),其最高位多加了一個(gè)2n,要得到移碼形式的結(jié)果,必須減去2n。

20編輯課件由于同一個(gè)真值的移碼和補(bǔ)碼其數(shù)值部分完全相同,而符號(hào)位正好相反,即[jy]補(bǔ)=2n+1+jy(mod2n+1)因此如果求階碼和可用下式完成:

[jx]移+[jy]補(bǔ)=2n+jx+2n+1+jy=2n+[2n+(jx+jy)]=[jx+jy]移(mod2n+1)則直接可得移碼形式。

同理,當(dāng)作除法運(yùn)算時(shí),商的階碼可用下式完成:

[jx]移+[-jy]補(bǔ)=[jx-jy]移21編輯課件階碼運(yùn)算階碼運(yùn)算方法:進(jìn)行移碼加減運(yùn)算時(shí),只需將移碼表示的加數(shù)或減數(shù)的符號(hào)位取反(即變?yōu)檠a(bǔ)碼),然后進(jìn)行運(yùn)算,就可得階和(或階差)的移碼。溢出判斷:在原有移碼符號(hào)位的前面(即高位)再增加位符號(hào)位,并規(guī)定該位恒用“0”表示,而加數(shù)或減數(shù)的補(bǔ)碼的兩位符號(hào)位則一致。溢出的條件是運(yùn)算結(jié)果移碼的最高符號(hào)位為1。此時(shí)若低位符號(hào)位為0,表示上溢;低位符號(hào)位為1,表示下溢。如果運(yùn)算結(jié)果移碼的最高符號(hào)位為0,即表明沒溢出。此時(shí)若低位符號(hào)位為1,表明結(jié)果為正:低位符號(hào)位為0,表示結(jié)果為負(fù)。22編輯課件階碼運(yùn)算溢出判斷舉例:設(shè)階碼取三位(不含符號(hào)位),

當(dāng)jx=+101,jy=+110時(shí),有[jx]移=01,101,[jy]補(bǔ)=00,110則:[jx+jy]移=[jx]移+[jy]補(bǔ)=01,101+00,110=10,001結(jié)果上溢[jx-jy]移=[jx]移+[-jy]補(bǔ)=01,101+11,100=01,001結(jié)果+123編輯課件2.尾數(shù)運(yùn)算(1)浮點(diǎn)乘法尾數(shù)運(yùn)算(2)浮點(diǎn)除法尾數(shù)運(yùn)算24編輯課件(1)浮點(diǎn)乘法尾數(shù)運(yùn)算預(yù)處理:檢測(cè)兩個(gè)尾數(shù)中是否有一個(gè)為0,若有一個(gè)為0,乘積必為0,不再作其他操作;如果兩尾數(shù)均不為0,則可進(jìn)行乘法運(yùn)算。相乘:兩個(gè)浮點(diǎn)數(shù)的尾數(shù)相乘可以采用定點(diǎn)小數(shù)的任何一種乘法運(yùn)算來完成。規(guī)格化:相乘結(jié)果可能要進(jìn)行左規(guī),左規(guī)時(shí)調(diào)整階碼后如果發(fā)生階下溢,則作機(jī)器零處理;如果發(fā)生階上溢,則作溢出處理。25編輯課件尾數(shù)截?cái)啵何矓?shù)相乘會(huì)得到一個(gè)雙倍字長(zhǎng)的結(jié)果,若限定只取1倍字長(zhǎng),則乘積的若干低位將會(huì)丟失。如何處理丟失的各位值,通常有兩種辦法。截?cái)嗵幚恚簾o條件的丟掉正常尾數(shù)最低位之后的全部數(shù)值。舍入處理:按浮點(diǎn)加減運(yùn)算討論的舍入原則進(jìn)行舍入處理。

26編輯課件(1)浮點(diǎn)乘法尾數(shù)運(yùn)算舍入處理對(duì)于原碼,采用0舍1入法時(shí),不論其值是正數(shù)或負(fù)數(shù),“舍”使數(shù)的絕對(duì)值變小,“入”使數(shù)的絕對(duì)值變大。對(duì)于補(bǔ)碼,采用0舍1入法時(shí),若丟失的位不是全0,對(duì)正數(shù)來說,“舍”、“入”的結(jié)果與原碼正好相同;對(duì)負(fù)數(shù)來說,“舍”、“入”的結(jié)果與原碼分析正好相反,即“舍”使絕對(duì)值變大,“入”使絕對(duì)值變小。為了使原碼、補(bǔ)碼舍入處理后的結(jié)果相同,對(duì)負(fù)數(shù)的補(bǔ)碼可采用如下規(guī)則進(jìn)行舍入處理。①當(dāng)丟失的各位均為0時(shí),不必舍入;②當(dāng)丟失的各位數(shù)中的最高位為0時(shí),且以下各位不全為0;或丟失的各位數(shù)中的最高位為1,且以下各位均為0時(shí),則舍去被丟失的各位;③當(dāng)丟失的各位數(shù)中的最高位為1,且以下各位又不全為0時(shí);則在保留尾數(shù)的最末位加1修正。

27編輯課件舍入操作實(shí)例[x]補(bǔ)舍入前舍入后對(duì)應(yīng)的真值1.011100001.011110001.011101011.011111001.0111(不舍不入)1.0111(舍)1.0111(舍)1.1000(入)-0.1001-0.1001-0.1001-0.1000對(duì)負(fù)數(shù)的補(bǔ)碼可采用如下規(guī)則進(jìn)行舍入處理。①當(dāng)丟失的各位均為0時(shí),不必舍入;②當(dāng)丟失的各位數(shù)中的最高位為0時(shí),且以下各位不全為0;或丟失的各位數(shù)中的最高位為1,且以下各位均為0時(shí),則舍去被丟失的各位;③當(dāng)丟失的各位數(shù)中的最高位為1,且以下各位又不全為0時(shí);則在保留尾數(shù)的最末位加1修正。

[x]原舍入前舍入后對(duì)應(yīng)的真值1.100100001.100010001.100010111.100001001.1001(不舍不入)1.1001(入)1.1001(入)1.1000(舍)-0.1001-0.1001-0.1001-0.100028編輯課件浮點(diǎn)乘法運(yùn)算舉例例:設(shè)機(jī)器數(shù)階碼取3位(不含階符),尾數(shù)取7位(不舍數(shù)符),要求階碼用移碼運(yùn)算,尾數(shù)用補(bǔ)碼運(yùn)算,最后結(jié)果保留1倍字長(zhǎng)。設(shè)x=2-101×0.0110011),y=2011×(-0.1110010)求:x?y。解:[x]補(bǔ)=11,011;00.0110011[y]補(bǔ)=00,011;11.0001110①階碼運(yùn)算[jx]移=00,011,[jy]補(bǔ)=00,011[jx+jy]移=[jx]移+[jy]補(bǔ)=00,011+00,011=00,110對(duì)應(yīng)真值-229編輯課件浮點(diǎn)乘法運(yùn)算舉例(續(xù))②尾數(shù)相乘(采用Booth算法)其過程如下表所示。部分積乘數(shù)yn+1說明00.0000000

00.0000000

+11.10011011.0001110

010001110

0→1位

+[-Sx]補(bǔ)11.1001101

11.1100110

11.1110011

11.1111001

+00.01100110

10100011

01010001

10101000111→1位

→1位

→1位

+[Sx]補(bǔ)00.0101100

00.0010110

00.0001011

00.0000101

+11.10011011010

01010100

00101010

100101010

0

0→1位

→1位

→1位+

+[-Sx]補(bǔ)11.10100101001010

相乘的結(jié)果為:[Sx?Sy]補(bǔ)=11.10100101001010

30編輯課件浮點(diǎn)乘法運(yùn)算舉例(續(xù))即[x?y]補(bǔ)=11,110;11.10100101001010③規(guī)格化。左規(guī)后[x?y]補(bǔ)=11,101;11.01001010010100

④舍入處理。尾數(shù)為負(fù),按負(fù)數(shù)的補(bǔ)碼的舍入規(guī)則,取1倍字長(zhǎng),丟失的7位為0010100,應(yīng)“舍”。故最終的結(jié)果為:[x?y]補(bǔ)=11,101;11.0100101即:xy=2-011×(-0.1011011)

31編輯課件(2)浮點(diǎn)除法尾數(shù)運(yùn)算步驟:檢測(cè)被除數(shù)是否為0,若為0,則商為0;再檢測(cè)除數(shù)是否為0,若為0,則商為無窮大,另作處理。若兩數(shù)均不為0,則可進(jìn)行除法運(yùn)算。兩浮點(diǎn)數(shù)尾數(shù)相除同樣可采取定點(diǎn)小數(shù)的任何一種除法運(yùn)算來完成。對(duì)已規(guī)格化的尾數(shù),為了防止除法結(jié)果溢出,可先比較被除數(shù)和除數(shù)的絕對(duì)值,如果被除數(shù)的絕對(duì)值大于除數(shù)的絕對(duì)值,則先將被除數(shù)右移一位,其階碼加1,再作尾數(shù)相除。此時(shí)所得結(jié)果必然是規(guī)格化的定點(diǎn)小數(shù)。

32編輯課件浮點(diǎn)除法尾數(shù)運(yùn)算—例題例:x=2101×0.1001,y=2011×(-0.1101),按補(bǔ)碼浮點(diǎn)運(yùn)算方法求x/y。解:[x]補(bǔ)=00,101;00.1001,[y]補(bǔ)=00,011;11.0011,[-Sy]補(bǔ)=00.1101①階碼相減。[jx]補(bǔ)-[jy]補(bǔ)=00,101-00,011=00,101+11,101=00,010

②尾數(shù)相除(采用補(bǔ)碼除法)。33編輯課件浮點(diǎn)除法尾數(shù)運(yùn)算—例題(續(xù))②尾數(shù)相除(采用補(bǔ)碼除法)。結(jié)果為[Sx/Sy]=1.0101③規(guī)格化。尾數(shù)相除結(jié)果已為規(guī)格化數(shù)。所以[x/y]補(bǔ)=00,010;11.0101,則[x/y]=2010×(-0.1011)被除數(shù)(余數(shù))商說明00.1001

+11.0011[Sx]補(bǔ)與[Sy]補(bǔ)異號(hào),+[Sy]補(bǔ)11.1100

11.1000

+00.1101

1

1[R]補(bǔ)與[Sy]補(bǔ)同號(hào),上商1

←1位

+[-Sy]補(bǔ)00.0101

00.1010

+11.001110

10[R]補(bǔ)與[Sy]補(bǔ)異號(hào),上商0

←1位

+[Sy]補(bǔ)11.1101

11.1010

+00.1101101

101[R]補(bǔ)與[Sy]補(bǔ)同號(hào),上商1

←1位

+[-Sy]補(bǔ)00.0111

+00.11101010

10101[R]補(bǔ)與[Sy]補(bǔ)異號(hào),上商0

←1位,末位商恒置134編輯課件浮點(diǎn)乘除法運(yùn)算兩浮點(diǎn)數(shù)相乘其乘積的階碼為相乘兩數(shù)階碼之和,其尾數(shù)應(yīng)為相乘兩數(shù)的尾數(shù)之積。兩個(gè)浮點(diǎn)數(shù)相除,商的階碼為被除數(shù)的階碼減去除數(shù)的階碼得到的差,尾數(shù)為被除數(shù)的尾數(shù)除以除數(shù)的尾數(shù)所得的商。參加運(yùn)算的兩個(gè)數(shù)都為規(guī)格化浮點(diǎn)數(shù),乘除運(yùn)算都可能出現(xiàn)結(jié)果不滿足規(guī)格化要求的問題,因此也必須進(jìn)行規(guī)格化、舍入和溢出判斷等操作。規(guī)格化時(shí)要修改階碼。35編輯課件浮點(diǎn)運(yùn)算所需的硬件配置浮點(diǎn)運(yùn)算器主要由兩個(gè)定點(diǎn)運(yùn)算部件組成:階碼運(yùn)算部件:用來完成階碼加、減,以及控制對(duì)階時(shí)小階的尾數(shù)右移次數(shù)和規(guī)格化時(shí)對(duì)階碼的調(diào)整。尾數(shù)運(yùn)算部件:用來完成尾數(shù)的四則運(yùn)算以及判斷尾數(shù)是否已規(guī)格化。此外,還需有判斷運(yùn)算結(jié)果是否溢出的電路等?,F(xiàn)代計(jì)算機(jī)可把浮點(diǎn)運(yùn)算部件做成獨(dú)立的選件,稱為協(xié)處理器。浮點(diǎn)協(xié)處理器Intel80287可與Intel80286或80386微處理器配合處理浮點(diǎn)數(shù)的算術(shù)運(yùn)算和多種函數(shù)計(jì)算。也可用編程的辦法來完成浮點(diǎn)運(yùn)算,不過這會(huì)影響機(jī)器的運(yùn)算速度。36編輯課件2算術(shù)邏輯單元ALU電路、快速進(jìn)位鏈37編輯課件ALU電路Ai和Bi為輸入變量;Ki為控制信號(hào),Ki的不同取值可決定該電路作哪一種算術(shù)運(yùn)算或哪一種邏輯運(yùn)算;Fi是輸出函數(shù)。

38編輯課件74181—ALU集成電路芯片74181是能完成四位二進(jìn)制代碼的算邏運(yùn)算部件,其外特性如下圖所示。正邏輯工作方式負(fù)邏輯工作方式正邏輯中,“1”用高電平表示,“0”用低電平表示,而負(fù)邏輯剛好相反。正邏輯與負(fù)邏輯的關(guān)系為:正邏輯的“與”到負(fù)邏輯中變?yōu)椤盎颉保础?”、”·”互換。39編輯課件74181—ALU集成電路芯片注意:ALU為組合邏輯電路,因此實(shí)際應(yīng)用ALU時(shí),其輸入端口A和B必須與鎖存器相連,而且在運(yùn)算的過程中鎖存器的內(nèi)容是不變的。其輸出也必須送至寄存器中保存。40編輯課件29C101芯片將寄存器和ALU集成導(dǎo)一個(gè)芯片內(nèi)。41編輯課件快速進(jìn)位鏈問題:隨著操作數(shù)位數(shù)的增加,電路中進(jìn)位的速度對(duì)運(yùn)算時(shí)間的影響也越大。并行加法器——多位加法器串行進(jìn)位鏈并行進(jìn)位鏈單重分組跳躍進(jìn)位即:?jiǎn)渭?jí)分組雙重分組跳躍進(jìn)位42編輯課件快速進(jìn)位鏈問題:隨著操作數(shù)位數(shù)的增加,電路中進(jìn)位的速度對(duì)運(yùn)算時(shí)間的影響也越大。并行加法器——多位加法器串行進(jìn)位鏈并行進(jìn)位鏈單重分組跳躍進(jìn)位即:?jiǎn)渭?jí)分組雙重分組跳躍進(jìn)位43編輯課件半加器(halfadder)COSCAB不考慮進(jìn)位將兩個(gè)一位二進(jìn)制數(shù)A和B相加。44編輯課件全加器(fulladder)其輸入不僅有兩個(gè)1位二進(jìn)制數(shù)相加,還需加上低位送來的進(jìn)位。COSCABCICI45編輯課件雙全加器74LS182的1/2邏輯圖46編輯課件1.并行(多位)加法器n+1個(gè)全加器級(jí)聯(lián),就組成了一個(gè)n+1位的并行加法器(行波進(jìn)位加法器)。由于每位全加器的進(jìn)位輸出是高一位全加器的進(jìn)位輸入,因此當(dāng)全加器有進(jìn)位時(shí),這種一級(jí)一級(jí)傳遞進(jìn)位的過程,將會(huì)大大影響運(yùn)算速度。47編輯課件并行加法器分析:由全加器的邏輯表達(dá)式可知,Ci進(jìn)位有兩部分組成:本地進(jìn)位AiBi,可記作di,與低位無關(guān);傳遞進(jìn)位(Ai+Bi)Ci-1,與低位有關(guān),稱(Ai+Bi)為傳遞條件,記作ti,則:由Ci的組成可以將逐級(jí)傳遞進(jìn)位的結(jié)構(gòu)轉(zhuǎn)換為以進(jìn)位鏈的方式實(shí)現(xiàn)快速進(jìn)位。目前進(jìn)位鏈通常采用串行和并行兩種。48編輯課件2.串行進(jìn)位鏈串行進(jìn)位鏈?zhǔn)侵覆⑿屑臃ㄆ髦械倪M(jìn)位信號(hào)采用串行傳遞。以四位并行加法器為例,每一位的進(jìn)位表達(dá)式可示為:由上式可見,采用與非邏輯電路可方便地實(shí)現(xiàn)進(jìn)位傳遞,如下圖所示。注意:A+B=-(-A*-B)49編輯課件串行進(jìn)位鏈延遲時(shí)間分析:若設(shè)與非門的級(jí)延遲時(shí)間為ty,那么當(dāng)di、ti形成后,共需8ty使可產(chǎn)生最高位的進(jìn)位。實(shí)際上每增加一位全加器,進(jìn)位時(shí)間就會(huì)增加2ty。n位全加器的最長(zhǎng)進(jìn)位時(shí)間為2nty。

50編輯課件3.并行進(jìn)位鏈并行進(jìn)位鏈?zhǔn)侵覆⑿屑臃ㄆ髦械倪M(jìn)位信號(hào)是同時(shí)產(chǎn)生的,又稱先行進(jìn)位、跳躍進(jìn)位等。超前進(jìn)位加法器通常并行進(jìn)位鏈有單重分組和雙重分組兩種實(shí)現(xiàn)方案。理想的并行進(jìn)位鏈?zhǔn)莕位全加器的n位進(jìn)位同時(shí)產(chǎn)生,但實(shí)際實(shí)現(xiàn)有困難。51編輯課件(1)單重分組跳躍進(jìn)位單重分組跳躍進(jìn)位:將M位全加器分成若干小組,小組內(nèi)的進(jìn)位同時(shí)產(chǎn)生,小組與小組之間采用串行進(jìn)位。又稱為“組內(nèi)并行、組間串行”進(jìn)位。以四位并行加法器為例,對(duì)其進(jìn)位表示式稍作變換,便可獲得并行進(jìn)位表達(dá)式:52編輯課件四位一組并行進(jìn)位對(duì)應(yīng)的邏輯圖為:設(shè)與或非門的級(jí)延遲時(shí)間為1.5ty,與非門的級(jí)延遲時(shí)間仍為1ty,則di、ti形成后,只需2.5ty就可產(chǎn)生全部進(jìn)位。

53編輯課件單重分組跳躍進(jìn)位如果將16位的全加器按四位一組分組,便可得單重分組跳躍進(jìn)位鏈框圖在di、ti形成后,經(jīng)2.5ty可產(chǎn)生C3、C2、C3、C3四個(gè)進(jìn)位信息,經(jīng)10ty就可產(chǎn)生全部進(jìn)位。如前所示,n=16的串行進(jìn)位鏈的全部進(jìn)位時(shí)間為32ty,則16位全加器的單重分組方案進(jìn)位時(shí)間僅約為串行進(jìn)位鏈的三分之一。54編輯課件單重分組跳躍進(jìn)位缺點(diǎn):但隨著n的增大,其優(yōu)勢(shì)便很快減弱。例如,n=64,4位分組,共為16組:組間有16位串行進(jìn)位,在di、ti形成后,還需經(jīng)16×2.5=40ty才能產(chǎn)生全部進(jìn)位,顯然進(jìn)位時(shí)間太長(zhǎng)。如果能使組間進(jìn)位也同時(shí)產(chǎn)生,必然會(huì)更大地提高進(jìn)位速度,這就是組內(nèi)、組間均為并行進(jìn)位的方案。55編輯課件(2)雙重分組跳躍進(jìn)位雙重分組跳躍進(jìn)位原理:將n位全加器分成幾個(gè)大組每個(gè)大組又包含幾個(gè)小組每個(gè)大組內(nèi)所包含的各個(gè)小組的最高位進(jìn)位是同時(shí)形成的,大組與大組間采用串行進(jìn)位。各小組最高位進(jìn)位是同時(shí)形成的,小組內(nèi)的其他進(jìn)位也是同時(shí)形成的故又有“組內(nèi)并行、組間并行”之稱注意:兩小組內(nèi)的其他進(jìn)位與小組的最高位進(jìn)位并不是同時(shí)產(chǎn)生的,。56編輯課件雙重分組跳躍進(jìn)位32位并行加法器雙重分組跳躍進(jìn)位鏈的框圖分兩大組,每個(gè)大組內(nèi)包含4個(gè)小組,第一大組內(nèi)的4個(gè)小組的最高位進(jìn)位C31、C27、C23、C19是同時(shí)產(chǎn)生的;第二大組內(nèi)4個(gè)小組的最高位進(jìn)位C15、C11、C7、C3也是同時(shí)產(chǎn)生的,而第二大組向第一大組的進(jìn)位C15采用串行進(jìn)位方式。

57編輯課件雙重分組跳躍進(jìn)位32位并行加法器雙重分組跳躍進(jìn)位鏈的框圖以第二大組為例,分析各進(jìn)位的邏輯關(guān)系。D8與本小組內(nèi)的di、ti有關(guān),不依賴外來進(jìn)C-1,故稱D8為第八小組的本地進(jìn)位,T8是將低位進(jìn)位C-1傳到高位小組的條件,故稱T8為第八小組的傳送條件。

58編輯課件雙重分組跳躍進(jìn)位32位并行加法器雙重分組跳躍進(jìn)位鏈的框圖以第二大組為例,分析各進(jìn)位的邏輯關(guān)系。同理可寫出第五、六、七小組的最高位進(jìn)位表達(dá)式:

59編輯課件雙重分組跳躍進(jìn)位進(jìn)一步展開又得:

可得大組跳躍進(jìn)位鏈:

由圖可見,當(dāng)Di、Ti(i=5~8)及外來進(jìn)位C-1形成后,再經(jīng)過2.5ty便可同時(shí)產(chǎn)生Cl5、C11,C7、C3。

60編輯課件雙重分組跳躍進(jìn)位Di和Ti它們都是由小組產(chǎn)生的,按其邏輯表達(dá)式可畫出相應(yīng)的電路如下圖所示。

每小組可產(chǎn)生本小組的本地進(jìn)位Di和傳送條件Ti以及組內(nèi)的各低位進(jìn)位,但不能產(chǎn)生組內(nèi)最高位進(jìn)位,即第五組形成D5、T5、C14、C

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論