專(zhuān)利名稱(chēng):浮點(diǎn)單元及計(jì)算指數(shù)的方法
技術(shù)領(lǐng)域:
一般地,本發(fā)明涉及浮點(diǎn)單元(FPU),更具體地講,涉及一種在指數(shù)邏輯中計(jì)算指數(shù)值的浮點(diǎn)單元。
背景技術(shù):
在處理系統(tǒng)中,對(duì)于浮點(diǎn)數(shù)的計(jì)算是數(shù)值計(jì)算的重要部分。浮點(diǎn)計(jì)算一般可以定義為計(jì)算在尾數(shù)點(diǎn)右邊可能具有有意義值的數(shù)。有許多表示和計(jì)算浮點(diǎn)計(jì)算的方法。
在IEEE(電子電氣工程師協(xié)會(huì))754二進(jìn)制浮點(diǎn)標(biāo)準(zhǔn)中,浮點(diǎn)數(shù)被表示為符號(hào)、指數(shù)以及尾數(shù)。指數(shù)被表示為偏置二進(jìn)制值。換而言之,指數(shù)“e”為二進(jìn)制值“E”減去預(yù)定偏置。在數(shù)學(xué)上這可以表示為值(E)=二進(jìn)制值(E)-偏置。對(duì)于n比特指數(shù),偏置值為(2(n-1-1)。例如,對(duì)于單精度數(shù)的8比特指數(shù),偏置為127。
FPU設(shè)計(jì)分為指數(shù)數(shù)據(jù)路徑與尾數(shù)數(shù)據(jù)路徑。到尾數(shù)數(shù)據(jù)路徑尾數(shù)加法器的輸入為A乘B加C的形式。指數(shù)數(shù)據(jù)路徑將指數(shù)Ea、Eb、Ec送入指數(shù)邏輯。
在現(xiàn)有FPU中,從指數(shù)邏輯產(chǎn)生指數(shù)值。根據(jù)加數(shù)與乘積之間的指數(shù)差異,以及在尾數(shù)加法器內(nèi)所計(jì)算并通過(guò)選定乘積線傳遞的某些符號(hào)信息,該指數(shù)是加數(shù)的指數(shù)(Ec)、乘積減偏置的指數(shù)(Ea+Eb-偏置)、或者乘積加偏移的指數(shù)(Ea+Eb+Δ)。
由此,根據(jù)指數(shù)差異,乘法器選擇三個(gè)值Ex、Ey、Ez,這些值在加在一起時(shí)產(chǎn)生適當(dāng)?shù)闹笖?shù)。這三個(gè)值被輸入3:2壓縮器,由此生成進(jìn)位與和。然后,在2:1加法器中將該進(jìn)位與和相加。然后,將求和結(jié)果送入指數(shù)調(diào)整與舍入邏輯(EAD)。該求和結(jié)果為值“e.”。求和結(jié)果為相應(yīng)于由尾數(shù)數(shù)據(jù)路徑中加法器提供的未舍入尾數(shù)的指數(shù)。根據(jù)規(guī)格化移位量,EAD邏輯調(diào)整該指數(shù),并且進(jìn)行指數(shù)舍入。
在FPU計(jì)算器中,還有被稱(chēng)為“前導(dǎo)零預(yù)測(cè)器”(LZA)的元件。LZA產(chǎn)生對(duì)于尾數(shù)加法器的結(jié)果中前導(dǎo)零的數(shù)目的估計(jì)。換而言之,當(dāng)指數(shù)邏輯確定所接收的指數(shù)值Ea、Eb以及Ec的加法時(shí),LZA預(yù)測(cè)將在尾數(shù)加法器的加法過(guò)程內(nèi)作為“前導(dǎo)零”出現(xiàn)的零的數(shù)目。然而,這只是一種預(yù)測(cè),并且LZA的預(yù)測(cè)可能比其所應(yīng)該的多1。不管結(jié)果如何,從指數(shù)邏輯(值“e”)的2:1加法器的輸出中減去LZA的輸出,并且產(chǎn)生第一可能值“e2”。
如上所述,由于LZA估計(jì)的性質(zhì),所以如果LZA的計(jì)數(shù)要準(zhǔn)確反映前導(dǎo)零的數(shù)目,則使用來(lái)自LZA的估計(jì)的指數(shù)“e2”可能比指數(shù)所應(yīng)該的小1。因此,EAD根據(jù)前導(dǎo)零實(shí)際數(shù)目的可能值兩者來(lái)計(jì)算指數(shù)。例如,e2=e-lza以及e2=e-lza+1。同時(shí),LZA與尾數(shù)加法器兩者的輸出被輸入LZA校正電路。然后,LZA校正電路發(fā)送信號(hào)lza_corr到EAD,該信號(hào)表示在EAD中使用較高還是較低的指數(shù)。EAD使用lza_corr來(lái)選擇兩個(gè)可能的e2值之一。換而言之,所選擇的值成為最終的e2值。
同時(shí),并且基本上并行地,規(guī)格化器(normalizer)-舍入器電路作為輸入接收尾數(shù)加法器的輸出以及LZA的輸出。規(guī)格化器得到任意數(shù)目浮點(diǎn)精度的所接收的計(jì)算值,諸如128比特,并且將其“規(guī)格化”,移去前導(dǎo)零。舍入器將規(guī)格化后的尾數(shù)舍入到“x”數(shù)目比特的標(biāo)準(zhǔn)形式,諸如對(duì)于單精度為23比特。在EAD中進(jìn)行對(duì)指數(shù)的舍入。
另外,在EAD內(nèi),在選擇了正確的e2值之后(這發(fā)生在接收到從來(lái)自LZA校正電路的lza_correcion信號(hào)來(lái)的lza_corr值之后),F(xiàn)PU檢測(cè)上溢、下溢、或者特殊值,諸如NAN(非數(shù)字)與Infinity(無(wú)窮)(這是指數(shù)舍入的一部分)。一般地,e2與“emax”值與“emin”兩者(這些值是常數(shù))比較,并且由此生成上溢與下溢信令值。這些上溢與下溢信令值被融入由EAD所生成的結(jié)果選擇信號(hào)。該結(jié)果選擇信號(hào)表示e2(以及已規(guī)格化尾數(shù))是否為有效值,或者可替換地,是否發(fā)生了上溢或下溢,或者是否要選擇特殊值(NAN、Infinity、零)。結(jié)果選擇信號(hào)與e2值輸入結(jié)果MUX。結(jié)果MUX在正常舍入后結(jié)果和某些諸如NAN、Infinity、零之類(lèi)的特殊值之間進(jìn)行選擇。根據(jù)由EAD所提供的結(jié)果選擇信號(hào)來(lái)進(jìn)行該選擇。
從EAD到結(jié)果MUX,在結(jié)果選擇信號(hào)中給出四個(gè)不同值之一。如果信號(hào)為上溢、下溢或者特殊值,則不使用e2信號(hào)。如果這些條件都不施加,則結(jié)果生成器使用e2值并且與規(guī)格化器/舍入器的規(guī)格化后輸出組合以生成最終的浮點(diǎn)和,該浮點(diǎn)和被作為已標(biāo)準(zhǔn)化浮點(diǎn)值生成,作為結(jié)果信號(hào)、EAD e2值以及規(guī)格化器/舍入器的函數(shù)。
舍入器可以進(jìn)行不同類(lèi)型的舍入處理。在完全符合IEEE的FPU中,設(shè)計(jì)支持四種舍入模式。這四種舍入模式是上舍入或下舍入到最接近可表示值的模式、總是向零舍入(對(duì)于正數(shù)與負(fù)數(shù)兩者)、總是向正無(wú)窮舍入(即對(duì)于正數(shù)與負(fù)數(shù)兩者向較高值舍入)、總是向負(fù)無(wú)窮舍入(即對(duì)于正數(shù)與負(fù)數(shù)兩者向較小值舍入)。在舍入步驟期間,舍入器與EAD一起檢查例外條件,諸如上溢、下溢以及非準(zhǔn)確結(jié)果指示。在流水線中很早就會(huì)檢測(cè)到非法運(yùn)算例外與被零除。換而言之,還有兩種IEEE例外,但是它們不由舍入器與EAD檢測(cè),可以在頭幾個(gè)周期內(nèi)根據(jù)輸入來(lái)檢測(cè)它們。在非規(guī)格化結(jié)果(其在二進(jìn)制點(diǎn)之前具有0并且只具有最小可能指數(shù))的情況下,需要修改規(guī)格化與舍入。根據(jù)設(shè)計(jì),這或者在將數(shù)據(jù)傳遞通過(guò)LZA、規(guī)格化器與舍入器時(shí)臨時(shí)完成,或者添加額外的周期來(lái)調(diào)整結(jié)果。
FPU或者在IEEE模式,這意味著結(jié)果完全符合IEEE,或者FPU只支持部分IEEE標(biāo)準(zhǔn),以提高FPU的性能。為了提高浮點(diǎn)運(yùn)算的性能,某些設(shè)計(jì)只支持部分IEEE標(biāo)準(zhǔn),即該設(shè)計(jì)只實(shí)現(xiàn)了一種舍入模式,并且非規(guī)格化結(jié)果被強(qiáng)制為零。高性能實(shí)時(shí)圖形應(yīng)用被調(diào)整來(lái)使用最簡(jiǎn)單的IEEE舍入模式向零舍入,也稱(chēng)為截?cái)?。此?lèi)具有截?cái)嗌崛氲目焖貴PU模式非常誘人,這是因?yàn)槲矓?shù)舍入被簡(jiǎn)化為截?cái)辔矓?shù),而其他三種IEEE舍入模式要求在舍入器中有增加尾數(shù)的遞增器。因此,具有截?cái)嗟目焖倌J郊铀倭松崛氩襟E。
然而,包括截?cái)嗌崛氲默F(xiàn)有技術(shù)快速模式計(jì)算存在問(wèn)題。在根據(jù)指數(shù)“e”與所輸出的LZA值計(jì)算“e2”、進(jìn)行LZA校正以確定“e2”的最終結(jié)果以及檢查上溢與下溢條件時(shí)可能具有顯著的處理時(shí)間。當(dāng)支持所有四種IEEE舍入模式時(shí),運(yùn)行作為L(zhǎng)ZA函數(shù)的EAD e2計(jì)算以及校正lza_corr與上溢/下溢檢查的時(shí)間可能不成問(wèn)題,這是因?yàn)橐?guī)格化器與舍入器需要時(shí)間來(lái)進(jìn)行深入細(xì)致的計(jì)算。然而,在快速模式下,在尾數(shù)路徑上沒(méi)有使用舍入器。在這種條件下,EAD的處理時(shí)間可能成為瓶頸。
因此,需要一種設(shè)計(jì)用于快速模式運(yùn)算的FPU系統(tǒng),其克服至少一些與設(shè)計(jì)用來(lái)在快速模式下運(yùn)算的現(xiàn)有FPU系統(tǒng)相關(guān)聯(lián)的缺點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明提供一種浮點(diǎn)單元(FPU),其生成校正信號(hào)與反相前導(dǎo)零信號(hào)。指數(shù)邏輯被配置來(lái)產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值。指數(shù)調(diào)整與舍入邏輯被配置來(lái)接收所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值。所述指數(shù)調(diào)整與舍入邏輯還被配置來(lái)向所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值添加所述反相前導(dǎo)零信號(hào),由此產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值。
本發(fā)明還提供一種計(jì)算指數(shù)的方法,包括接收第一、第二以及第三指數(shù)輸入值;接收前導(dǎo)零信號(hào);產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值;反相所述前導(dǎo)零信號(hào);將所述反相前導(dǎo)零信號(hào)與所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值相組合;產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值;以及在所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值之間選擇。
本發(fā)明還提供在具有前導(dǎo)零預(yù)測(cè)器(LZA)、相關(guān)的LZA錯(cuò)誤校正以及計(jì)算指數(shù)的部件的浮點(diǎn)單元(FPU)中,一種補(bǔ)償所述錯(cuò)誤的方法,包括生成LZA校正信號(hào);作為將所述指數(shù)添加到至少兩個(gè)分離的值的函數(shù),生成多個(gè)對(duì)于所述指數(shù)的選項(xiàng);以及在所述生成多個(gè)選項(xiàng)的步驟中,對(duì)于所述多個(gè)選項(xiàng)執(zhí)行下溢與上溢檢查。
本發(fā)明一種用于計(jì)算指數(shù)的計(jì)算機(jī)系統(tǒng),包括用于接收第一、第二以及第三指數(shù)輸入值的裝置;用于接收前導(dǎo)零信號(hào)的裝置;用于產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值的裝置;用于反相所述前導(dǎo)零信號(hào)的裝置;用于將所述反相前導(dǎo)零信號(hào)與所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值相組合的裝置;用于產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值的裝置;以及用于在所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值之間選擇的裝置。
為了更完整地理解本發(fā)明及其優(yōu)點(diǎn),現(xiàn)在參照附圖進(jìn)行詳細(xì)描述,其中圖1示意性地顯示了現(xiàn)有技術(shù)的FPU系統(tǒng);以及圖2顯示具有指數(shù)邏輯與EAD的FPU,其中有多個(gè)被配置來(lái)輸入到EAD的指數(shù)值。
具體實(shí)施例方式
在以下討論中,列出了許多具體細(xì)節(jié)以提供對(duì)于本發(fā)明的徹底理解。然而,本領(lǐng)域技術(shù)人員應(yīng)該理解,本發(fā)明可以在不具備這些具體細(xì)節(jié)的前提下實(shí)施。在其他例子中,公知的元素以示意性或方框圖的形式顯示,以求不因不必要的細(xì)節(jié)而掩蓋了本發(fā)明。另外,有關(guān)網(wǎng)絡(luò)通信、電磁信令技術(shù)等等大部分細(xì)節(jié)都被省略,只要這些細(xì)節(jié)被認(rèn)為不是獲得對(duì)于本發(fā)明的徹底理解所必須的,并且被認(rèn)為是本領(lǐng)域技術(shù)人員理解能力之內(nèi)的。
在該說(shuō)明書(shū)的剩余部分,處理單元(PU)可以是設(shè)備中的唯一計(jì)算處理器。在這種情況下,PU一般被稱(chēng)為MPU(主處理單元)。該處理單元也可以是根據(jù)為給定計(jì)算設(shè)備所開(kāi)發(fā)的某些方法或算法共擔(dān)計(jì)算負(fù)荷的許多處理單元之一。對(duì)于該說(shuō)明書(shū)的剩余部分,除非另有指示,所有對(duì)于處理器的指稱(chēng)都將使用名詞MPU,而不管該MPU是設(shè)備中的唯一計(jì)算元件還是該MPU與其他MPU共享計(jì)算元件。
還應(yīng)該注意,除非另有指示,此處所述的所有功能都可在硬件、軟件、或者其組合中實(shí)現(xiàn)。然而,在優(yōu)選實(shí)施方式中,除非另有指示,這些功能由處理器根據(jù)代碼(諸如計(jì)算機(jī)程序代碼、軟件)和/或被編碼來(lái)執(zhí)行這些功能的集成電路來(lái)實(shí)現(xiàn),所述處理器諸如為計(jì)算機(jī)或者電子數(shù)據(jù)處理器。
轉(zhuǎn)到圖1,其中顯示了現(xiàn)有技術(shù)的FPU系統(tǒng)100,其實(shí)現(xiàn)了混合式乘加(fused multiply addition)A*B+C。乘法器105接收值A(chǔ)與B的尾數(shù)Fa與Fb,并且計(jì)算乘積Fa*Fb。對(duì)準(zhǔn)器108接收值C的值Fc的尾數(shù)以及A、B以及C的指數(shù)Ea、Eb以及Ec;對(duì)準(zhǔn)器相對(duì)于乘積的尾數(shù)對(duì)準(zhǔn)尾數(shù)Fc。乘法器與對(duì)準(zhǔn)器的輸出被提供給加法器125與LZA 120。指數(shù)邏輯110接收指數(shù)值Ea、Eb以及Ec。在指數(shù)邏輯內(nèi),產(chǎn)生指數(shù)值“e”。根據(jù)加數(shù)與乘積的指數(shù)差異以及來(lái)自加法的符號(hào)/進(jìn)位信息,該指數(shù)是加數(shù)的指數(shù)(Ec)、乘積減偏置的指數(shù)(Ea+Eb-偏置)、或者乘積加偏移的指數(shù)(Ea+Eb+Δ)。
指數(shù)值“e”送入EAD 130。在EAD內(nèi),收到來(lái)自前導(dǎo)零預(yù)測(cè)器120的“所估計(jì)的移位量LZA”。在EAD 130內(nèi),計(jì)算e2a=指數(shù)-LZA以及e2b=指數(shù)-LZA+1兩個(gè)值。
同時(shí),LZA校正器140也收到來(lái)自LZA 120的所估計(jì)的移位量LZA值以及尾數(shù)加法器125的輸出。LZA校正器140檢測(cè)由LZA所計(jì)算的前導(dǎo)零數(shù)目是正確還是差1,然后將此作為lza_corr信號(hào)輸入給EAD 130。根據(jù)lza_corr值,EAD 130選擇最終e2值,該值被送往結(jié)果生成器160。EAD 130還生成結(jié)果選擇信號(hào),該信號(hào)被輸入到結(jié)果生成器160。結(jié)果信號(hào)指示結(jié)果生成器160是否應(yīng)該作為最終浮點(diǎn)數(shù)輸入來(lái)自舍入器150的值,該值為e2值與規(guī)格化器/舍入器150的規(guī)格化和舍入后的輸出的組合。可替換地,結(jié)果選擇信號(hào)可以指示下溢、上溢、或者來(lái)自特殊情況與運(yùn)算數(shù)邏輯155的輸出。在任何情況下,結(jié)果都輸出為來(lái)自結(jié)果生成器160的最終浮點(diǎn)值。
現(xiàn)在轉(zhuǎn)到圖2,其中顯示了FPU指數(shù)系統(tǒng)200。更具體地講,顯示了一種耦合至EAD 230的指數(shù)邏輯220。一般地,系統(tǒng)200在指數(shù)邏輯220內(nèi)計(jì)算替換指數(shù),并且生成三個(gè)而非一個(gè)(如圖1所示的值“e”)指數(shù)值供EAD230使用。這三個(gè)值為3:2加法的結(jié)果(相應(yīng)于圖1所示的值“e”)、加一個(gè)更大值以及兩個(gè)更大值。
在圖2中,指數(shù)邏輯220接收Ea、Eb、Ec,以及來(lái)自尾數(shù)加法器的某些符號(hào)/進(jìn)位信息進(jìn)入指數(shù)運(yùn)算數(shù)選擇器212。指數(shù)邏輯220使用這些值來(lái)生成Ex、Ey以及Ez值,這以與現(xiàn)有設(shè)計(jì)中相同的方法進(jìn)行。Ex、Ey以及Ez值被輸入3:2壓縮器221。Ez為10比特串,但是3:2壓縮器221只有8比特寬。因此,Ez的兩個(gè)最高有效位,即Ez
,旁路3:2壓縮器221并直接饋送入3路組合加法器108,作為和(0:1)。在以下及先前,最高有效位為比特0。
3:2壓縮器221生成和(2:9)以及進(jìn)位值(1:8)。一般地,圖2中在該級(jí)之前所進(jìn)行的處理與圖1中的類(lèi)似。然而,在FPU系統(tǒng)200中,根據(jù)該和與進(jìn)位的加法生成三個(gè)值。這三個(gè)值被送入EAD 230。這三個(gè)值為S0(加法,等同于圖1的“e”)、S1(加法加1,“e+1”)以及S2(加法“e加2”,“e+2”)。使用3-路組合加法器225,可以無(wú)加法延遲地生成這三個(gè)和值(和、和+1、以及和+2)。
返回圖1,指數(shù)邏輯110將生成“e”,然后EAD 130生成e-lza以及e+1-lza或者其生成“e”以及“e+1”,在它們之間選擇e’,然后計(jì)算e2=e’-lza,并且在這些值之間的選擇將由EAD 130作為從LZA校正邏輯140所接收的lza_corr的函數(shù)進(jìn)行。返回圖2,在指數(shù)邏輯220中生成e、e+1以及e+2。另外,它們的使用不同于圖1中“e”的使用。
在FPU系統(tǒng)200中,使用“非lza”(!lza)。使用!lza是在邏輯電路中進(jìn)行減法一種方式。例如,a-b=a+!b+1。不同于在EAD 130中計(jì)算e=ea+eb-偏置與e2=e+!lza+1,在指數(shù)邏輯220中計(jì)算S1=ea+eb-偏置+1,然后EAD計(jì)算E2=S1+!lza。這節(jié)省了加法器中的進(jìn)位輸入,從而進(jìn)一步減少了EAD電路的延遲。對(duì)于“e”以及e+1的計(jì)算以及Lza的減法所需的遞增(+1)由指數(shù)邏輯220中的組合加法器225進(jìn)行。因此,與現(xiàn)有FPU相比,該計(jì)算被移動(dòng)到前面的時(shí)鐘周期,從而加速了EAD 230中的減法。
在EAD 230中,對(duì)于指數(shù)e2=e-lz生成兩個(gè)值e2a以及e3b,其中l(wèi)z為前導(dǎo)零的準(zhǔn)確數(shù)目。由于邏輯算術(shù)的性質(zhì),e-lz=e2a,其等于如在加法器236中所計(jì)算的e+!lza+1=S1+!lza。E2b=e-lza+1=e+!lza+2=S2+!lza,如在加法器234中所計(jì)算的。因此,S1=e+1和S2=e+2。故指數(shù)邏輯的輸出S1與S2在EAD 230的加法器(10b)234、236中被加到!lza,以生成e2a以及e2b。這個(gè)值的兩個(gè)最高有效位送入結(jié)果MUX選擇電路240,并且這兩個(gè)值都被送入結(jié)果生成器(未顯示),而且由結(jié)果生成器選擇作為結(jié)果MUX選擇生成器240的選擇輸出的函數(shù)。
在圖1中,為了檢查例外條件,最終的e2在EAD 130中計(jì)算。此后,EAD 130進(jìn)行上溢與下溢檢查。通過(guò)基本上與e2a以及e2b的計(jì)算并行地進(jìn)行例外檢查,系統(tǒng)200避免了這種延遲,其中這兩個(gè)計(jì)算都由EAD 230進(jìn)行。在系統(tǒng)200中,LZA可能過(guò)高估計(jì)前導(dǎo)零的數(shù)目(多1)。(在其他設(shè)計(jì)中,LZA可能過(guò)低估計(jì)該數(shù)目。只要些許改動(dòng),本發(fā)明也使用于那種情況)。
返回圖1,所述指數(shù)ea、eb、ec值以8比特偏置格式輸入指數(shù)邏輯110,如對(duì)于二進(jìn)制浮點(diǎn)算術(shù)的IEEE標(biāo)準(zhǔn)中所指。指數(shù)計(jì)算的中間結(jié)果超出了8比特偏置二進(jìn)制值的范圍。對(duì)于10比特中間結(jié)果有幾種不同的格式。這些中間結(jié)果為圖1的指數(shù)“e”以及e+1、e-lza。對(duì)于圖2,中間結(jié)果為向量進(jìn)位、和、S0、S1以及S2。一種最常見(jiàn)的格式為10比特偏置二進(jìn)制值,即這些數(shù)具有10比特表示,并且偏置為511而非127。
再次轉(zhuǎn)到圖2,系統(tǒng)200使用對(duì)于中間指數(shù)結(jié)果S0、S1、S2的不同表示。中間數(shù)S0、S1、S2被表示為具有偏置127的10比特二進(jìn)制補(bǔ)碼數(shù)。這有助于下溢檢測(cè)。e=00000001相應(yīng)于值1-127=126。當(dāng)指數(shù)小于-126時(shí)發(fā)生下溢。在一種實(shí)施方式中,如下進(jìn)行上溢與下溢檢測(cè)。
具體地,由于下溢檢測(cè)的邏輯算術(shù)性質(zhì),當(dāng)且僅當(dāng)e2a的值小于值-126時(shí),e2a比emin小。在具有偏置127的10比特二進(jìn)制補(bǔ)碼數(shù)的實(shí)施方式中,當(dāng)且僅當(dāng)e2a的(未偏置)二進(jìn)制補(bǔ)碼值小于1時(shí),e2a比emin小。換而言之,如果指數(shù)e2a的二進(jìn)制補(bǔ)碼值為零或負(fù),或者可替換地,如果e2a-1為負(fù),則有下溢。
在下溢中,進(jìn)行e2a與e2b檢測(cè)兩者。這在EAD 230中進(jìn)行。對(duì)于e2a的下溢檢測(cè),檢查是否e2a-1<0。在加法器238內(nèi),將S0加到!lza,以進(jìn)行這種檢測(cè)(e2a-1=S1+!lza-1=S0+!lza)。如果e2a-1的符號(hào)為1,則對(duì)于e2a有下溢。對(duì)于任何大于或等于0的值,該符號(hào)將等于零。加法S0+!lza的符號(hào)位指示e2a小于emin。在系統(tǒng)200中,該信號(hào)顯示為e2a_lt_emin。
為了檢查e2b產(chǎn)生下溢,檢查e2b-1=e2a是否小于0。這可以通過(guò)檢查e2a結(jié)果的符號(hào)位來(lái)進(jìn)行。如果符號(hào)位e2a(0)=e2b_lt_emin為1,則對(duì)于e2b發(fā)生下溢。這兩個(gè)結(jié)果(e2a_lt_emin與e2b_lt_emin)也被輸入結(jié)果mux選擇邏輯240。這種方法的一個(gè)優(yōu)點(diǎn)在于在結(jié)果mux選擇邏輯240內(nèi)接收到lza_corr值之前可以確定下溢條件,這可以減少大量時(shí)間。在加法器238中使用具有偏置127的10比特二進(jìn)制補(bǔ)碼數(shù)的優(yōu)點(diǎn)在于可以通過(guò)檢查符號(hào)位來(lái)檢測(cè)下溢。
在上溢選擇器中,具有對(duì)于上溢的測(cè)試。這如下進(jìn)行。如果e2a大于最大指數(shù)emax,則指數(shù)e2a造成上溢。emax為常數(shù)值127。在圖2中所使用的數(shù)字表示(具有偏置127的10比特二進(jìn)制補(bǔ)碼數(shù))中,emax具有表示“00.1111.1110”。因此,當(dāng)且僅當(dāng)e2a+1>00.1111.1111時(shí),e2a造成上溢。當(dāng)且僅當(dāng)e2b=e2a+1大于或等于01.0000.0000時(shí),e2a造成上溢。由于二進(jìn)制補(bǔ)碼表示,通過(guò)查看eb2的兩個(gè)最高有效位是否具有模式“01”可以檢查e2a的下溢。因此,e2a_gt_emax=!e2b(0)AND e2b(1)。在結(jié)果MUX選擇邏輯240中進(jìn)行該計(jì)算。
在加法器234中進(jìn)行S2+!lza。如果指數(shù)e2b=S2+!lza大于emax,則指數(shù)e2b=S2+!lza(當(dāng)已經(jīng)在e2b輸出線中輸入時(shí))產(chǎn)生上溢。給定所選擇的數(shù)字格式,當(dāng)且僅當(dāng)e2b大于或等于00.1111.1111時(shí),e2b產(chǎn)生上溢。這可以通過(guò)測(cè)試e2b>00.1111.1111 OR e2b=00.1111.1111來(lái)檢查。該測(cè)試的第一部分(檢查大于)與e2a的上溢檢查相同。然而,對(duì)于該測(cè)試的第二部分,為了發(fā)生比較e2b=00.1111.1111,不需要對(duì)于e2b的完整的計(jì)算。而是比較S2值與!lza值。
對(duì)于單精度,加法器結(jié)果小于100比特寬。因此,前導(dǎo)零的數(shù)目小于127,從而!lza具有至少兩個(gè)前導(dǎo)零。為檢查e2b=00.1111.1111,確定是否!lza(0:9)+S2(2:9)=100.1111.1111或者00.1111.1111。當(dāng)且僅當(dāng)S2(2:9)等于lza(2:9)時(shí),e2b的最低8個(gè)有效位全為1。當(dāng)把這些位相加時(shí),它們不生成進(jìn)位輸出。假定!lza(0:1)=11,并且最低有效位的和不生成進(jìn)位,則當(dāng)且僅當(dāng)S2(0:1)=01時(shí),!lza(0:1)+S2(0:1)等于100。因此,通過(guò)檢查S2(0:1)=01以及S2(2:9)等于lza(2:9),比較器232檢測(cè)e2b=00.1111.1111。這由信號(hào)e2a_eq_emax指示。
最后,e2b(0:1)值、e2a(0)=e2b_lt_emin值、e2a_eq_emax值以及e2a_lt_emin值都輸入結(jié)果MUX選擇邏輯240。在系統(tǒng)200中,結(jié)果MUX選擇邏輯240具有五種不同的輸出邏輯狀態(tài)。它們是對(duì)于數(shù)字0的10000,對(duì)于數(shù)字1的01000,對(duì)于數(shù)字2的00100等等。選擇器的五種輸出如下如果sel(0)為1,則生成特殊/超馳值,其由特殊情況線輸入,并且結(jié)果MUX選擇特殊結(jié)果。如果sel(1)為1,則指示上溢值,并且結(jié)果MUX選擇Infinity。如果sel(2)為1,則指示下溢值,并且結(jié)果MUX選擇Zero。如果sel(3)為1,則結(jié)果MUX選擇e2a以及規(guī)格化器輸出的值1:23。如果sel(4)為1,則結(jié)果MUX選擇e2b以及規(guī)格化器輸出的值0:22。
表1結(jié)果MUX選擇生成器240的邏輯在結(jié)果MUX選擇生成器240中的邏輯根據(jù)表1的真值表生成選擇信號(hào)sel(0:4)以及例外標(biāo)志。在表1中,空白項(xiàng)指示在該特定情況下該值為“don’t care”(不需關(guān)心)。注意信號(hào)對(duì)e2a_gt_emax/e2a_eq_emax以及信號(hào)對(duì)e2b_lt_emin/e2a_lt_emin不能同時(shí)為真(1)。
如果選擇spec為“真(on)”,則sel(0)為真,并且不發(fā)生其他檢查。如果信號(hào)spec為零,則結(jié)果MUX選擇生成器240檢查上溢或下溢條件。如果e2a_gt_emax為真或者如果e2a_eq_emax AND lza_corr為真,則發(fā)生上溢。如果e2b_lt_emin為真或者如果e2a_lt_emin為真且lza_corr為假,則發(fā)生下溢。
應(yīng)該理解,本發(fā)明可以采用許多形式與實(shí)施方式。相應(yīng)地,在不脫離本發(fā)明的精神與范圍的前提下,可以對(duì)以上進(jìn)行各種修改。此處所概括的功能允許各種編程模型。不應(yīng)該認(rèn)為本公開(kāi)傾向于任何具體的編程模型,而應(yīng)該是針對(duì)這些編程模型所應(yīng)該在其上構(gòu)建的基本機(jī)制。本發(fā)明的描述針對(duì)單精度數(shù),但也可以容易地應(yīng)用于其他格式。本發(fā)明的描述針對(duì)混合式乘加FPU,但也適用于(例如)分離FPU設(shè)計(jì)的加法部分。
雖然通過(guò)參照其特定優(yōu)選實(shí)施方式對(duì)本發(fā)明進(jìn)行了描述,但是應(yīng)該注意所公開(kāi)的實(shí)施方式在本質(zhì)上是演示性的,而非限制性的,并且應(yīng)該注意在上述公開(kāi)中設(shè)想了各種變化、修改、改變以及替代,并且在某些情況下,可以使用本發(fā)明的某些特征而不相應(yīng)地使用其他特征。在本領(lǐng)域技術(shù)人員閱讀了以上對(duì)優(yōu)選實(shí)施方式的描述后,可能希望有許多此類(lèi)的修改與變化。相應(yīng)地,應(yīng)該在符合本發(fā)明范圍的前提下將權(quán)利要求做廣義地理解。
權(quán)利要求
1.一種浮點(diǎn)單元(FPU),其生成校正信號(hào)與反相前導(dǎo)零信號(hào),該浮點(diǎn)單元包括指數(shù)邏輯,該指數(shù)邏輯被配置來(lái)產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值;指數(shù)調(diào)整與舍入邏輯,其被配置來(lái)接收所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值,其中所述指數(shù)調(diào)整與舍入邏輯還被配置來(lái)向所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值添加所述反相前導(dǎo)零信號(hào),由此產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值。
2.根據(jù)權(quán)利要求1的FPU,其中所述反相前導(dǎo)零信號(hào)包含對(duì)于尾數(shù)加法器的輸出的前導(dǎo)零數(shù)目的指示。
3.根據(jù)權(quán)利要求1的FPU,其中所述指數(shù)調(diào)整與舍入邏輯被配置來(lái)接收所述校正信號(hào),該校正信號(hào)用來(lái)選擇所述指數(shù)值、第一遞增后指數(shù)輸出值、或者第二遞增后指數(shù)輸出值。
4.根據(jù)權(quán)利要求1的FPU,其中所述前導(dǎo)零信號(hào)由前導(dǎo)零預(yù)測(cè)器生成,并且所述校正信號(hào)由前導(dǎo)零預(yù)測(cè)校正器生成。
5.根據(jù)權(quán)利要求1的FPU,其中所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值被表示為具有n比特偏置的(n+x)比特二進(jìn)制補(bǔ)碼數(shù),其中n為格式的指數(shù)寬度,其中x為表示2或更大的整數(shù)的變量。
6.根據(jù)權(quán)利要求5的FPU,其中所述格式包括對(duì)于二進(jìn)制浮點(diǎn)算術(shù)的IEEE 754-1985標(biāo)準(zhǔn)。
7.根據(jù)權(quán)利要求5的FPU,其中所述第二遞增后指數(shù)輸出值和所述前導(dǎo)零信號(hào)植被輸入相等比較器,由此產(chǎn)生指示所述第二遞增后指數(shù)輸出值比所選擇格式中所允許的最大指數(shù)大一的信號(hào)。
8.根據(jù)權(quán)利要求7的FPU,其中所述指數(shù)輸出值為具有n比特偏置的n+2比特二進(jìn)制補(bǔ)碼數(shù),其中所述第二遞增后指數(shù)輸出值的兩個(gè)最高有效位被輸入到比較器中。
9.根據(jù)權(quán)利要求8的FPU,其中所述比較器被配置來(lái)確定所述兩個(gè)最高有效位是否等于“01”,所述比較器還被配置來(lái)產(chǎn)生指示所述第一遞增后指數(shù)輸出值是否上溢的輸出信號(hào)。
10.根據(jù)權(quán)利要求5的FPU,其中所述指數(shù)輸出值的符號(hào)位被用做指示所述第一遞增后指數(shù)輸出值能夠造成下溢條件的信號(hào),并且所述第一遞增后指數(shù)輸出值的符號(hào)位被用做指示所述第二遞增后指數(shù)輸出值能夠造成下溢條件的信號(hào)。
11.根據(jù)權(quán)利要求1的FPU,還被配置來(lái)接收指示由指數(shù)調(diào)整與舍入邏輯所計(jì)算的指數(shù)輸出要被特殊指數(shù)值替換的特殊情況信號(hào)。
12.根據(jù)權(quán)利要求1的FPU,還包括3-路復(fù)合加法器,該3-路復(fù)合加法器被配置來(lái)生成所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值。
13.一種計(jì)算指數(shù)的方法,包括接收第一、第二以及第三指數(shù)輸入值;接收前導(dǎo)零信號(hào);產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值;反相所述前導(dǎo)零信號(hào);將所述反相前導(dǎo)零信號(hào)與所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值相組合;產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值;以及在所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值之間選擇。
14.根據(jù)權(quán)利要求13的方法,還包括由前導(dǎo)零預(yù)測(cè)器生成所述前導(dǎo)零信號(hào)。
15.根據(jù)權(quán)利要求13的方法,還包括接收前導(dǎo)零校正信號(hào);以及作為所述前導(dǎo)零校正信號(hào)的函數(shù),從所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值中選擇。
16.根據(jù)權(quán)利要求13的方法,還包括用帶偏置的二進(jìn)制補(bǔ)碼數(shù)表示所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值。
17.根據(jù)權(quán)利要求16的方法,其中對(duì)于單精度計(jì)算所述偏置為8比特偏置,對(duì)于雙精度計(jì)算所述偏置為11比特偏置。
18.根據(jù)權(quán)利要求17的方法,還包括選擇所述第二遞增后指數(shù)輸出值的最高有效位;以及確定所選擇的第二遞增后指數(shù)輸出值的最高有效位是否為非零正值。
19.根據(jù)權(quán)利要求18的方法,其中所述選擇最高有效位的步驟包括如果所述第二遞增后指數(shù)輸出值與單精度格式相關(guān)聯(lián),則舍去所述第二遞增后指數(shù)輸出值的最低8個(gè)有效位;如果所述第二遞增后指數(shù)輸出值與雙精度格式相關(guān)聯(lián),則舍去所述第二遞增后指數(shù)輸出值的最低11個(gè)有效位;以及選擇剩余的數(shù)字作為所述最高有效位。
20.根據(jù)權(quán)利要求19的方法,還包括采用所述確定的結(jié)果作為對(duì)于與所述第一遞增后指數(shù)輸出值相關(guān)聯(lián)的上溢條件的指示。
21.根據(jù)權(quán)利要求17的方法,還包括確定所述指數(shù)值是否比預(yù)定的最大值大至少2;確定所述第二遞增后指數(shù)輸出值是否等于所述預(yù)定的最大值加1;以及通過(guò)使用或邏輯組合這兩個(gè)確定的結(jié)果。
22.根據(jù)權(quán)利要求21的方法,其中如果所述第一與第二遞增后指數(shù)輸出值與單精度數(shù)相關(guān)聯(lián),則所述預(yù)定的最大值為127。
23.根據(jù)權(quán)利要求21的方法,其中確定所述第二遞增后指數(shù)輸出值等于所述預(yù)定的最大值加1的步驟還包括在所述前導(dǎo)零信號(hào)的前面附加具有值1的位;比較附加后的前導(dǎo)零信號(hào)與所述第二遞增后指數(shù)值;如果附加后的前導(dǎo)零信號(hào)與所述第二遞增后指數(shù)值相等,則發(fā)送指示所述第二遞增后指數(shù)輸出值等于所述預(yù)定的最大值加1的信號(hào);以及如果附加后的前導(dǎo)零信號(hào)與所述第二遞增后指數(shù)值不相等,則發(fā)送指示所述第二遞增后指數(shù)輸出值不等于所述預(yù)定的最大值加1的信號(hào)。
24.根據(jù)權(quán)利要求17的方法,還包括通過(guò)檢查所述第一遞增后指數(shù)輸出值的符號(hào)位,檢查第二遞增后指數(shù)輸出值的下溢條件。
25.根據(jù)權(quán)利要求17的方法,還包括通過(guò)檢查所述指數(shù)輸出值的符號(hào)位,檢查第一遞增后指數(shù)輸出值的下溢條件。
26.根據(jù)權(quán)利要求13的方法,還包括在由指數(shù)調(diào)整所計(jì)算的指數(shù)以及特殊指數(shù)結(jié)果值之間選擇。
27.根據(jù)權(quán)利要求13的方法,還包括使用3-路復(fù)合加法器來(lái)計(jì)算所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值。
28.一種在具有前導(dǎo)零預(yù)測(cè)器(LZA)和相關(guān)的LZA錯(cuò)誤校正以及計(jì)算指數(shù)的部件的浮點(diǎn)單元(FPU)中補(bǔ)償所述錯(cuò)誤的方法,包括生成LZA校正信號(hào);作為將所述指數(shù)添加到至少兩個(gè)分離的值的函數(shù),生成多個(gè)對(duì)于所述指數(shù)的選項(xiàng);以及在所述生成多個(gè)選項(xiàng)的步驟中,對(duì)于所述多個(gè)選項(xiàng)執(zhí)行下溢與上溢檢查。
29.一種用于計(jì)算指數(shù)的計(jì)算機(jī)產(chǎn)品,包括用于接收第一、第二以及第三指數(shù)輸入值的裝置;用于接收前導(dǎo)零信號(hào)的裝置;用于產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值的裝置;用于反相所述前導(dǎo)零信號(hào)的裝置;用于將所述反相前導(dǎo)零信號(hào)與所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值相組合的裝置;用于產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值的裝置;以及用于在所述指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值之間選擇的裝置。
全文摘要
一種浮點(diǎn)單元(FPU),其生成校正信號(hào)與反相前導(dǎo)零信號(hào)。指數(shù)邏輯被配置來(lái)產(chǎn)生指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值。指數(shù)調(diào)整與舍入邏輯被配置來(lái)接收所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值。所述指數(shù)調(diào)整與舍入邏輯還被配置來(lái)向所述指數(shù)值、第一遞增后指數(shù)值以及第二遞增后指數(shù)值添加所述反相前導(dǎo)零信號(hào),由此產(chǎn)生指數(shù)輸出值、第一遞增后指數(shù)輸出值以及第二遞增后指數(shù)輸出值。然后,選擇所述指數(shù)值、第一遞增后指數(shù)輸出值、或者第二遞增后指數(shù)輸出值。
文檔編號(hào)G06F7/00GK1619484SQ200410092639
公開(kāi)日2005年5月25日 申請(qǐng)日期2004年11月16日 優(yōu)先權(quán)日2003年11月20日
發(fā)明者西爾維亞·M·米勒, ?!·德宏, 吳和埈, 凱文·D·特蘭 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司