两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于執(zhí)行浮點加法的裝置和方法

文檔序號:6365033閱讀:230來源:國知局
專利名稱:用于執(zhí)行浮點加法的裝置和方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于在操作數(shù)A和B上執(zhí)行加法操作以便產(chǎn)生結(jié)果R的裝置和方法,該操作數(shù)A和B —級結(jié)果R是每個都具有有效數(shù)(significant!)和指數(shù)的浮點值。
背景技術(shù)
浮點數(shù)可被表示為如下±l.x*2y其中X =分?jǐn)?shù)I. X =有效數(shù)(也稱為尾數(shù))y =指數(shù)浮點加法可采用兩種形式,即,類符號加法(LSA, like-signed addition)或非類符號加法(USA, unlike-signed addition)。如果將要將具有相同符號的兩個浮點操作數(shù)相加,或者,如果將要將具有不同符號的兩個浮點操作數(shù)想減,則執(zhí)行LSA操作。類似地,如果將要將具有不同符號的兩個浮點操作數(shù)相加,或者,如果將要將具有相同符號的兩個浮點操作數(shù)想減,則執(zhí)行USA操作。當(dāng)在本應(yīng)用中參照浮點操作數(shù)的加法和這種操作數(shù)的有效數(shù)的加法時,其應(yīng)當(dāng)被一同稱為LSA或USA計算,并且因此,將理解,這種屬于覆蓋了加法處通和減法處通二者。 通常,處理器將具有用于執(zhí)行不同的數(shù)據(jù)處理操作的多個已流水線化單元。這種已流水線化單元使加法単元,其包括用于執(zhí)行加法操作的多個流水線階段。浮點加法包括多個階段,即,(I)指數(shù)分析和差計算,(2)操作數(shù)并排,(3)相加(其可能包括舍入內(nèi)射(rounding injection)),以及(4)歸ー化。很多年間,加法流水線的現(xiàn)有技術(shù)已經(jīng)涉及為至少部分加法處理供應(yīng)兩個単獨的路徑,ー個被稱為近路徑,而另ー個被稱為遠(yuǎn)路徑。具體地,基于觀察(重要的對齊和重要的歸ー化是互斥的),這種將近/遠(yuǎn)路徑分開可節(jié)省加法處理中的時鐘周期。因此,近路徑被用于USA操作,該USA操作涉及其指數(shù)等于或相差ー個的操作數(shù),這些操作具有導(dǎo)致有效數(shù)的某些前位抵消的潛能。這種差確實需要舍入,但是,在加法之后,其確實需要歸ー化。然后,遠(yuǎn)路徑被用于所有其他USA操作和所有LSA操作,并且,需要用于執(zhí)行對齊和舍入的電路,但是,僅需要不重要的(I位)歸ー化。這種分離加法器流水線首先在1981年出版在加利福尼亞利弗莫大學(xué)的PFarmwald的博士論文“On the Design of High Performance Digital Arithmetic Units,,中,并且,已經(jīng)在若干后續(xù)設(shè)計中被改善,例如參見提名為“1-GHz HAL SPARC64 DualFloating Point Unit with RAS Features” 的論文,作者為 Naini 及其他,發(fā)表在 2001 年第15屆IEEE計算機體系架構(gòu)論壇的論文集中,并且,其還共有US專利7,437,400,其全部內(nèi)容通過引用被結(jié)合于此。涉及加法的操作的ー種一般形式是采用A+L*M的形式的乘法累加,其中,操作數(shù)L和M的相乘結(jié)果形成用于加法的第二操作數(shù)B。通過IEEE 754-2008標(biāo)準(zhǔn)的公開,融合乘法累加(FMA, fused multiply accumulate)操作(此處還被稱為融合乘法相加操作)已經(jīng)成為浮點單元的要求,F(xiàn)MA操作要求未舍入的相乘結(jié)果與操作數(shù)A相加,然后,舍入被與加法輸入相關(guān)聯(lián)而執(zhí)行。已經(jīng)開發(fā)了精致的FMA已流水線化單元,但是,供應(yīng)這種精致的單元是昂貴的。通常,這種FM單元還被用于執(zhí)行標(biāo)準(zhǔn)的加法操作和標(biāo)準(zhǔn)的乘法操作,因此避免單獨的加法器單元和單獨的乘法器單元的需要,但是,由于FMA的復(fù)雜性,與精致的加法器單元相比,F(xiàn)M単元通常將用更長的時間來執(zhí)行標(biāo)準(zhǔn)加法操作,并且,與単獨的乘法器単元相比,還將用更長的時間來執(zhí)行標(biāo)準(zhǔn)乘法操作。由于大多數(shù)操作實際上不是FMA操作,而是涉及標(biāo)準(zhǔn)加法和乘法,因此,這可導(dǎo)致對浮點単元的顯著的性能影響。例如在共有共同待決美國專利申請No. 12/585, 668中所描述的,用于執(zhí)行FMA操作的另ー機制是使用単獨的乘法單元來執(zhí)行操作數(shù)L和M的相乗,并且然后,將未舍入的結(jié)果轉(zhuǎn)發(fā)給單獨的加法器単元,以形成將要與操作數(shù)A相加的第二操作數(shù),其全部內(nèi)容通過 引用被結(jié)合于此。但是,當(dāng)利用加法器単元的上述近/遠(yuǎn)路徑體系架構(gòu)時,其導(dǎo)致近路徑的操作中的問題。具體地,問題是,用作操作數(shù)中的一個的未舍入的乘法結(jié)果的長度是結(jié)果R的長度的兩倍,并且因此,即便在近路徑中存在抵消,也可能需要舍入。如上所述,近路徑通常不提供舍入電路,并且,加法的輸出需要在執(zhí)行舍入之前被歸ー化。結(jié)果,可能必須就愛那個另一流水線階段添加到近路徑,以允許執(zhí)行舍入,并且,這可能顯著地影響加法器単元的性能。因此,希望提供數(shù)據(jù)處理裝置的改進的浮點加法器単元。

發(fā)明內(nèi)容
從第一方面來看,本發(fā)明提供了一種用于在操作數(shù)A和B上執(zhí)行加法操作以產(chǎn)生結(jié)果R的裝置,所述操作數(shù)A和B以及所述結(jié)果R是每個都具有有效數(shù)和指數(shù)的浮點值,所述裝置包括預(yù)測電路,該預(yù)測電路被配置為基于對在通過使所述操作數(shù)A和B經(jīng)過非類符號相加所產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示;結(jié)果預(yù)歸ー化電路,該結(jié)果預(yù)歸ー化電路被配置為在對有效數(shù)進行相加之前,在操作數(shù)A和操作數(shù)B 二者的有效數(shù)上執(zhí)行移位操作,所述移位操作用于丟棄操作數(shù)A和操作數(shù)B 二者的有效數(shù)的由所述移位指示所確定的數(shù)目的最高有效位,以便產(chǎn)生操作數(shù)A和B的已修改的有效數(shù);操作數(shù)分析電路,該操作數(shù)分析電路被配置為通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn);以及加法電路,該加法電路被配置為在出現(xiàn)所述前位抵消情況的情形中,執(zhí)行操作數(shù)A和B的已修改有效數(shù)的相加,以便產(chǎn)生所述結(jié)果R的有效數(shù)。根據(jù)本發(fā)明,諸如前零預(yù)計電路之類的預(yù)測電路被用于產(chǎn)生移位指示,該移位指示隨后被用于通過在輸入操作數(shù)二者的有效數(shù)上執(zhí)行對操作數(shù)的移位來對結(jié)果的有效數(shù)進行預(yù)歸ー化,該移位的程度取決于由預(yù)測電路所產(chǎn)生的移位指示。如果檢測到前位抵消情況,則加法電路被布置,以利用由記過預(yù)歸ー化電路所輸出的已修改的有效數(shù)來執(zhí)行加法,以便產(chǎn)生結(jié)果的有效數(shù)。這種方法提供了比傳統(tǒng)的提供単獨的近路徑和遠(yuǎn)路徑的現(xiàn)有技術(shù)加法器電路類型更加簡單并更小巧的裝置。當(dāng)輸入操作數(shù)中的一個是之前的乘法器階段的未舍入的乘法結(jié)果時,本發(fā)明的裝置能夠執(zhí)行加法,從而允許融合(fused)乘法相加操作以簡單和高效的方式執(zhí)行。但是,應(yīng)當(dāng)注意,即便在不要求支持融合乘法相加操作的實施例中,通過根據(jù)本發(fā)明的裝置來布置加法器電路,仍舊可獲得顯著的益處。在一個實施例中,如果所述操作數(shù)A和B的指數(shù)具有相同值或具有相差I(lǐng)的值,并且,如果非類符號相加被用于在所述操作數(shù)A和B上執(zhí)行加法操作,則所述操作數(shù)分析電路檢測所述前位抵消情況的出現(xiàn)。在典型的現(xiàn)有技術(shù)加法器電路中,這種前位抵消情況將通常導(dǎo)致在這種現(xiàn)有技術(shù)加法器電路中使 用近路徑。但是,根據(jù)本發(fā)明的實施例,不要求単獨的近路徑,而是,在出現(xiàn)前位抵 消情況的情形中,可使用可用于所有其他加法操作的相同的加法電路,僅是在加法電路的操作之前該結(jié)果的有效數(shù)經(jīng)由預(yù)歸ー化電路被預(yù)歸ー化。在一個實施例中,預(yù)測電路針對如下情形計算移位指示所述非類符號相加導(dǎo)致操作數(shù)A和B中的較小數(shù)被從操作數(shù)A和B中的較大數(shù)中減去。但是,在一個實施例中,在所述預(yù)測電路開始計算前零值時,對操作數(shù)A和B中的哪個較大的判定是不可用的;并且所述預(yù)測電路被布置,以產(chǎn)生第一候選移位指示和第二候選移位指示,所述第一候選移位指示假定操作數(shù)A大于操作數(shù)B,而所述第二候選移位指示假定操作數(shù)B大于操作數(shù)A。因此,這種方法允許預(yù)測電路在知道哪個操作數(shù)較大之前開始起操作,從而允許在比其他可能方法之前更早地判定前零數(shù)。在一個這種實施例中,所訴裝置還包括較大操作數(shù)檢測電路,該較大操作數(shù)檢測電路用于判定操作數(shù)A和操作數(shù)B中的哪個是較大的操作數(shù);以及選擇電路,該選擇電路響應(yīng)于所述較大操作數(shù)檢測電路,并且,被配置為,如果操作數(shù)A是較大的操作數(shù),則將所述第一候選移位指示選作移位指示,而如果操作數(shù)B是較大的操作數(shù),則將所述第二候選移位指示選作移位指示。因此,可見,在這種實施例中,預(yù)測電路的操作可以與較大操作數(shù)檢測電路的操作并行地發(fā)生,基于來自較大操作數(shù)檢測電路的輸出,進行對在兩個候選移位指示之間的選擇。在一個實施例中,該裝置還包括比較電路,該比較電路被配置為輸出比較結(jié)果,該比較結(jié)果指示操作數(shù)A的指數(shù)的最低有效位(LSB)是否與操作數(shù)B的指數(shù)的最低有效位相同。如果所述比較結(jié)果指示指數(shù)的LSB相同,則所述預(yù)測電路針對如下情形來計算移位指示所述非符號相加導(dǎo)致操作數(shù)A和B中的較小數(shù)被從操作數(shù)A和B的較大數(shù)中減去。但是,如果所述比較結(jié)果指示指數(shù)的LSB不同,則所述預(yù)測電路針對如下情形來計算移位指示所述非符號相加導(dǎo)致操作數(shù)A和B中的較小數(shù)的右移移位版本被從操作數(shù)A和B的較大數(shù)中減去。如之前所討論的,如果操作數(shù)的指數(shù)相等或它們相差一,則可能出現(xiàn)前位抵消情況。根據(jù)以上的實施例,如果比較結(jié)果指示指數(shù)不同,則假定指數(shù)相差一。這是所做出的安全的假定,因為如果判定實際上未出現(xiàn)前位抵消情況,則加法電路不使用結(jié)果預(yù)歸ー化電路的輸出,并且因此,預(yù)測電路的輸出被有效地忽略。在一個實施例中,該加法電路被配置為在加法期間執(zhí)行內(nèi)射舍入(injectionrounding),以添加舍入遞增值;并且在所述加法電路之前的所述結(jié)果預(yù)歸ー化電路的操作確保操作數(shù)A和B的已修改有效數(shù)被正確對齊,以用于內(nèi)射舍入。這提供了顯著的性能益處,因為其避免在如所計算的加法電路的輸出之后提供另外的舍入電路的任何需要。這應(yīng)當(dāng)與利用近路徑和遠(yuǎn)路徑的現(xiàn)有技術(shù)布置相對比,如果其支持融合乘法相加操作,則其將必須在近路徑添加另一流水線階段,以允許在進行加法之后執(zhí)行舍入。在一個實施例中,該加法電路包括第一加法電路,該第一加法電路被配置為利用第一舍入遞增值來執(zhí)行加法,其假定沒有溢出情況;以及第二加法電路,該第二加法電路被配置為利用第二舍入遞增值來執(zhí)行加法,其假定出現(xiàn)溢出情況。在出現(xiàn)前零校正情況的情形中,所述加法電路被配置為將由所述第二加法電路從操作數(shù)A和B的已修改的有效數(shù)所產(chǎn)生的結(jié)果作為所述結(jié)果R的有效數(shù)輸出。如本領(lǐng)域技術(shù)人員將理解的,在實踐中,預(yù)測電路可至多具有所預(yù)測的前零數(shù)的一位輸出,該預(yù)測電路用于預(yù)測出現(xiàn)在輸出中前零數(shù),該輸出通過將操作數(shù)A和B經(jīng)過非類符號相加而產(chǎn)生。通常,考慮到該可能性,這將要求供應(yīng)某些校正電路。但是,在以上的實施例中,由于兩個加法電路的出現(xiàn),其可被自動處理,因為,如果所預(yù)測的前零數(shù)被判定為一位輸出,則來自第二加法電路的輸出被用于形成結(jié)果的有效數(shù)。存在檢測前零校正情況的多種方法,但是,在一個實施例中,當(dāng)所述加法電路執(zhí)行對操作數(shù)A和B的已修改有效數(shù)的相加時,如果從所述第一加法電路產(chǎn) 生了進位輸出,則檢測到所述前零校正情況。在一個實施例中,裝置還包括對齊電路,該對齊電路被配置為執(zhí)行對齊操作,以在對有效數(shù)進行相加之前,對操作數(shù)A和B的較小數(shù)的有效數(shù)以及操作數(shù)A和B的較大數(shù)的有效數(shù)進行對齊;以及如果未出現(xiàn)所述前位抵消情況,則所述加法電路被配置為對如所述對齊電路所對齊的操作數(shù)A和B的有效數(shù)進行相加。因此,如果未出現(xiàn)前位抵消情況,則忽略結(jié)果預(yù)歸一化電路的輸出,而是加法電路接收較大操作數(shù)的有效數(shù)以及來自對齊電路的更小操作數(shù)的已對齊有效數(shù)。在一個實施例匯總,對齊電路通過在操作數(shù)A和B的較小數(shù)的有效數(shù)上執(zhí)行右移操作來執(zhí)行所述對齊操作,移位的位數(shù)取決于操作數(shù)A和B的指數(shù)之間的差。在一個實施例中,裝置被配置為ー系列流水線階段,并且,所述結(jié)果預(yù)歸ー化電路位于所述加法電路所位于的后續(xù)流水線階段之前的流水線階段中。另外,在一個實施例中,所述預(yù)測電路位于所述結(jié)果預(yù)歸ー化電路所位于的所述流水線階段之前的在先流水線階段中。在一個實施例中,裝置還包括移位校正電路,該移位校正電路響應(yīng)于檢測到子歸ー情況,在輸入到所述加法電路之前,執(zhí)行對操作數(shù)A和B的已修改有效數(shù)的一位校正右移。一般地,這隨后允許子歸一以與歸一操作數(shù)相同的方式被處理。存在多種檢測子歸ー情況的方法,但是,在一個是示例中,如果所述結(jié)果R的指數(shù)采用預(yù)定義值,則檢測到所述子歸ー情況。在ー個示例實現(xiàn)中,該預(yù)定義值是包括全零的指數(shù)值,針對雙精度數(shù),其指定e_1(l22的指數(shù),并且,在這種情形中,有效數(shù)是O. XXX的形式。當(dāng)輸入到裝置的操作數(shù)中的一個是執(zhí)行在兩個浮點操作數(shù)上的乘法操作的結(jié)果并被作為未舍入的輸入提供時,實際上,最終的和可獲得結(jié)果4. 0,因為未舍入的乘法結(jié)果可能具有不正確的指數(shù)(即,一旦結(jié)果被舍入,其可比所指定的高一位)。如果接近乘法結(jié)果的數(shù)被隨后經(jīng)由USA操作從中減去,則結(jié)果的指數(shù)可以比與加法電路的默認(rèn)輸出相關(guān)聯(lián)的結(jié)果的指數(shù)高兩位。此處,稱這種情景為雙溢出情況。在一個實施例中,裝置還包括結(jié)果有效數(shù)輸出電路,該結(jié)果有效數(shù)輸出電路響應(yīng)于檢測到雙溢出情況,將所述結(jié)果R的有效數(shù)的所有分?jǐn)?shù)位作為邏輯零值輸出,而不管所述加法電路的輸出。在ー個具體實施例中,所述加法電路包括第一加法電路,該第一加法電路被配置為利用第一舍入遞增值來執(zhí)行加法,其假定沒有出現(xiàn)溢出情況;以及第二加法電路,該第二加法電路被配置為利用第二舍入遞增值來執(zhí)行加法,其假定存在溢出情況;當(dāng)執(zhí)行非類符號相加操作時,如果從所述第二加法電路中出現(xiàn)進位輸出,則檢測到所述雙溢出情況。因此,在出現(xiàn)所述雙溢出情況的情形中,結(jié)果的指數(shù)被設(shè)定為比與來自所述第一加法電路的輸出相關(guān)聯(lián)的指數(shù)大ニ。預(yù)測電路可采用各種形式,但是,在一個實施例中,所述預(yù)測電路包括前零預(yù)計電路,該前零預(yù)計電路被配置為將前零值作為移位指示來計算,該前零值指示將出現(xiàn)在通過使所述操作數(shù)A和B經(jīng)過非類符號相加所產(chǎn)生的輸出中的前零數(shù)。從第二方面來看,本發(fā)明提供了一種在數(shù)據(jù)處理裝置中在操作數(shù)A和B上執(zhí)行加法操作以便產(chǎn)生結(jié)果R的方法,所述操作數(shù)A和B以及所述結(jié)果R是每個都具有有效數(shù)和指數(shù)的浮點值,所述方法包括基于對在通過使所述操作數(shù)A和B經(jīng)過非類符號相加所產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示;在對有效數(shù)進行相加之前,通過利用結(jié)果預(yù)歸ー化電路來在操作數(shù)A和操作數(shù)B 二者的有效數(shù)上執(zhí)行移位操作,所述移位操作用于丟棄由所述移位指示所判定的操作數(shù)A和操作數(shù)B 二者的有效數(shù)的某些最高有效位,以便 產(chǎn)生操作數(shù)A和B的已修改的有效數(shù);通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn);以及對齊加法電路,使其響應(yīng)于所述前位抵消情況的出現(xiàn),以執(zhí)行對操作數(shù)A和B的已修改有效數(shù)的加法,以便產(chǎn)生所述結(jié)果R的有效數(shù)。從第三方面來看,本發(fā)明提供了一種用于在操作數(shù)A和B上執(zhí)行加法操作以產(chǎn)生結(jié)果R的裝置,所述操作數(shù)A和B以及所述結(jié)果R是每個都具有有效數(shù)和指數(shù)的浮點值,所述裝置包括預(yù)測設(shè)備,該預(yù)測設(shè)備被配置為基于對在通過使所述操作數(shù)A和B經(jīng)過非類符號相加所產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示;結(jié)果預(yù)歸ー化設(shè)備,該結(jié)果預(yù)歸ー化設(shè)備被配置為在對有效數(shù)進行相加之前,在操作數(shù)A和操作數(shù)B 二者的有效數(shù)上執(zhí)行移位操作,所述移位操作用于丟棄由所述移位指示所判定的操作數(shù)A和操作數(shù)B 二者的有效數(shù)的某些最高有效位,以便產(chǎn)生操作數(shù)A和B的已修改的有效數(shù);操作數(shù)分析設(shè)備,該操作數(shù)分析設(shè)備被配置為通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn);以及加法設(shè)備,該加法設(shè)備被配置為在出現(xiàn)所述前位抵消情況的情形中,執(zhí)行操作數(shù)A和B的已修改有效數(shù)的相加,以便產(chǎn)生所述結(jié)果R的有效數(shù)。


參照如在附圖中所示的實施例,僅以示例的方式來進ー步描述本發(fā)明,其中圖I示意性地示出了根據(jù)ー個實施例的融合乘法相加處理單元;圖2是示出了根據(jù)ー個實施例的設(shè)置在圖I的加法電路的有效數(shù)處理路徑內(nèi)的組件的示圖;圖3A至圖3C示意性地示出了根據(jù)ー個實施例的可被用于產(chǎn)生各種輸入到圖2的組件的控制信號的電路;圖4是示出了根據(jù)ー個實施例的如何計算與來自圖2的加法器addO的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)的流程圖;圖5A和圖5B是示出了根據(jù)ー個實施例的圖2的電路的操作的流程圖;以及圖6是示出了根據(jù)ー個實施例的執(zhí)行圖5A的LZA計算所需的步驟的流程圖。
具體實施方式
圖I示意性地示出了可被用作浮點處理單元的一部分的融合乘法相加處理單元I。以下將描述融合乘法相加単元的各個元件,盡管將理解,為了清楚,該浮點乘法相加単元I還將包括未在圖I中示出的另外特征和元件。融合乘法相加単元I被使出為處理具有53位有效數(shù)的雙精度操作數(shù),盡管該融合乘法相加単元I還可處理帶有24位有效數(shù)的単精度操作數(shù)(或利用具有N位有效數(shù)的另ー浮點格式表示的浮點數(shù))。融合乘法相加單元I包括乘法電路4和加法電路8。乘法電路4接收具有53位有效數(shù)的兩個操作數(shù)L和M。乘法電路響應(yīng)于乘法指令,以將操作數(shù)L和M相乘并在線10上輸出具有53位有效數(shù)的歸ー并舍入的積L*M。乘法電路4還響應(yīng)于融合乘法相加指令,以將操作數(shù)L和M相乘,從而生成具有106位有效數(shù)的未舍入的積L*M0該未舍入的積L*M在總線12上被傳輸?shù)郊臃娐?。加法電路8在總線16上接收操作數(shù)A。操作數(shù)A具有53位有效數(shù)。加法電路還接收如下中的ー個或二者具有53位有效數(shù)的操作數(shù)B和具有106位有效數(shù)的未舍入的積L*M。加法電路8響應(yīng)于融合乘法相加指令,以將總線16上接收的操作數(shù)A加至總線12上·接收的未舍入的積L*M。加法電路還響應(yīng)于相加指令,以將操作數(shù)A加至操作數(shù)B。不管哪個指令正在被執(zhí)行,舍入的結(jié)果值A(chǔ)+L*M或A+B隨后被加法電路8輸出。加法電路8的輸出可被發(fā)送到用于存儲的寄存器文件(未示出),或可被轉(zhuǎn)發(fā)回至復(fù)用器20,該輸出值在該復(fù)用器20處被選擇以用作后續(xù)指令的操作數(shù)A。乘法電路4和加法電路8 二者都包括用于舍入浮點值的電路(雖然,當(dāng)乘法電路4被用于執(zhí)行融合乘法相加指令吋,未使用乘法電路4的舍入電路)。通過減少有效數(shù)的位數(shù)并將舍入值添加到縮短的有效數(shù),對浮點值的舍入被執(zhí)行,以便產(chǎn)生利用更短的有效數(shù)來表示的值。在美國專利申請2006/0117080A1中描述了用于在乘法階段4期間執(zhí)行舍入的方法,其全部內(nèi)容通過引用被結(jié)合于此。在美國專利申請2006/0136543A1中描述了在加法階段8期間執(zhí)行舍入的方法,其全部內(nèi)容通過引用被結(jié)合于此。這些申請描述了通過將舍入融合到乘法或加法操作中以用于加快浮點值的舍入的技木。因此,在本申請中所描述的舍入電路不必區(qū)別于執(zhí)行乘法或加法操作的乘法電路4或加法電路8的部分,并且,可包括包括至少某些相同的電路,該相同的電路可被有選擇地配置以執(zhí)行舍入或不執(zhí)行舍入。如上所述,在單獨的乘法和加法階段中,融合乘法相加單元I執(zhí)行融合乘法相加指令。雖然這意味著需要多的處理周期來執(zhí)行單個融合乘法相加指令,但是,由于對不同指令的處理可被交織,對融合乘法相加指令、相加指令或乘法指令的序列的處理可以更快。與現(xiàn)有技術(shù)的融合MAC單元相比,對單個乘法或加法指令的處理也是更快的,因為可利用乘法電路或加法電路中的一個而非二者來執(zhí)行這些處理。仿真結(jié)果已經(jīng)示出,取決于正在處理的應(yīng)用,融合乘法相加単元I可將指令序列的處理提速3%至23%之間。融合乘法相加單元I在計算ax+by+cz+dw形式的點積方面特別高效,因為這要求融合乘法相加指令的序列。在公用共同待決美國專利申請No. 12/585, 668中描述了圖I的電路形式,其全部內(nèi)容通過引用被結(jié)合于此。乘法電路4可采用多種形式,只要當(dāng)執(zhí)行融合乘法相加指令時其能夠輸出用于輸入到加法器8的未舍入的乘法結(jié)果即可。公用共同待決美國專利申請No. 12/588, 962中描述了合適的乘法電路的ー個示例,其全部內(nèi)容通過引用被結(jié)合于此,當(dāng)將這種乘法器用作融合乘法相加操作的一部分時,在講乘法結(jié)果轉(zhuǎn)發(fā)給加法器之前,將不會執(zhí)行任何舍入內(nèi)射。關(guān)于加法電路8的構(gòu)成,當(dāng)執(zhí)行融合MAC指令吋,使用利用単獨的近路徑和遠(yuǎn)路徑的傳統(tǒng)結(jié)構(gòu)將帶來性能問題。具體地,用作操作數(shù)之一的未舍入乘法結(jié)果的長度是結(jié)果R的長度的兩倍,并且因此,即便在近路徑中存在抵消,也可能需要舍入。但是,近路徑通常不提供舍入電路,并且,加法的輸出需要在執(zhí)行舍入之前被歸ー化。結(jié)果,將必須在近路徑添加另一流水線階段,以允許舍入被執(zhí)行,并且,這將顯著地影響加法電路的性能。圖2是示出了設(shè)置在新的目標(biāo)為解決上述問題的加法電路8的有效數(shù)處理路徑內(nèi)的組件的示圖。如在執(zhí)行階段El中所示,存在操作數(shù)A和操作數(shù)B (以后稱為opa和opb)的多個源,例如,寄存器文件,從加法器8轉(zhuǎn)發(fā)的操作數(shù),從乘法器4轉(zhuǎn)發(fā)的操作數(shù),并且,這些各種 源在圖2中通過框100、110被示意性地示出。在圖2中所述的實施例中,假定如果正在執(zhí)行融合MAC操作,則來自乘法器的未舍入乘法結(jié)果L*M被作為opb源提供到圖2的加法器。在圖2中所示的加法器單元外部的控制電路通過向復(fù)用器opa_muxl05和opb_mux 115發(fā)送合適的控制信號來標(biāo)識選擇哪個輸入。然后,根據(jù)操作數(shù)的類型(單精度、雙精度、或融合乘法輸入),下ー復(fù)用電路120、125從可用位中選擇。為了簡単,圖2中未示出指數(shù)電路,因為,大多數(shù)計算涉及有效數(shù)(指數(shù)大多被用來控制對有效數(shù)發(fā)生了什么)。在流水線階段El的結(jié)束處,來自復(fù)用器120、125的輸出被存儲在觸發(fā)器130、135中。在流水線階段E2中,存儲在觸發(fā)器130、135 二者中的分?jǐn)?shù)值被提供到兩個復(fù)用器160、165 二者,復(fù)用器二者通過在指數(shù)路徑中所確定的“a_larger”信號被控制,以識別opa是否是較大的操作數(shù)。然后,復(fù)用器160選擇與較大的操作數(shù)相關(guān)聯(lián)的分?jǐn)?shù)值,并且,復(fù)用器165選擇與更小的操作數(shù)相關(guān)聯(lián)的分?jǐn)?shù)值,流水線階段E2的結(jié)束處,值二者都被擴展至107位并在被存儲在相關(guān)聯(lián)的觸發(fā)器175、185中。具體地,復(fù)用器160、165包括用于添加前位的邏輯,以將分?jǐn)?shù)轉(zhuǎn)換成有效數(shù),從而添加歸ー操作數(shù)的邏輯I值和子歸ー(subnormal)操作數(shù)的邏輯O值,由其所選擇的子歸ー操作數(shù)具有預(yù)定義的指數(shù)值(在一個實現(xiàn)中,該預(yù)定義的指數(shù)值是全零的指數(shù)值)。然后,將opa的有效數(shù)填充至106位以與opb的有效數(shù)相匹配(通過將一系列邏輯零值作為最低有效位添加),另外的額外位被添加至有效數(shù)二者,以允許在出現(xiàn)出于稍后討論的原因可能出現(xiàn)的可能的I位右移(邏輯上,在轉(zhuǎn)換成有效數(shù)之前執(zhí)行I位右移)的情形中捕獲所有信息。但是,僅在流水線階段E2的結(jié)束處才可獲得哪個操作數(shù)較大的判定。在可獲得該信息之前,預(yù)測電路(在該情形中,前零檢測電路)被使用,以基于對前零(其將出現(xiàn)在通過將操作數(shù)opa和opb經(jīng)過未類符號加法所產(chǎn)生的輸出中)的數(shù)量的預(yù)測來生成移位指示。如果判定將出現(xiàn)前位抵消情況,則該移位指示將被使用,如果opa和opb的指數(shù)具有相同值或具有差為I的值,并且,如果非類符號加法被用于在opa和opb上執(zhí)行加法操作,則這種前位抵消情況出現(xiàn)。將其牢記于心,如果兩個輸入指數(shù)的低次位不同,則控制信號shiftl被設(shè)定(即,shiftl = expa
X0R expb
)。如果Shiftl指示指數(shù)差是奇數(shù),則可推斷如果前位抵消情況被后續(xù)判定為存在,則指數(shù)將相差一。因此,當(dāng)shiftl控制信號被設(shè)定時,在執(zhí)行LZA計算之前,更小的分?jǐn)?shù)需要被右移一位。
由于還不知道哪個操作數(shù)較大,兩個LZA電路150、155被設(shè)置,第一個計算fraca減去(如何合適的話,移I位)fracb,而第二個計算fracb減去(如何合適的話,移I位)fraca。當(dāng)發(fā)生這個時,判定操作數(shù)A和操作數(shù)B哪個較大,以及兩個操作數(shù)之間的準(zhǔn)確的指數(shù)差(該電路涉及對指數(shù)的處理,并且因此在圖2中未示出,但是如參照圖3C所稍后討論的,其僅涉及兩個減法)。在階段E2的結(jié)束處,復(fù)用器170隨后選擇較大的操作數(shù)減去(如何合適的話,移I位)更小的操作數(shù)的正確的LZA值,并且,將該值存儲在觸發(fā)器180中。如之前所描述的,復(fù)用器160和165分別選擇較大的操作數(shù)和更小的操作數(shù)的有效數(shù)。還應(yīng)當(dāng)注意,復(fù)用器165是4:1的復(fù)用器,并且還對shiftl信號做出反應(yīng),該shiftl信號被設(shè)定為選擇更小操作數(shù)的有效數(shù)的右移I位版本。如本領(lǐng)域技術(shù)人員將理解的,可以以各種方式來構(gòu)造前零預(yù)測電路,例如參見文獻“Leading Zero Anticipation and Detection-a Comparison of Methods,,,MSchmookler及其他,15 th IEEE計算機算術(shù)研討會,第7頁至第12頁,2001年6月,以及共有美國專利7,668,892,其全部內(nèi)容通過引用被結(jié)合于此。通過開始流水線階段E3,知曉操作是類符號加法(LSA)還是非類符號加法(USA)。所有帶有指數(shù)差為2或更大的LSA和USA具有利用右移電路200被右移指數(shù)差的ops的有效數(shù)(考慮到,針對指數(shù)的奇數(shù)差,ops的有效數(shù)已經(jīng)經(jīng)過了經(jīng)由復(fù)用器165的I位位移)。通過利用左移電路190、195,帶有指數(shù)差為O或I ( S卩,這些加法帶來之前所述的前位抵消情況)的USA具有左移存儲在觸發(fā)器180中的LZA值的opl和ops 二者。但是,所應(yīng)用的左移量被限制為較大的操作數(shù)的指數(shù)和與子歸ー值相關(guān)聯(lián)的指數(shù)(例如,全零的指數(shù)值)之間的差。由于子歸一指數(shù)值零和歸一指數(shù)值一二者都對應(yīng)于相同的實際指數(shù),因此,如果結(jié)果指數(shù)是零,則存在I位右移校正的需要。這被在4:1的復(fù)用器205、210中處理。具體地,取決于前位抵消情況,復(fù)用器205在opl的左移有效數(shù)和opl的未移動有效數(shù)之間選 擇,并且,如果需要子歸一校正,則選擇I位的已校正版本。類似地,取決于前位抵消情況,復(fù)用器210在ops的左移有效數(shù)和ops的右移有效數(shù)之間選擇,并且,如果需要子歸一校正,則選擇I位的已校正版本。在階段E3的結(jié)束處,兩個3:2的加法器215、230被用于組合來自復(fù)用器205、210的帶有舍入常量內(nèi)射的兩個輸出,加法器230假定沒有發(fā)生溢出,并且,加法器215假定確實發(fā)生溢出。稍后將提供對舍入常量的進ー步討論。兩個加法器都輸出保留進位(carry-save)格式的結(jié)果,進位值和保留值分別在階段E3的結(jié)束處被存儲在觸發(fā)器220、225和235、240中。這些觸發(fā)器的大小是108位,以便捕獲可能從3:2的加法器產(chǎn)生的任意進位輸出位。在階段E4中,通過利用加法器和復(fù)用器250、255和260、265,保留進位形式被添カロ,并且然后,被重新組合為単精度或雙精度數(shù)。然后,最終結(jié)果的有效數(shù)被經(jīng)由復(fù)用器270選擇,并且,該有效數(shù)的分?jǐn)?shù)部分被隨后與結(jié)果的符號和指數(shù)一起存儲在觸發(fā)器275中。觸發(fā)器275的大小是64位,以容納I位符號值、52位分?jǐn)?shù)值和11位指數(shù)值。關(guān)于復(fù)用器270如何選擇最終結(jié)果的有效數(shù),存在四種可能可能I-特殊就誒過被選擇(其覆蓋加法器輸出)。在大多數(shù)情況下,基于在圖2中未示出的指數(shù)邏輯,特殊值被選擇,如果結(jié)果的指數(shù)是全一,則特殊結(jié)果通常被檢測到。特殊結(jié)果是如NaN(非數(shù)字)和無線的東西,并且,用于處理特殊值的電路是本領(lǐng)域技術(shù)人員所熟知的??赡? =如果非溢出加法器(addO) 260的位107被設(shè)定,則溢出加法器(addl) 250的輸出被選擇。但是,在ー個特定的實施例中,存在該規(guī)則的ー個例外,針對帶有為零的所計算的結(jié)果指數(shù)的USA操作,該輸出未被選擇,因為這是不能溢出的獨立的子歸ー情形;在該異常情形中,選擇加法器260的輸出??赡?-(I)如果addl (位108)的進位輸出被設(shè)定,或⑵如 果addO的輸出的位107被設(shè)定,并且,存在帶有USA操作和為零的所計算的結(jié)果指數(shù)的融合輸入(后一種情形是子歸一雙溢出情形),則選擇overflow的結(jié)果(其將結(jié)果有效數(shù)的所有分?jǐn)?shù)位設(shè)定為零,并且然后,選擇高于針對addl的輸出所計算的指數(shù)I)。可能4-在以上可能1-3中所設(shè)定的情形之外的任意情形,addO的輸出被用來形成結(jié)果的有效數(shù)。參見上述圖2的電路,可見,其不具有単獨的近路徑和遠(yuǎn)路徑。在傳統(tǒng)的近/遠(yuǎn)路徑加法器中,LZA計算與加法計算同時完成,LZA值被用于歸ー化和。但是,從對圖2的以上討論中可見,LZA計算更早發(fā)生,其在階段E2被執(zhí)行,比在階段E4中的加法早兩個周期。然后,通過左移階段E3中的兩個操作數(shù)的有效數(shù),所計算的LZA值被用于預(yù)歸一加法的結(jié)果,其丟棄作為結(jié)果的那些有效數(shù)的若干前位。由于在出現(xiàn)USA操作的情形中,當(dāng)相加吋,這些前位將抵消(即,所有將為零),因此,經(jīng)由該左移操作,沒有信息被丟失。另外,通過以這種方式預(yù)歸ー化和,其隨后確保如果判定出現(xiàn)前位抵消,則來自兩個左移電路190、195的輸出被用于加法,該移位的有效數(shù)現(xiàn)被合適地對齊以用于舍入內(nèi)射,并且因此,階段E4中的兩個加法器250、260產(chǎn)生被正確舍入的結(jié)果。另外,通過具有階段 E4 中的兩個加法器 250、260,在文獻“A Small and Fast Leading One PredictorCorrector Circuit”(作者為C Hinds和D Lutz,關(guān)于信號、系統(tǒng)和計算機的阿西羅馬會議,第1181頁至第1185頁,2005年10月)中所描述的LZA校正問題被自動解決。具體地,LZA電路的輸出可以是對前零數(shù)的預(yù)測中的一位輸出,但是,如果存在這種錯誤,則將從加法器addO 260發(fā)生溢出,其導(dǎo)致來自加法器addl 250的輸出被選擇,從而自動校正前零預(yù)測中的錯誤。在圖2的加法器中不存在真正的近路徑或遠(yuǎn)路徑。應(yīng)當(dāng)使用遠(yuǎn)路徑的操作忽略了LZA結(jié)果,并且,將更小的操作數(shù)右移從兩個操作數(shù)的指數(shù)差所計算的量。應(yīng)當(dāng)使用近路徑的操作利用LZA結(jié)果左移階段E3中的操作數(shù)。在兩種情形中,舍入常量都在階段E3的結(jié)束處被用3:2的加法器相加。由于融合輸入的特性,最終和實際上可獲得結(jié)果4. O (用對于復(fù)用器270的控制中的溢出2表示)。這是由于如下事實乘法結(jié)果未舍入,并且因此,可能具有不正確的指數(shù)。作為示例,考慮如下的情形來自復(fù)用器4的乘法結(jié)果包括多于54個前一。如果被舍入,則其將具有更高的指數(shù),但是,其還未被舍入。然后,如果經(jīng)由加法器8中的USA操作將接近該數(shù)的數(shù)從中減去,則指數(shù)可能具有如下三個值中的任意ー個,即,等干與addO加法器的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)、一個大于與addO加法器的輸出相關(guān)聯(lián)的結(jié)果的指數(shù),或兩個大干與addO加法器的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)。如將稍后參照圖4所討論的,加法器8處理USA的方式為將來自addO加法器的輸出的指數(shù)設(shè)定為較大的操作數(shù)的指數(shù)減I (假定使用右移電路200的輸出),或?qū)碜詀ddO加法器的輸出的指數(shù)設(shè)定為等于較大的操作數(shù)的指數(shù)減去LZA值(假定使用左移電路190、195的輸出),并且然后,允許和溢出至下一最大指數(shù)。通過未舍入(融合)輸入,實際上可以再次溢出至下一個更高的指數(shù),因此,存在用于處理之前所描述的溢出2情況(可能3)的需要。關(guān)于處理子歸一,僅需要在階段E2中將合適的有效數(shù)位插入到opl和ops中(針對子歸ー數(shù)而言,這將是0,而針對歸ー數(shù)而言,這將是I),并且然后,通過利用在階段E3中的4:1的復(fù)用器205、210來調(diào)整移動量。之后,通過利用參照圖2所描述的歸一流,子歸ー被處理,而非需要覆蓋最終加法中的溢出2情況(在這種情形中的USA操作的結(jié)果可以是子歸一、帶有最小指數(shù)的歸一、或帶有最小值加I的指數(shù)的歸一)。圖3A至圖3C示出了根據(jù)ー個實施例的可被設(shè)置以便生成輸入到圖2的組件中的 各種控制信號的電路。如在圖3A中所示,優(yōu)選地采用XOR門形式的比較電路300接收操作數(shù)A的指數(shù)和操作數(shù)B的指數(shù)二者的最低有效位,并且,在其輸出處產(chǎn)生輸入到圖2的流水線階段E2的“ shiftl”信號。因此,將理解,如果這些指數(shù)的最低有效位不同,則該shiftl信號被設(shè)定為邏輯零,否則,其被清至邏輯零值。圖3B示出了操作數(shù)分析電路310的操作,該操作數(shù)分析電路310被用于在流水線階段E3期間生成輸入到復(fù)用器205、210的L(左移)或R(右移)控制信號。具體地,指數(shù)差電路315接收操作數(shù)A和B的指數(shù),并且,判定這些指數(shù)之間的差。USA檢測器320從輸入操作數(shù)二者的符號和由輸入指令所指定的相加或相減操作中判定是否將要執(zhí)行USA操作。然后,L/R生成器325從指數(shù)差電路315和USA檢測器320 二者接收輸出。如果操作數(shù)A和B的指數(shù)具有相同值或具有相差為I的值并且將執(zhí)行非類符號加法,則這指示出現(xiàn)了前位抵消情況,并且因此,L輸出被設(shè)定。相反地,如果未出現(xiàn)前位抵消情況,則R輸出被設(shè)定。在實踐中,可利用單個位的輸出信號,其中,ー個值指示L,而另ー值指示R。圖3C示意性地示出了較大操作數(shù)檢測電路330的操作,該較大操作數(shù)檢測電路330被用于產(chǎn)生在圖2的流水線階段E2和E3中所使用的“ exp diff ”信號和“ a_larger”信號。較大指數(shù)檢測器335從操作數(shù)A和B的指數(shù)中判定哪個是較大的指數(shù),并且然后,電路340將更小指數(shù)從較大指數(shù)中減去,以便產(chǎn)生exp diff信號。然后,較大分?jǐn)?shù)檢測電路345接收操作數(shù)A和B 二者的分?jǐn)?shù)值,并且,計算出哪個分?jǐn)?shù)較大。較大操作數(shù)檢測器350從較大指數(shù)檢測器335和較大分?jǐn)?shù)檢測器345接收輸出,并且,基于該輸入,判定哪個操作數(shù)較大。通常,來自較大指數(shù)檢測器335的輸出被用于判定哪個是較大的操作數(shù),但是,如果指數(shù)相等,則來自較大分?jǐn)?shù)檢測器的輸出被用于判定較大的操作數(shù)。然后,較大的操作數(shù)檢測器350生成a_larger信號,如果操作數(shù)A較大,則a_larger信號被設(shè)定為邏輯ー值,并且如果操作數(shù)B較大,則a_larger信號被清至邏輯零值。圖4是示出了在指數(shù)處理路徑(在圖2中未示出)中所執(zhí)行的步驟的流程圖,以便判定與從圖2的加法器addO 260輸出的結(jié)果相關(guān)聯(lián)的指數(shù)。在步驟360處,判定L值是否已在操作數(shù)分析電路310的輸出處被設(shè)定。如果已經(jīng)設(shè)定,則在步驟365處,與來自加法器260的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)被設(shè)定為等于較大操作數(shù)的指數(shù)減去存儲在觸發(fā)器180中的LZA值。但是,存在較大指數(shù)被減去多少的極限,在一個實施例中,不允許被減小至與子歸ー值相關(guān)聯(lián)的值之下,在ー個特定是示例中,該子歸一值是全零的指數(shù)。
在步驟360處,如果判定L值未被設(shè)定,則處理進行到步驟370,在該步驟處判定是否將要執(zhí)行非類符號相加操作。如果不執(zhí)行,則處理進行到步驟375,與來自加法器260的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)被設(shè)定為等于較大操作數(shù)的指數(shù)。但是,如果在步驟370處判定將要執(zhí)行非類符號相加操作,則處理進行到步驟380,與來自加法器260的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)被設(shè)定為等于較大操作數(shù)的指數(shù)減I。已經(jīng)判定了與來自加法器260的輸出相關(guān)聯(lián)的結(jié)果的指數(shù),將理解,與來自加法器250的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)僅被設(shè)定為比所計算的指數(shù)大一。如果與來自加法器260的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)是全零,則這指示出現(xiàn)了子歸ー情況,并且,導(dǎo)致子歸一信號被設(shè)定并作為輸入提供給圖2的流水線的階段E3中的復(fù)用器205、210。類似地,如果與來自加法器260的輸出相關(guān)聯(lián)的結(jié)果的指數(shù)是全一,則這指示出現(xiàn)特殊情形,并且,其被用于設(shè)定將特殊信號輸入到圖2的流水線階段E4期間的復(fù)用器270。圖5A和圖5B提供示出了根據(jù)ー個實施例的圖2的電路的操作的流程圖。在步驟400處,輸入操作數(shù)A和B被接收,在某些實施例中,該操作數(shù)B是操作數(shù)L和M的未舍入的相乘結(jié)果。之后,在步驟405處,執(zhí)行前零預(yù)測(LZA)計算,稍后參照圖6來更加詳細(xì)地討論該處理。之后,步驟410和415被并行執(zhí)行,在步驟410處,操作數(shù)A和B的有效數(shù)被左移通過步驟405處所產(chǎn)生的LZA結(jié)果所判定的量。在步驟415處,更小操作數(shù)的有效數(shù)被右移取決于指數(shù)差的量。之后,處理進行到步驟420,判定是否出現(xiàn)前位抵消情況。如果出現(xiàn),則在步驟425處,通過步驟410所產(chǎn)生的左移有效數(shù)被選擇。相反地,如果未出現(xiàn)前位抵消情況,則在步驟430處,較大操作數(shù)的有效數(shù)和更小操作數(shù)的右移有效數(shù)被選擇。在步驟425或步驟430之后,處理進行到步驟435,判定是否存在子歸ー情況,通常,如果與加法器260相關(guān)聯(lián)的結(jié)果的指數(shù)是全零,則檢測這個。如果判定存在子歸ー情況,則處理進行到步驟440,執(zhí)行對所選有效數(shù)的一位校正右移。在步驟440之后,或直接在步驟435之后,如果不存在子歸ー情況,則在步驟445處,通過內(nèi)射舍入,兩個加法操作被執(zhí)行,第一加法假定沒有溢出,而第二加法假定溢出情 況。之后,在步驟450處,判定是否檢測到特殊情況,如之前所描述的,這通常是如下情形與來自加法器260的結(jié)果相關(guān)聯(lián)的指數(shù)是全一。如果出現(xiàn)特殊情況,則處理進行到步驟455,所預(yù)定的特殊值被選作結(jié)果有效數(shù)。但是,假定沒有出現(xiàn)特殊情況,則在步驟460處檢測到出現(xiàn)溢出2情況。如果是這樣,則處理分支到不知465,結(jié)果有效數(shù)的所有分?jǐn)?shù)位被迫使為零。假定不存在溢出2情況,則在步驟470處,判定是否存在溢出情況,即,是否存在來自加法器260的進位輸出。如果存在,則在步驟475處,第二加法器250的輸出被用作結(jié)果有效數(shù),而如果沒有溢出情況,則第一加法器260的輸出被用作結(jié)果有效數(shù)。在步驟455、465、475和480中的相關(guān)的ー個之后,在步驟485處,結(jié)果有效數(shù)被雖有輸出。圖6是更加詳細(xì)地示出了圖5A的步驟405的流程圖。在步驟500處,判定操作數(shù)A和B的指數(shù)的最低有效位是否相同。如果相同,則處理進行到步驟505和步驟510,第一候選移位指示和第二候選移位指示被產(chǎn)生,第一候選移位指示假定操作數(shù)A較大,而第二候選移位指示假定操作數(shù)B較大。類似地,如果操作數(shù)A和B的指數(shù)的最低有效位不同,則處理進行到步驟515和520,第一候選移位指示和第二候選移位指示被再次產(chǎn)生,分別假定操作數(shù)A較大,或操作數(shù)B較大。但是,在步驟515和520的計算中,使用了所假定的更小操作數(shù)的I位右移版本。然后,處理進行到步驟525,判定操作數(shù)A是否大于操作數(shù)B。如果是,則處理進行到不知530,第一候選移位指示被選作將要存儲在觸發(fā)器180中的LZA結(jié)果。但是,如果在步驟525處判定操作數(shù)A不比操作數(shù)B大,則在步驟535處,第二候選移位指示被選作LZA結(jié)果。在步驟530或535之后,在步驟540處,LZA結(jié)果隨后被存儲在觸發(fā)器180中?,F(xiàn)為了完整,考慮將作為roundO和roundl輸入到圖2中的3:2加法器215、230中的值舍入,這些值將取決于所使用的舍入模式。例如,存在四個IEEE 754舍入模式RZ(向零舍入)、RN(向最接近的偶數(shù)舍入)、RM(向負(fù)無窮舍入),以及RP(向正無窮舍入)。由于作為符號和幅值所存儲的浮點數(shù),RM和RP可考慮針對其范圍的向無窮的輸入(RU),而RZ可考慮剩余的范圍。具體地,針對RP模式,任意正數(shù)被向無窮舍入(RU舍入),并且,任意負(fù)數(shù)未被舍入(RZ舍入),而針對RM模式,任意負(fù)數(shù)被向無窮舍入(RU舍入),而任意正數(shù)未被舍入(RZ舍入)。因此,出于所有實際原因,僅存在三個舍入模式RZ、RN、RU。通過內(nèi)射的舍入意味著添加執(zhí)行三個舍入模式中的一個的常量。內(nèi)射舍入的益處是可在執(zhí)行加法之前發(fā)生所需的內(nèi)射,其避免了需要在加法輸出之后進行單獨的輸入操作。首先考慮具有24位的有效數(shù)的単精度浮點數(shù),針對RN模式,I被內(nèi)射到第24位的右邊。針對RU模式,全一的自被內(nèi)射到第24位的右邊。針對RZ模式,不進行內(nèi)射(即,內(nèi)射值為零被選擇)。在圖2的實施例中,實際上使用了兩個舍入常量,因為不確定頭24位在哪里。如果在我們對兩個數(shù)字求和時存在進位,則頭24位在當(dāng)不存在進位輸出時其所在位置的向左一位。這就是為什么在階段E4中設(shè)置了兩個加法器和兩個舍入常量-ー個加法器假定存在來自和的進位輸出,而另ー個假定不存在該進位輸出。通過查看低加法器260的進位輸出位,可判定哪個加法器是正確的。因此,當(dāng)對單精度數(shù)字進行相加時,低加法器(addO)的內(nèi)射舍入值roundO是前24位零第25位如果使用RU或RN模式,則為ー第26位和剩余位如果使用RU模式,則為ー當(dāng)對單精度數(shù)字進行相加時,高加法器(addl)的內(nèi)射舍入值roundl是前23位零第24位如果使用RU或RN模式,則為ー第25位和剩余位如果使用RU模式,則為ー雙精度數(shù)具有53位的有效數(shù),因此,第53位的右邊發(fā)生內(nèi)射。否則,邏輯與針對単精度加法器的邏輯完全相同。因此,當(dāng)對雙精度數(shù)進行相加時,低加法器(addO)的內(nèi)射舍入值roundO是
前53位零第54位如果使用RU或RN模式,則為ー
第55位和剩余位如果使用RU模式,則為ー當(dāng)對雙精度數(shù)進行相加吋,高加法器(addl)的內(nèi)射舍入值roundl是前52位零第53位如果使用RU或RN模式,則為ー第54位和剩余位如果使用RU模式,則為ー根據(jù)圖2中所描述的加法器,對加法器的輸入被布置(在出現(xiàn)前位抵消情況時,經(jīng)由對結(jié)果的預(yù)歸ー化),使得可總使用相同的兩個內(nèi)射常量。以下文本提供某些示例,其示出了圖2的加法電路的統(tǒng)一路徑如何處理傳統(tǒng)上應(yīng)當(dāng)經(jīng)過加法器的遠(yuǎn)路徑的加法以及傳統(tǒng)上應(yīng)當(dāng)經(jīng)過加法器的近路徑的加法。浮點數(shù)被表示為符號位和幅值,并且,幅值總是正的。符號位和操作(加法或減·法)被評估,以便判定操作是類符號相加(LSA)還是非類符號相加(USA)。LSA 是正A加正B負(fù)A加負(fù)B正A減負(fù)B負(fù)A減正BUSA 是正A加負(fù)B負(fù)A加正B正A減正B負(fù)A減負(fù)B針對以下示例,為了清楚,使用僅帶有4位有效數(shù)和小指數(shù)的短格式。實際的示例可具有24位或53位的有效數(shù)。為了簡單,未包括舍入常量。在以下的示例中,表示為I. 011e4的數(shù)表示數(shù)I. 011乘以ニ的四次冪。示例 ILSA,經(jīng)典遠(yuǎn)路徑(LSA永遠(yuǎn)右移的示例)I. Oil e4+1. 101 e2在相加之前,我們需要使指數(shù)相同,因此更小的數(shù)得右移兩位。
1.011e4 +0.01101 e4
1.11001 e4參照圖2,在以上的示例中,將忽略LZA的輸出180,利用右移電路200,更小的操作數(shù)將被右移,并且,由于不存在溢出,來自addO加法器260的輸出將被選擇。示例 2USA右移,經(jīng)典遠(yuǎn)路徑
I. Oil e4-I. 001 e2在相減之前,我們需要使指數(shù)相同,因此,通過右移電路200,更小的數(shù)得右移兩位。
權(quán)利要求
1.一種用于在操作數(shù)A和B上執(zhí)行加法操作以產(chǎn)生結(jié)果R的裝置,所述操作數(shù)A和B以及所述結(jié)果R是浮點值,每個浮點值具有一有效數(shù)和一指數(shù),所述裝置包括 預(yù)測電路,被配置為基于對使所述操作數(shù)A和B經(jīng)過非類符號相加而產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示; 結(jié)果預(yù)歸一化電路,被配置為在對有效數(shù)進行相加之前,在操作數(shù)A和操作數(shù)B 二者的有效數(shù)上執(zhí)行移位操作,所述移位操作用于丟棄操作數(shù)A和操作數(shù)B 二者的有效數(shù)的由所述移位指示所確定的數(shù)目的最高有效位,以便產(chǎn)生操作數(shù)A和B的已修改的有效數(shù); 操作數(shù)分析電路,被配置為通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn);以及 加法電路,被配置為在出現(xiàn)所述前位抵消情況的情形中,執(zhí)行操作數(shù)A和B的已修改有效數(shù)的相加,以便產(chǎn)生所述結(jié)果R的有效數(shù)。
2.根據(jù)權(quán)利要求I所述的裝置,其中,如果所述操作數(shù)A和B的指數(shù)具有相同值或具有相差I(lǐng)的值,并且,如果非類符號相加被用于在所述操作數(shù)A和B上執(zhí)行加法操作,則所述操作數(shù)分析電路檢測所述前位抵消情況的出現(xiàn)。
3.根據(jù)權(quán)利要求I所述的裝置,其中,所述預(yù)測電路針對如下情形計算移位指示所述非類符號相加導(dǎo)致操作數(shù)A和B中的較小數(shù)被從操作數(shù)A和B中的較大數(shù)中減去。
4.根據(jù)權(quán)利要求3所述的裝置,其中 在所述預(yù)測電路開始計算前零值時,對操作數(shù)A和B中的哪個較大的判斷是不可用的;并且 所述預(yù)測電路被布置為產(chǎn)生第一候選移位指示和第二候選移位指示,所述第一候選移位指示假定操作數(shù)A大于操作數(shù)B,而所述第二候選移位指示假定操作數(shù)B大于操作數(shù)A。
5.根據(jù)權(quán)利要求4所述的裝置,還包括 較大操作數(shù)檢測電路,用于判斷操作數(shù)A和操作數(shù)B中的哪個是較大的操作數(shù);以及選擇電路,該選擇電路響應(yīng)于所述較大操作數(shù)檢測電路,并且,被配置為如果操作數(shù)A是較大的操作數(shù),則將所述第一候選移位指示選作移位指示,而如果操作數(shù)B是較大的操作數(shù),則將所述第二候選移位指示選作移位指示。
6.根據(jù)權(quán)利要求3所述的裝置,還包括 比較電路,該比較電路被配置為輸出比較結(jié)果,該比較結(jié)果指示操作數(shù)A的指數(shù)的最低有效位是否與操作數(shù)B的指數(shù)的最低有效位相同; 如果所述比較結(jié)果指示指數(shù)的最低有效位相同,則所述預(yù)測電路針對如下情形來計算移位指示所述非符號相加導(dǎo)致操作數(shù)A和B中的較小數(shù)被從操作數(shù)A和B的較大數(shù)中減去;并且 如果所述比較結(jié)果指示指數(shù)的最低有效位不同,則所述預(yù)測電路針對如下情形來計算移位指示所述非符號相加導(dǎo)致操作數(shù)A和B中的較小數(shù)的右移I位版本被從操作數(shù)A和B的較大數(shù)中減去
7.根據(jù)權(quán)利要求I所述的裝置,其中 所述加法電路被配置為在加法期間執(zhí)行內(nèi)射舍入,以添加舍入遞增值;并且在所述加法電路之前的結(jié)果預(yù)歸一化電路的操作確保操作數(shù)A和B的已修改有效數(shù)對于內(nèi)射舍入被正確對齊。
8.根據(jù)權(quán)利要求7所述的裝置,其中,所述加法電路包括 第一加法電路,該第一加法電路被配置為利用第一舍入遞增值來執(zhí)行加法,其假定沒有出現(xiàn)溢出情況;以及 第二加法電路,該第二加法電路被配置為利用第二舍入遞增值來執(zhí)行加法,其假定出現(xiàn)了溢出情況; 在出現(xiàn)前零校正情況的情形中,所述加法電路被配置為將由所述第二加法電路從操作數(shù)A和B的已修改的有效數(shù)所產(chǎn)生的結(jié)果作為所述結(jié)果R的有效數(shù)輸出。
9.根據(jù)權(quán)利要求8所述的裝置,其中,當(dāng)所述加法電路執(zhí)行對操作數(shù)A和B的已修改有效數(shù)的相加時,如果從所述第一加法電路產(chǎn)生了進位,則檢測到所述前零校正情況。
10.根據(jù)權(quán)利要求I所述的裝置,其中 所述結(jié)果預(yù)歸一化電路通過在操作數(shù)A和操作數(shù)B二者的有效數(shù)上執(zhí)行左移操作來執(zhí)行所述移位操作,以便產(chǎn)生操作數(shù)A和B的已修改的有效數(shù)。
11.根據(jù)權(quán)利要求I所述的裝置,還包括 對齊電路,該對齊電路被配置為執(zhí)行對齊操作,以在對有效數(shù)進行相加之前,對操作數(shù)A和B的較小數(shù)的有效數(shù)以及操作數(shù)A和B的較大數(shù)的有效數(shù)進行對齊;以及 如果未出現(xiàn)所述前位抵消情況,則所述加法電路被配置為對被所述對齊電路對齊的操作數(shù)A和B的有效數(shù)進行相加。
12.根據(jù)權(quán)利要求I所述的裝置,其中,所述對齊電路通過在操作數(shù)A和B的較小數(shù)的有效數(shù)上執(zhí)行右移操作來執(zhí)行所述對齊操作,移位的位數(shù)取決于操作數(shù)A和B的指數(shù)之間的差。
13.根據(jù)權(quán)利要求I所述的裝置,其中 所述操作數(shù)B是在兩個浮點操作數(shù)上所執(zhí)行的乘法操作的結(jié)果,并且,被未舍入地作為對所述裝置的輸入而提供,使得所述結(jié)果R表示融合乘法相加操作的結(jié)果。
14.根據(jù)權(quán)利要求13所述的裝置,其中 所述加法電路被配置為在加法期間執(zhí)行內(nèi)射舍入,以添加舍入遞增值;并且 在所述加法電路之前的所述結(jié)果預(yù)歸一化電路的操作確保操作數(shù)A和B的已修改的有效數(shù)對于內(nèi)射舍入被正確對齊。
15.根據(jù)權(quán)利要求I所述的裝置,其中,所述裝置被配置為一系列流水線階段,并且,所述結(jié)果預(yù)歸一化電路位于所述加法電路所處的后續(xù)流水線階段之前的流水線階段中。
16.根據(jù)權(quán)利要求15所述的裝置,其中,所述預(yù)測電路位于所述結(jié)果預(yù)歸一化電路所處的所述流水線階段之前的在先流水線階段中。
17.根據(jù)權(quán)利要求I所述的裝置,還包括 移位校正電路,該移位校正電路響應(yīng)于檢測到子歸一情況,在輸入到所述加法電路之前,執(zhí)行對操作數(shù)A和B的已修改有效數(shù)的一位校正右移。
18.根據(jù)權(quán)利要求17所述的裝置,其中,如果所述結(jié)果R的指數(shù)采用預(yù)定義值,則檢測到所述子歸一情況。
19.根據(jù)權(quán)利要求13所述的裝置,還包括 結(jié)果有效數(shù)輸出電路,該結(jié)果有效數(shù)輸出電路響應(yīng)于檢測到雙溢出情況,將所述結(jié)果R的有效數(shù)的所有分?jǐn)?shù)位作為邏輯零值輸出,而不管所述加法電路的輸出。
20.根據(jù)權(quán)利要求19所述的裝置,其中,所述加法電路包括 第一加法電路,該第一加法電路被配置為利用第一舍入遞增值來執(zhí)行加法,其假定沒有出現(xiàn)溢出情況;以及 第二加法電路,該第二加法電路被配置為利用第二舍入遞增值來執(zhí)行加法,其假定存在溢出情況; 當(dāng)執(zhí)行非類符號相加操作時,如果從所述 第二加法電路中出現(xiàn)進位,則檢測到所述雙溢出情況;并且 在出現(xiàn)所述雙溢出情況的情形中,結(jié)果的指數(shù)被設(shè)定為比與來自所述第一加法電路的輸出相關(guān)聯(lián)的指數(shù)大2。
21.根據(jù)權(quán)利要求I所述的裝置,其中,所述預(yù)測電路包括前零預(yù)計電路,該前零預(yù)計電路被配置為將前零值作為移位指示來計算,該前零值指示將出現(xiàn)在通過使所述操作數(shù)A和B經(jīng)過非類符號相加所產(chǎn)生的輸出中的前零數(shù)。
22.—種在數(shù)據(jù)處理裝置中在操作數(shù)A和B上執(zhí)行加法操作以便產(chǎn)生結(jié)果R的方法,所述操作數(shù)A和B以及所述結(jié)果R是浮點值,每個浮點值具有一有效數(shù)和一指數(shù),所述方法包括 基于對在使所述操作數(shù)A和B經(jīng)過非類符號相加而產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示; 在對有效數(shù)進行相加之前,通過利用結(jié)果預(yù)歸一化電路來在操作數(shù)A和操作數(shù)B 二者的有效數(shù)上執(zhí)行移位操作,所述移位操作用于丟棄操作數(shù)A和操作數(shù)B 二者的有效數(shù)的由所述移位指示所確定的數(shù)目的最高有效位,以便產(chǎn)生操作數(shù)A和B的已修改的有效數(shù); 通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn);以及 對齊加法電路響應(yīng)于所述前位抵消情況的出現(xiàn),以執(zhí)行對操作數(shù)A和B的已修改有效數(shù)的加法,以便產(chǎn)生所述結(jié)果R的有效數(shù)。
23.一種用于在操作數(shù)A和B上執(zhí)行加法操作以產(chǎn)生結(jié)果R的裝置,所述操作數(shù)A和B以及所述結(jié)果R是浮點值,每個浮點值具有一有效數(shù)和一指數(shù),所述裝置包括 預(yù)測設(shè)備,該預(yù)測設(shè)備被配置為基于對使所述操作數(shù)A和B經(jīng)過非類符號相加而產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示; 結(jié)果預(yù)歸一化設(shè)備,該結(jié)果預(yù)歸一化設(shè)備被配置為在對有效數(shù)進行相加之前,在操作數(shù)A和操作數(shù)B 二者的有效數(shù)上執(zhí)行移位操作,所述移位操作用于丟棄操作數(shù)A和操作數(shù)B二者的有效數(shù)的由所述移位指示所確定的數(shù)目的最高有效位,以便產(chǎn)生操作數(shù)A和B的已修改的有效數(shù); 操作數(shù)分析設(shè)備,該操作數(shù)分析設(shè)備被配置為通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn);以及 加法設(shè)備,該加法設(shè)備被配置為在出現(xiàn)所述前位抵消情況的情形中,執(zhí)行操作數(shù)A和B的已修改有效數(shù)的相加,以便產(chǎn)生所述結(jié)果R的有效數(shù)。
全文摘要
一種用于執(zhí)行浮點加法的裝置和方法。在操作數(shù)A和B上執(zhí)行加法操作以產(chǎn)生結(jié)果R,操作數(shù)A和B以及結(jié)果R是具有有效數(shù)和指數(shù)的浮點值。預(yù)測電路基于對使操作數(shù)A和B經(jīng)過非類符號相加而產(chǎn)生的輸出中將出現(xiàn)的前零數(shù)的預(yù)測,生成移位指示。結(jié)果預(yù)歸一化電路在對有效數(shù)進行相加之前,在操作數(shù)A和操作數(shù)B的有效數(shù)上執(zhí)行移位操作,丟棄由移位指示所確定的數(shù)目的最高有效位,以產(chǎn)生操作數(shù)A和B的已修改的有效數(shù)。操作數(shù)分析電路通過參照操作數(shù)A和B的指數(shù)來檢測前位抵消情況的出現(xiàn),加法電路在出現(xiàn)前位抵消情況的情形中,執(zhí)行操作數(shù)A和B的已修改有效數(shù)的相加,以產(chǎn)生結(jié)果R的有效數(shù)。這種方法提供了用于執(zhí)行加法操作的特別簡單和高效的裝置。
文檔編號G06F7/57GK102707921SQ20121003915
公開日2012年10月3日 申請日期2012年2月17日 優(yōu)先權(quán)日2011年2月17日
發(fā)明者大衛(wèi)·雷蒙德·魯茨 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
读书| 岑溪市| 吉林省| 石河子市| 栖霞市| 柳州市| 阿拉善左旗| 枝江市| 铁岭县| 绥棱县| 吉木乃县| 屏东市| 东明县| 西丰县| 井冈山市| 门源| 安图县| 锦州市| 宜宾市| 萨迦县| 阳朔县| 河南省| 海安县| 镶黄旗| 通州市| 贵南县| 怀宁县| 开鲁县| 邵阳市| 温州市| 宁河县| 班玛县| 定南县| 潼关县| 湖州市| 金华市| 龙游县| 巴东县| 贺州市| 合山市| 珠海市|