算術運算單元、信息處理設備和算術運算方法
2023-05-27 09:01:01 1
專利名稱:算術運算單元、信息處理設備和算術運算方法
技術領域:
本發明涉及用於通過使用算術運算單元中的浮點乘法加法器(FMA)中的黏著位(sticky bit)對算術運算結果進行捨入的技術。更具體而言,本發明涉及當使用預測理論時用於有效獲得黏著位的技術,其中預測理論確定在預定位(例如,「1」位)的誤差範圍內在算術運算結果的捨入處理中使用的歸一化移位量。
背景技術:
這裡使用的浮點乘法加法器(FMA)例如被構造為如圖12所示。圖12所示的浮點乘法加法器100包括右移位器(整直器(aligner))10、乘法器[CSA(進位保留加法器)樹]11、CSA(進位保留加法器)12、絕對值加法器(Abs.加法器)13、移位量計算器[L.Z.(前導零)預測器]20、歸一化器(左移位器)300和捨入器400。
浮點乘法加法器100支持遵照IEEE(電子及電氣工程師協會)754的單精度算術和雙精度算術。
右移位器10、乘法器11、CSA 12和絕對值加法器13一起用作乘法加法器,該乘法加法器執行具有三個操作數(圖12中的「OP1」、「OP2」和「OP3」)的浮點乘法加法算術運算。
移位量計算器20確定從來自絕對值加法器13的輸出數據(算術運算結果;參考稍後將描述的圖13)的開頭起連續有多少個零。這個結果是要被輸入到歸一化器300的移位量。即,移位量計算器20計算由歸一化器300在左移位處理(歸一化處理)中使用的歸一化移位量。
在浮點乘法加法器100中,移位量計算器20與絕對值加法器13的處理並行地計算歸一化移位量,以便實現高速運算。移位量計算器20不是使用來自絕對值加法器13的輸出數據而是使用來自前級中CSA 12的輸出數據(即,絕對值加法器13的輸入數據)來計算歸一化移位量。移位量計算器20計算的歸一化移位量是被表示為「7」位的數據,並且被輸出到歸一化器300。
在移位量計算器20中,所計算的歸一化移位量有些時候不足「1」位。
歸一化器300通過使用移位量計算器20計算出的歸一化移位量來對來自絕對值加法器13的輸出數據(下文中被稱為算術運算結果)進行移位,其中算術運算結果中的預定位位置處的值總是被歸一化器300設置為「1」。
捨入器400對歸一化器300歸一化的算術運算結果進行捨入。捨入器400生成自身進行的捨入處理所需的黏著位。即,當在除算術運算結果中的假數(mantissa)之外要被省略的區域(黏著位生成區域;參考稍後描述的圖14和15)中存在「1」時,捨入器400執行捨入處理以將「1」添加到假數,以便改進作為來自浮點乘法加法器100的輸出數據的算術運算結果中的假數(稍後描述的圖14和15)的精度。
如圖13所示,作為來自絕對值加法器13的輸出數據的算術運算結果,是具有「128」位長度的數據(由「0」和「1」構成的數據),該「128」位例如被表示為C127:0。順帶提及,C127:125是固定值「000」。
當浮點乘法加法器100支持單精度算術時,如圖14所示形成來自歸一化器300並被歸一化器300歸一化的輸出數據(R127:0)。
在「128」位的算術運算結果中,由來自最高數位的「4」個位構成的R127:124是固定值欄位,由「23」個位構成的R123:101是假數,隨後的R100是G(保護)位,R99是R(捨入)位,並且剩餘的由「99」位構成的R98:0是黏著位生成區域,其是用於生成黏著位的區域。
當浮點乘法加法器100支持雙精度算術時,如圖15所示形成來自歸一化器300並被歸一化器300歸一化的輸出數據(R127:0)。
在「128」位的算術運算結果中,由來自最高數位的「4」個位構成的R127:124是固定值欄位,由「52」個位構成的R123:72是假數,隨後的R71是G(保護)位,R70是R(捨入)位,並且剩餘的由「70」位構成的R69:0是黏著位生成區域,其是用於生成黏著位的區域。
在圖14和15分別示出的單精度算術和雙精度算術的情形中,R127:124是固定值欄位,其值是「0000」,但是R124的值總是被歸一化器300的歸一化處理設置為「1」。
圖16示出了歸一化器300和捨入器400的結構。如圖16所示,歸一化器300包括多個移位器31至35,即,第一移位器(第一左移位器)31、第二移位器(第二左移位器)32、第三移位器(第三左移位器)33、第四移位器(第四左移位器)34和一位左移位器(1bit左移位器)35。
第一到第四移位器31至34通過使用由移位量計算器20計算出的作為具有「7」位長度數據的歸一化移位量SA6:0(SA移位量),對算術運算結果歸一化(左移位)。
由於輸入數據(算術運算結果)是如圖13所示的「128」位數據,所以由第一到第四移位器31至34所獲得的移位量(即,由移位量計算器20計算出的歸一化移位量)最大是「127」位。因此,第一移位器31基於7位長數據中的1位數據可以移位作為歸一化移位量的「64」位或「0」位,第二移位器32基於7位長數據中的2位數據可以移位「48」、「32」、「16」或「0」位,第三移位器33基於7位長數據中的2位數據可以移位「12」、「8」、「4」或「0」位,並且第四移位器34基於7位長數據中的2位數據可以移位「3」、「2」、「1」或「0」位。
一位移位器35確定預定位位置(這裡是R124)處的值是否被移位變為「1」,以作為第四移位器34的歸一化處理的結果。當預定位位置處的值不是「1」時,一位移位器35確定移位量計算器20計算出的歸一化移位量不足「1」位,從而第四移位器34進一步將由第四移位器34歸一化的算術運算結果向左移位「1」位。這樣,預定位位置處的數據為「1」。
即,一位移位器35確定從第四移位器34供應的輸出數據的預定位位置處的值是否為「1」。當值為「1」時,一位移位器35不執行移位處理。當由於移位量計算器20計算出的歸一化移位量不足「1」位因而預定位位置處的值是「0」時,一位移位器35將來自第四移位器34的輸出數據僅移位「1」位,使得預定位位置處的值為「1」,以便完成歸一化處理。
如圖16所示,捨入器400包括增量器41、黏著位生成器42、判定捨入單元43和選擇電路44。
增量器(incrementer)41執行捨入處理以將「1」添加到歸一化器300歸一化的算術運算結果中的假數(對於單精度算術是R123:101,對於雙精度算術是R123:72)。
黏著位生成器42生成判定捨入單元43使用的黏著位以確定由增量器41捨入的算術運算結果是否被最終輸出。黏著位生成器42通過對黏著位生成區域中的所有數據執行OR操作確定數據「1」是否被包括在黏著位生成區域中。當至少一個「1」被包括在黏著位生成區域中的時候,黏著位生成器42將黏著位設置為「1」。
在單精度算術的情形中,黏著位生成器42通過對R98:0中「99」位的數據執行OR操作,確定「1」是否存在於黏著位生成區域中,從而生成黏著位。在雙精度算術的情形中,黏著位生成器42通過對R69:0中「70」位的數據執行OR操作來生成黏著位。
判定捨入單元43基於黏著位生成器42生成的黏著位、作為算術運算結果中假數的最低有效位的L(最低有效)位、G(保護)位、R(捨入)位(參考圖14和15)、從外部輸入的RD(捨入方向)位和SIGN位,確定捨入處理是否是必需的。並且,判定捨入單元43將確定的結果輸出到選擇電路44。
選擇電路44基於由判定捨入單元43獲得的確定結果,輸出經由增量器41輸入的經捨入的算術運算結果或者從歸一化器300輸出的原樣的算術運算結果。
即,當判定捨入單元43確定捨入處理是必要(作為確定結果)的時候,選擇電路44輸出由增量器41捨入的算術運算結果。當判定捨入單元43確定捨入處理不是必要(作為確定結果)的時候,選擇電路44輸出未經捨入的算術運算結果,該算術運算結果是從歸一化器300原樣輸出的。
已經存在這樣的一種技術,其通過利用基於歸一化移位量而生成的屏蔽碼(mask)屏蔽歸一化之前的乘法加法運算結果中的假數,來生成黏著位(例如,參見日本專利申請早期公開No.平8-212192;下文中被稱為專利文件1)。
為了黏著位生成器42生成黏著位,在圖12所示的公知浮點乘法加法器100中需要對最大長度為99位的數據進行或(OR)運算。與增量器41所處理的「56」位相比,這引起更長的延遲,增量器41處理「56」位AND電路處理56位長數據大致相同。
此外,在浮點乘法加法器100中,歸一化器300歸一化算術運算結果,黏著位生成器42生成黏著位,然後判定捨入單元43判定捨入,從而選擇數據。因此,在從歸一化器300輸出數據時的時刻和從捨入器400輸出數據時的時刻之間產生大的延遲(即,來自浮點乘法加法器100)。
近年來,安裝浮點乘法加法器100的中央處理單元的頻率大部分超過2GHz。由於超過2GHz的這種頻率的周期時間非常短,所以難以在歸一化器300中在一個周期內執行歸一化處理,其需要等於或大於具有128位寬度的移位器(左移位器)所需要的延遲時間的延遲時間。捨入器400當然更難以在相同周期時間內執行處理。因此,一般在歸一化器300進行的處理和捨入器400進行的處理之間劃分流水線級(pipeline stage),如圖17中的虛線Y所示。圖17中示出的示例支持單精度算術。如虛線X所示,在第一移位器31進行的處理和第二移位器32進行的處理之間劃分流水線級。如虛線Z所示,在選擇電路44輸出結果之後劃分流水線級。
當如圖17所示劃分流水線級的時候,需要在劃分流水線級的位置處鎖存數據。在歸一化器300進行的處理和捨入器400進行的處理之間的邊界上,鎖存「128」位的數據。即,在該分級鎖存中,僅被黏著位生成器42用來生成黏著位的黏著位生成區域中的「99」位數據(R98:0)必須被鎖存,這引起了用於分級鎖存的配置和配線(物料量)的大量增加。當支持雙精度算術時,黏著位生成區域中的70位長數據(R69:0)必須被鎖存,以便僅生成黏著位。
對於上面的專利文件1中公開的技術,需要製造兩種屏蔽碼,一種屏蔽碼在歸一化移位量沒有不足「1」位時使用,一種屏蔽碼在歸一化移位量不足「1」位時使用,以便應對移位量計算器(最高數位檢測器單元)所計算的歸一化移位量不足「1」位的情形。
然後,需要採用方法(1)或方法(2),在方法(1)中,根據歸一化處理的結果確定歸一化移位量是否不足「1」位,並且使用兩種屏蔽碼中的任一種;在方法(2)中,準備好通過使用兩種屏蔽碼所獲得的處理結果,並且基於歸一化處理的結果選擇處理結果中的任一個。
然而,當採用方法(1)時,延遲變大。當採用方法(2)時,用於屏蔽的OR操作量和硬體資源(物料量)增加。
發明內容
考慮到上述問題,本發明的目的是縮短生成黏著位所需的周期時間以及高效生成黏著位,同時減少用於生成黏著位的硬體資源。
因此,本發明提供了一種算術運算單元,該算術運算單元通過使用黏著位對算術運算結果執行捨入處理,所述黏著位代表在算術運算結果被歸一化的時候是否已被移位了「1」,所述算術運算單元包括算術運算裝置,用於輸出算術運算結果;具有至少兩個或更多移位裝置的歸一化器,用於對算術運算結果執行歸一化處理;移位量計算器,用於計算所述多個移位裝置的多個移位量;黏著位預測裝置,用於通過使用所述多個移位量生成中間黏著位,中間黏著位是在算術運算結果被歸一化時是否要移位「1」的預測結果;以及黏著位生成器,用於通過使用中間黏著位生成黏著位。
根據本發明的算術運算單元還包括判定捨入裝置,用於通過使用黏著位輸出關於是否執行捨入處理的判定結果;增量裝置,用於將「1」添加到算術運算結果;以及選擇裝置,用於通過使用判定結果選擇算術運算結果或來自增量裝置的輸出。
本發明還提供了一種藉助算術運算單元執行算術運算的信息處理設備,該算術運算單元通過使用黏著位對算術運算結果執行捨入處理,所述黏著位代表在算術運算結果被歸一化的時候是否已被移位了「1」,所述算術運算單元包括算術運算裝置,用於輸出算術運算結果;具有至少兩個或更多移位裝置的歸一化器,用於對算術運算結果執行歸一化處理;移位量計算器,用於計算所述多個移位裝置的多個移位量;黏著位預測裝置,用於通過使用所述多個移位量生成中間黏著位,中間黏著位是在算術運算結果被歸一化時是否要移位「1」的預測結果;以及黏著位生成器,用於通過使用中間黏著位生成黏著位。
上面的算術運算單元還包括判定捨入裝置,用於通過使用黏著位輸出關於是否執行捨入處理的判定結果;增量裝置,用於將「1」添加到算術運算結果;以及選擇裝置,用於通過使用判定結果選擇算術運算結果或來自增量裝置的輸出。
本發明還提供了一種算術運算方法,該算術運算方法通過使用黏著位對算術運算結果執行捨入處理,所述黏著位代表在算術運算結果被歸一化的時候是否已被移位了「1」,所述方法包括輸出算術運算結果的步驟;移位量計算步驟,計算要在至少兩個或更多移位處理步驟中使用的多個移位量;歸一化步驟,通過將歸一化處理劃分成多個移位處理步驟並且在所述多個移位處理步驟處分別使用多個移位量來對算術運算結果執行歸一化處理;黏著位預測步驟,通過使用所述多個移位量生成中間黏著位,中間黏著位是在算術運算結果被歸一化時是否要移位「1」的預測結果;以及黏著位生成步驟,通過使用中間黏著位生成黏著位。
根據本發明,邏輯和計算單元與歸一化器進行的歸一化處理並行地計算中間黏著位,並且生成器基於由歸一化器歸一化的算術運算結果中的黏著位生成區域的一部分中的數據和中間黏著位,生成黏著位。因此,不需要在歸一化處理之後計算黏著位生成區域中的所有數據的邏輯和。這可以防止延遲的增加並且可以高效地生成黏著位。
具體地說,儘管已知的OR電路需要「99」個輸入,但是根據本發明的OR電路僅需要「5」個輸入,這大大縮短了算術運算延遲並且降低了流水線級數,並且有助於提高時鐘頻率。
當在歸一化器進行的歸一化處理和捨入器進行的處理之間劃分流水線級的時候,黏著位被與歸一化處理並行地生成。因此,不需要鎖存所有算術運算結果,而僅需要鎖存通過從算術運算結果中減去黏著位生成區域而獲得的區域。這有助於減少分級鎖存器的硬體資源以及用於鎖存的配線配置。實際上,鎖存器的寬度(目前出於單精度算術和雙精度算術的目的需要「128」位)可以被減少到「60」位,這允許用於配置和配線的物料量的大大減少。
作為要由黏著位生成器處理的區域的第二區域包括可由一位移位器處理的區域,所述一位移位器執行對於歸一化移位量的不足量的歸一化處理。因此,不需要準備專門的硬體來應對移位量計算器所計算的歸一化移位量是不是不足預定位數,因此一定可以生成黏著位而與歸一化移位量是否不足。
與上述的專利文件1中公開的技術不同,可以避免因區別歸一化移位量是否不足預定位數而引起的物料量的增加或延遲的增加。
因此,與在算術運算結果被歸一化之後生成黏著位的公知技術相比,本發明可以大大減少物料量以及算術運算延遲和流水線級數。
圖1是示出根據本發明實施例的算術運算單元的結構的框圖;圖2是示出根據本發明實施例的算術運算單元的歸一化器、黏著位生成器和捨入器的結構的框圖;圖3是示出根據本發明實施例的算術運算單元中的黏著位生成器的邏輯和計算單元的邏輯電路示例的示圖;圖4是根據本發明實施例的算術運算單元中的黏著位生成器的邏輯和計算單元的邏輯電路示例;圖5(a)至5(c)是用於示出當根據本發明實施例的算術運算單元支持單精度算術時的黏著位生成器的邏輯和計算單元的操作的示圖,圖5(a)至5(c)中的每一個是用於圖示出黏著位生成區域的一部分上的操作的示圖;
圖6是示出根據本發明實施例的算術運算單元中的黏著位生成器的邏輯和計算單元的邏輯電路示例的示圖;圖7是示出根據本發明實施例的算術運算單元中的黏著位生成器的邏輯和計算單元的邏輯電路示例的示圖;圖8是示出根據本發明實施例的算術運算單元中的黏著位生成器的邏輯和計算單元的邏輯電路示例的示圖;圖9(a)至9(c)是用於示出當根據本發明實施例的算術運算單元支持雙精度算術時的黏著位生成器的邏輯和計算單元的操作的示圖,圖9(a)至9(c)中的每一個是用於圖示出黏著位生成區域的一部分上的操作的示圖;圖10是示出當根據本發明實施例的算術運算單元支持單精度算術時算術運算單元的操作示例的示圖,其中劃分了流水線級;圖11是示出當根據本發明實施例的算術運算單元支持雙精度算術時算術運算單元的操作示例的示圖,其中劃分了流水線級;圖12是示出已知的浮點乘法加法器的結構的框圖;圖13是用於圖示出被輸入到第二移位器的數據格式的示圖;圖14是用於圖示出本發明的算術運算單元和已知的浮點乘法加法器支持單精度算術的情況下的輸出數據的示圖;圖15是用於圖示出本發明的算術運算單元和已知的浮點乘法加法器支持雙精度算術的情況下的輸出數據的示圖;圖16是示出了已知的浮點乘法加法器的歸一化器和捨入器的結構的示圖;圖17是示出了在已知的浮點乘法加法器支持單精度算術的時候浮點乘法加法器的操作示例的示圖,其中劃分了流水線級;以及圖18是示出根據本發明實施例的算術運算單元中的黏著位生成器的邏輯和計算單元的OR電路的示圖。
具體實施例方式
在下文中,將參考附圖描述本發明的實施例。
單精度算術情形下的本發明實施例首先,將參考圖1所示的框圖描述根據本發明實施例的浮點乘法加法器的結構。順帶提及,附圖中類似的參考標號指代類似或相應的部件,因此這裡部分省略對它們的詳細描述。
如圖1所示,浮點乘法加法器1包括右移位器(整直器)10、乘法器[CSA(進位保留加法器)樹]11、CSA(進位保留加法器)12、絕對值加法器(Abs.加法器)13、移位量計算器[L.Z.(前導零)預測器]20、歸一化器(左移位器)30、捨入器40和黏著位生成器50。
浮點乘法加法器1支持遵照IEEE(電子及電氣工程師協會)754的單精度算術。
來自絕對值加法器13的輸出數據(算術運算結果;到歸一化器30的輸入數據格式)與圖13所示的(C127:0)相同。當浮點乘法加法器1支持單精度算術時使用的數據結構(來自歸一化器30的輸出數據格式)與圖14所示的(R127:0)相同。在下面的說明中,將參考圖13至15描述算術運算結果(輸入數據格式)和輸出數據(輸出數據格式)。
右移位器10、乘法器11、CSA 12和絕對值加法器13一起用作執行具有三個操作數(圖中的「OP1」、「OP2」和「OP3」)的浮點乘法加法運算的乘法加法運算單元。由乘法加法運算單元獲得的算術運算結果(即,來自絕對值加法器13的輸出數據)被表達為如圖13所示的C127:0。
移位量計算器20預測從來自絕對值加法器13的輸出數據(算術運算結果)的開頭起連續有多少個零。這個結果是歸一化器30的移位量。移位量計算器20計算算術運算結果的歸一化移位量,用以在歸一化器30進行的左移位處理(歸一化處理)中使用。由移位量計算器20計算的歸一化移位量有時不足「1」位。
歸一化器30通過使用由移位量計算器20計算的歸一化移位量,對來自絕對值加法器13的輸出數據(下文中偶爾稱之為算術運算結果)執行左移位處理(歸一化處理)。算術運算結果中預定位位置(這裡是R124)處的值總是被歸一化器30設置為「1」。
圖2示出了浮點乘法加法器1的歸一化器30、黏著位生成器50和捨入器40的結構。如圖2所示,歸一化器30包括多個移位器31至35,即,第一移位器(第一左移位器)31、第二移位器(第二左移位器)32、第三移位器(第三左移位器)33、第四移位器(第四左移位器)34和一位移位器[一位左移位器(第二處理單元)]35。
第一到第四移位器31至34一起用作第一處理單元,第一處理單元通過使用移位量計算器20計算的歸一化移位量(7位數據SA6:0)對算術運算結果執行歸一化處理(左移位)。
由於算術運算結果是「128」位數據,所以由第一到第四移位器31至34獲得的移位量(即,移位量計算器20計算的歸一化移位量)最大是「127」位。因此,第一移位器31基於7位長數據SA6:0中的SA6可以移位「64」或「0」位,其是歸一化移位量。第二移位器32基於SA6:0中的SA5:4可以移位「48」、「32」、「16」或「0」位。第三移位器33基於SA6:0中的SA3:2可以移位「12」、「8」、「4」或「0」位。第四移位器34基於SA6:0中的SA1:0可以移位「3」、「2」、「1」或「0」位。
向第一移位器31輸入的是作為7位長數據輸出的歸一化移位量中的「1」位數據(SA6),其代表歸一化移位量是否不小於「64」位,即,第一移位器31是否執行移位「64」位的處理,如上所述。當SA6是「1」時,第一移位器31執行「64」位的移位。當SA6是「0」時,第一移位器31不執行移位。
當輸入到第二至第四移位器32至34中的歸一化移位量被表達為SA5:0時,第二移位器32基於SA5:4執行歸一化處理。第二移位器32在SA5:4是「11」時執行「48」位的移位,在SA5:4是「10」時執行「32」位的移位,在SA5:4是「01」時執行「16」位的移位,並且在SA5:4是「00」時不執行移位。
類似地,第三移位器33在SA3:2是「11」時執行「12」位的移位,在SA3:2是「10」時執行「8」位的移位,在SA3:2是「01」時執行「4」位的移位,並且在SA3:2是「00」時不執行移位。
類似地,第四移位器34在SA1:0是「11」時執行「3」位的移位,在SA1:0是「10」時執行「2」位的移位,在SA1:0是「01」時執行「1」位的移位,並且在SA1:0是「00」時不執行移位。
一位移位器35確定作為基於由第四移位器34獲得的歸一化移位量的歸一化處理的結果,是否執行了移位使得預定位位置R124處的值為「1」(歸一化移位量是否不足)。當預定位位置處的值不是「1」時,一位移位器35確定由移位量計算器20計算的歸一化移位量不足「1」位,並且進一步將由第四移位器34歸一化的算術運算結果移位「1」位。這樣,預定位位置處的值變為「1」。
即,一位移位器35確定來自第四移位器34的輸出數據中的預定位位置處的值是「0」還是「1」。當值為「1」時,一位移位器35不執行移位處理。
當因為移位量計算器20計算的歸一化移位量不足「1」位因而預定位位置處的值是「0」時,一位移位器35將來自第四移位器34的輸出數據僅移位「1」位,以便完成歸一化處理(即,以便在預定位置處設置「1」)。
在浮點乘法加法器1中,黏著位生成器50與歸一化器30進行的歸一化處理並行地生成黏著位。因此,歸一化器30沒有向捨入器40輸出經歷歸一化處理的算術運算結果的所有位,而是向捨入器40輸出通過從算術運算結果除去黏著位生成區域而獲得的部分。換句話說,在單精度算術的情形下,輸入到捨入器40中的是29位長數據R127:99。
如圖2所示,黏著位生成器50與歸一化器30進行的歸一化處理並行地生成黏著位。黏著位生成器50包括邏輯和計算單元(黏著位預測器;預測裝置)51和生成器(在附圖中指示為「進行黏著」)52。
具體地說,當在來自歸一化器30的輸出數據(R127:0)中的黏著位生成區域(在圖14的單精度算術的情形中是R98:0)中即使一個位為「1」時,黏著位生成器50將黏著位設置為「ON」,或者在黏著位生成區域中的所有位為「0」時,將黏著位設置為「OFF」。黏著位生成器50利用邏輯和計算單元51和生成器52生成黏著位。
邏輯和計算單元51預測來自算術運算結果中的最低數位的預定區域中的數據是否被歸一化器30進行的歸一化處理移位到黏著位生成區域,該預測過程與歸一化器30進行的歸一化處理並行進行,並且計算被預測移位到黏著位生成區域中的數據的邏輯和作為中間黏著位。
這裡,邏輯和計算單元51通過使用被輸入到第二移位器32和第三移位器33的歸一化移位量(4位數據;SA5:2)預測由第一移位器31歸一化的算術運算結果中的預定區域(第一區域)中的數據是否被歸一化器30進行的歸一化過程移位到黏著位生成區域,並且確定被預測移位到黏著位生成區域的數據是否包括「1」。從而,邏輯和計算單元51生成中間黏著位。
現在,將描述支持單精度算術的浮點乘法加法器1的情形。
由於歸一化器20在浮點乘法加法器1中執行左移位處理,所以通過使用歸一化移位量檢查C98:0的區域中是否包括「1」,可以執行對「1」是否存在於R98:0中的檢查。
具體地說,邏輯和計算單元51首先對將包括在R98:0中的區域執行OR操作,即使歸一化處理是在「64」位上執行的,其是通過將一位移位器35能夠移位的「1」位添加到作為第二至第四移位器32至34能夠移位的最大區域的「63」位而獲得的,即,該區域是將保持在黏著位生成區域而與歸一化移位量無關的區域。
在單精度算術的情形中,邏輯和計算單元51對C34:0執行OR操作,其是即使執行作為最大移位量的「64」位的左移位時也將被保留的R98:64,。
此外,邏輯和計算單元51對包括在R98:0中與歸一化移位量無關的部分之外的區域執行處理,這裡即是除了C34:0之外的區域C94:35。邏輯和計算單元51對未被移位到R98:0之外的C94:35部分的每「4」位執行OR操作,即使當基於歸一化移位量(SA5:2)的移位處理被執行的時候,並且驗證它。對每「4」位執行OR操作的原因是第三移位器33的移位量以「4」位改變。
即,如圖5(a)所示,由於當SA5:2為「0000」時C94:91的移位量落在從「O」到「3」位的範圍內,所以C94:91總是保持在區域R98:0中。因此,對於該情形,只有對C94:91的OR操作的結果作為PAT14被輸出。當SA5:2為「0001」時,移位量落在從「4」到「7」位的範圍內。因此,C94:91落在R98:95的範圍內或在R98:0的範圍之外。因此,生成器52執行處理。
圖5(a)中示出的處理例如是由邏輯電路51a完成的,邏輯電路51a包括如圖6所示的OR門、NOT門和AND門。即,邏輯和計算單元51具有電路51a。到邏輯電路51a的輸入信號S16例如由圖3所示的邏輯電路32a實現。即,邏輯和計算單元51具有邏輯電路32a,邏輯電路32a具有OR門32a-3,OR門32a-3輸出SA5和SA4的邏輯和作為S16(代表是否執行了不少於「16」位的移位的信號)。類似地,到邏輯電路51a的輸入信號S4例如由圖4所示的邏輯電路33a實現。即,邏輯和計算單元51具有邏輯電路33a,邏輯電路33a具有OR門33a-3,OR門33a-3輸出SA3和SA2的邏輯和作為S4(代表是否執行了不少於「4」位的移位的信號)。
如圖5(b)所示,關於C90:87,當SA5:2不小於「0001」時,C90:87總是落在R98:0的範圍內。因此,對C90:87的OR操作的結果作為PAT13而被輸出。當SA5:2是「0010」時,C90:87落在R98:95的範圍內或者在R98:0的範圍之外。因此,生成器52使用沒有預測的移位結果執行處理。
圖5(b)中示出的處理例如是由邏輯電路51b完成的,邏輯電路51b包括如圖7所示的OR門、NOT門和AND門。即,邏輯和計算單元51具有邏輯電路51b,邏輯電路51b包括OR門51b-1,用於輸出C90:87的邏輯和、NOT門51b-2和51b-3,用於分別將S16和S8反相併且輸出它們;AND門51b-4,用於輸出來自NOT門51b-2和51b-3的輸出的邏輯積;以及AND門51b-5,用於輸出來自OR門51b-1的輸出和來自AND門51b-4的輸出的邏輯積以作為PAT13。
到邏輯電路51b的輸入信號S16例如是由圖3所示的邏輯電路32a實現的。即,邏輯和計算單元51具有邏輯電路32a,邏輯電路32a具有OR門32a-3,OR門32a-3輸出SA5和SA4的邏輯和以作為S16(代表是否執行了不少於「16」位的移位的信號)。類似地,到邏輯電路51b的輸入信號S8例如由圖4所示的邏輯電路33a實現。即,邏輯和計算單元51具有邏輯電路33a,邏輯電路33a包括緩衝門(buffer gate)33a-2,緩衝門33a-2輸出SA3以作為S8(代表是否執行了不少於「8」位的移位的信號)。
隨後,關於C86:35的數據,邏輯和計算單元51以上面的方式逐「4」位區分數據,同時將歸一化移位量的值增加「1」位,並且通過執行OR操作輸出這個結果以作為PAT12至PAT1,或者通過使用沒有預測的移位結果執行處理。
如圖5(c)所示,關於最後的C38:35,當SA5:2不小於「1110」時,C38:35總是落在R98:0的範圍內。因此,對於此情形,僅僅通過對C38:35執行OR操作而獲得的結果被作為PAT0輸出。當SA5:2是「1111」時,C38:35落在R98:95的範圍內或者在R98:0的範圍之外。因此,生成器52執行處理。
圖5(c)中示出的處理例如是由邏輯電路51c完成的,邏輯電路51c包括如圖8所示的OR門、NAND門和AND門。即,邏輯和計算單元51具有邏輯電路51c,邏輯電路51c包括OR門51c-1,用於輸出C38:35的邏輯和;NAND門51c-2,用於輸出S48和S12的反相AND;以及AND門51c-3,用於輸出來自OR門51c-1的輸出和來自NAND門51c-2的輸出的邏輯積以作為PAT0。到邏輯電路51c的輸入信號S48例如是由圖3所示的邏輯電路32a實現的。即,邏輯和計算單元51具有邏輯電路32a,邏輯電路32a具有AND門32a-1,AND門32a-1輸出SA5和SA4的邏輯積以作為S48(代表是否執行了「48」位的移位的信號)。類似地,到邏輯電路51c的輸入信號S12例如由圖4所示的邏輯電路33a實現。即,邏輯和計算單元51具有邏輯電路33a,邏輯電路33a包括AND門33a-1,AND門33a-1輸出SA3和SA2的邏輯積以作為S12(代表是否執行了「12」位的移位的信號)。
如上所述,邏輯和計算單元51對C94:35的數據執行上面的處理,從而輸出了PAT14:0。
最後,邏輯和計算單元51利用如圖18所示構造的OR電路51d對PAT14:0執行OR操作,從而生成中間黏著位。這裡,當PAT14:0中的至少「1」位是「1」時,邏輯和計算單元51(邏輯電路51d)將中間黏著位設置為「ON」(即,「1」)。當所有位是「0」時,邏輯和計算單元51將中間黏著位設置為「OFF」(即,「0」)。
當支持單精度算術時,邏輯和計算單元51對於C94:0(第一區域)的數據,預測將被歸一化器30(這裡是第一到第三移位器31至33)進行的歸一化處理移位到黏著位生成區域中的數據,並且基於該預測生成中間黏著位。
接下來,將描述生成器52。生成器52基於被歸一化器30歸一化的算術運算結果中的黏著位生成區域中的第二區域R98:95中的數據,生成黏著位,並且中間黏著位被邏輯和計算單元51所計算。
即,邏輯和計算單元51關於作為歸一化移位量的SA5:0中的SA5:2上的歸一化處理進行預測,而生成器52不預測SA1:0上的歸一化處理,只是使用一位移位器35獲得的最終移位結果。
即,生成器52對4位長數據R98:95執行OR操作,其是作為第四移位器34能夠移位的最大移位量的「3」位和一位移位器35能夠移位的「1」位的和。
這裡,生成器52對5位長數據執行OR操作,該5位長數據是「4」位R98:95與「1」位中間黏著位的和。當即使5位長數據中的「1」位是「1」時,生成器52將黏著位設置為「ON」。當所有位是「0」時,生成器52將黏著位設置為「OFF」。
如上所述,可以由生成器52在OR操作中處理的位數總是不少於一位移位器35能夠處理的移位量(這裡是「1」位)。
在浮點乘法加法器1中,第一至第四移位器31至34的最後級中的第四移位器34可以處理所述多個移位器31至34中的最少移位量。這使得可以最小化能夠由生成器52在OR操作中處理的位數,最小化生成器52的電路尺寸,並且最小化生成器52的延遲。
接下來,將描述生成器52。生成器52基於通過從被歸一化器30歸一化的算術運算結果中的黏著位生成區域除去第一區域(這裡是C65:0)而獲得的區域(這裡是第二區域R69:66)中的數據,生成黏著位,並且中間黏著位被邏輯和計算單元51所計算。
即,生成器52不預測SA1:0上的歸一化過程,而執行4位數據R69:66上的OR操作。
因此,生成器52對下述「5」位數據執行OR操作,該「5」位數據是「4」位R69:66和「1」位中間黏著位的和。當即使5位長數據中的「1」位是「1」時,生成器52將黏著位設置為「ON」。當所有位是「0」時,生成器52將黏著位設置為「OFF」。
接下來,將描述捨入器40。如圖2所示,捨入器40基於由黏著位生成器50中的生成器52生成的黏著位,對歸一化器30所歸一化的算術運算結果進行捨入處理。捨入器40包括增量器(增量裝置)41、判定捨入單元(判定捨入裝置)43和選擇電路(選擇裝置)44。
增量器41執行捨入處理以將「1」添加到歸一化器30所歸一化的算術運算結果中的假數(在單精度算術的情形中是C123:101)。
判定捨入單元43基於下述內容來確定捨入處理是否是必需的(1)由黏著位生成器50生成的黏著位,(2)作為從歸一化器30輸出的算術運算結果中的假數的最低有效位的L(最低有效位)位(參考圖14和15),(3)算術運算結果中的G(保護)位,(4)算術運算結果中的R(捨入)位(參考圖14和15),(5)從外部輸入的RD(捨入方向)位,以及(6)從外部輸入的SIGN位。判定捨入單元43將判定結果輸出到選擇電路44。
選擇電路44基於判定捨入單元43,輸出經由增量器41輸入的經捨入的算術運算結果,或者原樣輸出從歸一化器30輸出的算術運算結果。
即,當判定捨入單元43判定捨入處理是必需的(作為判定結果)時候,選擇電路44輸出由增量器41捨入的算術運算結果。當判定捨入單元43判定捨入處理不是必需的(作為判定結果)時候,選擇電路44輸出從歸一化器30饋送的算術運算結果,其是未經歷捨入處理的算術運算結果。
接下來,將參考圖10描述浮點乘法加法器1的歸一化器30、黏著位生成器50和捨入器40的操作示例(其中劃分了流水線級)。順帶提及,圖10示出了浮點乘法加法器1執行單精度算術的情形,其中虛線X至Z表示劃分流水線級的邊界。
如圖10所示,在浮點乘法加法器1中,黏著位生成器50中的邏輯和計算單元51與歸一化器30中的第二移位器32和後面的移位器所執行的處理並行地執行處理,並且黏著位生成器52中的生成器50在歸一化器30的歸一化處理之後通過使用一位移位器35的結果來生成黏著位。
目前,通常要劃分流水線級,因為如上所述,歸一化器30的歸一化處理和捨入器40的捨入處理之間的處理周期被延長。為此,可以如虛線Y所示在浮點乘法加法器1中劃分流水線級。
在該情形中,從一位移位器35(即,歸一化器30)輸出的數據是29位數據R127:99,其是通過從R127:0去除黏著位生成區域R98:0而獲得的剩餘部分,因此僅僅這29位長數據必須被鎖存。可以從輸出數據減去黏著位生成區域的原因是由於黏著位生成器50生成了黏著位,所以不需要再向捨入器40輸出R98:0了。
還需要鎖存由黏著位生成器50所生成的「1」位黏著位。
被鎖存的29位長數據中的R127:101被輸入到增量器41,同時繞過增量器41被直接輸入到選擇電路44。
被鎖存的29位數據中與L位、R位和G位相對應的3位長數據R101:99被輸入到判定捨入單元43以被用於捨入判定。
被鎖存的58位長數據R127:72被輸入到增量器41,同時繞過增量器41被直接輸入到選擇電路44。
被鎖存的58位長數據中與L位、R位和G位相對應的3位長數據R72:70被輸入到判定捨入單元43以被用於判定捨入單元43的判定。
在根據本發明實施例的浮點乘法加法器1中,邏輯和計算單元51與歸一化器30的歸一化處理並行地計算中間黏著位,並且生成器52基於中間黏著位和歸一化器30所歸一化的算術運算結果中的黏著位生成區域的一部分中的數據,生成黏著位。因此,不需要在歸一化處理之後計算黏著位生成區域中的所有數據的邏輯和,並且可以高效地生成黏著位,同時防止延遲。
當支持單精度算術時,在歸一化器30的歸一化處理之後,對僅僅5位數據而非黏著位生成區域中的99位數據進行OR操作是足夠的,這大大縮短了延遲。
當在歸一化器30進行的處理和捨入器40進行的處理之間劃分流水線級時,僅需要鎖存除了黏著位生成區域之外的區域中的數據,而不需要鎖存所有的算術運算結果數據(R127:0),因為黏著位生成是與歸一化處理並行執行的。因此,可以減少硬體資源(物料量)例如鎖存器等。具體地說,可以將目前鎖存的128位長數據減少到30位長數據(參考圖10),這意味著可以將要被鎖存的數據減少「98」位,這是它們之間的差異之處。
此外,在浮點乘法加法器1中,考慮到一位移位器35的歸一化處理的結果而生成黏著位,即,黏著位是基於關於黏著位生成區域(第二區域)的歸一化處理的結果而產生的,其根據一位移位器35的歸一化處理的結果可能被改變。因此,可以與歸一化器30進行的歸一化過程並行地開始生成黏著位。而且,不需要區別移位量計算器20計算的歸一化移位量是否不足「1」位。因此,一定能夠生成黏著位而與歸一化移位量是否不足無關。與上述的專利文件1中公開的技術不同,可以避免因區別歸一化移位量是否不足「1」位而引起的物料量和延遲的增加。
邏輯和計算單元51沒有預測第四移位器34進行的歸一化處理,第四移位器34是歸一化器30中的多個移位器31至34中的最後級,但是生成器52基於第四移位器34進行的歸一化處理的結果生成黏著位。即,由生成器52處理的第二區域是第四移位器34獲得的最大移位量和一位移位器35獲得的「1」位的和。因此,與預測多級中的所有移位器31至34(第一處理單元)進行的歸一化處理的結果的方式相比,邏輯和計算單元51可以更高效地生成黏著位。
由於第四移位器34具有浮點乘法加法器1中的移位器31至34之中的最少移位量,所以生成器52進行的處理變得更有效率,並且可以減少生成器52的物料量。
雙精度算術情形下的本發明實施例首先,將參考圖1所示的框圖描述根據本發明實施例的浮點乘法加法器的結構。順帶提及,附圖中類似的參考標號指代類似或相應的部件,因此這裡部分省略對它們的詳細描述。
如圖1所示,浮點乘法加法器1包括右移位器(整直器)10、乘法器[CSA(進位保留加法器)樹]11、CSA(進位保留加法器)12、絕對值加法器(Abs.加法器)13、移位量計算器[L.Z.預測器]20、歸一化器(左移位器)30、捨入器40和黏著位生成器50。
浮點乘法加法器1支持遵照IEEE(電子及電氣工程師協會)754的雙精度算術。
來自絕對值加法器13的輸出數據(算術運算結果;到歸一化器30的輸入數據格式)與圖13所示的(C127:0)相同。當浮點乘法加法器1支持雙精度算術時使用的數據結構(來自歸一化器30的輸出數據格式)與圖15所示的(R127:0)相同。因此,將參考圖13至15描述算術運算結果(輸入數據格式)和輸出數據(輸出數據格式)。
右移位器10、乘法器11、CSA 12和絕對值加法器13一起用作執行具有三個操作數(圖中的「OP1」、「OP2」和「OP3」)的浮點乘法加法運算的乘法加法運算單元。乘法加法運算的算術運算結果被表達為如圖13所示的C127:0。
移位量計算器20預測從來自絕對值加法器13的輸出數據(算術運算結果)的開頭起連續有多少個零。這個結果是歸一化器30的移位量。即,移位量計算器20計算算術運算結果的歸一化移位量,用以在歸一化器30進行的左移位處理(歸一化處理)中使用。注意,由移位量計算器20計算的歸一化移位量有時不足「1」位。
歸一化器30通過使用由移位量計算器20計算的歸一化移位量,對來自絕對值加法器13的輸出數據(下文中被稱為算術運算結果)執行左移位處理(歸一化處理)。算術運算結果中預定位位置(這裡是R124)處的值總是被歸一化器30設置為「1」。
圖2示出了浮點乘法加法器1的歸一化器30、黏著位生成器50和捨入器40的結構。如圖2所示,歸一化器30包括多級中的移位器31至35,即,第一移位器(第一左移位器)31、第二移位器(第二左移位器)32、第三移位器(第三左移位器)33、第四移位器(第四左移位器)34和一位移位器[一位左移位器(第二處理單元)]35。
第一到第四移位器31至34一起用作第一處理單元,第一處理單元通過使用移位量計算器20計算的歸一化移位量(7位數據SA6:0)對算術運算結果執行歸一化處理(左移位)。
由於算術運算結果是128位數據,所以由第一到第四移位器31至34獲得的移位量(即,移位量計算器20計算的歸一化移位量)最大是「127」位。因此,第一移位器31基於7位長數據SA6:0中的SA6可以移位「64」或「1」位,其是歸一化移位量。第二移位器32基於SA6:0中的SA5:4可以移位「48」、「32」、「16」或「0」位。第三移位器33基於SA6:0中的SA3:2可以移位「12」、「8」、「4」或「0」位。第四移位器34基於SA6:0中的SA1:0可以移位「3」、「2」、「1」或「0」位。
如上所述,向第一移位器31輸入的是作為7位長數據輸出的歸一化移位量中的「1」位數據(SA6),其代表歸一化移位量是否不小於「64」位,即,第一移位器31是否執行移位「64」位的處理。當SA6是「1」時,第一移位器31執行「64」位的移位。當SA6是「0」時,第一移位器31不執行移位。
當輸入到第二至第四移位器32至34中的歸一化移位量被表達為SA5:0時,第二移位器32基於SA5:4執行歸一化處理。這裡,第二移位器32在SA5:4是「11」時執行「48」位的移位,在SA5:4是「10」時執行「32」位的移位,在SA5:4是「01」時執行「16」位的移位,並且在SA5:4是「00」時不執行移位。
類似地,第三移位器33在SA3:2是「11」時執行「12」位的移位,在SA3:2是「10」時執行「8」位的移位,在SA3:2是「01」時執行「4」位的移位,並且在SA3:2是「00」時不執行移位。
類似地,第四移位器34在SA1:0是「11」時執行「3」位的移位,在SA1:0是「10」時執行「2」位的移位,在SA1:0是「01」時執行「1」位的移位,並且在SA1:0是「00」時不執行移位。
一位移位器35確定作為由第四移位器34進行的基於歸一化移位量的歸一化處理的結果,預定位位置R124處的值是否被移位為「1」(歸一化移位量是否不足)。當預定位位置處的值不是「1」時,一位移位器35確定由移位量計算器20計算的歸一化移位量不足「1」位,並且一位移位器進一步將由第四移位器34歸一化的算術運算結果移位「1」位。這樣,預定位位置處的數據變為「1」。
即,一位移位器35確定來自第四移位器34的輸出數據中的預定位位置處的值是「0」還是「1」。當值為「1」時,一位移位器35不執行移位處理。
當因為移位量計算器20計算的歸一化移位量不足「1」位因而預定位位置處的值是「0」時,一位移位器將來自第四移位器34的輸出數據移位「1」位,以便完成歸一化處理(即,以便將預定位位置處的值設置為「1」)。
在浮點乘法加法器1中,黏著位生成器50與歸一化器30進行的歸一化處理並行地生成黏著位。因此,歸一化器30沒有向捨入器40輸出被歸一化的算術運算結果的所有位,而是向捨入器40輸出通過從算術運算結果除去黏著位生成區域而獲得的部分。換句話說,在雙精度算術的情形下,輸入到捨入器40中的是58位長數據R127:70。
如圖2所示,黏著位生成器50與歸一化器30進行的歸一化處理並行地生成黏著位。黏著位生成器50包括邏輯和計算單元(黏著位預測器)51和生成器(在附圖中指示為「進行黏著」)52。
具體地說,當在從歸一化器30饋送的輸出數據(R127:0)中的黏著位生成區域(在圖15的雙精度算術的情形中是R69:0)中即使「1」位為「1」時,黏著位生成器50將黏著位設置為「ON」。當黏著位生成區域中的所有位為「0」時,黏著位生成器50將黏著位設置為「OFF」。黏著位生成器50利用邏輯和計算單元51和生成器52生成黏著位。
邏輯和計算單元51預測來自算術運算結果中的最低數位的預定區域中的數據是否被歸一化器30進行的歸一化處理移位到黏著位生成區域,該預測過程與歸一化器30進行的歸一化處理並行進行,並且計算被預測移位到黏著位生成區域中的數據的邏輯和作為中間黏著位。
這裡,邏輯和計算單元51通過使用被輸入到第二移位器32和第三移位器33的歸一化移位量(4位數據;SA5:2)預測由第一移位器31歸一化的算術運算結果中的預定區域(第一區域)中的數據是否被歸一化器30進行的歸一化過程移位到黏著位生成區域,並且確定被預測移位到黏著位生成區域中的數據是否包括「1」。從而,邏輯和計算單元51生成中間黏著位。
當浮點乘法加法器1支持雙精度算術時,通過使用歸一化移位量檢查C69:0的區域中是否包括「1」,可以實現對「1」是否存在於R69:0中的檢查,因為歸一化器20對算術運算結果執行左移位處理。
在雙精度算術的情形中,邏輯和計算單元51首先對R69:64的C5:0執行OR操作,C5:0是即使當執行「64」位(其是第二移位器32和後面的移位器能夠移位的最大寬度)的移位時也能得到的R69:64。
接下來,邏輯和計算單元51處理除去R69:0中所包括的與歸一化移位量無關的範圍之外的部分,即,C65:6。
邏輯和計算單元51對在R69:0中剩餘的C65:6部分的每4位執行OR操作,即使當基於歸一化移位量(SA5:2)的移位處理被執行的時候,並且驗證它。
如圖9(a)所示,對於C65:62,當SA5:2為「0000」時,C65:62總是保持在R69:0的範圍內。因此,對於該情形,只有對C65:62的OR操作的結果作為PAT14被輸出。當SA5:2為「0001」時,C65:62落在R69:66的範圍內或在R69:0的範圍之外。因此,使用該移位結果執行生成器52進行的處理。該處理例如是由與上面參考圖6描述的邏輯電路51a相似的邏輯電路完成的。
如圖9(b)所示,對於C61:58,當SA5:2小於或等於「0001」時,C61:58總是保持在R69:0的範圍內。因此,對於該情形,只有對C61:58的OR操作的結果作為PAT13被輸出。當SA5:2為「0010」時,C61:58落在R69:66的範圍內或在R69:0的範圍之外。因此,執行生成器52進行的處理。該處理是由與上面參考圖7描述的邏輯電路51b相似的邏輯電路完成的。
此後,對於範圍C57:6中的數據,對於每「4」位執行區分,同時將歸一化移位量的值增加「1」位,並且執行OR操作或者通過使用沒有預測的移位結果由生成器52進行處理。
如圖9(c)所示,對於C9:6,當SA5:2小於或等於「1110」時,C9:6總是保持在R69:0的範圍內。因此,對於該情形,只有OR操作的結果作為PAT0被輸出。當SA5:2為「1111」時,C9:6落在R69:66的範圍內或在R69:0的範圍之外。因此,執行生成器52進行的處理。該處理是由與上面參考圖8描述的邏輯電路51c相似的邏輯電路完成的。
如上所述,邏輯和計算單元51處理範圍C65:6中的數據,從而輸出PAT14:0。
最後,邏輯和計算單元51利用如圖18所示構造的邏輯電路51d對PAT14:0執行OR操作,從而生成中間黏著位,如在單精度算術中所做的那樣。
當支持雙精度算術時,邏輯和計算單元51針對C65:0(第一區域)的數據,預測將被歸一化器30(這裡是第一到第三移位器31至33)進行的歸一化處理移位到黏著位生成區域中的數據,並且基於該預測生成中間黏著位。
接下來,將描述生成器52。生成器52基於下述區域(這裡是R69:66,第二區域)中的數據生成黏著位,該區域是通過從被歸一化器30歸一化的算術運算結果中的黏著位生成區域去除第一區域(這裡是C65:0)而獲得的,並且中間黏著位由邏輯和計算單元51計算。
即,生成器52不預測SA1:0上的歸一化處理,而是對4位數據R69:66執行OR操作。
因此,生成器52對「4」位的R69:66和「1」位的中間黏著位(共「5」位)執行OR操作。當在5位數據中即使「1」位是1時,生成器52將黏著位設置為「ON」。當所有的位是「0」時,生成器52將黏著位設置為「OFF」。
接下來,將描述捨入器40。如圖2所示,捨入器40基於由黏著位生成器50中的生成器52生成的黏著位,對歸一化器30所歸一化的算術運算結果進行捨入處理。捨入器40包括增量器41、判定捨入單元43和選擇電路44。
增量器41執行捨入處理以將「1」添加到歸一化器30所歸一化的算術運算結果中的假數(在雙精度算術的情形中是C123:72)。
判定捨入單元43基於下述內容來確定捨入處理是否是必需的(1)由黏著位生成器50生成的黏著位,(2)作為從歸一化器30輸出的算術運算結果中的假數的最低有效位的L(最低有效位)位(參考圖14和15),(3)算術運算結果中的G(保護)位,(4)算術運算結果中的R(捨入)位(參考圖14和15),(5)從外部輸入的RD(捨入方向)位,以及(6)從外部輸入的SIGN位。判定捨入單元43將判定結果輸出到選擇電路44。
選擇電路44基於判定捨入單元43的判定結果,輸出經由增量器41輸入的經捨入的算術運算結果,或者原樣輸出從歸一化器30輸出的算術運算結果。
即,當判定捨入單元43判定捨入處理是必需的(作為判定結果)時候,選擇電路44輸出由增量器41捨入的算術運算結果。當判定捨入單元43判定捨入處理不是必需的(作為判定結果)時候,選擇電路44輸出從歸一化器30饋送的算術運算結果,其未經歷捨入。
圖11示出了當浮點乘法加法器1執行雙精度算術時浮點乘法加法器1的操作示例。在該情形中,從一位移位器35(即,歸一化器30)輸出的數據是通過從R127:0減去黏著位生成區域R69:0而獲得的58位長數據R127:70。因此,僅需要鎖存58位數據。
被鎖存的58位長數據中的R127:72被輸入到增量器41,同時繞過增量器41被直接輸入到選擇電路44。
被鎖存的58位數據中與被用於判定捨入單元43的判定的L位、R位和G位相對應的3位長數據R72:70被輸入到判定捨入單元43。
在根據本發明實施例的浮點乘法加法器1中,邏輯和計算單元51與歸一化器30的歸一化處理並行地計算中間黏著位,並且生成器52基於中間黏著位和歸一化器30所歸一化的算術運算結果中的黏著位生成區域的一部分中的數據,生成黏著位。因此,不需要在歸一化處理之後計算黏著位生成區域中的所有數據的邏輯和,並且可以高效地生成黏著位,同時防止延遲。
具體地說,當浮點乘法加法器1支持雙精度算術時,在歸一化器30的歸一化處理之後,僅需對5位數據而無需對黏著位生成區域中的70位數據進行OR操作。這大大縮短了延遲。
當在歸一化器30進行的處理和捨入器40進行的處理之間劃分流水線級時,黏著位生成是與歸一化處理並行執行的。因此,僅需要鎖存除了黏著位生成區域之外的區域中的數據,而不需要鎖存所有的算術運算結果數據(R127:0),這可以減少鎖存器等的硬體資源(物料量)。實際上,在用於雙精度算術的浮點乘法加法器中,可以將目前鎖存的128位長數據減少到59位長數據(參考圖11),從而可以省略用於「69」位的鎖存器,這是它們之間的差異之處。
在浮點乘法加法器1中,考慮到一位移位器35的歸一化處理的結果而生成黏著位,即,黏著位是基於關於黏著位生成區域(第二區域)的歸一化處理的結果而產生的,其根據一位移位器35的歸一化處理的結果可能被改變。因此,可以與歸一化器30進行的歸一化過程並行地開始生成黏著位,並且不需要區別移位量計算器20計算的歸一化移位量是否不足「1」位。因此,一定可以生成黏著位而與歸一化移位量是否不足1「位」無關。從而,與上述的專利文件1中公開的技術不同,沒有發生因區別歸一化移位量是否不足「1」位而引起的物料量或延遲的增加。
邏輯和計算單元51沒有預測第四移位器34進行的歸一化處理,第四移位器34是歸一化器30中的多級移位器31至34中的最後級,但是生成器52基於第四移位器34進行的歸一化處理的結果生成黏著位。即,由生成器52處理的第二區域是第四移位器34獲得的最大移位量和一位移位器35獲得的「1」位的和。因此,與邏輯和計算單元51預測多級中的所有移位器31至34(第一處理單元)進行的歸一化處理的結果的方法相比,可以更高效地生成中間黏著位。
由於第四移位器34具有移位器31至34之中的最少移位量,所以生成器52進行的處理變得更有效率,並且可以減少形成生成器52的物料量。
其它注意,本發明不限於上面的示例,而是可以在不背離本發明精神和範圍的條件下做出多種方式的修改。
例如,上面實施例中構成第一處理單元的多級移位器31至34中的移位量不限於上面的示例,可以有變化。
藉助下面的示例描述了上面的實施例,其中由移位量計算器20計算的歸一化移位量有時不足「1」位。但是,歸一化移位量的不足量不限於此。
在上面的實施例中,浮點乘法加法器1執行單精度算術和雙精度算術。但是,本發明不限於此。本發明的浮點乘法加法器1的算術精度不只支持這些情況,還可以支持n倍精度算術(n是整數)。
權利要求
1.一種算術運算單元,用於生成代表在算術運算結果被歸一化時所述算術運算結果是否已被移位的信息,該算術運算單元包括算術邏輯單元,用於輸出所述算術運算結果;具有多個移位器的歸一化器,用於對所述算術運算結果進行歸一化;移位量計算器,用於計算用於所述多個移位器的多個移位量;預測器,用於通過使用所述多個移位量生成中間信息,所述中間信息是在所述算術運算結果被歸一化時所述算術運算結果是否要被移位的預測結果;以及生成器,用於通過使用所述中間信息生成所述信息。
2.一種算術運算單元,用於通過使用代表在算術運算結果被歸一化時所述算術運算結果是否已被移位的信息對所述算術運算結果執行捨入運算,該算術運算單元包括算術邏輯單元,用於輸出所述算術運算結果;具有多個移位器的歸一化器,用於對所述算術運算結果進行歸一化;移位量計算器,用於計算用於所述多個移位器的多個移位量;預測器,用於通過使用所述多個移位量生成中間信息,所述中間信息是在所述算術運算結果被歸一化時所述算術運算結果是否要被移位的預測結果;生成器,用於通過使用所述中間信息生成所述信息;捨入判斷電路,用於通過使用所述信息輸出關於是否執行捨入運算的判定結果;增量器,用於將預定值添加到所述算術運算結果;以及選擇器,用於通過使用所述判定結果選擇所述算術運算結果或來自所述增量器的輸出。
3.一種利用算術運算單元執行算術運算的信息處理設備,所述算術運算單元通過使用代表在算術運算結果被歸一化時所述算術運算結果是否已被移位的信息對所述算術運算結果執行捨入運算,所述算術運算單元包括算術邏輯單元,用於輸出所述算術運算結果;具有多個移位器的歸一化器,用於對所述算術運算結果進行歸一化;移位量計算器,用於計算用於所述多個移位器的多個移位量;預測器,用於通過使用所述多個移位量生成中間信息,所述中間信息是在所述算術運算結果被歸一化時所述算術運算結果是否要被移位的預測結果;以及生成器,用於通過使用所述中間信息生成所述信息。
4.如權利要求3所述的信息處理設備,所述算術運算單元還包括捨入判斷電路,用於通過使用所述信息輸出關於是否執行捨入運算的判定結果;增量器,用於將預定值添加到所述算術運算結果;以及選擇器,用於通過使用所述判定結果選擇所述算術運算結果或來自所述增量器的輸出。
5.一種通過使用代表在算術運算結果被歸一化時所述算術運算結果是否已被移位的信息對所述算術運算結果執行捨入運算的算術運算方法,該算術運算方法包括以下步驟執行算術運算;計算要在多個移位操作處使用的多個移位量;通過將歸一化處理劃分為所述多個移位操作並且在所述多個移位操作處分別使用所述多個移位量,對所述算術運算結果進行歸一化;通過使用所述多個移位量生成中間信息,所述中間信息是在所述算術運算結果被歸一化時所述算術運算結果是否要被移位的預測結果;以及通過使用所述中間信息生成所述信息。
6.一種通過使用代表在算術運算結果被歸一化時所述算術運算結果是否已被移位的信息對所述算術運算結果執行捨入運算的算術運算方法,該算術運算方法包括以下步驟輸出所述算術運算結果;計算要在至少兩個或更多個移位操作步驟中使用的多個移位量;通過將歸一化處理劃分為所述多個移位操作步驟並且在所述移位操作處分別使用所述多個移位量,對所述算術運算結果進行歸一化,以生成經歸一化的算術運算結果;通過使用所述多個移位量生成中間信息,所述中間信息是在所述算術運算結果被歸一化時所述算術運算結果是否要被移位的預測結果;通過使用所述中間信息生成所述信息;以及通過使用所述信息對所述經歸一化的算術運算結果進行捨入。
7.一種信息處理設備,包括乘法加法器單元,用於執行乘法加法算術運算;移位量計算器,用於計算用於所述乘法加法器單元的算術運算結果的歸一化移位量;歸一化器,用於通過使用由所述移位量計算器計算的歸一化移位量,對由所述乘法加法器單元獲得的算術運算結果進行歸一化;邏輯和計算器,用於與所述歸一化器進行的歸一化處理並行地預測來自所述算術運算結果的最低位的第一區域中的數據是否被所述歸一化器進行的歸一化處理移位到黏著位生成區域,並且計算被預測移位到黏著位生成區域中的數據的邏輯和以作為中間黏著位;生成器,用於基於(i)從算術運算結果中的黏著位生成區域去除與第一區域相對應的區域而獲得的第二區域中的數據以及(ii)由所述邏輯和計算器計算的中間黏著位,生成黏著位,其中第二區域中的數據由所述歸一化器進行歸一化;以及捨入器,用於基於所述生成器生成的黏著位對由所述歸一化器歸一化的算術運算結果進行捨入。
8.如權利要求7所述的信息處理設備,所述歸一化器還包括第一處理單元,用於執行基於歸一化移位量的歸一化處理;以及一位移位器,用於基於所述第一處理單元進行的歸一化處理的結果確定歸一化移位量是否不足,並且在確定歸一化移位量不足的時候通過使用不足的移位量對歸一化處理的結果進一步執行歸一化處理;黏著位生成區域的第二區域中的總位數等於或大於能夠被所述一位移位器歸一化的不足移位量。
9.如權利要求8所述的信息處理設備,其中所述歸一化器的所述一位移位器在確定歸一化移位量沒有不足時,不執行歸一化處理。
10.如權利要求8所述的信息處理設備,其中所述歸一化器的所述第一處理單元包括多級的移位器,所述多級的移位器基於歸一化移位量對算術運算結果進行移位;黏著位生成區域的第二區域中的總位數是所述多級移位器中在最後級的移位器所處理的最大歸一化移位量與所述一位移位器能夠處理的不足移位量之和。
11.如權利要求9所述的信息處理設備,其中所述歸一化器的所述第一處理單元包括多級的移位器,所述多級的移位器基於歸一化移位量對算術運算結果進行移位;黏著位生成區域的第二區域中的總位數是所述多級移位器中在最後級的移位器所處理的最大歸一化移位量與所述一位移位器能夠處理的不足移位量之和。
12.如權利要求10所述的信息處理設備,其中所述歸一化器的所述第一處理單元的最後級中的所述移位器處理所述多級移位器中的最少移位量。
13.如權利要求11所述的信息處理設備,其中所述歸一化器的所述第一處理單元的最後級中的所述移位器處理所述多級移位器中的最少移位量。
14.如權利要求7所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
15.如權利要求8所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
16.如權利要求9所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
17.如權利要求10所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
18.如權利要求11所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
19.如權利要求12所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
20.如權利要求13所述的信息處理設備,其中通過從算術運算結果除去黏著位生成區域而獲得的區域被從所述歸一化器輸入到所述捨入器。
全文摘要
一種算術運算單元,其生成代表在算術運算結果被歸一化時算術運算結果是否已被移位的信息,該算術運算單元包括算術邏輯單元,用於輸出算術運算結果;具有多個移位器的歸一化器,用於對算術運算結果進行歸一化;移位量計算器,用於計算用於多個移位器的多個移位量;預測器,用於通過使用所述多個移位量生成中間信息,中間信息是在算術運算結果被歸一化時算術運算結果是否要被移位的預測結果;以及生成器,用於通過使用中間信息生成信息。生成黏著位所需的周期時間被縮短以高效地生成黏著位,並且用於生成黏著位的硬體資源被減少。
文檔編號G06F9/302GK1975662SQ20061007648
公開日2007年6月6日 申請日期2006年4月20日 優先權日2005年12月2日
發明者田尻邦彥 申請人:富士通株式會社