亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

處理系統(tǒng)的寄存器文件區(qū)域的制作方法

文檔序號:6650595閱讀:230來源:國知局
專利名稱:處理系統(tǒng)的寄存器文件區(qū)域的制作方法
背景技術(shù)
為了改善處理系統(tǒng)的性能,在單個的指令周期中對多個操作數(shù)同時執(zhí)行單指令多數(shù)據(jù)(Single Instruction Multiple Data,SIMD)指令。例如,八通道的SIMD執(zhí)行引擎可以同時對八個32位操作數(shù)數(shù)據(jù)執(zhí)行指令,每一個操作數(shù)被映射到SIMD執(zhí)行引擎的唯一計算通道。此外,SIMD指令可利用寄存器文件中的一個或多個寄存器,并且每個寄存器可以具有與執(zhí)行通道有關(guān)的固定位置(例如,可以為八通道SIMD執(zhí)行引擎提供多個八字寄存器,寄存器中的每個字被分配給不同的執(zhí)行通道)。以不同的方式高效并靈活地存取寄存器信息的能力可進一步改善SIMD執(zhí)行引擎的性能。


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