處理系統的寄存器文件區域的製作方法
2023-09-11 22:36:55 1
專利名稱:處理系統的寄存器文件區域的製作方法
背景技術:
為了改善處理系統的性能,在單個的指令周期中對多個操作數同時執行單指令多數據(Single Instruction Multiple Data,SIMD)指令。例如,八通道的SIMD執行引擎可以同時對八個32位操作數數據執行指令,每一個操作數被映射到SIMD執行引擎的唯一計算通道。此外,SIMD指令可利用寄存器文件中的一個或多個寄存器,並且每個寄存器可以具有與執行通道有關的固定位置(例如,可以為八通道SIMD執行引擎提供多個八字寄存器,寄存器中的每個字被分配給不同的執行通道)。以不同的方式高效並靈活地存取寄存器信息的能力可進一步改善SIMD執行引擎的性能。
圖1和2是處理系統的方框圖。
圖3舉例說明了處理系統的指令和寄存器文件。
圖4是根據一些實施方式的方法的流程圖。
圖5舉例說明了根據一些實施方式的處理系統的指令和寄存器文件。
圖6舉例說明了根據一些實施方式的在寄存器文件中的執行通道映射。
圖7舉例說明了根據一些實施方式的包括水平跨距(stride)的區域描述。
圖8舉例說明了根據一些實施方式的包括零水平跨距的區域描述。
圖9舉例說明了根據一些實施方式的字類型數據元素的區域描述。
圖10舉例說明了根據一些實施方式的包括垂直跨距的區域描述。
圖11舉例說明了根據一些實施方式的包括零垂直跨距的區域描述。
圖12舉例說明了根據一些實施方式的區域描述。
圖13舉例說明了根據一些實施方式的區域描述,其中在所述區域描述中水平跨距和垂直跨距均為零。
圖14舉例說明了根據一些實施方式的區域描述。
圖15是根據一些實施方式的系統的方框圖。
具體實施例方式
在此描述的一些實施方式與「處理系統」有關。如在此所使用的,詞組「處理系統」可以涉及處理數據的任何設備。處理系統例如可以與用於處理圖形數據和/或其他種類的媒體信息的圖形引擎有關。在某些情況中,可以藉助於SIMD執行引擎來改善處理系統的性能。例如,SIMD執行引擎可以同時對多通道數據執行單浮點SIMD指令(例如,加速三維幾何形狀的變換和/或繪製)。處理系統的其他實例包括中央處理器(Central Processing Unit,CPU)和數位訊號處理器(Digital Signal Processor,DSP)。
圖1舉例說明了一種包括SIMD執行引擎110的處理系統100。在這種情況下,執行引擎110連同四分量數據矢量(例如,矢量分量X、Y、Z和W,每個矢量分量具有編排用於在SIMD執行引擎110的相應通道0至3上進行處理的位)一起接收指令(例如,來自指令存儲單元)。引擎110而後可以同時對矢量中的所有分量執行指令。這樣的方法被稱作「水平」、「並行通道(channel-parallel)」或者「結構數組(Array Of Structures,AOS)」實現。
圖2舉例說明了另一種包括SIMD執行引擎210的處理系統200。在這種情況下,執行引擎210連同四個操作數數據一起接收指令,其中每個操作數與不同的矢量有關(例如,來自矢量V0至V3的四個X分量)。每個矢量例如可以包括與三維圖形位置有關的三個位置值(例如,X、Y和Z)。引擎210然後可以在單個指令周期中對所有的操作數同時執行指令。這樣的方法被稱作「垂直」、「串行通道(channel-serial)」或者「數組結構(Structure OfArrays,SOA)」實現。儘管在此描述的一些實施方式與四通道和八通道SIMD執行引擎有關,但是應該注意的是SIMD執行引擎可以具有大於一的任何數目的通道(例如,實施方式可以與三十二通道執行引擎有關)。
圖3舉例說明了具有八通道SIMD執行引擎310的處理系統300。執行引擎310可以包括諸如晶片級通用寄存器文件(General Register File,GRF)之類的八字節寄存器文件320,其能夠利用彙編語言和/或機器代碼指令進行存取。特別地,圖3中的寄存器文件320包括五個寄存器(R0至R4)且執行引擎310正在執行以下的硬體指令add(8)R1 R3 R4「(8)」表明將在所有的八個執行通道的操作數上執行所述指令。「R1」是目的操作數(DEST),以及「R3」和「R4」是源操作數(分別為SRC0和SRC1)。因此,將R4中的八個單字節數據元素的每一個與R3中的相應數據元素相加。然後將八個結果存儲在R1中。具體地,R4的第一個字節與R3的第一個字節相加,並且該結果存儲在R1的第一個字節中。同樣地,R4的第二個字節與R3的第二個字節相加,並且該結果存儲在R1的第二個字節中等等。
在一些應用程式中,以多種方式存取寄存器文件中的信息是有益的。例如,在圖形應用程式中將部分寄存器文件看作為矢量、標量和/或值的數組有時是有益的。這樣的方法可以有助於減少指令和/或數據移動、打包(packing)、解包(unpacking)和/或搬動(shuffling)的數量,並有助於改善系統的性能。
圖4是根據一些實施方式的方法的流程圖。在此描述的流程圖未必表示動作的固定次序,而可以以任何可實行的次序來執行實施方式。應當注意的是在此描述的任何方法可以由硬體、軟體(包括微碼)、固件或者這些手段的任何組合來執行。例如,根據在此所描述的任何實施方式,硬體指令映射引擎可用於簡化操作。
在402,為操作數描述了寄存器文件區域。操作數例如可以是要由SIMD執行引擎來執行的機器代碼指令的目的操作數或者源操作數。根據一些實施方式,所描述的區域是「動態的」在於寄存器文件中的不同區域是在不同時間定義的。區域的描述例如可以被編碼到機器代碼指令中。需要注意的是一個時間內可以描述不止一個的寄存器文件區域。
在404,根據所描述的區域而安排信息存儲到寄存器文件中(或者從寄存器文件中檢索信息)。例如,將來自第一區域的數據與第二區域中的數據相比較,並且可以將結果存儲在高通道基區域(per-channel basis)上的第三區域中。
圖5舉例說明了根據一些實施方式的具有八通道SIMD執行引擎510的處理系統500。在該實例中,對於具有五個八字節寄存器(R0至R4)的寄存器文件520來說描述了三個區域目標區域(DEST)和兩個源區域(SRC0和SRC1)。所述區域例如可以已經由機器代碼加法指令定義。此外,在該實例中所有的執行通道正在被使用,並且數據元素被假設為數據的字節(例如,八個SRC1位元組的每一個將被加到相應的SRC0位元組中,並且所述結果將被存儲在寄存器文件520中的八個DEST字節中)。
每個區域描述包括寄存器標識符和「子寄存器標識符」,所述子寄存器標識符表明寄存器文件520中的第一數據元素的位置(在圖5中舉例說明的作為RegNum.SubRegNum的「起始地址」)。子寄存器標識符例如可以表明距寄存器起始處的偏移量(例如,以及可以利用位或者字節或者多個數據元素的物理號碼(physical number)來表示)。例如,圖5中的DEST區域具有R0.2的起始地址,表明DEST區域中的第一數據元素位於第一寄存器(R0)的字節二。同樣地,SRC0區域開始於R2的字節三(R2.3),SCR1區域起始於R4的第一個字節(R4.0)。需要注意的是所描述的區域可能不與寄存器文件520相對齊(例如,區域不需要起始於一個寄存器的字節0並終止於字節7)。
注意起始地址可以以其他的方式定義。例如,寄存器文件520可以被認為是連續的40位元組存儲區域。此外,單個6位地址起始地址可以指向寄存器文件520內的一個字節。注意單個6位地址起始地址能夠指向最多64位元組存儲區域的寄存器文件內的任何字節。作為另一個實例,寄存器文件520可以被認為是連續的320位存儲區域。在這種情況下,單個9位地址起始地址能夠指向寄存器文件520內的一位。
每個區域描述還可以包括區域的「寬度」。所述寬度例如可以表明與寄存器行內的所描述區域有關的數據元素的數量。例如,圖5中舉例說明的DEST區域具有四個數據元素的寬度(例如,四個字節)。因為八個執行通道正在被使用(並因此需要存儲八個單字節的結果),所以區域的「高度」是兩個數據元素(例如,所述區域將跨越二個不同的寄存器)。也就是說,在四個元素寬、二個元素高的DEST區域中的數據元素的總數是八個。DEST區域可以被認為是包括寄存器行和寄存器列的數據元素的二維陣列。
同樣地,SRC0區域被描述成四個字節寬(因此二行或者寄存器高),SRC 1區域被描述成是八個字節寬(因此具有一個數據元素的垂直高度)。注意單個區域可能跨越寄存器文件520中的不同的寄存器(例如,圖5中舉例說明的DEST區域的一些位於R0的一部分,而其他位於R1的一部分)。
儘管在此論述的一些實施方式描述了區域的寬度,但是根據其他的實施方式而作為替代描述了區域的垂直高度(在這樣情況下,區域的寬度可以根據數據元素的總數來推斷)。此外,注意在寄存器文件520中可以定義重疊的寄存器區域(例如,SRC0定義的區域可能部分地或者完全地統SRC1定義的區域相重疊)。另外,儘管在此論述的一些實例具有二個源操作數和一個目的操作數,但是其他種類的指令也可以被使用。例如,指令可以具有一個源操作數和一個目的操作數,三個源操作數和二個目的操作數,等等。
根據一些實施方式,所描述的區域的起始地址和寬度可以產生「覆蓋(wrapping)」到寄存器文件520中的下一個寄存器的區域。例如,具有R2.6的起始地址及八個數據元素寬度的字節大小數據元素的區域包括R2的最後字節以及R3的前六個字節。同樣地,區域可以從寄存器文件520的底部覆蓋到頂部(例如,從R4到R0)。
SIMD執行引擎510可以將所描述的SRC1區域中的每個字節相加到所描述SRC0區域中的相應字節,並將結果存儲在寄存器文件520中的所描述的DEST區域中。例如,圖6舉例說明了根據一些實施方式的寄存器文件520中的執行通道映射。在這種情況下,數據元素被安排在描述的按以行為主順序的區域內部。例如,考慮執行引擎510的通道6。該通道將存儲在R4的字節六中的值相加到存儲在R3的字節五中的值並將結果存儲在R1的字節四中。根據其他的實施方式,數據元素可以被安排在按以列為主順序的所描述區域內部或者利用任何其他的映射技術。
圖7舉例說明了根據一些實施方式的包括「水平跨距(horizontal stride)」的區域描述。所述水平跨距例如可以表明在寄存器文件720中的數據元素的列之間的列偏移量。特別地,圖7中描述的區域是用於八個單字節數據元素的(例如,當十六通道SIMD執行引擎的僅僅八個通道正在被機器代碼指令使用時區域可以是合理的)。所述區域是四字節寬,並且因此是二個數據元素高(以便所述區域將包括八個數據元素),以及起始於R1.1(R1的字節1)。
在這種情況下,已經描述了二個水平跨距。結果,相對於那行中其相鄰數據元素而言行中的每個數據元素偏移了兩個字節。例如,與執行引擎的通道5有關的數據元素位於R2的字節3,以及與通道6有關的數據元素位於R2的字節5。以這種方法,在寄存器文件720中描述的區域可能不是相連的。注意當描述水平跨距為一時,結果將是開始於寄存器文件720二維圖中R1.1處的連續4x2位元組陣列。
圖7中描述的區域可以與源操作數有關,而在這樣情況下當執行指令時數據可以被從不相連的區域聚集。圖7中描述的區域還可以與目的操作數有關,而在這樣情況下當執行指令時結果可以被散射到不相連的區域中。
圖8舉例說明了根據一些實施方式的包括「零」水平跨距的區域描述。和圖7一樣,所述區域是用於八個單字節數據元素並且是四個字節寬(因此二個數據元素高)。然而,因為水平跨距是零,所以第一行中的四個元素中的每一個映射到寄存器文件820中的相同的物理位置(例如,相對於它們的相鄰數據元素其偏移為零)。結果,R1.1中的值被複製用於最初的四個執行通道。例如當所述區域與「相加」指令的源操作數有關時,則相同的值將被用於所有的最初的四個執行通道。同樣地,R2.1中的值被複製用於最後的四個執行通道。
根據一些實施方式,水平跨距的值可以被編碼到指令中。例如,3位欄位可以用於描述下列的八個可能的水平跨距值0、1、2、4、8、16、32和64。此外,根據一些實施方式可以描述非水平跨距。
注意可以為各種大小的數據元素描述區域。例如,圖9舉例說明了根據一些實施方式的用於字類型數據元素的區域描述。在這種情況下,寄存器文件920具有八個十六字節寄存器(R0至R7,每個寄存器具有128位),並且所述區域從R2.3開始。執行大小是八個通道,並且所述區域的寬度是四個數據元素。此外,每個數據元素被描述為是一個字(二個字節),並因此與第一個執行通道(CH0)有關的數據元素佔據了R2的字節3和4。注意該區域的水平跨距是一。除字節和字類型數據元素之外,實施方式可以與其他類型的數據元素有關(例如,位或者浮點型元素)。
圖10舉例說明了根據一些實施方式的包括「垂直跨距」的區域描述。垂直跨距例如可以表明在寄存器文件1020內的數據元素行之間的行偏移量。如在圖9中,寄存器文件1020具有八個十六字節寄存器(R0至R7),並且所述區域從R2.3開始。執行大小是八個通道,並且所述區域的寬度是四個單字數據元素(表示所述區域的行高度是二)。然而,在這種情況下,已經描述了垂直跨距是二。結果,列中的每個數據元素偏離該行中的相鄰數據元素二個寄存器。例如,與執行引擎的通道3有關的數據元素位於R2的字節9和10,以及與通道7有關的數據元素位於R4的字節9和10。和水平跨距一樣,所描述的區域在寄存器文件1020中不是連續的。注意當描述垂直跨距為一時,結果將是開始於寄存器文件1020的二維圖中R2.3處的連續4×2字陣列。
圖10中描述的區域可以與源操作數有關,而在這樣情況下當執行指令時數據可以是從不連續區域中收集的。圖10中描述的區域還可以與目的操作數有關,而在這樣情況下當執行指令時結果可以被分散到不連續區域中。根據一些實施方式,垂直跨距可以被描述為在數據元素的行之間的數據元素列偏移量(例如,如參照圖14描述的那樣)。注意垂直跨距可以小於、大於或者等於水平跨距。
圖11舉例說明了根據一些實施方式的包括「零」垂直跨距的區域描述。和圖9和10一樣,所述區域用於八個單字數據元素並是四個字寬(因此二個數據元素高)。然而,因為垂直跨距是零,所以第一列中的兩個元素都映射到寄存器文件1130中的相同的位置(例如,它們彼此偏離零)。結果,R2的字節3-4處的字被複製以用於那二個執行通道(例如,通道0和4)。例如當所述區域與「比較」指令的源操作數有關時,則相同的值將被用於兩個執行通道。同樣地,R2的字節5-6處的字被複製用於SIMD執行引擎的通道1和5,等等。另外,垂直跨距的值可以被編碼到指令中,以及根據一些實施方式可以描述非垂直跨距。
根據一些實施方式,垂直跨距可以被定義為寄存器文件中的多個數據元素(而不是多個寄存器行)。例如,圖12舉例說明了根據一些實施方式的具有一個數據元素(一個字)垂直跨距的區域描述。因此,由該區域所定義的陣列的第一「行」包括從R2.3至R2.10的四個字。第二行偏移單個字並且從R2.5跨越到R2.12。這樣的實現例如可以與用於過濾操作的滑動窗口有關。
圖13舉例說明了根據一些實施方式的區域描述,其中在所述區域描述中水平和垂直跨距都是零。結果,全部八個執行通道被映射到寄存器文件1320中的單個位置(例如,R2的字節3-4)。當所述區域與機器代碼指令有關時,因此,可由全部的八個執行通道來使用R2的字節3-4處的單個值。
注意可以為不同的指令提供不同類型的描述。例如,第一指令可以將目標區域定義為4×4的陣列,而下一個指令可以將區域定義為1×16的陣列。此外,可以為單個指令描述不同類型的區域。
例如考慮具有八個三十二字節寄存器的(R0至R7,每個寄存器具有256位)圖14中所示的寄存器文件1420。注意在該例證中,每個寄存器被顯示為兩「行」並且在區域的每個位置中顯示樣本值。
在該實例中,為如下的指令內的操作數描述區域RegFile RegNum.SubRegNumVertStride;Width,HorzStride:type其中RegFile標識寄存器文件1420的命名空間,RegNum指向寄存器文件1420中的寄存器(例如,R0至R7),SubRegNum是從該寄存器開始處的字節偏移量,VertStride描述了垂直跨距,Width描述了區域的寬度,HorzStride描述了水平跨距,以及type表明了每個數據元素的大小(例如,「b」用於表示字節大小而「W」用於表示字大小數據元素)。根據一些實施方式,SubRegNum可以被描述為多個數據元素(而不是多個字節)。同樣地,VertStride、Width和HorzStride可以被描述為多個字節(而不是多個數據元素)。
圖14舉例說明了正在由SIMD執行引擎的八個通道所執行的機器代碼加法指令。特別地,將由R2.1716;2,1b(SRC1)所描述的八個字節的每一個與由R1.1416;4,0b(SRC0)所描述的八個字節的每一個相加。所述八個結果被存儲在由R5.318;4,3w(DEST)所描述的八個字的每一個中。
SRC1是二個字節寬,並因此是四個數據元素高,以及開始於R2的字節17(在圖14中舉例說明的R2的第二行的第二個字節)。水平跨距是一。在這種情況下,垂直跨距被描述為多個數據元素列,所述數據元素列將區域的一行同鄰近的行分離(與參照圖10論述的行之間的行偏移量相反)。也就是說,區域的一行的開端偏離區域的下一行的開端16位元組。特別地,區域的第一行起始於R2.17,第二行起始於R3.1(從R2.17開始從右向左數起,並且當到達R2的末尾時覆蓋到下一個寄存器)。同樣地,第三行起始於R3.17。
SRC0是四個字節寬,並因此是二個數據元素高,以及開始於R1.14。因為水平跨距是零,所以位置R1.14中的值(例如如圖14中舉例說明的為「2」)映射到最初的四個執行通道,位置R1.30中的值(根據16的垂直跨距)映射到接下來的四個執行通道。
DEST是四個字寬,並因此是二個數據元素高,並且開始於R5.3。因此,執行通道將值「1」(SRC0區域的第一個數據元素)與值「2」(將由最初的四個執行通道使用的SRC1區域的數據元素)相加,並將結果「3」存儲到R5的字節3和4中(DEST區域的第一個字大小數據元素)。
DEST的水平跨距是三個數據元素,因此下一個數據元素是起始於R5的字節9的字(例如,偏離字節3三個字),在那之後的元素開始於R5的字節15(在圖14中顯示跨越兩行),以及DEST區域的第一行中的最後的元素起始於R5的字節21。
DEST的垂直跨距是十八個數據元素,因此DEST陣列的第二「行」的第一個數據元素起始於R6的字節7。存儲在該DEST位置中的結果是「6」,表示來自SRC0區域的第五個數據元素的「3」被加到來自SRC1區域的「3」中,其中所述SRC1區域適用於執行通道4至7。
因為寄存器文件中的信息可以以不同的方式高效和靈活地存取,所以可以改善系統的性能。例如,可以有效地使用機器代碼指令,所述機器代碼指令與複製標量、複製標量的矢量、複製矢量、二維陣列、滑動窗口和/或一維陣列的相關列表有關。結果,數據移動、打包、開包和或混合指令的數量可以被減少,其可以改善諸如與媒體核心有關的應用程式或算法之類的應用程式或算法的性能。
注意有時可以在區域描述中設置一些限制。例如,子寄存器起始地址和/或垂直跨距可以被允許用於源操作數而不允許用於目的操作數。此外,寄存器文件的物理性質可以限制區域描述。例如,相對大的寄存器文件可以利用嵌入式隨機存取存儲器(Random Access Memory,RAM)實現,與嵌入式RAM有關的費用和電源可以取決於所提供的讀寫埠的數目。因此,讀點和寫點的數目(以及RAM中寄存器的配置)可以限制區域描述。
圖15是根據一些實施方式的系統1500的方框圖。系統1500例如可以與適合於記錄和/或顯示數位電視信號的媒體處理器有關。根據在此描述的所有實施方式,系統1500包括其具有n操作數SIMD執行引擎1520的處理器1510。例如,SIMD執行引擎1520可以包括寄存器文件和指令映射引擎以將操作數映射到由指令定義的寄存器文件的動態區域。處理器1510例如可以與通用處理器、數位訊號處理器、媒體處理器、圖形處理器或者通信處理器有關。
系統1500還可以包括指令存儲器單元1530以存儲SIMD指令,以及包括數據存儲器單元1540以存儲數據(例如,與二維圖象、三維圖像和/或活動圖像有關的標量和矢量)。指令存儲器單元1530和數據存儲器單元1540例如可以包括RAM單元。注意指令存儲器單元1530和/或數據存儲器單元1540可以與單獨的指令和數據高速緩衝存儲器、共享的指令和數據高速緩衝存儲器或者任何其他的高速緩衝存儲器體系有關,其中單獨的指令和數據高速緩衝存儲器由通用共享高速緩衝存儲器支持。根據一些實施方式,系統1500還包括硬碟驅動器(例如,用於存儲和提供媒體信息)和/或諸如閃速存儲器之類的非易失性存儲器(例如,用於存儲和提供指令和數據)。
下面將舉例說明各種另外的實施方式。這些並不構成所有可能的實施方式的定義,並且本領域的技術人員將理解很多其他的實施方式是可能的。此外,儘管為了清楚起見簡要地描述了下列的實施方式,但是本領域的技術人員將理解必要時如何對上述說明書作出任何改變以以容納這些及其他的實施方式和應用程式。
雖然已經論述了所描述的源操作數和/或目的操作數的各種方式,但是注意實施方式可以使用上述的說明書的任何子集或者組合。例如,可以允許源操作數具有垂直跨距,而未必允許目的操作數具有垂直跨距。
注意可以以多種不同的方式的任一一種實現實施方式。例如,當目標寄存器被定位到256位寄存器邊界時,下列代碼可以計算分配給執行通道的數據元素的地址<![CDATA[//Input:Type:b|ub|w|uw|d|ud|f//RegNum:In unit of256-bit register //SubRegNum:In unit ofdata element size//ExecSize,Width,VertStride,HorzStride:In unit of data elements//Output:Address
for execution channelsint)) 2∶4;int Height=ExecSize/Width;int Channel=0;int RowBase=RegNum<<5+SubRegNum*ElementSize;for(int y=0;y<Height;y++){int Offset=RowBase;for(int x=0;x<Width;x++){Address[Channel++]=Offset;Offset+=HorzStride*ElementSize;}RowBase+=VertStride*ElementSize;}]]>根據一些實施方式,在每一個指令操作數的指令字中編碼寄存器區域。例如,起始地址的寄存器號碼和子寄存器號碼可以被編碼。有時,根據實際的描述,指令字中的值可以表示不同的值。例如,三個位可以用於編碼區域的寬度,「011」可以表示八個元素的寬度,而「100」表示十六個元素的寬度。以這種方式,同簡單編碼指令字中的描述的實際值相比,較大範圍的描述可以是可用的。
此外,在此已經參照SIMD執行引擎描述了一些實施方式。然而,注意那些實施方式可以與其他種類的執行引擎有關,比如多指令多數據(MultipleInstruction Multiple Data,MIMD)執行引擎。
在此描述的幾個實施方式只用於例證的目的。所屬技術領域的專業人員從該說明書中將認識到在僅僅由權利要求所限定的修改和變更的範圍內其他的實施方式也可以被實現。
權利要求
1.一種方法,包括為操作數描述寄存器文件中的動態區域,其中所描述的區域用於存儲多個數據元素,每個數據元素與執行引擎的執行通道相關聯;以及根據所描述的區域而安排將信息存儲到寄存器文件中或者從寄存器文件中取出。
2.根據權利要求1所述的方法,其中所述描述被包括在單指令多數據機器代碼指令中。
3.根據權利要求1所述的方法,其中所述操作數是源操作數或者目的操作數之一。
4.根據權利要求1所述的方法,還包括為多個操作數描述多個區域。
5.根據權利要求1所述的方法,其中所描述的區域跨越寄存器文件中的不同的寄存器。
6.根據權利要求1所述的方法,其中所描述的區域在寄存器文件中不是連續的。
7.根據權利要求1所述的方法,其中所描述的區域不與寄存器文件中的寄存器相對齊。
8.根據權利要求1所述的方法,其中所述描述包括用於表示寄存器文件中的第一個數據元素的位置的寄存器標識符和子寄存器標識符。
9.根據權利要求1所述的方法,其中所述寄存器文件包括寄存器行和寄存器列。
10.根據權利要求9所述的方法,其中按照下述方式將數據元素安排在所描述的區域內(i)以行為主的順序,或者(ii)以列為主的順序。
11.根據權利要求9所述的方法,其中所述描述包括多個與寄存器行內的所描述的區域相關聯的數據元素。
12.根據權利要求9所述的方法,其中所述描述包括表明在寄存器文件中數據元素的行之間的偏移量的水平跨距。
13.根據權利要求9所述的方法,其中所述描述包括表明下述內容中至少一個的垂直跨距(i)在寄存器文件中的數據元素的行之間的行偏移量或者(ii)在寄存器文件中的數據元素的行之間的數據元素偏移量。
14.根據權利要求1所述的方法,其中所述描述包括表明每個數據元素的大小的數據類型。
15.根據權利要求1所述的方法,其中所述描述包括表明與所描述的區域相關聯的數據元素的數目的執行大小。
16.根據權利要求1所述的方法,其中所描述的區域與下述內容中的至少一個相關聯(i)複製標量,(ii)複製標量的矢量,(iii)複製矢量,(iv)二維陣列,(v)滑動窗口,或者(vi)一維陣列的相關列表。
17.一種裝置,包括單指令多數據執行引擎;寄存器文件,所述寄存器文件與執行引擎在相同的管芯(die)上;以及指令映射引擎,用於(i)為機器代碼指令的操作數判斷一部分寄存器文件,其中所判斷的部分將用於存儲用於執行引擎的多個執行通道的信息,以及(ii)根據所判斷的區域而安排將信息存儲到寄存器文件中或者從寄存器文件中取出。
18.根據權利要求17所述的裝置,其中所判斷的區域跨越寄存器文件中的不同寄存器。
19.根據權利要求17所述的裝置,其中寄存器文件中所判斷的區域是不連續的。
20.根據權利要求17所述的裝置,其中所述寄存器文件包括寄存器行和寄存器列,並且指令映射引擎根據其中包括(i)寬度和(ii)水平跨距的描述判斷所述部件。
21.一種系統,包括n信道單指令多數據執行引擎,n是大於1的整數;寄存器文件;以及指令映射引擎,用於將操作數映射到由指令定義的寄存器文件的動態區域中;以及圖形數據存儲單元。
22.根據權利要求20所述的系統,其中所述指令映射引擎將數據分散到寄存器文件的區域中。
23.根據權利要求22所述的系統,其中在寄存器文件中所述區域是不連續的。
24.根據權利要求20所述的系統,其中所述指令映射引擎從寄存器文件的區域收集數據。
25.根據權利要求24所述的系統,其中寄存器文件中所述區域是不連續的。
全文摘要
根據一些實施方式,可以為操作數描述寄存器文件中的動態區域。所描述的區域例如可以存儲多個數據元素,每個數據元素與執行引擎的執行通道有關。然後根據所描述的區域而將信息存儲到寄存器文件中和/或從寄存器文件中取出。
文檔編號G06F15/80GK1821952SQ200510121700
公開日2006年8月23日 申請日期2005年12月28日 優先權日2004年12月28日
發明者H·江, V·庫克 申請人:英特爾公司