数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法

申请号 CN201080055008.8 申请日 2010-11-10 公开(公告)号 CN102770855A 公开(公告)日 2012-11-07
申请人 株式会社Mush-A; 发明人 武者野满;
摘要 可以在基本原样利用现有 软件 资源的情况下提高处理的平行度。一种 数据处理 设备,包括用于对包括数据和添加至所述数据的扩展识别信息的多个包进行处理的多个处理单元,所述扩展识别信息包括用于识别所述数据的识别信息以及表示针对所述数据的一个或多个处理指令的指令信息,所述多个处理单元中的各处理单元包括:输入/输出单元,用于仅获得所述多个包中的、地址信息表示所述多个处理单元中的该各处理单元的包,其中所述地址信息是根据所述扩展识别信息所确定的;以及运算单元,用于执行所述输入/输出单元所获得的包中的处理指令。
权利要求

1.一种数据处理设备,包括:
多个处理单元,用于对各自包括数据和添加至所述数据的扩展识别信息的多个包进行处理,所述扩展识别信息包括用于识别所述数据的识别信息以及表示对所述数据的一个或多个处理指令的指令信息,
所述多个处理单元中的各处理单元包括:
输入/输出单元,用于仅获得所述多个包中地址信息表示所述多个处理单元中的该处理单元的包,其中所述地址信息是根据所述扩展识别信息所确定的;以及运算单元,用于执行所述输入/输出单元所获得的包中的处理指令。
2.根据权利要求1所述的数据处理设备,其特征在于,
所述输入/输出单元获得所述多个包中地址信息表示该处理单元的包,其中所述地址信息是根据所述扩展识别信息动态确定的。
3.根据权利要求2所述的数据处理设备,其特征在于,
所述输入/输出单元包括地址信息计算单元,所述地址信息计算单元用于根据基于所述扩展识别信息所生成的伪随机数来计算所述地址信息。
4.根据权利要求3所述的数据处理设备,其特征在于,
所述输入/输出单元将所述多个包中地址信息不表示该处理单元的包传送至其它处理单元。
5.根据权利要求4所述的数据处理设备,其特征在于,所述运算单元用于:
执行所述输入/输出单元所获得的包的处理指令中要最先执行的处理指令;
生成向通过执行处理指令所生成的数据添加了如下的扩展识别信息的包,该扩展识别信息包括要在已执行的该处理指令之后执行并成为要最先执行的处理指令的处理指令;以及
将所生成的包输入至所述输入/输出单元。
6.根据权利要求5所述的数据处理设备,其特征在于,所述运算单元用于:
执行所述输入/输出单元所获得的包的处理指令中要最先执行的处理指令,生成向通过执行处理指令所生成的数据添加了不包括已执行的该处理指令的扩展识别信息的包;以及
将所生成的包输入至所述输入/输出单元。
7.根据权利要求5或6所述的数据处理设备,其特征在于,
所述处理指令包括用以进行将两个包的数据分别指定为左侧操作数和右侧操作数的二元运算的处理指令,
所述多个处理单元中的各处理单元还包括:
存储单元,用于存储包;以及
比较/选择单元,用于将所述输入/输出单元所获得的包的扩展识别信息与所述存储单元中所存储的包的扩展识别信息进行比较,并从所获得的包和所存储的包中选择要输入至所述运算单元的包,其中
在所述输入/输出单元所获得的包中要最先执行的处理指令是用以进行所述二元运算的处理指令的情况下,
当所述存储单元中存储有扩展识别信息包括与所获得的包的预定部分一致的预定部分的包时,所述比较/选择单元使包括一致的预定部分的两个包配成对并将这两个包输入至所述运算单元;以及
当所述存储单元中没有存储扩展识别信息包括与所获得的包的预定部分一致的预定部分的包时,所述比较/选择单元将所获得的包存储在所述存储单元中。
8.根据权利要求7所述的数据处理设备,其特征在于,
所述处理指令包括用以进行将一个包的数据指定为操作数的一元运算的处理指令;以及
当所述输入/输出单元所获得的包中要最先执行的处理指令是用以进行所述一元运算的处理指令时,所述比较/选择单元将所获得的包输入至所述运算单元。
9.根据权利要求7或8所述的数据处理设备,其特征在于,
在所述二元运算是非交换运算的情况下,所述处理指令包括左右信息,所述左右信息表示将所述数据指定为所述左侧操作数还是所述右侧操作数,以及
所述扩展识别信息的预定部分是所述扩展识别信息中要最先执行的处理指令的除所述左右信息以外的部分。
10.根据权利要求7~9中任一项所述的数据处理设备,其特征在于,
所述存储单元包括存储有包的散列表,以及
所述比较/选择单元包括散列值计算单元,所述散列值计算单元用于基于所述输入/输出单元所获得的包中所述扩展识别信息的所述预定部分来计算散列值,在要将所获得的包存储在所述存储单元中的情况下,所述比较/选择单元将所获得的包与所述散列值相关联地存储在所述散列表中。
11.根据权利要求7~10中任一项所述的数据处理设备,其特征在于,
所述地址信息计算单元基于所述扩展识别信息的所述预定部分来生成所述伪随机数。
12.根据权利要求4~11中任一项所述的数据处理设备,其特征在于,
所述输入/输出单元将所述多个包中地址信息不表示该处理单元的包传送至与该处理单元相邻的处理单元。
13.根据权利要求12所述的数据处理设备,其特征在于,
所述多个处理单元以矩阵形式排列;以及
所述输入/输出单元将所述多个包中地址信息不表示该处理单元的包传送至在接近由该地址信息所表示的处理单元的方向上的相邻处理单元。
14.根据权利要求1~13中任一项所述的数据处理设备,其特征在于,还包括:
控制单元,用于根据存储装置中所存储的程序来生成所述包。
15.根据权利要求14所述的数据处理设备,其特征在于,
所述控制单元生成识别信息包括表示该控制单元的发出方信息的包,并将所生成的包发出至所述多个处理单元中的任一个;以及
如果包不包括要处理的处理指令,则所述输入/输出单元发送该包以将该包返回至由所述发出方信息所表示的控制单元。
16.一种数据处理系统,包括:
根据权利要求14或15所述的数据处理设备;
存储装置,用于存储所述程序;以及
输入/输出装置,用于输入和/或输出包括所述数据和所述程序的信息。
17.一种包,其包括数据和添加至所述数据的扩展识别信息,所述扩展识别信息包括用于识别所述数据的识别信息以及表示对所述数据的一个或多个处理指令的指令信息,所述包中的处理指令是由如下的处理单元执行的,该处理单元是数据处理设备的多个处理单元中由根据所述扩展识别信息确定的地址信息所指定的、并获得了该包的处理单元。
18.一种记录介质,其记录有根据权利要求17所述的包。
19.一种存储装置,其存储有根据权利要求17所述的包。
20.一种记录介质,其记录有中间包,所述中间包具有根据权利要求17所述的包的识别信息中由所述数据处理设备的控制单元所添加的至少一部分。
21.一种存储装置,其存储有中间包,所述中间包具有根据权利要求17所述的包的识别信息中由所述数据处理设备的控制单元所添加的至少一部分。
22.一种数据处理系统,包括:
根据权利要求19或21所述的存储装置;
所述数据处理设备;以及
输入/输出装置,用于输入和/或输出包括所述数据的信息。
23.一种数据处理方法,包括:
多个处理单元中的各处理单元仅获得在包括数据和添加至所述数据的扩展识别信息的多个包中的、地址信息表示该处理单元的包,其中所述地址信息是根据所述扩展识别信息所确定的,所述扩展识别信息包括用于识别所述数据的识别信息以及表示一个或多个处理指令的指令信息;以及
所述各处理单元执行该包中的处理指令。
24.根据权利要求23所述的数据处理方法,其特征在于,还包括:
所述各处理单元将所述多个包中地址信息不表示该处理单元的包传送至其它处理单元。
25.根据权利要求24所述的数据处理方法,其特征在于,还包括:
在所述各处理单元获得了地址信息表示该处理单元的包的情况下,
该处理单元执行该包的处理指令中要最先执行的处理指令,
该处理单元生成向通过执行处理指令所生成的数据添加了如下的扩展识别信息的包,该扩展识别信息包括在已执行的该处理指令之后要执行并成为要最先执行的处理指令的处理指令,以及
该处理单元根据所生成的包的地址信息来传送或获得所生成的包。

说明书全文

数据处理设备、数据处理系统、包、记录介质、存储装置和数

据处理方法

技术领域

[0001] 本发明涉及一种数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法。

背景技术

[0002] 作为计算机体系结构,通常已知有从存储装置(存储器)顺次取出指令、对这些指令进行解码并执行这些指令的冯·诺依曼(von Neumann)体系结构。冯·诺依曼体系结构是强调指令的处理系统,其中:预先确定指令的执行顺序,并且在每次收集到操作数(要计算的数据)时进行处理。
[0003] 此外,在冯·诺依曼型计算机中,作为对多个指令进行并行处理的CPU(中央处理单元)体系结构,已知有超标量处理器。超标量处理器能够执行如下的乱序处理,在乱序处理中,按要执行的操作数的到达顺序向执行节点发出指令。然而,在超标量处理器中,由于调度器在检查数据依赖性时按正确顺序重新排列执行结果,因此能够同时执行的指令数量的增加导致调度器复杂化。
[0004] 另一方面,作为冯·诺依曼体系结构,已知有如下的数据驱动型体系结构,其中:关注数据依赖性,并且根据数据流(数据的流)进行处理。该数据驱动型体系结构能够通过在执行节点处操作数准备就绪时开启(fire)、并将指令的执行结果传送至下一执行节点来并行执行多个指令。
[0005] 例如,在专利文献1中,公开了如下的多处理器系统,其中:数据驱动型(专利文献1中的数据流机型)体系结构用于处理器之间的控制,并且诺依曼体系结构用于处理器内的控制。该多处理器系统能够通过组合使用数据驱动型体系结构和诺依曼体系结构而不是使用复杂的硬件结构将所生成的可执行代码分割成多线程来基于所述可执行代码进行并行处理。
[0006] 此外,例如,在非专利文献1中,公开了TRIPS(Tera-op Reliable Intelligently Advanced Processing System,万亿次可靠智能先进处理系统)体系结构。该TRIPS体系结构是被称为分片式处理器的芯片体系结构与被称为EDGE(Explicit Data Graph Execution,显式数据流图执行指令集)的ISA(Instruction Set Architecture,指令集架构)的组合。其中,分片式处理器通过仅在相邻的芯之间布线来避免布线延迟的问题,从而即使芯数增加也能够保持操作速度高。另一方面,EDGE体系结构目的在于通过在执行节点处静态地配置指令、并且与数据流体系结构相同地在执行节点处操作数准备就绪时执行指令来使处理的平行度(parallelism)最大化。
[0007] 如此,可以通过单独使用或者组合使用如上所述的计算机体系结构来并行处理多个指令。
[0008] 引用列表
[0009] 专利文献
[0010] 专利文献1:日本特开2007-193430
[0011] 非专利文献
[0012] 非专利文献1:Doug Burger,et al.,"Scaling to the End of Silicon with EDGE Architectures,"IEEE Computer,vol.37,no.7,pp.44-55,July 2004

发明内容

[0013] 发明要解决的问题
[0014] 并行计算机能够通过使用数据驱动型体系结构来并行处理许多个指令。然而,由于数据驱动型体系结构使用与冯·诺依曼体系结构的指令集不同的指令集,因此无法原样使用冯·诺依曼型计算机所用的现有软件资源。
[0015] 为了在并行计算机中使用现有软件资源,例如,需要用于根据冯·诺依曼型计算机所用的源程序来生成并行计算机所用的可执行代码的编译器技术。然而,在使用编译器技术的情况下的处理的平行度依赖于编译器的性能,并且平行度的提高导致编译器复杂化并且还导致编译时间增加。此外,在专利文献1中,为了使用程序处理装置来生成多处理器系统所用的可执行代码,需要预先向以诸如C语言等的高级语言描述的源程序添加线程描述。
[0016] 此外,例如,需要用于在顺次解释冯·诺依曼型计算机所用的源程序时执行该源程序的解释器技术。然而,与编译器技术相同,处理的平行度的提高牵涉到导致解释器复杂化,并且可能导致解释器的操作速度下降。此外,即使没有导致编译器或解释器复杂化,也可能导致并行计算机自身复杂化或操作速度下降。
[0017] 因而,为了在并行计算机中使用现有软件资源,并行计算机中的平行度的提高与成本增加的发生处于权衡关系。
[0018] 用于解决问题的方案
[0019] 用于解决前述问题的本发明的主要方面是一种数据处理设备,包括:多个处理单元,用于对各自包括数据和添加至所述数据的扩展识别信息的多个包进行处理,所述扩展识别信息包括用于识别所述数据的识别信息以及表示对所述数据的一个或多个处理指令的指令信息,所述多个处理单元中的各处理单元包括:输入/输出单元,用于仅获得所述多个包中地址信息表示所述多个处理单元中的该处理单元的包,其中所述地址信息是根据所述扩展识别信息所确定的;以及运算单元,用于执行所述输入/输出单元所获得的包中的处理指令。
[0020] 通过本说明书以及附图的说明,本发明的其它方面将变得清楚。
[0021] 相关技术的交叉引用
[0022] 本申请要求2009年12月2日提交的日本专利申请2009-274033、2010年9月7日提交的日本专利申请2010-199711以及2010年6月1日提交的美国临时专利申请
61/350,408的优先权,在此通过引用包含这些专利申请的全部内容。
[0023] 发明的效果
[0024] 根据本发明,可以在基本原样利用现有软件资源的情况下提高处理的平行度。

附图说明

[0025] 图1是示出根据本发明实施例的PE(处理元件)的结构的框图
[0026] 图2是示出包括数据处理设备的整体数据处理系统的结构的概要的框图。
[0027] 图3是示出根据本发明实施例的数据处理设备的结构的框图。
[0028] 图4是示出源程序和数据处理设备要处理的程序(可执行代码)之间的关系的示例的图。
[0029] 图5是示出数据处理设备要使用的指令集的示例的图。
[0030] 图6是示出MCE(存储器控制元件)所生成的数据流图的示例的图。
[0031] 图7是示出MCE(存储器控制元件)所生成的基本包序列的示例的图。
[0032] 图8是示出MCE(存储器控制元件)所生成的循环展开后的包序列的示例的图。
[0033] 图9是示出根据本发明实施例的用于计算地址信息的方法的图。
[0034] 图10是示出输入/输出单元的操作的示例的流程图
[0035] 图11是示出要在缓冲存储器上执行的散列表的示例的图。
[0036] 图12是示出根据本发明实施例的数据处理设备的操作的图。
[0037] 图13是示出当使用电磁波(光)来传递信息时通信通道的结构的示例的图。
[0038] 图14是示出源程序和数据处理设备所执行的程序(可执行代码)之间的关系的另一示例的图。
[0039] 图15是示出各输入/输出端口包括多个通道的PE(处理元件)的结构的概要的框图。
[0040] 图16是示出包括指令添加指令的执行的数据流图的示例的图。
[0041] 图17是示出包括指令添加指令的执行的循环展开后的包序列的示例的图。
[0042] 图18是示出包括指令添加指令的执行的数据处理设备的操作的图。
[0043] 图19是示出数据处理设备所处理的包的另一结构示例的图。
[0044] 图20是示出包括指令添加处理的数据流图的示例的图。
[0045] 图21是示出包括指令添加处理的数据处理设备的操作的图。

具体实施方式

[0046] 通过本说明书以及附图的说明,至少以下的详情将变得清楚。
[0047] 整个数据处理系统的结构的概述
[0048] 以下将参考图2来说明包括数据处理设备的整个数据处理系统的结构的概述。
[0049] 图2所示的数据处理系统是包括数据处理设备1的并行计算机系统,并且除了数据处理设备1以外,还包括存储装置6、输入装置7、输出装置8和总线9。数据处理设备1、存储装置6、输入装置7和输出装置8经由总线9相互连接。后面将详细说明数据处理设备1的结构。
[0050] 整个数据处理系统的操作的概述
[0051] 随后将说明整个数据处理系统的操作的概述。
[0052] 存储装置6包括RAM(随机存取存储器)和ROM(只读存储器)等,并且在存储装置6内存储程序(可执行代码)以及执行程序所要使用的数据等。此外,数据处理设备1与计算机系统的CPU相对应,并且执行存储装置6中所存储的程序。后面将详细说明数据处理设备1的操作。
[0053] 输入装置7包括键盘鼠标等,并且从外部将包括数据和程序(源程序或可执行代码)的信息输入至该数据处理系统。另一方面,输出装置8包括显示器和打印机等,并将信息作为字符和图像等输出到外部。
[0054] 上述的数据处理设备1、存储装置6、输入装置7和输出装置8的分类并不固定。例如,诸如硬盘驱动器或光盘驱动器等的辅助存储装置用作存储装置6,但可被分类为相对于外部输入/输出信息的输入装置7和输出装置8。
[0055] 数据处理设备的结构
[0056] 以下将参考图3来说明根据本发明实施例的数据处理设备的结构。
[0057] 图3所示的数据处理设备1包括PE(处理器/处理元件)100~115、MCE(存储器控制/控制元件)300~303、高速缓冲存储器400以及通信通道(传输通道)500。
[0058] 数据处理设备1包括各自与处理单元相对应的多个PE,并且PE经由通信通道500相互连接。在本发明的实施例中,作为例子,假定数据处理设备1包括以4行×4列的矩阵方式配置的16个PE 100~115。此外,与上述的分片式处理器相同,假定PE 100~115仅在相互邻接的PE之间相互连接。后面将详细说明各PE的结构。
[0059] 这里,假定如图3所示,将PE 100~115的坐标(X,Y)分别表示为(0,0)~(3,3),则可以对各PE设置高两位表示X坐标并且低两位表示Y坐标的识别编号。此外,如上所设置的识别编号与图3所示的各PE的三个两位数(digit)符号中的较低的两个两位数一致。例如,位于坐标(0,3)的PE 103的识别编号是3(以二进制记法为0011),而位于坐标(3,0)的PE 112的识别编号是12(以二进制记法为1100)。
[0060] 数据处理设备1包括至少一个与控制单元相对应的MCE,并且各MCE经由通信通道500连接至PE 100~115中的任一个。在本发明的实施例中,作为例子,假定数据处理设备1包括4个MCE 300~303。此外,MCE 300~303分别连接至相邻的PE 100~103。如图3所示,对MCE 300~303分别设置识别编号0~3。
[0061] 高速缓冲存储器400连接至MCE 300~303。此外,高速缓冲存储器400经由上述的总线9(未示出)连接至数据处理设备1外的存储装置6。
[0062] 通信通道的结构和操作的示例
[0063] 通信通道500是PE之间以及PE和MCE之间的信息传输介质,并且这种信息传输不仅包括经由电线的电信号的传输,还包括经由光纤的光信号的传输以及自由空间内的电磁波的传输。这里,图13示出当经由电磁波或者特别是光传输信息时通信通道500的结构的例子。在这种情况下,各PE包括至少一个包含发光元件的发送单元和至少一个包含光接收元件的接收单元。此外,在图13中,发光元件212包含在信息传输源的PE中,而光接收元件213包含在信息传输目的地的PE中。
[0064] 图13所示的通信通道500包括:透射材料501,用于允许光透过;反射材料502,用于反射光;以及吸收材料503,用于吸收光。透射材料501和反射材料502分别与光纤的纤芯和包层相对应,并且使用石英玻璃或塑料等制成。此外,结构是这样的:将透射材料501的折射率设置得高于反射材料502的折射率,并且光信号在通过透射材料501传输时由反射材料502完全反射。
[0065] 光接收元件213被配置为使用OCF(片上滤色器)等来接收具有针对各PE所设置的波长的光。在这种情况下,发光元件212所发出的光的波长可变,并且可以与针对传输目的地的PE所设置的波长一致,以使得可以传输包。此外,通过对用于发出不同波长的光的多个发光元件进行切换,可以使针对传输源的PE和传输目的地的PE所设置的波长一致并且可以传输包。
[0066] 针对各PE所设置的波长可以是从紫外区域到红外区域中的任一个。然而,由于紫外线根据透射材料501和反射材料502所使用的材料而被吸收且透射率下降,因此优选使用从可见区域到红外区域的范围内的波长。
[0067] 数据处理设备的操作
[0068] 随后,将通过适当参考图4~8来说明根据本发明实施例的数据处理设备的操作。
[0069] 高速缓冲存储器400在进行高速缓冲时控制MCE 300~303与存储装置6之间的输入/输出。因此,MCE 300~303经由高速缓冲存储器400读取存储装置6中所存储的程序和数据。
[0070] 这里,图4示出源程序和数据处理设备1所处理的程序(可执行代码)之间的关系的示例。预先将以高级语言编写的源程序P0编译成可执行代码P1,然后存储在存储装置6中,并且MCE300~303读取可执行代码P1。在图4中,作为源程序P0的例子,例示出如下的处理:将通过使以C++语言编写的阵列sp[1024]的各元素除以2所获得的值存储在阵列dp[1024]中。此外,代替机器语言程序,可执行代码P1可以是以与机器语言基本一一对应的汇编语言编写的程序。
[0071] MCE 300~303基于数据流图,根据读入的可执行代码P1来生成后面将说明的包序列。各MCE不是必须自身生成数据流图,但在本发明的实施例中,为了便于说明,假定首先生成数据流图,然后基于该数据流图来生成包序列。
[0072] 这里,图5示出数据处理设备1要使用的指令集的示例。在图5中,将指令大致分成2输入/1输出指令和1输入/1输出指令。其中,2输入/1输出指令是用于进行将所输入的两个数据分别指定为左侧操作数和右侧操作数的二元运算的指令。另一方面,1输入/1输出指令是用于进行将所输入的一个数据指定为操作数的一元运算的指令。此外,如图5所示,对各指令设置与操作符相对应的符号以及采用机器语言的十六进制记数,并且在数据流图和包序列的描述中使用这两者。
[0073] 首先,将说明2输入/1输出指令。
[0074] 对用于输出两个数据(A和B)的相加结果(A+B或B+A)的加法指令设置符号“+”和十六进制记数10H。另一方面,在用于输出两个数据(L和R)的相减结果(L-R)的减法指令的情况下,由于减法是交换法则不成立的非交换运算,因此需要表示要将各数据指定为左侧操作数和右侧操作数中的哪一个的左右信息(方向信息)。因而,对于与减法指令相对应的符号“-”,进一步添加左右信息“L”或“R”,并且分别设置十六进制记数12H和13H。
[0075] 左右信息“L”表示要指定为左侧操作数的数据,而左右信息“R”表示要指定为右侧操作数的数据。此外,在该指令集中,各指令的LSB(最低有效位)只分配给左右信息。因此,在以下的指令(除了空(null)字符以外)中,将包括左右信息“L”的指令以及不包括左右信息的指令的LSB设置为0,而将包括左右信息“R”的指令的LSB设置为1。
[0076] 对用于输出两个数据(A和B)的相乘结果(A×B或B×A)的乘法指令设置不具有左右信息的符号“×”和十六进制记数14H。另一方面,对用于输出两个数据(L和R)的相除结果(L/R)的除法指令设置附加有左右信息的符号“/L”和“/R”以及十六进制记数16H和17H。
[0077] 设置了附加有左右信息的符号“writeL”和“writeR”以及十六进制记数18H和19H的写入指令是用于将数据(R)写入存储装置6的由数据(L)所表示的地址中所存储的数据(*L)的指令。“*”是间接参考操作符。
[0078] 设置了添加有左右信息的符号“app1L”和“app1R”以及十六进制记数50H和51H的数据添加指令是后面将说明的用于将包(R)的数据部分添加至包(L)的数据部分的指令。此外,设置了添加有左右信息的符号“app2L”和“app2R”以及十六进制记数52H和53H的指令添加指令是后面将说明的用于将包(R)的数据部分添加至包(L)的处理指令部分的指令。
[0079] 随后,将说明1输入/1输出指令。由于在1输入/1输出指令中仅将一个数据指定为操作数,因而指令不包括左右信息。
[0080] 设置有符号“NOP”和十六进制记数00H的NOP指令是不执行任何操作的指令。此外,设置有符号“read”和十六进制记数02H的读取指令是用于读取在存储装置6的由数据(A)所表示的地址中所存储的数据(*A)的指令。尽管不是指令,但例如将十六进制记数FFH设置为表示包的末端的空字符。
[0081] 与一般的数据驱动型体系结构的情况相同,各MCE使用图5所示的指令集来生成数据流图。图6示出根据可执行代码P1所生成的数据流图,这与图4所示的源程序P0的for循环内的处理相对应。
[0082] 在图6中,D1~D5表示数据,而I1~I5表示指令。加法指令I4将数据D1(dp)和数据D2(ii)相加并输出数据dp+ii,而加法指令I1将数据D3(sp)和D4(ii)相加并输出数据sp+ii。此外,读取指令I2从存储装置6读取数据*(sp+ii)。此外,除法指令I3将数据*(sp+ii)除以数据D5(2)并输出数据*(sp+ii)/2。写入指令I5将数据*(sp+ii)/2写入存储装置6的数据*(dp+ii)。
[0083] 通过以上的数据流,将通过使阵列sp[1024]的一个元素除以2所获得的值存储在阵列dp[1024]中。图7示出基于图6所示的数据流图所生成的基本包序列。
[0084] 各包包括数据部分和扩展识别信息部分。此外,扩展识别信息部分包括识别信息部分和处理指令部分。为了加密和压缩等的目的,适当对各包进行编码。
[0085] 除了包括数据本体以外,数据部分还包括数据的数据长度信息。此外,数据长度信息例如表示数据的字节数,但如果数据处理设备1仅使用固定长度数据,则不需要数据长度信息。
[0086] 识别信息部分例如包括MCE ID和处理ID。在这些ID中,由于将处理ID设置到各基本包序列,因此在图7中处理ID为空,并且在展开for循环时进行设置。另一方面,MCE ID与表示已生成了基本包序列的MCE的发出方信息相对应,并且例如使用图3所示的识别编号0~3。此外,如图7所示,基本包序列可以是这样的:如图7所示使MCE ID为空,并且在展开for循环时一起设置处理ID和MCE ID。
[0087] 在根据本发明的实施例中,作为例子,处理指令部分不仅包括多达5个指令1~5,还包括指令计数信息。这些指令各自以与执行顺序相反的顺序排列,其中要最先执行的指令配置在末尾并且后续指令为空。此外,指令计数信息表示未处理指令的数量,但可以每次都计数指令计数信息。
[0088] 如根据图7显而易见,基本包序列是通过利用5个数据D1~D5中的每个再构成图6所示的数据流图所获得的,并且各包是通过向数据添加识别信息和处理指令所生成的。此外,各MCE针对诸如重复处理等的基本包序列展开控制指令,然后将各包发出至相邻的PE。图8示出图7所示的基本包序列在展开for循环之后的包序列。
[0089] 如图4所示,由于for循环是从ii=0到ii=1023的重复处理,因此通过展开生成5×1024个包。此外,如图8所示,每5个包具有ID 1~ID 1024的相同处理ID,并且这5个包分别与图7所示的基本包序列相对应。作为例子,图8示出MCE ID设置为1,以表示这些包是MCE 301所生成的。
[0090] 从MCE 301发出的各包经由通信通道500被传输至PE 100~PE 115中由后面将说明的地址信息所表示的PE。此外,各PE与执行包所包括的处理指令的执行节点相对应。后面将说明各PE的操作的详细说明。
[0091] 如上所述,根据本发明实施例的数据处理设备与上述传统计算机体系结构在要处理的包这方面大大不同,本发明中要处理的包集成了要指定为操作数的数据和要指定为操作符的指令。
[0092] 如本发明的实施例所示,本发明的数据处理设备不限于包括MCE的结构,其中MCE用于根据以机器语言或汇编语言编写的可执行代码P1来生成包序列。
[0093] 例如,在存储装置6中,可以将由语法树表示的程序存储为在从源程序P0到可执行代码P1的编译期间的中间阶段生成的中间代码。由于语法树具有操作数配置于叶节点且操作符配置于内部节点的树结构,因此与机器语言或汇编语言的情况相比,数据流图的生成较容易。
[0094] 此外,例如,在存储装置6中,可以存储由包括编译器的外部装置预先生成的基本包序列或循环展开后的包序列。如果存储装置6内存储有基本包序列,则各MCE针对读入的基本包序列展开控制指令,对这些基本包序列设置MCE ID和处理ID,然后将各包发出至相邻的PE。另一方面,如果存储装置6内存储有循环展开后的包序列,则各MCE可以将各包原样发出至相邻的PE。
[0095] 此外,例如,在存储装置6中,可以存储中间包序列,在中间包序列中,循环展开后的包序列中的识别信息部分的一部分或全部被省略或者呈现为空字符。在这种情况下,各MCE设置所省略的MCE ID或处理ID,然后将各包发出至相邻的PE。
[0096] 此外,例如,可以将循环展开后的包序列从外部装置直接输入至数据处理设备。在这种情况下,该外部装置可以包括并行工作的其它数据处理设备。
[0097] 这里,图14示出源程序和数据处理设备1要处理的程序(可执行代码)之间的关系的另一例子。在这种情况下,编译器基于数据流图来根据以高级语言编写的源程序P0生成基本包序列,并且还针对这些基本包序列展开控制指令。此外,在存储装置6中,适当对循环展开后的包序列进行编码,然后存储为可执行代码P2。然后,MCE 300~303读取可执行代码P2。
[0098] PE(处理元件)的结构
[0099] 以下将参考图1来说明根据本发明实施例的PE的结构。
[0100] 图1所示的PE 100~115分别包括输入/输出单元210、比较/选择单元230、缓冲存储器240、操作数缓冲器250a和250b以及ALU(算术逻辑单元)260。
[0101] 输入/输出单元210包括地址信息计算单元211、输出端口214a~214d以及输入端口215a~215d。此外,将从存储装置6读取的包以及数据经由输入端口输入至输入/输出单元210。此外,从输入/输出单元210经由输出端口输出写入存储装置6的包以及数据。此外,各个输入/输出端口(输入端口和输出端口)经由上述的通信通道500(未示出)连接至相邻的PE和MCE。
[0102] 例如,在图3的PE 110的情况下,四对输入/输出端口分别连接至PE 109、106、111和114。此外,在PE 100的情况下,例如,两对输入/输出端口分别连接至PE 101和
104,一对输入/输出端口连接至MCE 300,并且一对输入/输出端口没有使用。
[0103] 此外,例如,如图15所示,结构可以是这样的:各个输入/输出端口包括多个通道,并且使用这些多个通道来在相邻的PE之间以及PE与MCE之间输入和/或输出包和数据。
[0104] 在使用光传输信息的情况下,例如,在各输出端口处设置图13的发光元件212并且在各输入端口处设置光接收元件213。
[0105] 从输入/输出单元210向比较/选择单元230输入包。此外,比较/选择单元230包括散列值计算单元231并且相对于与存储单元相对应的缓冲存储器240输入/输出包。此外,从比较/选择单元230将包括要分别指定为左侧操作数和右侧操作数的数据的包经由操作数缓冲器250a和250b输入至与操作单元相对应的ALU 260。此外,将ALU 260新生成的包再次输入至输入/输出单元210。
[0106] PE(处理元件)的操作
[0107] 随后,将适当参考图9~11来说明根据本发明实施例的PE的操作。
[0108] 在输入/输出单元210中,首先,地址信息计算单元211计算所输入的包的地址信息。该地址信息是表示应当对包进行处理的PE的信息,并且可以从该包的扩展识别信息部分获取到。这里,将参考图9来说明用于计算图8中的MCE ID=1且处理ID=1的最初的5个包的地址信息的方法。如图9所示,以下假定将这5个包分别指定为包P1~P5。
[0109] 首先,地址信息计算单元21从各包仅提取扩展识别信息部分(图9的中段),并对各扩展识别信息中的要最先执行的指令的左右信息进行屏蔽(图9的下段)。如上所述,在本发明的实施例中,要最先执行的指令配置在包的末尾,并且各指令的LSB只分配给左右信息。因此,仅需利用0或1(在图9中为0)对扩展识别信息的最后1位进行屏蔽。扩展识别信息可能包括空字符,并且在这种情况下,仅需对紧挨空字符前后的1位进行屏蔽。
[0110] 随后,地址信息计算单元211基于掩码扩展识别信息来生成伪随机数,并根据该伪随机数来计算地址信息。例如,如果通过计算获得了0~15(采用二进制记数为0000~1111)的4位值作为地址信息,则与图3中的PE的坐标相同,还可以以高2位表示X坐标并且低2位表示Y坐标的坐标(X,Y)的形式来表示该地址信息。在图9的下段中,以坐标的形式来表示该地址信息。
[0111] 由于不同于物理随机数、伪随机数具有再现性,因此可以根据具有相同的掩码扩展识别信息的包来生成相同的伪随机数,并计算相同的地址信息。例如,如图9的下段所示,根据包括相同的掩码扩展识别信息的包P1和P2来计算相同的地址信息(x1,y1)。同样,根据包P3和P4来计算相同的地址信息(x2,y2)。
[0112] 如上所述,适当对各包进行编码,但优选单独对数据部分和扩展识别部分进行编码,使得无需在每次计算地址信息时进行解码。同样,如果对处理指令部分本身进行编码或者对整个扩展识别信息部分进行编码,则优选使用可以在无需进行解码的情况下对要最先执行的指令的左右信息进行屏蔽的编码。
[0113] 此外,对于伪随机数的生成,可以使用已知方法。从计算地址信息所用的计算时间的度考虑,优选使用诸如LCG(Linear Congruential Generator,线性同余生成器)或LFSR(Linear Feedback Shift Register,线性反馈移位寄存器)等的高速生成方法。
[0114] 此外,地址信息计算单元211可被配置成通过参考预先生成的伪随机数表来计算地址信息。在这种情况下,由于地址信息计算单元211无需针对各包生成伪随机数,因此可以缩短计算地址信息所用的计算时间。在这种结构中,需要各PE的地址信息计算单元包括相同的伪随机数表或者各PE的地址信息计算单元读取共用的伪随机数表。
[0115] 另一方面,从PE的使用效率的角度考虑,优选伪随机数的分布尽可能均匀,以使得包分布均匀。此外,如果随机变量组不可预测,则相当于均匀分布,因而可以通过使用CSPRNG(Cryptographically Secure Pseudo-Random Number Generator,安全伪随机数发生器)来提高PE的使用效率。然而,各包的处理时间还随着指令而改变,因此即使伪随机数均匀分布,包分布也可能变得不均匀。
[0116] 因而,优选使用近似均匀分布的伪随机数,以达到计算地址信息所用的计算时间不会变得过长的程度。例如,并不优选计算地址信息所用的计算时间比计算后面将说明的散列值所用的计算时间长。
[0117] 随后,输入/输出单元210判断包的地址信息是否表示本PE,并且如果包的地址信息表示本PE,则获得该包并将该包输入至比较/选择单元230。另一方面,如果包的地址信息不表示本PE,则将该包传送至在接近由该地址信息所表示的PE的方向上的相邻PE。这里,将参考图10来说明输入/输出单元210的为了实现包的这种获得和传送的具体操作的例子。在图10中,将当前位置即PE的坐标设置为(x0,y0),并将由地址信息所表示的PE的坐标设置为(x1,y1)。
[0118] 当从相邻的PE或MCE输入包时(S1),输入/输出单元210将当前位置的Y坐标y0与地址信息的Y坐标y1进行比较(S2)。
[0119] 如果在S2中这两个Y坐标一致(S2:=),则将当前位置的X坐标x0与地址信息的X坐标x1进行比较(S3)。
[0120] 此外,如果y0大于y1(S2:>),则由于由地址信息所表示的PE位于与当前位置相比Y坐标较小的方向上,因此将包传送至在y0-1的方向上的相邻PE、即位于坐标(x0,y0-1)处的PE(S31),并且该处理完成(S5)。另一方面,如果y0小于y1(S2:<),则由于由地址信息所表示的PE位于与当前位置相比Y坐标较大的方向上,因此将包传送至在y0+1的方向上的相邻PE、即位于坐标(x0,y0+1)处的PE(S32),并且该处理完成(S5)。
[0121] 如果在S3中这两个X坐标一致(S3:=),则由于地址信息表示本PE,因此获得包并将该包输入至比较/选择单元230(S4),并且该处理完成(S5)。
[0122] 此外,如果x0大于x1(S3:>),则由于由地址信息所表示的PE位于与当前位置相比X坐标较小的方向上,因此将包传送至在x0-1的方向上的相邻PE、即位于坐标(x0-1,y0)处的PE(S41),并且该处理完成(S5)。另一方面,如果x0小于x1(S3:<),则由于由地址信息所表示的PE位于与当前位置相比X坐标较大的方向上,因此将包传送至在x0+1的方向上的相邻PE、即位于坐标(x0+1,y0)处的PE(S42),并且该处理完成(S5)。
[0123] 当各PE的输入/输出单元进行上述操作时,将各包传输至由地址信息所表示的PE并获得该包。例如,在图3中,如果从MCE301向着PE 101发出的包的地址信息表示PE115,则将该包经由PE 102、PE 103、PE 107和PE 111传输至PE 115。此外,例如,如果由PE
115处理后的新生成的包的地址信息表示PE 104,则将该包经由PE 114、PE 113、PE 112和PE 108传输至PE 104。
[0124] 即,各包在图3中首先垂直移动直到Y坐标与由地址信息所表示的PE的一致为止,然后在图3中平移动直到X坐标与由地址信息所表示的PE的一致为止。通过采用这种移动规则,包的移动路径总是最短。此外,在该移动期间方向改变1次或0次,并且可以对PE之间的通信通道500的使用频率进行平均。
[0125] 如上所述,在根据本发明实施例的数据处理设备中,尽管与执行代码相对应的PE如分片式处理器的情况下那样以矩阵方式配置,但与EDGE体系结构的大大不同之处在于要处理的包基于自身的位串而动态配置。
[0126] 本发明的数据处理设备不限于本发明的实施例所示的矩阵方式的配置和连接。例如,在图3中,通过省略PE之间的通信通道500的一部分,可以获得环形连接。此外,例如,所有的PE以及PE与MCE均直接相互连接。在这种情况下,在利用电线来传输电信号的情况下,PE或MCE的数量越大,布线变得越困难。另一方面,在上述的使用电磁波传输信息的情况下,可以容易地添加通信通道500。
[0127] 比较/选择单元230将输入/输出单元210所获得的包(以下称为获得包)中的能够处理的包输入至ALU 260。此外,比较/选择单元230将无法处理的包存储在缓冲存储器240中并读取缓冲存储器240中所存储的包(以下称为“存储包”)。
[0128] 更具体地,如果获得包中的要最先执行的(位于末尾的)指令是1输入/1输出指令,则比较/选择单元230仅将这些获得包经由操作数缓冲器205a或250b输入至ALU 260。
[0129] 另一方面,如果获得包中的要最先执行的(位于末尾的)指令是2输入/1输出指令,则比较/选择单元230在存储包中搜索上述掩码扩展识别信息与获得包的掩码扩展识别信息一致的包。如果存在一致的存储包,则比较/选择单元230允许一致的这两个包配成对并将这两个包经由操作数缓冲器250a和250b输入至ALU 260。此外,如果不存在一致的存储包,则比较/选择单元230将该获得包存储在缓冲存储器240中。
[0130] 为了高效地搜索掩码扩展识别信息与获得包的掩码扩展识别信息一致的存储包,在本发明的实施例中,缓冲存储器240包括散列表。此外,在比较/选择单元230中,散列值计算单元231根据获得包来计算散列值。与地址信息的情况相同,基于获得包的掩码扩展识别信息来计算散列值。然后,如果将该获得包存储在缓冲存储器240中,则比较/选择单元230将该获得包与散列值相关联以存储在散列表中。
[0131] 对于散列表,可以使用已知的实现方法。图11示出要在缓冲存储器240中实现的散列表的示例。在该散列表中,作为解决散列碰撞的方法,使用开放定址法(open addressing method),并且作为再散列过程,使用线性探查法(linear probing method)。
[0132] 在图11中,作为例子,示出如下的情况:在存储了散列值为n+3的包1之后,存储各自具有散列值n的包2~5。包1存储在根阵列[256]的元素n+3的位置处,并且设置标志“1”和计数值“1”。此外,包2~5分别存储在元素n、n+1、n+2和n+4的位置处,并且在元素n的位置处设置标志“1”和计数值“4”。
[0133] ALU 260对经由操作数缓冲器250a和250b所输入的操作数进行算术运算(整型运算和/或浮点运算)以及逻辑运算,并输出运算结果。更具体地,ALU 260对所输入的包的数据执行要最先执行的(位于末尾的)指令,通过将排除了所执行的指令的扩展识别信息添加至执行结果的数据来生成新的包,并将该新的包再次输入至输入/输出单元210。
[0134] 如上所述,各PE从所输入的包的扩展识别信息部分获取地址信息,仅获得包括表示本PE的地址信息的包,并将包括不表示本PE的地址信息的包传送至其它PE。然后,对获得包的数据执行要最先执行的(位于末尾的)指令,通过将不包括所执行的指令的扩展识别信息添加至执行结果的数据来生成新的包,并根据所生成的包的地址信息来传送或获得该所生成的包。
[0135] 代替各PE在每次将包输入至本PE时计算地址信息,可以通过将所计算出的地址信息添加至包来重复使用地址信息。例如,在MCE向PE发出包的情况以及PE生成新的包的情况下添加所计算出的地址信息,以使得在其它的情况下可以原样使用所添加的地址信息。在这种情况下,无需对添加有地址信息的包计算地址信息,并且添加至在各PE处所获得的包的地址信息是相同的,因而可以将该地址信息添加至数据部分或扩展识别信息部分。
[0136] 此外,在使用光传输信息的情况下,作为信息传输源的PE的发光元件可以通过发出具有针对由地址信息所表示的信息传输目的地的PE所设置的波长的光来将包直接传输至由地址信息所表示的PE,而无需重复传送。在这种情况下,各PE可以仅获得包括表示本PE的地址信息的包,而无需判断从其它PE或MCE所输入的包的地址信息是否表示本PE。
[0137] 此外,各PE新生成的包还配置成如下:发出具有针对作为由地址信息所表示的信息传输目的地的PE所设置的波长的光,而无需判断该地址信息是否表示PE。在这种情况下,包括与信息传输源的PE相同的PE的多个PE中的任意PE的光接收元件均可以接收该波长的光并将该包传输至由地址信息所表示的PE。
[0138] 数据处理设备的操作的具体示例
[0139] 这里,将参考图12来说明数据处理设备1针对图9所示的包P1~P5所进行的操作的具体示例。
[0140] 如上所述,对于包P1和P2,由于已计算出同一地址信息(x1,y1),因此将包P1和P2传输至位于坐标(x1,y1)的PE,并且执行位于末尾的加法指令I4。然后,将不包括加法指令I4的扩展识别信息添加至该执行结果的数据dp+0,并且生成新的包P6。假定根据包P6所计算出的地址信息是(x4,y4)。
[0141] 同样,对于包P3和P4,由于已计算出同一地址信息(x2,y2),因此将包P3和P4传输至位于坐标(x2,y2)的PE,并且执行位于末尾的加法指令I1。然后,将不包括加法指令I1的扩展识别信息添加至该执行结果的数据sp+0,并且生成新的包P7。假定根据包P7所计算出的地址信息是(x5,y5)。
[0142] 将包P7发送至位于坐标(x5,y5)的PE,并且执行位于末尾的读取指令I2(1输入/1输出指令)。然后,将不包括读取指令I2的扩展识别信息添加至该执行结果的数据*(sp+0),并且生成新的包P8。由于包P8的掩码扩展识别信息与包P5的掩码扩展识别信息相同,因此计算出与包P5的地址信息相同的地址信息(x3,y3)。
[0143] 将包P8和P5发送至位于坐标(x3,y3)的PE,并且执行位于末尾的除法指令I3。然后,将不包括除法指令I3的扩展识别信息添加至该执行结果的数据*(sp+0)/2,并且生成新的包P9。由于包P9的掩码扩展识别信息与包P6的掩码扩展识别信息相同,因此计算出与包P6的地址信息相同的地址信息(x4,y4)。
[0144] 将包P6和P9发送至位于坐标(x4,y4)的PE,并且执行位于末尾的写入指令I5。然后,将不包括写入指令I5的扩展识别信息添加至该执行结果的数据*(dp+0)=*(sp+0)/2,并生成新的包P10。
[0145] 由于包P10不包括处理指令,因此将包P10返回至由MCE ID所表示的MCE 301。为了将包P10返回至MCE 301,需要各PE的输入/输出单元执行特殊处理。在图12中,作为例子,地址信息计算单元211计算出不包括处理指令的包的地址信息作为(-1,m)。这里,假定MCE ID=m。在这种情况下,包P10的地址信息是(-1,1)。例如,在图3中,如果PE 115生成包P10,则将包P10经由PE 114、PE 113、PE 109、PE 105和PE 101发送至MCE301。
[0146] 此外,在各PE中,如果缓冲存储器或操作数缓冲器为满并且状态为无法处理获得包的忙,则优选将包返回至由MCE ID所表示的MCE。在这种情况下,在特殊处理中,例如,仅需将包的指令计数信息设置为比最大指令计数大的值并且还计算出这种包的地址信息作为(-1,m)。此外,在任意PE处于这种忙状态的情况下,各MCE优选停止发出新处理ID的包。为了对该忙状态进行控制,例如,仅需配置连接至所有的PE和MCE的控制信号线,并且经由控制信号线传输表示忙状态的忙信号。
[0147] 数据处理设备的操作的另一具体示例
[0148] 图7所示的包的结构可以在处理指令部分中仅包括多达5个指令。因而,为了进行更加复杂的处理,需要向包的处理指令部分添加指令。
[0149] 图5所示的指令添加指令(符号/十六进制记数:“app2L”/52H、“app2R”/53H)可以实现这种添加指令的添加功能。以下将适当参考图16~18来说明数据处理设备1的包括指令添加指令的执行的操作的具体例子。这里,作为例子,将说明如下的处理:将通过将阵列sp[1024]的各元素乘以4、将相乘得出的元素与1相加并将相加得出的元素除以2所获得的值存储在阵列dp[1024]中。
[0150] 图16示出与这种处理的for循环内的处理相对应的数据流图。
[0151] 在图16中,D11~D18表示数据,Ia表示指令添加指令,并且I11~I17表示除指令添加指令以外的指令。加法指令I16将数据D11(dp)和数据D12(ii)相加并输出数据dp+ii,而加法指令I11将数据D13(sp)和数据D14(ii)相加并输出数据sp+ii。
[0152] 数据D15是指令序列并且指令添加指令Ia将数据D15添加至数据sp+ii的包的处理指令部分。数据D15的指令序列与针对数据sp+ii的包的指令添加指令Ia及其之后指令的处理相对应,并且更具体地,与指令I12~I15以及I17相对应。
[0153] 在通过指令添加指令Ia所添加的指令中,首先,读取指令I12从存储装置6读取数据*(sp+ii)。
[0154] 随后,乘法指令I13将数据*(sp+ii)与数据D16(4)相乘并输出数据*(sp+ii)*4。
[0155] 随后,加法指令I14将数据D17(1)与数据*(sp+ii)*4相加并输出数据*(sp+ii)*4+1。
[0156] 随后,除法指令I15将数据*(sp+ii)*4+1除以数据D18(2)并输出数据[*(sp+ii)*4+1]/2。
[0157] 最后,写入指令I17将数据[*(sp+ii)*4+1]/2写入存储装置6的数据*(dp+ii)中。
[0158] 通过以上的数据流,将通过使阵列sp[1024]的1个元素乘以4、将相乘得出的元素与1相加并将相加得出的元素除以2所获得的值存储在阵列dp[1024]中。图17示出在对基于图16所示的数据流图所生成的基本包序列展开for循环之后的包序列中MCE ID=1且处理ID=1的最初的8个包P11~P18。
[0159] 这里,将参考图18来说明数据处理设备1的对图17所示的包P11~P18的操作的具体示例。
[0160] 对于包P11和P12,由于计算出同一地址信息,因此将包P11和P12传输至由该同一地址信息所表示的PE,并且执行位于末尾的加法指令I16。然后,将不包括加法指令I16的扩展识别信息添加至该执行结果的数据dp+0,并且生成新的包P19。
[0161] 同样,对于包P13和P14,由于计算出同一地址信息,因此将包P13和P14发送至由该同一地址信息所表示的PE,并且执行位于末尾的加法指令I11。然后,将不包括加法指令I11的扩展识别信息添加至该执行结果的数据sp+0,并且生成新的包P20。由于包P20的扩展识别信息与包P15的扩展识别信息相同,因此计算出与包P15的地址信息相同的地址信息。
[0162] 将包P20和P15传输至由同一地址信息所表示的PE,并且执行位于末尾的指令添加指令Ia。然后,将从处理指令部分去除了指令添加指令Ia并然后添加了数据D15的扩展识别信息添加至包P20的数据sp+0,并且生成新的包P21。
[0163] 将包P21传输至由所计算出的地址信息所表示的PE并且执行位于末尾的读取指令I12(1输入/1输出指令)。然后,将不包括读取指令I12的扩展识别信息添加至该执行结果的数据*(sp+0),并且生成新的包P22。由于包P22的掩码扩展识别信息与包P16的掩码扩展识别信息相同,因此计算出与包P16的地址信息相同的地址信息。
[0164] 将包P22和P16传输至由同一地址信息所表示的PE,并且执行位于末尾的乘法指令I13。然后,将不包括乘法指令I13的扩展识别信息添加至该执行结果的数据*(sp+0)*4,并且生成新的包P23。由于包P23的掩码扩展识别信息与包P17的掩码扩展识别信息相同,因此计算出与包P17的地址信息相同的地址信息。
[0165] 将包P23和P17传输至由同一地址信息所表示的PE,并且执行位于末尾的加法指令I14。然后,将不包括加法指令I14的扩展识别信息添加至该执行结果的数据*(sp+0)*4+1,并且生成新的包P24。由于包P24的掩码扩展识别信息与包P18的掩码扩展识别信息相同,因此计算出与包P18的地址信息相同的地址信息。
[0166] 将包P24和P18传输至由同一地址信息所表示的PE,并且执行位于末尾的除法指令I15。然后,将不包括除法指令I15的扩展识别信息添加至该执行结果的数据[*(sp+0)*4+1]/2,并且生成新的包P25。由于包P25的掩码扩展识别信息与包P19的掩码扩展识别信息相同,因此计算出与包P19的地址信息相同的地址信息。
[0167] 将包P19和P25传输至由同一地址信息所表示的PE,并且执行位于末尾的写入指令I17。然后,将不包括写入指令I17的扩展识别信息添加至该执行结果的数据*(dp+0)=[*(sp+0)*4+1]/2,并且生成新的包P26。由于包P26不包括处理指令,因此将包P26返回至由MCE ID所表示的MCE 301。
[0168] 通过执行写入指令I17,具体地,将包P25的数据[*(sp+0)*4+1]/2写入存储装置6的由包P19的数据dp+0所表示的地址中所存储的数据*(dp+0)。因此,包P26的数据*(dp+0)=[*(sp+0)*4+1]/2表示执行写入指令I17本身。因而,在执行写入指令I17之后,可以消除包P26而无需将其返回至MCE 301。
[0169] 如此,通过执行图5所示的指令添加指令,可以向包的处理指令部分添加指令。同样,通过执行图5所示的数据添加指令(符号/十六进制记数:“app1L”/50H、“app1R”/51H),还可以向包的数据部分添加数据。
[0170] 包的另一结构示例
[0171] 在图7中,示出了数据处理设备1所处理的包的结构,但包的结构不限于此。这里,图19示出数据处理设备1所处理的包的另一结构示例。图19示出可用于获得与图17所示的包P11~P18的执行结果相同的执行结果的包P31~P38。
[0172] 在图19中,扩展识别信息部分的结构与如图7所示的结构相同。然而,各PE在生成新的包时不从扩展识别信息部分去除已执行的指令。在这种情况下,应当最先执行的指令可能没配置在末尾,因而指令计数信息变为表示未处理指令的数量和应当最先执行的指令所必需的信息。
[0173] 另一方面,数据部分不仅包括数据本体,还包括数据的数据类型信息和扩展标志。此外,数据类型信息例如表示诸如“整数型”或“浮点型”等的数据类型,并且通过针对各数据类型预先设置数据长度,还可以实现数据长度信息的功能。此外,通过提供“指令型”作为数据类型,如后面将说明的,可以实现指令添加功能。图20示出包的结构中的数据流图,其中通过指令添加处理Pa而不使用指令添加指令Ia来实现指令添加功能。在指令添加处理Pa中使用扩展标志。
[0174] 此外,在图19中,包P31、P32以及P36~P38的数据本体和扩展识别信息部分与图17所示的包P11、P12以及P16~P18的数据本体和扩展识别信息部分一致。在所有这些包中,数据类型信息是“整数型”并且将扩展标志设置为“0”。
[0175] 包P33和P34是通过从包P13和P14去除指令添加指令IaL并将指令计数信息设置为“1”所获得的。此外,代替指令添加指令IaL,为了表示指令添加处理Pa中在处理指令部分中添加指令的一侧,将扩展标志设置为“1”。在所有这些包中,数据类型信息均是“整数型”。
[0176] 代替指令添加指令IaR,包P35包括与包P33和P34的处理指令相同的处理指令,并且为了表示指令添加处理Pa中要添加指令的一侧,将数据类型信息设置为“指令型”。然后,由于对于包P35的数据D15、不对与包P33和P34的处理指令相同的处理指令进行处理,因此将指令计数信息设置为“0”。在包P35中,将扩展标志设置为“0”。
[0177] 在图19中,针对各包,在由箭头所表示的范围内示出当计算地址信息时以及当将获得包与存储包进行比较时要使用的部分。例如,在包P31~P34以及P36~P38中,在识别信息部分和处理指令部分中仅提取由指令计数信息所表示的未处理指令,对作为要最先执行的指令的左右信息进行屏蔽,并且计算地址信息等。因此,在这些包中,与在生成新的包时从扩展识别信息部分去除已执行的指令的情况相同,计算地址信息等。
[0178] 然而,在数据类型信息是“指令型”的包P35以及将扩展标志设置为“1”的包中,如果指令计数信息为“0”,则基于整个扩展识别信息部分来计算地址信息等。
[0179] 这里,将参考图21来说明数据处理设备1对图19所示的包P31~P38的操作的具体示例。
[0180] 对于包P31和P32,由于计算出同一地址信息,因此将这两个包传输至由该同一地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的加法指令I16。然后,将通过从指令计数信息减去1所获得的扩展识别信息添加至该执行结果的数据dp+0,并且生成新的包P39。在包P39中,由于将指令计数信息设置为“1”,因此留着的相加指令I16不用于计算地址信息。
[0181] 同样,对于包P33和P34,由于计算出同一地址信息,因此将这两个包传输至由该同一地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的加法指令I11。然后,将通过从指令计数信息减去1所获得的扩展识别信息添加至该执行结果的数据sp+0,并且生成新的包P40。在包P40中,由于将扩展标志设置为“1”并将指令计数信息设置为“0”,因此基于整个扩展识别信息部分来计算出与包P35的地址信息相同的地址信息。
[0182] 将指令计数信息都为“0”的包P40和P35发送至由同一地址信息所表示的PE,并且执行指令添加处理Pa。此外,向扩展标志设置为“1”的包P40的数据sp+0添加如下的扩展识别信息,并且生成新的包P41,其中该扩展识别信息允许将数据类型信息是“指令型”的包P35的数据D15作为处理指令部分。
[0183] 包P41的指令计数信息具有数据D15中所包括的指令计数“5”。此外,包P41的扩展标志继承了包P35的扩展标志“0”。另一方面,通过将数据类型信息是“指令型”的包的扩展标志设置为“1”,还可以对通过指令添加处理新生成的包执行指令添加处理。
[0184] 将包P41传输至由所计算出的地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的读取指令I12(1输入/1输出指令)。然后,向该执行结果的数据*(sp+0)添加通过从指令计数信息减去1所获得的扩展识别信息,并且生成新的包P42。在包P42中,由于将指令计数信息设置为“4”,因此留着的读取指令I12不用于计算地址信息,并且计算出与包P36的地址信息相同的地址信息。
[0185] 将包P42和P36传输至由同一地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的乘法指令I13。然后,向该执行结果的数据*(sp+0)*4添加通过从指令计数信息减去1所获得的扩展识别信息,并且生成新的包P43。在包P43中,由于将指令计数信息设置为“3”,因此留着的乘法指令I13和读取指令I12不用于计算地址信息,并且计算出与包P37的地址信息相同的地址信息。
[0186] 将包P43和P37传输至由同一地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的加法指令I14。然后,向该执行结果的数据*(sp+0)*4+1添加通过从指令计数信息减去1所获得的扩展识别信息,并且生成新的包P44。在包P44中,由于将指令计数信息设置为“2”,因此留着的加法指令I14、乘法指令I13和读取指令I12不用于计算地址信息,并且计算出与包P38的地址信息相同的地址信息。
[0187] 将包P44和P38传输至由同一地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的除法指令I15。然后,向该执行结果的数据[*(sp+0)*4+1]/2添加通过从指令计数信息减去1所获得的扩展识别信息,并且生成新的包P45。在包P45中,由于将指令计数信息设置为“1”,因此留着的除法指令I15、加法指令I14、乘法指令I13和读取指令I12不用于计算地址信息,并且计算出与包P39的地址信息相同的地址信息。
[0188] 将包P39和P45传输至由同一地址信息所表示的PE,并且执行由指令计数信息所表示的要最先执行的写入指令I17。然后,向该执行结果的数据*(dp+0)=[*(sp+0)*4+1]/2添加通过从指令计数信息减去1所获得的扩展识别信息,并且生成新的包P46。在包P46中,数据类型信息不是“指令型”并且扩展标志未设置为“1”,而是指令计数信息设置为“0”。因此,包P46不包括要处理的处理指令,并且将包P46返回至由MCE ID所表示的MCE 301或者使包P46消失。
[0189] 如此,在不使用指令添加指令的情况下,可以通过执行指令添加处理Pa来向包的处理指令部分添加指令。此外,通过执行指令添加指令,可以向包的处理指令部分添加指令。
[0190] 如上所述,在数据处理设备1中,各MCE针对各数据生成添加有包括处理指令的扩展识别信息的包,由根据扩展识别信息确定的地址信息所表示的PE获得各包,要处理的包是通过PE正执行的包的指令基于其位串而配置的,并且可以通过基本原样使用现有软件资源来提高处理的平行度。
[0191] 此外,由于根据扩展识别信息来动态确定地址信息,因此要处理的包是基于其位串而动态配置的,并且可以进一步提高处理的平行度。
[0192] 此外,由于基于扩展识别信息来生成伪随机数并且根据伪随机数来计算地址信息,因此使包分布接近于均匀分布,并且可以提高PE的使用效率。
[0193] 此外,通过将地址信息不表示本PE的包传送至其它PE,可以将该包传输至由该地址信息所表示的PE。
[0194] 此外,各PE执行获得包中的要最先执行的指令,并将扩展识别信息中在已执行的指令之后的要执行的指令改变为要最先执行的指令,以使得可以通过向该执行结果的数据添加该扩展识别信息来生成新的包。
[0195] 此外,由于各PE执行获得包中的要最先执行的指令并从扩展识别信息去除已执行的指令,因此可以通过向该执行结果的数据添加该扩展识别信息来生成新的包。
[0196] 此外,如果存在掩码扩展识别信息与获得包一致的存储包,则将一致的这两个包配成对并将这两个包输入至ALU 206,而如果不存在一致的存储包,则将获得包存储在缓冲存储器240中,以使得可以执行用于进行二元运算的2输入/1输出指令。
[0197] 此外,如果获得包中的要最先执行的指令是1输入/1输出指令,则仅通过将获得包输入至ALU 260,就可以执行用于进行一元运算的1输入/1输出指令。
[0198] 此外,在获得包的扩展识别信息和存储包的扩展识别信息之间进行比较时,通过对要最先执行的指令的左右信息进行屏蔽,可以执行用于进行作为非交换运算的二元运算的2输入/1输出指令。
[0199] 此外,由于基于获得包的掩码扩展识别信息来计算散列值、并将该获得包与该散列值相关联并存储在散列表中,因此可以高效地搜索掩码扩展识别信息与获得包一致的存储包。
[0200] 此外,由于基于掩码扩展识别信息来生成伪随机数并根据伪随机数来计算地址信息,因此可以将包括相同的掩码扩展识别信息的包传输至PE并且可以提高PE的使用效率。
[0201] 此外,由于仅使彼此相邻的PE相连接,因此可以避免布线延迟的问题。
[0202] 此外,由于以与分片式处理器相同的矩阵方式配置PE、并且各PE将包传送至在接近由地址信息所表示的PE的方向上的相邻PE,因此包的传送路径可以最短,并且即使PE的数量增加也可以使操作速度保持高速。
[0203] 此外,由于各MCE根据存储装置6中所存储的可执行代码或中间代码来顺次生成包序列,因此可以构造解释器型处理系统。
[0204] 此外,由于将不包括要处理的处理指令的包返回至由MCE ID所表示的MCE,因此各MCE可以完成包的处理ID的处理并且可以重复使用处理ID。
[0205] 此外,由于包括数据处理设备1的数据处理系统配置成各MCE顺次生成包,因此可以提高解释器型并行计算机系统的处理的平行度。
[0206] 此外,如上所述,在图7或19所示的包的结构中,由根据扩展识别信息确定的地址信息所表示的PE获得各包;并且执行指令,以使得要处理的包是基于其位串而配置的;并且可以通过基本原样使用现有软件资源来提高处理的平行度。
[0207] 此外,由于将根据源程序P0预先生成的包序列作为可执行代码P2记录在记录介质中,因此在编译器型处理系统中可以使用该可执行代码P2。
[0208] 此外,由于将根据源程序P0预先生成的包序列作为可执行代码P2存储在存储装置6中,因此各MCE可以读取和使用该可执行代码P2。
[0209] 此外,由于将循环展开后的包序列中的识别信息部分的至少一部分被省略(变为空字符)的中间包序列记录在记录介质中,因此在中间包序列中设置了所省略的MCE ID和处理ID之后,在编译器型处理系统中可以使用这些中间包序列。
[0210] 此外,由于将展开后的循环包序列中的识别信息部分的至少一部分被省略(变为空字符)的中间包序列记录在存储装置6中,因此各MCE在设置了所省略的MCE ID和处理ID之后可以读取这些中间包序列并使用这些中间包序列。
[0211] 此外,由于包括数据处理设备1的数据处理系统配置成各MCE读取预先生成的包序列,因此可以提高编译器型并行计算机系统的处理的平行度。
[0212] 此外,如上所述,各PE获得在包括数据以及添加至该数据的包含处理指令的扩展识别信息的多个包中的、根据扩展识别信息所确定的地址信息表示本PE的包,并且PE执行指令,因而要处理的包是基于其位串而配置的,以使得可以在基本原样使用现有软件资源的情况下提高处理的平行度。
[0213] 此外,各PE可以通过将地址信息不表示本PE的包传送至其它PE来向由地址信息所表示的PE传输包。
[0214] 此外,各PE执行获得包中的要最先执行的指令,并通过向执行结果的数据添加使在已执行的指令之后要执行的指令改变为要最先执行的指令的扩展识别信息来生成新的包,以使得该新的包也可以动态配置并且可以执行该指令。
[0215] 本发明的上述实施例仅是为了便于理解本发明并且决不应当被解释为限制本发明。在不背离本发明精神的情况下可以进行各种改变或修改,并且本发明包含其等同物。
[0216] 附图标记说明
[0217] 1数据处理设备
[0218] 6存储装置
[0219] 7输入装置
[0220] 8输出装置
[0221] 9总线
[0222] 100~115 PE(处理元件)
[0223] 210输入/输出单元
[0224] 211地址信息计算单元
[0225] 212发光元件
[0226] 213光接收元件
[0227] 214a~214d输出端口
[0228] 215a~215d输入端口
[0229] 230比较/选择单元
[0230] 231散列值计算单元
[0231] 240缓冲存储器
[0232] 250a~250b操作数缓冲器
[0233] 260 ALU(算术逻辑单元)
[0234] 300~303 MCE(存储器控制元件)
[0235] 400高速缓冲存储器
[0236] 500通信通道(传输路径)
[0237] 501透射材料(纤芯)
[0238] 502反射材料(包层)
[0239] 503吸收材料
QQ群二维码
意见反馈