亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

微處理器中的方法與流程

文檔序號(hào):12596112閱讀:213來(lái)源:國(guó)知局
微處理器中的方法與流程

相關(guān)申請(qǐng)

本申請(qǐng)主張申請(qǐng)日為2014年7月2日的美國(guó)專利第62/020,246號(hào)臨時(shí)申請(qǐng)“Non-Atomic Split-Path Fused Multiply-Accumulate with Rounding cache”與申請(qǐng)日為2015年6月10日的美國(guó)專利第62/173,808號(hào)臨時(shí)申請(qǐng)“Non-Atomic Temporally-Split Fused Multiply-Accumulate Apparatus and Operation Using a Calculation Control Indicator Cache and Providing a Split-Path Heuristic for Performing a Fused FMA Operation and Generating a Standard Format Intermediate Result”的優(yōu)先權(quán)。該些優(yōu)先權(quán)案的全文并入本申請(qǐng)以供參考。

本申請(qǐng)還關(guān)聯(lián)于下列與本申請(qǐng)同時(shí)申請(qǐng)的申請(qǐng):標(biāo)題為“Temporally Split Fused Multiply-Accumulate Operation”的美國(guó)第14/748,870號(hào)申請(qǐng);標(biāo)題為“Calculation Control Indicator Cache”的美國(guó)第14/748,924號(hào)申請(qǐng);標(biāo)題為“Calculation Control Indicator Cache”的美國(guó)第14/748,956號(hào)申請(qǐng);標(biāo)題為“Standard Format Intermediate Result”的美國(guó)第14/749,002號(hào)申請(qǐng);標(biāo)題為“Split-Path Heuristic for Performing a Fused FMA Operation”的美國(guó)第14/749,050號(hào)申請(qǐng);標(biāo)題為“Subdivision of a Fused Compound Arithmetic Operation”的美國(guó)第14/749,088號(hào)申請(qǐng);與標(biāo)題為“Non-Atomic Split-Path Fused Multiply-Accumulate”的美國(guó)第14/748,817號(hào)申請(qǐng)。這些申請(qǐng)的全文并入本申請(qǐng)以供參考。

技術(shù)領(lǐng)域

本發(fā)明有關(guān)于一種執(zhí)行算術(shù)運(yùn)算的微處理器設(shè)計(jì),尤其是融合浮點(diǎn)乘積-累加(FMA)運(yùn)算的微處理器設(shè)計(jì)。



背景技術(shù):

在現(xiàn)代計(jì)算機(jī)設(shè)計(jì)中,從大約1990年起,融合浮點(diǎn)乘積-累加(floating-point multiply-accumulate,FMA)運(yùn)算就已經(jīng)成為一個(gè)受到商業(yè)矚目與學(xué)術(shù)關(guān)注的領(lǐng)域。融合FMA運(yùn)算是一種算術(shù)運(yùn)算,其形式為±A*B±C,其中,A、B與C是浮點(diǎn)輸入運(yùn)算元(分別是一個(gè)被乘數(shù)(multiplicand)、一個(gè)乘數(shù)(multiplier)、與一個(gè)累加數(shù)(accumulator)),并且在C累加至A與B的乘積前不存在舍入(rounding)運(yùn)算?!繟*B±C可包含,但不限于,下列例子:(a)A*B+C;(b)A*B–C;(c)–A*B+C;(d)–A*B–C;(e)A*B(即C設(shè)為零);與(f)A+C(即B設(shè)為1.0)。

在大約1990年,此算術(shù)運(yùn)算即以一原子(atomic)或不可分割(inseparable)運(yùn)算的形式商業(yè)實(shí)現(xiàn)于IBM的精簡(jiǎn)指令集(RISC)系統(tǒng)/6000。而后續(xù)設(shè)計(jì)進(jìn)一步最佳化浮點(diǎn)乘積累加運(yùn)算。

在其2004年的文獻(xiàn)“Floating-Point Multiply-Add-Fused with Reduced Latency”中,Tomas Lang與Javier D.Bruguera(“Lang et al.”)提出與最佳化FMA設(shè)計(jì)有關(guān)的許多重要課題。這些課題包括,指數(shù)差值與累加器移位/對(duì)準(zhǔn)量的預(yù)計(jì)算,累加器與相乘陣列的平行對(duì)準(zhǔn),必要時(shí)使用2’補(bǔ)數(shù)累加器(2’s complement accumulator),和向量與進(jìn)位向量的條件反轉(zhuǎn),在最終相加/舍入模組前對(duì)于和向量與進(jìn)位向量的標(biāo)準(zhǔn)化處理,LZA/LOA與標(biāo)準(zhǔn)化移位的重迭運(yùn)算,進(jìn)位位、舍入位、保護(hù)位與粘(sticky)位的分別運(yùn)算,以及在合一的相加/舍入模組中具有1m寬度的雙總和加法器的使用(其中,m是其中一個(gè)運(yùn)算元的尾數(shù)(mantissa)寬度)。

在其2005年的文獻(xiàn)“Floating-Point Fused Multiply-Add:Reduced Latency for Floating-Point Addition”中,Tomas Lang與Javier D.Bruguera(“Lang et al.”)提出利用分離數(shù)據(jù)路徑(或雙數(shù)據(jù)路徑)把對(duì)準(zhǔn)方向從標(biāo)準(zhǔn)化的情況移開,其中,“近(close)”的數(shù)據(jù)路徑是用以從{2,1,0,-1}有效減去指數(shù)差值(此概念在本申請(qǐng)?jiān)敿?xì)說(shuō)明中會(huì)有更進(jìn)一步的發(fā)展與改進(jìn)),而“遠(yuǎn)(far)”的數(shù)據(jù)路徑則是用來(lái)處理其他情況。Lang等人還提出在遠(yuǎn)的數(shù)據(jù)路徑使用雙對(duì)準(zhǔn)平移器來(lái)處理相乘陣列的進(jìn)位儲(chǔ)存輸出,以及在近的數(shù)據(jù)路徑使用非常有限對(duì)準(zhǔn)平移的方法。

在2004年的文獻(xiàn)“Multiple Path IEEE Floating-Point Fused Multiply-Add”中,Peter-Michael Seidel(“Seidel”)提出對(duì)于FMA設(shè)計(jì)的不同改進(jìn)方法,即使用多個(gè)平行運(yùn)算路徑。Seidel并提出關(guān)閉未使用的路徑門;從指數(shù)差值與有效運(yùn)算確認(rèn)多個(gè)運(yùn)算路徑;使用兩個(gè)不同運(yùn)算路徑,其中一個(gè)提供給容易產(chǎn)生塊消去(mass cancellation)的小指數(shù)差值使用,另一個(gè)則是用來(lái)處理其他情況;對(duì)于具有效減法的小指數(shù)差值的情況,在有效乘積運(yùn)算中插入累加器數(shù)值。

在現(xiàn)今隨處可見個(gè)人行動(dòng)運(yùn)算裝置來(lái)提供擴(kuò)充媒體分發(fā)與網(wǎng)路內(nèi)容存取的情況下,更需要去設(shè)計(jì)一個(gè)的低制作成本、少功耗,但又能以高效能執(zhí)行指令的FMA邏輯電路。

執(zhí)行FMA運(yùn)算的主要方法涉及合一的乘積-累加單元的使用,以執(zhí)行整個(gè)FMA運(yùn)算,包含對(duì)結(jié)果進(jìn)行舍入。大部分學(xué)術(shù)提案與商業(yè)應(yīng)用都描述一個(gè)單塊的,或是不可分割的功能方塊,其具有將兩個(gè)數(shù)相乘,將未進(jìn)行舍入的乘積與一第三運(yùn)算元、加數(shù)或累加器進(jìn)行相加操作、以及對(duì)運(yùn)算結(jié)果進(jìn)行舍入運(yùn)算。

另一種替代方案使用傳統(tǒng)的乘法單元來(lái)執(zhí)行A*B的子運(yùn)算,然后使用傳統(tǒng)的加法單元來(lái)將A與B的乘積與C相加。不過(guò),此傳統(tǒng)分工處理的方法會(huì)犧 牲運(yùn)算速度以及在同一個(gè)單元內(nèi)將C與A和B的部分乘積累加運(yùn)算所能得到的效能增益。傳統(tǒng)分工處理的方法也涉及兩個(gè)舍入運(yùn)算,因A與B的乘積會(huì)進(jìn)行舍入運(yùn)算,而后續(xù)C與乘積的加總也會(huì)進(jìn)行舍入運(yùn)算。因此,相較于合一處理的方法,傳統(tǒng)分工處理的方法有時(shí)候會(huì)產(chǎn)生不同且較不準(zhǔn)確的結(jié)果。同樣地,因?yàn)橹貜?fù)舍入運(yùn)算的存在,此傳統(tǒng)分工處理的方法無(wú)法執(zhí)行“融合(fused)”FMA運(yùn)算,而未能符合IEEE 754技術(shù)標(biāo)準(zhǔn)關(guān)于浮點(diǎn)運(yùn)算的要求。

因?yàn)镕MA硬件可同時(shí)用于多個(gè)運(yùn)算目的并遵從IEEE 754技術(shù)標(biāo)準(zhǔn),在現(xiàn)代的產(chǎn)品中,計(jì)算機(jī)設(shè)計(jì)者往往會(huì)選擇利用不可分割的FMA執(zhí)行單元來(lái)完全取代傳統(tǒng)分離的乘積與加法功能方塊。然而,此方法會(huì)帶來(lái)許多不利影響。

第一,相較于使用獨(dú)立的加法與乘法功能單元,F(xiàn)MA硬件的設(shè)置成本較高,也較復(fù)雜。第二,在執(zhí)行簡(jiǎn)單的加法或乘法運(yùn)算時(shí),相較于使用獨(dú)立的加法與乘法功能單元,使用FMA硬件的延遲較長(zhǎng),且通常會(huì)消耗較多能量。第三,對(duì)于超純量(superscalar)計(jì)算機(jī)設(shè)計(jì)而言,將乘法與加法的功能合并于單一個(gè)功能方塊會(huì)減少算術(shù)指令可發(fā)送端口的數(shù)量,而削減計(jì)算機(jī)針對(duì)源碼、機(jī)械層級(jí)或軟體開發(fā)平行處理的能力。

前述第三個(gè)不利影響可加入更多功能單元來(lái)處理,例如一個(gè)獨(dú)立的加法功能單元,但這會(huì)增加設(shè)置成本?;旧希粋€(gè)額外的加法器(舉例)就是為了在提供不可分割的FMA功能時(shí),維持可接受的指令層級(jí)平行處理所需付出的代價(jià),這又會(huì)增加整個(gè)硬件的設(shè)置尺寸,并會(huì)增加寄生電容與電阻。隨著半導(dǎo)體制造技術(shù)朝向小尺寸發(fā)展,寄生電容與電阻會(huì)對(duì)于算術(shù)運(yùn)算的時(shí)間延遲,或稱延遲(latency),有更顯著的影響。此時(shí)間延遲有時(shí)會(huì)被模擬為因?yàn)椤伴L(zhǎng)導(dǎo)線”而造成的延遲。因此,為了減少實(shí)行不可分割的FMA運(yùn)算對(duì)于指令層級(jí)平行處理影響所額外設(shè)置的功能方塊,在考量所需的晶片尺寸、功耗與算術(shù)運(yùn)算的延遲后,所能提供的改善其實(shí)相當(dāng)有限。

因此,最佳的提案與實(shí)施通常會(huì)(但不總是)提供正確的運(yùn)算結(jié)果(對(duì)應(yīng)于 IEEE的舍入與其他說(shuō)明),有時(shí)提供較高的指令產(chǎn)出(throughput),但顯然需要額外的硬件電路而增加設(shè)置成本,并且會(huì)需要增加功耗來(lái)在復(fù)雜的FMA硬件上執(zhí)行簡(jiǎn)單的乘法與加法運(yùn)算。

現(xiàn)代FMA設(shè)計(jì)所要達(dá)成的目標(biāo)仍未能完全達(dá)成。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的一方面提供一種微處理器中的方法,用以執(zhí)行一算術(shù)運(yùn)算,該方法包括:使用一指令執(zhí)行單元產(chǎn)生一中間結(jié)果向量與多個(gè)運(yùn)算控制指標(biāo),該多個(gè)運(yùn)算控制指標(biāo)指明自該中間結(jié)果向量產(chǎn)生一最終結(jié)果的接續(xù)運(yùn)算該如何進(jìn)行;以及將該中間結(jié)果向量與該多個(gè)運(yùn)算控制指標(biāo)儲(chǔ)存至一設(shè)于該指令執(zhí)行單元外的存儲(chǔ)器中。

依據(jù)本發(fā)明的一實(shí)施例,所述方法還包括將該中間結(jié)果向量與該多個(gè)運(yùn)算控制指標(biāo)自該存儲(chǔ)器下載,并依據(jù)該運(yùn)算控制指標(biāo)、于該中間結(jié)果向量上、執(zhí)行運(yùn)算,以產(chǎn)生一最終結(jié)果。

依據(jù)本發(fā)明的一實(shí)施例,該算術(shù)運(yùn)算為一融合浮點(diǎn)乘積-相加運(yùn)算,且該算術(shù)運(yùn)算的運(yùn)算元包括一被乘數(shù)、一乘數(shù)及一相加數(shù),其中該中間結(jié)果向量至少為該被乘數(shù)與該乘數(shù)的部分乘積的總和。

依據(jù)本發(fā)明的一實(shí)施例,該算術(shù)運(yùn)算為一牽涉至少一乘法與至少一相加運(yùn)算的融合運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,該算術(shù)運(yùn)算為一牽涉二或更多算數(shù)運(yùn)算子的復(fù)合算術(shù)運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,所述方法還包括將該復(fù)合算術(shù)運(yùn)算分路為一使用一第一算術(shù)運(yùn)算元的第一算術(shù)運(yùn)算、以及一使用一第二算術(shù)運(yùn)算元的第二算術(shù)運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,該運(yùn)算控制指標(biāo)指明該第二算術(shù)運(yùn)算該如何進(jìn) 行。

依據(jù)本發(fā)明的一實(shí)施例,該復(fù)合算術(shù)運(yùn)算為一接續(xù)算術(shù)運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,該運(yùn)算控制指標(biāo)提供關(guān)于多少該復(fù)合算術(shù)運(yùn)算已完成產(chǎn)生該中間結(jié)果向量的信息。

依據(jù)本發(fā)明的一實(shí)施例,該運(yùn)算控制指標(biāo)提供關(guān)于該第一算術(shù)運(yùn)算是否會(huì)導(dǎo)致不足位與溢位狀況的信息。

依據(jù)本發(fā)明的一實(shí)施例,所述方法還包括將該中間結(jié)果向量以一儲(chǔ)存空間格式儲(chǔ)存,當(dāng)考慮獨(dú)立于該運(yùn)算控制指標(biāo)外時(shí),該儲(chǔ)存空間格式提供較所需位少的位數(shù),以連貫產(chǎn)生該復(fù)合算術(shù)運(yùn)算的一結(jié)果的一代表,其中的該復(fù)合算術(shù)運(yùn)算與該結(jié)果無(wú)明顯差異,該結(jié)果能夠以該復(fù)合算術(shù)運(yùn)算的一非限定精確運(yùn)算產(chǎn)生,以縮減目標(biāo)數(shù)據(jù)大??;與該多個(gè)運(yùn)算控制指標(biāo)連結(jié)的該儲(chǔ)存空間格式能夠提供充足的信息,以連貫產(chǎn)生該復(fù)合算術(shù)運(yùn)算的一結(jié)果,該結(jié)果能夠以該復(fù)合算術(shù)運(yùn)算的一非限定精確運(yùn)算產(chǎn)生,以縮減目標(biāo)數(shù)據(jù)大小。

本發(fā)明的另一方面提供一種微處理器中的方法,用以執(zhí)行一舍入運(yùn)算,該方法包括:使用多個(gè)指令執(zhí)行單元的一第一指令執(zhí)行單元產(chǎn)生一未舍入結(jié)果;將至少一舍入指標(biāo)儲(chǔ)存入一設(shè)于該多個(gè)指令執(zhí)行單元外的舍入快取;由該舍入快取提供該未舍入結(jié)果與該至少一舍入指標(biāo)至該多個(gè)指令執(zhí)行單元的一第二指令執(zhí)行單元中;以及該第二指令執(zhí)行單元利用至少該未舍入結(jié)果與該至少一舍入指標(biāo)產(chǎn)生一最終舍入結(jié)果。

依據(jù)本發(fā)明的一實(shí)施例,所述方法還包括將該未舍入結(jié)果存入一與該舍入快取不同的通用儲(chǔ)存空間。

依據(jù)本發(fā)明的一實(shí)施例,所述方法還包括將該舍入指標(biāo)自該第一指令單元、通過(guò)一數(shù)據(jù)路徑、轉(zhuǎn)換至該舍入快取,該數(shù)據(jù)路徑與一結(jié)果總線分離,并將該多個(gè)指令執(zhí)行單元耦接至一通用儲(chǔ)存空間。

本發(fā)明的另一方面提供一種微處理器中的方法,用以執(zhí)行一算術(shù)運(yùn)算, 該方法包括:使用一第一指令執(zhí)行單元產(chǎn)生一中間結(jié)果向量;共存地產(chǎn)生多個(gè)運(yùn)算控制指標(biāo),該多個(gè)運(yùn)算控制指標(biāo)指明自該中間結(jié)果向量產(chǎn)生一最終結(jié)果的接續(xù)運(yùn)算該如何進(jìn)行;將該中間結(jié)果向量與該多個(gè)運(yùn)算控制指標(biāo)傳送至一第二指令執(zhí)行單元;以及使用該第二指令執(zhí)行單元產(chǎn)生該最終結(jié)果,并依據(jù)該運(yùn)算控制指標(biāo)完成該算術(shù)運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,該算術(shù)運(yùn)算為一復(fù)合算術(shù)運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,該復(fù)合算術(shù)運(yùn)算屬于一種形態(tài),該形態(tài)只允許單一的舍入運(yùn)算,以產(chǎn)生該最終結(jié)果。

依據(jù)本發(fā)明的一實(shí)施例,該算術(shù)運(yùn)算為一融合乘積-相加運(yùn)算。

依據(jù)本發(fā)明的一實(shí)施例,該中間結(jié)果向量為一該乘積-相加運(yùn)算一部分的未舍入結(jié)果,且該運(yùn)算控制指標(biāo)包括用以產(chǎn)生該乘積-相加運(yùn)算一最終舍入結(jié)果的舍入指標(biāo)。

依據(jù)本發(fā)明的一實(shí)施例,過(guò)一結(jié)果總線完成該中間結(jié)果向量的傳送,且通過(guò)一與該結(jié)果總線不同的數(shù)據(jù)路徑完成該運(yùn)算控制指標(biāo)的傳送。

此方法與裝置可縮減所需的電路、設(shè)置成本與復(fù)合算術(shù)運(yùn)算的累增功耗。簡(jiǎn)單來(lái)說(shuō),此裝置與方法是將復(fù)合算數(shù)運(yùn)算分成至少二個(gè)子運(yùn)算,由物理上與/或邏輯上各自獨(dú)立的硬件單元來(lái)執(zhí)行。每個(gè)硬件單元執(zhí)行此復(fù)合算術(shù)運(yùn)算的一部分。舍入運(yùn)算或運(yùn)算控制所需的位于此二運(yùn)算間,儲(chǔ)存于一快取內(nèi)。這些子運(yùn)算于不同時(shí)間與位置完成,而必要的數(shù)據(jù)片段會(huì)被整合以完成最終舍入運(yùn)算。

此方法與裝置具有許多值得注意的優(yōu)點(diǎn),尤其是針對(duì)FMA運(yùn)算。

第一,此方法與裝置可辨識(shí)FMA運(yùn)算并將其區(qū)分為至少二種類型,其中部分運(yùn)算以暫時(shí)或物理性分割的方式執(zhí)行。

第二,此方法與裝置可將來(lái)自指令集架構(gòu)(ISA)的一不可分割的(atomic)或一體的(unified)FMA指令轉(zhuǎn)譯或轉(zhuǎn)換為至少二個(gè)子運(yùn)算。

第三,此方法與裝置容許這些子運(yùn)算以非不可分割的、或暫時(shí)物理性分割的方式來(lái)執(zhí)行,例如在非循序超純量計(jì)算機(jī)處理器裝置內(nèi)執(zhí)行。

第四,F(xiàn)MA運(yùn)算(例如對(duì)應(yīng)于部分第一類型的FMA運(yùn)算或部分第二類型的FMA運(yùn)算)中部分的必須算術(shù)運(yùn)算于執(zhí)行第一特定微指令時(shí)執(zhí)行。

第五,此方法與裝置以一新的方式預(yù)先計(jì)算FMA的符號(hào)數(shù)據(jù)。

第六,此方法與裝置會(huì)儲(chǔ)存中間運(yùn)算的部分結(jié)果,例如儲(chǔ)存于一結(jié)果(重命名)暫存器。

第七,此方法與裝置會(huì)儲(chǔ)存運(yùn)算結(jié)果的其他部分,例如儲(chǔ)存至稱為舍入快取或運(yùn)算控制指標(biāo)快取的其他儲(chǔ)存單元。

第八,此方法與裝置會(huì)將所收集到的數(shù)據(jù),即中間結(jié)果,以新的標(biāo)準(zhǔn)化儲(chǔ)存格式來(lái)儲(chǔ)存。此外,此方法與裝置可能會(huì)將儲(chǔ)存格式中間結(jié)果轉(zhuǎn)送至后續(xù)特殊類型的第二微指令,而非進(jìn)行儲(chǔ)存。

第九,此方法與裝置在需要提供所儲(chǔ)存的數(shù)據(jù)至后續(xù)第二微指令時(shí),會(huì)存取舍入快取。

第十,響應(yīng)來(lái)自舍入快取的數(shù)據(jù),此方法與裝置會(huì)選擇性地提供FMA加數(shù)至第二微指令或使輸入值歸零。

第十一,此方法與裝置會(huì)在執(zhí)行一第二(或更多)微指令的過(guò)程中,使用此儲(chǔ)存格式中間結(jié)果作為輸入,來(lái)執(zhí)行第一類型或第二類型的FMA運(yùn)算中剩下必須執(zhí)行的算術(shù)FMA運(yùn)算。

第十二,此方法與裝置將經(jīng)少量調(diào)整的現(xiàn)有技術(shù)乘法硬件執(zhí)行單元與加法硬件執(zhí)行單元結(jié)合,如結(jié)合所述的舍入快取與數(shù)據(jù)轉(zhuǎn)送網(wǎng)路用以回避舍入快取。

第十三,此方法與裝置不會(huì)讓分配端口無(wú)法于算術(shù)運(yùn)算中使用、或是在計(jì)算機(jī)利用指令平行處理的能力與投資的硬件成本間妥協(xié)。

本發(fā)明所采用的具體實(shí)施例,將通過(guò)以下的實(shí)施例及圖式作進(jìn)一步的說(shuō) 明。

附圖說(shuō)明

圖1是一微處理器的方塊示意圖,此微處理器具有執(zhí)行單元與一舍入或運(yùn)算控制指標(biāo)快取,并使用二個(gè)子運(yùn)算、一個(gè)調(diào)整后的乘法器與一個(gè)調(diào)整后的加法器來(lái)執(zhí)行FMA運(yùn)算。

圖2是一示意圖,將一數(shù)字空間區(qū)分為FMA運(yùn)算的五個(gè)類型以為例示(但非限定于此)。

圖3是一功能方塊圖,描述用以執(zhí)行FMA運(yùn)算的調(diào)整后的乘法器與調(diào)整后的加法器內(nèi)的邏輯元件。

圖4是一功能方塊圖,顯示本發(fā)明一實(shí)施例的乘法運(yùn)算單元的路徑確認(rèn)邏輯與尾數(shù)乘法模組,此乘法運(yùn)算單元經(jīng)適當(dāng)調(diào)整以接收FMA乘數(shù)、被乘數(shù)與累加數(shù)作為輸入運(yùn)算元。

圖5是一功能方塊圖,顯示圖4的乘法運(yùn)算單元的指數(shù)結(jié)果產(chǎn)生器與舍入指標(biāo)產(chǎn)生器,此乘法運(yùn)算單元經(jīng)適當(dāng)調(diào)整以產(chǎn)生一儲(chǔ)存格式中間結(jié)果。

圖6是一功能方塊圖,顯示經(jīng)適當(dāng)調(diào)整以接收一儲(chǔ)存格式中間結(jié)果與累加數(shù)的加法運(yùn)算單元的一實(shí)施例。

圖7是一功能方塊圖,顯示非不可分割的分路FMA運(yùn)算的一實(shí)施例的第一FMA子運(yùn)算中的一路徑確認(rèn)部分。

圖8是一功能方塊圖,顯示非不可分割的分路FMA運(yùn)算的第一FMA子運(yùn)算中的一乘法與累加部分。

圖9A及圖9B是以一功能方塊圖,顯示非不可分割的分路FMA運(yùn)算的第一FMA子運(yùn)算中的一儲(chǔ)存格式中間結(jié)果產(chǎn)生部分。

圖10是一功能方塊圖,顯示非不可分割的分路FMA運(yùn)算的第二FMA子運(yùn)算。

圖11是一示意圖,顯示將融合FMA指令轉(zhuǎn)譯為第一與第二FMA微指令的一實(shí)施例。

具體實(shí)施方式

微處理器

圖1是一微處理器的方塊示意圖。此微處理器10具有多個(gè)執(zhí)行單元45,50,60用以執(zhí)行FMA運(yùn)算。此微處理器10包含一指令快取15,一指令轉(zhuǎn)譯器與/或微碼只讀存儲(chǔ)器20,一重命名單元與保留站25,多個(gè)執(zhí)行單元(包含一調(diào)整后的乘法器45、一調(diào)整后的加法器50與其他執(zhí)行單元60),一舍入快取55(或是指運(yùn)算控制指示器儲(chǔ)存空間),架構(gòu)暫存器35與一重排緩沖器30(包含重命名暫存器)。其他的功能單元(未圖示)可包含一微碼單元;分支預(yù)測(cè)器;一存儲(chǔ)器子系統(tǒng),其包含一快取存儲(chǔ)器階層架構(gòu)(例如階層一的數(shù)據(jù)快取、階層二的快取)、存儲(chǔ)器排列緩沖器、與存儲(chǔ)器管理單元;數(shù)據(jù)預(yù)擷取單元;與一總線接口單元等等。微處理器10具有一非循序執(zhí)行微架構(gòu),可以不依照程序順序發(fā)布指令以供執(zhí)行。進(jìn)一步來(lái)說(shuō),架構(gòu)指令(或微指令)轉(zhuǎn)譯或轉(zhuǎn)換出的微指令,可以不依照程序順序發(fā)布指令以供執(zhí)行。微指令的程序順序相同于轉(zhuǎn)譯或轉(zhuǎn)換出這些微指令的相對(duì)應(yīng)架構(gòu)指令的程序順序。微處理器10并具有一超純量微架構(gòu),其能在單一個(gè)時(shí)鐘周期內(nèi)發(fā)布多個(gè)指令至執(zhí)行單元執(zhí)行。在一種實(shí)施例中,微處理器10可以說(shuō)是以相容于x86指令集架構(gòu)的方式提供指令以供執(zhí)行。

指令快取15儲(chǔ)存由系統(tǒng)存儲(chǔ)器擷取的架構(gòu)指令。指令轉(zhuǎn)譯器與/或微碼只讀存儲(chǔ)器20將由系統(tǒng)存儲(chǔ)器擷取的架構(gòu)指令轉(zhuǎn)譯或轉(zhuǎn)換為微處理器10的微架構(gòu)微指令集的微指令。執(zhí)行單元45,50,60執(zhí)行這些微指令。這些由架構(gòu)指令轉(zhuǎn)譯或轉(zhuǎn)換出的微指令可實(shí)現(xiàn)架構(gòu)指令。重命名單元25接收微指令并將重排緩沖器的項(xiàng)目依據(jù)程序順序分配給微指令、依據(jù)所分配的重排緩沖器項(xiàng) 目索引更新這些微指令、將各個(gè)微指令發(fā)送至與將要執(zhí)行這些微指令的執(zhí)行單元相關(guān)聯(lián)的保留站25、以及為這些微指令執(zhí)行暫存器重命名與關(guān)聯(lián)建立。

基于類型的分類運(yùn)算

在本發(fā)明的一實(shí)施例中,F(xiàn)MA運(yùn)算是依據(jù)輸入運(yùn)算元的指數(shù)值的差(由變數(shù)ExpDelta表示),以及是否涉及一有效的減法運(yùn)算來(lái)進(jìn)行分類。圖2利用一包含有數(shù)字線70的數(shù)字空間65來(lái)顯示ExpDelta的值。在數(shù)字線70下方的空間顯示此運(yùn)算會(huì)構(gòu)成一有效減法運(yùn)算。在數(shù)字線70上方的空間顯示此運(yùn)算會(huì)構(gòu)成一有效加法運(yùn)算(亦即不存在有效減法運(yùn)算)。

指數(shù)差,表示為ExpDelta,是乘數(shù)與被乘數(shù)的輸入指數(shù)值的加總,減去任何指數(shù)偏移值,再減去加數(shù)或減數(shù)的輸入指數(shù)值。在累加值遠(yuǎn)大于偏移調(diào)整乘積向量(bias-adjusted product vector)時(shí),計(jì)算出的ExpDelta為負(fù)。而在累加值遠(yuǎn)小于偏移調(diào)整乘積向量時(shí),計(jì)算出的ExpDelat為正。

“有效減法”,由變數(shù)EffSub表示,是指輸入運(yùn)算元的符號(hào)與所欲執(zhí)行的運(yùn)算(例如乘法-加法,或是乘法-減法)的結(jié)合,將會(huì)有效降低浮點(diǎn)數(shù)結(jié)果的大小,而非增加。舉例來(lái)說(shuō),負(fù)的被乘數(shù)乘上正的乘數(shù)(乘積為負(fù))后,加上一個(gè)正的加數(shù),就會(huì)有效降低結(jié)果的大小,而會(huì)表示為有效減法(EffSub)。

如圖2的數(shù)字空間65的右側(cè)所示,在乘積向量的大小主導(dǎo)運(yùn)算結(jié)果的情況下,累加數(shù)會(huì)直接用于初始舍入位(round bits)或是粘位(sticky bits)的運(yùn)算。如本文后續(xù)將描述的,累加數(shù)與乘積尾數(shù)的相對(duì)對(duì)準(zhǔn)有利于在計(jì)算影響舍入運(yùn)算的位前將此二者相加。在圖2的數(shù)字空間65內(nèi),這些不存在“有效減法”的情況顯示為“類型2”運(yùn)算80,而存在“有效減法”的情況顯示為“類型4”運(yùn)算90。

如圖2的數(shù)字空間65的左側(cè)所示,在累加數(shù)的大小主導(dǎo)運(yùn)算結(jié)果,并且累加數(shù)的尾數(shù)大小小于或等于所欲產(chǎn)生結(jié)果的尾數(shù)大小,累加數(shù)就不會(huì)用于 初始舍入位或是粘位的運(yùn)算。在圖2的數(shù)字空間65內(nèi),這些不存在“有效減法”的情況顯示為“類型3”運(yùn)算85,而存在“有效減法”的情況顯示為“類型5”運(yùn)算95。因?yàn)槔奂訑?shù)有效對(duì)準(zhǔn)乘積尾數(shù)的左側(cè),所以可獲得在加上累加數(shù)之前,先確認(rèn)粘位與舍入位的好處。

區(qū)分出ExpDelta位于圖2的數(shù)字線70的右側(cè)的情況與ExpDelta位于圖2的數(shù)字線70的左側(cè)的情況會(huì)有許多優(yōu)點(diǎn)。舉例來(lái)說(shuō),傳統(tǒng)FMA利用非常寬的對(duì)準(zhǔn)移位器-相當(dāng)于或大于輸入尾數(shù)寬度的三倍-來(lái)解釋累加數(shù)對(duì)準(zhǔn)于乘數(shù)與被乘數(shù)的乘積的左側(cè)或右側(cè)的運(yùn)算。通過(guò)將FMA運(yùn)算區(qū)分為由兩個(gè)調(diào)整后的執(zhí)行單元(一個(gè)調(diào)整后的乘法器45與一個(gè)調(diào)整后的加法器50)分別執(zhí)行的兩個(gè)子運(yùn)算,即可利用較小的數(shù)據(jù)路徑與較小的對(duì)準(zhǔn)移位器來(lái)進(jìn)行運(yùn)算。

對(duì)于數(shù)字線70的右側(cè)的運(yùn)算,累加數(shù)的大小會(huì)小于中間乘積向量,此情況有利于在調(diào)整后的乘法器45內(nèi)將累加數(shù)與乘法器的乘積相加。此運(yùn)算只需要一個(gè)比傳統(tǒng)FMA的數(shù)據(jù)路徑的寬度還要小上大約一個(gè)尾數(shù)寬度的數(shù)據(jù)路徑。因?yàn)檎{(diào)整后的乘法器45原本就具有一些內(nèi)部延遲,累加數(shù)會(huì)有效地對(duì)準(zhǔn)加總樹/陣列(summation tree/array),也會(huì)簡(jiǎn)化標(biāo)準(zhǔn)化與舍入運(yùn)算。舍入運(yùn)算將會(huì)由調(diào)整后的加法器50會(huì)在第二FMA子運(yùn)算中執(zhí)行。

反之,對(duì)于數(shù)字線70的左側(cè)的運(yùn)算,累加數(shù)會(huì)是較大的運(yùn)算元而不會(huì)用于舍入運(yùn)算。因?yàn)槔奂訑?shù)不會(huì)用于舍入運(yùn)算(除了以下提到的特殊狀況),因而可以對(duì)乘法器的乘積執(zhí)行一些初始粘收集(initial sticky collection)、將中間結(jié)果儲(chǔ)存至存儲(chǔ)器(例如重排緩沖器與/或快取)、并且可以用調(diào)整后的加法器50來(lái)進(jìn)行累加數(shù)的加法運(yùn)算。傳統(tǒng)的舍入邏輯可有效處理累加數(shù)對(duì)舍入運(yùn)算的選擇造成影響的特殊狀況,若是存在總數(shù)溢位,舍入位會(huì)成為粘位的其中之一,而總數(shù)的最重要位(least significant bit,LSB)會(huì)成為舍入位。

某些種類的FMA運(yùn)算-“有效減法”運(yùn)算中對(duì)應(yīng)于在圖2的數(shù)字空間65下半部的子集合-會(huì)使一個(gè)或多個(gè)最重要位歸零,傳統(tǒng)上將此稱為“塊消去 (mass cancellation)”。在圖2中,具有塊消去潛力的運(yùn)算表示為“類型1”運(yùn)算75。此情況需要在舍入運(yùn)算前執(zhí)行標(biāo)準(zhǔn)化運(yùn)算來(lái)確認(rèn)舍入點(diǎn)的位置。標(biāo)準(zhǔn)化向量所涉及的移位運(yùn)算會(huì)產(chǎn)生顯著的時(shí)間延遲與/或呼叫前導(dǎo)位預(yù)測(cè)(leading digitprediction)以供使用。另一方面,不涉及塊消去的FMA運(yùn)算可以省略前導(dǎo)位預(yù)測(cè)。

總之,如圖2所示,F(xiàn)MA運(yùn)算可依據(jù)ExpDelta與EffSub進(jìn)行分類。第一類的FMA運(yùn)算75定義為包含ExpDelta落于{-2,-1,0,+1}的范圍且EffSub為真的運(yùn)算,這些運(yùn)算包含那些具有位塊消去潛力的運(yùn)算。第二類的FMA運(yùn)算80是定義為包含ExpDelta大于或等于-1且EffSub為假的運(yùn)算。第三類的FMA運(yùn)算85是定義為包含ExpDelta小于或等于-2且EffSub為假的運(yùn)算。第四類的FMA運(yùn)算90是定義為包含ExpDelta大于{+1}且EffSub為真的運(yùn)算。第五類的FMA運(yùn)算95是定義為包含ExpDelta小于{-2}且EffSub為真的運(yùn)算。值得注意的是,這些分類的定義僅為例示,F(xiàn)MA運(yùn)算當(dāng)可采不同方式進(jìn)行分類。舉例來(lái)說(shuō),在另一實(shí)施例中,第二類與第四類可以用同一類表示,相同地,第三類與第五類也可以同一類表示。此外,在其他實(shí)施例中,圖2的數(shù)字線70的左部分與右部分的分隔線亦可改變。

融合FMA指令執(zhí)行元件組

圖3是顯示一般用以執(zhí)行FMA運(yùn)算的融合FMA指令執(zhí)行元件組100的一實(shí)施例。此元件組100包含兩個(gè)物理上與/或邏輯上分開的算術(shù)邏輯單元,(在一實(shí)施例中,即為一調(diào)整后的乘法器45與一調(diào)整后的加法器50)與共享儲(chǔ)存空間155與55以儲(chǔ)存多個(gè)未經(jīng)舍入運(yùn)算的中間結(jié)果向量與舍入指標(biāo)(rounding indicator)。

各個(gè)調(diào)整后的乘法器45與調(diào)整后的加法器50都是一個(gè)指令執(zhí)行單元,進(jìn)一步來(lái)說(shuō),是指令管線24內(nèi)的一個(gè)算術(shù)處理單元,用以對(duì)機(jī)器指令(例如復(fù)雜指令集(CISC)微架構(gòu)內(nèi)一個(gè)指定的指令集或是精簡(jiǎn)指令集(RISC)微架構(gòu)內(nèi) 一個(gè)指定的指令集)進(jìn)行解碼,以及從一組共享的高速存儲(chǔ)器讀取運(yùn)算元并寫入結(jié)果。指令執(zhí)行單元可被理解為一個(gè)邏輯電路的特性集合,用以執(zhí)行傳送過(guò)來(lái)的指定機(jī)器指令集,而不同于可平行執(zhí)行(而不僅止于管線化執(zhí)行)多個(gè)機(jī)器指令的較大的電路群(如果存在的話)。

更特別的是,調(diào)整后的乘法器45與調(diào)整后的加法器50互相分離、不可分割的、能獨(dú)立運(yùn)行的執(zhí)行單元,能獨(dú)立對(duì)微碼進(jìn)行解碼并執(zhí)行,并提供控制信號(hào)至內(nèi)部的數(shù)據(jù)路徑。共享高速存儲(chǔ)器可以是一個(gè)暫存器檔案或是一組非架構(gòu)運(yùn)算暫存器,供微指令交換數(shù)據(jù)并使其運(yùn)算結(jié)果可為其他執(zhí)行單元看見。

更特別的是,調(diào)整后的乘法器45是一個(gè)適當(dāng)?shù)某朔ㄟ\(yùn)算單元,在大部分情況下,就像傳統(tǒng)的乘法運(yùn)算單元,能執(zhí)行不屬于FMA運(yùn)算的一般乘法微指令。不過(guò),此調(diào)整后的乘法器經(jīng)適當(dāng)調(diào)整,使能接收FMA乘數(shù)105、被乘數(shù)110、與累加數(shù)115作為其輸入運(yùn)算元,并產(chǎn)生一儲(chǔ)存格式中間結(jié)果150,這在后續(xù)段落會(huì)有更進(jìn)一步的描述。相類似地,調(diào)整后的加法器50是一個(gè)適當(dāng)?shù)募臃ㄟ\(yùn)算單元,在大部分情況下,就像傳統(tǒng)的加法運(yùn)算單元,能執(zhí)行不屬于FMA運(yùn)算的一般累加微指令,例如加或減。不過(guò),此調(diào)整后的加法器經(jīng)適當(dāng)調(diào)整,使能接收儲(chǔ)存格式中間結(jié)果150并產(chǎn)生一個(gè)正確且經(jīng)舍入運(yùn)算的FMA結(jié)果。

調(diào)整后的乘法器45能夠執(zhí)行第一階層或部分的融合FMA運(yùn)算(FMA1子運(yùn)算)。此調(diào)整后的乘法器45包含一輸入運(yùn)算元分析器140、一乘法加總陣列120、一最終加法器125、一標(biāo)準(zhǔn)化移位器、與一前導(dǎo)位預(yù)測(cè)與編碼器135。在執(zhí)行FMA1子運(yùn)算時(shí),調(diào)整后的乘法器45會(huì)產(chǎn)生并輸出一未經(jīng)舍入運(yùn)算的標(biāo)準(zhǔn)化加總結(jié)果145與多個(gè)舍入位(或是舍入指標(biāo))。相較之下,在執(zhí)行非融合FMA運(yùn)算時(shí),調(diào)整后的乘法器45會(huì)產(chǎn)生一經(jīng)舍入運(yùn)算且相容于IEEE標(biāo)準(zhǔn)的結(jié)果。

舍入位與未經(jīng)舍入運(yùn)算的標(biāo)準(zhǔn)化加總結(jié)果145的最重要位依據(jù)一儲(chǔ)存格式進(jìn)行儲(chǔ)存。在一實(shí)施例中,未經(jīng)舍入運(yùn)算的標(biāo)準(zhǔn)化加總結(jié)果145的最重要位輸出至一結(jié)果總線146,以儲(chǔ)存至一尾數(shù)寬度等于目標(biāo)數(shù)據(jù)格式的尾數(shù)寬度的重命名暫存器155。舍入位輸出至一專用舍入位或運(yùn)算控制指標(biāo)數(shù)據(jù)路徑、或是位于調(diào)整后的乘法器外且不同于結(jié)果總線146的連接網(wǎng)路148,以儲(chǔ)存至一不同于儲(chǔ)存重命名暫存器155的儲(chǔ)存單元(例如重排緩沖器30)的舍入快取55。這些未經(jīng)舍入運(yùn)算的標(biāo)準(zhǔn)化加總結(jié)果145的最重要位,連同舍入位,包含一儲(chǔ)存格式中間結(jié)果150。

因?yàn)橹孛麜捍嫫?55與舍入快取55屬于可為其他執(zhí)行單元看見的共享存儲(chǔ)器的一部分,物理上與/或邏輯上獨(dú)立于調(diào)整后的乘法器45的調(diào)整后的加法器50,可以通過(guò)運(yùn)算元總線152與舍入位數(shù)據(jù)路徑148接收此儲(chǔ)存格式中間結(jié)果150,并執(zhí)行一第二(完成)階層或部分的融合FMA運(yùn)算(FMA2子運(yùn)算)。此外,在FMA1子運(yùn)算與FMA2子運(yùn)算間亦可執(zhí)行其他不相關(guān)的運(yùn)算。

調(diào)整后的加法器50提供一運(yùn)算元乘數(shù)160,使FMA狀態(tài)下的累加運(yùn)算元?dú)w零,而在FMA狀態(tài)下,調(diào)整后的乘法器45已完成必要的累加運(yùn)算。調(diào)整后的乘法器50并具有舍入位選擇邏輯175,從調(diào)整后的乘法器45產(chǎn)生的舍入位、調(diào)整后的加法器50內(nèi)部產(chǎn)生的舍入位,或是二者的組合,選擇用于舍入模組180以產(chǎn)生最終舍入結(jié)果的舍入位。調(diào)整后的加法器并具有一近路徑加總電路165,用以在存在兩個(gè)加總運(yùn)算元的塊消去的情況下對(duì)總數(shù)進(jìn)行標(biāo)準(zhǔn)化運(yùn)算,并具有一遠(yuǎn)路徑加總電路170,用以執(zhí)行最多只需單一位移位的加總運(yùn)算以產(chǎn)生總數(shù)。如下所述,F(xiàn)MA2子運(yùn)算可完全由遠(yuǎn)路徑加總電路170進(jìn)行處理。

調(diào)整后的乘法器

圖4和5是詳細(xì)顯示調(diào)整后的乘法器45的一實(shí)施例。圖4特別顯示調(diào)整后的乘法器45的路徑確認(rèn)邏輯185與尾數(shù)乘法模組190。圖5特別顯示調(diào)整后的 乘法器45的指數(shù)結(jié)果產(chǎn)生器260與舍入指標(biāo)產(chǎn)生器245。

如圖4所示,路徑確認(rèn)邏輯185包含一輸入解碼器200、一輸入運(yùn)算元分析器140、路徑控制邏輯215與一累加數(shù)對(duì)準(zhǔn)與射入邏輯電路220。尾數(shù)乘法模組190包含圖3的乘法加總陣列120,這在圖4中以二個(gè)元件顯示,即一乘法陣列235與一部分乘積加法器240。尾數(shù)乘法模組190并包含一最終加法器125、一前導(dǎo)位預(yù)測(cè)器與編碼器135、與標(biāo)準(zhǔn)化移位器130。

如圖5所示,指數(shù)結(jié)果產(chǎn)生器260包含一PNExp產(chǎn)生器265、一IRExp產(chǎn)生器270、與一不足位/溢位偵測(cè)器275。舍入指標(biāo)產(chǎn)生器245包含一中間符號(hào)產(chǎn)生器280、一結(jié)果向量端口285、一端回進(jìn)位指標(biāo)290、一粘位產(chǎn)生器295與一舍入位產(chǎn)生器300。

請(qǐng)參照?qǐng)D4,調(diào)整后的乘法器45通過(guò)一個(gè)或多個(gè)輸入端口195接收一輸入微指令以及運(yùn)算元數(shù)值。就FMA微指令而言,調(diào)整后的乘法器45接收一被乘數(shù)運(yùn)算元A、一乘數(shù)運(yùn)算元B與一累加數(shù)運(yùn)算元C,各個(gè)運(yùn)算元都包含一符號(hào)指標(biāo)或位、一尾數(shù)與一指數(shù)。在圖4與圖6中,浮點(diǎn)運(yùn)算元的符號(hào)、尾數(shù)與指數(shù)部分分別以下標(biāo)S、M與E表示。舉例來(lái)說(shuō),AS、AM、AE分別代表被乘數(shù)的符號(hào)位、被乘數(shù)的尾數(shù)與被乘數(shù)的指數(shù)。

解碼器200對(duì)輸入微指令進(jìn)行解碼以產(chǎn)生FMA指標(biāo)M與二進(jìn)位數(shù)運(yùn)算符號(hào)指標(biāo)(或位)PS與OS,M意指接獲FMA微指令。在一實(shí)施例中,形式為A*B+C的FMA微指令會(huì)產(chǎn)生二進(jìn)位數(shù)零的一正乘法/向量負(fù)乘法符號(hào)運(yùn)算子PS與一加/減運(yùn)算子OS。形式為-A*B+C的負(fù)乘積-累加微指令會(huì)產(chǎn)生一個(gè)二進(jìn)位數(shù)一的運(yùn)算子PS與一個(gè)二進(jìn)位數(shù)零的運(yùn)算子OS。形式為A*B-C的乘積-相減微指令會(huì)產(chǎn)生一個(gè)二進(jìn)位數(shù)零的運(yùn)算子PS與一個(gè)二進(jìn)位數(shù)一的運(yùn)算子OS。形式為-A*B-C的向量負(fù)乘積-相減微指令會(huì)產(chǎn)生二進(jìn)位數(shù)一的運(yùn)算子PS與運(yùn)算子OS。在其他較為簡(jiǎn)化的實(shí)施例中,調(diào)整后的乘法器45并不直接支援向量負(fù)微指令與/或減法微指令,但由微處理器10來(lái)支援等效的運(yùn)算,也就是在調(diào)用乘 積-累加/相減微指令至調(diào)整后的乘法器45前,視情況額外反轉(zhuǎn)一個(gè)或多個(gè)運(yùn)算元或符號(hào)指標(biāo)。

乘法陣列235接收被乘數(shù)與乘數(shù)的尾數(shù)值A(chǔ)M與BM并計(jì)算出AM與BM的部分乘積??梢岳斫獾氖?,當(dāng)AM或者BM的絕對(duì)值為一或零,乘法陣列235所產(chǎn)生的單一個(gè)“部分乘積”的值就會(huì)是AM與BM的完整乘積。部分乘積提供至部分乘積加法器240,其提供多個(gè)項(xiàng)目以接收A與B的部分乘積以等待將其加總,而至少一個(gè)的部分乘積加法器240的項(xiàng)目用以接收一累加來(lái)源值CX。如下所述,在討論完輸入運(yùn)算元分析器140與累加數(shù)對(duì)準(zhǔn)射入邏輯220后,會(huì)對(duì)部分乘積加法器240有其他的說(shuō)明。

輸入運(yùn)算元分析器140包含一ExpDelta分析子電路210與一EffSub分析子電路205。ExpDelta分析子電路210產(chǎn)生ExpDelta(ExpΔ)值。在一實(shí)施例中,ExpDelta通過(guò)將乘數(shù)與被乘數(shù)的輸入指數(shù)值A(chǔ)E與BE加總,減去加數(shù)或減數(shù)輸入指數(shù)值CE,并在存在指數(shù)偏移值ExpBias時(shí)減去此指數(shù)偏移值(如果任一者存在)。在AE、BE與CE是以偏移指數(shù)(biased exponent)表示時(shí),例如IEEE754的規(guī)范,被乘數(shù)A與乘數(shù)B的乘積的偏移量將會(huì)是累加數(shù)C偏移量的兩倍。而導(dǎo)入ExpBias值可對(duì)此進(jìn)行校正。

EffSub分析子電路205分析運(yùn)算元符號(hào)指標(biāo)AS、BS與CS以及運(yùn)算元符號(hào)指標(biāo)PS與OS。EffSub分析子電路205產(chǎn)生一“EffSub”值,用以表示FMA運(yùn)算是否為一有效減法運(yùn)算。舉例來(lái)說(shuō),若是對(duì)A與B的乘積與C執(zhí)行運(yùn)算元特定的加法或減法運(yùn)算(或是在負(fù)向量乘法運(yùn)算子的情況下,此運(yùn)算結(jié)果的負(fù)值)所產(chǎn)生的結(jié)果R的絕對(duì)值小于(a)A與B的乘積的絕對(duì)值或是(b)C的絕對(duì)值,就會(huì)是有效減法。若以數(shù)學(xué)符號(hào)表示,若是(|R|<|A*B|)∨(|R|<|C|),其中R為FMA運(yùn)算的結(jié)果,此FMA運(yùn)算就會(huì)構(gòu)成有效減法。雖然以FMA運(yùn)算的結(jié)果可以簡(jiǎn)化EffSub的描述,不過(guò)需理解的是,在EffSub分析子電路205預(yù)先確認(rèn)EffSub時(shí),實(shí)際上是通過(guò)分析符號(hào)指標(biāo)AS、BS、CS、PS與OS來(lái)進(jìn)行,而不 去評(píng)估A、B與C的尾數(shù)、指數(shù)與大小。

路徑控制邏輯215接收由輸入運(yùn)算元分析器140產(chǎn)生的ExpDelta與EffSub指標(biāo),并借以產(chǎn)生一路徑控制信號(hào),其數(shù)值以變數(shù)Z表示。路徑控制邏輯215可控制C的累加運(yùn)算是否會(huì)連同A與B的部分乘積一并在調(diào)整后的乘法器45內(nèi)執(zhí)行。在一實(shí)施例中,路徑控制邏輯215用以產(chǎn)生Z的設(shè)定條件顯示于圖2中。在一實(shí)施例中,對(duì)于任何調(diào)整后的乘法器45被選用來(lái)執(zhí)行乘積-累加運(yùn)算的累加部分運(yùn)算的情況合(例如類型1,2與4),Z會(huì)是二進(jìn)位數(shù)一,而對(duì)于任何ExpDela與EffSub的其他組合(例如類型3與5),Z會(huì)是二進(jìn)位數(shù)零。

另外,路徑控制邏輯215也可以通過(guò)判斷C所具有一大小,相較于A與B的乘積大小,是否可使C對(duì)準(zhǔn)于加總樹(summation tree)內(nèi),而不需將C的最重要位移位至A與B的部分乘積加總的加總樹所提供的最重要位的左側(cè)來(lái)產(chǎn)生Z。另一個(gè)或替代的設(shè)定條件可以是,在執(zhí)行FMA運(yùn)算時(shí)是否具有執(zhí)行塊消去的潛力。再另一個(gè)或替代的設(shè)定條件可以是,對(duì)A與B的乘積進(jìn)行C的累加運(yùn)算所產(chǎn)生的舍入前結(jié)果R所需要的位數(shù),是否少于將C對(duì)準(zhǔn)A與B的乘積所需要的位數(shù)。由此可知,路徑控制的條件可響應(yīng)調(diào)整后的乘法器45的設(shè)計(jì)進(jìn)行改變。

累加數(shù)對(duì)準(zhǔn)射入邏輯220接收路徑控制邏輯215所產(chǎn)生的Z、ExpDelta分析子電路210所產(chǎn)生的ExpDelta、一移位常數(shù)SC、與累加數(shù)尾數(shù)值CM。在一實(shí)施例中,此累加數(shù)對(duì)準(zhǔn)射入邏輯220亦接收CM的位反相(bitwise negation),即與加法/減法累加運(yùn)算子指標(biāo)OS。在另一實(shí)施例中,累加數(shù)對(duì)準(zhǔn)射入邏輯220在加法/減法累加數(shù)指標(biāo)OS顯示調(diào)整后的乘法器45所接收的微指令為乘積-相減微指令時(shí),選擇性地額外反轉(zhuǎn)CM的值。

相應(yīng)于所接收的輸入,累加數(shù)對(duì)準(zhǔn)射入邏輯220會(huì)產(chǎn)生一數(shù)值CX射入部分乘積加法器240。此射入陣列的CX的寬度是2m+1,或可理解為輸入運(yùn)算元的尾數(shù)AM、BM與CM的兩倍寬度額外加上一個(gè)位。

若是M為二進(jìn)位數(shù)零以顯示調(diào)整后的乘法器45正在執(zhí)行一般的乘法運(yùn)算而非FMA1子運(yùn)算,多工器230就會(huì)將一舍入常數(shù)RC,而非CX,射入部分乘積加法器240,借此,調(diào)整后的乘法器45即可以傳統(tǒng)方式產(chǎn)生一舍入后結(jié)果。RC的數(shù)值部分是由指令顯示的舍入運(yùn)算的類型所決定(例如:舍入向上(round half up)、舍入相等(round half to even)、舍入遠(yuǎn)離零(round half away from zero)),部分是由輸入運(yùn)算元的位尺寸(例如32位與64位)所決定。在一實(shí)施例中,部分乘積加法器240利用兩個(gè)不同的舍入運(yùn)算常數(shù)來(lái)計(jì)算出兩個(gè)總數(shù),并選擇其中較適當(dāng)?shù)囊粋€(gè)。借此,調(diào)整后的乘法器45的IMant輸出就會(huì)是一般乘法運(yùn)算的正確舍入后的尾數(shù)結(jié)果。

若是M為二進(jìn)位數(shù)一而Z為二進(jìn)位數(shù)零,即表示不需對(duì)A與B的乘積執(zhí)行C的累加運(yùn)算,在此情況下,就一實(shí)施例而言,此累加數(shù)對(duì)準(zhǔn)射入邏輯220會(huì)將CX設(shè)定為零,而使多工器230將零值射入用以接收CX值的部分乘積加法器240陣列。若是M為二進(jìn)位數(shù)一且Z為二進(jìn)位數(shù)一,累加數(shù)對(duì)準(zhǔn)射入邏輯220就會(huì)將CX右移相等于ExpDelta加上一移位常數(shù)SC的量,以產(chǎn)生CX。在一實(shí)施例中,移位常數(shù)SC等于2,以對(duì)應(yīng)于圖2,當(dāng)C的累加運(yùn)算執(zhí)行于調(diào)整后的乘法器內(nèi),圖中數(shù)字空間內(nèi)最大的ExpDelta負(fù)值。隨后,多工器230會(huì)將運(yùn)算結(jié)果CX射入部分乘積加法器240。

累加數(shù)對(duì)準(zhǔn)射入邏輯220內(nèi)并結(jié)合有一粘收集器(sticky collector)。累加數(shù)CX中任何移位超過(guò)部分乘積加法器240加總樹的最不重要位的部分,保留于XtraStky位供舍入運(yùn)算之用。因?yàn)闀?huì)有多達(dá)m個(gè)位移位超過(guò)部分乘積加法器240加總樹的最不重要位,XtraStky位作為一寬度m的額外粘位陣列,用于粘位S的運(yùn)算。

回到調(diào)整后的乘法器45的加法邏輯,在部分實(shí)施方式中,部分乘積加法器240為一加總樹,而在一實(shí)施方式中,為一個(gè)或多個(gè)進(jìn)位儲(chǔ)存加法器。此部分乘積加法器240根據(jù)所提供的部分乘積加總樹的位欄的進(jìn)位儲(chǔ)存向量, 對(duì)一未經(jīng)舍入的冗余代表或總數(shù),依據(jù)現(xiàn)有技術(shù)的乘法執(zhí)行單元通常會(huì)執(zhí)行的運(yùn)算方法,來(lái)進(jìn)行累加運(yùn)算,這包含在部分乘積的累加運(yùn)算中,對(duì)累加數(shù)輸入值選擇性進(jìn)行額外的位反相與對(duì)準(zhǔn)運(yùn)算。

同樣地,部分乘積加法器240所執(zhí)行的算術(shù)運(yùn)算會(huì)受到Z的數(shù)值的影響。若是Z=1,部分乘積加法器240就會(huì)對(duì)于AM與BM的乘積執(zhí)行CX的連帶累加運(yùn)算(joint accumulation)。若是Z=0,部分乘積加法器240就會(huì)對(duì)AM與BM的乘積執(zhí)行一基本累加運(yùn)算。部分乘積加法器240會(huì)產(chǎn)生一由一2m位總數(shù)向量與一2m位進(jìn)位向量表示的冗余二進(jìn)位數(shù)總數(shù),作為連帶累加運(yùn)算或是基本累加運(yùn)算的運(yùn)算結(jié)果。

這些進(jìn)位與總數(shù)向量同時(shí)轉(zhuǎn)送至一最終加法器125與一前導(dǎo)位預(yù)測(cè)器與編碼器135。此最終加法器125可為一進(jìn)位預(yù)看加法器(carry-lookahead adder)或一進(jìn)位傳播加法器(carry propagate adder),通過(guò)將進(jìn)位與總數(shù)向量轉(zhuǎn)換成寬度為2m+1的正或負(fù)的預(yù)標(biāo)準(zhǔn)化未舍入非冗余總數(shù)(prenormalized unrounded nonredundant sum)PNMant以完成累加運(yùn)算程序。最終加法器125并產(chǎn)生一總數(shù)符號(hào)位SumSign,來(lái)顯示PNMant為正數(shù)或負(fù)數(shù)。

在最終加法器125產(chǎn)生PNMant的同個(gè)時(shí)間周期,前導(dǎo)位預(yù)測(cè)器與編碼器135會(huì)同步預(yù)測(cè)需要被消除以標(biāo)準(zhǔn)化PNMant的前導(dǎo)位的數(shù)量。相較于傳統(tǒng)對(duì)乘積-累加運(yùn)算分工處理的FMA設(shè)計(jì)中,因其最終加法器125執(zhí)行的最終加法運(yùn)算是于標(biāo)準(zhǔn)化運(yùn)算后執(zhí)行而需同時(shí)對(duì)進(jìn)位向量與總數(shù)向量執(zhí)行標(biāo)準(zhǔn)化運(yùn)算,因而必須等待前導(dǎo)位預(yù)測(cè)的輸出,故本發(fā)明的處理方式相較傳統(tǒng)作法實(shí)具有優(yōu)點(diǎn)。在一實(shí)施例中,此前導(dǎo)位預(yù)測(cè)器與編碼器135不是可以適用于正總數(shù)的情況,就是可適用于負(fù)總數(shù)的情況。

在一實(shí)施例中,前導(dǎo)位預(yù)測(cè)只在類型1的運(yùn)算執(zhí)行。如前所述,所選擇的前導(dǎo)位預(yù)測(cè)的方法不是可以適用于正總數(shù)就是可以適用于負(fù)總數(shù),為熟習(xí)浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域者所熟知。

因?yàn)榍皩?dǎo)位預(yù)測(cè)器與編碼器135具有最多一個(gè)位的誤差,任何可用于校正此誤差的常用技術(shù)均可使用,這些技術(shù)可設(shè)置于標(biāo)準(zhǔn)化移位器130內(nèi),或是關(guān)聯(lián)于標(biāo)準(zhǔn)化移位器130。一個(gè)解決方案提供邏輯來(lái)預(yù)測(cè)此誤差。另一個(gè)解決方案通過(guò)確認(rèn)PNMant的MSB是否已經(jīng)設(shè)定,并相應(yīng)地選擇PNMant的一額外移位。

標(biāo)準(zhǔn)化移位器130從最終加法器125接收此未舍入非冗余總數(shù)PNMant并產(chǎn)生一原始尾數(shù)值GMant。在CX的累加運(yùn)算是由部分乘積加法器240執(zhí)行的情況下,GMant會(huì)是AM和BM乘積與CX的標(biāo)準(zhǔn)化加總的絕對(duì)值。而在其他情況下,GMant會(huì)是AM和BM乘積的標(biāo)準(zhǔn)化加總的絕對(duì)值。

為了產(chǎn)生GMant,標(biāo)準(zhǔn)化移位器130在SumSgn顯示PNMant為負(fù)時(shí)對(duì)PNMant執(zhí)行位反相的運(yùn)算。對(duì)負(fù)的PNMant數(shù)值執(zhí)行標(biāo)準(zhǔn)化移位器130的位反相運(yùn)算,可產(chǎn)生如下所述的儲(chǔ)存格式中間結(jié)果150,并有助于正確的舍入運(yùn)算。在調(diào)整后的乘法器內(nèi)反轉(zhuǎn)PNWant,即可產(chǎn)生一正數(shù)提供給調(diào)整后的加法器,而不需先知會(huì)PNWant的數(shù)值為負(fù)。此處理方式可使累加運(yùn)算實(shí)施起來(lái)就像加總運(yùn)算并以簡(jiǎn)化的方式進(jìn)行舍入運(yùn)算。

此外,此標(biāo)準(zhǔn)化移位器130會(huì)將PNMant左移一個(gè)由LDP、EffSub與Z的函數(shù)所計(jì)算出來(lái)的量。值得注意的是,即使沒(méi)有發(fā)生最重要前導(dǎo)位的消除,仍需要將PNMant左移零、一或二個(gè)位位置以產(chǎn)生一有用的標(biāo)準(zhǔn)化儲(chǔ)存格式中間結(jié)果150,以確保后續(xù)的舍入運(yùn)算可正確進(jìn)行。此標(biāo)準(zhǔn)化運(yùn)算由一個(gè)左移所構(gòu)成,以將算術(shù)上最重要位移動(dòng)至標(biāo)準(zhǔn)化的最左位置,使能表示于如下所述的儲(chǔ)存格式中間結(jié)果150。

相較于傳統(tǒng)的FMA設(shè)計(jì),此實(shí)施方式具有三個(gè)額外的優(yōu)點(diǎn)。第一,此實(shí)施方式不需在部分乘積加法器240內(nèi)插入額外的進(jìn)位位(若響應(yīng)于EffSub對(duì)累加數(shù)尾數(shù)執(zhí)行2’補(bǔ)數(shù)時(shí)有此需求的話)。第二,此實(shí)施方式不需提供一大的符號(hào)位偵測(cè)器/預(yù)測(cè)器模組,來(lái)檢測(cè)并選擇性補(bǔ)足非冗余部分乘積與累加數(shù)加總 值的冗余總數(shù)與進(jìn)位向量表示。第三,此實(shí)施方式不需輸入額外的進(jìn)位位來(lái)確保部分乘積與累加數(shù)加總運(yùn)算中,選擇性補(bǔ)足的總數(shù)與進(jìn)位向量表示的運(yùn)算正確。

關(guān)于圖5的指數(shù)結(jié)果產(chǎn)生器260,PNExp產(chǎn)生器265產(chǎn)生一預(yù)標(biāo)準(zhǔn)化指數(shù)值PNExp,此數(shù)值為被乘數(shù)與乘數(shù)指數(shù)值A(chǔ)E與BE、指數(shù)偏移值ExpBias與移位常數(shù)SC的函數(shù)。在一實(shí)施例中,PNExp以算式SC+AE+BE-ExpBias來(lái)計(jì)算。

IRExp產(chǎn)生器270使PNExp遞減,作為標(biāo)準(zhǔn)化移位器130執(zhí)行的尾數(shù)標(biāo)準(zhǔn)化運(yùn)算,以產(chǎn)生一中間結(jié)果指數(shù)IRExp。此數(shù)值為PNExp與前導(dǎo)位預(yù)測(cè)(leading digit prediction,LDP)的函數(shù)。隨后,IRExp轉(zhuǎn)送至如下所述的結(jié)果向量端口280。

中間符號(hào)產(chǎn)生器280產(chǎn)生中間結(jié)果符號(hào)指標(biāo)IRSgn,其為EffSub、E、AS、BS與Z的函數(shù)。在一實(shí)施例中,IRSgn在某些情況下以被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的邏輯互斥或來(lái)計(jì)算。不過(guò),若是Z位為二進(jìn)位數(shù)一顯示累加運(yùn)算已經(jīng)執(zhí)行,EffSub也是二進(jìn)位數(shù)一顯示有效減法,而E位值為二進(jìn)位數(shù)零顯示沒(méi)有等待中的端回進(jìn)位(end-around carry),IRSgn就會(huì)以被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的邏輯互斥或的反相值(XNOR)來(lái)計(jì)算。換句話說(shuō),中間符號(hào)通常是A與B的乘積的符號(hào)。當(dāng)累加數(shù)的大小大于A與B的乘積時(shí),A與B的乘積的符號(hào)會(huì)反轉(zhuǎn),乘積-累加運(yùn)算會(huì)是一有效減法運(yùn)算,而累加運(yùn)算的完成不需要使用端回進(jìn)位(因?yàn)槔奂舆\(yùn)算為負(fù))。

中間結(jié)果符號(hào)指標(biāo)IRSgn用于一可用以確認(rèn)最終符號(hào)位以供具塊消去可能的FMA運(yùn)算使用的創(chuàng)新方法。不同于傳統(tǒng)的分路FMA實(shí)施方式,此實(shí)施方式不需要符號(hào)預(yù)測(cè)器,也不需要用以預(yù)測(cè)符號(hào)的大量電路。另外,零結(jié)果的符號(hào),或是具有符號(hào)零輸入的運(yùn)算結(jié)果的符號(hào),容易預(yù)先計(jì)算,來(lái)納入例如一舍入模式輸入。

結(jié)果向量端口280輸出一儲(chǔ)存格式中間結(jié)果向量IRVector,其包含中間結(jié) 果指數(shù)IRExp、中間結(jié)果符號(hào)IRSgn與中間結(jié)果尾數(shù)IRMant。在此儲(chǔ)存格式的一實(shí)施例中,IRMant包含GMant的最重要m位,其中m為目標(biāo)數(shù)據(jù)類型的寬度。舉例來(lái)說(shuō),在IEEE雙精確度(double precision)運(yùn)算中,結(jié)果向量端口280輸出IRVector作為單一個(gè)符號(hào)位、十一個(gè)指數(shù)位、與GMant最重要53位的組合。在儲(chǔ)存格式的另一個(gè)實(shí)施例中,m等于AM、BM與CM的尾數(shù)的寬度。在儲(chǔ)存格式的又一個(gè)實(shí)施例中,m大于AM、BM與CM的尾數(shù)的寬度。

類似于IEEE的標(biāo)準(zhǔn)儲(chǔ)存格式,這些尾數(shù)位中的單一個(gè)最重要位作為儲(chǔ)存時(shí)的一隱含值。IRVector儲(chǔ)存至一共享存儲(chǔ)器,例如重排緩沖器30的重命名暫存器155,借此,其他指令執(zhí)行單元就可存取IRVector,且/或IRvector可通過(guò)一結(jié)果轉(zhuǎn)送總線(forwarding bus)40轉(zhuǎn)送至其他指令執(zhí)行單元。在一實(shí)施例中,IRVector儲(chǔ)存至一重命名暫存器155。此外,不同于架構(gòu)暫存器會(huì)對(duì)重排緩沖器給予一固定不變的任務(wù)分派,中間結(jié)果是向量在重排緩沖器內(nèi)給予一不可預(yù)期的任務(wù)分派。在另一實(shí)施例中,IRVector暫時(shí)儲(chǔ)存于將用以儲(chǔ)存FMA運(yùn)算的最終舍入結(jié)果的目標(biāo)暫存器內(nèi)。

現(xiàn)在請(qǐng)參照?qǐng)D5的舍入指標(biāo)產(chǎn)生器245,不足位/溢位偵測(cè)器275產(chǎn)生不足位指標(biāo)U1與溢位指標(biāo)O1,其為IRExp與指數(shù)范圍值ExpMin與ExpMax的函數(shù)。指數(shù)范圍值是與儲(chǔ)存格式中間結(jié)果150(下面將有進(jìn)一步討論)的精確度或目標(biāo)數(shù)據(jù)類型有關(guān)。若是IRExp小于可代表此FMA運(yùn)算目標(biāo)數(shù)據(jù)類型的指數(shù)值的范圍,或是小于可代表的任何中間儲(chǔ)存空間,例如重命名暫存器,的指數(shù)值的范圍,U1位就會(huì)是二進(jìn)位數(shù)一,否則U1位就會(huì)是二進(jìn)位數(shù)零。相反地,若是IRExp大于可代表此FMA運(yùn)算目標(biāo)數(shù)據(jù)類型的指數(shù)值的范圍,或是大于可代表的任何中間儲(chǔ)存空間,例如重命名暫存器,的指數(shù)值的范圍,O1位就會(huì)是二進(jìn)位數(shù)一,否則O1位就會(huì)是二進(jìn)位數(shù)零。另外,U與O可經(jīng)編碼以表示四個(gè)可能的指數(shù)范圍,其中至少一個(gè)編碼會(huì)表示不足位,而至少一個(gè)編碼會(huì)表示溢位。

在傳統(tǒng)一般乘法單元的實(shí)施方式中,U1與O1位會(huì)報(bào)告至例外事件控制邏輯。不過(guò),在執(zhí)行FMA1子運(yùn)算時(shí),調(diào)整后的乘法器45會(huì)輸出U1與O1位至中間儲(chǔ)存空間以供調(diào)整后的加法器50執(zhí)行。

端回進(jìn)位指標(biāo)產(chǎn)生器290會(huì)產(chǎn)生等待中的端回進(jìn)位指標(biāo)E1位,其為Z、EffSub與SumSgn的函數(shù)。若是已確認(rèn)的Z位的數(shù)值為二進(jìn)位數(shù)一,表示部分乘積加法器240已經(jīng)執(zhí)行C的累加運(yùn)算,已確認(rèn)的EffSub變數(shù)顯示此累加運(yùn)算造成一有效減法,并且SumSgn顯示所產(chǎn)生的未舍入非冗余值PNMant為正,E1位就會(huì)是二進(jìn)位數(shù)一。在其他情況下,E1就會(huì)是二進(jìn)位數(shù)零。

結(jié)果向量端口280儲(chǔ)存GMant的最重要位作為中間結(jié)果向量的中間結(jié)果尾數(shù),而粘位產(chǎn)生器295與舍入位產(chǎn)生器300會(huì)使剩下較不重要的位(例如超出中間結(jié)果尾數(shù)的第53個(gè)位的位)減少至剩下舍入(R1)與粘(S1)位。粘位產(chǎn)生器295產(chǎn)生粘位S1,其為SumSgn、Z、GMant的最不重要位、EffSub與XtraStky位的函數(shù)。舍入位產(chǎn)生器300產(chǎn)生舍入位R1,其為GMant的最不重要位的函數(shù)。

舍入快取

舍入位端口305會(huì)輸出各個(gè)位U1、O1、E1、S1、R1與Z,借此,這些位就可以被其他執(zhí)行單元(例如調(diào)整后的加法器50)使用來(lái)產(chǎn)生FMA運(yùn)算最終的舍入后結(jié)果。為了方便說(shuō)明,這些位在本文中都表示為舍入位,即使其中有部分位會(huì)在產(chǎn)生FMA運(yùn)算最終結(jié)果的過(guò)程中有其他用途,又即使并非所有的位都用于舍入運(yùn)算。舉例來(lái)說(shuō),在某些實(shí)施方式中,O1位就不會(huì)用于舍入運(yùn)算。這些位可互換地被指為運(yùn)算控制指標(biāo)。舉例來(lái)說(shuō),位Z與E,即指出那些后續(xù)運(yùn)算需要執(zhí)行;位U與O,即指出這些運(yùn)算應(yīng)如何執(zhí)行。此外,這些位可表示為運(yùn)算間歇狀態(tài)值(calculation intermission state value),因?yàn)樗麄兲峁┮粔嚎s格式(compact format)來(lái)表示與選擇性地儲(chǔ)存在調(diào)整后的乘法器45的FMA1子運(yùn)算與調(diào)整后的加法器50的FMA2子運(yùn)算間的間歇時(shí)間中的運(yùn)算狀 態(tài)信息。

這些位,無(wú)論被稱為舍入位、運(yùn)算控制指標(biāo)、運(yùn)算狀態(tài)指標(biāo)或其他,連同中間結(jié)果向量與累加數(shù)值C,除了運(yùn)算元數(shù)值,還提供后續(xù)指令執(zhí)行單元需要的任何事物,以產(chǎn)生算術(shù)上正確的最終結(jié)果。換句話說(shuō),中間結(jié)果向量與舍入位的結(jié)合可提供算術(shù)上正確表示FMA運(yùn)算結(jié)果所需的任何結(jié)果,此運(yùn)算結(jié)果與一具有±A*B±C形式但變?yōu)槟繕?biāo)數(shù)據(jù)尺寸的無(wú)限精確FMA運(yùn)算的運(yùn)算結(jié)果無(wú)從辨別。

依據(jù)本發(fā)明的一實(shí)施例,微處理器10用以將舍入位儲(chǔ)存至舍入快取55內(nèi),并將舍入位通過(guò)轉(zhuǎn)送總線40轉(zhuǎn)送至其他指令執(zhí)行單元,此舍入快取55亦可稱為運(yùn)算控制指標(biāo)儲(chǔ)存空間。依據(jù)本發(fā)明的另一實(shí)施例,微處理器10并不具有舍入快取55,而僅將舍入位通過(guò)轉(zhuǎn)送總線40轉(zhuǎn)送至其他指令執(zhí)行單元。依據(jù)本發(fā)明的又一實(shí)施例,微處理器10將舍入位儲(chǔ)存至舍入快取55內(nèi),但不提供轉(zhuǎn)送總線40來(lái)將舍入位直接轉(zhuǎn)送至其他的指令執(zhí)行單元。

指令快取55與所儲(chǔ)存的指令位或運(yùn)算控制指標(biāo)為非架構(gòu),亦即其非為終端用戶所能看見。相較之下,架構(gòu)暫存器或架構(gòu)指標(biāo)(例如浮點(diǎn)狀態(tài)字(floating point status word))則是可以被程序人員看見且指定為架構(gòu)指令集的一部分的信號(hào)來(lái)源。

在此所描述的舍入位僅為例示,而不同的實(shí)施方式會(huì)產(chǎn)生不同的舍入位組。舉例來(lái)說(shuō),在另一實(shí)施例中,調(diào)整后的乘法器45亦包含一保護(hù)位產(chǎn)生器以產(chǎn)生一保護(hù)位G1。在另一實(shí)施例中,調(diào)整后的乘法器亦對(duì)一零結(jié)果(zero result)的符號(hào)執(zhí)行一預(yù)運(yùn)算,并將其值儲(chǔ)存于舍入快取。若是調(diào)整后的加法器50后續(xù)運(yùn)算的結(jié)果為零結(jié)果,舍入加法器50就會(huì)使用此儲(chǔ)存的零結(jié)果符號(hào)指標(biāo)來(lái)產(chǎn)生最終的帶符號(hào)零結(jié)果。

依據(jù)本發(fā)明的另一實(shí)施例,舍入快取55是一位于調(diào)整后的乘法器45外部的存儲(chǔ)器儲(chǔ)存空間。不過(guò),在另一個(gè)不同的實(shí)施例中,此舍入快取55結(jié)合于 調(diào)整后的乘法器55內(nèi)。

尤其是在一實(shí)施例中,此舍入快取55未經(jīng)結(jié)果總線而獨(dú)自連接至指令執(zhí)行單元。有鑒于結(jié)果總線用以將結(jié)果從指令執(zhí)行單元傳送至一通用儲(chǔ)存空間,舍入快取55獨(dú)自連接至結(jié)果總線55而未經(jīng)結(jié)果總線。此外,運(yùn)算控制指標(biāo)儲(chǔ)存空間僅能為用于儲(chǔ)存或載入運(yùn)算控制指標(biāo)的指令所存取。借此,即可通過(guò)輸出指令結(jié)果的結(jié)果總線以外的其他機(jī)制來(lái)存取舍入快取55,舉例來(lái)說(shuō),可通過(guò)舍入快取自身的導(dǎo)線。此外,亦可通過(guò)指令執(zhí)行單元的輸入運(yùn)算元端口外的其他機(jī)制來(lái)存取舍入快取55。

在一實(shí)施例中,舍入快取55是一完全關(guān)聯(lián)(fully associative)的可存取存儲(chǔ)器,其具有的寫入端口的數(shù)量相當(dāng)于可平行分派的FMA1微指令的最大數(shù)量;其具有的讀取端口的數(shù)量相當(dāng)于可平行分派的FMA2微指令的最大數(shù)量;而其深度(項(xiàng)目數(shù)量)關(guān)聯(lián)于指令排程的容量,與FMA1微指令分派后而在指令排程分派FMA2微指令前所能清空的最長(zhǎng)時(shí)間周期(以時(shí)鐘周期計(jì))。另一實(shí)施例使用較小的舍入快取55,而微處理器10在舍入快去55內(nèi)無(wú)法取得儲(chǔ)存FMA1微指令的舍入位結(jié)果的空間時(shí),重新執(zhí)行FMA1微指令。

快取的各個(gè)項(xiàng)目?jī)?chǔ)存快取數(shù)據(jù)與相關(guān)聯(lián)的旗標(biāo)值(tag value),此旗標(biāo)值可與用以辨識(shí)儲(chǔ)存有儲(chǔ)存格式中間結(jié)果向量的重命名暫存器155的旗標(biāo)值相同。在微處理器10準(zhǔn)備(prepare)/拿取(fetch)供第二使用的運(yùn)算元時(shí),微處理器10使用重排緩沖器索引(ROB index)來(lái)由重命名暫存器155取回所儲(chǔ)存的中間數(shù)據(jù),與此相同的索引將會(huì)提供至舍入快取55,并提供中間結(jié)果150的剩下部分(即運(yùn)算控制指標(biāo))。

其優(yōu)點(diǎn)在于,本發(fā)明的配置給舍入快取55的物理上儲(chǔ)存項(xiàng)目的數(shù)量明顯少于配置給重命名暫存器155的項(xiàng)目數(shù)量。重命名暫存器155的數(shù)量是進(jìn)行中(in flight)的微指令數(shù)量與需要使非循序微處理器或設(shè)計(jì)的執(zhí)行單元飽和所需的暫存器名稱數(shù)量的函數(shù)。比較起來(lái),舍入快取55所需的項(xiàng)目數(shù)量則為進(jìn) 行中的FMA微指令的可能數(shù)量的函數(shù)。因此,在一未受限的實(shí)例中,微處理器的核可提供六十五個(gè)重命名暫存器155,但只提供八個(gè)舍入快取55的項(xiàng)目提供給至多八個(gè)平行處理的算術(shù)運(yùn)算。

本發(fā)明的另一實(shí)施例擴(kuò)充用以儲(chǔ)存中間結(jié)果向量的重命名暫存器155(即擴(kuò)大重命名暫存器的寬度),以提供額外的位供舍入快取55使用。此實(shí)施例雖非本發(fā)明空間利用的最佳者,但亦屬于本發(fā)明的范圍內(nèi)。

舍入位連同中間結(jié)果指標(biāo)IRVector包含儲(chǔ)存格式中間結(jié)果150。此儲(chǔ)存格式依據(jù)一標(biāo)準(zhǔn)數(shù)據(jù)格式儲(chǔ)存與/或傳送未舍入標(biāo)準(zhǔn)化加總結(jié)果145的最重要位(即具有默認(rèn)值的位),并且將未舍入標(biāo)準(zhǔn)化加總結(jié)果145的剩下位(縮減或未縮減),連同E1、Z、U1與O1位,進(jìn)行儲(chǔ)存與/或傳送,因而相較于現(xiàn)有技術(shù)具有顯著的優(yōu)勢(shì)。

調(diào)整后的加法器

現(xiàn)在請(qǐng)參照?qǐng)D6,調(diào)整后的加法器50包含一運(yùn)算元調(diào)整器60、對(duì)準(zhǔn)與條件邏輯330、以及一個(gè)與一單一位溢位移位邏輯345配對(duì)的遠(yuǎn)路徑累加模組340。此運(yùn)算元調(diào)整器160并包含一指數(shù)產(chǎn)生器335、一符號(hào)產(chǎn)生器365、一加法器舍入位產(chǎn)生器350、舍入位選擇邏輯175與一舍入運(yùn)算模組180。

值得注意的是,在本發(fā)明的一實(shí)施例中,調(diào)整后的加法器50具有一分路設(shè)計(jì)而使其通過(guò)各自獨(dú)立的近運(yùn)算與遠(yuǎn)運(yùn)算來(lái)計(jì)算結(jié)果,此技術(shù)為浮點(diǎn)運(yùn)算設(shè)計(jì)的技術(shù)人員所已知。近路徑的計(jì)算能力需要一個(gè)與一多位標(biāo)準(zhǔn)化移位器(未圖示)配對(duì)的近路徑加總模組(未圖示),此等能力未在圖6中顯現(xiàn)。在一實(shí)施例中,運(yùn)算元C與D的輸入指數(shù)值的差值位于{-1,0,+1}內(nèi)而構(gòu)成有效減法的一般加總運(yùn)算會(huì)被導(dǎo)向至近路徑16,其他的加法運(yùn)算則會(huì)被導(dǎo)向至遠(yuǎn)路徑170。其優(yōu)點(diǎn)在于,本發(fā)明可使調(diào)整后的加法器50的所有的FMA2子運(yùn)算都被導(dǎo)向至遠(yuǎn)路徑170。

調(diào)整后的加法器50提供一個(gè)或多個(gè)輸入端口310以接收一個(gè)微指令與兩 個(gè)輸入運(yùn)算元。第一輸入運(yùn)算元D是一被減數(shù)或一第一加數(shù)。第二輸入運(yùn)算元C是一減數(shù)或一第二加數(shù)。在浮點(diǎn)運(yùn)算的實(shí)施例中,各個(gè)輸入運(yùn)算元包含一輸入符號(hào)、一指數(shù)、與一尾數(shù)值,分別以下標(biāo)S、E與M表示。通過(guò)解譯微指令,解碼器315利用信號(hào)QS指出此運(yùn)算究竟為一加法或是一減法運(yùn)算。通過(guò)解譯微指令(或是由微指令指令的一運(yùn)算元參考),解碼器并可以利用信號(hào)M來(lái)指出此微指令是否支配一個(gè)特定的微操作可使調(diào)整后的加法器50執(zhí)行FMA2子運(yùn)算。

在調(diào)整后的加法器50被賦予執(zhí)行FMA2子元運(yùn)算的任務(wù)時(shí),調(diào)整后的加法器50接收由調(diào)整后的乘法器45先前執(zhí)行相對(duì)應(yīng)的FMA1子運(yùn)算所產(chǎn)生的中間結(jié)果向量IRVector。因?yàn)橹虚g結(jié)果向量IRVector的寬度僅為m個(gè)位,調(diào)整后的加法器50不需(而在一實(shí)施例中,不會(huì))被調(diào)整成可接收或執(zhí)行多于m個(gè)位的有效位數(shù)。因此,相較于以較寬位數(shù)呈現(xiàn)的IRVector,本實(shí)施例可以簡(jiǎn)化內(nèi)部數(shù)據(jù)路徑、累加模組340與調(diào)整后的加法器50的其他電路,并使其運(yùn)作更有效率。此外,因?yàn)樯婕皦K消去的累加運(yùn)算由調(diào)整后的乘法器45完成,在調(diào)整后的加法器50的近/塊消去路徑上不需加入舍入運(yùn)算邏輯來(lái)正確計(jì)算出FMA結(jié)果。

在一實(shí)施例中,調(diào)整后的加法器50從重命名暫存器155接收IRVector。在另一實(shí)施例中,則是從轉(zhuǎn)送總線40接收IRVector。而在圖6所示的實(shí)施例中,IRVector被接收為運(yùn)算元D。此調(diào)整后的加法器50接收累加數(shù)值C作為另一個(gè)運(yùn)算元。

若是M顯示調(diào)整后的加法器50被賦予執(zhí)行FMA2子元運(yùn)算的任務(wù),運(yùn)算元調(diào)整器160就會(huì)在Z是二進(jìn)位數(shù)一時(shí),將輸入運(yùn)算元的一部分設(shè)定為等同于二進(jìn)位數(shù)零,以顯示C的累加運(yùn)算已經(jīng)由調(diào)整后的乘法器45執(zhí)行。在一實(shí)施例中,各個(gè)指數(shù)、尾數(shù)與符號(hào)的欄位CE、CM與CS均調(diào)整為零。在另一實(shí)施例中,只由指數(shù)與尾數(shù)的欄位CE、CM調(diào)整為零,至于符號(hào)的欄位CS則維持 原樣。借此,調(diào)整后的加法器50即可將加數(shù)D加上一帶符號(hào)的二進(jìn)位數(shù)零。

一個(gè)二進(jìn)位數(shù)一的M位并通知調(diào)整后的加法器50接收由調(diào)整后的乘法器45所產(chǎn)生的舍入位,并將其并入儲(chǔ)存格式中間結(jié)果150。

在其他所有情況中,即Z為二進(jìn)位數(shù)零或是M為二進(jìn)位數(shù)零以顯示調(diào)整后的加法器50被賦予傳統(tǒng)累加運(yùn)算的任務(wù),運(yùn)算元調(diào)整器160只會(huì)對(duì)指數(shù)與尾數(shù)欄位CE與CM進(jìn)行傳統(tǒng)浮點(diǎn)加法運(yùn)算需要的調(diào)整。

在一實(shí)施例中,運(yùn)算元調(diào)整器160包含一對(duì)多工器接收Z(yǔ)的值,而在CM與零之間以及CE與零之間進(jìn)行選擇。選定的值在圖6中以CM*與CE*表示。隨后,對(duì)準(zhǔn)與條件邏輯330將對(duì)準(zhǔn)與/或調(diào)節(jié)此選定值CM*與第一運(yùn)算尾數(shù)DM。

接下來(lái),遠(yuǎn)路徑累加模組340將CM*與DM相加。在一實(shí)施例中,此累加模組340為一雙加加法器,以提供總數(shù)與漸增總數(shù)。在一實(shí)施例中,此累加模組340利用1’補(bǔ)數(shù)(one’s complement)來(lái)執(zhí)行有效減法。若是此總數(shù)會(huì)在尾數(shù)欄位產(chǎn)生一位的溢位,溢位移位邏輯345就會(huì)條件地將總數(shù)移動(dòng)一個(gè)位,以使結(jié)果值完成舍入運(yùn)算的準(zhǔn)備。

指數(shù)產(chǎn)生器335利用選定的指數(shù)值CE*、第一運(yùn)算元指數(shù)DE、與由溢位移位邏輯345產(chǎn)生的移位量來(lái)產(chǎn)生一最終指數(shù)FExp。

符號(hào)產(chǎn)生器365依據(jù)由第一與第二運(yùn)算元CS與DS、加/減運(yùn)算子QS與加總結(jié)果符號(hào)構(gòu)成的函數(shù)來(lái)產(chǎn)生一最終符號(hào)FSgn。

在另一實(shí)施例中,運(yùn)算元調(diào)整器160以選擇器邏輯取代。當(dāng)輸入解碼器顯示加法器正在執(zhí)行FMA2子運(yùn)算而Z是二進(jìn)位數(shù)一以顯示C的累加運(yùn)算已執(zhí)行,此選擇器邏輯會(huì)使第一運(yùn)算元D直接轉(zhuǎn)送至舍入運(yùn)算模組180,但使加總邏輯維持在休眠狀態(tài)(quiescent state)。

調(diào)整后的加法器50的邏輯產(chǎn)生一組自己的舍入位R2、S2、U2、O2與E2。當(dāng)M顯示調(diào)整后的加法器50被賦予執(zhí)行FMA2子運(yùn)算的任務(wù)時(shí),調(diào)整后的加法器50也會(huì)接收多個(gè)由執(zhí)行FMA1子運(yùn)算的調(diào)整后的乘法器45事先產(chǎn)生的舍 入位R1、S1、U1、O1、Z與E1

在M為二進(jìn)位數(shù)一的情況下,舍入位選擇邏輯175會(huì)確認(rèn)來(lái)自調(diào)整后的乘法器45的舍入位E1、R1與S1、來(lái)自調(diào)整后的加法器50的舍入位E2、R2與S2、或是二者的某些混合或組合,將會(huì)被加法器的舍入運(yùn)算模組180用以產(chǎn)生最終的舍入后尾數(shù)結(jié)果。舉例來(lái)說(shuō),若是所執(zhí)行的運(yùn)算并非FMA2子運(yùn)算(即M=0),舍入運(yùn)算模組180就會(huì)使用加法器產(chǎn)生的舍入位E2、R2與S2。另外,若是累加運(yùn)算由調(diào)整后的乘法器45執(zhí)行(即M=1且Z=1),并且不存在不足位的情形(即UM=0),就由乘法器產(chǎn)生的舍入位E1、R1與S1來(lái)提供舍入運(yùn)算模組180產(chǎn)生最終舍入后結(jié)果所需的任何物件。

此可變位置的舍入運(yùn)算模組作為調(diào)整后的加法器50的遠(yuǎn)計(jì)算功能的部分來(lái)設(shè)置。而在一實(shí)施例中,此舍入運(yùn)算模組配合由1’補(bǔ)數(shù)有效減法所造成的正差值舍入運(yùn)算,并且還配合由非有效減法的加總運(yùn)算所造成的正總數(shù)舍入運(yùn)算。此舍入運(yùn)算模組180以類似于傳統(tǒng)單一加/減單元執(zhí)行的方式,執(zhí)行選定的舍入位RX、黏位SX,而在有提供的時(shí)候也會(huì)執(zhí)行保護(hù)位GX(未圖示)。此舍入運(yùn)算模組180由傳統(tǒng)設(shè)計(jì)進(jìn)行修改以接收至少一補(bǔ)充輸入,即選定的端回進(jìn)位位EX,而若是由調(diào)整后的乘法器45執(zhí)行1’補(bǔ)數(shù)有效減法,即可顯示需要一端回進(jìn)位校正。使用選定的RX、SX與EX輸入,舍入運(yùn)算模組180可正確地對(duì)中間結(jié)果向量與帶符號(hào)零的加總執(zhí)行舍入運(yùn)算,以產(chǎn)生正確而符合IEEE標(biāo)準(zhǔn)的結(jié)果。此為浮點(diǎn)運(yùn)算設(shè)計(jì)的技術(shù)領(lǐng)域人員所能理解。

如前述,調(diào)整后的加法器50需要近路徑165來(lái)執(zhí)行某些類型的傳統(tǒng)累加運(yùn)算,但不需要近路徑165來(lái)執(zhí)行本文所述的FMA運(yùn)算。因此,在執(zhí)行本文所描述的FMA運(yùn)算類型時(shí),近路徑邏輯165會(huì)在FMA運(yùn)算的過(guò)程中維持休眠狀態(tài)以降低耗能。

第一與第二FMA子運(yùn)算

圖7至10顯示本發(fā)明利用一第一FMA子運(yùn)算(FMA1)與一第二FMA子運(yùn) 算(FMA2)執(zhí)行一不可分割分路乘積-累加運(yùn)算的方法的一實(shí)施例。其中,F(xiàn)MA2子運(yùn)算并非臨時(shí)性相接于FMA1子運(yùn)算,也不是物理性上相接于FMA2子運(yùn)算。

圖7顯示FMA1子運(yùn)算的一路徑確認(rèn)部分。在步驟408中,F(xiàn)MA1子運(yùn)算確認(rèn)EffSub變數(shù)。當(dāng)EffSub為二進(jìn)位數(shù)一,即顯示是否累加數(shù)運(yùn)算元與乘數(shù)運(yùn)算元的乘積的累加運(yùn)算會(huì)構(gòu)成一有效減法。在步驟411中,F(xiàn)MA1子運(yùn)算選擇性地對(duì)累加數(shù)運(yùn)算元執(zhí)行位反相的運(yùn)算。在步驟414中,F(xiàn)MA1子運(yùn)算計(jì)算ExpDelta。ExpDelta等于乘數(shù)與被乘數(shù)的指數(shù)的加總減去累加數(shù)的指數(shù)與一指數(shù)偏移。ExpDelta不只確認(rèn)乘數(shù)尾數(shù)與累加數(shù)尾數(shù)的相對(duì)對(duì)準(zhǔn)以供加法運(yùn)算之用,也會(huì)配合EffSub變數(shù)來(lái)確認(rèn)累加數(shù)運(yùn)算元的累加運(yùn)算是否將由FMA1子運(yùn)算執(zhí)行。

在步驟417中,F(xiàn)MA1子運(yùn)算確認(rèn)路徑控制信號(hào)Z。當(dāng)數(shù)值為二進(jìn)位數(shù)一,即表示有一個(gè)累加數(shù)運(yùn)算元的加總運(yùn)算,會(huì)利用調(diào)整后的乘法器45電路,在FMA1子運(yùn)算中執(zhí)行。在一實(shí)施例中,F(xiàn)MA1子運(yùn)算在ExpDelta大于或等于負(fù)一時(shí),將二進(jìn)位數(shù)一指派給Z,而在ExpSub為一且ExpDelta為負(fù)二時(shí),也會(huì)將二進(jìn)位數(shù)一指派給Z。其他的實(shí)施方式會(huì)以不同方式分割ExpDelat與EffSub的數(shù)字空間。

圖8是FMA1子運(yùn)算的乘法與條件累加部分的方塊示意圖。在步驟420中,F(xiàn)MA1子運(yùn)算選擇一累加路徑供累加運(yùn)算元使用。若是Z為二進(jìn)位數(shù)零,如步驟426所示,F(xiàn)MA1子運(yùn)算就會(huì)計(jì)算乘數(shù)運(yùn)算元的部分乘積的加總,而不加上累加數(shù)運(yùn)算元。另外,若是Z為二進(jìn)位數(shù)一,如步驟423所示,F(xiàn)MA1子運(yùn)算會(huì)調(diào)整選擇性互補(bǔ)累加數(shù)尾數(shù)的對(duì)準(zhǔn)值,其調(diào)整量為ExpDelta值的函數(shù)。就一實(shí)施例而言,此調(diào)整量等于ExpDelta加上一移位常數(shù)。

在步驟426/429中,F(xiàn)MA1子運(yùn)算執(zhí)行一第一累加運(yùn)算,其為(a)乘數(shù)和被乘數(shù)運(yùn)算元的部分乘積(即步驟426),或是(b)累加數(shù)運(yùn)算元與乘數(shù)和被乘數(shù) 運(yùn)算元的部分乘積(即步驟429)。在步驟432中,F(xiàn)MA1子運(yùn)算條件執(zhí)行一前導(dǎo)位預(yù)測(cè),來(lái)預(yù)測(cè)總數(shù)的最重要前導(dǎo)位所需要的消去。前導(dǎo)位預(yù)測(cè)的運(yùn)算限于類型1的FMA運(yùn)算75,并且會(huì)與步驟429中部分的加總運(yùn)算平行執(zhí)行。另外,前導(dǎo)位預(yù)測(cè)邏輯可連接至步驟426或步驟429以處理其運(yùn)算結(jié)果。

經(jīng)過(guò)步驟426或429,以及步驟432的執(zhí)行后,F(xiàn)MA1子運(yùn)算會(huì)產(chǎn)生一未經(jīng)舍入、非冗余的標(biāo)準(zhǔn)化加總結(jié)果145(如步驟435所示)。接下來(lái),F(xiàn)MA1子運(yùn)算會(huì)產(chǎn)生一儲(chǔ)存格式中間結(jié)果150(如步驟438所示)。一旦儲(chǔ)存格式中間結(jié)果150被儲(chǔ)存或分派至轉(zhuǎn)送總線40,F(xiàn)MA1子運(yùn)算就會(huì)終止,并釋放執(zhí)行FMA1子運(yùn)算的資源(例如作為調(diào)整后的乘法器45的指令執(zhí)行單元)給其他與FMA運(yùn)算無(wú)關(guān)的運(yùn)算使用。所屬技術(shù)領(lǐng)域人員當(dāng)可理解,此技術(shù)亦可同樣適用于可同時(shí)通過(guò)連續(xù)階段執(zhí)行多個(gè)運(yùn)算的管線乘法器。

圖9A與9B詳細(xì)說(shuō)明產(chǎn)生儲(chǔ)存格式中間結(jié)果150的程序。在步驟441中,F(xiàn)MA1子運(yùn)算確認(rèn)是否因累加數(shù)的累加運(yùn)算構(gòu)成有效減法,而存在待定的端回進(jìn)位校正。若是Z與EffSub均為二進(jìn)位數(shù)一(即類型1的FMA運(yùn)算75或是類型4的FMA運(yùn)算90),并且由步驟435所產(chǎn)生的未經(jīng)舍入非冗余的結(jié)果為正,F(xiàn)MA1子運(yùn)算就會(huì)將二進(jìn)位數(shù)一指派給變數(shù)E1。

在步驟444中,F(xiàn)MA1子運(yùn)算通過(guò)對(duì)尾數(shù)執(zhí)行位反相的運(yùn)算,而產(chǎn)生一原始尾數(shù)結(jié)果(germinal mantissa result,GMant)。若運(yùn)算結(jié)果為負(fù),就通過(guò)移位,將尾數(shù)標(biāo)準(zhǔn)化為一標(biāo)準(zhǔn)儲(chǔ)存格式。

在步驟447中,F(xiàn)MA1子運(yùn)算產(chǎn)生一中間結(jié)果符號(hào)位(IRSgn)。若是E為二進(jìn)位數(shù)零,而Z與EffSub均為二進(jìn)位數(shù)一,IRSgn就會(huì)是被乘數(shù)與乘數(shù)的符號(hào)位的反邏輯互斥或結(jié)果。否則,IRSgn就會(huì)是被乘數(shù)與乘數(shù)的符號(hào)位的邏輯互斥或結(jié)果。

在步驟453中,F(xiàn)MA1子運(yùn)算將SC加上乘數(shù)與被乘數(shù)的指數(shù)值加總,再減去ExpBias,以產(chǎn)生PNExp。

在步驟456中,F(xiàn)MA1子運(yùn)算通過(guò)減少PNExp來(lái)處理PNMant的標(biāo)準(zhǔn)化運(yùn)算,借以產(chǎn)生中間結(jié)果指數(shù)值(IRExp)。

在步驟459中,F(xiàn)MA1子運(yùn)算確認(rèn)中間不足位(U1)與中間溢位(O1)位。

在步驟462中,F(xiàn)MA1子運(yùn)算由原始尾數(shù)(GMant)的最重要位產(chǎn)生一中間結(jié)果尾數(shù)(IRMant)。

在步驟465中,F(xiàn)MA1子運(yùn)算將構(gòu)成中間結(jié)果向量IRVector的IRSgn、IRMant與IRExp,儲(chǔ)存至儲(chǔ)存空間,例如一重命名暫存器。

在步驟468中,F(xiàn)MA1子運(yùn)算會(huì)將GMant的LSBS與部分乘積加法器240的移出位(Xtrastky)縮減至舍入位(R1)與粘位(S1)。而在另一實(shí)施例中,還包含一保護(hù)位(G1)。

在步驟471中,F(xiàn)MA1子運(yùn)算將R1、S1、E1、Z、U1與O1位紀(jì)錄于舍入快取55,而在提供有G1位時(shí),也會(huì)一并記錄于舍入快取55。

圖10是一方塊圖顯示本發(fā)明不可分割分路FMA運(yùn)算的一第二FMA子運(yùn)算。

在步驟474中,F(xiàn)MA2子運(yùn)算接收先前儲(chǔ)存在例如重命名暫存器的儲(chǔ)存空間內(nèi)的中間結(jié)果向量IRVector。另外,F(xiàn)MA2子運(yùn)算亦可由轉(zhuǎn)送總線接收IRVector。

在步驟477中,F(xiàn)MA2子運(yùn)算接收先前儲(chǔ)存在例如舍入快取55的儲(chǔ)存空間內(nèi)的舍入位。另外,F(xiàn)MA2子運(yùn)算亦可由轉(zhuǎn)送總線接收舍入位。

在步驟480中,F(xiàn)MA2子運(yùn)算接收累加數(shù)輸入值。

在決定步驟483中,F(xiàn)MA2子運(yùn)算檢視步驟474所接收的Z位。若是Z位為二進(jìn)位數(shù)一(或真)表示累加數(shù)的加總運(yùn)算已經(jīng)由FMA1子運(yùn)算執(zhí)行,此流程就會(huì)前進(jìn)至步驟486。否則就會(huì)前進(jìn)至步驟489。

在步驟486中,F(xiàn)MA2子運(yùn)算將累加數(shù)輸入值的指數(shù)與尾數(shù)欄位調(diào)整為零。在一實(shí)施例中,F(xiàn)MA2子運(yùn)算并不調(diào)整輸入累加數(shù)的符號(hào)位。隨后在步 驟492中,此FMA2子運(yùn)算會(huì)將計(jì)算中間結(jié)果指數(shù)與一帶符號(hào)零運(yùn)算元的總數(shù)。接下來(lái)前進(jìn)至步驟494。

在步驟489中,F(xiàn)MA2子運(yùn)算計(jì)算中間結(jié)果指數(shù)與累加數(shù)的總數(shù)。接下來(lái)前進(jìn)至步驟494。

在步驟494中,F(xiàn)MA2子運(yùn)算利用FMA1子運(yùn)算產(chǎn)生的Z、U1、O1位以及FMA2子運(yùn)算產(chǎn)生的U2與O2位,從舍入位E1、E2、R1、R2、S1與S2中,選擇會(huì)用來(lái)對(duì)總數(shù)的尾數(shù)進(jìn)行正確舍入運(yùn)算的舍入位。

在步驟496中,F(xiàn)MA2子運(yùn)算利用選定的舍入位來(lái)對(duì)總數(shù)進(jìn)行正確的舍入運(yùn)算。此FMA2子運(yùn)算在執(zhí)行尾數(shù)舍入程序的同時(shí),選擇性地使IRExp遞增(步驟498)。如此,F(xiàn)MA2子運(yùn)算即可產(chǎn)生一最終經(jīng)舍入的結(jié)果。

圖7至10中所描述的部分步驟可不需圖示順序執(zhí)行。此外,第七至十圖中所描述的部分步驟亦可平行執(zhí)行。

運(yùn)算類型的應(yīng)用

此章節(jié)說(shuō)明前述應(yīng)用于圖2的五種不同運(yùn)算“類型”的各種變數(shù)數(shù)值間的功能性關(guān)聯(lián),尤其著重于PNMant的運(yùn)算、符號(hào)與標(biāo)準(zhǔn)化處理以及與各個(gè)數(shù)據(jù)類型相關(guān)的EffSub、ExpDelta、Z、E與IntSgn的數(shù)值。

第一類型

如圖2所示,類型1的FMA運(yùn)算75的特點(diǎn)在于,此運(yùn)算涉及一有效減法(因此,EffSub=1),而調(diào)整后的乘法器45被選定以執(zhí)行C的累加運(yùn)算(因此,Z=1),而C的大小相當(dāng)接近A和B的乘積(即-2<=ExpDelta<=1)而會(huì)造成塊消去的產(chǎn)生。

因?yàn)槔奂舆\(yùn)算將會(huì)于調(diào)整后的乘法器45內(nèi)執(zhí)行而造成有效減法(即EffSub=1且Z=1),累加數(shù)對(duì)準(zhǔn)與射入模組220會(huì)在將累加數(shù)運(yùn)算元尾數(shù)值CM射入部分乘積加法器240前,對(duì)累加數(shù)運(yùn)算元尾數(shù)值CM造成與/或選擇一位反相運(yùn)算。相對(duì)于部分乘積,此累加數(shù)對(duì)準(zhǔn)與射入模組220會(huì)利用ExpDelta,來(lái) 對(duì)準(zhǔn)部分乘積加法器240內(nèi)的累加數(shù)尾數(shù)。

隨后,對(duì)于未經(jīng)舍入的非冗余數(shù)值145(即PNMant)的完整加總運(yùn)算依照傳統(tǒng)乘法執(zhí)行單元通常采用的方法來(lái)執(zhí)行,此執(zhí)行包含部分乘積的加總運(yùn)算內(nèi),額外被選擇性位求與相對(duì)準(zhǔn)的累加數(shù)輸入值。因而PNMant即可以1’補(bǔ)數(shù)的形式,表示乘數(shù)與被乘數(shù)尾數(shù)值以及累加數(shù)尾數(shù)值間的算數(shù)差。

PNMant可為正或負(fù)。若是PNMane為正就需要端回進(jìn)位,而等待中的端回進(jìn)位指標(biāo)E1就會(huì)被指派為二進(jìn)位數(shù)一。若是PNMant為負(fù)就不需要端回進(jìn)位,而E1就會(huì)被指派為二進(jìn)位數(shù)零。E1被指派的值不僅為PNMant的函數(shù),亦為Z與EffSub的值的函數(shù),而在類型1的運(yùn)算75中,Z與EffSub會(huì)是二進(jìn)位數(shù)一。

在部分乘積與累加數(shù)輸入加總運(yùn)算的同時(shí),也會(huì)執(zhí)行前導(dǎo)位預(yù)測(cè)來(lái)對(duì)任何最重要前導(dǎo)位需要的任何消去進(jìn)行預(yù)測(cè)。如前述,于本發(fā)明一實(shí)施例中,此運(yùn)算由一與最終加法器125并行的電路,于執(zhí)行PNMant的加總運(yùn)算時(shí)執(zhí)行。

如浮點(diǎn)運(yùn)算設(shè)計(jì)的技術(shù)領(lǐng)域人員所能理解,即使沒(méi)有發(fā)生前導(dǎo)位的相減消去,可能還是需要對(duì)PNMant執(zhí)行一個(gè)零、一或二位位置的標(biāo)準(zhǔn)化運(yùn)算,利用SC至PNExp來(lái)使其對(duì)準(zhǔn)于所需的儲(chǔ)存格式,以供本發(fā)明描述與使用的中間結(jié)果150之用。若存在塊消去,顯然就會(huì)需要更多的移位運(yùn)算。同樣地,若是PNMant為負(fù),就會(huì)對(duì)此數(shù)值執(zhí)行位反相的運(yùn)算。對(duì)PNMant執(zhí)行選擇性標(biāo)準(zhǔn)化與位反相運(yùn)算用以產(chǎn)生原始尾數(shù)值GMant,其最重要m位變成中間結(jié)果尾數(shù)IRMant。

中間結(jié)果符號(hào)IRSgn不是被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的邏輯XOR運(yùn)算結(jié)果,就是其邏輯NXOR運(yùn)算結(jié)果,端視E1的數(shù)值而定。若是E1為二進(jìn)位數(shù)一,IRSgn會(huì)被計(jì)算為被乘數(shù)符號(hào)位與乘數(shù)符號(hào)位的邏輯XOR運(yùn)算結(jié)果。若是E1為二進(jìn)位數(shù)零,IRSgn就會(huì)被計(jì)算為被乘數(shù)符號(hào)位與乘數(shù)符號(hào)位的邏 輯XOR運(yùn)算結(jié)果。

回到FMA2運(yùn)算,調(diào)整后的加法器50會(huì)接收包含路徑控制信號(hào)Z在內(nèi)的已儲(chǔ)存或轉(zhuǎn)送的舍入位,因?yàn)閆為1,中間結(jié)果向量IRVector需要執(zhí)行舍入運(yùn)算,而會(huì)對(duì)最終的乘積-累加結(jié)果產(chǎn)生些微調(diào)整。在一實(shí)施例中,調(diào)整后的加法器50將中間結(jié)果向量IRVector與一零運(yùn)算元(或是在另一實(shí)施例中,一帶符號(hào)二進(jìn)位數(shù)零的運(yùn)算元)加總,而非與所提供的第二運(yùn)算元,即累加數(shù)C,做加總運(yùn)算。

在最后的執(zhí)行步驟中,調(diào)整后的加法器50會(huì)在加總運(yùn)算與完成舍入運(yùn)算前對(duì)接收到的IRExp進(jìn)行調(diào)整,以涵蓋較大的數(shù)字范圍,例如可涵蓋FMA運(yùn)算的目標(biāo)數(shù)據(jù)類型的不足位與溢位指數(shù)范圍。在接收到的數(shù)值Z=1位時(shí),調(diào)整后的加法器50會(huì)以采取一個(gè)使IRExp遞增、而大部分均為傳統(tǒng)方式的方法,利用所接收到的R、S、U、O與E位來(lái)對(duì)IRVector執(zhí)行舍入運(yùn)算。

第二類型

如圖2所示,類型2的FMA運(yùn)算80的特點(diǎn)在于,此運(yùn)算不涉及有效減法(因此,EffSub=0),調(diào)整后的乘法器45被選定以執(zhí)行C的累加運(yùn)算(因此,Z=1),而相較于A和B的乘積,C的大小相當(dāng)小。

因?yàn)榇诉\(yùn)算不會(huì)造成有效減法(即EffSub=0),累加數(shù)對(duì)準(zhǔn)與射入邏輯220就不會(huì)在將累加數(shù)運(yùn)算元尾數(shù)值CM射入部分乘積加法器240前,對(duì)累加數(shù)運(yùn)算元尾數(shù)值CM造成與/或選擇一位反相運(yùn)算。

累加數(shù)對(duì)準(zhǔn)與射入模組220利用ExpDelta來(lái)使累加數(shù)尾數(shù)對(duì)準(zhǔn)部分乘積,以將累加數(shù)尾數(shù)射入部分乘積加法器240。

在此將不會(huì)產(chǎn)生負(fù)的PNMant。此外,所產(chǎn)生的正的PNMant并非1’補(bǔ)數(shù)的減法運(yùn)算的結(jié)果,因而不需端回進(jìn)位校正。因此,等待中的端回進(jìn)位指標(biāo)E1就會(huì)被指派為二進(jìn)位數(shù)零。

因?yàn)椴⒎且挥行p法運(yùn)算,此運(yùn)算中將不會(huì)產(chǎn)生前導(dǎo)位的減法塊消去, 因而不需執(zhí)行前導(dǎo)位預(yù)測(cè)來(lái)預(yù)測(cè)此等消去。反之,前導(dǎo)位預(yù)測(cè)則可用以依據(jù)SC至PNExp的貢獻(xiàn)程度,來(lái)預(yù)測(cè)所需的0、1、或2位位置的標(biāo)準(zhǔn)化運(yùn)算。

如同浮點(diǎn)運(yùn)算設(shè)計(jì)的技術(shù)領(lǐng)域人員所能理解,A和B乘積與C的加總會(huì)產(chǎn)生一具有算術(shù)顯著性或比重、較乘數(shù)與被乘數(shù)的乘積大于一數(shù)位位置的溢位情形,因此需要對(duì)PNMant執(zhí)行零、一或二位位置的標(biāo)準(zhǔn)化運(yùn)算,來(lái)使數(shù)值對(duì)準(zhǔn)用于本發(fā)明所描述與利用的中間結(jié)果的儲(chǔ)存格式。此標(biāo)準(zhǔn)化運(yùn)算會(huì)產(chǎn)生原始尾數(shù)值GMant,而其最重要m位會(huì)成為中間結(jié)果尾數(shù)IRMant。

預(yù)標(biāo)準(zhǔn)化指數(shù)PNExp通過(guò)將輸入的乘數(shù)與被乘數(shù)指數(shù)值相加,再減去任何指數(shù)偏移值,最后再加上SC=2,此數(shù)值于Z=1的情況合下依據(jù)最負(fù)的ExpDelta而定。如圖2對(duì)于類型2的運(yùn)算的描述可知,C的大小并不會(huì)明顯大于A和B的乘積,因此,所造成的總數(shù)會(huì)等于或大于所輸入的累加數(shù)。

因?yàn)榇诉\(yùn)算并非有效減法(即EffSub=0),中間結(jié)果符號(hào)IRSgn視為被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的XOR邏輯運(yùn)算結(jié)果。

回到FMA2運(yùn)算,調(diào)整后的加法器50會(huì)接收包含路徑控制信號(hào)Z的已儲(chǔ)存或轉(zhuǎn)送的舍入位。因?yàn)閆是二進(jìn)位數(shù)一,中間結(jié)果向量IRVector只需要一些最后處理,主要就是舍入運(yùn)算,即可產(chǎn)生最終的乘積-累加結(jié)果。在一實(shí)施例中,此調(diào)整后的加法器50將中間結(jié)果向量IRVector與一零運(yùn)算元(在另一實(shí)施例中,可為一帶符號(hào)二進(jìn)位數(shù)零運(yùn)算元)做加總,而非與所提供的第二運(yùn)算元,即累加數(shù)C,做加總運(yùn)算。

在最后的執(zhí)行步驟中,調(diào)整后的加法器50會(huì)對(duì)接收到的IRExp進(jìn)行調(diào)整,以涵蓋較大的數(shù)字范圍,例如可涵蓋FMA運(yùn)算的目標(biāo)數(shù)據(jù)類型的不足位與溢位指數(shù)范圍。此調(diào)整后的加法器50會(huì)以采取一個(gè)使IRExp遞增、而大部分均為傳統(tǒng)方式的方法,來(lái)對(duì)IRVector執(zhí)行舍入運(yùn)算以產(chǎn)生最終的正確結(jié)果。

第三類型

如圖2所示,類型3的FMA運(yùn)算85的特點(diǎn)在于,此運(yùn)算不涉及有效減法 (因此,EffSub=0),調(diào)整后的加法器50被選定以執(zhí)行C的累加運(yùn)算(因此,Z=0),而相較于A和B的乘積,C的大小相當(dāng)大。

因此,EffSub為二進(jìn)位數(shù)零。此外,路徑控制信號(hào)Z亦為二進(jìn)位數(shù)零,以顯示累加數(shù)運(yùn)算元的加總運(yùn)算尚未執(zhí)行。因?yàn)閆與EffSub均為二進(jìn)位數(shù)零,等待中的端回進(jìn)位指標(biāo)E1會(huì)被指派為二進(jìn)位數(shù)零。

因?yàn)閆是二進(jìn)位數(shù)零,累加數(shù)對(duì)準(zhǔn)與射入邏輯220不會(huì)將乘數(shù)單元部分乘積加總數(shù)內(nèi)的累加數(shù)輸入的尾數(shù)進(jìn)行對(duì)準(zhǔn)。不過(guò),累加數(shù)對(duì)準(zhǔn)與射入邏輯220會(huì)使此對(duì)準(zhǔn)輸入的算術(shù)值為零。

隨后,對(duì)于部分乘積與未經(jīng)舍入的非冗余數(shù)值145的完整加總運(yùn)算依照傳統(tǒng)乘法執(zhí)行單元通常采用的方法來(lái)執(zhí)行,此方法不包含輸入累加數(shù)的尾數(shù)值。因?yàn)榇薋MA運(yùn)算類并非有效減法(即EffSub=0),此加總運(yùn)算將不會(huì)產(chǎn)生正的PNMant,并由SumSgn表示。此外,此正值的PNMant并非1’補(bǔ)數(shù)減法運(yùn)算的結(jié)果,因而不需要使用端回進(jìn)位校正。

因?yàn)榇诉\(yùn)算并非一有效減法運(yùn)算,此運(yùn)算中將不會(huì)發(fā)生前導(dǎo)位的減法塊消去,因而不需執(zhí)行前導(dǎo)位預(yù)測(cè)來(lái)預(yù)測(cè)此等消去。

A和B的乘積會(huì)在乘數(shù)與被乘數(shù)的尾數(shù)乘積產(chǎn)生一位數(shù)位置的算術(shù)溢位。因而需要對(duì)此正的未經(jīng)舍入非冗余值執(zhí)行零或一位位置的標(biāo)準(zhǔn)化運(yùn)算,來(lái)使此數(shù)值對(duì)準(zhǔn)本發(fā)明所描述或使用的中間結(jié)果格式。此標(biāo)準(zhǔn)化運(yùn)算會(huì)產(chǎn)生原始尾數(shù)值GMant,而其最重要m位會(huì)成為中間結(jié)果尾數(shù)IRMant。

因?yàn)槭孪却_認(rèn)的路徑控制信號(hào)Z為二進(jìn)位數(shù)零,顯示累加運(yùn)算尚未被執(zhí)行,此中間結(jié)果符號(hào)IRSgn就會(huì)被視為被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的XOR邏輯運(yùn)算結(jié)果。

回到FMA2運(yùn)算,調(diào)整后的加法器50接收包含Z在內(nèi)的已儲(chǔ)存或轉(zhuǎn)送的舍入位。因?yàn)閆為二進(jìn)位數(shù)零,調(diào)整后的加法器50會(huì)使中間結(jié)果向量,即第一運(yùn)算元,與累加數(shù)C,即第二運(yùn)算元,做加總運(yùn)算。

在執(zhí)行此累加運(yùn)算之前,此調(diào)整后的加法器50可調(diào)整IRExp以涵蓋較大的數(shù)字范圍,例如可涵蓋FMA運(yùn)算的目標(biāo)數(shù)據(jù)類型的不足位與溢位指數(shù)范圍。因?yàn)榇诉\(yùn)算是由累加數(shù)數(shù)值主導(dǎo)運(yùn)算結(jié)果的類型3的運(yùn)算85,IRExp將會(huì)比累加數(shù)輸入指數(shù)值來(lái)的小。

此運(yùn)算有利于使調(diào)整后的加法器50的遠(yuǎn)路徑加總運(yùn)算的二個(gè)運(yùn)算元生效。在遠(yuǎn)路徑加總運(yùn)算中,具有較小指數(shù)值的運(yùn)算元的尾數(shù)于對(duì)準(zhǔn)程序中向右移位。任何如此移位超過(guò)所需舍入位的尾數(shù)位就會(huì)被用于舍入運(yùn)算。因?yàn)槔奂訑?shù)會(huì)主導(dǎo)運(yùn)算結(jié)果,因而可以不用提供位給舍入運(yùn)算,而能簡(jiǎn)化必要的舍入運(yùn)算。

調(diào)整后的加法器50會(huì)使用由調(diào)整后的加法器50所執(zhí)行的部分運(yùn)算所產(chǎn)生的G2(如果有的話)、R2、S2與E2(具有二進(jìn)位數(shù)值零)舍入位,連同R1、S1與E1,來(lái)對(duì)中間結(jié)果與累加數(shù)輸入值的總數(shù)進(jìn)行舍入運(yùn)算,以產(chǎn)生FMA運(yùn)算的最終經(jīng)舍入的正確結(jié)果,此為熟習(xí)浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域技術(shù)人員所能理解。

第四類型

如圖2所示,類型4的FMA運(yùn)算90的特點(diǎn)在于,此運(yùn)算涉及有效減法(因此,EffSub=1),調(diào)整后的乘法器45被選定以執(zhí)行C的累加運(yùn)算(因此,Z=1),而相較于A和B的乘積,C的大小相當(dāng)小。

因?yàn)槔奂舆\(yùn)算將會(huì)于調(diào)整后的乘法器45內(nèi)執(zhí)行而造成有效減法(即EffSub=1且Z=1),累加數(shù)對(duì)準(zhǔn)與射入模組220會(huì)在將累加數(shù)運(yùn)算元尾數(shù)值CM射入部分乘積加法器240前,對(duì)累加數(shù)運(yùn)算元尾數(shù)值CM造成與/或選擇一位反相運(yùn)算。相對(duì)于部分乘積,此累加數(shù)對(duì)準(zhǔn)與射入模組220會(huì)利用ExpDelta,來(lái)對(duì)準(zhǔn)部分乘積加法器240內(nèi)的累加數(shù)尾數(shù)。

因?yàn)锳和B的乘積的大小明顯大于C,此運(yùn)算中將不會(huì)發(fā)生前導(dǎo)位的減法塊消去,因而不需執(zhí)行前導(dǎo)位預(yù)測(cè)來(lái)預(yù)測(cè)此等消去。

此外,加總程序會(huì)產(chǎn)生正的PNMant。因此,待定的端回進(jìn)位指標(biāo)E1會(huì)被指派為二進(jìn)位數(shù)一,之后會(huì)通知調(diào)整后的加法器50還需要對(duì)中間結(jié)果尾數(shù)執(zhí)行端回進(jìn)位校正。

如同浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域具有合理技術(shù)人員所能理解,PNMant可能需要依據(jù)所提供的SC至PNExp,執(zhí)行零、一或二位位置的移位或標(biāo)準(zhǔn)化運(yùn)算,使其對(duì)準(zhǔn)于本發(fā)明所述或使用的中間結(jié)果所需的儲(chǔ)存格式。隨后,此標(biāo)準(zhǔn)化運(yùn)算會(huì)選擇性地執(zhí)行于此未經(jīng)舍入的非冗余值,以產(chǎn)生原始尾數(shù)值GMant,其最重要著m位會(huì)成為中間結(jié)果尾數(shù)IRMant。

因?yàn)轭愋?的運(yùn)算90涉及C的加總運(yùn)算(即Z=1),而此加總運(yùn)算會(huì)構(gòu)成有效減法(即EffSub=1),在需要端回進(jìn)位(即E1為1)的情況合下產(chǎn)生正的PNMant,中間結(jié)果符號(hào)IRSgn會(huì)被視為被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的XOR邏輯運(yùn)算結(jié)果。

回到FMA2運(yùn)算,調(diào)整后的加法器50接收包含路徑控制信號(hào)Z在內(nèi)的已儲(chǔ)存或轉(zhuǎn)送的舍入位。因?yàn)閆為1,中間結(jié)果向量IRVector只需一些最后處理,主要就是舍入運(yùn)算,即可產(chǎn)生最終的乘積-累加結(jié)果。在一實(shí)施例中,此調(diào)整后的加法器50將中間結(jié)果向量IRVector與一零運(yùn)算元(在另一實(shí)施例中,可為一帶符號(hào)二進(jìn)位數(shù)零運(yùn)算元)做加總,而非與所提供的第二運(yùn)算元,即累加數(shù)C,做加總運(yùn)算。

在執(zhí)行零(或二進(jìn)位數(shù)帶符號(hào)零)的累加運(yùn)算前,調(diào)整后的加法器會(huì)調(diào)整IRExp以涵蓋較大的數(shù)字范圍,例如可涵蓋FMA運(yùn)算的目標(biāo)數(shù)據(jù)類型的不足位與溢位指數(shù)范圍。

響應(yīng)儲(chǔ)存格式中間結(jié)果150內(nèi)所接收的E位二進(jìn)位數(shù)值,此運(yùn)算需要依據(jù)第一微指令執(zhí)行過(guò)程中執(zhí)行的1’補(bǔ)數(shù)有效減法產(chǎn)生端回進(jìn)位校正。因此,此E位連同儲(chǔ)存格式中間結(jié)果150的G1(如果有的話)、R1與S1位,做為調(diào)整后的加法器50執(zhí)行單元的調(diào)整后的舍入邏輯的補(bǔ)充輸入。

隨后,此調(diào)整后的舍入邏輯利用G1(如果存在的話)、R1、S1與E1補(bǔ)充輸入來(lái)計(jì)算中間結(jié)果向量與帶符號(hào)零的加總的正確舍入,以對(duì)類型4的FMA運(yùn)算產(chǎn)生正確的運(yùn)算結(jié)果。而此技術(shù)當(dāng)為熟習(xí)浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域的技術(shù)人員所能理解。

第五類型

如圖2所示,類型5的FMA運(yùn)算的特點(diǎn)在于,此運(yùn)算涉及有效減法(因此,EffSub=1),調(diào)整后的加法器50被選定以執(zhí)行C的累加運(yùn)算(因此,Z=0),而相較于A和B的乘積,C的大小相當(dāng)大。

因?yàn)槔奂舆\(yùn)算不會(huì)于調(diào)整后的乘法器45內(nèi)執(zhí)行,累加數(shù)對(duì)準(zhǔn)與射入邏輯220不會(huì)對(duì)準(zhǔn)部分乘積加總數(shù)內(nèi)的CX,或是使此對(duì)準(zhǔn)輸入的算術(shù)值為零。此調(diào)整后的乘法器45依據(jù)現(xiàn)有技術(shù)的乘法執(zhí)行單元的常用方法來(lái)執(zhí)行部分乘積與PNMant的完整加總運(yùn)算。

因?yàn)橐褕?zhí)行C的加總運(yùn)算,此運(yùn)算中將不會(huì)發(fā)生前導(dǎo)位的減法塊消去,因而不需執(zhí)行前導(dǎo)位預(yù)測(cè)來(lái)預(yù)測(cè)此等消去。此外,雖然會(huì)產(chǎn)生正的PNMant,此數(shù)值并非1’補(bǔ)數(shù)減法的運(yùn)算結(jié)果。因此,此運(yùn)算不需要端回進(jìn)位校正,而E1會(huì)被指派為二進(jìn)位數(shù)零。

如同熟習(xí)浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域的技術(shù)人員所能理解,PNMant可能需要依據(jù)所提供的SC至PNExp,執(zhí)行零、一或二位位置的移位或標(biāo)準(zhǔn)化運(yùn)算,使其對(duì)準(zhǔn)于中間結(jié)果150所需的儲(chǔ)存格式。此標(biāo)準(zhǔn)化運(yùn)算會(huì)產(chǎn)生原始尾數(shù)值GMant,其最重要m位會(huì)成為中間結(jié)果尾數(shù)IRMant。

因?yàn)轭愋?的運(yùn)算不涉及C的加總運(yùn)算(即Z=0),中間結(jié)果符號(hào)IRSgn會(huì)被視為被乘數(shù)符號(hào)位AS與乘數(shù)符號(hào)位BS的XOR邏輯運(yùn)算結(jié)果。

回到FMA2運(yùn)算,調(diào)整后的加法器50接收包含Z在內(nèi)的已儲(chǔ)存或轉(zhuǎn)送的舍入位。因?yàn)閆為0,中間結(jié)果向量IRVector需要與累加數(shù)C加總以產(chǎn)生最終的乘積-累加運(yùn)算結(jié)果。

因?yàn)轭愋?的運(yùn)算由累加數(shù)值主導(dǎo)運(yùn)算結(jié)果,IRExp會(huì)小于累加數(shù)輸入指數(shù)值,此運(yùn)算有利于使調(diào)整后的加法器50的遠(yuǎn)路徑加總運(yùn)算的二個(gè)運(yùn)算元生效。在遠(yuǎn)路徑加總運(yùn)算中,具有較小指數(shù)值的運(yùn)算元的尾數(shù)于對(duì)準(zhǔn)程序中向右移位,任何如此移位超過(guò)所需舍入位的尾數(shù)位就會(huì)被用于舍入運(yùn)算。因?yàn)槔奂訑?shù)會(huì)主導(dǎo)運(yùn)算結(jié)果,因而可以不用提供位給舍入運(yùn)算,而能簡(jiǎn)化必要的舍入運(yùn)算。

因?yàn)橛蓛?chǔ)存格式中間結(jié)果150接收的待執(zhí)行端回進(jìn)位指標(biāo)E1是二進(jìn)位數(shù)零,因此,F(xiàn)MA1運(yùn)算沒(méi)有留下任何待執(zhí)行的端回進(jìn)位校正。是以,E1位連同儲(chǔ)存格式中間結(jié)果150的R1與S1位,以及G1位(如果存在的話),做為調(diào)整后的加法器50執(zhí)行單元的調(diào)整后的舍入位的補(bǔ)充輸入。

然而,由調(diào)整后的加法器50所執(zhí)行的累加運(yùn)算可能會(huì)另外導(dǎo)致1’補(bǔ)數(shù)有效減法的產(chǎn)生。如此,調(diào)整后的舍入邏輯即可產(chǎn)生包含端回進(jìn)位在內(nèi)的舍入位,來(lái)計(jì)算出中間結(jié)果向量與累加器輸入值的加總的正確舍入值,以產(chǎn)生FMA運(yùn)算的正確結(jié)果。而此技術(shù)當(dāng)為熟習(xí)浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域的技術(shù)人員所能理解。

特定微指令

在本發(fā)明的另一個(gè)面向中,轉(zhuǎn)譯器與/或微碼只讀存儲(chǔ)器(ROM)20用以將FMA指令轉(zhuǎn)譯或轉(zhuǎn)換為第一與第二特定微指令,分別由乘法與加法單元執(zhí)行。舉例來(lái)說(shuō),第一(或更多)特定微指令可以在一類似于將傳統(tǒng)乘法單元進(jìn)行最小限度的調(diào)整,以符合所述目的的乘法執(zhí)行單元內(nèi)執(zhí)行。而第二(或更多)特定微指令可以在一類似于將傳統(tǒng)家法單元進(jìn)行最小限度的調(diào)整,以符合所述目的的加法執(zhí)行單元內(nèi)執(zhí)行。

圖11顯示本發(fā)明將融合FMA指令535通過(guò)FMA指令轉(zhuǎn)譯或轉(zhuǎn)換,產(chǎn)生第一與第二特定微指令553與571的一實(shí)施例。就一未受限的范例而言,此融合FMA指令535包含一指令操作碼欄538、一目標(biāo)欄541、一第一運(yùn)算元(被乘 數(shù))欄544、一第二運(yùn)算元(乘數(shù))欄547、與一第三運(yùn)算元(累加數(shù))欄550。

依據(jù)操作碼欄538的指示,此FMA運(yùn)算可為一乘-加(multiply-add)、一乘-減(multiply-subtract)、一負(fù)乘-加(negative multiply-add)、或一負(fù)乘-減(negative multiply-subtract)指令。如同存在許多不同類型的FMA指令535,也會(huì)存在許多類型的第一特定微指令553,如乘-加、乘-減、負(fù)乘-加、或負(fù)乘-減微指令。這些類型的特征,如果有的話,會(huì)反映在相關(guān)的微指令553的操作碼欄556中。

第一特定微指令553會(huì)引導(dǎo)第一至第五類型的FMA運(yùn)算所需的部分算術(shù)運(yùn)算的實(shí)行。依據(jù)類型的不同,第一特定微指令553所執(zhí)行的特殊運(yùn)算亦有差異。第一特定微指令553分配給第一執(zhí)行單元,例如前文所述的調(diào)整后的乘法器45。

第二特定微指令571會(huì)引導(dǎo)第一至第五類型的FMA運(yùn)算所需的剩余算術(shù)運(yùn)算的實(shí)行。依據(jù)類型的不同,第二特定微指令571所執(zhí)行的特殊運(yùn)算亦有差異。在本實(shí)施例中,第二特定微指令571分配給第二執(zhí)行單元,例如前文所述的調(diào)整后的加法器50。為了方便浮點(diǎn)乘-加融合運(yùn)算或浮點(diǎn)乘-減融合運(yùn)算的實(shí)行,此第二特定微指令571可具有一子類型,例如加或減。

尤其是,此第一特定微指令553會(huì)將第一、第二與第三輸入運(yùn)算元544、547與550,分別特定為被乘數(shù)運(yùn)算元A、乘數(shù)運(yùn)算元B與累加數(shù)運(yùn)算元C。此第一特定微指令還可以特定一目標(biāo)欄559,指向暫時(shí)暫存器。又或者,此目標(biāo)暫存器559可為隱含者。

第一特定微指令553會(huì)引導(dǎo)FMA1子運(yùn)算執(zhí)行,即A和B的部分乘積與在某些條件下與C的加總,以產(chǎn)生未經(jīng)舍入的儲(chǔ)存格式中間結(jié)果150。此第一特定微指令553也會(huì)引導(dǎo)變數(shù)EffSub與ExpDelta的確認(rèn)動(dòng)作,借以對(duì)一組預(yù)先確定的EffSub與ExpDelta值,產(chǎn)生指派給Z位的數(shù)值二進(jìn)位數(shù)一。此數(shù)值會(huì)依序控制許多相關(guān)程序。

二進(jìn)位數(shù)一的Z位指出此對(duì)累加數(shù)位的加總運(yùn)算將會(huì)于第一運(yùn)算中執(zhí) 行,而不須由第二微指令來(lái)執(zhí)行。隨后,此Z位的指定與ExpDelta會(huì)用于使部分乘積加法器240內(nèi)被選擇性互補(bǔ)累加數(shù)尾數(shù)進(jìn)行對(duì)準(zhǔn),此部分乘積加法器240經(jīng)適當(dāng)調(diào)整使能接收此額外事項(xiàng)。

第一特定微指令553并引導(dǎo)一完整加總運(yùn)算對(duì)此未經(jīng)舍入的非冗余值(PNMant)執(zhí)行。此完整加總運(yùn)算依據(jù)傳統(tǒng)乘法執(zhí)行單元的通常方法,但在部分乘積的加總運(yùn)算中,納入額外的選擇性位反相、已對(duì)準(zhǔn)的累加數(shù)輸入值CM或若是PNum為負(fù),此條件就會(huì)由信號(hào)SumSgn表示。

第一特定微指令553并引導(dǎo)PNMant的移位與位反相運(yùn)算,以產(chǎn)生一原始尾數(shù)值(GMant),接下來(lái)會(huì)執(zhí)行GMant的縮減以產(chǎn)生儲(chǔ)存格式中間結(jié)果150的中間結(jié)果尾數(shù)(IMant)。因此,此中間結(jié)果尾數(shù)IMant會(huì)是此EffSub指定的運(yùn)算所產(chǎn)生的1’補(bǔ)數(shù)算術(shù)差的標(biāo)準(zhǔn)化絕對(duì)值,但不執(zhí)行任何端回進(jìn)位校正。

第一特定微指令553并引導(dǎo)中間結(jié)果指數(shù)值的運(yùn)算。首先依據(jù)Z為二進(jìn)位數(shù)一時(shí),ExpDelta的最負(fù)值,產(chǎn)生一預(yù)標(biāo)準(zhǔn)化指數(shù)值(PNExp),其數(shù)值等于被乘數(shù)指數(shù)AE與乘數(shù)指數(shù)BE的加總、減去指數(shù)偏移值ExpBias、再加上一移位常數(shù)SC。然后,從PNExp的數(shù)值減去由標(biāo)準(zhǔn)化移位器130執(zhí)行的尾數(shù)標(biāo)準(zhǔn)化運(yùn)算所占據(jù)的量,以產(chǎn)生中間結(jié)果指數(shù)值(IRExp)。

第一特定微指令553并引導(dǎo)中間結(jié)果符號(hào)IRSgn的運(yùn)算。此中間結(jié)果符號(hào)IRSgn,連同中間結(jié)果尾數(shù)IRMant與中間結(jié)果指數(shù)IRExp,構(gòu)成儲(chǔ)存格式中間結(jié)果150的向量IRVector。

第一特定微指令553并會(huì)產(chǎn)生包含Z在內(nèi)的許多舍入位。GMant未納入中間結(jié)果尾數(shù)的最不重要位會(huì)被縮減至由舍入(R)與粘(S)位表示,而在一實(shí)施例中,還包含保護(hù)(G)位。若是部分乘積加法器240已經(jīng)將C與A和B的乘積累加,并且此運(yùn)算是產(chǎn)生一正的PNMant值的一有效減法而,端回進(jìn)位(end-around-carry bit)E就會(huì)被指派為二進(jìn)位數(shù)一,以顯示需要執(zhí)行端回進(jìn)位。此第一特定微指令并會(huì)使中間不足位(U)與中間溢位(O)位被確認(rèn)。

最后,在一實(shí)施例中,第一特定微指令553會(huì)使儲(chǔ)存格式中間結(jié)果150向量IRVector儲(chǔ)存于存儲(chǔ)器,在另一實(shí)施例會(huì)使其轉(zhuǎn)送,而在又一實(shí)施例,則會(huì)使其同時(shí)儲(chǔ)存與轉(zhuǎn)送。相同地,在一實(shí)施例中,第一特定微指令553會(huì)使舍入位儲(chǔ)存于存儲(chǔ)器,在另一實(shí)施例中會(huì)使其轉(zhuǎn)送,而在又一實(shí)施例中,則會(huì)使其同時(shí)儲(chǔ)存與轉(zhuǎn)送。如此可使負(fù)責(zé)執(zhí)行第一特定微指令的執(zhí)行單元,在執(zhí)行第一FMA微指令后而在執(zhí)行第二微指令前,執(zhí)行其他與FMA運(yùn)算無(wú)關(guān)的運(yùn)算。

第二特定微指令571提供一操作碼574并分別特定第一與第二輸入加法器運(yùn)算元580與583。第二特定微指令571會(huì)促使FMA2運(yùn)算執(zhí)行。若是C的累加并非由第一特定微指令553造成,此運(yùn)算還包含C與中間結(jié)果尾數(shù)的條件累加。第二特定微指令571并會(huì)產(chǎn)生FMA運(yùn)算的最終舍入后結(jié)果。

第一累加數(shù)運(yùn)算元580將第一特定微指令553所產(chǎn)生的乘積作為其數(shù)值,第二累加數(shù)運(yùn)算元583將第一特定微指令所指定的相同累加數(shù)值作為其數(shù)值。在一實(shí)施例中,第二特定微指令571的源運(yùn)算元欄580指向與第一特定微指令553的目標(biāo)欄599相同的暫存器。第二特定微指令571并特定一目標(biāo)暫存器577,在一實(shí)施例中,此目標(biāo)暫存器與FMA指令535的目標(biāo)欄541為同一個(gè)暫存器。

結(jié)論

雖然此實(shí)施方式在有效減法時(shí)提供1’補(bǔ)數(shù)的累加運(yùn)算,熟習(xí)算術(shù)或浮點(diǎn)運(yùn)算設(shè)計(jì)領(lǐng)域的技術(shù)人員當(dāng)可理解,在另一實(shí)施方式中,在有效減法時(shí)利用本發(fā)明的方法來(lái)使用2’補(bǔ)數(shù)的累加運(yùn)算。

本發(fā)明具有許多優(yōu)點(diǎn)。本發(fā)明相容于IEEE,并提供其他實(shí)施方式明顯無(wú)法提供的校正給所需的FMA算術(shù)結(jié)果,尤其是響應(yīng)IEEE舍入運(yùn)算的要求。

本發(fā)明通過(guò)維持可分別取用的乘法器與加法器單元,最大化供指令分配的各自獨(dú)立算術(shù)功能單元的可用性,而讓計(jì)算機(jī)處理器在一定實(shí)施成本下, 可以更充分地開發(fā)指令平行處理。換言之,本發(fā)明讓最少的硬件達(dá)到最大可能性的同步利用,使其能以最快速度完成預(yù)期中最頻繁的運(yùn)算,此處理方式可改善算數(shù)運(yùn)算結(jié)果的產(chǎn)出。通過(guò)將所需的特定類型的第一與第二(或更多)微指令進(jìn)行分配,并使其以暫時(shí)性與/或物理性各自獨(dú)立的方式分別執(zhí)行,因此,雖然此等用于FMA的第一微指令會(huì)被分配至乘法功能單元執(zhí)行,第二或其他更多無(wú)關(guān)的微指令則可同時(shí)被分配至一個(gè)或多個(gè)加法功能單元。

同樣地,雖然此等用于FMA的第二微指令會(huì)配分配至功能方塊單元,任何需要乘法功能的其他無(wú)關(guān)的微指令則可同時(shí)被分配至乘法功能單元。

如此,依據(jù)所需的整體效能與所需的系統(tǒng)指令平行處理能力,所提供的乘法與加法功能單元的數(shù)量可更具彈性。因而相較于一個(gè)整體的FMA硬件,可減少每個(gè)功能單元的設(shè)置成本。計(jì)算機(jī)系統(tǒng)重排微指令的能力也會(huì)提升,而能降低成本與功耗。

相較于其他設(shè)計(jì),本發(fā)明不需要使用大型或特殊目的的硬件即可減少指令延遲。其他FMA硬件實(shí)施的設(shè)計(jì)都需要使用大型與復(fù)雜的電路功能,如先行標(biāo)準(zhǔn)化運(yùn)算(anticipatory normalization)、先行加法運(yùn)算、先行符號(hào)運(yùn)算、與復(fù)雜的舍入電路。這些復(fù)雜元件常常會(huì)成為最終設(shè)計(jì)中關(guān)鍵的耗時(shí)路徑、會(huì)在運(yùn)算過(guò)程中消耗額外的能量、并在物理上會(huì)占據(jù)電路設(shè)置空間。

本發(fā)明不需在大型的FMA硬件內(nèi)設(shè)置特殊旁路電路或模態(tài)以減少如現(xiàn)有技術(shù)所提供的簡(jiǎn)單加法或乘法指令的延遲。

本發(fā)明的其他實(shí)施方式,可在特殊類型的第一微指令的執(zhí)行過(guò)程,執(zhí)行或多或少的算術(shù)運(yùn)算,可在特殊類型的第二微指令的執(zhí)行過(guò)程,執(zhí)行或多或少的算術(shù)運(yùn)算。亦即配置給這些微指令的運(yùn)算可為不同。如此,其他這些實(shí)施方式可對(duì)任一/任何需要的獨(dú)立運(yùn)算單元進(jìn)行或多或少的調(diào)整。如此,這些其他實(shí)施方式可儲(chǔ)存或多或少的中間結(jié)果于舍入快取內(nèi),并可將或多或少的中間結(jié)果轉(zhuǎn)送至第二為指令。

其他實(shí)施方式中,所述的舍入快取可為可定址暫存器位、內(nèi)容可存取存儲(chǔ)器、佇列儲(chǔ)存空間、或?qū)τ彻δ堋?/p>

其他實(shí)施方式可提供多個(gè)獨(dú)立的硬件或執(zhí)行單元來(lái)執(zhí)行第一微指令,與/或提供多個(gè)獨(dú)立的硬件或執(zhí)行單元來(lái)執(zhí)行第二微指令。同樣地,如果有利的話,這些實(shí)施方式也可以提供多個(gè)舍入快取給不同的源碼指令流或數(shù)據(jù)流、或是多核計(jì)算機(jī)處理器的各種實(shí)施方式。

此實(shí)施方式用于超純量、非循序指令分配,不過(guò)其他實(shí)施方式亦可用于依序指令分配的情形,例如,通過(guò)從指令快取移除以及提供至數(shù)據(jù)轉(zhuǎn)送網(wǎng)路的過(guò)程,可將指令從所提供的乘法運(yùn)算單元分配至獨(dú)立的加法運(yùn)算單元。本發(fā)明對(duì)于FMA運(yùn)算分類的例示,以及本發(fā)明提及的所需最少量硬件調(diào)整,在依序指令分配的應(yīng)用中,亦有其優(yōu)點(diǎn)。雖然本說(shuō)明書將FMA運(yùn)算區(qū)分為五個(gè)類型,不過(guò)其他劃分方式,無(wú)論是較少、較多、與/或使用不同類型,均屬本發(fā)明的范疇。

此外,雖然本說(shuō)明書中已描述不同的調(diào)整后的乘法與加法單元以執(zhí)行FMA運(yùn)算,在本發(fā)明的一實(shí)施例中,亦可使用一乘積-累加單元響應(yīng)第一乘積-累加指令來(lái)執(zhí)行第一乘積-累加子運(yùn)算,并將其結(jié)果儲(chǔ)存至外部?jī)?chǔ)存空間,而此乘積-累加單元會(huì)再響應(yīng)第二乘積-累加指令來(lái)執(zhí)行第二乘積-累加子運(yùn)算。

本發(fā)明可用于FAM運(yùn)算的單指令流多數(shù)據(jù)(SIMD)實(shí)施方式,此等方式有時(shí)會(huì)被稱為向量指令類型或向量FMA運(yùn)算。并且此方式會(huì)有多個(gè)調(diào)整后的乘法器的實(shí)例與多個(gè)調(diào)整后的加法器的實(shí)例。在一實(shí)施例中,本發(fā)明使用單一舍入快取來(lái)配合一個(gè)SIMD應(yīng)用的需求。而在另一實(shí)施例中,則可使用多個(gè)舍入快取來(lái)配合多個(gè)SIMD應(yīng)用的需求。

雖然本發(fā)明關(guān)于需要一乘法運(yùn)算連同后續(xù)加法或累加運(yùn)算的浮點(diǎn)融合乘法加法運(yùn)算,不過(guò),本發(fā)明所提供的方法亦可用于其他實(shí)施方式,尤其是 針對(duì)某些中間結(jié)果使用快取的技術(shù)、針對(duì)需要兩個(gè)以上連鎖(chained)的算術(shù)運(yùn)算的計(jì)算、針對(duì)不同算術(shù)運(yùn)算、或以不同順序執(zhí)行這些算術(shù)運(yùn)算。舉例來(lái)說(shuō),某些時(shí)候可能需要將這些方法應(yīng)用于其他算術(shù)運(yùn)算的混合(即,涉及兩個(gè)以上的算術(shù)操作子或三個(gè)以上的運(yùn)算元的算術(shù)運(yùn)算),例如連鎖的乘法-乘法-加法運(yùn)算或乘法-加法-加法運(yùn)算,以提升算術(shù)準(zhǔn)確性或提升運(yùn)算產(chǎn)出。此外,從其他面向來(lái)看,本發(fā)明亦可應(yīng)用于整數(shù)算術(shù)運(yùn)算。舉例來(lái)說(shuō),舍入至特定位位置的整數(shù)運(yùn)算可區(qū)分為第一與第二子運(yùn)算,其中第一子運(yùn)算產(chǎn)生一未經(jīng)舍入的中間結(jié)果,而第二子運(yùn)算由此未經(jīng)舍入的中間結(jié)果產(chǎn)生一經(jīng)舍入的最終結(jié)果。依此,在需要時(shí),其他實(shí)施方式可將不同的狀態(tài)位記錄于快取機(jī)制內(nèi)。

本說(shuō)明書關(guān)于舍入位與其他內(nèi)部位的描述為利于說(shuō)明本發(fā)明的精神,本發(fā)明當(dāng)可用于其他類型的指標(biāo),包含舍入運(yùn)算相關(guān)或運(yùn)算控制相關(guān)的變數(shù)的不同編碼表現(xiàn)形式。此外,針對(duì)說(shuō)明書中將變數(shù)描述為具有“二進(jìn)位數(shù)一"(也就是邏輯一)的許多段落,此描述包含具有“二進(jìn)位數(shù)零”(也就是邏輯零)的變數(shù)的等效布林實(shí)施方式,并包含這些變數(shù)的其他表示方式。相同地,針對(duì)說(shuō)明書中將變數(shù)描述為具有“二進(jìn)位數(shù)零"(也就是邏輯零)的許多段落,此描述包含具有“二進(jìn)位數(shù)一”(也就是邏輯一)的變數(shù)的等效布林實(shí)施方式,并包含這些變數(shù)的其他表示方式。此外,依據(jù)本說(shuō)明書當(dāng)可理解,在本文中,累加包含加法加總與加法差的情形。

此外,依據(jù)本說(shuō)明書當(dāng)可理解,在本文中,指令包含架構(gòu)指令與可由架構(gòu)指令轉(zhuǎn)譯或轉(zhuǎn)換產(chǎn)生的微指令。同樣地,指令執(zhí)行單元并非僅限于微處理器直接執(zhí)行架構(gòu)指令而未預(yù)先將其轉(zhuǎn)譯為微指令的情形。由于微指令亦屬指令的一種類型,因此,指令執(zhí)行單元也會(huì)包含微處理器先將指令集架構(gòu)指令轉(zhuǎn)譯或轉(zhuǎn)換為微指令,而指令執(zhí)行單元總是只執(zhí)行微指令的情形。

在本說(shuō)明書中,尾數(shù)與有效位數(shù)的用語(yǔ)可互用。其他如原始結(jié)果與中間 結(jié)果的用語(yǔ),為區(qū)分在FMA運(yùn)算的不同階段所產(chǎn)生的結(jié)果與表示方式。此外,在本說(shuō)明書中,儲(chǔ)存格式中間結(jié)果的用語(yǔ)包含一中間結(jié)果向量(意指一數(shù)的量)與多個(gè)運(yùn)算控制變數(shù)。這些用語(yǔ)不應(yīng)被僵化或狹隘地解釋,而應(yīng)依據(jù)申請(qǐng)人所表現(xiàn)出來(lái)的目的探究其實(shí)質(zhì),而理解這些用語(yǔ)依據(jù)前后文的不同可能指涉不同的事件。

圖1、3-6中的功能方塊可描述為模組、電路、子電路、邏輯、與其他數(shù)位邏輯與微處理器設(shè)計(jì)的技術(shù)領(lǐng)域中常用于指稱由線路、電晶體與/或其他執(zhí)行一個(gè)或多個(gè)功能的物理結(jié)構(gòu)所構(gòu)成的數(shù)字邏輯用語(yǔ)。本發(fā)明亦可涵蓋將說(shuō)明書所描述功能以不同于說(shuō)明書所描述的方式分派的其他替代實(shí)施方式。

下列參考文獻(xiàn)納入本申請(qǐng)以說(shuō)明FMA設(shè)計(jì)的相關(guān)概念與并使本申請(qǐng)發(fā)明能為讀者理解。

參考文獻(xiàn):

Hokenek,Montoye,Cook,"Second-Generation RISC Floating Point with MultiplyAdd Fused",IEEE Journal Of Solid-State Circuits,Vol 25,No 5,Oct 1990.

Lang,Bruguera,"Floating-Point Multiply-Add-Fused with Reduced Latency",IEEE Trans On Computers,Vol 53,No 8,Aug 2004.

Bruguera,Lang,"Floating-Point Fused Multiply-Add:Reduced Latency for FloatingPoint Addition",Pub TBD-Exact Title Important.

Vangal,Hoskote,Borkar,Alvanpour,"A 6.2-GFlops Floating-Point MultiplyAccumulator With Conditional Normalization",IEEE Jour.Of Solid-State Circuits,Vol 41,No 10,Oct 2006.

Galal,Horowitz,"Energy-Efficient Floating-Point Unit Design",IEEE Trans On Computers Vol 60,No 7,July 2011.

Srinivasan,Bhudiya,Ramanarayanan,Babu,Jacob,Mathew,Krishnamurthy, Erraguntla,"Split-path Fused Floating Point Multiply Accumulate(FPMAC)",2013 Symp on Computer Arithmetic(paper).

Srinivasan,Bhudiya,Ramanarayanan,Babu,Jacob,Mathew,Krishnamurthy,Erraguntla,"Split-path Fused Floating Point Multiply Accumulate(FPMAC)",2014 Symp on Computer Arithmetic,Austin TX,(slides from www.arithsymposium.org).

Srinivasan,Bhudiya,Ramanarayanan,Babu,Jacob,Mathew,Krishnamurthy,Erraguntla,United States Patent 8,577,948(B2),Nov 5,2013.

Quach,Flynn,"Suggestions For Implementing A Fast IEEE Multiply-Add-Fused Instruction",(Stanford)Technical Report CSL-TR-91-483 July,1991.

Seidel,"Multiple Path IEEE Floating-Point Fused Multiply-Add",IEEE 2004.

Huang,Shen,Dai,Wang,"A New Architecture For Multiple-Precision FloatingPoint Multiply-Add Fused Unit Design",Pub TBD,Nat'l University of Defense Tech,China(after)2006.

Paidimarri,Cevrero,Brisk,Ienne,"FPGA Implementation of a Single-Precision Floating-Point Multiply-Accumulator with Single-Cycle Accumulation",Pub TBD.

Henry,Elliott,Parks,"X87 Fused Multiply-Add Instruction",United States Patent 7,917,568(B2),Mar 29,2011.

Walaa Abd El Aziz Ibrahim,"Binary Floating Point Fused Multiply Add Unit",Thesis Submitted to Cairo University,Giza,Egypt,2012(retr from Google).

Quinell,"Floating-Point Fused Multiply-Add Architectures",Dissertation Presented to Univ Texas at Austin,May 2007,(retr from Google).

Author Unknown,"AMD Athlon Processor Floating Point Capability",AMD White Paper Aug 28,2000.

Cornea,Harrison,Tang,"Intel Itanium Floating-Point Architecture"Pub TBD.

Gerwig,Wetter,Schwarz,Haess,Krygowski,Fleischer,Kroener,"The IBM eServer z990 floating-point unit",IBM Jour Res&Dev Vol 48 No 3/4 May,July 2004.

Wait,"IBM PowerPC 440 FPU with complex-arithmetic extensions",IBM Jour Res&Dev Vol 49 No 2/3 March,May 2005.

Chatterjee,Bachega,et al,"Design and exploitation of a high-performance SIMD floating-point unit for Blue Gene/L",IBM Jour Res&Dev,Vol 49 No 2/3 March,May 2005。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1