本發(fā)明涉及計算機(jī)處理中的向量縮放。
背景技術(shù):
::向量標(biāo)準(zhǔn)化是對向量進(jìn)行的運(yùn)算,其需要計算向量的長度且接著將向量的每一分量除以所計算的向量長度。如果三維向量(x,y,z)的長度計算為(x2+y2+z2)的平方根,那么要是所述向量的(x,y,z)值較大,則此類計算可能溢出存儲所述計算的中間結(jié)果的寄存器。技術(shù)實現(xiàn)要素:本發(fā)明呈現(xiàn)用于計算機(jī)處理中的向量縮放的技術(shù)。根據(jù)本發(fā)明的技術(shù),在將向量標(biāo)準(zhǔn)化之前,可縮放向量,以使得在標(biāo)準(zhǔn)化期間計算向量的長度不會溢出存儲計算向量的長度的中間結(jié)果的寄存器。一種圖形處理單元(GPU)的算術(shù)及邏輯單元(ALU)可經(jīng)配置以執(zhí)行三周期縮放指令以供執(zhí)行向量縮小。與基于軟件的向量縮小相比,由ALU所提供的用于執(zhí)行向量縮小的指令可潛在地相對更高效地執(zhí)行向量縮小。在本發(fā)明的一個實例中,一種用于縮放向量的方法可包含通過至少一個處理器接收向量的分量,其中所述向量的分量中的每一者包括至少一個指數(shù)。所述方法可進(jìn)一步包含通過所述至少一個處理器確定所述向量的分量的相應(yīng)指數(shù)中的最大指數(shù)。所述方法可進(jìn)一步包含至少部分地基于所述最大指數(shù)而通過所述至少一個處理器來確定縮放值。所述方法可進(jìn)一步包含利用所述至少一個處理器的算術(shù)邏輯單元(ALU)通過從所述向量的分量的相應(yīng)指數(shù)中的每一者減去所述縮放值來縮放所述向量。在本發(fā)明的另一實例中,一種用于縮放向量的設(shè)備可包含經(jīng)配置以存儲向量的分量的存儲器,其中所述向量的分量中的每一者包括至少一個指數(shù)。所述設(shè)備可進(jìn)一步包含至少一個處理器,所述至少一個處理器經(jīng)配置以確定所述向量的分量的相應(yīng)指數(shù)中的最大指數(shù)且至少部分地基于所述最大指數(shù)來確定縮放值。所述設(shè)備可進(jìn)一步包含算術(shù)邏輯單元(ALU),所述算術(shù)邏輯單元經(jīng)配置以通過從所述向量的分量的相應(yīng)指數(shù)中的每一者減去所述縮放值來縮放所述向量。在本發(fā)明的另一實例中,一種用于縮放向量的設(shè)備可包含用于接收向量的分量的裝置,其中所述向量的分量中的每一者包括至少一個指數(shù)。所述設(shè)備可進(jìn)一步包含用于確定所述向量的分量的相應(yīng)指數(shù)中的最大指數(shù)的裝置。所述設(shè)備可進(jìn)一步包含用于至少部分地基于所述最大指數(shù)來確定縮放值的裝置。所述設(shè)備可進(jìn)一步包含用于通過從所述向量的分量的相應(yīng)指數(shù)中的每一者減去所述縮放值來縮放所述向量的裝置。在本發(fā)明的另一實例中,一種計算機(jī)可讀存儲媒體可存儲指令,所述指令在執(zhí)行時致使一或多個可編程處理器:接收向量的分量,其中所述向量的分量中的每一者包括至少一個指數(shù);確定所述向量的分量的相應(yīng)指數(shù)中的最大指數(shù);至少部分地基于所述最大指數(shù)來確定縮放值;且通過從所述向量的分量的相應(yīng)指數(shù)中的每一者減去所述最大指數(shù)來縮放所述向量。在隨附圖式及以下描述中闡述一或多個實例的細(xì)節(jié)。其它特征、目標(biāo)及優(yōu)點(diǎn)將從所述描述及圖式以及從權(quán)利要求書顯而易見。附圖說明圖1為說明可經(jīng)配置以實施本發(fā)明的一或多個方面的實例計算裝置的框圖。圖2為進(jìn)一步詳細(xì)地說明圖1的CPU、GPU及系統(tǒng)存儲器的實例實施方案的框圖。圖3為說明可根據(jù)本發(fā)明中所揭示的技術(shù)縮放的實例三維向量的概念圖。圖4為說明用于表示向量的每一分量的實例浮點(diǎn)格式的概念圖。圖5為說明用于縮放向量的實例過程的流程圖。具體實施方式總的來說,本發(fā)明描述用于通過硬件縮放向量以使得向量標(biāo)準(zhǔn)化運(yùn)算不會溢出存儲所述運(yùn)算的中間結(jié)果的寄存器的技術(shù)。在一個實例中,處理器可執(zhí)行用于縮放向量的軟件代碼。對于三維向量,所述軟件代碼可包含用于確定三維向量中的最大分量且將三維向量的每一分量除以所述最大分量的代碼。然而,用于縮放向量的軟件代碼可能比基于硬件的用于縮放向量的技術(shù)更慢。照此,基于硬件的用于縮放向量的方法可提高性能。例如中央處理單元(CPU)或圖形處理單元(GPU)等處理器可包含硬件算術(shù)邏輯單元(ALU)。ALU可為能夠快速執(zhí)行整數(shù)算術(shù)及邏輯運(yùn)算的數(shù)字電路。照此,ALU可為一件更高效地縮放向量的理想硬件。然而,因為ALU可能通常設(shè)計成僅執(zhí)行例如加法、減法、“與”運(yùn)算及“或”運(yùn)算等簡單運(yùn)算,所以ALU可能不支持實施上文所描述的縮放向量的技術(shù)所必要的乘法或除法運(yùn)算,所述必要運(yùn)算通常包含將向量的分量除以最大分量。根據(jù)本發(fā)明的各方面,例如GPU或CPU等至少一個處理器可接收向量的分量(其中所述向量的分量中的每一者包括至少一個指數(shù))且可確定所述向量的分量的相應(yīng)指數(shù)中的最大指數(shù)。所述至少一個處理器可至少部分地基于所述最大指數(shù)來進(jìn)一步確定縮放值。CPU或GPU的ALU可通過從所述向量的分量的相應(yīng)指數(shù)中的每一者減去所述縮放因數(shù)來縮放所述向量。圖1為說明可經(jīng)配置以實施本發(fā)明的一或多個方面的實例計算裝置的框圖。如圖1中所展示,計算裝置2可為計算裝置,包含(但不限于)視頻裝置、媒體播放器、機(jī)頂盒、無線手持機(jī)(例如移動電話及所謂的智能電話)、個人數(shù)字助理(PDA)、臺式計算機(jī)、膝上型計算機(jī)、游戲控制臺、視頻會議單元、平板計算裝置,及其類似者。在圖1的實例中,計算裝置2可包含中央處理單元(CPU)6、系統(tǒng)存儲器10及GPU12。計算裝置2還可包含顯示處理器14、收發(fā)器模塊3、用戶接口4及顯示器8。收發(fā)器模塊3及顯示處理器14均可為與CPU6及/或GPU12相同的集成電路(IC)的部分,均可在包含CPU6及/或GPU12的一或多個IC的外部,或可形成于在包含CPU6及/或GPU12的IC外部的IC中。計算裝置2可包含圖1中出于清楚起見而未展示的額外模塊或單元。舉例來說,計算裝置2可包含揚(yáng)聲器及麥克風(fēng)(圖1中均未展示)以在計算裝置2為移動無線電話的實例中實行電話通信,或在計算裝置2為媒體播放器的情況下包含揚(yáng)聲器。計算裝置2還可包含攝像機(jī)。此外,計算裝置2中所展示的各種模塊及單元可能不是計算裝置2的每個實例中所必需的。舉例來說,在計算裝置2為臺式計算機(jī)或經(jīng)裝備以與外部用戶接口或顯示器介接的其它裝置的實例中,用戶接口4及顯示器8可在計算裝置2外部。用戶接口4的實例包含(但不限于)軌跡球、鼠標(biāo)、鍵盤及其它類型的輸入裝置。用戶接口4還可為觸摸屏,且可作為顯示器8的部分并入。收發(fā)器模塊3可包含允許計算裝置2與另一裝置或網(wǎng)絡(luò)之間的無線或有線通信的電路。收發(fā)器模塊3可包含調(diào)制器、解調(diào)器、放大器及其它用于有線或無線通信的此類電路。處理器6可為微處理器,例如中央處理單元(CPU),其經(jīng)配置以處理供執(zhí)行的計算機(jī)程序指令。處理器6可包括控制計算裝置2的操作的通用或?qū)S锰幚砥?。用戶可將輸入提供至計算裝置2,以使處理器6執(zhí)行一或多個軟件應(yīng)用程序。在處理器6上執(zhí)行的軟件應(yīng)用程序可包含(例如)操作系統(tǒng)、字處理器應(yīng)用程序、電子郵件應(yīng)用程序、電子表格應(yīng)用程序、媒體播放器應(yīng)用程序、視頻游戲應(yīng)用程序、圖形用戶接口應(yīng)用程序或另一程序。另外,處理器6可執(zhí)行用于控制GPU12的操作的GPU驅(qū)動程序22。用戶可經(jīng)由一或多個輸入裝置(未展示)(例如,鍵盤、鼠標(biāo)、麥克風(fēng)、觸摸墊或經(jīng)由用戶輸入接口4耦合至計算裝置2的另一輸入裝置)將輸入提供至計算裝置2。在處理器6上執(zhí)行的軟件應(yīng)用程序可包含一或多個圖形渲染指令,其指令處理器6致使圖形數(shù)據(jù)渲染至顯示器8。在一些實例中,軟件指令可符合圖形應(yīng)用程序編程接口(API),例如開放圖形庫API、開放圖形庫嵌入系統(tǒng)(OpenGLES)API、Direct3DAPI、X3DAPI、RenderManAPI、WebGLAPI或任何其它公共或?qū)S袠?biāo)準(zhǔn)圖形API。為了處理圖形渲染指令,處理器6可將一或多個圖形渲染命令(例如,通過GPU驅(qū)動程序22)發(fā)布至GPU12,以使GPU12執(zhí)行圖形數(shù)據(jù)的渲染中的一些或全部。在一些實例中,待渲染的圖形數(shù)據(jù)可包含例如點(diǎn)、線、三角形、四邊形、三角帶等的圖形圖元的列表。GPU12可經(jīng)配置以執(zhí)行圖形運(yùn)算,從而將一或多個圖形圖元渲染至顯示器8。因此,當(dāng)在處理器6上執(zhí)行的軟件應(yīng)用程序中的一者需要圖形處理時,處理器6可將圖形命令及圖形數(shù)據(jù)提供至GPU12以供渲染至顯示器8。圖形數(shù)據(jù)可包含(例如)繪制命令、狀態(tài)信息、圖元信息、紋理信息等。在一些情況下,GPU12可內(nèi)置有高度并行結(jié)構(gòu),所述高度并行結(jié)構(gòu)提供比處理器6更有效的復(fù)雜圖形相關(guān)操作的處理。舉例來說,GPU12可包含經(jīng)配置而以并行方式對多個頂點(diǎn)或像素進(jìn)行操作的多個處理元件,例如著色器單元。在一些情況下,GPU12的高度并行性質(zhì)允許GPU12比使用處理器6直接將場景繪制至顯示器8更快速地將圖形圖像(例如,GUI及二維(2D)及/或三維(3D)圖形場景)繪制至顯示器8上。在一些情況下,可將GPU12整合至計算裝置2的主板中。在其它情況下,GPU12可存在于安裝在計算裝置2的主板中的端口中的圖形卡上,或可以其它方式并入被經(jīng)配置以與計算裝置2交互操作的外圍裝置內(nèi)。GPU12可包含一或多個處理器,例如,一或多個微處理器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號處理器(DSP)或其它等效的集成或離散邏輯電路。GPU12還可包含一或多個處理器核心,使得GPU12可稱為多核處理器。GPU12可直接耦合至圖形存儲器40。因此,GPU12可在不使用總線的情況下從圖形存儲器40讀取數(shù)據(jù)且將數(shù)據(jù)寫入至圖形存儲器40。換句話說,GPU12可使用本地存儲裝置而非芯片外存儲器來在本地處理數(shù)據(jù)。此類圖形存儲器40可稱為片上存儲器。這允許GPU12通過消除對GPU12經(jīng)由總線讀取及寫入數(shù)據(jù)(這可能經(jīng)歷繁重的總線通信量)的需要而以更有效的方式操作。然而,在一些情況下,GPU12可能不包含單獨(dú)的存儲器,而是經(jīng)由總線利用系統(tǒng)存儲器10。圖形存儲器40可包含一或多個易失性或非易失性存儲器或存儲裝置,例如,隨機(jī)存取存儲器(RAM)、靜態(tài)RAM(SRAM)、動態(tài)RAM(DRAM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、閃存、磁性數(shù)據(jù)媒體或光學(xué)存儲媒體。在一些實例中,GPU12可將完全形成的圖像存儲在系統(tǒng)存儲器10中。顯示處理器14可從系統(tǒng)存儲器10檢索圖像,且輸出使顯示器8的像素發(fā)光的值以顯示圖像。顯示器8可為計算裝置2的顯示器,其顯示由GPU12產(chǎn)生的圖像內(nèi)容。顯示器8可為液晶顯示器(LCD)、有機(jī)發(fā)光二極管顯示器(OLED)、陰極射線管(CRT)顯示器、等離子顯示器或另一類型的顯示裝置。如上文所論述,GPU12可包含ALU24,所述ALU24可為執(zhí)行整數(shù)算術(shù)、浮點(diǎn)及邏輯運(yùn)算的數(shù)字電路??捎葾LU24執(zhí)行的運(yùn)算可包含加法、減法及逐位運(yùn)算。在一些實例中,ALU24可能不能夠執(zhí)行例如乘法及除法等運(yùn)算。在一些例子中,處理器6還可包含可如ALU24類似地操作的ALU,其中其可為執(zhí)行算術(shù)及邏輯運(yùn)算的數(shù)字電路。圖2為進(jìn)一步詳細(xì)說明圖1的處理器6、GPU12及系統(tǒng)存儲器10的實例實施方案的框圖。如圖2中所展示,處理器6可包含至少一個軟件應(yīng)用程序18、圖形API20及GPU驅(qū)動程序22,其中的每一者可為在處理器6上執(zhí)行的一或多個軟件應(yīng)用程序或服務(wù)。可供處理器6及GPU12使用的存儲器可包含系統(tǒng)存儲器10及幀緩沖器16。幀緩沖器16可為系統(tǒng)存儲器10的一部分或可與系統(tǒng)存儲器10分離。幀緩沖器16可存儲經(jīng)渲染圖像數(shù)據(jù)。軟件應(yīng)用程序18可為利用GPU12的功能性的任何應(yīng)用程序。舉例來說,軟件應(yīng)用程序18可為GUI應(yīng)用程序、操作系統(tǒng)、便攜式制圖應(yīng)用程序、用于工程或藝術(shù)應(yīng)用的計算機(jī)輔助設(shè)計程序、視頻游戲應(yīng)用程序,或使用2D或3D圖形的另一類型的軟件應(yīng)用程序。軟件應(yīng)用程序18可包含指令GPU12渲染圖形用戶界面(GUI)及/或圖形場景的一或多個繪制指令。舉例來說,繪制指令可包含界定待由GPU12渲染的一或多個圖形圖元的集合的指令。在一些實例中,繪制指令可共同地界定用于GUI中的多個開窗表面的全部或部分。在額外實例中,繪制指令可共同地界定圖形場景的全部或部分,所述圖形場景包含在由應(yīng)用程序界定的模型空間或世界空間內(nèi)的一或多個圖形對象。軟件應(yīng)用程序18可經(jīng)由圖形API20調(diào)用GPU驅(qū)動程序22,以將一或多個命令發(fā)布至GPU12以供將一或多個圖形圖元渲染為可顯示的圖形圖像。舉例來說,軟件應(yīng)用程序18可經(jīng)由圖形API20調(diào)用GPU驅(qū)動程序22以將圖元定義提供至GPU12。在一些情況下,可采用繪制圖元(例如,三角形、矩形、三角扇、三角帶等)的列表的形式來將圖元定義提供至GPU12。所述圖元定義可包含指定與待渲染的圖元相關(guān)聯(lián)的一或多個頂點(diǎn)的頂點(diǎn)規(guī)格。所述頂點(diǎn)規(guī)格可包含每一頂點(diǎn)的位置坐標(biāo),且在一些情況下包含與頂點(diǎn)相關(guān)聯(lián)的其它屬性,例如色坐標(biāo)、法向量及紋理坐標(biāo)。所述圖元定義還可包含圖元類型信息(例如,三角形、矩形、三角扇、三角形帶等)、縮放信息、旋轉(zhuǎn)信息,及其類似者?;谟绍浖?yīng)用程序18發(fā)布至GPU驅(qū)動程序22的指令,GPU驅(qū)動程序22可調(diào)配一或多個命令,所述一或多個命令指定供GPU12執(zhí)行以便渲染圖元的一或多個操作。當(dāng)GPU12從CPU6接收命令時,圖形處理管線對命令進(jìn)行解碼且對圖形處理管線進(jìn)行配置以執(zhí)行命令中所指定的操作。舉例來說,圖形處理管線中的輸入?yún)R編程序可讀取圖元數(shù)據(jù),且將數(shù)據(jù)匯編成供圖形處理管線中的其它圖形管線階段使用的圖元。在執(zhí)行指定操作之后,圖形處理管線將經(jīng)渲染的數(shù)據(jù)輸出至與顯示裝置相關(guān)聯(lián)的幀緩沖器16。幀緩沖器16存儲用于GPU12的目的地像素。每一目的地像素可與唯一的屏幕像素位置相關(guān)聯(lián)。在一些實例中,幀緩沖器16可存儲每一目的地像素的色彩分量及目的地阿爾法值。舉例來說,幀緩沖器16可存儲每一像素的紅、綠、藍(lán)、阿爾法(RGBA)分量,其中“RGB”分量對應(yīng)于色彩值且“A”分量對應(yīng)于目的地阿爾法值。雖然將幀緩沖器16及系統(tǒng)存儲器10說明為單獨(dú)的存儲器單元,但在其它實例中,幀緩沖器16可為系統(tǒng)存儲器10的部分。在一些實例中,圖形處理管線可包含頂點(diǎn)著色器階段、外殼著色器階段、域著色器階段、幾何著色器階段及像素著色器階段中的一或多者。所述圖形處理管線的這些階段可視為著色器階段。這些著色器階段可實施為在GPU12中的著色器單元46上執(zhí)行的一或多個著色器程序。著色器單元46可包括一或多個配置為處理分量的可編程管線的著色器單元。在一些實例中,著色器單元46可稱為“著色器處理器”或“統(tǒng)一著色器”,且可執(zhí)行幾何、頂點(diǎn)、像素或其它著色操作以渲染圖形。通過將命令發(fā)送至著色器單元46以執(zhí)行圖形處理管線中的頂點(diǎn)著色器階段、外殼著色器階段、域著色器階段、幾何著色器階段及像素著色器級中的一或多者,GPU12可指定著色器單元46執(zhí)行多種著色操作,例如頂點(diǎn)著色、外殼著色、域著色、幾何著色、像素著色及其類似者。在一些實例中,GPU驅(qū)動程序22可經(jīng)配置以編譯一或多個著色器程序且將所編譯的著色器程序下載至含于GPU12內(nèi)的一或多個可編程著色器單元上。可以高級著色語言編寫著色器程序,例如OpenGL著色語言(GLSL)、高級著色語言(HLSL)、圖形C語言(Cg)著色語言等。經(jīng)編譯的著色器程序可包含一或多個控制GPU12內(nèi)的著色器單元46的操作的指令。舉例來說,著色器程序可包含:頂點(diǎn)著色器程序,其可由著色器單元46執(zhí)行以實施頂點(diǎn)著色器階段的功能;外殼著色器程序,其可由著色器單元46執(zhí)行以實施外殼著色器階段的功能;域著色器程序,其可由著色器單元46執(zhí)行以實施域著色器階段的功能;幾何著色器程序,其可由著色器單元46執(zhí)行以實施幾何著色器階段的功能;及/或像素著色器程序,其可由著色器單元46執(zhí)行以實施像素著色器的功能。頂點(diǎn)著色器程序可對可編程頂點(diǎn)著色器單元或統(tǒng)一著色器單元的執(zhí)行進(jìn)行控制,且包含指定一或多個逐頂點(diǎn)操作的指令。著色器單元46可包含處理器核心48,所述處理器核心中的每一者可包含用于獲取及解碼操作的一或多個組件、用于執(zhí)行算術(shù)計算的一或多個算術(shù)邏輯單元、一或多個存儲器、緩存及寄存器。在一些實例中,處理器核心48也可稱作標(biāo)量處理元件。處理器核心48中的每一者可包含通用寄存器25。通用寄存器25可存儲直接由處理器核心48中的ALU24存取的數(shù)據(jù)。舉例來說,通用寄存器25可存儲待由ALU24縮放的向量分量,且也可存儲由ALU24輸出的經(jīng)縮放向量分量。處理器核心48中的每一者可包含標(biāo)量ALU,例如ALU24。如上文所論述,ALU24可為執(zhí)行整數(shù)算術(shù)、浮點(diǎn)及邏輯運(yùn)算的數(shù)字電路??捎葾LU24執(zhí)行的運(yùn)算可包含加法、減法及逐位運(yùn)算。在一些實例中,ALU24可能不能夠執(zhí)行例如乘法及除法等運(yùn)算。根據(jù)本發(fā)明的各方面,ALU24可通過縮放向量的分量來縮放向量。ALU24也可將向量的經(jīng)縮放分量輸出至圖形存儲器40或通用寄存器25。圖形存儲器40為物理地整合至GPU12的集成電路中的片上存儲裝置或存儲器。因為圖形存儲器40為片上存儲器,所以與經(jīng)由系統(tǒng)總線從系統(tǒng)存儲器10讀取值或?qū)⒅祵懭胫料到y(tǒng)存儲器10相比,GPU12可能能夠更快速地從圖形存儲器40讀取值或?qū)⒅祵懭胫翀D形存儲器40。圖形存儲器40可存儲向量的分量,且也可存儲由ALU24縮放之后的向量的經(jīng)縮放分量。圖形存儲器40可以浮點(diǎn)格式存儲向量的分量,以使得每一分量可作為有正負(fù)號的位、有效及指數(shù)存儲在圖形存儲器40中。圖3為說明可由CPU6或GPU12縮放的實例三維向量的框圖。如圖3中所展示,三維笛卡爾(Cartesian)坐標(biāo)系統(tǒng)52中的向量50可經(jīng)由指示向量50的相應(yīng)分量54A至54C(“分量54”)的值的元組(x,y,z)來表示。向量50的分量54可包含x分量54A、y分量54B及z分量54C。如上文所論述,向量50的分量54中的每一分量可為作為有正負(fù)號的位、有效數(shù)及指數(shù)存儲在圖形存儲器40或通用寄存器25中的浮點(diǎn)值。舉例來說,實例浮點(diǎn)值1.2345可等于12345*10-4,因此12345可為有效數(shù)或尾數(shù),且-4可為底數(shù)10的指數(shù)。在其它實例中,所述指數(shù)可為底數(shù)2的指數(shù)。為了表示負(fù)指數(shù)值,可對指數(shù)進(jìn)行偏置或偏移,以使得指數(shù)值轉(zhuǎn)換成正值。舉例來說,可將值15加至指數(shù),以使得指數(shù)值-4可在存儲器中存儲為11。圖4為說明用于表示向量50的分量54中的每一分量的實例浮點(diǎn)格式的概念圖。如上文所論述,向量50的分量54中的每一分量可為浮點(diǎn)值。如圖4中所展示,分量54中的每一分量可以浮點(diǎn)格式60表示。浮點(diǎn)格式60可包含正負(fù)號位62,其指示由浮點(diǎn)格式60表示的浮點(diǎn)值的正負(fù)號。正負(fù)號位62在浮點(diǎn)值的正負(fù)號為負(fù)的情況下可為1,且在浮點(diǎn)值的正負(fù)號為正的情況下可為0。浮點(diǎn)格式60可進(jìn)一步包含指數(shù)64及有效數(shù)66。在一個實例中,對于32位IEEE浮點(diǎn)格式60,正負(fù)號位62可為一個位,指數(shù)64可為8位(伴以127的偏差),且有效數(shù)66可為23位(伴以整數(shù)隱藏)。舉例來說,浮點(diǎn)值-82.3125可等于-1.01001001012*26。在本實例中,正負(fù)號位62可設(shè)置成1。指數(shù)64可為10000101,歸因于127的偏差,其為13310,且因為可隱藏整數(shù)位,所以有效數(shù)66可為01001001010000000000000。根據(jù)本發(fā)明的各方面,處理器6或GPU12可使用ALU24縮放向量50,以使得處理器6或GPU12可執(zhí)行向量50的向量標(biāo)準(zhǔn)化而不溢出存儲所述向量標(biāo)準(zhǔn)化運(yùn)算的中間結(jié)果的寄存器。因為ALU24可為硬件電路,所以此類向量50的縮放可在硬件中執(zhí)行,而非在由(例如)著色器單元46執(zhí)行的軟件中執(zhí)行。此外,因為ALU24可包含用于執(zhí)行加法及減法運(yùn)算的功能性但可能不包括用于執(zhí)行乘法及/或除法運(yùn)算的功能性,所以ALU24可能能夠在不執(zhí)行乘法或者除法運(yùn)算的情況下縮放向量50。為了縮放向量50,GPU12可接收向量50的分量54。舉例來說,如果向量50為三維向量,那么GPU12可接收向量50的x分量54A、y分量54B及z分量54C。向量50的分量54可存儲在存儲器中,例如系統(tǒng)存儲器10、圖形存儲器40、著色器單元46的存儲器、通用寄存器25,及其類似者。如上文所論述,向量50的分量54可各自為包含至少一有效數(shù)及一指數(shù)的浮點(diǎn)值。GPU12可確定分量54的指數(shù)中的最大指數(shù)。舉例來說,如果分量54的指數(shù)為-1、2及5,那么GPU12可確定分量54的指數(shù)中的最大指數(shù)為5。在一些實例中,確定分量54的指數(shù)中的最大指數(shù)可包含確定分量54的指數(shù)中的最大值指數(shù)。因此,(例如)如果分量54的指數(shù)為-1、2及5,GPU12可確定分量54中的最大值指數(shù)為5,因為5大于2或-1。響應(yīng)于GPU12確定分量54的指數(shù)中的最大指數(shù),GPU12可確定用于縮放分量54的指數(shù)中的每一者的縮放值。在一個實例中,縮放值可等于最大指數(shù),因此對于分量54的指數(shù),縮放值可為5。在另一個實例中,GPU12可確定縮放值以防止在縮放之后經(jīng)縮放指數(shù)的下溢及/或溢出在這種情況下,GPU12可至少部分地基于所述最大指數(shù)來確定所述縮放值。舉例來說,縮放值可為最大指數(shù)+常量。舉例來說,縮放值可為最大指數(shù)-(maximum_representable_exponent-1)/2+1。maximum_representable_exponent可為從分量54的浮點(diǎn)格式導(dǎo)出的常量的最大可表示的指數(shù)。舉例來說,對于32位IEEE浮點(diǎn)數(shù),最大可表示的指數(shù)為128。指數(shù)范圍為[-127,128](即,從-127至128且包含端值),因為32位浮點(diǎn)數(shù)中的指數(shù)利用8位表示。在另一個實例中,GPU12可確定縮放值為(最大指數(shù)-1)/2-2。因此,給定最大指數(shù)15,縮放值可為(15-1)/2-2,結(jié)果可為5。響應(yīng)于GPU12確定縮放值,ALU24可經(jīng)配置以通過從分量54的每一指數(shù)減去所述縮放值來對分量54中的每一分量進(jìn)行縮放。舉例來說,針對向量50的x分量54A、y分量54B及z分量54C給定指數(shù)值-1、2及5,鑒于GPU12確定5為分量54的指數(shù)中的最大指數(shù)且鑒于GPU12確定縮放值為所述最大指數(shù)的值(即,將縮放值設(shè)置為5),則ALU24可從x分量54A的指數(shù)值-1減去5,ALU24可從y分量54B的指數(shù)值2減去5,且ALU24可從z分量54C的指數(shù)值5減去5,從而得到具有分別針對x分量54A、y分量54B及z分量54C的指數(shù)值-6、-3及0的經(jīng)縮放分量54。所得包含由ALU24輸出的指數(shù)的經(jīng)縮放分量可存儲在存儲器中,例如圖形存儲器40、系統(tǒng)存儲器10、通用寄存器25,及其類似者。如上文所論述,在一些實例中,分量54的指數(shù)可為偏置指數(shù)。GPU12及ALU24可按未偏置指數(shù)的類似方式處理偏置分量。舉例來說,如果分量54的指數(shù)的值-1、2及5通過15加以偏置,使得將15加至分量54的每一指數(shù),那么分量54的偏置指數(shù)的值可為14、17及20。因此,GPU12可確定分量54的偏置指數(shù)中的最大指數(shù)為20。響應(yīng)于GPU12確定分量54的偏置指數(shù)中的最大指數(shù),GPU12可至少部分地基于所述最大指數(shù)確定縮放值。在本實例中,,GPU12可將縮放值設(shè)置為所述最大指數(shù)的值。響應(yīng)于GPU12確定縮放值,ALU24可通過從分量54的每一指數(shù)減去所述縮放值來對分量54中的每一分量進(jìn)行縮放。舉例來說,針對向量50的x分量54A、y分量54B及z分量54C給定偏置指數(shù)值14、17及20,且鑒于GPU12確定20為分量54的指數(shù)中的最大指數(shù)及縮放值被設(shè)置成所述最大指數(shù)的值,則ALU24可從x分量54A的指數(shù)值14減去20,ALU24可從y分量54B的值17減去20,且ALU24可從z分量54C的指數(shù)值20減去20。ALU24可將偏差15加至分量54的每一指數(shù),從而得到具有分別針對x分量54A、y分量54B及z分量54C的偏置指數(shù)值9、12及15的經(jīng)縮放分量54。ALU24可經(jīng)配置以每一時鐘周期輸出一個經(jīng)縮放分量,因此ALU24可在第一時鐘周期輸出經(jīng)縮放的x分量,在第二時鐘周期輸出經(jīng)縮放的y分量且在第三時鐘周期輸出經(jīng)縮放的z分量。用于執(zhí)行向量50的縮放的實例偽碼可如下表達(dá):如在上文偽碼中所展示,src0、src1及src2可為三維向量的分量的源存儲位置。dst可為存儲器中用于第一經(jīng)縮放分量的目標(biāo)位置,dst+1可為存儲器中用于第二經(jīng)縮放分量的下一個連續(xù)目標(biāo)位置,且dst+2可為存儲器中用于第三經(jīng)縮放分量的下一個連續(xù)目標(biāo)位置。如可見,經(jīng)縮放分量可存儲在存儲器中連續(xù)的存儲位置中。如上所述,GPU12可確定分量中的任何者是否為無窮大或不是數(shù)值。如果分量為未被定義或不可表示的值,那么分量可能不是數(shù)值。不是數(shù)值的分量可用1s填充指數(shù)64,且可使有效數(shù)66為非零值。如果如此,那么不對向量的分量進(jìn)行縮放。否則的話,GPU12可至少部分地基于分量的指數(shù)中的最大指數(shù)來確定縮放值。對于src0、src1及src2中的分量中的每一者,如果指數(shù)為零或反常數(shù)值,那么不對分量進(jìn)行縮放。反常數(shù)值可為具有小于最小正常數(shù)值的量值的任何非零數(shù)值。否則的話,ALU24可通過從所述縮放值減去分量的指數(shù)來對分量進(jìn)行縮放。在一些實例中,目標(biāo)存儲位置dst、dst+1或dst+2中的任一者可與源存儲位置src0、src1或src2重疊。GPU12可提供縮放功能以供將向量的經(jīng)縮放分量輸出為(rpt2)scale.x,(r)x,(x,y,z);。(rpt2)可指示縮放指令將在初始執(zhí)行之后重復(fù)兩次,因此其可執(zhí)行總計三次以輸出三維向量的經(jīng)縮放的x、y及z分量。scale.x可為縮放功能的功能名稱,其中scale.x中的x可為存儲向量的未縮放分量的源存儲位置的開始位置。(r)x可指示縮放指令將被重復(fù),且(r)x中的x可為用于存儲向量的經(jīng)縮放分量的目標(biāo)存儲位置的開始位置。(x,y,z)可為所述向量待由縮放功能予以縮放的分量。ALU24的吞吐量(其可為在一定量的時間中能夠發(fā)布至ALU24的管線的縮放指令的數(shù)目)可為3周期/縮放指令。ALU24在執(zhí)行縮放指令中的時延(其可為從發(fā)布至完成用以執(zhí)行縮放指令的時間總量)可取決于縮放指令的實施方案。圖5為說明用于縮放向量的實例過程的流程圖。如圖5中所展示,所述過程可包含通過處理器6或GPU12接收向量的分量,其中所述向量的分量中的每一者包括至少一個指數(shù)(502)。所述過程可進(jìn)一步包含通過處理器6或GPU12確定所述向量的分量的相應(yīng)指數(shù)中的最大指數(shù)(504)。所述過程可進(jìn)一步包含通過處理器6或GPU12至少部分地基于所述最大分量來確定縮放值(506)。所述過程可進(jìn)一步包含利用處理器6或GPU12的ALU24通過從所述向量的分量的相應(yīng)指數(shù)中的每一者減去所述縮放值來縮放所述向量(508)。在一些實例中,縮放向量可進(jìn)一步包含通過ALU24在不執(zhí)行乘法運(yùn)算或除法運(yùn)算的情況下對向量進(jìn)行縮放。在一些實例中,所述向量的分量中的每一者可為浮點(diǎn)數(shù),且其中所述浮點(diǎn)數(shù)可表示為正負(fù)號位、有效數(shù)及指數(shù)。在一些實例中,所述向量可包括三維向量,且所述向量的分量可包括x分量、y分量及z分量。在一些實例中,縮放所述向量可包含在第一時鐘周期中利用ALU24通過從所述向量的x分量的第一指數(shù)減去縮放值來對所述向量的x分量進(jìn)行縮放,在第二時鐘周期中利用ALU24通過從所述向量的y分量的第二指數(shù)減去縮放值來對所述向量的y分量進(jìn)行縮放,且在第三時鐘周期中利用ALU24通過從所述向量的z分量的第三指數(shù)減去縮放值來對所述向量的z分量進(jìn)行縮放。在一些實例中,所述過程可進(jìn)一步包含將經(jīng)縮放的x分量、經(jīng)縮放的y分量及經(jīng)縮放的z分量輸出至存儲器中的連續(xù)存儲位置中。在一些實例中,ALU24可為硬件數(shù)字電路。在一些實例中,至少部分地基于最大指數(shù)來確定縮放值可包含確定縮放值為所述最大指數(shù)。在一些其它實例中,至少部分地基于最大指數(shù)來確定縮放值可包含至少部分地基于所述最大指數(shù)及最大代表性指數(shù)來確定縮放值。在一或多個實例中,所描述的功能可實施于硬件、軟件、固件或其任何組合中。如果實施于軟件中,那么可將所述功能作為一或多個指令或代碼存儲在計算機(jī)可讀媒體上或經(jīng)由計算機(jī)可讀媒體傳輸。計算機(jī)可讀媒體可包含計算機(jī)數(shù)據(jù)存儲媒體或通信媒體,所述通信媒體包含促進(jìn)計算機(jī)程序從一處傳遞至另一處的任何媒體。數(shù)據(jù)存儲媒體可為任何可由一或多個計算機(jī)或一個或多個處理器存取以檢索用于實施本發(fā)明中所描述的技術(shù)的指令、代碼及/或數(shù)據(jù)結(jié)構(gòu)的可用媒體。借助于實例而非限制,此類計算機(jī)可讀媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置,或任何可用于攜載或存儲呈指令或數(shù)據(jù)結(jié)構(gòu)形式的所要程序代碼且可由計算機(jī)存取的其它媒體。并且,適當(dāng)?shù)貙⑷魏芜B接稱作計算機(jī)可讀媒體。舉例來說,如果使用同軸電纜、光纖電纜、雙絞線、數(shù)字訂戶線(DSL)或例如紅外線、無線電及微波等無線技術(shù)從網(wǎng)站、服務(wù)器或其它遠(yuǎn)程源傳輸軟件,那么所述同軸電纜、光纖電纜、雙絞線、DSL或例如紅外線、無線電及微波等無線技術(shù)包含于媒體的定義中。如本文所使用的磁盤及光盤包含壓縮光盤(CD)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(DVD)、軟盤及藍(lán)光光盤,其中磁盤通常是以磁性方式再現(xiàn)數(shù)據(jù),而光盤是用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。以上各項的組合也應(yīng)包含在計算機(jī)可讀媒體的范圍內(nèi)。代碼可由一或多個處理器(例如一或多個數(shù)字信號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效的集成或離散邏輯電路)執(zhí)行。因此,如本文中所使用的術(shù)語“處理器”及“處理單元”可指代前述結(jié)構(gòu)或適于實施本文中所描述的技術(shù)的任何其它結(jié)構(gòu)中的任一者。此外,在一些方面,本文中所描述的功能性可提供于經(jīng)配置以用于編碼及解碼的專用硬件及/或軟件模塊內(nèi),或者并入于組合編解碼器中。并且,可以將所述技術(shù)完全實施于一或多個電路或邏輯元件中。本發(fā)明的技術(shù)可以在廣泛多種裝置或設(shè)備中實施,包含無線手持機(jī)、集成電路(IC)或一組IC(即,芯片組)。本發(fā)明中描述各種組件、模塊或單元以強(qiáng)調(diào)經(jīng)配置以執(zhí)行所揭示的技術(shù)的裝置的功能方面,但未必需要由不同硬件單元實現(xiàn)。實際上,如上文所描述,各種單元可結(jié)合合適的軟件及/或固件組合在編解碼器硬件單元中或通過交互操作硬件單元的集合來提供,所述硬件單元包含如上文所描述的一或多個處理器。已描述各種實例。這些實例及其它實例屬于所附權(quán)利要求書的范圍內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3