專利名稱:用于高效浮點運算器(alu)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器內(nèi)的浮點算術(shù),更具體地說,涉及浮點部件內(nèi)的加/減管道。
背景技術(shù):
一般地,浮點運算數(shù)由三個元素組成,第一個是符號位,第二個是尾數(shù)位,第三個是指數(shù)。例如,根據(jù)IEEE(電氣和電子工程學(xué)會)標(biāo)準(zhǔn),一個32位浮點運算數(shù)的表示如下(-I)sx1.M23 x 2(E8-127)--符號----尾數(shù)-- --指數(shù)--通常,浮點加法運算包括兩個浮點運算數(shù)上的算術(shù)運算。例如,兩個浮點運算數(shù)上的算術(shù)運算包括如下步驟1.通過使具有較低指數(shù)的運算數(shù)的尾數(shù)向下移位來使兩個浮點運算數(shù)(運算數(shù))的指數(shù)相同;2.將兩個運算數(shù)的尾數(shù)相加(具有或沒有舍入運算)并輸出和數(shù);
3.如果和數(shù)溢出(例如,在32位加法中,如果和數(shù)超過32位,則和數(shù)溢出),則將和數(shù)向下移1位。
上面略述的浮點加法運算需要全下移位器、加法器和1位下移位器。
類似地,浮點減法運算通常也包括兩個運算數(shù)上的算術(shù)運算。常規(guī)技術(shù)通過利用稱為遠處理路徑和近處理路徑的兩個并行處理路徑并選擇這兩個處理路徑之一的輸出作為減法結(jié)果來執(zhí)行減法運算。
如果兩個運算數(shù)之間的指數(shù)差是1或0,則使用近處理路徑運算。因為指數(shù)差是1或0,所以只需最大下移1位的下移位運算便可使指數(shù)相等。在使指數(shù)相等之后,將另一個保持不變的尾數(shù)減去移位后的尾數(shù)。在這種情況下,最高有效位(MSB)可在減法結(jié)果中的任何位位置。結(jié)果,可能需要一個全上移位器來將MSB帶到第1位置(并且將指數(shù)減去與上移位相等的量)。第1位置從相減數(shù)的左邊指出。例如,在32位減法器中,結(jié)果的MSB可以在第32位和第1位之間的任何位置。在此情況下,必須將MSB上移到最高第32位的位置處,這一般需要32位上移位器。因而,近處理路徑減法可能需要一個1位下移位器、一個32位減法器和一個32位上移位器。
如果兩個運算數(shù)之間的指數(shù)差大于1,則使用遠處理路徑運算。遠處理路徑的指數(shù)差可以大于1,并且可以是任何數(shù)字。結(jié)果,需要全下移位器,以便通過使尾數(shù)向下移位來使兩個運算數(shù)的指數(shù)相同。然后,將具有較大輸入指數(shù)的運算數(shù)的尾數(shù)減去另一個運算數(shù)的尾數(shù)。然后,相減結(jié)果可能需要上移1位的運算。結(jié)果,遠處理路徑減法運算可能需要全下移位器、全減法器和1位上移位器。例如,32位遠處理路徑減法可能需要32位下移位器、32位減法器和1位上移位器。
因此,上面的近處理路徑浮點減法運算可能需要指數(shù)減法器或任何其它用于檢測兩個運算數(shù)的指數(shù)差的邏輯。如果尾數(shù)差是0、1或-1,則近處理路徑進行減法。該指數(shù)減法邏輯的時間可能相當(dāng)長。在這段時間內(nèi),近處理路徑保持空閑,即它將等待指數(shù)差邏輯的結(jié)果。當(dāng)使用前述近處理路徑和遠處理路徑技術(shù)時,這會顯著增加整個減法運算的時間。此外,當(dāng)使用前面的遠處理路徑和近處理路徑技術(shù)來進行浮點減法時,諸如舍入、上移位誤差校正、下溢檢測和下移位的尾數(shù)選擇的運算也會花費相當(dāng)長的額外的邏輯時間。
發(fā)明內(nèi)容
本發(fā)明提供一種用于執(zhí)行指數(shù)差估計的改進的技術(shù),它可用于產(chǎn)生與微處理器的運算器(ALU)的近處理路徑相等的減法結(jié)果。在一實施例中,具有用于近處理路徑和遠處理路徑減法的單獨邏輯的電路通過只利用兩個浮點運算數(shù)的指數(shù)的兩個最低有效位來產(chǎn)生用于近處理路徑的指數(shù)差信號。
圖1示出根據(jù)本主題的一個實施例的用于在ALU中實現(xiàn)并行運算的裝置的方塊圖。
圖2示出根據(jù)本主題的一個實施例的用于實現(xiàn)圖1的并行運算的流程圖。
具體實施例方式
在以下對本發(fā)明的實施例的詳細描述中,參照附圖,這些附圖構(gòu)成本發(fā)明的一部分,并且附圖中為了說明而示出實施本發(fā)明的特定實施例。對這些實施例的描述足夠詳細以使本領(lǐng)域的技術(shù)人員能夠?qū)嵤┍景l(fā)明,并且要理解,可以利用其它實施例,并且在不背離本發(fā)明范圍的前提下可進行改變。因此,下面詳細的描述不是限制性的,本發(fā)明的范圍只由所附權(quán)利要求定義。
預(yù)測用于近處理路徑的指數(shù)差的改進的方案現(xiàn)參照圖1,示出根據(jù)本發(fā)明一個實施例的用于實現(xiàn)并行運算的裝置100的方塊圖,其中這些并行運算用于在微處理器的運算器(ALU)中執(zhí)行兩個浮點運算數(shù)的減法。如圖1所示,裝置100包括近處理路徑110、遠處理路徑140、輸入邏輯電路160、輸入數(shù)據(jù)總線170和最終結(jié)果多路復(fù)用器180。
此外,如圖1所示,近處理路徑110包括近處理路徑指數(shù)比較器(NPEC)112、一對近處理路徑減法前多路復(fù)用器114、一對近處理路徑減法器116、近處理路徑MSB/進位產(chǎn)生電路(CMG1)118、近處理路徑減法結(jié)果選擇器(SRS)120、減法后近處理路徑多路復(fù)用器122、上移位預(yù)測器124、上移位誤差預(yù)測模塊126、近處理路徑減法后上移位器(NPPPSU)138、尾數(shù)下溢信號產(chǎn)生模塊132、指數(shù)下溢信號產(chǎn)生模塊134和正常結(jié)果信號產(chǎn)生模塊136。如圖1所示,近處理路徑減法后上移位器138包括上移位器128和多路復(fù)用器130。
遠處理路徑140包括遠處理路徑指數(shù)減法器(FPES)142、遠處理路徑指數(shù)比較器(FPEC)144、一對下移位器146、一對減法前遠處理路徑多路復(fù)用器(PSFPM)148、一對遠處理路徑減法器150、遠處理路徑減法MSB/進位產(chǎn)生電路(CMG2)152、遠處理路徑SRS 154和減法后遠處理路徑多路復(fù)用器156。
在一個示例實施例中,在運算時,輸入數(shù)據(jù)總線170接收第一浮點運算數(shù)和第二浮點運算數(shù),并將它們提供給輸入邏輯電路160。然后,輸入邏輯電路160計算與第一浮點運算數(shù)和第二浮點運算數(shù)中的每個浮點運算數(shù)相關(guān)的符號位、尾數(shù)和指數(shù),并將它們提供給近處理路徑110和遠處理路徑140,用于計算第一浮點運算數(shù)和第二浮點運算數(shù)之間的差。在這些實施例中,耦合到輸入數(shù)據(jù)總線170的輸入邏輯電路160從輸入數(shù)據(jù)總線170接收第一浮點運算數(shù)和第二浮點運算數(shù),并提供多個與所接收的第一浮點運算數(shù)和第二浮點運算數(shù)對應(yīng)的計算的指數(shù)和尾數(shù)。
本發(fā)明使得用于計算近路徑指數(shù)差是否等于0、1或-1所需的時間比常規(guī)技術(shù)所需的時間減少了幾乎一半。此外,與用于執(zhí)行這些ALU運算的常規(guī)方案相比,新方案需要更少的硬件。
在接收與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)的指數(shù)后,近處理路徑110產(chǎn)生多個指數(shù)差信號。在一實施例中,近處理路徑110使用下式,這說明只需要指數(shù)的兩個最低有效位就能產(chǎn)生用于執(zhí)行ALU運算所需的指數(shù)差信號。
GT=(EXPsame[1]and XEXP
and~YEXP
)or(EXPdiffr[1]and YEXP
and~XEXP
);LT=(EXPsame[1]and YEXP
and~XEXP
)or(EXPdiffr[1]and XEXP
and~YEXP
);EQ=EXPsame
;其中,EXPsame[i]=XEXP[i]xnor YEXP[i],EXPdiffr[i]=XEXP[i]xorYEXP[i],并且GT、LT及EQ是由上式產(chǎn)生的指數(shù)差信號,它們與+1、-1和0的指數(shù)差信號等價。它們基本上是對XEXP和YEXP之間的差的預(yù)測,其中XEXP和YEXP是第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)。GT、LT和EQ同+1、-1和0之間的這種等價是有條件的,即該等價只有在XEXP和YEXP之間的差等于+1、-1或0時才成立。這意味著如果任何兩個數(shù)之間的差等于+1、-1或0,那么便可以利用上式來計算實際的指數(shù)差。因此,只有在這些情況下(即,當(dāng)指數(shù)差是+1、-1或0時)才選擇近處理路徑結(jié)果。所以,對于所選結(jié)果,當(dāng)所預(yù)測的指數(shù)差結(jié)果正確時,最終輸出結(jié)果結(jié)束校正。因此,用于近路徑減法器110的指數(shù)差可以利用上式而不是利用要花費明顯更多的時間和更大硅面積的現(xiàn)有技術(shù)產(chǎn)生。
如果任何兩個數(shù)的指數(shù)差等于+1、-1或0,那么使用這種用于近路徑計算的技術(shù)將導(dǎo)致相同的指數(shù)差計算。但如果任何兩個數(shù)的指數(shù)差不等于+1、-1或0,那么結(jié)果會不同。因為最終多路復(fù)用器不會把近路徑輸出認為是其它指數(shù)差,所以這不會影響減法器的最終結(jié)果。使用這種用于近路徑指數(shù)差的技術(shù)將導(dǎo)致更快的預(yù)測和有條件地精確的差信號,并且不會對所有指數(shù)差的情況產(chǎn)生相同的結(jié)果。
在一些實施例中,在通過輸入邏輯電路160接收與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)后,近處理路徑110中的NPEC112產(chǎn)生GT、LT和EQ指數(shù)差信號。
在一些實施例中,近處理路徑110中的上移位預(yù)測器124然后基于所產(chǎn)生的多個指數(shù)差信號和兩個運算數(shù)的尾數(shù)來產(chǎn)生近處理路徑上移位值。
在一些實施例中,近處理路徑減法前多路復(fù)用器對114基于所產(chǎn)生的GT、LT和EQ指數(shù)差信號和從輸入邏輯電路160中接收的第一浮點運算數(shù)和第二浮點運算數(shù)的尾數(shù)來產(chǎn)生一對近處理路徑標(biāo)準(zhǔn)化尾數(shù)。
在這些實施例中,近處理路徑減法器對116即減去一個具有舍入的數(shù)和減去另一個沒有舍入的數(shù)然后基于所產(chǎn)生的近處理路徑標(biāo)準(zhǔn)化尾數(shù)對來產(chǎn)生一對相減值。然后,CMG1 118利用所產(chǎn)生的近處理路徑標(biāo)準(zhǔn)化尾數(shù)對和舍入模式(即ALU的輸入信號)及任何從減法前多路復(fù)用器中丟棄的位(減法前多路復(fù)用器直接傳遞尾數(shù)或者使尾數(shù)下移一位,在下移一位的情況下,從下移位后的尾數(shù)中丟棄一個LSB位)來產(chǎn)生MSB和進位。
同時,在這些實施例中,減法后近處理路徑多路復(fù)用器122然后基于選擇信號從相減值對中選擇近路徑相減值。
上移位預(yù)測器124基本上同時從NPEC 112中接收GT、LT和EQ指數(shù)差信號并從輸入邏輯電路160中接收第一浮點運算數(shù)和第二浮點運算數(shù)的尾數(shù),并產(chǎn)生上移位預(yù)測信號和誤差匹配模式。在一些實施例中,上移位預(yù)測器124在接收GT、LT和EQ指數(shù)差信號和與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)的尾數(shù)后產(chǎn)生上移位預(yù)測信號和誤差匹配模式。
另外,在這些實施例中,上移位誤差預(yù)測模塊126然后基于誤差匹配模式和近處理路徑減法值產(chǎn)生預(yù)測誤差信號。近處理路徑減法后上移位器138然后基于近處理路徑減法值、上移位預(yù)測信號和預(yù)測誤差信號產(chǎn)生近處理路徑上移位后的值。
在一些實施例中,基本上同時地,在從輸入邏輯電路160接收與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)后,遠處理路徑140將這些指數(shù)相減,并輸出較小指數(shù)的尾數(shù)所需的下移位量。遠處理路徑140然后產(chǎn)生一對用于與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的尾數(shù)的遠處理路徑下移位后的尾數(shù)選擇信號。此外,遠處理路徑140基于與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)產(chǎn)生一對用于與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的尾數(shù)的遠處理路徑直接尾數(shù)選擇信號。
在這些實施例中,F(xiàn)PES 142從輸入邏輯電路160接收第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù),將與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)相減,并輸出預(yù)期的下移位值對。FPEC 144然后產(chǎn)生一對用于與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的尾數(shù)的遠處理路徑下移位后的尾數(shù)選擇信號。此外,F(xiàn)PEC 144基于與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)產(chǎn)生一對用于與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的尾數(shù)的遠處理路徑直接尾數(shù)選擇信號。
同時,在這些實施例中,下移位器對146然后基于預(yù)期的下移位值對來將與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的尾數(shù)向下移位。此外,下移位器對146還丟棄下移位之后在尾數(shù)數(shù)據(jù)范圍之外的尾數(shù)位。耦合到下移位器對146的PSFPM 148基于遠處理路徑下移位尾數(shù)選擇信號對、遠處理路徑直接尾數(shù)選擇信號對、與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的尾數(shù)和下移位后的尾數(shù)對來選擇一對值,并輸出一對遠處理路徑標(biāo)準(zhǔn)化尾數(shù)。
另外,在這些實施例中,遠處理路徑減法器對150然后基于遠處理路徑標(biāo)準(zhǔn)化尾數(shù)對來產(chǎn)生一對相減值(即,一個相減值具有舍入,而另一個相減值沒有舍入)。CMG2 152然后利用遠處理路徑標(biāo)準(zhǔn)化尾數(shù)對來產(chǎn)生MSB/進位。然后,遠處理路徑SRS 154基于所產(chǎn)生的MSB/進位、從下移位器對146中丟棄的位和作為該減法邏輯的輸入的舍入模式輸入值來產(chǎn)生選擇信號。
另外,在這些實施例中,減法后遠處理路徑多路復(fù)用器156然后基于選擇信號從相減值對中選擇遠處理路徑相減值,并輸出遠處理路徑減法值。如果MSB是0,那么遠處理路徑多路復(fù)用器156調(diào)節(jié)所選的遠處理路徑相減值,并執(zhí)行1位上移。
另外,近處理路徑110通過將第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)相減來計算第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)差。然后,近處理路徑110基于所計算的指數(shù)差產(chǎn)生指數(shù)差信號。然后,最終結(jié)果多路復(fù)用器180基于所產(chǎn)生的指數(shù)差信號和將被選擇的結(jié)果的狀態(tài)來選擇遠路徑減法結(jié)果、近路徑減法結(jié)果或標(biāo)準(zhǔn)結(jié)果(假設(shè)為指數(shù)/尾數(shù)下溢,標(biāo)準(zhǔn)結(jié)果包含所有0指數(shù)和0尾數(shù)位,符號位可以是1或0)。
在一些實施例中,最終結(jié)果多路復(fù)用器180然后基于通過利用與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)計算指數(shù)差所獲得的輸入指數(shù)差值來選擇遠處理路徑減法值或近處理路徑減法后上移位后的值或用于下溢的標(biāo)準(zhǔn)結(jié)果。在一些實施例中,最終結(jié)果多路復(fù)用器180也會因為由NRSGM 136計算的結(jié)果的狀態(tài)而選擇近處理路徑上移位后的值。
在一實施例中,當(dāng)指數(shù)差等于1、-1或0并且最終結(jié)果沒有產(chǎn)生下溢(即指數(shù)/尾數(shù)下溢)時,最終結(jié)果多路復(fù)用器180選擇近處理路徑上移位后的值作為第一浮點運算數(shù)和第二浮點運算數(shù)減法的結(jié)果。在該實施例中,當(dāng)指數(shù)差大于1并且最終結(jié)果沒有產(chǎn)生下溢情況時,最終結(jié)果多路復(fù)用器180選擇遠處理路徑減法值作為第一浮點運算數(shù)和第二浮點運算數(shù)減法的結(jié)果。
圖2是示出根據(jù)本發(fā)明的實現(xiàn)用于計算浮點運算數(shù)的差的并行運算的方法200的一個示例實施例的流程圖。在步驟210,方法200接收第一浮點運算數(shù)和第二浮點運算數(shù)。所接收的第一浮點運算數(shù)和第二浮點運算數(shù)中的每個浮點運算數(shù)都具有符號位、尾數(shù)和指數(shù)。在步驟220,通過將第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)相減來計算指數(shù)差。
在步驟230,產(chǎn)生作為第一浮點運算數(shù)和第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號。在一些實施例中,通過以下方法計算多個指數(shù)差信號,即,如果第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)差是1、-1或0并且指示第一浮點運算數(shù)和第二浮點運算數(shù)之間的指數(shù)差是+1,那么首先產(chǎn)生GT指數(shù)差信號。如果第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)差是1、-1或0并且指示第一浮點運算數(shù)和第二浮點運算數(shù)之間的指數(shù)差是-1,那么產(chǎn)生LT指數(shù)差信號。如果第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)差是1、-1或0并且還指示第一浮點運算數(shù)和第二浮點運算數(shù)之間的指數(shù)差是0,那么產(chǎn)生EQ指數(shù)差信號。
在一些實施例中,通過使用下式產(chǎn)生作為第一運算數(shù)和第二運算數(shù)中的指數(shù)模式的函數(shù)的GT、LT和EQ指數(shù)差信號來獲得這些指數(shù)差信號GT=(EXPsame[1] and XEXP
and~YEXP
) or(EXPdiffr[1]and YEXP
and~XEXP
);LT=(EXPsame[1]and YEXP
and~XEXP
)or(EXPdiffr[1]and XEXP
and~YEXP
);EQ=EXPsame
。
在步驟250,產(chǎn)生作為所產(chǎn)生的多個指數(shù)差信號及第一運算數(shù)和第二運算數(shù)的尾數(shù)的函數(shù)的近路徑減法結(jié)果。在步驟240,通過將第一浮點數(shù)和第二浮點數(shù)的尾數(shù)相減來計算尾數(shù)差。在一些實施例中,然后使用與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)來確定與較小指數(shù)相關(guān)聯(lián)的尾數(shù)。然后,通過將與較小指數(shù)相關(guān)聯(lián)的尾數(shù)移位來產(chǎn)生標(biāo)準(zhǔn)化尾數(shù)。然后,通過將與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的標(biāo)準(zhǔn)化尾數(shù)相減來計算尾數(shù)差。在步驟260,基于所計算的尾數(shù)差來計算遠路徑減法結(jié)果。在一些實施例中,通過將與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)相減來計算指數(shù)差。如果所計算的指數(shù)差不等于1、-1或0,那么然后基于所計算的尾數(shù)差來計算遠路徑減法結(jié)果。
在步驟270,選擇作為所計算的指數(shù)差和將被選擇的減法結(jié)果的狀態(tài)的函數(shù)的遠路徑減法結(jié)果、近路徑減法結(jié)果或標(biāo)準(zhǔn)結(jié)果。在這些實施例中,如果近路徑減法結(jié)果是指數(shù)或尾數(shù)下溢,那么選擇標(biāo)準(zhǔn)結(jié)果。在步驟280,由ALU輸出所選相減結(jié)果。
盡管方法200包括在示例實施例中連續(xù)排列的步驟210-280,但本發(fā)明的其它實施例可以使用多個處理器或組織為兩個或兩個以上虛擬機或子處理器的單個處理器來并行執(zhí)行兩個或兩個以上塊。此外,其它實施例可以將這些塊實現(xiàn)為兩個或兩個以上特定的互連硬件模塊(相關(guān)控制信號和數(shù)據(jù)信號在模塊之間及模塊內(nèi)傳送)或?qū)S眉呻娐返囊徊糠?。從而,上面的示例過程流程圖可應(yīng)用于軟件、固件和/或硬件實現(xiàn)。
改進的MSB和進位產(chǎn)生方案需要近路徑減法器110/遠路徑減法器140的MSB/進位信號來在正確的數(shù)據(jù)對準(zhǔn)下選擇正確的減法結(jié)果。這些信號基本上早于減法結(jié)果產(chǎn)生,使得減法結(jié)果選擇邏輯SRS 120/154可以在適當(dāng)?shù)臅r間產(chǎn)生選擇信號。
這通過具有與減法器對116和150并行的獨立的進位產(chǎn)生電路來實現(xiàn)。由于MSB/進位產(chǎn)生電路118只產(chǎn)生進位,所以它的內(nèi)部電路比全減法器電路簡單得多,并且門具有更少的輸出扇出。結(jié)果,它的內(nèi)部信號的產(chǎn)生比由近路徑減法器116/遠路徑減法器150產(chǎn)生的信號快得多。參照上面描述的圖1更詳細地說明改進的MSB/進位產(chǎn)生技術(shù)的操作。
近處理路徑上移位器的誤差校正信號產(chǎn)生在近處理路徑110中,減法結(jié)果的MSB可能不在數(shù)據(jù)的最后一位的位置上。上移位預(yù)測器124預(yù)測所需的上移位量。上移位預(yù)測器124通知可能具有一位誤差的上移位數(shù)量,例如,如果它預(yù)測需要上移20位,這時實際的MSB可能是在最后一位位置后的20或21位。在上移位之后,如果所得尾數(shù)在MSB處不是1,那么它意味著上移位預(yù)測器124少預(yù)測了一位,則還需要多上移一位。所以,上移位器(128)輸出的MSB就象是一位上移位器的控制信號。上移位器128輸出的MSB通過緩沖器傳遞以變得足以驅(qū)動大的選擇邏輯。
為節(jié)省在該緩沖中浪費的時間,MSB必須在其它位之前產(chǎn)生。在上述技術(shù)中,如圖1所示的上移位預(yù)測器124不但產(chǎn)生所需的上移位數(shù)量(它可能比實際需要的少1位),而且產(chǎn)生數(shù)組PRED[n-1:0],該數(shù)組的一位高而其它位低(即,一熱)。高位的位置在預(yù)測器預(yù)測MSB位置所在的位置。一般地,上移位預(yù)測器124的預(yù)測以如下所述的兩個步驟產(chǎn)生上移位數(shù)。
1.產(chǎn)生指示MSB預(yù)測的模式,例如,對于8位數(shù)字,如果上移位預(yù)測器124預(yù)測第一個1的位置為倒數(shù)第三位,那么所產(chǎn)生的模式將是001xxxxx,其中x表示0或1;2.根據(jù)上面產(chǎn)生的模式產(chǎn)生上移位數(shù)。
通過利用額外的電路產(chǎn)生這樣的模式,其中數(shù)據(jù)中只有一位是數(shù)字1用來指示所預(yù)測的第一個非0位,使用第一模式的輸出并不占用額外的時間,并且可以與上面指示的步驟2并行產(chǎn)生新模式,因為步驟2和該額外的電路是獨立的。下面說明可以利用上移位預(yù)測器124為8位尾數(shù)產(chǎn)生的一個示例模式。
為8位尾數(shù)產(chǎn)生的模式patt[7:0]
New_patt[7:0]=patt[7:0]|{0,patt[7:1]}|.....{0,0,0,0,0,0,0,patt[7]}PRED=New_patt[7:0]∧{0,New_patt[7:1]}其中,“∧”表示XOR運算,并且“|”表示OR運算。
可以看出,產(chǎn)生上面模式不需要上移位預(yù)測器124的任何額外時間。
如果上移位預(yù)測器124是正確的,那么PRED[n-1:0]中1的位置和減法結(jié)果中MSB的位置將匹配,如下式所示Correct_prediction=|(PRED[n-1:0] & subtraction_result[n-1:0]);其中“&”指AND運算。
可以看出,Correct_prediction信號的產(chǎn)生比上移位器占用更少的時間,結(jié)果,額外的上移位信號將在上移位器完成它的運算時準(zhǔn)備好。
尾數(shù)下溢信號產(chǎn)生是否接收減法結(jié)果的決定取決于尾數(shù)下溢信號。如果減法結(jié)果是0,那么它意味著它是尾數(shù)下溢的情況。如果該情況(尾數(shù)下溢)發(fā)生,那么選擇諸如IEEE的標(biāo)準(zhǔn)結(jié)果作為最終結(jié)果,而不是基于計算的減法結(jié)果。
已開發(fā)更快的方案來利用如圖1所示的尾數(shù)下溢信號產(chǎn)生模塊132產(chǎn)生尾數(shù)下溢信號。如果尾數(shù)減法的結(jié)果是0,那么通常發(fā)生下溢。這意味著,如果預(yù)期的減法結(jié)果是A-B(其中A和B是與第一浮點運算數(shù)和第二浮點運算數(shù)相關(guān)聯(lián)的標(biāo)準(zhǔn)化尾數(shù)),是否A=B,或者如果預(yù)期的結(jié)果是A-B-1(有舍入),是否A=B+1。尾數(shù)下溢模塊(132)與減法并行地確定上面條件(即,A=B+1或A=B或其他),而不是等待減法結(jié)果用于它的分析。此外,通過將標(biāo)準(zhǔn)化尾數(shù)A和B輸入到“0、1差檢測算法”來檢測A=B和A=B+1的條件,如下面例子
XD[n-1:0]=({1′b0,B[n-1:1]}∧{1′b0,A[n-1:1]}∧(~B[n-1:0]|A[n-1:0]));YD[n-1:0]=({1′b0,B[n-1:1]}∧{1′b0,A[n-1:1]}∧(~A[n-1:0]|B[n-1:0]));YDIF=&YD;XDIF=&XD;(A=Bcase)EQ=Y(jié)DIF & XDIF;(A=B+1 case)GT=~YDIF & XDIF;Mantissa_Underflow=select_AeqB_or_BeqA?EQGT指數(shù)下溢信號產(chǎn)生需要由指數(shù)下溢信號產(chǎn)生模塊134輸出的指數(shù)下溢信號來決定是將減法結(jié)果視為最終結(jié)果還是產(chǎn)生下溢的特殊結(jié)果。如前所述,在由ALU完成減法后,減法結(jié)果的MSB可能落在最后一位的位置之后,并且為了使其與IEEE兼容,必須將減法結(jié)果向上移位。為了照顧上移位,必須使指數(shù)減少相同量(與尾數(shù)上移位相等)。如果減少的數(shù)量導(dǎo)致指數(shù)變成0或為負,那么它被認為是指數(shù)下溢的情況。
在常規(guī)方案中,首先將原指數(shù)減去上移位量,然后分析減法結(jié)果以便檢查減法結(jié)果是否是1、0或負數(shù)。在此之后,通過利用下式來確定指數(shù)下溢。
Exponent_underflow=(1或0或負數(shù))&(需要1位上移校正)|(0或負數(shù))&(無需上移位校正)。
在圖1所示的實施例中,1、0或負數(shù)可以由簡單的比較器來產(chǎn)生(如果B>=A,則A-B是0或負數(shù)),差1可以通過使用“0、1差檢測算法”來確定,如前面部分所述。這將保證下溢條件不需要任何減法器和結(jié)果分析器,從而減少了進行減法所需要的總時間。
下移位后的尾數(shù)選擇信號如前所述,在遠處理路徑140中,需要至少一個下移位器來將具有較小指數(shù)的運算數(shù)的尾數(shù)向下移位。再如前所述,根據(jù)“大指數(shù)減小指數(shù)”的結(jié)果將具有較小指數(shù)的尾數(shù)向下移位,由于確定哪個指數(shù)較大可能占用相當(dāng)多的時間,所以為了節(jié)省時間,將兩個尾數(shù)都向下移位。根據(jù)“第一指數(shù)減第二指數(shù)”的結(jié)果將第二尾數(shù)向下移位,并且根據(jù)“第二指數(shù)減第一指數(shù)”的結(jié)果將第一尾數(shù)向下移位。在下移位之后,可以選擇相關(guān)的下移位后的尾數(shù),這是因為到那時較大指數(shù)信號將可用。當(dāng)?shù)诙矓?shù)和第一尾數(shù)的下移位發(fā)生時,并行邏輯確定哪個指數(shù)較小,并據(jù)此選擇相應(yīng)浮點運算數(shù)的下移位后的尾數(shù)。對于另一個浮點運算數(shù),ALU選擇上移位后的尾數(shù)。對于具有較大指數(shù)的浮點運算數(shù),直接尾數(shù)選擇信號變?yōu)楦唠娖?。對于另一個具有較小指數(shù)的浮點運算數(shù),移位后的尾數(shù)選擇信號只有當(dāng)指數(shù)差可使下移位后的尾數(shù)不會導(dǎo)致是0時才變?yōu)楦唠娖?。例如,對?2位尾數(shù),如果指數(shù)差是33,那么下移位后的尾數(shù)應(yīng)變成0。為了實現(xiàn)它,兩個選擇信號都保持低電平。從而,在這種情況下,AND-OR邏輯傳遞0作為標(biāo)準(zhǔn)化尾數(shù)。這將0填充工作從下移位器轉(zhuǎn)到尾數(shù)選擇多路復(fù)用器,這節(jié)省了一些時間,但使移位后的尾數(shù)選擇信號對時間要求更苛刻。塊FPEC 144利用新技術(shù)做該工作,并以比常規(guī)方案更少的時間來產(chǎn)生相同的信號。
下式說明用于具有8位指數(shù)和32位尾數(shù)的數(shù)據(jù)的新的/建議的方案的實現(xiàn)select_shifted_B=((expA[7:5]==expB[7:5])and(expA[4:0]>expB[4:0]))or((expA[7:5]-expB[7:5]=1)and(expB[4:0]>expA[4:0]));select_shifted_A=((expB[7:5]==expA[7:5])and(expB[4:0]>expA[4:0]))or((expB[7:5]-expA[7:5]=1)and(expA[4:0]>expB[4:0]));其中,expA和expB是第一浮點運算數(shù)和第二浮點運算數(shù)的指數(shù)。
上面通過參照上面的尾數(shù)下溢信號產(chǎn)生來說明的算法可用于產(chǎn)生(expB[7:5]-expA[7:5]=1)和(expA[7:5]-expB[7:5]=1)信號。通過使用前面參照尾數(shù)下溢部分討論的算法,可為expA[7:5]&expB[7:5]產(chǎn)生XDIF和YDIF,由此給出所有所需信息,如下所示(expB[7:5]-expA[7:5]=1)→YDIF&~XDIF(expA[7:5]-expB[7:5]=1)→XDIF&~YDIF上面描述只是解釋性的,而并非限制性的。許多其它實施例對本領(lǐng)域的技術(shù)人員來說是顯而易見的。所以,本發(fā)明的范圍應(yīng)由所附權(quán)利要求以及這些權(quán)利要求所擁有的均等物的整個范圍來確定。
權(quán)利要求
1.一種用于執(zhí)行浮點算術(shù)運算的裝置(100),包括近處理路徑(110);遠處理路徑(140),與所述近處理路徑(110)并行;輸入數(shù)據(jù)總線(170),用于基本上同時地將第一浮點運算數(shù)和第二浮點運算數(shù)提供給所述近處理路徑(110)和所述遠處理路徑(140),其中所述第一和第二浮點運算數(shù)中的每個浮點運算數(shù)都包括符號位、尾數(shù)和指數(shù),其中,所述近處理路徑(110)產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號,其中所述近處理路徑(110)基于所述指數(shù)差信號產(chǎn)生近路徑減法結(jié)果,其中,所述近處理路徑(110)計算所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差,并且所述近處理路徑(110)基于所計算的指數(shù)差產(chǎn)生指數(shù)差信號,并且其中,所述遠處理路徑(140)計算所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的尾數(shù)差,并且如果所計算的指數(shù)差不等于0、1或-1,那么所述遠處理路徑(140)基于所計算的尾數(shù)差產(chǎn)生遠路徑減法結(jié)果;以及最終結(jié)果多路復(fù)用器(180),耦合到所述近處理路徑(110)和所述遠處理路徑(140),并且基于所產(chǎn)生的指數(shù)差信號選擇并輸出所述遠路徑減法結(jié)果、所述近路徑減法結(jié)果或標(biāo)準(zhǔn)結(jié)果,其中基于所述近處理路徑(110)或所述遠路徑減法結(jié)果的狀態(tài)選擇所述標(biāo)準(zhǔn)結(jié)果。
2.如權(quán)利要求1所述的裝置,其特征在于,所述近處理路徑(110)基于下式產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)模式的函數(shù)的GT、LT和EQ指數(shù)差信號GT=(EXPsame[1] and XEXP
and~YEXP
)or(EXPdiffr[1] and YEXP
and~XEXP
),LT=(EXPsame[1] and YEXP
and~XEXP
)or(EXPdiffr[1] and XEXP
and~YEXP
,以及EQ=EXPsame
,其中,“~”表示反轉(zhuǎn),EXPsame[i]=XEXP[i] xnor YEXP[i],EXPdiffr[i]=XEXP[i] xnor YEXP[i],并且GT、LT和EQ是所述指數(shù)差信號。
3.如權(quán)利要求1所述的裝置,還包括輸入邏輯電路(160),耦合到所述輸入數(shù)據(jù)總線(170),以便從所述輸入數(shù)據(jù)總線接收所述第一浮點運算數(shù)和所述第二浮點運算數(shù),并提供與所述第一浮點運算數(shù)和所述第二浮點運算數(shù)相對應(yīng)的多個指數(shù)和尾數(shù)。
4.如權(quán)利要求1所述的裝置,其特征在于,所述近處理路徑(110)產(chǎn)生作為使用與所述第一浮點運算數(shù)和所述第二浮點運算數(shù)相關(guān)聯(lián)的指數(shù)的2個最低有效位的函數(shù)的多個指數(shù)差信號。
5.一種方法,包括接收第一浮點運算數(shù)和第二浮點運算數(shù)(210),其中所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的每個浮點運算數(shù)都包括符號位、尾數(shù)和指數(shù);產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號(230);產(chǎn)生作為所述多個指數(shù)差信號的函數(shù)的近路徑減法結(jié)果(250);通過將與所述第一浮點運算數(shù)和所述第二浮點運算數(shù)相關(guān)聯(lián)的兩個指數(shù)中較小者相關(guān)聯(lián)的尾數(shù)移位,產(chǎn)生標(biāo)準(zhǔn)化尾數(shù);通過將所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的標(biāo)準(zhǔn)化尾數(shù)相減來計算尾數(shù)差(240);通過將所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)相減來計算指數(shù)差(220);如果所計算的指數(shù)差不等于1、-1或0,那么基于所計算的尾數(shù)差計算遠路徑減法結(jié)果(260);以及選擇作為所計算的指數(shù)差的函數(shù)的所述遠路徑減法結(jié)果、所述近路徑減法結(jié)果或標(biāo)準(zhǔn)結(jié)果(270),其中基于所述近路徑或所述遠路徑減法結(jié)果的狀態(tài)來選擇所述標(biāo)準(zhǔn)結(jié)果。
6.如權(quán)利要求5所述的方法,其特征在于,產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號(230)包括如果指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是+1,那么產(chǎn)生GT指數(shù)差信號;如果指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是-1,那么產(chǎn)生LT指數(shù)差信號;以及如果指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是0,那么產(chǎn)生EQ指數(shù)差信號。
7.如權(quán)利要求5所述的方法,其特征在于,產(chǎn)生作為所述第一浮點數(shù)和所述第二浮點數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號(230)包括使用下式產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的GT、LT和EQ指數(shù)模式差信號GT=(EXPsame[1] and XEXP
and~YEXP
)or(EXPdiffr[1] and YEXP
and~XEXP
);LT=(EXPsame[1] and YEXP
and~XEXP
)or(EXPdiffr[1] and XEXP
and~YEXP
);EQ=EXPsame
。
8.一種物品,包括具有指令的存儲介質(zhì),所述指令在由計算平臺解碼時導(dǎo)致執(zhí)行包括以下步驟的方法接收第一浮點運算數(shù)和第二浮點運算數(shù)(210),其中所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的每個浮點運算數(shù)都包括符號位、尾數(shù)和指數(shù);產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號(230);產(chǎn)生作為所述多個指數(shù)差信號的函數(shù)的近路徑減法結(jié)果(250);通過將與所述第一浮點運算數(shù)和所述第二浮點運算數(shù)相關(guān)聯(lián)的兩個指數(shù)中較小者相關(guān)聯(lián)的尾數(shù)移位,產(chǎn)生標(biāo)準(zhǔn)化尾數(shù);通過將所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的標(biāo)準(zhǔn)化尾數(shù)相減來計算尾數(shù)差(240);通過將所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)相減來計算指數(shù)差(220);如果所計算的指數(shù)差不等于1、-1或0,那么基于所計算的尾數(shù)差計算遠路徑減法結(jié)果(260);以及選擇作為所計算的指數(shù)差的函數(shù)的所述遠路徑減法結(jié)果、所述近路徑減法結(jié)果或標(biāo)準(zhǔn)結(jié)果(270),其中基于所述近路徑或所述遠路徑減法結(jié)果的狀態(tài)選擇所述標(biāo)準(zhǔn)結(jié)果。
9.如權(quán)利要求8所述的物品,其特征在于,產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的所述多個指數(shù)差信號(230)包括如果所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差為1、-1或0,同時指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是+1,則產(chǎn)生GT指數(shù)差信號;如果所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差為1、-1或0,同時指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是-1,則產(chǎn)生LT指數(shù)差信號;以及如果所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差為1、-1或0,并且還指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是0,則產(chǎn)生EQ指數(shù)差信號。
10.如權(quán)利要求8所述的物品,其特征在于,產(chǎn)生作為所述第一浮點數(shù)和所述第二浮點數(shù)中的指數(shù)模式的函數(shù)的所述多個指數(shù)差信號(230)包括利用下式產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的GT、LT和EQ指數(shù)模式差信號GT=(EXPsame[1] and XEXP
and~YEXP
)or(EXPdiffr[1] and YEXP
and~XEXP
);LT=(EXPsame[1] and YEXP
and~XEXP
)or(EXPdiffr[1] and XEXP
and~YEXP
);以及EQ=EXPsame
。
11.一種計算機系統(tǒng),包括處理器;以及耦合到所述處理器的存儲器,所述存儲器中存儲了代碼,當(dāng)所述處理器解碼所述代碼時,所述代碼使所述處理器執(zhí)行包括以下步驟的方法接收第一浮點運算數(shù)和第二浮點運算數(shù)(210),其中所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的每個浮點運算數(shù)都包括符號位、尾數(shù)和指數(shù);產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的多個指數(shù)差信號(230);產(chǎn)生作為所述多個指數(shù)差信號的函數(shù)的近路徑減法結(jié)果(250);通過將與所述第一浮點運算數(shù)和所述第二浮點運算數(shù)相關(guān)聯(lián)的兩個指數(shù)中較小者相關(guān)聯(lián)的尾數(shù)移位,產(chǎn)生標(biāo)準(zhǔn)化尾數(shù);通過將所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的標(biāo)準(zhǔn)化尾數(shù)相減來計算尾數(shù)差(240);通過將所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)相減來計算指數(shù)差(220);如果所計算的指數(shù)差不等于1、-1或0,那么基于所計算的尾數(shù)差計算遠路徑減法結(jié)果(260);以及選擇作為所計算的指數(shù)差和要選擇的結(jié)果的狀態(tài)的函數(shù)的所述遠路徑減法結(jié)果、所述近路徑減法結(jié)果或標(biāo)準(zhǔn)結(jié)果(270),其中基于所述近路徑或所述遠路徑減法結(jié)果的狀態(tài)選擇所述標(biāo)準(zhǔn)結(jié)果。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的所述多個指數(shù)差信號(230)包括如果所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差為1、-1或0,同時指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是+1,則產(chǎn)生GT指數(shù)差信號;如果所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差為1、-1或0,同時指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是-1,則產(chǎn)生LT指數(shù)差信號;以及如果所述第一浮點運算數(shù)和所述第二浮點運算數(shù)的指數(shù)差為1、-1或0,同時指示所述第一浮點運算數(shù)和所述第二浮點運算數(shù)之間的指數(shù)差是0,則產(chǎn)生EQ指數(shù)差信號。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,產(chǎn)生作為所述第一浮點數(shù)和所述第二浮點數(shù)中的指數(shù)模式的函數(shù)的所述多個指數(shù)差信號(230)包括利用下式產(chǎn)生作為所述第一浮點運算數(shù)和所述第二浮點運算數(shù)中的指數(shù)模式的函數(shù)的GT、LT和EQ指數(shù)模式差信號GT=(EXPsame[1] and XEXP
and~YEXP
)or(EXPdiffr[1] and YEXP
and~XEXP
);LT=(EXPsame[1] and YEXP
and~XEXP
)or(EXPdiffr[1] and XEXP
and~YEXP
);EQ=EXPsame
。
全文摘要
本發(fā)明提供一種用于在微處理器的運算器(ALU)中執(zhí)行近處理路徑(110)指數(shù)差的改進的技術(shù)。在一實施例中,具有用于近處理路徑(110)減法和遠處理路徑(140)減法的獨立邏輯電路的裝置(100)通過只利用兩個浮點運算數(shù)的指數(shù)的兩個最低有效位執(zhí)行指數(shù)差,來產(chǎn)生指數(shù)差信號。
文檔編號G06F7/40GK101040281SQ200580034798
公開日2007年9月19日 申請日期2005年8月9日 優(yōu)先權(quán)日2004年8月13日
發(fā)明者S·斯里瓦斯塔瓦 申請人:模擬裝置公司