欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于執(zhí)行算術(shù)運算的大小檢測的設(shè)備和方法

文檔序號:6478843閱讀:240來源:國知局
專利名稱:用于執(zhí)行算術(shù)運算的大小檢測的設(shè)備和方法
技術(shù)領(lǐng)域
本發(fā)明是關(guān)于用于執(zhí)行算術(shù)運算的大小檢測的設(shè)備和方法。
背景技術(shù)
在許多數(shù)據(jù)處理應(yīng)用中,有執(zhí)行算術(shù)運算和執(zhí)行算術(shù)結(jié)果的定標(biāo)(scaling)的需 求。用于執(zhí)行定標(biāo)的技術(shù)是塊浮點技術(shù)。在塊浮點算術(shù)中,數(shù)據(jù)單元塊被指定單一指數(shù)而 不是各數(shù)據(jù)單元具有其自己的指數(shù)。因此,所述指數(shù)是典型地通過具有最大大小的塊中的 數(shù)據(jù)單元確定。與標(biāo)準(zhǔn)浮點算術(shù)相比,塊浮點技術(shù)減少維持一系列計算中的精度所需的位 的數(shù)量。塊浮點計算典型地是在軟件中執(zhí)行以及需要在計算的各階段后的完整數(shù)據(jù)集的定 標(biāo),其可能涉及數(shù)據(jù)值的大小中的改變。維持?jǐn)?shù)據(jù)定標(biāo)以防止溢位而所需的額外指令減弱 了關(guān)于處理循環(huán)和功率消耗兩者的處理性能。因此,需求改進計算的效率,如塊浮點計算,其需求數(shù)據(jù)定標(biāo)和算術(shù)運算二者在數(shù) 據(jù)上執(zhí)行。

發(fā)明內(nèi)容
根據(jù)第一方面,本發(fā)明提供一種用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包括處理電路,其用于執(zhí)行數(shù)據(jù)處理運算;一個或多個寄存器,其用于存儲數(shù)據(jù);控制電路,其用于控制所述處理電路以執(zhí)行所述這些數(shù)據(jù)處理運算;其中所述控制電路配置成以致其響應(yīng)于組合的大小檢測算術(shù)指令,以控制所述處 理電路來執(zhí)行在存儲于所述一個或多個寄存器中的至少一個數(shù)據(jù)單元上的且由所述組合 的大小檢測算術(shù)指令指定的算術(shù)運算以及執(zhí)行大小檢測運算,其中所述大小檢測運算計算 大小指示結(jié)果,其提供所述算術(shù)運算的結(jié)果的大小的最高有效位的位置的指示,而不論所 述最高有效位位置是否超過所述至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。本發(fā)明認識到通過提供單一指令,其既執(zhí)行在至少一個數(shù)據(jù)單元上的算術(shù)運算又 執(zhí)行大小檢測運算以提供該算術(shù)運算的最高有效位的位置的指示,而不論該最高有效位位 置是否超過該數(shù)據(jù)單元的數(shù)據(jù)單元寬度,可減少用于執(zhí)行算術(shù)操控以及數(shù)據(jù)定標(biāo)兩者的算 術(shù)的程序代碼密度。提供專用指令以既計算算術(shù)結(jié)果又促進該算術(shù)結(jié)果的最高有效位的位 置的計算,意指與提供分離的大小檢測和算術(shù)運算的已知系統(tǒng)相比,共同數(shù)據(jù)操控可更有 效率地執(zhí)行。與先前已知系統(tǒng)比較,經(jīng)改進的效率對于相同功能獲得執(zhí)行較少指令、更高吞 吐量以及減少的功率消耗的結(jié)果。根據(jù)本技術(shù)的組合大小檢測算術(shù)指令可在包括僅標(biāo)量處理電路的數(shù)據(jù)處理設(shè)備 中實施。在一個實施例中,處理電路是SIMD處理電路,其設(shè)置成針對多個SIMD通道的每 個獨立地執(zhí)行算術(shù)運算,該組合大小檢測算術(shù)指令識別包括多個數(shù)據(jù)單元的至少一個SIMD 輸入矢量,算術(shù)運算在數(shù)據(jù)單元上獨立地執(zhí)行以產(chǎn)生包括相應(yīng)多個結(jié)果數(shù)據(jù)單元的SIMD 結(jié)果矢量。這提供了改進效率,因為其使得對應(yīng)于SIMD結(jié)果矢量的相應(yīng)多個結(jié)果數(shù)據(jù)單元的多個大小指示結(jié)果能實質(zhì)上同時地計算。雖然該大小指示結(jié)果可指示在SIMD結(jié)果矢量內(nèi)的該多個數(shù)據(jù)單元的任一者的最高有效位,在一個實施例中,該大小指示結(jié)果提供對應(yīng)于該SIMD結(jié)果矢量的相應(yīng)多個數(shù)據(jù) 單元的多個大小的最大者的最高有效位的指示。該大小指示結(jié)果可依各種不同格式提供,但在一個實施例,該大小指示結(jié)果包括 SIMD結(jié)果矢量,其具有分別對應(yīng)于該多個SIMD通道的多個大小指示結(jié)果值。響應(yīng)于組合大小檢測算術(shù)指令的數(shù)據(jù)處理設(shè)備的一個或多個寄存器可包括單一 寄存器組。然而,在一個實施例中,該一個或多個寄存器包括SIMD寄存器組和標(biāo)量寄存器 組。這允許SIMD系統(tǒng)中的指令的有效實施,因為該大小指示結(jié)果可存儲在標(biāo)量寄存器中。在一個實施例中,控制電路控制處理電路以在SIMD寄存器組中存儲SIMD算術(shù)運 算的結(jié)果。應(yīng)了解,大小指示結(jié)果可存儲在任何形式的內(nèi)存(memory)或?qū)S眉拇嫫髦小H?而,在一個實施例中,控制電路控制處理電路以存儲大小指示結(jié)果在通用寄存器中。在一個 實施例中,通用寄存器是SIMD寄存器且在另一個實施例中該通用寄存器是標(biāo)量寄存器。在 又另一替代實施例中,該大小指示結(jié)果存儲在專用寄存器中。算術(shù)運算可為算術(shù)運算的任何變化但在一個實施例中,算術(shù)運算是無符號算術(shù)運 算且在另一個實施例中,算術(shù)運算是帶正負號算術(shù)運算。應(yīng)了解,定標(biāo)計算可在算術(shù)運算正執(zhí)行時執(zhí)行。然而,在一個實施例中,控制電路 是響應(yīng)于組合大小檢測算術(shù)指令以執(zhí)行定標(biāo)計算以在執(zhí)行算術(shù)運算前根據(jù)由組合大小檢 測算術(shù)指令指定的定標(biāo)參數(shù)定標(biāo)該至少一個數(shù)據(jù)單元。這與其中定標(biāo)運算典型在算術(shù)運算 已執(zhí)行后執(zhí)行的已知浮點算術(shù)不同。應(yīng)了解,大小指示結(jié)果可基于算術(shù)運算的未定標(biāo)結(jié)果計算以及然后一些其它方案 可用于根據(jù)定標(biāo)將具有的已知效應(yīng)校正該結(jié)果。在一個實施例中,該控制電路響應(yīng)于組合 大小檢測算術(shù)指令以從定標(biāo)計算的輸出計算大小指示結(jié)果。雖然該組合大小檢測算術(shù)指令可為任何類型的指令,在一個實施例中,組合大小 檢測算術(shù)指令是塊浮點指令。提供組合指令減輕伴隨已知塊浮點技術(shù)的關(guān)鍵性能問題(處 理循環(huán)以及功率兩者),其需要額外指令以維持?jǐn)?shù)據(jù)定標(biāo)。應(yīng)了解,算術(shù)運算可為一些不同算術(shù)運算的任一者,但在某些實施例,算術(shù)運算是 移動加法、減法、乘法以及乘法_累計運算的至少其中之一。應(yīng)了解,該大小指示結(jié)果的計算可依一些方法的任一者執(zhí)行。在一個實施例中,控 制電路響應(yīng)于組合大小檢測算術(shù)指令以控制處理電路來在SIMD算術(shù)運算的結(jié)果的多個數(shù) 據(jù)單元的至少兩者上執(zhí)行至少一個邏輯運算以計算該大小指示結(jié)果,其中該至少一個邏輯 運算是功能上與邏輯OR運算等效。使用功能上與邏輯OR運算等效的至少一個邏輯運算的 大小指示結(jié)果的計算是實施上直接且價廉的,并且僅涉及ALU的復(fù)雜性的小增加以達到改 進效率。雖然該至少一個邏輯運算可在算術(shù)結(jié)果或結(jié)果矢量的完整數(shù)據(jù)單元上執(zhí)行,在一 個實施例中,控制電路響應(yīng)于組合大小檢測算術(shù)指令以控制處理電路來在至少兩個數(shù)據(jù)單 元的位的子集上執(zhí)行至少一個邏輯運算。這使得能通過處理較小容量的數(shù)據(jù)以更有效率地 確定最高有效位位置。在一個這樣的實施例中,該位的子集對應(yīng)于至少兩個數(shù)據(jù)單元的相應(yīng)者的一個或多個最高有效位。在一個實施例中,該控制電路響應(yīng)于組合大小檢測算術(shù)指令以控制處理電 路來檢 測SIMD算術(shù)運算的結(jié)果的多個數(shù)據(jù)單元的一個或多個,其具有負值,以及在執(zhí)行至少一個 邏輯運算前反轉(zhuǎn)該負值。在另一個實施例中,與反轉(zhuǎn)該負值不同的是,控制電路響應(yīng)于組合大小檢測算術(shù) 指令以控制處理電路來檢測SIMD算術(shù)運算的結(jié)果的多個數(shù)據(jù)單元的一個或多個,其具有 負值,以及在執(zhí)行至少一個邏輯運算前求反該負值。這使得確定最高有效位位置的準(zhǔn)確結(jié) 果能用于甚至帶正負號值的定標(biāo)目的。依此方式的數(shù)據(jù)值的求反與反轉(zhuǎn)直接實施。在一個實施例中,該控制電路響應(yīng)于組合大小檢測算術(shù)指令以控制處理電路來根 據(jù)通過組合大小檢測算術(shù)指令指定的操作數(shù)計算大小指示結(jié)果。在一個這樣的實施例中, 該至少一個邏輯運算取決于該操作數(shù)。這提供執(zhí)行大小檢測運算的額外彈性,因為例如該 操作數(shù)可在用于該至少一個邏輯運算的一個或多個寄存器中指定共同來源和目的。這還提 供通過允許將該問題分成用于結(jié)果數(shù)據(jù)值的相應(yīng)群組的大小計算的子集以組合用于大循 環(huán)的最高有效位位置計算的更有效率方式。應(yīng)了解,該大小指示結(jié)果可依各種不同方式中的任一種來后處理以導(dǎo)出最高有效 非零位的位置。然而,在一個實施例中,處理電路計算該大小指示結(jié)果以致最高有效非零位 通過執(zhí)行計數(shù)前導(dǎo)符號(CountLeading sign)指令和計數(shù)前導(dǎo)零(Count Leading Zero) 指令之一從該大小指示結(jié)果導(dǎo)出。這些預(yù)先存在的指令的使用使本技術(shù)易于實施。應(yīng)了解,該大小指示結(jié)果可依各種不同方式中的任一種存儲。然而,在一個實施例 中,控制電路控制處理電路以在一個或多個寄存器中的大小指示寄存器中存儲該大小指示 結(jié)果。在一個這樣的實施例中,該大小指示寄存器通過組合大小檢測算術(shù)指令的參數(shù)來 指定,此便于實施且允許指定適當(dāng)寄存器的靈活性。在一個實施例中,該大小指示寄存器是通用寄存器。在一些此類實施例中,通用寄 存器是SIMD寄存器和標(biāo)量寄存器中之一。雖然該組合大小檢測算術(shù)指令可包含在其中需要算術(shù)結(jié)果的大小的指示的程序 代碼中的任何地方,在一個實施例中,該組合大小檢測算術(shù)指令在指令的循環(huán)內(nèi)提供,以致 大小指示結(jié)果針對循環(huán)的各迭代計算。提供單一指令以執(zhí)行算術(shù)指令以及額外提供算術(shù)結(jié) 果的最高有效位位置的指示的效率是尤其明顯的,其中這樣些計算可能在程序代碼的循環(huán) 中重復(fù)地執(zhí)行。在一個實施例中,控制電路響應(yīng)于組合大小檢測算術(shù)指令以在大小指示寄存器中 累計該循環(huán)的各迭代的大小指示結(jié)果。此提供將用于多個結(jié)果值的最高有效位位置的計算 分解成為更多可管理子計算的靈活性。根據(jù)第二方面,本發(fā)明提供一種用于采用數(shù)據(jù)處理設(shè)備處理數(shù)據(jù)的方法,所述處 理數(shù)據(jù)設(shè)備具有處理電路,其用于執(zhí)行數(shù)據(jù)處理運算;一個或多個寄存器,其用于存儲數(shù) 據(jù);以及控制電路,其用于控制所述處理電路以執(zhí)行所述這些數(shù)據(jù)處理運算,所述方法包括 響應(yīng)于組合大小檢測算術(shù)指令的以下步驟控制所述處理電路以執(zhí)行在存儲于一個或多個寄存器中的至少一個數(shù)據(jù)單元上 且通過所述組合大小檢測算術(shù)指令指定的算術(shù)運算;以及
執(zhí)行大小檢測運算,其中所述大小檢測運算計算大小指示結(jié)果,其提供所述算術(shù) 運算的結(jié)果的大小的最高有效位的位置的指示,而不論所述最高有效位位置是否超過所述 至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。根據(jù)第 三方面,本發(fā)明提供一種虛擬機,其提供用于處理數(shù)據(jù)的設(shè)備的仿真,所述 設(shè)備包括處理電路,其用于執(zhí)行數(shù)據(jù)處理運算;—個或多個寄存器,其用于存儲數(shù)據(jù);控制電路,其用于控制所述處理電路以執(zhí)行所述數(shù)據(jù)處理運算;其中所述控制電路配置成以致其響應(yīng)于組合大小檢測算術(shù)指令,以控制所述處理 電路來執(zhí)行在存儲于所述一個或多個寄存器中的至少一個數(shù)據(jù)單元上且通過所述組合大 小檢測算術(shù)指令指定的算術(shù)運算以及執(zhí)行大小檢測運算,其中所述大小檢測運算計算大小 指示結(jié)果,其提供所述算術(shù)運算的結(jié)果的大小的最高有效位的位置的指示,而不論所述最 高有效位位置是否超過所述至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。


本發(fā)明的實施例現(xiàn)將參考附圖僅通過舉例說明,其中圖1概要地說明在快速傅立葉變換的計算期間執(zhí)行的數(shù)據(jù)操控的「蝶形圖」;圖2是概要地說明已知塊浮點算術(shù)如何執(zhí)行快速傅立葉變換計算的流程圖;第3圖是概要地說明根據(jù)本發(fā)明的實施例的塊浮點算法的流程圖;圖4是概要地說明根據(jù)本發(fā)明的替代實施例的塊浮點算法的流程圖;圖5概要地說明用于根據(jù)本技術(shù)實施組合大小檢測算術(shù)指令的數(shù)據(jù)引擎;圖6概要地說明圖5的最大屏蔽電路的更多細節(jié);第7A和7B圖概要地說明根據(jù)本執(zhí)行組合大小檢測算術(shù)指令的兩個不同組的電路 以及相關(guān)數(shù)據(jù)流;以及第8圖概要地說明圖5的數(shù)據(jù)引擎的虛擬機實施。
具體實施例方式傅立葉變換是將函數(shù)分解成為其頻率分量的連續(xù)頻譜的數(shù)學(xué)運算。離散傅立葉變換是對應(yīng)于離散時間信號的傅立葉變換,且是廣泛地用于信號 處理應(yīng)用以分析在取樣信號內(nèi)含有的頻率,以解出部分微分方程式且執(zhí)行例如卷積 (convolution)的其它運算??焖俑盗⑷~變換(FFT)算法用于計算離散傅立葉變換。離散傅立葉變換可由以下方程式說明 該變換計算涉及計算對應(yīng)于序列(η)(通常亦假設(shè)為復(fù)數(shù)值(complex value)) 的復(fù)數(shù)(complex number)給定N輸入數(shù)據(jù)值的序列X(k),且其中Wn = e_j2〃N(旋轉(zhuǎn)因子 (twiddle factor))。
將X(k)分成偶數(shù)以及奇數(shù)取樣(稱為整數(shù)倍降低取樣率(decimation)的程序) 提供 這些方程式形成用于計算離散傅立葉變換的整數(shù)倍降低取樣率中 (decimation-in)頻率FFT算法。此經(jīng)由整數(shù)倍降低取樣率中頻率FFT的N點DFT的 計算需要Nlog2N復(fù)數(shù)加法(complex addition)以及(N/2) Iog2N復(fù)數(shù)乘法(complex multiplication)。為了直接評估在離散傅立葉變換方程式中涉及的和,將會對于總數(shù)N數(shù)據(jù)樣本采 用N2階的數(shù)學(xué)運算,但FFT算法允許相同結(jié)果僅在NlogN運算的階中計算。此簡化通過遞 歸地分解任何復(fù)合大小N = N1. N2的離散傅立葉變換成為大小N2以及N1的多個較小DFT, 且通過稱為「旋轉(zhuǎn)因子」的單位(unity)的復(fù)數(shù)根的N乘法的階來達到。數(shù)基-2FFT算法 將離散傅立葉變換在各步驟分成大小N/2的兩件。圖1概要地顯示說明在快速傅立葉變換的計算期間執(zhí)行的數(shù)據(jù)操控的「蝶形圖」。通過圖1的蝶形圖代表的基本計算在FFT計算期間是迭代許多次。蝶形圖顯示兩 個復(fù)數(shù)輸入值a和b。輸入值a具有實分量rO和虛分量iO而輸入值b具有實分量rl和虛 分量il。圖的右手側(cè)的點對應(yīng)至一輪FFT計算的輸出。尤其是,輸出值A(chǔ)代表輸入值a和 輸入值b的復(fù)數(shù)和。輸出值A(chǔ)的實部通過分別輸入值a和輸入值b的實分量的和給定(即 rO+rl),而虛部是通過a和b的虛部的和給定(即iO+il)。輸出值B亦根據(jù)輸入值a和b 計算,但此時間對應(yīng)至復(fù)數(shù)減法運算a_b和通過稱為「旋轉(zhuǎn)因子」W的復(fù)數(shù)因子的乘法。因 此輸出值B通過(a_b)*W給定且涉及單一復(fù)數(shù)乘法。在蝶形圖上具有箭頭的線代表數(shù)據(jù)流 且因此給定在輸出數(shù)據(jù)值A(chǔ)和B與輸入數(shù)據(jù)值a和b間的相關(guān)性的指示。輸出A和B對應(yīng) 于兩個子變換的輸出。FFT計算涉及計算的多個循環(huán),各循環(huán)涉及多個蝶形圖的計算。因此圖1中輸出值 A和B將會供應(yīng)為對于后續(xù)一輪蝶形計算的輸入值。然而,在后續(xù)那些輪的蝶形計算(計算 的內(nèi)部循環(huán))間,來自先前些輪的計算的結(jié)果矢量典型將會在執(zhí)行下一輪蝶形計算前例如 通過執(zhí)行去交錯(在此亦指「未壓縮」運算)重排??梢詮膱D1的數(shù)據(jù)流見到,內(nèi)循環(huán)的各迭代(其涉及蝶形圖的計算)可造成數(shù)據(jù) 單元的位寬度的成長。此可通過考慮輸入數(shù)據(jù)單元a和b以及注意到輸出值A(chǔ)涉及對于該 復(fù)數(shù)的實部和虛部的各者的加法運算見到。因此,輸出值A(chǔ)可由于來自加法運算的進位位 而成長一位。同樣地,輸出值B涉及在c = a-b = cr+iGi和復(fù)數(shù)旋轉(zhuǎn)因子W = wr+iwi間的 復(fù)數(shù)乘法,其中q與^是c和w的實分量而Ci與Wi是c和w的虛分量。因為復(fù)數(shù)乘法c*T =(ο^+ ο,ψ+ ψ,ο-ο^)涉及兩個加法運算,此可導(dǎo)致已通過相對于輸入數(shù)據(jù)單元b的位 寬度成長兩位的輸出值。因此加法和乘法運算造成數(shù)據(jù)位寬度成比例地成長至其中計算蝶形運算的算法 的迭代數(shù)量。一般而言,迭代數(shù)量取決于輸入數(shù)據(jù)點的數(shù)量的對數(shù)(基2)。因此應(yīng)了解, FFT計算典型會與正被處理的單元的數(shù)量成比例地增加動態(tài)范圍。類似考慮應(yīng)用于其它不同信號處理算法,例如Viterbi算法和加速(Turbo)譯碼算法,且本技術(shù)是可應(yīng)用于不同算 法的范圍,F(xiàn)FT算法僅是一個說明性實例。為了應(yīng)付這些計算的大動態(tài)范圍,可執(zhí)行塊浮點算術(shù)計算。在塊浮點算術(shù)中,數(shù)據(jù) 塊被指定單一指數(shù)而不是各數(shù)據(jù)單元具有其自己的指數(shù)。因此,指數(shù)典型通過該塊中具有 最大大小的數(shù)據(jù)單元確定。塊浮點算術(shù)的使用減輕復(fù)數(shù)浮點乘法器和浮點加法器的需要。 取而代之的是,復(fù)數(shù)值整數(shù)對用單一定標(biāo)因子代表,其典型在數(shù)據(jù)塊的其它復(fù)數(shù)值整數(shù)對 中共享。在FFT的各階段后,檢測最大大小輸出值且給定迭代的結(jié)果被定標(biāo)以改進計算的 精度。指數(shù)記錄用于執(zhí)行該定標(biāo)的左移和右移的數(shù)量。從固定點至塊浮點表示法的轉(zhuǎn)換典 型通過軟件中的程序器顯式地執(zhí)行。圖2是概要地說明已知塊浮點算法如何執(zhí)行計算的流程圖。在此特定實例中,計 算是快速傅立葉變換,但應(yīng)了解,其它不同類型的計算可依類似方式執(zhí)行。程序在階段210開始,其中搜索輸入數(shù)據(jù)塊中對應(yīng)于具有最大大小的輸入數(shù)據(jù)單 元的值「dmax」。其次,在階段220處,定標(biāo)移位值根據(jù)dmax的值確定。程序接著前進至階 段230,j的值(其是用于FFT外循環(huán)的索引)對于j = 1初始化至一的值且其后在連續(xù)循 環(huán)上增量。其次,在階段240處,F(xiàn)FT內(nèi)循環(huán)索引i在第一迭代上初始化且其后增量。此內(nèi) 循環(huán)對應(yīng)于在所有輸入數(shù)據(jù)單元上執(zhí)行完整一輪蝶形計算,內(nèi)循環(huán)計算的第一階段是階段 250,其涉及通過預(yù)定定標(biāo)移位值將所有輸入數(shù)據(jù)單元定標(biāo)。應(yīng)注意,該定標(biāo)移位值在階段 220處對于第一迭代確定,但其后是在階段290處確定,即在各FFT內(nèi)循環(huán)的結(jié)束處。在階 段250處的輸入數(shù)據(jù)的定標(biāo)后,各數(shù)據(jù)單元共享相同指數(shù)值和相同數(shù)據(jù)單元寬度。階段260 對應(yīng)至FFT內(nèi)循環(huán)計算的本體,其涉及多個蝶形圖的計算,如圖1中所說明的那個。一旦已 計算FFT蝶形,程序前進至階段270,其中對該中間結(jié)果數(shù)據(jù)(對應(yīng)于圖1中的輸出A和B) 搜索新的最大大小「dmax」。請記得,由于所涉及的算術(shù)運算,每輪蝶形計算可能涉及相對于 輸入數(shù)據(jù)值在結(jié)果數(shù)據(jù)值的位寬度中的增加。因此,dmax的值可能從一個迭代改變至下一 個迭代。請注意,dmax針對內(nèi)循環(huán)的各迭代更新以產(chǎn)生經(jīng)更新的最大值dmax’。一旦dmax值已在階段270更新,程序前進至階段280,其中其確定FFT內(nèi)循環(huán)是否 完成。若內(nèi)循環(huán)未完成則程序返回階段240,其中索引i被增量且FFT內(nèi)循環(huán)的下一迭代被 執(zhí)行。另一方面,若在階段280確定內(nèi)循環(huán)事實上完成則程序前進至階段290,其中dmax’ 的當(dāng)前值用于計算新的定標(biāo)移位值以用于后續(xù)FFT外循環(huán)。此定標(biāo)移位值在執(zhí)行下一輪 FFT內(nèi)循環(huán)計算前在階段250處應(yīng)用至所有輸入數(shù)據(jù)。在定標(biāo)移位值已在階段290處計算后,程序前進至階段292,其中確定FFT外循環(huán) 是否完成。若外循環(huán)未完成則程序前進至階段230,其中計數(shù)器j被增量且數(shù)據(jù)重排在FFT 內(nèi)循環(huán)中的下一輪蝶形計算前執(zhí)行。另一方面,若在階段292確定外循環(huán)事實上完成,則程 序前進至階段294,其中執(zhí)行數(shù)據(jù)正規(guī)化(normalisation)以考慮計算的各階段處執(zhí)行的 數(shù)據(jù)的定標(biāo)的效應(yīng)。然而,正規(guī)化階段294是可選的。最后,在階段296處,F(xiàn)FT計算的結(jié) 果保存在內(nèi)存中。圖3是概要地說明根據(jù)本發(fā)明的實施例的塊浮點算法的流程圖。與圖2的流程圖( 其關(guān)于已知技術(shù))進行比較,圖3的流程圖顯示圖3的階段310、 320、330、340、350、380、390、392、394和396,它們直接平行于分別在圖2的已知技術(shù)中的階段210、220、230、240、250、280、290、292、294和296。然而,圖3的實施例和圖2的已知技術(shù) 間的關(guān)鍵不同是在圖3中的步驟,(i)執(zhí)行該內(nèi)循環(huán)FFT計算以及(ii)搜索中間結(jié)果數(shù)據(jù) 中的dmax’,其在圖2的不同階段260、270中執(zhí)行且經(jīng)組合以致其在圖3中的單一階段360 處執(zhí)行。以上步驟⑴和(ii)的組合通過提供單一程序指令而可行,兩者執(zhí)行所需算術(shù) 運算且提供關(guān)聯(lián)算術(shù)運算的結(jié)果的大小信息。在FFT計算的情況下,算術(shù)運算如圖1中所 示(如復(fù)數(shù)加法、減法和乘法運算)。組合該算術(shù)計算步驟與如圖3的步驟360中所示的 dmax'確定提供更有效率實施FFT算法,dmax'計算為FFT內(nèi)循環(huán)蝶形評估的部分。在圖2 中,dmax'必須在FFT蝶形已計算后單獨地確定(使用不同程序指令)。來自圖3的流程圖的階段390處的dmax’的定標(biāo)移位值的計算使用CLS(Count Leading sign)或CLZ(Count Leading Zero)指令來進行。CLZ指令返回寄存器值中的第 一二進制一前的二進制位的數(shù)量。CLS指令返回相對于含有CLS的操作數(shù)的數(shù)據(jù)類型的最 高有效位的無符號擴展位的位置。例如 MSB_Position = CLS(dmax,);若例如容器是16位,且dmax,是0001_0000_0000_0000 ( 二進制)(其對應(yīng) 于十進制中的+4096),CLS將會返回3的值??紤]帶正負號整數(shù),若例如dmax’是 1111_1000_0000_0000( 二進制)(其對應(yīng)于十進制的-2048),則CLS將返回5的值。定標(biāo) 移位值計算如下Shift_Value = Target_MSB-MSB_Position ;其中最大MSB位置是其中最大定標(biāo)數(shù)據(jù)的MSB所將置放的地方。最大MSB被選定 以致無溢位可能發(fā)生。若移位是正數(shù),則數(shù)據(jù)被左移,而若移位是負數(shù),則數(shù)據(jù)被右移。在階段390處的計算結(jié)果在階段350處應(yīng)用。替代實施例使用算術(shù)運算(在此特 定實例中的階段360)的結(jié)果,而后使用不同方案來根據(jù)定標(biāo)在結(jié)果上將有的已知效應(yīng)來 校正結(jié)果。應(yīng)注意的是,在替代設(shè)置中,階段350和360可能交換以致定標(biāo)在FFT內(nèi)循環(huán)計 算之后進行。若計算結(jié)果是負值則最高有效位自結(jié)果的反轉(zhuǎn)形式確定,以致該經(jīng)組合MSB 結(jié)果變成 0R_MSB = Current_0R_MSB (Result < 0 ? Result Result)。圖4是概要地說明根據(jù)本發(fā)明的替代實施例的塊浮點算法的流程圖。如以上解釋,圖3的實施例與圖2的技術(shù)不同在于將圖2的階段260和270組合 成為圖3中的單一階段360。圖4的實施例將圖2程序的三個分離階段(S卩,階段250、260 和270)組合成為單一階段450,以致單一程序指令提供為(i)對于FFT內(nèi)循環(huán)的給定迭代 定標(biāo)所有輸入數(shù)據(jù);(ii)執(zhí)行FFT內(nèi)循環(huán)蝶形計算;以及(iii)搜索中間結(jié)果中的dmax’。步驟450經(jīng)調(diào)適以致其在輸入數(shù)據(jù)的定標(biāo)前考慮可能在計算中發(fā)生的可能的溢 位。依此方式融合圖2的已知塊浮點算法的運算250、260和270,其通過減少處理循環(huán)的數(shù) 量和通過減輕針對每輪計算執(zhí)行輸入數(shù)據(jù)的定標(biāo)所需的額外指令的需要(相對于圖2和圖 3)且通過減輕分離指令以計算算術(shù)運算后dmax’的需要(相對于圖2),來減少執(zhí)行FFT計 算所需的功率而提供性能優(yōu)點。圖5概要地說明用于根據(jù)本技術(shù)實施該組合大小檢測算術(shù)指令的數(shù)據(jù)引擎。該設(shè) 備包含數(shù)據(jù)引擎500。數(shù)據(jù)引擎500包括控制器510、SIMD ALU 520 (包括算術(shù)單元522、SIMD移位器524、和最大值屏蔽526)、SIMD矢量寄存器530、和標(biāo)量寄存器組540。在圖5的實施例中,組合大小檢測算術(shù)指令是SIMD指令。SIMD處理涉及在多個數(shù) 據(jù)上實質(zhì)上同時地執(zhí)行相同運算(其是算術(shù)或其他的)。SIMD處理利用所謂「壓縮矢量」, 其是含有多個基本數(shù)據(jù)單元的數(shù)據(jù)結(jié)構(gòu)。SIMD壓縮矢量可用作例如算術(shù)運算的SIMD指令 的自變量,且通過SIMD指令指定的算術(shù)運算獨立地在SIMD矢量中的多個數(shù)據(jù)單元的各個 上實質(zhì)上同時地執(zhí)行。對應(yīng)于SIMD操作數(shù)的壓縮矢量在矢量寄存器530中存儲。SIMD ALU 520在SIMD矢量上執(zhí)行算術(shù)運算且亦執(zhí)行大小檢測。
根據(jù)本技術(shù)的組合大小檢測算術(shù)指令的一個實例是「Vres」指令(參考圖5)vRes = vadd_bf_sl6 (vA, vB, sMask)。此vRes指令采用兩個SIMD矢量輸入操作數(shù)Va和Vb,各經(jīng)壓縮矢量包括三十二個 16位數(shù)據(jù)單元。另一輸入?yún)?shù)「sMask」指定對應(yīng)于標(biāo)量寄存器組540內(nèi)的標(biāo)量寄存器的 16位標(biāo)量值。在此特定實例中,算術(shù)運算是加法運算「vadd」。因此三十二個獨立加法對應(yīng) 于壓縮矢量vA和vB的三十二個數(shù)據(jù)單元執(zhí)行?,F(xiàn)考慮vRes指令如何通過圖5的數(shù)據(jù)引擎實施??刂破?10響應(yīng)于vRes指令以 將控制信號發(fā)送至SIMD處理電路520和標(biāo)量寄存器組540以執(zhí)行如由該指令指定的數(shù)據(jù) 操控(在此加法運算和大小檢測運算中)??刂破?10響應(yīng)于對應(yīng)于圖5中所示的vadd「原語」(或「固有」)的指令,以將對 應(yīng)于SIMD矢量vA和vB的構(gòu)成數(shù)據(jù)單元加載至SIMD矢量寄存器530中(若還未存在時)。 SIMD νΑ,νΒ從矢量寄存器530讀取且直接供應(yīng)給執(zhí)行SIMD加法運算的算術(shù)單元520。SIMD 算術(shù)運算的結(jié)果通過算術(shù)單元522輸出且供應(yīng)給SIMD移位器524。SIMD移位器524通過 根據(jù)適當(dāng)定標(biāo)移位值移位各數(shù)據(jù)樣本來執(zhí)行數(shù)據(jù)的定標(biāo)。定標(biāo)移位值在圖3實施例的流程 圖中的階段320(第一迭代)或階段390中計算。或者是,定標(biāo)移位值在圖3實施例的流程 圖中的階段420 (第一迭代)或階段490中計算。右移位對應(yīng)于被二除的除法。如解釋,在 各FFT內(nèi)循環(huán)迭代后可能是來自加法的至少一個進位位,以致可能SIMD移位器524將會執(zhí) 行數(shù)據(jù)的至少一個右移位以實施該定標(biāo)。通過SIMD移位器524輸出的定標(biāo)結(jié)果作為輸入供應(yīng)至SIMD ALU520內(nèi)的最大屏 蔽電路526,其中MSB屏蔽的更新值根據(jù)定標(biāo)結(jié)果計算。最大屏蔽計算參考圖6在下文中詳 盡解釋。雖然在圖5的實施例中,定標(biāo)在vRes指令的執(zhí)行期間執(zhí)行,在替代實施例中,數(shù)據(jù) 定標(biāo)當(dāng)數(shù)據(jù)寫入或讀自矢量寄存器組530中的內(nèi)存時發(fā)生。用于當(dāng)前FFT內(nèi)循環(huán)的MSB屏蔽的更新值經(jīng)由路徑527供應(yīng)至標(biāo)量寄存器組540, 用于存儲在標(biāo)量寄存器中供FFT內(nèi)循環(huán)的下一迭代使用。該vRes指令的輸入?yún)?shù)sMask 指定標(biāo)量寄存器,從該標(biāo)量寄存器中最大屏蔽電路526讀取在FFT內(nèi)循環(huán)迭代的開始處的 MSB屏蔽的當(dāng)前值,且該MSB屏蔽的更新值在迭代的結(jié)束處寫至sMask寄存器。在對圖5的替代實施例中,根據(jù)本技術(shù)的vRes指令具有另一輸入操作數(shù),該另一 輸入操作數(shù)是標(biāo)量值,其指定該移位待應(yīng)用至算術(shù)運算的結(jié)果。標(biāo)量移位值是帶正負號值。 正移位值指示右移位而負符號值指示左移位。數(shù)據(jù)定標(biāo)在指令的執(zhí)行期間執(zhí)行。在此替代 實施例中指令具有以下格式〈arithmetic op>_bf SIMD destination, SIMD operand_l, SIMDoperand_2, scalar mag, scalar shift
其中_bf限定該指令為塊浮點類型;〈arithmetic op>可為加、減法等;SIMD指示 operand_l、operand_2 和 destination 是 SIMD 寄存器。值「mag」和「shift」兩者是標(biāo)量值。 值「mag」指定共同來源和目的寄存器以用于用于確定最高有效位的OR運算。值「shift」是 帶正負號值,其指定該移位待應(yīng)用至算術(shù)運算的結(jié)果。應(yīng)注意到,在替代實施例中,標(biāo)量移 位字段從指令中省略,且取代組合數(shù)據(jù)定標(biāo)和指令,數(shù)據(jù)定標(biāo)當(dāng)數(shù)據(jù)寫至或讀自內(nèi)存時執(zhí) 行。執(zhí)行以實施圖2的步驟250的定標(biāo)的移位可關(guān)聯(lián)加載運算,如Reg = vload(address, scalar shift)。SIMD ALU 520的算術(shù)單元522包括經(jīng)調(diào)適以允許通過vRes指令的算術(shù)運算在定 標(biāo)運算前產(chǎn)生的額外進位。SIMD ALU 520的最大屏蔽電路526可操作以組合通過FFT計算的內(nèi)循環(huán)的多個 程序指令的每個所返回的最高有效位位置。因此多個最高有效位值被組合且標(biāo)量寄存器組 540的標(biāo)量寄存器sMask維持對應(yīng)于最高的最高有效位位置的值。因此整體而言對于給定 迭代在各內(nèi)FFT循環(huán)迭代的結(jié)束處的最高有效位位置自標(biāo)量寄存器讀取且用于在后續(xù)迭 代中定標(biāo)數(shù)據(jù)。在圖5的實施例中,最高有效位位置存儲在標(biāo)量寄存器組540的標(biāo)量寄存器sMask中。然而,在替代實施例中,寄存器是數(shù)據(jù)處理設(shè)備中的通用寄存器之一。在這樣的替代實 施例中,組合大小檢測算術(shù)指令指定通用寄存器組中的來源寄存器和目的寄存器二者以執(zhí) 行維持最高的最高有效位位置的值來用于一輪計算的操作。圖6概要地說明圖5的最大屏蔽電路526的更多細節(jié)。最大屏蔽電路包括多個 SIMD通道(SIMD 1^1^)600,各311\ 通道包括16位數(shù)據(jù)單元610、612、614。在此特定實 施例中,總數(shù)有三十二個SIMD通道。然而,僅有三個這些通道610、612和614為了清楚說 明而實際顯示。三十二個16位數(shù)據(jù)單元600對應(yīng)于SIMD結(jié)果矢量的項目。一組XOR門 (gate) 624關(guān)聯(lián)于SIMD通道31和數(shù)據(jù)單元614 ;—組XOR門622關(guān)聯(lián)于SIMD通道1和數(shù) 據(jù)單元612 ;且一組XOR門620關(guān)聯(lián)于SIMD通道0。一組OR門630包括用于16位數(shù)據(jù)單 元的位11至14的各位的一個門,其包含對應(yīng)于位14的OR門632。該組OR門630提供整 體用于存儲在三十二個數(shù)據(jù)單元SIMD結(jié)果矢量中的16位結(jié)果值的大小的最高有效位位置 的指示。各16位數(shù)據(jù)單元610、612、614是帶正負號數(shù)據(jù)值,其中位15是正負號位。數(shù)據(jù)值 依「2的補碼」記法存儲,其中負數(shù)通過絕對值的2的補碼代表,且數(shù)字通過計算其2的補碼 從正轉(zhuǎn)換成負或反之亦然。為了發(fā)現(xiàn)二進制數(shù)字的2的補碼,各位經(jīng)反轉(zhuǎn)且1的值加至反轉(zhuǎn) 值(忽略位溢位)。負數(shù)的2的補碼是對應(yīng)的正值。例如考慮十進制值5的8位帶正負號 二進制表示法,其是0000101。因為最高有效位是0,此模式代表非負值。為了轉(zhuǎn)換此正值 至依2的補碼記法的_5,各位反轉(zhuǎn)以提供值1111010而后1加至經(jīng)反轉(zhuǎn)值以提供1111011。 最高有效位是1以致所代表的值是負的(在此情況下是_5)。在圖6的設(shè)置中,位15是最高有效位且因此亦是正負號位。計算MSB屏蔽的第一 階段涉及在三十二個SIMD通道的各個中檢查16位值以確定其是否為正或負。對于其中正 負號位指示負值的各SIMD通道,16位數(shù)據(jù)單元被反轉(zhuǎn)。XOR門620、622、624執(zhí)行該反轉(zhuǎn)。 對于最高有效位是零(對應(yīng)于正值)的數(shù)據(jù)單元不被反轉(zhuǎn)。如圖6中所示,OR門630用于執(zhí)行邏輯OR運算(或其功能等效者)。尤其是,功能OR運算在用于三十二個SIMD通道的各個的各數(shù)據(jù)單元的位14上執(zhí)行。此通過OR門 632執(zhí)行。因此,若任何數(shù)據(jù)單元在位位置14中具有非零位,OR門將具有1的輸出值。然 而,若所有SIMD通道具有空白位14且OR門的輸出將是零,其指示該最高有效位是其它14 個位位置W,l,2,...,13]之一。OR門632代表對應(yīng)于三十二個數(shù)據(jù)單元(其對應(yīng)于三十二個SIMD通道)的位-位 置14的所有32位的邏輯OR。雖然會提供等效功能OR門用于數(shù)據(jù)單元的15個非帶正負 號位的各個,在此特定實施例中,OR門630僅提供用于四個最高有效位位置,即位[11,12, 13,14]。由于程序器能提前確定 給定一輪計算可能產(chǎn)生多少進位位的事實,故僅需要考慮 最高有效位的子集以準(zhǔn)確地確定最高有效位。例如,在圖1的蝶形圖中,明顯的是至多兩個 進位位(來自復(fù)數(shù)乘法)可從每輪計算中產(chǎn)生。此知識使程序器可事先確定在其內(nèi)可發(fā)現(xiàn) 最高有效位的最大和最小范圍。在圖6實例中,已知在前一輪計算中,MSB位置確定在位位 置12處。結(jié)果用于后續(xù)一輪計算的MSB位置可從位位置11、12、13和14單獨確定。使用 XOR門620、622、624提供對于全2的補碼計算的良好近似而實施更快速和更價廉(如相對 于邏輯門)。當(dāng)丟棄更多最低有效位時近似變得更接近。在此特定設(shè)置中,最高有效位確定在定標(biāo)移位已執(zhí)行后(在圖3的流程圖的階段 350或圖4的流程圖的階段450處定標(biāo))執(zhí)行。然而,在替代設(shè)置中,最高有效位確定是在 定標(biāo)移位之前執(zhí)行。圖7A和7B概要地說明根據(jù)本技術(shù)執(zhí)行組合大小檢測算術(shù)指令的兩個不同組的電 路和關(guān)聯(lián)數(shù)據(jù)流。尤其是,圖7A概要地說明其中該最大值屏蔽指定為指令的自變量的指 令。與之相比,圖7B概要地說明根據(jù)本技術(shù)的指令的所謂「模態(tài)實現(xiàn)」,其中預(yù)定屏蔽當(dāng)指 令執(zhí)行時使用(在此情況下該指令不具有指定該屏蔽的輸入自變量)。圖7A的設(shè)置包括寄存器組710、ALU 720和MSB屏蔽生成器730。對應(yīng)于圖7的電 路的指令700具有總計五個字段,其包括算術(shù)運算字段702、目的寄存器字段704、兩個操 作數(shù)字段(op A和op B) 705、和指定用于存儲最高有效位屏蔽706的寄存器的「op Mask」 字段。ALU 720在指令的執(zhí)行期間自寄存器710取回操作數(shù)op A和op B。一旦ALU響應(yīng) 于來自控制器510 (參見圖5)的控制信號則已通過ALU執(zhí)行算術(shù)運算,MSB屏蔽生成器730 分析結(jié)果矢量,以確定用于壓縮SIMD結(jié)果矢量的多個數(shù)據(jù)單元的最高有效位位置且更新 寄存器710中存儲的「op maskJ值。在圖7B的設(shè)置中,該指令包括四個字段(而非圖7A的指令的五個字段)。四個 字段包括算術(shù)操作數(shù)字段752、指定目的寄存器754的字段和兩個操作數(shù)字段(op A和op B)756、758。此設(shè)置不同于圖7A在于該指令不具有指定用于存儲最高有效位屏蔽的寄存器 的字段。反而是,當(dāng)指令執(zhí)行時是使用預(yù)定屏蔽寄存器740以維持提供最高有效位位置的 指示的當(dāng)前值。該值可在每輪計算的結(jié)束處(如在FFT計算的每個內(nèi)循環(huán)的結(jié)束處)自屏 蔽寄存器讀取,以確定下一迭代的定標(biāo)值。屏蔽寄存器740是「模態(tài)」寄存器,其累計最高有效位位置信息。屏蔽寄存器在一 批計算開始前初始化為例如零。對于一輪計算的第一迭代,屏蔽計算電路760計算屏蔽(即 MSB位置)用于各執(zhí)行指令以及在屏蔽寄存器740中存儲當(dāng)前值。對于后續(xù)迭代,對于給定 迭代確定的MSB位置與存儲在屏蔽寄存器740中的當(dāng)前MSB位置組合,以致該寄存器維持最高MSB位置。屏蔽寄存器740接著在一批計算的結(jié)束被讀取以確定已達到的最高值的MSB。以下是利用根據(jù)本技術(shù)的組合大小檢測算術(shù)指令的程序代碼的摘錄。該程序代碼 是用于塊浮點數(shù)基2FFT算法。jj = LTOuter ;FFT_LT_0UTER ;For (j = LTOuter ; j > 0 ; j—) {vRDTmp = vuzp_m_sl6 (t_r0, t_r0,0);ν I DTmp = vuzp_m_sl6 (t_i0, t_i0,0);t_r0 = vRDTmp. a
;t_i0 = vIDTmp. a
;j j—;ii = 0 ;sMaskRO = (s 16)0 ;sMaskRl = (sl6)0 ;sMaskIO = (sl6)0 ;sMaskll = (sl6)0 ;FFT_LT_INNER ;for(i = 0 ;i < Inner ;i++) {AddLYO = ii+ii+Ping ;AddLYl = ii+ii+Ping+1 ;AddSYO = ii+Pong ;AddSYl = ii+Pong+Points_2 ;ii++ ;rO = vqrshi_n_sl6(vRMem[AddLY0], sShift) ;//Load Data from vectormemoryrl = vqrshi_n_sl6 (vRMem[AddLYl], sShift);iO = vqrshi_n_sl6(vIMem[AddLY0], sShift);il = vqrshi_n_sl6 (vIMem[AddLYl], sShift);tmpr = vpqsub_m_bf_sl6 (rO, rl, jj, &sMaskR0) ;//ButterfliesrrO = vpqadd_m_bf_sl6 (rO, rl, jj, &sMaskRl);tmpi = vpqsub_m_bf_sl6(i0, il, jj, &sMaskI0);iiO = vpqradd_m_bf_sl6(i0, il, jj, &sMaskIl);tmpqrO = vqdmull_sl6(tmpr, t_rO) ;//Multiply by twiddle valuesrrl = vqrdmish_ sl6 (tmpqrO, tmpi, t_iO);tmpqiO = vqdmull_sl6 (tmpi, t_rO);iil = vqrdmiah_sl6 (tmpqiO, tmpr, t_iO);νRMem[AddSYO] = rrO ;//save data where it came fromvIMem[AddSYO] = iiO ;vRMem[AddSYl] = rrl ;
vIMem[AddSYl] = iil ;}Ping" = Pong ;//swap ping and pongPong" = Ping ;Ping" = Pong ;sMaskRO = sMaskRl ; //combine allthe mask valuessMaskI0| = sMaskll ;sMask = sMaskRO | sMaskRl ;slnScale = clZ_sl6(sMask) ;//find MSBitsShift = sInScale-LEADING_ZEROS ;//new shift valuesExp = sExp+sShift ; //update exponent running total}圖1的蝶形圖在FFT內(nèi)循環(huán)內(nèi)計算。在圖1的蝶形圖中的記法可與以上程序代碼 中的變量相關(guān)。尤其是,對于蝶形計算的輸入是(r0、i0), (rU il)且輸出是(rrO、iiO)、 (rrl、iil)。例如,下面的組合大小檢測算術(shù)指令用于從輸入a = (rO、iO)和b= (rUil) 計算輸出A = (rr0、ii0)。rrO = vpqadd_m_bf_sl6 (rO,rl, jj, &sMaskRl);iiO = vpqadd_m_bf_sl6(i0, il, jj, &sMaskIl);rvpqaddj指令涉及加法運算和大小檢測運算,而「vpqsub」指令涉及減法運算 和大小檢測運算。指令輸入自變量「sMaskRl」是用于結(jié)果矢量的實分量的MSB屏蔽,而 「sMaskll」是用于結(jié)果矢量的虛分量的MSB屏蔽。屏蔽在程序代碼的以上區(qū)段的結(jié)束處組 合(在FFT內(nèi)循環(huán)外部但在FFT外循環(huán)內(nèi))。CLZ指令用于確定在每個FFT內(nèi)循環(huán)的結(jié)束 處的最高有效位位置。雖然以上描述的技術(shù)可通過執(zhí)行一序列的本機指令(其包括以上所提指令)的硬 件執(zhí)行,應(yīng)了解,在替代實施例中,這樣些的指令可在虛擬機環(huán)境中執(zhí)行,其中指令對于虛 擬機是本機的,但虛擬機通過在具有不同本機指令集的硬件上執(zhí)行的軟件實施。虛擬機環(huán) 境可提供全虛擬機環(huán)境,其仿真全指令集的執(zhí)行,或可能是部分的,如僅包含本技術(shù)的指令 的一些指令通過硬件捕獲且通過部分虛擬機模擬。更具體地,以上所述組合大小檢測算術(shù)指令可執(zhí)行為對于全或部分虛擬機的本機 指令,其中虛擬機連同其基本硬件平臺組合操作以提供以上描述的處理電路。圖8概要地說明圖5的數(shù)據(jù)引擎500的虛擬機實現(xiàn)。該設(shè)置包括設(shè)置成仿真數(shù)據(jù) 引擎500的操作的虛擬機800。虛擬機800 (如模擬ARM處理器或數(shù)據(jù)引擎)設(shè)置成接收機 器碼(如ARM機器碼),其包含根據(jù)其模擬執(zhí)行的本技術(shù)的組合大小檢測算術(shù)指令。若在 其上欲執(zhí)行虛擬機800的通用處理器具有足夠高性能,則可達到實際可行的整體處理吞吐 量,且能執(zhí)行包含根據(jù)本技術(shù)的組合大小檢測算術(shù)指令的現(xiàn)存編碼基數(shù)(code base)的優(yōu) 勢可依此方式證明通用處理器的使用是合理的。盡管已在此描述本發(fā)明 的特定實施例,應(yīng)了解,本發(fā)明不受限于此,且許多對其的 修改和增加可在本發(fā)明的范圍中進行。例如,以下附屬權(quán)項的特征的各種組合可對獨立權(quán) 項的特征進行而不脫離本發(fā)明的范圍。
權(quán)利要求
一種用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包括處理電路,用于執(zhí)行數(shù)據(jù)處理運算;一個或多個寄存器,用于存儲數(shù)據(jù);控制電路,用于控制所述處理電路以執(zhí)行所述這些數(shù)據(jù)處理運算;其中所述控制電路配置成以致其響應(yīng)于組合大小檢測算術(shù)指令來控制所述處理電路,以執(zhí)行在存儲于所述一個或多個寄存器中的至少一個數(shù)據(jù)單元上的且通過所述組合大小檢測算術(shù)指令指定的算術(shù)運算以及執(zhí)行大小檢測運算,其中所述大小檢測運算計算大小指示結(jié)果,其提供所述算術(shù)運算的結(jié)果的大小的最高有效位的位置的指示,而不論所述最高有效位位置是否超過所述至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。
2.如權(quán)利要求1所述的設(shè)備,其中所述處理電路是SIMD處理電路,其設(shè)置成針對多個 SIMD通道的各個獨立地執(zhí)行所述算術(shù)運算,所述組合大小檢測算術(shù)指令識別包括多個數(shù)據(jù) 單元的至少一個SIMD輸入矢量,所述算術(shù)運算在所述多個數(shù)據(jù)單元上獨立地執(zhí)行以生成 包括相應(yīng)多個結(jié)果數(shù)據(jù)單元的SIMD結(jié)果矢量。
3.如權(quán)利要求2所述的設(shè)備,其中所述大小指示結(jié)果提供對應(yīng)于所述SIMD結(jié)果矢量的 相應(yīng)多個數(shù)據(jù)單元的多個大小的最大者的最高有效位的指示。
4.如權(quán)利要求2所述的設(shè)備,其中所述大小指示結(jié)果包括SIMD結(jié)果矢量,所述SIMD結(jié) 果矢量具有分別對應(yīng)于所述多個SIMD通道的多個大小指示結(jié)果值。
5.如權(quán)利要求2所述的設(shè)備,其中所述一個或多個寄存器包括SIMD寄存器組和標(biāo)量寄 存器組。
6.如權(quán)利要求5所述的設(shè)備,其中所述控制電路控制所述處理電路以在所述SIMD寄存 器組中存儲所述SIMD算術(shù)運算的所述結(jié)果。
7.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述控制電路控制所述處理電路以存儲 所述大小指示結(jié)果于通用寄存器中。
8.如權(quán)利要求7所述的設(shè)備,其中當(dāng)從屬于權(quán)利要求2時所述通用寄存器是SIMD寄存 器和標(biāo)量寄存器之一。
9.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述大小指示結(jié)果存儲在專用寄存器中。
10.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述算術(shù)運算是無符號算術(shù)運算。
11.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述算術(shù)運算是帶正負號算術(shù)運算。
12.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述控制電路響應(yīng)于所述組合大小檢 測算術(shù)指令以執(zhí)行定標(biāo)計算以在執(zhí)行所述算術(shù)運算前根據(jù)由所述組合大小檢測算術(shù)指令 指定的定標(biāo)參數(shù)以定標(biāo)所述至少一個數(shù)據(jù)單元。
13.如權(quán)利要求12所述的設(shè)備,其中所述控制電路響應(yīng)于所述組合大小檢測算術(shù)指令 以從所述定標(biāo)計算的輸出計算所述大小指示結(jié)果。
14.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述組合大小檢測算術(shù)指令是塊浮點 指令。
15.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述算術(shù)運算是移動加法、減法、乘法 和乘法_累計運算的至少其中之一。
16.如權(quán)利要求2所述的設(shè)備,其中所述控制電路響應(yīng)于所述組合大小檢測算術(shù)指令以控制所述處理電路來在所述SIMD算術(shù)運算的所述結(jié)果的所述多個數(shù)據(jù)單元的至少兩者 上執(zhí)行至少一個邏輯運算以計算所述大小指示結(jié)果,其中所述至少一個邏輯運算在功能上 與邏輯OR運算等效。
17.如權(quán)利要求16所述的設(shè)備,其中所述控制電路響應(yīng)于所述組合大小檢測算術(shù)指令 以控制所述處理電路來在所述至少二個數(shù)據(jù)單元的位的子集上執(zhí)行所述至少一個邏輯運算。
18.如權(quán)利要求17所述的設(shè)備,其中所述位的子集對應(yīng)于所述至少二個數(shù)據(jù)單元的相 應(yīng)數(shù)據(jù)單元的一個或多個最高有效位。
19.如權(quán)利要求16所述的設(shè)備,其中當(dāng)從屬于權(quán)利要求11時所述控制電路響應(yīng)于所述 組合大小檢測算術(shù)指令以控制所述處理電路,來檢測所述SIMD算術(shù)運算的所述結(jié)果的所 述多個數(shù)據(jù)單元的一個或多個,其具有負值,以及在執(zhí)行所述至少一個邏輯運算前反轉(zhuǎn)所 述負值。
20.如權(quán)利要求16所述的設(shè)備,其中當(dāng)從屬于權(quán)利要求11時,所述控制電路響應(yīng)于所 述組合大小檢測算術(shù)指令以控制所述處理電路來檢測所述SIMD算術(shù)運算的所述結(jié)果的所 述多個數(shù)據(jù)單元的一個或多個,其具有負值,以及在執(zhí)行所述至少一個邏輯運算前求反所 述負值。
21.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述控制電路響應(yīng)于所述組合大小檢 測算術(shù)指令以控制所述處理電路,來根據(jù)通過所述組合大小檢測算術(shù)指令指定的操作數(shù)計 算所述大小指示結(jié)果。
22.如權(quán)利要求21所述的設(shè)備,其中當(dāng)從屬于權(quán)利要求16時,所述至少一個邏輯運算 取決于所述操作數(shù)。
23.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述處理電路計算所述大小指示結(jié)果 以致所述最高有效非零位通過執(zhí)行計數(shù)前導(dǎo)零指令和計數(shù)前導(dǎo)符號指令之一而從所述大 小指示結(jié)果導(dǎo)出。
24.如前述權(quán)利要求中任一項所述的設(shè)備,其中控制電路控制所述處理電路以在所述 一個或多個寄存器中的大小指示寄存器中存儲所述大小指示結(jié)果。
25.如權(quán)利要求24所述的設(shè)備,其中所述大小指示寄存器通過所述組合大小檢測算術(shù) 指令的參數(shù)來指定。
26.如權(quán)利要求24所述的設(shè)備,其中所述大小指示寄存器是通用寄存器。
27.如權(quán)利要求26所述的設(shè)備,其中所述通用寄存器是SIMD寄存器和標(biāo)量寄存器中之。
28.如前述權(quán)利要求中任一項所述的設(shè)備,其中所述組合大小檢測算術(shù)指令在指令的 循環(huán)內(nèi)提供,以致所述大小指示結(jié)果針對所述循環(huán)的各迭代計算。
29.如權(quán)利要求28所述的設(shè)備,其中所述控制電路響應(yīng)于所述組合大小檢測算術(shù)指令 以在所述大小指示寄存器中累計用于所述循環(huán)的各迭代的所述大小指示結(jié)果。
30.一種用于采用數(shù)據(jù)處理設(shè)備處理數(shù)據(jù)的方法,所述處理數(shù)據(jù)設(shè)備具有用于執(zhí)行數(shù) 據(jù)處理運算的處理電路、用于存儲數(shù)據(jù)的一個或多個寄存器、和用于控制所述處理電路以 執(zhí)行所述這些數(shù)據(jù)處理運算的控制電路,所述方法包括響應(yīng)于組合大小檢測算術(shù)指令的以 下步驟控制所述處理電路以執(zhí)行在存儲于所述一個或多個寄存器中的至少一個數(shù)據(jù)單元上 的且通過所述組合大小檢測算術(shù)指令指定的算術(shù)運算;以及執(zhí)行大小檢測運算,其中所述大小檢測運算計算大小指示結(jié)果,所述大小指示結(jié)果提 供所述算術(shù)運算的結(jié)果的大小的最高有效位的位置的指示,而不論所述最高有效位位置是 否超過所述至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。
31.一種計算機程序產(chǎn)品,其包括計算機程序,當(dāng)所述計算機程序在數(shù)據(jù)處理設(shè)備上執(zhí) 行時可操作以造成所述數(shù)據(jù)處理設(shè)備如權(quán)利要求30所述的方法操作,所述計算機程序包 括至少一個組合大小檢測算術(shù)指令。
32.—種虛擬機,其提供用于處理數(shù)據(jù)的設(shè)備的仿真,所述設(shè)備包括處理電路,用于執(zhí)行數(shù)據(jù)處理運算;一個或多個寄存器,用于存儲數(shù)據(jù);控制電路,用于控制所述處理電路以執(zhí)行所述這些數(shù)據(jù)處理運算;其中所述控制電路配置成以致其響應(yīng)于組合大小檢測算術(shù)指令,來控制所述處理電路 以執(zhí)行在存儲于所述一個或多個寄存器中的至少一個數(shù)據(jù)單元上的且通過所述組合大小 檢測算術(shù)指令指定的算術(shù)運算以及執(zhí)行大小檢測運算,其中所述大小檢測運算計算大小指 示結(jié)果,其提供所述算術(shù)運算的結(jié)果的大小的最高有效位的位置的指示,而不論所述最高 有效位位置是否超過所述至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。
33.一種數(shù)據(jù)處理設(shè)備,其基本上如說明書中參照附圖描述的那樣。
34.一種數(shù)據(jù)處理方法,其基本上如說明書中參照附圖描述的那樣。
全文摘要
提供一種設(shè)備和方法,其包括處理電路,一個或多個寄存器和控制電路。該控制電路配置成以致其響應(yīng)于組合大小檢測算術(shù)指令,來控制該處理電路以執(zhí)行在至少一個數(shù)據(jù)單元上的算術(shù)運算,且進一步執(zhí)行大小檢測運算。該大小檢測運算計算大小指示結(jié)果,其提供該算術(shù)運算的結(jié)果的大小的最高有效位的位置的指示,而不論該最高有效位位置是否超過該至少一個數(shù)據(jù)單元的數(shù)據(jù)單元寬度。
文檔編號G06F9/302GK101874237SQ200880114818
公開日2010年10月27日 申請日期2008年9月2日 優(yōu)先權(quán)日2007年10月30日
發(fā)明者D·H·席米斯, D·柯蕭, M·懷德 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平凉市| 湾仔区| 丁青县| 西畴县| 凤凰县| 昔阳县| 布拖县| 兴国县| 新巴尔虎左旗| 阜阳市| 临猗县| 迁安市| 广饶县| 新泰市| 泗水县| 平湖市| 麻城市| 平潭县| 巴里| 黎川县| 石渠县| 普定县| 丁青县| 洪泽县| 桂林市| 高碑店市| 丁青县| 普格县| 萨迦县| 盐源县| 浦东新区| 新郑市| 商都县| 高唐县| 顺昌县| 博乐市| 晴隆县| 平谷区| 昭苏县| 通州区| 静安区|