处理系统的寄存器文件区域的制作方法

文档序号:6650595阅读:186来源:国知局
专利名称:处理系统的寄存器文件区域的制作方法
背景技术
为了改善处理系统的性能,在单个的指令周期中对多个操作数同时执行单指令多数据(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.SubRegNum<VertStride;Width,HorzStride>:type其中RegFile标识寄存器文件1420的命名空间,RegNum指向寄存器文件1420中的寄存器(例如,R0至R7),SubRegNum是从该寄存器开始处的字节偏移量,VertStride描述了垂直跨距,Width描述了区域的宽度,HorzStride描述了水平跨距,以及type表明了每个数据元素的大小(例如,“b”用于表示字节大小而“W”用于表示字大小数据元素)。根据一些实施方式,SubRegNum可以被描述为多个数据元素(而不是多个字节)。同样地,VertStride、Width和HorzStride可以被描述为多个字节(而不是多个数据元素)。
图14举例说明了正在由SIMD执行引擎的八个通道所执行的机器代码加法指令。特别地,将由R2.17<16;2,1>b(SRC1)所描述的八个字节的每一个与由R1.14<16;4,0>b(SRC0)所描述的八个字节的每一个相加。所述八个结果被存储在由R5.3<18;4,3>w(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位寄存器边界时,下列代码可以计算分配给执行通道的数据元素的地址<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>根据一些实施方式,在每一个指令操作数的指令字中编码寄存器区域。例如,起始地址的寄存器号码和子寄存器号码可以被编码。有时,根据实际的描述,指令字中的值可以表示不同的值。例如,三个位可以用于编码区域的宽度,“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·库克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1