專利名稱:片內(nèi)網(wǎng)絡(luò)以及片內(nèi)網(wǎng)絡(luò)軟件流水線操作方法
技術(shù)領(lǐng)域:
本發(fā)明的領(lǐng)域涉及數(shù)據(jù)處理,或者更具體地講,涉及通過片內(nèi)網(wǎng)絡(luò)
('NOC,)進行數(shù)據(jù)處理的裝置與方法。
背景技術(shù):
存在著兩種普遍使用的數(shù)據(jù)處理范式多指令多數(shù)據(jù)('MIMD,) 和單指令多數(shù)據(jù)('SIMD,)。在MIMD處理中,計算機程序通常具有這 樣的特征即表現(xiàn)為或多或少獨立運作的一個或多個執(zhí)行線程,每個線 程均要求對大量共享存儲器的快速隨機存取。MIMD是針對適合于其的 特定類型程序優(yōu)化的一種數(shù)據(jù)處理范式,例如,所述適合于其的特定類 型程序包括字處理器、電子數(shù)據(jù)表、數(shù)據(jù)庫管理程序,例如,諸如流覽 器等的多種遠程通信形式。
SIMD具有這樣的特征即表現(xiàn)為同時并行運行在多個處理器上的 單一的程序,所述程序的每個實例按相同的方式操作,但針對獨立的數(shù) 據(jù)項。SIMD是一種針對適合于其的特定類型應(yīng)用優(yōu)化的數(shù)據(jù)處理范式, 例如特定類型應(yīng)用包括數(shù)字信號處理、向量處理等多種形式。
然而,還存在著另一種類型的應(yīng)用,其包括多種真實世界仿真程序, 例如既沒有針對它們對純SIMD數(shù)據(jù)處理進行優(yōu)化,也沒有針對它們對 純MIMD數(shù)據(jù)處理進行優(yōu)化。該類型的應(yīng)用包括那些獲益于并行處理、 并且要求對共享存儲器進行快速隨機存取的應(yīng)用。對于該類型的程序, 純的MIMD系統(tǒng)將不會提供高度的并行機制,純的SIMD系統(tǒng)也不會提 供對主存儲器存儲的快速隨機存取。
發(fā)明內(nèi)容
一種片內(nèi)網(wǎng)絡(luò)('NOC,),其包括集成處理器('IP,)塊、路由器、 存儲器通信控制器、以及網(wǎng)絡(luò)接口控制器,而且,每個IP塊均適應(yīng)于貫 穿存儲器通信控制器和網(wǎng)絡(luò)接口控制器的路由器,其中每個存儲器通信
4控制器控制IP塊和存儲器之間的通信,每個網(wǎng)絡(luò)接口控制器通過路由器 控制IP塊間通信,所述NOC還包括分割被成階段的計算機軟件應(yīng)用, 每個階段包括計算機程序指令的可靈活配置的模塊,由階段ID標(biāo)識該 模塊,其中每個階段在IP塊上的執(zhí)行線程上加以執(zhí)行。
通過以下對附圖中所說明的本發(fā)明的示范性實施例的更詳細的描 述,本發(fā)明的上述以及其它目的、特性與優(yōu)點將會變得十分明顯。在各 附圖中,總體上以相同的參照數(shù)字表示本發(fā)明的示范性實施例的相同的 部分。
圖l描述了自動計算機器的結(jié)構(gòu)圖,該自動計算機器包括用于使用
根據(jù)本發(fā)明的實施例的NOC進行數(shù)據(jù)處理的示范性計算機。
圖2描述了根據(jù)本發(fā)明的實施例的NOC實例的功能結(jié)構(gòu)圖。 圖3描述了根據(jù)本發(fā)明的實施例的又NOC實例的功能結(jié)構(gòu)圖。 圖4描述了流程圖,說明了使用根據(jù)本發(fā)明的實施例的NOC進行
數(shù)據(jù)處的一種示范性方法。
圖5描述了數(shù)據(jù)流圖,說明了根據(jù)本發(fā)明的實施例的NOC上的軟
件流水線實例。
圖6描述了流程圖,說明了根據(jù)本發(fā)明的實施例的NOC上的軟件 流水線纟乘作的 一種示范性方法。
具體實施例方式
將參照附圖,從圖l開始,描述使用根據(jù)本發(fā)明的NOC進行數(shù)據(jù) 處理的示范性裝置與方法。圖l描述了自動計算機器的結(jié)構(gòu)圖,該自動
范':計i機(152)。圖1的示范性計^機(152)至少包括計算機處理 器(156)(即'CPU,)以及通過一條高速存儲器總線(166)和總線適配 器(158)連接于計算機(152)的處理器(156)和其它部件的隨機存 取存儲器(168) ('RAM,)。
存儲在RAM(168)中的是應(yīng)用程序(184),即用于執(zhí)行諸如字處 理、電子數(shù)據(jù)表、數(shù)據(jù)庫操作、視頻游戲、股票市場模擬、原子量子過程模擬等特定數(shù)據(jù)處理任務(wù)或其它用戶級應(yīng)用的用戶級計算機程序指
令的模塊。操作系統(tǒng)(154)也存儲在RAM (168)中。使用根據(jù)本發(fā) 明的實施例的NOC進行有效數(shù)據(jù)處理的操作系統(tǒng)包括UNIXTM、 LinuxTM、 Microsoft XPTM、 AIXTM、 IBM的i5/OSTM、以及這一技術(shù)領(lǐng)域 中的熟練技術(shù)人員所熟悉的其它操作系統(tǒng)。RAM (168)中描述了圖1 的例子中的操作系統(tǒng)(154)和應(yīng)用程序(184),然而,通常也把許多 這樣的軟件的部件存儲在非易失存儲器中,例如存儲在磁盤驅(qū)動器 (170)等中。
計算機實例(152)包括兩個根據(jù)本發(fā)明的實施例的NOC實例視 頻適配器(209)和協(xié)同處理器(157)。視頻適配器(209)為針對圖形 輸出,即針對向諸如顯示屏幕或者計算機監(jiān)視器的顯示設(shè)備(180)的 圖形輸出而專門設(shè)計的I / O適配器的實例。通過一條高速視頻總線
(164 )、總線適配器(158 )、以及前側(cè)總線(162 )(也是一條高速總線), 把視頻適配器(209)連接于處理器(156)。
通過總線適配器(158)以及前側(cè)總線(162和163 (也是一條高速 總線)),把NOC協(xié)同處理器實例(157)連接于處理器(156)。根據(jù)主 處理器(156)的要求,對圖1中的NOC協(xié)同處理器進行優(yōu)化,以加速 特定的數(shù)據(jù)處理任務(wù)。
圖1的NOC視頻適配器實例(209)和NOC協(xié)同處理器(157)均 包括根據(jù)本發(fā)明的實施例的NOC,該NOC包括集成處理器('IP,)塊、 路由器、存儲器通信控制器、以及網(wǎng)絡(luò)接口控制器,每個IP塊適應(yīng)于貫 穿存儲器通信控制器和網(wǎng)絡(luò)接口控制器的路由器,每個存儲器通信控制 器控制IP塊和存儲器之間的通信,每個網(wǎng)絡(luò)接口控制器通過^^由器控制 IP塊間通信。針對那些使用并行處理,并且還要求對共享存儲器進行快 速隨機存取的程序,對NOC視頻適配器和NOC協(xié)同處理器加以優(yōu)化。 以下,參照圖2 4討論NOC結(jié)構(gòu)與才乘作的細節(jié)。
圖1的計算機(152 )包括通過擴展總線(160 )和總線適配器(158 ) 耦合于計算機(152)的處理器(156)和其它部件的磁盤驅(qū)動適配器
(172)。磁盤驅(qū)動適配器(172)按磁盤驅(qū)動器(170)的格式把非易失 數(shù)據(jù)存儲器連接于計算機(152 )。對于使用根據(jù)本發(fā)明的實施例的NOC 的數(shù)據(jù)處理,用于計算機的磁盤驅(qū)動適配器包括集成的驅(qū)動電子('IDE')適配器、小型計算機系統(tǒng)接口 ('scsr)適配器、以及這一技術(shù)領(lǐng)域中 的熟練技術(shù)人員所熟悉的其它適配器。也可以把非易失計算機存儲器作 為這一技術(shù)領(lǐng)域中的熟練技術(shù)人員所熟悉的光盤驅(qū)動器、電可擦除可編
程只讀存儲器(所謂的'EEPROM,,即'閃速,存儲器)、RAM驅(qū)動器等加
以實現(xiàn)。
圖1的計算機實例(152)包括一個或多個輸入/輸出('I/O,)適 配器(178)。例如,1/0適配器通過用于控制向諸如計算機顯示屏幕的 顯示設(shè)備的輸出以及來自諸如鍵盤與鼠標(biāo)器的用戶輸入設(shè)備(181)的 輸入的軟件驅(qū)動器和計算機硬件實現(xiàn)面向用戶的輸入/輸出。
圖1的示范性計算機(152)包括用于與其它計算機(182)進行數(shù) 據(jù)通信以及用于與數(shù)據(jù)通信網(wǎng)絡(luò)(100)進行數(shù)據(jù)通信的通信適配器 (167)。可以通過RS-232連接、通過諸如通用串行總線('USB,)的外 部總線、通過諸如IP數(shù)據(jù)通信網(wǎng)絡(luò)的數(shù)據(jù)通信網(wǎng)絡(luò)、以及按這一技術(shù)領(lǐng) 域中的熟練技術(shù)人員所熟悉的其它方式,進行這樣的數(shù)據(jù)通信。通信適 配器實現(xiàn)了數(shù)據(jù)通信的硬件級,通過這一硬件級, 一臺計算機直接或者 通過數(shù)據(jù)通信網(wǎng)絡(luò)把數(shù)據(jù)通信發(fā)送于另 一臺計算機。用于使用根據(jù)本發(fā) 明的實施例的NOC進行數(shù)據(jù)處理的通信適配器的例子包括用于有線撥 號通信的調(diào)制解調(diào)器、用于有線數(shù)據(jù)通信網(wǎng)絡(luò)通信的Ethernet (IEEE 802.3 )適配器、以及用于無線數(shù)據(jù)通信網(wǎng)絡(luò)通信的802.11適配器。
為了進一步地進行解釋,圖2描述了根據(jù)本發(fā)明的實施例的NOC 實例(102)的功能結(jié)構(gòu)圖。在一塊'芯片,(100)上,即在集成電路上 實現(xiàn)圖1的例子中的NOC。圖2的NOC ( 102)包括集成處理器('IP,) 塊(104)、路由器(110)、存儲器通信控制器(106)、以及網(wǎng)絡(luò)接口控 制器(108),每個IP塊(104)適應(yīng)于貫穿存儲器通信控制器(106)和 網(wǎng)絡(luò)接口控制器(108)的路由器(110),每個存儲器通信控制器控制 IP塊和存儲器之間的通信,每個網(wǎng)絡(luò)接口控制器(108 )通過路由器(110 ) 控制IP塊間通信。
在圖2的NOC ( 102 )中,每個IP塊代表了用作NOC中數(shù)據(jù)處理 的構(gòu)件塊的同步或者異步邏輯設(shè)計的可用單元。有時把術(shù)語'IP塊,拓展 為'知識產(chǎn)權(quán)塊,,從而有效地把IP塊指示為一種由某一方所擁有的、為 某一方的知識產(chǎn)權(quán)的、將向半導(dǎo)體集成電路的用戶或者設(shè)計者發(fā)放許可
7證的設(shè)計。然而,在本發(fā)明的范圍內(nèi),不要求令I(lǐng)P塊服從任何特定的所 有權(quán)關(guān)系,因此,在本說明書中,總是將這一術(shù)語拓展為'集成處理器塊,。
件、或者芯片布設(shè)設(shè)計的可重用單元。IP塊為可以作為ASIC芯片設(shè)計
或者FPGA邏輯設(shè)計形成的邏輯核心。
一種通過模擬描述IP塊的方式是,令I(lǐng)P塊支持這樣一種NOC設(shè)計 像程序庫那樣支持計算機程序設(shè)計,或者像離散的集成電路部件那樣支 持印刷電路板設(shè)計。在根據(jù)本發(fā)明的實施例的NOC中,可以把IP塊作 為一般門連線表、作為完整的專用或者通用微處理器、或者按這一技術(shù) 領(lǐng)域中的熟練技術(shù)人員所熟悉的其它方式加以實現(xiàn)。連線表為IP塊的邏 輯功能的布爾代數(shù)表示(門,即標(biāo)準(zhǔn)元件),類似于針對高級程序應(yīng)用 的匯編代碼列表。例如,也可以按一種諸如Verilog或者VHDL的硬件 描述語言中所描述的可合成的形式,實現(xiàn)NOC。除了連線表和可合成實 現(xiàn)夕卜,也可以按較低級,即按物理描述提交NOC??梢园匆环N諸如GDSII 的晶體管布設(shè)格式分布諸如SERDES、 PLL、 DAC、 ADC等的模擬IP 塊元件。有時也按布設(shè)格式提交IP塊的數(shù)字元件。
圖2的例子中的每個IP塊(104 )適應(yīng)于貫穿存儲器通信控制器(106 ) 的路由器(110 )。每個存儲器通信控制器為適應(yīng)于在IP塊和存儲器之間 提供數(shù)據(jù)通信的同步和異步邏輯電路的聚合體。IP塊和存儲器之間的這 樣的通信的例子包括存儲器加載指令和存儲器存儲指令。以下,參照圖 3更詳細地描述存儲器通信控制器(106)。
圖2的例子中的每個IP塊(104 )適應(yīng)于貫穿網(wǎng)絡(luò)接口控制器(108 ) 的路由器(110)。每個網(wǎng)絡(luò)接口控制器(108)通過路由器(110)控制 IP塊(104)之間的通信。IP塊(104)之間的通信的例子包括用于并行 應(yīng)用中以及在流水線應(yīng)用中處理IP塊之間數(shù)據(jù)的載有數(shù)據(jù)和指令的消 息。以下,參照圖3更詳細地描述網(wǎng)絡(luò)接口控制器(108)。
圖2的例子中的每個IP塊(104)適應(yīng)于路由器(110)。路由器(110) 和路由器之間的鏈路(120)實現(xiàn)了 NOC的網(wǎng)絡(luò)操作。鏈路(120)為 在連接所有路由器的物理、并行導(dǎo)線總線上實現(xiàn)的信息包結(jié)構(gòu)。即,在 寬度足以同時容納完整數(shù)據(jù)交換信息包(包括所有頭標(biāo)信息和有效載荷 數(shù)據(jù))的導(dǎo)線總線上實現(xiàn)每個條鏈路。如果信息包結(jié)構(gòu)包括64個字節(jié),例如,包括8字節(jié)的頭標(biāo)和56字節(jié)的有效載荷數(shù)據(jù),則通向每條鏈路 的導(dǎo)線總線為64個字節(jié)寬、512條導(dǎo)線。另外,每條鏈路都是雙向的, 因此,如果鏈路信息包結(jié)構(gòu)包括64個字節(jié),則在網(wǎng)絡(luò)中每個路由器和 其每個相鄰路由器之間,導(dǎo)線總線實際包括1024條導(dǎo)線。 一條消息可 以包括以上的信息包,但每個信息包恰好與導(dǎo)線總線的寬度相吻合。如 果把路由器和導(dǎo)線總線的每個部分之間的連接稱為端口 ,則每個路由器 包括5個端口,網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)?個方向中的每個方向端口,第5個 端口可使路由器適應(yīng)于貫穿存儲器通信控制器和網(wǎng)絡(luò)接口控制器的具 體的IP塊。
圖2的例子中的每個存儲器通信控制器(106)控制IP塊和存儲器 之間的通信。存儲器可以包括片外主RAM( 112)、通過存儲器通信控制 器(106)直接連接于IP塊的存儲器(115)、作為IP塊實現(xiàn)的片內(nèi)存儲 器(114)、以及片內(nèi)超高速緩存。在圖2的N0C中,例如,可以把片 內(nèi)存儲器(114, 115)任何之一作為片內(nèi)超高速緩存存儲器加以實現(xiàn)。 可以在同 一地址空間,即物理地址或者虛擬地址中"i殳置所有這些形式的 存儲器,甚至對于直接附接于IP塊的存儲器,也可以這樣設(shè)置。因此, 對于IP塊,存儲器尋址的消息可以為完全雙向的,因為可以直接在網(wǎng)絡(luò) 上的任何地方從任何IP塊直接對這樣的存儲器加以尋址??梢酝ㄟ^存儲 器通信控制器,由適應(yīng)于網(wǎng)絡(luò)的IP塊對直接附接于存儲器通信控制器的 存儲器(115)進行尋址--從而也可以在NOC中的任何地方,從任何其 它IP塊對其進行尋址。
這一NOC實例包括兩個存儲器管理單元('MMU, ) ( 107, 109), 說明了根據(jù)本發(fā)明的實施例的NOC的兩種可選的存儲器體系結(jié)構(gòu)。使 用IP塊實現(xiàn)MMU (107),允許IP塊中的處理器在虛擬存儲器中操作, 同時允許NOC的整個余留體系結(jié)構(gòu)在物理存儲器地址空間中操作。在 片外實現(xiàn)MMU ( 109),通過數(shù)據(jù)通信端口 ( 116)將其連接于NOC。 端口 (116)包括在NOC和MMU之間傳導(dǎo)信號所需的插針和其它互連 機制,以及把消息信息包從NOC信息包格式轉(zhuǎn)換成外部MMU ( 109 ) 所要求的總線格式的足夠的信息。MMU的外部地址意味著NOC的所有 IP塊中的所有處理器可以在虛擬存儲器地址空間中操作,其中,由片外 MMU (109)處理所有向片外存儲器的物理地址的轉(zhuǎn)換。
9除了使用MMU( 107, 109)所說明的兩個存儲器的體系結(jié)構(gòu),數(shù) 據(jù)通信端口 (118)還說明了用于根據(jù)本發(fā)明的實施例的NOC的第三存 儲器體系結(jié)構(gòu)。端口 ( 118)在NOC ( 102)的IP塊(104)和片外存儲 器(112)之間提供了直接的連接。由于在處理路徑中無MMU,這一體 系結(jié)構(gòu)提供了 NOC的所有IP塊對物理地址空間的利用。在雙向共享地 址空間的過程中,NOC的所有IP塊可以通過存儲器尋址的消息存取地 址空間中的存儲器,包括加載和存儲,并且通過直接連接于端口 (118) 的IP塊對它們加以指引。端口 (118)包括在NOC和片外存儲器(112) 之間傳導(dǎo)信號所需的插針和其它互連機制,以及把消息信息包從NOC 信息包格式轉(zhuǎn)換成片外存儲器(112)所要求的總線格式的足夠的信息。
在圖2的例子中,把IP塊之一指定為主接口處理器(105)。主接口 處理器(105)在NOC和一臺其中可以安裝NOC的主計算機(152)之 間提供了接口,并且還向NOC上的其它IP塊提供了數(shù)據(jù)處理服務(wù),例 如,包括在NOC上的IP塊之間接收與調(diào)度來自主計算機的NOC數(shù)據(jù) 處理請求。例如,NOC可以在較大計算機(152)上實現(xiàn)視頻圖形適配 器(209)或者協(xié)同處理器(157),如以上參照圖l所描述的。在圖2 的例子中,通過數(shù)據(jù)通信端口 (115)把主接口處理器(105)連接于所 述較大的主計算機。端口 (115)包括在NOC和主計算機之間傳導(dǎo)信號 所需的插針和其它互連機制,以及把消息信息包從NOC轉(zhuǎn)換成主計算 機(152)所要求的總線格式的足夠的信息。在圖1的計算機中的NOC 協(xié)同處理器的例子中,這樣的端口將在NOC協(xié)同處理器(157)的鏈路 結(jié)構(gòu)和NOC協(xié)同處理器(157)與總線適配器(158)之間的前側(cè)總線 (163)所需的協(xié)議之間提供數(shù)據(jù)通信結(jié)構(gòu)翻譯。
為了進一步加以解釋,圖3描述了根據(jù)本發(fā)明的實施例的進一步的 NOC實例的功能結(jié)構(gòu)圖。圖3的NOC實例類似于圖2的NOC實例, 類似之處在于,在一塊芯片(圖2中的100)上實現(xiàn)圖3的NOC實例, 圖3的NOC ( 102)包括集成電路('IP,)塊(104)、路由器(110)、存 儲器通信控制器(106)、以及網(wǎng)絡(luò)接口控制器(108)。使每個IP塊(104) 適應(yīng)于貫穿存儲器通信控制器(106)和網(wǎng)絡(luò)接口控制器(108)的路由 器(IIO)。每個存儲器通信控制器控制IP塊和存儲器之間的通信,每個 網(wǎng)絡(luò)接口控制器(108)通過路由器(110)控制IP塊間通信。在圖3的例子中,把適應(yīng)于貫穿存儲器通信控制器(106)和網(wǎng)絡(luò)接口控制器(108 ) 的路由器(110)的IP塊(104)的集合(122)擴展為能夠有助于對它 們的結(jié)構(gòu)和操作進行更詳細的解釋。按與所擴展的集合(122)相同的 方式,對圖3的例子中的所有IP塊、存儲器通信控制器、網(wǎng)絡(luò)接口控制 器、以及路由器進行配置。
在圖3的例子中,每個IP塊(104 )包括計算機處理器(126 )和I /0功能(124)。在這一例子中,由每個IP塊(104)中隨機存取存儲 器('RAM,)的一段代表計算機存儲器。如以上參照圖2的例子所描述 的,存儲器能夠占據(jù)可以從NOC中任何IP塊對其在每個IP塊上的內(nèi)容 加以尋址和進行存取的若干段物理地址空間。每個IP塊上的處理器
(126)、 1/0能力(124)、以及存儲器(128)有效地把IP塊作為通常 可編程的微型計算機加以實現(xiàn)。然而,如以上所解釋的,在本發(fā)明的范
步邏輯的可重用單元。因此,盡管公共的實施例有助于進行解釋,但把 IP塊作為通常可編程的微型計算機加以實現(xiàn),并不是對本發(fā)明的一種限制。
在圖3的NOC ( 102 )中,每個存儲器通信控制器(106 )包括多個 存儲器通信執(zhí)行引擎(140)。使每個存儲器通信執(zhí)行引擎(140)能夠 執(zhí)行來自IP塊(104 )的存儲器通信指令,包括網(wǎng)絡(luò)和IP塊(104 )之 間的雙向存儲器通信指令流(142, 144, 145)。存儲器通信控制器所執(zhí) 行的存儲器通信指令不僅可源自于適應(yīng)于貫穿具體存儲器通信控制器 的路由器的IP塊,而且還可以源自于NOC ( 102 )中任何地方的任何IP 塊(104)。即,NOC中的任何IP塊可以生成一條存儲器通信指令,并 且通過NOC的路由器,把該存儲器通信指令傳輸于與另IP塊相關(guān)的另 存儲器通信控制器,以執(zhí)行該存儲器通信指令。例如,這樣的存儲器通 信指令可以包括翻譯后備緩沖器控制指令、超高速緩存控制指令、屏障
指令、以及存儲器加載與存儲指令。
使每個存儲器通信執(zhí)行引擎(140)能夠獨立地以及與其它存儲器 通信執(zhí)行引擎并行地執(zhí)行一條完整的存儲器通信指令。存儲器通信執(zhí)行 引擎實現(xiàn)了針對存儲器通信指令的并發(fā)吞吐量優(yōu)化的可調(diào)節(jié)存儲器翻 譯處理器。存儲器通信控制器(106)支持多個全部并發(fā)運行的存儲器通信執(zhí)行引擎(140),以同時執(zhí)行多條存儲器通信指令。存儲器通信控 制器(106)把一條新的存儲器通信指令分配于存儲器通信執(zhí)行引擎
(140),存儲器通信執(zhí)行引擎(140)可以同時接受多個響應(yīng)事件。在 這一例子中,所有存儲器通信執(zhí)行引擎(140)是相同的。因此,通過 調(diào)節(jié)存儲器通信執(zhí)行引擎(140)的數(shù)目,實現(xiàn)對存儲器通信控制器(106) 可以同時處理的存儲器通信指令的數(shù)目的調(diào)節(jié)。
在圖3的N0C (102)中,使每個網(wǎng)絡(luò)接口控制器(108)能夠把通 信指令從命令格式轉(zhuǎn)換成網(wǎng)絡(luò)信息包格式,以通過路由器(110 )在IP 塊(104 )之間進行傳輸。由IP塊(104 )或者由存儲器通信控制器(106 ) 按命令格式表述通信指令,并且按命令格式將它們提供于網(wǎng)絡(luò)接口控制
器(108 )。命令格式為符合于IP塊(104 )和存儲器通信控制器(106 ) 的體系結(jié)構(gòu)寄存器文件的本機格式。網(wǎng)絡(luò)信息包格式為通過網(wǎng)絡(luò)的路由 器(110)進行傳輸所要求的格式。每個條這樣的消息由一個或多個網(wǎng)絡(luò) 信息包構(gòu)成。網(wǎng)絡(luò)接口控制器中被從命令格式轉(zhuǎn)換成信息包格式的這樣 的通信指令的例子包括IP塊和存儲器之間的存儲器加載指令和存儲器 存儲指令。這樣的通信指令也可以包括在載有數(shù)據(jù)和指令的IP塊之間發(fā) 送消息,以在并行應(yīng)用中和流水線應(yīng)用中的IP塊之間處理數(shù)據(jù)的通信指 令。
在圖3的NOC ( 102 )中,使每個IP塊能夠通過IP塊的存儲器通 信控制器把基于存儲器地址的通信發(fā)送于存儲器或者從存儲器發(fā)送,然 后還通過其網(wǎng)絡(luò)接口控制器把基于存儲器地 址的通信發(fā)送于網(wǎng)絡(luò)?;?存儲器地址的通信為由IP塊的存儲器通信控制器的存儲器通信執(zhí)行引 擎所執(zhí)行的存儲器存取指令,例如,加載指令或者存儲指令。通常,這 樣的基于存儲器地址的通信源于IP塊,并且按命令格式對其加以表述, 然后交由存儲器通信控制器加以執(zhí)行。
利用消息業(yè)務(wù)(traffic)執(zhí)行多個基于存儲器地址的通信,因為可以 在片內(nèi)或者片外、在物理存儲器地址空間中的任何地方設(shè)置將加以存取 的任何存儲器,將它們直接附接于NOC中的任何存儲器通信控制器, 或者最終通過NOC的任何IP塊對它們加以存取,而不管哪一 IP塊源于 哪一基于存儲器地址的通信。把利用消息業(yè)務(wù)執(zhí)行的所有基于存儲器地 址的通信從存儲器通信控制器傳遞于相關(guān)的網(wǎng)絡(luò)接口控制器,以進行從式的轉(zhuǎn)換(136)以及按消息通過網(wǎng)絡(luò)的傳輸。在 向信息包格式的轉(zhuǎn)換過程中,網(wǎng)絡(luò)接口控制器還依賴于存儲器地址或者 將由基于存儲器地址的通信加以存取的地址,標(biāo)識信息包的網(wǎng)絡(luò)地址。 使用存儲器地址對基于存儲器地址的消息加以尋址。網(wǎng)絡(luò)接口控制器把 每個存儲器地址映像至網(wǎng)絡(luò)地址,通常映像至負責(zé)某一范圍物理存儲器
地址的存儲器通信控制器的網(wǎng)絡(luò)地址。存儲器通信控制器(106)的網(wǎng) 路地址自然也是所述存儲器通信控制器的相關(guān)路由器(110 )、網(wǎng)絡(luò)接口 控制器(108)、以及IP塊(104)的網(wǎng)絡(luò)地址。每個網(wǎng)絡(luò)接口控制器中 的指令轉(zhuǎn)換邏輯(136)能夠把存儲器地址轉(zhuǎn)換為網(wǎng)絡(luò)地址,以通過NOC 的路由器傳輸基于存儲器地址的通信。
當(dāng)從網(wǎng)絡(luò)的路由器(110)接收消息業(yè)務(wù)時,每個網(wǎng)絡(luò)接口控制器 (108)檢查存儲器指令的每個信息包。把每個包括一條存儲器指令的 信息包遞交于與正在進行接收的網(wǎng)絡(luò)接口控制器相關(guān)的存儲器通信控 制器(106 ),在把信息包的剩余有效載荷發(fā)送于IP塊以進行進一步的處 理之前,存儲器通信控制器(106)執(zhí)行存儲器指令。在這一方式中, 總是準(zhǔn)備好存儲器內(nèi)容,以在IP塊開始執(zhí)行來自某一消息的指令之前支 持IP塊的數(shù)據(jù)處理,其中所述消息依賴于具體的存儲器內(nèi)容。
在圖3的NOC ( 102 )中,使每個IP塊(104 )能夠旁路其存儲器 通信控制器(106 ),并且通過IP塊的網(wǎng)絡(luò)接口控制器(108 )把IP塊間、 網(wǎng)絡(luò)尋址的通信(146)直接發(fā)送于網(wǎng)絡(luò)。阿絡(luò)尋址的通信為通過網(wǎng)絡(luò) 地址導(dǎo)向另IP塊的消息。這樣的消息傳輸流水線應(yīng)用中的工作數(shù)據(jù)、 SIMD應(yīng)用中IP塊之間針對單一程序處理的多重數(shù)據(jù)等,這些數(shù)據(jù)是這 一技術(shù)領(lǐng)域中的熟練技術(shù)人員所熟悉的。這樣的消息不同于基于存儲器 地址的通信之處在于由知道網(wǎng)絡(luò)地址,即知道通過NOC的路由器把 消息導(dǎo)向于其的網(wǎng)絡(luò)地址的初始IP塊從開始位置對它們進行網(wǎng)絡(luò)尋址。 IP塊通過其I/0功能(124),按命令格式把這樣的網(wǎng)絡(luò)尋址的通信直 接傳遞于IP塊的網(wǎng)絡(luò)接口控制器,然后由網(wǎng)絡(luò)接口控制器將它們轉(zhuǎn)換成 信息包格式,并且通過NOC的路由器把它們傳輸于另IP塊。這樣的網(wǎng) 絡(luò)尋址的通信(146)為雙向的,可能繼續(xù)前進至NOC的每個IP塊和 從每個IP塊繼續(xù)前進,取決于它們在任何具體應(yīng)用中的使用情況。然而, 使每個網(wǎng)絡(luò)接口控制器能夠直接向與從相關(guān)的路由器發(fā)送與接收(142)這樣的通信,而且還使每個網(wǎng)絡(luò)接口控制器能夠直接向與從相關(guān)的IP塊 發(fā)送與接收(146)這樣的通信,從而旁路了相關(guān)的存儲器通信控制器
(106 )。
還使圖3的例子中的每個網(wǎng)絡(luò)接口控制器(108)能夠在網(wǎng)絡(luò)上實 現(xiàn)虛擬信道,并且以類型反映網(wǎng)絡(luò)信息包的特征。每個網(wǎng)絡(luò)接口控制器 (108)包括虛擬信道實現(xiàn)邏輯(138),虛擬信道實現(xiàn)邏輯(138)根據(jù) 類型對每個條通信指令進行分類,并且在按網(wǎng)絡(luò)信息包格式把指令遞交 于路由器(110)以于NOC上加以傳輸之前,把指令的類型記錄在網(wǎng)絡(luò) 信息包格式的字段中。通信指令類型的例子包括IP塊間基于網(wǎng)絡(luò)地址的 消息、請求消息、對請求消息的響應(yīng)、使導(dǎo)向超高速緩存的消息無效; 存儲器加載與存儲消息;以及對存儲器加載消息的響應(yīng)等。
圖3的例子中的每個路由器(110)包括路由邏輯(130)、虛擬信道 控制邏輯(132)、以及虛擬信道緩沖器(134)。通常,把路由邏輯作為 同步與異步邏輯的網(wǎng)絡(luò)加以實現(xiàn),該網(wǎng)絡(luò)在路由器(110)、鏈路(120)、 以及^各由器之間的總線導(dǎo)線所形成的網(wǎng)絡(luò)中實現(xiàn)了用于數(shù)據(jù)通信的數(shù) 據(jù)通信協(xié)議棧。路由邏輯(130)包括這一技術(shù)領(lǐng)域中的熟練技術(shù)讀者 可能會在片外網(wǎng)絡(luò)中將其與路由表相關(guān)聯(lián)的功能,對NOC中的使用而 言,至少在某些實施例中,認為路由表太慢及太笨拙??梢詫ψ鳛橥?與異步邏輯的網(wǎng)絡(luò)而實現(xiàn)的路由邏輯進行配置,以像單時鐘周期那樣快 地進行路由決策。在這一例子中,路由邏輯通過選擇用于轉(zhuǎn)發(fā)路由器中 所接收的每個信息包的端口,路由信息包。每個信息包包括將把信息包 路由于其的網(wǎng)絡(luò)地址。在這一例子中,每個路由器包括5個端口 4個 通過總線導(dǎo)線(120-A、 120-B、 120-C、 120-D)連接于其它路由器的端 口 (121)以及通過網(wǎng)絡(luò)接口控制器(108)和存儲器通信控制器(106) 把每個路由器連接于其相關(guān)的IP塊(104)的第5端口 ( 123 )。
在以上描述基于存儲器地址的通信的過程中,把每個存儲器地址描 述為由網(wǎng)絡(luò)接口控制器將其映像至網(wǎng)絡(luò)地址,即存儲器通信控制器的網(wǎng) 絡(luò)地址。存儲器通信控制器(106)的網(wǎng)絡(luò)地址自然也為該存儲器通信 控制器的相關(guān)路由器(110)、網(wǎng)絡(luò)接口控制器(108)、以及IP塊(104) 的網(wǎng)絡(luò)地址。因此,在IP塊間或者基于網(wǎng)絡(luò)地址的通信中,對于應(yīng)用級 數(shù)據(jù)處理而言,通常,也把網(wǎng)絡(luò)地址視為路由器、鏈路、以及NOC的總線導(dǎo)線所形成的網(wǎng)絡(luò)中的IP塊的地址。圖2說明了這樣的網(wǎng)絡(luò)的組織, 其為其中可以實現(xiàn)每個網(wǎng)絡(luò)地址的行與列的網(wǎng)狀物,例如,其中可以才巴
每個網(wǎng)絡(luò)地址作為該網(wǎng)狀物中的每個相關(guān)路由器、IP塊、存儲器通信控 制器、以及網(wǎng)絡(luò)接口控制器的集合的唯一的標(biāo)識符,或者作為該網(wǎng)狀物
中每個這樣的集合的x, y坐標(biāo)加以實現(xiàn)。
在圖3的NOC (102)中,每個路由器(110)實現(xiàn)了兩或兩個以上 的虛擬通信信道,其中,以通信類型反映每個虛擬通信信道的特征。通 信指令類型,因而虛擬信道類型包括以上所提到的IP塊間基于網(wǎng)絡(luò)地
址的消息、請求消息、對請求消息的響應(yīng)、使導(dǎo)向超高速緩存的消息無 效;存儲器加載與存儲消息;以及對存儲器加載消息的響應(yīng)等。為了支 持虛擬信道,圖3的例子中的每個路由器(110)還包括虛擬信道控制邏 輯(132)和虛擬信道緩沖器(134)。虛擬信道控制邏輯(132)檢查每 個所接收的信息包,即檢查其所賦予的通信類型,并且把每個信息包放 入針對所述通信類型的輸出虛擬信道緩沖器,以通過端口向NOC上的 相鄰路由器進行傳輸。
每個虛擬信道緩沖器(134)均具有有限的存儲空間。當(dāng)在短時間 內(nèi)接收眾多信息包時,可能會填滿虛擬信道緩沖器,因此不能夠把更多 的信息包放入緩沖器中。在其它協(xié)議中,到達其緩沖器為滿的虛擬信道 上的信息包將會被丟棄。然而,在這一例子中,使用總線導(dǎo)線的控制信 號使虛擬信道緩沖器(134)能夠通過虛擬信道控制邏輯通知周圍的路 由器掛起虛擬信道中的傳輸,即掛起某種特定通信類型的信息包的傳 輸。當(dāng)如此地掛起虛擬信道時,不影響其它所有虛擬信道,從而可以繼 續(xù)按全容量進行操作。通過每個路由器把控制信號一路向后連線于每個 路由器的相關(guān)的網(wǎng)絡(luò)接口控制器(108)。對每個網(wǎng)絡(luò)接口控制器進行配 置,以當(dāng)接收到這樣的信號時,能夠拒絕從其相關(guān)的存儲器通信控制器 (106 )或者從其相關(guān)的IP塊(104 )接受針對所掛起的虛擬信道的通信 指令。在這一方式下,虛擬信道的掛起影響實現(xiàn)該虛擬信道的所有硬件, 一路向后一直影響到初始IP塊。
在虛擬信道中掛起信息包傳輸?shù)囊粋€效果是,圖3的體系結(jié)構(gòu)中不 再丟棄信息包。在某一諸如Internet協(xié)議等不可靠的協(xié)議中,當(dāng)路由器 遇到其中信息包可能被丟棄的情況時,圖3的例子中的路由器通過它們的虛擬信道緩沖器(134)和它們的虛擬信道控制邏輯(132)掛起虛擬
信道中信息包的所有傳輸,直至緩沖器空間再次可用,從而消除了任何
不得不丟棄信息包的情況。因此,圖3的NOC實現(xiàn)了高度可靠的網(wǎng)絡(luò) 通信協(xié)議,并且具有極薄的硬件層。
為了進一步加以解釋,圖4描述了流程圖,說明了使用根據(jù)本發(fā)明 的實施例的NOC進行數(shù)據(jù)處理的一種示范性方法。在類似于這一說明 書中以上所描述的NOC上,即在具有IP塊(圖3中的104 )(圖3中的 100)、路由器(圖3中的110)、存儲器通信控制器(圖3中的106)、以 及網(wǎng)絡(luò)接口控制器(圖3中的108)的芯片內(nèi)實現(xiàn)的NOC(圖3中的102) 上,實現(xiàn)圖4的方法。每個IP塊(圖3中的104)適應(yīng)于貫穿存儲器通 信控制器(圖3中的106)和網(wǎng)絡(luò)接口控制器(圖3中的108)的路由 器(圖3中的110)。在圖4的方法中,可以把每個IP塊作為用作在NOC 中進行數(shù)據(jù)處理的構(gòu)件塊的同步或異步邏輯設(shè)計的可重用單元加以實 現(xiàn)。
圖4的方法包括通過存儲器通信控制器(圖3中的106 )控制(402 ) IP塊和存儲器之間的通信。在圖4中的方法中,存儲器通信控制器包括 多個存儲器通信執(zhí)行引擎(圖3中的140)。在圖4中的方法中,還通過 令每個存儲器通信執(zhí)行引擎獨立地和與其它存儲器通信執(zhí)行引擎并行 地執(zhí)行(404) —條完整的存儲器通信指令,控制(402) IP塊和存儲器 之間的通信,并且在網(wǎng)絡(luò)和IP塊之間執(zhí)行(406)存儲器通信指令的雙 向流。在圖4中的方法中,存儲器通信指令可以包括翻譯后備緩沖器控 制指令、超高速緩存控制指令、屏障指令、存儲器加載指令、以及存儲 器存儲指令。在圖4的方法中,存儲器可以包括片外主RAM、通過存 儲器通信控制器直接連接于IP塊的存儲器、作為IP塊實現(xiàn)的片內(nèi)存儲 器、以及片內(nèi)超高速緩存。
圖4的方法還包括由網(wǎng)絡(luò)接口控制器(圖3中的108)通過路由器 控制(408)IP塊間通信。在圖4的方法中,控制(408)IP塊間通信還 包括每個網(wǎng)絡(luò)接口控制器把通信指令從命令格式轉(zhuǎn)換成(410 )網(wǎng)絡(luò)信 息包格式,并且通過每個網(wǎng)絡(luò)接口控制器在網(wǎng)絡(luò)上實現(xiàn)(412)虛擬信 道,包括按類型表示網(wǎng)絡(luò)信息包的特征。
圖4的方法還包括每個路由器(圖3中的110)通過兩或兩個以上虛擬通信信道傳輸(414)消息,其中,由通信類型表示每個虛擬通信
信道的特征。例如,通信指令類型,因而虛擬信道類型包括IP塊間基 于網(wǎng)絡(luò)地址的消息、請求消息、對請求消息的響應(yīng)、使導(dǎo)向超高速緩存 的消息無效;存儲器加載與存儲消息;以及對存儲器加載與存儲消息的 響應(yīng)等。為了支持虛擬信道,每個路由器還包括虛擬信道控制邏輯(圖 3中的132)和虛擬信道緩沖器(圖3中的134)。虛擬信道控制邏輯檢 查每個所接收的信息包,即檢查其所賦予的通信類型,并且把每個信息 包放入針對所述通信類型的輸出虛擬信道緩沖器,以通過端口向NOC 上的相鄰路由器進行傳輸。
圖5
在根據(jù)本發(fā)明的實施例的NOC上,可以把計算機軟件應(yīng)用作為軟 件流水線加以實現(xiàn)。為了進一步加以解釋,圖5描述了數(shù)據(jù)流圖,說明 了流水線實例的操作。圖5的流水線實例(600)包括3個執(zhí)行的階段 (602, 604, 606)。軟件流水線為這樣一種計算機軟件應(yīng)用將其分割 為互相協(xié)作,以按順序執(zhí)行一系列數(shù)據(jù)處理任務(wù)的計算機程序指令的模 塊,即'階段,的集合。流水線中的每個階段由可靈活配置的計算機程序 指令的模塊構(gòu)成,該模塊由階段ID加以標(biāo)識,其中每個階段在NOC上 的IP塊上的執(zhí)行線程上執(zhí)行。這些階段之所以為'可靈活配置的,,在于 每個階段可以支持所述階段的多個實例,從而當(dāng)需要時可以依據(jù)工作負 荷,通過對階段的更多的實例進行取例(instantiate),對流水線進行調(diào) "P 。
因為通過在NOC (圖2中的102)的IP塊(圖2中的104)上執(zhí)行 的計算機程序指令實現(xiàn)每個階段(602, 604, 606),所以每個階段(602, 604, 606)能夠通過IP塊(使用以上所描述的存儲器尋址的消息)的存 儲器通信控制器(圖2中的106)存取所編址的存儲器。而且,至少一 個階段在其它階段之間發(fā)送基于網(wǎng)絡(luò)地址的通信,其中,基于網(wǎng)絡(luò)地址 的通信維持著信息包的次序。在圖5的例子中,階段1和階段2均在階 段之間發(fā)送基于網(wǎng)絡(luò)地址的通信,階段1從階段1向階段2發(fā)送基于網(wǎng) 絡(luò)地址的通信(622 ~ 626 ),階段2向階段3發(fā)送網(wǎng)絡(luò)尋址的通信(628 ~ 632)。
17圖5的例子中的基于網(wǎng)絡(luò)地址的通信(622 ~ 632)維持著信息包的 次序。 一條流水線的各階段之間的基于網(wǎng)絡(luò)地址的通信為同一類型的所 有通信,因此流經(jīng)相同的虛擬信道,如以上所描述的。由根據(jù)本發(fā)明的 實施例的路由器(圖3中的110)路由這樣的通信中的每個信息包,按 順序,即按FIFO (先進先出)的順序進入和離開虛擬信道緩沖器(圖3 中的134),從而維持了嚴格的信息包次序。在根據(jù)本發(fā)明的基于網(wǎng)絡(luò)地 址的通信中維持信息包的次序,提供了消息的完整性,因為按與信息包 所處次序相同的次序接收信息包,從而消除了數(shù)據(jù)通信協(xié)議棧的較高層 中對追蹤信息包順序的需求。與其中網(wǎng)絡(luò)協(xié)議,即Internet協(xié)議不僅不 對信息包順序作出保證,而且通常實際上無序地提交信息包的TCP/IP 的例子相反,將這一保證交由數(shù)據(jù)通信協(xié)議棧的較高層中的傳輸控制協(xié) 議負責(zé),以使信息包處于正確的次序,并且把一條完整的消息提交于協(xié) 議棧的應(yīng)用層。
每個階段實現(xiàn)與下一個階段的產(chǎn)生者/消費者關(guān)系。階段1通過主 接口處理器(105)從運行在一臺計算機(152)上的應(yīng)用(184)接收 工作指令和工作件數(shù)據(jù)(620 )。階段1針對工作件數(shù)據(jù)執(zhí)行其被指派的 數(shù)據(jù)處理任務(wù),產(chǎn)生輸出數(shù)據(jù),并且把所產(chǎn)生的輸出數(shù)據(jù)(622, 624, 626 )發(fā)送至階段2,階段2通過對來自階段1的所產(chǎn)生的輸出數(shù)據(jù)執(zhí)行 其被指派的數(shù)據(jù)處理任務(wù),消費來自階段l的所產(chǎn)生的輸出數(shù)據(jù),從而 從階段2產(chǎn)生出輸出數(shù)據(jù),并且將所產(chǎn)生的輸出數(shù)據(jù)(628, 630, 632) 發(fā)送至階段3,接下來,通過對來自階段2的所產(chǎn)生的輸出數(shù)據(jù)執(zhí)行其 被指派的數(shù)據(jù)處理任務(wù),階段3消費來自階段2的所產(chǎn)生的輸出數(shù)據(jù), 從而從階段3產(chǎn)生出輸出數(shù)據(jù),然后將其所產(chǎn)生的輸出數(shù)據(jù)(634, 636) 存儲在輸出數(shù)據(jù)結(jié)構(gòu)(638)中,以最終通過主接口處理器(105)返回 至主計算機(152)上的初始應(yīng)用程序(184)。
把向初始應(yīng)用程序的返回稱為'最終的,,因為在準(zhǔn)備返回輸出數(shù)據(jù) 結(jié)構(gòu)(638)之前,可能需要計算相當(dāng)多的返回數(shù)據(jù)。在本例中,流水 線(600 )僅由3個階段(602 ~ 606)中的6個實例(622 ~ 632 )加以 表示。然而,根據(jù)本發(fā)明的實施例的許多流水線可以包括多個階段和多 個階段的實例。例如,在對應(yīng)用取模的原子過程中,輸出數(shù)據(jù)結(jié)構(gòu)(638 ) 可以按包括數(shù)十億個亞原子微粒的精確量子狀態(tài)的原子過程的某一具體納秒表示狀態(tài),其中,每個亞原子微粒要求流水線的不同階段中的成
千上萬次計算?;蛘咴谝曨l處理應(yīng)用中,又例如,輸出數(shù)據(jù)結(jié)構(gòu)(638 )
可以代表視頻楨,該視頻楨由成千上萬個像素的當(dāng)前顯示狀態(tài)構(gòu)成,其 中,每個像素可能要求流水線的不同階段中的眾多計算。
把流水線(600)的每個階段(602 ~ 606)的每個實例(622 ~ 632 ) 作為NOC (圖2中的102 )上的獨立IP塊(圖2中的104 )上所執(zhí)行的 計算機程序指令的應(yīng)用級模塊加以實現(xiàn)。把每個階段賦予NOC的IP塊 上的執(zhí)行線程,向階段的每個實例賦予階段ID。在本例中,使用階段l 的實例(608)、階段2的3個實例(610, 612, 614)、以及階段3的2 個實例(616、 618)實現(xiàn)流水線(600)。在啟動階段,主接口處理器(105) 使用階段的2的實例的數(shù)目和階段2的每個實例的網(wǎng)絡(luò)地址配置階段1 (602, 608)。階段l (602, 608 )可以分布其所得到的工作負荷(622, 624, 626),例如,通過在階段2的實例(610 ~ 614 )之間均等地分布 工作負荷。在啟動階段使用授權(quán)階段2的實例把其所得到的工作負荷發(fā) 送于其的階段3的每個實例的網(wǎng)絡(luò)地址配置階段2的每個實例(610~ 614)。在這一例子中,把實例(610, 612)均配置為能夠把它們的工作 負荷發(fā)送于階段3的實例(616),而僅階段2的實例(614)向階段3 的實例(618 )發(fā)送工作(632 )。如果實例(616)變?yōu)樵噲D處理實例(618 ) 的兩倍工作負荷的瓶頸,則可以對階段3的另實例進行取例,如果需要 的話,甚至可在運行時間實時地進行這一實例。
在其中把計算機軟件應(yīng)用(500)分割為階段(602 ~ 606)的圖5 的例子中,可以使用針對下一個階段的每個實例的階段ID,對每個階段 進行配置。使用階段ID對階段進行配置意味著針對下一個階段的每個 實例,向階段提供標(biāo)識符,其中,把所述標(biāo)識符存儲在可用于所述階段 的存儲器中。使用下一個階段的實例的標(biāo)識符進行配置,可以包括使用 下一個階段的實例數(shù)目以及下一個階段的每個實例的網(wǎng)絡(luò)地址進行配 置,如以上所提到的。在當(dāng)前的例子中,可以使用針對階段的每個實例 (610-614)的階段標(biāo)識符,即'ID,,對階段l的單一的實例(608)進 行配置,其中,階段1的'下一個階段,當(dāng)然為階段2??梢允褂冕槍ο乱?個階段的每個實例(616, 618)的階段ID,對階段2的3個實例(610~ 614)中的每個進行配置,其中,階段2的下一個階段自然為階段3。
19依此類推,在這一例子中,由于階段3代表了不具有下一個階段的階段
細節(jié)(trivial case),因此,配置這樣什么都沒有的階段表示使用下一個 階段的階段ID對所述階段進行配置。
如此處所描述的,使用針對下一個階段的實例的ID對階段進行配 置,向該階段提供了跨越各階段進行負載平衡所需的信息。例如,在其 中把計算機軟件應(yīng)用(500)分成幾個階段的圖5的流水線中,依賴于 各階段的性能,通過每個階段的多個實例,對各階段進行負載平衡。例 如,可以依賴于一個或多個階段的性能,通過監(jiān)視各階段的性能以及對 每個階段的多個實例進行取例,進行這樣的負載平衡。可以通過對每個 階段進行配置,執(zhí)行對各階段的性能的監(jiān)視,以向監(jiān)視應(yīng)用(502)報 告性能統(tǒng)計,接下來,安裝監(jiān)視應(yīng)用(502),并且令其運行在IP塊或者 主接口處理器上的執(zhí)行的另線程上。例如,性能統(tǒng)計可以包括完成數(shù)據(jù) 處理任務(wù)所需的時間、在特定時間周期內(nèi)完成的多個數(shù)據(jù)處理任務(wù)等, 這是這一技術(shù)領(lǐng)域中的熟練技術(shù)人員所熟悉的。
當(dāng)所監(jiān)視的性能指示對新實例的需求時,可以通過主接口處理器(105), 依賴于一個或多個階段的性能進行對每個階段的多個實例的取例。如所提及 的,在這一例子中,對實例(610, 612)均加以配置,以能夠?qū)⑺鼈兊乃?到的工作負荷(628, 630)發(fā)送于階段3的實例(616),然而僅階段2的實 例(614 )把工作((work) ( 632 )發(fā)送于階段3的實例(618 )。如果實例(616 ) 變?yōu)樵噲D處理實例(618)的兩倍工作負荷的瓶頸,則可以對階段3的 另實例進行取例,如需要的話,甚至可在運行時間實時地進行這一取例。
圖6
為了進一步地加以解釋,圖6描述了流程圖,說明了在根據(jù)本發(fā)明的 實施例的NOC上的軟件流水線操作的一種示范性方法。在本說明書中, 在類似于以上所描述的NOC上實現(xiàn)圖6的方法,即在芯片(圖2中的100) 上實現(xiàn)的NOC (圖2中的102),具有IP塊(圖2的104)、路由器(圖2中 的110)、存儲器通信控制器(圖2中的106)、以及網(wǎng)^#口控制器(圖2中 的108)。在圖6的方法中,把每個IP塊作為用作NOC中數(shù)據(jù)處理的構(gòu)件塊 的同步或異步邏輯設(shè)計的可重用單元加以實現(xiàn)。
圖6的方法包括把計算機軟件應(yīng)用分割(702)為階段,其中,把每個階段作為由階段ID加以標(biāo)識的計算機程序指令的可靈活配置的模塊加以實現(xiàn)。
在圖6的方法中,可以通過使用針對下一個階段的每個實例的階段ID配置 (706)每個階段,把計算機軟件應(yīng)用分割(702)為階段。圖6的方法還包 括在IP塊的執(zhí)行線程上執(zhí)行(704 )每個階段。
在圖6的方法中,把計算機軟件應(yīng)用分割(702)為階段還可以包括把每 個階段賦予(708) IP塊上的執(zhí)行線程,向每個階段賦予階段ID。在這樣的 實施例中,在IP塊上的執(zhí)行線程上執(zhí)行(704 )每個階段可以包括"執(zhí)行(710 ) 第一階段,產(chǎn)生輸出數(shù)據(jù);第一階段把所產(chǎn)生的輸出數(shù)據(jù)發(fā)送(712)至第二 階段;以及第二階段消費(714)所產(chǎn)生的輸出數(shù)據(jù)。
在圖6的方法中,把計算機軟件應(yīng)用分割(702)為階段還可以包括對各 階段進行負載平衡(716),通過監(jiān)視(718)各階段的性能,并且依賴于一個 或多個階段的性能,對每個階段的多個實例進行取例(720),執(zhí)行這一負載 平衡。
主要針對NOC上的軟件流水線操作的全功能計算機系統(tǒng)描述了本發(fā)明 的示范性實施例。然而,這一技術(shù)領(lǐng)域中的熟練技術(shù)人員讀者將會意識到, 也可以在設(shè)置于隨任何適當(dāng)數(shù)據(jù)處理系統(tǒng)一起使用的計算機可讀媒體上的計 算機程序產(chǎn)品中體現(xiàn)本發(fā)明。這樣的計算機可讀媒體可以為針對機器可讀信 息的傳輸媒體或者可記錄媒體,包括磁媒體、光媒體、或者其它適當(dāng)?shù)拿襟w。 可記錄媒體的例子包括硬驅(qū)動器中的》茲盤或者軟盤、針對光驅(qū)動器的緊致盤、 磁帶、以及其它這一技術(shù)領(lǐng)域中的熟練技術(shù)人員所熟悉的可記錄媒體。傳輸 媒體的例子包括針對話音通信的電話網(wǎng)絡(luò)、諸如Ethernet 等的數(shù)字數(shù)據(jù)通 信網(wǎng)絡(luò)、與Internet協(xié)議和World Wide Web通信的網(wǎng)絡(luò)、以及諸如根據(jù)IEEE 802.11規(guī)范系列所實現(xiàn)的網(wǎng)絡(luò)等的無線傳輸媒體,這一技術(shù)領(lǐng)域中的熟練技 術(shù)人員將會立刻意識到,任何具有適當(dāng)程序設(shè)計機制的計算機系統(tǒng)將能夠執(zhí) 行體現(xiàn)在程序產(chǎn)品中的本發(fā)明的方法的步驟。這一技術(shù)領(lǐng)域中的熟練技術(shù)人 員將會立刻意識到,盡管本說明書中所描述的某些示范性實施例面向所安裝 的軟件,并且運行在計算機硬件上,然而,作為固件或者硬件所實現(xiàn)的可選 的實施例,也在本發(fā)明的范圍之內(nèi)。
從以上的描述可以看出,在不背離本發(fā)明的宗旨的情況下,可以在本發(fā) 明的各實施例中進行修改與變動。本說明書中的描述僅為說明性的,而不應(yīng)
將其視為限制性的。本發(fā)明的范圍僅由下列權(quán)利要求的語言加以限制。
2權(quán)利要求
1. 一種片內(nèi)網(wǎng)絡(luò)上軟件流水線操作的方法,所述片內(nèi)網(wǎng)絡(luò)包括集成處理器塊、路由器、存儲器通信控制器以及網(wǎng)絡(luò)接口控制器,每個集成處理器塊適配于貫穿存儲器通信控制器和網(wǎng)絡(luò)接口控制器的路由器,每個存儲器通信控制器控制集成處理器塊和存儲器之間的通信,每個網(wǎng)絡(luò)接口控制器通過路由器控制集成處理器塊間通信,該方法包括把計算機軟件應(yīng)用分成幾個階段,每個階段包括由階段ID所標(biāo)識的計算機程序指令的可靈活配置的模塊;以及在集成處理器塊上的執(zhí)行線程上執(zhí)行每個階段。
2. 根據(jù)權(quán)利要求1所述的方法,其中,把計算機軟件應(yīng)用分成幾 個階段還包括使用針對下一個階段的每個實例的階段ID對每個階段進 行配置。
3. 根據(jù)權(quán)利要求1所述的方法,其中,把計算機軟件應(yīng)用分成幾 個階段還包括對各階段進行負載平衡,包括監(jiān)視各階段的性能;以及依賴于一個或多個階段的性能,對每個階段的多個實例進行取例。
4. 根據(jù)權(quán)利要求1所述的方法,其中把計算機軟件應(yīng)用分成幾個階段還包括把每個階段賦予集成處理器 塊上的執(zhí)行線程,向每個階段賦予階段ID;以及在集成處理器塊上的執(zhí)行線程上執(zhí)行每個階段還可以包括 執(zhí)行第一階段,產(chǎn)生輸出數(shù)據(jù);由第一階段把所產(chǎn)生的輸出數(shù)據(jù)發(fā)送至第二階段;以及 由第二階段消費所產(chǎn)生的輸出數(shù)據(jù)。
5. 根據(jù)權(quán)利要求1所述的方法,其中,每個階段能夠通過集成處 理器塊的存儲器通信控制器存取被尋址的存儲器。
6. 根據(jù)權(quán)利要求1所述的方法,其中,在集成處理器塊上的執(zhí)行線 程上執(zhí)行每個階段還包括在各階段之間發(fā)送基于非存儲器地址的通信。
7. 根據(jù)權(quán)利要求6所述的方法,還包括在發(fā)送基于非存儲器地址的 通信的同時維持信息包的次序。
8. —種用于軟件流水線操作的片內(nèi)網(wǎng)絡(luò),所述片內(nèi)網(wǎng)絡(luò)包括集成處理器塊、路由器、存儲器通信控制器以及網(wǎng)絡(luò)接口控制器,每個集成 處理器塊適配于貫穿存儲器通信控制器和網(wǎng)絡(luò)接口控制器的路由器,每 個存儲器通信控制器控制集成處理器塊和存儲器之間的通信,每個網(wǎng)絡(luò)接口控制器通過路由器控制集成處理器塊間通信,所述片內(nèi)網(wǎng)絡(luò)包括 被分成幾個階段的計算機軟件應(yīng)用,每個階段包括由階段ID標(biāo)識 的計算機程序指令的可靈活配置的模塊;以及在集成處理器塊上的執(zhí)行線程上執(zhí)行的每個階段。
9. 根據(jù)權(quán)利要求8所述的片內(nèi)網(wǎng)絡(luò),其中,被分成幾個階段的計 算機軟件應(yīng)用還包括使用針對下一個階段的每個實例的階段ID進行配 置的每個階段。
10. 根據(jù)權(quán)利要求8所述的片內(nèi)網(wǎng)絡(luò),其中,被分成幾個階段的計 算機軟件應(yīng)用還包括依賴于各階段的性能使用每個階段的多個實例被負載平衡的階段。
11. 根據(jù)權(quán)利要求8所述的片內(nèi)網(wǎng)絡(luò),其中被分成幾個階段的計算機軟件應(yīng)用還包括被賦予集成處理器塊上的 執(zhí)行線程的每個階段,被賦有階段ID的每個階段;以及在集成處理器塊上的執(zhí)行線程上執(zhí)行的每個階段還包括在集成處理器塊上執(zhí)行的第一階段,所述第一階段產(chǎn)生輸出數(shù)據(jù),把所 產(chǎn)生的輸出數(shù)據(jù)發(fā)送至第二階段;以及消費所產(chǎn)生的輸出數(shù)據(jù)的所述第二階段。
12. 根據(jù)權(quán)利要求8所述的片內(nèi)網(wǎng)絡(luò),其中,每個階段能夠通過集 成處理器塊的存儲器通信控制器存取被尋址的存儲器。
13. 根據(jù)權(quán)利要求8所述的片內(nèi)網(wǎng)絡(luò),其中,在集成處理器塊上的執(zhí) 行線程上執(zhí)行每個階段還可以包括至少一個階段的各階段之間的發(fā)送基于網(wǎng) 絡(luò)地址的通信。
14. 根據(jù)權(quán)利要求13所述的方法,其中,基于網(wǎng)絡(luò)地址的通信維持 信息包的次序。
15. —種計算機可讀媒體,包括程序,當(dāng)該程序執(zhí)行時,該程序執(zhí)行操 作,以實現(xiàn)根據(jù)權(quán)利要求1 ~ 7中任何根據(jù)權(quán)利要求所述的方法中的步驟。
全文摘要
一種片內(nèi)網(wǎng)絡(luò),其包括集成處理器塊、路由器、存儲器通信控制器、以及網(wǎng)絡(luò)接口控制器,其中每個集成處理器塊均適應(yīng)于貫穿存儲器通信控制器和網(wǎng)絡(luò)接口控制器的路由器,其中,每個存儲器通信控制器控制集成處理器塊和存儲器之間的通信,每個網(wǎng)絡(luò)接口控制器通過路由器控制集成處理器塊間通信。所述片內(nèi)網(wǎng)絡(luò)還包括被分成幾個階段的計算機軟件應(yīng)用,每個階段包括由階段ID所標(biāo)識的計算機程序指令的可靈活配置的模塊;其中每個階段在集成處理器塊上的執(zhí)行線程上執(zhí)行。
文檔編號H04L12/56GK101430652SQ20081016171
公開日2009年5月13日 申請日期2008年9月22日 優(yōu)先權(quán)日2007年11月8日
發(fā)明者喬恩·K·克里格爾, 保羅·E·沙德特, 埃里克·O·梅杰德里克, 拉塞爾·D·胡佛 申請人:國際商業(yè)機器公司