具有散布處理器DMA-FIFO的處理系統(tǒng)技術(shù)領(lǐng)域本發(fā)明涉及計(jì)算機(jī)系統(tǒng)和數(shù)字信號處理器(DSP),更特別地,涉及多處理器系統(tǒng)。
背景技術(shù):以加快的速度執(zhí)行軟件任務(wù)的需求產(chǎn)生了對并行計(jì)算的需求。并行計(jì)算可以加速諸如電信、遙感、雷達(dá)、聲納、視頻、影院和醫(yī)療成像等之類的應(yīng)用中的多個復(fù)雜信號的處理。并行計(jì)算還可以提供更大的計(jì)算吞吐量并且可以克服串行計(jì)算方法的某些限制。計(jì)算系統(tǒng)的能力可以通過通常針對一組指定測試算法的性能度量來比較。所關(guān)注的主要性能度量一直為每秒計(jì)算量。但是,對于電池供電的或散熱受限的裝備,把每秒計(jì)算量除以能耗的度量可能更優(yōu)選。在理論上考慮,并行計(jì)算機(jī)或信號處理器可以由多個處理器、多個存儲器以及一個或更多個互連通信網(wǎng)絡(luò)組成。這些部件已經(jīng)組合在論述并行處理器計(jì)算也稱為多重處理的文獻(xiàn)中介紹的許多不同的拓?fù)浣Y(jié)構(gòu)中。所有這些部件由于與導(dǎo)體跡線(電線)的充放電有關(guān)的內(nèi)部延遲以及傳輸線效應(yīng)而具有輸入到輸出的等待時間(latency),其中所述傳輸線效應(yīng)之一是信號不可能行進(jìn)得比光速快。因此,更小的部件相比于體形更大的部件一般呈現(xiàn)更短的等待時間,并且具有更少部件的系統(tǒng)相比于具有更多計(jì)算部件的系統(tǒng)將呈現(xiàn)更短的平均等待時間。盡管系統(tǒng)中的更多部件可能增加平均等待時間,但是存在著布置計(jì)算以利用相鄰元件之間的短等待時間的通信的技術(shù),諸如流水線和脈動處理(systolicprocessing)。近年來,在集成電路制造上的進(jìn)展使得可以制作日益小型化的并行計(jì)算機(jī)部件。通過小型化,部件以更低的功耗、更高的速度和更短的等待時間運(yùn)行。因此數(shù)百個處理元件(PE)和支持存儲器(SM)連同高帶寬互連網(wǎng)絡(luò)(IN)可以被裝配在單個多處理器的集成電路(IC)芯片上??梢杂眠@種多處理器芯片構(gòu)建各種各樣的并行計(jì)算機(jī)系統(tǒng),范圍從使用部分芯片的小系統(tǒng)到包括高速高容量存儲器芯片的多芯片系統(tǒng)。諸如計(jì)算機(jī)、數(shù)字信號處理器(DSP)和封閉裝備中所嵌入的系統(tǒng)之類的數(shù)字電子系統(tǒng)越來越多地采用一個或更多個多處理器陣列(multi-processorarray,MPA)。MPA可以寬松地定義為多個處理元件(PE)、支持存儲器(SM)和高帶寬互連網(wǎng)絡(luò)(IN)。如本文所使用的,術(shù)語“處理元件”是指處理器或者中央處理器(CPU)、微處理器、或處理器內(nèi)核。MPA中的陣列一詞在其最寬泛的意義上用來意指由網(wǎng)絡(luò)互連的多個計(jì)算單元(每個都包含處理和存儲器資源),其中所述網(wǎng)絡(luò)具有在包括圓形維度(圈或環(huán))的一個、二個、三個或更多個維度中可用的連接。注意,更高維度的MPA可以映射到具有更少維度的制造介質(zhì)上。例如,具有四維(4D)超立方體形狀的MPA可以映射到硅集成電路(IC)芯片的3D堆疊上,或者映射到單個2D芯片或甚至計(jì)算單元的1D線上。低維度的MPA也可以映射到更高維度的介質(zhì)。例如,計(jì)算單元的1D線可以以蜿蜒的形狀布置在IC芯片的2D平面上,或者繞進(jìn)芯片的3D堆疊中。MPA可以包含多種類型的計(jì)算單元以及處理器和存儲器的散布的布置。在寬泛意義上,MPA還包括MPA的層次或嵌套布置,尤其是由互連的IC芯片組成的MPA,其中IC芯片包含也可以具有更深的層次結(jié)構(gòu)的一個或更多個MPA。一般來說,用于計(jì)算機(jī)和數(shù)字信號處理器(DSP)的存儲器按這樣的層次組織:頂部是快速存儲器,層次向下每級是更慢卻更高容量的存儲器。在MPA中,在層次頂部的支持存儲器位于每個PE附近。每個支持存儲器可以專門只保持指令或只保持?jǐn)?shù)據(jù)。特定PE的支持存儲器可以對該P(yáng)E是私有的或者與其他PE共享。存儲器層次再向下可以具有更大的共享存儲器,該共享存儲器典型地由半導(dǎo)體同步動態(tài)隨機(jī)存取存儲器(SDRAM)組成,SDRAM具有比與每個PE相鄰的支持存儲器的位容量大許多倍的位容量。存儲器層次再向下是閃存、磁盤和光盤。如上所述,多處理器陣列(MPA)可以包括處理元件(PE)、支持存儲器(SM)以及支持PE和/或存儲器之間的高帶寬數(shù)據(jù)通信的主互連網(wǎng)絡(luò)(PIN或僅僅IN)的陣列。在圖1和圖2中例示了MPA的各種實(shí)施例,下面會進(jìn)行描述。一般地,PE具有用于緩沖輸入數(shù)據(jù)和輸出數(shù)據(jù)的寄存器、指令處理單元(IPU)以及用于對數(shù)據(jù)執(zhí)行算術(shù)和邏輯功能的裝置,外加用于與系統(tǒng)的其他部分通信的若干交換機(jī)和端口。IPU從存儲器取得指令,對它們進(jìn)行解碼,并設(shè)置適當(dāng)?shù)目刂菩盘栆砸苿訑?shù)據(jù)進(jìn)出PE以及對數(shù)據(jù)執(zhí)行算術(shù)和邏輯功能。僅因?yàn)榘驧PA的每個IC芯片的PE數(shù)量大,所以適合于大MPA的PE一般比通用處理器(GPP)能效更高。如本文所使用的,術(shù)語MPA覆蓋了相對同構(gòu)的處理器陣列以及在所謂的“平臺IC”芯片上集成的通用和專用處理器的異構(gòu)集合這兩者。平臺IC芯片可以包含典型地與共享存儲器或許還有芯片上的網(wǎng)絡(luò)互連的從幾個到許多個處理器。在MPA和“平臺IC”芯片之間可以存在或可以不存在差異。但是,“平臺IC”芯片可以被推銷為針對特定垂直市場中的特定技術(shù)需求。互連網(wǎng)絡(luò)(IN)可以為完全連接的或者交換的。在完全連接的網(wǎng)絡(luò)中,所有輸入端口都硬接線到所有輸出端口。但是,完全連接的網(wǎng)絡(luò)中的電線的數(shù)量按N2/2增加,其中N為端口數(shù)量,因此對于甚至中等規(guī)模的系統(tǒng),完全連接的網(wǎng)絡(luò)也很快變得不實(shí)際。交換的網(wǎng)絡(luò)由鏈路和交換節(jié)點(diǎn)組成。鏈路可以包括接線、傳輸線、波導(dǎo)(包括光學(xué)波導(dǎo))或無線接收機(jī)-發(fā)射機(jī)對。交換節(jié)點(diǎn)可以如在時窗期間到總線的連接那樣簡單,也可以如具有許多端口和緩沖隊(duì)列的交叉開關(guān)那樣復(fù)雜。單級網(wǎng)絡(luò)是其中所有輸入端口和輸出端口都駐留在一個大交換節(jié)點(diǎn)上的網(wǎng)絡(luò)。多級網(wǎng)絡(luò)是其中數(shù)據(jù)移動穿過第一個交換節(jié)點(diǎn)、第一個鏈路、第二個交換節(jié)點(diǎn)以及可能更多的鏈路-節(jié)點(diǎn)對以到達(dá)輸出端口的網(wǎng)絡(luò)。例如,傳統(tǒng)的有線電話系統(tǒng)是多級網(wǎng)絡(luò)。并行計(jì)算機(jī)的互連網(wǎng)絡(luò)在規(guī)模、帶寬和控制方法上變化很大。如果網(wǎng)絡(luò)提供了從輸入到輸出的數(shù)據(jù)路徑或電路并且在被請求拆除之前不管它,則可以稱之為“電路交換”。如果網(wǎng)絡(luò)提供長度只夠把數(shù)據(jù)包從輸入傳遞到輸出的路徑,則可以稱之為“包交換”。控制方法在完全確定性的(可以通過對與主時鐘同步的每個步驟編程來實(shí)現(xiàn))到完全反應(yīng)性的(可以通過異步地響應(yīng)端口輸入處的數(shù)據(jù)移動請求來實(shí)現(xiàn))之間變化。對于單級網(wǎng)絡(luò),請求/授權(quán)協(xié)議是控制交換機(jī)的普通方式。請求信號被提供到輸入端口并且在爭用檢測電路中與來自所有其他輸入端口的請求信號進(jìn)行對比。如果不存在爭用,則IN以授權(quán)信號響應(yīng)。該端口發(fā)送地址,IN設(shè)置交換機(jī)來連接輸入與輸出。當(dāng)檢測到爭用時,仲裁電路(或“仲裁器”)將決定請求端口中的哪一個得到授權(quán)信號。沒有授權(quán)信號的端口將必須等待。在一個周期中沒有成功的端口可以在后續(xù)周期中再次嘗試。在仲裁器中使用各種優(yōu)先級/輪流方案以確保每個端口得到至少某種服務(wù)。對于多級網(wǎng)絡(luò),可以使用被稱為“蟲孔路由(wormholerouting)”的特定協(xié)議。蟲孔路由是基于這樣的想法:消息可以被形成為字的系列或串,所述字的系列或串具有用于導(dǎo)航的頭部、攜帶有效載荷數(shù)據(jù)的主體和用于關(guān)閉路徑的尾部。消息如下地“曲折行進(jìn)”通過網(wǎng)絡(luò)。假設(shè)網(wǎng)絡(luò)被布置為笛卡爾網(wǎng)格;并且交換節(jié)點(diǎn)和存儲器位于網(wǎng)格的每個結(jié)。頭部可以包含一串簡單的操縱方向(諸如向前直行、左轉(zhuǎn)、右轉(zhuǎn)或連接到本地存儲器),所述操縱方向指示蠕蟲在它在網(wǎng)絡(luò)中遇到每個節(jié)點(diǎn)處應(yīng)當(dāng)去哪。這些操縱方向簡單到節(jié)點(diǎn)可以對它們進(jìn)行解碼并且以很少的電路非??焖俚卦O(shè)置交換機(jī)。由頭部建立的路徑或“孔”允許有效載荷數(shù)據(jù)即“主體”通過,直到遇到使節(jié)點(diǎn)在其之后關(guān)閉該孔的代碼字“尾部”。關(guān)閉路徑可以釋放鏈路和節(jié)點(diǎn),以便通過相同的蟲孔路由協(xié)議來建立其他路徑。IN的帶寬可以被定義為在長區(qū)間上平均的、每單位時間發(fā)生的成功數(shù)據(jù)移動的數(shù)量。交換的IN的帶寬以任何分析方式都難以估計(jì),因?yàn)樗Q于IN的細(xì)節(jié)中的和給該IN的數(shù)據(jù)移動請求的特性中的許多因素。當(dāng)請求率低時,對于資源的沖突的幾率低,并且?guī)缀?00%的請求成功。測量和仿真顯示,隨著數(shù)據(jù)移動請求率上升,成功的數(shù)據(jù)移動的比率從100%下降。最終,每秒的成功數(shù)據(jù)移動的數(shù)量將飽和或達(dá)到峰值,并且最大值被取作IN的帶寬。可以用軟件對MPA進(jìn)行編程以執(zhí)行應(yīng)用的具體功能。有兩種主要類型的軟件──應(yīng)用軟件和開發(fā)工具。應(yīng)用軟件是源文本、中間形式以及被加載到MPA存儲器中以便由MPA中的PE執(zhí)行的最終二進(jìn)制映像。開發(fā)工具是用于針對目標(biāo)硬件設(shè)計(jì)和測試應(yīng)用軟件的軟件程序,諸如語言編譯器、連接器、并發(fā)任務(wù)定義助手、通信通路(pathway)布局助手、物理設(shè)計(jì)自動化、仿真器和調(diào)試器。開發(fā)工具軟件可以運(yùn)行在應(yīng)用軟件的目標(biāo)硬件(可由其執(zhí)行)上或可以不運(yùn)行在應(yīng)用軟件的目標(biāo)硬件上。
技術(shù)實(shí)現(xiàn)要素:公開了多處理器陣列的各種實(shí)施例。寬泛地說,設(shè)想了其中多個處理器、本地存儲器、直接存儲器訪問(DMA)引擎和能配置的通信元件以散布的方式耦接在一起的電路和方法。每個能配置的通信元件可以包括多個通信端口,并且每個DMA引擎可以被配置為在所選擇的通信端口和本地存儲器之間傳送數(shù)據(jù)。DMA控制器可以被配置為控制多個DMA引擎的操作。一個或更多個本地存儲器可以被配置為作為先進(jìn)先出(FIFO)緩沖區(qū)進(jìn)行操作,并且DMA控制器還可以被配置為控制對FIFO緩沖區(qū)進(jìn)行操作的多個DMA引擎的子集。在一個實(shí)施例中,DMA控制器還可以被配置為使得對于對FIFO緩沖區(qū)的每次單個DMA寫入能夠進(jìn)行對FIFO的多個DMA讀取。在另一個實(shí)施例中,DMA控制器還可以被配置為使得對于對FIFO緩沖區(qū)的每次單個DMA讀取能夠進(jìn)行對FIFO的多個DMA寫入。附圖說明圖1是例示了本文稱為多處理器陣列(MPA)的處理系統(tǒng)的一個實(shí)施例的框圖;圖2是例示了MPA連接方案的一個實(shí)施例的框圖;圖3是例示了數(shù)據(jù)存儲器路由器(DMR)的一個實(shí)施例的框圖;圖4是例示了DMR的另一個實(shí)施例的框圖;圖4A是例示了DMR的實(shí)施例的框圖;圖4B是例示了DMR的一部分的實(shí)施例的框圖;圖5A是例示了DMR端口布置示例的框圖;圖5B是例示了DMR的另一個示例性端口布置的框圖;圖6是例示了多處理器陣列的一部分中的DMR與PE之間的連接的框圖;圖7是例示了DMR內(nèi)的示例性局部路由的框圖;圖8是例示了DMR內(nèi)的示例性全局路由的框圖;圖8A是例示了DMR的實(shí)施例的框圖;圖9是例示了用于控制DMR內(nèi)的交叉開關(guān)交換機(jī)(crossbarswitch)的優(yōu)先級的表;圖10是例示了多處理器陣列內(nèi)的全局和局部路由的一個實(shí)施例的操作的示圖;圖11是例示了直接存儲器訪問(DMA)引擎的框圖;圖12是例示了操作存儲器緩沖區(qū)的方法的流程圖;圖13是例示了操作存儲器緩沖區(qū)的另一種方法的流程圖;圖14例示了各種指針配置的圖表;圖15是指針比較和停頓單元的實(shí)施例的框圖;圖16是例示了處理引擎讀取FIFO的仿真的框圖;圖17例示了頭部字上的路由邏輯的一個實(shí)施例的操作;圖18描繪了示出通過MPA的一部分的示例性通路的框圖;圖19描繪了示出通過MPA的一部分的橫跨安全區(qū)域的示例性通路的框圖;圖20描繪了示出在通信通路停用的情況下的MPA的一部分的實(shí)施例的框圖;圖21描繪了示出數(shù)據(jù)檢查處理的示例的框圖;圖22描繪了示出分布式擁塞分析器的框圖。雖然本公開容許各種修改和替代形式,但是其具體實(shí)施例以示例的方式在附圖中示出并將在本文得到詳細(xì)描述。但是應(yīng)當(dāng)理解,附圖及其詳細(xì)描述并非意在把本公開限制為所例示的特定形式,相反,意在涵蓋落入由所附權(quán)利要求書限定的本公開的精神和范圍之內(nèi)的所有修改、等效和替代。本文所使用的標(biāo)題僅僅是用于組織的目的,而非意味著用來限制描述的范圍。如本申請書自始至終所使用的,詞語“可以”是以容許的意義(即意味著具有可能性)而非強(qiáng)制的意義(即意味著必須)來使用。同樣,詞語“包括”“包含”意味著包括但不限于。各種單元、電路或其他部件可以被描述為“被配置為”執(zhí)行任務(wù)。在這種語境中,“被配置為”是結(jié)構(gòu)的寬泛敘述,一般意味著“具有”在操作期間執(zhí)行任務(wù)的“電路”。因此,即使單元/電路/部件當(dāng)前未開啟,單元/電路/部件也可以被配置為執(zhí)行任務(wù)。一般來說,形成與“被配置為”對應(yīng)的結(jié)構(gòu)的電路可以包括硬件電路。類似地,在描述中為了方便起見,各種單元/電路/部件可以被描述為執(zhí)行任務(wù)。這種描述應(yīng)當(dāng)被解釋為包括短語“被配置為”。記載被配置為執(zhí)行一項(xiàng)或更多項(xiàng)任務(wù)的單元/電路/部件明顯地意在不調(diào)用35U.S.C.§112第六段對該單元/電路/部件的解釋。更一般地,任何元件的記載都明顯地意在不調(diào)用35U.S.C.§112第六段對該元件的解釋,除非明確記載了語言“用于……的裝置”或“用于……的步驟”。具體實(shí)施方式通過引用并入發(fā)明人為MichaelB.Doerr、WilliamH.Hallidy、DavidA.Gibson和CraigM.chase的、標(biāo)題為“ProcessingSystemWithInterspersedStallPropagatingProcessorsAndCommunicationElements”的美國專利No.7415594,其全部內(nèi)容通過引用并入于此,就像在此全面且完整地闡述了一樣。2011年10月14日提交的發(fā)明人為MichaelB.Doerr、CarlS.Dobbs、MichaelB.Solka、MichaelRTrocino和DavidA.Gibson的、標(biāo)題為“DisablingCommunicationinaMultiprocessorSystem”的美國專利申請No.13/274138,其全部內(nèi)容通過引用并入于此,就像在此全面且完整地闡述了一樣。術(shù)語硬件配置程序-由源文本構(gòu)成的程序,所述源文本可被編譯為可用來對諸如集成電路之類的硬件進(jìn)行編程或配置的二進(jìn)制映像。計(jì)算機(jī)系統(tǒng)-各種類型的計(jì)算或處理系統(tǒng)中的任何一種,包括個人計(jì)算機(jī)系統(tǒng)(PC)、主機(jī)計(jì)算機(jī)系統(tǒng)、工作站、網(wǎng)絡(luò)家電、因特網(wǎng)家電、個人數(shù)字助理(PDA)、網(wǎng)格計(jì)算系統(tǒng)或其他設(shè)備或者設(shè)備的組合。一般來說,術(shù)語“計(jì)算機(jī)系統(tǒng)”可以被寬泛地定義為包含具有執(zhí)行來自存儲介質(zhì)的指令的至少一個處理器的任何設(shè)備(或設(shè)備的組合)。自動地-指在沒有直接指定或執(zhí)行動作或操作的用戶輸入的情況下由計(jì)算機(jī)系統(tǒng)(如由計(jì)算機(jī)系統(tǒng)執(zhí)行的軟件)或設(shè)備(如電路、可編程硬件元件、ASIC等)執(zhí)行的動作或操作。因此術(shù)語“自動地”與正在由用戶手動地執(zhí)行或指定的操作形成對照,在后一種情況中用戶提供輸入以直接執(zhí)行操作。自動過程可以由用戶提供的輸入來啟動,但是“自動地”執(zhí)行的后續(xù)動作不由用戶指定,即不是其中用戶指定要執(zhí)行的每個動作的“手動地”執(zhí)行。例如,通過選擇每個字段并提供指定信息(如通過鍵入信息、選擇復(fù)選框、單項(xiàng)選擇等)的輸入來填寫電子表格的用戶正在手動地填寫表格,即使計(jì)算機(jī)系統(tǒng)必須響應(yīng)于用戶動作來更新該表格??梢杂捎?jì)算機(jī)系統(tǒng)自動地填寫表格,其中計(jì)算機(jī)系統(tǒng)(如在計(jì)算機(jī)系統(tǒng)上執(zhí)行的軟件)分析表格的字段并且在沒有任何指定字段的答案的用戶輸入的情況下填寫表格。如以上所指示的,用戶可以調(diào)用表格的自動填寫,但是不參與表格的實(shí)際填寫(例如,用戶不手動地指定字段的答案,而是它們被自動完成)。本說明書提供了響應(yīng)于用戶已經(jīng)采取的動作而被自動地執(zhí)行的操作的各種示例。詳細(xì)描述示例性的MPA架構(gòu)在圖1和2中示出并且它是在美國專利No.7415594中公開的HyperXTM架構(gòu)的示例。在圖1所示的實(shí)施例中,MPA10包括多個處理元件(PE)和多個支持存儲器(SM)以及互連網(wǎng)絡(luò)(IN)。IN由交換節(jié)點(diǎn)和鏈路組成。交換結(jié)點(diǎn)也稱為路由器,可與鏈路一起用于形成PE之間的以及PE與MPAI/O端口之間的通信通路。但是,在每個PE處,所傳送的任何信息可以緩沖在SM中。在圖1中,SM與通信路徑路由器被組合在被稱為數(shù)據(jù)存儲器路由器(DMR)的圓形元件中。如本文所使用的,PE也可以被稱為PE節(jié)點(diǎn),而DMR也可以被稱為DMR節(jié)點(diǎn)。DMR在本文也被稱為“能配置的通信元件”。圖1和圖2中所示的DMR之間的鏈路形成直線網(wǎng)狀結(jié)構(gòu);但是,許多其他連接方案也是可能的并被設(shè)想。在圖2所示的MPA連接方案中,每個PE連接到四個相鄰DMR,而每個DMR連接到四個相鄰PE以及四個相鄰DMR。還設(shè)想了其他連接方案以支持更高維度的IN,諸如每個DMR使用六個DMR到DMR的鏈路以支持三維直線網(wǎng)狀結(jié)構(gòu),或者每個DMR使用八個鏈路以支持四個對角方向外加北、東、南和西方向。鏈路不必限于物理上最近的鄰居。MPA與應(yīng)用軟件的結(jié)合可以被稱為并行處理系統(tǒng)(PPS),盡管該名稱的使用并非意在以任何方式限制本發(fā)明的范圍。例如,可以把MPA編程為緩沖和分析來自攝像機(jī)的原始視頻數(shù)據(jù),然后對緩沖內(nèi)容執(zhí)行視頻數(shù)據(jù)壓縮以把壓縮后數(shù)據(jù)外傳到無線電鏈路上。例如,應(yīng)用軟件與MPA的這種結(jié)合可以被稱為并行視頻信號處理器。帶有芯片I/O單元的MPA20可以被用在當(dāng)前使用通用微處理器、DSP、FPGA或ASIC的各種系統(tǒng)和應(yīng)用中的任何一種中。例如,圖1和圖2中所示的處理系統(tǒng)可以被用在各種類型的計(jì)算機(jī)系統(tǒng)、數(shù)字信號處理器(DSP)或要求計(jì)算的其他設(shè)備的任何一種中。HyperX硬件構(gòu)造在HyperXTM架構(gòu)的一個實(shí)施例中,多處理器陣列可以由基于單位單元的硬件構(gòu)造(網(wǎng)狀結(jié)構(gòu))組成,其中每個單元都被稱為超切片(HyperSlice)。硬件構(gòu)造可以通過在網(wǎng)格上布置單位單元并且使相鄰單元互連來形成。每個超切片可以包括一個或更多個數(shù)據(jù)存儲器和路由器(DMR)以及一個或更多個處理元件(PE)。在美國專利No.7415594中,DMR可以被稱為能動態(tài)配置的通信(DCC)元件,而PE可以被稱為能動態(tài)配置的處理(DCP)元件。DMR可以為相鄰PE提供支持存儲器以及為互連網(wǎng)絡(luò)(IN)提供路由器和鏈路。本語境中的能動態(tài)配置意味著在應(yīng)用軟件正在運(yùn)行的同時可以重新分配這些硬件資源(PE、DMR鏈路和DMR存儲器)。這是通過把應(yīng)用軟件劃分成更小任務(wù)的層次和通信消息來實(shí)現(xiàn)的。這些任務(wù)和消息被分配到資源并且同時地(或者在需要時串行地)執(zhí)行。隨著任務(wù)和消息完成,它們可以被再次執(zhí)行或者由其他任務(wù)和消息取代,以形成應(yīng)用軟件的新配置?!凹磿r”(onthefly)改變配置的能力支持了靈活性,以更高效地利用有限的資源并且更適于改變外部需求等。HyperX硬件構(gòu)造具有相對于處理元件獨(dú)立且透明地進(jìn)行操作的主IN(PIN),并且可以在支持任意通信網(wǎng)絡(luò)拓?fù)涞某衅g提供通過能實(shí)時編程的且能適應(yīng)的通信通路(可以被稱為路由或路徑)的整體的按需帶寬(on-demandbandwidth)。在軟件控制下可以“即時”形成和重新形成超切片的協(xié)調(diào)組。動態(tài)地改變用于估算功能的硬件數(shù)量的這種能力允許硬件資源的最佳應(yīng)用以緩解處理瓶頸。在硬件構(gòu)造的邊緣,鏈路可以連接到為存儲器層次再往下的存儲器類型或者集成電路(IC)芯片邊緣的I/O所專用的電路。HyperX硬件構(gòu)造的互連DMR可以提供跨芯片和從芯片到芯片的最近鄰、區(qū)域和全局通信。這些通信模式的每一個都可以按照數(shù)據(jù)的位置和軟件算法要求物理地使用DMR資源來有差異地發(fā)送數(shù)據(jù)/消息??梢蕴峁翱焖俣丝凇痹O(shè)施,以支持一個或更多個字的數(shù)據(jù)從處理器到任何網(wǎng)絡(luò)終點(diǎn)的低等待時間傳送。對于塊傳送,DMR內(nèi)的直接存儲器訪問(DMA)引擎可用于管理跨存儲器和路由構(gòu)造的數(shù)據(jù)移動。對于PE之間的最近鄰?fù)ㄐ?,使用共享存儲器和寄存器可能是最高效的?shù)據(jù)移動的方法。對于區(qū)域的和全局的數(shù)據(jù)移動,使用路由構(gòu)造(PIN)可能是最高效的方法。通信通路(或路由)可以是動態(tài)的或者靜態(tài)的。動態(tài)路由可以針對數(shù)據(jù)傳送來建立并且傳送一完成就被拆除,以釋放PIN資源用于其他路由和數(shù)據(jù)傳送。靜態(tài)路由可以在程序執(zhí)行期間保持就位,并且主要用于高優(yōu)先級和關(guān)鍵的通信。通信通路的物理位置和橫跨它們的數(shù)據(jù)傳送的定時可以受控于軟件程序??梢源嬖诙鄺l通信通路以支持任何發(fā)送者和接收者之間的同時數(shù)據(jù)傳送。處理元件(PE)DMR的架構(gòu)可以允許不同的可互換的PE用在多處理器構(gòu)造中以最優(yōu)化針對具體應(yīng)用的系統(tǒng)。HyperXTM多處理器系統(tǒng)可以包括PE的異構(gòu)或者同構(gòu)的陣列。PE可以是傳統(tǒng)的處理器,或者替代地,PE可以不符合處理器的傳統(tǒng)定義。PE可以簡單地是用作針對某些邏輯功能的硬接線處理器的邏輯門的集合,在所述硬接線處理器中為了更高的性能、更小的面積和/或更低的功率犧牲了可編程性。如圖2中所示,例如可以通過在PE之間散布DMR來向諸如HyperXTMMPA之類的MPA中的PE供應(yīng)到多個存儲器的并行連接。相對于隔離的(即非散布的)布置,這種布置可以降低給定PE訪問DMR中的存儲器所需的時間和能量,并且在本文中可以被稱為PE和SM散布布置。在圖1的實(shí)施例中,PE與DMR的比率是1:1。在各種其他實(shí)施例中,PE與DMR的不同比率是可能的。HyperXTM處理器架構(gòu)可以包括固有的多維度,但是可以在物理上實(shí)施為平面實(shí)現(xiàn)。處理器架構(gòu)可以具有高能效的特性并且在根本上是可擴(kuò)展(至大陣列)的和可靠的──表示既低功率又可靠的概念。使得處理器架構(gòu)能夠?qū)崿F(xiàn)前所未有的性能的方面包括最新型的處理器、存儲網(wǎng)絡(luò)和靈活的IO。處理元件(PE)可以是成熟的DSP/GPP并且基于由可變寬度指令字指令集架構(gòu)維持的存儲器到存儲器(無高速緩存)架構(gòu),所述可變寬度指令字指令集架構(gòu)可以動態(tài)地?cái)U(kuò)展執(zhí)行流水線,以在同時地最大化硬件資源的使用的同時維持吞吐量。通信通路的建立圖1例示了HyperXTM系統(tǒng)的實(shí)施例,包括處理元件(PE)和數(shù)據(jù)存儲器路由器(DMR)的網(wǎng)絡(luò)。PE被示為矩形塊并且DMR被示為圓圈。DMR之間的路由路徑被示為虛線。實(shí)心三角形示出了網(wǎng)狀結(jié)構(gòu)外的通信,并且實(shí)線示出了DMR之間的活躍的數(shù)據(jù)通信。計(jì)算任務(wù)由其數(shù)字標(biāo)識符示出并被放置在正執(zhí)行它的PE上。正用于通信的數(shù)據(jù)變量由其名稱示出并被放置在包含它的DMR上。在所例示的實(shí)施例中,左上角的PE已被分配帶有任務(wù)ID62的任務(wù),并且可以經(jīng)由與該P(yáng)E相鄰的由通信路徑變量t、w和u指明的各DMR與其他PE或存儲器通信。同樣如所示出的,在本實(shí)施例中,活躍的通信通道經(jīng)由用“x”標(biāo)注的相鄰DMR把由71(例如,另一任務(wù)ID)指明的PE連接到網(wǎng)狀結(jié)構(gòu)外的通信路徑或端口。數(shù)據(jù)存儲器路由器在圖3例示了DMR硬件結(jié)構(gòu)的實(shí)施例的框圖。在所例示的實(shí)施例中,中央數(shù)據(jù)存儲器(DM)由表示路由器的八邊形的環(huán)圍繞著。注意,所示的八邊形形狀僅僅是象征性的,實(shí)際形狀可以不同,例如可以是矩形的。圍繞著DMR的是許多表示到其他DMR和PE的數(shù)據(jù)路徑的雙向箭頭。這些雙向數(shù)據(jù)路徑可以用在每端的實(shí)際雙向收發(fā)機(jī)實(shí)施,或者實(shí)施為一對方向相反的單向路徑。圖3中的路由器與數(shù)據(jù)存儲器之間的單向箭頭表示存儲器與路由器之間的單向數(shù)據(jù)路徑。這些箭頭附近的小正方形表示DMA引擎,即支持從DM讀取的DMA讀取器(DMAR),和/或支持把數(shù)據(jù)寫到DM的DMA寫入器(DMAW)。DMAR引擎產(chǎn)生用于存儲器的地址信號,以典型地跨緩沖區(qū)遞增,讀取數(shù)據(jù)以發(fā)出到另一個DMR的鏈路。類似地,DMAW引擎產(chǎn)生用于存儲器的地址信號,以典型地跨緩沖區(qū)遞增,寫入它從鏈路收到的數(shù)據(jù)。每個DMA引擎都比PE小得多并使用更小的功率,所以使用它們來讀寫存儲器塊是有吸引力的??梢酝ㄟ^PE寫到DM存儲器空間中的相關(guān)聯(lián)的配置寄存器來配置DMA引擎。寫到特定地址觸發(fā)DMA開始遞增,當(dāng)DMA完成穿過地址塊的遞增時,它便停止──除非被配置為繼續(xù)循環(huán)無限次或預(yù)定次數(shù)的循環(huán)。為了支持諸如圖2中所示的MPA20之類的MPA中的高帶寬端口,端口之間的連接或鏈路(PE到DMR或DMR到DMR)可以是短的(即,限于鄰居),并且由許多并行導(dǎo)電跡線或者“電線”或“線路”組成。在某些實(shí)施例中,鏈路可以僅由幾條并行跡線、一條跡線或波導(dǎo)組成。PE到DMR的連接可以使用于存儲器地址的跡線與用于數(shù)據(jù)的跡線分開。用于數(shù)據(jù)的跡線可以連接到支持雙向數(shù)據(jù)傳送的收發(fā)機(jī)或分為把寫入數(shù)據(jù)帶到存儲器的一組跡線和從存儲器帶走讀取數(shù)據(jù)的另一組跡線。DMR到DMR的連接可以不一定具有地址線,但是可以具有用于表示所傳遞的數(shù)據(jù)中的諸如用于消息頭部或消息終止的控制字之類的特殊字的線路。所有DMR連接都可以具有用于流控制的附加線路。例如,線路可以給上游(從終點(diǎn)到源)發(fā)信號通知:因?yàn)樵诼吠旧洗嬖谀撤N其他的通信路徑或者因?yàn)榻K點(diǎn)無法接受更多的數(shù)據(jù),數(shù)據(jù)字的進(jìn)一步前進(jìn)被阻塞。在本文檔中,這種上游線路可以被命名為“BLK”、“stall”、“rtr_busyout”或“rtr_busyin”,以列舉這幾個。另一條線路可以給下游(從源到終點(diǎn))發(fā)信號通知:有效數(shù)據(jù)準(zhǔn)備好了。在本文檔中,這種下游線路可以被命名為“IDL”、“ready”、“rtr_rdyout”或“rtr_rdyin”,列舉這幾個。給上游和下游發(fā)信號都可以用于指示與DMR之間的鏈路的端點(diǎn)連接的發(fā)射機(jī)和接收機(jī)的狀態(tài),其中DMR要么是本地的(相鄰的)DMR要么是全局的(非相鄰的)DMR。在某些MPA實(shí)施例中,節(jié)點(diǎn)之間的通信可以在程序員的控制下。在圖4中,通信控制器430可以引導(dǎo)交叉開關(guān)450使數(shù)據(jù)從DMR輸入端口404中的一個或更多個路由到DMR輸出端口405中的一個或更多個,從而可以沿著穿過MPA的路徑中繼數(shù)據(jù)。DMR400可以提供用于數(shù)據(jù)的附加通信路徑。在所例示的實(shí)施例中,多端口SRAM425可以經(jīng)由多個多工設(shè)備(Mux)或復(fù)用器(Multiplexer)在其寫入端口接收來自DMR輸入端口401或輸出寄存器455的數(shù)據(jù)。復(fù)用器可以允許通信控制器430在多端口SRAM425以別的方式有可能空閑的時間期間訪問多端口SRAM425。路由器控制器430可以被編程為選擇要從存儲器交換機(jī)(memory)、其他三個DMR進(jìn)入端口404的任何一個或快速端口輸出的數(shù)據(jù)。交換路由構(gòu)造中的通信通路在某些MPA實(shí)施例中,更長距離的通信(即超出DMR與相鄰的DMR的通信)可以由本質(zhì)上可以是邏輯通道的通路支持。每條通路可以只在一個方向上傳輸數(shù)據(jù);如果需要雙向通信,則可以在相反的方向上建立第二條通路。一般來說,MPA實(shí)施例可以在DMR對之間具有通過對多個有形連接進(jìn)行空間復(fù)用或時間復(fù)用而形成的多個連接鏈路。在這種連接鏈路上可以建立通路。但是,一旦建立了通路,在其存在期間便不能改變其使用的連接鏈路或者與其耦接的DMR。所以,每條通路可以被唯一地定義為DMR和連接鏈路的有序序列,例如被唯一地定義為第一或源DMR、第一連接鏈路、第二DMR、第二連接鏈路、第三DMR、第三連接鏈路等,直到最后的或終點(diǎn)DMR。在一個實(shí)施例中,MPA中的所有通路的集合可以由所有路由器的狀態(tài)唯一地定義。為了支持MPA的動態(tài)配置,可以快速地創(chuàng)建和快速地銷毀通路。在某些實(shí)施例中,通路創(chuàng)建和銷毀可以由給定PE或者給定DMR啟動。例如,給定DMR可以被配置為在沒有PE干預(yù)的情況下執(zhí)行到另一個DMR的DMA傳送,因此可以被配置為創(chuàng)建和銷毀通路??梢詫?shí)現(xiàn)動態(tài)通路創(chuàng)建和銷毀的兩種方法包括全局編程和蟲孔路由。接下來描述利用全局編程的通路創(chuàng)建,隨后描述對于許多MPA通路可以是共同的模式和流控制特征。在模式和流控制描述之后是對蟲孔路由方法的描述。使用全局編程方法的通路創(chuàng)建或建立可以要求MPA中的每一條通路都必須由軟件控制定義,并且可以要求每條這種通路在該通路用于數(shù)據(jù)傳送之前配置。這可以由程序員手工進(jìn)行,或者例如由路由編譯器或輔助軟件或通過選擇函數(shù)代碼已經(jīng)包括通路建立的庫函數(shù)來自動進(jìn)行。如果所有通路的整體要在MPA中同時使用,則可以由程序員來確保它們不使用超過硬件中可得到的通信鏈路資源。作為替代,可以使用軟件工具來幫助鏈路資源使用的設(shè)計(jì)。為了用全局編程來創(chuàng)建單條通路,可以把幾條指令加載到沿著通路的DMR內(nèi)的諸如圖4的通信控制器430之類的通信控制器中。指令可以加載與路徑中每個鏈路相關(guān)聯(lián)的適當(dāng)?shù)慕徊骈_關(guān)配置寄存器451的位組。在某些實(shí)施例中,這些指令可以立即或按順序進(jìn)行這項(xiàng)任務(wù),雖然在其他實(shí)施例中它們可以等待某種觸發(fā)信號。在各種實(shí)施例中,通路一旦建立,硬件可以防止其中斷或者可以不防止其中斷。因此,確保每次向任何給定鏈路僅分配一條通路可能是程序員或路由軟件的責(zé)任。一旦全都沿著通路的DMR中的路由器控制狀態(tài)寄存器451被設(shè)置,通信通路就可以完成并對數(shù)據(jù)做好準(zhǔn)備。當(dāng)不再需要通路時可以通過改變該通路中所包括的每個DMR的交叉開關(guān)配置寄存器中的相關(guān)位組來銷毀該通路。作為替代,現(xiàn)有通路可以無限期地保留完整,并且在不再需要現(xiàn)有通路后,可以根據(jù)需要由新的通路簡單地覆寫沿著通路的路由器控制狀態(tài)。蟲孔路由為了支持通過蟲孔路由建立的通路,某些MPA實(shí)施例可以提供某些附加電路。對于每個DMR類型的端口,這些附加電路可以包括指示控制/數(shù)據(jù)狀態(tài)和標(biāo)注的C/D的附加控制線,附加控制線可以被包括在DMR之間的每個連接鏈路中并且耦接到每個DMR中的路由邏輯435。連接鏈路中的電線的最大數(shù)量可以標(biāo)稱地對應(yīng)于每個數(shù)據(jù)字的位數(shù)加上用于以上定義的C/D、IDL和BLK的各一條電線的總和,其中C/D、IDL和BLK中的后兩個用于流控制。但是,在某些MPA實(shí)施例中,可以以許多不同的方式復(fù)用這些信號以降低電線總數(shù)。由于數(shù)據(jù)字是在一個DMR處從另一個DMR收到的,所以C/D位可以由接收DMR使用來區(qū)分蠕蟲的頭部、主體和尾部字。如果C/D位被去斷言(de-asserted),這可以指示所收到的字是主體字。主體字可以對應(yīng)于可無變化地沿著通路穿過的數(shù)據(jù)字加上控制位。如果C/D位被斷言(asserted),這可以指示所收到的字是控制字。控制字可以允許字的數(shù)據(jù)部分包含用于路由邏輯435解釋的路由代碼。路由代碼的一個重要特征可以是指示控制字是頭部還是尾部;因此,可以提供指示控制字的頭部/尾部狀態(tài)的H/T位。在一個實(shí)施例中,H/T位可以與C/D位相鄰,但是在其他實(shí)施例中,它可以被分配到其他位位置或者可以是特定的多位代碼。如果控制字是尾部字,那么它可以沿著通路傳播并且可以隨后釋放DMR輸出端口以由某條其他通路使用。如果控制字是頭部字,則其可以被鎖存在接收DMR的輸入寄存器454內(nèi)并由路由邏輯435中的組合邏輯進(jìn)行解碼。路由邏輯435可以檢查頭部字的適當(dāng)位以及該頭部來自的端口,并且可以發(fā)布交叉開關(guān)450對于輸出端口的請求,如表1中所示。出于請求輸出端口的目的而由路由邏輯435檢查的幾個位可以被稱為導(dǎo)航單元或NUNIT。對于包括每個DMR四個DMR類型輸出端口的DMR實(shí)施例,NUNIT可以使用兩位的代碼來指定四個方向選項(xiàng),如表1中所示。在包括相同或不同數(shù)量的DMR類型端口的其他實(shí)施例中,可以使用其他NUNIT代碼。下面描述使用每個NUNIT兩位的代碼。如果輸出端口未被已經(jīng)建立的通路阻塞,則路由邏輯435可以評估NUNIT并允許蠕蟲繼續(xù)前進(jìn)。例如,如果從SRAM(一種DM)到達(dá)的頭部字帶有的NUNIT代碼為10,則路由邏輯435可以針對該蠕蟲的頭部字和后續(xù)字請求交叉開關(guān)450的東輸出端口。表1根據(jù)方向代碼和輸入端口的輸出端口圖17例示了路由邏輯的一個實(shí)施例對頭部字的操作。圖17將頭部字描繪為從源節(jié)點(diǎn)前行穿過通路上的多個DMR節(jié)點(diǎn)直到終點(diǎn)節(jié)點(diǎn)。情形(a)可以例示處于源自于源DMR的初始狀態(tài)的頭部字。在這種狀態(tài)下,頭部字包括C/D位、H/T位以及編號為HN0到HN4的多個頭部NUNIT字段,其中HN0占據(jù)頭部字的最低有效位。在包括源DMR和終點(diǎn)DMR的每個DMR處,頭部字可以在如下修改的情況下被傳遞到交叉開關(guān)的輸出。頭部字可以右移一個NUNIT并從左充填零。然后可以把C/D和H/T位重新存儲到其原始位置。圖10的情形(b)至(e)可以分別例示在頭部已經(jīng)由一個至四個DMR處理后發(fā)生的頭部修改。隨著穿過每個DMR,領(lǐng)頭頭部字可以充填更多的零直到空代碼在最右邊的NUNIT中,如情形(e)中所示。如果在頭部字不是來自同一DMR(控制器或相鄰DMR)時空代碼是最右邊的NUNIT,并且下一個蠕蟲字不是控制字,則該頭部字可能在該蠕蟲的終點(diǎn)DMR處。對到達(dá)終點(diǎn)DMR的檢測可能需要多個時鐘周期。首先可以把領(lǐng)頭頭部字移動到輸入寄存器454中的一個中,并由路由器控制邏輯435測試在最右邊的NUNIT中的空代碼。如果找到了空代碼,則在下一個時鐘周期中蠕蟲的下一個字可以覆寫領(lǐng)頭頭部字并且可以對其C/D和H/T位進(jìn)行測試。如果下一個字是另一個頭部字,則它可以變?yōu)樾碌念I(lǐng)頭頭部字,并且可以使用其最右邊的NUNIT來選擇針對下一個DMR的輸出端口。每蠕蟲可以有許多頭部字,以橫跨大陣列進(jìn)行路由。如果下一個字是主體字而不是頭部字,則該蠕蟲可能在其終點(diǎn)DMR處。在這種情況下,可以把主體字寫到DMR中的預(yù)置SRAM位置。主體字到達(dá)某位置可以由通信控制器430的DMA邏輯或由DMR來檢測,通信控制器430的DMA邏輯和DMR中的任一個都可以為后續(xù)主體字的到達(dá)服務(wù)。關(guān)于如何為蠕蟲服務(wù)的信息可以預(yù)加載在終點(diǎn)節(jié)點(diǎn)處或者可以緊接頭部之后包括在蠕蟲中。圖18是例示了通過MPA的一部分的示例性通路的框圖。圖18描繪了標(biāo)注為“路由器A”至“路由器H”的八個路由器。每個描繪的路由器可以是圖4B的示范路由器。盡管為了簡單未示出附加邏輯,但是每個描繪的交叉開關(guān)可以被包括在各自的諸如圖4中所例示的DMR400之類的DMR中,并且例如,每個這種DMR可以耦接到諸如圖2中所示的MPA20之類的MPA中的其他DMR。在圖18的所例示實(shí)施例中,路由器A-H中的每一個都包括在路由器左邊緣上標(biāo)注有N、S、E和W的四個輸入端口以及在路由器右邊緣上標(biāo)注有N、S、E和W的四個輸出端口。每個路由器的輸入端口可以耦接到各自的DMR的DMR輸入端口404,并且每個路由器的輸出端口可以耦接到各自的DMR的DMR輸出端口405。另外,路由器A-H中的每一個都包括到諸如圖4的多端口SRAM425之類的存儲器的輸入連接和輸出連接,這種連接分別在路由器的左右邊緣上標(biāo)注為M。在所例示的實(shí)施例中,每個路由器A-H都經(jīng)由每個各自的DMR耦接到多個相鄰路由器,使得每個路由器的每個輸出端口N、S、E和W耦接到多個相鄰路由器中的每一個的各自的輸入端口S、N、W、E。因此,在所例示的實(shí)施例中,每個路由器都可以被耦接為接收來自四個相鄰路由器的輸入以及向四個相鄰路由器發(fā)送輸出。注意,在替代實(shí)施例中,可以采用不同數(shù)量的路由器,每個路由包括不同數(shù)量的輸入端口、輸出端口和存儲器連接。圖18例示了從包括路由器A的源DMR到包括路由器H的終點(diǎn)DMR的通路,該通路穿過了包括路由器B、F和G的DMR。一并參考圖17和圖18,根據(jù)表1定義的2位的NUNIT代碼可以用于實(shí)施所例示的通路如下。該通路起源于經(jīng)由輸入存儲器連接M耦接到路由器A的SRAM,并且經(jīng)由輸出端口E離開路由器A。根據(jù)表1,針對路由器A的NUNIT應(yīng)當(dāng)是10。路由器A的輸出E耦接到路由器B的輸入W,并且所例示的通路經(jīng)由輸出端口S離開路由器B。根據(jù)表1,針對路由器B的NUNIT應(yīng)當(dāng)是01。路由器B的輸出S耦接到路由器F的輸入N,并且所例示的通路經(jīng)由輸出端口E離開路由器F。根據(jù)表1,針對路由器F的NUNIT應(yīng)當(dāng)是10。路由器F的輸出E耦接到路由器G的輸入W,并且所例示的通路經(jīng)由輸出端口E離開路由器G。根據(jù)表1,針對路由器G的NUNIT應(yīng)當(dāng)是11。最后,路由器G的輸出E耦接到路由器H的輸入W,并且所例示的通路在經(jīng)由輸出存儲器連接M耦接到路由器H的SRAM中結(jié)束。根據(jù)表1,針對交叉開關(guān)H的NUNIT應(yīng)當(dāng)是00。因此,對于圖18中例示的路徑以圖17的格式實(shí)施蟲孔路由的頭部控制字可以包括指示控制字的已斷言C/D位、指示頭部字的已斷言H/T位以及分別對應(yīng)于字段HN4至HN0的值00、11、10、01和10。注意,所例示的通路僅僅是通過一個MAP實(shí)施例的許多可能通路之一。在其他實(shí)施例中,可以采用不同數(shù)量的路由器和端口,并且不同的通路和路由方法都是可能的并被設(shè)想。由于每個NUNIT可以由沿著通路的特定DMR消耗,所以可以把一個或更多個位添加到每個NUNIT以在各個DMR處請求特定行為。例如,在一個實(shí)施例中,可以使用每NUNIT一個添加位來指定給定DMR是否應(yīng)當(dāng)以多層模式進(jìn)行操作。在這種實(shí)施例中,蟲孔路由的路徑可以根據(jù)對頭部的編程在沿著該路徑的不同DMR處使用不同的模式。在另一個實(shí)施例中,例如,PE可以把頭部字直接發(fā)送給相鄰的諸如圖4中所示的DMR400之類的DMR的交叉開關(guān)輸入。PE可以經(jīng)由DMR地址端口向相鄰DMR指定特定的寄存器地址并且經(jīng)由同一寄存器地址向該DMR的輸出路由器發(fā)送頭部字來這么做。諸如圖4中所繪的路由控制邏輯435之類的路由控制邏輯可以被配置為然后在不使用存儲器交換機(jī)或存儲器的情況下把在其途中的蠕蟲發(fā)送到其終點(diǎn)。這種技術(shù)可以提供PE之間的更高效的短消息傳遞能力。沖突處理由蟲孔路由建立的通路可能偶遇具有已經(jīng)路由通過給定DMR或正在路由通過給定DMR的過程中的一個或更多個其他通路的DMR。當(dāng)一個或更多個入站頭部字同時請求同一交叉開關(guān)輸出端口(沖突)時或者當(dāng)該輸出端口已經(jīng)被某通路占據(jù)(阻塞)時,可能出現(xiàn)資源沖突。路由控制邏輯可以包括被配置為仲裁在沖突的情況下哪條通路有權(quán)訪問爭奪的輸出端口的邏輯。路由控制邏輯可以檢測沖突并且只授權(quán)一個蠕蟲訪問爭奪的輸出端口。各種優(yōu)先級/輪流方案(如循環(huán)(round-robin)方案)可以用于形成通信量分布,并且確保沒有特定輸入端口總是被拒絕訪問所請求的輸出端口。當(dāng)由蟲孔路由初始建立的通路被阻塞時,在不銷毀被阻塞的蠕蟲的情況下停止其向前行進(jìn)可能是有利的。在這種情況下,可以采用以上所述的流控制機(jī)制。詞語“蠕蟲”在此用來表示可以是字、字節(jié)或其他位組的流單元(在文獻(xiàn)中稱為“flit”)的有序的序列或串。在某些實(shí)施例中,DMR流控制協(xié)議可以操作如下。當(dāng)蠕蟲遭遇阻塞時,該蠕蟲的領(lǐng)頭流單元可以被鎖存在阻塞DMR的輸入寄存器中,并且BLK信號被向回驅(qū)動至該通路中的上一個上游DMR,以把蠕蟲的另一個流單元鎖存在上一個上游DMR的輸入寄存器中??梢灾貜?fù)該過程,追溯到包含蠕蟲的尾部字的DMR,或者在尾部字尚未被源發(fā)送時追溯到源DMR。蠕蟲中的數(shù)據(jù)可以被捕獲在通路中的被配置為以同步數(shù)據(jù)傳遞模式操作的DMR的輸入寄存器和輸出寄存器中。如上所述,每個DMR可以存儲兩個字,導(dǎo)致已停頓的蠕蟲的“擠壓”或“疊縮”狀態(tài)。蠕蟲可以無限期地保持凍結(jié)直到阻塞狀況消失,隨后,可以通過傳播BLK信號的去斷言來自動地重新開始蠕蟲的向前運(yùn)動。對DMR流控制協(xié)議的以上描述假設(shè)一個流單元被存儲在鏈路輸入端口寄存器中并且一個流單元被存儲在鏈路輸出端口寄存器中;但是,可以在阻塞狀況下添加附加寄存器來存儲每端口的附加流單元,并且這可以對蠕蟲的長度提供附加的彈性。在某些實(shí)施例中,特定通路的源端可以暫時停止發(fā)送流單元并使“ready”信號去斷言,并且流控制信令可以逐漸地停止流單元的向前運(yùn)動,直到終點(diǎn)端收到“ready”信號的去斷言,于是該蠕蟲將被凍結(jié)在原地直到源再次開始發(fā)送。在替代協(xié)議實(shí)施例中,源數(shù)據(jù)發(fā)送的暫時停止和“ready”信號的去斷言可以在通路中產(chǎn)生由具有經(jīng)去斷言的“ready”位的流單元組成的泡。該泡可以逐漸生長直到源恢復(fù)發(fā)送數(shù)據(jù)或者該泡到達(dá)終點(diǎn),于是終點(diǎn)接收機(jī)繼續(xù)讀取流單元但是把包含去斷言的ready位的所有流單元丟棄。當(dāng)源恢復(fù)發(fā)送數(shù)據(jù)時,泡對著終點(diǎn)接收機(jī)破裂;并且終點(diǎn)接收機(jī)可以在出現(xiàn)斷言的“ready”位時恢復(fù)接收數(shù)據(jù)。在某些實(shí)施例中,多種協(xié)議可以由硬件支持并由軟件選擇。下面討論了例示MPA功能的幾個示例性應(yīng)用。應(yīng)當(dāng)注意,這種示例并非意在限制MPA或其部件的結(jié)構(gòu)、功能或范圍,而是僅僅意在幫助對以上描述的理解。設(shè)想了可以采用這些示例的眾多變型,以及下面討論的示例可以有眾多替代應(yīng)用。多層互連諸如以上所述的多處理器系統(tǒng)可能需要硬件(如DMR和PE)與軟件以協(xié)作的方式工作以完成特定的計(jì)算任務(wù)。為了實(shí)現(xiàn)系統(tǒng)的各種處理器之間的協(xié)作,可以使用網(wǎng)絡(luò)來在各個處理器之間傳輸數(shù)據(jù)和指令。在某些實(shí)施例中,可以采用多個網(wǎng)絡(luò)來用于處理器之間的通信。具有高數(shù)據(jù)吞吐能力的多處理器系統(tǒng)內(nèi)的網(wǎng)絡(luò)可以被指定為主互連網(wǎng)絡(luò)(PIN),該主互連網(wǎng)絡(luò)(PIN)可以由鏈路(即在節(jié)點(diǎn)之間布置的一條或更多條電線)和節(jié)點(diǎn)組成。節(jié)點(diǎn)可以具有可用來與本地處理引擎、本地存儲器單元或者多處理器陣列邊界處的I/O端口連接的端口。具有更低數(shù)據(jù)吞吐能力的、可以以類似方式構(gòu)建的其他網(wǎng)絡(luò)可以被指定為次級互連網(wǎng)絡(luò)(SIN),諸如例如在美國專利申請13/274138中描述的串行網(wǎng)絡(luò)。這種次級網(wǎng)絡(luò)可以用于控制、測試、調(diào)試、安全和任何其他適合的應(yīng)用。節(jié)點(diǎn)可以包括能夠在一個鏈路或端口與另一個鏈路或端口之間建立獨(dú)立的連接并且可以與DMR對應(yīng)的交換機(jī)。在某些實(shí)施例中,例如,位于集成電路的邊緣附近的節(jié)點(diǎn)可以具有用于與諸如隨機(jī)存取存儲器(RAM)或通用處理器(GPP)之類的相同或不同類型的其他IC芯片進(jìn)行芯片外通信的專用端口。在某些實(shí)施例中,PIN拓?fù)浣Y(jié)構(gòu)可以包括由節(jié)點(diǎn)的2維陣列構(gòu)成的2維網(wǎng)絡(luò)結(jié)構(gòu)。每個節(jié)點(diǎn)可以具有到另一個節(jié)點(diǎn)的北、南、東和西鏈路。通過向2維網(wǎng)絡(luò)結(jié)構(gòu)的每個節(jié)點(diǎn)添加“上”和“下”鏈路以允許連接一個或更多個2維網(wǎng)絡(luò)結(jié)構(gòu),可以實(shí)現(xiàn)3維網(wǎng)絡(luò)結(jié)構(gòu)??梢砸灶愃频姆绞竭B接3維網(wǎng)絡(luò)結(jié)構(gòu)以形成通常所稱的“超立方網(wǎng)絡(luò)結(jié)構(gòu)”。盡管已經(jīng)描述了2維和3維的網(wǎng)絡(luò)結(jié)構(gòu),但是在其他實(shí)施例中,可以采用任何合適數(shù)量的維度來形成多維網(wǎng)絡(luò)結(jié)構(gòu)。維度不需要在可能的范圍內(nèi)無窮;相反它可以循環(huán)返回到自身,以形成網(wǎng)絡(luò)結(jié)構(gòu)柱或網(wǎng)絡(luò)結(jié)構(gòu)環(huán)。并且在某些實(shí)施例中,一組PE可以與隨機(jī)形成然后被映射以給出到終點(diǎn)的地址的PIN互連。布線技術(shù)可以影響每個維度中的鏈路的相對密度。在某些實(shí)施例中,諸如電路板或超大規(guī)模集成(VLSI)IC,可用的布線密度在電路平面內(nèi)高,但是在第三個維度內(nèi)有限。通過在第三個維度內(nèi)使用較少鏈路,或通過把所有鏈路投射到電路平面內(nèi),可以容納3維網(wǎng)絡(luò)結(jié)構(gòu)。然后可以對節(jié)點(diǎn)和鏈路路由進(jìn)行調(diào)整以創(chuàng)建面積高效的布局。形成網(wǎng)絡(luò)的這種分層方法可以允許高維網(wǎng)絡(luò)而不需要獨(dú)特的制造技術(shù)。更高維度的互連網(wǎng)絡(luò)可以在計(jì)算資源,即處理引擎與存儲器單元之間提供更多的通信通路。在某些實(shí)施例中,鏈路可以橫跨存儲器單元被路由,在多處理器系統(tǒng)的硅面積增加最小的情況下允許附加的PIN資源。更高維度的網(wǎng)絡(luò)也可以使用包括硅穿孔(through-siliconvias,TSV)和各種類型的硅中介層技術(shù)的先進(jìn)的封裝技術(shù)來實(shí)現(xiàn)。為了實(shí)現(xiàn)分層建網(wǎng)方法,節(jié)點(diǎn)可以包括數(shù)據(jù)路徑交換機(jī)、流控制信令和路由器控制機(jī)構(gòu)(RCM)。數(shù)據(jù)路徑交換機(jī)可以被配置為建立連接,每個連接都實(shí)現(xiàn)鏈路和端口的允許子集之間的數(shù)據(jù)路徑。例如,可以在鏈路與不同鏈路之間、鏈路與端口之間以及端口與不同端口之間建立連接。在某些實(shí)施例中,數(shù)據(jù)路徑交換機(jī)可以包括字寬的位并行的復(fù)用器,該復(fù)用器的輸出可以耦接到鏈路或端口的外出部分,并且其輸入可以耦接到鏈路或端口的進(jìn)入部位。在某些實(shí)施例中,可以在鏈路或端口接口處使用時鐘同步的寄存器來緩沖進(jìn)入或外出的數(shù)據(jù)并調(diào)整其定時。在各種實(shí)施例中,數(shù)據(jù)路徑交換機(jī)可以用復(fù)用的單個級實(shí)現(xiàn),而在其他實(shí)施例中,數(shù)據(jù)路徑交換機(jī)可以用復(fù)用的多個級實(shí)現(xiàn)。本發(fā)明的一個實(shí)施例的多層IN交換節(jié)點(diǎn)以其最一般的形式包括針對多條通信通路的層交換和方向交換,其中所述多條通信通路可以起源于該節(jié)點(diǎn)、穿過該節(jié)點(diǎn)或終止于該節(jié)點(diǎn)。節(jié)點(diǎn)根據(jù)能配置的協(xié)議對到達(dá)其端口的入站數(shù)據(jù)進(jìn)行解釋以確定要對其做什么??捎涉溄拥絀N中的其他節(jié)點(diǎn)的端口接受的數(shù)據(jù)的最小單位也是鏈路上的經(jīng)受數(shù)據(jù)流控制的最小單位,并且在文獻(xiàn)中其被稱為流單位或“flit”。流控制信令可以調(diào)整橫跨每個連接的數(shù)據(jù)流,使得不會由于發(fā)送超過接收機(jī)能吸收的數(shù)據(jù)或者由于接收機(jī)復(fù)制發(fā)送機(jī)不能足夠快地發(fā)送的數(shù)據(jù)而使數(shù)據(jù)丟失。在源端口被發(fā)送到通道中的數(shù)據(jù)在某段等待時間后,可以出現(xiàn)在其終點(diǎn)端口。在某些情況下,等待時間段可以每穿過一個鏈路對應(yīng)一個時鐘周期。為了防止數(shù)據(jù)丟失,通道中的數(shù)據(jù)流的速率可以由硬件、軟件或其結(jié)合來控制。在某些實(shí)施例中,硬件流控制信令可以使用從發(fā)送機(jī)到接收機(jī)的指示數(shù)據(jù)已準(zhǔn)備好的二進(jìn)制電信號、以及從接收機(jī)到發(fā)送機(jī)的請求發(fā)送機(jī)應(yīng)當(dāng)在發(fā)送更多數(shù)據(jù)之前等待(停頓)的另一種二進(jìn)制電信號。這些流控制信號可以并行地遵循數(shù)據(jù)路徑,包括穿過數(shù)據(jù)復(fù)用器。路由控制機(jī)構(gòu)可以被配置為處理對資源(鏈路或端口)的連接請求。在某些實(shí)施例中,RCM可以跨多個輸入(一般從不同方向)搜索進(jìn)入信號。如果信號包含請求特定資源的代碼,則RCM可以檢查所請求的資源可用,即資源未被預(yù)先存在的連接預(yù)定。如果所請求的資源可用,則RCM可以同意該請求,向數(shù)據(jù)路徑復(fù)用器發(fā)送信號以建立連接,并且建立跨連接的流控制信令。相反,如果所請求的資源不可用,則RCM可以不同意該請求并可以向該請求輸入發(fā)信號使發(fā)送機(jī)停頓,直到不兼容的預(yù)先存在的狀況被消除。作為替代,RCM可以使該阻塞連接按時間共享并按照部分時間允許所請求的連接(通常稱為“切入(cut-through)”)。雖然對輸入的任何特定子集進(jìn)行停頓或時間共享,但是RCM可以對輸入的剩余集搜索進(jìn)入信號。RCM可以包括仲裁機(jī)構(gòu)以處理對可用資源的同時請求。如果對同一資源(鏈路或端口)的兩個或更多個連接請求同時到達(dá),則RCM可以對它們進(jìn)行仲裁并選擇贏者。在某些實(shí)施例中,仲裁方案可以是優(yōu)先級方案、循環(huán)方案或任何其他適合的仲裁方法。在其他實(shí)施例中,仲裁方案能夠被配置作為優(yōu)先級方案、循環(huán)或任何其他適合仲裁方法。當(dāng)收到了針對特定連接的終止命令時,RCM可以把終止命令中繼到任何輸出鏈路,并釋放與該連接相關(guān)聯(lián)的資源。釋放的資源可以立即可用于建立其他連接。在已經(jīng)建立了切入的情況下,RCM可以把資源交還給被切的預(yù)先存在的連接。注意,在各種實(shí)施例中,RCM可以執(zhí)行其他功能或工作。通過PIN的路由可以以分層方式執(zhí)行,其中在層次的不同等級采用不同技術(shù)。節(jié)點(diǎn)內(nèi)的RCM為最低級別,通信通路(通道)的建立和拆除為中間級別,而通路的組選擇以使相互干擾最小為最高級別。在節(jié)點(diǎn)級別,路由是基本且快速的,并且典型地由硬件實(shí)現(xiàn)。在路由層次的更高級別,路由更復(fù)雜并可以用軟件實(shí)現(xiàn)。在節(jié)點(diǎn)級別,路由是用路由控制機(jī)構(gòu)實(shí)現(xiàn)的,如上面更詳細(xì)地描述的。在某些實(shí)施例中,可以把RCM實(shí)施為狀態(tài)機(jī)。路由請求可以經(jīng)由端口從本地PE到達(dá)節(jié)點(diǎn)中。路由請求還可以被編碼在消息的頭部中從鏈路到達(dá)。如上面更詳細(xì)地描述的,被編碼在消息中的路由請求形成了通常稱為“蟲孔路由”的通道配置方法的基礎(chǔ)。在這種路由方法中,消息在源節(jié)點(diǎn)處組成并用描述了通道去往何方的頭部做前綴。在各種實(shí)施例中,可以采用不同的頭部風(fēng)格。RCM還可以監(jiān)視已連接的通道中的通信量,并且使用這種信息把連接局部地調(diào)整為更優(yōu)的布局。例如,如果在鏈路上時間共享兩條路徑,并且路徑之一與另一個連接相比相對較忙,則可以準(zhǔn)許RCM把更大比例的時間分配給具有更高通信量負(fù)載的路徑。在另一個示例中,如果交換節(jié)點(diǎn)具有附加鏈路來疏通本地通信量,則可以把通過的通信量轉(zhuǎn)移到這些鏈路,從而釋放本地資源以發(fā)起或終止路徑。當(dāng)不再需要路徑時,可以把“tail”代碼發(fā)送到路徑的源端口。在某些實(shí)施例中,tail代碼可以由系統(tǒng)的硬件自動發(fā)送。在其他實(shí)施例中,軟件可以控制tail代碼的發(fā)送。隨著tail代碼沿著建立的路徑傳播,各個RCM清除連接并釋放各自的路由資源。tail代碼的插入可以是經(jīng)由硬件自動的或者在軟件控制下發(fā)送。在某些實(shí)施例中,可以在鏈路中包括額外的數(shù)據(jù)位以使頭部和尾部字與消息主體區(qū)分開。字的奇偶位也可以在任何鏈路中運(yùn)送以協(xié)助數(shù)據(jù)完整性。通路(也被稱為通道)可以是靜態(tài)的或動態(tài)的。靜態(tài)路徑可以建立和用于給定應(yīng)用的持續(xù)期間,而動態(tài)路徑可以針對消息傳送而創(chuàng)建并然后拆除,為要形成的其他通路釋放鏈路和節(jié)點(diǎn)。在某些實(shí)施例中,動態(tài)路徑可以在稍后的時間由其自身的另一實(shí)例拆除并取代。如上所述,蠕蟲頭部可以包含諸如源地址、中間地址、終點(diǎn)地址以及模式請求之類的路由信息。這種信息中,通常需要終點(diǎn)地址并可以以許多不同方式對其編碼。在一個實(shí)施例中,可以把地址編碼為轉(zhuǎn)向的序列,而在其他實(shí)施例中,可以把地址編碼為笛卡爾X-Y對,或任何其他合適的編碼方法。在某些實(shí)施例中,路由信息可以采取導(dǎo)航單位序列的形式(通常稱為“nunit”)。nunit可以被編碼以請求在建立通信通路時所遇到的RCM以及每個節(jié)點(diǎn)的連接資源(鏈路和端口)和模式。最小(2位)的nunit代碼可以請求連接“向前直行”、“左轉(zhuǎn)”、“右轉(zhuǎn)”或“停止”。當(dāng)頭部消息經(jīng)過節(jié)點(diǎn)時,隨著連接指令被執(zhí)行,nunit序列可以從前方縮短。當(dāng)遇到“停止”指令時,RCM可以引導(dǎo)數(shù)據(jù)路徑復(fù)用器把蠕蟲消息的剩余部分交給寄存器以便由PE或DMA訪問。DMR中可以支持多個這種寄存器,以便同時支持多個通道。這種寄存器的地址可以映射到終點(diǎn)節(jié)點(diǎn)處的相應(yīng)的到達(dá)方向,使得特定的PE能夠等待消息從特定方向到達(dá)。盡管以上描述了2位的導(dǎo)航單位,但是在其他實(shí)施例中,任何數(shù)量的位可以用于導(dǎo)航,以允許用于具有更高維度網(wǎng)絡(luò)結(jié)構(gòu)連接的IN,并允許附加的路由器模式。例如,可以把附加位編碼在每個nunit中。附加的nunit位可以允許交換層的連接指令,“向上走”或“向下走”,并且可以與兩層或更多層的PIN兼容。附加的nunit位可用于修改路由器模式,諸如固定或最優(yōu)化,其中最優(yōu)化可應(yīng)用于時間共享的配量、使用非最近相鄰鏈路的快捷路由、或者其他最優(yōu)化。多處理器陣列(MPA)上的應(yīng)用軟件可能需要PE與芯片I/O接口之間和當(dāng)中的許多通信通路的整體。由于兩條或更多通路可能彼此阻塞,并且當(dāng)過多路徑擁擠到有限資源上時阻塞的概率變?yōu)楸厝?,所以通路整體的路由簡化為找到至少一個可行(無干擾)的路由整體。隨著路徑的密度增大,可行的整體可能變得更難以找到。路徑密度的度量是路徑對鏈路的填充比值(即,路徑總長度除以鏈路總長度),隨著填充比值接近100%,完成所有路徑路由可能變?yōu)闊o法實(shí)現(xiàn)。可以用被稱為“路由器”的軟件工具來實(shí)現(xiàn)通信通路(路徑)的整體的路由,其中路由器可以被包括作為軟件開發(fā)套件的一部分。(也許使用任務(wù)布局工具的)程序員可以為路由器工具提供也被稱為連線表(netlist)的需要路由的路徑的列表。最初,路徑可以僅僅由其源節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn)的位置指定。對于要路由的每條路徑,路由器可以選擇從源到終點(diǎn)的鏈路中的最短距離序列。在第一次通過后,存在阻塞其他路徑的路徑,可以使用阻塞減少技術(shù)對整體再路由??梢灾貜?fù)進(jìn)行阻塞減少的再路由,直到檢測不到阻塞。使路由過程更容易的方法可以包含重構(gòu)應(yīng)用軟件算法,以降低所需路徑的數(shù)量。在某些情況下,當(dāng)多條路徑正在尋找同一節(jié)點(diǎn)或試圖從節(jié)點(diǎn)離開時,路徑密度高。在這種情況下為了減少擁擠,算法可以跨多個節(jié)點(diǎn)分布,以便有效地跨更多鏈路分布消息通信量。在硬件再設(shè)計(jì)中,可以增加DMR鏈路容量以允許每節(jié)點(diǎn)更多的連接。使路由過程更容易的另一種方法可以包含提高每個DMR的可用連接資源(鏈路和交換機(jī))的數(shù)量。關(guān)于向DMR添加連接資源的目標(biāo),附加的資源可以被組織在被添加到IN的層中。每個添加層都可以包含一組節(jié)點(diǎn)到節(jié)點(diǎn)的連接,并且每個路由器可以包括一組數(shù)據(jù)路徑復(fù)用器、流控制信令和路由器控制機(jī)構(gòu)。為了準(zhǔn)許任何通信通路從一層跨越到另一層,可能需要附加的數(shù)據(jù)路徑交換機(jī)及其控制。圖5A示出了用于單層IN中的DMR節(jié)點(diǎn)550的單層方向交換機(jī)的示例性實(shí)施例。DMR節(jié)點(diǎn)之間的鏈路連接到每個DMR上的輸入端口和輸出端口。這些端口又連接到DMR中的方向交換機(jī)(路由器)。路由器輸入部件552、554、556和558在圖4B的下半部分(項(xiàng)482和項(xiàng)486)中被進(jìn)一步詳述。路由器輸出部件551、553、555和557在圖4B上半部分(項(xiàng)481、485、487和路由器控制邏輯489)中被進(jìn)一步詳述。注意,在圖4B中,輸入端口數(shù)據(jù)寄存器486對輸入流單元進(jìn)行緩沖并連接到三個路由器輸出部件(以左轉(zhuǎn)、向前直行或右轉(zhuǎn))和存儲器交換機(jī)488(用于終止通路)以及可直接用作連接的PE的快速端口(未示出)。在圖5A中,在路由器輸入部件與路由器輸出部件之間所畫的線表示可由輸出部件中的路由器控制邏輯489和數(shù)據(jù)路徑復(fù)用器485選擇的多位總線。圖5B例示了用于兩層IN中的DMR節(jié)點(diǎn)500的兩層方向交換機(jī)的實(shí)施例。在所例示的實(shí)施例中,節(jié)點(diǎn)500包括由輸出端口501、505、509和513組成的添加的全局(層B)以及輸入交換機(jī)的B側(cè)。圖5B中,在輸入交換機(jī)的B側(cè)與Go端口之間畫的線表示可由在Go端口處的數(shù)據(jù)路徑復(fù)用器選擇的多位總線的連接。在圖5B所例示的實(shí)施例中,預(yù)先存在的本地(A層)方向交換機(jī)可以與圖4B和圖5A中所示的方向交換機(jī)相同;但是為了保持圖5B整潔,僅示出了A層的輸出端口502、506、510和514以及輸入端口503、508、512和515。如圖5B中所示,節(jié)點(diǎn)500進(jìn)一步包括分別耦接到本地(層A)輸入端口503、508、512和515的輸入交換機(jī)504、507、511和516。輸入交換機(jī)的目的是允許入站通信通路從本地(層A)交換到全局(層B),或者從全局(層B)交換到本地(層A)。在某些實(shí)施例中,交叉開關(guān)交換機(jī)504、507、511和516可以由2個輸入和2個輸出(2×2)的交叉開關(guān)交換機(jī)組成,該交叉開關(guān)交換機(jī)能夠只有兩種狀態(tài),一種為直通連接而另一種是交叉連接。在圖5B所示的實(shí)施例中,輸入交換機(jī)控制邏輯(未示出)可以與路由器控制邏輯489分離。把輸入交換機(jī)控制邏輯與路由器控制邏輯放在一起可以被看作路由器控制機(jī)構(gòu)。每個交叉開關(guān)交換機(jī)都從A端口和B端口接收數(shù)據(jù),并且選擇性地使數(shù)據(jù)穿過同一層或者跨層穿過。本地(A層)輸出端口502、506、510和514可以從DMA或PE接受數(shù)據(jù),并且把數(shù)據(jù)傳輸?shù)礁髯缘腁鏈路。在某些實(shí)施例中,本地(A層)輸出端口也可以與輸入端口503、508、512和515連接以允許創(chuàng)建直通路由。全局輸出端口501、505、509和513可以從交叉開關(guān)交換機(jī)504、507、511和516的B側(cè)接受數(shù)據(jù),并且在各自的B鏈路上傳輸數(shù)據(jù)。在各種實(shí)施例中,全局輸出端口可以不聯(lián)合本地路由使用。注意,圖5B中例示的節(jié)點(diǎn)的端口配置僅僅是示例。在其他實(shí)施例中,端口的不同數(shù)量、配置和互連也是可能的。在圖6中例示了多處理器陣列的一部分的實(shí)施例。所例示的實(shí)施例包括DMR601,DMR601通過本地鏈路611和全局鏈路610耦接到DMR602。DMR601進(jìn)一步耦接到PE603,并且DMR602也進(jìn)一步耦接到DMR602。在DMR601中,全局鏈路610和本地鏈路611耦接到交叉開關(guān)交換機(jī)604,它進(jìn)一步耦接到全局端口605和本地端口606。在DMR602中,全局鏈路610和本地鏈路611被耦接到交叉開關(guān)交換機(jī)607,交叉開關(guān)交換機(jī)607進(jìn)一步耦接到全局端口608和本地端口609。在操作期間,從DMR601的本地端口606傳輸?shù)臄?shù)據(jù)可以耦接到本地鏈路611。在我們的示例中,交叉開關(guān)僅在輸入端口側(cè)。作為替代,從全局端口605傳輸?shù)臄?shù)據(jù)可以通過交叉開關(guān)交換機(jī)604耦接到本地鏈路611或全局鏈路610。此外,來自全局端口605的數(shù)據(jù)只能在全局鏈路610上出去。以類似方式,由DMR602經(jīng)由全局鏈路610收到的數(shù)據(jù)可以通過交叉開關(guān)交換機(jī)607路由到本地端口608或者全局端口609。注意,交叉開關(guān)交換機(jī)604僅僅具有直通或交叉這兩種活動狀態(tài)。例如,當(dāng)全局鏈路610被連接到本地端口608時,那么本地鏈路611只能連接到全局端口609,而當(dāng)全局鏈路610連接到全局端口609時,那么本地鏈路611只能連接到本地端口608。注意,圖6中例示的多處理器陣列的IN中的節(jié)點(diǎn)到節(jié)點(diǎn)鏈路的實(shí)施例僅僅是示例。在其他實(shí)施例中,DMR之間的不同數(shù)量和類型的連接是可能并被設(shè)想,包括雙向的和時間共享的連接。在圖7中例示了描繪DMR內(nèi)的可能內(nèi)部路由的框圖。在所例示的實(shí)施例中,DMR700包括本地端口701、703、705和707以及全局端口702、704、706和708。DMR700還包括本地存儲器709。在圖7所例示的實(shí)施例中,本地端口701耦接到本地端口703、705和707。本地端口701還耦接到本地存儲器708。在某些實(shí)施例中,如上面更詳細(xì)地描述的,可以由RCM來建立前述耦接,并且所述耦接可以允許在DMR700中的直通路由。例如,從相鄰DMR傳輸?shù)奖镜囟丝?01的數(shù)據(jù)可以穿過本地端口703、705和707中的任何一個的輸出部分。另外,通過本地端口701收到的數(shù)據(jù)可以存儲在本地存儲器709中。圖7中所例示的端口的數(shù)量及其布局以及內(nèi)部路由僅僅是示例。在各種實(shí)施例中,可以采用不同數(shù)量的端口和不同配置的內(nèi)部路由。在圖8例示了描繪DMR內(nèi)的可能全局路由的框圖。在所例示的實(shí)施例中,DMR800包括本地端口801、803、805和807以及全局端口802、804、806和808。在圖8所例示的實(shí)施例中,全局端口802耦接到全局端口804、806和808。在某些實(shí)施例中,如上面更詳細(xì)地描述的,可以由RCM來建立前述耦接,并且所述耦接可以允許DMR800中的直通路由。例如,從相鄰DMR傳輸?shù)饺侄丝?02的數(shù)據(jù)可以穿過全局端口804、806和808中的任何一個的輸出部分。圖8中所例示的端口布置僅僅是示例。在其他實(shí)施例中,不同數(shù)量的端口和不同布置的端口是可能的并被設(shè)想。在圖4至圖8中例示并在上面描述的實(shí)施例中,輸入交換機(jī)控制邏輯可以具有能配置的優(yōu)先級。在圖9中例示了描繪示例性輸入交換機(jī)控制優(yōu)先級的表。對于被編程為留在本地(層A)上的進(jìn)入通路路由,輸入路由器端口A可以具有比輸入路由器端口B更高的優(yōu)先級。在進(jìn)入全局(層B)路由的情況下,輸入路由器端口B可以具有比輸入路由器端口A更高的優(yōu)先級。但是,當(dāng)輸入路由器端口A和輸入路由器端口B請求同一資源時,取決于請求的類型,更高優(yōu)先級的端口可以控制輸入交換機(jī)的狀態(tài),由此訪問資源,而更低優(yōu)先級的端口可以在所請求的資源可用時跟隨,或者它可以在所請求的資源不可用時停頓。在圖9所例示的表中描繪了這種優(yōu)先級。圖9的路由表對應(yīng)于示例性路由協(xié)議的半自動模式,該半自動模式允許層交換機(jī)控制邏輯硬件在通路建立期間基于節(jié)點(diǎn)的當(dāng)前狀態(tài)和向其提交的方向交換請求來做出層交換選擇。這種模式有利于處理包含僅指定了方向請求的最小尺寸的nunit的流單元,并且在某些情況下它可以避免被其他通路阻塞。示例性路由協(xié)議的非自動模式可以不允許控制硬件邏輯有任何自由對數(shù)據(jù)路徑交換機(jī)(層或方向)做出選擇,而是相反,要求該選擇被編碼在到達(dá)的頭部流單元的當(dāng)前nunit中。這種模式可能需要比半自動模式更大的nunit,并且這些可以被成比例地供應(yīng)更多頭部流單元,以建立蟲孔路由的通信通路。這種模式有利于通過對應(yīng)用軟件所需的路徑整體具有寬得多的視野的軟件開發(fā)工具套件對通路位置進(jìn)行精確控制,并且相比于在無視其他通路進(jìn)行路徑選擇的情況下所獲得的結(jié)果,在避免阻塞和不可行的通路整體方面更有準(zhǔn)備。針對層交換機(jī)和方向交換機(jī)使用能配置的控制邏輯支持多模式路由協(xié)議。在示例性的HyperXDMR中,當(dāng)前配置由DMR中的寄存器保存,該寄存器的R/W可由應(yīng)用軟件訪問。每個DMR都可以與其他DMR獨(dú)立地配置,因此有可能用于建立蟲孔路由通路的頭部流單元根據(jù)其打算遇到的DMR的期望模式設(shè)置而具有混合尺寸的nunit。停頓重試注意,交叉開關(guān)交換機(jī)可以實(shí)施入站通路設(shè)置的所有情況,但是兩個端口(A和B)都請求本地(層A)訪問時的情況除外。當(dāng)兩個端口都請求本地訪問時,交叉開關(guān)交換機(jī)可以停頓輸入路由器端口B。在某些實(shí)施例中,交叉開關(guān)交換機(jī)可以允許訪問,但是下游構(gòu)造的優(yōu)先級邏輯可以停頓該請求。為了使對定時的影響最小化,可以把交叉開關(guān)交換機(jī)設(shè)計(jì)為基于僅使用當(dāng)前頭部流單元請求和交叉開關(guān)狀態(tài)的最小邏輯來切換到合適的狀態(tài)。不考慮其他的下游停頓。這可能導(dǎo)致基于有限的狀態(tài)關(guān)注而可能做出潛在不良的決策的情況。這些情況全都可以由以下單組條件描述:輸入交叉開關(guān)當(dāng)前未“鎖定”在現(xiàn)有的活動事務(wù)上。全局請求由到達(dá)A和/或B端口的第一個頭部流單元提出。基于優(yōu)先級方案,第一個頭部流單元可以被放在B’(全局)總線上并發(fā)送到Go端口邏輯。該Go端口邏輯要么已經(jīng)被(來自不同方向的)另一條通路使用,要么正在接收來自具有更高優(yōu)先級的方向的、在同一周期中的第二個頭部流單元請求。在這些條件下,第一個頭部流單元將在輸入交叉開關(guān)的下游被停頓,因此它將不得不等待Go端口變?yōu)榭捎?。在這種情況下,有可能與所請求的路由方向相關(guān)聯(lián)的輸出端口(層A)可用于全局路由,但是邏輯太過復(fù)雜而不能在單個周期中執(zhí)行來檢測到。在這種情況下,可以采用“停頓和重試”策略。當(dāng)前述狀況發(fā)生時,可以停頓請求;并且在相同的完整時鐘周期期間評估所有必要的邏輯以確定層交換輸入交叉開關(guān)的不同決策是否將提供清晰的路徑。如果是這種情況,那么可以在下一個上升時鐘沿記錄相關(guān)信息,并且可以聯(lián)合任意新的請求來評估重試。當(dāng)沒有新的請求(在同一端口或其他端口上)與重試沖突時,那么可以同意重試并且可以在可替代路徑上完成路由。前述方法提供了對全局路由結(jié)構(gòu)的充分使用,就好像在不以造成臨界速度路徑的方式使周期的邏輯負(fù)擔(dān)過重的情況下在第一個請求周期中考慮了所有狀況。基于構(gòu)造中的當(dāng)前狀況,路由建立仍然是確定性的,但是當(dāng)需要重試時,路由可能花費(fèi)額外的周期以穿過DMR。圖9中所例示的表中所描述的優(yōu)先級僅僅是示例。在其他實(shí)施例中,不同優(yōu)先級是可能的并被設(shè)想。還要注意,在各種實(shí)施例中,交叉開關(guān)可以由硬件或軟件(比如,nunit/流單元編程和控制寄存器)或其組合控制。在圖10中例示了多層路由的示例。在所例示的實(shí)施例中,PE1006創(chuàng)建了從DMR1001的東端口路由到DMR1003的西端口的蠕蟲頭部。路由起源于路由器端口A或DMR1001,然后行進(jìn)到DMR1002。到達(dá)DMR1002時,DMR1002中的層交換輸入交叉開關(guān)決定使用路由器端口B(全局端口)把該蠕蟲向前發(fā)送到DMR1003上。到達(dá)DMR1003時,DMR1003中的層交換機(jī)把該路由交換回本地(層A)輸入端口,允許蟲孔路徑在此終止。另外在圖10中例示了由PE1007創(chuàng)建以從DMR1005的北端口行進(jìn)到DMR1004的西端口的蠕蟲路由。該路由起源于DMR1005的路由器端口A(北)。如上面參考圖9中所例示的優(yōu)先級表描述的,路由交換到DMR1001的路由器端口B(東)。由于輸入交叉開關(guān)交換機(jī)的固定狀態(tài)(例如,交叉開關(guān)交換機(jī)已經(jīng)被由PE1006建立的路由設(shè)置方向,如上所述),所以路由交換到DMR1002的路由器端口A(西)。因?yàn)橥瑯拥脑?,路由在DMR1003交換返回全局路由級(級B)。路由經(jīng)由路由器端口B離開DMR1003并進(jìn)入DMR1004,然后被交換到本地輸入路由端口,在此蟲孔路由終止。注意,圖10中所描繪的路由僅僅是示例。在其他實(shí)施例中,不同數(shù)量的路由和不同的路由路徑是可能的。安全旁路路由可能需要保護(hù)MPA芯片的區(qū)域免于MPA芯片的其他區(qū)域的影響。由于各種原因,MPA的一個區(qū)域可以包含與設(shè)備控制、IP許可、用戶授權(quán)等有關(guān)的敏感數(shù)據(jù),或者運(yùn)行對適當(dāng)操作關(guān)鍵的算法。與此同時,MPA的另一個區(qū)域可能正在執(zhí)行還未被驗(yàn)證為安全的軟件。未驗(yàn)證的軟件可能因?yàn)楦鞣N原因(它可以是新的并帶有許多瑕疵,或者該源代碼對安全驗(yàn)證不可用,或者它相當(dāng)?shù)拇蠛蛷?fù)雜以至于對其進(jìn)行驗(yàn)證不經(jīng)濟(jì))而存在。未驗(yàn)證的軟件可以包含病毒或間諜軟件??梢园严x孔路由的通信通路設(shè)計(jì)為源于一個區(qū)域中、探查另一個區(qū)域并復(fù)制入或復(fù)制出數(shù)據(jù)或指令。為了防止這種探查,DMR的鏈路和端口可以設(shè)計(jì)為使得可以能配置地停用它們,見以上引用的美國專利申請序列號13/274138。在一個實(shí)施例中,在圖8A中示出了所涉及的DMR鏈路和端口,其中圓形特征是可以停用消息通信量的點(diǎn)。在圖8A中還示出了到串行總線的SBS接口中的配置寄存器,該寄存器被設(shè)計(jì)為可以寫入單獨(dú)的位以停用DMR端口/鏈路中的每一個。串行總線可以是可用于配置和調(diào)試目的的芯片上的低帶寬的次級互連網(wǎng)絡(luò)(SIN)。圖19示出了具有被憑手畫的邊界所勾畫的區(qū)域的MPA,其中該區(qū)域可以通過使邊界處的通信通路停用來進(jìn)行保護(hù)。安全區(qū)域內(nèi)的通信路徑不受邊界處被停用的通信影響。但是,所劃界的區(qū)域足夠大,以至妨礙了保護(hù)區(qū)域兩邊的PE之間的通信。因此需要有一種方法來在不侵犯安全區(qū)域的安全的情況下使不安全的消息路由橫跨保護(hù)區(qū)域(在本文被稱為“安全旁路路由”)??梢酝ㄟ^把DMR設(shè)計(jì)為能夠能配置地限制蠕蟲消息連接到本地存儲器和PE端口但是允許安全區(qū)域上方的旁路,來實(shí)現(xiàn)安全旁路路由。DMR可以被設(shè)計(jì)為使得存儲器和PE端口除了間接地通過層交換機(jī)(輸入交叉開關(guān))之外,只直接連接到本地層A的數(shù)據(jù)路徑,而不直接連接到其他層的數(shù)據(jù)路徑。在這種DMR實(shí)施例中,蠕蟲消息層交換被限于輸入交叉開關(guān),并且防止蠕蟲消息在DMR中交換層的方法是把交叉開關(guān)鎖定為直通狀態(tài)。對于兩層IN,交叉開關(guān)只有兩種狀態(tài)(通過或交叉)。當(dāng)這些交叉開關(guān)被鎖定為通過狀態(tài)時,那么任何入站蠕蟲消息都被限制從同一層上的交叉開關(guān)離開。在圖5A所例示的實(shí)施例中,在本地層A上入站的蠕蟲消息可以在層A的輸出端口上離開,或者它們可以在輸入端口終止。在全局層B上入站的蠕蟲消息只可以在層B的GO端口上離開。對于三層和更多層IN,交叉開關(guān)可以具有許多狀態(tài)并且可以包括任意輸入層到本地層A的連接。如果這些“連接到本地輸入端口”狀態(tài)是被解鎖的狀態(tài),那么上層上的入站蠕蟲消息可以交換層但是被從輸入端口排除,從而保持了輸入端口的安全。在某些情形下,可取的是允許某些上層入站通信通路到達(dá)DMR輸入端口,并且這可以用DMR配置寄存器中的更多編程位來實(shí)現(xiàn)。在圖19中例示了安全區(qū)域上方的不安全通信通路,其中虛線描繪了經(jīng)過安全區(qū)域上的全局(層B)鏈路上的路由;并且它不在安全區(qū)域內(nèi)起源或終止。在圖20所例示的實(shí)施例中,在以下示例中描述了在安全區(qū)域上創(chuàng)建旁路的事件序列。注意在本示例中,術(shù)語“config-reg”是配置寄存器的縮寫:●用在上方路由保護(hù)PE(0,0)和DMR(1,1)。-設(shè)置PE(0,0)--加載其IM然后保護(hù)其免于進(jìn)一步的R/W●如果需要的話,設(shè)置SBS(0,0)配置寄存器以重置PE(0,0)●通過SB寫入PE(0,0)的所有IM并選擇性地驗(yàn)證●設(shè)置SBS(0,0)配置寄存器位,以停用IM總線并鎖定SBS配置寄存器●可選擇地讀取SBS配置寄存器以確認(rèn)其被鎖定-建立DMR(1,1)●如果需要的話,設(shè)置SBS(1,1)配置寄存器位以重置DMR(1,1)●可選擇地初始化DMR(1,1)并驗(yàn)證●設(shè)置SBS(1,1)配置寄存器位以停用北和東端口以及IM總線,并鎖定配置寄存器●可選擇地確認(rèn)SBS配置寄存器和IM總線被鎖定●停用所有A端口并設(shè)置輸入交叉開關(guān)鎖定器位●停用PE總線NE、NW、SE;并且鎖定配置-DMR(1,1)是安全的,因?yàn)橹挥蠵E(0,0)具有讀或?qū)懫銬M或寄存器的訪問權(quán)限并且PE(0,0)被保護(hù);并且忽視了到達(dá)DMR端口或SBS的消息。-在保護(hù)PE(0,0)和DMR(1,1)之后,存在不會與其互動的許多可能的旁路路由。例如,使用位于DMR(1,0)北部的DMR(2,0)(未示出)中的快速端口的PE(1,0)可以把頭部流單元寫到DMR(2,0)南快速端口,該南快速端口在A層上到達(dá)DMR(1,1)并然后被交換到B’層。旁路路由可以在鏈路上繼續(xù)到B層上的DMR(1,1)。在DMR(1,1)內(nèi)部,旁路路由可以根據(jù)頭部流單元中的nunit信息往北、南或東。假設(shè)nunit選擇南,那么旁路路由會繼續(xù)到DMR(0,1),在此它可以在B層上繼續(xù),或者既然它在安全區(qū)域外部,它可以交換到A層并繼續(xù)路由或終止。在保護(hù)PE(0,0)和DMR(1,1)之后,存在不會與其互動的許多可能的旁路路由。例如,使用位于DMR(1,0)北部的DMR(2,0)(未示出)中的快速端口的PE(1,0)可以把頭部流單元寫到DMR(2,0)南快速端口,該南快速端口在A層上到達(dá)DMR(1,1)并然后被交換到B’層。旁路路由可以在鏈路上繼續(xù)到B層上的DMR(1,1)。在DMR(1,1)內(nèi)部,旁路路由可以根據(jù)頭部流單元中的nunit信息往北、南或東。假設(shè)nunit選擇南,那么旁路路由會繼續(xù)到DMR(0,1),在此它可以在B層上繼續(xù),或者既然它在安全區(qū)域外部,它可以交換到A層并繼續(xù)路由或終止在示例性的HyperXDMR節(jié)點(diǎn)中用于實(shí)施協(xié)議的控制邏輯和數(shù)據(jù)路徑交換在兩個階段中執(zhí)行——首先層交換交叉開關(guān),然后方向交換路由器。作為替代,在其他實(shí)施方式中,方向交換可以首先出現(xiàn),其次是層交換。在其他實(shí)施方式中,這兩個階段可以被一起集成在統(tǒng)一的交換中。作為替代,可以用超過兩個階段來實(shí)施協(xié)議和交換。示例性的DMR路由器實(shí)施方式具有作為多層交換機(jī)的兩層版本的層交換機(jī)(輸入交叉開關(guān)),而示例性的方向交換是多方向交換機(jī)的三方向版本。本實(shí)施例不把這些交換機(jī)部件中的任何一個限于本示例性的DMR實(shí)施方式的層和方向的數(shù)量。通過對示例性的實(shí)施方式進(jìn)行微小修改,可以容易地把概念擴(kuò)展到許多層和許多方向。這些擴(kuò)展形式支持附加的IN連接維度。在此描述并在示例性的HyperX架構(gòu)中使用的蟲孔路由方法通過使用連續(xù)頭部流單元提供了無限的地址空間。對于短距離通信,單個頭部流單元可以是所需要的一切。當(dāng)DMR遇到僅具有一個非終止nunit的第一個頭部流單元時,那么DMR可以執(zhí)行nunit指定的方向選擇,丟棄第一個流單元,把第二個流單元推到第一個流單元,并把蠕蟲消息向前發(fā)送到下一個DMR。如果需要穿過跨許多fMPA芯片伸展的MPA,則可以組成非常長的頭部。蠕蟲消息頭部的有限地址使用固定數(shù)量的位來指定蠕蟲的終點(diǎn)地址。對于低維度IN,有限尋址不妨礙在此描述的多層方法,但是它可能隨著IN維度增加而變得低效。為了提供自動的迂回路由,路由引擎可以本地地以及更多是全局地使用關(guān)于路由擁塞的信息,以允許其繞著擁塞區(qū)進(jìn)行路由??梢哉粘S?jì)劃通路路由并將其編程到頭部流單元中,然后如果沿途遇到擁擠,可以進(jìn)行未計(jì)劃的迂回來避免。IN節(jié)點(diǎn)的路由控制機(jī)構(gòu)可以單獨(dú)地或者聯(lián)合來自相鄰節(jié)點(diǎn)的本地或全局的信息計(jì)算迂回。節(jié)點(diǎn)可以按照需要增加nunit或頭部流單元以實(shí)現(xiàn)迂回,在此之后蠕蟲消息可以在其預(yù)先計(jì)劃的路由上繼續(xù)直到其終點(diǎn)。如果時間知識也被包括在路由信息中,則擁塞的估計(jì)時長也用作路徑確定的一部分。總之,這是先前描述的固定路徑方法的擁塞避免適應(yīng)性改變??梢愿鶕?jù)由圖22中的框圖所例示的方法來確定擁塞。在本框圖中,正方形盒代表DMR。中央的標(biāo)注有“A”的DMR能夠通過以下列方式收集來自其鄰居的擁塞信息來做出關(guān)于擁塞的決定。周圍的DMR(B1-B8)可以向DMRA提供關(guān)于本地和全局的擁擠信息的度量。從DMRB1到DMRA的單個度量告知DMRA有關(guān)DMRB1自己正在觀察的擁塞級別。這是本地?fù)砣攘?。DMRB1還通過從與其相鄰但不是DMRA的鄰居的DMR收集信息來向DMRA提供全局擁塞度量。這些與DMRB1相鄰但不是DMRA的鄰居的DMR已經(jīng)在圖22中標(biāo)為“C”。類似地,DMRB2向DMRA提供了本地?fù)砣攘俊K€通過收集與其相鄰但不是DMRA的鄰居的DMR收集信息來向DMRA提供全局擁塞度量。這些與DMRB2相鄰但不是DMRA的鄰居的DMR已經(jīng)在圖22中標(biāo)為“D”。如圖22中所指示的,針對DMR的所有鄰居重復(fù)該過程。注意,這種確定擁塞的方法可以擴(kuò)展到多維中,并且可以使用來自更遠(yuǎn)的鄰居的信息來確定全局擁塞,如PIN的拓?fù)浣Y(jié)構(gòu)和計(jì)算自動迂回路由的算法的需要所要求的。鏈路帶寬改善存在幾種增大兩個DMR單元之間的任一鏈路的帶寬的方法。一種方法是增加每個鏈路的跡線(電線)的數(shù)量。另一種是用諸如雙倍數(shù)據(jù)速率(DDR)之類的更快的協(xié)議運(yùn)行鏈路層。再另一種是包括同一物理層上的邏輯路由的時分復(fù)用(TDM)。對于TDM,重要的是對離開鏈路的數(shù)據(jù)流進(jìn)行可靠的解復(fù)用。一種直截了當(dāng)?shù)姆椒ㄊ窃黾酉蛳掳l(fā)送到物理鏈路的每個流單元的位數(shù),所贈加的位是標(biāo)簽(lag)。標(biāo)簽位攜帶有用于其余位所屬于的蠕蟲消息的代碼。n位的標(biāo)簽可以編碼多達(dá)2n個不同的蠕蟲消息,其中每個的長度都未限制。其他模式可以把每個蠕蟲消息劃分成包,并把頭部流單元應(yīng)用到每個包。這些包頭部流單元可以包含消息標(biāo)識符和其他信息以幫助解復(fù)用。直接存儲器訪問FIFO諸如上面所述的多處理器陣列(MPA)可以用于用復(fù)雜算法處理高速數(shù)據(jù)流。這些數(shù)據(jù)流經(jīng)常是連續(xù)的并以恒定速率到達(dá)和離開。但是,PE更適合以每次一塊(block-at-a-time)的形式來處理存儲器中的數(shù)據(jù);因此與連續(xù)的數(shù)據(jù)流存在不匹配。對這個問題的一種解決方案是分配一部分存儲器用作緩沖存儲器,也被稱為緩沖區(qū)。典型地,在被編譯以操作MPA的應(yīng)用軟件中指定緩沖區(qū)。緩沖區(qū)可以在編譯時間被靜態(tài)地分配,或者在操作期間被動態(tài)地分配。在任何特定應(yīng)用軟件內(nèi),可以存在許多緩沖區(qū),例如用于數(shù)據(jù)流的分析和綜合。如之前所述,術(shù)語“陣列”并不意味著暗示任何維度。存儲器緩沖區(qū)(本文稱為“緩沖區(qū)”)可以向多處理器陣列內(nèi)的數(shù)據(jù)路徑提供彈性的質(zhì)量。例如,緩沖區(qū)能夠吸收短期的數(shù)據(jù)速率變化(假設(shè)平均輸入和輸出數(shù)據(jù)速率匹配)。在某些應(yīng)用中,可能需要把高速率數(shù)據(jù)流分成多個低速率數(shù)據(jù)流。作為替代,在其他應(yīng)用程序中可能需要把多個低速率數(shù)據(jù)流合并成單個高速率數(shù)據(jù)流。這些操作可能要求在任何數(shù)據(jù)流內(nèi)沒有數(shù)據(jù)的丟失或重復(fù)。PE可以用來把數(shù)據(jù)存儲到為存儲器緩沖區(qū)分配的存儲器的部分中。同一個PE或另一個PE可以用來從緩沖區(qū)檢索數(shù)據(jù)。但是,這種數(shù)據(jù)存儲和檢索的方法未充分使用PE的能力。在某些實(shí)施例中,更簡單的直接存儲器訪問(DMA)引擎可以用來訪問緩沖區(qū)并移動數(shù)據(jù),從而釋放PE以用于其他更復(fù)雜的任務(wù),或者使其空閑以節(jié)省能量。在某些實(shí)施例中,DMA引擎可以在端口和本地存儲器之間傳送數(shù)據(jù)時執(zhí)行大多數(shù)工作。當(dāng)PIN端口包含可以被同時操作的輸入和輸出部分這兩者時,分開的DMA引擎對每個部分可以是必要的。轉(zhuǎn)向圖11,例示了DMA引擎的框圖。DMA引擎1101包括地址生成器1102、存儲器接口1103、網(wǎng)絡(luò)I/O1104和控制寄存器1105。存儲器接口1103可以耦接到諸如SRAM之類的外部存儲器。在各種實(shí)施例中,網(wǎng)絡(luò)I/O1104可以耦接到多處理器陣列的外部I/O端口或任何合適的內(nèi)部端口。地址生成器1102可以包括根據(jù)許多可能的計(jì)數(shù)器配置之一設(shè)計(jì)的計(jì)數(shù)器。在某些實(shí)施例中,計(jì)數(shù)器可以被配置為重置到預(yù)定值。地址生成器1102還可以包括諸如加法器之類的例如被配置為使計(jì)數(shù)器的輸出與附加數(shù)據(jù)結(jié)合以形成在訪問存儲器中要使用的地址值的電路。被配置為存儲索引值的單獨(dú)的計(jì)數(shù)器也可以包括在地址生成器1102中??刂萍拇嫫?105可以包括被配置為存儲用于DMA引擎1101的控制信息的一個或更多個鎖存器、觸發(fā)器或任何其他合適的存儲電路。例如,控制寄存器1105可以存儲可用來影響數(shù)據(jù)傳送的方向、起始地址和地址值之間的增量(通常稱為“步幅(stride)”)等的信息。在某些實(shí)施例中,可以在多處理器陣列的初始化或引導(dǎo)過程把控制信息寫到控制寄存器1105中。存儲器接口1103可以被配置為采用各種存儲器接口方法之一。在某些實(shí)施例中,存儲器接口1103可以提供例如諸如時鐘之類的定時信號、模式選擇信號、地址值和到DMA引擎1101外部的存儲器的輸入數(shù)據(jù)值。外部存儲器可以駐留在多處理器陣列內(nèi)部或外部。在各種實(shí)施例中,外部存儲器可以包括動態(tài)隨機(jī)存取存儲器(DRAM)、SRAM、只讀存儲器(ROM)或諸如例如FLASH之類的非易失性存儲器。注意,圖11中所例示的DMA引擎的實(shí)施例僅僅是示例。在其他實(shí)施例中,不同的功能塊和塊的不同配置是可能的并被設(shè)想。可以使用協(xié)議來協(xié)調(diào)輸入到緩沖區(qū)的數(shù)據(jù)和從緩沖區(qū)輸出的數(shù)據(jù)。這種協(xié)議可以防止數(shù)據(jù)在緩沖區(qū)中被覆寫,并且在其他實(shí)施例中,防止在緩沖區(qū)內(nèi)的數(shù)據(jù)重復(fù)。協(xié)議可以由輸入到輸出的數(shù)據(jù)順序進(jìn)行分類。有兩種主要的順序:先進(jìn)先出(FIFO)和先進(jìn)后出(FILO)。在FIFO中,數(shù)據(jù)的次序可以不改變,而在FILO中,數(shù)據(jù)的次序可以反轉(zhuǎn)。轉(zhuǎn)向圖12,例示了用于操作DMA引擎的方法的實(shí)施例。一并參考圖11和圖12,方法在方框1201中開始。然后初始化起始地址和索引(框1202)。在某些實(shí)施例中,起始地址可以被加載到地址生成器1102中的計(jì)數(shù)器中,初始索引值也可以存儲在地址生成器1102中所包括的另一個計(jì)數(shù)器中。然后可以從存儲器讀取數(shù)據(jù)字(框1203)。在某些實(shí)施例中,存儲器接口1102可以使用由地址生成器1103提供的地址值來訪問DMA引擎1101外部的存儲器。從外部存儲器讀取的數(shù)據(jù)可以臨時存儲在存儲器接口1102中。所讀取的數(shù)據(jù)字然后可以被寫到PIN端口(框1104)。在各種實(shí)施例中,數(shù)據(jù)字可以從存儲器接口1103傳送到網(wǎng)絡(luò)I/O1104,以輸出到PIN端口。然后遞增當(dāng)前地址(框1205)。在某些實(shí)施例中,可以以存儲在控制寄存器1105之一中的步幅值遞增當(dāng)前地址。然后遞減索引值(框1206)。在某些實(shí)施例中,索引值被遞減的量也可以存儲在控制寄存器1105中。本方法然后依賴于經(jīng)遞減的索引值(框1207)。當(dāng)經(jīng)遞減的索引值大于預(yù)定閾值時,使用遞增的地址值從存儲器讀取新的數(shù)據(jù)字(框1203),并且本方法如上所述地繼續(xù)。當(dāng)遞減的索引值小于或等于預(yù)定閾值時,本方法結(jié)束(框1208)。在某些實(shí)施例中,預(yù)定閾值可以為零,但是其他值是可能的。注意,圖12中所例示的方法僅僅是示例。在其他實(shí)施例中,不同的操作和不同的次序或操作是可能的并被設(shè)想。另外,術(shù)語“遞增”和“遞減”并非意在把相相關(guān)聯(lián)的操作限制為加法和減法,因?yàn)榕c負(fù)數(shù)相加提供的結(jié)果與減法相同,而與負(fù)數(shù)相減提供的結(jié)果與加法相同。對術(shù)語“大于”和“小于”也類似地不作限制。在圖13中,例示了操作DMQ引擎的另一種方法。一并參考圖11和圖13,本方法從框1301開始。然后初始化起始地址和索引(框1302)。在某些實(shí)施例中,可以把起始地址加載到地址生成器1102中的計(jì)數(shù)器之中。初始索引值頁可以存儲在地址生成器1102中所包括的另一個計(jì)數(shù)器中。然后可以從PIN端口中讀取數(shù)據(jù)字(框1303)。在某些實(shí)施例中,數(shù)據(jù)字可以通過網(wǎng)絡(luò)I/O1104接收并被傳送到存儲器接口1103以臨時存儲。然后可以使用了由地址生成器1102提供的地址值把所收到的數(shù)據(jù)字寫到存儲器(框1304)。然后遞增當(dāng)前地址(框1305)。在某些實(shí)施例中,可以以存儲在控制寄存器1105之一中的步幅值遞增當(dāng)前地址。然后遞減索引值(框1306)。在某些實(shí)施例中,索引值被遞減的量也可以存儲在控制寄存器1105中。本方法然后依賴于經(jīng)遞減的索引值(框1307)當(dāng)經(jīng)遞減的索引值大于預(yù)定閾值時,使用遞增的地址值從存儲器讀取新的數(shù)據(jù)字(框1303),并且本方法如上所述地繼續(xù)。當(dāng)遞減的索引值小于或等于預(yù)定閾值時,本方法結(jié)束(框1308)。在某些實(shí)施例中,預(yù)定閾值可以為零,但是其他值是可能的。注意,圖13中所例示方法的操作被描繪為以順序的方式執(zhí)行。在其他實(shí)施例中,可以并行地或以不同次序執(zhí)行操作。在諸如圖12和圖13中所例示的DMA引擎的操作期間,應(yīng)當(dāng)小心謹(jǐn)慎,以防止存儲器中的數(shù)據(jù)覆寫或數(shù)據(jù)重復(fù)。在某些實(shí)施例中,當(dāng)PIN或本地存儲器不能從DMA引擎接受數(shù)據(jù)或向DMA引擎提供數(shù)據(jù)時,DMA引擎可以停頓,即不執(zhí)行讀或?qū)懖僮?。在這種情況下,DMA引擎可以把最近讀或?qū)懙臄?shù)據(jù)字存儲在寄存器中,以在稍后的時間使用。也可以將有關(guān)停頓的信息從DMA引擎的端口側(cè)傳播到DMA引擎的存儲器側(cè),反之亦然。例如,來自PIN端口的忙指示可以使DMA引擎停頓通過其存儲器接口產(chǎn)生讀或?qū)懻埱?。?shù)據(jù)流可以比緩沖區(qū)的大小更長。在這種情況下,有必要協(xié)調(diào)數(shù)據(jù)輸入(填入)過程和數(shù)據(jù)消除(排出)過程,以防止數(shù)據(jù)的丟失或重復(fù)。在某些實(shí)施例中,可以使用兩個緩沖區(qū)(一個被填充而另一個被排出)。這種技術(shù)通常被稱為“雙重緩存”。在操作期間,當(dāng)填充緩沖區(qū)變滿時,輸入數(shù)據(jù)流可以交換到排出緩沖區(qū)。當(dāng)排出緩沖區(qū)變空時,發(fā)生類似的交換;然后從填充緩沖區(qū)讀取輸出流。緩沖區(qū)交換角色的過程經(jīng)常被稱為“緩沖區(qū)交換”,并且可以通過交換到緩沖區(qū)存儲器地址的指針來實(shí)現(xiàn)。在某些實(shí)施例中,使用更復(fù)雜的控制器來保持跟蹤哪個地址正被寫入以及哪個地址正被讀取可以把對兩個緩沖區(qū)的使用折疊到單個緩沖區(qū)中。用DMAFIFO邏輯可以實(shí)現(xiàn)固定復(fù)用的形式。因?yàn)镈MA引擎在物理上比DMR小的多,所以DMR可以包含多個DMA寫入引擎和多個DMA讀取引擎。對在同一緩沖區(qū)上工作的多個DMA引擎的耦合控制允許把多個數(shù)據(jù)流合并為一個輸出流,或者相反,可以把單個輸入數(shù)據(jù)流分為多個輸出數(shù)據(jù)流。另外,多個DMA引擎的耦合控制可以包括與流控制邏輯的協(xié)調(diào)以防止數(shù)據(jù)的丟失或重復(fù)。采用固定的交錯模式,對耦合控制的設(shè)計(jì)相對直截了當(dāng);并且如果輸入流中的數(shù)據(jù)包長度全都相同,則可以對控制邏輯進(jìn)行簡化;但是,這些都不是本發(fā)明的限制。如上所述,可以利用控制器來協(xié)調(diào)訪問單個FIFO緩沖區(qū)存儲器的多個DMA引擎??刂破骺梢耘渲脼樵试S在另一個DMA引擎正在向FIFO緩沖區(qū)存儲器進(jìn)行寫入的同時,多個DMA引擎從FIFO緩沖區(qū)存儲器中進(jìn)行讀取。執(zhí)行讀操作的DMA引擎(DMAR)的數(shù)量可以取決于從最近的PIN節(jié)點(diǎn)面向存儲器的雙向PIN端口的數(shù)量。這種配置可以只使用DMA引擎,即不需要PE,來提供支持?jǐn)?shù)據(jù)劃分和重排序的靈活性。為了支持?jǐn)?shù)據(jù)重排序和數(shù)據(jù)流的劃分,對多個讀取步幅的支持可以是必要的。也可以以附加的硬件復(fù)雜度為成本來利用對多個讀取步幅的支持。在某些實(shí)施例中,可以權(quán)衡邏輯電路的復(fù)雜度和功耗來調(diào)整數(shù)據(jù)經(jīng)過緩沖區(qū)和多個DMA引擎的系統(tǒng)的等待時間。用于多個DMA引擎的DMA控制器可以被配置為支持單次且連續(xù)的DMA、伴有多個讀取的單個寫入、以及伴有多個寫入的單個讀取。在某些實(shí)施例中,連同DMA控制器和多個DMA引擎使用的FIFO緩沖區(qū)可以以硬件被“充分保護(hù)”,即,一旦已經(jīng)配置了控制器及其相關(guān)聯(lián)的DMA引擎,就不需要附加的軟件控制。用于多個DMA引擎的控制器可以由被配置用于指針比較和停頓條件檢測的邏輯電路構(gòu)成,并且在各種實(shí)施例中這些電路可以以模塊的形式構(gòu)造。例如,邏輯電路可以被配置為支持單個FIFO緩沖區(qū)操作。然后可以對這些邏輯電路復(fù)制所需的任意次數(shù),以支持期望數(shù)量的FIFO緩沖區(qū)操作。在各種實(shí)施例中,可以根據(jù)功耗需求來調(diào)整用于比較的地址位的數(shù)量。轉(zhuǎn)向圖14,例示了描繪用于單個讀取單個寫入實(shí)現(xiàn)的指針的可能配置的圖。注意,盡管圖14中所例示的圖描繪了單個讀取單個寫入的情況,但是諸如兩個讀取單個寫入的其他實(shí)施方式是可能的并被設(shè)想。在圖14所描繪的每種情況中,WRAP值用來指示在連續(xù)DMA模式中寫指針已經(jīng)折回到FIFO的起始。當(dāng)寫指針已經(jīng)折回時,與該緩沖區(qū)相關(guān)聯(lián)的讀指針可以繼續(xù)到FIFO的末尾,并且不需要進(jìn)一步的檢查。當(dāng)前述讀指針到達(dá)緩沖區(qū)的末尾時,WRAP值被清除并且FIFO返回到正常模式。當(dāng)WRAP值等于零時,讀取停頓條件由以下確定:((RD_PRT–WR_PRT)大于或等于零)在WRAP值為1的情況中,讀指針與寫指針之間的類似對比將提供非負(fù)結(jié)果的寫停頓值。圖14中所描繪的其余情況是針對讀和寫都不停頓。在圖14所例示的示例中,情況1、2、6和7適用于一次DMA操作。當(dāng)DMAFIFO開始時,根據(jù)情況1來組織讀指針和寫指針。允許對FIFO寫入,但是讀取停頓。在正常操作期間(見情況2),寫指針領(lǐng)先讀指針并且讀取和寫入都被允許。在某些情況中,讀指針趕上寫指針(見情況7),導(dǎo)致讀取停頓。當(dāng)對FIFO的寫入完成時(見情況6),寫指針可以指向FIFO外部的地址,并且可以允許繼續(xù)讀取直到已經(jīng)到達(dá)FIFO的末尾。在圖14所例示的示例中,除了情況6之外的所有情況都適用于連續(xù)的DMA操作。當(dāng)用于連續(xù)的情況時,可以針對FIFO內(nèi)的每個讀/寫指針對來維持WRAP位。在某些實(shí)施例中,一種類型的DMA中的多于一個可以與其他類型的DMA中的一個進(jìn)行對比(如,4個讀取,1個寫入),導(dǎo)致需要多于一個的折回位(wrapbit)。在各種實(shí)施例中,可以根據(jù)DMA的配置來以不同的方式利用折回位。在多個寫入的情況下,當(dāng)單個寫指針折回時可以設(shè)置折回位,并且當(dāng)每個附加折回位的各自的讀指針指示已經(jīng)出現(xiàn)折回時,可以清除所述每個附加折回位。在多個寫入的情況下,當(dāng)每個寫指針折回時可以對折回位進(jìn)行設(shè)置,并且當(dāng)讀指針指示折回時,可以清除所有的附加折回位。單個FIFO緩沖區(qū)可以包括一個輸入和多于一個的輸出。在這種情況下,有必要比較多于一個的指針以確定用于連接到FIFO緩沖區(qū)的DMA引擎的停頓信號。在某些實(shí)施例中,如果比較功能分布在可連接到FIFO緩沖區(qū)的DMA引擎之間,則可以以集中的方式來執(zhí)行比較以避免電路的重復(fù)和附加的路由。在多處理器陣列系統(tǒng)的每個DMR中,可以利用被配置為比較指針并產(chǎn)生停頓信號的一個或更多個功能塊。DMA-FIFO緩沖區(qū)和控制器也可以在芯片I/O接口處實(shí)現(xiàn);包括專用于諸如SDRAM芯片之類的外部存儲器芯片的接口。在各種實(shí)施例中,F(xiàn)IFO緩沖區(qū)可以包括任何合適數(shù)量的輸入和輸出端口以連接到更高維度的網(wǎng)絡(luò)結(jié)構(gòu)。轉(zhuǎn)向圖15,例示了指針比較和停頓單元(pointercompareandstallunit,PCSU)的實(shí)施例。在所例示的實(shí)施例中,PCSU1500包括DMA讀指針輸入1501、DMA讀取控制輸入1504、DMA寫指針輸入1502、DMA寫入控制輸入1503、DMA讀取FIFO停頓輸出1510以及DMA寫入FIFO停頓輸出1511。盡管指針輸入被描繪為包含9位并且控制輸入被描繪為包含4位,但是在其他實(shí)施例中,可以利用針對每種類型的輸入的任何合適的位寬。在圖15所例示的實(shí)施例中,DMA讀指針輸入1501和DMA寫指針輸入1502耦接到比較器1505至1508。在各種實(shí)施例中,比較器1505至1508可以實(shí)現(xiàn)任何合適的比較算法,諸如以上描述的讀指針和寫指針之間的差異。比較器1505至1508的輸出然后可以耦接到停頓邏輯1509。被包括在停頓邏輯1509中的電路可以使用諸如例如與(AND)、或(OR)等之類的任何合適的邏輯函數(shù)來對比較器的輸出進(jìn)行組合,以形成DMA寫入FIFO停頓輸出1511和DMA讀取FIFO停頓輸出1510。注意,圖15中所例示的PCSU僅僅是示例。在其他實(shí)施例中,不同的功能塊和塊的不同配置是可能的。在某些情景下,PE對存儲器進(jìn)行讀取或?qū)懭氩⑴cFIFO結(jié)構(gòu)相關(guān)聯(lián)可能是可取的。在某些實(shí)施例中,這可以使用附加的DMR和之前描述的DMAFIFO控制器的功能中的至少一些來實(shí)現(xiàn)。轉(zhuǎn)向圖16,例示了PE讀FIFO的仿真的框圖。在所例示的實(shí)施例中,1605中的正常路由耦接到DMR1601,DMR1601又經(jīng)由附加的路由1606耦接到DMR1603。DMR1603進(jìn)一步耦接到PE1604。在某些實(shí)施例中,DMR1601可以包括單個寫入單個讀取的FIFO1602。在本圖中,1607不是DMAFIFO,而僅僅是正在保持來自1606路由鏈路的值直到PE1604能讀取它們的DMR上的INPORT(輸入端口)。該路由被停頓直到PE讀取值,或者PE被停頓直到下一個值可在端口中獲得。在操作期間,DMA-FIFO1602可以經(jīng)由輸入端口1607把在1605中從正常路由收到的數(shù)據(jù)發(fā)送到DMR1603。處理元件1604然后可以經(jīng)由DMR1604對輸入端口1607執(zhí)行讀取停頓,導(dǎo)致存儲在DMA-FIFO1602中的數(shù)據(jù)的本地拷貝。在某些實(shí)施例中,處理元件1604可以能夠以最小的附加等待時間來從DMA-FIFO1602接收數(shù)據(jù)。注意,圖16中所例示的實(shí)施例僅僅是示例。在其他實(shí)施例中,不同數(shù)量和布置的DMR塊和處理元件是可能的。DMA—先進(jìn)的想法可以把處理插到能以各種方式編程的構(gòu)造互連的傳送路徑中。該處理可以對于DMAFIFO模式以及正常的傳送模式都存在。簡單類型的處理包括比如位交織(bitinterleaving)和去交織(de-interleaving)的事情。其他簡單的處理可以包括字節(jié)交換、字節(jié)包裝和拆包、字段屏蔽、諸如加法和乘法之類的算術(shù)函數(shù)等。也可以執(zhí)行更復(fù)雜的功能。對于安全應(yīng)用有用的功能是加密和解密??赡苋菀椎馗木幍紻MA流功能中的其他計(jì)算是CRC、奇偶校驗(yàn)、移位、提取和過濾。上述示例僅僅是出于例示的目的,并非意味著用來限制本說明書的范圍。在許多情況下,需要掃描整個存儲器并且計(jì)算取決于所掃描的所有位的簽名。DMA引擎已經(jīng)具有用于產(chǎn)生地址序列以掃描存儲器的方法,并且增加適度的處理能力使其直接計(jì)算縱向奇偶校驗(yàn)、當(dāng)前的和或當(dāng)前的積,僅舉此幾例??梢园演敵龊灻麑懙侥鼙粦?yīng)用軟件訪問的一個或更多個寄存器中,以便在應(yīng)用程序中使用該結(jié)果。一種用途是快速且高效地比較兩個或多個數(shù)據(jù)陣列以測試它們是相同的,方法是計(jì)算一個陣列的簽名并計(jì)算第二個陣列的簽名,然后比較簽名。對每個陣列的簽名計(jì)算可以由在時間上分開的同一硬件完成,或者由在空間和/或時間上分開的不同硬件完成。同一個簽名計(jì)算硬件不需要在兩個陣列上使用,只要簽名計(jì)算相同即可。這允許簽名計(jì)算在例如不同的DMR或不同的IC芯片中進(jìn)行。對來自一個或更多個簽名計(jì)算的簽名的比較可以在中心位置進(jìn)行,或跨多個位置分布,要么在DMA的硬件中要么在PE硬件上執(zhí)行的軟件中。在任何情況下,簽名的分布計(jì)算可能需要把簽名值傳輸?shù)街行奈恢没蛘呤购灻笛刂容^位置的分布傳輸。DMA引擎可以被配置為發(fā)布用于將陣列的簽名值遞送到終點(diǎn)以便比較的蟲孔路由的消息。簽名消息可以比它們代表的數(shù)據(jù)短得多,因此被更高效地分發(fā)。對數(shù)據(jù)陣列等效性的驗(yàn)證例如被用于三重模式冗余(triplemodularredundancy,TMR)的方法中,所述TMR取得三個(可能是錯誤的)計(jì)算的結(jié)果并針對等效性對它們進(jìn)行比較,并且如果兩個或更多個結(jié)果是等效的,則其結(jié)果可以被接受為正確。如果每個計(jì)算的結(jié)果已經(jīng)是小的,則DMA簽名計(jì)算將沒有幫助,但是如果結(jié)果多于幾十個字,則DMA簽名計(jì)算會比用PE計(jì)算簽名更高效。針對簽名計(jì)算的硬件支持的想法不限于DMA引擎,它還可以應(yīng)用于PE及其支持存儲器之間的地址和數(shù)據(jù)流,所述支持存儲器包括數(shù)據(jù)存儲器(DM)和指令存儲器(IM)這兩者。圖21示出了被接進(jìn)PE和DM之間的地址和數(shù)據(jù)總線中的和校驗(yàn)單元(sum-checkunit)的可能布置。這些和校驗(yàn)單元計(jì)算當(dāng)前的和以計(jì)算簽名,但是也可以實(shí)施其他算術(shù)和邏輯處理。和校驗(yàn)單元的輸出可以發(fā)送到模式冗余“表決者”以確定要接受哪些結(jié)果。盡管已經(jīng)關(guān)于優(yōu)選實(shí)施例描述了本發(fā)明的系統(tǒng)和方法,但是并非意在限于本文所闡述的具體形式,相反,意在覆蓋可被合理地包括在由所附權(quán)利要求限定的本發(fā)明的精神和范圍內(nèi)的這種替代、修改和等效。