專利名稱:信息處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式存儲器型信息處理裝置,特別涉及可以以極高速度執(zhí)行數(shù)據(jù)排序、匯編和聯(lián)結(jié)的信息處理裝置。
背景技術(shù):
既然計算機已經(jīng)進(jìn)入整個社會的很多方面,并且因特網(wǎng)和其他網(wǎng)絡(luò)已經(jīng)普及,數(shù)據(jù)正在大規(guī)模地積累。這樣大規(guī)模地處理數(shù)據(jù)要求巨大的計算能力,于是企圖引入并行處理是很自然的。
當(dāng)前,并行處理體系結(jié)構(gòu)分為“共享存儲器”型和“分布式存儲器”型。前者(“共享存儲”型)是多個處理器共享單個巨大存儲器空間的體系結(jié)構(gòu)。在此體系結(jié)構(gòu)中,處理器組和共享存儲器之間的通信量是一個瓶頸,所以不容易構(gòu)建使用100個以上處理器的實際系統(tǒng)。因此,在計算10億個浮點數(shù)的平方根時,比如,處理的執(zhí)行速度不會快于單個CPU的速度的100倍。從經(jīng)驗得知,上限是大約30倍。
在后者(“分布式存儲器”型)的情況下,每個處理器具有其自己的局部存儲器,并且兩者連接而構(gòu)建一個系統(tǒng)。采用這一體系結(jié)構(gòu)時,可以設(shè)計一個整合甚至數(shù)百個至數(shù)萬個處理器的硬件系統(tǒng)。因此,在在計算上述10億個浮點數(shù)的平方根時,比如,處理的執(zhí)行速度可比單個CPU的速度快上數(shù)百倍至數(shù)萬倍。
據(jù)說是對于由數(shù)目達(dá)到數(shù)百或更多的大量處理器實現(xiàn)的并行處理的潛在需求是巨大的,但是,如上所述,如果要利用現(xiàn)有的現(xiàn)實的硬件技術(shù)來實現(xiàn),除了采用“分布式存儲器”型之外是很難設(shè)計的。
在分布式存儲器體系結(jié)構(gòu)中,附加于單個處理器上的存儲器的容量很小,因此在并行處理的主要對象之一的大規(guī)模數(shù)據(jù)(通常是數(shù)組)的存儲和處理中必須將此數(shù)據(jù)在多個處理器和附加于每個處理器的存儲器中間劃分。
然而,當(dāng)數(shù)組在多個處理器和附加于每個處理器的存儲器中間劃分時,防止數(shù)據(jù)在總線上的沖突的總線主控變得很困難,因此如各個處理器不能并行工作,那就存在一個問題,就是無法提高處理器的使用效率而不可能增加處理速度。為此,本發(fā)明要達(dá)到的各個目的如下所述。
(1)數(shù)據(jù)在總線上的沖突在算法上不會發(fā)生,因此總線主控就不需要了;從而通過充分使用總線的帶寬可以增加處理速度。
(2)通過將多個裝設(shè)有處理器的存儲器模塊與處理器(最好是多個處理器)相結(jié)合可以進(jìn)行并行處理,并且使各個存儲器模塊可以得到有效的利用,而處理可獨立地分配給每個存儲器模塊中的處理器,從而可通過有效的使用存儲器模塊而進(jìn)一步增加處理速度。
(3)如待排序的數(shù)據(jù)的量是N,則只需要O(N)的數(shù)據(jù)量。(在普通排序時必需O(N*N)的數(shù)據(jù)量或在最壞的情況下為O(N*Log(N))的數(shù)據(jù)量。)(4)處理時間穩(wěn)定,即使是在最壞的情況下也是,預(yù)測C處理速度可以保證。
就是說,本發(fā)明的目的是提供一種可以以極高速度和穩(wěn)定的處理時間執(zhí)行數(shù)組排序的信息處理裝置。
發(fā)明概述本發(fā)明的一個目的可以通過如下的分布式存儲器型信息處理系統(tǒng)達(dá)到,其構(gòu)成包括一個CPU模塊;每個都具有一個處理器和RAM核心的多個存儲器模塊;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,并且其中所述信息處理系統(tǒng)的特征在于所述存儲器模塊的構(gòu)成包括對組成數(shù)組的那些它自己管理的部分的元素執(zhí)行排序并根據(jù)特定的順序?qū)λ鲈刂匦屡判?、根?jù)由其自身管理的所述部分在數(shù)組中所占據(jù)的位置將其I/O、通過規(guī)定總線將所述排序后的元素與其順序號一起發(fā)送到另一個存儲器模塊或通過規(guī)定總線從另一個存儲器模塊接收所述元素及其順序號的排序裝置;順序號計算裝置,此裝置在接收到一個所述元素及順序號時將其與由其自身管理的元素進(jìn)行比較而計算出一個作為接收到的元素的順序號的候選的虛擬順序號,并且將其返回到所述另一個存儲器模塊;以及順序確定裝置,此裝置在接收到所述虛擬順序號時根據(jù)所述虛擬順序號確定元素的順序;結(jié)果所述數(shù)組的元素的順序號是通過在發(fā)送所述元素及順序號一方的展示存儲器模塊和在接收所述元素及順序號并計算虛擬順序號一方的存儲器模塊之間的通信來確定。
藉助本發(fā)明,由展示存儲器模塊對元素和順序號的展示是通過總線執(zhí)行,而虛擬順序號是利用確定存儲器模塊計算,并且這些虛擬順序號是通過另外一個總線賦予展示存儲器模塊。因此,在展示存儲器模塊和確定存儲器模塊中排序可以并行進(jìn)行,并且總線沖突可以避免。
在實施本發(fā)明的具體方式中,所述存儲器模塊的構(gòu)成包括元素識別/發(fā)送裝置,用來根據(jù)確定的順序號識別要處理的元素并將其通過總線之一進(jìn)行發(fā)送;元素比較裝置,用來對前一個待處理的元素與發(fā)送的元素進(jìn)行比較;以及一個等值計數(shù)器,用來指示等同元素的計數(shù)并且其值在發(fā)送一個等同元素時遞增;其中所述元素比較裝置的構(gòu)成使得當(dāng)前一個待處理的元素被確定為與發(fā)送的元素不同時,此前一個待處理的元素與所述該元素相關(guān)的等值計數(shù)器的值相關(guān)聯(lián)并且其一被送出,此外,并且存儲器模塊之一接收前一個待處理的元素及如此發(fā)送的相關(guān)計數(shù)器的值,并且具有一個于其中使它們相關(guān)聯(lián)并置于接收的順序的數(shù)組。
藉助于此具體實施方式
,在存儲器模塊之一中,元素及其冗余度是以規(guī)定順序接收,因而就可以生成一個非冗余元素數(shù)組和各個元素的計數(shù)。就是說,從而就可以很容易地確定一個非冗余元素列表,并且原始數(shù)組中的每個元素號可以很容易確定。
在本發(fā)明的另一個具體實施方式
中,所述存儲器模塊的構(gòu)成包括一個指示非冗余順序號的值-號計數(shù)器,其值在所述元素比較裝置確定前一個待處理的元素與發(fā)送的元素不同時遞增;以及順序號更新裝置,其作用為,對發(fā)送的元素而言,在前一個待處理的元素與發(fā)送的元素等同時將值-號計數(shù)器的值設(shè)定為所述該非冗余元素的順序號,但如果它們不同,將值-號計數(shù)器的遞增值設(shè)定為所述該非冗余元素的順序號。
藉助于此具體實施方式
,可以將應(yīng)用于數(shù)組元素的順序號變換為其中的元素冗余度被消除的狀態(tài)中的1。
此外,本發(fā)明的一個目的可以通過利用分布式存儲器型信息處理系統(tǒng)的數(shù)組排序方法來達(dá)到,此系統(tǒng)的構(gòu)成包括一個CPU模塊;每個都具有一個處理器和RAM核心的多個存儲器模塊;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,并且其中所述排序方法的構(gòu)成包括(a)對組成數(shù)組的那些它自己管理的部分的元素執(zhí)行排序的步驟,(b)根據(jù)由其自身管理的所述部分在數(shù)組中所占據(jù)的位置在管理所述數(shù)組的位置的存儲器模塊中間確定發(fā)送元素及順序號一方的展示存儲器模塊,以及在接收所述元素及順序號一方的確定存儲器模塊的步驟,(c)在展示存儲器模塊中通過規(guī)定總線將排序后的元素與其順序號一起發(fā)送到另一個存儲器模塊的步驟,(d)在確定存儲器模塊中通過規(guī)定總線從另一個存儲器模塊接收所述元素及其順序號的步驟,(e)在所述確定存儲器模塊中,根據(jù)由所述確定存儲器模塊管理的元素的順序號計算出指示一個接收到的元素的候選順序號的虛擬順序號,并且將所述虛擬順序號返回到所述展示存儲器模塊的步驟,以及(f)在所述展示存儲器模塊中,當(dāng)接收到所述虛擬順序號時根據(jù)所述虛擬順序號更新元素的順序號的步驟,以及(g)在上述步驟(d)至(f)每一個步驟結(jié)束時,通過將屬于藉助上述步驟(d)至(f)賦予一個規(guī)定順序號的元素的展示存儲器模塊和確定存儲器模塊所組成的存儲器模塊組中的每一個分別取作展示存儲器模塊組和確定存儲器模塊組之一并且重復(fù)步驟(d)至(f)來更新每一個存儲器模塊組中的元素的順序號,可確定數(shù)組中的每一個元素的順序號。
藉助本發(fā)明,展示存儲器模塊中的計算,展示存儲器模塊中的元素和順序號的發(fā)送,確定存儲器模塊組中的計算和展示存儲器模塊中的虛擬順序號的發(fā)送可以并行進(jìn)行,并且總線沖突可以避免。就是說,可以獲得極高的速度的排序(對數(shù)組中的元素賦予順序號)。此外,存儲器中的數(shù)據(jù)量可保持為只是O(N)。
在上述實施本發(fā)明的具體方式中,步驟(e)的構(gòu)成包括(e1)根據(jù)指示要在接收到的元素的前方插入的元素數(shù)的前向插入數(shù),要置于前方的元素的順序號,以及接收到的順序號計算虛擬順序號的步驟。
在上述本發(fā)明的另一具體實施方式
中,步驟(f)的構(gòu)成包括(f1)將接收到的虛擬順序號設(shè)置給在步驟(c)中發(fā)送的順序號的步驟。
實施本發(fā)明的具體方式的構(gòu)成還包括(h)在展示存儲器模塊中,計算指示在所述存儲器模塊組中有多少個由組成所述展示存儲器模塊組的存儲器模塊管理的元素的冗余度,其中所述步驟(c)的構(gòu)成包括(c1)將排序后的元素及其順序號和冗余度一起傳送到另一個存儲器模塊以使等同的元素不會冗余傳送的步驟,其中所述步驟(e)的構(gòu)成包括(e1)根據(jù)指示要在接收到的元素的前方插入的元素數(shù)的前向插入數(shù),要置于前方的元素的順序號,以及接收到的順序號和冗余度計算虛擬順序號的步驟,并且其中所述步驟(f)的構(gòu)成包括(f2)根據(jù)在步驟(c)中發(fā)送元素時虛擬順序號和順序號中間的差值確定與所述該元素等同的元素的順序號的步驟。
藉助于本發(fā)明,無需展示存儲器模塊多次發(fā)送同一元素。此外,當(dāng)計算出某一元素的冗余度時,可以將所述該元素的順序號和冗余度發(fā)送給確定存儲器模塊,并且可在確定存儲器模塊中對所述該元素執(zhí)行虛擬順序號的計算。就是說,這可以防止存儲器模塊利用效率的降低。
在另一
具體實施例方式
中,展示存儲器模塊是初始獨立存儲器模塊,而接收模塊也是獨立存儲器模塊,并且展示存儲器模塊組的構(gòu)成包括2n個存儲器模塊,其中的n(n大于或等于1的整數(shù))在步驟(d)至(f)每次結(jié)束時遞增,同時確定存儲器模塊組的構(gòu)成包括2n個存儲器模塊。
如上所述,在理想情況下當(dāng)使用2n個存儲器模塊時可做到排序。
此外,本發(fā)明的另一具體實施方式
是一種匯編方法,其中一個數(shù)組是藉助于上述排序方法排序,并且根據(jù)所述排序后數(shù)組生成一個新數(shù)組,在所述數(shù)組中元素按規(guī)定順序排列,沒有重復(fù),并且其中所述匯編方法的構(gòu)成包括(i)在規(guī)定的存儲器模塊中根據(jù)順序號發(fā)送待處理元素的步驟,(j)如前一個待處理的元素與發(fā)送的元素等同時將用來指示存在的等同元素的計數(shù)的值-號計數(shù)器的值遞增,但如發(fā)送的元素與前一個待處理的元素不同時就將此前一個待處理的元素與所述該元素相關(guān)的等值計數(shù)器的值相關(guān)聯(lián)并且將它們發(fā)送出去的步驟,(k)接收前一個待處理的元素及相關(guān)聯(lián)的等值計數(shù)器的值,并且生成一個使它們相聯(lián)系的新數(shù)組的步驟,以及(l)重復(fù)步驟步驟(i)至(j)以便使元素及其計數(shù)在新數(shù)組中互相聯(lián)系。
此外,上述匯編方法的構(gòu)成還可包括(m)在模塊之一中監(jiān)視在本周(j)中發(fā)送的元素及相聯(lián)系的等值計數(shù)器的值的步驟,并且其中步驟(k)藉助于所述模塊之一執(zhí)行。
此外,上述匯編方法的構(gòu)成還可包括(n)在管理所述數(shù)組元素的存儲器模塊中,提供分別保持待處理元素的順序號和所述元素的計數(shù)的順序號計數(shù)器和等值計數(shù)器,以及還提供臨時存儲前一個待處理元素的寄存器的步驟,(o)在管理具有所述該順序號的元素的存儲器模塊中根據(jù)順序號發(fā)送所述該元素的步驟,(p)在管理數(shù)組中的元素存儲器模塊中,比較接收的元素和寄存器的內(nèi)容,并且如其等同,使計數(shù)遞增,但如其不等同,就通過第二總線將寄存器的內(nèi)容和計數(shù)器的值發(fā)送出去,并且之后更新寄存器的內(nèi)容和計數(shù)器的值的步驟,(q)在存儲器模塊之一中,將所述寄存器的內(nèi)容和所述計數(shù)器的值分別作為元素和所述元素的計數(shù)置于數(shù)組中的步驟。
此外,步驟(n)的構(gòu)成還包括(n1)為待處理元素提供存儲非冗余順序號的值計數(shù)器的步驟,并且所述步驟(p)的構(gòu)成最好還包括(p1)比較接收的元素和寄存器的內(nèi)容,并且如其等同,就將值-號計數(shù)器的值作為所述待處理元素的順序號賦予,但如其不等同,使值-號計數(shù)器遞增,并且將遞增的值-號計數(shù)器的值作為所述待處理元素的順序號賦予的步驟。
此外,在上述本發(fā)明的另一具體實施方式
中,聯(lián)結(jié)數(shù)組的方法可利用上述排序方法和上述匯編方法做到多個數(shù)組的聯(lián)結(jié),其中所述聯(lián)結(jié)方法的構(gòu)成包括(r)通過對這些數(shù)組中的每一個元素賦予順序號歸并多個數(shù)組并執(zhí)行所述排序方法的處理的步驟,以及(s)根據(jù)所述歸并后的數(shù)組內(nèi)的元素將其順序號執(zhí)行所述匯編方法的處理,從而生成沒有冗余元素存在的新數(shù)組的步驟。
就是說,通過在所要求的數(shù)組得到歸并的狀態(tài)下執(zhí)行根據(jù)本發(fā)明的排序和匯編,可以得到消除元素冗余的聯(lián)結(jié)數(shù)組。
在上另外又一個具體實施方式
中,聯(lián)結(jié)數(shù)組的方法可利用采用分布式存儲器型信息處理系統(tǒng)的上述排序方法和上述匯編方法做到多個數(shù)組的聯(lián)結(jié),其中所述系統(tǒng)的構(gòu)成包括一個CPU模塊;每個都具有一個處理器和RAM核心;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,所述存儲器模塊的構(gòu)成包括一個其中的指示一個數(shù)值表的指針值置于與記錄號相對應(yīng)的位置以便指定數(shù)值表指定規(guī)定元素的指針數(shù)組,其中的數(shù)值表是一個根據(jù)記錄號存儲元素的數(shù)組,并且上述聯(lián)結(jié)方法的構(gòu)成包括(r1)通過對這些數(shù)組中的元素賦予順序號歸并多個數(shù)值表并執(zhí)行所述排序方法處理的步驟,以及(t)根據(jù)所述歸并后的數(shù)值表內(nèi)的元素及其順序號執(zhí)行所述匯編方法,從而生成一個沒有冗余元素存在的新數(shù)組并且還將所述元素的順序號更新為沒有冗余元素存在的場合的所述元素的順序號的處理步驟,并且(u)將沒有冗余元素存在的場合的所述元素的順序號所組成的所述數(shù)組設(shè)置為用來指示新數(shù)值表的新指針數(shù)組。
附圖簡述本發(fā)明的各個目的參考附圖及具體實施方式
將一清二楚。其中
圖1為示出根據(jù)本發(fā)明的一個具體實施方式
的計算機系統(tǒng)的配置的框圖。
圖2為示出根據(jù)此具體實施方式
的存儲器模塊的示意框圖。
圖3為用來描述根據(jù)本具體實施方式
的存儲器模塊中間的流水線處理的示圖。
圖4A至4C為用來描述根據(jù)本具體實施方式
的多空間存儲器下的存儲器模塊14的結(jié)構(gòu)的示圖。
圖5A至5C為用來描述根據(jù)本具體實施方式
的存儲器模塊的訪問的的示圖。
圖6A至6C為示出對一個數(shù)組執(zhí)行根據(jù)本具體實施方式
1的排序的一個示例的示圖。
圖7為示出根據(jù)本具體實施方式
1的排序進(jìn)程的流程圖。
圖8為示出在執(zhí)行根據(jù)具體實施方式
1的排序時存儲器模塊之間的連接的框圖。
圖9是示意圖,顯示了圖8所示的存儲器模塊之間的連接。
圖10A至10D為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的編號的示圖。
圖11A至11D為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的順序編號的示圖。
圖12A至12C為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的編號的示圖。
圖13A至13C為示出在根據(jù)本具體實施方式
1的存儲器模塊對之間的順序編號的編號的流程圖。
圖14A和14B為示出屬于示于圖8中的存儲器模塊的兩個存儲器模塊組之間的連接示例的示圖。
圖15A和15B為示出示于圖14的連接的示例的示意圖。
圖16A和16B為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的順序編號的示圖。
圖17A和17B為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的順序編號的示圖。
圖18A和18B為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的順序編號的示圖。
圖19A和19B為示出在根據(jù)本具體實施方式
1的排序中在一個數(shù)組內(nèi)的元素的順序編號的示圖。
圖20為用來描述在根據(jù)本具體實施方式
1的排序中存儲器模塊的組合的示圖。
圖21為示出在按照作為根據(jù)本具體實施方式
1的排序的結(jié)果而取得的順序號生成一個新數(shù)組的場合中的存儲器模塊的連接的另一示例的示圖。
圖22為示出在按照作為根據(jù)本具體實施方式
1的排序的結(jié)果而取得的順序號生成一個新數(shù)組的場合中的存儲器模塊的連接的另一示例的示圖。
圖23為示出在根據(jù)本具體實施方式
2的排序中存儲器模塊的連接的示例的示意圖。
圖24為用來描述在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的示圖。
圖25為用來描述在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的示圖。
圖26為示出在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的流程圖。
圖25為用來描述在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的示圖。
圖28A和28B為用來描述在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的示圖。
圖29A和29B為用來描述在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的示圖。
圖30A和30B為用來描述在根據(jù)本具體實施方式
2的存儲器模塊組中計算冗余度的進(jìn)程的示圖。
圖31A至31C為示出在排序同時省略發(fā)送冗余元素的的流程圖。
圖32為示出在按照作為根據(jù)實施本發(fā)明的具體方式3的匯編中的存儲器模塊的連接的一個示例的示圖。
圖33為示出根據(jù)實施本發(fā)明的具體方式3的匯編的流程圖。
圖34A和34B為用來描述在根據(jù)實施本發(fā)明的具體方式3的存儲器模塊組中的匯編的示圖。
圖35A和35B為用來描述在根據(jù)實施本發(fā)明的具體方式3的存儲器模塊組中的匯編的示圖。
圖36A和36B為用來描述在根據(jù)實施本發(fā)明的具體方式3的存儲器模塊組中的匯編的示圖。
圖37A和37B為用來描述在根據(jù)實施本發(fā)明的具體方式3的存儲器模塊組中的匯編的示圖。
圖38為用來描述在根據(jù)實施本發(fā)明的具體方式3的存儲器模塊組中的匯編的示圖。
圖39A和39B為用來描述在根據(jù)實施本發(fā)明的具體方式3的存儲器模塊組中的匯編的示圖。
圖40為示出根據(jù)實施本發(fā)明的具體方式4的聯(lián)結(jié)的流程圖。
圖41A和41B為用來描述在根據(jù)實施本發(fā)明的具體方式4的存儲器模塊組中的聯(lián)結(jié)的示圖。
圖42A至42C為用來描述在根據(jù)實施本發(fā)明的具體方式4的存儲器模塊組中的聯(lián)結(jié)的示圖。
圖43A和43B為用來描述在根據(jù)的實施本發(fā)明的具體方式4的存儲器模塊組中的聯(lián)結(jié)的示圖。
圖44A和44B為用來描述在根據(jù)實施本發(fā)明的具體方式4的存儲器模塊組中的聯(lián)結(jié)的示圖。
圖45為示出本發(fā)明的另一實例中的存儲器模塊組中的聯(lián)結(jié)的示意圖。
實施發(fā)明的具體方式[硬件配置]下面是參考附圖對本發(fā)明的具體實施方式
的描述。圖1為示出根據(jù)本發(fā)明的一個具體實施方式
的計算機系統(tǒng)的配置的框圖。如圖1所示,計算機系統(tǒng)10的構(gòu)成包括根據(jù)單個指令執(zhí)行并行運算的CPU模塊12;存儲并行運算所需的各個類型的數(shù)據(jù)的存儲器模塊14-1、14-2、14-3;存儲所需程序和數(shù)據(jù)的硬盤驅(qū)動器16;鍵盤、鼠標(biāo)或其他輸入裝置18;由CRT等等組成的顯示器20以及以各種格式存儲數(shù)據(jù)等等的遺留存儲器22。此外,在總線24-1,24-2,...,上,在與各個存儲器模塊14的接觸點處設(shè)置開關(guān)28-1,28-2,28-3,...等等,所以選擇的電路元件可以交換信息。此外,在CPU模塊12和存儲器模塊14-1中間設(shè)置有開關(guān)30-1,30-2,...用于總線連接和相鄰存儲器模塊中間的連接。此外,在存儲器模塊輸入端到總線的接觸點和存儲器模塊輸出端到總線的接觸點中間也可以設(shè)置一個開關(guān)(見符號29)。在圖1中,上述開關(guān)以虛線圓圈表示。
另外,存儲器模塊14最好是不但具有單輸入端和單輸出端,而且還具有一個或多個其他終端(I/O終端等等)。比如,在后面將要介紹的具體實施方式
2或3中,處理是利用3個以上的終端的I/O實現(xiàn)的。
在CPU模塊12和存儲器模塊14中間設(shè)置多個總線24-1,24-2,24-3,24-4,...。因此,數(shù)據(jù)等等可藉助上述總線在存儲器模塊之間交換。此外,在CPU 12和存儲器模塊14中間設(shè)置有一根信號控制線25,于是由CPU 12發(fā)出的指令可傳輸?shù)剿械拇鎯ζ髂K14。
另外,在CPU 12和各個其他構(gòu)件(例如,硬盤驅(qū)動器16,輸入裝置18等等)中間設(shè)置有本地總線26,于是數(shù)據(jù)等等也可在其中間交換。CPU 12讀取存儲于與本地總線26相連接的硬盤驅(qū)動器16或RAM或其他存儲裝置(未示出)上的程序,并按照該程序執(zhí)行發(fā)送指令到存儲器模塊14和其他數(shù)據(jù)交換,另外還控制開關(guān)28,30等等。此外,根據(jù)此程序,CPU 12接受存儲于遺留存儲器22中的各種格式的數(shù)據(jù),將此格式數(shù)據(jù)變換為可利用由CPU 12、存儲器模塊14和總線24構(gòu)成的系統(tǒng)處理的數(shù)據(jù)系列(數(shù)組)并將其存儲于不同的存儲器模塊14中。
圖2為示出根據(jù)此具體實施方式
的存儲器模塊的示意框圖。如圖2所示,存儲器模塊14的構(gòu)成包括一個接受由CPU模塊12發(fā)出的時鐘或其他同步信號的時鐘緩存32;一個此處數(shù)據(jù)的RAM核心34;一個處理器(MPU)36,此處理器識別空間ID和數(shù)據(jù)的元素號(見后述)并在接到CPU 12的指令等時根據(jù)空間ID和數(shù)據(jù)的元素號將數(shù)據(jù)寫入RAM核心34或從RAM核心34讀出數(shù)據(jù);以及一個I/O單元38,此I/O單元從總線之一接受數(shù)據(jù)并將其供給RAM核心34,和/或從RAM核心34送出并在總線之一上將其送出。在此具體實施方式
中,存儲器模塊14可通過信號控制線25接受來自CPU的指令,對這些指令做出響應(yīng)而執(zhí)行從RAM核心34讀出數(shù)據(jù),將數(shù)據(jù)寫入RAM核心34或?qū)?shù)據(jù)執(zhí)行其他規(guī)定的處理。此外,對RAM核心34的數(shù)據(jù)訪問和通過I/O單元的數(shù)據(jù)輸入和輸出是根據(jù)時鐘緩存32發(fā)出的時鐘或其他同步信號執(zhí)行的。上述存儲器模塊14的處理器(MPU)36最好是由多個處理單元組成并且能夠執(zhí)行多個進(jìn)程。
從圖1和圖2可知,在本發(fā)明中,計算機系統(tǒng)10可看作是一個共享存儲器型系統(tǒng)。此外,數(shù)據(jù)輸出到總線和從總線輸入數(shù)據(jù)等等是根據(jù)規(guī)定的同步信號執(zhí)行。因此,此計算機系統(tǒng)10可認(rèn)為是采用SIMD(單指令流多數(shù)據(jù)流)系統(tǒng)的形式。
具有這種配置的計算機系統(tǒng)10基本上配置有多空間存儲器,存儲器模塊和在日本專利申請No.H11-263793中記載的可重構(gòu)總線。下面對這些予以簡要描述。
(1)在此說明書中,“多空間存儲器”指的是存儲器空間分配為根據(jù)空間ID和地址進(jìn)行訪問。因此,即使是一個數(shù)據(jù)序列在很多處理器之間分割,每個處理器都能夠可靠地將其分離和識別。
在通常的存儲器空間中,即使是對每個進(jìn)程分配單獨區(qū)域,對每個變量序列(數(shù)組,結(jié)構(gòu)等等)并不執(zhí)行存儲器空間分配。因此,下面將把通常的存儲器空間描述為“單存儲器空間”。在單存儲器空間系統(tǒng)中,數(shù)據(jù)訪問只利用地址進(jìn)行,所以不可能分離或識別相關(guān)數(shù)據(jù)序列。由于這一原因,即使是并行處理實際上可能,也有很多場合對此無法確定。此外,當(dāng)將一個新的數(shù)據(jù)序列存儲于某個單存儲器空間時,必須執(zhí)行無用存儲單元收集(廢料收集)以保證用來存儲所述該數(shù)據(jù)序列的地點安全可靠。
與此相反,在本發(fā)明中,在存儲器空間引入空間ID,從而可將同一ID應(yīng)用于數(shù)據(jù)序列。此外,存儲器模塊14中的每一個都可以識別保持于RAM核心34內(nèi)的數(shù)據(jù)空間ID,并從而每個存儲器模塊14都能夠通過檢查當(dāng)前正在訪問的數(shù)據(jù)空間ID來確定它是否需要進(jìn)行運算。此外,因為每個存儲器模塊14可保持與空間ID相關(guān)聯(lián)的數(shù)據(jù)序列的全部或某些,所以就可能存儲在多個存儲器模塊14之間分割的某一個數(shù)據(jù)序列,并且從而無用存儲單元收集(廢料收集)就不需要了。
(2)存儲器模塊此外,在本發(fā)明中,存儲器模塊14中的每一個可識別它自己保持的數(shù)據(jù)序列的單個元素號的處理器36。因此,在接到來自CPU 12的指令時,處理器36可以確定根據(jù)指令要訪問的數(shù)據(jù)是否保持于RAM核心34內(nèi)并從而確定是否需要訪問。另外,存儲器模塊14中的每一個都可以從存儲于其固有的RAM核心34中的數(shù)組元素中的下標(biāo)范圍確定在SIMD下的指令隱含處理中的負(fù)擔(dān)范圍。
存儲器模塊14可以根據(jù)來自CPU 12的指令對待處理的元素的次序重排,并且對存儲于其固有的RAM核心34中的元素排序。
(3)可重構(gòu)總線采用本發(fā)明,CPU 12可以有選擇地接通/關(guān)斷開關(guān)28-1,28-2,...和開關(guān)30-1,30-2,...,并且這樣就可指定將要與其進(jìn)行數(shù)據(jù)交換的存儲器模塊14,從而做到流水線處理。比如,如圖3所示,如從某一個存儲器模塊14-i輸出的數(shù)據(jù)需要交給另外一個存儲器模塊14-j,并且從此另外一個存儲器模塊14-j輸出的數(shù)據(jù)要傳送到再另外一個存儲器模塊14-k,那末CPU 12就將各個開關(guān)設(shè)置成為總線24-m分配給存儲器模塊14-i和存儲器模塊14-i,而總線24-n分配給存儲器模塊14-j和存儲器模塊14-k。
另外,此流水線處理不僅可在單存儲器模塊之間連接的場合做到,而且可以通過多個存儲器模塊序列(存儲器模塊組)之間的連接來做到。取決于要進(jìn)行的處理,各個存儲器模塊可重新連接以便可以在每個連接路徑上以規(guī)定的次序進(jìn)行規(guī)定類型數(shù)據(jù)的單向連續(xù)傳送,從而對通信進(jìn)行調(diào)度以使接近100%的總線容量可以得到利用。于是,就可以解決作為分布式存儲器型并行處理系統(tǒng)的最大問題的處理器間通信性能低下的問題。
下面我們將更詳細(xì)描述在根據(jù)采用多空間存儲器的本發(fā)明的計算機系統(tǒng)中按照指令對各個存儲器模塊的存儲器管理和存儲器訪問。
圖4A至4C為用來描述根據(jù)本具體實施方式
的多空間存儲器下的存儲器模塊14的結(jié)構(gòu)的示圖。如圖4A所示,在存儲器模塊14內(nèi)的RAM核心34中設(shè)置有空間ID控制表。于是,存儲器模塊14的處理器36可確定由其自身保持的空間ID和其他必要的信息。
如圖4B所示,空間ID控制表包含其保持的每個數(shù)據(jù)組的空間ID,CPU控制下的邏輯起始地址,分配給數(shù)據(jù)組的區(qū)域的大小,RAM核心34內(nèi)的物理起始地址,具有所述該空間ID的數(shù)據(jù)序列的總?cè)萘恳约翱刂圃L問的訪問控制標(biāo)記。訪問控制標(biāo)記可設(shè)定為以下三種狀態(tài)之一只讀(R),只寫(W)或允許讀/寫(RW)。
當(dāng)給定一個具有空間ID的數(shù)據(jù)組時,存儲器模塊14的處理器36在RAM核心34中找到一個或多個可存儲所述該數(shù)據(jù)組的區(qū)域并將數(shù)據(jù)組存儲于所述區(qū)域,按原樣或分割為兩個或多個部分。此時,RAM核心中實際存儲數(shù)據(jù)的邏輯起始地址和分配區(qū)域的大小與給定的空間ID,邏輯起始地址,總?cè)萘亢驮L問控制標(biāo)記一起存儲于空間ID控制表中。圖4處理器為示出根據(jù)圖4的空間ID控制表存儲于RAM核心34內(nèi)的數(shù)據(jù)的示圖。
下面對具有這種構(gòu)成的存儲器模塊14的訪問予以描述。如圖5A至5C所示,CPU 12首先通過信號控制線25向使用的存儲器模塊14傳送空間ID,邏輯起始地址和所要求的指令(比如讀寫數(shù)據(jù))。對此的響應(yīng)是存儲器模塊14中的每一個利用在處理器36中設(shè)置的空間比較器52比較此空間ID和保持于其固有的空間ID控制表中的空間ID并確定其自身保持的是否一樣,另外,地址比較器54對邏輯地址執(zhí)行同樣類型的確定。其后,假如確定有待指令處理的數(shù)據(jù)是保持于其固有的RAM核心34內(nèi),存儲器模塊14的處理器36利用地址計算器56檢查空間ID控制表以便計算RAM核心34內(nèi)的物理地址和識別有待處理的數(shù)據(jù)。
一旦數(shù)據(jù)以這種方式被識別,處理器36就執(zhí)行與CPU 12發(fā)出的指令相應(yīng)的處理(比如讀寫數(shù)據(jù)),并且,需要時,將此數(shù)據(jù)傳送到CPU12(見圖5處理器)。
下面對藉助具有這種構(gòu)成的計算機系統(tǒng)10的排序予以描述。注意在下面描述中的每個存儲器模塊都帶有一個處理器并且因而稱為處理器存儲模塊(處理器存儲模塊)。
為易于理解,考慮如圖6A至6C所述的情況,其中四個PMM中的每一個都保持兩個元素(姓)。如圖6A所示,某一個PMM(第一個PMM14-1)保持元素下標(biāo)(記錄號)為“0”的姓“Smith”和元素下標(biāo)為“1”的姓“Carter”。第二個PMM14-2保持元素下標(biāo)為“2”的姓“Clinton”和元素下標(biāo)為“3”的姓“Johnson”。與此類似,第第三個PMM14-3和第四個PMM14-4保持與示于圖6A的下標(biāo)相對應(yīng)的的姓。同一空間ID應(yīng)用于由這些元素組成的數(shù)組,并且每個PMM的處理器36都利用空間ID控制表來管理在其固有的RAM核心34中的元素的下標(biāo)(記錄號),還有它們實際存儲的物理地址等等。
比如,考慮由CPU 12通過信號控制線25向各個PMM14-1至14-4發(fā)出對具有此空間ID的數(shù)組進(jìn)行排序的指令。圖7為示出根據(jù)本具體實施方式
的排序進(jìn)程的流程圖。如圖7所示,當(dāng)CPU 12發(fā)出指令(比如,指令“對具有某一空間ID的數(shù)組內(nèi)的元素排序”)(步驟700)時,響應(yīng)此指令,在每個PMM中,每個PM的處理器36都接收到通過信號控制線25給出的指令并解釋其內(nèi)容(步驟701),檢查指令內(nèi)的“空間ID”(步驟702),并確定它是否屬于由其固有的RAM核心34保持的數(shù)據(jù)的空間ID(步驟703)。如步驟703的結(jié)果為“否”,則處理結(jié)束。另一方面,如結(jié)果為“是”,則處理器36執(zhí)行所要求的各種檢驗,如檢驗屬于所述該空間ID的數(shù)據(jù)組是處于允許寫入狀態(tài)(步驟704)。如檢驗出現(xiàn)出錯結(jié)果(步驟705中的“是”),則處理器36通過信號控制線25向CPU 12報告出錯。另一方面,如沒有出錯,則處理器36執(zhí)行下面描述的排序處理的主體(步驟707及其以下步驟)。
首先,PMM 14-1至14-4中的每一個都對其固有的元素執(zhí)行排序(步驟707)。此排序?qū)嶋H上伴隨有元素在各個PMM內(nèi)的位置。更具體說,處理器36利用Quicksort或其他熟知的排序技術(shù)來對保持于其固有的RAM核心34中的元素排序。圖6B為示出每個PMM的數(shù)組內(nèi)的元素的排序狀態(tài)的示圖。注意,如圖6D所示,每個元素的下標(biāo)(記錄號)的位置也改變。
其次,每個存儲器模塊14的處理器36分配一個區(qū)域(順序號區(qū)域)用來置放順序號并給出每個順序號的初始值(步驟708)。圖6C為示出其中順序號的初始值已經(jīng)給出的每個PMM的狀態(tài)的示圖。這樣,就在每個模塊內(nèi)在排序后的元素中間賦予順序號。
之后,在鄰接對之間執(zhí)行順序號的歸并和賦予(步驟709)。在步驟709中,CPU 12首先控制總線上的開關(guān)28和30使得在排序中涉及的PMM之間對某一對的一側(cè)的輸入連接到另一側(cè)的輸出,而那一側(cè)的輸出連接到另一側(cè)的輸入。上述的對最好是兩個鄰接的PMM或者,如果不是鄰接的,是兩個處于附近位置的PMM。比如,在圖1中,如在排序中涉及PMM 14-1至14-4,PMM 14-1和PMM 14-2和PMM14-3和PMM 14-4最好是配對。比如,如圖8所示,CPU 12可控制開關(guān)28以使PMM 14-1的輸出和PMM 14-2的輸入連接到總線24-1,PMM 14-1的輸入和PMM 14-2的輸出連接到總線24-2,并且制開關(guān)28以使PMM 14-3的輸出和PMM 14-4的輸入連接到總線24-1,PMM14-3的輸入和PMM 14-4的輸出連接到總線24-2。另外,CPU 12還關(guān)斷置于PMM 14-2和PMM 14-3之間的總線24-1和24-2上的開關(guān)30-5和30-6。在圖8中,黑圈表示連續(xù)狀態(tài),而白圈表示不連續(xù)狀態(tài)和不與PMM連接。此外,其余的一些遵循其他PMM(未示出)的狀態(tài)。注意在圖8的示例中可以了解到通過關(guān)斷開關(guān)30-5和30-6將總線24-1和24-2分割可以更有效地利用總線。
這樣,如圖9示意地示出,PMM之間的連接由CPU 12確定。并且順序號賦予的主體是在PMM對之間執(zhí)行。
圖10A至12C只示出PMM 14-1和PMM 14-2的處理,但PMM14-3和PMM 14-4的處理也并行地執(zhí)行。注意在處理中首先將數(shù)據(jù)給予另一個PMM的稱為前PMM,而接受數(shù)據(jù)的(另一個PMM)稱為后PMM。前PMM也可稱為展示PMM,因為它展示元素或順序號,而另一方面,后PMM也可稱為確定PMM,因為它確定展示的順序號。PMM對之中的哪一個都可以是前PMM。在此示例中,為方便起見,將PMM 14-1作為前PMM,而將PMM 14-2作為后PMM。
首先,在前PMM中,指示處理位置的指針(以后稱其為“PUT指針”)置于初始位置(排序數(shù)組部分的開始處或“第0”位置)。另一方面,在后PMM中,如下所述,從前PMM接受的元素和首先指示待比較位置等等的指針(以后稱其為“比較指針”)置于初始位置(排序數(shù)組部分的開始處或“第0”位置)。(見圖10A和圖13A及圖13B的步驟1301和1311)。在此具體實施方式
中,在后PMM中使用的比較指針是形式(X,Y,Z)的結(jié)構(gòu)數(shù)組。此處,X表示待比較的開始位置(即還有待比較的元素的開始位置,以后稱其為“未處理部分”),Y指示從前PMM接受的元素的總數(shù)(根據(jù)情況以后稱其為“前向插入數(shù)”),而Z是在歸并前PMM和后PMM時所得到的虛擬數(shù)組中的前PMM給出的用于元素的建議順序號(根據(jù)情況稱為“虛擬順序號”)。
之后,由前PMM的處理器執(zhí)行初始數(shù)據(jù)傳送。在此數(shù)據(jù)傳送之中,在PUT指針指示的位置處的元素經(jīng)總線傳送到后PMM(見圖10B和步驟1303和1312)。注意在步驟1302中的分支中,在兩個PMM之間進(jìn)行處理時結(jié)果永遠(yuǎn)是“是”,不過這一點將在下面討論。在此第一數(shù)據(jù)傳送中,元素“ Carter”傳送到后PMM。后PMM找出傳送到的元素“Carter”在存儲于后PMM中的數(shù)組的部分的應(yīng)該插入的位置(步驟1313)。這并不需要數(shù)值實際插入,而是只要找到元素該插入的位置就足夠了。在此具體實施方式
中,存儲于數(shù)組部分中的元素實際上是置于排序狀態(tài)。因此,此插入位置可藉助于平分法或其他高速搜索法找出。找到插入位置就可以識別位于插入位置之前的順序未定的元素范圍(以后稱其為“范圍1”)。注意在此具體實施方式
中,這里有一個約定,在元素是同一元素的場合,后PMM的順序優(yōu)先。所以,在由前PMM傳送來的元素“Carter”在后PMM中存在時,當(dāng)存儲于后PMM中時此順序優(yōu)先(即具有較小的順序號)。
在此示例中,可以看到由前PMM傳送來的元素“Carter”位于由后PMM管理的數(shù)組部分內(nèi)元素“Carter”之前,于是可以看到屬于范圍“1”的元素不存在(見圖10C和步驟1314中的“是”)。之后,后PMM的處理器將傳送來的元素“Carter”的順序號設(shè)置為“0(即開始處)”并將其返回給前PMM(步驟1315)。之后,后PMM的處理器使前向插入數(shù)遞增到“1”并且也將虛擬順序號增加到“1”(步驟1316)。這是因為,由于從前PMM傳送的元素數(shù)增加了1,就必須使前向插入數(shù)遞增,并且下一個元素的順序號至少就此時給出的數(shù)值(在此場合為“0”)必須遞增。
當(dāng)順序號(元素插入位置)由后PMM給定時(步驟1332),前PMM的處理器將給定的順序號作為所述該元素的順序號存儲(步驟1334),并且之后使PUT指針遞增(見圖11A和步驟1335)。這樣,就確定了前PMM內(nèi)的元素的次序。
之后,前PMM的處理器經(jīng)總線將在PUT指針指示的位置的元素“Smith”傳送到后PMM(見圖11B和步驟1303)。與前面?zhèn)魉驮亍癈arter”的方式相同,后PMM找尋所傳送的元素“Smith”要插入的位置(步驟1313)??梢钥吹剑亍癝mith”是位于由后PMM管理的數(shù)組部分中的元素“Monroe”之后(見圖11C和步驟1314中的“是”)。從而,在由后PMM管理的數(shù)組部分中可以確定元素“Monroe”和位于其前的元素的數(shù),以及各個元素的次序。特別是,后PMM的處理器通過下面的進(jìn)程確定上述元素的次序。
首先,將前向插入數(shù)“Y”加到屬于包含在范圍“1”內(nèi)的元素的每個順序號上(步驟1317)。從而可確定包含在范圍“1”內(nèi)的元素的次序。在上述示例中,元素“Carter”的順序號變?yōu)椤?+1=1”,而元素“Monroe”的順序號變?yōu)椤?+1=2”。之后,將包含在范圍“1”內(nèi)的元素中的最后元素的順序號替換虛擬順序號(步驟1318),未處理位置變?yōu)榉秶?”中最后元素后面下一個元素的位置(步驟1319)。在上述示例中,元素“Monroe”的順序號“2”是在比較指針(結(jié)構(gòu)數(shù)組)的Z中給出,并且未處理位置從“0”變?yōu)椤?”。從而結(jié)構(gòu)數(shù)組變?yōu)?2,1,2)。
在此進(jìn)程之后,結(jié)構(gòu)數(shù)組內(nèi)的前向插入數(shù)“Y”和虛擬順序號“Z”遞增(步驟1320)。從而結(jié)構(gòu)數(shù)組變?yōu)?2,2,3)(見圖11D)。在步驟1320中取得的虛擬順序號變?yōu)樵诓襟E1312中取得的元素的順序號(在上述示例中,為“Smith”),并且后PMM的處理器將所述該順序號(在上述示例中,為“3”)傳送到后PMM(步驟1321)。在此進(jìn)程之后,虛擬順序號再遞增(步驟1322)。這是因為下一個元素的順序號變?yōu)橹辽俦却藭r給定的順序號大1之故。
前PMM存儲將接收到的順序號作為所述該元素的順序號存儲并使PUT指針遞增。這樣就確定了前PMM中的順序號。
當(dāng)在前PMM中沒有未處理的元素時(就是說,對所有的元素都確定了順序號并且沒有元素置于PUT指針的位置),前PMM的處理器將一個指示結(jié)尾的值傳送到后PMM(見步驟1306)。此處,“指示結(jié)尾的值”是一個大于指示數(shù)組的結(jié)尾處的元素的值。響應(yīng)此上述指示結(jié)尾的值,后PMM執(zhí)行一個幾乎與此進(jìn)程等同的進(jìn)程(圖13B中的步驟1312-1322)。在上述示例中,不管是否接收到指示結(jié)尾的值,不存在包含在范圍“1”中的元素,所以處理經(jīng)步驟1315和1316達(dá)到步驟1323而結(jié)束(見圖12B)。
在前PMM中,通過發(fā)送指示結(jié)尾的值(見步驟1316)和確定所有元素的順序號(步驟1336中的“是”),處理結(jié)束。
PMM 14-3和PMM 14-4之間的歸并的執(zhí)行是藉助類似于上述進(jìn)程的進(jìn)程,并且于是每個元素的順序號的確定就如圖12C所示。
當(dāng)在兩個PMM中確定了每個元素的順序號時,CPU 12改變開關(guān)的位置將每個都是由兩個PMM組成的PMM組連接。圖14A和圖14B為示出屬于示于圖8中的存儲器模塊的兩個存儲器模塊組之間的連接示例的示圖。在圖14A中,PMM 14-1和14-2組成第一PMM組,而PMM 14-3和14-4組成第二PMM組。CPU 12控制開關(guān)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所示,可控制開關(guān)使PMM 14-1和14-2的輸出連接到PMM 14-3和14-4。
圖15A和15B為分別示出示于圖14A和14B的連接的示例的示意圖。正如以后會了解到的,在圖15A中,由PMM 14-4給到PMM 14-1和14-2的數(shù)據(jù)(圖中的符號(1))指示順序號,由PMM 14-1和14-2給到PMM 14-3的數(shù)據(jù)(圖中的符號(2))指示元素,而由PMM 14-3給到PMM 14-4的數(shù)據(jù)(圖中的符號(3))指元素和虛擬順序號。此外,在圖15B中,在PMM之間交換的數(shù)據(jù)(1)和(2)與圖15A中的相同,并且另一方面從PMM 14-3傳輸?shù)絇MM 14-4的數(shù)據(jù)(符號(3))指示由PMM14-3計算的虛擬順序號。
下面描述歸并兩個PMM組的進(jìn)程和根據(jù)兩對PMM中的數(shù)組部分確定一個數(shù)組的順序號和其中包含的元素的順序號的進(jìn)程,如上述圖12A至12C所示(見圖7的步驟709)。注意,在下面的描述中,每個PMM中執(zhí)行的進(jìn)程都是根據(jù)在圖14B和15B中指示的連接狀態(tài)描述的。
首先,分別在PMM 14-1和PMM 14-2中(以后稱其為“前PMM組”),將PUT指針置于初始位置(步驟1301)。注意,在其后的進(jìn)程中,組成前PMM組的PMM中每一個都根據(jù)它自己控制的元素的發(fā)送來移動PUT指針。另一方面,后PMM中的每一個在其結(jié)構(gòu)數(shù)組初始化時都將比較指針置于初始位置(步驟1302)。之后,在組成前PMM組的PMM中的每一個之中,當(dāng)前,組成前PMM組的PMM都確定被發(fā)送的元素的順序號。
注意,在流程圖中,發(fā)送時使用的發(fā)送指針和接收指針都用作PUT指針,但是根本上這些發(fā)送和接收指針的移動夾在后PMM組的處理時間之中,但是其執(zhí)行只有微小的時間差。比如,如后所述,當(dāng)在某個PMM中發(fā)送指針遞增時(見步驟1304),所述該PMM也使接收進(jìn)程中的接收指針遞增(步驟1335)。
組成前PMM的PMM確定所述該元素是否由其自己根據(jù)待處理的元素的順序號進(jìn)行控制(步驟1302)。如步驟1302的結(jié)果是“是”,就通過總線24將PUT指針指向的元素傳送到PMM 14-3和14-4(見圖13A和圖16A的步驟1302)。在上述示例中,順序號為“0”的元素“Carter”由PMM 14-1傳送到PMM 14-3和PMM 14-4。藉助這一進(jìn)程PUT指針的位置在PMM 14-1中移動(步驟1304)。
PMM 14-3和PMM 14-4每個都接收元素(步驟1312),尋找這些元素應(yīng)該插入的位置(步驟1313)并確定屬于范圍“1”的元素是否存在(步驟1314)。對于上述的元素“Carter”,步驟1314的結(jié)果是“否”。
因而,在PMM 14-3中,元素“Carter”的虛擬順序號變?yōu)椤?”,于是此值傳送到PMM 14-4。在PMM 14-4中元素“Carter”的虛擬順序號也變?yōu)椤?”。這樣,PMM 14-4的處理器經(jīng)總線向前PMM組組返回“MAX(0,0)=0”作為元素“Carter”的順序號(見圖16B和步驟1315)。之后,在PMM 14-3和14-4中,結(jié)構(gòu)數(shù)組內(nèi)的前向插入數(shù)(Y)和虛擬順序號(Z)每個都遞增(步驟1316)。在上述示例中,每個的結(jié)構(gòu)數(shù)組就都變?yōu)?0,1,1),(0,1,1)。
當(dāng)由后PMM組給出順序號時(步驟1331),組成后PMM組的PMM確定當(dāng)前正在處理的元素(比如,元素“Carter”)是否是其自己控制的元素(步驟1333)。在元素“Carter”的順序號傳送時,PMM14-1發(fā)現(xiàn)上述步驟1333的結(jié)果是“是”,并且利用由后PMM組給出的順序號代替與處于該位置的元素相應(yīng)的順序號(見圖16A和步驟1334)。
同樣,后PMM組傳送被賦予下一個順序號的元素到后PMM。在上述示例中,元素“Carter”從P MM 14-2發(fā)送(見圖17A),并且每個后PMM組的那些具有更高虛擬順序號“MAX(1,1)=1”的傳送到前PMM組組作為所述該元素“Carter”的虛擬順序號(見圖17B)。此外,在組成后PMM組的PMM 14-3和PMM 14-4中,結(jié)構(gòu)數(shù)組分別變?yōu)?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”,前向插入數(shù)“Y(=2)”分別加到元素“Gore”和元素“Kennedy”順序號上。由此,元素“Gore”的順序號確定為“0+2=2”,而元素“Kennedy”的順序號確定為“2+2=4”(見步驟1317)。之后,PMM14-3的處理器設(shè)定結(jié)構(gòu)數(shù)組的虛擬順序號Z(當(dāng)前值為(0,2,2))為范圍“1”內(nèi)的結(jié)尾元素的虛擬順序號“4”(見步驟1318)并使未處理位置前進(jìn)(即將X的值從“0”改變?yōu)椤?”)(見步驟1319)。另外,PMM 14-3的處理器使結(jié)構(gòu)數(shù)組的前向插入數(shù)“Y”和虛擬順序號“Z”遞增(當(dāng)前值是(2,2,4))(見步驟1321)。從而此結(jié)構(gòu)數(shù)組變成為(2,3,5)。PMM 14-3中的虛擬順序號“Z(=5)”經(jīng)總線傳送到PMM 14-4。其后,PMM 14-3中的處理器使結(jié)構(gòu)數(shù)組的虛擬順序號“Z”遞增(見步驟1322)。在上述示例中,結(jié)構(gòu)數(shù)組通過執(zhí)行步驟1322變成為(2,3,6)。
另一方面,在PMM 14-4中,元素“Monroe”確定為位于所述該PMM 14-4控制的元素“Johnson”和“Wilson”中間(見步驟1313)。因此,在PMM 14-4中,元素“Johnson”屬于范圍“1”,所以前向插入數(shù)“Y(=2)”加到元素“Johnson”的順序號上,并且這樣元素“Johnson”的順序號就確定為“1=2=3”(見步驟1317)。之后,PMM 14-4的處理器設(shè)定結(jié)構(gòu)數(shù)組1虛擬順序號“Z”(當(dāng)前值為(0,2,2))為范圍“1”內(nèi)的結(jié)尾元素的順序號“3”(見步驟1318),并使未處理位置前進(jìn)(即將X的值從“0”改變?yōu)椤?”)(見步驟1319)。另外,PMM 14-4的處理器使結(jié)構(gòu)數(shù)組的前向插入數(shù)“Y”和虛擬順序號“Z”遞增(當(dāng)前值是(1,2,3))(見步驟1321)。從而此結(jié)構(gòu)數(shù)組變成為(1,3,4)。
其后,PMM 14-4比較由PMM 14-3給出的虛擬順序號“Z(-5)”與由它自己計算出的虛擬順序號“Z(=4)”,求出更大值“MAX(5,4)=5”并將其傳送到前PMM組組作為傳送的元素“Monroe”的次序。從而在前PMM組組中(更具體地說,是在發(fā)送了元素“Monroe”的PMM 14-4中),所述該元素的順序號確定為“5”。注意,還是在PMM 14-4中,在步驟1321后,結(jié)構(gòu)數(shù)組中的虛擬順序號“Z”遞增(見步驟1322)。在上述示例中,結(jié)構(gòu)數(shù)組變?yōu)?1,3,5)。
元素“Smith”以同樣的方式從前PMM組組發(fā)送(圖19A),但在此場合的進(jìn)程也按照圖13A-13C執(zhí)行。為了再對其簡略描述,接收元素“Smith”的PMM 14-3在元素“Smith”的插入位置的前面沒有屬于范圍“1”的元素存在,所以PMM 14-3將其結(jié)構(gòu)數(shù)組內(nèi)的虛擬順序號“Z(=6)轉(zhuǎn)送到PMM 14-4。PMM 14-4在元素“Smith”的插入位置的前面也沒有屬于范圍“1”的元素存在,所以它比較其結(jié)構(gòu)數(shù)組內(nèi)的虛擬順序號“Z(=6)”與如此傳送到虛擬順序號“Z(=6)”,求出更大值“MAX(6,5)=6”并將其傳送到前PMM組組作為傳送的元素“Smith”的次序(見圖19B和步驟1315)。在前PMM組中,發(fā)送元素“Smith”的PMM 14-1以接收到的順序號(=6)改寫與元素“Smith”相應(yīng)的順序號。注意,在PMM 14-3中,通過步驟1316,其結(jié)構(gòu)數(shù)組變?yōu)?2,4,7),并且,另一方面,在PMM 14-4中,通過步驟1316,其結(jié)構(gòu)數(shù)組變?yōu)?1,4,6)。
這樣,當(dāng)前PMM組中的所有元素發(fā)送結(jié)束時,組成前PMM組的PMM之一將一個指示結(jié)束的值傳送到后PMM組(見步驟1306)。組成后PMM組的PMM中的每一個都接收這個值并執(zhí)行步驟1312和1323的處理。在上述示例中,次序未定的元素“Wilson”存在于PMM14-4中。由于這一原因,在PMM 14-4中,當(dāng)步驟1314的結(jié)果為“是”時,前向插入數(shù)“Y”加到屬于范圍“1”的元素“Wilson”的順序號上以給出“3+4=7”,并且這樣得出的“7”就設(shè)定為元素“Wilson”的順序號。在通過這一進(jìn)程之后,組成后PMM組的PMM中的每一個都在步驟1323中得到結(jié)果“是”,并且進(jìn)程也在后PMM組中結(jié)束。
在上述示例中,數(shù)組內(nèi)的元素是存儲于4個PMM中,但是即使是在元素是存儲于大量PMM中的情況下,準(zhǔn)備各由4個PMM組成的附加的PMM組對并在這些組對之間執(zhí)行類似的進(jìn)程也就足夠了。比如,考慮如圖20上述的情況,其中某一個數(shù)組內(nèi)元素是存儲于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內(nèi)的所有元素的順序號可通過確定由包含512個PMM的前PMM組和包含512個PMM的后PMM組的PMM組對內(nèi)的元素的順序號而確定。
這樣,通過形成各由2n個PMM組所組成的PMM組的組對和其后確定存儲于組成組對的PMM組的每個PMM中的元素的順序號(見圖7的步驟709和710),最終可確定所有元素的順序號(在步驟710中的結(jié)果為“是”),并且其后,如需要,可根據(jù)上述順序編號方式執(zhí)行數(shù)組重整進(jìn)程(見步驟711)。這一進(jìn)程不是強制性的,不過通過生成其中元素按照順序號排列的數(shù)組以后可以高速執(zhí)行待執(zhí)行的信息處理。
更具體地說,CPU 12控制開關(guān)28和30以使個PMM的輸入和輸出由某一總線連接。圖21為示出在4個PMM之間的連接情況的示圖。之后,PMM 14-1至PMM 14-4的處理器根據(jù)所取得的順序號向總線釋放元素和順序號。每個處理器都監(jiān)視釋放到總線的元素及其順序號,獲取具有順序號與原來由其固有RAM核心管理的元素下標(biāo)(記錄號)相同的順序號的元素,并將其存儲于RAM核心的合適區(qū)域。比如,對于原來將帶有下標(biāo)(記錄號)“0”和“1”的元素存儲于其固有RAM核心(比如,見圖10的PMM 14-1)的PMM,獲取標(biāo)記有順序號“0”和“1”的元素并將其存儲就可以了。這樣做,每個PMM就可以管理實際存儲的數(shù)組。注意,這樣一來,PMM的處理器在生成存儲數(shù)組時還將生成空間ID控制表。
另外一種方式是,如圖22所示,令其他PMM(PMM 14-5至PMM14-8)管理所存儲的數(shù)組以使其他PMM中的每一個都監(jiān)視順序輸出的元素及其順序號,根據(jù)順序號獲取要由其自己存儲的元素并將其存儲于每個PMM的RAM核心中就足夠了。
比如,考慮利用上述本發(fā)明提供1024個PMM,在每個PMM中存儲大約1百萬個數(shù)據(jù)(元素)并且執(zhí)行此數(shù)據(jù)排序的場合。在此場合,排序完成需要的時間如下。此處,我們假定連接PMM的總線中的每一根都具有6.4GB/s的數(shù)據(jù)容量,在處理時所有的PMM都并行運行(即不存在不執(zhí)行進(jìn)程的PMM),并且所有相關(guān)的PMM都可協(xié)同并同時運行。此外,假設(shè)在每個PMM中完成大約1百萬個數(shù)據(jù)(元素)的排序的時間為2.5秒。在此場合,可以看到對包含在1024個PMM中的大約10億個元素進(jìn)行排序只需要大約4秒鐘。
藉助于這一具體實施方式
,在開始時PMM分割為由2個PMM組成的對,之后在進(jìn)一步分割為各由2n個PMM組所組成的PMM組,并且之后確定在每個對之中的順序號。另外,通過利用開關(guān)等等來調(diào)節(jié)應(yīng)用于每個對的總線,就可以在各對之間并行執(zhí)行順序號的確定。此外,通過重復(fù)自前PMM組向后PMM組發(fā)送元素的進(jìn)程和根據(jù)后PMM組內(nèi)的結(jié)構(gòu)數(shù)組中的值建立順序號,可以在所有的對中建立順序號。因此,處理可以以極端并行的方式執(zhí)行而不會生成任何不執(zhí)行任何處理的PMM(所謂的“空閑”P MM),并且也可以減少利用總線傳送的數(shù)據(jù)量。這就允許顯著提高排序的速度。
注意,在上述具體實施方式
1中,如圖14B和15B所示,排序是通過連接PMM和在其中間向元素賦予順序號而執(zhí)行的,不過PMM也可以連接成如圖14A和15A所示。在此場合,圖13B(步驟1312至1323)中的后PMM組的處理不是并行執(zhí)行的,而是每次在某一個PMM中取得一個虛擬順序號,待處理的元素和所述該虛擬順序號是傳送到鄰接的PMM,并且步驟1312至1323是在此PMM中執(zhí)行。因此,隨著組成后PMM組的PMM的數(shù)目的增大,有時候這會導(dǎo)致處理產(chǎn)生相當(dāng)?shù)难舆t。
下面對本發(fā)明的具體實施方式
2予以描述。在上述具體實施方式
1中,所有元素(在前PMM組內(nèi)的元素)都是傳送到后PMM組。然而,隨著數(shù)組的增大,可能出現(xiàn)大量的重復(fù)值。在采用根據(jù)具體實施方式
1的技術(shù)時,取同樣數(shù)值的元素被多次發(fā)送到總線。依情況的不同,可以認(rèn)為反復(fù)發(fā)送具有同一數(shù)值的元素是一種浪費。于是,在具體實施方式
2中,是預(yù)先計數(shù)PMM組內(nèi)的元素數(shù),并且通過在向后PMM組發(fā)送元素的同時一起發(fā)送元素數(shù),可以防止經(jīng)總線反復(fù)發(fā)送重復(fù)元素。
比如,考慮4對PMM的排序已經(jīng)完成并且這些對相互連接來執(zhí)行8個PMM的排序的場合。在此場合,如圖23所示,最好是能夠利用一根用來執(zhí)行8個PMM的歸并和排序的總線(此總線位于圖23中的PMM的下方;見符號2301至2303)并且在元素之間交換數(shù)據(jù)。下面描述在如圖23所示的連接模式中PMM 14-1至PMM 14-4(以下,為方便起見,“PMM 14-1”至“PMM 14-4”分別稱為“PMM1”至“PMM 4”)中的數(shù)值的冗余度的計算。此處,連接PMM 1至PMM 4的輸入/輸出終端(I/O)的總線(見符號2304)稱為第1總線,而連接PMM 1至PMM 4的其他輸入/輸出終端(I/O)的總線(見符號2305)稱為第2總線。第1總線用來交換用于PMM 1至PMM 4組成的PMM組的信息,而第2總線用來向各PMM給出數(shù)值及其冗余度。
注意,在下面的描述中,如圖25所示,在PMM 1至PMM 4的數(shù)組內(nèi)計算對于它們順序號已經(jīng)附加到每個元素的那些(值)的冗余度。就是說,只對前PMM組計算冗余度就足夠了。圖24為示出在PMM中計算冗余度的進(jìn)程的流程圖。PMM 1至PMM 4的每一個都首先執(zhí)行各初始化進(jìn)程(步驟2401)。此處,每個PMM具有一個順序號計數(shù)器用來指示待處理的值(元素),一個等同值計數(shù)器用來指示某一個數(shù)值(元素)有多大的冗余度,以及一個用來保持待處理的前值(元素)的前值存儲寄存器,并且將順序號計數(shù)器和等同值計數(shù)器的初始值設(shè)定為“0”(見圖25)。
其次,每個PMM都參照此順序號計數(shù)器來確定待處理的元素的順序號,并確定應(yīng)用此順序號的元素是否是它自己管理的元素(步驟2403)。在上述示例中,順序號計數(shù)器的數(shù)值的初始值為“0”,所以PMM 3確定它自己管理的一個元素有待處理(步驟2403中的“是”)。注意,其后的步驟2404-2405在初始處理(即對具有順序號為“0”的元素的處理)中不考慮。PMM 3確定在其自己內(nèi)部有多少與具有順序號為“0”(在此場合,“Carter”)的元素等同的元素(即PMM 3管理多少等于“Carter”的元素),并將元素“Carter”發(fā)送到第1總線,以及本地PMM內(nèi)部計數(shù),此計數(shù)指示這些元素中它有多少(步驟2406)。另一個PMM(PMM 1,PMM 2和PMM 4)在步驟2403中得到的結(jié)果是“否”,于是就前進(jìn)到步驟2407。
每個PMM都接收經(jīng)過第1總線給出并根據(jù)本地PMM內(nèi)部計數(shù)的數(shù)據(jù),將PMM內(nèi)部計數(shù)加到順序號計數(shù)器的數(shù)值上(步驟2408)。在上述示例中,順序號計數(shù)器的數(shù)值變?yōu)椤?+1=1”。之后,確定給定值是否與前值存儲寄存器中的數(shù)值不同(步驟2409),并且如兩者等同,則本地PMM內(nèi)部計數(shù)加到等同值計數(shù)器的數(shù)值上(步驟2410),另一方面,如是一個新的數(shù)值,就執(zhí)行后述的替換進(jìn)程(步驟2411)。注意,在此初始迭代中,前值存儲寄存器沒有數(shù)值,所以上述的步驟2409省略,而元素存儲于前值存儲寄存器中,并且等同值計數(shù)器也遞增。所以,在上述示例中,每個PMM在前值存儲寄存器中存儲所接收到的元素“Carter”,并將等同值計數(shù)器設(shè)定為“0+1=1”(見圖26)。
重復(fù)這些步驟2401至2411的處理并且當(dāng)最后元素的處理完成時,步驟2401的結(jié)果為“是”,于是處理前進(jìn)到步驟2412。
在上述示例中,當(dāng)?shù)?步驟2401至2411的處理完成時,每個PMM都參照順序號計數(shù)器的值并確認(rèn)此值為“1”。從而PMM 4了解它管理帶有順序號為“1”的元素。此外,PMM 4比較前值存儲寄存器的值(元素“Carter”)和具有順序號為“1”的元素“Carter”(步驟2404),并且值不改變,所以它通過第1總線發(fā)送元素“Carter”和本地PMM內(nèi)部計數(shù)“1”(步驟2405)。如圖27所示,經(jīng)過第1總線接收數(shù)據(jù)的PMM使順序號遞增(1+1=2)(步驟2408),并且因為存儲于前值存儲寄存器中的值與接收到的元素等同,它們使等同值計數(shù)器遞增(1+1=2)(步驟2410)。
之后,在每個PMM中執(zhí)行對帶有順序號“2”的元素的處理。在對帶有順序號“2”的元素執(zhí)行處理中,PMM 1保持一個元素,于是PMM 1比較元素“Clinton”與存儲于前值存儲寄存器的元素“Carter”。此處值有改變(在步驟2404中結(jié)果為“是”),所以PMM 1通過第2總線發(fā)送前值存儲寄存器的內(nèi)容(元素“Carter”)和等同值計數(shù)器的“2”(步驟2405)。寄存器的這一內(nèi)容和計數(shù)器的值對各PMM給出。如后所述,當(dāng)計算出某一元素(在此場合為元素“Carter”)的冗余度時,執(zhí)行所述該元素的排序(?)(見圖31A至31C)。因此,此元素及其冗余度可保持于個PMM中,一直到所述該元素的排序完成。
此外,元素“Clinton”及本地PMM內(nèi)部計數(shù)“1”給到第1總線(步驟2406)。
根據(jù)經(jīng)由第1總線給出的數(shù)據(jù),PMM使順序號計數(shù)器遞增(2+1=3)(步驟2408)。此外,前值存儲寄存器的值“Carter”不同于傳送的元素“Clinton”(在步驟2409中結(jié)果為“是”),所以PMM替換(更新)前值存儲寄存器的值并且也替換等同值計數(shù)器的值為經(jīng)第1總線給出的本地PMM內(nèi)部計數(shù)的值(見步驟2411和圖28A)。
對帶有其他順序號的元素執(zhí)行同樣的進(jìn)程。比如,對順序號“3”PMM 3根據(jù)步驟2404和2406經(jīng)過第1總線發(fā)送元素“Clinton”并且根據(jù)步驟2407,2408,2409和2410使各計數(shù)器遞增(見圖28B)。此外,對順序號“4”PMM 1根據(jù)步驟2404,2405和2406經(jīng)過第2總線發(fā)送元素“Clinton”并且根據(jù)步驟2407,2408,2409和2411使各計數(shù)器遞增(見圖29A)。
在處理順序號“ 5”時,存在兩個由PMM 2管理的“Johnson”,所以它經(jīng)過第1總線發(fā)送元素“Johnson”和本地PMM內(nèi)部計數(shù)“2”。因此,“2”加到順序號計數(shù)器和等同值計數(shù)器的值上(見圖29B)。此外,藉助此進(jìn)程,順序號計數(shù)器的值從“5”改變?yōu)椤?”,因此,注意待處理的下一個元素的順序號變?yōu)椴皇恰?”,而是“7”。當(dāng)具有順序號“ 7”(見圖30A)的最后一個元素的處理完成時,步驟2401的結(jié)果為“是”。于是,開始的PMM(在上述示例中為PMM 1),通過第2總線,發(fā)送元素“Johnson”和等同值計數(shù)器的數(shù)值“4”并經(jīng)過第2總線發(fā)送指示處理已經(jīng)結(jié)束的數(shù)據(jù)(步驟2414)。每個PMM都經(jīng)過第2總線給予每個元素和指示元素數(shù)的計數(shù),并且將這些應(yīng)用于排序。注意,在上述示例中,開始的PMM的構(gòu)成使得他執(zhí)行步驟2413和2414,不過這并不是限制,因為對PMM而言預(yù)先規(guī)定最后元素等等,以及指示結(jié)束的數(shù)據(jù)就足夠了。
如上所述,通過取得在某一PMM組內(nèi)的現(xiàn)有各元素的數(shù)目,在將一個PMM組和另外一個PMM組歸并并對其排序時,不需要發(fā)送重復(fù)的元素。
圖31A至31C為示出在排序同時省略發(fā)送冗余元素的的流程圖。圖31A至31C與圖13A至13C等同,只有某些例外,所以后兩位數(shù)字相同的步驟是大致相當(dāng)?shù)倪M(jìn)程。此外,在圖31A至31C中有雙線環(huán)繞的步驟是新添加的步驟或是與圖13A至13C中的相應(yīng)步驟略有不同的步驟。在此進(jìn)程中,在前PMM組中,管理待處理元素(即由發(fā)送指針指向的元素)的PMM向后PMM組發(fā)送該元素同時一起發(fā)送前PMM組中的該元素的冗余度(數(shù)存在)“N”(見步驟3103和3103-2)。在示于圖25至30B的示例中,例如,當(dāng)元素“Carter”從PMM 1至PMM 4組成的前PMM組發(fā)送到后PMM組時,元素“Carter”是與前PMM組中的元素“Carter”一起傳送的。此外,在前PMM組的發(fā)送進(jìn)程中,輸出元素及其冗余度的PMM在輸出后將輸出指針移動,移動數(shù)等于它自己管理的所述元素的數(shù)(步驟3104)。比如,如圖28所示,元素“Carter”的冗余度是“2”,并且這些在PMM3和PMM 4中各管理一個。因此,第2指針的位置在PMM 3和PMM4中各下降一個。注意,在PMM中的發(fā)送指針的移動和等于所述該元素的冗余度“N”。
另一方面,組成接收元素及其冗余度的后PMM組的PPM將冗余度“N”添加到前向插入數(shù)和虛擬順序號,如圖31B中的步驟3116和步驟3120所示。這相應(yīng)于有“N”個元素(帶有小順序號)位于其自身前面的場合。
此外,在組成后PMM組的PMM的接收進(jìn)程中,在前PMM的發(fā)送進(jìn)程中發(fā)送的元素(待比較數(shù)據(jù))和在處理中由后PMM發(fā)送的順序號用于計算接收到的順序號和待比較數(shù)據(jù)發(fā)送時的順序號的差值“M”(步驟3132-2)。這一差值“M”指示位于待比較元素之前的元素數(shù)(如順序號小于所述該元素)。因此,組成后PMM組的PMM在由其自己管理的元素中識別與所述該待比較元素等同的元素(步驟3132-3),并且如存在,就在只寫元素各自的順序號上加上“M”(步驟3134)。在步驟3134之后,PMM移動接收指針,移動數(shù)等于所述元素數(shù)(步驟3135)。這一進(jìn)程大致與步驟3104等同。
下面描述示于圖24的冗余度計算中和示于圖31A至31C的排序(依情況有時稱為自排序)中的并行操作。如圖23所示,在此具體實施方式
中,在冗余度計數(shù)中涉及的PMM之間的通信是利用總線2304和2305執(zhí)行的,而在執(zhí)行自排序中涉及的PMM之間的通信是利用總線2301,2302,2303等等執(zhí)行的。為此目的,如在PMM中并行處理可行,則冗余度計數(shù)和自排序可以并行執(zhí)行。在此場合,當(dāng)在前PMM組中的某一個元素的冗余度計算(比如,如圖28A所示),元素“Carter”及其冗余度“2”經(jīng)由第2總線發(fā)送并且當(dāng)由組成前PMM組的PMM(PMM 1至PMM 4)接收到時,在圖31A至31C中所示的進(jìn)程可對計算其冗余度的元素執(zhí)行。就是說,響應(yīng)對某一元素的冗余度的計算,可以執(zhí)行對所述該元素執(zhí)行步驟3102-3104,步驟3112-3122和步驟3132-3135的處理。此外,在示于上述圖31A-31C的處理中間,某一元素及其冗余度可以一起刪除而完成針對所述該元素的那些進(jìn)程。因此,在組成前PMM組的每個PMM中,并非所有與元素及其冗余度(其量隨著不同元素數(shù)的增加而增大)有關(guān)系的數(shù)據(jù)都需要保留。
這樣,在具體實施方式
2中,后PMM組計算冗余度并發(fā)送元素及其冗余度到后PMM組。因此,前PMM組必須冗余地發(fā)送同一元素到后PMM組。在冗余等同元素數(shù)大的場合(比如,當(dāng)一個元素指示人的性別,或人的年齡等等),可以減少自排序處理的次數(shù),于是排序可以以更高的速度進(jìn)行。
下面描述本發(fā)明的具體實施方式
3。在具體實施方式
3中,根據(jù)由置于各PMM內(nèi)的元素組成的數(shù)組,形成(?)記錄,無重復(fù)元素的數(shù)值表,以及用來由記錄指定數(shù)值表的指針數(shù)組。在此說明書中,這一進(jìn)程稱為匯編。
比如,當(dāng)某一數(shù)組的元素在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”。在此具體實施方式
中,根據(jù)上述元素及其冗余度,在另一PMM“k”中形成數(shù)值表和計數(shù)數(shù)組等等。注意,此PMM“k”可以是PMM 1至PMM4以外的PMM,當(dāng)然也可以是PMM 1至PMM 4中的一個。
圖33為示出根據(jù)本具體實施方式
3的匯編的流程圖。注意,為了簡化描述,考慮元素在PMM 1至PMM 4之間如圖34A那樣分割并且其間順序號的賦予進(jìn)程已經(jīng)執(zhí)行。首先,每個PPM都有一個指示待處理的值(元素)的順序號的順序號計數(shù)器,一個指示處理后的所述該值(元素)的順序號的值-號計數(shù)器,一個指示有多少所述該元素的冗余復(fù)件存在的等同值計數(shù)器以及一個保持待處理的值(元素)的前值的前值存儲寄存器(見步驟3301和圖34A)。注意,初始時前值存儲寄存器無值保持。
之后,圖33的步驟3302-3306的處理幾乎與圖24的步驟2401-2406等同。就是說,每個PMM都參照順序號計數(shù)器,確定待處理的元素的順序號,并確定應(yīng)用此順序號的元素是否是它自己管理的元素(步驟3303)。在圖34A的狀態(tài),順序號計數(shù)器的值為“0”,所以PMM 3生成一個本地PMM內(nèi)部計數(shù)用來指示所述該PMM 3有多少在第2總線上的具有順序號為“0”的元素(在此示例中為“1”)(見圖34B的3306)。之后,PMM 3比較存儲于前值存儲寄存器中的元素與釋放到第1總線的元素,并且如兩者不同,就設(shè)定值-號計數(shù)器的值為好象它是發(fā)送到第1總線的順序號(步驟3307)。注意,在圖34A的狀態(tài)中,值-號計數(shù)器的值是初始值“0”,所以應(yīng)用于元素“Carter”的順序號不改變(見圖34B)。
之后,每個PMM 3都接收經(jīng)過第1總線給出(步驟3308)的數(shù)據(jù)。步驟3308-3311的處理幾乎與圖24的步驟2408-2411的處理等同。就是說,每個PMM將PMM內(nèi)部計數(shù)加到給定的順序號計數(shù)器的數(shù)值上,并且,如元素不是給定的數(shù)據(jù)中的新元素(步驟3310中為“否”),則將此PMM內(nèi)部計數(shù)添加到等同值計數(shù)器的值上(見步驟3311和圖34B)。如圖34A和34B所示,當(dāng)帶有順序號“0”的元素“Carter”的處理完成時,帶有順序號“1”的元素的處理以同樣的方式執(zhí)行(見圖35A)。
下面,執(zhí)行帶有順序號“2”的元素的處理。此處,PMM 1比較存儲于前值存儲寄存器中的元素“Carter”與帶有順序號“2”的元素“Clinton”。此處,它們是不同的(在步驟3304中結(jié)果是“是”),于是PMM 1經(jīng)第2總線發(fā)送存儲于前值存儲寄存器之中的元素和等同值計數(shù)器的值(步驟3305)。之后,PMM 1經(jīng)第1總線發(fā)送待處理的元素“Clinton”和本地PMM內(nèi)部計數(shù)“1”(步驟3306)。其后,PMM 1比較存儲于前值存儲寄存器之中的元素和釋放到第1總線的元素。在釋放元素“Clinton”的場合,這些是不同的,于是將元素“Clinton”的順序號設(shè)定為加上“1”(0+1=1)的值-號計數(shù)器的值。
每個PMM接收經(jīng)第1總線給出的數(shù)據(jù)(步驟3308)并在接收到的數(shù)據(jù)中將本地PMM內(nèi)部計數(shù)加到順序號計數(shù)器的值之上(2+1=3)(見步驟3309和圖35B)。在給出元素“Clinton”的場合,前值存儲寄存器的元素“Carter”與給出的元素“Clinton”是不同的(步驟3310的結(jié)果為“是”),于是每個PMM執(zhí)行新-值登記進(jìn)程(步驟3312)。在此進(jìn)程中,值-號計數(shù)器的值遞增(0+1=1),等同值計數(shù)器的值改變?yōu)榻邮諗?shù)據(jù)內(nèi)的本地PMM內(nèi)部計數(shù)“1”,并且前值存儲寄存器的內(nèi)容重寫為元素“Clinton”(見圖35B)。
對帶有順序號“3”的元素“Clinton”執(zhí)行同一進(jìn)程。比如,PMM 3可經(jīng)第1總線發(fā)送元素“Clinton”和本地PMM內(nèi)部計數(shù)“1”(見步驟3306)并且設(shè)定所述該元素“Clinton”的順序號為值-號計數(shù)器的值“1”(見步驟3307和圖36A)。此外,每個PMM在順序號計數(shù)器的值上加上接收到的本地PMM內(nèi)部計數(shù)“1”(見步驟3309)并且也在等同值計數(shù)器的值上加上本地PMM內(nèi)部計數(shù)“1”(見步驟3311和圖36A)。另外,如圖36B所示,關(guān)于帶有順序號“4”的元素“Johnson”也一樣,PMM 1經(jīng)第2總線發(fā)送元素“Clinton”和等同值計數(shù)器的值“2”(步驟3305),并經(jīng)第1總線發(fā)送元素“Johnson”和本地PMM內(nèi)部計數(shù)“1”(步驟3306),并且設(shè)定元素“Johnson”的順序號為設(shè)定為加上“1”(1+1=2)的值-號計數(shù)器的值。另一方面,每個PMM執(zhí)行次序-值計數(shù)器遞增和新-值登記進(jìn)程(步驟3309和3312和圖36B)。對帶有其他順序號的元素執(zhí)行同一進(jìn)程。各元素的處理示于圖37A和圖38A。注意,關(guān)于圖38,PMM 1經(jīng)第1總線發(fā)送最后一個元素“Johnson”和那些元素的計數(shù)并經(jīng)第2總線發(fā)送指示結(jié)束的數(shù)據(jù)(見步驟3315)。
如上所述,PMM“k”的輸入與第2總線連接。因此,非冗余元素和與其相關(guān)的值-號計數(shù)器的值經(jīng)第2總線給出。因此,PMM“k”接收它們并將接收到的嚴(yán)肅順序地置于數(shù)值表中并且還將接收到的值-號計數(shù)器的值順序地置于計數(shù)數(shù)組中。圖39A為數(shù)值表和在PMM“k”內(nèi)部生成的計數(shù)數(shù)組的示圖。這些是在步驟3305或步驟3314中發(fā)送(見圖35B,圖36B和圖38)并傳送到PMM“k”。如圖39A所示,元素置于無冗余數(shù)值表中,而指示每個現(xiàn)有元素數(shù)的計數(shù)(即冗余度)置于計數(shù)數(shù)組中。
另外,在PMM 1至PMM 4中可以生成一個指示記錄和應(yīng)用于每個無冗余元素的順序號的指向數(shù)值表的指針數(shù)組。就是說,通過生成一個指示記錄和應(yīng)用于與所述該記錄相對應(yīng)的元素的順序號之間的相應(yīng)關(guān)系數(shù)組,可以使其成為指向此數(shù)值表的指針數(shù)組(見圖39B)。在圖39B中,關(guān)于記錄“0”,相應(yīng)元素的順序號“2”變?yōu)橹赶驍?shù)值表的指針數(shù)組中的指針值。這指示,在數(shù)值表中(見圖39A),待指向的數(shù)值是存儲位置號是“2”。就是說,根據(jù)指向數(shù)值表的指針數(shù)組中的指針值,可指向存儲于PMM“k”中的數(shù)值表,并且從而可以從記錄識別元素。
藉助于如上描述的本具體實施方式
,在PP之間分割的任何數(shù)組的元素被存儲并被給予順序號,并且此次序被重賦值以使同一次序賦予同一元素。求出元素和一個新取得的非冗余次序之間的對應(yīng)關(guān)系并將元素存儲于數(shù)值表中。所述該次序是指向數(shù)值表的指針數(shù)組和分割數(shù)組內(nèi)的元素之間的對應(yīng)關(guān)系。因此,可以根據(jù)記錄通過指針數(shù)組內(nèi)的指針值識別數(shù)值表內(nèi)的元素。
下面描述本發(fā)明的具體實施方式
4。在具體實施方式
4中,將兩個數(shù)組聯(lián)結(jié)。其前提是數(shù)值表和指向數(shù)值表的指針數(shù)組是通過匯編生成的。此外,一個空間ID應(yīng)用于數(shù)值表和指向數(shù)值表的指針數(shù)組,并且有關(guān)由其自己管理的數(shù)組部分是由所述該空間ID管理。
圖40為示出根據(jù)具體實施方式
4的聯(lián)結(jié)的流程圖。
為簡化描述,如圖41A所示,考慮原始數(shù)據(jù)是一個由與在某個PMM組上分割的記錄(見符號4100)相對應(yīng)的元素所組成的數(shù)組的場合。匯編此記錄組的結(jié)果是生成一個由指針數(shù)組(見符號4100)組成的數(shù)據(jù)塊(以下稱其為“信息塊”)和一個在由PMM 1和PMM 2組成的PMM組中的數(shù)值表(見符號4102)。另一方面,由對應(yīng)于記錄(見符號4110)的元素所組成的其他數(shù)組在其他PMM組之間分割,并且通過匯編,由指針數(shù)組(見符號4111)組成的信息塊和數(shù)值表(見符號4112)在PMM 3和PMM 4組成的數(shù)組中生成。
CPU 12向每個PMM傳送一個命令將數(shù)值表與指示兩個數(shù)值表的數(shù)組的空間ID相聯(lián)結(jié)的指令。在PMM之間,其中待聯(lián)結(jié)的數(shù)組是它們自己管理的數(shù)值表,或其一部分,的PMM根據(jù)空間ID識別待聯(lián)結(jié)的數(shù)值表(見步驟4001和圖42A)。其次,PMM 1至PMM 4在兩個數(shù)值表被歸并并且將順序號賦予元素的狀態(tài)下對其進(jìn)行排序(步驟4002)。根據(jù)具體實施方式
的排序可用于這一排序。在上述示例中,首先,元素的順序編號是對由PMM 1和PMM 2組成的第一PMM組和由PMM 3和PMM 4組成的第二PMM組執(zhí)行,通過取第一PMM組為前PMM組和取第二PMM組為后PMM組而將順序號應(yīng)用于兩個組內(nèi)元素。圖42B為示出順序號以這種方式應(yīng)用于元素的狀態(tài)的示圖。
之后,對其中待處理的數(shù)值表是分割的PMM執(zhí)行匯編以便在另外的PMM中或在PMM 1至PMM 4之一中生成一個聯(lián)結(jié)數(shù)值表和聯(lián)結(jié)計數(shù)數(shù)組(步驟4003)。就是說,執(zhí)行匯編可得到一個其中的歸并數(shù)值表的元素不是冗余元素的新的數(shù)值表和一個包含指示存在有多少重復(fù)元素的計數(shù)的計數(shù)數(shù)組(見圖42C)。在這一進(jìn)程之后,需要一個新的指針來指向聯(lián)結(jié)的新數(shù)值表(即通過匯編得到的數(shù)值表)。這一點可通過生成一個存儲與通過匯編得到的順序號數(shù)組相對應(yīng)的順序號的新的指針數(shù)組而做到,上述順序號指示在聯(lián)結(jié)之前在與所述該指針數(shù)組內(nèi)的指針值的位置相對應(yīng)的位置的信息塊中的指針數(shù)組內(nèi)的指針值。在上述順序號數(shù)組內(nèi)的數(shù)值理解為與應(yīng)用于元素的新順序號相對應(yīng)(見圖42C)。
如圖43A所示,比如,在指示第一指針值“1”的位置上的順序號數(shù)組內(nèi)的值(順序號)是“2”,于是在聯(lián)結(jié)后在指針數(shù)組內(nèi)的相應(yīng)位置的指針值變?yōu)椤?”。此外,在指示第二指針值“2”的位置上的順序號數(shù)組內(nèi)的值(順序號)是“3”,于是在聯(lián)結(jié)后在指針數(shù)組內(nèi)的相應(yīng)位置的指針值變?yōu)椤?”。這樣,就可以得到用于聯(lián)結(jié)數(shù)值表的指針數(shù)組(圖43A和圖43B)。
這樣,可以了解,可利用新指針數(shù)組和聯(lián)結(jié)數(shù)值表從記錄識別此值(元素)。如圖44A和44B所示,在新得到的指向數(shù)值表的指針數(shù)組內(nèi)的相應(yīng)的位置的指針值得到識別并且此指針值識別在由該值指示的位置上的數(shù)值表內(nèi)的元素。此處,可以看到,同一元素的指定與在原始數(shù)據(jù)的元素中一樣,即使是兩個數(shù)值表已經(jīng)聯(lián)結(jié)。
這樣,根據(jù)具體實施方式
4,通過歸并多個數(shù)值表并且將對歸并數(shù)值表的元素排序和匯編相結(jié)合,可以對每一個數(shù)值表得到一個聯(lián)結(jié)數(shù)值表和順序號數(shù)組。順序號數(shù)組的值(順序號)可藉助用來從記錄指定數(shù)值表的指針數(shù)組來識別并將所述該順序號存儲于與記錄相應(yīng)的位置,于是可根據(jù)記錄得到新指針數(shù)組用來指定聯(lián)結(jié)數(shù)值表。因此,就可以在大致為上述排序和匯編所需要的時間內(nèi)將多個數(shù)值表聯(lián)結(jié),于是可顯著增加處理速度。
本發(fā)明絕不限于上述具體實施方式
,因為在權(quán)利要求的范圍內(nèi)可以有各種改型,并且,勿庸贅言,這些也包含于本發(fā)明的范圍之內(nèi)。
比如,雖然在上述具體實施方式
中本發(fā)明是應(yīng)用于計算機系統(tǒng),但這并不是限制,因為本發(fā)明也可應(yīng)用于連接到個人計算機等等的計算機電路板。在此場合,在圖1中,CPU 12,存儲器單元14,總線24等等可安裝于電路板上,從而組成根據(jù)本發(fā)明的信息處理單元。
此外,連接CPU 12和存儲器模塊14,和/或總線之間的總線的組數(shù)不限于上述具體實施方式
中的數(shù)目,而是可以考慮安裝計算機系統(tǒng)的電路板的大小、各總線的位寬度等等適當(dāng)?shù)卮_定。此外,在上述具體實施方式
中設(shè)置有用來設(shè)置存儲器模塊輸入/輸出和總線之間的連接的開關(guān)28及可以在CPU和存儲器模塊中間和存儲器模塊之間開關(guān)總線的開關(guān)30。通過設(shè)置開關(guān)29和開關(guān)30,比如,某一根總線(見圖1的總線24-4)既可用于CPU模塊12和存儲器模塊14-1中間的數(shù)據(jù)交換,也可用于存儲器模塊14-2和存儲器模塊14-3之間的數(shù)據(jù)交換(在此場合將開關(guān)30-5關(guān)斷即可)。因此,總線可有效地利用。然而,在總線組數(shù)可以足夠大的場合或在存儲器模塊數(shù)相對小的場合,開關(guān)30不一定需要設(shè)置。
此外,本說明書敘述的是來自CPU 12的指令是通過信號控制線25給出,但是除了指令之外,當(dāng)然時鐘信號或各種用來使各存儲器模塊同步工作的其他控制信號也可以通過信號控制線25給出,并且也可以給出從各種存儲器模塊到CPU 12的規(guī)定信號(比如,出錯信號和指示數(shù)據(jù)收到的信號)。
另外,在上述具體實施方式
中,示出了PMM之間的連接的各種示例,但是選擇用來在PMM之間進(jìn)行連接的總線和信號交換并不限于在上述具體實施方式
示出的方式。
此外,在上述具體實施方式
3中,如圖32所示,第1總線(見符號3201)是用來實現(xiàn)PMM之間的通信,而第2總線(見符號3202)是用來實現(xiàn)元素和這些元素的計數(shù)(冗余度),但是這并非是一種限制。比如,如圖45所示,生成一個沒有冗余元素的數(shù)組數(shù)值表的PMM“k”及其計數(shù)數(shù)組可能可以監(jiān)視第1總線4501并根據(jù)出現(xiàn)在第1總線4501上的元素及計數(shù)數(shù)組實行規(guī)定處理(比如,由PMM 1至PMM 4執(zhí)行的計數(shù)器遞增和寄存器的內(nèi)容的存儲/更新),從而生成數(shù)值表及計數(shù)數(shù)組。
另外,在此說明書中,一種裝置的功能可能由兩種以上的物理裝置實現(xiàn),或者是兩種以上的功能可以由一種物理裝置實現(xiàn)。
利用本發(fā)明,可以提供一種可以以極高速度執(zhí)行數(shù)據(jù)排序、匯編和聯(lián)結(jié)的信息處理裝置。
本發(fā)明可應(yīng)用于處理大量數(shù)據(jù)的系統(tǒng),比如,數(shù)據(jù)庫和數(shù)據(jù)倉庫中。更具體說,本發(fā)明可應(yīng)用于大規(guī)??茖W(xué)技術(shù)計算和排序管理及對任務(wù)很關(guān)鍵的行政工作。比如證券交易。
權(quán)利要求
1.一種分布式存儲器型信息處理系統(tǒng),其構(gòu)成包括一個CPU模塊;每個都具有一個處理器和RAM核心的多個存儲器模塊;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,并且其中所述信息處理系統(tǒng)的特征在于所述存儲器模塊的構(gòu)成包括對組成數(shù)組的那些它自己管理的部分的元素執(zhí)行排序并根據(jù)特定的順序?qū)λ鲈刂匦屡判虻呐判蜓b置,根據(jù)由其自身管理的所述部分在數(shù)組中所占據(jù)的位置將其I/O、通過規(guī)定總線將所述排序后的元素與其順序號一起發(fā)送到另一個存儲器模塊或通過規(guī)定總線從另一個存儲器模塊接收所述元素及其順序號的排序裝置;順序號計算裝置,此裝置在接收到一個所述元素及順序號時將其與由其自身管理的元素進(jìn)行比較而計算出一個作為接收到的元素的順序號的候選的虛擬順序號,并且將其返回到所述另一個存儲器模塊;以及順序確定裝置,此裝置在接收到所述虛擬順序號時根據(jù)所述虛擬順序號確定元素的順序;結(jié)果所述數(shù)組的元素的順序號是通過在發(fā)送所述元素及順序號一方的展示存儲器模塊和在接收所述元素及順序號并計算虛擬順序號一方的存儲器模塊之間的通信來確定。
2.如權(quán)利要求1的信息處理系統(tǒng),其中所述存儲器模塊的構(gòu)成包括元素識別/發(fā)送裝置,用來根據(jù)確定的順序號識別要處理的元素并將其通過總線之一進(jìn)行發(fā)送;元素比較裝置,用來對前一個待處理的元素與發(fā)送的元素進(jìn)行比較;以及一個等值計數(shù)器,用來指示等同元素的計數(shù)并且其值在發(fā)送一個等同元素時遞增;其中所述元素比較裝置的構(gòu)成使得當(dāng)前一個待處理的元素被確定為與發(fā)送的元素不同時,此前一個待處理的元素與所述該元素相關(guān)的等值計數(shù)器的值相關(guān)聯(lián)并且其一被送出,此外,并且存儲器模塊之一接收前一個待處理的元素及如此發(fā)送的相關(guān)計數(shù)器的值,并且具有一個于其中使它們相關(guān)聯(lián)并置于接收的順序的數(shù)組。
3.如權(quán)利要求2的信息處理系統(tǒng),其中所述存儲器模塊的構(gòu)成包括一個指示非冗余順序號的值-號計數(shù)器,其值在所述元素比較裝置確定前一個待處理的元素與發(fā)送的元素不同時遞增;以及順序號更新裝置,其作用為,對發(fā)送的元素而言,在前一個待處理的元素與發(fā)送的元素等同時將值-號計數(shù)器的值設(shè)定為所述該非冗余元素的順序號,但如果它們不同,將值-號計數(shù)器的遞增值設(shè)定為所述該非冗余元素的順序號。
4.一種通過利用分布式存儲器型信息處理系統(tǒng)的數(shù)組排序方法,該系統(tǒng)的構(gòu)成包括一個CPU模塊;每個都具有一個處理器和RAM核心的多個存儲器模塊;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,并且其中所述排序方法的構(gòu)成包括(a)對組成數(shù)組的那些它自己管理的部分的元素執(zhí)行排序的步驟,(b)根據(jù)由其自身管理的所述部分在數(shù)組中所占據(jù)的位置在管理所述數(shù)組的位置的存儲器模塊中間確定發(fā)送元素及順序號一方的展示存儲器模塊,以及在接收所述元素及順序號一方的確定存儲器模塊的步驟,(c)在展示存儲器模塊中通過規(guī)定總線將排序后的元素與其順序號一起發(fā)送到另一個存儲器模塊的步驟,(d)在確定存儲器模塊中通過規(guī)定總線從另一個存儲器模塊接收所述元素及其順序號的步驟,(e)在所述確定存儲器模塊中,根據(jù)由所述確定存儲器模塊管理的元素的順序號計算出指示一個接收到的元素的候選順序號的虛擬順序號,并且將所述虛擬順序號返回到所述展示存儲器模塊的步驟,以及(f)在所述展示存儲器模塊中,當(dāng)接收到所述虛擬順序號時根據(jù)所述虛擬順序號更新元素的順序號的步驟,以及(g)在上述步驟(d)至(f)每一個步驟結(jié)束時,通過將屬于藉助上述步驟(d)至(f)賦予一個規(guī)定順序號的元素的展示存儲器模塊和確定存儲器模塊所組成的存儲器模塊組中的每一個分別取作展示存儲器模塊組和確定存儲器模塊組之一并且重復(fù)步驟(d)至(f)來更新每一個存儲器模塊組中的元素的順序號,可確定數(shù)組中的每一個元素的順序號。
5.如權(quán)利要求4的排序方法,其中所述步驟(e)的構(gòu)成包括(e1)根據(jù)指示要在接收到的元素的前方插入的元素數(shù)的前向插入數(shù),要置于前方的元素的順序號,以及接收到的順序號計算虛擬順序號的步驟。
6.如權(quán)利要求4或5的排序方法,其中所述步驟(f)的構(gòu)成包括(f1)將接收到的虛擬順序號設(shè)置給在步驟(c)中發(fā)送的順序號的步驟。
7.如權(quán)利要求4的排序方法,其構(gòu)成還包括(h)在展示存儲器模塊中,計算指示在所述存儲器模塊組中有多少個由組成所述展示存儲器模塊組的存儲器模塊管理的元素的冗余度,其中所述步驟(c)的構(gòu)成包括(c1)將排序后的元素及其順序號和冗余度一起傳送到另一個存儲器模塊以使等同的元素不會冗余傳送的步驟,其中所述步驟(e)的構(gòu)成包括(e1)根據(jù)指示要在接收到的元素的前方插入的元素數(shù)的前向插入數(shù),要置于前方的元素的順序號,以及接收到的順序號和冗余度計算虛擬順序號的步驟,并且其中所述步驟(f)的構(gòu)成包括(f2)根據(jù)在步驟(c)中發(fā)送元素時虛擬順序號和順序號中間的差值確定與所述該元素等同的元素的順序號的步驟。
8.如權(quán)利要求4-7任何一項中的排序方法,其中展示存儲器模塊是初始獨立存儲器模塊,而接收模塊也是獨立存儲器模塊,并且展示存儲器模塊組的構(gòu)成包括2n個存儲器模塊,其中的n(n大于或等于1的整數(shù))在步驟(d)至(f)每次結(jié)束時遞增,同時確定存儲器模塊組的構(gòu)成包括2n個存儲器模塊。
9.一種匯編方法,其中一個數(shù)組是藉助于根據(jù)權(quán)利要求4-6之一中的方法排序,并且根據(jù)所述排序后數(shù)組生成一個新數(shù)組,在所述數(shù)組中元素按規(guī)定順序排列,沒有重復(fù),并且其中所述匯編方法的構(gòu)成包括(i)在規(guī)定的存儲器模塊中根據(jù)順序號發(fā)送待處理元素的步驟,(j)如前一個待處理的元素與發(fā)送的元素等同時將用來指示存在的等同元素的計數(shù)的值-號計數(shù)器的值遞增,但如發(fā)送的元素與前一個待處理的元素不同時就將此前一個待處理的元素與所述該元素相關(guān)的等值計數(shù)器的值相關(guān)聯(lián)并且將它們發(fā)送出去的步驟,(k)接收前一個待處理的元素及相關(guān)聯(lián)的等值計數(shù)器的值,并且生成一個使它們相聯(lián)系的新數(shù)組的步驟,以及(l)重復(fù)步驟步驟(i)至(j)以便使元素及其計數(shù)在新數(shù)組中互相聯(lián)系。
10.如權(quán)利要求9的匯編方法,其構(gòu)成還包括(m)在模塊之一中監(jiān)視在本周(j)中發(fā)送的元素及相聯(lián)系的等值計數(shù)器的值的步驟,并且其中步驟(k)藉助于所述模塊之一執(zhí)行。
11.如權(quán)利要求9的匯編方法,其構(gòu)成還包括(n)在管理所述數(shù)組元素的存儲器模塊中,提供分別保持待處理元素的順序號和所述元素的計數(shù)的順序號計數(shù)器和等值計數(shù)器,以及還提供臨時存儲前一個待處理元素的寄存器的步驟,(o)在管理具有所述該順序號的元素的存儲器模塊中根據(jù)順序號發(fā)送所述該元素的步驟,(p)在管理數(shù)組中的元素存儲器模塊中,比較接收的元素和寄存器的內(nèi)容,并且如其等同,使計數(shù)遞增,但如其不等同,就通過第二總線將寄存器的內(nèi)容和計數(shù)器的值發(fā)送出去,并且之后更新寄存器的內(nèi)容和計數(shù)器的值的步驟,(q)在存儲器模塊之一中,將所述寄存器的內(nèi)容和所述計數(shù)器的值分別作為元素和所述元素的計數(shù)置于數(shù)組中的步驟。
12.如權(quán)利要求11的匯編方法,其中步驟(n)的構(gòu)成還包括(n1)為待處理元素提供存儲非冗余順序號的值計數(shù)器的步驟,并且所述步驟(p)的構(gòu)成包括(p1)比較接收的元素和寄存器的內(nèi)容,并且如其等同,就將值-號計數(shù)器的值作為所述待處理元素的順序號賦予,但如其不等同,使值-號計數(shù)器遞增,并且將遞增的值-號計數(shù)器的值作為所述待處理元素的順序號賦予的步驟。
13.一種聯(lián)結(jié)數(shù)組的方法,系利用根據(jù)權(quán)利要求4-8之一中的排序方法和根據(jù)權(quán)利要求9-12之一中的匯編方法做到多個數(shù)組的聯(lián)結(jié),其中所述聯(lián)結(jié)方法的構(gòu)成包括(r)通過對這些數(shù)組中的每一個元素賦予順序號歸并多個數(shù)組并執(zhí)行所述排序方法的處理的步驟,以及(s)根據(jù)所述歸并后的數(shù)組內(nèi)的元素將其順序號執(zhí)行所述匯編方法的處理,從而生成沒有冗余元素存在的新數(shù)組的步驟。
14.一種聯(lián)結(jié)數(shù)組的方法,系利用采用分布式存儲器型信息處理系統(tǒng)的利用根據(jù)權(quán)利要求4-8之一中的排序方法和根據(jù)權(quán)利要求9-12之一中的匯編方法做到多個數(shù)組的聯(lián)結(jié),其中所述系統(tǒng)的構(gòu)成包括一個CPU模塊;每個都具有一個處理器和RAM核心;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,所述存儲器模塊的構(gòu)成包括一個其中的指示一個數(shù)值表的指針值置于與記錄號相對應(yīng)的位置以便指定數(shù)值表指定規(guī)定元素的指針數(shù)組,其中的數(shù)值表是一個根據(jù)記錄號存儲元素的數(shù)組,并且上述聯(lián)結(jié)方法的構(gòu)成包括(r1)通過對這些數(shù)組中的元素賦予順序號歸并多個數(shù)值表并執(zhí)行所述排序方法處理的步驟,以及(t)根據(jù)所述歸并后的數(shù)值表內(nèi)的元素及其順序號執(zhí)行所述匯編方法,從而生成一個沒有冗余元素存在的新數(shù)組并且還將所述元素的順序號更新為沒有冗余元素存在的場合的所述元素的順序號的處理步驟,并且(u)將沒有冗余元素存在的場合的所述元素的順序號所組成的所述數(shù)組設(shè)置為用來指示新數(shù)值表的新指針數(shù)組。
全文摘要
本發(fā)明的目的是以極高速度執(zhí)行數(shù)據(jù)排序、匯編和聯(lián)結(jié)。此目的系通過如下的分布式存儲器型信息處理系統(tǒng)達(dá)到,其構(gòu)成包括:一個CPU模塊;每個都具有一個處理器和RAM核心的多個存儲器模塊;以及多組連接所述CPU和存儲器模塊和/或連接各個存儲器模塊的總線;其中的各個存儲器模塊的處理器執(zhí)行由上述一個或多個存儲器模塊根據(jù)CPU發(fā)給各個存儲器模塊的處理器的指令進(jìn)行管理的數(shù)組的處理,并且其中所述信息處理系統(tǒng)的特征在于所述存儲器模塊的構(gòu)成包括:對組成數(shù)組的那些它自己管理的部分的元素執(zhí)行排序并根據(jù)特定的順序?qū)λ鲈刂匦屡判?、根?jù)由其自身管理的所述部分在數(shù)組中所占據(jù)的位置將其I/O、通過規(guī)定總線將所述排序后的元素與其順序號一起發(fā)送到另一個存儲器模塊或通過規(guī)定總線從另一個存儲器模塊接收所述元素及其順序號的排序裝置;順序號計算裝置,此裝置在接收到一個所述元素及順序號時將其與由其自身管理的元素進(jìn)行比較而計算出一個作為接收到的元素的順序號的候選的虛擬順序號,并且將其返回到所述另一個存儲器模塊;以及順序確定裝置,此裝置在接收到所述虛擬順序號時根據(jù)所述虛擬順序號確定元素的順序;結(jié)果所述數(shù)組的元素的順序號是通過在發(fā)送所述元素及順序號一方的展示存儲器模塊和在接收所述元素及順序號并計算虛擬順序號一方的存儲器模塊之間的通信來確定。
文檔編號G06F7/24GK1423772SQ00818392
公開日2003年6月11日 申請日期2000年11月21日 優(yōu)先權(quán)日1999年11月22日
發(fā)明者古莊晉二 申請人:特博數(shù)據(jù)實驗室公司