專利名稱:類網(wǎng)絡(luò)路由的制作方法
交叉引用本發(fā)明要求了共有的、一并待決的2001年2月24日提出申請的美國臨時(shí)專利申請序列號60/271,124,標(biāo)題為“大規(guī)模并行超級計(jì)算機(jī)(MASSIVELY PARALLEL SUPERCOMPUTER)”的優(yōu)先權(quán),其全部內(nèi)容和公開在這里一并作為參考,如這里闡明的一樣。此外,本專利申請還涉及下列共同擁有的、一并未決的于同一日期提出申請的美國專利申請,其全部內(nèi)容和每一個(gè)公開在這里一并作為參考,如這里闡明的一樣。美國專利申請序列號No.(YOR920020027US1,YOR920020044US1(15270)),為“類網(wǎng)絡(luò)路由(Class NetworkingRouting)”;美國專利申請序列號No.(YOR920020028US1(15271)),為“用于計(jì)算結(jié)構(gòu)的全局樹網(wǎng)絡(luò)(A Global Tree Network for ComputingStructures)”;美國專利申請序列號No.(YOR920020029US1(15272)),為“全局中斷和屏障網(wǎng)絡(luò)(Global Interrupt and Barrier Networks)”;美國專利申請序列號No.(YOR920020030US1(15273)),為“優(yōu)化的可擴(kuò)展網(wǎng)絡(luò)交換器(Optimized Scalable Network Switch)”;美國專利申請序列號No.(YOR920020031US1,YOR920020032US1(15258)),為“環(huán)網(wǎng)絡(luò)和樹網(wǎng)絡(luò)中的算術(shù)函數(shù)(Arithmetic Functions in Torus and TreeNetworks)”;美國專利申請序列號No.(YOR920020033US1,YOR920020034US1(15259)),為“用于高速信號傳輸?shù)臄?shù)據(jù)捕獲技術(shù)(Data Capture Technique for High Speed Signaling)”;美國專利申請序列號No.(YOR920020035US1(15260)),為“通過傳送/獲取窗口控制相干性(Managing Coherence Via Put/Get Windows)”;美國專利申請序列號No.(YOR920020036US1,YOR920020037US1(15261)),為“低延遲存儲器存取和同步(Low LatencyMemory Access And Synchronization)”;美國專利申請序列號No.(YOR920020038US1(15276)),為“存在故障時(shí)用于文件服務(wù)器維護(hù)全部性能的雙尾部故障轉(zhuǎn)移(Twin-Tailed Fail-Over for FileserversMaintaining Full Performance in the Presence of Failure)”;美國專利申請序列號No.(YOR920020039US1(15277)),為“通過無開銷鏈接級校驗(yàn)和的故障隔離(Fault Isolation Through No-OverheadLink Level Checksums)”;美國專利申請序列號No.(YOR920020040US1(15278)),為“通過物理位置用于大規(guī)模并行系統(tǒng)的以太網(wǎng)尋址(Ethernet Addressing Via Physical Location forMassively Parallel Systems)”;美國專利申請序列號No.(YOR920020041US1(15274)),為“通過動態(tài)劃分的超級計(jì)算機(jī)中的容錯(cuò)(Fault Tolerance in a Supercomputer Through DynamicRepartitioning)”;美國專利申請序列號No.(YOR920020042US1(15279)),為“檢驗(yàn)點(diǎn)文件系統(tǒng)(CheckpointingFilesystem)”;美國專利申請序列號No.(YOR920020043US1(15262)),為“分布式存儲器并行多節(jié)點(diǎn)計(jì)算機(jī)上的多維快速傅立葉變換的有效實(shí)現(xiàn)(Efficient Implementation of Multidimensional Fast FourierTransform on a Distributed-Memory Parallel Multi-NodeComputer)”;美國專利申請序列號No.(YOR9-20010211US2(15275)),為“一種新型大規(guī)模并行超級計(jì)算機(jī)(A Novel Massively ParallelSupercomputer)”;以及美國專利申請序列號No.(YOR920020045US1(15263)),為“智能風(fēng)扇模塊和系統(tǒng)(Smart FanModules and System)”。
背景技術(shù):
1、發(fā)明領(lǐng)域本發(fā)明通常涉及一種類網(wǎng)絡(luò)路由,以及更具體地關(guān)于在諸如在其節(jié)點(diǎn)上包括多個(gè)并行計(jì)算處理器的計(jì)算機(jī)網(wǎng)絡(luò)的網(wǎng)絡(luò)中實(shí)現(xiàn)類路由的類網(wǎng)絡(luò)路由,并且它允許計(jì)算處理器將消息廣播至計(jì)算機(jī)網(wǎng)絡(luò)中的一個(gè)或多個(gè)其他計(jì)算處理器,諸如列或行中的處理器。通常這種類型的操作要求將單獨(dú)的消息發(fā)送至每個(gè)處理器。采用根據(jù)本發(fā)明的類網(wǎng)絡(luò)路由,一條消息就已足夠,這通常減少了網(wǎng)絡(luò)中的消息總數(shù)以及進(jìn)行多點(diǎn)播送的延遲。
本發(fā)明涉及消息傳送數(shù)據(jù)網(wǎng)絡(luò)領(lǐng)域,例如,用于分布式存儲器消息傳送、并行計(jì)算機(jī)的網(wǎng)絡(luò),例如應(yīng)用于生命科學(xué)領(lǐng)域內(nèi)的計(jì)算。
本發(fā)明還使用環(huán)計(jì)算機(jī)網(wǎng)絡(luò)(torus computer nerwork)上的類函數(shù)來進(jìn)行密集矩陣計(jì)算。通過使用硬件實(shí)現(xiàn)的環(huán)計(jì)算機(jī)網(wǎng)絡(luò)上的類函數(shù),可以實(shí)現(xiàn)高性能密集矩陣計(jì)算。
本發(fā)明還涉及分布式存儲器、消息傳送并行計(jì)算機(jī)設(shè)計(jì)和系統(tǒng)軟件領(lǐng)域,例如應(yīng)用于生命科學(xué)領(lǐng)域內(nèi)的計(jì)算。更特別的,它涉及用于分布式存儲器并行超級計(jì)算機(jī)的高性能線性代數(shù)軟件。
2、現(xiàn)有技術(shù)論述可以通過大規(guī)模并行計(jì)算機(jī)系統(tǒng)來執(zhí)行一大類重要計(jì)算。這類系統(tǒng)包括許多計(jì)算節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)通常包括一個(gè)或多個(gè)CPU,存儲器和一個(gè)或多個(gè)網(wǎng)絡(luò)接口以將該節(jié)點(diǎn)與其他節(jié)點(diǎn)相連接。
在相關(guān)的2001年2月24日提出申請的美國臨時(shí)專利申請序列號No.60/271,124中描述的計(jì)算機(jī),用于大規(guī)模并行超級計(jì)算機(jī),支持片上系統(tǒng)(SOC)技術(shù)以創(chuàng)造具有高吞吐量且可擴(kuò)展的有成本效益的計(jì)算系統(tǒng)。SOC技術(shù)使采用嵌入式元件庫在單一芯片上創(chuàng)建整體多處理器節(jié)點(diǎn)成為可能,包括具有集成的一級高速緩存的CPU內(nèi)核。這種封裝大大減少了節(jié)點(diǎn)的元件數(shù)目,允許創(chuàng)建一種可靠的大型機(jī)。
消息傳送數(shù)據(jù)網(wǎng)絡(luò)用于在網(wǎng)絡(luò)的節(jié)點(diǎn)直接傳送消息,每個(gè)節(jié)點(diǎn)可以執(zhí)行獨(dú)立于其他節(jié)點(diǎn)的本地操作。節(jié)點(diǎn)可以通過網(wǎng)絡(luò)在節(jié)點(diǎn)中傳送消息來共同作用。這種網(wǎng)絡(luò)的一個(gè)示例是分布式存儲器并行計(jì)算機(jī),其中其每個(gè)節(jié)點(diǎn)具有一個(gè)或多個(gè)在本地存儲器上運(yùn)行的處理器。一種采用這種計(jì)算機(jī)的多節(jié)點(diǎn)的應(yīng)用通過在它們之間傳送消息來協(xié)調(diào)多個(gè)節(jié)點(diǎn)的操作。在本說明書中替換地使用交換器(switch)和路由器(router)這兩個(gè)詞。
消息傳送數(shù)據(jù)網(wǎng)絡(luò)包括交換器和鏈接,其中鏈接僅僅在兩個(gè)交換器之間傳送數(shù)據(jù)。交換器將來自一節(jié)點(diǎn)或鏈接的輸入數(shù)據(jù)路由到另一個(gè)節(jié)點(diǎn)或鏈接。交換器可以連接任意數(shù)目的節(jié)點(diǎn)和鏈接。依賴于它們在網(wǎng)絡(luò)中的位置,在兩個(gè)節(jié)點(diǎn)之間的消息需要穿越幾個(gè)交換器和鏈接。
現(xiàn)有技術(shù)的網(wǎng)絡(luò)有效地支持某些類型的消息傳送,但是不是所有類型。例如,某些網(wǎng)絡(luò)有效地支持單點(diǎn)廣播消息傳送至單一接收節(jié)點(diǎn),但是不支持多點(diǎn)廣播消息傳送至任意數(shù)目的接收節(jié)點(diǎn)。在多種情況下需要多點(diǎn)廣播消息傳送的有效支持,例如在分布式存儲器并行計(jì)算機(jī)上執(zhí)行的數(shù)值算法,其被這里公開的用于使用類函數(shù)的密集矩陣變換的應(yīng)用程序所要求。
許多用戶應(yīng)用程序需要變換非常大的N乘N(N×N)密集矩陣,這里N大于幾千。密集矩陣為具有其絕大多數(shù)項(xiàng)為非零的矩陣。通常,這類矩陣的變換只可以使用大型分布式存儲器并行超級計(jì)算機(jī)來完成。執(zhí)行密集矩陣變換的算法已公知,并可以普遍用于分布式存儲器并行超級計(jì)算機(jī)。在這種情況下,要求大量的處理器間的通信。這會相當(dāng)?shù)販p慢應(yīng)用程序。
發(fā)明概述因此,本發(fā)明的主要目的是提供在網(wǎng)絡(luò)中實(shí)現(xiàn)類路由的類網(wǎng)絡(luò)路由,它允許計(jì)算處理器將消息廣播至一定范圍內(nèi)的處理器,諸如列或行的處理器。通常這類操作要求將單獨(dú)的消息發(fā)送至每個(gè)處理器。通過根據(jù)本發(fā)明的類路由,一條消息就已足夠,這通常減少了網(wǎng)絡(luò)中的消息總數(shù)以及進(jìn)行廣播的延遲。類網(wǎng)絡(luò)路由改進(jìn)了網(wǎng)絡(luò)使得它可以更有效地支持一些額外類型地消息傳送。
類路由改進(jìn)了網(wǎng)絡(luò)以便更有效地支持額外類型地消息傳送。通常消息被分成一個(gè)或多個(gè)包(packet),這些包通過網(wǎng)絡(luò)原子地(atomically)傳送。類路由將類值加入到每個(gè)包中。在每個(gè)交換器上,類值用于作為一個(gè)或多個(gè)表的索引,其存儲的值確定由包上的交換器執(zhí)行的操作。一個(gè)基于索引的查找表是快捷而有效的,如同要求經(jīng)過交換器的最大吞吐量和最小延遲的那樣。
類路由可以概括為在包上操作的交換器所需的有效的信息編碼和解碼,使得網(wǎng)絡(luò)提供特定類型的消息傳送。信息在包的類值和交換器的表中被編碼。信息通過使用包的類值作為表的索引進(jìn)行解碼。
將沒有類路由的網(wǎng)絡(luò)稱為基礎(chǔ)網(wǎng)絡(luò)。采用類路由的網(wǎng)絡(luò)是改進(jìn)的網(wǎng)絡(luò)。所有交換器在類表中具有適當(dāng)?shù)臈l目,一類或多類改進(jìn)的網(wǎng)絡(luò)可以提供基礎(chǔ)網(wǎng)絡(luò)的消息傳送類型。此外,由于使用包的類值作為表的索引非常快捷,因而當(dāng)和基礎(chǔ)網(wǎng)絡(luò)相比較時(shí),基礎(chǔ)網(wǎng)絡(luò)的消息傳送類型不會由改進(jìn)而相當(dāng)大程度的減慢。
類表中的其他條目可以提供超過基礎(chǔ)網(wǎng)絡(luò)的消息傳送類型之外的消息傳送類型。例如,基礎(chǔ)網(wǎng)絡(luò)的單點(diǎn)廣播消息傳送可以通過類路由到用于多相多點(diǎn)播送的基于路徑的多節(jié)點(diǎn)(Multidrop)消息傳送來改進(jìn)。
在上述類中,改進(jìn)的網(wǎng)絡(luò)提供基礎(chǔ)網(wǎng)絡(luò)的消息傳送類型,或是未改動的或是改進(jìn)的。此外,一些類的改進(jìn)網(wǎng)絡(luò)可以超越基礎(chǔ)網(wǎng)絡(luò)。例如超越類可以提供用于單相多點(diǎn)播送的多終點(diǎn)消息傳送。如果類路由提供唯一的消息傳送類型,則不需要底層的基礎(chǔ)網(wǎng)絡(luò)。
本發(fā)明在分布式存儲器并行超級計(jì)算機(jī)上用硬件類函數(shù)功能使密集矩陣變換執(zhí)行的更快。硬件類函數(shù)是類路由的一種特殊使用。這可以通過利用由硬件類函數(shù)提供密集矩陣變換的通信模式這一事實(shí)來實(shí)現(xiàn)。這導(dǎo)致了更快的執(zhí)行時(shí)間。
如果并行超級計(jì)算機(jī)在硬件級別處理類函數(shù)功能,則密集矩陣變換的特定通信模式可以通過使用類函數(shù)來利用,以為了最小化通信延時(shí)。例如,臨時(shí)申請序列號No.60/271,124描述了在硬件級別上具有函數(shù)功能的計(jì)算機(jī)。
附圖簡述通過參考下列本發(fā)明的幾個(gè)實(shí)施例的詳細(xì)描述,結(jié)合附圖,本發(fā)明用于類網(wǎng)絡(luò)路由的前述目的和優(yōu)點(diǎn)可以被本領(lǐng)域的技術(shù)人員更好的理解,在全部幾個(gè)附圖中同樣的元件通過相同的參考數(shù)字指定,其中
圖1示出了根據(jù)本發(fā)明的示例性的分布式存儲器并行超級計(jì)算機(jī),其包括通過多維柵格相互連接的9個(gè)節(jié)點(diǎn),采用二維3×3環(huán)網(wǎng)絡(luò);圖2更詳細(xì)地示出了圖1的分布式存儲器并行超級計(jì)算機(jī)的九個(gè)節(jié)點(diǎn)的示例節(jié)點(diǎn)Q00;圖3示出了圖1所示的分布式存儲器并行超級計(jì)算機(jī)中從節(jié)點(diǎn)Q00到其他8個(gè)節(jié)點(diǎn)的示例性的單相多點(diǎn)廣播;圖4示出了4×4柵格處理器,其中每個(gè)處理器由其行、列數(shù)字進(jìn)行標(biāo)記。
本發(fā)明詳細(xì)描述美國臨時(shí)專利申請序列號No.60/271,124中描述的分布式存儲器并行超級計(jì)算機(jī)包括多個(gè)節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)包括至少一個(gè)運(yùn)行在本地存儲器上的處理器。這些節(jié)點(diǎn)相互連接作為多維柵格,并且它們通過柵格鏈接進(jìn)行通信。不失一般性,并為了使本發(fā)明容易被本領(lǐng)域技術(shù)人員理解,多維節(jié)點(diǎn)柵格將以示例性的2維柵格或示例性的3維柵格進(jìn)行描述。3維柵格通過基于環(huán)的結(jié)構(gòu)實(shí)現(xiàn)。盡管事實(shí)上在下列描述中只介紹了2維節(jié)點(diǎn)柵格或3維節(jié)點(diǎn)柵格,但是在本發(fā)明的范圍內(nèi),可以基于本發(fā)明的技術(shù)容易地給出其它維的柵格。3維的示例是在臨時(shí)專利申請序列號No.60/271,124中描述的基于環(huán)結(jié)構(gòu)上實(shí)現(xiàn)的3維柵格。
圖1為分布式并行超級計(jì)算機(jī)的示例描述,其包括通過多維柵格相互連接的9個(gè)節(jié)點(diǎn),采用二維3×3環(huán)網(wǎng)絡(luò)100。應(yīng)注意,為了簡化和清楚,節(jié)點(diǎn)的數(shù)目是以示例方式限于9個(gè)節(jié)點(diǎn),且節(jié)點(diǎn)的數(shù)目可以依賴于分布式存儲器并行超級計(jì)算機(jī)的特定結(jié)構(gòu)的要求而顯著改變。圖1描繪了9個(gè)節(jié)點(diǎn),標(biāo)記為Q00-Q22,其中一對節(jié)點(diǎn)通過柵格鏈接相互連接??偣?,9-節(jié)點(diǎn)環(huán)網(wǎng)絡(luò)100通過18個(gè)柵格鏈接相互連接,這里每個(gè)節(jié)點(diǎn)通過各自的柵格鏈接與環(huán)網(wǎng)絡(luò)中其他四個(gè)節(jié)點(diǎn)直接相互連接。注意不像網(wǎng)格,示例性的2維環(huán)網(wǎng)100不包括邊節(jié)點(diǎn)。例如,節(jié)點(diǎn)Q00通過柵格鏈接102與節(jié)點(diǎn)Q20相互連接;通過柵格鏈接104與節(jié)點(diǎn)Q02相互連接;通過柵格鏈接106與節(jié)點(diǎn)Q10相互連接;并最終通過柵格鏈接108與節(jié)點(diǎn)Q01相互連接。作為另一個(gè)示例,節(jié)點(diǎn)Q11通過柵格鏈接110與節(jié)點(diǎn)Q01相互連接;通過柵格鏈接112與節(jié)點(diǎn)Q10相互連接;通過柵格鏈接114與節(jié)點(diǎn)Q21相互連接并最終通過柵格鏈接116與節(jié)點(diǎn)Q12相互連接。其他節(jié)點(diǎn)也以類似的方式相互連接。
在節(jié)點(diǎn)之間通信的數(shù)據(jù)在網(wǎng)絡(luò)上以一個(gè)或多個(gè)包進(jìn)行傳輸。對于任意給定的通信,如果數(shù)據(jù)量超過網(wǎng)絡(luò)所支持的包大小,則需要一個(gè)以上的包。包由包頭及跟隨其的由包攜帶的數(shù)據(jù)組成。包頭包含環(huán)網(wǎng)絡(luò)所需的信息以將包從該包的源節(jié)點(diǎn)傳輸至目的節(jié)點(diǎn)。在分布式并行超級計(jì)算機(jī)中,其由本專利申請的受托者實(shí)現(xiàn),網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)通過邏輯地址識別,且包頭包括目的地址以便該包自動路由至由目的地識別的網(wǎng)絡(luò)上的節(jié)點(diǎn)。
圖2為圖1的分布式存儲器并行超級計(jì)算機(jī)的節(jié)點(diǎn)Q00的示例性描述。該節(jié)點(diǎn)類似于在臨時(shí)專利申請序列號No.60/271,124中描述的節(jié)點(diǎn)。該節(jié)點(diǎn)包括一個(gè)在本地存儲器上運(yùn)行的處理器。該節(jié)點(diǎn)包括路由器,該路由器發(fā)送并接收柵格鏈接102、104、106、108上的包,這四個(gè)柵格鏈接分別將節(jié)點(diǎn)Q00與其相鄰節(jié)點(diǎn)Q20、Q02、Q10、Q01相連,如圖1所示。該節(jié)點(diǎn)包括接收緩沖器。如果路由器接收本地處理器預(yù)定的包,那么從可以由處理器接收的包中,將該包置于接收緩沖器。依賴于應(yīng)用程序和該包,處理器可以將包的內(nèi)容寫入存儲器。節(jié)點(diǎn)包括以先進(jìn)先出(FIFO)方式運(yùn)行的注入緩沖器。如果CPU將包放入FIFO中,一旦該包到達(dá)FIFO的頭,該包就由路由器從FIFO中移出,且路由器將該包放入指向該包目的地節(jié)點(diǎn)的柵格鏈接上。
由路由器實(shí)現(xiàn)的路由同時(shí)具有幾個(gè)特征。這些特征是在臨時(shí)專利申請序列號No.60/271,124中描述的一部分特征。該路由為虛擬直通(cut-through)路由。因此如果在一個(gè)柵格鏈接上的輸入包不是指定用于處理器的,則該包由路由器轉(zhuǎn)發(fā)至一個(gè)輸出鏈接。這一轉(zhuǎn)發(fā)由路由器執(zhí)行,而無需處理器的參與。該路由為最短路徑路由。例如,由節(jié)點(diǎn)Q00發(fā)送至節(jié)點(diǎn)Q20的包將穿越柵格鏈接104。任意其他路徑會更長。對于另一個(gè)示例,由節(jié)點(diǎn)Q00發(fā)送至節(jié)點(diǎn)Q11的包將穿越柵格鏈接106和112或穿越柵格鏈接108和110。該路由為自適應(yīng)的路由??梢酝ㄟ^能夠離開節(jié)點(diǎn)的包來選擇柵格鏈接。在前面的示例中,包可以通過柵格106或108離開節(jié)點(diǎn)Q00。對于離開節(jié)點(diǎn)的包,自適應(yīng)的路由允許路由器選擇包的不太繁忙的輸出鏈接,或是基于某些其他標(biāo)準(zhǔn)來選擇輸出鏈接。自適應(yīng)的路由不在包的源節(jié)點(diǎn)處執(zhí)行;自適應(yīng)的路由還在每個(gè)中間節(jié)點(diǎn)處執(zhí)行,包可以在該包的路徑上直通到該包目的地節(jié)點(diǎn)。
類路由可以用于實(shí)現(xiàn)多種類型的消息傳送。這些類型中的一些類型在下述示例中進(jìn)行描述,下述示例將描述類路由的很多細(xì)節(jié)。
例1.基于路徑的多節(jié)點(diǎn)消息傳送分布式存儲器并行計(jì)算機(jī)的網(wǎng)絡(luò)是消息傳送數(shù)據(jù)網(wǎng)絡(luò)的示例。這種計(jì)算機(jī)的每個(gè)節(jié)點(diǎn)具有一個(gè)或多個(gè)運(yùn)行在其本地存儲器上的處理器。利用這種計(jì)算機(jī)的多個(gè)節(jié)點(diǎn)的應(yīng)用程序,通過在節(jié)點(diǎn)之間傳送消息來協(xié)調(diào)它們的操作。這種計(jì)算機(jī)的示例在標(biāo)題為大規(guī)模并行超級計(jì)算機(jī)的臨時(shí)專利申請序列號No.60/271,124中有所描述。在該計(jì)算機(jī)中,每個(gè)單一節(jié)點(diǎn)與網(wǎng)絡(luò)的單一交換器構(gòu)成一對。在該計(jì)算機(jī)中,這些交換器彼此連接作為一三維(3D)環(huán)。因此在該計(jì)算機(jī)中,每個(gè)交換器鏈接六個(gè)其它的交換器。在三維的每個(gè)方向中,這些鏈接沿正方向到一個(gè)交換器,沿負(fù)方向到一個(gè)交換器。每個(gè)交換器通過3維環(huán)上的其(x,y,z)邏輯地址進(jìn)行識別。通過對比,在使用2維環(huán)的計(jì)算機(jī)中,每個(gè)交換器通過其(x,y)邏輯地址進(jìn)行識別。在圖1中,正X方向指向右邊,且正Y方向指向底部。在圖1中,節(jié)點(diǎn)Q00具有邏輯地址(0,0),節(jié)點(diǎn)Q01具有邏輯地址(0,1)等等。由于每個(gè)節(jié)點(diǎn)與單一交換器構(gòu)成一對,因而節(jié)點(diǎn)具有其交換器的地址。通過在包頭中包括用于這種邏輯地址的字段,包可以有效并方便地識別其目的地節(jié)點(diǎn)。沒有類路由,基礎(chǔ)網(wǎng)絡(luò)僅提供單點(diǎn)廣播消息傳送。如果交換器是輸入包的目的地,則將該包提供給本地節(jié)點(diǎn)。否則,將該包放入到指向目的地節(jié)點(diǎn)的鏈接中。
下述為使用類路由實(shí)現(xiàn)多節(jié)點(diǎn)消息傳送的示例。每個(gè)包頭含有用于類值的字段。該值為0或1。每個(gè)交換器都包含有表,該表用于確定,除了通常的包的單點(diǎn)廣播路由,是否將一副本存放在本地節(jié)點(diǎn)。該假設(shè)用于原始的單點(diǎn)廣播消息傳送,當(dāng)路由器將包從輸入鏈接之一轉(zhuǎn)發(fā)到輸出鏈接之一時(shí),處理器不參與。這種假設(shè)可以滿足虛擬直通路由,例如在臨時(shí)專利申請序列號No.60/271,124中實(shí)現(xiàn)的那樣。該假設(shè)用于原始的單點(diǎn)廣播消息傳送,當(dāng)路由器將包從輸入鏈接之一轉(zhuǎn)發(fā)到輸出鏈接之一時(shí),處理器不參與。這種假設(shè)可以通過虛擬直通路由得到滿足,例如在臨時(shí)專利申請序列號No.60/271,124中實(shí)現(xiàn)的那樣。對于類值
,在存放表中的條目為
并分別要求存放該包或不存放該包。該表如下描述。該表僅適用于非其目的地節(jié)點(diǎn)的節(jié)點(diǎn)上的包。其目的地節(jié)點(diǎn)上的包在通常的單點(diǎn)廣播路由中存放。因此具有類值0的包遵守原始的單點(diǎn)廣播消息傳送。具有類值1的包執(zhí)行基于路徑的多節(jié)點(diǎn)消息傳送。
對于不指定該節(jié)點(diǎn)為目的地的包類值 存放值0 01 1基于路徑的多節(jié)點(diǎn)消息傳送可以用來實(shí)現(xiàn)多相多點(diǎn)廣播,如在1994年的,D.K.Panda,S.Singal和P.Prabhakaran的“符合基礎(chǔ)蛀洞路由策略的多目的地消息傳送機(jī)制(Multidestination MessagePassing Mechanism Conforming to Base Wormhole Routing Scheme)”PCRCW’94,LNCS 853,Springer-Verlag,131至145頁,所描述的示例一樣。這里描述的第一個(gè)示例是如圖1所示的3*3環(huán)的從節(jié)點(diǎn)(0,0)到9個(gè)節(jié)點(diǎn)的雙相多點(diǎn)廣播。在第一相中,節(jié)點(diǎn)(0,0)發(fā)送目的地為(0,2)的多節(jié)點(diǎn)消息。在第二相中,第一相的3個(gè)接收者的每一個(gè)同時(shí)發(fā)送多節(jié)點(diǎn)消息。節(jié)點(diǎn)(0,0)發(fā)送到(2,0);節(jié)點(diǎn)(0,1)發(fā)送到(2,1)且節(jié)點(diǎn)(0,2)發(fā)送到(2,2)。在第二相結(jié)束時(shí),2維環(huán)的所有9個(gè)節(jié)點(diǎn)都接收到了廣播消息。
上面的假設(shè)在原始的單點(diǎn)廣播消息傳送中,當(dāng)源節(jié)點(diǎn)和目的地節(jié)點(diǎn)在同一行時(shí),包的路徑沿該行。一行為對于環(huán)或網(wǎng)的除了其中一維的所有維都具有相等值的一組節(jié)點(diǎn)。該假設(shè)由最短路徑路由保證,例如在臨時(shí)專利申請序列號No.60/271,124中實(shí)現(xiàn)的那樣。上述假設(shè)還由在臨時(shí)專利申請中實(shí)現(xiàn)的確定性路由所保證。通過對比,上述假設(shè)不滿足其他處實(shí)現(xiàn)的擁塞避免路由,該路由通過一些隨機(jī)節(jié)點(diǎn)來路由包。
這里描述的第二個(gè)示例為從節(jié)點(diǎn)(0,0,0)到5*5*5立方體的125個(gè)節(jié)點(diǎn)的三相多點(diǎn)廣播,該立方體具有頂角(0,0,0)和(4,4,4)。在第一相中,節(jié)點(diǎn)(0,0,0)發(fā)送目的地為(0,0,4)的多節(jié)點(diǎn)消息。在第二相中,第一相的5個(gè)接收者的每一個(gè)同時(shí)發(fā)送多節(jié)點(diǎn)消息。節(jié)點(diǎn)(0,0,0)發(fā)送到(0,4,0);節(jié)點(diǎn)(0,0,1)發(fā)送到(0,4,1)等。在第三相,第二相的25個(gè)接收者的每一個(gè)同時(shí)發(fā)送多節(jié)點(diǎn)消息。節(jié)點(diǎn)(0,0,0)發(fā)送到(4,0,0);節(jié)點(diǎn)(0,0,1)發(fā)送到(4,0,1)等。在第三相結(jié)束時(shí),立方體的所有125個(gè)節(jié)點(diǎn)都接收到了廣播消息。
上述用于三維立方體的3相多點(diǎn)廣播的示例可以容易地歸納為如下所述。對于從起始節(jié)點(diǎn)發(fā)送到D維立方體的所有節(jié)點(diǎn)的D相多點(diǎn)廣播中,在第一相中,起始節(jié)點(diǎn)發(fā)送多節(jié)點(diǎn)消息到發(fā)送節(jié)點(diǎn)所在行之一中的所有其他節(jié)點(diǎn),在第二相中,第一相的每個(gè)接收者和第一相的發(fā)送者同時(shí)發(fā)送多節(jié)點(diǎn)消息至正交于第一相所在行的一行中的所有其他節(jié)點(diǎn),在第三相中,第二相的每個(gè)接收者和第二相的發(fā)送者同時(shí)發(fā)送多節(jié)點(diǎn)消息至與第一和第二相所在行正交的行中的所有其他節(jié)點(diǎn),更多的相也類似地進(jìn)行,以便在所有相之后,使得立方體中的所有節(jié)點(diǎn)接受到廣播消息。
使用類路由的基于路徑的多節(jié)點(diǎn)消息傳送的實(shí)現(xiàn)提供了超越現(xiàn)有實(shí)現(xiàn)方法的優(yōu)點(diǎn)。例如,特殊的現(xiàn)有實(shí)現(xiàn)方法將存放值放入包中。在這種實(shí)現(xiàn)方法中,包的路徑上的每個(gè)節(jié)點(diǎn)都接收到該包的副本。相反,由于每個(gè)交換器可以在其存放表中具有不同的條目,類路由允許帶有存放條目
的節(jié)點(diǎn)不接收包的副本,即使該節(jié)點(diǎn)位于多節(jié)點(diǎn)包的路徑之上。該表描述如下。例如,具有用于多點(diǎn)廣播的多個(gè)類值,其允許用于多個(gè)多點(diǎn)廣播包,每個(gè)具有不同的一組節(jié)點(diǎn)。
對于不指定該節(jié)點(diǎn)為目的地的包類值 存放值0 01 0例2.發(fā)送不知道接收者的多節(jié)點(diǎn)消息如例1所述,類路由允許帶有類值
存放條目
的節(jié)點(diǎn)不接收包的副本,即使該節(jié)點(diǎn)位于多節(jié)點(diǎn)包的路徑上。這一信息不需要被多節(jié)點(diǎn)包的源節(jié)點(diǎn)所知道。換句話說,類路由允許節(jié)點(diǎn)提供不知道接收者的多節(jié)點(diǎn)包。然而,在例1的網(wǎng)絡(luò)中,有一個(gè)例外,多節(jié)點(diǎn)包的目的地節(jié)點(diǎn)總是會接收該包的副本。因此如果目的地節(jié)點(diǎn)不接收該包的副本,則必須讓源節(jié)點(diǎn)知道這一信息以便它使用另一個(gè)目的地。
例如,假設(shè)節(jié)點(diǎn)(0,0)是最初指定到目的地為節(jié)點(diǎn)(0,2)的多節(jié)點(diǎn)包的源。由于節(jié)點(diǎn)(0,0)到(0,2)是一完整的行,這可以是大小為3*3的環(huán)網(wǎng)絡(luò)中的自然目的地。如果節(jié)點(diǎn)(0,2)不接收副本,則必須讓節(jié)點(diǎn)(0,0)得知。如果節(jié)點(diǎn)(0,0)還知道節(jié)點(diǎn)(0,1)接收副本,則(0,1)可以用作多節(jié)點(diǎn)包的目的地。
為了解決由目的地節(jié)點(diǎn)引起的這一例外,類路由允許每個(gè)交換器具有額外的表,該表確定包的副本是否應(yīng)當(dāng)被存放在目的地節(jié)點(diǎn)上。為了解決上述示例,對于節(jié)點(diǎn)(0,2),在該目的地表中對于類值
的條目為[1,0]。條目0對應(yīng)于類1,導(dǎo)致節(jié)點(diǎn)(0,2)不接收多節(jié)點(diǎn)消息,即使該節(jié)點(diǎn)是目的地。條目1對應(yīng)于類0,允許節(jié)點(diǎn)(0,2)照常接收單點(diǎn)廣播消息。這兩個(gè)表如下所示。
對于指定節(jié)點(diǎn)(0,2)為目的地的包類值 存放值0 1
10對于不指定節(jié)點(diǎn)(0,2)為目的地的包類值 存放值0010在上述示例中,節(jié)點(diǎn)(0,2)不參與具有類值1的多點(diǎn)廣播。
作為對比的例子,節(jié)點(diǎn)(0,1)參與具有類值1的多點(diǎn)廣播。對應(yīng)于節(jié)點(diǎn)(0,1)的表如下所示。
對于指定節(jié)點(diǎn)(0,1)為目的地的包類值 存放值0111對于不指定節(jié)點(diǎn)(0,1)為目的地的包類值 存放值0011例3.窺探(Snooping)假設(shè)例1中的上述網(wǎng)絡(luò),包括其使用類值0用于基礎(chǔ)網(wǎng)絡(luò)的單點(diǎn)廣播消息。節(jié)點(diǎn)可以窺探,并通過使用存放表中對于類值0的條目1獲得并存儲在單點(diǎn)廣播包上通過其交換器傳送的信息。
該表如下所示。在示例中,節(jié)點(diǎn)參與具有類值1的多點(diǎn)廣播。該表只適用于在除了其目的地節(jié)點(diǎn)的節(jié)點(diǎn)上的包。在該示例中,在其目的地節(jié)點(diǎn)上的包與在通常的單點(diǎn)廣播路由中一樣被存放。
對于不指定該節(jié)點(diǎn)為目的地的包類值存放值0 11 1采用這種窺探的示例是為研究網(wǎng)絡(luò)的性能。不進(jìn)行窺探,則只有關(guān)于包何時(shí)在源節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)及何時(shí)從目的地節(jié)點(diǎn)退出網(wǎng)絡(luò)的信息。進(jìn)行窺探,則能夠存在關(guān)于包何時(shí)經(jīng)過該包路徑上的節(jié)點(diǎn)的信息。由于在一對節(jié)點(diǎn)之間可能有多條有效路徑,因此窺探還能夠提供關(guān)于使用了哪一條特定路徑的信息。在一對節(jié)點(diǎn)之間路由多個(gè)有效路徑的示例是自適應(yīng)性路由,如臨時(shí)專利申請序列號No.60/271,124中實(shí)現(xiàn)的那樣。
由于每個(gè)交換器可以在其存放表中具有不同的條目,因而類路由允許任意數(shù)目的節(jié)點(diǎn)被窺探。如果在網(wǎng)絡(luò)中只有一小部分節(jié)點(diǎn)被窺探,則測量結(jié)果為統(tǒng)計(jì)性的采樣。
窺探是使用不特定涉及多點(diǎn)廣播的類路由的示例。
例4.單相多點(diǎn)廣播在單相多點(diǎn)廣播中,通過其中一個(gè)節(jié)點(diǎn)一次將消息注入到節(jié)點(diǎn)中。相反,在多相多點(diǎn)廣播中,可以通過多個(gè)節(jié)點(diǎn)將消息幾次注入到網(wǎng)絡(luò)中。例如,在如例1所示的3*3節(jié)點(diǎn)環(huán)上的多相多點(diǎn)廣播中,通過3個(gè)不同的節(jié)點(diǎn)將消息總共注入1+3=4次。例如,在如例1所示5*5*5節(jié)點(diǎn)環(huán)上的多相多點(diǎn)廣播中,通過25個(gè)不同的節(jié)點(diǎn)將消息總共注入1+5+25=31次。
眾所周知,為了提供單相多點(diǎn)廣播,交換器必須能夠?qū)⑤斎氚鼜?fù)制給多個(gè)輸出鏈接。事實(shí)上,在多相多點(diǎn)廣播中的由節(jié)點(diǎn)執(zhí)行的消息復(fù)制在單相多點(diǎn)廣播中由交換器執(zhí)行。
由類路由提供的對于單相多點(diǎn)廣播的優(yōu)點(diǎn)在于,輸出交換器接收或不接收特定輸入包的副本的有效編碼和解碼。在描述由類路由提供的編碼和解碼策略的簡單示例之后,對該策略與現(xiàn)有策略進(jìn)行比較。
這里描述的第一個(gè)示例是例1中描述的相同的多點(diǎn)廣播,如圖1中描述的從節(jié)點(diǎn)(0,0)到3*3環(huán)的9個(gè)節(jié)點(diǎn)。在例1中為兩相多點(diǎn)廣播;這里為單相多點(diǎn)廣播。這里消息穿過網(wǎng)絡(luò)的模式選擇為類似于例1中的模式。
每個(gè)包頭具有用于類值的字段。該值為0或1。每個(gè)交換器具有一個(gè)表,該表用于確定是否將執(zhí)行通常的包的單點(diǎn)廣播路由,或是否將執(zhí)行單相多點(diǎn)廣播路由的操作。表中的每個(gè)條目為UDXY格式的位字符串。如果在表中條目U為1,則將執(zhí)行通常的單點(diǎn)廣播路由,否則不執(zhí)行。如果D為1,則該包的副本將存放在本地節(jié)點(diǎn)上,否則不存放。如果X為1,則該包的副本將離開正X鏈接,否則不離開。如果Y為1,則該包的副本將離開正Y鏈接,否則不離開。在負(fù)X和Y方向上的兩個(gè)鏈接與該示例不相關(guān),這里為了簡化起見將其忽略。
對于類值0,表中的條目在所有節(jié)點(diǎn)上為1000。因此帶有類值0的包遵守最初的單點(diǎn)廣播消息傳送。對于類值1,表中的條目依賴于網(wǎng)絡(luò)中交換器的位置。每個(gè)交換器上的條目模仿在例1中的多相多點(diǎn)廣播中相應(yīng)節(jié)點(diǎn)的操作。
在每個(gè)節(jié)點(diǎn)上,對于所有進(jìn)入該節(jié)點(diǎn)的包都遵守該表。如果包具有類值0,則UDXY=1000表示該包為單點(diǎn)廣播包,則只檢驗(yàn)該包的目的地。
對于類值1,交換器(0,0)具有條目0011。其假設(shè)多點(diǎn)廣播的源節(jié)點(diǎn)不需要另一個(gè)副本。節(jié)點(diǎn)(0,0)的表如下所示。
對于節(jié)點(diǎn)(0,0)上的包類值 UDXY值0 10001 0011
對于3*3環(huán)中的其他交換器繼續(xù)類值1,交換器(0,1)具有條目0111。四個(gè)交換器(0,2)、(1,0)、(1,1)和(1,2)具有條目0101。三個(gè)交換器(2,0)、(2,1)和(2,2)具有條目0100。上述是對于使用類1的多點(diǎn)廣播示例所需信息的完整編碼。簡而言之,具有類值0的包遵守最初的單點(diǎn)廣播消息傳送。來源于節(jié)點(diǎn)(0,0)具有類值1的包執(zhí)行單相多點(diǎn)廣播路由。
上述每個(gè)節(jié)點(diǎn)上對于來自節(jié)點(diǎn)(0,0)的使用類1的多點(diǎn)廣播的UDXY值如圖3所示。在每個(gè)節(jié)點(diǎn)上,如果D=0,即如果沒有包的副本存放在該節(jié)點(diǎn)上,則環(huán)為開路。在每個(gè)節(jié)點(diǎn)上,如果D=1,即如果有包的副本存放在該節(jié)點(diǎn)上,則環(huán)為閉路。在每個(gè)節(jié)點(diǎn)上,如果X=1,即如果包的副本將離開正X鏈接,則在正X方向上有個(gè)箭頭。在每個(gè)節(jié)點(diǎn)上,如果Y=1,即包的副本將離開正Y鏈接,在正Y方向上有個(gè)箭頭。
這里描述的第二個(gè)示例是例1中描述的相同的多點(diǎn)廣播,即從節(jié)點(diǎn)(0,0,0)到具有頂角(0,0,0)和(4,4,4)的5*5*5立方體的125個(gè)節(jié)點(diǎn)。在例1中其為三相多點(diǎn)廣播;這里其為單相多點(diǎn)廣播。這里消息穿過網(wǎng)絡(luò)的模式選擇為類似于例1中的模式。
每個(gè)包頭具有用于類值的字段。該值為0或1。每個(gè)交換器具有表,該表用于決定是否將執(zhí)行通常的包的單點(diǎn)廣播路由,或是否將執(zhí)行單相多點(diǎn)廣播路由的操作。表中的每個(gè)條目為UDXYZ格式的位字符串。如果在表中條目U為1,則執(zhí)行通常的單點(diǎn)廣播路由,否則不執(zhí)行。如果D為1,則該包的副本將存放在本地節(jié)點(diǎn)上,否則不存放。如果X為1,則該包的副本將離開正X鏈接,否則不離開。類似地對于位Y和Z。在負(fù)X、Y和Z方向上的三個(gè)鏈接與該示例不相關(guān),這里為了簡化起見將其忽略。
對于類值0,表中的條目在所有節(jié)點(diǎn)上為10000。因此帶有類值0的包遵守最初的單點(diǎn)廣播消息傳送。對于類值1,表中的條目依賴于網(wǎng)絡(luò)中交換器的位置。每個(gè)交換器上的條目模仿在例1中的多相多點(diǎn)廣播中相應(yīng)節(jié)點(diǎn)的操作。
對于類值1,交換器(0,0,0)具有條目00111。其假設(shè)多點(diǎn)廣播的源節(jié)點(diǎn)不需要另一個(gè)副本。三個(gè)交換器(0,0,1)到(0,0,3)具有條目01111。交換器(0,0,4)具有條目01110。在具有頂角(0,1,0)、(0,1,4)、(0,3,0)和(0,3,4)的x=0平面上的十五個(gè)交換器具有條目01110。五個(gè)交換器(0,4,0)到(0,4,4)具有條目01100。具有頂角(1,0,0)、(1,0,4)、(3,0,0)和(3,0,4)的立方體的75個(gè)交換器具有條目01100。在具有頂角(4,0,0)、(4,0,4)、(4,4,0)和(4,4,4)的x=4平面上的25個(gè)交換器具有條目01000。上述是采用類1的多點(diǎn)廣播示例所需信息的完整編碼。簡而言之,具有類值0的包遵守最初的單點(diǎn)廣播消息發(fā)送。來源于節(jié)點(diǎn)(0,0,0)的具有類值1的包執(zhí)行單相多點(diǎn)廣播路由。
在上述用于單相多點(diǎn)廣播的類路由示例中,UDXYZ位字符串決定包將被復(fù)制到哪個(gè)輸出端口。類似的位字符串用于一些現(xiàn)有的單相多點(diǎn)廣播的實(shí)現(xiàn)方法中。在2001年5月出版的R.Sivaram,R.Kesavan,D.K.Panda,C.B.Stunkel的“用于不規(guī)則網(wǎng)絡(luò)中的有效多點(diǎn)廣播的構(gòu)架支持(Architectural Support for Efficient Multicasting inIrregular Networks)”,IEEE Trans.On Par.And Dist.System,第12卷(Vol.12),第5期(No.5)中描述了一個(gè)示例。另一個(gè)示例在專利號為US5333279具有數(shù)據(jù)廣播的自定時(shí)網(wǎng)絡(luò)路由芯片(Self-timedmesh routing chip with data broadcasting),D.Dunning的專利中描述了。在現(xiàn)有的實(shí)現(xiàn)方法中,對于每個(gè)交換器的類似于上述UDXYZ的位字符串位于包頭中。相反,在上述類路由的實(shí)現(xiàn)方法中,包頭僅包括用于每個(gè)交換器以在表中查找UDXYZ條目的類值。
上述單相多點(diǎn)廣播的類路由實(shí)現(xiàn)方法在某些方面不如這些現(xiàn)有的實(shí)現(xiàn)方法通用,但是在某些方面類路由更加有效。例如,在包頭中,用于類值的字段比用于每個(gè)交換器的位字符串的字段更小。在上述示例中,類值為0或1,因此可以存儲在頭中的一位字段中。相反,上述UDXYZ的位字符串在頭中需要5位字段。而且由于對于UDXYZ不同的交換器有不同的值,因此將需要用于UDXYZ值的多個(gè)字段。由于在頭中越小的字段消耗環(huán)網(wǎng)絡(luò)中越少的物理帶寬,并給應(yīng)用程序數(shù)據(jù)留出更多的帶寬,因此它更有效。由于在該包能被轉(zhuǎn)發(fā)之前,通常在交換器處,整個(gè)頭必須被接收并檢查錯(cuò)誤,因此更小的字段還允許更小的延遲。
例5.來自網(wǎng)絡(luò)中任意節(jié)點(diǎn)的單相多點(diǎn)廣播例4所示的使用類路由的單相多點(diǎn)廣播允許單一節(jié)點(diǎn)作為消息來源。在2維3*3環(huán)的示例中,源為節(jié)點(diǎn)(0,0)。在3維5*5*5環(huán)的示例中,源為節(jié)點(diǎn)(0,0,0)。我們將其命名為異構(gòu)單相多點(diǎn)廣播,這是由于類路由表在不同的節(jié)點(diǎn)上具有不同的值。該表只用于輸入鏈接的其中之一。
類路由還可以用來實(shí)現(xiàn)單相多點(diǎn)廣播,其中源可以為網(wǎng)絡(luò)中的任意節(jié)點(diǎn)。我們將其命名為同構(gòu)單相多點(diǎn)廣播,這些因?yàn)樵谥T如環(huán)的同構(gòu)網(wǎng)絡(luò)上,類路由表在每個(gè)節(jié)點(diǎn)上都具有相同的值。在單一節(jié)點(diǎn)上,類路由表在不同輸入鏈接上具有不同的值。
這里描述的第一個(gè)示例是如例4中描述的相同的多點(diǎn)廣播,即圖1中所示的從節(jié)點(diǎn)(0,0)到3*3環(huán)的9個(gè)節(jié)點(diǎn)。在例4中其為異構(gòu)單相多點(diǎn)廣播;這里為同構(gòu)單相多點(diǎn)廣播。這里消息穿過網(wǎng)絡(luò)的模式選擇為類似于例4中的模式。
在例4的異構(gòu)單相多點(diǎn)廣播中,通過任意一個(gè)輸入鏈接到達(dá)一個(gè)節(jié)點(diǎn)的包,使用相同的表基于類值來確定由包上的交換器所執(zhí)行的操作。如例4中所示,對于異構(gòu)多點(diǎn)廣播,不同的節(jié)點(diǎn)在表中具有不同的值。相反,在該例中的同構(gòu)單相多點(diǎn)廣播中,每個(gè)交換器上的每個(gè)輸入鏈接具有用于確定要在輸入包上執(zhí)行的操作的表。如下所示,對于同構(gòu)多點(diǎn)廣播,不同的節(jié)點(diǎn)在表中具有相同的值。
每個(gè)包頭具有用于類值的字段。該值為0或1。每個(gè)交換器上的每個(gè)輸入鏈接具有用于確定是否執(zhí)行包的通常單點(diǎn)廣播路由或是否執(zhí)行單相多點(diǎn)廣播路由的操作的表。表中的每個(gè)條目為UDXY格式的位字符串。如果在表中條目U為1,則執(zhí)行通常的單點(diǎn)廣播路由,否則不執(zhí)行。如果D為1,則該包的副本將存放在本地節(jié)點(diǎn)上,否則不存放。如果X為1且包的X-目的地不是節(jié)點(diǎn)的X-位置,則該包的副本將離開正X鏈接,否則不離開。如果Y為1且包的Y-目的地不是節(jié)點(diǎn)的Y-位置,則該包的副本將離開正Y鏈接,否則不離開。對于每個(gè)節(jié)點(diǎn),在負(fù)X和Y方向上的兩個(gè)輸出鏈接與該示例不相關(guān),這里為了簡化起見將其忽略。對于每個(gè)節(jié)點(diǎn),在負(fù)X和Y方向上的兩個(gè)輸入鏈接與該示例不相關(guān),這里為了簡化起見將其忽略。
如上所述,確定包的X-目的地和Y-目的地是為了確定包上所執(zhí)行的操作。因此對于從節(jié)點(diǎn)(0,0)廣播至3*3環(huán)的其他8個(gè)節(jié)點(diǎn),該包必須具有目的地(3,3)。
通常對于該例中的廣播,包的目的地是在正X和正Y方向上距離廣播源最遠(yuǎn)的節(jié)點(diǎn)。例如,對于從節(jié)點(diǎn)(1,0)廣播至3*3環(huán)的其他8個(gè)節(jié)點(diǎn),該包必須具有目的地(0,2)。
對于類值0,表中的條目在所有表上的所有節(jié)點(diǎn)上為1000。因此帶有類值0的包遵守最初的單點(diǎn)廣播消息傳送。對于類值1,表中的條目依賴于該包到達(dá)哪個(gè)輸入鏈接。該表如下所示。每個(gè)輸入鏈接的條目使得所產(chǎn)生的同構(gòu)多點(diǎn)廣播模仿例4中的異構(gòu)多點(diǎn)廣播。
對于輸入到來自負(fù)x方向上的鏈接的包類值 UDXY值0 10001 0111對于輸入到來自負(fù)y方向上的鏈接的包類值 UDXY值0 10001 0011
上述為使用類1的多點(diǎn)廣播示例所需的完整的信息編碼。簡而言之,具有類值0的包遵守最初的單點(diǎn)廣播消息傳送。具有類值1的包執(zhí)行同構(gòu)單相多點(diǎn)廣播路由。
給出上述2維環(huán)的示例后,該項(xiàng)技術(shù)可以很容易擴(kuò)展到其他網(wǎng)絡(luò)。上述示例中的類1可以認(rèn)為在網(wǎng)絡(luò)的正X和正Y象限提供多點(diǎn)廣播。三個(gè)附加的相似類2、3和4能夠提供在其他三個(gè)象限的多點(diǎn)廣播負(fù)X和正Y;正X和負(fù)Y;以及負(fù)X和負(fù)Y。這四個(gè)類允許網(wǎng)絡(luò)中的任意節(jié)點(diǎn)使用四個(gè)多點(diǎn)廣播來有效地將包廣播至網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。在環(huán)上使用相同的多點(diǎn)廣播技術(shù)可以是上述的單類技術(shù)速度的兩倍。兩倍快的速度是因?yàn)樵谠垂?jié)點(diǎn)和目的地節(jié)點(diǎn)之間的距離減半。由于環(huán)上的任意節(jié)點(diǎn)可以視為網(wǎng)絡(luò)中間的節(jié)點(diǎn),因此該項(xiàng)技術(shù)可行。
上述技術(shù)可以很容易推廣為D維網(wǎng)絡(luò)或環(huán)。在D維網(wǎng)絡(luò)或環(huán)上,2^D類網(wǎng)絡(luò)或環(huán)中的任意節(jié)點(diǎn)使用2^D個(gè)多點(diǎn)廣播,以便有效地將包廣播至網(wǎng)絡(luò)或環(huán)中所有其他的節(jié)點(diǎn)。在環(huán)上,替代的至所有節(jié)點(diǎn)的單一廣播需要的時(shí)間是完成在環(huán)上2^D個(gè)多點(diǎn)廣播的兩倍長,這是由于對于單一廣播,在源節(jié)點(diǎn)和最遠(yuǎn)的目的地之間的距離加倍。
對類表的改進(jìn)和替換代替或除了使用交換器上的表,類值以及包的可能的其他特征可以輸入到算法中。如果表?xiàng)l目對于所有類值都相同,則使用算法會更好。如果交換器需要在表所要求的沖突操作之間作決定,則可以用不同表的相對優(yōu)先權(quán)進(jìn)行編程。
使用基于類的多點(diǎn)廣播來創(chuàng)建其他類在例5中,類值0用于通常的單點(diǎn)廣播,而類值1可以用于廣播至環(huán)中的所有節(jié)點(diǎn)。建立了廣播機(jī)制后,它可用于廣播任意數(shù)據(jù)。例如,該數(shù)據(jù)可以是其他類的類表?xiàng)l目。例如,例5識別用于額外的類2、3和4的需要。一旦通過任何方式建立了類1上的多點(diǎn)廣播,類1可以用來創(chuàng)建類2、3和4。通常,一旦建立了特定類值上的通信,或者建立了值,該通信可以用于建立在其他類值上的通信。
例7.使用類函數(shù)的密集矩陣計(jì)算本發(fā)明還使用環(huán)計(jì)算機(jī)網(wǎng)絡(luò)上的類函數(shù)來進(jìn)行密集矩陣計(jì)算。通過使用在環(huán)計(jì)算機(jī)網(wǎng)絡(luò)上實(shí)現(xiàn)類函數(shù)的硬件,可以進(jìn)行高性能密集矩陣計(jì)算。
類函數(shù)是用在該示例中用于基于類網(wǎng)絡(luò)路由的多點(diǎn)廣播的名稱。通常,多點(diǎn)廣播是對同行的其他節(jié)點(diǎn)。因此,通常對于類路由足以實(shí)現(xiàn)單相的基于路徑的多節(jié)點(diǎn)消息傳送,其在例1中描述。當(dāng)多點(diǎn)廣播不是對行,則它可以對平面,立方體或環(huán)或網(wǎng)絡(luò)的其他高維子集。在這里,最佳性能要求類路由實(shí)現(xiàn)更復(fù)雜的廣播,諸如例5中描述的單相多點(diǎn)廣播。
本發(fā)明在分布式存儲器并行超級計(jì)算機(jī)上用硬件類函數(shù)功能使矩陣變換算法執(zhí)行得更快。這通過利用密集矩陣變換的通信模式可以由硬件類函數(shù)提供這一事實(shí)來實(shí)現(xiàn)。這導(dǎo)致了更快的執(zhí)行時(shí)間。
這里討論的算法在本領(lǐng)域中是公知的,例如,F(xiàn)ORTRAN中的數(shù)值方法,科學(xué)計(jì)算領(lǐng)域(NUMERICAL RECIPES IN FORTRAN,THE ART OFSCIENTIFIC COMPUTING),第二版,作者是William H.Press等,特別在27頁及其之后描述的內(nèi)容。
圖4描述了4×4柵格的處理器,其中每個(gè)處理器由其行、列數(shù)字標(biāo)注。例如在行2列3中的處理器為p(2,3)。還示出了列i和行i(陰影區(qū)域)以及通過類函數(shù)發(fā)送的列/行的方向。
可以使用標(biāo)準(zhǔn)算法,例如高斯-若當(dāng)(Gauss-Jordan)消去以及其他方法來變換密集線性矩陣。通常,要求的I/O為特殊一對多變化,其很好地適用于具有硬件類函數(shù)功能的并行超級計(jì)算機(jī)的通信功能??梢岳妙惡瘮?shù)來將數(shù)據(jù)多點(diǎn)廣播至機(jī)器的一整行或機(jī)器表面。
用于本發(fā)明描述的一些術(shù)語解釋如下高斯-若當(dāng)算法不選主元的高斯-若當(dāng)算法的內(nèi)核在下面給出。初始b為單位矩陣,而a為進(jìn)行變換計(jì)算的矩陣。
do i=1,Ndo j=i,Ndo k=1,N;(k不等于i)b(k,j)=b(k,j)-[a(k,i)/a(i,i)]*b(i,j)a(k,j)=a(k,j)-[a(k,i)/a(i,i)]*a(i,j)enddoenddoenddo方程1分布式存儲器并行超級計(jì)算機(jī)這種計(jì)算機(jī)包括多個(gè)節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)具有一個(gè)或多個(gè)在本地存儲器上操作的處理器。節(jié)點(diǎn)通常連接為d維柵格,且它們通過這些柵格鏈接通信。如果柵格為帶有P×P個(gè)處理器的2維,則N×N矩陣可以被劃分使得其L×L塊駐留在每個(gè)節(jié)點(diǎn)上(L=N/P)。如果該機(jī)器不連接為2維柵格,則通過適當(dāng)“折疊(folding)”該矩陣到柵格上,問題經(jīng)常到映射到機(jī)器上。不失一般性并為了使本發(fā)明的表達(dá)簡單,處理器柵格通常假設(shè)為2維。
硬件類函數(shù)類函數(shù)為多點(diǎn)廣播的硬件實(shí)現(xiàn)。假設(shè)處理器p(1,1)(這里該數(shù)值表示處理器在柵格上的位置,還參見圖4)想要發(fā)送相同的數(shù)據(jù)包給處理器p(1,2)、p(1,3)和p(1,4)。通常這一操作通過首先發(fā)送數(shù)據(jù)至處理器p(1,2)來完成。一旦數(shù)據(jù)到達(dá)了p(1,2),軟件路由讀出該數(shù)據(jù)并將其存在存儲器中。接著p(1,2)從存儲器中讀出數(shù)據(jù)并將數(shù)據(jù)發(fā)送至p(1,3)等。其問題為,它消耗了很長時(shí)間來全部接收數(shù)據(jù)包到存儲器中并再次發(fā)送。如果建立了硬件使得到達(dá)p(1,2)的數(shù)據(jù)包同時(shí)存儲在p(1,2)存儲器中,并立即發(fā)送到p(1,3),則延遲可以大大降低。p(1,1)的硬件函數(shù)發(fā)送數(shù)據(jù)包到p(1,4),同時(shí)該包存放在其經(jīng)過的中間處理器的存儲器中,這稱為硬件類函數(shù)。
本發(fā)明本發(fā)明利用了密集矩陣變換(例如使用高斯-若當(dāng)法)的通信模式可以使用類函數(shù)這一事實(shí)。這可以從描述高斯-若當(dāng)算法的方程1中看出a(i,i)通過一些其他方法通信,例如全局廣播。接著對于b(k,j)和a(k,j)的方程右手邊包含只具有一個(gè)不同于(k,j)但不是(a(k,i)、a(i,j)和b(i,j))的索引的元素。類函數(shù)通信可以用來穿過相關(guān)處理器發(fā)送這種元素。
例如,為了對給定的行k計(jì)算b(k,j)(1<j<N),需要a(k,i)被包含行k的所有處理器所知。因此必須沿包含矩陣行k的處理器行發(fā)送a(k,i)。這可以使用類函數(shù)性實(shí)現(xiàn)。如同已經(jīng)討論的那樣,這導(dǎo)致總通信時(shí)間的大大降低。
這完成了對本發(fā)明的意圖描述。該意圖為高斯-若當(dāng)算法描述但不限于該算法。例如該意圖適用于“帶有選主元的高斯-若當(dāng)(Gauss-Jordan with Pivoting)”、“帶有回帶的高斯消去(GaussianElimination Back Substitution)”以及“LU分解(LU Decomposition)”算法。
該意圖的實(shí)現(xiàn)(采用高斯-若當(dāng)算法)以及所有細(xì)節(jié)在下面作為示例進(jìn)行描述。為了使該示例易于理解,選擇最簡單的實(shí)現(xiàn)方法。更復(fù)雜的導(dǎo)致涉及更大數(shù)據(jù)包通信的實(shí)現(xiàn)方法也可以作出。依賴于處理器柵格大小和矩陣大小,可以需要更大尺寸的包,由于它們可以通過最小化延遲進(jìn)一步提高性能。然而,這并不影響該意圖的前提。
示例算法高斯-若當(dāng)算法用于發(fā)現(xiàn)在P×P的柵格節(jié)點(diǎn)上均勻分布的大小為N×N的密集矩陣的矩陣變換。因此每個(gè)節(jié)點(diǎn)在其存儲器中具有矩陣的L×L塊(L=N/P)。硬件類函數(shù)用于穿過行和列來多點(diǎn)廣播數(shù)據(jù)。對于該算法的直觀圖片請參看上面的圖1。
對于每個(gè)1<i<N1)使用類函數(shù)發(fā)送到a的左和右列i(a(k,i),1<k<N)2)用a(i,i)換算(scale)行i的元素a,b3)用類函數(shù)向上并向下發(fā)送a和b的新行i(a(i,j)和b(i,j),1<j<N)4)現(xiàn)在所有處理器已經(jīng)具有必要的元素用來對列i做標(biāo)準(zhǔn)高斯-若當(dāng)步驟。在列i的末尾和單位矩陣的列i相同。
重復(fù)示例結(jié)尾盡管這里詳細(xì)描述了用于類網(wǎng)絡(luò)路由的本發(fā)明的幾個(gè)實(shí)施例和變化,很明顯本發(fā)明的公開和示教將對本領(lǐng)域的技術(shù)人員暗示出多種另外的設(shè)計(jì)。
權(quán)利要求
1.一種在網(wǎng)絡(luò)中的類網(wǎng)絡(luò)路由方法,允許位于網(wǎng)絡(luò)節(jié)點(diǎn)上的計(jì)算處理器的網(wǎng)絡(luò)中的計(jì)算處理器將消息多點(diǎn)廣播至網(wǎng)絡(luò)中多個(gè)其他計(jì)算處理器,包括將消息分成通過網(wǎng)絡(luò)傳送的一個(gè)或多個(gè)消息包;在消息包上添加類值;在網(wǎng)絡(luò)中的每個(gè)交換器處,使用類值作為至少一個(gè)表的索引或是一算法的輸入,該表所存儲的值或該算法所產(chǎn)生的值確定由消息包上的交換器執(zhí)行的操作。
2.權(quán)利要求1的方法,包括提供類值,該類值用來為通過網(wǎng)絡(luò)進(jìn)行的消息包的多相多點(diǎn)廣播,確定基于路徑的多節(jié)點(diǎn)消息傳送的交換器操作,以確定本地節(jié)點(diǎn)是否將在該本地節(jié)點(diǎn)上保存該消息包的副本。
3.權(quán)利要求2的方法,包括提供類值以執(zhí)行多節(jié)點(diǎn)消息傳送;為每個(gè)交換器提供表,以確定該消息包的副本是否存放在該本地節(jié)點(diǎn)上。
4.權(quán)利要求1的方法,包括提供類值,該類值確定消息包到網(wǎng)絡(luò)中的多個(gè)目的地節(jié)點(diǎn)的多目的地消息傳送的交換器操作。
5.權(quán)利要求1的方法,其特征在于交換器將輸入包復(fù)制到多個(gè)輸出鏈接上。
6.權(quán)利要求5的方法,包括為類路由表提供不同輸入鏈接的不同值。
7.權(quán)利要求4的方法,其特征在于消息包為多點(diǎn)廣播到網(wǎng)絡(luò)的一整行或表面。
8.權(quán)利要求1的方法,包括在具有硬件類函數(shù)多點(diǎn)廣播功能的分布式存儲器并行計(jì)算機(jī)的網(wǎng)絡(luò)上執(zhí)行密集矩陣變換算法,其中硬件類函數(shù)多點(diǎn)廣播功能同時(shí)在該消息包到達(dá)的存儲器中存儲消息包,并立即發(fā)送該消息包至一個(gè)或多個(gè)其他節(jié)點(diǎn),同時(shí)將該消息包存儲在存儲器中,使得密集矩陣變換算法的通信模式由硬件類函數(shù)多點(diǎn)廣播功能提供,以最小化通信延遲。
9.權(quán)利要求1的方法,其特征在于該網(wǎng)絡(luò)包括分布式存儲器并行計(jì)算機(jī)網(wǎng)絡(luò);為計(jì)算機(jī)網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn)提供一個(gè)或多個(gè)在本地存儲器上操作的處理器;通過使用類路由來協(xié)調(diào)計(jì)算機(jī)的多個(gè)節(jié)點(diǎn)的操作,以便在多個(gè)節(jié)點(diǎn)之間傳送消息。
10.權(quán)利要求9的方法,包括為網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn)配一個(gè)交換器;連接這些交換器以形成三維環(huán),其中每個(gè)交換器鏈接到六個(gè)其他交換器,這些鏈接連接到三維的每一維的正方向上的交換器,并連接到三維的每一維的負(fù)方向上的交換器;通過環(huán)上的x、y、z邏輯地址識別每個(gè)交換器,其中每個(gè)節(jié)點(diǎn)具有其交換器的地址;包括用于包頭中邏輯地址的字段值,以使該包能識別目的地節(jié)點(diǎn)。
11.權(quán)利要求1的方法,包括使用從源節(jié)點(diǎn)到D維立方體的所有節(jié)點(diǎn)的D相多點(diǎn)廣播,其中在第一相中,源節(jié)點(diǎn)向發(fā)送節(jié)點(diǎn)的行中的一行的所有其他節(jié)點(diǎn)發(fā)送多節(jié)點(diǎn)消息,在第二相中,第一相的每個(gè)接收者和第一相的每個(gè)發(fā)送者向正交于第一相的行的行中的所有其他節(jié)點(diǎn)同時(shí)發(fā)送多節(jié)點(diǎn)消息,在第三相中,第二相的每個(gè)接收者和第二相的每個(gè)發(fā)送者向正交于第一和第二相的行的行中的所有其他節(jié)點(diǎn)同時(shí)發(fā)送多節(jié)點(diǎn)消息,后面的相也一樣,使得立方體的所有節(jié)點(diǎn)在所有相之后接收到廣播消息。
12.權(quán)利要求1的方法,包括為每個(gè)交換器提供具有相關(guān)類值的表,這些類值確定消息包的副本是否存放在目的地節(jié)點(diǎn)上。
13.權(quán)利要求1的方法,用于D維網(wǎng)絡(luò),包括提供2^D個(gè)類值用于在每個(gè)2^D方向上的多點(diǎn)廣播,以允許網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)使用2^D個(gè)多點(diǎn)廣播來有效地將包廣播至網(wǎng)絡(luò)中所有其他節(jié)點(diǎn)。
14.權(quán)利要求1的方法,包括提供類值,該類值確定通過網(wǎng)絡(luò)將消息包傳送到單一目的地節(jié)點(diǎn)的單點(diǎn)廣播的交換器操作。
15.權(quán)利要求1的方法,包括提供類值,以使得節(jié)點(diǎn)獲得并存儲通過其交換器傳送的信息包,以提供在網(wǎng)絡(luò)執(zhí)行上的信息。
16.權(quán)利要求11的方法,包括提供類值以確定該信息包的副本是否離開X鏈接,是否離開Y鏈接,并是否離開Z鏈接等D維中的其他鏈接。
17.權(quán)利要求1的方法,包括提供不同的表并為不同的表提供優(yōu)先權(quán),以使得交換器在不同表指示的沖突操作之間做確定。
18.權(quán)利要求1的方法,包括使用類值作為到算法的輸入,用于確定交換器的交換器操作。
19.權(quán)利要求1的方法,包括使用基于類的多點(diǎn)廣播以創(chuàng)建其他類,使得用于特定類值的表的內(nèi)容通過使用另一個(gè)類值來確定。
全文摘要
在諸如在其節(jié)點(diǎn)(Q00-Q22)上包括多個(gè)并行計(jì)算處理器的計(jì)算機(jī)網(wǎng)絡(luò)的網(wǎng)絡(luò)中實(shí)現(xiàn)類網(wǎng)絡(luò)路由。類網(wǎng)絡(luò)路由允許計(jì)算處理器將消息廣播至計(jì)算機(jī)網(wǎng)絡(luò)中一范圍(一個(gè)或多個(gè))的其他計(jì)算處理器,諸如列或行中的處理器。通常這類操作要求將單獨(dú)的消息發(fā)送至每個(gè)處理器。采用根據(jù)本發(fā)明的類網(wǎng)絡(luò)路由,一條消息就已足夠,這通常減少了網(wǎng)絡(luò)中的消息總數(shù)以及進(jìn)行廣播的延遲。類網(wǎng)絡(luò)路由還適用于帶有硬件類函數(shù)(多點(diǎn)廣播)功能的分布式存儲器并行超級計(jì)算機(jī)(圖1)上的密集矩陣變換算法。這通過利用密集矩陣變換的通信模式可以通過硬件類函數(shù)提供這一事實(shí)來實(shí)現(xiàn),這導(dǎo)致了更快的執(zhí)行時(shí)間。
文檔編號G06F13/24GK1493128SQ02805378
公開日2004年4月28日 申請日期2002年2月25日 優(yōu)先權(quán)日2001年2月24日
發(fā)明者蓋恩V·班諾特, 蓋恩V 班諾特, 斯A 布盧姆里奇, 馬賽厄斯A·布盧姆里奇, た鋪賾人, 陳東, ぜ永, 保羅W·科特尤斯, ぜ幟放僚, 艾倫G·加拉, 海德伯格, 馬克E·賈姆帕帕, 德D 斯坦馬徹-伯羅, 菲利普·海德伯格, に , 伯克哈德D·斯坦馬徹-伯羅, 托德E·塔肯, 斯M 弗拉納斯, 帕夫羅斯M·弗拉納斯 申請人:國際商業(yè)機(jī)器公司