CN1619526B - 用于处理矩阵数据的处理器和方法 - Google Patents
用于处理矩阵数据的处理器和方法 Download PDFInfo
- Publication number
- CN1619526B CN1619526B CN2004100778584A CN200410077858A CN1619526B CN 1619526 B CN1619526 B CN 1619526B CN 2004100778584 A CN2004100778584 A CN 2004100778584A CN 200410077858 A CN200410077858 A CN 200410077858A CN 1619526 B CN1619526 B CN 1619526B
- Authority
- CN
- China
- Prior art keywords
- row
- register file
- vector register
- data element
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 98
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 title claims abstract description 15
- 239000013598 vector Substances 0.000 claims abstract description 156
- 238000003491 array Methods 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 101150064138 MAP1 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 208000037656 Respiratory Sounds Diseases 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000013604 expression vector Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 206010037833 rales Diseases 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Abstract
本发明提供了一种处理矩阵数据的处理器和方法。这种处理器包括M个独立的向量寄存器堆,可以一起存储一个具有L个数据元素的矩阵。每个数据元素具有B个二进制位。这个矩阵具有N个行和M个列,并且L=N*M。每个列具有K个子列。N≥2,M≥2,K≥1,以及B≥1。每个行和每个子列都是可寻址的。这种处理器不重复存储这L个数据元素。矩阵包括一系列数组,每个数组是矩阵的一个行或子列。处理器可以执行一个对这些数组中的第一数组相对第一数组中的各个数据元素有选择地进行一个操作的指令。
Description
技术领域
本发明涉及对存储在处理器中多个向量寄存器堆(vector register file)内的矩阵的行和子列(subcolumn)进行逻辑寻址的技术。
背景技术
单指令多数据(SIMD)向量处理环境可以用于执行与向量和矩阵数学运算有关的操作。这种数学处理可以涉及诸如图形和数字视频之类的各种多媒体应用。当前与SIMD向量处理有关的问题是由于需要灵活地对向量数据进行操作而产生的。当以标准的SIMD运算操作时,当前将向量数据处理为具有多个元素的单个(水平方向)向量。因此,可以对矩阵的行以传统方式进行水平地访问。然而,经常有必要将矩阵的列作为整体来访问,用当前技术实现这种访问是有问题的。例如,为了访问矩阵的列通常要产生矩阵的转置,这就存在着需要大量的转移/拷贝(move/copy)指令的问题,而且还增加了所需寄存器的数目(即,至少要加倍)。
因此,有必要开发一种高效率的对SIMD向量处理中所用的一个矩阵的行和列进行寻址的方法。
发明内容
本发明提供一种处理器,这种理器包括M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述N=K*M,所述B≥1,所述N个行的每个行都是可寻址的,并且所述K个子列的每个子列也都是可寻址的,所述处理器不重复存储所述L个数据元素。
本发明提供了一种处理矩阵数据的方法,这种方法包括:
提供一个处理器;以及
在所述处理器内提供M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述N=K*M,所述B≥1,所述N个行的每个行都是可寻址的,并且所述K个子列的每个子列也都是可寻址的,所述处理器不重复存储所述L个数据元素。
本发明提供了一种处理器,这种处理器包括M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N个行的每个行都是可寻址的,所述K个子列的每个子列都是可寻址的,所述矩阵包括一系列数组,每个数组是所述矩阵的一个行或子列,所述处理器可以执行一个对所述一系列数组中的第一数组进行一个操作的指令,所述操作是相对所述第一数组中的各个数据元素有选择地进行的。
本发明提供了一种处理矩阵数据的方法,这种方法包括:
提供一个处理器;
在所述处理器内提供M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N个行的每个行都是可寻址的,所述K个子列的每个子列都是可寻址的,所述矩阵包括一系列数组,每个数组是所述矩阵的一个行或子列;以及
由所述处理器执行一个指令,所述指令对所述一系列数组中的第一数组进行一个操作,所述操作是相对所述第一数组中的各个数据元素有选择地进行的。
本发明有益地提供了一种用于对SIMD向量处理中所用的矩阵的行和列进行寻址的高效率处理器和方法。
附图说明
图1示出了按照本发明的实施例的数据元素矩阵的一种布局。
图2示出了按照本发明的实施例存储图1的矩阵的各个数据元素的物理布局,和用于将各个数据元素读入图1的矩阵的多路转换器。
图3示出了按照本发明的实施例将各个数据元素从图2的物理布局读入图1的行和子列的读出逻辑表。
图4示出了按照本发明的实施例用于存储图1的矩阵的各个数据元素的图2的物理布局,以及将图1的矩阵的数据元素写入该物理布局的多路转换器。
图5示出了按照本发明的实施例将数据元素从图1的矩阵的行和子列写入图4的物理布局的写入逻辑表。
图6A-6C示出了一些指令,它们按照本发明的实施例使用图2或图4的多路转换器对于图1的矩阵10的行或子列有选择地执行操作。
图7示出了按照本发明的实施例的一种计算机系统,其具有一个对向量处理中所用的矩阵的行和子列进行寻址的处理器。
具体实施方式
图1示出了按照本发明的实施例的由一系列数据元素组成的矩阵10的布局。矩阵10包括128个行(标记为行0,1,…,127)和4个列(标记为列0,1,2,3)。行0,1,…,127分别编址为寄存器R0,R1,…,R127(即,寄存器Rn,n=0,1,…,127)。这些列分别分成如下一些子列:
列0分成子列128,132,…,252;
列1分成子列129,133,…,253;
列2分成子列130,134,…,254;以及
列3分成子列131,135,…,255。
子列128,129,…,255分别编址为寄存器R128,R129,…,R255(即,寄存器Rn,n=128,129,…,255)。
图1还示出了矩阵10的各个数据元素。每个数据元素包括B个二进制位(例如,B=32)。矩阵10的数据元素具有形式Rn[m],其中n为行标(n=0,1,…,127),而m为列标(m=0,1,2,3)。例如,R5[2]代表的是矩阵10的一个处在行5、列2的数据元素。如图1所示:
寄存器R0含有行0(即,数据元素R0[0],R0[1],R0[2],R0[3]);
寄存器R1含有行1(即,数据元素R1[0],R1[1],R1[2],R1[3]);
…
寄存器R127含有行127(即,数据元素R127[0],R127[1],R127[2],R127[3]);
寄存器R128含有子列0(即,数据元素R0[0],R1[0],R2[0],R3[0]);
寄存器R129含有子列1(即,数据元素R0[1],R1[1],R2[1]R3[1]);
…
寄存器255含有子列128(即,数据元素R0[128],R1[128],R2[128],R3[128])。
移动和重组图1的矩阵10的数据的指令由一个处理器处理,其中这个处理器包括:向量寄存器堆,用于访问所述的向量寄存器堆的地址寄存器,以及多路转换器。因此,图2示出了一个处理器15,按照本发明的实施例,它包括向量寄存器堆(V0,V1,V2,V3),地址寄存器(A0,A1,A2,A3),以及4∶1多路转换器(m0,m1,m2,m3)。在图2中,向量寄存器堆在地址寄存器和多路转换器的配合下使用,以便从向量寄存器堆中读出图1的矩阵10的行或子列。每个向量寄存器堆包括128个寄存器。所述向量寄存器堆的数目(4)与图1的矩阵10的列的数目(4)相等。向量寄存器堆Vj(j=0,1,2,3)包括寄存器Yi[j],i=0,1,…,127(即,Y0[j],Y1[j],…,Y127[j])。例如,向量寄存器堆V3(即j=3)包括寄存器Y0[3],Y1[3],…,Y127[3]。每个向量寄存器堆V0,V1,V2,V3(及其中的128个寄存器)可分别通过地址寄存器A0,A1,A2,A3独立寻址。概括地说,地址寄存器Aj(j=0,1,2,3)对向量寄存器堆Vj的寄存器Yi[j]寻址,如果Aj含有i(i=0,1,…,127)的话。例如,如果地址寄存器A2含有整数4,则地址寄存器A2对向量寄存器堆V2的寄存器Y4[2]寻址。
如图2所示,图1的矩阵10的数据元素Rn[m]存储和分布在向量寄存器堆V0,V1,V2,V3内。图2中,如下面将结合图3所说明的那样,数据数组元素Rn[m]在向量寄存器堆V0,V1,V2,V3的寄存器内的这种分布便于为向量读取操作对图1的矩阵10的行和子列进行寻址。由图2可见,图1的矩阵10按照以下两个规则存储在向量寄存器堆V0,V1,V2,V3内。
第一规则与将矩阵10的行存入向量寄存器堆有关。第一规则如下:如果将数据元素Rn[m]存储在寄存器Yn[j]内,则将数据元素R(n)[m1]存储在寄存器Y(n)[j1]内,其中j1=(j+1)mod 4(即,j=0,1,2,3分别映射为j1=1,2,3,0),而m1=(m+1)mod 4(即,m=0,1,2,3分别映射为m1=1,2,3,0)。运算符“mod”为如下定义的取模运算符。如果I1和I2都是正整数,则I1mod I2为I1除以I2后所得的余数。作为第一规则的一个例子,与寄存器R0关联的行的数据元素R0[0],R0[1],R0[2],R0[3]分别存储在寄存器Y0[0],Y0[1],Y0[2],Y0[3]内,而与寄存器R1关联的行的数据元素R1[0],R1[1],R1[2],R1[3]分别存储在寄存器Y1[1],Y1[2],Y1[3],Y1[0]内。由于第一规则,行n的数据元素Rn[0],Rn[1],Rn[2],Rn[3]分别存储在不同的向量寄存器堆内,但它们存储在各自的向量寄存器堆内相同的相对寄存器位置处(即,对于寄存器Yi[j],有i=n)。因此,与寄存器Rn关联的行的数据元素Rn[0],Rn[1],Rn[2],Rn[3]作为它的一个置换序列(permuted sequence)存储在图2的寄存器Yn[0],Yn[1],Yn[2],Yn[3]内。
第二规则与将矩阵10的子列存入向量寄存器堆有关。如果将数据元素Rn[m]存储在寄存器Yn[j]内,则将数据元素R(n+1)[m]存储在寄存器Y(n+1)[j1]内,其中j1=(j+1)mod 4。作为第二规则的一个例子,寄存器R129所指向的子列的数据元素R0[1],R1[1],R2[1],R3[1]分别存储在寄存器Y0[1],Y1[2],Y2[3],Y3[0]内。由于所述第二规则,行n的数据元素Rn[0],Rn[1],Rn[2],Rn[3]分别存储在不同的向量寄存器堆内,并存储在各自的向量寄存器堆内不同的相对向量寄存器位置处(由寄存器Yi[j]的索引i表征)。因此,每个子列的数据元素以间断对角线方式存储在向量寄存器堆V0,V1,V2,V3的寄存器内。
图2中的多路转换器m0,m1,m2,m3与向量寄存器堆V0,V1,V2,V3和多路转换器m0,m1,m2,m3之间的逻辑互连17相配合,顺序地安排从向量寄存器堆V0,V1,V2,V3读出数据元素。如下面所描述的,逻辑互连17示于图3的读出逻辑表20。
图3示出了按照本发明的实施例,利用图2中的多路转换器m0,m1,m2,m3从向量寄存器堆V0,V1,V2,V3读出图1的矩阵10的行和子列的读出逻辑表20。在图3中,读出逻辑表20的列21列出了图1中的寄存器R0,R1,…,R255。读出逻辑表20的列22-25列出了地址寄存器A0,A1,A2,A3的值。读出逻辑表20的列26-29列出了多路转换器m0,m1,m2,m3的值。每个所述多路转换器(m0,m1,m2,m3)是一组两个分别由二进制位1或0表示“接通”或“断开”的双态开关。因此,多路转换器的“值”是分别表示两个开关的接通/断开状态的两个二进制位的组合值(0,1,2,或3)。
矩阵10的将被读出的每个行由索引n标识,该索引在范围0≤n≤127内选择一个寄存器Rn。矩阵10将被读出的每个子列由索引n标识,该索引在范围128≤n≤255内选择一个寄存器Rn。从向量寄存器堆V0,V1,V2,V3的寄存器Yi[j]中访问将被读出的每个行或子列的数据元素,地址寄存器A0,A1,A2,A3分别指向所述的各个寄存器Yi[j]。按照多路转换器m0,m1,m2,m3的值顺序地如下安排从地址寄存器A0,A1,A2,A3所指向的寄存器中访问数据元素。多路转换器值是索引j,它选择一个向量寄存器堆(V0,V1,V2,或V3)。与所选向量寄存器堆相关联的地址寄存器的内容则用于选择数据元素。回想可知,Yi[j]代表向量寄存器堆Vj的寄存器i。如果要被读出的一个行或子列由寄存器Rn标识,则从寄存器Yi[j]中按Y(a0)[m0]、Y(a1)[m1]、Y(a2)[m2]和Y(a3)[m3]的顺序次序访问数据元素,其中,a0,a1,a2,a3分别表示A(m0),A(m1),A(m2),A(m3)的内容。例如,如果A0=2,A1=3,A2=0,A3=1,并且m0=3,m1=2,m2=1,m3=0,则:
a0=1(即,A(m0)或A3的内容),
a1=0(即,A(m1)或A2的内容),
a2=3(即,A(m2)或A1的内容),以及
a3=2(即,A(m3)或A0的内容)。
作为读出一行的一个例子,假设要读出的行与寄存器R2相关联(见图1)。于是从图3的R2行可得:A0=2,A1=2,A2=2,A3=2,并且m0=2,m1=3,m2=0m3=1。从寄存器Ri[j]按m0,m1,m2,m3的值分别指定的Y(a0)[2],Y(a1)[3],Y(a2)[0],Y(a3)[1]顺序次序访问数据元素。利用A0,A1,A2,A3和m0,m1,m2 m3的值,可得a0=2,a1=2,a2=2,a3=2。因此,从寄存器Ri[j]内按Y2[2],Y2[3],Y2[0],Y2[1]的顺序次序访问数据元素。因此,参考图2中Yi[j]的内容,按R2[0],R2[1],R2[2],R2[3]的顺序次序访问数据元素,可以从图1中得到验证,这是与寄存器R2相关联的行的各个数据元素的正确次序。
作为读出一个子列的一个例子,假设要被读出的子列与寄存器R129相关联(见图1)。于是从图3的R129行可得:A0=3,A1=0,A2=1,A3=2,并且m0=1,m1=2,m2=3,m3=0。因此,从寄存器Y[j]按如m0,m1,m2,m3的值分别指定的Y(a0)[1],Y(a1)[2],Y(a2)[3],Y(a3)[0]的顺序次序访问数据元素。利用A0,A1,A2,A3和m0,m1,m2,m3的值,可得a0=0,a1=1,a2=2,a3=3。因此,从寄存器Ri[j]内按Y0[1],Y1[2],Y2[3],Y3[0]的顺序次序访问数据元素。因此,参考图2中Yi[j]的内容,按R0[1],R1[1],R2[1],R3[1]的顺序次序访问数据元素,可以从图1中得以验证,这是与寄存器R129相关联的子列的数据元素的正确次序。
以上这些例子示例了如何利用多路转换器m0,m1,m2,m3,顺序地访问数据元素,从而正确地读出图1的矩阵10的一个行或子列,对于数据元素在向量寄存器堆的寄存器内的存储应遵从以下一般规则。每个子列的数据元素存储在不同的向量寄存器堆内,这意味着,对于每个子列其中没有两个数据元素存储在同一个向量寄存器堆内。类似,每个行的数据元素存储在不同的向量寄存器堆内,这意味着,对于每个行其中没有两个数据元素存储在同一个向量寄存器堆内。虽然图2示出了数据数组元素Rn[m]在向量寄存器堆V0,V1,V2,V3的寄存器Yi[j]内的一种特定分布,但数据数组元素Rn[m]的遵从以上一般规则的其他分布也在本发明的专利保护范围内。读取行或子列的读出逻辑表(例如,见图3)是专用于数据数组元素Rn[m]在寄存器Yi[j]内的特定分布的。
因此,多路转换器m0、m1、m2和m3响应读矩阵中的一个行(或子列)的命令,按照如图3的读出逻辑表所例示的读行(或读列)映射算法将这个行(或子列)的数据元素从向量寄存器堆V0、V1、V2和V3映射为这个行(或子列)。或者,也可以用布尔逻辑语句实现读行(或读列)映射算法,而不用具有数字值的读出逻辑表20。
上面所说明的图2涉及按照图3的读出逻辑表20从寄存器Yi[j]读出图1的矩阵10中的一个行或子列。如下面要说明的那样,图4涉及按照图5的写入逻辑表40将图1的矩阵10中的一个行或子列写入寄存器Yi[j]。
图4示出了按照本发明的实施例的一个处理器15,,它包括向量寄存器堆(V0,V1,V4,V3),地址寄存器(A0,A1,A4,A3),以及4∶1多路转换器(m0,m1,m4,m3)。在图4中,向量寄存器堆与地址寄存器和多路转换器结合在一起使用,以便将图1的矩阵10的行或子列写入向量寄存器堆V0,V1,V2,V3。向量寄存器堆(V0,V1,V2,V3)、地址寄存器(A0,A1,A2,A3)和图1的矩阵10的数据元素Rn[m]在向量寄存器堆的寄存器Yi[j]内的分布与上面所说明的图2中的相同。在图4中,如下面将结合图5所说明的那样,数据数组元素Rn[m]在向量寄存器堆V0,V1,V2,V3的寄存器内的这种分布便于为向量写操作对图1的矩阵10的行和子列进行寻址。
图4中的多路转换器m0,m1,m2,m3与向量寄存器堆V0,V1,V2,V3和多路转换器m0,m1,m2,m3之间的逻辑互连18结合在一起顺序地安排要写入向量寄存器堆V0,V1,V4,V3的数据元素。如下面所述,逻辑互连18描述于图5的写入逻辑表40。
图5示出了按照本发明的实施例利用图2中的多路转换器m0,m1,m2,m3将图1的矩阵10的行和子列写入向量寄存器堆V0,V1,V2,V3的写入逻辑表40。在图5中,写入逻辑表40的列41列出了图1的寄存器R0,R1,…,R255。写入逻辑表40的列42-45列出了地址寄存器A0,A1,A2,A3的值。写入逻辑表40的列46-49列出了多路转换器m0,m1,m2,m3的值。矩阵10将被写入的每个行由索引n标识,它在0≤n≤127范围内选择一个寄存器Rn。矩阵10将被写入的每个子列由索引n标识,它在128≤n≤255范围内选择一个寄存器Rn。
将被写入的每个行或子列的数据元素,如由寄存器Rn(n=0,1,…,255)所选择的那样,按照以下规则分布在向量寄存器堆V0,V1,V2,V3的寄存器Yi[j]中。回想可知,Yi[j]表示向量寄存器堆Vj的寄存器i。设与寄存器Rn(如图1中所示)关联的顺序安排的数据元素表示为Rn[0],Rn[1],Rn[2],Rn[3]。这个规则为,将数据元素Rn[0],Rn[1],Rn[2],Rn[3]分别写入向量寄存器堆V(j0),V(j1),V(j2),V(j3),其中多路转换器m(j0),m(j1),m(j2),m(j3)分别含有0,1,2,3。作为一个例子,如果m0=1,m1=2,m2=3,m3=0,则Rn[0],Rn[1],Rn[2],Rn[3]分别写入向量寄存器堆V3,V0,V1,V2,这反映出m3=0,m0=1,m1=2,m2=3。地址寄存器A0,A1,A2,A3分别含有向量寄存器堆V0,V1,V2,V3内的寄存器号,数据元素被写入其内。因此在前面这个例子中,如果地址寄存器A3含有值34的话,数据元素Rn[0]写入向量寄存器堆V3的寄存器34。
作为一个写入一行的例子,假设将被写入的行与寄存器R2相关联(见图1)。从图1的R2行可见,与R2相关联的数据元素序列为R2[0],R2[1],R2[2],R2[3]。从图4的R2行可见,A0=2,A1=2,A2=2,A3=2,并且m0=2,m1=3,m2=0,m3=1。因此,按照前面的规则,与寄存器R2相关联的数据元素序列R2[0],R2[1],R2[2],R2[3]分布在向量寄存器堆V2,V3,V0,V1中,这反映出m2=0,m3=1,m0=2,m1=3。因此,数据元素R2[0]写入向量寄存器堆V2的寄存器位置2(即,Y2[2]),因为按照图4,A2=2。数据元素R2[1]写入向量寄存器堆V3的寄存器位置2(即,Y2[3]),因为按照图4,A3=2。数据元素R2[2]写入向量寄存器堆V0的寄存器位置2(即,Y2[0]),因为按照图4,A0=2。数据元素R2[3]写入向量寄存器堆V1的寄存器位置2(即,Y2[1]),因为按照图4,A1=2。
作为一个写入一子列的例子,假设将被写入的子列与寄存器R129相关联(见图1)。从图1的R129子列可见,与R129相关联的数据元素序列为R0[1],R1[1],R2[1],R3[1]。从图4的R129行可见,A0=3,A1=0,A2=1,A3=2,并且m0=3,m1=0,m2=1,m3=2。因此,按照前面的规则,与寄存器R129相关联的数据元素序列R0[1],R1[1],R2[1],R3[1]分布在向量寄存器堆V1,V2,V3,V0中,这反映出m1=0,m2=1,m3=2,m0=3。因此,数据元素R0[1]写入向量寄存器堆V1的寄存器位置0(即,Y0[1]),因为按照图4,A1=0。数据元素R1[1]写入向量寄存器堆V2的寄存器位置1(即,Y1[2]),因为按照图4,A2=1。数据元素R2[1]写入向量寄存器堆V3的寄存器位置2(即,Y2[3]),因为按照图4,A3=2。数据元素R3[1]写入向量寄存器堆V0的寄存器位置3(即,Y3[0]),因为按照图4,A0=3。
因此,多路转换器m0,m1,m2,m3响应写矩阵中的一个行(或子列)的命令,按照如图5的写入逻辑表所例示的写行(或写列)映射算法将这个行(或子列)的数据元素映射到向量寄存器堆V0,V1,V2,V3。或者,也可以用布尔逻辑语句实现写入行(或写入列)映射算法,而不用具有数字值的写入逻辑表40。
虽然图1-5中所示的这些实施例示出了一个具有128行和4列的矩阵,其中每列分成32个各有4个数据元素的子列,但本发明的范围包括具有N行和M列因此共有L=N*M个数据元素的矩阵。这N行中的每个行都是可寻址的,而且K个子列中的每个子列也是可寻址的。每个数据元素包括B个二进制位。参数N,M,K,B可以符合以下约束:N≥2,M≥2,K≥1,以及B≥1。对于图1-5所例示的例子,N=128,M=4,K=32,而B=32。
图1-5所示的例子示出了以下涉及N,M,K的关系:K*M=N,N modK=0,N mod M=0,N=2P(P为至少为2的正整数),M=2Q(Q为至少为2的正整数),每个列中的每个子列包括N个行中的M个行,每个子列内的总二进制位数和每个行内的总二进制位数等于恒定的二进制位数(对于图1-5为128位)。
以上涉及N,M,K的关系只是例示性的而不是限制性的。下面另一些非限制性的关系也在本发明的范围内。第一种可选择的关系是一个给定列中的各子列不具有同样多的(即,恒定的)数据元素。第二种可选择的关系是每个子列内的总二进制位数不等于每个行内的总二进制位数。第三种可选择的关系是至少两个列具有不同的子列数K。第四种可选择的关系是N mod K≠0。第五种可选择的关系是没有至少为2的正整数P满足N=2P。第六种可选择的关系是没有至少为2的正整数Q满足M=2Q。
本发明的范围还包括每个数据元素的B个二进制位被配置成表示一个浮点数、整数、位串或字符串这样的实施例。
此外,本发明包括一个具有多个向量寄存器堆的处理器。这些向量寄存器堆一起用来存储具有L个数据元素的矩阵。注意,这L个数据元素不需要重复地存储在处理器内,因为如上面结合图1-5所述,矩阵的每个行和子列都是可以通过结合处理器内的地址寄存器和多路转换器,利用向量寄存器堆可寻址的。
在本发明的上面结合图1-5所例示的实施例中,每个子列中的数据元素可以分别存储在不同的向量寄存器堆内,而且每个行中的数据元素可以分别存储在不同的向量寄存器堆内。此外,每个子列中的数据元素可以分别存储在不同的向量寄存器堆的不同的相对寄存器位置内,而每个行中的数据元素可以分别存储在不同的向量寄存器堆的相同的相对寄存器位置内。
虽然矩阵10在图1中示为具有N个水平方向的行和M个垂直方向的列,但本发明的范围还包括N个垂直方向的行和M个水平方向的列。
图6A-6C示出了一些按照本发明的实施例的利用图2或图4的多路转换器对图1的矩阵10的行或子列内的数据元素执行有选择的操作的指令。
图6A示出了将与寄存器RA相关联的一个数组R(RA)的数据元素拷贝到与寄存器DEST相关联的数组R(DEST)内的数据元素位置上的指令。2比特字aa,bb,cc,dd分别与图2或图4的多路转换器m0,m1,m2,m3的值相对应。设数组R(RA)其中具有数据元素R(RA)[0],R(RA)[1],R(RA)[2],R(RA)[3]。设数组R(DEST)具有数据元素R(DEST)[0],R(DEST)[1],R(DEST)[2],R(DEST)[3]。图6A的操作将R(RA)[aa],R(RA)[bb],R(RA)[cc],R(RA)[dd]分别拷贝到R(DEST)[0],R(DEST)[1],R(DEST)[2],R(DEST)[3]中。因此,多路转换器的值m0,m1,m2,m3相对数组R(RA)的元素有选择地控制着将数据从数组R(RA)移动到数组R(DEST),为了例示,考虑以下三个例子。
在与图6A所示的指令有关的第一个例子中,设aa=0,bb=1,cc=2,dd=3。这是一个传统的数组拷贝操作,其中将元素R(RA)[0],R(RA)[1],R(RA)[2],R(RA)[3]分别拷贝到R(DEST)[0],R(DEST)[1],R(DEST)[2],R(DEST)[3]。
在与图6A所示的指令有关的第二个例子中,设aa=0,bb=0,cc=0,dd=0,这导致将R(RA)[0]拷贝到R(DEST)[0],R(DEST)[1],R(DEST)[2],R(DEST)[3]中。这个操作通常称为“星号(splat)”操作,支持标量-向量运算。
在与图6A所示的指令有关的第三个例子中,设aa=3,bb=2,cc=1,dd=0,这导致将R(RA)[3],R(RA)[2],R(RA)[1],R(RA)[0]分别拷贝到R(DEST)[0],R(DEST)[1],R(DEST)[2],R(DEST)[3]。因此,R(RA)以数据元素R(RA)颠倒的次序拷贝到R(DEST)。
以上这些例子只是例示性的。由于aa、bb、cc、dd有256(即,44)种排列,因此图6的操作包括256个操作变型。此外,RDEST≠RA和RDEST=RA都是可能的。因此,RDEST=RA的情况有利于按照256个不同的排列中的任何排列对R(RA)的数据元素进行内部重新排列。所有这些操作都需要用到多路转换器m0,m1,m2,m3。注意,所有这些操作基本上都是没有额外负担的,这是因为如上面结合图1-5所解释的,必须给出多路转换器m0,m1,m2,m3,以便完成对图1中的矩阵10的行和子列的寻址。
图6B示出了一个以屏蔽掉R(RA)中的一些所选元素的方式,将与寄存器RA相关联的数组R(RA)的数据元素拷贝到在一个与寄存器DEST相关联数组R(DEST)内的数据元素位置上的指令。即,针对R(DEST),屏蔽掉(即拷贝)R(RA)中的Q个元素,而将R(RA)中剩下的4-Q个元素拷贝给R(DEST),其中0≤Q≤4。设B0,B1,B2,B3表示这个操作所需的屏蔽位。如果对于m=0,1,2,3有Bm=1/0,则R(RA)[m]拷贝/不拷贝给R(DEST)[m]。这通常由一个读出-修改-写入序列实现,但是在这里由于使用了各个向量寄存器堆V0,V1,V2,V3,因此更为方便。
图6C示出了一个将一个与寄存器RA相关联的数组R(RA)中的单个数据元素用函数式(按照函数f)与一个与寄存器RB相关联的数组R(RB)合并的指令。操作结果存储在一个与寄存器DEST相关联的数组R(DEST)内,而R(RA)[aa]的元素被用来执行函数f。使用2比特字aa通过设置读多路转换器m0,m1,m2,m3(图2)选择与寄存器RA关联的数组R(RA)中的单个数据元素,使得所有四个多路转换器都选择该单个数据元素。例如,函数f表示“加法”,则将形成下列SUM向量(具有分量SUM[0],SUM[1],SUM[2],SUM[3])并存储在R(DEST)内:
SUM[0]=R(RA)[aa]+R(RB)[0];
SUM[1]=R(RA)[aa]+R(RB)[1];
SUM[2]=R(RA)[aa]+R(RB)[2];
SUM[3]=R(RA)[aa]+R(RB)[3].
同样,这个操作基本上是没有额外负担的,因为已经给出了这些读多路转换器m0,m1,m2,m3。
除了图6A-6C所例示的这些操作之外,还可以对图1的矩阵10的一个数组(即,行或子列)中的数据元素有选择地执行许多其他操作。所述选择由图2或图4中的多路转换器m0,m1,m2,m3控制。
图7示出了按照本发明的实施例的具有处理器91的计算机系统90,处理器91用来对向量处理中所用的矩阵的行和子列进行寻址,并且用于执行对矩阵的数组中的元素有选择地进行操作的指令。计算机系统90包括处理器91以及与处理器91连接的输入装置92、连接于处理器91的输出装置93、以及分别连接于处理器91的储存装置94和95。处理器91可以包括图2和4中的处理器15。输入装置92可以是键盘、鼠标之类。输出装置93可以是打印机、绘图仪、计算机屏幕、磁带、活动硬盘、软盘之类。储存装置94和95可以是硬盘、软盘、磁带、诸如光盘(CD)或数字光盘(DVD)之类的光存储器、动态随机存取存储器(DRAM)、只读存储器(ROM)之类。存储装置95包括计算机代码97。计算机代码97包括一个算法,其用于在向量处理中使用一个矩阵的行和子列,并且用于在矩阵数组上执行相对于数组的数据元素有选择的操作的指令。处理器91执行计算机代码97。存储装置94包括输入数据96。输入数据96包括计算机代码97所需的输入。输出装置93显示计算机代码97的输出。储存装置94和/或95(或者图7中未示出的一个或多个辅助存储装置)可以作为计算机可以使用的介质(或者计算机可读介质或程序存储装置),其上具有嵌入其中的计算机可读程序代码和/或具有存储在其中的其他数据,其中计算机可读程序代码包括计算机代码97。通常,计算机系统90的计算机程序产品(或者说,制品)可以包括所述计算机可用介质(或所述程序存储装置)。
虽然图7以特定配置的硬件和软件给出了计算机系统90,但如一般熟悉该技术领域的人员所知,对于上面结合图7的特定计算机系统所述的用途来说,可以使用任何硬件和软件配置。例如,储存装置94和95可以是单个存储装置中的两个部分,而不是两个分开的储存装置。
虽然上面以例示方式对本发明的实施例作了说明,但许多修改和变动对于熟悉该技术领域的人员来说都是显而易见的。因此,所附权利要求书用来涵盖属于本发明的精神实质和专利保护范围的所有这样的修改和变动。
Claims (26)
1.一种处理器,所述处理器包括M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述N=K*M,所述B≥1,所述N个行的每个行是可寻址的,并且所述K个子列的每个子列也是可寻址的,所述处理器不重复存储所述L个数据元素;
其中所述处理器还包括M个地址寄存器,其中所述M个地址寄存器中的每个地址寄存器与所述M个向量寄存器堆中的一个相应的向量寄存器堆相关联,其中所述M个向量寄存器堆中的每个向量寄存器堆包括一个具有N个寄存器的阵列,其中所述M个向量寄存器堆的N*M个寄存器中的每个寄存器用于存储所述L个数据元素中的一个数据元素,并且其中每个向量寄存器堆可通过与它相关联的指向所述向量寄存器堆的N个寄存器中的一个寄存器的地址寄存器独立寻址。
2.权利要求1的处理器,其中每个子列中的各个数据元素存储在不同的向量寄存器堆中,并且其中每个行中的各个数据元素存储在不同的向量寄存器堆中。
3.权利要求2的处理器,其中每个子列中的各个数据元素存储在不同的向量寄存器堆的不同的相对寄存器位置上,其中每个行中的各个数据元素存储在不同的向量寄存器堆的相同的相对寄存器位置上。
4.权利要求2的处理器,其中所述处理器还包括M个分别同时与所述M个向量寄存器堆连接的多路转换器,并且其中如果所述矩阵存储在所述M个向量寄存器堆中,则:
所述M个多路转换器响应一个读所述矩阵的一个行的命令,按照一个读行映射算法将这个行的各个数据元素从M个向量寄存器堆映射到所述矩阵的这个行;以及
所述M个多路转换器响应一个读所述矩阵的一个子列的命令,按照一个读子列映射算法将这个子列的各个数据元素从M个向量寄存器堆读到所述矩阵的这个子列。
5.权利要求2的处理器,所述处理器还包括M个分别同时与所述M个向量寄存器堆连接的多路转换器;
其中所述M个多路转换器响应一个写所述矩阵的一个行的命令,按照一个写行映射算法将这个行的各个数据元素映射到M个向量寄存器堆;以及
其中所述M个多路转换器响应一个写所述矩阵的一个子列的命令,按照一个写子列映射算法将这个子列的各个数据元素映射到M个向量寄存器堆。
6.权利要求1的处理器,其中所述处理器还包括分别同时连接到所述M个向量寄存器堆的M个多路转换器,使得所述M个多路转换器中的每个多路转换器具有一个不同的值,其中所述M个多路转换器中的每个多路转换器包括一组分别由二进制位1或0表示接通或断开的二进制开关,所述多路转换器的值包括所述二进制位的组合值。
7.一种处理矩阵数据的方法,所述方法包括:
提供一个处理器;以及
在所述处理器内提供M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述N=K*M,所述B≥1,所述N个行的每个行是可寻址的,并且所述K个子列的每个子列也是可寻址的,所述处理器不重复存储所述L个数据元素;
所述方法还包括在所述处理器内提供M个地址寄存器,其中所述M个地址寄存器中的每个地址寄存器与所述M个向量寄存器堆中的一个相应的向量寄存器堆相关联,其中所述M个向量寄存器堆中的每个向量寄存器堆包括一个具有N个寄存器的阵列,其中所述M个向量寄存器堆的N*M个寄存器中的每个寄存器可以存储所述L个数据元素中的一个数据元素,并且其中每个向量寄存器堆可通过与它相关联的指向所述向量寄存器堆的N个寄存器中的一个寄存器的地址寄存器独立寻址。
8.权利要求7的方法,其中每个子列中的各个数据元素存储在不同的向量寄存器堆中,并且其中每个行中的各个数据元素存储在不同的向量寄存器堆中。
9.权利要求8的方法,其中每个子列中的各个数据元素存储在不同的向量寄存器堆的不同的相对寄存器位置上,其中每个行中的各个数据元素存储在不同的向量寄存器堆的相同的相对寄存器位置上。
10.权利要求8的方法,所述方法还包括提供M个分别同时与所述M个向量寄存器堆连接的多路转换器,其中如果所述矩阵存储在所述M个向量寄存器堆中,则:
所述M个多路转换器响应一个读所述矩阵的一个行的命令,按照一个读行映射算法将这个行的各个数据元素从M个向量寄存器堆映射到所述矩阵的这个行;以及
所述M个多路转换器响应一个读所述矩阵的一个子列的命令,按照一个读子列映射算法将这个子列的各个数据元素从M个向量寄存器堆读到所述矩阵的这个子列。
11.权利要求8的方法,所述方法还包括提供M个分别同时与所述M个向量寄存器堆连接的多路转换器,
其中所述M个多路转换器响应一个写所述矩阵的一个行的命令,按照一个写行映射算法将这个行的各个数据元素映射到M个向量寄存器堆;以及
其中所述M个多路转换器响应一个写所述矩阵的一个子列的命令,按照一个写子列映射算法将这个子列的各个数据元素映射到M个向量寄存器堆。
12.权利要求7的方法,所述方法还包括提供M个分别同时与所述M个向量寄存器堆连接的多路转换器,使得所述M个多路转换器中的每个多路转换器具有一个不同的值,其中所述M个多路转换器中的每个多路转换器包括一组分别由二进制位1或0表示接通或断开的二进制开关,所述多路转换器的值包括所述二进制位的组合值。
13.权利要求7的方法,所述方法还包括对所述N个行中的一个行进行寻址。
14.权利要求7的方法,所述方法还包括对所述K*M个子列中的一个子列进行寻址。
15.一种处理器,所述处理器包括M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N个行的每个行是可寻址的,所述K个子列的每个子列是可寻址的,所述矩阵包括一系列数组,每个数组是所述矩阵的一个行或子列,所述处理器可以执行一个对所述一系列数组中的第一数组进行一个操作的指令,所述操作是相对所述第一数组中的各个数据元素有选择性地进行的。
16.权利要求15的处理器,所述处理器还包括M个分别同时与所述M个向量寄存器堆连接的多路转换器,其中与所述M个多路转换器关联的各个值控制着所述选择性,其中所述M个多路转换器中的每个多路转换器包括一组分别由二进制位1或0表示接通或断开的二进制开关,所述与M个多路转换器关联的各个值包括所述二进制位的组合值。
17.权利要求15的处理器,所述处理器还包括M个地址寄存器,其中所述M个地址寄存器中的每个地址寄存器与所述M个向量寄存器堆中的一个相应的向量寄存器堆相关联,其中所述M个向量寄存器堆中的每个向量寄存器堆包括一个具有N个寄存器的阵列,其中所述M个向量寄存器堆的N*M个寄存器中的每个寄存器可以存储所述L个数据元素中的一个数据元素,并且其中每个向量寄存器堆可通过与它相关联的指向所述向量寄存器堆的N个寄存器中的一个寄存器的地址寄存器独立寻址。
18.权利要求15的处理器,其中所述指令用来将所述一系列数组的所述第一数组中的至少一个数据元素拷贝给所述一系列数组的一个第二数组,并且其中所述指令并不将所述第一数组的一个原样拷贝插入所述第二数组。
19.权利要求15的处理器,其中所述指令用来在所述第一数组内重新排列所述第一数组的各个数据元素。
20.权利要求15的处理器,其中所述处理器不重复存储所述L个数据元素。
21.一种处理矩阵数据的方法,所述方法包括:
提供一个处理器;
在所述处理器内提供M个独立的向量寄存器堆,所述M个向量寄存器堆一起用来存储一个具有L个数据元素的矩阵,每个数据元素具有B个二进制位,所述矩阵具有N个行和M个列,所述L=N*M,每个列具有K个子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N个行的每个行是可寻址的,所述K个子列的每个子列是可寻址的,所述矩阵包括一系列数组,每个数组是所述矩阵的一个行或子列;以及
由所述处理器执行一个指令,所述指令对所述一系列数组中的第一数组进行一个操作,所述操作是相对所述第一数组中的各个数据元素有选择地进行的。
22.权利要求21的方法,所述方法还包括提供M个分别同时与所述M个向量寄存器堆连接的多路转换器,其中与所述M个多路转换器关联的各个值控制着所述的选择性,其中所述M个多路转换器中的每个多路转换器包括一组分别由二进制位1或0表示接通或断开的二进制开关,所述与M个多路转换器关联的各个值包括所述二进制位的组合值。
23.权利要求21的方法,所述方法还包括在所述处理器内提供M个地址寄存器,其中所述M个地址寄存器中的每个地址寄存器与所述M个向量寄存器堆中的一个相应的向量寄存器堆相关联,其中所述M个向量寄存器堆中的每个向量寄存器堆包括一个具有N个寄存器的阵列,其中所述M个向量寄存器堆的N*M个寄存器中的每个寄存器可以存储所述L个数据元素中的一个数据元素,并且其中每个向量寄存器堆可通过与它相关联的指向所述向量寄存器堆的N个寄存器中的一个寄存器的地址寄存器独立寻址。
24.权利要求21的方法,其中所述进行一个操作包括将所述一系列数组的所述第一数组中的至少一个数据元素拷贝给所述一系列数组的第二数组,并且其中所述拷贝并不将所述第一数组的一个原样拷贝插入所述第二数组。
25.权利要求21的方法,其中所述进行一个操作包括在所述第一数组内重新排列所述第一数组的各个数据元素。
26.权利要求21的方法,其中所述处理器不重复存储所述L个数据元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/715,688 US7386703B2 (en) | 2003-11-18 | 2003-11-18 | Two dimensional addressing of a matrix-vector register array |
US10/715,688 | 2003-11-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1619526A CN1619526A (zh) | 2005-05-25 |
CN1619526B true CN1619526B (zh) | 2010-06-16 |
Family
ID=34574253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004100778584A Expired - Fee Related CN1619526B (zh) | 2003-11-18 | 2004-09-15 | 用于处理矩阵数据的处理器和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US7386703B2 (zh) |
JP (1) | JP4049326B2 (zh) |
KR (1) | KR100603124B1 (zh) |
CN (1) | CN1619526B (zh) |
TW (1) | TWI330810B (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2394571B (en) | 2002-10-23 | 2005-08-10 | Motorola Inc | Arrangement system and method for vector permutation in single-instruction multiple-data microprocessors |
US7386703B2 (en) * | 2003-11-18 | 2008-06-10 | International Business Machines Corporation | Two dimensional addressing of a matrix-vector register array |
US7257695B2 (en) * | 2004-12-28 | 2007-08-14 | Intel Corporation | Register file regions for a processing system |
US20080082798A1 (en) * | 2006-09-29 | 2008-04-03 | 3Dlabs Inc. Ltd., | Flexible Microprocessor Register File |
US7730065B2 (en) * | 2007-04-27 | 2010-06-01 | Microsoft Corporation | File formats for external specification of object-relational mapping |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US10020037B2 (en) * | 2007-12-10 | 2018-07-10 | Intel Corporation | Capacity register file |
US8255884B2 (en) * | 2008-06-06 | 2012-08-28 | International Business Machines Corporation | Optimized scalar promotion with load and splat SIMD instructions |
US8205066B2 (en) * | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US20100115233A1 (en) * | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8484276B2 (en) * | 2009-03-18 | 2013-07-09 | International Business Machines Corporation | Processing array data on SIMD multi-core processor architectures |
JP5633122B2 (ja) * | 2009-06-16 | 2014-12-03 | 富士通セミコンダクター株式会社 | プロセッサ及び情報処理システム |
US8539201B2 (en) * | 2009-11-04 | 2013-09-17 | International Business Machines Corporation | Transposing array data on SIMD multi-core processor architectures |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
JP5532132B2 (ja) | 2009-11-26 | 2014-06-25 | 日本電気株式会社 | Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 |
US9201899B2 (en) | 2011-10-14 | 2015-12-01 | Panasonic Intellectual Property Management Co., Ltd. | Transposition operation device, integrated circuit for the same, and transposition method |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9003160B2 (en) | 2012-08-03 | 2015-04-07 | International Business Machines Corporation | Active buffered memory |
US9575755B2 (en) | 2012-08-03 | 2017-02-21 | International Business Machines Corporation | Vector processing in an active memory device |
US9632777B2 (en) | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9569211B2 (en) | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US8972782B2 (en) | 2012-11-09 | 2015-03-03 | International Business Machines Corporation | Exposed-pipeline processing element with rollback |
GB2552153B (en) | 2016-07-08 | 2019-07-24 | Advanced Risc Mach Ltd | An apparatus and method for performing a rearrangement operation |
GB2552154B (en) * | 2016-07-08 | 2019-03-06 | Advanced Risc Mach Ltd | Vector register access |
WO2018115970A1 (en) * | 2016-12-19 | 2018-06-28 | (Un)Manned N.V. | Method and apparatus for real-time control loop application execution from a high-level description |
US10990396B2 (en) | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US10768899B2 (en) | 2019-01-29 | 2020-09-08 | SambaNova Systems, Inc. | Matrix normal/transpose read and a reconfigurable data processor including same |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
US11074214B2 (en) * | 2019-08-05 | 2021-07-27 | Arm Limited | Data processing |
US20210406018A1 (en) * | 2020-06-27 | 2021-12-30 | Intel Corporation | Apparatuses, methods, and systems for instructions for moving data between tiles of a matrix operations accelerator and vector registers |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
CN114565075A (zh) * | 2020-11-27 | 2022-05-31 | 安徽寒武纪信息科技有限公司 | 支援多种访问模式的设备、方法及可读存储介质 |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187796A (en) * | 1988-03-29 | 1993-02-16 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units |
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4697235A (en) * | 1983-03-22 | 1987-09-29 | Fujitsu Limited | List vector control apparatus |
JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
US5966528A (en) | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
JPH05324698A (ja) * | 1991-11-13 | 1993-12-07 | Nec Corp | ベクトルデータ処理装置およびそれに使用されるデータ転送方式 |
JP2887369B2 (ja) | 1992-01-27 | 1999-04-26 | 日本電信電話株式会社 | 2次元配列データアクセス装置 |
JPH0792790B2 (ja) * | 1992-11-18 | 1995-10-09 | 野木 達夫 | ベクトル並列計算機 |
JPH06274526A (ja) * | 1993-03-19 | 1994-09-30 | Hitachi Ltd | ベクトル処理装置 |
JPH07271764A (ja) | 1994-03-24 | 1995-10-20 | Internatl Business Mach Corp <Ibm> | 計算機プロセッサ及びシステム |
US5832290A (en) * | 1994-06-13 | 1998-11-03 | Hewlett-Packard Co. | Apparatus, systems and method for improving memory bandwidth utilization in vector processing systems |
US5659781A (en) | 1994-06-29 | 1997-08-19 | Larson; Noble G. | Bidirectional systolic ring network |
US5887183A (en) | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
KR970016942A (ko) * | 1995-09-29 | 1997-04-28 | 김광호 | 제어레지스터를 이용한 레지스터 확장방법 |
US5951670A (en) | 1996-09-06 | 1999-09-14 | Intel Corporation | Segment register renaming in an out of order processor |
JP3938238B2 (ja) | 1997-02-04 | 2007-06-27 | 沖電気工業株式会社 | 高速フーリエ変換処理装置 |
US6418529B1 (en) | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6175892B1 (en) * | 1998-06-19 | 2001-01-16 | Hitachi America. Ltd. | Registers and methods for accessing registers for use in a single instruction multiple data system |
US6625721B1 (en) | 1999-07-26 | 2003-09-23 | Intel Corporation | Registers for 2-D matrix processing |
KR20010018243A (ko) * | 1999-08-18 | 2001-03-05 | 김영환 | 마이크로 프로세서의 레지스터 맵핑 방법 |
KR20030042289A (ko) * | 2001-11-22 | 2003-05-28 | 이용석 | 레지스터 리네이밍 방법을 사용하는 비순차적 명령어 이슈컴퓨터 시스템 |
US6573846B1 (en) | 2001-12-31 | 2003-06-03 | Apple Computer, Inc. | Method and apparatus for variable length decoding and encoding of video streams |
KR20030063693A (ko) * | 2002-01-23 | 2003-07-31 | 주식회사 엘지이아이 | 집적회로의 레지스터 수정방법 |
US7386703B2 (en) * | 2003-11-18 | 2008-06-10 | International Business Machines Corporation | Two dimensional addressing of a matrix-vector register array |
-
2003
- 2003-11-18 US US10/715,688 patent/US7386703B2/en not_active Expired - Fee Related
-
2004
- 2004-09-15 CN CN2004100778584A patent/CN1619526B/zh not_active Expired - Fee Related
- 2004-10-18 KR KR1020040083047A patent/KR100603124B1/ko not_active IP Right Cessation
- 2004-10-28 JP JP2004314811A patent/JP4049326B2/ja not_active Expired - Fee Related
- 2004-11-01 TW TW093133196A patent/TWI330810B/zh not_active IP Right Cessation
-
2007
- 2007-09-06 US US11/850,920 patent/US7496731B2/en not_active Expired - Fee Related
- 2007-12-05 US US11/950,474 patent/US7949853B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187796A (en) * | 1988-03-29 | 1993-02-16 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units |
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
Non-Patent Citations (1)
Title |
---|
同上. |
Also Published As
Publication number | Publication date |
---|---|
KR100603124B1 (ko) | 2006-07-20 |
US20080098200A1 (en) | 2008-04-24 |
US7949853B2 (en) | 2011-05-24 |
TW200517953A (en) | 2005-06-01 |
US20080046681A1 (en) | 2008-02-21 |
JP4049326B2 (ja) | 2008-02-20 |
US7386703B2 (en) | 2008-06-10 |
US7496731B2 (en) | 2009-02-24 |
TWI330810B (en) | 2010-09-21 |
JP2005149492A (ja) | 2005-06-09 |
KR20050048465A (ko) | 2005-05-24 |
CN1619526A (zh) | 2005-05-25 |
US20050108503A1 (en) | 2005-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1619526B (zh) | 用于处理矩阵数据的处理器和方法 | |
CN100410919C (zh) | 处理器 | |
KR970011222B1 (ko) | 비데오 랜덤 액세스 메모리(vram) 액서스 회로 및 방법 | |
RU2006124547A (ru) | Замещение регистров обработки данных | |
CN105678378A (zh) | 间接访问样本数据以在并行处理系统中执行多卷积操作 | |
JPH10505935A (ja) | 改善されたメモリアーキテクチャ、及びこれを利用するデバイス、システム及び方法 | |
US20120106287A1 (en) | Memory Arrangement for Accessing Matrices | |
JP2008524723A (ja) | 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット | |
KR100249409B1 (ko) | 신호처리 시스템 | |
US5269001A (en) | Video graphics display memory swizzle logic circuit and method | |
EP2024928B1 (en) | Programmable data processing circuit | |
WO2007099950A1 (ja) | 高速pe間データ再配置機能を有するプロセッサアレイシステム | |
JP4796148B2 (ja) | テーブルルックアップ乗算器 | |
US20020156992A1 (en) | Information processing device and computer system | |
JP2708841B2 (ja) | ビットマップメモリの書き込み方法 | |
WO2020084694A1 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2740197B2 (ja) | ビットマップ描画装置 | |
GB2617190A (en) | Memory architecture | |
JP2704954B2 (ja) | ビット拡張装置 | |
JP2629866B2 (ja) | ビットマップメメモリ制御方式 | |
JPS6053990A (ja) | 文字処理装置 | |
JPH03273592A (ja) | キャッシュメモリ装置 | |
JP2005056084A (ja) | 半導体演算装置 | |
JPH0381880A (ja) | ピクセル・マスク発生方法とグラフィックスプロセッサ | |
JPS63159984A (ja) | 画像メモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100616 |