專利名稱:執(zhí)行乘法函數(shù)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本公開一般涉及計算機(jī)處理器技術(shù),更具體地但不排他地,涉及 處理器中的算術(shù)運算。
背景技術(shù):
許多現(xiàn)代計算體系結(jié)構(gòu)提供了硬件倒數(shù)指令Y-recip(X)以計算操 作數(shù)(例如X)的倒數(shù)的近似值。這種倒數(shù)指令對于實現(xiàn)浮點除法函數(shù) 非常有用。它一般還對于在軟件實現(xiàn)許多其它代數(shù)函數(shù)和超越函數(shù)(例 如立方根、正弦、余弦、指數(shù)和對數(shù)運算)時減少自變量非常有用。例 如,由于浮點除法比加法、減法和乘法更加復(fù)雜,因此處理器可首先 使用硬件倒數(shù)指令計算recip(B),然后進(jìn)行A與recip(B)之間的乘法運 算,而不是用硬件實現(xiàn)浮點除法運算A/B。
通常,硬件倒數(shù)指令Y^recip(X)具有如下性質(zhì)
7=,.(1國£), |扭 (1)
其中A是統(tǒng)一閾值。例如,對于IntefltanhmT處理器A約為r88, 以使倒數(shù)精確到至少大約8.8有效位。近似的倒數(shù)Y然后可被"求精,, 到完全精確的倒數(shù),或在求精過程中用于獲得完全精確的商,其中X 為分母。在提供了近似倒數(shù)的情況下,處理體系結(jié)構(gòu)通常提供額外支 持,使得可以方便地計算上面提到的求精。通用的額外支持是所謂的 積和熔力口(fUsed-multiply-add)指令,其中準(zhǔn)確地計算AxB+C的值,之 后再將其舍入到所討論的浮點格式(與先計算A*B、接著將AxB的結(jié) 果舍入、然后再加上C相反)。通過先計算Y=recip(X),然后計算 E=1-Y*X,來實現(xiàn)求精過程。隨后是涉及Y和E的適當(dāng)計算序列。在 許多實際情形下,觀察到值E位于關(guān)^:路徑。然而,在許多情況下,實際上不需要值recip(X)。因此,希望通過在求精過程的關(guān)鍵過程中 去除recip(X)計算來減少求精過程的等待時間。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種處理器,包括倒數(shù)殘差算術(shù) 邏輯單元(ALU),用于計算浮點值的倒數(shù)殘差值。
根據(jù)本發(fā)明的另一方面,提供一種計算系統(tǒng),包括存儲器,用 于存儲倒數(shù)殘差指令和浮點值X;以及處理器,耦合到所述存儲器, 用于從所述存儲器取所述倒數(shù)殘差指令和X,所述處理器具有倒數(shù)殘 差算術(shù)邏輯單元(ALU)以執(zhí)行所述倒數(shù)殘差指令,所述倒數(shù)殘差指令 計算X的倒數(shù)殘差值,X的所述倒數(shù)殘差值是l-X^ecip(X), recip(X) 是X的倒數(shù)值。
根據(jù)本發(fā)明的又一方面,提供一種用于計算浮點值(X)的倒數(shù)殘差 值的設(shè)備,包括乘法器,用于產(chǎn)生X,與X,倒數(shù)值的乘積X,4ecip(X,), X,是X的標(biāo)準(zhǔn)化值,recip(X,)是X,的倒數(shù)值;加法器,用于執(zhí)行 l-X,*recip(X,),并獲得X的所述倒數(shù)殘差值的中間結(jié)果;以及標(biāo)準(zhǔn)化 器/舍入器,用于將所述中間結(jié)果標(biāo)準(zhǔn)化,將標(biāo)準(zhǔn)化的中間結(jié)果舍入, 并輸出X的所述倒數(shù)殘差值的最終結(jié)果。
根據(jù)本發(fā)明的再一方面,提供一種用于計算浮點值(X)的倒數(shù)殘差 值的方法,包括接收浮點值X;將X標(biāo)準(zhǔn)化以獲得X的標(biāo)準(zhǔn)化值X,; 以及通過計算l-X"recip(X,)來計算X的倒數(shù)殘差值,recip(X,)是X, 的倒數(shù)值。
根據(jù)以下對所公開主題的詳細(xì)描述,該主題的特征和優(yōu)點將變得 更清楚,附圖中
圖1示出倒數(shù)殘差單元可包含在系統(tǒng)的處理器中以計算浮點值的 倒數(shù)殘差的 一 個示例計算系統(tǒng);圖2示出倒數(shù)殘差單元可包含在系統(tǒng)的處理器中以計算浮點值的
倒數(shù)殘差的另一個示例計算系統(tǒng);
圖3示出倒數(shù)殘差單元可包含在系統(tǒng)的處理器中以計算浮點值的 倒數(shù)殘差的又 一 個示例計算系統(tǒng);
圖4示出具有用于計算浮點值的倒數(shù)殘差的倒數(shù)殘差單元的處理 器的一部分;
圖5示出可用于計算浮點值的倒數(shù)殘差的倒數(shù)殘差單元的框圖; 以及
圖6是用于計算浮點值的倒數(shù)殘差的一個示例過程的流程圖。
具體實施例方式
根據(jù)本申請中所公開主題的實施例,用于計算浮點數(shù)X的倒數(shù)殘 差的新函數(shù)定義為recip—residual(X)=l-X*recip(X),其中recip(X)表 示X的倒數(shù)。該函數(shù)可使用處理器中的積和熔加單元來實現(xiàn),并且直 接返回X的倒數(shù)殘差值。X的倒數(shù)值recip(X)可從查找表中獲得。 recip—residual函數(shù)可被實現(xiàn)為在等待時間上相當(dāng)于倒數(shù)函數(shù)的等待時 間。recip_residual函數(shù)可幫助減少基于多個數(shù)的乘積并且對于各個數(shù) 可用筒單的函數(shù)項來表示(例如1og(lPV)-log(U)+log(V))的許多乘法 函數(shù)的等待時間。
在說明書中提到所公開主題的"一個實施例"或"實施例"是指結(jié)合 該實施例描述的特定特征、結(jié)構(gòu)或特性包含在所公開主題的至少一個 實施例中。因此,在說明書通篇各處出現(xiàn)的短語"在一個實施例中,,不 一定都指同一個實施例。
圖1示出根據(jù)本申請中所公開主題的實施例的一個示例計算系統(tǒng) 100,其中倒數(shù)殘差單元可包含在系統(tǒng)的處理器中以計算浮點數(shù)的倒 數(shù)殘差。計算系統(tǒng)100可包括耦合到系統(tǒng)互連115的一個或更多處理 器110。處理器110可具有多個或許多處理核心(為了描述的簡潔,術(shù) 語"多個核心"在下文將用于包含多個處理核心和許多處理核心)。計算系統(tǒng)100還可包含耦合到系統(tǒng)互連115的芯片組130。芯片組130可 包含一個或更多集成電路封裝或芯片。芯片組130可包括一個或更多 裝置接口 135,以支持向和/或從計算系統(tǒng)IOO其它組件160諸如鍵盤、 鼠標(biāo)、網(wǎng)絡(luò)接口等的數(shù)據(jù)傳送。裝置接口 135可通過總線165與其它 組件160耦合。芯片組130可耦合到外圍組件互連(PCI)總線185。芯 片組130可包含向PCI總線185提供接口的PCI橋145。 PCI橋145 可提供處理器110以及其它組件160與外圍裝置例如音頻裝置180之 間的數(shù)據(jù)路徑。盡管未示出,但其它裝置也可耦合到PCI總線185。
另夕卜,芯片組130可包括通過存儲器總線155耦合到主存儲器150 的存儲器控制器125。主存儲器150可存儲數(shù)據(jù)和由處理器110的多 個核心或包含在系統(tǒng)內(nèi)的任何其它裝置執(zhí)行的指令序列。存儲器控制 器125可響應(yīng)與處理器IIO的多個核心和計算系統(tǒng)100中的其它裝置 關(guān)聯(lián)的存儲器事務(wù)處理來存取主存儲器150。在一個實施例中,存儲 器控制器125可位于處理器IIO或某些其它電路中。主存儲器150可 包括提供可尋址存儲位置的各種存儲器裝置,存儲器控制器125可/人 該可尋址存儲位置讀取數(shù)據(jù)和/或向其寫入數(shù)據(jù)。主存儲器150可包括 一種或多種不同類型的存儲器裝置,諸如動態(tài)隨機(jī)存取存儲器(DRAM) 裝置、同步DRAM (SDRAM)裝置、雙倍數(shù)據(jù)速率(DDR) SDRAM裝 置或其它存儲器裝置。
此外,芯片組130可包含通過總線195耦合到硬盤驅(qū)動器(HDD) 190(或圖中未示出的其它盤驅(qū)動器)的盤控制器170。該盤控制器允許 處理器110與HDD 190通信。在一些實施例中,盤控制器170可集成 到盤驅(qū)動器(例如HDD 190)中??纱嬖隈詈媳P控制器170和HDD 190 的不同類型的總線,例如高級技術(shù)附件(ATA)總線和PCI Express (PCI-E)總線。
處理器110可具有用于執(zhí)行算術(shù)運算的算術(shù)邏輯單元(ALU)(圖中 未示出)。ALU可執(zhí)行定點和浮點數(shù)據(jù)的算術(shù)運算。ALU可包含用于 計算浮點數(shù)的倒數(shù)殘差的倒數(shù)殘差單元112。浮點數(shù)X的倒數(shù)殘差定義為1 - X*recip(X),其中recip(X)是X的倒數(shù),并可從查找表獲得。 倒數(shù)殘差單元112可設(shè)計成獲得X的倒數(shù)殘差在等待時間上相當(dāng)于計 算X的倒數(shù)的等待時間。在許多應(yīng)用中,諸如獲得除法運算精確結(jié)果 的求精過程, 一個數(shù)的倒數(shù)殘差值而不是倒數(shù)值位于關(guān)鍵路徑。因此, 通過使用查找表得到一個數(shù)的倒數(shù),使倒數(shù)殘差單元112直接獲得一 個數(shù)的倒數(shù)殘差,可減少某些函數(shù)諸如浮點除法的等待時間。
圖2示出根據(jù)本申請中所公開主題的實施例的另 一個示例計算系 統(tǒng)200,其中倒數(shù)殘差單元可包含在系統(tǒng)的處理器中以計算浮點數(shù)的 倒數(shù)殘差。系統(tǒng)200可包括多個處理器,諸如處理器0 220A。系統(tǒng) 200中的一個或更多處理器可具有多個核心。 一個或更多處理器(例如 220A)可包含用于計算浮點數(shù)X的倒數(shù)殘差的倒數(shù)殘差單元(例如 240A或240M)。浮點數(shù)X的倒數(shù)殘差定義為1 - X*recip(X),其中 recip(X)是X的倒數(shù),并可從查找表獲得。通過使用查找表得到一個 浮點數(shù)的倒數(shù),使倒數(shù)殘差單元(例如240A)直接獲得一個數(shù)的倒數(shù)殘 差,可減少某些函數(shù)諸如浮點除法的等待時間。應(yīng)當(dāng)注意,盡管示出 圖中的每個處理器都包含倒數(shù)殘差單元,但是沒必要每個處理器都具 有這樣的單元。 一些處理器可具有倒數(shù)殘差單元,而其它的可以不包 含這樣的單元。
系統(tǒng)200中的處理器可使用系統(tǒng)互連210相互連接。系統(tǒng)互連210 可以是前端總線(FSB)。每個處理器都可通過系統(tǒng)互連而連接到輸入/ 輸出(IO)裝置以及存儲器230。
圖3示出根據(jù)本申請中所公開主題的實施例的又一示例計算系統(tǒng) 300,其中倒數(shù)殘差單元可包含在系統(tǒng)的處理器中以計算浮點數(shù)的倒 數(shù)殘差。在系統(tǒng)300中,連4^多個處理器(例如320A、 320B、 320C和 320D)的系統(tǒng)互連310是基于鏈路的點對點連接。每個處理器可通過 鏈路集線器(例如330A、 330B、 330C和330D)連接到系統(tǒng)互連。在一 些實施例中,鏈路集線器可與存儲器控制器處于同一位置,該存儲器 控制器協(xié)調(diào)到/來自系統(tǒng)存儲器的業(yè)務(wù)量。 一個或更多處理器可具有多個核心。
一個或更多處理器(例如320A)可包含用于計算浮點數(shù)X的倒數(shù)殘 差的倒數(shù)殘差單元(例如340A、 340B、 340C或340D)。浮點數(shù)X的倒 數(shù)殘差定義為1-X*recip(X),其中recip(X)是X的倒數(shù),并可從查找 表獲得。通過使用查找表得到一個浮點數(shù)的倒數(shù),使倒數(shù)殘差單元(例 如340A)直接獲得一個數(shù)的倒數(shù)殘差,可減少某些函數(shù)諸如浮點除法 的等待時間。應(yīng)當(dāng)注意,盡管示出圖中的每個處理器都包含倒數(shù)殘差 單元,但是沒必要每個處理器都具有這樣的單元。 一些處理器可具有 倒數(shù)殘差單元,而其它的可不包含這樣的單元。
圖4示出根據(jù)本申請中所公開主題的實施例具有用于計算浮點數(shù) 倒數(shù)殘差的倒數(shù)殘差單元的處理器400的一部分。處理器400包括取 /預(yù)取單元410、解碼器單元420、重命名單元430、保留站/調(diào)度單元 440、地址生成器450、 MOB/LB/SB 460和執(zhí)行單元470。應(yīng)注意的是, 對于上述每個組件,處理器400可包含更多的單元(例如,處理器400 可具有多于一個解碼器單元)。處理器400也可包括圖中未示出的其它 組件(例如,處理器400可包含存儲指令和數(shù)據(jù)的一級高速緩存)。
取/預(yù)取單元410為解碼器單元420取或預(yù)取指令/數(shù)據(jù),解碼器單 元420對指令進(jìn)行解碼。重命名單元430給適當(dāng)?shù)闹噶罨蛭⒅噶?微操 作)分配寄存器。保留站/調(diào)度單元440調(diào)度并存儲指令或微指令,諸 如對應(yīng)于加載和存儲的微指令,直到它們各自的目標(biāo)地址被確定下來 為止。當(dāng)從保留站分派加載和存儲時,可將它們發(fā)送到地址生成器 450,地址生成器450為要發(fā)送到存儲器或高速緩存的加載和存儲生 成對應(yīng)的線性地址。加載操作通常從保留站被分派到存儲排序緩沖區(qū) (MOB)(圖中示為MOB/LB/SB(存儲緩沖區(qū))460)內(nèi)的加載緩沖區(qū)(LB), 在其中檢查加載是否與其它存儲操作沖突和相關(guān)。如果與其它存儲操 作沒有沖突或相關(guān),則加載操作可被分派到存儲器/高速緩存簇。否則, 加載操作在被分派到存儲器/高速緩存之前必須在MOB中等待,直到 解決了相關(guān)和/或沖突為止。 一旦加載被分派到存儲器/高速緩存,存儲器/高速緩存就可將該加載所針對的數(shù)據(jù)返回到保留站440,保留站 440可使用加載的數(shù)據(jù)生成要從調(diào)度器/保留站440分派的某個連續(xù)微 指令的下一個操作數(shù)的地址。
存儲操作,其可包含STA微指令,它可以遵循與加載類似的路徑。 然而,通常不允許存儲不按程序順序被分派到存儲器/高速緩存,而當(dāng) 加載與其它存儲操作之間不存在相關(guān)/沖突時,加載可在任何時候被分 派到存儲器/高速緩存。在一些處理器中,MOB(例如460)用于按正確 順序存儲加載和存儲操作,使得在加載操作之前分派用于將信息寫入 存儲器位置的所有存儲操作,并允許將它們的信息寫入存儲器,該加 載操作可使用來自同一地址的信息。與程序順序中較早的存儲操作相 比,在對應(yīng)的加載梯:作(即與較早的存儲操作具有相同目標(biāo)地址的加載 操作)之前出現(xiàn)在程序順序中的存儲操作可被稱為"較老的"存儲操作, 而對應(yīng)的加載操作可^L稱為"較新的"加載操作。
如果加載與存儲之間不存在相關(guān)/沖突,則相對于存儲,加載可不 按程序順序存取存儲器。在一些處理器中,假定在較老的未決存儲之 前處理的加載總是對應(yīng)于相同的目標(biāo)存儲器地址,以便防止如下機(jī) 會較早處理的加載會加載要由較老的存儲更新的數(shù)據(jù),并因此通過 返回過時信息而在它們對應(yīng)的無論什么程序中都產(chǎn)生不正確的結(jié)果。
執(zhí)行單元470可解碼指令和從存儲器或高速緩存加載的數(shù)據(jù)。執(zhí) 行單元可包含眾多專用單元,諸如整數(shù)單元、浮點單元、分支單元及 其它。執(zhí)行單元470可包含用于計算浮點數(shù)的倒數(shù)殘差值的倒數(shù)殘差 單元480。倒數(shù)殘差單元480可直接返回一個數(shù)的倒數(shù)殘差,而無需 先計算這個數(shù)的倒數(shù)(其可從查找表中獲得)。下面更詳細(xì)地描述倒數(shù) 殘差單元470。
圖5示出根據(jù)本申請中所公開主題的實施例的倒數(shù)殘差單元500 的才匡圖,其可用于計算浮點凄丈X的倒數(shù)殘差,即1 - X*recip(X)。倒 凄t殘差單元500可包括預(yù)處理單元510、至少一個查找表520、乘法 器540、對齊邏輯550、加法器560及標(biāo)準(zhǔn)化器/舍入器570。圖5示出倒數(shù)殘差單元500還包含指數(shù)比較器530和符號位邏輯580。這兩
個組件連同乘法器540、對齊邏輯550、加法器560及標(biāo)準(zhǔn)化器/舍入
器570 —起對于積和熔加ALU 590通常是必需的。通過包含指數(shù)比較
器530和符號位邏輯580,圖5示出在一個實施例中可使用現(xiàn)有的積
和熔加ALU來實現(xiàn)倒數(shù)殘差單元500。實際上,對于計算1 - X*recip(X)
沒必要具有指數(shù)比較器或符號位邏輯,因為在X饤ecip(X)的運算中X
與recip(X)的符號和指數(shù)會相互抵消。因此,在本申請中所公開主題
的另一個實施例中,倒數(shù)殘差單元可不使用現(xiàn)有的積和熔加ALU來
實現(xiàn),并且可能沒有指數(shù)比較器或符號位邏輯。
倒數(shù)殘差單元500接收浮點數(shù)(示為502) X,其可用[s, K, B]格式
來表示,其中K和B以二進(jìn)制格式來表示(例如,K-kwkj.2.,.k!ko;
B:bo.b山2…bN-!)。 X的值等于(-1)3*8*2\ B和K還分別被稱為X的
尾數(shù)和指數(shù)。預(yù)處理單元510將X的尾數(shù)B作為輸入接收,并將它舍
入到L有效位,其中L〈-N(例如,1^8而N-24)。通常,B的b。為1,
并且在上舍入之后bt.尸l。結(jié)果,舍入的尾數(shù)B,可用二進(jìn)制格式來表
示,諸如l.bHl。
查找表520將1)山2...1^.2作為輸入(圖中示為514)接收,在表中進(jìn)
行查找,并輸出B,的倒數(shù)(即1/B,l/(l.b山2…bL-21))。查找表520預(yù)存
儲B,所有可能值的倒數(shù)值。由于B,有L-2位是可變的,因此查找表
520可預(yù)先設(shè)計為(L-2)位查找表。B,的倒數(shù)值可以是M位長,并且可
用二進(jìn)制格式來表示,諸如0.1Z2…ZM.^M。 L和M可以是靈活的,取
決于性能和實際情況(real-estate)的折衷。通常M>L,例如M=L+2?;?本上,查找表520產(chǎn)生X的標(biāo)準(zhǔn)化值(即X,-(-l)、B-(-l)、(l.b山2…bN-0) 的倒數(shù)值。由于在X4ecip(X)的運算中X與recip(X)的指數(shù)部分會相 互抵消,因此,X的倒數(shù)殘差通常與X,的倒數(shù)殘差相同,即, l-X*recip(X)=l-X,*recip(X,)。實際上,使用recip(X,)而不是recip(X) 來獲得X的倒數(shù)殘差具有其優(yōu)勢。例如,當(dāng)X的絕對值非常小/大時, recip(X')不太可能下溢或溢出,而recip(X)可能下溢/溢出。當(dāng)使用現(xiàn)有的積和熔加ALU時,預(yù)處理單元也可接收X的指數(shù) (即K),并產(chǎn)生recip(X)的指數(shù)(圖中示為512),其為-K。 X的指數(shù) 506、 recip(X)的指數(shù)512以及1的指數(shù)516(其為O)被輸入到指數(shù)比較 器530,指數(shù)比較器530比較(X的指數(shù)+ recip(X)的指數(shù))的值與1的 指數(shù)。這兩項中較大者為輸出534,還有一個輸出是指示哪一項較大 的指示符和輸出534與另一項之差(指示符和差在圖中示為532)。符號 位邏輯580接收X的符號(示為504),并處理輸入數(shù)據(jù)的符號,就像 它對于積和熔加ALU所做的那樣。如上所述,對計算X的倒數(shù)殘差 值來說,沒必要具有指數(shù)比較器或符號位邏輯。當(dāng)使用現(xiàn)有的乘加 ALU時,給現(xiàn)有的指數(shù)比較器和現(xiàn)有的符號位邏輯提供它們的期望輸 入是很方便的,即便它們的輸出可能不影響X倒數(shù)殘差值的計算。
乘法器540接收來自查找表520的輸出525以及X的尾數(shù)B (bo.b山2…b]^)。輸出525用二進(jìn)制格式(例如0.1z2…Zm.!Zm00…0)表示 recip(B,)的尾數(shù),其是X的標(biāo)準(zhǔn)化值X,的近似倒數(shù)。乘法器540計算 輸出525與X的尾數(shù)B的乘積。換句話說,乘法器540產(chǎn)生X,與 recip(X,)的乘積(圖中示為545)。
對齊邏輯550接收來自乘法器540的X,與recip(X,)的乘積545、 為1的輸入552以及來自指數(shù)比較器530的指示符和差532。基于指 示符和差532,對齊邏輯550對齊乘積545中的位和輸入552中的位。 如果指示符和差550為0,這意味著1的指數(shù)等于X的指數(shù)力口上recip(X) 的指數(shù),則對齊邏輯550不需要對乘積545或輸入552做任何處理。 如上面提到的,X的指數(shù)加上recip(X)的指數(shù)的結(jié)果通常為0,也就是, 當(dāng)?shù)箶?shù)殘差單元500正在計算浮點數(shù)據(jù)的倒數(shù)殘差時,對齊邏輯550 通常什么也不做。對齊邏輯550在這里主要是因為積和熔加ALU用 于計算浮點數(shù)據(jù)的倒數(shù)殘差。在另一個實施例中,如果不^f吏用積和熔 加ALU,則在倒數(shù)殘差單元中可能就不需要對齊邏輯。
加法器560 收到對齊邏輯550的乘積545和輸入552,因為對 齊邏輯550可能已將它們每個都移位成相互對齊了 ,因此加法器560執(zhí)行加法運算,從輸入552減去乘積545,即l-X,*recip(X,),以產(chǎn)生 倒數(shù)殘差l-X"recip(X,)的中間結(jié)果565。
標(biāo)準(zhǔn)化器/舍入器570將中間結(jié)果565標(biāo)準(zhǔn)化,以使尾數(shù)量值的最 高有效位為非零。標(biāo)準(zhǔn)化器/舍入器570生成所規(guī)定運算的標(biāo)準(zhǔn)化結(jié) 果,并且還可生成"粘滯"位,這在浮點算術(shù)領(lǐng)域是眾所周知的,其產(chǎn) 生有關(guān)在標(biāo)準(zhǔn)化過程中去除的任何位的信息。如果提供了粘滯位,標(biāo) 準(zhǔn)化器/舍入器570還使用粘滯位將標(biāo)準(zhǔn)化的結(jié)果舍入,并返回倒數(shù)殘 差單元500的運算結(jié)果(圖中示為575),其被舍入并格式化成實現(xiàn)倒數(shù) 殘差單元500所根據(jù)的浮點格式。盡管在典型的積和熔加運算中,來 自符號位邏輯580的輸出585和指數(shù)比較器530的輸出534可與輸出 575 —起用來形成倒數(shù)殘差單元500的最終輸出595,但是當(dāng)單元500 僅執(zhí)行倒數(shù)殘差運算時,最終輸出595通常與標(biāo)準(zhǔn)化器/舍入器570的 輸出575 —樣。
因為根據(jù)X,的近似值(被舍入到L有效位),recip(X,)是M位長, 因此1-乂,*^(^(乂,)中的至少前!^位會抵消。因此,在乘法器540和 加法器560中的計算都不要求一般的積和熔加能力。乘法器540可只 需將X,4ecip(X,)的最低有效部分計算到相當(dāng)于無論什么工作精度都 期望的寬度。此外,用于recip(X,)的查找表520可以任何形式存儲, 包括布斯編碼形式,以進(jìn)一步加快乘法運算。
圖6是用于計算浮點數(shù)倒數(shù)殘差的一個示例過程600的流程圖。 在框610,可接收以實現(xiàn)倒數(shù)殘差單元(例如500)所根據(jù)的格式的浮點 數(shù)X。例如,XK-l),2KK誦l)、2、(l.bHD,其中K可以是J 位長,即,K-kwkj.2…k!ko。在框620,可將X標(biāo)準(zhǔn)化以獲得 X,K-l)、(l.b山2…bN-!)。在框630,可從查找表(例如圖5中的520)中 獲得X,的近似倒數(shù)。在框640,可通過乘法器計算X,與recip(X,)的乘 積。在框650,可使用加法器計算Y=l-X,*recip(X,)。在框660,可 將Y標(biāo)準(zhǔn)化,以使尾數(shù)量值的最高有效位為非零。在框670,可將標(biāo) 準(zhǔn)化的Y舍入并格式化成期望的浮點格式。在函數(shù)的乘法類型計算中倒數(shù)殘差指令是非常有用的。這是一個
例子
log2(X) = log2(2fc"
=fc + log2(X'recip(A"')/recip(X'))
=fc + log2(l/recippO) + log2(l - (1 - JTrecippO)
=fc+tbUog2pC)+log2(l —丑),其中tbUog2(;0 =log2(l/recip(X'))且£ = 1 — X'recip(X') w + tbUog2(X) + polynomial^)
這個例子示例說明了可以如何 一 起4吏用E=recip—residual(X)和 tbl—1og2(X)(其可通過查找一個表獲得)。在recip—residual值估算的適 當(dāng)多項式可應(yīng)用于通用乘法函數(shù)。查找表中的任何值一般都是工作精 度數(shù)。這是另一個例子
= v/recipW/VXrecippO
=VWp(;C) x (1 —丑)-1/2, 其中五=1 _ X'recip(;T) tbI_sqrtpQ x polynomial(丑)
一般,可以通過倒數(shù)函數(shù)的無論什么適當(dāng)?shù)碾[式定義來定義
recip—residual函數(shù)。所附的表查找函數(shù)可幫助計算函數(shù),只要該函數(shù) 本質(zhì)上是乘法的,并容許在x-l附近進(jìn)行簡單且快速的收斂級數(shù)展開。
盡管參考圖1-4中的框圖及流程圖描述了所公開主題的示例實施 例,但是本領(lǐng)域普通技術(shù)人員容易理解,可以備選地使用實現(xiàn)所公開 主題的許多其它方法。例如,可以改變流程圖中框的執(zhí)行順序,和/ 或可以改變、去除或合并所描述的框圖/流程圖中的一些框。
在前面的描述中,已經(jīng)描述了所7>開主題的各種方面。為了說明 目的,闡述了具體數(shù)量、系統(tǒng)和配置以便提供對該主題的透徹理解。
細(xì)節(jié)的情況下實施該主題。在其它實例中,省略、簡化、合并或拆分 了眾所周知的特征、組件或模塊,以免模糊了所公開的主題。
所公開主題的各種實施例可用硬件、固件、軟件或者它們的組合 來實現(xiàn),并且可參考或者結(jié)合程序代碼進(jìn)行描述,程序代碼諸如指令、 函數(shù)、過程、數(shù)據(jù)結(jié)構(gòu)、邏輯、應(yīng)用程序、用于設(shè)計模擬、仿真和制 造的設(shè)計表示或格式,所述程序代碼當(dāng)被機(jī)器存取時,使機(jī)器執(zhí)行任務(wù),定義抽象數(shù)據(jù)類型或低級硬件上下文,或產(chǎn)生結(jié)果。
為了進(jìn)行模擬,程序代碼可使用硬件描述語言或者另一種功能描 述語言來表示硬件,所述語言實質(zhì)上提供一種期望如何執(zhí)行所設(shè)計硬 件的模型。程序代碼可以是匯編語言或機(jī)器語言,或者可被編譯和/ 或解釋的數(shù)據(jù)。此外,在本領(lǐng)域一般將軟件說成以一種形式或另一種 形式進(jìn)行活動或者引起結(jié)果。這種表述只是陳述由處理系統(tǒng)運行^f吏處 理器執(zhí)行活動或者產(chǎn)生結(jié)果的程序代碼的簡略方式。
程序代碼例如可存儲在易失性和/或非易失性存儲器中,諸如存儲 裝置和/或關(guān)聯(lián)的機(jī)器可讀或機(jī)器可存取介質(zhì),包括固態(tài)存儲器、硬盤 驅(qū)動器、軟盤、光存儲器、帶、閃存、存儲棒、數(shù)字視頻盤、數(shù)字多 功能盤(DVD)等,以及更多的外來介質(zhì),諸如機(jī)器可存取生物態(tài)保存 存儲器。機(jī)器可讀介質(zhì)可包括用于存儲、發(fā)射或接收機(jī)器可讀形式信 息的任何機(jī)構(gòu),并且該介質(zhì)可包括電、光、聲或其它形式傳播信號或 者編碼程序代碼的載波可通過的有形介質(zhì),諸如天線、光纖、通信接 口等。程序代碼可以分組、串行數(shù)據(jù)、并行數(shù)據(jù)、傳#^言號等形式進(jìn) 行傳輸,并可以壓縮或加密格式使用。
程序代碼可用運行在可編程機(jī)器上的程序來實現(xiàn),可編程機(jī)器諸 如移動或固定計算機(jī)、個人數(shù)字助理、機(jī)頂盒、蜂窩電話和尋呼機(jī)以 及其它電子裝置,每個都包含處理器、處理器可讀的易失性和/或非易 失性存儲器、至少一個輸入裝置和/或一個或更多輸出裝置。程序代碼 可應(yīng)用于使用輸入裝置輸入的數(shù)據(jù),以執(zhí)行所描述的實施例并生成輸 出信息。輸出信息可應(yīng)用于一個或更多輸出裝置。本領(lǐng)域普通技術(shù)人 員可理解,所公開主題的實施例可用各種計算機(jī)系統(tǒng)配置來實施,包 括多處理器或者多核處理器系統(tǒng)、小型計算機(jī)、大型計算機(jī)以及可虛 擬地包含在任何裝置中的普及計算機(jī)或微型計算機(jī)或者處理器。所公 開主題的實施例也可實施在分布式計算環(huán)境中,在其中任務(wù)可由通過 通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置來執(zhí)行。
盡管操作可描述為順序過程,但一些操作實際上可并行地、并發(fā)地和/或在分布式環(huán)境中執(zhí)行,并且其中單或多處理器機(jī)器可存取本地 和/或遠(yuǎn)程存儲的程序代碼。另外,在一些實施例中,操作順序可以重 新安排,并不脫離所公開主題的精神。程序代碼可由嵌入式控制器使 用,或者與其一起使用。
雖然已經(jīng)參考示例性實施例描述了所公開主題,但此描述并不意 欲要解釋為限制的意義。對于所公開主題所屬領(lǐng)域的技術(shù)人員清楚的
示例性實施例的各種修改以及所述主題的其它實施例被認(rèn)為落在所 公開主題的范圍內(nèi)。
權(quán)利要求
1. 一種處理器,包括倒數(shù)殘差算術(shù)邏輯單元(ALU),用于計算浮點值的倒數(shù)殘差值。
2、 如權(quán)利要求1所述的處理器,其中所迷倒數(shù)殘差A(yù)LU包括 乘法器,用于產(chǎn)生X,與X,倒數(shù)值的乘積X,+recip(X,), X,是所述浮點值X的標(biāo)準(zhǔn)化值,redp(X,)是X,的倒數(shù)值;加法器,用于執(zhí)行l(wèi)-X"recip(X,),并獲得X的所述倒數(shù)殘差值 的中間結(jié)果,X的所述倒數(shù)殘差值是l-X ecip(X), recip(X)是X的倒 數(shù)值;以及標(biāo)準(zhǔn)化器/舍入器,用于將所述中間結(jié)果標(biāo)準(zhǔn)化,將標(biāo)準(zhǔn)化的中間 結(jié)果舍入,并輸出X的所述倒數(shù)殘差值的最終結(jié)果。
3、 如權(quán)利要求2所述的處理器,其中所述倒數(shù)殘差A(yù)LU還包括 用于將X,舍入到L有效位的部件,其中L大于1,并且不大于X,尾數(shù)中的總位數(shù)。
4、 如權(quán)利要求3所述的處理器,其中所述倒數(shù)殘差A(yù)LU還包括 (L-2)位查找表,用于返回舍入的X,的近似倒數(shù)值recip(X,)。
5、 如權(quán)利要求3所述的處理器,其中所述乘法器計算X"recip(X,) 從位(L-1)到位(L+M-1)的部分,N是所述乘法器設(shè)計成產(chǎn)生的結(jié)果的 總位數(shù)。
6、 如權(quán)利要求1所述的處理器,其中在所述處理器中使用積和 熔加ALU來實現(xiàn)所述倒數(shù)殘差A(yù)LU。
7、 一種計算系統(tǒng),包括存儲器,用于存儲倒數(shù)殘差指令和浮點值X;以及 處理器,耦合到所述存儲器,用于從所述存儲器取所述倒數(shù)殘差 指令和X,所述處理器具有倒數(shù)殘差算術(shù)邏輯單元(ALU)以執(zhí)行所述 倒數(shù)殘差指令,所述倒數(shù)殘差指令計算X的倒數(shù)殘差值,X的所述倒 數(shù)殘差值是l-X*recip(X), recip(X)是X的倒數(shù)值。
8、 如權(quán)利要求7所述的系統(tǒng),其中所述倒數(shù)殘差A(yù)LU包括 乘法器,用于產(chǎn)生X,與X,倒數(shù)值的乘積X,*recip(X,), X,是X的標(biāo)準(zhǔn)化值,recip(X,)是X,的倒數(shù)值;加法器,用于執(zhí)行l(wèi)-X,4ecip(X,),并獲得X的所述倒數(shù)殘差值 的中間結(jié)果;以及標(biāo)準(zhǔn)化器/舍入器,用于將所述中間結(jié)果標(biāo)準(zhǔn)化,將標(biāo)準(zhǔn)化的中間 結(jié)果舍入,并輸出X的所述倒數(shù)殘差值的最終結(jié)果。
9、 如權(quán)利要求8所述的系統(tǒng),其中所述倒數(shù)殘差A(yù)LU還包括 用于將X,舍入到L有效位的部件,其中L大于1,并且不大于X,尾數(shù)中的總位數(shù)。
10、 如權(quán)利要求9所述的系統(tǒng),其中所述倒數(shù)殘差A(yù)LU還包括 (L-2)位查找表,用于返回舍入的X,的近似倒數(shù)值recip(X,)。
11、 如權(quán)利要求9所述的系統(tǒng),其中所述乘法器計算X,紆ecip(X,) 從位(L-1)到位(L+M-1)的部分,N是所述乘法器設(shè)計成產(chǎn)生的結(jié)果的 總位數(shù)。
12、 如權(quán)利要求7所述的系統(tǒng),其中在所述處理器中使用積和熔 加ALU來實現(xiàn)所述倒數(shù)殘差A(yù)LU。
13、 一種用于計算浮點值(X)的倒數(shù)殘差值的設(shè)備,包括 乘法器,用于產(chǎn)生X,與X,倒數(shù)值的乘積X, ecip(X,), X,是X的標(biāo)準(zhǔn)化值,recip(X,)是X,的倒數(shù)值;加法器,用于執(zhí)行l(wèi)-X,4ecip(X,),并獲得X的所述倒數(shù)殘差值 的中間結(jié)果;以及標(biāo)準(zhǔn)化器/舍入器,用于將所述中間結(jié)果標(biāo)準(zhǔn)化,將標(biāo)準(zhǔn)化的中間 結(jié)果舍入,并輸出X的所述倒數(shù)殘差值的最終結(jié)果。
14、 如權(quán)利要求13所述的設(shè)備,還包括用于將X,舍入到L有效位的部件,其中L大于1,并且不大于X, 尾數(shù)中的總位數(shù)。
15、 如權(quán)利要求14所述的設(shè)備,還包括(L-2)位查找表,用于返回舍入的X,的近似倒數(shù)值recip(X,)。
16、 如權(quán)利要求14所述的設(shè)備,其中所述乘法器計算X"recip(X,) 從位(L-1)到位(L+M-1)的部分,N是所述乘法器設(shè)計成產(chǎn)生的結(jié)果的 總位數(shù)。
17、 如權(quán)利要求13所迷的設(shè)備,其中在處理器中使用積和熔加 算術(shù)邏輯單元來實現(xiàn)所述i殳備。
18、 一種用于計算浮點值(X)的倒數(shù)殘差值的方法,包括 接收浮點值X;將X標(biāo)準(zhǔn)化以獲得X的標(biāo)準(zhǔn)化值X,;以及通過計算l-X,^ecip(X,)來計算X的倒數(shù)殘差值,recip(X,)是X,的倒數(shù)值。
19、 如權(quán)利要求18所述的方法,還包括將X,舍入到L有效位,L大于1,并且不大于X,尾數(shù)中的總位數(shù);以及從(L-2)位查找表中獲得舍入的X,的近似倒數(shù)值recip(X,)。
20、 如權(quán)利要求18所迷的方法,其中計算l-X, ecip(X,)包括 計算X"recip(X,)從位(L-l)到位(L+M-l)的部分,N是所述乘法器設(shè)計成產(chǎn)生的結(jié)果的總位數(shù)。
21、 如權(quán)利要求18所述的方法,還包括 將<formula>formula see original document page 4</formula>的結(jié)果標(biāo)準(zhǔn)化。
22、 如權(quán)利要求21所述的方法,還包括將<formula>formula see original document page 4</formula>的標(biāo)準(zhǔn)化結(jié)果舍入,并將舍入的結(jié)果作為X的 所述倒數(shù)殘差值輸出。
全文摘要
一種用于計算浮點數(shù)X的倒數(shù)殘差的新函數(shù)定義為recip_residual(X)=1-X*recip(X),其中recip(X)表示X的倒數(shù)。在處理器中可使用積和熔加單元來實現(xiàn)該函數(shù)。X的倒數(shù)值recip(X)可從查找表中獲得。recip_residual函數(shù)可幫助減少基于多個數(shù)的乘積并且對于各個數(shù)可用簡單的函數(shù)項來表示(例如log(U*V)=log(U)+log(V))的許多乘法函數(shù)的等待時間。
文檔編號G06F7/57GK101290565SQ20081010922
公開日2008年10月22日 申請日期2008年3月28日 優(yōu)先權(quán)日2007年3月30日
發(fā)明者P·T·P·唐, R·D·卡溫 申請人:英特爾公司