專利名稱:超大規(guī)模計(jì)算機(jī)的制作方法
本發(fā)明涉及大規(guī)模并行處理機(jī),特別涉及對(duì)上述參照的日本專利號(hào)第109776/84和美國專利號(hào)4,598,400中所首先揭示的方法和裝置的改進(jìn)。
如上述′400專利中圖1A(在此以圖1形式重視)所示,那些發(fā)明的計(jì)算機(jī)系統(tǒng)包括主機(jī)10,微控制器20,并行處理集成電路35的陣列30,數(shù)據(jù)源40,第一緩沖器和多路轉(zhuǎn)換器/多路分配器50,第一、第二、第三和第四雙向總線控制電路60、65、70、75,第二緩沖器和多路轉(zhuǎn)換器/多路分配器80,以及數(shù)據(jù)接收器90。主機(jī)10可以是經(jīng)過適當(dāng)編程的市場上有售的通用計(jì)算機(jī),例如數(shù)字設(shè)備公司生產(chǎn)的VAX(TM)計(jì)算機(jī)。微控制器20是慣常設(shè)計(jì)的指令序列發(fā)生器,它能產(chǎn)生通過32位并行總線22而應(yīng)用于陣列30的指令序列。微控制器20在線26上接收來自陣列30的一個(gè)信號(hào)。該信號(hào)是可用于數(shù)據(jù)輸出和狀態(tài)信息的通用信號(hào)或GLOBAL信號(hào)。總線22和線26并行連到每個(gè)集成電路35。結(jié)果,來自微控制器20的信號(hào)同時(shí)加到陣列30中的每個(gè)集成電路35上,通過線26加到微控制器20上的信號(hào)由組合該陣列中所有集成電路35的輸出信號(hào)所構(gòu)成。
陣列30包含成4個(gè)相同的集成電路35,并且每個(gè)集成電路35包含幾個(gè)相同的處理器/存貯器36。在′400號(hào)專利所揭示的實(shí)施例中,指出陣列可以包含有32,768(=215)個(gè)集成電路35;每個(gè)集成電路35可包含32(=25)個(gè)相同的處理器/存貯器36。在遞交該專利申請(qǐng)案時(shí),包含至多4096(=212)個(gè)相同集成電路35,并且每個(gè)集成電路包含16(=24)相同處理器/存貯器的陣列已由受讓者作為連接機(jī)(TM)計(jì)算機(jī)被生產(chǎn)以及發(fā)運(yùn)。
處理器/存貯器36按二種幾何結(jié)構(gòu)構(gòu)成和互聯(lián)。一種幾何結(jié)構(gòu)是慣用的二維網(wǎng)絡(luò)型式,其中處理器/存貯器按長方矩陣構(gòu)成并連到該陣列中的四個(gè)最近的相鄰單元上。為了說明方便,該陣列的邊用東、南、西、北表示。為了使每個(gè)處理器/存貯器與其四個(gè)最近相鄰單元相連,每個(gè)處理器/存貯器是通過網(wǎng)格上每行和每列相鄰的處理器/存貯器之間的電導(dǎo)線相連接的。
第二種幾何結(jié)構(gòu)是15維的n-立方體的布爾結(jié)構(gòu)。為了理解n-立方連接型式,對(duì)集成電路從0到32,767加以編號(hào),并用15位二進(jìn)制數(shù)字來表示這些數(shù)字和地址是有幫助的。就象我們可以用二位數(shù)字,其中一個(gè)表示二維網(wǎng)絡(luò)中第一維的位置,另一個(gè)表示第二維的位置來指定二維網(wǎng)絡(luò)中一個(gè)物體的位置一樣,以此類推,可用一個(gè)數(shù)字來限定一個(gè)集成電路在布爾15-立方體的15維中的一維的位置。然而,在一個(gè)n-立方體中,一個(gè)集成電路在每一維中只能有兩種不同狀態(tài)0和1中的一個(gè),這樣,15個(gè)二進(jìn)制的數(shù)字可用作集成電路地址,并表示集成電路在n-立方的15維中的位置。更進(jìn)一步說,由于一個(gè)二進(jìn)制數(shù)只能有二個(gè)值,0和1,同時(shí)由于每個(gè)集成電路由15個(gè)二進(jìn)制數(shù)唯一確定,所以每個(gè)集成電路具有與其進(jìn)位地址只相差一位的15個(gè)其他集成電路。我們把這15個(gè)二進(jìn)制地址僅與第一個(gè)集成電路二進(jìn)位地址相差一位的集成電路稱為該第一個(gè)集成電路的最近相鄰單元。那些熟悉漢明距離的數(shù)學(xué)定義的人將發(fā)現(xiàn),該第一集成電路與15個(gè)相鄰最近單元中每個(gè)相隔一個(gè)漢明距離。
為了使上述參照申請(qǐng)中的集成電路35按布爾15-立方體形式連接,每個(gè)集成電路就由15根輸入線38和15根輸出線39與其最近相鄰的單元相連。連到每個(gè)集成電路35的15根輸入線38中的每根是與波爾15-立方體型式的15維中每一個(gè)相聯(lián)系的,同樣,每個(gè)集成電路35的15根輸出線39中的每根是與不同的維相聯(lián)系的。布爾n-立方型連線的詳細(xì)情況由日本專利申請(qǐng)128,294/86案提供。為了允許布爾15-立方體型通過互連型式的通信,計(jì)算的結(jié)累是按信息包的形式構(gòu)成;這些包根據(jù)構(gòu)成包的一部分的地址信息,在通過每個(gè)集成電路中的發(fā)送電路中從一個(gè)集成電路發(fā)送到另一個(gè)集成電路。
典型的一個(gè)處理器/存貯器26由′400專利申請(qǐng)的圖7A詳細(xì)說明。如圖7A所示,該處理器/存貯器包括32×12位隨機(jī)存貯器(RAM)250,算術(shù)邏輯單元(ALU)280和標(biāo)志控制器290。ALU對(duì)三種來源的數(shù)據(jù)起作用,即RAM中的二個(gè)寄存器和一個(gè)標(biāo)志輸出信號(hào),并產(chǎn)生二個(gè)輸出信號(hào),被寫入一個(gè)RAM寄存器的和輸出信號(hào)以及能在標(biāo)志控制器中某個(gè)寄存器和某個(gè)其它處理器/存貯器中可用的執(zhí)行輸出信號(hào)。
輸入到RAM250的是地址總線152,154,156,158,來自ALU270的和信號(hào)輸出線285,來自′400專利中圖6B所示的通信接口單元(CIU)180的信息包輸入線122,以及來自標(biāo)志控制器290的寫入線298。RAM250的輸出線是256,257。線256,257上的信號(hào)來自RAM250中二個(gè)不同寄存器的同一列,其中一個(gè)被設(shè)定為寄存器A,而另一個(gè)為寄存器B??偩€152,154,156,158根據(jù)微控制器20的指令字確定寄存器和其所在列的地址。
ALU280包含一個(gè)八選一解碼器282,信號(hào)輸出選擇器284和執(zhí)行輸出選擇器286。如′400專利中所詳細(xì)說明的,這使它能產(chǎn)生包括加,邏輯或和邏輯與等多種功能的和信號(hào)及執(zhí)行輸出。ALU同時(shí)對(duì)三位起作用,即來自RAM250中寄存器A和寄存器B的線256,257上的二位和來自標(biāo)志控制器290的線296上的一位。ALU具有二個(gè)輸出被寫入RAM250中寄存器A的線285上的和信號(hào);以及可能被寫入標(biāo)志寄存器292并加到與該處理器/存貯器相連的其它處理器/存貯器36的東、南、西、北以及數(shù)據(jù)捕獲和譯碼系統(tǒng)輸入端的線287上的執(zhí)行信號(hào)。在執(zhí)行線287上的信號(hào)同樣也可通過信息輸出線123提供到通信接口單元180。
每個(gè)集成電路35還包括某些集成電路上處理器/存貯器的管理電路以及使集成電路按布爾n-立方體型式連接到其最近相鄰集成電路的發(fā)送電路200,如′400專利案所揭示的,管理電路包括時(shí)標(biāo)發(fā)生器140,對(duì)于來自微控制器20的指令信號(hào)進(jìn)行譯碼并給集成電路的處理器/存貯器提供譯出的指令信號(hào)的可編程邏輯陣列150,以及控制集成電路的處理器/存貯器和該集成電路相關(guān)的發(fā)送電路之間的輸入和輸出信息包傳送流的通信接口180。
發(fā)送電路200控制信息包按布爾n-立方體型式與最近集成電路的傳送。通過該電路,信息包可以按布爾n-立方體型式由任一集成電路發(fā)送到其它集成電路。如′400專利中圖6B所示,電路200包括線分配器205,信息檢測器250,緩沖器和地址還原器215和信息發(fā)射器220,它們按此順序成環(huán)狀串聯(lián),這樣一個(gè)元件的輸出被提供為下一元件的輸入,并且信息發(fā)射器220的輸出提供到線分配器205上。線分配器205包括一個(gè)15×15個(gè)大致相同的發(fā)送邏輯單元400的陣列。該陣列的每一列控制布爾15-立方體型式的一維中的最近發(fā)送電路200間的信息包的傳送流。該陣列中的每一行控制發(fā)送電路200中的一個(gè)信息包的存貯。發(fā)送電路的信息檢測器210把與該特別發(fā)送電路相關(guān)并包含處理器/存貯器地址的信息包提供給通信接口單元(CIU)180,信息發(fā)射器220把CIU180的信息包發(fā)射到在發(fā)送電路中循環(huán)的信息包組。
九個(gè)這樣的發(fā)送邏輯單元400如′400專利申請(qǐng)的圖11所示,在此用圖2重現(xiàn)。在左側(cè)列的三個(gè)單元與第一維相關(guān),中間列的三個(gè)單元與第二維相關(guān),右側(cè)列三個(gè)單元與第十五維相關(guān)。每個(gè)單元列具有與該維相關(guān)的輸出線39相連的輸出總線410。對(duì)于那些行來說,最低行的三個(gè)單元是陣列中最低的單元,它接收來自輸入線38的輸入信號(hào)。頂部三個(gè)單元是陣列中最高的單元,中間三個(gè)單元代表頂部和底部間的任何單元,但在圖中示出的是與最底行相連的三個(gè)單元。
圖2中同樣也示出了代表部分信息檢測器210,緩沖器和地址還原器215以及發(fā)送電路200中的信息發(fā)射器220的三個(gè)處理和存貯裝置420,它們處理的存貯來自線分配器205中的對(duì)應(yīng)的三行單元400的信息。還有十二個(gè)處理和存貯裝置用來處理和存貯來自其它行的信息(圖中未示)。
如果沒有發(fā)生發(fā)送沖突,信息包將被從一個(gè)輸入端送到第一維發(fā)送單元,并送到在一個(gè)信息周期內(nèi)被確定地址的處理器存貯器的寄存器中,如果發(fā)生發(fā)送沖突,信息包將被暫時(shí)地在一個(gè)或多個(gè)中間點(diǎn)上存貯在發(fā)送電路的處理和存貯裝置中;把信息包送到其目標(biāo)需要多于一個(gè)發(fā)送周期。
圖2提供了對(duì)每個(gè)發(fā)送單元400的輸入和輸出端方便的簡要說明。如沿著底行的三個(gè)單元400所指的,布爾15-立方體型的不同維來的信息包被加到NAND門405。這些門除了在重置情況下都有效。轉(zhuǎn)換信息包的每個(gè)NAND門405的輸出,被加到最低行中的一個(gè)單元400的輸入端L-in。在L-in端的表示信息包存在的信號(hào)同樣也加到同一單元的輸入端LP-in。對(duì)于底行的在每個(gè)單元來說,設(shè)置該信息出現(xiàn)信號(hào)的理由是它具有限定底行下一列中的單元在接受信息包時(shí)進(jìn)一步處理的條件功效。這樣在單元輸入端的表示信息包存在的信息出現(xiàn)信號(hào)被用于整個(gè)發(fā)送電路200以建立發(fā)送信息包所需的發(fā)送電路200的數(shù)據(jù)通道。
從某一線38接收到的信息包從M-OUT端被送出一列中最低單元400,并被加到其直接右方一列中的單元400的M-IN端。與此同時(shí),信息出現(xiàn)信號(hào)從MP-OUT端送出,送到其直接右方單元的MP-IN。
任一單元400的M-IN端接收得的信號(hào)可在任何一個(gè)總線端U-OUT輸出端或M-OUT端送出該單元,依賴于網(wǎng)絡(luò)中其他信號(hào)是什么。在一列中所有單元400的總線端是連到公共輸出總線410上的,該公共總線410是通過NOR門(異或門)415連到輸出線39并連到布爾n-立方體型中該維的最近鄰近單元上的,異或門415的另一輸入是一定時(shí)信號(hào)t-INV-OUT-n,其中n是維數(shù)。該定時(shí)信號(hào)補(bǔ)充信息包中重復(fù)地址中適當(dāng)?shù)牡刂肺?,以?dāng)信息包通過布爾15-立方體型時(shí)修正該地址。
從U-OUT端離開單元的信息被迅速地加到一列中直接上方單元的L-in端,并且由該單元按在L-in端接收到的任一信號(hào)同樣處理。信息存在信號(hào)按同樣方式從UP-OUT端傳送到它直接上方單元的LP-in端。
在每列中的單元400中的電路被設(shè)計(jì)成能在每列(或每維)的輸出總線410上放置對(duì)應(yīng)于該維的信息;該信息在最靠近頂部的行中周轉(zhuǎn)并且向頂行壓縮所有行。最終,在每列中提供控制信號(hào)允許(G)和全滿(AF),向該列中的各個(gè)單元提供在該列中它以上單元的狀態(tài)信息。特別是,允許信號(hào)(G)通過由G-in和G-OUT端加到單元以下每一列的信號(hào)控制每列或每維的輸出總線410的存取。傳插該信號(hào)的電路提供對(duì)應(yīng)于該維地址的列中的最高信息包的存取,并且防止該列中的較低單元中的信息傳送到輸出總線上,全滿(AF)信號(hào)通過在每個(gè)單元的AF-OUT端和AF-in端向它指明在該列中其上方每個(gè)單元是否有信息來控制信息從一個(gè)單元400傳輸?shù)酵涣械钠渖戏絾卧?。如果任一個(gè)上部單元是空的,每個(gè)較低單元中的信息就移到該列中的上一單元。
對(duì)于頂行中的單元,輸入到端頭的信號(hào)總是高的。對(duì)于這些單元,加到G-in端的輸入信號(hào)是對(duì)重置信號(hào)的補(bǔ)充,因此除了重置期間都為高信號(hào)。結(jié)果,在一列的頂部單元中的信息包一般將對(duì)輸出總線410存取,如果對(duì)應(yīng)于該維地址的話。但是如果輸出線39斷了的話,可通過給與該線相對(duì)應(yīng)維的頂部單元的G-in輸入端一個(gè)低電平信號(hào)而把該線從互連的15-立方體網(wǎng)絡(luò)中去掉。在單元400的最低行中,來自G-OUT端的允許信號(hào)常用于控制能夠給輸出總線提供接地的通路晶體管425。特別是,如果在那輸出線上沒有信息,則給那維的輸出線寫入0位。
在單元中某些觸發(fā)器的工作情況由定時(shí)信號(hào)t-COL-n控制,其中n是維數(shù),而其他觸發(fā)器由基本時(shí)鐘信號(hào)phil定時(shí),從以下說明可以明顯看出,每列中的發(fā)送單元同步于陣列30中的所有發(fā)送電路的同一列中的所有其他發(fā)送單元而進(jìn)行工作。
用幾千個(gè)相同的并行工作的處理器/存貯器打開了計(jì)算的全新遠(yuǎn)景。由于串行的計(jì)算機(jī)的限制而不能達(dá)到的種種問題現(xiàn)在能在適當(dāng)?shù)臅r(shí)間內(nèi)通過并行計(jì)算機(jī)例如連機(jī)計(jì)算機(jī)實(shí)現(xiàn)。
計(jì)算能力的大大增加促進(jìn)了對(duì)于現(xiàn)有并行計(jì)算機(jī)加重負(fù)擔(dān)的更復(fù)雜問題的興趣,并且還促進(jìn)了對(duì)于更大的并行計(jì)算機(jī)的需求。同時(shí)對(duì)每一個(gè)可由一個(gè)并行計(jì)算機(jī)方便地進(jìn)行尋址的問題不需非常大的計(jì)算機(jī)進(jìn)行處理。一些簡單的問題不需用足夠的數(shù)據(jù)去占用大的并行計(jì)算機(jī)的所有資源;其他一些問題并不對(duì)并行計(jì)算機(jī)的計(jì)算量有嚴(yán)格的要求。除非能發(fā)現(xiàn)一種方法,在所有時(shí)間內(nèi)都用并行計(jì)算機(jī)的大部,否則從經(jīng)濟(jì)上來說,很難證明用這樣的計(jì)算機(jī)是正確的。
一種折衷的方法是,利用多余的處理能力和存貯容易以模擬另外的并行處理機(jī),如上述參照申請(qǐng)日本專利申請(qǐng)第39301/87號(hào)所描述的。根據(jù)那種技術(shù),與每個(gè)實(shí)際處理機(jī)相關(guān)的存貯器可分為多個(gè)子存貯器,并且每個(gè)子存貯器可被相繼利用,就象它與一個(gè)獨(dú)立的處理機(jī)相連一樣,這樣第一指令或一系列指令被加到并行計(jì)算機(jī)的所有處理器上以使至少一些處理器處理第一子存貯器中的第一或其它單元中的數(shù)據(jù)。以后,第一指令或一系列指令同樣被加到計(jì)算機(jī)的所有處理器上,以使一些處理機(jī)處理存貯在第二存貯器中相同的第一單元的數(shù)據(jù)。對(duì)每一個(gè)子存貯器以此類推,該技術(shù)在許多情況下都很有用,處理每組模擬處理器中數(shù)據(jù)的實(shí)際處理器機(jī)仍然是慣用的順序(或者Von Neunann)處理器。結(jié)果,如果大量模擬處理器和/或大量數(shù)據(jù)是與實(shí)際處理器相關(guān)的話,在實(shí)際處理器中會(huì)有出現(xiàn)Von Neumann瓶頸阻塞。
本發(fā)明的目的旨在提供一種通過在大量用戶中合理發(fā)配并行計(jì)算機(jī)的資源提供改善并行計(jì)算機(jī)利用率的方法和裝置。根據(jù)本發(fā)明,在大量用戶中分配并行計(jì)算機(jī)以滿足數(shù)據(jù)庫和與同時(shí)在計(jì)算機(jī)上行的程序的多重性要求。它是通過把并行計(jì)算機(jī)分成多個(gè)處理器陣列的裝置來完成的,每個(gè)處理器都可獨(dú)立于其它處理器使用。該種劃分按下述意義是動(dòng)態(tài)的,即能夠容易地轉(zhuǎn)換,并且實(shí)際上在分時(shí)環(huán)境中能在機(jī)器的二個(gè)相繼時(shí)間片之間轉(zhuǎn)換。
此外,并行計(jì)算機(jī)的構(gòu)成能如′301申請(qǐng)案所述的,通過每個(gè)陣列中的實(shí)際處理器允許模擬其它的并行處理機(jī),并能提供模擬并行處理機(jī)間的通信。根據(jù)本發(fā)明,不僅是對(duì)于與特殊實(shí)際處理器相關(guān)的模擬處理器相互間提供通信成為可能,而且對(duì)于與任何實(shí)際處理器相關(guān)的任何模擬處理器同與有行計(jì)算機(jī)中的任一實(shí)際處理器相關(guān)的模擬處理機(jī)之間通信也成為可能。通過虛擬存貯器的類似概念,我們此后這些模擬處理器看作虛擬處理器。此外,根據(jù)本發(fā)明,同樣提供了在虛擬存貯器中存貯虛擬處理器的手段。
本設(shè)計(jì)的結(jié)果,可能制造具有數(shù)量級(jí)為1,000,000個(gè)實(shí)際處理器和數(shù)量級(jí)為1,000,000,000,000個(gè)虛擬處理器的并行計(jì)算機(jī)。而且,由于計(jì)算機(jī)可動(dòng)態(tài)地重新組合成多個(gè)獨(dú)立的處理機(jī)陣列,這樣大小的裝置能被大量用戶分享,每個(gè)用戶只是用了整個(gè)計(jì)算機(jī)的一部分,適合于該問題所需的容量,然傳被編址。特別是,大約1,000用戶可通過局部網(wǎng)絡(luò)與并行計(jì)算機(jī)相接。
為了在處理器之間提供通信,實(shí)際處理器按足夠大小的二進(jìn)位n-立方體型式互聯(lián),以在立方體中給每個(gè)實(shí)際處理器設(shè)定唯一的位置,每個(gè)虛擬處理器被指定其獨(dú)自的地址。這樣的地址結(jié)構(gòu)允許對(duì)2個(gè)虛擬處理器進(jìn)行編址。
本發(fā)明中并行計(jì)算機(jī)的其它特點(diǎn)還包括計(jì)算機(jī)支持一通常的單步(word-at-a-time)指令集。另外,它還支持并行指令的同構(gòu)集。對(duì)于每個(gè)即時(shí)字節(jié)運(yùn)算,對(duì)應(yīng)數(shù)據(jù)的并行運(yùn)算對(duì)整個(gè)數(shù)據(jù)集同時(shí)進(jìn)行。
計(jì)算機(jī)還提供硬件支撐以分配和同步執(zhí)行通過多個(gè)處理器的指令。結(jié)果,通過機(jī)器的那些運(yùn)算彼此相互按完全確定的次數(shù)發(fā)生。
用戶可能按需要來盡量分配多余存貯量以保證重要事務(wù)的可靠運(yùn)算,這可以從簡單的要求不高應(yīng)用的自檢直到可靠事務(wù)的整個(gè)四重模塊余量的范圍中。由于多余部分只根據(jù)需要分配,故多余量的消耗只是當(dāng)需要多余量時(shí)才能發(fā)生。
本發(fā)明的這些和其它目的,特征和優(yōu)點(diǎn)將從以下對(duì)本發(fā)明最佳實(shí)施例所作的描述中明顯看出,其中;
圖1是已有技術(shù)中并行處理機(jī)的結(jié)構(gòu)圖;
圖2是圖1中的并行處理機(jī)的發(fā)送電路的結(jié)構(gòu)圖;
圖3是本發(fā)明的最佳實(shí)施例的總體結(jié)構(gòu)圖;
圖4是本發(fā)明一個(gè)處理器單元的結(jié)構(gòu)圖;
圖5和圖6是把圖4所示的處理器單元組織到并行處理機(jī)陣列中的結(jié)構(gòu)說明圖;
圖7是說明圖4所示的處理器單元的部件的詳細(xì)結(jié)構(gòu)圖;
圖8-12是圖7的部件的詳細(xì)結(jié)構(gòu)圖;
圖13是本發(fā)明的最佳實(shí)施例尋址方式的說明;
圖14是有助于理解本發(fā)明的結(jié)構(gòu)示意圖;
如圖3所示,本發(fā)明的最佳實(shí)施例是一個(gè)系統(tǒng)300,它包括多個(gè)用戶終端310A-N,局部網(wǎng)絡(luò)320以及一個(gè)處理器陣列330。典型地,每個(gè)終端包括具有鍵盤314和CRT顯示316的控制臺(tái)312,一些硬拷貝輸出例如打印機(jī)(圖中未畫),以及位于終端和局部網(wǎng)絡(luò)320間的接口318。如果需要的話,通常的個(gè)人計(jì)算機(jī)可用作終端310。
處理器陣列330典型地包括262,144(=218)個(gè)實(shí)際處理器部件(PPU),四兆字節(jié)的高速讀/寫或者與每個(gè)處理器相連的隨機(jī)存貯器,外加的低速大存貯量讀/寫存貯器以及外圍電路,兆兆字節(jié)的高速存貯器典型的是由集成電路存貯芯片來提供的。大存貯量讀/寫存貯器例如可能為32,768(=215)個(gè)硬盤驅(qū)動(dòng)器,每個(gè)具有300兆字節(jié)的容量,總的容量是10兆兆字節(jié),262,144個(gè)PPU按18維超立方體加以聯(lián)結(jié),其中每個(gè)PPU沿著超立體的十八個(gè)邊的每一邊連結(jié)18個(gè)相鄰的PPU,可如下詳細(xì)說明。
局部網(wǎng)絡(luò)320把處理器陣列330中的一些PPU與終端310相連,這樣特定的終端與特定的PPU通信。這些PPU依次地動(dòng)態(tài)控制陣列中其它PPU并具逆歸控制更多的PPU,以對(duì)特殊問題提供充分的處理功能和存貯器。局部網(wǎng)絡(luò)最好是象開關(guān)一樣靈活,使任一絡(luò)端可與任何同連網(wǎng)的PPU相連,并且,這些連接隨時(shí)可按需要改變,甚至就象在分時(shí)環(huán)境下所需的經(jīng)常程度一樣。大量常用的局部網(wǎng)絡(luò),例如(Ethernet(TM))系統(tǒng)或數(shù)字PBX,可用于該目的,它提供了足夠的能力以連接包含在系統(tǒng)300中的終端的數(shù)目。如果需要,可用多個(gè)局部網(wǎng)絡(luò)。典型地,局部網(wǎng)絡(luò)應(yīng)該能連接本發(fā)明的系統(tǒng)中的1000個(gè)終端。
可以看出,本發(fā)明的裝置提供了比慣用機(jī)器上實(shí)際使用更多的RAM數(shù)。它允許全部數(shù)據(jù)庫存貯在主存貯器中,其中存取時(shí)間成千倍地快于磁盤。串行機(jī)器的兆兆字節(jié)的主存貯器主要是不經(jīng)濟(jì),因?yàn)楫?dāng)只有一個(gè)用戶在一個(gè)單元進(jìn)行存取太浪費(fèi),在本發(fā)明中,不會(huì)發(fā)生這樣的問題,這是因?yàn)榇尜A器的許多部分被同時(shí)存取。
根據(jù)以上參照申請(qǐng)所揭示的,通過把與PPU相關(guān)的存貯器分開,并把每個(gè)分存貯器指定給不同的虛擬處理器,故每個(gè)PPU可作為多個(gè)虛擬處理器來工作。根據(jù)本發(fā)明,存貯器的劃分甚至能擴(kuò)展到虛擬存貯器,例如在硬盤或磁帶存貯裝置上。進(jìn)而,每個(gè)虛擬處理器在計(jì)算機(jī)的處理過程中可被認(rèn)為是等效于實(shí)際處理器。
根據(jù)本發(fā)明,用戶可以對(duì)PPU指定數(shù)據(jù)處理和存貯的要求,PPU能構(gòu)成足以滿足這些要求的一組處理器(包括實(shí)際處理器和虛擬處理器)。有利的是,該組處理器送歸構(gòu)成,這樣一個(gè)處理器控制一個(gè)或多個(gè)其它處理器而其他處理器控制更多的處理器,余此類推。最好是,數(shù)據(jù)庫的每個(gè)成份和處理器一對(duì)一被存貯,且處理器也按與數(shù)據(jù)庫相同的結(jié)構(gòu)構(gòu)成,這樣安排的結(jié)果是1.每個(gè)處理器能夠完成正規(guī)的Von Neumann型運(yùn)算,包括算術(shù)/邏輯運(yùn)算,數(shù)據(jù)移動(dòng)和正規(guī)控制如子程序或分支等運(yùn)算流。
2.每個(gè)處理器能夠分配一組數(shù)據(jù)處理器,使它們?cè)诓⑿兄噶顖?zhí)行過程中受它控制。分配處理器稱為控制處理器,被分配的處理器稱為數(shù)據(jù)處理,這些是相對(duì)術(shù)語,因?yàn)閿?shù)據(jù)處理器具有控制處理器的全部能力,并能自身分配數(shù)據(jù)處理器。
3.每個(gè)處理器可以從其分配的數(shù)據(jù)處理器中選擇上下文集合,該上下集合是一系列并行操作的數(shù)據(jù)。該上下文集合是根據(jù)用于所有數(shù)據(jù)處理器或用于目前上下文集合中所有數(shù)據(jù)處理上的某個(gè)條件加以選擇的,上下文集合可以被保存轉(zhuǎn)貯。
4.每個(gè)處理機(jī)可以同時(shí)按其上下文集合中的所有數(shù)據(jù)并發(fā)執(zhí)行并行運(yùn)算。并行運(yùn)算與分類目錄1中的順序運(yùn)算完全相同,除非它們同時(shí)用于上下文集合中所有數(shù)據(jù)。這些包括所有數(shù)據(jù)操作,存貯器參照(通信),以及控制流操作。直至編程序者能夠了解到這些運(yùn)算在數(shù)據(jù)集合中的所有處理器上同時(shí)發(fā)生。
5.每個(gè)處理器能夠存取共享的數(shù)據(jù)庫并把數(shù)據(jù)成份的各部分裝入存貯器。虛擬處理機(jī)同樣也能修改數(shù)據(jù)庫。
本發(fā)明中并行計(jì)算機(jī)的指令相似于常用計(jì)算機(jī)的指令。它們可分成三類局部指令,并行指令,和上下文指令。
局部指令完全就常用計(jì)算機(jī)的指令,包括子程序調(diào)用,條件和非條件轉(zhuǎn)移,返回,基于寄存器的算術(shù)數(shù)據(jù)移動(dòng),邏輯運(yùn)算機(jī)和測試,局部指令在控制處理器內(nèi)執(zhí)行。
并行指令就象局部指令一樣,除非它們?cè)跀?shù)據(jù)處理器的上下文集合中同時(shí)被執(zhí)行。成組的并行指令,調(diào)用命令,是在上下文集合中在所有虛擬數(shù)據(jù)處理器上同時(shí)執(zhí)行的。對(duì)于每個(gè)局部數(shù)據(jù)指令,存在有一個(gè)對(duì)應(yīng)的并行數(shù)據(jù)指令。
上下文指令被用來指定并行處理的虛擬數(shù)據(jù)處理器集合。有四種上下文指令設(shè)置上下文為所有虛擬處理器滿足某個(gè)條件;
限制上下文使處理器的分上下文在現(xiàn)行上下文的范圍內(nèi),滿足某個(gè)條件;
把現(xiàn)行上下文推上堆棧;
使現(xiàn)行上下文跳出堆棧。
這些上下文指令可與并行數(shù)據(jù)指令混合成組以形成命令。
命令是本發(fā)明中并行計(jì)算機(jī)中的基本同步單元,命令是控制處理器和數(shù)據(jù)處理器之間的通信單元。在最簡單的情況中,一條命令為單個(gè)指令,它也可以是一組可一起執(zhí)行的指令,而不考慮在該命令中通過實(shí)際數(shù)據(jù)處理器的同步情況??刂铺幚砥鞯幕咀饔檬峭ㄟ^α發(fā)送程序(圖7)發(fā)出命令并且等待它已被所有數(shù)據(jù)處理器執(zhí)行的確認(rèn)。不同的虛擬處理器能夠并一般地將在不同時(shí)刻執(zhí)行命令中不同的指令。
命令也是在系統(tǒng)中存貯指令的基本單元。這意味著在命令中所允許的指令數(shù)是有限的。因?yàn)橐粭l命令可以包含調(diào)用指令,由命令完成的運(yùn)算數(shù)目可以任意大。除子程序調(diào)用以外,命令可以包含有簡單循環(huán)和在命令中的條件轉(zhuǎn)移。
指令可根據(jù)簡單規(guī)則或組成命令,規(guī)則保證命令中的的指令能同步執(zhí)行。例如這可以通過允許引入非局部通信會(huì)作為命令中的最后指令來實(shí)現(xiàn)。
命令通過α程序發(fā)送器從控制處理器傳輸?shù)綌?shù)據(jù)處理器中。當(dāng)命令被所有數(shù)據(jù)處理器執(zhí)行時(shí),給控制處理器提供信號(hào)是α程序發(fā)送器的職責(zé),該信號(hào)機(jī)制也被用作為在控制處理器中控制程序流的組合條件編碼。
如圖4所示的結(jié)構(gòu)圖,每個(gè)PPU包括微處理器350,功能電路360,和存貯器370,PPU可以任選地包括一特殊數(shù)學(xué)電路以提高高速數(shù)學(xué)運(yùn)算的性能,微處理器350,存貯器370和數(shù)學(xué)電路380可是常用的集成電路。例如,微處理器350可以是Intel8086機(jī)而數(shù)學(xué)電路380可以是浮點(diǎn)加速器,例如Intel8087。也可用Motorola68000和例如Faircuild clipper的微處理器是有特別優(yōu)點(diǎn)的,因?yàn)樗鼈兙哂歇?dú)立的指令和數(shù)據(jù)引線。
存貯器370可以是任何高速大容量的讀/寫存貯器。典型地,該存貯器是由32個(gè)4×64千位集成電路芯片構(gòu)成的陣列所提供的4兆字節(jié)存貯器。另外可用存貯有利于錯(cuò)誤檢測和校正的奇偶和錯(cuò)誤控制位的存貯器。由于較大容量的存貯器芯片能夠獲得,這些芯片可用于增加存貯容量的大小和/或減少所需集成電路片的數(shù)量。
功能電路360決定著存貯器接口,信息通路,錯(cuò)誤校正,指令分配和同步,數(shù)據(jù)存貯和虛擬處理機(jī)控制。該電路接收來自PPU的信息并產(chǎn)生適合于驅(qū)動(dòng)動(dòng)態(tài)存貯器的地址信息。它還把數(shù)據(jù)送入PPU的數(shù)據(jù)線或取出,送入動(dòng)態(tài)存貯器的數(shù)據(jù)線或取出。該功能電路還執(zhí)行把PPU用作虛擬處理機(jī)所需的所有管理功能。微處理器350,功能電路360和存貯器370的連接使功能電路360位于微處理器350和存貯器370之間,允許微處理器對(duì)此′400專利所述系統(tǒng)中更多存貯器進(jìn)行尋址,在′400專利中,微處理器和存貯器直接耦合在一起。與此同時(shí),該結(jié)構(gòu)還調(diào)節(jié)信息包發(fā)送,如下所述。
PPU由16個(gè)單元構(gòu)成,這樣具有0~15的16個(gè)PPU和外圍電路的集成電路設(shè)在如圖5所示的單電路板400上。外圍電路包括硬盤接口410,總輸入/輸出電路420,自檢電路430,時(shí)鐘電路440,標(biāo)識(shí)電路450和性能測量電路460。
硬盤接口410是標(biāo)準(zhǔn)SCSI小型機(jī)系統(tǒng)接口)接口,它連到PPU的O端。它被設(shè)計(jì)成與下面將要說明的大容量存貯設(shè)備470相連,其最大通信帶寬近似為每秒10兆位。在電路板400上的其他PPU通過PPU的O端與大容量存貯體相接,用作文件服務(wù)器。
輸入/輸出電路420是32位寬的并行口或串行口,連到PPU1的。該端口具有約為每秒50兆位的最大帶寬。電路420把局部網(wǎng)絡(luò)320與PPU1相接,該P(yáng)PU1在網(wǎng)絡(luò)中作為另一終端或簡單地作為一并行或串行口。電路板400的其它PPU通過PPU1與輸入/輸出電路420相接。作為這樣安排的結(jié)果,在任一終端310A-N處的用戶可在處理器陣列330中對(duì)任何PPU進(jìn)行選擇尋址,方法就象用戶能用連到電話網(wǎng)絡(luò)中的任何電話一樣。
自檢電路430能夠檢測發(fā)生在電路板400上的任何錯(cuò)誤,這樣,該裝置可從系統(tǒng)中去除。有利的是,它被連到發(fā)光二極管上,能夠提供視覺信號(hào)指明該裝置失效應(yīng)維修。每個(gè)電路板包含其自己的時(shí)鐘電路440,它同步于系統(tǒng)中其它PPU的時(shí)鐘電路。標(biāo)識(shí)電路450是一電可抹的固定存貯器,它包含該電路板的生產(chǎn)和維修歷吏,序號(hào)等等。性能測量電路460檢測軟件的執(zhí)行。
大容量存貯體470典型地包括一個(gè)標(biāo)準(zhǔn)盤控制器480和一標(biāo)準(zhǔn)的5-1/4英寸300-兆字節(jié)驅(qū)動(dòng)器,考慮到在同一控制器上加直至七個(gè)附加驅(qū)動(dòng)器,其總的存貯容量為2400-兆字節(jié)。
電路板400和存貯體470設(shè)在箱500中,它包括16塊板400的大存貯體502和16個(gè)存貯體470。這樣,在具有262,144個(gè)PPU的系統(tǒng)的情況下,用1,024(=2)個(gè)箱來容納PPU,箱與箱通過光導(dǎo)纖維通信線互連。因此,每個(gè)箱包括一個(gè)或多個(gè)通信裝置505,每個(gè)通信裝置505包括至少一個(gè)用于在箱體間轉(zhuǎn)換并傳送數(shù)據(jù)的光纖收發(fā)通信裝置。該收發(fā)裝置可以是常用的光纖收發(fā)裝置,具有每秒100兆位的數(shù)據(jù)傳送率并能夠把一個(gè)箱中的不同PPU通過分時(shí)多路通信傳送到其它箱中以發(fā)揮光纖通信線較大帶寬的優(yōu)點(diǎn),最好的是,在每個(gè)通信設(shè)備中用至少二個(gè)收發(fā)裝置,這樣,信號(hào)在每個(gè)通信設(shè)備中可同時(shí)接收下的各維和發(fā)射。
最好,PPU330根據(jù)上述參照發(fā)明′294號(hào)所述的技術(shù)進(jìn)行超立方體互連。這樣,每個(gè)PPU在立體網(wǎng)絡(luò)中對(duì)應(yīng)于超立方體的四維在同一電路板上與四個(gè)其它PPU連接,并且還連到在一個(gè)箱中其它4塊電路板的PPU上,對(duì)應(yīng)于超立方體的另外四維。在具有262,144個(gè)PPU的系統(tǒng)情況下,箱中每個(gè)PPU被連到十個(gè)不同箱中的十個(gè)PPU上。這些另外十對(duì)連接對(duì)應(yīng)于超立方體余每個(gè)箱中在這些十維上的連接是通過一獨(dú)立的通信裝置505來完成的。
如圖7所示,功能電路包含9個(gè)主要功能單元地址變換器510,存貯器接口520,虛擬處理器序列發(fā)生器530,數(shù)據(jù)存貯器540,錯(cuò)誤校正器550,α程序發(fā)送器560,β程序發(fā)送器570,阻斷器580,以及命令存貯器590。直觀地,所有這些功能單元都做在單個(gè)集成電路或芯片上,但是也可用多個(gè)芯片來完成。地址線532和數(shù)據(jù)線582把VP序列發(fā)生器530和阻斷器580連到PPU的微處理器350上。地址線522和數(shù)據(jù)線552把存貯器接口520和錯(cuò)誤校正器550連到PPU的存貯器370上。α引線562和立方體連線572把PPU的α和β程序發(fā)送器560,570連到其它PPU的α和β程序發(fā)送器上,正如下面將詳細(xì)說明的。
如圖8所示,地址變換器510包含一個(gè)PPU地址寄存器605,起始寄存器610,VP偏移寄存器615,Vp增量寄存器620,以及一個(gè)頁面表625。地址變換器還包括第一、第二、第三多路轉(zhuǎn)換器630,635,640和第一,第二加法器645,650。地址變換器通過地址總線602接收來自VP序列發(fā)生器530的輸入,變換器的輸出通過實(shí)際地址總線652而送到存貯接口520,頁碼的二位通過頁位線654提供到VP序列發(fā)生器530。如圖所示,地址總線是二十四位碼寬,實(shí)際地址總線是二十二位碼寬。
為了理解地址變換器的工作情況,理解本發(fā)明的尋址方式是很有幫助的。如圖13所示,在系統(tǒng)中存貯了四種類型的地址位置地址,程序發(fā)送器地址,虛擬地址,以及實(shí)際地址。為了提供足夠的虛擬處理以滿足1,000個(gè)用戶的需要,本發(fā)明的系統(tǒng)提供甚至存貯在虛擬存貯器中的虛擬處理器。這樣,甚至實(shí)際貯在盤中的數(shù)據(jù)可與虛擬處理器相聯(lián)系。結(jié)果,本發(fā)明的系統(tǒng)被設(shè)計(jì)成可有一萬億個(gè)虛擬處理器(240)。由于整個(gè)地址空間原理上可由一個(gè)用戶使用,所以CM2提供了一個(gè)帶有64位地址空間的尋址結(jié)構(gòu)。
地址的最一般的形式是需要64存貯位的位置地址。該地址能在整個(gè)系統(tǒng)中的任何虛擬處理器中指出任何存貯位置。地址的最高40位指定正被存取的虛擬處理器。最低24位指定在那個(gè)虛擬處理器中的位移。由于264大于整個(gè)系統(tǒng)虛擬存貯器的規(guī)模,所以在編碼中有多余空室。特別是,指明虛擬處理器的40位分別指明了虛擬處理器停留(18位)的PPU,虛擬處理機(jī)所開始的該實(shí)際處理單元的虛擬存貯器中的字(22位)。虛擬處理器可在實(shí)際處理單元的24-位虛擬地址空間中任一偶32-位邊界上啟動(dòng)。
程序發(fā)送器地址是通信網(wǎng)絡(luò)所用的地址。它們基本上是壓縮形式的地址,是通過把24位偏移量和四乘虛擬處理地址的22位偏移部分加在一起而形成。程序發(fā)送器地址指明了系統(tǒng)中的某個(gè)實(shí)際處理器單元的虛擬存貯器中的一個(gè)單字。程序發(fā)送器地址的長度是42位它對(duì)應(yīng)于整個(gè)系統(tǒng)上虛擬存貯器的字?jǐn)?shù)。
在PPU中,所有地址計(jì)數(shù)器以24位虛擬地址形式被存貯。在這樣的一個(gè)地址中,8位碼代表存貯器的頁,16位碼代表在該頁中一個(gè)字節(jié)的地址。該頁是虛擬存貯系統(tǒng)的按需要為基礎(chǔ)的存貯單元。在任一給定時(shí)刻,在存貯器中實(shí)際可達(dá)64頁。
24位虛擬地址由頁面表625被變換到22位實(shí)際地址上。頁面表是有256個(gè)字乘6位的查找表,把虛擬存貯器中的28頁每一個(gè)變換到實(shí)際存貯器中的26個(gè)頁。
地址變換器510把虛擬地址帶入功能電路并把它既變到存貯器的實(shí)際地址,又變換到程序發(fā)送器地址以便通信。地址變換器被設(shè)計(jì)成能提供三種不同的尋址方式,普通,相對(duì)虛擬處理,以及擴(kuò)展地址。在普通尋址方式中,24位實(shí)際地址從PPU中直接取出并分解成8位頁號(hào)和16位偏移量。8位頁號(hào)被用作頁面表625的索引,它包含虛擬頁面與實(shí)際存貯器的對(duì)應(yīng)。當(dāng)參照頁面在實(shí)際存貯器中時(shí),頁面表將產(chǎn)生6位地址告訴頁存在于實(shí)際存貯器的的哪一部分。它與16位偏移量組合以形成直接通向存貯接口的22位實(shí)際地址。當(dāng)參照頁被“換出”時(shí),頁面表將通過用頁面位的置值來指明,并且發(fā)生一個(gè)中斷,以允許頁面從二級(jí)存貯裝置中轉(zhuǎn)到實(shí)際存貯器中。頁面通過第一輸入/第一輸出基線裝入,這樣,新頁將被裝入到最新被裝入頁面的頂部。用頁位對(duì)某些頁進(jìn)行“寫入”同樣也是可能的,這樣它們絕不會(huì)移出到二級(jí)存貯裝置上。
尋地的第二種方式是相關(guān)虛擬處理器,在該情況下,來自總線的地址作為最近正被執(zhí)行的虛擬處理器相對(duì)于虛擬處理器偏移地址的偏移量。這些二個(gè)24位地址通過加法器650加在一起以產(chǎn)生24位虛擬地址和以前一樣通過頁面表而轉(zhuǎn)換的實(shí)際地址。虛擬處理編移是由虛擬處理器序發(fā)生器或者增加固定虛擬處理器的規(guī)模而設(shè)置的。
尋址的最后一種形式是完成內(nèi)部處理機(jī)通信的機(jī)制,在該情況下,通過β程序發(fā)生器來計(jì)算相關(guān)函數(shù)的,其地址如下計(jì)算目的PPU的18位地址并置到來自芯片(移位寄存器)的24位實(shí)際地址,和裝入到起始寄存器610中的24位起始字節(jié)的和上。典型地,它是在擴(kuò)展地址運(yùn)等過程中通過以前的操作過程裝入的。當(dāng)信息地址接收到以后,接收到地址的存貯部分,是由一個(gè)起始和位移的和計(jì)算出來的,該存貯部分被用作虛擬存貯器地址并通過頁面表按普通尋址方式索引到實(shí)際地址。
存貯器接口單元520負(fù)責(zé)尋址的實(shí)際多路轉(zhuǎn)換和隨機(jī)動(dòng)態(tài)存貯器和存貯器刷新。如圖9所示,接口單元520包含刷新計(jì)數(shù)器660,行數(shù)寄存器665,多路轉(zhuǎn)換器670和比較器675。多路轉(zhuǎn)換器670把22位實(shí)際地址在11根地址線上轉(zhuǎn)換。刷新計(jì)數(shù)器660可為診斷目的而重置。存貯接口單元同樣也設(shè)計(jì)成有利于大多數(shù)動(dòng)存貯器所提供的快速塊模存取。為了達(dá)到這點(diǎn),存貯器接口單元中存貯了行寄存器665中最后被存取的行的行數(shù)。如果比較器675判定存取發(fā)生在先前存取相同的行上,則將執(zhí)行一個(gè)快速周期以只選通地址的列部分。這樣,相同存貯器塊的參照在大約為普通隨機(jī)存貯所需的一半時(shí)間中進(jìn)行。這對(duì)于順序數(shù)據(jù)存取塊特別重要。
虛擬處理器序列發(fā)生器530是一簡單的有限狀態(tài)機(jī)以迅速完成虛擬處理器消耗所需的表列運(yùn)算。PPU附件通過按時(shí)順序多路轉(zhuǎn)換它們的運(yùn)算實(shí)現(xiàn)多重虛擬處理器。PPU存貯空間的某一部分(包括其虛擬處理器)分布給每個(gè)虛擬處理器,盡管每個(gè)虛擬處理器的虛擬存貯器個(gè)數(shù)是完全不同的。典型地,由PPU實(shí)現(xiàn)的虛擬處理器按幾種不同的任務(wù)連接。對(duì)于每個(gè)任務(wù),PPU須按當(dāng)前任務(wù)的上下文形式對(duì)通過所有處理器定序,提供被執(zhí)行的命令。同樣,必須對(duì)通過每個(gè)與任務(wù)順序相關(guān)的命令定序。但是,不必對(duì)不在被執(zhí)行的任務(wù)的上下文里的由PPU實(shí)現(xiàn)的虛擬存貯器定序。結(jié)果,大大節(jié)約了對(duì)由PPU實(shí)現(xiàn)的虛擬處理器的定序所需的時(shí)間。
虛擬處理器和轉(zhuǎn)換任務(wù)上下文開關(guān)都由硬件直接支持,存貯器中的虛擬處理器的構(gòu)成如圖14所示。任務(wù)被連在一起成為循環(huán)清單,稱為任務(wù)清單,任何給定時(shí)刻的PPU包含一個(gè)指示任務(wù)清單中一個(gè)任務(wù)的指示器。通過序列發(fā)生器530的幫助,PPU依次循環(huán)通過每個(gè)任務(wù),在走向下一個(gè)任務(wù)以前,對(duì)每個(gè)虛擬處理器的現(xiàn)有任務(wù)的上下文執(zhí)行一個(gè)命令。這樣,如果上下文相對(duì)較少,相對(duì)于所有處理器都對(duì)現(xiàn)有上下文進(jìn)行處理所需的時(shí)間來說,它將在較短的時(shí)間內(nèi)執(zhí)行。
每個(gè)任務(wù)具有與它相關(guān)的一個(gè)標(biāo)題,包含三種信息對(duì)應(yīng)于現(xiàn)行上下文的指示器;對(duì)應(yīng)于存貯聯(lián)結(jié)清單的棧的指示器,以及對(duì)應(yīng)于任務(wù)中所有虛擬處理器清單的指示器,序列發(fā)生器同樣包含一個(gè)對(duì)應(yīng)于任務(wù)清單中下一個(gè)任務(wù)的以及關(guān)于任務(wù)的輔助信息的指示器,所述輔助信息指的諸如優(yōu)先和運(yùn)行統(tǒng)計(jì)。PPU按聯(lián)結(jié)清單,在上下文指示器處開始,直到零位終此符出現(xiàn)停止,決定虛擬存貯器中每個(gè)虛擬處理器的單元位置。這些清單被存貯在存貯器受保護(hù)的區(qū)域內(nèi)。
為了執(zhí)行“推入上下文”的指令,PPU分配新的存貯部件并把現(xiàn)行上下文指示器推上棧,改變棧指示器使其處于棧頂,“跳出上下文”指令則恰恰相反,除非當(dāng)棧下溢,否則用頂部上下文級(jí)指示器。下一個(gè)最普通的操作是根據(jù)一些條件把上下文限制為現(xiàn)行上下文的子集合。在這種情況下,虛擬處理器表列根據(jù)條件分裂,從現(xiàn)行上下文開始。符合限定條件的虛擬處理器被加到表列的末端。指示著表列結(jié)尾處的指示器就成為現(xiàn)行上下文。這樣代表連續(xù)上下文的嵌套的子集合定序方法被有效存貯。根據(jù)這種設(shè)計(jì),不在現(xiàn)行上下文中的虛擬處理器在命令執(zhí)行過程中不會(huì)發(fā)生過載。
如圖10所示,虛擬處理器序列發(fā)生器530包含5個(gè)主寄存器,其中每個(gè)都能夠保持虛擬處理器地址的最高22位。上下文寄存器680保持指向現(xiàn)行上下文清單起始的指示器。棧寄存器685保持指向現(xiàn)行任務(wù)的上下文棧指示器。頂端寄存器680保持指向現(xiàn)行棧上下文清單頂部的指示器。任務(wù)寄存器695保持指向任務(wù)清單中的下一個(gè)任務(wù)的指示器,而下一個(gè)寄存器700保持指向虛擬處理器系列中下一個(gè)虛擬處理器的指示器。可用另外的寄存器存貯所需的輔助信息。序列發(fā)生器530的輸出通過多路轉(zhuǎn)換器715被選擇以響應(yīng)可編程邏輯陣列(PLA)710來的信號(hào)。
虛擬處理器序列發(fā)生器中包含一個(gè)由狀態(tài)寄存器705和PLA710實(shí)現(xiàn)的有限狀態(tài)機(jī),以管理這些寄存器并控制地址變換器和命令存貯器中的寄存器。該有限狀態(tài)機(jī)排列所需的管理指令系列以完成任務(wù)和虛擬處理器的交換操作。狀態(tài)機(jī)的輸出取決于現(xiàn)行狀態(tài)和來自功能電路余部的條件位。例如,頁面表625的頁位。PLA也能夠根據(jù)由零位檢測器720檢測得的現(xiàn)行數(shù)據(jù)是否為零有條件地作出變換。在某種意義上,虛擬處理器序列發(fā)生器是一個(gè)無算術(shù)單元的非常簡單的計(jì)算機(jī)。
數(shù)據(jù)存貯器540完全是常用的存貯只讀數(shù)據(jù)的存貯器。
錯(cuò)誤校正器550是標(biāo)準(zhǔn)的根據(jù)6位漢明編碼的單位錯(cuò)誤糾正、多位錯(cuò)誤檢測邏輯。如圖11所示,它包含線驅(qū)動(dòng)器740,745,750,755用以計(jì)算奇偶位的錯(cuò)誤控制電路760,765,檢測奇偶錯(cuò)誤的異門770,判別一個(gè)錯(cuò)誤是否被糾正的解碼器775,以及用于校正檢出錯(cuò)誤的異門780。錯(cuò)誤控制電路760把錯(cuò)誤糾正位加到被寫入實(shí)際存貯器的所有數(shù)據(jù)上。由實(shí)際存貯器讀出的所有數(shù)據(jù)通過在錯(cuò)誤控制電路765中重新計(jì)算來自存貯器的數(shù)據(jù)讀出的奇偶位以及在與門770中比較這些位和從存貯器讀出的奇偶位進(jìn)行檢測。解碼器775判別錯(cuò)誤是否能被糾正,并且通過把合適的信號(hào)加到與門770(如果可能)來實(shí)現(xiàn)。如果發(fā)生多重錯(cuò)誤,由解碼器775反映出單元失效。
α和β程序發(fā)送器560,570被分別用作為指令和數(shù)據(jù)傳送,并能分享實(shí)際通信線,盡管發(fā)送硬件是獨(dú)立的。如圖12所示,α程序發(fā)送器包含一個(gè)由觸發(fā)器805A-N控制的與門800A-N陣列、第一、第二或門810,815,由觸發(fā)器825A-N陣列、第一、第二或門810、815,由觸發(fā)器825A-N控制的多路轉(zhuǎn)換器820A-N,由觸發(fā)器832,834所控制的第一多路轉(zhuǎn)換器830和由觸發(fā)器842控制的第二多路轉(zhuǎn)換器840。輸入線802A-N被加到與門800A-N,輸出線822A-N從多路轉(zhuǎn)換器820A-N延伸。這些線在二進(jìn)制超立方體中把PPU的α程序發(fā)送器連到最近相鄰的PPU的α程序發(fā)送器上。因此,與門800A-N的數(shù)目,多路轉(zhuǎn)換器820A-N和與他們相關(guān)電路的數(shù)目對(duì)應(yīng)于超立方體的維數(shù),例如18,但為說明起見在此只示出了三個(gè)維。由于與每維相關(guān)的輸入和輸出線通向同一個(gè)α程序發(fā)送器,這些線如果需要可以多路復(fù)用。此外,由于這些線作為β程序發(fā)送器的輸入、輸出線通向相同的PPU。它們也能與β程序分配器的線多路復(fù)用。
α程序發(fā)送器用于分配和同步指令。它基本上起著與4,598,400專利申請(qǐng)所描述的指令分配樹和全局-或樹相同的作用,除非任何一個(gè)處理器或任何數(shù)量的處理器同時(shí)是指令的來源。這些指令聚集在一起被稱為命令。一條命令的執(zhí)行是通過α程序分配器同步經(jīng)過整個(gè)機(jī)器的,這樣在下一條命令出現(xiàn)以前,一條命令被完全執(zhí)行。
來自局部阻斷器580被傳送的命令在命令進(jìn)線上接收,從其他程序發(fā)送器上接收到的命令通過命令輸出線提供到命令存貯器540上。表明接收到命令結(jié)束的同步信號(hào)在同步進(jìn)線上由PPU提供到程序發(fā)送器,表明其他PPU的一個(gè)命令結(jié)束的信號(hào)在同步輸出線上提供到PPU。
α程序發(fā)送器的運(yùn)算方式根據(jù)從PPU接收到的信號(hào)由觸發(fā)器控制。這樣,如果局部PPU要給其他PPU傳輸命令,觸發(fā)器842給多路變換器840賦值以在命令進(jìn)線上傳送信號(hào),而觸發(fā)器825A-N給多路轉(zhuǎn)換器820A-N賦值以傳輸這些信號(hào)。如果局部PPU接收來自另一個(gè)PPU的命令,觸發(fā)器832,834被賦值以把特定的即將來的維線指定給正在等待命令的多路變換器830。如果該命令是要通到另一個(gè)PPU的話,觸發(fā)器842也給多路變換器840賦值以把來自多路轉(zhuǎn)換器830的信號(hào)傳輸給多路轉(zhuǎn)換器820A-N。通過這樣安排,PPU可以把命令傳輸給與其最近的單元中每一個(gè)并以此控制它們;每個(gè)PPU等候來自其最近單元之一的命令以被它所控制。
在一個(gè)命令出現(xiàn)以后,發(fā)布該命令的PPU通過同步信號(hào)裝置監(jiān)測命令的執(zhí)行情況。PPU通過同步輸入線把同步位號(hào)傳輸?shù)交蜷T815中,并通過給觸發(fā)器825A-N置值,使多路變換器820A-N傳輸來自或門815的信號(hào)。同步信號(hào)通過賦值觸發(fā)器805A-N接收,使與門800A-N能給或門810傳送一個(gè)接收到的信號(hào)?;蜷T810的輸出也可通過或門815的輸入端給其他PPU傳送信息。通過這樣安排,PPU可以選擇地等候它所控制的那些最近單元PPU來的同步信號(hào),而忽略其他那些它不控制的PPU所來的信號(hào)。
β程序發(fā)生器570基本上是與4,598,400專利中所描述的相同型號(hào)的程序發(fā)送器。如圖2所示,它具有輸入輸出線38,39的陣列,輸入輸出線38,39通過圖7所示的立體引線572與超立方體中最近相鄰PPU的β程序發(fā)送器通信。信息包通過地址變換器510和數(shù)據(jù)存貯器540從微處理器提供到β程序發(fā)生器570,接收到的信息包通過同樣部件提供到微處理器。輸入和輸出線可以多路復(fù)用,這些線也能與α程序發(fā)送器的線802A-N和822A-N多路復(fù)用。
β程序發(fā)送器負(fù)責(zé)基本上三種不同的功能,它把信息包從一個(gè)PPU傳輸?shù)搅硪粋€(gè),完成4,598,400專利相同的功能。它產(chǎn)生對(duì)應(yīng)于與之相關(guān)的PPU所需的存貯器的信息包并把它傳輸給與其它PPU相關(guān)的存貯器,它接收來自其它PPU的被指定到與它相關(guān)的PPU輸入信息包,并適當(dāng)傳遞這些信息。雖然這后二個(gè)功能是新的,但在每個(gè)功能中信息包的傳送是與′400專利所揭示的一樣的。
本發(fā)明的全部安裝好的并行計(jì)算機(jī)是一個(gè)很貴的設(shè)備,或許是太大的一個(gè)設(shè)備以致于一個(gè)用戶用任何長的時(shí)間也不能占據(jù)整個(gè)系統(tǒng)。計(jì)算機(jī)的一個(gè)設(shè)計(jì)前提是同時(shí)可被幾千個(gè)用戶使用。而用戶的最高要求可能非常高,假設(shè)平均的需求是適中的,例如每個(gè)用戶每秒1億條指令。此外,假定用戶能夠利用共享設(shè)備,而不僅只是計(jì)算周期,例如,共享數(shù)據(jù)庫里的信息。
由于用戶通過共享空間和共享時(shí)間來區(qū)分計(jì)算機(jī)的空間時(shí)間源,故用于共享資源的技術(shù)被稱為空間共享,模仿時(shí)間共享而得。就這種意義上說,共享空間可以被更精確地稱為“共享空間時(shí)間”,因它也能在時(shí)間的多路轉(zhuǎn)換。共享空間時(shí)間甚至能在每個(gè)用戶在所有時(shí)間內(nèi)提交給整個(gè)系統(tǒng)相同負(fù)載的情況下工作,但是就用戶感覺到的利益來說工作比上述情況要好,這是因?yàn)橄铝械湫陀脩糌?fù)荷的不均勻性所決定的。
理想時(shí)間許多用戶常常在他們使用機(jī)器的時(shí)候,事實(shí)上需要很少的時(shí)間周期。這對(duì)于能提供詢問和共享數(shù)據(jù)庫的事務(wù)系統(tǒng)是特別正確的。
非均勻并行性當(dāng)執(zhí)行并行程序時(shí),在程序中會(huì)有許多點(diǎn),可能有效地同時(shí)利用成千成百個(gè)虛擬處理器。還會(huì)有其他一些點(diǎn),在那里單個(gè)單步執(zhí)行已足夠。
非均勻存貯器需要許多用戶在任何給定時(shí)刻只對(duì)計(jì)算機(jī)中一個(gè)兆兆位存貯器的相對(duì)較小部分要求直接存取。
數(shù)據(jù)的共同性許多用戶在一個(gè)短的時(shí)間周期內(nèi)可能對(duì)同一數(shù)據(jù)庫進(jìn)行存取,并允許它在相對(duì)低耗情況下保存在主存貯器中。在共享軟件中有相似的情況。
為了利用這些非均勻性,計(jì)算機(jī)根據(jù)運(yùn)行時(shí)間的要求動(dòng)態(tài)地把實(shí)際處理器分配給虛擬處理器。這樣,用戶消耗資源正比于實(shí)際所需量,而不是正比于想象實(shí)用的資源量。
β程序分配器的特點(diǎn)是使在不同用戶中劃分PPU的陣列,共享空間成為可能。如圖2所示,G-in輸入端控制通信線39的存取,它能把信息包從一個(gè)PPU傳送到另一個(gè)。如果該線斷掉的話,通過給與那根線相連的G-in輸入端提供一個(gè)低電平信號(hào),就可以把該線從網(wǎng)絡(luò)中去掉。根據(jù)本發(fā)明,超立方體的任何子立方體通過給與通信線相連的G-in輸入端提供一個(gè)低電平信號(hào)而分開,所述通信線是連接超立方體的余部和子立方體的。例如,每個(gè)子立方體的256個(gè)PPU處,可以通過給與第8維到18維的通信線相連的G-in輸入端提供一個(gè)低電平,256個(gè)PPU的分立方體可與18維超立方體簡單地分開。同時(shí),在超立方體的各個(gè)其它部分的大量子立方體也可同樣與超立方體分開,該分離是通過給不再用的那維通信線相關(guān)的G-in輸入端提供低電平信號(hào)。
為了實(shí)現(xiàn)這一點(diǎn),給出了每個(gè)PPU的微控制器,對(duì)G-in輸端進(jìn)行存取,這樣它能響應(yīng)于一個(gè)子立方體特定配置的低電平信號(hào)。所示的存取可通過一觸發(fā)器(圖中未畫)來完成,該觸發(fā)器的輸出狀態(tài)可由PPU的微處理器控制。
根據(jù)本發(fā)明,指令中的標(biāo)志位表示了由其他PPU并行執(zhí)行的并行指令。阻斷器580檢測該標(biāo)志位。所有由PPU從存貯器中存取的數(shù)據(jù)通過阻斷器580,如果數(shù)據(jù)的標(biāo)志位指明是并行指令,則無操作指令被送到數(shù)據(jù)線,阻斷器把并行指令送到α程序發(fā)送器中以傳送給其他PPU。如果標(biāo)志位沒有指明并行指令,則指令由數(shù)據(jù)線提供給PPU。
命令存貯器590是用以存貯來自α程序發(fā)送器指令的存貯器。虛擬處理器序列發(fā)生器530將使PPU從命令存貯器中存取指令以實(shí)現(xiàn)每個(gè)虛擬處理器上的動(dòng)作。命令存貯器大體上是一個(gè)對(duì)由每個(gè)任務(wù)正在并行工作的指令存貯器。典型地,該存貯器是256個(gè)字深度。
由于計(jì)算機(jī)的內(nèi)部雙重元件,自然可通過冗余技術(shù)適當(dāng)提高誤差精度。有利的是,在數(shù)據(jù)庫中的所有存貯內(nèi)容是在至少二個(gè)實(shí)際獨(dú)立的裝置中,這樣,當(dāng)一個(gè)存貯裝置失效時(shí),可用來自后備裝置中的數(shù)據(jù),并復(fù)制給另一個(gè)后備裝置。當(dāng)一個(gè)處理器裝置失效時(shí),直到它被替換以前,它是與系統(tǒng)分開的,而從保留的可用處理機(jī)庫中再分配實(shí)際處理器。
在這類容錯(cuò)系統(tǒng)中最困難的問題在出現(xiàn)錯(cuò)誤時(shí)檢測并分離它們,以及處理出錯(cuò)時(shí)刻正在加工的作業(yè)。在此,在任務(wù)被完美地完成的確信程度和分配給任務(wù)的硬件數(shù)量之間有一協(xié)調(diào)方案。在本發(fā)明的并行計(jì)算機(jī)中,用戶根據(jù)任務(wù)的緊急程度,可在運(yùn)行期間作出協(xié)調(diào)方案。任務(wù)可按三種方式中的一種根據(jù)所需的冗余量來完成的。
在系統(tǒng)運(yùn)行的最簡單方式中,如圖11所示的錯(cuò)誤校正器電路550一類自檢硬件被用于檢測和分離錯(cuò)誤,該硬件能夠檢測最常見類型的誤差和錯(cuò)誤,例如,沒有校正的存貯器錯(cuò)誤,失電,通信中無糾正的錯(cuò)誤,在自檢方式工作時(shí),一旦錯(cuò)誤被檢測,當(dāng)前作業(yè)停止,硬件重新配置以隔離失效部分,于是作業(yè)再從頭重新開始。
盡管自檢電路將檢測發(fā)生的大多數(shù)錯(cuò)誤,但是不能保證檢測到每一類的錯(cuò)誤。特別是許多發(fā)生在PPU本身的錯(cuò)誤將不被檢測。在雙冗余方式中,運(yùn)算系統(tǒng)在兩個(gè)實(shí)際上獨(dú)立的處理器的相同集合中執(zhí)行二個(gè)相同的程序并在規(guī)定間隔處比較中間值。(通信系統(tǒng)的引線,是n-維立方體型式,正如給這類比較提供正確的通信路徑)。比較機(jī)制保證錯(cuò)誤檢測,分析錯(cuò)誤是怎樣并為什么發(fā)生。一旦在雙冗余方式中檢測到錯(cuò)誤,與自檢方式中同樣的方式處理。在診斷分析能判別出哪個(gè)處理器出錯(cuò)之前,兩個(gè)處理器都與系統(tǒng)分開。
自檢和雙冗余方式的缺點(diǎn)是當(dāng)錯(cuò)誤發(fā)生時(shí)它們需要重新起始作業(yè)。這對(duì)于不能方便地拆成相對(duì)較小作業(yè)的任務(wù)來說是可以接收的。但是,一些任務(wù)具有實(shí)時(shí)處理要求,不允許作業(yè)的重做。對(duì)于這二種情況中的任何一種,四倍冗余方式是達(dá)到無錯(cuò)運(yùn)行的合適方式。
在四倍冗余方式中,四個(gè)相同的應(yīng)用拷貝同步運(yùn)行。每個(gè)任務(wù)把其運(yùn)算按循環(huán)形式與其他的相比較;例如,A檢查B,B檢查C,C檢查D,而D檢查A。當(dāng)出現(xiàn)一個(gè)錯(cuò)誤時(shí),通過失配比較的型式,將它檢測和分離開來。在這種情況下,處理的正確狀態(tài)從一個(gè)無錯(cuò)任務(wù)復(fù)制到另一個(gè)子立方體中,運(yùn)行連續(xù),不發(fā)生明顯阻斷。四倍(而不是三倍)的冗余被用來使進(jìn)行比較所需的合適的連線能在n-維立方體型式中可用。
可明顯看出,在本發(fā)明的思想和范圍內(nèi),上述方法和裝置可以有大量改變。例如,當(dāng)本發(fā)明被描述成以超立方體二進(jìn)位形式構(gòu)成并行處理機(jī)的陣列的上下文時(shí),可以理解為可用其它配置,例如′400專利提出的方法。在那種情況下可以看出,對(duì)于通信裝置,例如上面所述的α和β程序發(fā)送器,也需要合適的改進(jìn),以在處理器陣列中能信號(hào)指示。
權(quán)利要求
1.一種包含多個(gè)處理器單元的并行計(jì)算機(jī),其特征在于每個(gè)處理器單元包括一個(gè)處理器,讀/寫存貯器以及控制電路,所述的控制電路包括在所述并行計(jì)算機(jī)中,通過把確定地址的信息包從一個(gè)處理器單元傳送到另一單元的用于互連所述處理器單元的手段;保護(hù)正在第一組運(yùn)算處理器單元和第二組運(yùn)算處理器單元間傳輸?shù)男畔氖侄?,其中所述并行?jì)算機(jī)被分成二個(gè)或多個(gè)處理器單元,互相間不相影響。
2.如權(quán)利要求
1所述的計(jì)算機(jī),其特征在于,互連裝置包括位于處理器單元間的通信線以及用于把信息包傳送給所述通信線的傳送裝置,所述傳送裝置包括按優(yōu)先原則控制所述通信線存貯的裝置,并且所述保護(hù)裝置包括給所述控制裝置賦值以防止對(duì)通信線進(jìn)行存取的手段。
3.一種并行計(jì)算機(jī),其特征在于它包括其中每個(gè)都能執(zhí)行串行命令的多個(gè)處理器以及能區(qū)分將由所述多個(gè)處理器并行處理的和不用多個(gè)處理器處理的指令之間差異的手段。
4.如權(quán)利要求
3所述的計(jì)算機(jī),其特征在于所述的用以區(qū)分指令之間差別的手段是每條指令中的標(biāo)志位,以及當(dāng)標(biāo)志位確定是并行指令時(shí),用于檢測所述標(biāo)志位并使并行指令實(shí)現(xiàn)的手段。
5.一個(gè)并行計(jì)算機(jī)包括幾個(gè)處理器,每個(gè)都有其自己的寫/讀存貯器,通過信號(hào)線互連所述處理器以形成超立方體的手段,把所述多個(gè)處理器分成至少為第一和第二同構(gòu)組的手段,所述組相對(duì)于包含在與所述處理器相關(guān)的讀/寫存貯器中的數(shù)據(jù)來說,也是同構(gòu)的,用信號(hào)線在超立方體中互連所述處理器,在執(zhí)行計(jì)算機(jī)指令的過程中,通過比較在第一和第二組并行計(jì)算機(jī)所完成的指令結(jié)果來檢側(cè)錯(cuò)誤的裝置。
6.并行計(jì)算機(jī),其特征在于包括具有各自讀/寫存貯器的多個(gè)處理器,使所述每個(gè)處理器和讀/寫存貯器工作得以模擬其他處理器的手段,以及遞歸控制所述處理器包括模擬其他處理器的裝置,使一個(gè)處理器控制至少另一個(gè)處理機(jī),而另一處理器控制至少一個(gè)其他處理器。
7.一種并行處理器,其特征在于包括多個(gè)處理器和用于發(fā)送所述處理器間信號(hào)的裝置,所述裝置包括在所述處理器間的信號(hào)線,在所述處理器間傳輸確定地址的信息包的裝置,把指令從第一處理器傳送到選定的其他處理器的裝置,以及在第一處理器上用于監(jiān)測來自被選定的其他處理器上通信線上表明傳送指令的執(zhí)行情況的裝置。
8.如權(quán)利要求
7所述的并行計(jì)算機(jī),其特征在于進(jìn)一步包括使指令的傳送同步響應(yīng)于由監(jiān)測裝置檢測有信號(hào)的裝置。
9.一種檢測并行計(jì)算機(jī)的運(yùn)行中出錯(cuò)的方法,其特征在于包括下列步驟各自都具有讀/寫存貯器的多個(gè)處理器與信號(hào)線相互連接,形成超主體結(jié)構(gòu),把這些處理器分成第一和第二個(gè)處理器的同構(gòu)組,所述組對(duì)于與所述處理器相連的每個(gè)讀/寫存貯器中的數(shù)據(jù)也是同構(gòu)的。利用與處理器互連的信號(hào)線形成超立體結(jié)構(gòu),通過比較第一和第二組處理器上的并行執(zhí)行計(jì)算機(jī)指令的結(jié)果來檢測錯(cuò)誤。
專利摘要
一種通過向大量用戶分配并行計(jì)算機(jī)資源以提高并行計(jì)算機(jī)利用率的方法和裝置。并行計(jì)算機(jī)為大量用戶所分配以滿足計(jì)算機(jī)同時(shí)運(yùn)行的大量數(shù)據(jù)庫和程序的要求,它是通過把并行計(jì)算機(jī)分成多個(gè)相互獨(dú)立的處理機(jī)陣列的裝置來完成的。并行計(jì)算機(jī)的構(gòu)成以允許由陣列中的每個(gè)實(shí)際處理機(jī)對(duì)其它并行處理機(jī)進(jìn)行模擬,并提供模擬并行處理器間的通信,在虛擬存貯器中提供了存貯虛擬處理器的手段。
文檔編號(hào)G06F12/02GK87106067SQ87106067
公開日1988年3月9日 申請(qǐng)日期1987年8月29日
發(fā)明者W·丹尼爾·西里斯 申請(qǐng)人:智能機(jī)器公司導(dǎo)出引文BiBTeX, EndNote, RefMan