CN1423772A - 信息处理*** - Google Patents
信息处理*** Download PDFInfo
- Publication number
- CN1423772A CN1423772A CN00818392.9A CN00818392A CN1423772A CN 1423772 A CN1423772 A CN 1423772A CN 00818392 A CN00818392 A CN 00818392A CN 1423772 A CN1423772 A CN 1423772A
- Authority
- CN
- China
- Prior art keywords
- serial number
- pmm
- memory module
- array
- value
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明的目的是以极高速度执行数据排序、汇编和联结。此目的系通过如下的分布式存储器型信息处理***达到,其构成包括:一个CPU模块;每个都具有一个处理器和RAM核心的多个存储器模块;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,并且其中所述信息处理***的特征在于所述存储器模块的构成包括:对组成数组的那些它自己管理的部分的元素执行排序并根据特定的顺序对所述元素重新排序、根据由其自身管理的所述部分在数组中所占据的位置将其I/O、通过规定总线将所述排序后的元素与其顺序号一起发送到另一个存储器模块或通过规定总线从另一个存储器模块接收所述元素及其顺序号的排序装置;顺序号计算装置,此装置在接收到一个所述元素及顺序号时将其与由其自身管理的元素进行比较而计算出一个作为接收到的元素的顺序号的候选的虚拟顺序号,并且将其返回到所述另一个存储器模块;以及顺序确定装置,此装置在接收到所述虚拟顺序号时根据所述虚拟顺序号确定元素的顺序;结果所述数组的元素的顺序号是通过在发送所述元素及顺序号一方的展示存储器模块和在接收所述元素及顺序号并计算虚拟顺序号一方的存储器模块之间的通信来确定。
Description
技术领域
本发明涉及分布式存储器型信息处理装置,特别涉及可以以极高速度执行数据排序、汇编和联结的信息处理装置。
背景技术
既然计算机已经进入整个社会的很多方面,并且因特网和其他网络已经普及,数据正在大规模地积累。这样大规模地处理数据要求巨大的计算能力,于是企图引入并行处理是很自然的。
当前,并行处理体系结构分为“共享存储器”型和“分布式存储器”型。前者(“共享存储”型)是多个处理器共享单个巨大存储器空间的体系结构。在此体系结构中,处理器组和共享存储器之间的通信量是一个瓶颈,所以不容易构建使用100个以上处理器的实际***。因此,在计算10亿个浮点数的平方根时,比如,处理的执行速度不会快于单个CPU的速度的100倍。从经验得知,上限是大约30倍。
在后者(“分布式存储器”型)的情况下,每个处理器具有其自己的局部存储器,并且两者连接而构建一个***。采用这一体系结构时,可以设计一个整合甚至数百个至数万个处理器的硬件***。因此,在在计算上述10亿个浮点数的平方根时,比如,处理的执行速度可比单个CPU的速度快上数百倍至数万倍。
据说是对于由数目达到数百或更多的大量处理器实现的并行处理的潜在需求是巨大的,但是,如上所述,如果要利用现有的现实的硬件技术来实现,除了采用“分布式存储器”型之外是很难设计的。
在分布式存储器体系结构中,附加于单个处理器上的存储器的容量很小,因此在并行处理的主要对象之一的大规模数据(通常是数组)的存储和处理中必须将此数据在多个处理器和附加于每个处理器的存储器中间划分。
然而,当数组在多个处理器和附加于每个处理器的存储器中间划分时,防止数据在总线上的冲突的总线主控变得很困难,因此如各个处理器不能并行工作,那就存在一个问题,就是无法提高处理器的使用效率而不可能增加处理速度。为此,本发明要达到的各个目的如下所述。
(1)数据在总线上的冲突在算法上不会发生,因此总线主控就不需要了;从而通过充分使用总线的带宽可以增加处理速度。
(2)通过将多个装设有处理器的存储器模块与处理器(最好是多个处理器)相结合可以进行并行处理,并且使各个存储器模块可以得到有效的利用,而处理可独立地分配给每个存储器模块中的处理器,从而可通过有效的使用存储器模块而进一步增加处理速度。
(3)如待排序的数据的量是N,则只需要O(N)的数据量。(在普通排序时必需O(N*N)的数据量或在最坏的情况下为O(N*Log(N))的数据量。)
(4)处理时间稳定,即使是在最坏的情况下也是,预测C处理速度可以保证。
就是说,本发明的目的是提供一种可以以极高速度和稳定的处理时间执行数组排序的信息处理装置。
发明概述
本发明的一个目的可以通过如下的分布式存储器型信息处理***达到,其构成包括:一个CPU模块;每个都具有一个处理器和RAM核心的多个存储器模块;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,并且其中所述信息处理***的特征在于所述存储器模块的构成包括:对组成数组的那些它自己管理的部分的元素执行排序并根据特定的顺序对所述元素重新排序、根据由其自身管理的所述部分在数组中所占据的位置将其I/O、通过规定总线将所述排序后的元素与其顺序号一起发送到另一个存储器模块或通过规定总线从另一个存储器模块接收所述元素及其顺序号的排序装置;顺序号计算装置,此装置在接收到一个所述元素及顺序号时将其与由其自身管理的元素进行比较而计算出一个作为接收到的元素的顺序号的候选的虚拟顺序号,并且将其返回到所述另一个存储器模块;以及顺序确定装置,此装置在接收到所述虚拟顺序号时根据所述虚拟顺序号确定元素的顺序;结果所述数组的元素的顺序号是通过在发送所述元素及顺序号一方的展示存储器模块和在接收所述元素及顺序号并计算虚拟顺序号一方的存储器模块之间的通信来确定。
藉助本发明,由展示存储器模块对元素和顺序号的展示是通过总线执行,而虚拟顺序号是利用确定存储器模块计算,并且这些虚拟顺序号是通过另外一个总线赋予展示存储器模块。因此,在展示存储器模块和确定存储器模块中排序可以并行进行,并且总线冲突可以避免。
在实施本发明的具体方式中,所述存储器模块的构成包括:元素识别/发送装置,用来根据确定的顺序号识别要处理的元素并将其通过总线之一进行发送;元素比较装置,用来对前一个待处理的元素与发送的元素进行比较;以及一个等值计数器,用来指示等同元素的计数并且其值在发送一个等同元素时递增;其中所述元素比较装置的构成使得当前一个待处理的元素被确定为与发送的元素不同时,此前一个待处理的元素与所述该元素相关的等值计数器的值相关联并且其一被送出,此外,并且存储器模块之一接收前一个待处理的元素及如此发送的相关计数器的值,并且具有一个于其中使它们相关联并置于接收的顺序的数组。
藉助于此具体实施方式,在存储器模块之一中,元素及其冗余度是以规定顺序接收,因而就可以生成一个非冗余元素数组和各个元素的计数。就是说,从而就可以很容易地确定一个非冗余元素列表,并且原始数组中的每个元素号可以很容易确定。
在本发明的另一个具体实施方式中,所述存储器模块的构成包括:一个指示非冗余顺序号的值-号计数器,其值在所述元素比较装置确定前一个待处理的元素与发送的元素不同时递增;以及顺序号更新装置,其作用为,对发送的元素而言,在前一个待处理的元素与发送的元素等同时将值-号计数器的值设定为所述该非冗余元素的顺序号,但如果它们不同,将值-号计数器的递增值设定为所述该非冗余元素的顺序号。
藉助于此具体实施方式,可以将应用于数组元素的顺序号变换为其中的元素冗余度被消除的状态中的1。
此外,本发明的一个目的可以通过利用分布式存储器型信息处理***的数组排序方法来达到,此***的构成包括:一个CPU模块;每个都具有一个处理器和RAM核心的多个存储器模块;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,并且其中所述排序方法的构成包括:
(a)对组成数组的那些它自己管理的部分的元素执行排序的步骤,(b)根据由其自身管理的所述部分在数组中所占据的位置在管理所述数组的位置的存储器模块中间确定发送元素及顺序号一方的展示存储器模块,以及在接收所述元素及顺序号一方的确定存储器模块的步骤,
(c)在展示存储器模块中通过规定总线将排序后的元素与其顺序号一起发送到另一个存储器模块的步骤,
(d)在确定存储器模块中通过规定总线从另一个存储器模块接收所述元素及其顺序号的步骤,
(e)在所述确定存储器模块中,根据由所述确定存储器模块管理的元素的顺序号计算出指示一个接收到的元素的候选顺序号的虚拟顺序号,并且将所述虚拟顺序号返回到所述展示存储器模块的步骤,以及
(f)在所述展示存储器模块中,当接收到所述虚拟顺序号时根据所述虚拟顺序号更新元素的顺序号的步骤,以及
(g)在上述步骤(d)至(f)每一个步骤结束时,通过将属于藉助上述步骤(d)至(f)赋予一个规定顺序号的元素的展示存储器模块和确定存储器模块所组成的存储器模块组中的每一个分别取作展示存储器模块组和确定存储器模块组之一并且重复步骤(d)至(f)来更新每一个存储器模块组中的元素的顺序号,可确定数组中的每一个元素的顺序号。
藉助本发明,展示存储器模块中的计算,展示存储器模块中的元素和顺序号的发送,确定存储器模块组中的计算和展示存储器模块中的虚拟顺序号的发送可以并行进行,并且总线冲突可以避免。就是说,可以获得极高的速度的排序(对数组中的元素赋予顺序号)。此外,存储器中的数据量可保持为只是O(N)。
在上述实施本发明的具体方式中,步骤(e)的构成包括:
(e1)根据指示要在接收到的元素的前方***的元素数的前向***数,要置于前方的元素的顺序号,以及接收到的顺序号计算虚拟顺序号的步骤。
在上述本发明的另一具体实施方式中,步骤(f)的构成包括:
(f1)将接收到的虚拟顺序号设置给在步骤(c)中发送的顺序号的步骤。
实施本发明的具体方式的构成还包括:
(h)在展示存储器模块中,计算指示在所述存储器模块组中有多少个由组成所述展示存储器模块组的存储器模块管理的元素的冗余度,
其中所述步骤(c)的构成包括:
(c1)将排序后的元素及其顺序号和冗余度一起传送到另一个存储器模块以使等同的元素不会冗余传送的步骤,
其中所述步骤(e)的构成包括:
(e1)根据指示要在接收到的元素的前方***的元素数的前向***数,要置于前方的元素的顺序号,以及接收到的顺序号和冗余度计算虚拟顺序号的步骤,并且
其中所述步骤(f)的构成包括:
(f2)根据在步骤(c)中发送元素时虚拟顺序号和顺序号中间的差值确定与所述该元素等同的元素的顺序号的步骤。
藉助于本发明,无需展示存储器模块多次发送同一元素。此外,当计算出某一元素的冗余度时,可以将所述该元素的顺序号和冗余度发送给确定存储器模块,并且可在确定存储器模块中对所述该元素执行虚拟顺序号的计算。就是说,这可以防止存储器模块利用效率的降低。
在另一具体实施方式中,展示存储器模块是初始独立存储器模块,而接收模块也是独立存储器模块,并且展示存储器模块组的构成包括2n个存储器模块,其中的n(n:大于或等于1的整数)在步骤(d)至(f)每次结束时递增,同时确定存储器模块组的构成包括2n个存储器模块。
如上所述,在理想情况下当使用2n个存储器模块时可做到排序。
此外,本发明的另一具体实施方式是一种汇编方法,其中一个数组是藉助于上述排序方法排序,并且根据所述排序后数组生成一个新数组,在所述数组中元素按规定顺序排列,没有重复,并且其中所述汇编方法的构成包括:
(i)在规定的存储器模块中根据顺序号发送待处理元素的步骤,
(j)如前一个待处理的元素与发送的元素等同时将用来指示存在的等同元素的计数的值-号计数器的值递增,但如发送的元素与前一个待处理的元素不同时就将此前一个待处理的元素与所述该元素相关的等值计数器的值相关联并且将它们发送出去的步骤,
(k)接收前一个待处理的元素及相关联的等值计数器的值,并且生成一个使它们相联系的新数组的步骤,以及
(l)重复步骤步骤(i)至(j)以便使元素及其计数在新数组中互相联系。
此外,上述汇编方法的构成还可包括:
(m)在模块之一中监视在本周(j)中发送的元素及相联系的等值计数器的值的步骤,并且
其中步骤(k)藉助于所述模块之一执行。
此外,上述汇编方法的构成还可包括:
(n)在管理所述数组元素的存储器模块中,提供分别保持待处理元素的顺序号和所述元素的计数的顺序号计数器和等值计数器,以及还提供临时存储前一个待处理元素的寄存器的步骤,
(o)在管理具有所述该顺序号的元素的存储器模块中根据顺序号发送所述该元素的步骤,
(p)在管理数组中的元素存储器模块中,比较接收的元素和寄存器的内容,并且如其等同,使计数递增,但如其不等同,就通过第二总线将寄存器的内容和计数器的值发送出去,并且之后更新寄存器的内容和计数器的值的步骤,
(q)在存储器模块之一中,将所述寄存器的内容和所述计数器的值分别作为元素和所述元素的计数置于数组中的步骤。
此外,步骤(n)的构成还包括:
(n1)为待处理元素提供存储非冗余顺序号的值计数器的步骤,
并且所述步骤(p)的构成最好还包括:
(p1)比较接收的元素和寄存器的内容,并且如其等同,就将值-号计数器的值作为所述待处理元素的顺序号赋予,但如其不等同,使值-号计数器递增,并且将递增的值-号计数器的值作为所述待处理元素的顺序号赋予的步骤。
此外,在上述本发明的另一具体实施方式中,联结数组的方法可利用上述排序方法和上述汇编方法做到多个数组的联结,其中所述联结方法的构成包括:
(r)通过对这些数组中的每一个元素赋予顺序号归并多个数组并执行所述排序方法的处理的步骤,以及
(s)根据所述归并后的数组内的元素将其顺序号执行所述汇编方法的处理,从而生成没有冗余元素存在的新数组的步骤。
就是说,通过在所要求的数组得到归并的状态下执行根据本发明的排序和汇编,可以得到消除元素冗余的联结数组。
在上另外又一个具体实施方式中,联结数组的方法可利用采用分布式存储器型信息处理***的上述排序方法和上述汇编方法做到多个数组的联结,其中所述***的构成包括:一个CPU模块;每个都具有一个处理器和RAM核心;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,
所述存储器模块的构成包括一个其中的指示一个数值表的指针值置于与记录号相对应的位置以便指定数值表指定规定元素的指针数组,其中的数值表是一个根据记录号存储元素的数组,
并且上述联结方法的构成包括:
(r1)通过对这些数组中的元素赋予顺序号归并多个数值表并执行所述排序方法处理的步骤,以及
(t)根据所述归并后的数值表内的元素及其顺序号执行所述汇编方法,从而生成一个没有冗余元素存在的新数组并且还将所述元素的顺序号更新为没有冗余元素存在的场合的所述元素的顺序号的处理步骤,并且
(u)将没有冗余元素存在的场合的所述元素的顺序号所组成的所述数组设置为用来指示新数值表的新指针数组。
附图简述
本发明的各个目的参考附图及具体实施方式将一清二楚。其中:
图1为示出根据本发明的一个具体实施方式的计算机***的配置的框图。
图2为示出根据此具体实施方式的存储器模块的示意框图。
图3为用来描述根据本具体实施方式的存储器模块中间的流水线处理的示图。
图4A至4C为用来描述根据本具体实施方式的多空间存储器下的存储器模块14的结构的示图。
图5A至5C为用来描述根据本具体实施方式的存储器模块的访问的的示图。
图6A至6C为示出对一个数组执行根据本具体实施方式1的排序的一个示例的示图。
图7为示出根据本具体实施方式1的排序进程的流程图。
图8为示出在执行根据具体实施方式1的排序时存储器模块之间的连接的框图。
图9是示意图,显示了图8所示的存储器模块之间的连接。
图10A至10D为示出在根据本具体实施方式1的排序中在一个数组内的元素的编号的示图。
图11A至11D为示出在根据本具体实施方式1的排序中在一个数组内的元素的顺序编号的示图。
图12A至12C为示出在根据本具体实施方式1的排序中在一个数组内的元素的编号的示图。
图13A至13C为示出在根据本具体实施方式1的存储器模块对之间的顺序编号的编号的流程图。
图14A和14B为示出属于示于图8中的存储器模块的两个存储器模块组之间的连接示例的示图。
图15A和15B为示出示于图14的连接的示例的示意图。
图16A和16B为示出在根据本具体实施方式1的排序中在一个数组内的元素的顺序编号的示图。
图17A和17B为示出在根据本具体实施方式1的排序中在一个数组内的元素的顺序编号的示图。
图18A和18B为示出在根据本具体实施方式1的排序中在一个数组内的元素的顺序编号的示图。
图19A和19B为示出在根据本具体实施方式1的排序中在一个数组内的元素的顺序编号的示图。
图20为用来描述在根据本具体实施方式1的排序中存储器模块的组合的示图。
图21为示出在按照作为根据本具体实施方式1的排序的结果而取得的顺序号生成一个新数组的场合中的存储器模块的连接的另一示例的示图。
图22为示出在按照作为根据本具体实施方式1的排序的结果而取得的顺序号生成一个新数组的场合中的存储器模块的连接的另一示例的示图。
图23为示出在根据本具体实施方式2的排序中存储器模块的连接的示例的示意图。
图24为用来描述在根据本具体实施方式2的存储器模块组中计算冗余度的进程的示图。
图25为用来描述在根据本具体实施方式2的存储器模块组中计算冗余度的进程的示图。
图26为示出在根据本具体实施方式2的存储器模块组中计算冗余度的进程的流程图。
图25为用来描述在根据本具体实施方式2的存储器模块组中计算冗余度的进程的示图。
图28A和28B为用来描述在根据本具体实施方式2的存储器模块组中计算冗余度的进程的示图。
图29A和29B为用来描述在根据本具体实施方式2的存储器模块组中计算冗余度的进程的示图。
图30A和30B为用来描述在根据本具体实施方式2的存储器模块组中计算冗余度的进程的示图。
图31A至31C为示出在排序同时省略发送冗余元素的的流程图。
图32为示出在按照作为根据实施本发明的具体方式3的汇编中的存储器模块的连接的一个示例的示图。
图33为示出根据实施本发明的具体方式3的汇编的流程图。
图34A和34B为用来描述在根据实施本发明的具体方式3的存储器模块组中的汇编的示图。
图35A和35B为用来描述在根据实施本发明的具体方式3的存储器模块组中的汇编的示图。
图36A和36B为用来描述在根据实施本发明的具体方式3的存储器模块组中的汇编的示图。
图37A和37B为用来描述在根据实施本发明的具体方式3的存储器模块组中的汇编的示图。
图38为用来描述在根据实施本发明的具体方式3的存储器模块组中的汇编的示图。
图39A和39B为用来描述在根据实施本发明的具体方式3的存储器模块组中的汇编的示图。
图40为示出根据实施本发明的具体方式4的联结的流程图。
图41A和41B为用来描述在根据实施本发明的具体方式4的存储器模块组中的联结的示图。
图42A至42C为用来描述在根据实施本发明的具体方式4的存储器模块组中的联结的示图。
图43A和43B为用来描述在根据的实施本发明的具体方式4的存储器模块组中的联结的示图。
图44A和44B为用来描述在根据实施本发明的具体方式4的存储器模块组中的联结的示图。
图45为示出本发明的另一实例中的存储器模块组中的联结的示意图。
实施发明的具体方式
[硬件配置]
下面是参考附图对本发明的具体实施方式的描述。图1为示出根据本发明的一个具体实施方式的计算机***的配置的框图。如图1所示,计算机***10的构成包括根据单个指令执行并行运算的CPU模块12;存储并行运算所需的各个类型的数据的存储器模块14-1、14-2、14-3;存储所需程序和数据的硬盘驱动器16;键盘、鼠标或其他输入装置18;由CRT等等组成的显示器20以及以各种格式存储数据等等的遗留存储器22。此外,在总线24-1,24-2,...,上,在与各个存储器模块14的接触点处设置开关28-1,28-2,28-3,...等等,所以选择的电路元件可以交换信息。此外,在CPU模块12和存储器模块14-1中间设置有开关30-1,30-2,...用于总线连接和相邻存储器模块中间的连接。此外,在存储器模块输入端到总线的接触点和存储器模块输出端到总线的接触点中间也可以设置一个开关(见符号29)。在图1中,上述开关以虚线圆圈表示。
另外,存储器模块14最好是不但具有单输入端和单输出端,而且还具有一个或多个其他终端(I/O终端等等)。比如,在后面将要介绍的具体实施方式2或3中,处理是利用3个以上的终端的I/O实现的。
在CPU模块12和存储器模块14中间设置多个总线24-1,24-2,24-3,24-4,...。因此,数据等等可藉助上述总线在存储器模块之间交换。此外,在CPU 12和存储器模块14中间设置有一根信号控制线25,于是由CPU 12发出的指令可传输到所有的存储器模块14。
另外,在CPU 12和各个其他构件(例如,硬盘驱动器16,输入装置18等等)中间设置有本地总线26,于是数据等等也可在其中间交换。CPU 12读取存储于与本地总线26相连接的硬盘驱动器16或RAM或其他存储装置(未示出)上的程序,并按照该程序执行发送指令到存储器模块14和其他数据交换,另外还控制开关28,30等等。此外,根据此程序,CPU 12接受存储于遗留存储器22中的各种格式的数据,将此格式数据变换为可利用由CPU 12、存储器模块14和总线24构成的***处理的数据系列(数组)并将其存储于不同的存储器模块14中。
图2为示出根据此具体实施方式的存储器模块的示意框图。如图2所示,存储器模块14的构成包括一个接受由CPU模块12发出的时钟或其他同步信号的时钟缓存32;一个此处数据的RAM核心34;一个处理器(MPU)36,此处理器识别空间ID和数据的元素号(见后述)并在接到CPU 12的指令等时根据空间ID和数据的元素号将数据写入RAM核心34或从RAM核心34读出数据;以及一个I/O单元38,此I/O单元从总线之一接受数据并将其供给RAM核心34,和/或从RAM核心34送出并在总线之一上将其送出。在此具体实施方式中,存储器模块14可通过信号控制线25接受来自CPU的指令,对这些指令做出响应而执行从RAM核心34读出数据,将数据写入RAM核心34或对数据执行其他规定的处理。此外,对RAM核心34的数据访问和通过I/O单元的数据输入和输出是根据时钟缓存32发出的时钟或其他同步信号执行的。上述存储器模块14的处理器(MPU)36最好是由多个处理单元组成并且能够执行多个进程。
从图1和图2可知,在本发明中,计算机***10可看作是一个共享存储器型***。此外,数据输出到总线和从总线输入数据等等是根据规定的同步信号执行。因此,此计算机***10可认为是采用SIMD(单指令流多数据流)***的形式。
具有这种配置的计算机***10基本上配置有多空间存储器,存储器模块和在日本专利申请No.H11-263793中记载的可重构总线。下面对这些予以简要描述。
(1)在此说明书中,“多空间存储器”指的是存储器空间分配为根据空间ID和地址进行访问。因此,即使是一个数据序列在很多处理器之间分割,每个处理器都能够可靠地将其分离和识别。
在通常的存储器空间中,即使是对每个进程分配单独区域,对每个变量序列(数组,结构等等)并不执行存储器空间分配。因此,下面将把通常的存储器空间描述为“单存储器空间”。在单存储器空间***中,数据访问只利用地址进行,所以不可能分离或识别相关数据序列。由于这一原因,即使是并行处理实际上可能,也有很多场合对此无法确定。此外,当将一个新的数据序列存储于某个单存储器空间时,必须执行无用存储单元收集(废料收集)以保证用来存储所述该数据序列的地点安全可靠。
与此相反,在本发明中,在存储器空间引入空间ID,从而可将同一ID应用于数据序列。此外,存储器模块14中的每一个都可以识别保持于RAM核心34内的数据空间ID,并从而每个存储器模块14都能够通过检查当前正在访问的数据空间ID来确定它是否需要进行运算。此外,因为每个存储器模块14可保持与空间ID相关联的数据序列的全部或某些,所以就可能存储在多个存储器模块14之间分割的某一个数据序列,并且从而无用存储单元收集(废料收集)就不需要了。
(2)存储器模块
此外,在本发明中,存储器模块14中的每一个可识别它自己保持的数据序列的单个元素号的处理器36。因此,在接到来自CPU 12的指令时,处理器36可以确定根据指令要访问的数据是否保持于RAM核心34内并从而确定是否需要访问。另外,存储器模块14中的每一个都可以从存储于其固有的RAM核心34中的数组元素中的下标范围确定在SIMD下的指令隐含处理中的负担范围。
存储器模块14可以根据来自CPU 12的指令对待处理的元素的次序重排,并且对存储于其固有的RAM核心34中的元素排序。
(3)可重构总线
采用本发明,CPU 12可以有选择地接通/关断开关28-1,28-2,...和开关30-1,30-2,...,并且这样就可指定将要与其进行数据交换的存储器模块14,从而做到流水线处理。比如,如图3所示,如从某一个存储器模块14-i输出的数据需要交给另外一个存储器模块14-j,并且从此另外一个存储器模块14-j输出的数据要传送到再另外一个存储器模块14-k,那末CPU 12就将各个开关设置成为总线24-m分配给存储器模块14-i和存储器模块14-i,而总线24-n分配给存储器模块14-j和存储器模块14-k。
另外,此流水线处理不仅可在单存储器模块之间连接的场合做到,而且可以通过多个存储器模块序列(存储器模块组)之间的连接来做到。取决于要进行的处理,各个存储器模块可重新连接以便可以在每个连接路径上以规定的次序进行规定类型数据的单向连续传送,从而对通信进行调度以使接近100%的总线容量可以得到利用。于是,就可以解决作为分布式存储器型并行处理***的最大问题的处理器间通信性能低下的问题。
[多空间存储器]
下面我们将更详细描述在根据采用多空间存储器的本发明的计算机***中按照指令对各个存储器模块的存储器管理和存储器访问。
图4A至4C为用来描述根据本具体实施方式的多空间存储器下的存储器模块14的结构的示图。如图4A所示,在存储器模块14内的RAM核心34中设置有空间ID控制表。于是,存储器模块14的处理器36可确定由其自身保持的空间ID和其他必要的信息。
如图4B所示,空间ID控制表包含其保持的每个数据组的空间ID,CPU控制下的逻辑起始地址,分配给数据组的区域的大小,RAM核心34内的物理起始地址,具有所述该空间ID的数据序列的总容量以及控制访问的访问控制标记。访问控制标记可设定为以下三种状态之一:只读(R),只写(W)或允许读/写(RW)。
当给定一个具有空间ID的数据组时,存储器模块14的处理器36在RAM核心34中找到一个或多个可存储所述该数据组的区域并将数据组存储于所述区域,按原样或分割为两个或多个部分。此时,RAM核心中实际存储数据的逻辑起始地址和分配区域的大小与给定的空间ID,逻辑起始地址,总容量和访问控制标记一起存储于空间ID控制表中。图4处理器为示出根据图4的空间ID控制表存储于RAM核心34内的数据的示图。
[存储器访问简议]
下面对具有这种构成的存储器模块14的访问予以描述。如图5A至5C所示,CPU 12首先通过信号控制线25向使用的存储器模块14传送空间ID,逻辑起始地址和所要求的指令(比如读写数据)。对此的响应是存储器模块14中的每一个利用在处理器36中设置的空间比较器52比较此空间ID和保持于其固有的空间ID控制表中的空间ID并确定其自身保持的是否一样,另外,地址比较器54对逻辑地址执行同样类型的确定。其后,假如确定有待指令处理的数据是保持于其固有的RAM核心34内,存储器模块14的处理器36利用地址计算器56检查空间ID控制表以便计算RAM核心34内的物理地址和识别有待处理的数据。
一旦数据以这种方式被识别,处理器36就执行与CPU 12发出的指令相应的处理(比如读写数据),并且,需要时,将此数据传送到CPU12(见图5处理器)。
[排序(具体实施方式1)]
下面对藉助具有这种构成的计算机***10的排序予以描述。注意在下面描述中的每个存储器模块都带有一个处理器并且因而称为处理器存储模块(处理器存储模块)。
为易于理解,考虑如图6A至6C所述的情况,其中四个PMM中的每一个都保持两个元素(姓)。如图6A所示,某一个PMM(第一个PMM14-1)保持元素下标(记录号)为“0”的姓“Smith”和元素下标为“1”的姓“Carter”。第二个PMM14-2保持元素下标为“2”的姓“Clinton”和元素下标为“3”的姓“Johnson”。与此类似,第第三个PMM14-3和第四个PMM14-4保持与示于图6A的下标相对应的的姓。同一空间ID应用于由这些元素组成的数组,并且每个PMM的处理器36都利用空间ID控制表来管理在其固有的RAM核心34中的元素的下标(记录号),还有它们实际存储的物理地址等等。
比如,考虑由CPU 12通过信号控制线25向各个PMM14-1至14-4发出对具有此空间ID的数组进行排序的指令。图7为示出根据本具体实施方式的排序进程的流程图。如图7所示,当CPU 12发出指令(比如,指令“对具有某一空间ID的数组内的元素排序”)(步骤700)时,响应此指令,在每个PMM中,每个PM的处理器36都接收到通过信号控制线25给出的指令并解释其内容(步骤701),检查指令内的“空间ID”(步骤702),并确定它是否属于由其固有的RAM核心34保持的数据的空间ID(步骤703)。如步骤703的结果为“否”,则处理结束。另一方面,如结果为“是”,则处理器36执行所要求的各种检验,如检验属于所述该空间ID的数据组是处于允许写入状态(步骤704)。如检验出现出错结果(步骤705中的“是”),则处理器36通过信号控制线25向CPU 12报告出错。另一方面,如没有出错,则处理器36执行下面描述的排序处理的主体(步骤707及其以下步骤)。
首先,PMM 14-1至14-4中的每一个都对其固有的元素执行排序(步骤707)。此排序实际上伴随有元素在各个PMM内的位置。更具体说,处理器36利用Quicksort或其他熟知的排序技术来对保持于其固有的RAM核心34中的元素排序。图6B为示出每个PMM的数组内的元素的排序状态的示图。注意,如图6D所示,每个元素的下标(记录号)的位置也改变。
其次,每个存储器模块14的处理器36分配一个区域(顺序号区域)用来置放顺序号并给出每个顺序号的初始值(步骤708)。图6C为示出其中顺序号的初始值已经给出的每个PMM的状态的示图。这样,就在每个模块内在排序后的元素中间赋予顺序号。
之后,在邻接对之间执行顺序号的归并和赋予(步骤709)。在步骤709中,CPU 12首先控制总线上的开关28和30使得在排序中涉及的PMM之间对某一对的一侧的输入连接到另一侧的输出,而那一侧的输出连接到另一侧的输入。上述的对最好是两个邻接的PMM或者,如果不是邻接的,是两个处于附近位置的PMM。比如,在图1中,如在排序中涉及PMM 14-1至14-4,PMM 14-1和PMM 14-2和PMM14-3和PMM 14-4最好是配对。比如,如图8所示,CPU 12可控制开关28以使PMM 14-1的输出和PMM 14-2的输入连接到总线24-1,PMM 14-1的输入和PMM 14-2的输出连接到总线24-2,并且制开关28以使PMM 14-3的输出和PMM 14-4的输入连接到总线24-1,PMM14-3的输入和PMM 14-4的输出连接到总线24-2。另外,CPU 12还关断置于PMM 14-2和PMM 14-3之间的总线24-1和24-2上的开关30-5和30-6。在图8中,黑圈表示连续状态,而白圈表示不连续状态和不与PMM连接。此外,其余的一些遵循其他PMM(未示出)的状态。注意在图8的示例中可以了解到通过关断开关30-5和30-6将总线24-1和24-2分割可以更有效地利用总线。
这样,如图9示意地示出,PMM之间的连接由CPU 12确定。并且顺序号赋予的主体是在PMM对之间执行。
图10A至12C只示出PMM 14-1和PMM 14-2的处理,但PMM14-3和PMM 14-4的处理也并行地执行。注意在处理中首先将数据给予另一个PMM的称为前PMM,而接受数据的(另一个PMM)称为后PMM。前PMM也可称为展示PMM,因为它展示元素或顺序号,而另一方面,后PMM也可称为确定PMM,因为它确定展示的顺序号。PMM对之中的哪一个都可以是前PMM。在此示例中,为方便起见,将PMM 14-1作为前PMM,而将PMM 14-2作为后PMM。
首先,在前PMM中,指示处理位置的指针(以后称其为“PUT指针”)置于初始位置(排序数组部分的开始处或“第0”位置)。另一方面,在后PMM中,如下所述,从前PMM接受的元素和首先指示待比较位置等等的指针(以后称其为“比较指针”)置于初始位置(排序数组部分的开始处或“第0”位置)。(见图10A和图13A及图13B的步骤1301和1311)。在此具体实施方式中,在后PMM中使用的比较指针是形式(X,Y,Z)的结构数组。此处,X表示待比较的开始位置(即还有待比较的元素的开始位置,以后称其为“未处理部分”),Y指示从前PMM接受的元素的总数(根据情况以后称其为“前向***数”),而Z是在归并前PMM和后PMM时所得到的虚拟数组中的前PMM给出的用于元素的建议顺序号(根据情况称为“虚拟顺序号”)。
之后,由前PMM的处理器执行初始数据传送。在此数据传送之中,在PUT指针指示的位置处的元素经总线传送到后PMM(见图10B和步骤1303和1312)。注意在步骤1302中的分支中,在两个PMM之间进行处理时结果永远是“是”,不过这一点将在下面讨论。在此第一数据传送中,元素“ Carter”传送到后PMM。后PMM找出传送到的元素“Carter”在存储于后PMM中的数组的部分的应该***的位置(步骤1313)。这并不需要数值实际***,而是只要找到元素该***的位置就足够了。在此具体实施方式中,存储于数组部分中的元素实际上是置于排序状态。因此,此***位置可藉助于平分法或其他高速搜索法找出。找到***位置就可以识别位于***位置之前的顺序未定的元素范围(以后称其为“范围1”)。注意在此具体实施方式中,这里有一个约定,在元素是同一元素的场合,后PMM的顺序优先。所以,在由前PMM传送来的元素“Carter”在后PMM中存在时,当存储于后PMM中时此顺序优先(即具有较小的顺序号)。
在此示例中,可以看到由前PMM传送来的元素“Carter”位于由后PMM管理的数组部分内元素“Carter”之前,于是可以看到属于范围“1”的元素不存在(见图10C和步骤1314中的“是”)。之后,后PMM的处理器将传送来的元素“Carter”的顺序号设置为“0(即开始处)”并将其返回给前PMM(步骤1315)。之后,后PMM的处理器使前向***数递增到“1”并且也将虚拟顺序号增加到“1”(步骤1316)。这是因为,由于从前PMM传送的元素数增加了1,就必须使前向***数递增,并且下一个元素的顺序号至少就此时给出的数值(在此场合为“0”)必须递增。
当顺序号(元素***位置)由后PMM给定时(步骤1332),前PMM的处理器将给定的顺序号作为所述该元素的顺序号存储(步骤1334),并且之后使PUT指针递增(见图11A和步骤1335)。这样,就确定了前PMM内的元素的次序。
之后,前PMM的处理器经总线将在PUT指针指示的位置的元素“Smith”传送到后PMM(见图11B和步骤1303)。与前面传送元素“Carter”的方式相同,后PMM找寻所传送的元素“Smith”要***的位置(步骤1313)。可以看到,元素“Smith”是位于由后PMM管理的数组部分中的元素“Monroe”之后(见图11C和步骤1314中的“是”)。从而,在由后PMM管理的数组部分中可以确定元素“Monroe”和位于其前的元素的数,以及各个元素的次序。特别是,后PMM的处理器通过下面的进程确定上述元素的次序。
首先,将前向***数“Y”加到属于包含在范围“1”内的元素的每个顺序号上(步骤1317)。从而可确定包含在范围“1”内的元素的次序。在上述示例中,元素“Carter”的顺序号变为“0+1=1”,而元素“Monroe”的顺序号变为“1+1=2”。之后,将包含在范围“1”内的元素中的最后元素的顺序号替换虚拟顺序号(步骤1318),未处理位置变为范围“1”中最后元素后面下一个元素的位置(步骤1319)。在上述示例中,元素“Monroe”的顺序号“2”是在比较指针(结构数组)的Z中给出,并且未处理位置从“0”变为“2”。从而结构数组变为(2,1,2)。
在此进程之后,结构数组内的前向***数“Y”和虚拟顺序号“Z”递增(步骤1320)。从而结构数组变为(2,2,3)(见图11D)。在步骤1320中取得的虚拟顺序号变为在步骤1312中取得的元素的顺序号(在上述示例中,为“Smith”),并且后PMM的处理器将所述该顺序号(在上述示例中,为“3”)传送到后PMM(步骤1321)。在此进程之后,虚拟顺序号再递增(步骤1322)。这是因为下一个元素的顺序号变为至少比此时给定的顺序号大1之故。
前PMM存储将接收到的顺序号作为所述该元素的顺序号存储并使PUT指针递增。这样就确定了前PMM中的顺序号。
当在前PMM中没有未处理的元素时(就是说,对所有的元素都确定了顺序号并且没有元素置于PUT指针的位置),前PMM的处理器将一个指示结尾的值传送到后PMM(见步骤1306)。此处,“指示结尾的值”是一个大于指示数组的结尾处的元素的值。响应此上述指示结尾的值,后PMM执行一个几乎与此进程等同的进程(图13B中的步骤1312-1322)。在上述示例中,不管是否接收到指示结尾的值,不存在包含在范围“1”中的元素,所以处理经步骤1315和1316达到步骤1323而结束(见图12B)。
在前PMM中,通过发送指示结尾的值(见步骤1316)和确定所有元素的顺序号(步骤1336中的“是”),处理结束。
PMM 14-3和PMM 14-4之间的归并的执行是藉助类似于上述进程的进程,并且于是每个元素的顺序号的确定就如图12C所示。
当在两个PMM中确定了每个元素的顺序号时,CPU 12改变开关的位置将每个都是由两个PMM组成的PMM组连接。图14A和图14B为示出属于示于图8中的存储器模块的两个存储器模块组之间的连接示例的示图。在图14A中,PMM 14-1和14-2组成第一PMM组,而PMM 14-3和14-4组成第二PMM组。CPU 12控制开关28和30使PMM 14-1和14-2的输出连接到PMM组14-3的输入,PMM 14-3的输出连接到PMM 14-4的输入,而PMM 14-4的输出连接到PMM 14-1和14-2的输出(见图7的步骤709)。另外一种方式是,如图14B所示,可控制开关使PMM 14-1和14-2的输出连接到PMM 14-3和14-4。
图15A和15B为分别示出示于图14A和14B的连接的示例的示意图。正如以后会了解到的,在图15A中,由PMM 14-4给到PMM 14-1和14-2的数据(图中的符号(1))指示顺序号,由PMM 14-1和14-2给到PMM 14-3的数据(图中的符号(2))指示元素,而由PMM 14-3给到PMM 14-4的数据(图中的符号(3))指元素和虚拟顺序号。此外,在图15B中,在PMM之间交换的数据(1)和(2)与图15A中的相同,并且另一方面从PMM 14-3传输到PMM 14-4的数据(符号(3))指示由PMM14-3计算的虚拟顺序号。
下面描述归并两个PMM组的进程和根据两对PMM中的数组部分确定一个数组的顺序号和其中包含的元素的顺序号的进程,如上述图12A至12C所示(见图7的步骤709)。注意,在下面的描述中,每个PMM中执行的进程都是根据在图14B和15B中指示的连接状态描述的。
首先,分别在PMM 14-1和PMM 14-2中(以后称其为“前PMM组”),将PUT指针置于初始位置(步骤1301)。注意,在其后的进程中,组成前PMM组的PMM中每一个都根据它自己控制的元素的发送来移动PUT指针。另一方面,后PMM中的每一个在其结构数组初始化时都将比较指针置于初始位置(步骤1302)。之后,在组成前PMM组的PMM中的每一个之中,当前,组成前PMM组的PMM都确定被发送的元素的顺序号。
注意,在流程图中,发送时使用的发送指针和接收指针都用作PUT指针,但是根本上这些发送和接收指针的移动夹在后PMM组的处理时间之中,但是其执行只有微小的时间差。比如,如后所述,当在某个PMM中发送指针递增时(见步骤1304),所述该PMM也使接收进程中的接收指针递增(步骤1335)。
组成前PMM的PMM确定所述该元素是否由其自己根据待处理的元素的顺序号进行控制(步骤1302)。如步骤1302的结果是“是”,就通过总线24将PUT指针指向的元素传送到PMM 14-3和14-4(见图13A和图16A的步骤1302)。在上述示例中,顺序号为“0”的元素“Carter”由PMM 14-1传送到PMM 14-3和PMM 14-4。藉助这一进程PUT指针的位置在PMM 14-1中移动(步骤1304)。
PMM 14-3和PMM 14-4每个都接收元素(步骤1312),寻找这些元素应该***的位置(步骤1313)并确定属于范围“1”的元素是否存在(步骤1314)。对于上述的元素“Carter”,步骤1314的结果是“否”。
因而,在PMM 14-3中,元素“Carter”的虚拟顺序号变为“0”,于是此值传送到PMM 14-4。在PMM 14-4中元素“Carter”的虚拟顺序号也变为“0”。这样,PMM 14-4的处理器经总线向前PMM组组返回“MAX(0,0)=0”作为元素“Carter”的顺序号(见图16B和步骤1315)。之后,在PMM 14-3和14-4中,结构数组内的前向***数(Y)和虚拟顺序号(Z)每个都递增(步骤1316)。在上述示例中,每个的结构数组就都变为(0,1,1),(0,1,1)。
当由后PMM组给出顺序号时(步骤1331),组成后PMM组的PMM确定当前正在处理的元素(比如,元素“Carter”)是否是其自己控制的元素(步骤1333)。在元素“Carter”的顺序号传送时,PMM14-1发现上述步骤1333的结果是“是”,并且利用由后PMM组给出的顺序号代替与处于该位置的元素相应的顺序号(见图16A和步骤1334)。
同样,后PMM组传送被赋予下一个顺序号的元素到后PMM。在上述示例中,元素“Carter”从P MM 14-2发送(见图17A),并且每个后PMM组的那些具有更高虚拟顺序号“MAX(1,1)=1”的传送到前PMM组组作为所述该元素“Carter”的虚拟顺序号(见图17B)。此外,在组成后PMM组的PMM 14-3和PMM 14-4中,结构数组分别变为(0,2,2)和(0,2,2)(见图17B)。
另外,前PMM组组传送被赋予下一个顺序号的元素到后PMM。在上述示例中,元素“Monroe”从PMM 14-2传送(见图18A)。在PMM 14-3中,元素“Monroe”确定为在由所述该PMM 14-3控制的元素“Kennedy”的后面(见步骤1313)。因此,在PMM 14-3中,由于元素“Gore”和元素“ Kennedy”属于范围“1”,前向***数“Y(=2)”分别加到元素“Gore”和元素“Kennedy”顺序号上。由此,元素“Gore”的顺序号确定为“0+2=2”,而元素“Kennedy”的顺序号确定为“2+2=4”(见步骤1317)。之后,PMM14-3的处理器设定结构数组的虚拟顺序号Z(当前值为(0,2,2))为范围“1”内的结尾元素的虚拟顺序号“4”(见步骤1318)并使未处理位置前进(即将X的值从“0”改变为“2”)(见步骤1319)。另外,PMM 14-3的处理器使结构数组的前向***数“Y”和虚拟顺序号“Z”递增(当前值是(2,2,4))(见步骤1321)。从而此结构数组变成为(2,3,5)。PMM 14-3中的虚拟顺序号“Z(=5)”经总线传送到PMM 14-4。其后,PMM 14-3中的处理器使结构数组的虚拟顺序号“Z”递增(见步骤1322)。在上述示例中,结构数组通过执行步骤1322变成为(2,3,6)。
另一方面,在PMM 14-4中,元素“Monroe”确定为位于所述该PMM 14-4控制的元素“Johnson”和“Wilson”中间(见步骤1313)。因此,在PMM 14-4中,元素“Johnson”属于范围“1”,所以前向***数“Y(=2)”加到元素“Johnson”的顺序号上,并且这样元素“Johnson”的顺序号就确定为“1=2=3”(见步骤1317)。之后,PMM 14-4的处理器设定结构数组1虚拟顺序号“Z”(当前值为(0,2,2))为范围“1”内的结尾元素的顺序号“3”(见步骤1318),并使未处理位置前进(即将X的值从“0”改变为“1”)(见步骤1319)。另外,PMM 14-4的处理器使结构数组的前向***数“Y”和虚拟顺序号“Z”递增(当前值是(1,2,3))(见步骤1321)。从而此结构数组变成为(1,3,4)。
其后,PMM 14-4比较由PMM 14-3给出的虚拟顺序号“Z(-5)”与由它自己计算出的虚拟顺序号“Z(=4)”,求出更大值“MAX(5,4)=5”并将其传送到前PMM组组作为传送的元素“Monroe”的次序。从而在前PMM组组中(更具体地说,是在发送了元素“Monroe”的PMM 14-4中),所述该元素的顺序号确定为“5”。注意,还是在PMM 14-4中,在步骤1321后,结构数组中的虚拟顺序号“Z”递增(见步骤1322)。在上述示例中,结构数组变为(1,3,5)。
元素“Smith”以同样的方式从前PMM组组发送(图19A),但在此场合的进程也按照图13A-13C执行。为了再对其简略描述,接收元素“Smith”的PMM 14-3在元素“Smith”的***位置的前面没有属于范围“1”的元素存在,所以PMM 14-3将其结构数组内的虚拟顺序号“Z(=6)转送到PMM 14-4。PMM 14-4在元素“Smith”的***位置的前面也没有属于范围“1”的元素存在,所以它比较其结构数组内的虚拟顺序号“Z(=6)”与如此传送到虚拟顺序号“Z(=6)”,求出更大值“MAX(6,5)=6”并将其传送到前PMM组组作为传送的元素“Smith”的次序(见图19B和步骤1315)。在前PMM组中,发送元素“Smith”的PMM 14-1以接收到的顺序号(=6)改写与元素“Smith”相应的顺序号。注意,在PMM 14-3中,通过步骤1316,其结构数组变为(2,4,7),并且,另一方面,在PMM 14-4中,通过步骤1316,其结构数组变为(1,4,6)。
这样,当前PMM组中的所有元素发送结束时,组成前PMM组的PMM之一将一个指示结束的值传送到后PMM组(见步骤1306)。组成后PMM组的PMM中的每一个都接收这个值并执行步骤1312和1323的处理。在上述示例中,次序未定的元素“Wilson”存在于PMM14-4中。由于这一原因,在PMM 14-4中,当步骤1314的结果为“是”时,前向***数“Y”加到属于范围“1”的元素“Wilson”的顺序号上以给出“3+4=7”,并且这样得出的“7”就设定为元素“Wilson”的顺序号。在通过这一进程之后,组成后PMM组的PMM中的每一个都在步骤1323中得到结果“是”,并且进程也在后PMM组中结束。
在上述示例中,数组内的元素是存储于4个PMM中,但是即使是在元素是存储于大量PMM中的情况下,准备各由4个PMM组成的附加的PMM组对并在这些组对之间执行类似的进程也就足够了。比如,考虑如图20上述的情况,其中某一个数组内元素是存储于1024个PMM中。在此场合,首先PMM 1和PMM 2,PMM 3和PMM 4,PMM 5和PMM 6,...,PMM 1023和PMM 1024互相连接(见PMM之间的实线),并且元素的顺序号在这些两个PMM之间确定,之后由PMM 1和PMM 2组成的一对PMM组形成前PMM组,PMM 3和PMM 4形成后PMM组,由PMM 5和PMM 6组成的一对PMM组形成前PMM组,PMM 7和PMM 8(未示出)形成后PMM组,...,由PMM 1021和PMM 1022组成的一对PMM组形成前PMM组,PMM 1023和PMM 1024形成后PMM组,并且这些组对互相连接(见虚线),而元素的顺序号在组成这些组对的PMM组之间确定。之后,由4个PMM组成的PMM对形成前PMM组,而其后的4个PMM形成后PMM组(见点划线),并且之后由8个PMM组成的PMM对形成前PMM组,而其后的8个PMM形成后PMM组(见点线),并且依此类推顺序形成各由2n个PMM组所组成的PMM组的组对,之后在其间确定元素的顺序号。最终,在1024个PMM内的所有元素的顺序号可通过确定由包含512个PMM的前PMM组和包含512个PMM的后PMM组的PMM组对内的元素的顺序号而确定。
这样,通过形成各由2n个PMM组所组成的PMM组的组对和其后确定存储于组成组对的PMM组的每个PMM中的元素的顺序号(见图7的步骤709和710),最终可确定所有元素的顺序号(在步骤710中的结果为“是”),并且其后,如需要,可根据上述顺序编号方式执行数组重整进程(见步骤711)。这一进程不是强制性的,不过通过生成其中元素按照顺序号排列的数组以后可以高速执行待执行的信息处理。
更具体地说,CPU 12控制开关28和30以使个PMM的输入和输出由某一总线连接。图21为示出在4个PMM之间的连接情况的示图。之后,PMM 14-1至PMM 14-4的处理器根据所取得的顺序号向总线释放元素和顺序号。每个处理器都监视释放到总线的元素及其顺序号,获取具有顺序号与原来由其固有RAM核心管理的元素下标(记录号)相同的顺序号的元素,并将其存储于RAM核心的合适区域。比如,对于原来将带有下标(记录号)“0”和“1”的元素存储于其固有RAM核心(比如,见图10的PMM 14-1)的PMM,获取标记有顺序号“0”和“1”的元素并将其存储就可以了。这样做,每个PMM就可以管理实际存储的数组。注意,这样一来,PMM的处理器在生成存储数组时还将生成空间ID控制表。
另外一种方式是,如图22所示,令其他PMM(PMM 14-5至PMM14-8)管理所存储的数组以使其他PMM中的每一个都监视顺序输出的元素及其顺序号,根据顺序号获取要由其自己存储的元素并将其存储于每个PMM的RAM核心中就足够了。
比如,考虑利用上述本发明提供1024个PMM,在每个PMM中存储大约1百万个数据(元素)并且执行此数据排序的场合。在此场合,排序完成需要的时间如下。此处,我们假定连接PMM的总线中的每一根都具有6.4GB/s的数据容量,在处理时所有的PMM都并行运行(即不存在不执行进程的PMM),并且所有相关的PMM都可协同并同时运行。此外,假设在每个PMM中完成大约1百万个数据(元素)的排序的时间为2.5秒。在此场合,可以看到对包含在1024个PMM中的大约10亿个元素进行排序只需要大约4秒钟。
藉助于这一具体实施方式,在开始时PMM分割为由2个PMM组成的对,之后在进一步分割为各由2n个PMM组所组成的PMM组,并且之后确定在每个对之中的顺序号。另外,通过利用开关等等来调节应用于每个对的总线,就可以在各对之间并行执行顺序号的确定。此外,通过重复自前PMM组向后PMM组发送元素的进程和根据后PMM组内的结构数组中的值建立顺序号,可以在所有的对中建立顺序号。因此,处理可以以极端并行的方式执行而不会生成任何不执行任何处理的PMM(所谓的“空闲”P MM),并且也可以减少利用总线传送的数据量。这就允许显著提高排序的速度。
注意,在上述具体实施方式1中,如图14B和15B所示,排序是通过连接PMM和在其中间向元素赋予顺序号而执行的,不过PMM也可以连接成如图14A和15A所示。在此场合,图13B(步骤1312至1323)中的后PMM组的处理不是并行执行的,而是每次在某一个PMM中取得一个虚拟顺序号,待处理的元素和所述该虚拟顺序号是传送到邻接的PMM,并且步骤1312至1323是在此PMM中执行。因此,随着组成后PMM组的PMM的数目的增大,有时候这会导致处理产生相当的延迟。
[其他排序(具体实施方式2)]
下面对本发明的具体实施方式2予以描述。在上述具体实施方式1中,所有元素(在前PMM组内的元素)都是传送到后PMM组。然而,随着数组的增大,可能出现大量的重复值。在采用根据具体实施方式1的技术时,取同样数值的元素被多次发送到总线。依情况的不同,可以认为反复发送具有同一数值的元素是一种浪费。于是,在具体实施方式2中,是预先计数PMM组内的元素数,并且通过在向后PMM组发送元素的同时一起发送元素数,可以防止经总线反复发送重复元素。
比如,考虑4对PMM的排序已经完成并且这些对相互连接来执行8个PMM的排序的场合。在此场合,如图23所示,最好是能够利用一根用来执行8个PMM的归并和排序的总线(此总线位于图23中的PMM的下方;见符号2301至2303)并且在元素之间交换数据。下面描述在如图23所示的连接模式中PMM 14-1至PMM 14-4(以下,为方便起见,“PMM 14-1”至“PMM 14-4”分别称为“PMM1”至“PMM 4”)中的数值的冗余度的计算。此处,连接PMM 1至PMM 4的输入/输出终端(I/O)的总线(见符号2304)称为第1总线,而连接PMM 1至PMM 4的其他输入/输出终端(I/O)的总线(见符号2305)称为第2总线。第1总线用来交换用于PMM 1至PMM 4组成的PMM组的信息,而第2总线用来向各PMM给出数值及其冗余度。
注意,在下面的描述中,如图25所示,在PMM 1至PMM 4的数组内计算对于它们顺序号已经附加到每个元素的那些(值)的冗余度。就是说,只对前PMM组计算冗余度就足够了。图24为示出在PMM中计算冗余度的进程的流程图。PMM 1至PMM 4的每一个都首先执行各初始化进程(步骤2401)。此处,每个PMM具有一个顺序号计数器用来指示待处理的值(元素),一个等同值计数器用来指示某一个数值(元素)有多大的冗余度,以及一个用来保持待处理的前值(元素)的前值存储寄存器,并且将顺序号计数器和等同值计数器的初始值设定为“0”(见图25)。
其次,每个PMM都参照此顺序号计数器来确定待处理的元素的顺序号,并确定应用此顺序号的元素是否是它自己管理的元素(步骤2403)。在上述示例中,顺序号计数器的数值的初始值为“0”,所以PMM 3确定它自己管理的一个元素有待处理(步骤2403中的“是”)。注意,其后的步骤2404-2405在初始处理(即对具有顺序号为“0”的元素的处理)中不考虑。PMM 3确定在其自己内部有多少与具有顺序号为“0”(在此场合,“Carter”)的元素等同的元素(即PMM 3管理多少等于“Carter”的元素),并将元素“Carter”发送到第1总线,以及本地PMM内部计数,此计数指示这些元素中它有多少(步骤2406)。另一个PMM(PMM 1,PMM 2和PMM 4)在步骤2403中得到的结果是“否”,于是就前进到步骤2407。
每个PMM都接收经过第1总线给出并根据本地PMM内部计数的数据,将PMM内部计数加到顺序号计数器的数值上(步骤2408)。在上述示例中,顺序号计数器的数值变为“0+1=1”。之后,确定给定值是否与前值存储寄存器中的数值不同(步骤2409),并且如两者等同,则本地PMM内部计数加到等同值计数器的数值上(步骤2410),另一方面,如是一个新的数值,就执行后述的替换进程(步骤2411)。注意,在此初始迭代中,前值存储寄存器没有数值,所以上述的步骤2409省略,而元素存储于前值存储寄存器中,并且等同值计数器也递增。所以,在上述示例中,每个PMM在前值存储寄存器中存储所接收到的元素“Carter”,并将等同值计数器设定为“0+1=1”(见图26)。
重复这些步骤2401至2411的处理并且当最后元素的处理完成时,步骤2401的结果为“是”,于是处理前进到步骤2412。
在上述示例中,当第1步骤2401至2411的处理完成时,每个PMM都参照顺序号计数器的值并确认此值为“1”。从而PMM 4了解它管理带有顺序号为“1”的元素。此外,PMM 4比较前值存储寄存器的值(元素“Carter”)和具有顺序号为“1”的元素“Carter”(步骤2404),并且值不改变,所以它通过第1总线发送元素“Carter”和本地PMM内部计数“1”(步骤2405)。如图27所示,经过第1总线接收数据的PMM使顺序号递增(1+1=2)(步骤2408),并且因为存储于前值存储寄存器中的值与接收到的元素等同,它们使等同值计数器递增(1+1=2)(步骤2410)。
之后,在每个PMM中执行对带有顺序号“2”的元素的处理。在对带有顺序号“2”的元素执行处理中,PMM 1保持一个元素,于是PMM 1比较元素“Clinton”与存储于前值存储寄存器的元素“Carter”。此处值有改变(在步骤2404中结果为“是”),所以PMM 1通过第2总线发送前值存储寄存器的内容(元素“Carter”)和等同值计数器的“2”(步骤2405)。寄存器的这一内容和计数器的值对各PMM给出。如后所述,当计算出某一元素(在此场合为元素“Carter”)的冗余度时,执行所述该元素的排序(?)(见图31A至31C)。因此,此元素及其冗余度可保持于个PMM中,一直到所述该元素的排序完成。
此外,元素“Clinton”及本地PMM内部计数“1”给到第1总线(步骤2406)。
根据经由第1总线给出的数据,PMM使顺序号计数器递增(2+1=3)(步骤2408)。此外,前值存储寄存器的值“Carter”不同于传送的元素“Clinton”(在步骤2409中结果为“是”),所以PMM替换(更新)前值存储寄存器的值并且也替换等同值计数器的值为经第1总线给出的本地PMM内部计数的值(见步骤2411和图28A)。
对带有其他顺序号的元素执行同样的进程。比如,对顺序号“3”PMM 3根据步骤2404和2406经过第1总线发送元素“Clinton”并且根据步骤2407,2408,2409和2410使各计数器递增(见图28B)。此外,对顺序号“4”PMM 1根据步骤2404,2405和2406经过第2总线发送元素“Clinton”并且根据步骤2407,2408,2409和2411使各计数器递增(见图29A)。
在处理顺序号“ 5”时,存在两个由PMM 2管理的“Johnson”,所以它经过第1总线发送元素“Johnson”和本地PMM内部计数“2”。因此,“2”加到顺序号计数器和等同值计数器的值上(见图29B)。此外,藉助此进程,顺序号计数器的值从“5”改变为“7”,因此,注意待处理的下一个元素的顺序号变为不是“6”,而是“7”。当具有顺序号“ 7”(见图30A)的最后一个元素的处理完成时,步骤2401的结果为“是”。于是,开始的PMM(在上述示例中为PMM 1),通过第2总线,发送元素“Johnson”和等同值计数器的数值“4”并经过第2总线发送指示处理已经结束的数据(步骤2414)。每个PMM都经过第2总线给予每个元素和指示元素数的计数,并且将这些应用于排序。注意,在上述示例中,开始的PMM的构成使得他执行步骤2413和2414,不过这并不是限制,因为对PMM而言预先规定最后元素等等,以及指示结束的数据就足够了。
如上所述,通过取得在某一PMM组内的现有各元素的数目,在将一个PMM组和另外一个PMM组归并并对其排序时,不需要发送重复的元素。
图31A至31C为示出在排序同时省略发送冗余元素的的流程图。图31A至31C与图13A至13C等同,只有某些例外,所以后两位数字相同的步骤是大致相当的进程。此外,在图31A至31C中有双线环绕的步骤是新添加的步骤或是与图13A至13C中的相应步骤略有不同的步骤。在此进程中,在前PMM组中,管理待处理元素(即由发送指针指向的元素)的PMM向后PMM组发送该元素同时一起发送前PMM组中的该元素的冗余度(数存在)“N”(见步骤3103和3103-2)。在示于图25至30B的示例中,例如,当元素“Carter”从PMM 1至PMM 4组成的前PMM组发送到后PMM组时,元素“Carter”是与前PMM组中的元素“Carter”一起传送的。此外,在前PMM组的发送进程中,输出元素及其冗余度的PMM在输出后将输出指针移动,移动数等于它自己管理的所述元素的数(步骤3104)。比如,如图28所示,元素“Carter”的冗余度是“2”,并且这些在PMM3和PMM 4中各管理一个。因此,第2指针的位置在PMM 3和PMM4中各下降一个。注意,在PMM中的发送指针的移动和等于所述该元素的冗余度“N”。
另一方面,组成接收元素及其冗余度的后PMM组的PPM将冗余度“N”添加到前向***数和虚拟顺序号,如图31B中的步骤3116和步骤3120所示。这相应于有“N”个元素(带有小顺序号)位于其自身前面的场合。
此外,在组成后PMM组的PMM的接收进程中,在前PMM的发送进程中发送的元素(待比较数据)和在处理中由后PMM发送的顺序号用于计算接收到的顺序号和待比较数据发送时的顺序号的差值“M”(步骤3132-2)。这一差值“M”指示位于待比较元素之前的元素数(如顺序号小于所述该元素)。因此,组成后PMM组的PMM在由其自己管理的元素中识别与所述该待比较元素等同的元素(步骤3132-3),并且如存在,就在只写元素各自的顺序号上加上“M”(步骤3134)。在步骤3134之后,PMM移动接收指针,移动数等于所述元素数(步骤3135)。这一进程大致与步骤3104等同。
下面描述示于图24的冗余度计算中和示于图31A至31C的排序(依情况有时称为自排序)中的并行操作。如图23所示,在此具体实施方式中,在冗余度计数中涉及的PMM之间的通信是利用总线2304和2305执行的,而在执行自排序中涉及的PMM之间的通信是利用总线2301,2302,2303等等执行的。为此目的,如在PMM中并行处理可行,则冗余度计数和自排序可以并行执行。在此场合,当在前PMM组中的某一个元素的冗余度计算(比如,如图28A所示),元素“Carter”及其冗余度“2”经由第2总线发送并且当由组成前PMM组的PMM(PMM 1至PMM 4)接收到时,在图31A至31C中所示的进程可对计算其冗余度的元素执行。就是说,响应对某一元素的冗余度的计算,可以执行对所述该元素执行步骤3102-3104,步骤3112-3122和步骤3132-3135的处理。此外,在示于上述图31A-31C的处理中间,某一元素及其冗余度可以一起删除而完成针对所述该元素的那些进程。因此,在组成前PMM组的每个PMM中,并非所有与元素及其冗余度(其量随着不同元素数的增加而增大)有关系的数据都需要保留。
这样,在具体实施方式2中,后PMM组计算冗余度并发送元素及其冗余度到后PMM组。因此,前PMM组必须冗余地发送同一元素到后PMM组。在冗余等同元素数大的场合(比如,当一个元素指示人的性别,或人的年龄等等),可以减少自排序处理的次数,于是排序可以以更高的速度进行。
[汇编(具体实施方式3)]
下面描述本发明的具体实施方式3。在具体实施方式3中,根据由置于各PMM内的元素组成的数组,形成(?)记录,无重复元素的数值表,以及用来由记录指定数值表的指针数组。在此说明书中,这一进程称为汇编。
比如,当某一数组的元素在4个PMM(PMM 1至PMM 4)之间分割时,将PMM按照图32所示连接就足够了。如图32所示,PMM 1至PMM 4的输入/输出引脚(I/O)由第1总线连接(见符号3201),而另一方面,PMM 1至PMM 4的输出引脚(O)和另一PMM“k”的输入引脚(I)连接到第2总线(见符号3202)。
第1总线用于与PMM 1至PMM 4组成的PMM组交换信息,而第2总线用于将元素及其冗余度给予另一PMM“k”。在此具体实施方式中,根据上述元素及其冗余度,在另一PMM“k”中形成数值表和计数数组等等。注意,此PMM“k”可以是PMM 1至PMM4以外的PMM,当然也可以是PMM 1至PMM 4中的一个。
图33为示出根据本具体实施方式3的汇编的流程图。注意,为了简化描述,考虑元素在PMM 1至PMM 4之间如图34A那样分割并且其间顺序号的赋予进程已经执行。首先,每个PPM都有一个指示待处理的值(元素)的顺序号的顺序号计数器,一个指示处理后的所述该值(元素)的顺序号的值-号计数器,一个指示有多少所述该元素的冗余复件存在的等同值计数器以及一个保持待处理的值(元素)的前值的前值存储寄存器(见步骤3301和图34A)。注意,初始时前值存储寄存器无值保持。
之后,图33的步骤3302-3306的处理几乎与图24的步骤2401-2406等同。就是说,每个PMM都参照顺序号计数器,确定待处理的元素的顺序号,并确定应用此顺序号的元素是否是它自己管理的元素(步骤3303)。在图34A的状态,顺序号计数器的值为“0”,所以PMM 3生成一个本地PMM内部计数用来指示所述该PMM 3有多少在第2总线上的具有顺序号为“0”的元素(在此示例中为“1”)(见图34B的3306)。之后,PMM 3比较存储于前值存储寄存器中的元素与释放到第1总线的元素,并且如两者不同,就设定值-号计数器的值为好象它是发送到第1总线的顺序号(步骤3307)。注意,在图34A的状态中,值-号计数器的值是初始值“0”,所以应用于元素“Carter”的顺序号不改变(见图34B)。
之后,每个PMM 3都接收经过第1总线给出(步骤3308)的数据。步骤3308-3311的处理几乎与图24的步骤2408-2411的处理等同。就是说,每个PMM将PMM内部计数加到给定的顺序号计数器的数值上,并且,如元素不是给定的数据中的新元素(步骤3310中为“否”),则将此PMM内部计数添加到等同值计数器的值上(见步骤3311和图34B)。如图34A和34B所示,当带有顺序号“0”的元素“Carter”的处理完成时,带有顺序号“1”的元素的处理以同样的方式执行(见图35A)。
下面,执行带有顺序号“2”的元素的处理。此处,PMM 1比较存储于前值存储寄存器中的元素“Carter”与带有顺序号“2”的元素“Clinton”。此处,它们是不同的(在步骤3304中结果是“是”),于是PMM 1经第2总线发送存储于前值存储寄存器之中的元素和等同值计数器的值(步骤3305)。之后,PMM 1经第1总线发送待处理的元素“Clinton”和本地PMM内部计数“1”(步骤3306)。其后,PMM 1比较存储于前值存储寄存器之中的元素和释放到第1总线的元素。在释放元素“Clinton”的场合,这些是不同的,于是将元素“Clinton”的顺序号设定为加上“1”(0+1=1)的值-号计数器的值。
每个PMM接收经第1总线给出的数据(步骤3308)并在接收到的数据中将本地PMM内部计数加到顺序号计数器的值之上(2+1=3)(见步骤3309和图35B)。在给出元素“Clinton”的场合,前值存储寄存器的元素“Carter”与给出的元素“Clinton”是不同的(步骤3310的结果为“是”),于是每个PMM执行新-值登记进程(步骤3312)。在此进程中,值-号计数器的值递增(0+1=1),等同值计数器的值改变为接收数据内的本地PMM内部计数“1”,并且前值存储寄存器的内容重写为元素“Clinton”(见图35B)。
对带有顺序号“3”的元素“Clinton”执行同一进程。比如,PMM 3可经第1总线发送元素“Clinton”和本地PMM内部计数“1”(见步骤3306)并且设定所述该元素“Clinton”的顺序号为值-号计数器的值“1”(见步骤3307和图36A)。此外,每个PMM在顺序号计数器的值上加上接收到的本地PMM内部计数“1”(见步骤3309)并且也在等同值计数器的值上加上本地PMM内部计数“1”(见步骤3311和图36A)。另外,如图36B所示,关于带有顺序号“4”的元素“Johnson”也一样,PMM 1经第2总线发送元素“Clinton”和等同值计数器的值“2”(步骤3305),并经第1总线发送元素“Johnson”和本地PMM内部计数“1”(步骤3306),并且设定元素“Johnson”的顺序号为设定为加上“1”(1+1=2)的值-号计数器的值。另一方面,每个PMM执行次序-值计数器递增和新-值登记进程(步骤3309和3312和图36B)。对带有其他顺序号的元素执行同一进程。各元素的处理示于图37A和图38A。注意,关于图38,PMM 1经第1总线发送最后一个元素“Johnson”和那些元素的计数并经第2总线发送指示结束的数据(见步骤3315)。
如上所述,PMM“k”的输入与第2总线连接。因此,非冗余元素和与其相关的值-号计数器的值经第2总线给出。因此,PMM“k”接收它们并将接收到的严肃顺序地置于数值表中并且还将接收到的值-号计数器的值顺序地置于计数数组中。图39A为数值表和在PMM“k”内部生成的计数数组的示图。这些是在步骤3305或步骤3314中发送(见图35B,图36B和图38)并传送到PMM“k”。如图39A所示,元素置于无冗余数值表中,而指示每个现有元素数的计数(即冗余度)置于计数数组中。
另外,在PMM 1至PMM 4中可以生成一个指示记录和应用于每个无冗余元素的顺序号的指向数值表的指针数组。就是说,通过生成一个指示记录和应用于与所述该记录相对应的元素的顺序号之间的相应关系数组,可以使其成为指向此数值表的指针数组(见图39B)。在图39B中,关于记录“0”,相应元素的顺序号“2”变为指向数值表的指针数组中的指针值。这指示,在数值表中(见图39A),待指向的数值是存储位置号是“2”。就是说,根据指向数值表的指针数组中的指针值,可指向存储于PMM“k”中的数值表,并且从而可以从记录识别元素。
藉助于如上描述的本具体实施方式,在PP之间分割的任何数组的元素被存储并被给予顺序号,并且此次序被重赋值以使同一次序赋予同一元素。求出元素和一个新取得的非冗余次序之间的对应关系并将元素存储于数值表中。所述该次序是指向数值表的指针数组和分割数组内的元素之间的对应关系。因此,可以根据记录通过指针数组内的指针值识别数值表内的元素。
[联结数值表(具体实施方式4)]
下面描述本发明的具体实施方式4。在具体实施方式4中,将两个数组联结。其前提是数值表和指向数值表的指针数组是通过汇编生成的。此外,一个空间ID应用于数值表和指向数值表的指针数组,并且有关由其自己管理的数组部分是由所述该空间ID管理。
图40为示出根据具体实施方式4的联结的流程图。
为简化描述,如图41A所示,考虑原始数据是一个由与在某个PMM组上分割的记录(见符号4100)相对应的元素所组成的数组的场合。汇编此记录组的结果是生成一个由指针数组(见符号4100)组成的数据块(以下称其为“信息块”)和一个在由PMM 1和PMM 2组成的PMM组中的数值表(见符号4102)。另一方面,由对应于记录(见符号4110)的元素所组成的其他数组在其他PMM组之间分割,并且通过汇编,由指针数组(见符号4111)组成的信息块和数值表(见符号4112)在PMM 3和PMM 4组成的数组中生成。
CPU 12向每个PMM传送一个命令将数值表与指示两个数值表的数组的空间ID相联结的指令。在PMM之间,其中待联结的数组是它们自己管理的数值表,或其一部分,的PMM根据空间ID识别待联结的数值表(见步骤4001和图42A)。其次,PMM 1至PMM 4在两个数值表被归并并且将顺序号赋予元素的状态下对其进行排序(步骤4002)。根据具体实施方式的排序可用于这一排序。在上述示例中,首先,元素的顺序编号是对由PMM 1和PMM 2组成的第一PMM组和由PMM 3和PMM 4组成的第二PMM组执行,通过取第一PMM组为前PMM组和取第二PMM组为后PMM组而将顺序号应用于两个组内元素。图42B为示出顺序号以这种方式应用于元素的状态的示图。
之后,对其中待处理的数值表是分割的PMM执行汇编以便在另外的PMM中或在PMM 1至PMM 4之一中生成一个联结数值表和联结计数数组(步骤4003)。就是说,执行汇编可得到一个其中的归并数值表的元素不是冗余元素的新的数值表和一个包含指示存在有多少重复元素的计数的计数数组(见图42C)。在这一进程之后,需要一个新的指针来指向联结的新数值表(即通过汇编得到的数值表)。这一点可通过生成一个存储与通过汇编得到的顺序号数组相对应的顺序号的新的指针数组而做到,上述顺序号指示在联结之前在与所述该指针数组内的指针值的位置相对应的位置的信息块中的指针数组内的指针值。在上述顺序号数组内的数值理解为与应用于元素的新顺序号相对应(见图42C)。
如图43A所示,比如,在指示第一指针值“1”的位置上的顺序号数组内的值(顺序号)是“2”,于是在联结后在指针数组内的相应位置的指针值变为“2”。此外,在指示第二指针值“2”的位置上的顺序号数组内的值(顺序号)是“3”,于是在联结后在指针数组内的相应位置的指针值变为“3”。这样,就可以得到用于联结数值表的指针数组(图43A和图43B)。
这样,可以了解,可利用新指针数组和联结数值表从记录识别此值(元素)。如图44A和44B所示,在新得到的指向数值表的指针数组内的相应的位置的指针值得到识别并且此指针值识别在由该值指示的位置上的数值表内的元素。此处,可以看到,同一元素的指定与在原始数据的元素中一样,即使是两个数值表已经联结。
这样,根据具体实施方式4,通过归并多个数值表并且将对归并数值表的元素排序和汇编相结合,可以对每一个数值表得到一个联结数值表和顺序号数组。顺序号数组的值(顺序号)可藉助用来从记录指定数值表的指针数组来识别并将所述该顺序号存储于与记录相应的位置,于是可根据记录得到新指针数组用来指定联结数值表。因此,就可以在大致为上述排序和汇编所需要的时间内将多个数值表联结,于是可显著增加处理速度。
本发明绝不限于上述具体实施方式,因为在权利要求的范围内可以有各种改型,并且,勿庸赘言,这些也包含于本发明的范围之内。
比如,虽然在上述具体实施方式中本发明是应用于计算机***,但这并不是限制,因为本发明也可应用于连接到个人计算机等等的计算机电路板。在此场合,在图1中,CPU 12,存储器单元14,总线24等等可安装于电路板上,从而组成根据本发明的信息处理单元。
此外,连接CPU 12和存储器模块14,和/或总线之间的总线的组数不限于上述具体实施方式中的数目,而是可以考虑安装计算机***的电路板的大小、各总线的位宽度等等适当地确定。此外,在上述具体实施方式中设置有用来设置存储器模块输入/输出和总线之间的连接的开关28及可以在CPU和存储器模块中间和存储器模块之间开关总线的开关30。通过设置开关29和开关30,比如,某一根总线(见图1的总线24-4)既可用于CPU模块12和存储器模块14-1中间的数据交换,也可用于存储器模块14-2和存储器模块14-3之间的数据交换(在此场合将开关30-5关断即可)。因此,总线可有效地利用。然而,在总线组数可以足够大的场合或在存储器模块数相对小的场合,开关30不一定需要设置。
此外,本说明书叙述的是来自CPU 12的指令是通过信号控制线25给出,但是除了指令之外,当然时钟信号或各种用来使各存储器模块同步工作的其他控制信号也可以通过信号控制线25给出,并且也可以给出从各种存储器模块到CPU 12的规定信号(比如,出错信号和指示数据收到的信号)。
另外,在上述具体实施方式中,示出了PMM之间的连接的各种示例,但是选择用来在PMM之间进行连接的总线和信号交换并不限于在上述具体实施方式示出的方式。
此外,在上述具体实施方式3中,如图32所示,第1总线(见符号3201)是用来实现PMM之间的通信,而第2总线(见符号3202)是用来实现元素和这些元素的计数(冗余度),但是这并非是一种限制。比如,如图45所示,生成一个没有冗余元素的数组数值表的PMM“k”及其计数数组可能可以监视第1总线4501并根据出现在第1总线4501上的元素及计数数组实行规定处理(比如,由PMM 1至PMM 4执行的计数器递增和寄存器的内容的存储/更新),从而生成数值表及计数数组。
另外,在此说明书中,一种装置的功能可能由两种以上的物理装置实现,或者是两种以上的功能可以由一种物理装置实现。
利用本发明,可以提供一种可以以极高速度执行数据排序、汇编和联结的信息处理装置。
本发明可应用于处理大量数据的***,比如,数据库和数据仓库中。更具体说,本发明可应用于大规模科学技术计算和排序管理及对任务很关键的行政工作。比如证券交易。
Claims (14)
1.一种分布式存储器型信息处理***,其构成包括:一个CPU模块;每个都具有一个处理器和RAM核心的多个存储器模块;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,并且其中
所述信息处理***的特征在于所述存储器模块的构成包括:
对组成数组的那些它自己管理的部分的元素执行排序并根据特定的顺序对所述元素重新排序的排序装置,
根据由其自身管理的所述部分在数组中所占据的位置将其I/O、通过规定总线将所述排序后的元素与其顺序号一起发送到另一个存储器模块或通过规定总线从另一个存储器模块接收所述元素及其顺序号的排序装置;
顺序号计算装置,此装置在接收到一个所述元素及顺序号时将其与由其自身管理的元素进行比较而计算出一个作为接收到的元素的顺序号的候选的虚拟顺序号,并且将其返回到所述另一个存储器模块;以及
顺序确定装置,此装置在接收到所述虚拟顺序号时根据所述虚拟顺序号确定元素的顺序;
结果所述数组的元素的顺序号是通过在发送所述元素及顺序号一方的展示存储器模块和在接收所述元素及顺序号并计算虚拟顺序号一方的存储器模块之间的通信来确定。
2.如权利要求1的信息处理***,其中所述存储器模块的构成包括:
元素识别/发送装置,用来根据确定的顺序号识别要处理的元素并将其通过总线之一进行发送;
元素比较装置,用来对前一个待处理的元素与发送的元素进行比较;以及
一个等值计数器,用来指示等同元素的计数并且其值在发送一个等同元素时递增;其中所述元素比较装置的构成使得当前一个待处理的元素被确定为与发送的元素不同时,此前一个待处理的元素与所述该元素相关的等值计数器的值相关联并且其一被送出,此外,并且
存储器模块之一接收前一个待处理的元素及如此发送的相关计数器的值,并且具有一个于其中使它们相关联并置于接收的顺序的数组。
3.如权利要求2的信息处理***,其中所述存储器模块的构成包括:
一个指示非冗余顺序号的值-号计数器,其值在所述元素比较装置确定前一个待处理的元素与发送的元素不同时递增;以及
顺序号更新装置,其作用为,对发送的元素而言,在前一个待处理的元素与发送的元素等同时将值-号计数器的值设定为所述该非冗余元素的顺序号,但如果它们不同,将值-号计数器的递增值设定为所述该非冗余元素的顺序号。
4.一种通过利用分布式存储器型信息处理***的数组排序方法,该***的构成包括:一个CPU模块;每个都具有一个处理器和RAM核心的多个存储器模块;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,并且其中
所述排序方法的构成包括:
(a)对组成数组的那些它自己管理的部分的元素执行排序的步骤,(b)根据由其自身管理的所述部分在数组中所占据的位置在管理所述数组的位置的存储器模块中间确定发送元素及顺序号一方的展示存储器模块,以及在接收所述元素及顺序号一方的确定存储器模块的步骤,
(c)在展示存储器模块中通过规定总线将排序后的元素与其顺序号一起发送到另一个存储器模块的步骤,
(d)在确定存储器模块中通过规定总线从另一个存储器模块接收所述元素及其顺序号的步骤,
(e)在所述确定存储器模块中,根据由所述确定存储器模块管理的元素的顺序号计算出指示一个接收到的元素的候选顺序号的虚拟顺序号,并且将所述虚拟顺序号返回到所述展示存储器模块的步骤,以及
(f)在所述展示存储器模块中,当接收到所述虚拟顺序号时根据所述虚拟顺序号更新元素的顺序号的步骤,以及
(g)在上述步骤(d)至(f)每一个步骤结束时,通过将属于藉助上述步骤(d)至(f)赋予一个规定顺序号的元素的展示存储器模块和确定存储器模块所组成的存储器模块组中的每一个分别取作展示存储器模块组和确定存储器模块组之一并且重复步骤(d)至(f)来更新每一个存储器模块组中的元素的顺序号,可确定数组中的每一个元素的顺序号。
5.如权利要求4的排序方法,其中所述步骤(e)的构成包括:
(e1)根据指示要在接收到的元素的前方***的元素数的前向***数,要置于前方的元素的顺序号,以及接收到的顺序号计算虚拟顺序号的步骤。
6.如权利要求4或5的排序方法,其中所述步骤(f)的构成包括:
(f1)将接收到的虚拟顺序号设置给在步骤(c)中发送的顺序号的步骤。
7.如权利要求4的排序方法,其构成还包括:
(h)在展示存储器模块中,计算指示在所述存储器模块组中有多少个由组成所述展示存储器模块组的存储器模块管理的元素的冗余度,
其中所述步骤(c)的构成包括:
(c1)将排序后的元素及其顺序号和冗余度一起传送到另一个存储器模块以使等同的元素不会冗余传送的步骤,
其中所述步骤(e)的构成包括:
(e1)根据指示要在接收到的元素的前方***的元素数的前向***数,要置于前方的元素的顺序号,以及接收到的顺序号和冗余度计算虚拟顺序号的步骤,并且
其中所述步骤(f)的构成包括:
(f2)根据在步骤(c)中发送元素时虚拟顺序号和顺序号中间的差值确定与所述该元素等同的元素的顺序号的步骤。
8.如权利要求4-7任何一项中的排序方法,其中展示存储器模块是初始独立存储器模块,而接收模块也是独立存储器模块,并且
展示存储器模块组的构成包括2n个存储器模块,其中的n(n:大于或等于1的整数)在步骤(d)至(f)每次结束时递增,同时确定存储器模块组的构成包括2n个存储器模块。
9.一种汇编方法,其中一个数组是藉助于根据权利要求4-6之一中的方法排序,并且根据所述排序后数组生成一个新数组,在所述数组中元素按规定顺序排列,没有重复,并且其中所述汇编方法的构成包括:
(i)在规定的存储器模块中根据顺序号发送待处理元素的步骤,
(j)如前一个待处理的元素与发送的元素等同时将用来指示存在的等同元素的计数的值-号计数器的值递增,但如发送的元素与前一个待处理的元素不同时就将此前一个待处理的元素与所述该元素相关的等值计数器的值相关联并且将它们发送出去的步骤,
(k)接收前一个待处理的元素及相关联的等值计数器的值,并且生成一个使它们相联系的新数组的步骤,以及
(l)重复步骤步骤(i)至(j)以便使元素及其计数在新数组中互相联系。
10.如权利要求9的汇编方法,其构成还包括:
(m)在模块之一中监视在本周(j)中发送的元素及相联系的等值计数器的值的步骤,并且
其中步骤(k)藉助于所述模块之一执行。
11.如权利要求9的汇编方法,其构成还包括:
(n)在管理所述数组元素的存储器模块中,提供分别保持待处理元素的顺序号和所述元素的计数的顺序号计数器和等值计数器,以及还提供临时存储前一个待处理元素的寄存器的步骤,
(o)在管理具有所述该顺序号的元素的存储器模块中根据顺序号发送所述该元素的步骤,
(p)在管理数组中的元素存储器模块中,比较接收的元素和寄存器的内容,并且如其等同,使计数递增,但如其不等同,就通过第二总线将寄存器的内容和计数器的值发送出去,并且之后更新寄存器的内容和计数器的值的步骤,
(q)在存储器模块之一中,将所述寄存器的内容和所述计数器的值分别作为元素和所述元素的计数置于数组中的步骤。
12.如权利要求11的汇编方法,其中步骤(n)的构成还包括:
(n1)为待处理元素提供存储非冗余顺序号的值计数器的步骤,
并且所述步骤(p)的构成包括:
(p1)比较接收的元素和寄存器的内容,并且如其等同,就将值-号计数器的值作为所述待处理元素的顺序号赋予,但如其不等同,使值-号计数器递增,并且将递增的值-号计数器的值作为所述待处理元素的顺序号赋予的步骤。
13.一种联结数组的方法,系利用根据权利要求4-8之一中的排序方法和根据权利要求9-12之一中的汇编方法做到多个数组的联结,其中所述联结方法的构成包括:
(r)通过对这些数组中的每一个元素赋予顺序号归并多个数组并执行所述排序方法的处理的步骤,以及
(s)根据所述归并后的数组内的元素将其顺序号执行所述汇编方法的处理,从而生成没有冗余元素存在的新数组的步骤。
14.一种联结数组的方法,系利用采用分布式存储器型信息处理***的利用根据权利要求4-8之一中的排序方法和根据权利要求9-12之一中的汇编方法做到多个数组的联结,其中所述***的构成包括:一个CPU模块;每个都具有一个处理器和RAM核心;以及多组连接所述CPU和存储器模块和/或连接各个存储器模块的总线;其中的各个存储器模块的处理器执行由上述一个或多个存储器模块根据CPU发给各个存储器模块的处理器的指令进行管理的数组的处理,
所述存储器模块的构成包括一个其中的指示一个数值表的指针值置于与记录号相对应的位置以便指定数值表指定规定元素的指针数组,其中的数值表是一个根据记录号存储元素的数组,
并且上述联结方法的构成包括:
(r1)通过对这些数组中的元素赋予顺序号归并多个数值表并执行所述排序方法处理的步骤,以及
(t)根据所述归并后的数值表内的元素及其顺序号执行所述汇编方法,从而生成一个没有冗余元素存在的新数组并且还将所述元素的顺序号更新为没有冗余元素存在的场合的所述元素的顺序号的处理步骤,并且
(u)将没有冗余元素存在的场合的所述元素的顺序号所组成的所述数组设置为用来指示新数值表的新指针数组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33099799A JP2001147800A (ja) | 1999-11-22 | 1999-11-22 | 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法 |
JP330997/1999 | 1999-11-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1423772A true CN1423772A (zh) | 2003-06-11 |
Family
ID=18238688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00818392.9A Pending CN1423772A (zh) | 1999-11-22 | 2000-11-21 | 信息处理*** |
Country Status (7)
Country | Link |
---|---|
US (1) | US6886082B1 (zh) |
EP (1) | EP1233332A1 (zh) |
JP (1) | JP2001147800A (zh) |
KR (1) | KR20020075371A (zh) |
CN (1) | CN1423772A (zh) |
CA (1) | CA2394452A1 (zh) |
WO (1) | WO2001038967A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100452032C (zh) * | 2003-10-27 | 2009-01-14 | 特博数据实验室公司 | 分布式存储器类型的信息处理*** |
CN102298653A (zh) * | 2010-06-25 | 2011-12-28 | 北京国电智深控制技术有限公司 | 一种配置算法执行顺序号的方法及装置 |
CN103365931A (zh) * | 2012-04-10 | 2013-10-23 | 中兴通讯股份有限公司 | 性能分析工具中快速定位函数性能记录的方法及装置 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3860992B2 (ja) * | 2001-11-09 | 2006-12-20 | 株式会社ターボデータラボラトリー | データの結合・提示方法、および、データ結合・提示プログラム |
US7860916B2 (en) * | 2003-03-18 | 2010-12-28 | Microsoft Corporation | Systems and methods for transforming data in buffer memory without unnecessarily copying data to additional memory locations |
US7953891B2 (en) * | 2003-03-18 | 2011-05-31 | Microsoft Corporation | Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow |
KR20060008889A (ko) * | 2003-04-16 | 2006-01-27 | 신지 후루쇼 | 정보처리시스템 및 정보처리방법 |
JP4620593B2 (ja) * | 2003-10-24 | 2011-01-26 | 株式会社ターボデータラボラトリー | 情報処理システムおよび情報処理方法 |
JP4772506B2 (ja) * | 2003-12-25 | 2011-09-14 | 株式会社ターボデータラボラトリー | 情報処理方法、情報処理システムおよびプログラム |
WO2005073880A1 (ja) * | 2004-01-29 | 2005-08-11 | Shinji Furusho | 分散メモリ型情報処理システム |
WO2005106713A1 (ja) * | 2004-04-28 | 2005-11-10 | Shinji Furusho | 情報処理方法及び情報処理システム |
US7930432B2 (en) | 2004-05-24 | 2011-04-19 | Microsoft Corporation | Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow |
CN101107605A (zh) * | 2005-04-18 | 2008-01-16 | 特博数据实验室公司 | 信息处理***以及信息处理方法 |
CA2595858A1 (en) * | 2005-05-24 | 2006-11-30 | Turbo Data Laboratories Inc. | Multiprocessor system, and its information processing method |
WO2007020849A1 (ja) * | 2005-08-15 | 2007-02-22 | Turbo Data Laboratories Inc. | 共有メモリ型マルチプロセッサシステム及びその情報処理方法 |
WO2009028050A1 (ja) * | 2007-08-28 | 2009-03-05 | Turbo Data Laboratories, Inc. | 表形式データを操作するマルチコア対応データ処理方法、マルチコア型処理装置、及び、プログラム |
JPWO2009044486A1 (ja) * | 2007-10-05 | 2011-02-03 | 株式会社ターボデータラボラトリー | 表形式データをソートする方法、マルチコア型装置、及び、プログラム |
US10767685B2 (en) | 2013-11-21 | 2020-09-08 | Medline Industries, Inc. | Hangable apparatus and systems and methods therefor |
US9594512B1 (en) | 2015-06-19 | 2017-03-14 | Pure Storage, Inc. | Attributing consumed storage capacity among entities storing data in a storage array |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2776929B2 (ja) * | 1989-03-29 | 1998-07-16 | 株式会社日立製作所 | カードデータ処理システム及びカードデータの処理方法 |
JPH0535444A (ja) * | 1991-07-26 | 1993-02-12 | Hokkaido Nippon Denki Software Kk | ソート処理方式 |
US5619693A (en) * | 1994-05-02 | 1997-04-08 | Tandem Computers Incorporated | Method for sorting and storing data employing dynamic sort tree reconfiguration in volatile memory |
FR2763410B1 (fr) * | 1997-05-13 | 1999-07-23 | Fihem | Dispositif de tri d'elements de donnees a arbre binaire et espaceur atm comportant un tel dispositif |
EP0974907A3 (en) * | 1998-07-24 | 2004-09-15 | Interuniversitair Microelektronica Centrum Vzw | A method for determining an optimized data organization |
US6216178B1 (en) * | 1998-11-16 | 2001-04-10 | Infineon Technologies Ag | Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution |
-
1999
- 1999-11-22 JP JP33099799A patent/JP2001147800A/ja active Pending
-
2000
- 2000-11-21 US US10/130,629 patent/US6886082B1/en not_active Expired - Fee Related
- 2000-11-21 KR KR1020027006530A patent/KR20020075371A/ko not_active Application Discontinuation
- 2000-11-21 EP EP00976399A patent/EP1233332A1/en not_active Withdrawn
- 2000-11-21 CA CA002394452A patent/CA2394452A1/en not_active Abandoned
- 2000-11-21 CN CN00818392.9A patent/CN1423772A/zh active Pending
- 2000-11-21 WO PCT/JP2000/008209 patent/WO2001038967A1/ja not_active Application Discontinuation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100452032C (zh) * | 2003-10-27 | 2009-01-14 | 特博数据实验室公司 | 分布式存储器类型的信息处理*** |
CN102298653A (zh) * | 2010-06-25 | 2011-12-28 | 北京国电智深控制技术有限公司 | 一种配置算法执行顺序号的方法及装置 |
CN102298653B (zh) * | 2010-06-25 | 2015-07-22 | 北京国电智深控制技术有限公司 | 一种配置算法执行顺序号的方法及装置 |
CN103365931A (zh) * | 2012-04-10 | 2013-10-23 | 中兴通讯股份有限公司 | 性能分析工具中快速定位函数性能记录的方法及装置 |
CN103365931B (zh) * | 2012-04-10 | 2016-12-14 | 南京中兴新软件有限责任公司 | 性能分析工具中快速定位函数性能记录的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1233332A1 (en) | 2002-08-21 |
KR20020075371A (ko) | 2002-10-04 |
WO2001038967A1 (fr) | 2001-05-31 |
CA2394452A1 (en) | 2001-05-31 |
JP2001147800A (ja) | 2001-05-29 |
US6886082B1 (en) | 2005-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1423772A (zh) | 信息处理*** | |
CN1278525C (zh) | 最长匹配地址查询的方法和装置 | |
CN1100295C (zh) | 计算机***及其输入输出指令的发送方法 | |
CN1148687C (zh) | 用于网络处理器的全匹配搜索方法和设备 | |
CN1194319C (zh) | 对表格式数据进行查找、列表及分类的方法和装置 | |
CN1020811C (zh) | 动态管理输入/输出(i/o)连接的方法和装置 | |
CN1205553C (zh) | 分优先级访问外部装置的设备 | |
CN1284095C (zh) | 多处理器***中的任务分配方法和多处理器*** | |
CN1199109C (zh) | 通过重排序存储器请求提高总线利用率的存储器控制器 | |
CN1111815C (zh) | 在数据库中存储元素和寻找这样存储的元素的方法 | |
CN1781093A (zh) | 用于存储和访问互锁树数据仓库中的数据的***和方法 | |
CN1282925C (zh) | 利用页标志寄存器跟踪存储器装置内物理页的状态的方法 | |
CN1174319C (zh) | 数据结构管理装置、数据结构管理***和方法 | |
CN1629815A (zh) | 具有多数个存储***的数据处理*** | |
CN1030833A (zh) | 并行相联存储器 | |
CN1802632A (zh) | 用于在程序代码转换期间执行解释器优化的方法和装置 | |
CN1371500A (zh) | 网络处理器处理组合体和方法 | |
CN1842764A (zh) | 计算图的计算机辅助并行化 | |
CN1239793A (zh) | 基于字符分类检索字符串的装置和方法 | |
CN1371495A (zh) | Vlsi网络处理器和方法 | |
CN1711523A (zh) | 用于管理多***群集中资源争用的方法和装置 | |
CN1256671C (zh) | 管理资源争用的方法和装置 | |
CN1047407A (zh) | 在数据处理***提供附加***特性的方法和装置 | |
CN1554048A (zh) | 用于检查和操作数据的存储器引擎 | |
CN1194321C (zh) | 高速信息检索*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |