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

Simd運(yùn)算的隱含數(shù)據(jù)類型位的計(jì)算的制作方法

文檔序號:6419602閱讀:292來源:國知局
專利名稱:Simd運(yùn)算的隱含數(shù)據(jù)類型位的計(jì)算的制作方法
相關(guān)專利申請本申請與美國專利申請09/169.865“執(zhí)行SIMD的標(biāo)量硬件”,它于1998年10月12日提交,并轉(zhuǎn)讓給相同的受讓人。
發(fā)明
背景技術(shù)
領(lǐng)域本發(fā)明涉及處理數(shù)據(jù)的系統(tǒng),尤其是通過單指令多數(shù)據(jù)(SIMD)操作來處理數(shù)據(jù)的系統(tǒng)。
背景技術(shù)
處理器設(shè)計(jì)人員一直致力于研究可以增強(qiáng)多處理器運(yùn)行性能的辦法。并行處理多個操作數(shù)可以從當(dāng)前高度優(yōu)化的處理器中獲取額外的運(yùn)行性能。在某些常見的數(shù)學(xué)運(yùn)算和圖形運(yùn)算中,相同的運(yùn)算在每一個操作數(shù)上被重復(fù)執(zhí)行。舉例來說,在矩陣乘法中,第一矩陣的行元素與在第二矩陣上相應(yīng)的列元素相乘,乘積被相加(乘-累加)。通過提供正確的時序排列和執(zhí)行資源,乘-累加運(yùn)算可能在多組行-列操作數(shù)上同時實(shí)現(xiàn)。這種方式叫做向量處理或者是單指令,多數(shù)據(jù)流處理,以便把它與標(biāo)量或者是單指令,單數(shù)據(jù)流(SISD)處理區(qū)分開來。
為了有效實(shí)現(xiàn)單指令多數(shù)據(jù)流的運(yùn)算,在通常情況之下,數(shù)據(jù)被提供到在“分組”數(shù)據(jù)格式中的執(zhí)行資源中。舉例來說,64位處理器可能在分組數(shù)據(jù)塊上運(yùn)行,該數(shù)據(jù)塊包括兩個32位的操作數(shù)。在該示例中,向量乘-累加指令,V-FWA(f1,f2,f3)將存儲在寄存器f1中的兩個32位操作數(shù)與存儲在寄存器f2中相應(yīng)的32位操作數(shù)相乘,并把乘積添加到存儲在寄存器f3中的兩個運(yùn)行乘積和中。換而言之,數(shù)據(jù)以分組格式存儲在寄存器f1,f2,f3中,該數(shù)據(jù)提供兩個來自于每一個寄存器入口的操作數(shù)。如果處理器擁有足夠的資源,它可能會同時處理兩個或者是兩個以上的分組數(shù)據(jù)塊,例如四個或者是四個以上的32位操作數(shù)。32位操作數(shù)被發(fā)送到并行處理并隨后被分組的不同執(zhí)行單元中。
甚至是在圖形密集化和科學(xué)化的編程中,也并非所有的運(yùn)算都是SIMD運(yùn)算。大部分由通用處理器執(zhí)行的軟件包括執(zhí)行標(biāo)量運(yùn)算的指令。也就是說,每一個由指令指定的源寄存器存儲一個操作數(shù),每一個由指令指定的目標(biāo)寄存器會接收一個操作數(shù)。在上述示例中,標(biāo)量浮點(diǎn)乘-累加指令,S-FWA(f1,f2,f3)可能把存儲在寄存器f1中的單個64位操作數(shù)與存儲在寄存器f2中相應(yīng)的64位操作數(shù)相乘,并把乘積添加到存儲在寄存器f3中的運(yùn)行乘積和中。由S-FWA指令處理的每一個操作數(shù)都以未被分組的格式提供到FWAC部件中。
寄存器文件把源操作數(shù)提供到執(zhí)行單元中,并接收來自于執(zhí)行單元的結(jié)果,會消耗大量的處理器晶圓(die)。可以取用的晶圓是大多數(shù)處理器芯片上非常寶貴的稀有資源。正是基于這個原因,在通常情況之下,處理器包括每一個主要數(shù)據(jù)類型的寄存器文件。舉例來說,一般而言,處理器擁有一個存儲分組和未分組浮點(diǎn)操作數(shù)的浮點(diǎn)寄存器。因此,雖然分組操作數(shù)包括兩個或者是兩個以上的分量操作數(shù),還是設(shè)計(jì)了分組和未分組操作數(shù),以適應(yīng)相同大小的寄存器入口。
為分組和未分組操作數(shù)提供執(zhí)行資源,就出現(xiàn)了對運(yùn)行性能和費(fèi)用的挑戰(zhàn)。提供高性能的標(biāo)量和向量處理的方式包括單個標(biāo)量和向量執(zhí)行單元這種方式的優(yōu)勢在于每一個標(biāo)量和向量執(zhí)行單元都可以以諸如分組和未分組的相應(yīng)方式優(yōu)化處理數(shù)據(jù),而該方式的問題在于,額外的執(zhí)行單元會消耗硅晶圓,而硅晶圓是相對而言比較寶貴的資源。
除了可以提供正確的執(zhí)行資源,高性能處理器還必須包括有效傳輸分組和未分組操作數(shù)數(shù)據(jù)的結(jié)構(gòu)。這種結(jié)構(gòu)既包括那些把操作數(shù)數(shù)據(jù)傳輸?shù)街T如高速緩沖存儲器之類的處理器存儲器層中的寄存器文件的結(jié)構(gòu),也包括把來自于寄存器文件中的操作數(shù)數(shù)據(jù)傳輸?shù)綀?zhí)行資源中的結(jié)構(gòu)。
本發(fā)明描述了當(dāng)前可取用的單指令多數(shù)據(jù)流系統(tǒng)相關(guān)的各方面內(nèi)容。
發(fā)明概述本發(fā)明提供這樣的一種系統(tǒng),它通過為“活躍”操作數(shù)(operand“on-the-fly”)(也就是操作數(shù)被加載到寄存器文件入口中)設(shè)置隱含位以支持浮點(diǎn)操作數(shù)的有效處理。
根據(jù)本發(fā)明,浮點(diǎn)操作數(shù)被檢索加載進(jìn)入寄存器文件入口中。浮點(diǎn)操作數(shù)的選定位被檢驗(yàn),并且,當(dāng)選定位處于第一種狀態(tài)中,寄存器文件中的隱含位被設(shè)置。
在本發(fā)明的一種實(shí)施方案中,浮點(diǎn)操作數(shù)是包括兩個或多個分量操作數(shù)的分組操作數(shù),寄存器文件則包括每一個分量操作數(shù)的隱含位。當(dāng)選定位顯示出分量操作數(shù)被標(biāo)準(zhǔn)化的時候,分量操作數(shù)的隱含位就會被設(shè)置。
因此,當(dāng)操作數(shù)被加載進(jìn)入寄存器文件并通過相應(yīng)寄存器文件入口中的隱含位被追蹤的時候,本發(fā)明允許確定操作數(shù)的標(biāo)準(zhǔn)/非標(biāo)準(zhǔn)狀態(tài)。這樣就不再需要使用操作數(shù)傳輸模塊中的狀態(tài)確定邏輯部件,其中操作數(shù)傳輸模塊把操作數(shù)從寄存器文件中傳輸?shù)綀?zhí)行單元中。由于操作數(shù)傳輸模塊位于執(zhí)行單元的關(guān)鍵(旁路)通路上,處理器的運(yùn)行性能就可以大大提高。
附圖概述以下視圖可以作為更好地了解本發(fā)明地輔助參考,在這些視圖中,相同的部件由相同的標(biāo)號標(biāo)識。這些視圖用于說明本發(fā)明的選定實(shí)施方案,并不限制發(fā)明的范圍。


圖1表示根據(jù)本發(fā)明的浮點(diǎn)執(zhí)行系統(tǒng)的方框圖。
圖2A和2B分別表示圖1的寄存器文件中入口里的未分組和分組的操作數(shù)。
圖3表示在分組操作數(shù)上的操作數(shù)傳輸模塊的運(yùn)算的方框圖。
圖4表示圖1中操作數(shù)傳輸系統(tǒng)的一個實(shí)施方案的電路方框圖。
圖5表示圖1中輸出轉(zhuǎn)換模塊的一個實(shí)施方案的電路方框圖。
發(fā)明詳述接下來的內(nèi)容將詳細(xì)介紹本發(fā)明的各方面細(xì)節(jié),以便讓讀者對本發(fā)明有全面透徹的了解。但是,那些受益于公開內(nèi)容的本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明即使不依賴于這些特定細(xì)節(jié)也一樣可以執(zhí)行。此外,為了著重介紹本發(fā)明的特性,這里并沒有對一些非常有名的方法,程序,部件和線路進(jìn)行的詳細(xì)介紹。
在通常情況之下,處理器結(jié)構(gòu)指定在芯片上資源中存儲數(shù)據(jù)的格式,諸如寄存器文件格式。選擇這種寄存器文件格式以便適應(yīng)處理器執(zhí)行資源處理的各種不同數(shù)據(jù)類型,以及任何用于處理數(shù)據(jù)的補(bǔ)充信息??蛇m應(yīng)的數(shù)據(jù)類型可以是,例如,IEEE 754-1985指定的二進(jìn)制浮點(diǎn)算法IEEE標(biāo)準(zhǔn)。寄存器文件格式支持這樣一種有效處理,通過以隨時準(zhǔn)備被執(zhí)行資源訪問和處理的格式,來存儲操作數(shù)數(shù)據(jù)。
對于標(biāo)量處理來說,每一個操作數(shù)都是以寄存器文件格式作為未分組操作數(shù)存儲的。在這里,“未分組”指的是允許寄存器文件入口中的數(shù)據(jù)表示不超過一個操作數(shù)這種數(shù)據(jù)格式。例如,處理器可能容納一個單精度型未分組操作數(shù),一個雙精度型未分組操作數(shù),或者是處理器寄存器文件格式的每一個寄存器文件入口一個雙精度擴(kuò)展型未分組操作數(shù)。對于向量處理來說,有多個分量操作數(shù)被提供到適應(yīng)單個寄存器文件入口的分組操作數(shù)中。適應(yīng)在一種尺寸大小的寄存器入口中的分組和未分組操作數(shù)意味著操作數(shù)被映射到不同的寄存器入口中。不同的映射拷貝會反映到從高速緩沖存儲器傳輸?shù)郊拇嫫魑募械馁Y源上,以及那些把操作數(shù)從寄存器文件傳輸?shù)綀?zhí)行資源的結(jié)構(gòu)中。
關(guān)于標(biāo)量和向量運(yùn)算的不同操作數(shù)格式還可能反映在它們自身的執(zhí)行資源中。舉例來說,一個有兩個32位分量操作數(shù)的分組操作數(shù)可能適應(yīng)兩個32位執(zhí)行單元來處理。而在相同系統(tǒng)中的未分組操作數(shù)可能由一個64位執(zhí)行單元作為單個64位操作數(shù)來處理。在該示例中,每一個執(zhí)行管道可以使用三個不同的執(zhí)行單元,兩個32位標(biāo)量執(zhí)行單元和一個64位標(biāo)量執(zhí)行單元,但是執(zhí)行管道只能并行處理兩個操作數(shù)。額外的執(zhí)行單元會消耗大量寶貴的晶圓和資源。
提供兩個標(biāo)量執(zhí)行單元的另一種方法就是修改標(biāo)量部件,讓它既可以處理標(biāo)量操作數(shù),也可以適應(yīng)向量操作數(shù)。這種方式不需要使用向量執(zhí)行單元。然而,以該種方式修改標(biāo)量部件會降低它在未分組操作數(shù)上的運(yùn)行性能。
本發(fā)明提供了這樣一種系統(tǒng),它可以有效處理分組和未分組格式的數(shù)據(jù),而無需增加處理器的硅晶圓,或者是降低處理器在未分組操作數(shù)上的運(yùn)行性能。加載轉(zhuǎn)換模塊確定活躍的分組操作數(shù)分量操作數(shù)的隱含位,就像把分組操作數(shù)加載進(jìn)入在諸如高速緩沖存儲器之類的存儲器位置中的寄存器文件入口一樣。隱含位與寄存器文件入口有關(guān),它們表示相應(yīng)的分量操作數(shù)是標(biāo)準(zhǔn),非標(biāo)準(zhǔn),或者是0(標(biāo)準(zhǔn)化狀態(tài))。還可以確定未分組操作數(shù)的隱含位,盡管它們并不應(yīng)用于這些操作數(shù)的隨后處理中。
當(dāng)指令指向寄存器文件入口的時候,操作數(shù)傳輸結(jié)構(gòu)把分量操作數(shù)從分組操作數(shù)轉(zhuǎn)換為適合標(biāo)量執(zhí)行單元處理的格式。操作數(shù)傳輸系統(tǒng)可能通過位處理來實(shí)現(xiàn)操作數(shù)轉(zhuǎn)換,以避免用額外額外的邏輯門加載系統(tǒng)。這會大大降低操作數(shù)轉(zhuǎn)換對系統(tǒng)運(yùn)行性能的影響,同時還能夠保持標(biāo)量執(zhí)行單元在未分組數(shù)據(jù)上的運(yùn)行性能。
在本發(fā)明的一個實(shí)施方案中,標(biāo)量執(zhí)行單元與向量執(zhí)行單元結(jié)合在一起運(yùn)行來處理分組操作數(shù)。轉(zhuǎn)換過的操作數(shù)和未經(jīng)轉(zhuǎn)換的分量操作數(shù)分別被應(yīng)用于標(biāo)量和向量執(zhí)行單元進(jìn)行處理。在發(fā)明的實(shí)施方案中,操作數(shù)傳輸結(jié)構(gòu)包括位處理蹤跡,以及無需加載額外的執(zhí)行資源就可以把分量操作數(shù)轉(zhuǎn)換為標(biāo)量格式的反向器。反過來,它可以保持處理器在標(biāo)量運(yùn)算上的運(yùn)行性能。
標(biāo)量執(zhí)行單元可能是用于優(yōu)化處理寄存器文件格式(RFF)中未分組操作數(shù)的浮點(diǎn)乘-累加模塊(FMAC)。標(biāo)量執(zhí)行單元可能是優(yōu)化用于處理由分組數(shù)據(jù)格式(PDF)的分組操作數(shù)的分量操作數(shù)的浮點(diǎn)乘-累加模塊。操作數(shù)傳輸模塊可能包括擁有額外引線的MUX,該引線可以用于把位重新處理蹤跡傳輸?shù)綐?biāo)量執(zhí)行單元中,把分量操作數(shù)的選定位作為未分組操作數(shù)來修改的反向器。
圖1是適合實(shí)現(xiàn)本發(fā)明的浮點(diǎn)系統(tǒng)100的方框圖。系統(tǒng)100包括浮點(diǎn)寄存器文件110,操作數(shù)傳輸模塊120,主浮點(diǎn)乘-累加模塊130,從浮點(diǎn)乘-累加模塊140,一個輸出轉(zhuǎn)換模塊150和一個加載轉(zhuǎn)換模塊160。該視圖中還有通過加載轉(zhuǎn)換模塊160把操作數(shù)數(shù)據(jù)提供導(dǎo)寄存器文件110中的高速緩沖存儲器170。高速緩沖存儲器170表示存儲由浮點(diǎn)系統(tǒng)100和其他處理器資源(未被顯示出)來處理的數(shù)據(jù)的分級存儲器系統(tǒng)中的結(jié)構(gòu)。在通常情況之下,數(shù)據(jù)以上述IEEE浮點(diǎn)標(biāo)準(zhǔn)指定的數(shù)據(jù)格式存儲在存儲器系統(tǒng)中。
在系統(tǒng)100的公布實(shí)施方案中,主FMAC130處理寄存器文件(“未分組”)格式的未分組操作數(shù)。從FMAC140處理分組操作數(shù)的分量操作數(shù)。操作數(shù)傳輸模塊120把寄存器110中的數(shù)據(jù)以合適格式連接至FMAC130和FMAC140上。
在系統(tǒng)100的公開實(shí)施方案中,寄存器文件110包括多個寄存器入口112。在一個實(shí)施方案中,每一個入口112都有一個相關(guān)隱含位114,該隱含位被設(shè)置位表示存儲在相關(guān)隱含位114中的數(shù)據(jù)是否被標(biāo)準(zhǔn)化。舉例來說,在IEEE標(biāo)準(zhǔn)754中,隱含位被定義。隱含位可以與分組操作數(shù)中的分量操作數(shù)結(jié)合起來表示有待處理的操作數(shù)。舉例來說,隱含位可以被設(shè)置為表示數(shù)據(jù)是標(biāo)準(zhǔn)格式。
在標(biāo)量運(yùn)算中,操作數(shù)傳輸模塊120從寄存器文件110提供未分組浮點(diǎn)操作數(shù)至主FMAC130。未分組操作數(shù)以寄存器文件格式被存儲于寄存器文件110中。在向量運(yùn)算中,操作數(shù)傳輸模塊120檢索來自于寄存器文件110的分組操作數(shù),把分量操作數(shù)轉(zhuǎn)變?yōu)槲捶纸M操作數(shù),并把它提供到主FMAC130。第二分量操作數(shù)被提供到第二FMAC140上。這樣,主FMAC130就在標(biāo)量運(yùn)算和向量運(yùn)算之間被共享,而第二FMAC140則為標(biāo)量運(yùn)算提供額外的執(zhí)行資源。
由FMAC130和140生成的結(jié)果被連接到輸出轉(zhuǎn)換模塊150上,以便再一次結(jié)合成分組數(shù)據(jù)格式。在本發(fā)明的一個實(shí)施方案中,旁路160將來自于主FMAC130的輸出數(shù)據(jù)在重分組以前連接至操作數(shù)傳輸模塊120上。被旁路數(shù)據(jù)可能會由主FMAC130進(jìn)行額外處理,而無需由轉(zhuǎn)換模塊150對其進(jìn)行重新分組,以及隨后由操作數(shù)傳輸模塊120對其進(jìn)行解分組。旁路循環(huán)避免了來自于旁路通路的輸入轉(zhuǎn)換(分組到未分組數(shù)據(jù)中)。
視圖中的系統(tǒng)100擁有一個浮點(diǎn)管道,但是本發(fā)明并沒有僅僅只局限于單個管道。它可能被復(fù)制到一個或者是一個以上的管道中以提供超標(biāo)量浮點(diǎn)單指令多數(shù)據(jù)運(yùn)算。換而言之,兩個或者是兩個以上的向量指令可能會被并行處理。廣而言之,本領(lǐng)域的技術(shù)人員可以理解本發(fā)明可以在不同于系統(tǒng)100的配置的浮點(diǎn)系統(tǒng)上實(shí)現(xiàn)。
圖2A顯示了可供本發(fā)明使用的,寄存器文件格式的(RFF操作數(shù))未分組操作數(shù)200的實(shí)施方案。RFF操作數(shù)200包括一個有效字段210,冪字段220,和符號字段230。在本發(fā)明的實(shí)施方案中,有效字段210是64位,冪字段220是17位,符號字段230是1位。
圖2B顯示了可供本發(fā)明使用的,分組文件格式的(PDF操作數(shù))分組操作數(shù)250的實(shí)施方案。PDF操作數(shù)250的公布實(shí)施方案分別包括第一和第二分量操作數(shù)260(a)和260(b)。在接下來的討論中,除非需要索引來區(qū)別特殊分量操作數(shù)260,否則它將會被刪除。在PDF操作數(shù)250中還顯示了不使用的位270。不使用位270被添加到分量操作數(shù)260中以填滿寄存器文件入口。每一個分量操作數(shù)260包括尾數(shù)字段262,冪字段264和符號字段266。在一個實(shí)施方案中,尾數(shù)字段262是23位寬,冪字段264是8位寬,符號字段266是1位寬。在公布的實(shí)施方案中,每一個分量操作數(shù)都以諸如IEEE標(biāo)準(zhǔn)754-1985所指定的單精度浮點(diǎn)格式出現(xiàn)。
圖2A和圖2B中還顯示了(一個或者多個)隱含位114,與每一個寄存器文件入口112(圖1)相關(guān)。隱含位114可以應(yīng)用于表示分量操作數(shù)是0還是非標(biāo)準(zhǔn)。在FP寄存器文件110的一個實(shí)施方案中,隱含位可以被確定為寫入寄存器文件110中的寄存器入口112中的數(shù)據(jù),也就是活躍的。這樣就不再需要使用在操作數(shù)傳輸模塊120中的額外邏輯部件以確定操作數(shù)的標(biāo)準(zhǔn)/非標(biāo)準(zhǔn)狀態(tài)了,因?yàn)檫@只會減緩向量操作數(shù)的處理。舉例來說,衡量將要傳輸?shù)紽MAC140的分量操作數(shù)的標(biāo)準(zhǔn)/非標(biāo)準(zhǔn)狀態(tài)需要使用在操作數(shù)傳輸系統(tǒng)120的關(guān)鍵通路上的OR門。
對于分別存儲在圖2A和圖2B中的未分組和分組操作數(shù)的寄存器文件入口112來說,隱含位114,例如當(dāng)數(shù)據(jù)被寫入寄存器文件110,位82和位83就會被設(shè)置為以下形式IF(DATA[6255]=’08),THEN data[83]=’0,ELSE’1IF(DATA[3023]=’08),THEN data[82]=’0,ELSE’1這里,′1和′0分別表示二進(jìn)制1和二進(jìn)制0。
在系統(tǒng)100(圖1)的一個實(shí)施方案中,加載轉(zhuǎn)換模塊160可能使用兩個8輸入OR門來實(shí)現(xiàn)上述運(yùn)算。舉例來說,加載轉(zhuǎn)換模塊160的一個實(shí)施方案包括傳輸指數(shù)位,有效位和符號位從高速緩沖存儲器170傳輸?shù)剿鼈冊诩拇嫫魑募哪繕?biāo)入口112中相應(yīng)的位字段的蹤跡。每一個OR門的輸入數(shù)據(jù)都被連接到分量操作數(shù)的一個指數(shù)位蹤跡上,而每一個OR門的輸出數(shù)據(jù)則被連接到與分量操作數(shù)相關(guān)的隱含中。在這個實(shí)施方案中,如果分量操作數(shù)的指數(shù)位是非0的話,隱含位將會被設(shè)置為1。
隱含位可以由操作數(shù)傳輸模塊120使用以提供以適合處理的格式的分量操作數(shù)260。舉例來說,分量操作數(shù)260的尾數(shù)字段262容納23位。24位的有效字段就可能通過把相關(guān)的隱含位附加到23位尾數(shù),作為最有效字段。在公布的實(shí)施方案中,這種轉(zhuǎn)換并不需要RFF數(shù)據(jù)200。但是,邏輯部件通過確定每一個被寫入寄存器文件110的操作數(shù),并在RFF數(shù)據(jù)200被訪問的時候忽略它們得以簡單化。
在本發(fā)明的一個實(shí)施方案中,一個分量操作數(shù)260被轉(zhuǎn)換為RFF操作數(shù),由主FMAC130處理,而另一個分量操作數(shù)被提供到第二FMAC140中而處理。
圖3是由操作數(shù)傳輸模塊120實(shí)現(xiàn)的運(yùn)算示意圖,以便把正確的格式化數(shù)據(jù)提供到FMAC130和FMAC140的框架。在公布的實(shí)施方案中,隱含位114與分量操作數(shù)260(a)中的數(shù)據(jù)結(jié)合在一起,該分量操作數(shù)被轉(zhuǎn)換為RFF操作數(shù)以備主FMAC處理。本發(fā)明的一個特性在于這個轉(zhuǎn)換處理可以無需加載主FMAC130而實(shí)現(xiàn),這樣,就不會降低它在標(biāo)量運(yùn)算上的運(yùn)行性能。分量操作數(shù)260(b)被提供到第二FMAC而處理,第二FMAC可以優(yōu)化而處理分量格式的操作數(shù)。FMAC130并不需要顯示分組操作數(shù)的上層分量操作數(shù)(260(a))。廣而言之,分組操作數(shù)的任何分量操作數(shù)都可能會被選擇發(fā)送到FMAC130中。
在本發(fā)明的一個實(shí)施方案中,操作數(shù)傳輸模塊120通過把把分組操作數(shù)位處理成未分組操作數(shù)200來實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換。舉例來說,來自于尾數(shù)字段262(a)和隱含位114(11)的數(shù)據(jù)可能被轉(zhuǎn)換到RFF有效數(shù)據(jù)(有效字段210)。同樣的,來自于冪字段264的數(shù)據(jù)可能被轉(zhuǎn)換到RFF冪數(shù)據(jù)(冪字段220)。符號字段266中的數(shù)據(jù)可能被映射到RFF符號位(符號字段240)。在接下來的內(nèi)容中,將使用在圖2A和圖2B中的示例數(shù)據(jù)來詳細(xì)介紹各種不同的轉(zhuǎn)換步驟。
有效轉(zhuǎn)換分量操作數(shù)260(a)的示例實(shí)施方案包括23位尾數(shù)字段262(a)。在本發(fā)明的一個實(shí)施方案中,來自于尾數(shù)字段的數(shù)據(jù)通過(1)預(yù)先把相關(guān)隱含位114掛起到來自于部件尾數(shù)字段262的23位尾數(shù);以及(2)把二進(jìn)制零附加到尾數(shù)的最不有效位上以便形成64位的RFF有效字段這兩種方式轉(zhuǎn)換為RFF有效字段。表1概括了尾數(shù)的位處理,它表示出到寄存器入口112中主要(1)FMAC130的位(一個或者是多個)輸入數(shù)據(jù),位的特性,標(biāo)量指令的源位,以及向量指令的源位。表1

正如我們上面所介紹的那樣,當(dāng)這些操作數(shù)共享寄存器文件110中同樣的印記(footprint),也就是寄存器入口112,它們的操作數(shù)就會被映射到寄存器入口112的不同位上。
在RFF操作數(shù)200和PDF操作數(shù)250的公布實(shí)施方案中,隱含位分別由位63和位83指定。為了適應(yīng)這兩種數(shù)據(jù)格式,操作數(shù)模塊110會使用一個2∶1的復(fù)用器(MUX),選擇輸入FMAC130的正確源位。把額外的2∶1MUX介紹到在寄存器文件110和FMAC130之間的邏輯鏈,加載操作數(shù)傳輸模塊120,會減緩到FMAC130的數(shù)據(jù)傳輸速度。加載過程會削減標(biāo)量和向量運(yùn)算的運(yùn)行性能。在本發(fā)明的實(shí)施方案中,是通過向操作數(shù)傳輸模塊110中的現(xiàn)存的3∶1MUX(圖4)提供旁路數(shù)據(jù)(旁路4∶1MUX)的額外通路實(shí)現(xiàn)位處理的。這樣就不再需要把額外的MUX添加到在寄存器文件110和FMAC130之間的數(shù)據(jù)通路了。
冪轉(zhuǎn)換在公布的實(shí)施方案中,RFF和PDF冪根據(jù)不同的偏差來表示。在把PDF冪(字段264)轉(zhuǎn)換為RFF冪(字段220)的時候,就需要考慮偏差之間的區(qū)別了。在一種實(shí)施方案中,RFF偏差值是FFFFh,PDF偏差值是7Fh,也就是IEEE標(biāo)準(zhǔn)中單精度實(shí)數(shù)的冪偏差。這些值之間的區(qū)別是FF80h。
進(jìn)行冪轉(zhuǎn)換的一種方式就是把FF80h添加到PDF冪字段264中的8位的冪值,以獲取RFF冪。問題在于它使用的是在寄存器文件110和主FMAC130之間數(shù)據(jù)通路上的加法器。操作數(shù)傳輸模塊120上的額外的選通延遲會降低系統(tǒng)100的標(biāo)量和向量運(yùn)算性能。而使用另一種去調(diào)整冪偏差的方式就可以不必使用加法器。
表2概括了當(dāng)偏差區(qū)別是FF80h,把PDF冪轉(zhuǎn)換為RFF冪的時候,所執(zhí)行的調(diào)整處理。在這里,通過E7的E0是PDF冪字段264(a)上的8位,并且如果是以二進(jìn)制方法表示的話,01111111110000000是FF80h。正如在表2中所表示的那樣,冪轉(zhuǎn)換可以通過反轉(zhuǎn)PDF冪字段264(a)上的第8指數(shù)位(E7->E7),在RFF冪(字段220)的下一個9位對它進(jìn)行復(fù)制,并把未反轉(zhuǎn)的第8位(E7)拷貝到RFF冪中最高位位置上。這些操作可以通過一個反向器和適當(dāng)?shù)穆酚邵欅E來完成。這里并不需要加法器,并且在操作數(shù)傳送模塊120和主FMAC130上的反向器的性能影響并不重要。
表2

在表2中總結(jié)的方法并不用于單精度非標(biāo)準(zhǔn)化數(shù)字的操作。非標(biāo)準(zhǔn)數(shù)值可以由關(guān)聯(lián)的隱含位114的值定義,而轉(zhuǎn)換過程可以使用一個軟件處理程序來實(shí)現(xiàn)。表3概括了上面所討論的指數(shù)位處理。
表3

在這里,“#”指的是該位是被反轉(zhuǎn)了。主FMAC 130的指數(shù)位是從冪字段的第一位開始計(jì)算的。
圖4表現(xiàn)了操作數(shù)傳送模塊120的一個實(shí)施方案,它適合于在分別擁有第一和第二浮點(diǎn)管道,pipe0和pipe1,的處理器中使用。本發(fā)明并不僅限于在處理器中采用的管道的特殊的號碼。操作數(shù)傳送模塊120的公布的實(shí)施方案包括一個4∶1的先旁路MUX(EBPM)410,一個6∶1的中旁路MUX(MBPM)420,以及一個4∶1的后旁路MUX(LBPM)430。對于上面所描述的實(shí)例數(shù)據(jù)格式,操作數(shù)傳送模塊120將了一個32位的分量操作數(shù)260(a)從分組的或者PDF操作數(shù)250轉(zhuǎn)換為82位復(fù)原的或者RFF操作數(shù)200。
EBPM 410在輸入端A和B處接收所存儲的pipe0和pipe1的數(shù)據(jù)。從pipe0和pipe1的后端寫回?cái)?shù)據(jù)可以通過輸入端C和D連接至操作數(shù)傳送模塊120。EBPM 410的一個控制輸入端從輸入端A,B,C或D中選擇提供給MBPM 420的數(shù)據(jù)。MBPM 420在輸入端E處接收來自EBPM410的數(shù)據(jù)。來自pipe0和pipe1的一個級的數(shù)據(jù)被分別從輸入端F和G處接收。來自于pipe0和pipe1的加載轉(zhuǎn)換器的數(shù)據(jù)分別從輸入端H和I處被接收。來自寄存器文件110的數(shù)據(jù)在輸入端J處被接收。MBPM 420的一個控制輸入端從輸入端E,F(xiàn),G,H,I和J之一選擇提供給LBPM 430的數(shù)據(jù)。
LBPM 430從輸入端M和N處分別接收來自于pipe0和pipe1的另一個級的旁路數(shù)據(jù)。LBPM 430的輸入端K通過位處理塊440接收來自MBPM 420的數(shù)據(jù),該位處理塊可以為矢量操作實(shí)現(xiàn)上面所描述的轉(zhuǎn)換。在上面的例子中,為處理塊440包括一個反向器和位處理蹤跡來將數(shù)據(jù)從上級的分量操作數(shù)269(a)重新標(biāo)準(zhǔn)化為RFF數(shù)據(jù)。舉例來說,位處理塊包括一個邏輯部件和蹤跡將2 3位PDF尾數(shù)位轉(zhuǎn)換為一個64位PFF有效位,并將8位PDF指數(shù)位轉(zhuǎn)換為一個17位帶有經(jīng)過再調(diào)整偏差的RFF指數(shù)位。對于標(biāo)量運(yùn)算來說,LBPM 430的輸入端L可以無需介入位處理或者反向而接收來自于MBPM 420的數(shù)據(jù)。來自于輸入端K或者L之一的數(shù)據(jù)依據(jù)正在處理的分別是分組數(shù)據(jù)還是寫回?cái)?shù)據(jù)被提供給主FMAC 130。
在圖4的實(shí)施方案中,轉(zhuǎn)換(位處理)數(shù)據(jù)和未轉(zhuǎn)換數(shù)據(jù)通過分別選擇適當(dāng)?shù)妮斎攵薑或者L被提供給主FMAC 130。這允許來自寄存器文件110的數(shù)據(jù)或者與先旁路級(early bypass stage)相關(guān)的數(shù)據(jù)在LBPM 430處被轉(zhuǎn)換。在公布的實(shí)施方案中,在輸入端M和N處的末級旁路數(shù)據(jù)可以通過使用相應(yīng)的位處理塊440復(fù)制每個輸入端來進(jìn)行轉(zhuǎn)換。然而,如果位于輸入端M和N處的旁路數(shù)據(jù)并不優(yōu)先于后旁路(late bypass)被分組的話,就不需要對它進(jìn)行分組了。這樣就可以避免在LBPM 430上使用額外的支路和位處理塊440。
對于操作數(shù)傳送模塊120的一個實(shí)施方案來說,后旁路數(shù)據(jù)可以通過旁路160(圖1)提供給LBPM 430。在被重分組為例如PDF的格式250之前,旁路160分別捕獲主和從FMAC 130和140的輸出。在這個實(shí)施方案中,對于旁路數(shù)據(jù)來說并不需要LBPM 430或者它的輸出端的擴(kuò)展。
圖5顯示了一個輸出轉(zhuǎn)換模塊150的實(shí)施方案。公布的輸出轉(zhuǎn)換模塊實(shí)施方案包括一個主輸出MUX 510和位處理塊520。主輸出MUX 510包括用來接收來自主FMAC 130的結(jié)果的輸入端和不同的資源(FMISC)154,以及一些特殊的結(jié)果編碼。對于實(shí)例的數(shù)據(jù)格式,F(xiàn)MAC 130為標(biāo)量和矢量運(yùn)算提供結(jié)果以作為未分組(RFF)操作數(shù)200(82位)。在后面的情況下,位處理塊520將來自于主FMAC 130的未分組操作數(shù)與來自于次級FMAC 140的分量操作數(shù)結(jié)合在一起并形成一個分組操作數(shù)。
提供給主輸出MUX 510的特殊編碼顯示著寄存器文件格式中的特殊結(jié)果,諸如0、無窮大、或者最大實(shí)數(shù)(最大可描述的浮點(diǎn)值)。對于公布的實(shí)施方案來說,這些編碼可以使用上面所描述位處理運(yùn)算在必要時轉(zhuǎn)換為矢量運(yùn)算。如果需要對0、無窮大、和最大實(shí)數(shù)結(jié)果進(jìn)行更精確的轉(zhuǎn)換,它們可以在操作數(shù)傳送模塊120的初級階段中實(shí)現(xiàn),因?yàn)檫@里的必要信息在浮點(diǎn)執(zhí)行管道中能夠相對較早地被利用。在關(guān)鍵通路中沒有引入附加的延遲。
對于矢量運(yùn)算來說,主FMAC 130和次級FMAC 140的結(jié)果被重分組以提供結(jié)果作為PDF操作數(shù)。在公布的實(shí)施方案中,82位入口的低32位接收來自次級FMAC 140分量操作數(shù)結(jié)果。接下來最高的32位由來自FMAC 130的未分組操作數(shù)通過位處理提供。高18位接收由執(zhí)行情況決定的內(nèi)容,在公布的實(shí)施方案中,這些是‘1&1003Eh。
由主FMAC 130提供的分組(RFF)指數(shù)有一個相對于分組操作數(shù)250中的分量操作數(shù)采用的IEEE單精度格式的FF80h的超額偏差。當(dāng)轉(zhuǎn)換為分組的分量操作數(shù)結(jié)果的時候,超額偏差轉(zhuǎn)換就會從未分組操作數(shù)結(jié)果中被減去。在實(shí)例實(shí)施方案中,這可以通過下面的方法來實(shí)現(xiàn)將2的補(bǔ)碼與17位RFF指數(shù)相加,使用結(jié)果的低8位作為分量操作數(shù)的指數(shù)位。如以前一樣,完成這些為加載浮點(diǎn)管道加載附加的加法器,使用位處理運(yùn)算就可以了。具體如表4所示。
表4

如在表4中所顯示的那樣,分量操作數(shù)的指數(shù)位可以通過由主FMAC130提供的未分組操作數(shù)獲得。在上面的實(shí)例中,它們是由未分組操作數(shù)結(jié)果的低8位指數(shù)位提供的,其中8位是被反向了的。在轉(zhuǎn)換運(yùn)算中忽略的高8位在表2中并沒有顯示。
表5概括了將來自于主FMAC 130的未分組操作數(shù)結(jié)果與來自于次級FMAC 140的分量操作數(shù)結(jié)果分組為矢量運(yùn)算提供分組操作數(shù)結(jié)果的位處理運(yùn)算。
表5

在這里,“CO”指的是分量操作數(shù),“來自于第一FMAC的結(jié)果位”指的是由主FMAC 130產(chǎn)生的分組操作數(shù)結(jié)果,“來自于第二FMAC的結(jié)果位”指的是由次級FMAC 130產(chǎn)生的分量操作數(shù)結(jié)果。
對于這樣的由FMAC執(zhí)行的指令來說,附加的控制信號被提供給FMAC來更改單元的運(yùn)算。舉例來說,F(xiàn)MAC可以被用來把浮點(diǎn)操作數(shù)轉(zhuǎn)換為整型操作數(shù)。轉(zhuǎn)換預(yù)算可以對矢量和標(biāo)量操作數(shù)同時適用。矢量和標(biāo)量所要求的移位操作是不同的,因此一個分開的控制信號被提供來調(diào)整FMAC運(yùn)算。前面討論過的多重累加運(yùn)算,它包括矩陣乘法和協(xié)同轉(zhuǎn)換,它可以無需這樣的FMAC單元內(nèi)部的更改而進(jìn)行處理。
提供給系統(tǒng)進(jìn)行處理SIMD或者矢量運(yùn)算的就是使用標(biāo)量和矢量執(zhí)行單元的結(jié)合。必須減少必須添加到系統(tǒng)中的附加執(zhí)行硬件總數(shù),而標(biāo)量執(zhí)行硬件的性能必須被保持。該系統(tǒng)采用一個寄存器文件,該文件有每個分組操作數(shù)的分量操作數(shù)的隱含位。一個加載轉(zhuǎn)換單元包括一個邏輯部件,它可以在加載運(yùn)算期間測試每個分量操作數(shù)為非標(biāo)準(zhǔn)化的還是0,它還可以根據(jù)這個來設(shè)置相關(guān)的隱含位。為每個系統(tǒng)中的管道提供了一個標(biāo)量和一個矢量執(zhí)行單元。一個操作數(shù)傳送模塊將來自于寄存器文件的數(shù)據(jù)提供給標(biāo)量和矢量執(zhí)行單元。對于SIMD運(yùn)算來說,操作數(shù)傳送單元從寄存器文件中檢索分組操作數(shù),通過位處理將分量操作數(shù)轉(zhuǎn)換為未分組操作數(shù),將該未分組操作數(shù)提供給標(biāo)量執(zhí)行單元以備處理,另一個分量操作數(shù)被提供給矢量執(zhí)行單元。位處理邏輯部件包括軌跡路由選擇和反向器,它為標(biāo)量和矢量運(yùn)算而對系統(tǒng)性能造成的影響是最小的。
權(quán)利要求
1.一種方法,包括為寄存器文件入口檢索浮點(diǎn)操作數(shù);測試浮點(diǎn)操作數(shù)的選擇位;當(dāng)選擇位處于第一狀態(tài)的時候,設(shè)置寄存器文件入口中的一個隱含位。
2.權(quán)利要求1的方法,其中,測試浮點(diǎn)操作數(shù)的選擇位包括從選擇位中確定該浮點(diǎn)操作數(shù)為非標(biāo)準(zhǔn)或者0。
3.權(quán)利要求1的方法,其中,測試浮點(diǎn)操作數(shù)的選擇位包括識別浮點(diǎn)操作數(shù)的分量位;和確定每個分量位是否為0。
4.權(quán)利要求1的方法,其中,浮點(diǎn)操作數(shù)是分組的操作數(shù),它有多個分量操作數(shù)并且每個寄存器文件入口都有一個固定的位對應(yīng)每個分量操作數(shù)。
5.權(quán)利要求4的方法,其中,測試浮點(diǎn)入口的選擇位包括識別每個分量操作數(shù)確認(rèn)其分量位;和確定每個分量操作數(shù)的指數(shù)位是否為0。
6.權(quán)利要求5的方法,其中,設(shè)置隱含位包括當(dāng)分量操作數(shù)中的每個分量位都為0的時候,將分量操作數(shù)中的隱含位設(shè)置為0;和當(dāng)分量操作數(shù)中的至少一個指數(shù)位為非0的時候,將分量操作數(shù)中的隱含位設(shè)置為1。
7.權(quán)利要求6的方法,其中,寄存器入口是一個82位的寄存器入口,它容納兩個64位的浮點(diǎn)操作數(shù)并為每個操作數(shù)擁有一個相關(guān)聯(lián)的隱含位。
8.一種將分組的操作數(shù)加載到浮點(diǎn)寄存器文件入口中的方法,該方法包括為分組操作數(shù)的每個分量操作數(shù)將有效位和指數(shù)位復(fù)制到寄存器文件入口中的相應(yīng)字段中;為每個分量操作數(shù)確定它是否為標(biāo)準(zhǔn)化的;和將與每個標(biāo)準(zhǔn)化的分量指數(shù)相關(guān)的隱含位設(shè)置為第一狀態(tài)。
9.權(quán)利要求8的方法,其中,確定每一個分量操作數(shù)是否為標(biāo)準(zhǔn)化包括測試分量操作數(shù)的分量位。
10.權(quán)利要求9的方法,其中,測試指數(shù)位包括確定每個指數(shù)位是否是非0;和當(dāng)分量操作數(shù)包括至少一個非0的指數(shù)位的時候,確認(rèn)該分量操作數(shù)為標(biāo)準(zhǔn)化的。
11.權(quán)利要求10的方法,其中,將與每個未標(biāo)準(zhǔn)化的分量指數(shù)相關(guān)的隱含位設(shè)置為第二狀態(tài)。
12.一種處理器,包括一個數(shù)據(jù)高速緩沖存儲器;一個包括多個入口的浮點(diǎn)寄存器文件,其中每個入口有一個或多個相關(guān)聯(lián)的隱含位;和一個加載轉(zhuǎn)換器,它將浮點(diǎn)操作數(shù)從數(shù)據(jù)高速緩存器連接至寄存器入口之一,加載轉(zhuǎn)換器包括測試浮點(diǎn)操作數(shù)的選擇位和依據(jù)測試結(jié)果將相應(yīng)的隱含位設(shè)置為第一或者第二邏輯狀態(tài)的邏輯。
13.權(quán)利要求12的處理器,其中,選擇位就是浮點(diǎn)操作數(shù)的指數(shù)位。
14.權(quán)利要求13的處理器,其中,包括的邏輯是一個OR門,它擁有數(shù)目等于指數(shù)位數(shù)的輸入端。
15.權(quán)利要求12的處理器,其中,浮點(diǎn)操作數(shù)是擁有多個分量操作數(shù)的分組操作數(shù),每個分量操作數(shù)擁有一個相應(yīng)的寄存器入口的隱含位。
16.權(quán)利要求15的處理器,其中,加載轉(zhuǎn)換器包括每個分量操作數(shù)的測試邏輯。
全文摘要
這一部分提供了把浮點(diǎn)操作數(shù)加載到擁有一個或者是一個以上的寄存器文件入口的方法。分組浮點(diǎn)操作數(shù)包括多個分量操作數(shù)。每一個分量操作數(shù)的有效位和冪位被拷貝到寄存器入口的相應(yīng)字段中,冪位被檢驗(yàn)以確定分量操作數(shù)是否被格式化。當(dāng)分量操作數(shù)被格式化,分量操作數(shù)相應(yīng)的隱含位就會被設(shè)置。
文檔編號G06F9/318GK1335957SQ9981631
公開日2002年2月13日 申請日期1999年12月8日 優(yōu)先權(quán)日1998年12月30日
發(fā)明者S·馬金尼, S·基姆恩, G·B·多施, R·A·戈利維 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1