处理器

阅读:332发布:2023-02-08

专利汇可以提供处理器专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种处理器,包括:多个存储体;读地址生成 电路 ,用于基于读寄存器 指定 和读寄存器扫描方向,向每个存储体提供读地址;读控制电路,用于基于读寄存器指定和读寄存器偏移,执行控制以重新排列多个读数据 块 ,所述多个读数据块是根据读地址而从存储体读出的;以及处理单元,用于对由读控制电路输出的重新排列的读数据块执行多个运算。,下面是处理器专利的具体信息内容。

1. 一种处理器,包括:
多个存储体,第一至第三矩阵被分散排列在所述多个存储体中;
读出地址生成电路,其基于所述第一矩阵和所述第二矩阵的读出寄存 器指定和读出寄存器扫描方向,提供用于从所述多个存储体读出所述第一 矩阵中的预定行的第一读出地址和用于从所述多个存储体读出所述第二矩 阵中的预定列的第二读出地址;
读出控制电路,其基于所述第一矩阵和所述第二矩阵的所述读出寄存 器指定和读出寄存器偏移,控制所述第一矩阵中的所述预定行和所述第二 矩阵中的所述预定列的排列,所述第一矩阵中的所述预定行和所述第二矩 阵中的所述预定列都是根据所述第一读出地址和所述第二读出地址从所述 多个存储体读出的;
处理单元,其对经过了由所述读出控制电路所控制的排列的所述第一 矩阵中的所述预定行和所述第二矩阵中的所述预定列执行内积处理;
写地址生成电路,其基于所述第三矩阵的写寄存器指定和写寄存器偏 移,提供所述多个存储体中的写地址;和
写控制电路,其基于所述写寄存器指定和所述写寄存器偏移,将从所 述处理单元输出的所述内积处理的结果写在对应于所述多个存储体中的所 述第三矩阵的地址中。
2. 一种处理器,包括:
指令译码器,其对程序中包括的指令进行译码,所述程序将通过针对 第一矩阵中的预定行和第二矩阵中的预定列执行内积处理所获得的、将被 写入第三矩阵的预定元素中的结果进行排序;
多个存储体,所述第一至第三矩阵被分散排列在所述多个存储体中;
读出地址生成电路,其基于由所述指令译码器所译码的所述第一矩阵 和所述第二矩阵的读寄存器指定和读寄存器扫描方向,提供用于从所述多 个存储体读出所述第一矩阵中的所述预定行的第一读出地址和用于从所述 多个存储体读出所述第二矩阵中的所述预定列的第二读出地址;
读出控制电路,其基于由所述指令译码器所译码的所述第一矩阵和所 述第二矩阵的所述读寄存器指定和读寄存器偏移,控制所述第一矩阵中的 所述预定行和所述第二矩阵中的所述预定列的排列,所述第一矩阵中的所 述预定行和所述第二矩阵中的所述预定列是根据所述第一读出地址和所述 第二读出地址从所述多个存储体读出的;
处理单元,其对经过了由所述读出控制电路所控制的排列的所述第一 矩阵中的所述预定行和所述第二矩阵中的所述预定列执行内积处理;
写地址生成电路,其基于由所述指令译码器所译码的所述第三矩阵的 写寄存器指定和写寄存器偏移,提供所述多个存储体中的写地址;和
写控制电路,其基于由所述指令译码器所译码的所述写寄存器指定和 所述写寄存器偏移,将从所述处理单元输出的所述内积处理的结果写在对 应于所述多个存储体中的所述第三矩阵的地址中。

说明书全文

技术领域

发明涉及SIMD(单指令多数据)型的处理器,更具体地说,涉及 允许以高度的灵活性对矩阵数据进行访问的SIMD处理器。

背景技术

当使用SIMD处理器执行二维画面处理或三维图形的矩阵处理时,有 必要预先重新排列数据,以使得数据块与向处理器提供的处理指令的处 理格式相匹配。例如,数据排列指令被包括在称为SSE(Streaming SIMD Extension,流式SIMD扩展)的指令集和称为AltiVec的指令集中。SSE 指令集是英特尔公司开发的面向多媒体应用的指令集。另一方面,Altivec 是摩托罗拉有限公司开发的,也用于相同的应用。在SSE和Altivec指令 集中,定义了多种数据排列指令,分别公开于下列文献中:
“IA-32Architecture Software Developer’s Manual Volum 1:Basic Architecture”,英特尔公司,2004;和
“AltiVec Technology Programming Interface Manual”,摩托罗拉有限公 司,1999年6月。
假设例如对4行4列矩阵A和4行4列矩阵B进行内积处理,并将内 积处理的结果放在4行4列矩阵D中。在此情形下,内积处理中执行的每 个计算都是找出乘积之和的计算,如下所示:
D[0][0]=A[0][0]×B[0][0]+A[0][1]×B[1][0]+A[0][2]×B[2][0]+ A[0][3]×B[3][0]
D[0][1]=A[0][0]×B[0][1]+A[0][1]×B[1][1]+A[0][2]×B[2][1]+ A[0][3]×B[3][1]
D[0][2]=A[0][0]×B[0][2]+A[0][1]×B[1][2]+A[0][2]×B[2][2]+ A[0][3]×B[3][2]
D[0][3]=A[0][0]×B[0][3]+A[0][1]×B[1][3]+A[0][2]×B[2][3]+ A[0][3]×B[3][3]
D[1][0]=A[1][0]×B[0][0]+A[1][1]×B[1][0]+A[1][2]×B[2][0]+ A[1][3]×B[3][0]
D[1][1]=A[1][0]×B[0][1]+A[1][1]×B[1][1]+A[1][2]×B[2][1]+ A[1][3]×B[3][1]
D[1][2]=A[1][0]×B[0][2]+A[1][1]×B[1][2]+A[1][2]×B[2][2]+ A[1][3]×B[3][2]
D[1][3]=A[1][0]×B[0][3]+A[1][1]×B[1][3]+A[1][2]×B[2][3]+ A[1][3]×B[3][3]
D[2][0]=A[2][0]×B[0][0]+A[2][1]×B[1][0]+A[2][2]×B[2][0]+ A[2][3]×B[3][0]
D[2][1]=A[2][0]×B[0][1]+A[2][1]×B[1][1]+A[2][2]×B[2][1]+ A[2][3]×B[3][1]
D[2][2]=A[2][0]×B[0][2]+A[2][1]×B[1][2]+A[2][2]×B[2][2]+ A[2][3]×B[3][2]
D[2][3]=A[2][0]×B[0][3]+A[2][1]×B[1][3]+A[2][2]×B[2][3]+ A[2][3]×B[3][3]
D[3][0]=A[3][0]×B[0][0]+A[3][1]×B[1][0]+A[3][2]×B[2][0]+ A[3][3]×B[3][0]
D[3][1]=A[3][0]×B[0][1]+A[3][1]×B[1][1]+A[3][2]×B[2][1]+ A[3][3]×B[3][1]
D[3][2]=A[3][0]×B[0][2]+A[3][1]×B[1][2]+A[3][2]×B[2][2]+ A[3][3]×B[3][2]
D[3][3]=A[3][0]×B[0][3]+A[3][1]×B[1][3]+A[3][2]×B[2][3]+ A[3][3]×B[3][3]
为了找出上述每个乘积和,如下定义数据排列和运算指令。首先,将 名为MERGEH的格式为‘MERGEH d,a,b’的数据排列指令定义为用于 执行下列运算的指令:
R[d][0]=R[b][2]
R[d][1]=R[a][2]
R[d][2]=R[b][3]
R[d][3]=R[a][3]
第二,将名为MERGEL的格式为‘MERGEL d,a,b’的数据排列指令 定义为用于执行下列运算的指令:
R[d][0]=R[b][0]
R[d][1]=R[a][0]
R[d][2]=R[b][1]
R[d][3]=R[a][1]
第三,将名为DOT的格式为‘DOT d,a,b’的运算指令定义为用于执 行下列运算的指令:
R[d][0]=R[a][0]×R[b][0]+R[a][1]×R[b][1]+R[a][2]×R[b][2]+ R[a][3]×R[b][3]
在上述指令中,符号R是具有16行4列的寄存器文件。于是,矩阵 A被定义为具有下列值的矩阵:
R[0][0],R[0][1],R[0][2],R[0][3],
R[1][0],R[1][1],R[1][2],R[1][3],
R[2][0],R[2][1],R[2][2],R[2][3],
R[3][0],R[3][1],R[3][2],R[3][3]
同样地,将矩阵B定义为具有下列值的矩阵:
R[4][0],R[4][1],R[4][2],R[4][3],
R[5][0],R[5][1],R[5][2],R[5][3],
R[6][0],R[6][1],R[6][2],R[6][3],
R[7][0],R[7][1],R[7][2],R[7][3]
同样地,将矩阵D定义为具有下列值的矩阵:
R[8][0],R[8][1],R[8][2],R[8][3],
R[9][0],R[9][1],R[9][2],R[9][3],
R[10][0],R[10][1],R[10][2],R[10][3],
R[11][0],R[11][1],R[11][2],R[11][3]
使用寄存器文件R和如此定义的矩阵A、B和D,使用下面的指令序 列来表达用于找出4行4列矩阵A和B的内积的程序:
MERGEH 12,0,2
MERGEH 13,1,3
MERGEL 14,0,2
MERGEL 15,1,3
MERGEH 0,12,13
MERGEL 1,12,13
MERGEH 2,14,15
MERGEL 3,14,15
DOT 12,0,4
DOT 13,0,5
DOT 14,0,6
DOT 15,0,7
MERGEL 12,12,13
MERGEL 14,14,15
MERGEL 8,12,14
DOT 12,1,4
DOT 13,1,5
DOT 14,1,6
DOT 15,1,7
MERGEL 12,12,13
MERGEL 14,14,15
MERGEL 9,12,14
DOT 12,2,4
DOT 13,2,5
DOT 14,2,6
DOT 15,2,7
MERGEL 12,12,13
MERGEL 14,14,15
MERGEL 10,12,14
DOT 12,3,4
DOT 13,3,5
DOT 14,3,6
DOT 15,3,7
MERGEL 12,12,13
MERGEL 14,14,15
MERGEL 11,12,14
因此,从上述典型程序可以很清楚地看到,在例如根据有关技术的数 据传送指令(或数据排列指令)的执行先于运算指令的执行的应用中,为 了计算4行4列矩阵的内积,需要执行36条指令。

发明内容

根据上述有关技术,数据排列指令可能需要在运算指令的执行之前被 执行。但是,由于数据排列指令的执行事实上没有执行任何处理,所以数 据排列指令的执行大大降低了处理效率。
为了解决上述问题,本发明的发明者开发了一种SIMD处理器,其在 运算指令前不需要数据排列指令,因此提高了处理效率。
根据本发明的实施例,提供了一种处理器,包括:多个存储体,第一 至第三矩阵被分散排列在所述多个存储体中;读出地址生成电路,其基于 第一矩阵和第二矩阵的读出寄存器指定和读出寄存器扫描方向,提供用于 从所述多个存储体读出第一矩阵中的预定行的第一读出地址和用于从所述 多个存储体读出第二矩阵中的预定列的第二读出地址;读出控制电路,其 基于第一矩阵和第二矩阵的读出寄存器指定和读出寄存器偏移,控制第一 矩阵中的预定行和第二矩阵中的预定列的排列,第一矩阵中的预定行和第 二矩阵中的预定列都是根据第一读出地址和第二读出地址而从所述多个存 储体读出的;处理单元,其对经过了由读出控制电路所控制的排列的第一 矩阵中的预定行和第二矩阵中的预定列执行内积处理;写地址生成电路, 其基于第三矩阵的写寄存器指定和写寄存器偏移,提供所述多个存储体中 的写地址;以及写控制电路,其基于写寄存器指定和写寄存器偏移,将从 处理单元输出的内积处理的结果写在对应于所述多个存储体中的第三矩阵 的地址中。
上述配置具有这样的效果,即控制存储在多个存储体中的第一矩阵的 预定行和第二矩阵的预定列的排列以将它们提供给处理单元,还具有这样 的效果,即控制由处理单元输出的内积处理结果的排列以将它们写在对应 于所述多个存储体中的第三矩阵的地址中。
另外,根据本发明的实施例,提供了一种处理器,包括:指令译码 器,其对程序中包括的指令进行译码,所述程序将通过针对第一矩阵中的 预定行和第二矩阵中的预定列执行内积处理所获得的、将被写入第三矩阵 的预订元素中的结果进行排序;多个存储体,第一至第三矩阵被分散排列 所述多个存储体中;读出地址生成电路,其基于由指令译码器所译码的第 一矩阵和第二矩阵的读寄存器指定和读寄存器扫描方向,提供用于从所述 多个存储体读出第一矩阵中的预定行的第一读出地址和用于从所述多个存 储体读出第二矩阵中的预定列的第二读出地址;读出控制电路,其基于由 指令译码器所译码的第一矩阵和第二矩阵的读寄存器指定和读寄存器偏 移,控制第一矩阵中的预定行和第二矩阵中的预定列的排列,所述第一矩 阵中的预定行和第二矩阵中的预定列是根据第一读出地址和第二读出地址 而从所述多个存储体读出的;处理单元,其对经过了由读出控制电路所控 制的排列的第一矩阵中的预定行和第二矩阵中的预定列执行内积处理;写 地址生成电路,其基于由指令译码器所译码的写寄存器指定和写寄存器偏 移,提供所述多个存储体中的写地址;以及写控制电路,其基于由指令译 码器所译码的写寄存器指定和写寄存器偏移,将从处理单元输出的内积处 理的结果写在对应于所述多个存储体中的第三矩阵的地址中。
上述配置具有这样的效果,即基于由指令译码器所译码的结果,控制 存储在多个存储体中的第一矩阵的预定行和第二矩阵的预定列的排列以将 其提供给处理单元,以及控制由处理单元输出的内积处理结果的排列以将 其写在对应于所述多个存储体中的第三矩阵的地址中。
本发明显示了出众的效果,即SIMD在运算指令前不需要数据排列指 令,从而提高了处理效率。
附图说明
图1是示出了根据本发明实施例的SIMD处理器的典型配置的示图;
图2是示出了根据本发明实施例的典型指令格式的示图;
图3是示出了根据本发明实施例的由指令译码器产生的典型译码结果 的示图;
图4是示出了根据本发明实施例的典型寄存器指定的示图;
图5A和图5B是示出了根据本发明实施例的寄存器扫描方向的示图;
图6是示出了根据本发明实施例的寄存器文件的典型逻辑配置的示 图;
图7是示出了根据本发明实施例的典型的对矩阵的寄存器文件分配的 示图;
图8是示出了根据本发明实施例的典型的对寄存器文件的物理存储体 分派的示图;
图9是示出了根据本发明实施例的寄存器文件的典型物理配置的示 图;
图10A和图10B是示出了根据本发明实施例的写控制电路的典型配置 的示图;
图11是示出了根据本发明实施例的写控制电路中应用的写数据分配 器所设置的典型关系的示图,该关系作为获得为运算结果的写数据与要实 际存储在存储体中的数据之间的关系;
图12是示出了根据本发明实施例的写地址生成电路的典型配置的示 图;
图13是示出了根据本发明实施例的第一读控制电路的典型配置的示 图;
图14是示出了根据本发明实施例的第一读控制电路中所应用的第一 读数据分配器所设置的典型关系的示图,该关系作为从存储体实际读出的 第一数据与被用作为操作数的第一读数据之间的关系;以及
图15是示出了根据本发明实施例的处理单元的典型配置的示图。

具体实施方式

下面参照附图,描述本发明的实施例。
图1是示出了根据本发明实施例的SIMD处理器100的典型配置的示 图。SIMD处理器100具有程序计数器110、指令译码器120、寄存器文件 130和处理单元140。SIMD处理器100连接到指令存储器400,或者包括 作为嵌入式存储器的指令存储器400。指令存储器400是存储用于RISC (Reduced Instruction Set Computer,精简指令集计算机)体系结构的指令 集的存储器。用于RISC体系结构的典型指令的长度为32位和3个操作 数。SIMD处理器100是通常能够同时执行4条指令的SIMD处理器。应 当注意,虽然典型处理器能够同时执行例如4条指令,但是SIMD处理器 不应当被限定为此情形下作为示例的处理器。也就是说,SIMD可同时执 行任意数量的指令。
程序计数器110是用于计算指令在指令存储器400中所存储的读地址 的计数器。指令409从指令存储器400的由程序计数器110表明的地址 119处读出,并被提供给指令译码器120。指令译码器120对从指令存储 器400中读出的指令409进行译码,以翻译指令409的操作码和指令409 所需的操作数。依赖于对操作数中的一个的翻译结果,从寄存器文件130 中选择寄存器,并在操作中对其进行访问,以根据所翻译的操作码向寄存 器文件130写入数据或从寄存器文件130读出数据。然后,处理单元140 根据所翻译的操作码,对作为操作数而从寄存器文件130读出的数据执行 预定处理。处理单元140执行的处理的结果存储在寄存器中,所述寄存器 也是依赖于对操作数中的一个的翻译结果而从寄存器文件130中选择的。
图2是示出了根据本发明实施例的典型指令格式的示图。根据该指令 格式,指令所具有的字段包括功能码210、写操作数220、第一读操作数 230和第二读操作数240。功能码210是用于定义上述操作码的字段,其 示出了通过执行所述指令,将由处理单元140执行的操作。通常,功能码 210定义了属于算术类或其他类的操作。属于算术类的操作的一个示例是 加法。
写操作数220所具有的字段包括写寄存器指定221、写寄存器扫描方 向222、写寄存器偏移223和写寄存器元素计数224。写寄存器指定221 是用于定义写寄存器的地址的字段。写寄存器扫描方向222是用于定义向 写寄存器中存储数据的操作方向的字段。向写寄存器中存储数据的操作方 向可以是寄存器矩阵的垂直或平方向。写寄存器偏移223是定义在水平 方向上向写寄存器中存储数据的操作中的偏移的字段。写寄存器元素计数 224是用于定义在向寄存器中存储数据的操作中,要被写入写寄存器中的 元素的数量的字段。
第一读操作数230所具有的字段包括第一读寄存器指定231、第一读 寄存器扫描方向232、第一读寄存器偏移233和第一读寄存器元素计数 234。第一读寄存器指定231是用于定义第一读寄存器的地址的字段。第 一读寄存器扫描方向232是用于定义从第一读寄存器取数据的操作方向的 字段。从第一寄存器取数据的操作方向可以是寄存器矩阵的垂直或水平方 向。第一读寄存器偏移233是定义在水平方向上从第一读寄存器取数据的 操作中的偏移的字段。第一读寄存器元素计数234是用于定义在从寄存器 取数据的操作中,要从第一读寄存器取出的元素的数量的字段。
第二读操作数240所具有的字段包括第二读寄存器指定241、第二读 寄存器扫描方向242、第二读寄存器偏移243和第二读寄存器元素计数 244。第二读寄存器指定241是用于定义第二读寄存器的地址的字段。第 二读寄存器扫描方向242是用于定义从第二读寄存器取数据的操作方向的 字段。从第二寄存器取数据的操作的方向可以是寄存器矩阵的垂直或水平 方向。第二读寄存器偏移243是定义在水平方向上从第二读寄存器取数据 的操作中的偏移的字段。第二读寄存器元素计数244是用于定义在从寄存 器取数据的操作中,要从第二读寄存器取出的元素的数量的字段。
图3是示出了根据本发明实施例的由指令译码器120执行以对指令 409进行译码的处理的典型结果的示图。指令译码器120对从指令存储器 400取出的指令409进行译码,以翻译上面提到的字段。在图中,参考标 号1210表示对功能码210的译码结果。
参考标号1231、1232、1233和1234分别表示对第一读寄存器指定 231、第一读寄存器扫描方向232、第一读寄存器偏移233和第一读寄存器 元素计数234的译码结果。
同样地,参考标号1241、1242、1243和1244分别表示对第二读寄存 器指定241、第二读寄存器扫描方向242、第二读寄存器偏移243和第二 读寄存器元素计数244的译码结果。同样地,参考标号1221、1222、1223 和1224分别表示对写寄存器指定221、写寄存器扫描方向222、写寄存器 偏移223和写寄存器元素计数224的译码结果。
图4是示出了根据本发明的典型寄存器指定的示图。这里假设要被访 问的寄存器文件被划分为后面将要描述的多个存储体。寄存器指定包括高 位和低位。高位指定矩阵的序号,而低位指定矩阵中行的序号。
例如对于每个4行的4个矩阵来说,寄存器指定需要至少4位。2个 高位指定矩阵号211,而2个低位指定矩阵内的行号212。矩阵号211和 矩阵内的行号212标识了一个寄存器,该寄存器是存储体319中的一行。
如前所述,该指令格式包括3个寄存器指定字段,即写寄存器指定 221、第一读寄存器指定231和第二读寄存器指定241。
图5A和图5B是示出了根据本发明实施例的扫描方向的示图。扫描方 向字段为0表明每个对矩阵进行访问的操作都将以水平方向执行,如图 5A所述。例如在对矩阵A[i][j]将扫描方向字段设置为0的情况中,每个对 该矩阵进行访问的操作都是通过固定i标记而改变j标记来执行的。
另一方面,扫描方向字段为1表明每个对矩阵进行访问的操作都将以 垂直方向执行,如图5B所述。例如在对矩阵A[i][j]将扫描方向字段设置 为1的情况中,每个对该矩阵进行访问的操作都是通过固定j标记而改变i 标记来执行的。
如前所述,该指令格式包括3个扫描方向字段,即写寄存器扫描方向 222、第一读寄存器扫描方向232和第二读寄存器扫描方向242。
在写寄存器偏移223、第一读寄存器偏移233或第二寄存器偏移243 中指定的偏移是分别对第一读寄存器、第二读寄存器和写寄存器,在图 5A和图5B所示的矩阵的水平方向上的偏移。偏移被定义为在读或写操作 的开始与下一读或写操作的开始之间的位移。
写寄存器元素计数224中指定的元素计数是在一次访问中,将被写入 写寄存器的数据块的数量。另一方面,第一读寄存器元素计数234或第二 读寄存器元素计数244中指定的元素计数是在一次访问中,将从第一读寄 存器或第二读寄存器读出的数据块的数量。例如,可同时对n行n列矩阵 的水平或垂直排列的n个元素进行一次访问。例如,如果可同时被访问的 元素的最大数量是4,则可以使用2个位在写寄存器元素计数224、第一 读寄存器元素计数234或第二读寄存器元素计数244中指定元素计数。具 体地说,元素计数1由二进制形式的00b所表示的值0指定,元素计数2 由二进制形式的01b所表示的值1指定。同样地,元素计数3由二进制形 式的10b所表示的值2指定,元素计数4由二进制形式的11b所表示的值 3指定。
图6是示出了根据本发明实施例的寄存器文件130的典型逻辑配置的 示图。通过假设寄存器文件130一般具有16行4列矩阵的配置,向寄存器 文件130分配地址。于是,寄存器文件130可用来存储64块32位数据, 作为矩阵元素R[0][0]到R[15][3]。
图7示出了作为寄存器文件130的一些部分的前述矩阵A、B和D。 如图7所示,从图6所示的寄存器文件的130顶部开始顺序地,各自具有 4行4列的矩阵A、B和D被定义为寄存器文件130的一些部分。也就是 说,寄存器文件130的元素R[0][0]到R[3][3]被分派给矩阵A,寄存器文 件130的元素R[4][0]到R[7][3]被分派给矩阵B,寄存器文件130的元素 R[8][0]到R[11][3]被分派给矩阵D。
注意,由于寄存器文件130的元素R[12][0]到R[15][3]没有被分配给 任何特定矩阵,因此如有必要,这16个元素可被用作为工作区。
图8是示出了根据本发明实施例的寄存器文件130的典型物理划分的 示图。如图所示,寄存器文件130被物理划分为多个存储体。由于可同时 对多个存储体进行访问,因此对图6所示的逻辑配置的访问可被实现为对 包括在寄存器文件130中的许多寄存器的同时访问。在图8所示的示例 中,寄存器文件130被划分为存储体310到313。概括地说,就是将可用 于存储m个n×n矩阵(m、n都是整数)的寄存器文件划分为n个存储 体,其中的每个存储体都可用于存储n×m个元素。
与图6所示的顺序不同,对存储体分配的数据块被故意地置于对每行 应用所谓“倾斜(skew)”的状态中。例如,第一、第二、第三和第四存 储体中的第0行上的数据块分别是R[0][0]、R[0][1]、R[0][2]和R[0][3], 与图6所示的第0行上的元素相同。另一方面,第一、第二、第三和第四 存储体中的第1行上的数据块分别是R[1][3]、R[1][0]、R[1][1]和 R[1][2],每个都相比它们各自在第0行上的相对者右移了一列。
通过如上所述故意地在存储体中存储数据块,在以水平方向或垂直方 向对矩阵进行访问的操作中,在任一方向上的访问可同时进行。以对图7 所示的矩阵A进行访问作为示例。在此情形下,在任一方向上的同时访问 中,存储在不同存储体中的数据块被同时访问。具体地说,可同时在逻辑 水平方向上对例如R[0][0]、R[0][1]、R[0][2]和R[0][3]进行一般的同时访 问,因为它们分别存储在第一到第四存储体310到313中。通过改变标记 j但保持标记i不变,实现到数据块R[i][j]的在逻辑水平方向上的同时访 问。另一方面,可同时在逻辑垂直方向上对例如R[0][1]、R[1][1]、R[2][1] 和R[3][1]进行另外的一般的同时访问,因为它们分别存储在第二存储体 311、第三存储体312、第四存储体313和第一存储体310中。通过改变标 记i但保持标记j不变,实现到数据块R[i][j]的在逻辑垂直方向上的同时访 问。
图9是示出了根据本发明实施例的寄存器文件130的典型物理配置的 示图。假设对寄存器文件130的每次同时访问都是对4块数据进行的。如 图所示,寄存器文件130从而包括4个存储体310到313。作为存储体310 到313的控制电路,寄存器文件130还包括写地址生成电路320、第一读 地址生成电路330、第二读地址生成电路340、写控制电路350、第一读控 制电路360以及第二读控制电路370。
存储体310到313每个都具有彼此独立操作的端口。这些端口是用于 写地址MWA、第一读地址M1RA、第二读地址M2RA、写数据MWD、 第一读数据M1RD、第二读数据M2RD和写使能信号MWE的端口。当地 址被提供给第一读地址M1RA的端口时,从第一读数据M1RD的端口输 出存储在该地址处的数据。同样,当地址被提供给第二读地址M2RA的端 口时,从第二读数据M2RD的端口输出存储在该地址处的数据。另一方 面,当地址被提供给写地址MWA的端口时,在被提供到写使能信号 MWE的端口的写使能信号被置于激活状态时,被提供给写数据MWD的 端口的数据被存储在该地址处。
写地址生成电路320是用于产生要被提供给存储体310到313的写地 址MWA的电路。详细地说,写地址生成电路320接收来自指令译码器 120的写寄存器指定1221和写寄存器扫描方向1222,分别向存储体310到 313输出写地址3290到3293。
同样地,第一读地址生成电路330是用于产生要被提供给存储体310 到313的第一读地址M1RA的电路。详细地说,第一读地址生成电路330 接收来自指令译码器120的第一读寄存器指定1231和第一读寄存器扫描 方向1232,分别向存储体310到313输出第一读地址3390到3393。
同样地,第二读地址生成电路340是用于产生要被提供给存储体310 到313的第二读地址M2RA的电路。详细地说,第二读地址生成电路340 接收来自指令译码器120的第二读寄存器指定1241和第二读寄存器扫描 方向1242,分别向存储体310到313输出第二读地址3490到3493。
写控制电路350是用于向存储体310到313提供写使能信号MWE和 写数据MWD的电路。详细地说,写控制电路350接收来自指令译码器 120的写寄存器指定1221、写寄存器偏移1223和写寄存器元素计数1224 以及来自处理单元140的写数据块1490到1493,分别向存储体310到313 提供写使能信号3580到3583和写数据块3590到3593,如图9所示。
另一方面,第一读控制电路360是用于控制从存储体310到313读出 的第一读数据M1RD的目的地的电路。详细地说,第一读控制电路360接 收来自指令译码器120的第一读寄存器指定1231和第一读寄存器偏移 1233以及分别来自存储体310到313的第一读数据块3101、3111、3121 和3131,向处理单元140提供第一读数据块3690、3691、3692和3693。
同样地,第二读控制电路370是用于控制从存储体310到313读出的 第二读数据M2RD的目的地的电路。详细地说,第二读控制电路370接收 来自指令译码器120的第二读寄存器指定1241和第二读寄存器偏移1243 以及分别来自存储体310到313的第二读数据块3102、3112、3122和 3132,向处理单元140提供第二读数据块3790、3791、3792和3793。
图10A和图10B是示出了根据本发明实施例的写控制电路350的典型 配置的示图。如图10A所示,写控制电路350具有元素计数译码器351、 位提取电路352、加法器353、4个写使能信号生成器354和4个写数据分 配器355。
位提取电路352输出从指令译码器120接收到的写寄存器指定1221的 2个低位,作为数据3522。如上所述,写寄存器指定1221的2个低位代表 矩阵内的行号212,即图4所示的矩阵中的行的序号。加法器将从位提取 电路352接收的数据3522与从指令译码器120接收的写寄存器偏移1223 相加,产生由写寄存器选择信号3531所代表的和。因此,写寄存器选择 信号3531是指向用作写操作开端的写寄存器的信号。
元素计数译码器351对从指令译码器120接收的写寄存器元素计数 1224进行译码,输出类似于图10B的右侧一列所示的数据。如该图所示, 为0、1、2、3的写寄存器元素计数1224分别示出了1、2、3、4个元素。 因此,元素计数译码器351向写使能信号生成器354输出元素计数信号, 请求对相应数量元素的写操作。
根据上述写寄存器选择信号3531(后面将参照图11对其进行描 述),4个写使能信号生成器354分别向存储体310到313提供写使能信 号3580到3583。但是,只有被从元素计数译码器351接收的元素计数信 号选择的写使能信号生成器354才实际地向它们各自的存储体提供写使能 信号,其中存储体的数量由元素计数信号确定。
同样地,根据上述写寄存器选择信号3531(后面将参照图11对其进 行描述),4个写数据分配器355分别向存储体310到313提供从处理单 元140接收的写数据块1490到1493,作为数据块3590到3593。但是,与 写使能信号生成器354不同,所有的写数据分配器355的操作都不考虑从 元素计数译码器351接收的元素计数信号。
注意,概括上述写控制,如下定义代表上述写寄存器选择信号3531 的写数据选择信号MWDsel、代表写数据块3590到3593的写数据MWD 和代表写使能信号3580到3583的写使能信号MWE:
MWDsel[b]=pmod(b-IX-FS,n)
MWD[b]=WD[MWDsel[b]]
MWE[b]=(pmod(b-IX-FS,n)<=SZ)?1;0
在如上定义中,符号IX表示写寄存器指定,符号FS表示写寄存器偏 移,符号SZ表示写寄存器元素的数量。另外,符号n表示存储体数量, 符号b表示存储体的序号。因此,存储体号b是范围0到(n-1)的整 数。此外,符号WD表示由处理器单元140输出的作为最终要通过写数据 分配器355写入存储体的数据的写数据块1490到1493。也就是说,被实 际写入由范围0到(n-1)的存储体号b表明的存储体的数据MWD[b]是 根据MWDsel[b],从由WD代表的写数据块1490到1493中选出的。此 外,符号pmod(i,j)表示返回整数i除以整数j所得的余数的函数。另 外,符号‘a?x;y’表示这样的函数:对a=1返回x,对a=0返回y。
图11的示图示出了写控制电路350中使用的写数据分配器355是如何 依赖于上述写寄存器选择信号3531而分别向存储体310到313分配从处理 单元140接收的写数据块1490到1493的,其中写数据块1490到1493被 分配作为数据块3590到3593,写寄存器选择信号3531是行号和写寄存器 偏移的和。如上所述,写寄存器选择信号3531是由加法器353输出的信 号。写寄存器选择信号3531被提供给写数据分配器355作为选择信号 SEL。例如,如果写寄存器选择信号3531具有值0,则写数据分配器355 将写数据块1490到1493照这个样子分别分配给存储体310到313作为数 据块3590到3593。
如果写寄存器选择信号3531具有值1,则写数据分配器355将从处理 单元140接收的写数据块1490、1491、1492和1493分别分配给存储体 311、312、313和310作为数据块3591、3592、3593和3590。也就是说, 写数据分配器355在存储体号加1的方向上循环了写数据块1490、1491、 1492和1493之后,即将写数据块1490、1491、1492和1493在图9所示 的在存储体310到313上向左循环一个元素之后,分别向存储体311、 312、313和310分配写数据块1490、1491、1492和1493。同样地,如果 写寄存器选择信号3531具有值2,则写数据分配器355在将数据块 1490、1491、1492和1493左向循环2个元素之后,将写数据块1490、 1491、1492和1493分别分配给存储体312、313、310和311作为数据块 3592、3593、3590和3591。同样地,如果写寄存器选择信号3531具有值 3,则写数据分配器355在将数据块1490、1491、1492和1493左向循环3 个元素后,将写数据块1490、1491、1492和1493分别分配给存储体 313、310、311和312作为数据块3593、3590、3591和3592。
在图11所示的分配中,写数据分配器355被视为数据的分配器。注 意,与写数据分配器355相同,基于写寄存器选择信号3531的分配也可 被应用于写使能信号生成器354,所述写使能信号生成器354用作作为输 出到存储体310到313的信号的写使能信号的生成器。但是,在写使能信 号生成器354的情形下,只有被从元素计数译码器351接收的元素计数信 号选择的写使能信号生成器354才实际地向它们各自的存储体提供写使能 信号,其中存储体的数量由元素技术信号确定。
图12是示出了根据本发明实施例的写地址生成电路320的典型配置 的示图。如图所示,写地址生成电路320具有位分割电路321、减法器 3220到3223、行号选择器3230到3233,以及结合电路3250到3253。
位分割电路321将从指令译码器120接收的写寄存器指定1221分割为 具有2位长度的矩阵号3211和也具有2位长度的矩阵内的行号3212,如 前参照图4所述。
减法器3220用常数0去减矩阵内行号3212,并将减法结果提供给行 号选择器3230。同样地,减法器3221用常数1去减矩阵内行号3212,并 将减法结果提供给行号选择器3231。同样地,减法器3222用常数2去减 矩阵内行号3212,并将减法结果提供给行号选择器3232。类似地,减法 器3223用常数3去减矩阵内行号3212,并将减法结果提供给行号选择器 3233。于是,逐个递增1的四个数被分别提供给行号选择器3230到3233 的输入1。
另一方面,矩阵内行号3212实际上被提供给所有行号选择器3230到 3233的输入0。指令译码器120输出的写寄存器扫描方向1222被提供给行 号选择器3230到3233,作为每个行号选择器3230到3233用来选择输入0 或输入1的信号。也就是说,如果写寄存器扫描方向1222是0,则行号 3240到3243就作为彼此相差1的数字而分别由行号选择器3230到3233 输出。另一方面,如果写寄存器扫描方向1222是1,则行号3240到3243 就作为彼此相等的数字而分别由行号选择器3230到3233输出。
分别由行号选择器3230到3233输出的行号3240到3243被分别提供 给结合电路3250到3253,以被返回与矩阵号3211结合。与矩阵号3211 结合的行号3240到3243被分别提供给存储体310到313分别作为写地址 3290到3293。也就是说,如果指令译码器120输出的写寄存器扫描方向 1222是0,则地址3290到3293被分别提供给存储体310到313,作为用 于矩阵水平方向访问中执行的写操作的写地址。另一方面,如果指令译码 器120输出的写寄存器扫描方向1222是1,则地址3290到3293被分别提 供给存储体310到313,作为用于矩阵垂直方向访问中执行的写操作的写 地址。于是,如果指令译码器120输出的写寄存器扫描方向1222是表明 将在水平扫描方向执行写操作的0,那么写地址3290到3293作为逐个递 增1的地址被分别提供给存储体310到313。另一方面,如果指令译码器 120输出的写寄存器扫描方向1222是表明将在矩阵垂直扫描方向执行写操 作的1,那么写地址3290到3293作为彼此相等的地址被分别提供给存储 体310到313。
已经参照图12说明了写地址生成电路320的典型配置。注意,第一 读地址生成电路330和第二读地址生成电路340也可以通过与写地址生成 电路320相同的配置来实现。
为了概括地说明上述地址生成,用下式定义代表写地址3290到 3293、第一读地址3390到3393和第二读地址3490到3493的存储器地址 MA[b]。
MA[b]=(IX-pmod(IX,n))+(RXC?pmod(b-IX,n);pmod(IX,n))
在上述定义中,符号IX表示寄存器指定,符号RXC表示寄存器扫描 方向。此外,符号n表示存储体数量,符号b表示存储体的序号。于是, 存储体号b是范围0到(n-1)的整数。此外,符号pmod(i,j)表示返 回整数i除以整数j所得的余数的函数。此外,符号‘a?x;y’表示如下 函数:对a=1返回x,或者对a=0返回y。
图13是示出了根据本发明实施例的第一读控制电路360的典型配置 的示图。如图所示,第一读控制电路360包括位提取电路361、加法器 362和4个第一读数据分配器363。
位提取电路361输出从指令译码器120接收的第一读寄存器指定1231 的2个低位,作为数据3612。如前所述,第一读寄存器指定1231的2个 低位代表矩阵内行号212,即图4所示的矩阵内的行号。加法器362将从 位提取电路361接收的数据3612与从指令译码器120接收的第一读寄存器 偏移1233相加,以产生由第一读寄存器选择信号3621代表的和。第一读 寄存器选择信号3621是指向用作第一读操作开端的第一读寄存器的信 号。
4个第一读数据分配器363分别接收来自存储体310到313的第一读 数据块3101到3131,并以根据前述第一读寄存器选择信号3621(后面将 参照图14进行描述)的方式,将第一读数据块3101到3131作为第一读数 据块3690到3693输出到处理单元140。处理单元140使用第一读数据 3690到3693作为第一操作数。
注意,为了概括地陈述上述读控制,用下式定义代表上述第一读寄存 器选择信号3621的读数据选择信号MRDsel以及代表第一读数据块3690 到3693和第二读数据块3790到3793的读数据RD:
MRDsel[b]=pmod(b-IX-FS,n)
RD[MRDsel[b]]=MRD[b]
在如上定义中,符号IX表示寄存器指定,符号FS表示寄存器偏移。 另外,符号n表示存储体数量,符号b表示存储体的序号。因此,存储体 号b是范围0到(n-1)的整数。此外,代表了第一读数据块3101到 3131和第二读数据块3102到3132的符号MRD[b]是实际从由范围0到 (n-1)的存储体号b所表明的存储体读出的数据。此外,符号pmod(i, j)表示返回整数i除以整数j所得的余数的函数。
图14示出了第一读控制电路360中所使用的第一读数据分配器363是 如何依赖于上述第一读寄存器选择信号3621而分别指派从存储体310到 313实际读出的第一读数据块3101到3131的,其中第一读数据块3101到 3131被指派作为提供给处理单元140的第一读数据3690到3693,第一读 寄存器选择信号3621是行号和寄存器偏移的和。如上所述,第一读寄存 器选择信号3621是由加法器363输出的信号。第一读寄存器选择信号 3621被提供给第一读数据分配器363作为选择信号SEL。例如,如果第一 读寄存器选择信号3621具有值0,则第一读数据分配器363将第一读数据 块3101、3111、3121和3131照这个样子分别指派为第一读数据块3690到 3693。
如果第一读寄存器选择信号3621具有值1,则第一读数据分配器363 将第一读数据块3101、3111、3121和3131分别指派为第一读数据块 3693、3690、3691和3692。也就是说,第一读数据分配器363在存储体 号减1的方向上循环了第一读数据块3101到3131之后,即将第一读数据 块3101、3111、3121和3131在图9所示的存储体310到313上向右循环 一个元素之后,分别将第一读数据块3101、3111、3121和3131指派为第 一读数据块3693、3690、3691和3692。同样地,如果第一读寄存器选择 信号3621具有值2,则第一读数据分配器363在将第一读数据块3101、 3111、3121和3131右向循环2个元素后,将第一读数据块3101、3111、 3121和3131分别指派为第一读数据块3692、3693、3690和3691。同样 地,如果第一读寄存器选择信号3621具有值3,则第一读数据分配器363 在将第一读数据块3101、3111、3121和3131右向循环3个元素后,将第 一读数据块3101、3111、3121和3131分别指派为第一读数据块3691、 3692、3693和3690。
已参照图13和图14说明了第一读控制电路360的典型配置。但是注 意,用于输出第二读数据块3790到3793的第二读控制电路370具有与第 一控制电路360相同的配置。
图15是示出了根据本发明实施例的处理单元140的典型配置的示 图。如图所示,处理单元140具有4个算术电路组141,其中的每一个都 具有算术电路、加法器142和处理结果选择器1430到1433。
4个算术电路组141中的每一个都被设计用于一对输入操作数。通 常,每个算术电路组141都包括加法器、减法器、乘法器、除法器和比较 器。加法器142是用于对由算术电路组141中所使用的乘法器输出的积进 行求和的电路。也就是说,加法器142的输出是矩阵内积计算中获得的乘 积的和。
处理结果选择器1430到1433中的每一个都是这样的组件,其根据从 指令译码器120接收的功能码1210,选择由算术电路组141和加法器142 输出的处理结果中的一个。由处理结果选择器1430到1433选择的处理结 果被输出到存储体310到313作为写数据块1490到1493。例如,如果从 指令译码器120接收的功能码1210是0,则处理结果选择器1430到1433 选择由算术电路组141输出的加法结果。如果从指令译码器120接收的功 能码1210是1,则处理结果选择器1430到1433选择由算术电路组141输 出的减法结果。如果从指令译码器120接收的功能码1210是2,则处理结 果选择器1430到1433选择由算术电路组141输出的乘法结果。如果从指 令译码器120接收的功能码1210是3,则处理结果选择器1430到1433选 择由算术电路组141输出的除法结果。如果从指令译码器120接收的功能 码1210是4,则处理结果选择器1430到1433选择由算术电路组141输出 的比较结果。然后,处理结果选择器1430到1433将所选择的加法结果输 出到存储体310到313作为写数据块1490到1493。
另外,另一方面,如果从指令译码器120接收的功能码1210是5,则 处理结果选择器1430选择由加法器器142输出的乘积和,而其他处理选 择器1431到1433的输出被无效。如果从指令译码器120接收的功能码 1210是5,则仅使用写数据1490。因此,其他写数据块1491到1493是被 忽略的不太重要的信息。
作为示例,如下一般地规定根据本发明实施例的用于SIMD处理器 100的内积运算指令XDOT:
XDOT d_ix,d_fs,a_ix,a_rxc,b_ix,b_rxc
XDOT指令通常是用于找出矩阵A的一行和矩阵B的一列的内积,并 将该内积存储在矩阵D的一个元素中的指令。在XDOT指令中,符号 d_ix表示用于矩阵D的寄存器指定,符号d_fs表示矩阵D中的偏移。因 此,操作数d_ix和d_fs指定了矩阵D的一个元素作为在其中存储内积的 矩阵元素。另一方面,符号a_ix表示用于矩阵A的寄存器指定,符号 a_rxc表示在矩阵A上的扫描方向。通常,操作数a_rxc对应于行被设置为 0。因此,操作数a_ix和a_rxc指定了矩阵A中的一行。同样地,符号 b_ix表示用于矩阵B的寄存器指定,符号a_rxc表示在矩阵B上的扫描方 向。通常,操作数b_rxc对应于列被设置为1。因此,操作数b_ix和b_rxc 指定了矩阵B中的一列。
对于4行4列矩阵来说,如下定义XDOT指令的具体运算: R[d_ix][d_fs]=
((a_rxc?R[a_ix-(a_ix%4)+0][a_ix%4];R[a_ix][0])×
(b_rxc?R[b_ix-(b_ix%4)+0][b_ix%4];R[b_ix][0]))+
((a_rxc?R[a_ix-(a_ix%4)+1][a_ix%4];R[a_ix][1])×
(b_rxc?R[b_ix-(b_ix%4)+1][b_ix%4];R[b_ix][1]))+
((a_rxc?R[a_ix-(a_ix%4)+2][a_ix%4];R[a_ix][2])×
(b_rxc?R[b_ix-(b_ix%4)+2][b_ix%4];R[b_ix][2]))+
((a_rxc?R[a_ix-(a_ix%4)+3][a_ix%4];R[a_ix][3])×
(b_rxc?R[b_ix-(b_ix%4)+3][b_ix%4];R[b_ix][3]))
在上述定义中,符号‘a?x;y’表示这样的函数:对于a=1返回 x,或对于a=0返回y。另外,符号m%n表示这样的函数:返回整数m 除以整数n所得的余数。
通过在XDOT指令中指定表明水平方向的a_rxc=0和表明垂直方向 的b_rxc=1,对由a_ix指定作为矩阵A的一行的任意行和由b_ix指定作 为矩阵B的一列的任意列所执行的内积运算的结果可被存储在由d_ix和 d_fs指定作为矩阵D中一个元素位置的预定位置处。
作为示例,假设指令XDOT 8,2,0,0,6,1。在此情形下,作为译码的 结果,指令译码器120输出代表内积运算的值为5的功能码1210、值为8 的写寄存器指定1221、值为2的写寄存器偏移1223、值为0的第一读寄 存器指定1231、值为0的第一读寄存器扫描方向1232、值为6的第二读 寄存器指定1241,以及值为1的第二读寄存器扫描方向1242。值为8的 写寄存器指定1221和值为2的写寄存器偏移1223指定了矩阵D中的矩阵 元素D[0,2]。另一方面,值为0的第一读寄存器指定1231和值为0的第 一读寄存器扫描方向1232指定了矩阵A中的行#0。同样地,值为6的第 二读寄存器指定1241和值为1的第二读寄存器扫描方向1242指定了矩阵 B中的一列。由于写寄存器偏移1223被设置为2,因此对于该XDOT指 令,矩阵B的被指定的列是列#2。另外,由于内积运算是对4行4列矩 阵A和B执行的,所以作为XDOT指令的默认值,指令译码器120还输 出与4个元素相对应的值为3的第一读寄存器元素计数1234和与4个元素 相对应的值为3的第二寄存器元素计数1244。此外,指令译码器120还输 出也作为XDOT指令默认值的值为0的第一读寄存器偏移1233和值为0 的第一读寄存器偏移1243。此外,由于内积运算的结果是标量值,因此指 令译码器120还输出与单值相对应的值为0的写寄存器元素计数1224和值 为0的写寄存器扫描方向1222。
写地址生成电路320产生写地址3290到3293,它们都被设置为8, 对应于作为包括上述矩阵元素D[0,2]的行的被包括在矩阵D中的行#0。 第一读地址生成电路330产生值为0的第一读地址3390到3393,对应于 上述矩阵A中的行#0。第二读地址生成电路340产生值为6的第二读地 址3490、值为7的第二读地址3491、值为4的第二读地址3492和值为5 的第二读地址3493。值为6的开始第二读地址3490是根据值为6的第二 读寄存器指定1241计算的,包括表明矩阵B的值为1的矩阵号和值为2 的矩阵B中的矩阵内行号。
因为第一读寄存器指定1231被设置为0,并且第一读寄存器偏移 1233被设置为0,以给出值为0的第一读寄存器选择信号3621,所以第一 读控制电路360分别指派第一读数据块3101到3131照这样作为第一读数 据块3690到3693,如前面参照图14所述。另一方面,因为第二读寄存器 指定1241被设置为6,并且第二读寄存器偏移1243被设置为0,以给出 值为2的第二读寄存器选择信号,所以第二读控制电路370将第二读数据 块3102到3132右向循环2个元素,也如前面参照图14所述,并将第二读 数据3102指派为第二读数据3792,将第二读数据3112指派为第二读数据 3793,将第二读数据3122指派为第二读数据3790,将第二读数据3132指 派为第二读数据3791。
根据功能码1210,处理单元140将第一读数据块3690到3693分别乘 以第二读数据块3790到3793,对每个作为乘法结果的乘积进行相加,并 将和输出作为写数据1490。
因为写寄存器指定1221被设置为8,并且写寄存器偏移1223被设置 为2,以给出值为2的写寄存器选择信号3531,所以写控制电路350将从 处理单元140接收的写数据块1490、1491、1492和1493左向循环2个元 素,如前面参照图11所述。然后,写控制电路350输出循环后的写数据 1490作为写数据3592,输出循环后的写数据1491作为写数据3593,输出 循环后的写数据1492作为写数据3590,输出循环后的写数据1493作为写 数据3591,如图11所示。但是,由于如上所述,写寄存器元素计数1224 被设置为0,表明元素计数为1,并且写寄存器偏移1223被设置为2,因 此写控制电路350仅激活写使能信号3582而将其他写使能信号3580、 3581和3583去活。于是,只有对应于行#2的存储体312被使能。
相应地,寄存器文件130从由值为0的第一读寄存器指定1231表明的 作为寄存器文件130中矩阵A的一行的行#0读出第一读数据块。来自行 #0的第一读数据块是R[0][0]、R[0][1]、R[0][2]和R[0][3]。寄存器文件 130还从上述作为寄存器文件130中矩阵B的一列的列#2读出第二读数 据块。来自列#2的第二读数据块是R[4][2]、R[5][2]、R[6][2]和R [7][2],它们是分别从存储体#2的值为4的地址、存储体#3的值为5的 地址、存储体#0的值为6的地址和存储体#1的值为7的地址同时读出 的,如图8所示。然后,处理单元140计算下列乘积和:R[0][0]×R[4][2] +R[0][1]×R[5][2]+R[0][2]×R[6][2]+R[0][3]×R[7][2]。最后,处理 单元140将计算得到的乘积和存储在上述作为矩阵D的一个元素的矩阵元 素D[0][2]中。矩阵元素D[0][2]是寄存器文件130的R[8][2]。
为了获得作为4行4列矩阵A和B内积的矩阵D的16个元素值,执 行包括如下16条XDOT指令的程序。
XDOT 8,0,0,0,4,1
XDOT 8,1,0,0,5,1
XDOT 8,2,0,0,6,1
XDOT 8,3,0,0,7,1
XDOT 9,0,1,0,4,1
XDOT 9,1,1,0,5,1
XDOT 9,2,1,0,6,1
XDOT 9,3,1,0,7,1
XDOT 10,0,2,0,4,1
XDOT 10,1,2,0,5,1
XDOT 10,2,2,0,6,1
XDOT 10,3,2,0,7,1
XDOT 11,0,3,0,4,1
XDOT 11,1,3,0,5,1
XDOT 11,2,3,0,6,1
XDOT 11,3,3,0,7,1
如上所述,按照根据本发明实施例的SIMD处理器100,通过执行包 括上述16条XDOT指令的程序,可获得作为4行4列矩阵A和B的内积 的矩阵D的16个元素值。与需要36条指令的有关技术相比,指令数减少 到比原来的一半还少。
如上所述,根据本发明的实施例,第一读控制电路360和第二读控制 电路370重新排列从存储体310到313读出的数据块,而写控制电路350 重新排列由处理单元140产生的作为运算结果的写数据块1490到1493。 于是,在运算指令之前不需要数据排列指令。
本发明的每个实施例都仅是本发明的一种典型实现。另外,每个实施 例都对应于所示出的发明权利要求的范围中的发明项。但是注意,本发明 的范围并不局限于这些实施例。也就是说,可对这些实施例作出多种改 变,只要这些改变在不偏离本发明本质的范围内。
换句话说,本领域的技术人员应当理解,可根据设计需求和其他因素 而作出各种修改、合并、部分合并和替换,而它们落在所附权利要求及其 等同物的范围内。
本发明可应用于在处理器中对多个数据块同时执行运算的应用。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈