发明内容
本发明解决的问题
然而,在“分布式存储器类型”的并行处理体系结构中还存在若干问题。
第一个问题:对大数组的共享管理
“分布式存储器类型”的第一个问题是数据的共享管理问题。
不能在由一个处理器拥有的本地存储器内存储大量数据(因为数据一般为数组,这些数据在下文中被解释为数组)。大量数据不可避免地要接受多个本地存储器的共享管理。很明显,除非引入有效和灵活的共享管理机制,在开发并且执行程序时会出现各种困难。
第二个问题:处理器间通信的低效率
当分布式存储器类型系统的每个处理器试图访问大数组时,虽然处理器可以快速地访问由该处理器拥有的本地存储器上的数组元素,对于访问由其它处理器拥有的数组元素来说,处理器间的通信是不可缺少的。与和本地存储器的通信相比,这种处理器间的通信具有非常低的性能,并且需要至少100个时钟。因此,当执行排序时,由于执行对整个大数组的访问,并且频繁出现处理器间的通信,性能显著地下降。
将更具体地解释这个问题。在1999年,使用1到几个CPU,个人计算机被构造为“共享存储器类型”的计算机。用于这种个人计算机内的典型的CPU以大约5到6倍于存储器总线时钟的内部时钟运行,其内包括有自动并行执行功能和自动流水线处理功能,并且可以大约用一个时钟(存储器总线)处理一个数据。
因此,在“分布式存储器类型”的多处理器系统内,因为处理器数目多,处理速度比单个处理器(共享存储器类型)低一百倍。
第三个问题:程序提供
“分布式存储器类型”的第三个问题是如何将程序提供给大量的处理器的问题。
在用于将单独的程序装载到数目非常多的处理器内,以便使所有处理器协同运行的系统中(MIMD:多指令流多数据流),创建、汇编和分发程序需要大量的装载。
在另一方面,在用于使大量处理器以相同程序运行的系统内(SIMD:单指令流多数据流),程序的自由程度下降了,并且可以预见不能开发出产生所希望的结果的程序的情况。
因此,鉴于传统的分布式存储器类型的并行体系结构的问题,本发明的目的是提供一种信息处理方法,该方法能够在将大量数据保持在单独处理器内的同时实现对大量数据排序和制表,而不用在处理器之间共享大量数据,以便尽可能多地减少处理器间的通信。
本发明的另一个目的是提供一种信息处理系统内的信息处理方法,在该信息处理系统内分别具有存储着有序值列表的存储器的多个处理模块被逻辑地连接为环形,该方法给为各个处理模块单独排序的值分配在多个处理模块之间共用的顺序号,以便实现高速制表处理。
此外,本发明的目的是提供一种实现该信息处理方法的信息处理系统。
本发明的另一个目的是提供一种由计算机执行的用于实现该信息处理方法的程序。
用于解决该问题的手段
本发明采用分布式存储器类型的并行处理体系结构,其中在单独处理器模块内本地地存储作为表格式数据的基本元素的值列表和指针数组,而不是数据本身,在多个处理模块之间全局地存储数据的顺序号(或顺序)的索引。本发明还采用这样的算法,其中处理和通信被集成到输入和输出内,并且根据单个命令处理存储在各种存储器内的数据。
通过一种对存储在信息处理系统内的多个处理模块内的项目值进行制表的信息处理方法实现本发明的目的,在该信息处理系统内,多个处理模块被逻辑地连接为环形,并且每个处理模块包括以值列表和指针数组的形式存储表格式数据的存储器,所述表格式数据表示包括相应于信息项目的项目值的记录的数组,在所述值列表内,项目值被以相应于该项目值的项目值号的顺序存储,并且在所述指针数组内用于指定项目值号的信息被以记录的顺序存储,该信息处理方法包括:
在每个处理模块内,在所述存储器内存储被唯一地分配给所述多个处理模块中的处理模块中的记录的全局记录号,和按所述多个处理模块中的处理模块中的项目值排序的全局项目值号的步骤;
在每个处理模块内,在所述处理模块内,按根据至少一个或多个指定的项目的全局项目值号组确定的顺序对所述记录排序的步骤;
在每个处理模块内,在所述存储器内存储相应于所述记录的全局项目值号组的步骤,所述全局项目值号组与表示所述在所述全局项目值号组中排序的记录的顺序的维度值号相关联;
在每个处理模块内,从其它处理模块相互获取全局项目值号组,对顺序高于所述处理模块内的全局项目值号组的全局项目值号组的数目计数,并且通过以计数的数目增加该处理模块内的全局项目值号组的维度值号,给所述全局项目值号组分配在所述多个处理模块间共用的全局维度值号的步骤;
在每个处理模块内,为每个全局项目值号组,通过根据预定的规则对信息的预定项目的项目值制表,计算本地制表值的步骤;
在每个处理模块内,从其它处理模块获取每个全局项目值号组的本地制表值,并且通过对为每个全局项目值号组获取的制表值进行制表计算制表值的步骤。
根据本发明,在将接受共享管理的表格式数据的值列表和指针数组保持在各个处理模块内的同时,根据每个处理模块内的排序处理,用于分配全局维度值号的处理,本地制表处理和制表结果的本地制表,可以高速地对整个表格式数据执行制表。
根据优选实施例,该信息处理方法,在所述计算制表值的步骤之后,还包括在每个处理模块内,从所述全局项目值号组恢复一组项目值,并且创建包括该组项目值以及相应于该组项目值的制表值的结果表的步骤。因此,由于以表的形式保持制表结果,可以将该制表结果用于另外的制表。
此外,通过执行该信息处理方法的信息处理系统实现本发明的目的。本发明的信息处理系统是这样的系统,其中多个处理模块逻辑地连接成环形,并且每个处理模块包括以值列表和指针数组的形式存储表格式数据的存储器,所述表格式数据表示包括相应于信息项目的项目值的记录的数组,在所述值列表中,按相应于项目值的项目值号的顺序存储项目值,在所述指针数组中,按所述记录的顺序存储用于指定所述项目值号的信息,其中
每个处理模块在所述存储器内存储被唯一地分配给所述多个处理模块中的处理模块中的记录的全局记录号和按所述多个处理模块中的处理模块中的项目值排序的全局项目值号;
每个处理模块包括:
本地排序装置,用于在所述处理模块内,按根据至少一个或多个指定的项目的全局项目值号组确定的顺序对所述记录排序;
维度值编号装置,用于在所述存储器内存储相应于所述记录的全局项目值号组,所述全局项目值号组按所述在所述全局项目值号组中的排序的记录的顺序与维度值号相关联;
全局维度值编号装置,用于从其它处理模块相互获取全局项目值号组,对顺序高于所述处理模块内的全局项目值号组的全局项目值号组的数目计数,并且通过以计数的数目增加该处理模块内的全局项目值组的维度值号,给所述全局项目值号组分配在所述多个处理模块间共用的全局维度值号;
制表装置,用于为每个全局项目值号组,通过根据预定的规则对信息的预定项目的项目值制表,计算本地制表值;和
全局制表装置,用于从其它处理模块获取每个全局项目值号组的本地制表值,并且通过对为每个全局项目值号组获取的制表值进行制表计算制表值。
根据本发明的优选实施例,在该信息处理系统内,每个处理模块还包括用于从所述全局项目值号组中恢复一组项目值,并且创建包括该组项目值以及相应于该组项目值的制表值的结果表的装置,该装置被连接到所述全局制表装置。
通过一种程序实现本发明的目的,该程序用于使得信息处理系统内的处理模块的计算机执行下面的步骤,在所述信息处理系统内,多个处理模块逻辑地连接为环形,并且每个处理模块包括以值列表和指针数组的形式存储表格式数据的存储器,所述表格式数据表示包括相应于信息项目的项目值的记录的数组,在所述值列表中,按相应于项目值的项目值号的顺序存储项目值,在所述指针数组中,按所述记录的顺序存储用于指定所述项目值号的信息,所述步骤包括:
在存储器内存储被唯一地分配给所述多个处理模块中的处理模块中的记录的全局记录号和按所述多个处理模块中的处理模块中的项目值排序的全局项目值号的步骤;
在所述处理模块内,按根据至少一个或多个指定的项目的全局项目值号组设置的顺序对所述记录排序的步骤;
在所述存储器内存储相应于所述记录的全局项目值号组的步骤,所述全局项目值号组与表示所述在所述全局项目值号组中的排序的记录的顺序的维度值号相关联;
从其它处理模块相互获取全局项目值号组,对顺序高于所述处理模块内的全局项目值号组的全局项目值号组的数目计数,并且通过以计数的数目增加该处理模块内的全局项目值号组的维度值号,给所述全局项目值号组分配在所述多个处理模块间共用的全局维度值号的步骤;
为每个全局项目值号组,通过根据预定的规则对信息的预定项目的项目值制表,计算本地制表值的步骤;和
在每个处理模块内,从其它处理模块获取每个全局项目值号组的本地制表值,并且通过对为每个全局项目值号组获取的制表值进行制表计算制表值的步骤。
在优选实施例中,在所述计算制表值的步骤之后,该程序还包括使得所述处理模块的计算机执行从所述全局项目值号组恢复一组项目值,并且创建包括该组项目值以及相应于该组项目值的制表值的结果表的步骤。
通过一种信息处理方法实现本发明的另一个目的,该信息处理方法用于给在信息处理系统中的每个处理模块内单独排序的值分配在多个处理模块间共用的顺序号,在所述信息处理系统内,多个分别具有存储着排序值列表的存储器的处理模块被逻辑地连接为环形,该信息处理方法包括:
在每个处理模块内,在所述存储器内存储相应于所述处理模块内的所述值列表中的各个值的顺序号的初始值的步骤;
在每个处理模块内,将存储在该处理模块的存储器内的值列表传输到被逻辑地连接到下一级的处理模块的第一传输步骤;
在每个处理模块内,对于所述处理模块内的值列表的各个值,对顺序高于从被逻辑地连接到前一级的处理模块接收的值列表内的各个值的值的数目计数,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表中的各个值的顺序号,并且将更新的顺序号存储在所述存储器内的第一更新步骤;
在每个处理模块内,将另一个值列表传输到被逻辑地连接到下一级的处理模块的第二传输步骤,通过从接收自被逻辑地连接到前一级的处理模块的值列表的值中排除与该处理模块内的值列表中的值相符的值获得所述另一个值列表;
在每个处理模块内,对于所述处理模块内的值列表中的各个值,对顺序高于从被逻辑地连接到前一级的处理模块接收的所述另一个值列表内的各个值的值的数目计数,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表中的各个值的顺序号,并且将更新的顺序号存储在所述存储器内的第二更新步骤;和
在每个处理模块内,重复执行第二传输步骤和第二更新步骤,直到被逻辑地连接到前一级的处理模块通过被逻辑地连接为环形的其它处理模块接收到在第一传输步骤中传输到被逻辑地连接到下一级的处理模块的值列表为止的步骤。
通过一种执行信息处理方法的信息处理系统实现本发明的另一个目的。根据本发明的该信息处理系统包括分别具有存储着排序值列表的存储器的多个处理模块,以及将所述多个处理模块逻辑地连接为环形的传输路径,该信息处理系统给每个处理模块内的值列表内的值分配在多个处理模块间共用的顺序号,其中
每个处理模块包括:
初始化装置,用于在所述存储器内存储所述处理模块内的值列表内的各个值的顺序号的初始值,并且将存储在该处理模块的存储器内的值列表传输到被逻辑地连接到下一级的处理模块;
接收装置,用于从被逻辑地连接到前一级的处理模块接收值列表;
更新装置,用于对于所述处理模块内的值列表中的各个值,对顺序高于由所述接收装置接收的值列表内的各个值的值的数目计数,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表中的各个值的顺序号,并且在所述存储器内存储更新的顺序号;
传输装置,用于将另一个值列表传输到被逻辑地连接到下一级的处理模块,通过从所述接收装置接收的值列表中的值中排除与该处理模块内的值列表中的值相符的值获得所述另一个值列表;和
控制装置,用于启动所述初始化装置,并且使得所述接收装置、更新装置和传输装置重复操作,直到被逻辑地连接到前一级的处理模块通过被逻辑地连接为环形的其它处理模块接收到由所述初始化装置传输的值列表为止。
此外,通过一种程序实现本发明的另一个目的,该程序用于使得计算机执行信息处理系统内的信息处理方法,在所述信息处理系统内,多个分别具有存储着排序值列表的存储器的处理模块被逻辑地连接为环形。该程序使得处理模块的计算机执行:
在所述存储器内存储所述处理模块内的值列表中的各个值的顺序号的初始值的步骤;
将存储在该处理模块的存储器内的值列表传输到被逻辑地连接到下一级的处理模块的第一传输步骤;
对于所述处理模块内的值列表中的各个值,对顺序高于从被逻辑地连接到前一级的处理模块接收的值列表内的各个值的值的数目计数,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表中的各个值的顺序号,并且将更新的顺序号存储在所述存储器内的第一更新步骤;
将另一个值列表传输到被逻辑地连接到下一级的处理模块的第二传输步骤,通过从接收到的值列表的值中排除与该处理模块内的值列表中的值相符的值获得所述另一个值列表;
对于所述处理模块内的值列表中的各个值,对顺序高于接收自被逻辑地连接到前一级的处理模块的所述另一个值列表内的各个值的值的数目计数,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表中的各个值的顺序号,并且将更新的顺序号存储在所述存储器内的第二更新步骤;和
重复执行第二传输步骤和第二更新步骤,直到被逻辑地连接到前一级的处理模块通过被逻辑地连接为环形的其它处理模块接收到在第一传输步骤中传输到被逻辑地连接到下一级的处理模块的值列表为止的步骤。
本发明的优点
根据本发明,可以提供一种信息处理方法和信息处理系统,基于分布式存储器类型的并行处理体系结构,通过采用新的数据结构和新的并行处理算法,该信息处理方法和信息处理系统能够实现极快速的并行处理。
具体实施方式
[硬件配置]
下面将参考附图解释本发明的实施例。图3是示意性地示出了根据本发明的实施例的信息处理系统的方框图。在该实施例中,由带有处理器的存储器模块构成处理模块(下面被称为“PMM”)。如图3所示,在该实施例中,为了以环形逻辑地连接多个处理模块,带有处理器的多个存储器模块PMM32-0、PMM32-1、PMM32-2等被布置为环形。用于顺时针传输数据的第一总线(见,例如,参考号34-0和34-1)和用于逆时针传输数据的第二总线(见,例如,参考号36-0和36-1)连接相邻的存储器模块。在第一和第二总线中,执行PMM间的包通信。在该实施例中,传输路径-通过该传输路径执行该包通信(包传输路径)-被称为第一和第二总线。
在该实施例中,在一方面,PMM被用于顺时针传输包的第一总线连接为环形(第一传输路径),并且在另一方面,被用于逆时针传输包的第二总线连接为环形(第二传输路径)。这种构造是有利的,因为可以使得包传输的延迟时间等一致。
处理模块间的物理连接形式不限于该实施例中表示出的形式。可以采用任何形式,只要可以将处理模块逻辑地连接为环形即可。例如,可以采用诸如总线类型和星型的各种连接形式。
图4是示出了PMM32的结构的例子的图。如图4所示,每个PMM32-I包括根据PMM共用的命令,控制对存储器的访问、算数操作的执行等的控制电路40,总线接口(I/F)42和存储器44。
存储器44具有多个体BANK0,1,...,和n(参考号46-0,...,46-n),并且可以在每个体内存储后面描述的预定的数组。
控制电路40能够与外部的其它计算机等交换数据。所述其它计算机能够根据总线仲裁访问存储器的所希望的体。
[制表处理的目的]
在本实施例中制表的含意是,例如,针对某个项目(维度)的每个确定的项目值(维度值),对被表示为包括相应于信息项目的项目值的记录数组的表格式数据中的另一个项目的项目值(测量)制表。测量的制表的含意是对测量的数目计数、计算测量的总和、以及计算测量的平均值。维度的数目可以是2或更多。例如,图5是某个幼儿园内的幼儿的性别、年龄和身高的逻辑表格式数据。用于按性别和年龄计算身高总值的处理是这个实施例中的制表处理。
[传统的数据存储结构]
通过使用国际公开号WO00/10103中提出的数据管理机制,将图5中示出的表格式数据作为图6中示出的数据结构存储在单个计算机内。
如图6中所示,在关联表格式数据的各个记录的排列顺序号和内部数据的排列顺序号的数组601(此后被缩写为“OrdSet”)中,内部数据的排列顺序号被布置为针对表格式的每一个记录的值。该例子中,由于所有的表格式数据被表示为内部数据,表格式数据的记录号和内部数据的排列顺序号彼此相符。
例如,对于性别,从数组OrdSet601中可见,相应于表格式数据的记录0的内部数据的排列顺序号为“0”。通过访问指向通过根据预定顺序对实际值排序而获得的值列表603(此后缩写为“VL”)的指针布置602(此后缩写为“VNo”),可以获取关于带有排列顺序号“0”的记录的性别的实际值,即,“男”或“女”。在指针数组602内,指示实际值列表603内的元素的指针被按照存储在数组OrdSet601内的排列顺序号的顺序存储。因此,可以通过(1)从数组OrdSet601中提取相应于记录“0”的排列顺序号“0”,(2)从指向值列表的指针数组602中提取相应于排列顺序号“0”的元素“1”,和(3)从值列表603中提取由从指向值列表的指针数组602中提取的元素“1”指示的元素“女”,获取相应于表格式数据的记录“0”的性别的项目值。
还可以用相同的方式获得关于其它记录的并且与年龄和身高相关的项目值。
以这种方式,由值列表VL和指向该值列表的指针数组VNo的组合表示表格式数据。该组合被具体地称为“信息块”。在图6中,关于性别、年龄和身高的信息块分别被指示为信息块608、609和610。
如果单个计算机具有单个存储器(可以是物理地提供的多个存储器,但是就存储器被布置在单个地址空间内并且被在单个地址空间内访问而言,该存储器是单个存储器),仅需将构成各个信息块的顺序组的数组OrdSet和值列表VL以及指针数组VNo存储在该存储器内。为了保持大量的记录,因为存储器容量也根据存储器的大小而增加,希望分布式地布置数组OrdSet、值列表VL以及指针数组VNo。从处理的并行的角度看,还希望可以共享和掌握分布式布置的信息。
因此,在本实施例中,多个PMM共享和掌握记录数据而不用彼此重叠,并且通过PMM间的包通信实现高速制表。
[根据本实施例的数据存储结构]
图7是用于解释根据本实施例的数据存储结构的图。在该图中,作为例子,在4个处理模块PMM-0,PMM-1,PMM-2,PMM-3内分布式地布置并共享和掌握由图5和6指示的表格式数据。为了方便解释,处理模块的数目为4。然而,本发明不受处理模块的数目的限制。
在本实施例中,为了可以唯一地对由4个PMM即PMM-0到PMM-3掌握的所有记录中的由每个PMM共享和掌握的记录进行排序,给每个记录唯一地分配一个全局记录号。在图7中,以“GOrd”表示全局记录号。该全局记录号GOrd指示每个PMM内的数组OrdSet的每个元素位于所有记录内的哪个位置。数组OrdSet被设置为是从整个数据到每个PMM的内部的顺序存储映射。因此,GOrd可以是升序的。在每个PMM内,GOrd数组(=全局顺序组数组)的大小与OrdSet数组(顺序组数组)的大小相符。
此外,在该实施例中,提供了全局项目值号,用于指示由每个PMM共享和掌握的每个项目值,即,值列表VL内的每个值放置在由所有PMM掌握的项目值中的位置。在图7中,该全局项目值号被指示为“GVNo”。因为值列表VL内的值以该值的顺序布置(例如,升序或降序),全局项目值号GVNo也以升序(或降序)设置。数组GVNo的大小与数组VL的大小相符。通过指出由每个处理模块单独掌握的项目值在所有项目值内处于哪个位置,可以将每个处理模块内的制表结果综合到作为整体的一个结果内。
在图7中,分配给每个PMM的值OFFSET是一个偏移值,用于指示接受该PMM的共享控制的顶部记录相应于图6中示出的完整的记录内的哪个记录。如上所述,每个PMM的数组OrdSet被设置为是从整个数据到每个PMM的内部的顺序存储映射。因此,通过叠加该偏移值OFFSET和该PMM内的数组OrdSet的元素的值而获得的值与全局记录号GOrd相符。优选地,将该偏移值通知给每个PMM,并且每个PMM可以基于该偏移值OFFSET确定全局记录号。
可以事先在每个PMM之外计算每个PMM的全局记录号GOrd和全局项目值号CVNo并且在每个PMM内进行设置。然而,每个PMM自身能够根据后面所述的汇编处理设置全局记录号GOrd和全局项目值号CVNo。
[制表处理]
将解释根据该实施例的制表处理。这样构造根据该实施例的制表算法,从而可以在所有处理模块内执行相同的处理。该制表算法还被这样构造,从而通过给多个处理模块分配单个制表处理指令,多个处理模块可以并行操作和执行制表处理。因为所有处理模块执行相同的操作,可以通过创建一个程序简单地实现并行处理。
本实施例中的制表算法给用于制表的维度值分配在所有处理模块间共用的全局维度值号,在每个处理模块内对每个维度值号的测量制表,并且最后对所述测量全局地,即,在所有处理模块间共同地制表。因此,根据本实施例的制表算法,在每个处理模块内本地地保持值列表和指向值列表的指针数组。根据该制表算法,不在多个处理模块之间共同保持值列表和指针数组,而是在多个处理模块之间全局地保持一个索引,即,维度值的顺序。结果,防止多个处理模块彼此访问存储器以获取制表所需的数据,并且仅在处理模块之间传递确定维度值的顺序所需的数据。因此,减少了通信量,并且实现了处理提速。
图8是根据本发明的制表处理的流程图。如图8所示,首先,准备接受各个处理模块的共享管理的表格式数据(步骤801)。更具体地,每个处理模块在存储器内存储唯一地分配给多个处理模块中的处理模块内的记录的全局记录号,以及根据多个处理模块中的处理模块内的项目值排序的全局项目值号。
每个处理模块在该处理模块内按照指定项目的一个或多个维度的一组全局项目号的号码顺序对记录排序(步骤802)。
此外,通过以排序的记录的顺序分配维度值号,每个处理模块在存储器内存储相应于所述记录的全局项目值号组(步骤803)。
每个处理模块从其它处理模块相互获取全局项目值号组,对排序高于该处理模块内的该组全局项目值号的组的数目计数,并且通过以计数的数目增加该处理模块内的该组全局项目值号的维度值号,给该组全局项目值号分配在多个处理模块之间共用的全局维度值号(步骤804)。
随后,通过根据预定规则对预定信息的项目的项目值制表,每个处理模块为每组全局项目值号计算本地制表值(步骤805)。
最后,每个处理模块从其它处理模块获取每组全局项目值号的本地制表值,并且通过对获取的每组全局项目值号的制表值制表,计算制表值(步骤806)。
在步骤806的制表值计算之后,每个处理模块可以从全局项目值号组中恢复项目值组,并且创建包括项目值组和相应于该项目值组的制表值的结果表(步骤807)。因为以表的形式保持该结果,通过进一步对该表制表可以容易地获得关于另一维度的制表。例如,从根据性别和年龄而获得的制表结果,可以容易地创建性别的制表结果。
将基于图5中示出的表格式数据,更详细地解释根据本实施例的制表处理。例如,当图5中所示的表格式数据接受多个处理模块的共享管理以便执行上述的步骤801时,获得图7中所示的数据的存储结构。
对图7中示出的数据应用“根据性别和年龄计算身高的总值”的制表处理。性别和年龄是维度,并且身高是测量。
在步骤802,对于图7中示出的数据,在每个处理模块内,即,每个本地环境中,存储关于两个维度,即,维度“年龄”和维度“性别”的每个本地环境的记录。当在两个或更多维度中执行排序时,逐级地按适当的维度的顺序执行排序。一般地,由于当项目值种类数目较大时,跟随该排序发生的置换更频繁。因此,按从具有最大项目值种类数的维度开始对维度排序更有效。在该例子中,当对性别和年龄进行比较时,由于年龄的项目值种类数(包括一岁,二岁和三岁的3种)大于性别的项目值的种类数(包括男和女的2种),按年龄和性别的顺序执行排序。
在该实施例中,本地环境下的排序等同于置换排列顺序号的数组OrdSet的元素的顺序。例如,假设初始阶段的排列顺序号的数组的元素是0(即,记录0),1(即,记录1),和2(即,记录2),并且记录0的年龄值为3岁,记录1的年龄值为1岁,并且记录2的年龄值为2岁。当按从具有最小年龄的一个记录开始的顺序布置记录时,以记录1,记录2和记录3的顺序布置记录。通过以1,2,0的顺序替换排列顺序号数组表示此时的排序结果。对于后面的处理,该本地排序之后的顺序被设置在排列顺序号数组OrdSet内。
图9是在每个处理模块内通过对图7中所示的数据顺序地应用按照年龄排序和按照性别排序获得的结果。在图9中,为了简化说明,未示出关于身高的信息块。以从具有最小年龄的记录开始的顺序执行按年龄排序,并且按男和女的顺序执行按性别排序。根据该本地排序,PMM-0中的记录被按照记录1(男,1岁,82cm),记录2(女,2岁,69cm)和记录0(女,3岁,78cm)的顺序排序,PMM-1中的记录被按照记录1(男,3岁,91cm),记录0(女,1岁,82cm)的顺序排序,PMM-2中的记录被按照记录0(女,1岁,76cm),记录1(女,1岁,78cm)和记录2(女,2岁,84cm)的顺序排序,并且PMM-3中的记录被按照记录0(男,3岁,87cm),记录1(女,3岁,80cm)的顺序排序。后面将描述该本地排序。
在步骤803,每个处理模块按本地排序的记录的顺序(即,置换之后的排列顺序号的数组OrdSet的元素的顺序)给所选择的维度(在该例子中,性别和年龄)的项目值号的组分配顺序号。图10是用于解释该例子中的顺序号分配的图。为了简化说明,忽略了关于身高的信息块。
解释关于PMM-0的记录1,性别的值号是“0”,并且相应于值号“0”的全局项目值号是“0”。年龄的值号是“0”,并且相应于年龄的值号“0”的全局项目值号为“0”。因此,相应于PMM-1内的记录1的项目值号组是(0,0),并且按本地排序的记录的顺序将顺序号分配给该(0,0)。通过给予性别的全局项目值号和年龄的全局项目值号相同的顺序号“0”,可以内部地实现给项目值号的组分配顺序号。在该例子中,由于PMM-0中的记录1是本地排序的第一个记录,将顺序号“0”分配给相应于它的项目值号组(0,0)。因为PMM-0中的记录以记录1,记录2和记录0的顺序排序,将顺序号“1”给予相应于记录2的全局项目值号组(1,1),并且将顺序号“2”给予相应于记录0的全局项目值号组(1,2)。
因为顺序号被设置为与记录相关联,当在PMM中存在具有相同维度值的两个或多个记录时,将不同的顺序号分配给这些记录。例如,在图10中,PMM-2中的记录0和记录1内的性别都是女,并且年龄都是1岁。因此,记录0和记录1内的全局项目值号组都是(0,1)。当对一个对象进行检索或排序时,即使全局值号的组相同,也必须单独处理不同记录。例如,通过组合使用全局值号的组和全局记录号GOrd,可以分别对待所有记录。然而,当如该例子中对一个对象制表时,将具有相同的全局项目值号组的记录,即,具有相同维度值的记录,视为相同维度是方便的。因此,在本实施例中,重新分配顺序号,从而将相同的号码分配给具有相同的全局项目值号组的记录。此后将以这种方式重新分配的顺序号称为本地维度值号LDimNo。本地维度值号是仅在全局项目值号组不同时一个接一个增加的号码。图11是用于解释这种本地维度值号的分配的图。在该例子中,在PMM-0,PMM-1和PMM-3中顺序号和本地维度值号是相同的。然而,在PMM-2中,按照排序的记录的顺序,本地维度值号是“0”,“0”和“1”。
在步骤804,通过将分配给全局项目值号组的本地维度值号LdimNo转换为在多个处理模块之间共用的全局维度值号GDimNo,每个处理模块对维度值进行全局排序。当对维度值进行全局排序时,如后面所述,通过在每个处理模块内执行针对每个维度值的制表,并且然后综合制表结果,可以获得总的制表结果。
图12是用于解释全局维度值号的分配的图。分配全局维度值号的含义是在多个处理模块之间共同给在每个处理模块内排序的全局项目值号排序。因此,每个处理模块获取全局维度值号GDimNo的区域,并且根据本地维度值号LdimNo创建全局维度值号GDimNo的初始值。为分配了相同的本地维度值号LdimNo的记录仅获取一个全局维度值号GDimNo的区域。因此,同时创建全局维度值号GDimNo到本地维度值号LdimNo的对应关系的对应表GdimPos。
每个处理模块从其它处理模块互相获取全局项目值号组,对顺序高于该处理模块内的全局项目值号组的组的数目计数,并且通过以计数的数目增加该处理模块内的该组全局项目值号的全局维度值号,给全局项目值号组分配在多个处理模块之间共用的全局维度值号。在这种方式中,需要给在各个处理模块内单独排序的值,即,本地维度值号,分配在多个处理模块之间共用的顺序号,即,全局维度值号的方法,以便排除相同值的重叠,以便防止将不同的全局维度值号分配给相同的值。后面将描述该顺序号分配方法。
图13是一个表,其中汇编有根据图12中的例子的处理模块PMM-0到PMM-3中的本地维度值号LdimNo,性别的全局项目值号GVNo1,年龄的全局项目值号GVNo2和全局维度值号GDimNo。如从该图可见,以将性别的全局项目值号GVNo1设置为高位的数字,并且将年龄的全局项目值号GVNo2设置为低位的数字时的全局项目值号GDimNo的组的号码的顺序,将号码0,1,2和4被分配给全局维度值号GDimNo。
在步骤805,在各个处理模块内,每个处理模块对每组全局项目值号的项目值,即,对每个全局维度值号制表。在该例子中,在PMM-0到PMM-3中,在每个模块内按性别和年龄对身高值进行总计。
图14和15是用于解释在每个处理模块内对每个全局维度值号的项目值制表的处理的图。首先,如图14所示,创建与全局维度值号GDimNo具有相同大小的数组GMsr作为用于存储测量的区域。在该例子中,由于对身高的总计制表,创建浮点、整数或类似的存储区域。随后,如图15所示,在每个处理模块内,例如,以按全局维度值号组的顺序置换的数组OrdSet的元素的顺序提取将要制表的项目值。在测量数组GMsr内对这些项目值制表。
例如,在PMM-0内,由于可见排列顺序号数组OrdSet的顶部的元素是No.“1”(即,记录1),访问指向身高信息块内的值列表的指针数组VNo的索引“1”的内容。由于值“2”存储在该指针数组内,通过获取值列表VL的索引“2”的内容,获得关于PMM-0的记录0的身高值“82”。值“82”是将要在测量数组GMsr内制表的值。在该例子中,由于制表值是总计值,对这个值“82”进行累加。
需要指出该值“82”将被增加到测量数组GMsr的哪个元素,即,测量数组GMsr的索引。如上所述,因为本地维度值号LdimNo数组按全局维度值号组的顺序布置,排列顺序号数组OrdSet和本地维度值号数组LdimNo的元素的布置顺序-即,索引,彼此相应。因此,仅需在由数组LdimNo的顶部指示的测量数组GMsr的存储区域内对关于数组OrdSet的顶部的测量制表。在图15的例子中,因为相应于数组OrdSet的顶部的数组LdimNo的顶部的元素是“0”,将值“82”累加到测量数组GMsr的索引“0”指示的位置。
类似地,对于PMM-1,PMM-2和PMM-3,获取数组OrdSet的顶部的元素的身高值“91”,“76”和“87”,并且在测量数组GMsr的顶部的区域内制表。对于PMM-0到PMM-3,为数组OrdSet的第二个和后续的元素以相同的方式获取项目值并在测量数组GMsr内制表。
在PMM-2中,由于数组OrdSet的顶部元素“0”和第二个元素“1”的本地维度值号LdimNo都是“0”,相应于它的身高值“76”和“78”两者都被在测量数组GMsr的顶部区域内制表。因此,数组GMsr的顶部的制表结果是76+78=154。
随后,在步骤806,每个处理模块从其它处理模块获取每个全局项目值号组的本地制表值,并且通过为每组全局项目值号对获取的制表值进行制表计算一个制表值。根据处理模块之间的物理传输路径的构成,可以用,例如,两种方法实现该全局制表。
在第一种全局制表方法中,每个处理模块向其它处理模块传输一组全局维度值号GDimNo和结合该全局维度值号GDimNo制表的测量GMsr。当可以获得处理模块之间的多个传输路径时,该方法适用。图16是由于解释第一种全局制表方法的图。4个处理模块PMM-0(参考号1600),PMM-1(参考号1601),PMM-2(参考号1602)和PMM-3(参考号1603)通过由参考号1604表示的传输路径连接为整体。
例如,处理模块PMM-0向其它处理模块PMM-1,PMM-2和PMM-3传输3组全局维度值号GDimNo和测量GSMsr,即,(0,82),(3,69)和(4,78),作为图15中示出的本地环境下的制表结果。处理模块PMM-0通过传输路径1604接收从处理模块PMM-1传输的2个组(1,91)和(2,82),从处理模块PMM-2传输的2个组(2,154)和(3,84),以及从处理模块PMM-3传输的2个组(1,87)和(4,80)。处理模块PMM-1,PMM-2和PMM-3以相同的方式向其它模块传输该处理模块的本地制表结果,并且从其它处理模块接收本地制表结果。
每个处理模块累加在每个处理模块内为每个全局维度值号相互交换的本地制表结果,并且计算全局制表结果。图17是用于解释全局制表结果的计算的图。每个处理模块从其它处理模块接收的本地制表结果当中的实际用于每个处理模块的全局制表的数据仅是这样的数据,该数据包括与每个处理模块的本地制表结果的全局维度值号相符的全局维度值号。在图17中,以双取消线指示每个处理模块从其它处理模块接收的数据中的未用于实际的全局制表的数据。每个处理模块还能够并行地累加从其它处理模块接收的测量。这使得可以提高整个处理速度。
如图17中所示,根据对本地制表结果的累加,在每个处理模块内获得全局制表结果,例如,由于全局维度值号“0”最初仅出现在PMM-0内,全局维度值号“0”的制表结果仅出现在PMM-0内。在另一方面,由于全局维度值号“3”被在两个处理模块PMM-0和PMM-2内本地制表,相应于全局维度值号“3”的全局制表结果出现在两个处理模块PMM-0和PMM-2内。不用说,关于全局维度值号“3”的PMM-0和PMM-2的全局制表值两者取相同的值“153”。
删除这种重叠的全局制表结果对于后面的处理是方便的。因此,可以事先给处理模块分配顺序,并且当在顺序高于各个处理模块的处理模块保持有与其它处理模块所保持的全局维度值号的全局制表值相同的全局制表值时,该处理模块删除由该处理模块保持的全局制表值。图18是用于解释排除这种全局制表值的重叠的处理的图。在该图中,以双取消线表示全局制表值的重叠。通过应用该处理,在所有处理模块中为每个全局维度值号保持一个全局制表值。
最后,在步骤807,保持最终的全局制表值的处理模块从全局项目值号的组中恢复项目值组,并且创建包括一组项目值和相应于该组项目值的制表值的结果表。图19是用于解释结果表的创建的图。通过以这种结果表的形式表示制表结果,有一个优点,即,可以使用该结果表进行另外的制表处理。在图18的例子中,由于最终的全局制表值被保持在处理模块PMM-0和PMM-1内,仅需在处理模块PMM-0和PMM-1内创建结果表。
例如,在处理模块PMM-0中,全局维度值号“0”的全局制表结果是“82”。通过使用参考图12解释的全局维度值号到本地维度值号的对应关系的对应关系表GdimPos,可以获取相应于全局维度值号“0”的本地维度值号LdimNo。在图19的例子中,由于相应于GDimNo“0”的GdimPos的值为“0”,数组LdimNo的顶部的元素“0”是本地维度值号。性别的全局项目值号“0”和年龄的全局项目值号“0”相应于本地维度值号“0”。相应于性别的全局项目值号“0”的项目值,即,维度值是“男”,并且相应于年龄的全局项目值号“0”的项目值,即,维度值是“1”。因此,可以获得性别的维度值“男”,年龄的维度值“1”,以及关于全局维度值号“0”的制表值(=身高总计值)“82”。通过对处理模块PMM-0的其它全局维度值号和处理模块PMM-1的其它全局维度值号应用相同的处理,可以获得结果表。图20是用于解释以这种方式创建的结果表的图。处理模块PMM-0和PMM-1创建性别维度值,年龄维度值和制表值的结果表。处理模块PMM-2和PMM-3不创建结果表。
在图16到18中解释了第一种全局制表方法。在该实施例的修改中,执行第二种全局制表方法。图21是用于解释第二种全局制表方法的图。在该制表方法中,事先给处理模块分配顺序,并且顺序地将作为本地制表结果的数组GMsr从高顺序的处理模块传输到低顺序的处理模块。第二或后续模块将该处理模块内的本地制表结果累加到从前面的处理模块接收的制表结果数组GMsr,并且在该累加后将制表结果数组GMsr传输到下一个处理模块。由于处理模块在以这种方式累加制表结果的同时,按顺序将制表结果数组GMsr传输到随后的处理模块,通过一系列处理模块传输的并且返回第一个最高顺序的处理模块的制表结果是存储着关于所有全局维度值号的全局制表结果的数组。
在图21的例子中,首先,制表结果数组(82,-,-,69,78)被从最高顺序的处理模块PMM-0传输到下一个处理模块PMM-1。“-”表示不存在本地制表结果。处理模块PMM-1将该处理模块内的本地制表结果(-,91,82,-,-)累加到接收到的制表结果数组(82,-,-,69,78),以便创建另一个制表结果数组(82,91,82,69,78),并且将该制表结果数组传输到下一个处理模块PMM-2。类似地,处理模块PMM-2将该处理模块内的本地制表结果(-,-,154,84,-)累加到接收到的制表结果数组,以便创建另一个制表结果数组(82,91,236,153,78),并且将该制表结果数组传输到下一个处理模块PMM-3。类似地,处理模块PMM-3将该处理模块内的本地制表结果(-,87,-,-,80)累加到接收到的制表结果数组,以便创建另一个制表结果数组(82,178,236,153,158)。由于PMM-3是最低顺序的处理模块,从PMM-3输出的制表结果数组是最终的制表结果。
[顺序号分配处理]
在类似于根据本实施例的信息处理系统的多个处理模块(所述处理模块具有存储着带有顺序的一系列值的存储器)被逻辑地连接为环形的信息处理系统内,需要一种给在各个处理模块内单独排序的值分配在多个处理模块间共用的顺序号的信息处理方法,即,顺序号分配方法。
例如,如参考图12解释的,在分配全局维度值号时,使用了用于给在每个处理模块内单独排序的值分配在多个处理模块之间共用的顺序号的顺序号分配处理。不仅在分配全局维度值号时使用该顺序号分配处理,而且当在后面描述的汇编处理中设置全局项目值号时也使用它。
图22是本实施例中的顺序号分配方法的流程图。如该图中所示,每个处理模块在存储器内存储该处理模块内的值列表内的每个元素的顺序号的初始值(步骤2201)。
每个处理模块将存储在该处理模块的存储器内的值列表传输到逻辑地连接到下一级的处理模块(步骤2202)。此外,对于该处理模块内的值列表内的各个值,每个处理模块计数顺序高于从逻辑地连接到前一级的处理模块接收的值列表中的各个值的值的数目,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表内的各个值的顺序号,并且在存储器内存储更新的顺序号(步骤2203)。
每个处理模块将通过从接收到的值列表内的值中排除与该处理模块内的值列表内的值相符的值而获得的一列其它的值传输到逻辑地连接到下一级的处理模块(步骤2204)。对于该处理模块内的值列表内的各个值,每个处理模块计数顺序高于从逻辑地连接到前一级的处理模块接收的其它值列表内的各个值的值的数目,通过以计数的数目增加该处理模块内的值列表内的各个值的顺序号,更新该处理模块内的值列表内的各个值的顺序号,并且在存储器内存储更新的顺序号(步骤2205)。
随后,每个处理模块重复执行步骤2204到2205,直到在步骤2202传输到逻辑地连接到下一级的处理模块的值列表通过逻辑地连接于环形中的其它处理模块被逻辑地连接到前一级的处理模块接收到为止(步骤2206)。
根据该顺序号分配方法,每个处理模块可以接收由其它处理模块保持的值列表而不会出现冗余,并且给由该处理模块保持的值分配一个全局顺序号。如上所述,当每个处理模块保持事先具有顺序的值列表时,可以极有效地分配全局号。这是因为,当值列表有序时,仅需在升序(或降序)的一个方向上比较顺序。不用说,当由每个处理模块保持的值列表未排序时可以获得相同的结果。在该情况下,例如,每个处理模块仅需按所有组合的顺序,对从其它处理模块接收的值列表内的值和由该处理模块内保持的值列表内的值进行比较,计数顺序高于各个值(即,高顺序的值)的值的数目,并且更新各个值的顺序号。
在本实施例中的顺序号分配方法内,每个处理模块不必存储从其它处理模块接收的值列表,并且可以简单地通过给由该处理模块保持的值列表分配顺序,给所有处理模块分配共用的顺序号。
由于该顺序号分配方法不受从其它处理模块接收值列表的顺序的影响,该顺序号分配方法根本不依赖处理模块间的物理连接形式。因此,通过多路复用传输路径和顺序号更新电路,可以实现进一步提高速度。
图23A到23D和24A到24D是用于解释顺序号分配处理的图。在图23A到23D中,示出了每个步骤每个PMM传输到连接到下一级的PMM的值列表。在图24A到24D中,示出了在每个步骤PMM从连接到前一级的PMM接收的值列表。在该例子中,作为初始状态,PMM-0保持有值列表[18,21,24],PMM-1保持有值列表[16,28],PMM-2保持有值列表[16,20,33],并且PMM-3保持有值列表[18,24]。
在第三步骤结束时,每个PMM可以从其它处理模块接收值列表。此时,通过组合由该处理模块保持的值列表和接收到的值列表,可以确定所有值的顺序。此外,在步骤4结束时,可见可以接收所有值而没有冗余。
[汇编处理]
汇编处理是用于设置用于在每个处理模块内管理数据的全局记录号GOrd和全局项目值号GVNo的处理。通过使用偏移值OFFSET,可以容易地设置全局记录号GOrd。在另一方面,全局项目值号GVNo是基于由每个处理模块单独保持的值列表,在所有处理模块之间共同排序的号码。
因此,通过使用顺序号分配处理,每个处理模块能够设置全局项目值号GVNo。
[本地排序处理]
本地排序处理是作为全局制表处理的一部分或参考图9解释的全局排序处理的一部分执行的处理。在该实施例中,由于在每个处理模块内单独地执行本地排序处理,通过提高该本地排序处理的速度,可以提高制表处理的速度。
下面将解释该本地排序处理。在这样的假设下解释本地排序处理,假设从如图25中所示的汇编处理结束的状态开始该处理。图26是本地排序处理的流程图。如图26中所示,每个PMM创建一个出现数目数组区域(步骤2601),其大小等于与将要排序的项目有关的值列表VL的大小,并且将初始值“0”给予该区域内的各个值(步骤2602)。图27示出了这样的状态,其中对于项目“年龄”,在每个PMM中创建具有与值列表VL的大小相同大小的区域,并且将初始值“0”给予该区域内的各个值。
随后,每个PMM为出现数目数组内的每个值执行累计(count-up)处理(步骤2603)。更具体地,每个PMM根据顺序组数组OrdSet的值,指定要排序的项目的指针数组VNo的值(步骤2611)。每个PMM对由指针数组VNo的值指示的出现数目数组内的位置的值进行累计(步骤2612)。重复这种处理,直到顺序组数组OrdSet的结尾(见步骤2613和2614)。
图28是示出了每个PMM内的累计的例子的图。例如,在PMM-0中,年龄的指针数组VNo中由顺序组数组OrdSet的元素“0”指示的位置的值为“0”。因此,出现数目数组的“第0个”位置,即,顶部位置内的值被从“0”累计为“1”。应当理解,在其它PMM内执行相同的处理。
当累计处理结束时,如图29中所示,每个PMM累积出现数目数组的元素,并且将出现数目数组转换为累积号数组(步骤2901)。考虑表示指出出项目值的记录的数目的出现数目,作为累积号数组的元素的累积号表示指示出布置了该累积号的位置的项目值的记录的顶部的位置。具体地,每个PMM初始化指示数组的位置的参数“i”(步骤2911),提取由该参数指示的出现数目数组内的值(步骤2912),并且将在步骤2912提取的值分别加到由参数“i”指示的位置之后的位置内的出现数目数组的值上,即,位置“I+1”,“I+2”等(步骤2913)。仅需以值列表VL的元素(项目值)的数目重复由步骤2912和2913指示的处理(见步骤2914和2915)。
以这种方式,例如,可以获得图30中示出的累积号数组。此外,每个PMM还创建用于数组GVNo,GOrd’和OrdSet’的区域,用于以后存储所有PMM内的顺序(步骤2902)。这些数组的大小分别与值列表VL的大小相符。
随后,在每个PMM内执行本地排序处理。如图31中所示,每个PMM提取顺序组数组OrdSet的值(步骤3101),并且指定指针数组VNo内由数组OrdSet的值指示的位置内的值(指针值)(步骤3102)。此后,每个PMM获取将要排序的项目的全局项目值号数组GVNo中的由指针数组VNo的值指示的位置的值(步骤3103)。该值用于后面描述的存储值的处理。在另一方面,还获取累积号数组内的由指针数组VNo指示的位置的值(步骤3104)。该值用于在后面描述的存储值的处理中指定数组内的位置。
执行存储值的处理。每个PMM将在步骤3102内获取的关于将要排序的项目的GVNo的值布置在由在步骤3104内获取的累积号数组的值指示的位置内(步骤3105)。每个PMM将全局顺序组数组GOrd和顺序组数组OrdSet内的由在步骤3104内获取的累积号数组的值指示的位置的值分别布置在GOrd’和OrdSet’内(步骤3106)。随后,增加用于该处理的累积号数组的值(步骤3107)。
随后对数组OrdSet内的所有值执行步骤3101到3107内的处理(见步骤3108和3109)。
图32和33是示出了在每个PMM内执行本地排序处理的状态的例子的图。例如,对于PMM-0,在图32中,应当理解,执行提取数组OrdSet的值“0”(见步骤3101),指定数组VNo的由OrdSet的值“0”指示的位置内的值“0”(见步骤3102),获取数组GVNo的由数组VNo的值“0”指示的位置内的值“1”(见步骤3103),并且获取累积号数组的由数组VNo的值“0”指示的位置内的值“0”(见步骤3104)。还可见,在累积号数组的获取之后,累积号数组的值从“0”变为“1”(见步骤3107)。
对于PMM-0,在图33中,应当理解,示出了数组GVNo,GOrd’和OrdSet’内的由在步骤3103获取的累积号数组的值指示的关于项目“年龄”的数组GVNo的值“1”,数组GOrd的值“0”和数组OrdSet的值“0”的布置(步骤3105和3106)。对于其它PMM,在图32和33中,可以看到也执行步骤3101到3105内指示的处理。
可以根据本地排序处理(即,每个PMM内的排序处理)获得图34中示出的数组。在图32到34中,图中的“升序顺序2”的含义是全局记录号GOrd’在全局项目值号GVNo’取相同值的范围内是“升序”的。
上面解释的本地排序处理具有一个极佳的特性,即不执行比较操作。一般地,在执行比较的排序中,当数据数目为n时,处理量是O(n*log(n))。在不执行比较的排序中,处理量是O(n)。不执行比较的计数排序大致包括3个阶段:累计,号累积和转移。当所有数据不同时处理步骤数等于3n。因此,当有n个不重叠的数据,并且有m个计算机时,在以m划分n个数据的模型中,对各个划分的部分本地排序,并且以全局排序对划分的部分进行综合,全局排序的近似的步骤数等于(m-1)*(2*n/m)。第一项(m-1)表示每个计算机应从其它计算机接收数据并且处理数据的次数。第二项(2*n/m)是当比较两种升序列表即n升序列表和m升序列表时,平均出现的比较次数。当m大时,该次数近似等于2*n。全局排序的比较次数为O(n)。换言之,该全局排序比执行比较的排序O(n*log(n))更有效。可以认为,这是因为通过比较升序的列表使得该排序更有效。在另一方面,不出现m意味着,即使计算机的数目增加,全局排序中的每一个计算机的处理量也不改变。
[本地排序处理的另一个实施例]
由于各个处理模块可以并行操作,该本地排序处理是极佳的。然而,还可以在其它系统内实现该本地排序处理。例如,当计算机的数目m等于数据n的数目时,可以使用顺序号分配处理的思想实现本地排序处理。
例如,将解释关于参考图9解释的基于“年龄”和“性别”执行的排序的例子的根据该另一个实施例的本地排序处理。
在基于年龄和性别执行排序的例子中,如果为各个记录创建性别GVNo,年龄GVNo和GOrd的3维数组,并且在每个PMM内同时给该3维数组分配顺序号,获得与本地排序处理相同的结果。图35A到35F分别是用于解释使用顺序号分配处理的本地排序处理的图。
首先如图35A所示,每个PMM创建由性别的GVNo,年龄的GVNo和OrdSet的各个元素的GOrd构成的3维数组。在下面的解释中,OrdSet=I的三维数组被表示为A[i]=(a,b,c)。在该例子中,A[0]=[1,2,0],A[1]=[0,0,1]和A[2]=[1,1,2]。
随后,如图35B所示,每个PMM初始化顺序号。
如图35C所示,每个PMM分配顺序号。在该例子中,每个PMM将A[0]发送到OrdSet1,将A[1]发送到OrdSet2,将A[2]发送到OrdSet0,对由PMM保持的3维数组和发送的数组进行比较,并且分配顺序号。
此外,如图35D中所示,每个PMM将A[0]发送到OrdSet2,将A[1]发送到OrdSet0,将A[2]发送到OrdSet1,对由PMM保持的3维数组和发送的数组进行比较,并且分配顺序号。
作为这种顺序号分配处理的结果,获得图35E中示出的结果。图35F中示出了按顺序号的顺序布置的结果。图35F中示出的结果与图9中示出的本地排序结果相符。
[SIMD类型并行处理]
当缺乏并行性算法时,难以开发程序采用SIMD以便获得所希望的结果。即使可以开发该程序,该程序的自由程度也是低的。因此,为了采用SIMD,需要开发适用于SIMD的极佳的算法。就此而言,根据该实施例的算法在下面几点上是极佳的。
(1)在处理的执行中不存在条件分支。然而,在检索处理的情况下,可能会执行条件分支。然而,该条件分支是简单的条件分支。
(2)可由一个命令(步骤数和时钟数)执行的处理-诸如升序列表的相互比较-所占的比例是高的。
(3)所有处理模块等同地具有相同的角色。如果每个处理模块具有不同的角色,则不能根据单个命令实现处理。因此,在该实施例中,当采用SIMD时简化了程序。可以确保程序开发的容易性和程序的高的自由程度。
[系统配置]
根据本发明的信息处理系统通过环形通道连接于,例如,作为前端的终端装置,并且每个PMM从所述终端装置接收命令。这使得可以在PMM内执行汇编、排序和制表处理。每个PMM仅需使用任意一种总线传输信息包,并且不需从外部控制PMM之间的同步等。
除了包括用于迭代操作诸如汇编和排序的硬件配置的加速器芯片之外,在控制设备内可以包括通用CPU。通用CPU可以解释通过所述通道从终端装置传输的命令,并且向加速器芯片给出必须的指令。
此外,希望在控制设备内,特别是,在控制设备的加速器芯片内提供寄存器组,用于容纳工作所需的各种数组,诸如顺序组数组和全局顺序组数组。因此,一旦处理所需的值被从存储器装载到寄存器,控制设备仅需从寄存器读出该值,或将值写到寄存器内而不需在汇编、排序和制表的处理操作过程中访问存储器。这使得可以明显减少存储器访问的次数(在算术处理和处理结果的写之前装载),并且明显地减少处理时间。
[关于全局组数组GOrd和全局项目值号数组GNo]
将解释本实施例中引入的数组GOrd和数组GVNo的重要性。全局顺序组数组GOrd指示由每个PMM掌握的表格式数据的每个记录在通过收集由每个PMM掌握的本地表格式数据而形成的全局表格式数据内的位置(顺序)。换言之,在该实施例中,根据全局顺序组数组GOrd和顺序组数组OrdSet,记录的位置信息被分为全局部分和本地部分。这使得可以处理全局表格式数据。另外,每个PMM能够独立地执行处理。
在该实施例中,PMM被构造为保持各个项目的信息块。然而,即使当PMM保持表格式数据时,GOrd也以相同的方式起作用。
例如,在该实施例中在汇编结束的状态中(见,例如图25),通过按全局顺序组数组GOrd的值的顺序提取各个项目的项目值,可以创建整个表格式数据的视图。
不用说,本发明不限于上述的实施例,可以在权利要求描述的本发明的范围内对本发明进行各种修改,并且这些修改被包括在本发明的范围内。
在该实施例中,在一方面在用于顺时针传输包的第一总线(第一传输路径)中,并且在另一方面在用于逆时针传输包的第二总线(第二传输路径)中以环形连接PMM。这种构造是有利的,因为可以使得包传输的延迟时间等一致。然而,本发明不限于这种传输路径,并且可以采用其它形式的传输路径诸如总线类型的传输路径。
在该实施例中,使用具有存储器、接口和控制电路的PMM。然而,本发明不限于此。替代PMM,个人计算机,服务器等可用作使得本地表格式数据接受共享控制的信息处理单元。可替换地,可以采用单个个人计算机或服务器保持多个信息处理单元的构造。即使在这些情况下,通过接收指示记录的顺序的值,并且访问全局顺序组数组GOrd,该信息处理单元可以指定记录。还可以通过访问全局值号数组指定项目值。
可以采用所谓的网络类型或总线类型传输路径作为信息处理单元之间的传输路径。
通过采用在单个个人计算机中提供多个信息处理单元的构造,可以如下所述那样使用本发明。例如,准备Sapporo分部,Tokyo分部和Fukuoka分部的3个表格式数据,并且通常,由每个分部的单元执行检索,制表,排序等。此外,可以设计全局表格式数据,其中综合了3个分部并且将各个分部的表格式数据考虑为整个表的部分表,实现关于全局表格式数据的检索,排序和制表。
不用说,即使当多个个人计算机连接到网络时,也可以实现与接受所述个人计算机的共享控制的本地表格式数据有关的处理,以及与全局表格式数据有关的处理。