專(zhuān)利名稱(chēng):流式傳輸直接線程間緩沖區(qū)封包的方法、裝置、片上網(wǎng)絡(luò)的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)涉及計(jì)算機(jī)領(lǐng)域,具體涉及線程化計(jì)算機(jī)。更具體地,本公開(kāi)涉及片上網(wǎng)絡(luò) (NOC)集成電路處理器。
背景技術(shù):
片上網(wǎng)絡(luò)(NOC)是將網(wǎng)絡(luò)架構(gòu)應(yīng)用于單個(gè)芯片以創(chuàng)建唯一處理單元的新穎集成 電路。不同于利用標(biāo)準(zhǔn)單個(gè)馮諾伊曼架構(gòu)(該架構(gòu)具有控制單元,用以協(xié)調(diào)沿系統(tǒng)總線和 輸入/輸出(I/O)總線的、算術(shù)邏輯單元與存儲(chǔ)器之間以及算術(shù)邏輯單元與輸入/輸出緩 沖區(qū)之間的數(shù)據(jù)流),N0C使用封包在邏輯節(jié)點(diǎn)(每個(gè)邏輯節(jié)點(diǎn)都可以利用馮諾伊曼型處理 器)之間傳遞數(shù)據(jù)。每個(gè)封包包括報(bào)頭(其對(duì)要接收并處理該封包的邏輯節(jié)點(diǎn)進(jìn)行尋址) 和有效載荷(例如,數(shù)據(jù)、指令等)。然而,根據(jù)邏輯節(jié)點(diǎn)的數(shù)據(jù)加載協(xié)議需求,封包中的數(shù) 據(jù)時(shí)常是未對(duì)齊或沒(méi)對(duì)齊的。
發(fā)明內(nèi)容
提出用于對(duì)在高度線程化的片上網(wǎng)絡(luò)(NOC)處理器內(nèi)的線程間通信緩沖區(qū)封包 中傳輸?shù)南蛄坎僮鲾?shù)進(jìn)行任意對(duì)齊計(jì)算機(jī)實(shí)現(xiàn)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。NOC節(jié)點(diǎn)中 的多路器集合對(duì)來(lái)自傳入的已壓縮線程間通信緩沖封包的數(shù)據(jù)字(data word)聚合進(jìn)行重 對(duì)齊和提取。所提取的數(shù)據(jù)字聚合由節(jié)點(diǎn)中的執(zhí)行單元用作操作數(shù)。本發(fā)明的上述以及其他目的、特征和優(yōu)勢(shì)將在下面詳細(xì)書(shū)面描述中變得顯而易 見(jiàn)。
在所附權(quán)利要求中記載了認(rèn)為是本發(fā)明的特征的新穎特性。然而,通過(guò)參照下文 結(jié)合附圖對(duì)說(shuō)明性實(shí)施方式的具體描述來(lái)最好地理解本發(fā)明本身及其優(yōu)選實(shí)施方式、更多 目的和優(yōu)點(diǎn)圖1描述了具有多個(gè)線程的示例性片上網(wǎng)絡(luò)(NOC);圖2示出了來(lái)自數(shù)據(jù)封包的未對(duì)齊數(shù)據(jù),其存儲(chǔ)在圖1所描述的一個(gè)線程內(nèi)的封 包緩沖區(qū)中;圖3描繪了根據(jù)本發(fā)明一個(gè)實(shí)施方式的利用一個(gè)或多個(gè)NOC的計(jì)算機(jī)的示例性實(shí) 施方式;圖4示出了圖3中描繪的一個(gè)或多個(gè)NOC的附加細(xì)節(jié);圖5描繪了來(lái)自圖4中所示NOC的IP塊節(jié)點(diǎn)的附加細(xì)節(jié);圖6示出了圖5中所示IP塊節(jié)點(diǎn)處的處理器內(nèi)核的附加細(xì)節(jié);圖7描繪了單個(gè)處理器內(nèi)核中的多個(gè)線程;圖8示出了 NOC的一個(gè)示例性實(shí)現(xiàn),其利用新穎數(shù)據(jù)封包對(duì)齊/壓縮邏輯來(lái)執(zhí)行 圖形程序;
圖9描繪了來(lái)自未對(duì)齊數(shù)據(jù)封包的、由位于圖1-圖8中描述的NOC中的IP塊節(jié)點(diǎn)內(nèi)的對(duì)齊/壓縮邏輯進(jìn)行對(duì)齊和壓縮的數(shù)據(jù);圖10示出了用于提取并且對(duì)齊直接線程間通信緩沖區(qū)(DITCB)中數(shù)據(jù)的IP塊節(jié) 點(diǎn)內(nèi)的邏輯;以及圖11是由本發(fā)明用于對(duì)齊、壓縮和重對(duì)齊在NOC中的IP塊節(jié)點(diǎn)之間傳輸?shù)臄?shù)據(jù) 所采取的示例性步驟的高層流程圖。
具體實(shí)施例方式某些軟件應(yīng)用以如下方式來(lái)使用片上網(wǎng)絡(luò)(NOC),即,將NOC中的不同節(jié)點(diǎn)分配給 作業(yè)的不同部分。例如,參考圖1中描繪的N0C102。NOC 102從主計(jì)算機(jī)104中的用戶(hù)應(yīng) 用112接收軟件指令,處理這些指令,繼而將執(zhí)行結(jié)果輸出到輸出設(shè)備106(例如,監(jiān)視器、 打印機(jī)、存儲(chǔ)設(shè)備等)。在圖1描述的示例中,NOC 102中存在四個(gè)硬件線程108a-d,每個(gè) 線程被指派用于執(zhí)行由用戶(hù)應(yīng)用112描述的作業(yè)的不同部分。每個(gè)線程108a-d包括硬件 處理器邏輯,并且還可以與專(zhuān)用軟件集合相關(guān)聯(lián),以用于執(zhí)行用戶(hù)應(yīng)用112所描述的整體 作業(yè)的特定子任務(wù)。因此,線程108a可以處理整體作業(yè)的第一部分,得到被置于封包IlOa 中并被發(fā)送到第二線程108b的第一輸出。第二線程繼而處理來(lái)自封包IlOa的數(shù)據(jù),得到 被封裝到封包IlOb中并被發(fā)送到第三線程108c的第二輸出。第三線程處理來(lái)自封包IlOb 的數(shù)據(jù),得到被封裝到封包IlOc中并被發(fā)送到第四線程108d的第三輸出,而第四線程108d 處理來(lái)自封包IlOd的數(shù)據(jù)。第四線程108d繼而生成被發(fā)送到輸出設(shè)備106的最終輸出封 包110d,從而完成整體作業(yè)所需的最終操作。線程108a-d中的一個(gè)示例性線程的附加細(xì)節(jié)在圖2中示為線程208。線程208中 是處理硬件202,其可以是用于處理來(lái)自傳入數(shù)據(jù)封包204 (例如,圖1中給出的封包110a) 的數(shù)據(jù)的處理器、專(zhuān)用集成電路(ASIC)等。來(lái)自數(shù)據(jù)封包204的數(shù)據(jù)由封包接收邏輯218 接收,繼而被加載至封包緩沖區(qū)206中。向量寄存器文件210和向量執(zhí)行流水線212邏輯 繼而使數(shù)據(jù)字的每一行(即,數(shù)據(jù)字的聚合)被加載至處理硬件202以便執(zhí)行。注意圖2 中的如下問(wèn)題。第一,來(lái)自封包緩沖區(qū)206的每行數(shù)據(jù)作為固定大小的單個(gè)聚合被加載到 處理硬件202中,而不考慮數(shù)據(jù)是否在一行中。第二,在圖2給出的示例中,只要執(zhí)行了加 載命令,處理硬件202便加載整個(gè)四字行(four-word line),而不考慮行中實(shí)際上有多少 個(gè)字。因此,由于數(shù)據(jù)字的聚合(行)是不同大小的,所以在封包緩沖區(qū)206 (和數(shù)據(jù)封包 204中相關(guān)聯(lián)的數(shù)據(jù))中便有了“孔洞(hole)”。換言之,行204將包括數(shù)據(jù)字“a、b、c”的 數(shù)據(jù)聚合存儲(chǔ)為三字聚合,其沒(méi)有“d”字。因此,在封包緩沖區(qū)206的行214中存在空塊 216。同樣,由于數(shù)據(jù)聚合具有少于四個(gè)字,存儲(chǔ)在封包緩沖區(qū)206中的其它數(shù)據(jù)行也存在 空塊單元。傳輸和“緩沖”不存在的字降低了系統(tǒng)(特別是N0C)的整體效率,因?yàn)閭鬏敇I(yè) 務(wù)被充滿(mǎn)(空數(shù)據(jù)),并且必須將封包緩沖區(qū)設(shè)計(jì)得足夠大,以為這種不存在的數(shù)據(jù)預(yù)留空 間。在研究本發(fā)明如何解決圖2中給出的問(wèn)題之前,參考圖3中描繪的示例性計(jì)算機(jī) 302,其使用根據(jù)本發(fā)明的一個(gè)或多個(gè)N0C。如上所述,圖3記載了示例性計(jì)算機(jī)302的框 圖,其包括至少一個(gè)計(jì)算機(jī)處理器304。計(jì)算機(jī)處理器304可以是標(biāo)準(zhǔn)的馮諾伊曼類(lèi)型處 理器或N0C。計(jì)算機(jī)302還可以包括隨機(jī)訪問(wèn)存儲(chǔ)器(RAM) 306,它是通過(guò)高速存儲(chǔ)器總線308和總線適配器310與處理器304和計(jì)算機(jī)302的其它組件耦合的系統(tǒng)存儲(chǔ)器。RAM 306中存儲(chǔ)的是應(yīng)用程序312,即用于執(zhí)行特定數(shù)據(jù)處理任務(wù)的計(jì)算機(jī)程序指令的模塊,其中數(shù)據(jù)處理任務(wù)諸如文字處理、電子表格、數(shù)據(jù)庫(kù)操作、視頻游戲、模擬股票 市場(chǎng)、原子的量子過(guò)程仿真或者其它用戶(hù)級(jí)應(yīng)用。應(yīng)用程序312還包括諸如上文圖1-圖2 和下文圖8-圖11所描述的控制過(guò)程。RAM 306中還存儲(chǔ)有操作系統(tǒng)(0S)314。OS 314包 括外殼(shell)316,用于提供對(duì)諸如應(yīng)用程序312等資源的透明用戶(hù)訪問(wèn)。通常,外殼316 是提供用戶(hù)與操作系統(tǒng)之間的解釋器和接口的程序。更具體地,外殼316執(zhí)行被輸入到命 令行用戶(hù)界面的命令或來(lái)自于文件的命令。因此,外殼316 (也稱(chēng)作命令處理器)通常是操 作系統(tǒng)軟件層級(jí)的最高級(jí)別,并充當(dāng)命令解釋器。外殼提供系統(tǒng)提示,解釋通過(guò)鍵盤(pán)、鼠標(biāo) 或其他用戶(hù)輸入介質(zhì)而輸入的命令,并且將經(jīng)過(guò)解釋的命令發(fā)送到操作系統(tǒng)適當(dāng)?shù)妮^低級(jí) 別(例如,核318)用于處理。注意,盡管外殼316是基于文本的、面向行的用戶(hù)界面,但是 本發(fā)明將同樣很好地支持其他用戶(hù)界面模式,諸如圖形、語(yǔ)音、手勢(shì)等。如上所述,OS 314還包括核318,其包括OS 314的較低級(jí)別的功能,包括提供OS 314的其它部分和應(yīng)用程序(例如,應(yīng)用312)所需的基本服務(wù),這些基本服務(wù)包括存儲(chǔ)器管 理、處理和任務(wù)管理、磁盤(pán)管理以及鼠標(biāo)和鍵盤(pán)管理。盡管RAM 306中示出了圖3示例中的操作系統(tǒng)314和應(yīng)用312,但這種軟件組件還 可以存儲(chǔ)在非易失存儲(chǔ)器中,諸如存儲(chǔ)于作為數(shù)據(jù)存儲(chǔ)320的盤(pán)驅(qū)動(dòng)上。根據(jù)本發(fā)明的實(shí)施方式,示例計(jì)算機(jī)302包括兩個(gè)示例NOC =NOC視頻適配器322 和NOC協(xié)處理器324。NOC視頻適配器322是I/O適配器的示例,其專(zhuān)門(mén)被設(shè)計(jì)用于對(duì)諸如 顯示器屏幕或者計(jì)算機(jī)監(jiān)視器的顯示設(shè)備346的圖形輸出。NOC視頻適配器322通過(guò)高速 視頻總線326、總線適配器310和前端總線328 (其也是高速總線)連接至處理器304。示例NOC協(xié)處理器324通過(guò)總線適配器310、前端總線328和前端總線330 (其也 是高速總線)連接至處理器304。NOC協(xié)處理器324被優(yōu)化為在主處理器304的命令下加 速特定的數(shù)據(jù)處理任務(wù)。示例NOC視頻適配器322和NOC協(xié)處理器324每個(gè)都包括根據(jù)本發(fā)明實(shí)施方式的 N0C,其包括集成處理器(“IP”)塊、路由器、存儲(chǔ)器通信控制器以及網(wǎng)絡(luò)接口控制器,其中 每個(gè)IP塊通過(guò)存儲(chǔ)器通信控制器和網(wǎng)絡(luò)接口控制器適配至路由器,每個(gè)存儲(chǔ)器通信控制 器控制IP塊和存儲(chǔ)器之間的通信,并且每個(gè)網(wǎng)絡(luò)接口控制器控制通過(guò)路由器的IP塊間通 信。NOC視頻適配器322和NOC協(xié)處理器324針對(duì)使用并行處理并且還需要對(duì)共享存儲(chǔ)器 進(jìn)行快速隨機(jī)訪問(wèn)的程序而進(jìn)行優(yōu)化。然而,在一個(gè)實(shí)施方式中,這里所描述并且預(yù)期由本 發(fā)明使用的NOC僅利用了封包數(shù)據(jù),而非對(duì)共享存儲(chǔ)器的直接訪問(wèn)。再次,需要注意,預(yù)期 由本發(fā)明使用的示例性NOC架構(gòu)的附加細(xì)節(jié)將在下文圖4-7中給出。繼續(xù)圖3,計(jì)算機(jī)302可以包括盤(pán)驅(qū)動(dòng)適配器332,其通過(guò)擴(kuò)展總線334和總線適 配器310耦合至處理器304和計(jì)算機(jī)302的其它組件。盤(pán)驅(qū)動(dòng)適配器332以表示為數(shù)據(jù)存 儲(chǔ)320的盤(pán)驅(qū)動(dòng)的形式將非易失性數(shù)據(jù)存儲(chǔ)連接至計(jì)算機(jī)302。在用于利用根據(jù)本發(fā)明實(shí) 施方式的NOC進(jìn)行數(shù)據(jù)處理的計(jì)算機(jī)中使用的盤(pán)驅(qū)動(dòng)適配器包括集成驅(qū)動(dòng)電子(“IDE”) 適配器、小型計(jì)算機(jī)系統(tǒng)接口( “SCSI”)適配器以及本領(lǐng)域技術(shù)人員可以想到的其它適 配器。非易失性計(jì)算機(jī)存儲(chǔ)器還可以實(shí)現(xiàn)為光盤(pán)驅(qū)動(dòng)、電可擦除可編程只讀存儲(chǔ)器(稱(chēng)為 “EEPR0M”或者“閃存”存儲(chǔ)器)等,這將是本領(lǐng)域技術(shù)人員可以想到的。
示例計(jì)算機(jī)302還包括一個(gè)或多個(gè)輸入/輸出(“I/O”)適配器336。I/O適配器 336實(shí)現(xiàn)例如通過(guò)軟件驅(qū)動(dòng)器和計(jì)算機(jī)硬件的、面向用戶(hù)的輸入/輸出,以用于對(duì)向諸如計(jì) 算機(jī)顯示屏幕的顯示設(shè)備的輸出以及來(lái)自諸如鍵盤(pán)和鼠標(biāo)的用戶(hù)輸入設(shè)備338的用戶(hù)輸 入進(jìn)行控制。
示例計(jì)算機(jī)302還可以包括通信適配器340,用于與其它計(jì)算機(jī)342的數(shù)據(jù)通信, 以及與數(shù)據(jù)通信網(wǎng)絡(luò)344的數(shù)據(jù)通信。這種數(shù)據(jù)通信可以通過(guò)RS-232連接、通過(guò)諸如通用 串行總線(“USB”)的外部總線、通過(guò)諸如IP數(shù)據(jù)通信網(wǎng)絡(luò)的數(shù)據(jù)通信網(wǎng)絡(luò)以及按照本領(lǐng) 域技術(shù)人員可以想到的其它方式來(lái)串行地執(zhí)行。通信適配器實(shí)現(xiàn)數(shù)據(jù)通信的硬件級(jí)別,通 過(guò)它,一個(gè)計(jì)算機(jī)向另一計(jì)算機(jī)直接地或是通過(guò)數(shù)據(jù)通信網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。可以用于根據(jù)本 發(fā)明實(shí)施方式的、利用NOC進(jìn)行數(shù)據(jù)處理的通信適配器示例包括用于有線撥號(hào)通信的調(diào) 制解調(diào)器,用于有線數(shù)據(jù)通信網(wǎng)絡(luò)通信的以太網(wǎng)(IEEE 802.3)適配器,以及用于無(wú)線數(shù)據(jù) 通信網(wǎng)絡(luò)通信的IEEE 802. χ適配器。注意,雖然NOC視頻適配器322和NOC協(xié)處理器324僅是NOC的兩個(gè)示例性使用, 但是這里所描述的NOC和工作封包控制可以在將NOC用于數(shù)據(jù)處理的任何上下文中找到?,F(xiàn)在參考圖4,給出了根據(jù)本發(fā)明實(shí)施方式的示例性NOC 402的功能性框圖。NOC 402是可以用作圖3中示出的NOC視頻適配器322和/或NOC協(xié)處理器324的示例性N0C。 NOC 402實(shí)現(xiàn)在集成電路芯片400上,并且由主計(jì)算機(jī)104控制(例如,圖3中給出的處理 器304)。NOC 402包括集成處理器(“IP”)塊404、路由器410、存儲(chǔ)器通信控制器406以 及網(wǎng)絡(luò)接口控制器408。每個(gè)IP塊404通過(guò)存儲(chǔ)器通信控制器406和網(wǎng)絡(luò)接口控制器408 適配至路由器410。每個(gè)存儲(chǔ)器通信控制器406控制IP塊404與存儲(chǔ)器(例如,片上存儲(chǔ) 器414和/或片外存儲(chǔ)器412)之間的通信,并且每個(gè)網(wǎng)絡(luò)接口控制器408控制通過(guò)路由器 410的IP塊間通信。在NOC 402中,每個(gè)IP塊404表示同步或者異步邏輯設(shè)計(jì)的可重用單元,其被用 作NOC 402內(nèi)用于數(shù)據(jù)處理的構(gòu)造塊。術(shù)語(yǔ)“IP塊”有時(shí)稱(chēng)為“知識(shí)產(chǎn)權(quán)塊”,從而表示作 為由一方(也即,知識(shí)產(chǎn)權(quán)方)所有的設(shè)計(jì)的IP塊,其將被授權(quán)給其他用戶(hù)或者半導(dǎo)體電 路的設(shè)計(jì)者。然而,在本發(fā)明的范圍內(nèi),IP塊無(wú)需受制于任何特定的所有權(quán),因此該術(shù)語(yǔ)在 本說(shuō)明書(shū)中總是解釋為“集成處理器塊”。正如在此規(guī)定的,IP塊404是邏輯、單元或者芯 片布圖設(shè)計(jì)的可重用單元,其可以作為也可以不作為知識(shí)產(chǎn)權(quán)的主題。此外,IP塊404是 可以形成為專(zhuān)用集成電路(ASIC)芯片設(shè)計(jì)或者現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)邏輯設(shè)計(jì)的邏輯 內(nèi)核。通過(guò)類(lèi)比來(lái)描述IP塊的一種方法是IP塊對(duì)于NOC設(shè)計(jì)就如同庫(kù)對(duì)于計(jì)算機(jī)編 程,或者離散集成電路組件對(duì)于印刷板設(shè)計(jì)。在根據(jù)本發(fā)明實(shí)施方式的NOC中,IP塊可以 實(shí)現(xiàn)為通用門(mén)網(wǎng)表,實(shí)現(xiàn)為完整的專(zhuān)用或者通用微處理器,或者以本領(lǐng)域技術(shù)人員可以想 到的其它方式來(lái)實(shí)現(xiàn)。網(wǎng)表是IP塊的邏輯功能的布爾-代數(shù)表示(門(mén)、標(biāo)準(zhǔn)單元),類(lèi)似 于用于高級(jí)程序應(yīng)用的匯編代碼列表。例如,NOC還可以按照合成形式來(lái)實(shí)現(xiàn),通過(guò)諸如 Verilog或者VHSIC硬件描述語(yǔ)言(VHDL)來(lái)描述。除了網(wǎng)表和合成實(shí)現(xiàn)之外,NOC還可以 通過(guò)較低級(jí)的物理描述來(lái)表達(dá)。諸如串行器/解串行器(SERDES)、鎖相環(huán)路(PLL)、數(shù)模轉(zhuǎn) 換器(DAC)、模數(shù)轉(zhuǎn)換器(ADC)等模擬IP塊元件可以按照諸如圖形數(shù)據(jù)系統(tǒng)II (GDSII)的 晶體管布局格式來(lái)分發(fā)。布局格式中有時(shí)也提供IP塊的數(shù)字元件。
圖4中示出的每個(gè)IP塊404通過(guò)存儲(chǔ)器通信控制器406適配至路由器410。每個(gè) 存儲(chǔ)器通信控制器是同步或者異步邏輯電路的集合,其適于提供IP塊和存儲(chǔ)器之間的數(shù) 據(jù)通信。IP塊和存儲(chǔ)器之間的這種通信的示例包括存儲(chǔ)器加載(load)指令和存儲(chǔ)器存儲(chǔ) (store)指令。存儲(chǔ)器通信控制器406將在下文參考圖5進(jìn)行更為詳細(xì)地描述。圖4中描繪的每個(gè)IP塊404還通過(guò)網(wǎng)絡(luò)接口控制器408適配至路由器410。每個(gè) 網(wǎng)絡(luò)接口控制器408控制IP塊404之間通過(guò)路由器410的通信。IP塊之間的通信的示例 包括攜帶數(shù)據(jù)的消息(例如,消息/數(shù)據(jù)封包)以及用于在并行應(yīng)用中和流水線化應(yīng)用中 的IP塊間處理數(shù)據(jù)的指令。網(wǎng)絡(luò)接口控制器408將在下文參考圖5更為詳細(xì)地描述。路由器410以及路由器間的鏈路420實(shí)現(xiàn)圖4中示出的NOC 402的網(wǎng)絡(luò)操作。鏈 路420是在連接所有路由器的物理的、并行的線路總線上實(shí)現(xiàn)的封包結(jié)構(gòu)。換言之,每個(gè)鏈 路實(shí)現(xiàn)在足夠?qū)挼木€路總線上,以同時(shí)提供整個(gè)數(shù)據(jù)交換封包(包括所有報(bào)頭信息和有效 載荷數(shù)據(jù))。如果封包結(jié)構(gòu)包括64個(gè)字節(jié)(例如,包括8個(gè)字節(jié)的報(bào)頭和56個(gè)字節(jié)的有效 載荷數(shù)據(jù)),則與每個(gè)鏈路相對(duì)的線路總線是64字節(jié)寬,因此需要512條線路。此外,每個(gè) 鏈路420都是雙向的,使得在鏈路封包結(jié)構(gòu)包括64字節(jié)的情況下,線路總線在網(wǎng)絡(luò)中的每 個(gè)路由器410與其每個(gè)鄰居路由器410之間實(shí)際上包含1024條線路。消息可以包括不止 一個(gè)封包,但是每個(gè)封包精確地適合線路總線的寬度。如果將路由器與線路總線的每個(gè)部 分之間的連接稱(chēng)為端口,則每個(gè)路由器包括五個(gè)端口,網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)乃膫€(gè)方向中的每 個(gè)方向一個(gè)端口,并且第五端口用于將路由器通過(guò)存儲(chǔ)器通信控制器和網(wǎng)絡(luò)接口控制器適 配至特定的IP塊。如上所述,每個(gè)存儲(chǔ)器通信控制器406控制IP塊與存儲(chǔ)器之間的通信。存儲(chǔ)器可 以包括片外主RAM 412、通過(guò)存儲(chǔ)器通信控制器406直接連接至IP塊的存儲(chǔ)器415、可作為 IP塊414而啟用的片上存儲(chǔ)器以及片上高速緩存。在圖4示出的NOC 402中,任一片上存 儲(chǔ)器(414、415)例如都可以實(shí)現(xiàn)為片上高速緩存存儲(chǔ)器。所有這些形式的存儲(chǔ)器可以部署 在相同的地址空間中(物理空間或者虛擬地址),即使對(duì)于直接附接至IP塊的存儲(chǔ)器也是 如此。因此,存儲(chǔ)器尋址的消息相對(duì)于IP塊而言可以是完全雙向的,因?yàn)榭梢詮木W(wǎng)絡(luò)上任 何位置的IP塊直接尋址此類(lèi)存儲(chǔ)器。IP塊上的存儲(chǔ)器414可以從該IP塊或者從NOC中的 任何其它IP塊進(jìn)行尋址。片上存儲(chǔ)器415直接附接至存儲(chǔ)器通信控制器,并且可以由通過(guò) 該存儲(chǔ)器通信控制器適配至網(wǎng)絡(luò)的IP塊來(lái)尋址。注意,片上存儲(chǔ)器415還可以從NOC 402 中任意位置的任何其它IP塊404進(jìn)行尋址。示例性NOC 402包括兩個(gè)存儲(chǔ)器管理單元(“MMU” ) 407和409,其示出了用于根 據(jù)本發(fā)明實(shí)施方式的NOC的兩個(gè)備選存儲(chǔ)器架構(gòu)。MMU 407通過(guò)特定的IP塊404來(lái)實(shí)現(xiàn), 其允許該IP塊404中的處理器在虛擬存儲(chǔ)器中進(jìn)行操作,同時(shí)允許NOC的整個(gè)其余架構(gòu)在 物理存儲(chǔ)器地址空間中進(jìn)行操作。MMU 409為片外實(shí)現(xiàn),其通過(guò)稱(chēng)為端口 416的數(shù)據(jù)通信 端口連接至N0C。端口 416包括在NOC 402和MMU 409之間傳導(dǎo)信號(hào)所需的管腳和其它互 連,以及將消息封包從NOC封包格式轉(zhuǎn)換為外部MMU 409所需總線格式的足夠智能性。MMU 409的外部位置意味著N0C 402的所有IP塊404中的所有處理器可以在虛擬地址空間中 操作,其中與片外存儲(chǔ)器的物理地址的所有轉(zhuǎn)換由片外MMU 409來(lái)處理。除了通過(guò)使用MMU407和409而示出的兩種存儲(chǔ)器架構(gòu)之外,描繪為端口 418的數(shù) 據(jù)通信端口示出了可以用于根據(jù)本發(fā)明實(shí)施方式的NOC的第三種存儲(chǔ)器架構(gòu)。端口 418提供NOC 402的IP塊404與片外存儲(chǔ)器412之間的直接連接。由于在處理路徑中沒(méi)有MMU, 該架構(gòu)提供NOC的所有IP塊對(duì)物理地址空間的使用。在雙向地共享地址空間時(shí),NOC的所 有IP塊可以由通過(guò)直接連接至端口 418的IP塊來(lái)引導(dǎo)的存儲(chǔ)器尋址消息(包括加載和存 儲(chǔ))來(lái)訪問(wèn)地址空間中的存儲(chǔ)器。端口 418包括在NOC和片外存儲(chǔ)器412之間傳導(dǎo)信號(hào)所 需的管腳和其它互連,以及將消息封包從NOC封包格式轉(zhuǎn)換為片外存儲(chǔ)器412所需總線格 式的足夠智能性。在圖4示出的示例性NOC 402中,IP塊404之一被指定為主機(jī)接口處理器405。主機(jī)接口處理器405提供NOC 402與主機(jī)計(jì)算機(jī)104 (如圖1中所介紹)之間的接口。主機(jī) 接口處理器405向NOC上的其它IP塊提供數(shù)據(jù)處理服務(wù),例如包括從主機(jī)計(jì)算機(jī)接收NOC 數(shù)據(jù)處理請(qǐng)求并在NOC的IP塊間進(jìn)行分派。主機(jī)接口處理器405通過(guò)諸如端口 417的數(shù)據(jù)通信端口連接至較大的主機(jī)計(jì)算機(jī) 104 (最初在圖1中描繪)。端口 417包括在NOC 402和主機(jī)計(jì)算機(jī)104之間傳導(dǎo)信號(hào)所需 的管腳和其它互連,以及將消息封包從NOC 402轉(zhuǎn)換為主機(jī)計(jì)算機(jī)104所需的總線格式的 足夠智能性。在圖3所示計(jì)算機(jī)302中的NOC協(xié)處理器324的示例中,此類(lèi)端口將提供NOC 協(xié)處理器324的鏈路結(jié)構(gòu)與前端總線330所需協(xié)議之間的數(shù)據(jù)通信格式轉(zhuǎn)換,其中前端總 線330位于NOC協(xié)處理器324和總線適配器310之間。注意,元件404、406、408和410的每個(gè)群組可以視作并且稱(chēng)為NOC 402中的節(jié)點(diǎn) 422。現(xiàn)在參考圖5,其根據(jù)本發(fā)明的實(shí)施方式給出了 NOC 402的附加細(xì)節(jié)。如圖4和圖 5中所描述的,NOC 402在芯片(例如,圖4中給出的芯片400)上實(shí)現(xiàn),并且包括集成處理 器(“IP”)塊404、路由器410、存儲(chǔ)器通信控制器406以及網(wǎng)絡(luò)接口控制器408。每個(gè)IP 塊404通過(guò)存儲(chǔ)器通信控制器406和網(wǎng)絡(luò)接口控制器408適配至路由器410。每個(gè)存儲(chǔ)器 通信控制器406控制IP塊與存儲(chǔ)器之間的通信,并且每個(gè)網(wǎng)絡(luò)接口控制器408控制通過(guò)路 由器410的IP塊間通信。在圖5的示例中,對(duì)通過(guò)存儲(chǔ)器通信控制器406和網(wǎng)絡(luò)接口控制 器408適配至路由器410的IP塊404的集合522進(jìn)行了擴(kuò)展,以輔助對(duì)其結(jié)構(gòu)和操作的更 為詳細(xì)的說(shuō)明。圖5示例中的所有IP塊、存儲(chǔ)器通信控制器、網(wǎng)絡(luò)接口控制器以及路由器 都按照與擴(kuò)展集合522相同的方式進(jìn)行配置。在圖5的示例中,每個(gè)IP塊404包括計(jì)算機(jī)處理器526和I/O功能524,其中計(jì)算 機(jī)處理器526包括一個(gè)或多個(gè)內(nèi)核550。在此示例中,計(jì)算機(jī)存儲(chǔ)器表示為每個(gè)IP塊404 中的隨機(jī)訪問(wèn)存儲(chǔ)器(“RAM”)528的分段。如上文參考圖4示例描述的,存儲(chǔ)器可以占用 物理地址空間的分段,這些分段在每個(gè)IP塊上的內(nèi)容可以從NOC中的任意IP塊進(jìn)行尋址 和訪問(wèn)。每個(gè)IP塊上的處理器526、I/O能力524以及存儲(chǔ)器(RAM 528)有效地將IP塊實(shí) 現(xiàn)為一般可編程的微計(jì)算機(jī)。然而,如上文所述,在本發(fā)明的范圍內(nèi),IP塊通常表示同步或 者異步邏輯的可重用單元,其用作NOC內(nèi)用于數(shù)據(jù)處理的構(gòu)造塊。因此,盡管將IP塊實(shí)現(xiàn) 為一般可編程微計(jì)算機(jī)是有助于說(shuō)明的常見(jiàn)實(shí)施方式,但本發(fā)明不限于此。在圖5給出的NOC 402中,每個(gè)存儲(chǔ)器通信控制器406包括多個(gè)存儲(chǔ)器通信執(zhí)行 引擎540。每個(gè)存儲(chǔ)器通信執(zhí)行引擎540能夠執(zhí)行來(lái)自IP塊404的存儲(chǔ)器通信指令,包括 網(wǎng)絡(luò)接口控制器408和IP塊404之間的雙向存儲(chǔ)器通信指令流(544、545、546)。由存儲(chǔ)器 通信控制器執(zhí)行的存儲(chǔ)器通信指令可以源自通過(guò)特定存儲(chǔ)器通信控制器而適配至路由器的IP塊,也可以源自NOC 402中任何位置的任何IP塊404。換言之,NOC 402中的任何IP 塊404可以生成存儲(chǔ)器通信指令,并且通過(guò)NOC 402的路由器410將該存儲(chǔ)器通信指令傳 輸給與其它IP塊關(guān)聯(lián)的其它存儲(chǔ)器通信控制器,以便執(zhí)行該存儲(chǔ)器通信指令。這樣的存儲(chǔ) 器通信指令例如可以包括變換旁視緩沖區(qū)控制指令、高速緩存控制指令、屏障(barrier) 指令以及存儲(chǔ)器加載和存儲(chǔ)指令。 每個(gè)所描繪的存儲(chǔ)器通信執(zhí)行引擎540能夠獨(dú)立地以及與其它存儲(chǔ)器通信執(zhí)行 引擎540并行地執(zhí)行完整的存儲(chǔ)器通信指令。存儲(chǔ)器通信執(zhí)行引擎540實(shí)現(xiàn)針對(duì)存儲(chǔ)器通 信指令的并發(fā)吞吐而優(yōu)化的可伸縮存儲(chǔ)器事務(wù)處理器。存儲(chǔ)器通信控制器406支持多個(gè)存 儲(chǔ)器通信執(zhí)行引擎540,所有引擎并發(fā)地運(yùn)行以用于多個(gè)存儲(chǔ)器通信指令的同時(shí)執(zhí)行。新的 存儲(chǔ)器通信指令由存儲(chǔ)器通信控制器406分配給存儲(chǔ)器通信引擎540,并且存儲(chǔ)器通信執(zhí) 行引擎540可以同時(shí)接受多個(gè)響應(yīng)事件。在此示例中,所有存儲(chǔ)器通信執(zhí)行引擎540是相 同的。因此,伸縮存儲(chǔ)器通信控制器406能夠同時(shí)處理的存儲(chǔ)器通信執(zhí)行的數(shù)目是通過(guò)伸 縮存儲(chǔ)器通信執(zhí)行引擎540的數(shù)目來(lái)實(shí)現(xiàn)的。在圖5描繪的NOC 402中,每個(gè)網(wǎng)絡(luò)接口控制器408能夠?qū)⑼ㄐ胖噶顝拿罡袷?轉(zhuǎn)換為網(wǎng)絡(luò)封包格式,以便通過(guò)路由器410在IP塊404之間傳輸。通信指令由IP塊410或 者由存儲(chǔ)器通信控制器406按照命令格式來(lái)格式化,并且按照命令格式提供給網(wǎng)絡(luò)接口控 制器408。命令格式是一種本源(native)格式,其符合IP塊404和存儲(chǔ)器通信控制器406 的架構(gòu)性注冊(cè)文件。網(wǎng)絡(luò)封包格式是通過(guò)網(wǎng)絡(luò)的路由器410進(jìn)行傳輸所需的格式。每個(gè)這 樣的消息包括一個(gè)或多個(gè)網(wǎng)絡(luò)封包。在網(wǎng)絡(luò)接口控制器中從命令格式被轉(zhuǎn)換為封包格式的 此類(lèi)通信指令的示例包括IP塊與存儲(chǔ)器之間的存儲(chǔ)器加載指令和存儲(chǔ)器存儲(chǔ)指令。這樣 的通信指令還包括在IP塊之間發(fā)送消息的通信指令,其攜帶數(shù)據(jù)以及用于在并行應(yīng)用和 流水線化應(yīng)用中的IP塊之中處理數(shù)據(jù)的指令。在圖5示出的NOC 402中,每個(gè)IP塊404能夠通過(guò)IP塊的存儲(chǔ)器通信控制器發(fā) 送去往和來(lái)自存儲(chǔ)器的、基于存儲(chǔ)器地址的通信,并繼而還能通過(guò)其網(wǎng)絡(luò)接口控制器將該 通信發(fā)送至網(wǎng)絡(luò)?;诖鎯?chǔ)器地址的通信是存儲(chǔ)器訪問(wèn)指令,諸如加載指令或者存儲(chǔ)指令, 其由IP塊的存儲(chǔ)器通信控制器的存儲(chǔ)器通信執(zhí)行引擎來(lái)執(zhí)行。此類(lèi)基于存儲(chǔ)器地址的通 信通常源自IP塊,按照命令格式來(lái)格式化,并且移交給存儲(chǔ)器通信控制器以供執(zhí)行。很多基于存儲(chǔ)器地址的通信是利用消息業(yè)務(wù)來(lái)執(zhí)行的,因?yàn)椴徽撃膫€(gè)IP塊發(fā)起 了任何特定的基于存儲(chǔ)器地址的通信,將要訪問(wèn)的任何存儲(chǔ)器可能位于物理存儲(chǔ)器地址空 間中的任何位置(片上或者片外),其可能直接附接至NOC中的任何存儲(chǔ)器通信控制器,或 者可以通過(guò)NOC的任意IP塊而被最終訪問(wèn)。將利用消息業(yè)務(wù)執(zhí)行的所有基于存儲(chǔ)器地址 的通信從存儲(chǔ)器通信控制器傳遞至相關(guān)聯(lián)的網(wǎng)絡(luò)接口控制器,以用于從命令格式到封包格 式的轉(zhuǎn)換(利用指令轉(zhuǎn)換邏輯536)以及在消息中通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸。在轉(zhuǎn)換為封包格式 時(shí),網(wǎng)絡(luò)接口控制器還根據(jù)基于存儲(chǔ)器地址的通信將要訪問(wèn)的一個(gè)或多個(gè)存儲(chǔ)器地址來(lái)標(biāo) 識(shí)用于該封包的網(wǎng)絡(luò)地址。利用存儲(chǔ)器地址對(duì)基于存儲(chǔ)器地址的消息進(jìn)行尋址。每個(gè)存儲(chǔ) 器地址由網(wǎng)絡(luò)接口控制器映射為網(wǎng)絡(luò)地址,通常是映射為負(fù)責(zé)一定范圍物理存儲(chǔ)器地址的 存儲(chǔ)器通信控制器的網(wǎng)絡(luò)位置。自然地,存儲(chǔ)器通信控制器406的網(wǎng)絡(luò)位置也是與該存儲(chǔ) 器通信控制器相關(guān)聯(lián)的路由器410、網(wǎng)絡(luò)接口控制器408以及IP塊404的網(wǎng)絡(luò)位置。每個(gè) 網(wǎng)絡(luò)接口控制器內(nèi)的指令轉(zhuǎn)換邏輯536能夠?qū)⒋鎯?chǔ)器地址轉(zhuǎn)換為網(wǎng)絡(luò)地址,以便通過(guò)NOC的路由器來(lái)傳輸基于存儲(chǔ)器地址的通信。 在從網(wǎng)絡(luò)的路由器410接收到消息業(yè)務(wù)之后,每個(gè)網(wǎng)絡(luò)接口控制器408檢查每個(gè) 封包的存儲(chǔ)器指令。將包含存儲(chǔ)器指令的每個(gè)封包遞交給與接收網(wǎng)絡(luò)接口控制器相關(guān)聯(lián)的 存儲(chǔ)器通信控制器406,其執(zhí)行存儲(chǔ)器指令,而后將封包的剩余有效載荷發(fā)送給IP塊以便 進(jìn)行進(jìn)一步處理。以此方式,在IP塊開(kāi)始執(zhí)行消息中依賴(lài)特定存儲(chǔ)器內(nèi)容的指令之前,存 儲(chǔ)器內(nèi)容總已經(jīng)準(zhǔn)備好支持IP塊的數(shù)據(jù)處理?,F(xiàn)在返回在圖5中描繪的NOC 402,每個(gè)IP塊404能夠繞過(guò)其存儲(chǔ)器通信控制器 406,并且通過(guò)IP塊的網(wǎng)絡(luò)接口控制器408將IP塊間的、網(wǎng)絡(luò)尋址的通信546直接發(fā)送至 網(wǎng)絡(luò)。網(wǎng)絡(luò)尋址的通信是由網(wǎng)絡(luò)地址指引給另一 IP塊的消息。如本領(lǐng)域技術(shù)人員可以想 到的,此類(lèi)消息在流水線應(yīng)用中傳輸工作數(shù)據(jù),在SIMD應(yīng)用中傳輸用于IP塊之間的單個(gè)程 序處理的多個(gè)數(shù)據(jù),等等。此類(lèi)消息與基于存儲(chǔ)器地址的通信的區(qū)別在于它們從開(kāi)始就是 由發(fā)起IP塊進(jìn)行網(wǎng)絡(luò)尋址的,其中發(fā)起IP塊知道通過(guò)NOC的路由器將該消息引導(dǎo)至的網(wǎng) 絡(luò)地址。這種網(wǎng)絡(luò)尋址的通信由IP塊通過(guò)其I/O功能524以命令格式直接傳遞給IP塊的 網(wǎng)絡(luò)接口控制器,繼而由網(wǎng)絡(luò)接口控制器轉(zhuǎn)換為封包格式,并且通過(guò)NOC的路由器傳輸至 其他IP決。這種網(wǎng)絡(luò)尋址通信546是雙向的,其潛在地涉及去往或者來(lái)自NOC的每個(gè)IP 塊,這取決于其在任何特定應(yīng)用中的使用。然而,每個(gè)網(wǎng)絡(luò)接口控制器都能夠發(fā)送和接收 (通信542)去往和來(lái)自相關(guān)聯(lián)路由器的此類(lèi)通信,并且每個(gè)網(wǎng)絡(luò)接口控制器都能夠繞過(guò)相 關(guān)聯(lián)的存儲(chǔ)器通信控制器406而直接發(fā)送和接收(通信546)去往和來(lái)自相關(guān)聯(lián)IP塊的此 類(lèi)通信。圖5示例中的每個(gè)網(wǎng)絡(luò)接口控制器408還能夠?qū)崿F(xiàn)網(wǎng)絡(luò)上的虛擬通道,通過(guò)類(lèi)型 來(lái)表征網(wǎng)絡(luò)封包。每個(gè)網(wǎng)絡(luò)接口控制器408包括虛擬通道實(shí)現(xiàn)邏輯538,其通過(guò)類(lèi)型對(duì)每個(gè) 通道指令進(jìn)行分類(lèi),并且在將封包格式的指令移交給路由器410從而在NOC上傳輸之前,將 指令類(lèi)型記錄在網(wǎng)絡(luò)封包格式的字段中。通信指令類(lèi)型的示例包括IP塊間基于網(wǎng)絡(luò)地址 的消息、請(qǐng)求消息、對(duì)請(qǐng)求消息的響應(yīng)、涉及高速緩存的無(wú)效消息、存儲(chǔ)器加載和存儲(chǔ)消息 以及對(duì)存儲(chǔ)器加載消息的響應(yīng)等。圖5示例中的每個(gè)路由器410包括路由邏輯530、虛擬通道控制邏輯532和虛擬 通道緩沖區(qū)534。路由邏輯通常實(shí)現(xiàn)為同步或者異步邏輯的網(wǎng)絡(luò),其實(shí)現(xiàn)數(shù)據(jù)通信協(xié)議棧, 以用于路由器410、鏈路420和路由器中的總線線路構(gòu)成的網(wǎng)絡(luò)中的數(shù)據(jù)通信。路由邏輯 530包括本領(lǐng)域技術(shù)人員可以對(duì)片外網(wǎng)絡(luò)與路由表進(jìn)行關(guān)聯(lián)的功能,其中在至少一些實(shí)施 方式中,認(rèn)為在NOC中使用路由表過(guò)慢且不便??梢詫?shí)現(xiàn)為同步和異步邏輯的網(wǎng)絡(luò)的路 由邏輯配置為在單時(shí)鐘周期中進(jìn)行路由決策。此示例中的路由邏輯通過(guò)選擇用于轉(zhuǎn)發(fā)路由 器中接收到的每個(gè)封包的端口來(lái)路由封包。每個(gè)封包包含該封包將要路由至的網(wǎng)絡(luò)地址。 此示例中的每個(gè)路由器包括五個(gè)端口,四個(gè)端口 521通過(guò)總線線路(520-A、520-B、520-C、 520-D)連接至其他路由器,而第五端口 523通過(guò)網(wǎng)絡(luò)接口控制器408和存儲(chǔ)器通信控制器 406將每個(gè)路由器連接至其相關(guān)聯(lián)的IP塊404。 在上面對(duì)基于存儲(chǔ)器地址的通信的描述中,將每個(gè)存儲(chǔ)器地址描述為由網(wǎng)絡(luò)接口 控制器映射為網(wǎng)絡(luò)地址,即存儲(chǔ)器通信控制器的網(wǎng)絡(luò)位置。自然地,存儲(chǔ)器通信控制器406 的網(wǎng)絡(luò)位置也是與該存儲(chǔ)器通信控制器相關(guān)聯(lián)的路由器410、網(wǎng)絡(luò)接口控制器408以及IP 塊404的網(wǎng)絡(luò)位置。因此,在IP塊間通信或者基于網(wǎng)絡(luò)地址的通信中,應(yīng)用級(jí)數(shù)據(jù)處理通常將網(wǎng)絡(luò)地址視為由NOC的路由器、鏈路和總線線路組成的網(wǎng)絡(luò)內(nèi)的IP塊的位置。注意,圖 4示出,這種網(wǎng)絡(luò)的一個(gè)組織是行和列的網(wǎng)格,其中例如可以將每個(gè)網(wǎng)絡(luò)地址實(shí)現(xiàn)為網(wǎng)格的 相關(guān)聯(lián)的路由器、IP塊、存儲(chǔ)器通信控制器以及網(wǎng)絡(luò)接口控制器的每個(gè)集合的唯一標(biāo)識(shí)符, 或者實(shí)現(xiàn)為網(wǎng)格中每個(gè)此類(lèi)集合的χ、y坐標(biāo)。在圖5描述的NOC 402中,每個(gè)路由器410實(shí)現(xiàn)兩個(gè)或者更多虛擬通信通道,其中 每個(gè)虛擬通信通道由通信類(lèi)型表征。通信指令類(lèi)型(以及由此的虛擬通道類(lèi)型)包括上文 提到的那些類(lèi)型IP塊間基于網(wǎng)絡(luò)地址的消息、請(qǐng)求消息、對(duì)請(qǐng)求消息的響應(yīng)、涉及高速緩 存的無(wú)效消息、存儲(chǔ)器加載和存儲(chǔ)消息以及對(duì)存儲(chǔ)器加載消息的響應(yīng)等。為了支持虛擬通 道,圖5中描述的每個(gè)路由器410還包括虛擬通道控制邏輯532和虛擬通道緩沖區(qū)534。虛 擬通道控制邏輯532檢查指派給每個(gè)接收封包的通信類(lèi)型,并且將每個(gè)封包置于針對(duì)該通 信類(lèi)型的外發(fā)虛擬通道緩沖區(qū)中,以便通過(guò)端口向NOC上的相鄰路由器傳輸。每個(gè)虛擬通道緩沖534具有有限的存儲(chǔ)空間。當(dāng)在短時(shí)間內(nèi)接收到很多封包時(shí), 虛擬通道緩沖區(qū)可能充滿(mǎn),從而無(wú)法將更多的封包放在該緩沖區(qū)中。在其他協(xié)議中,到達(dá)緩 沖區(qū)已滿(mǎn)的虛擬通道的封包將被丟棄。然而,此示例中,利用總線線路的控制信號(hào)使每個(gè)虛 擬通道緩沖534能夠通過(guò)虛擬通道控制邏輯來(lái)建議周?chē)穆酚善鲯炱鹛摂M通道中的傳輸, 也即,掛起特定通信類(lèi)型的封包的傳輸。當(dāng)一個(gè)虛擬通道被這樣掛起時(shí),所有其他虛擬通道 不受影響,并且可以繼續(xù)以完全能力進(jìn)行操作??刂菩盘?hào)通過(guò)每個(gè)路由器被發(fā)送回每個(gè)路 由器的關(guān)聯(lián)網(wǎng)絡(luò)接口控制器408。將每個(gè)網(wǎng)絡(luò)接口控制器配置為在接收到這種信號(hào)之后, 便拒絕接受來(lái)自其關(guān)聯(lián)存儲(chǔ)器通信控制器406或者其關(guān)聯(lián)IP塊404的、針對(duì)已掛起虛擬通 道的通信指令。以此方式,虛擬通道的掛起影響了實(shí)現(xiàn)虛擬通道的所有硬件,直至返回到發(fā) 起IP塊。掛起在虛擬通道中傳輸?shù)姆獍囊粋€(gè)效果是在圖5的架構(gòu)中從不丟棄封包。當(dāng) 路由器遇到在諸如互聯(lián)網(wǎng)協(xié)議的一些不可靠協(xié)議中可能丟棄封包的情況時(shí),圖5示例中的 路由器由其虛擬通道緩沖534及其虛擬通道控制邏輯532掛起虛擬通道中的所有封包的傳 輸,直到緩沖區(qū)空間再次可用,這消除了丟棄封包的任何需要。因此,如圖5中描述的NOC 402實(shí)現(xiàn)了具有非常精簡(jiǎn)硬件層的、高度可靠的網(wǎng)絡(luò)通信協(xié)議。注意,圖5中描述的網(wǎng)絡(luò)接口控制器408和路由器410執(zhí)行上述圖2中封包接收 邏輯218的功能。現(xiàn)在參考圖6,其給出了最初在圖5中給出的內(nèi)核550的附加示例性細(xì)節(jié)。內(nèi)核 550包括片上多級(jí)高速緩存層級(jí),其分別包括統(tǒng)一的二級(jí)(L2)高速緩存616以及分為兩部 分的一級(jí)(Li)指令(I)和數(shù)據(jù)(D)高速緩存618和620。本領(lǐng)域的技術(shù)人員已經(jīng)了解,高 速緩存616、618和620提供與系統(tǒng)存儲(chǔ)器(例如,圖3中所示的RAM 306)中的存儲(chǔ)器位置 相對(duì)應(yīng)的高速緩存列的低延遲訪問(wèn)。響應(yīng)于駐留在取指令地址寄存器(IFAR) 630中的有效地址(EA),從LlI-高速緩 存618中取回指令以便處理。在每個(gè)周期中,可以從至少三個(gè)來(lái)源之一將新的取指令地址 加載至IFAR 630:分支預(yù)測(cè)單元(BPU)636,其提供由條件分支指令預(yù)測(cè)得到的推測(cè)性目標(biāo) 路徑和序列地址;全局完成表(GCT)638,其提供沖刷地址和中斷地址;以及分支執(zhí)行單元 (BEU)692,其提供從預(yù)測(cè)的條件分支指令解析得到的非推測(cè)性地址。與BPU 636相關(guān)聯(lián)的 是分支歷史表(BHT)635,其中記錄有條件分支指令的解析度,以輔助未來(lái)分支指令的預(yù)測(cè)。
有效地址(EA),諸如IFAR 630中的取指令地址,是由處理器生成的數(shù)據(jù)或者指令的地址。EA指定段寄存器和該段中的偏移量信息。為了訪問(wèn)存儲(chǔ)器中的數(shù)據(jù)(包括指令), EA通過(guò)一級(jí)或多級(jí)變換而轉(zhuǎn)換為真實(shí)地址(Real Address, RA),其與存儲(chǔ)數(shù)據(jù)或指令的物 理位置相關(guān)聯(lián)。在內(nèi)核550中,有效地址到真實(shí)地址的變換由存儲(chǔ)器管理單元(MMU)和相關(guān)聯(lián)的 地址變換工具來(lái)執(zhí)行。優(yōu)選地,為指令訪問(wèn)和數(shù)據(jù)訪問(wèn)提供分離的MMU。為了清楚起見(jiàn),在 圖6中示出了單個(gè)MMU 611,其顯示為僅與指令存儲(chǔ)單元(ISU)601連接。然而,本領(lǐng)域技術(shù) 人員容易理解,優(yōu)選地,MMU 611還包括與加載/存儲(chǔ)單元(LSU) 696和698以及用于管理存 儲(chǔ)器訪問(wèn)所需的其它組件的連接(未示出)。MMU 611包括數(shù)據(jù)變換旁視緩沖區(qū)(DTLB)612 和指令變換旁視緩沖區(qū)(ITLB)613。每個(gè)TLB包含最近參考的頁(yè)面表?xiàng)l目,其被訪問(wèn)以用于 將數(shù)據(jù)(DTLB 612)或指令(ITLB 613)的EA變換為RA。來(lái)自ITLB 613的最近參考的EA 到RA變換被高速緩存到EOP有效到真實(shí)地址表(ERAT) 632中。在ERAT 632對(duì)IFAR 630中包含EA進(jìn)行變換并且查詢(xún)了 I-高速緩存目錄634中 的真實(shí)地址(RA)之后,如果命中/未命中邏輯622確定與IFAR 630中高速緩存的EA相對(duì) 應(yīng)的指令的高速緩存行沒(méi)有主流在LlI緩存618中,則命中/未命中邏輯622通過(guò)I-高速 緩存請(qǐng)求總線624將RA提供給L2高速緩存616,作為請(qǐng)求地址。這種請(qǐng)求地址還可以由 L2緩存616中的預(yù)取邏輯根據(jù)最近訪問(wèn)模式高速緩存來(lái)生成。L2高速緩存616響應(yīng)請(qǐng)求 地址輸出了高速緩存行的指令,其可能在通過(guò)預(yù)解碼邏輯602之后,通過(guò)I-高速緩存重載 總線626加載至預(yù)取緩沖區(qū)(PB)628和LlI-高速緩存618。一旦由IFAR 630中的EA指定的高速緩存列駐留在Ll高速緩存618,LlI-高速緩 存618便將該高速緩存列輸出到分支預(yù)測(cè)單元(BPU)636和取指令緩沖區(qū)(IFB)640。BPU 636在該高速緩存列的指令中掃描分支指令,并且預(yù)測(cè)條件分支指令的結(jié)果(如果有的 話)。在分支預(yù)測(cè)之后,BPU 636如上文所述將推測(cè)性取指令地址提供給IFAR 630,并且將 預(yù)測(cè)傳遞給分支指令隊(duì)列664,使得在條件分支指令隨后由分支執(zhí)行單元692解析時(shí),可以 確定預(yù)測(cè)的準(zhǔn)確性。IFB 640臨時(shí)地緩沖從LlI-高速緩存618接收的高速緩存列的指令,直至該高速 緩存列的指令能夠由指令變換單元(ITU)642變換為止。在示出的內(nèi)核550的實(shí)施方式中, ITU 642將指令從用戶(hù)指令集體系結(jié)構(gòu)(UISA)指令變換為可能不同數(shù)目的內(nèi)部ISA (IISA) 指令,其由內(nèi)核550的執(zhí)行單元直接執(zhí)行。這種變換例如可以參照存儲(chǔ)在只讀存儲(chǔ)器(ROM) 模板中的微碼來(lái)執(zhí)行。在至少某些實(shí)施方式中,UISA到IISA變換得到與UISA指令不同數(shù) 目的IISA指令和/或與相應(yīng)的UISA指令不同長(zhǎng)度的IISA指令。所得到的IISA指令隨后 由全局完成表638分配給指令群組,該指令群組的成員允許不按照彼此的順序執(zhí)行。全局 完成表638通過(guò)至少一個(gè)相關(guān)聯(lián)的EA追蹤尚需完成執(zhí)行的每個(gè)指令封包,所述EA優(yōu)選地 是所述指令封包中最早的指令的EA。在UISA到IISA指令變換之后,根據(jù)指令類(lèi)型將指令可能亂序地分派給鎖存器 644、646、648和650之一。也即,分支指令和修改指令的其它條件寄存器(CR)被分派到鎖 存器644,定點(diǎn)和加載-存儲(chǔ)指令被分派到鎖存器646和648之一,并且浮點(diǎn)指令被分派到 鎖存器650。繼而,通過(guò)CR映射器652、鏈接和計(jì)數(shù)(LC)寄存器映射器654、異常寄存器 (XER)映射器656、通用寄存器(GPR)映射器658和浮點(diǎn)寄存器(FPR)映射器660中適當(dāng)?shù)囊粋€(gè),為每個(gè)需要重命名寄存器(其用于臨時(shí)存儲(chǔ)執(zhí)行結(jié)果)的指令分配一個(gè)或多個(gè)重命
名寄存器。所分派的指令臨時(shí)放置在以下適當(dāng)?shù)囊粋€(gè)中CR發(fā)送隊(duì)列(CRIQ)662、分支發(fā)送隊(duì)列(BIQ)664、定點(diǎn)發(fā)送隊(duì)列(FXIQ)666和668以及浮點(diǎn)發(fā)送隊(duì)列(FPIQ)670和672。指 令可以隨機(jī)地從發(fā)送隊(duì)列662、664、666、668、670和672發(fā)送到處理單元603的執(zhí)行單元以 便執(zhí)行,只要遵循數(shù)據(jù)依賴(lài)和反依賴(lài)即可。然而,指令保留在發(fā)送隊(duì)列662-672中直至所述 指令執(zhí)行完成,并且在任何指令需要重發(fā)的情況下,結(jié)果數(shù)據(jù)(如果有的話)被寫(xiě)回。如上文所述,內(nèi)核550的執(zhí)行單元包括用于執(zhí)行CR修改指令的CR單元 (CRU)690、用于執(zhí)行分支指令的分支執(zhí)行單元(BEU)692、用于執(zhí)行定點(diǎn)指令的兩個(gè)定點(diǎn)單 元(FXU) 694和6100、用于執(zhí)行加載和存儲(chǔ)指令的兩個(gè)加載-存儲(chǔ)單元(LSU) 696和698以 及用于執(zhí)行浮點(diǎn)指令的兩個(gè)浮點(diǎn)單元(FPU) 606和604。每個(gè)執(zhí)行單元690-604優(yōu)選地實(shí)現(xiàn) 為具有多個(gè)流水線級(jí)的執(zhí)行流水線。在執(zhí)行單元690-604之一內(nèi)的執(zhí)行期間,指令從與執(zhí)行單元耦合的寄存器文件內(nèi) 的一個(gè)或多個(gè)架構(gòu)寄存器和/或重命名寄存器接收操作數(shù)(如果有的話)。當(dāng)執(zhí)行CR修 改指令或CR依賴(lài)的指令時(shí),CRU 690和BEU 692訪問(wèn)CR寄存器文件680,該CR寄存器文件 680在優(yōu)選實(shí)施方式中包括CR寄存器和多個(gè)CR重命名寄存器,每個(gè)CR重命名寄存器都包 括多個(gè)由一位或多位構(gòu)成的不同字段。這些字段包括LT、GT和EQ字段,其分別指示某值 (通常是指令的結(jié)果或操作數(shù))是小于零,大于零還是等于零。鏈接和計(jì)數(shù)寄存器(LCR)的 寄存器文件682包含計(jì)數(shù)寄存器(CTR)、鏈接寄存器(LR)和其各自的重命名寄存器,通過(guò) 這些寄存器,BEU 692也可以解析條件分支以獲得路徑地址。通用寄存器文件(GPR)684和 686是同步的、相同的寄存器文件,其存儲(chǔ)由FXU 694和605以及LSU 696和698訪問(wèn)和產(chǎn) 生的定點(diǎn)和整數(shù)值。浮點(diǎn)寄存器文件(FPR)688像GPR 684和GPR 686 —樣也可以實(shí)現(xiàn)為 同步寄存器的相同集合,其包括由FPU 606和604執(zhí)行浮點(diǎn)指令以及由LSTO96和698執(zhí)行 浮點(diǎn)加載指令而得到的浮點(diǎn)值。在執(zhí)行單元完成指令執(zhí)行后,執(zhí)行通知GCT 638,其以程序順序調(diào)度指令的完成。 為了完成由CRU 690,FXU 694和605或FPU 606和604之一執(zhí)行的指令,GCT 38向適當(dāng)?shù)?映射器發(fā)出信號(hào),所述映射器將結(jié)果數(shù)據(jù)(如果有的話)從所指派的重命名寄存器寫(xiě)回到 適當(dāng)寄存器文件中的一個(gè)或多個(gè)架構(gòu)性寄存器。繼而從發(fā)送隊(duì)列中移除指令,并且一旦指 令群組內(nèi)的所有指令都已完成,即從GCT 638中移除指令。然而,其它類(lèi)型的指令以不同的 方式完成。當(dāng)BEU 692解析條件分支指令并且確定應(yīng)當(dāng)選擇的執(zhí)行路徑的路徑地址時(shí),將該 路徑地址與BPU 636預(yù)測(cè)的推測(cè)性路徑地址進(jìn)行比較。如果路徑地址匹配,無(wú)需進(jìn)行進(jìn)一 步的處理。然而,如果計(jì)算所得的路徑地址與預(yù)測(cè)地址不匹配,BEU 692將正確的路徑地址 提供給IFAR630。在任一情況中,隨后可以從BIQ 64移除分支指令,并且當(dāng)相同指令群組內(nèi) 的所有其它指令都已經(jīng)完成時(shí),從GCT 638移除該分支指令。在加載指令的執(zhí)行之后,通過(guò)數(shù)據(jù)ERAT(未示出),將由執(zhí)行所述加載指令計(jì)算得 到的有效地址變換為真實(shí)地址,并且隨后將其作為請(qǐng)求地址提供給LlD高速緩存620。此 時(shí),加載指令從FXIQ 666或668移除并被置于加載數(shù)據(jù)隊(duì)列(LDQ)609中,直到執(zhí)行完所指 示的加載為止。如果請(qǐng)求地址在LlD-高速緩存620中未命中,則將該請(qǐng)求地址置于加載未命中隊(duì)列(LMQ) 607中,其中請(qǐng)求的數(shù)據(jù)通過(guò)隊(duì)列從L2高速緩存616獲取,并且如果所述獲取失敗,從另一個(gè)內(nèi)核550或從系統(tǒng)存儲(chǔ)器(例如,圖5中給出的RAM 528)中獲取。LRQ 609探測(cè)獨(dú)占訪問(wèn)請(qǐng)求(例如,具有修改意圖的讀),在針對(duì)進(jìn)行中的加載的互連結(jié)構(gòu)(未 給出)上進(jìn)行沖刷或刪除,并且如果命中發(fā)生,則取消并重發(fā)加載指令。存儲(chǔ)指令利用存儲(chǔ) 隊(duì)列(STQ)610類(lèi)似地完成,其中在執(zhí)行所述存儲(chǔ)指令之后,用于存儲(chǔ)的有效地址被載入該 存儲(chǔ)隊(duì)列610。數(shù)據(jù)可以從STQ 610存儲(chǔ)到LlD-高速緩存620和L2高速緩存616之一或 兩者中。如上所述,每個(gè)節(jié)點(diǎn)(例如,每個(gè)線程108a-d)包括一個(gè)或多個(gè)處理器內(nèi)核(例如,圖5中描述的處理器內(nèi)核550之一)。圖7中給出了此類(lèi)處理器內(nèi)核550的示例性實(shí) 施方式的附加細(xì)節(jié)。處理器內(nèi)核550中包括有效到真實(shí)地址表(ERAT)632(上文圖6中示 出),該表632用于從工作單元708分派不同的軟件線程704a-d,該工作單元708可以是 用戶(hù)應(yīng)用(例如,圖1中示出的用戶(hù)應(yīng)用112)或工作單元消息(例如,圖1中示出的封包 110a-d)。當(dāng)處理器內(nèi)核550接收工作單元708時(shí),包括寄存器710d、執(zhí)行單元712d和輸出 緩沖區(qū)714d的特定硬件線程716可以執(zhí)行軟件線程704d中的指令。參考上面的圖6,示例 性硬件線程可以包括FPR映射器660、FPIQ 672、FPR 688和FPU 604。另一個(gè)示例性硬件 線程可以包括GPR映射器658、FXIQ668、FXU 605和GPR 686。這些是示例性硬件線程,還 可以想到其它硬件線程,包括FXU 694、LSU 698、CRU 690和BEU 692等。再次參考圖7,注意,不同的硬件線程716、718、722和720可以獨(dú)立地和/或半自 動(dòng)地執(zhí)行來(lái)自工作單元708中的不同軟件線程。現(xiàn)在參考圖8,考慮NOC 802中執(zhí)行的圖形應(yīng)用800。從主機(jī)計(jì)算機(jī)804分派的圖 形應(yīng)用800是實(shí)時(shí)三維(3D)投影和光柵化圖形應(yīng)用,其可以使用直接線程間通信(DITC) 來(lái)利用NOC 802的高線程化性質(zhì)。DITC允許節(jié)點(diǎn)(即,諸如圖4中描繪的節(jié)點(diǎn)422的節(jié)點(diǎn)) 和/或線程(例如,圖1中描繪的線程108a-d)被指派用于執(zhí)行來(lái)自圖形應(yīng)用800的圖形 工作負(fù)載的不同部分。因此,主機(jī)接口線程808a處理軟件流水線的狀態(tài)以及傳入圖形函數(shù) 調(diào)用,諸如0penGLglVertex3f()。主機(jī)接口線程808a (其包括定制用于執(zhí)行與主機(jī)接口線 程808a相關(guān)聯(lián)的操作數(shù)的硬件邏輯以及可選的特定軟件)繼而開(kāi)始利用形式上為片上網(wǎng) 絡(luò)封包的數(shù)據(jù)和控制信息來(lái)填充該主機(jī)接口線程的DITC發(fā)件箱(outbox)緩沖區(qū)810a。使 用將在下文更加詳細(xì)描述的過(guò)程和硬件,此芯片封包最初是未壓縮并且未對(duì)齊的,但是在 向NOC 802中的下一節(jié)點(diǎn)/線程傳輸之前被壓縮和對(duì)齊。換言之,考慮圖9中示出的未壓 縮直接線程間通信緩沖區(qū)封包(UDICBP)902。如上所述,UDICBP 902包括用于處理紅(R)、 綠(G)、藍(lán)⑶的數(shù)據(jù)以及和Alpha合成(A-用于控制圖形透明度)數(shù)據(jù)。然而,與上文圖 2中描述的情形類(lèi)似,UDICBP 902中的數(shù)據(jù)是未對(duì)齊的(在諸如a_c、e-g等不同字聚合之 間存在“孔洞”)。為了減少傳輸業(yè)務(wù)流量和緩沖區(qū)中浪費(fèi)的空間,UDICBP 902通過(guò)直接線 程間通信緩沖區(qū)封包(DICBP)壓縮邏輯904進(jìn)行壓縮,該DICBP壓縮邏輯在下文圖10中更 詳細(xì)地描述。此DICBP壓縮邏輯904生成已壓縮直接線程間通信緩沖區(qū)封包(⑶ICBP)906, 其包括在圖10示出的邏輯中用以解封裝和重對(duì)齊字聚合的工作對(duì)齊信息908。返回圖8,從主機(jī)接口線程808a的輸出由DITC發(fā)件箱緩沖區(qū)810a取得,并且封 裝到封包814a中,該封包通過(guò)NOC 802中的網(wǎng)絡(luò)(未給出)發(fā)送到與線程808b相關(guān)聯(lián)的 DITC收件箱緩沖區(qū)812b,其接收封包814a并且處理對(duì)所接收封包數(shù)據(jù)的操作,諸如頂點(diǎn)3D變換、向2D的投影和光照計(jì)算。線程808b繼而將結(jié)果數(shù)據(jù)和控制信息填充到該線程的 DITC發(fā)件箱緩沖區(qū)810b,其將封包814b填入封包814b,以便由與線程808c相關(guān)聯(lián)的DITC 收件箱緩沖區(qū)812c接收。線程808c執(zhí)行對(duì)所接收數(shù)據(jù)的光柵化操作,并且將結(jié)果輸出到 該線程的DITC發(fā)件箱緩沖區(qū)810c和封包814c。DITC收件箱緩沖區(qū)812d接收數(shù)據(jù),其通 過(guò)線程814c接收紋理處理。此最終操作完成了圖形應(yīng)用800的執(zhí)行,產(chǎn)生最終信號(hào)(圖形 信號(hào))用于在屏幕806上顯示。注意,NOC 802中的每個(gè)節(jié)點(diǎn)(例如,每個(gè)線程808a)可以與不同的專(zhuān)用超微內(nèi)核 (未示出)相關(guān)聯(lián)。超微內(nèi)核被定義為操作系統(tǒng)軟件邏輯的薄片,其僅能夠向NOC中的節(jié)點(diǎn) 以及在這些節(jié)點(diǎn)之間傳輸工作單元消息(例如,封包814a-d)和⑶ICBP (例如,圖9中示出 的 CDIDBP 906)。
現(xiàn)在參考圖10,在NOC 1002 (例如,圖4中給出的NOC 402)的IP節(jié)點(diǎn)1022中示 出了 DICBP壓縮邏輯904的附加細(xì)節(jié)。如上所述,IP節(jié)點(diǎn)1022按照已壓縮/對(duì)齊格式來(lái) 接收封包1014a(例如,圖8中描述的封包814a),因?yàn)榧僭O(shè)封包1014a已經(jīng)預(yù)先以在此描述 的方式被壓縮/對(duì)齊。該封包加載到輸入已壓縮直接線程間通信緩沖區(qū)(CDICB) 1012(類(lèi) 似于圖8中給出的DITC收件箱緩沖區(qū)812),并且隨后利用解封裝邏輯1004 “解封裝”。解 封裝邏輯1004首先將來(lái)自輸入CDICB 1012的字的一個(gè)或多個(gè)行(優(yōu)選地,所有行)加載 到陰影鎖存器1006。使用來(lái)自封包1014a的對(duì)齊信息(例如,圖9中示出的工作對(duì)齊信息 908),多路器(mux)控制器1008以如下方式控制多路器1010,即將字的經(jīng)過(guò)適當(dāng)對(duì)齊的行 (例如,如圖9示出的UDICBP 902中所組織的一樣)存儲(chǔ)到輸入DITC流通信緩沖區(qū)1011。 繼而將這些適當(dāng)對(duì)齊的行發(fā)送到向量寄存器文件1016,其將這些行(例如,可能或可能不 “滿(mǎn)”的數(shù)據(jù)字的四字行)分派到向量執(zhí)行單元1018。此向量執(zhí)行單元1018能夠如上文圖 7中所描述的那樣,將一個(gè)或多個(gè)字作為軟件線程來(lái)并行處理。繼而將向量執(zhí)行單元1018中的操作的輸出發(fā)送到封裝邏輯1020。注意,向量執(zhí)行 單元1018中的操作的輸出最初是未壓縮的(即,由于聚合小于行寬,在字的聚合之間存在 空白字)。這些未壓縮的字行(包括空白字)最初存儲(chǔ)在陰影鎖存器1022中。多路器控制 器1024使用從工作對(duì)齊信息908、向量寄存器文件1016和/或向量執(zhí)行單元1018提供的 信息,以如下方式控制多路器1026,即,使得字以壓縮(即,充滿(mǎn)且沒(méi)有孔洞)方式加載至輸 出CDICB 1030(類(lèi)似于圖8中給出的DITC收件箱緩沖區(qū)810)。來(lái)自CDICB 1030的已壓縮 數(shù)據(jù)繼而由封裝邏輯1028封裝到外發(fā)封包1014b中,該封裝邏輯1028將數(shù)據(jù)與包括對(duì)封 包進(jìn)行操作的下一 IP節(jié)點(diǎn)的地址的報(bào)頭進(jìn)行封裝。注意,如上文討論和說(shuō)明的,這里所使用的術(shù)語(yǔ)“壓縮”描述這樣的數(shù)據(jù)字,其存儲(chǔ) 在緩沖區(qū)或封包中,使得在數(shù)據(jù)封包中的字之間沒(méi)有空字,并且在緩沖區(qū)中沒(méi)有空單元。術(shù) 語(yǔ)“壓縮”這里不是用于描述或定義利用編碼算法對(duì)信息進(jìn)行編碼從而得到較少位用于代 表原始未壓縮數(shù)據(jù)的數(shù)據(jù)壓縮?,F(xiàn)在參考圖11,其給出了用于通過(guò)片上網(wǎng)絡(luò)(NOC)上的節(jié)點(diǎn)來(lái)流式傳輸直接線程 間緩沖區(qū)封包所采用的示例性步驟的高級(jí)流程圖。在起始框1102之后,利用來(lái)自未壓縮直 接線程間通信輸出緩沖區(qū)的數(shù)據(jù)來(lái)填充未壓縮直接線程間通信緩沖區(qū)封包(UDICBP)(框 1104)。注意,示例性UDICOB在圖10中被描繪為陰影鎖存器1022。然而,應(yīng)當(dāng)理解,在某些 起始點(diǎn)(主機(jī)計(jì)算機(jī)中、第一節(jié)點(diǎn)中等)在以上述方式壓縮數(shù)據(jù)之前,數(shù)據(jù)可以按照未壓縮格式存儲(chǔ)在其它緩沖區(qū)/存儲(chǔ)器/鎖存器中。 如框1106中所描繪的,將未壓縮直接線程間通信緩沖區(qū)封包中的數(shù)據(jù)字的組織 轉(zhuǎn)換為第一壓縮直接線程間通信緩沖區(qū)封包(⑶ICBP),其中UDICBP映射到未壓縮直接線 程間通信輸出緩沖區(qū)(UDICOB),該UDICOB包括存儲(chǔ)于該UDICOB中的至少兩個(gè)數(shù)據(jù)字之間 的至少一個(gè)空緩沖區(qū)單元,其中第一⑶ICBP映射到第一(輸入)已壓縮直接線程間通信緩 沖區(qū)(⑶ICB),該⑶ICB在存儲(chǔ)于第一⑶ICB中的任何兩個(gè)字之間不存在空緩沖區(qū)單元,并 且其中UDICOB和⑶ICB包含不同數(shù)據(jù)字的多個(gè)不同聚合。如框1108中所描繪的,將第一已壓縮直接線程間通信緩沖區(qū)封包(⑶ICBP)傳輸 到NOC中的第一節(jié)點(diǎn)中的輸入CDICB。CDICBP包括多路器控制數(shù)據(jù),其允許第一多路器集合 選擇性地從CDICBP讀取數(shù)據(jù)字(框1110)。處理每個(gè)數(shù)據(jù)字,以產(chǎn)生未壓縮行的輸出(例 如,可以包括空白字的數(shù)據(jù)字聚合的行,但是其字寬度(例如128位)是NOC節(jié)點(diǎn)中的內(nèi)核 中的執(zhí)行單元所使用的)。在執(zhí)行單元處理未壓縮的數(shù)據(jù)行之后,第二多路器集合按照與第 一 CDICBP中的已壓縮對(duì)齊相同或不同的對(duì)齊來(lái)重新壓縮輸出數(shù)據(jù),并且填充第二(輸出) ⑶ICB (框1114)。根據(jù)存儲(chǔ)在第二⑶ICB中的已壓縮數(shù)據(jù)來(lái)創(chuàng)建第二⑶ICBP (框1116),并 且將其傳輸?shù)絅OC中的第二節(jié)點(diǎn)/下一節(jié)點(diǎn)(框1118)。在NOC中的所有期望節(jié)點(diǎn)都已經(jīng) 處理了來(lái)自⑶ICBP中的數(shù)據(jù)之后,過(guò)程在終止框1120結(jié)束。應(yīng)當(dāng)理解,本發(fā)明的至少某些方面可以可選地以包含程序產(chǎn)品的計(jì)算機(jī)可使用介 質(zhì)實(shí)現(xiàn)。定義本發(fā)明功能的程序可以經(jīng)由多種信號(hào)承載介質(zhì)傳送到數(shù)據(jù)存儲(chǔ)系統(tǒng)或計(jì)算機(jī) 系統(tǒng),該信號(hào)承載介質(zhì)包括但不限于不可寫(xiě)存儲(chǔ)介質(zhì)(例如,CD-ROM)、可寫(xiě)存儲(chǔ)介質(zhì)(例 如,硬盤(pán)驅(qū)動(dòng)器、讀/寫(xiě)⑶ROM、光學(xué)介質(zhì))、以及通信介質(zhì),諸如包括以太網(wǎng)、因特網(wǎng)、無(wú)線 網(wǎng)絡(luò)和類(lèi)似網(wǎng)絡(luò)系統(tǒng)的計(jì)算機(jī)和電話網(wǎng)絡(luò)。因此,應(yīng)當(dāng)理解此類(lèi)信號(hào)承載介質(zhì)當(dāng)承載導(dǎo)向 本發(fā)明中的方法功能的計(jì)算機(jī)可讀指令或?qū)υ撝噶钸M(jìn)行編碼時(shí),表示本發(fā)明可選實(shí)施方 式。而且,應(yīng)當(dāng)理解本發(fā)明可以通過(guò)具有硬件、軟件或這里描述的軟件和硬件的組合或者它 們的等同體的形式的裝置的系統(tǒng)實(shí)現(xiàn)。
權(quán)利要求
一種片上網(wǎng)絡(luò)(NOC),所述NOC包括第一節(jié)點(diǎn);以及第二節(jié)點(diǎn),其通過(guò)片上網(wǎng)絡(luò)耦合至所述第一節(jié)點(diǎn),其中所述第二節(jié)點(diǎn)包括第一陰影鎖存器集合,用于從第一已壓縮直接線程間通信緩沖區(qū)封包(CDICBP)讀取數(shù)據(jù)字的行,其中從所述第一CDICBP接收到的數(shù)據(jù)存儲(chǔ)在所述第二節(jié)點(diǎn)中的輸入已壓縮直接線程間通信緩沖區(qū)(CDICB)中,其中所述輸入CDICB在存儲(chǔ)于所述輸入CDICB中的任何兩個(gè)數(shù)據(jù)字之間不具有空緩沖區(qū)單元,其中利用來(lái)自未壓縮直接線程間通信發(fā)件箱緩沖區(qū)(UDICOB)的數(shù)據(jù)字來(lái)填充所述第一CDICBP,所述UDICOB包括存儲(chǔ)于所述UDICOB中的至少兩個(gè)數(shù)據(jù)字之間的至少一個(gè)空緩沖區(qū)單元,并且其中所述UDICOB和所述輸入CDICB包含多個(gè)不同的數(shù)據(jù)字聚合;第一多路器集合,其中所述第一多路器集合從包含至少兩個(gè)數(shù)據(jù)字的、第一CDICB存儲(chǔ)的數(shù)據(jù)字聚合中選擇性地讀取個(gè)體數(shù)據(jù)字;處理器,其處理來(lái)自所述第一CDICB存儲(chǔ)的數(shù)據(jù)字聚合的每個(gè)數(shù)據(jù)字,以產(chǎn)生未壓縮數(shù)據(jù)字行的輸出;以及第二多路器集合,其中所述第二多路器集合對(duì)來(lái)自所述處理器的未壓縮數(shù)據(jù)字行的輸出進(jìn)行壓縮,以生成第二CDICB,所述第二CDICB在存儲(chǔ)于所述第二CDICB中的任何兩個(gè)數(shù)據(jù)字之間不存在空緩沖區(qū)單元。
2.根據(jù)權(quán)利要求1所述的N0C,其中所述第一⑶ICB和所述第二⑶ICB使用特定數(shù)據(jù) 字的相同排列。
3.根據(jù)權(quán)利要求1所述的N0C,其中所述第一多路器集合由多路器控制器來(lái)控制,其中 所述多路器控制器由存儲(chǔ)在所述第一 CDICBP中的字對(duì)齊信息來(lái)控制。
4.根據(jù)權(quán)利要求1所述的N0C,其中所述NOC中的每個(gè)節(jié)點(diǎn)與不同的專(zhuān)用超微內(nèi)核相 關(guān)聯(lián),并且其中每個(gè)超微內(nèi)核是僅能向所述NOC中的節(jié)點(diǎn)以及在所述NOC中的節(jié)點(diǎn)之間傳 輸工作單元消息和⑶ICBP的軟件邏輯的薄片。
5.根據(jù)權(quán)利要求1所述的N0C,其中所述處理器是向量處理器。
6.根據(jù)權(quán)利要求1所述的N0C,進(jìn)一步包括主機(jī)計(jì)算機(jī),其耦合至所述N0C,其中所述第一節(jié)點(diǎn)專(zhuān)用于提供所述主機(jī)計(jì)算機(jī)與所述 NOC之間的主機(jī)接口。
7.根據(jù)權(quán)利要求6所述的N0C,其中所述UDICOB包含由實(shí)時(shí)三維投影軟件應(yīng)用使用的 數(shù)據(jù),并且其中所述第二節(jié)點(diǎn)專(zhuān)用于針對(duì)所述實(shí)時(shí)三維投影軟件應(yīng)用創(chuàng)建的圖像來(lái)執(zhí)行三 維變換、投影和光照計(jì)算。
8.根據(jù)權(quán)利要求7所述的N0C,進(jìn)一步包括第三節(jié)點(diǎn),其中所述第三節(jié)點(diǎn)專(zhuān)用于對(duì)所述實(shí)時(shí)三維投影軟件應(yīng)用所創(chuàng)建的圖像進(jìn)行 光柵化。
9.根據(jù)權(quán)利要求8所述的N0C,進(jìn)一步包括第四節(jié)點(diǎn),其中所述第四節(jié)點(diǎn)專(zhuān)用于對(duì)所述實(shí)時(shí)三維投影軟件應(yīng)用所創(chuàng)建的圖像進(jìn)行紋理處理。
10.一種通過(guò)片上網(wǎng)絡(luò)(NOC)上的節(jié)點(diǎn)來(lái)流式傳輸直接線程間緩沖區(qū)封包的計(jì)算機(jī)實(shí) 現(xiàn)方法,所述方法包括將未壓縮直接線程間通信緩沖區(qū)封包(UDICBP)中數(shù)據(jù)字的組織轉(zhuǎn)換為第一已壓縮直 接線程間通信緩沖區(qū)封包(CDICBP),其中所述UDICBP映射至未壓縮直接線程間通信輸出 緩沖區(qū)(UDICOB),所述UDICOB包括存儲(chǔ)于所述UDICOB中的至少兩個(gè)數(shù)據(jù)字之間的至少一 個(gè)空緩沖區(qū)單元;向片上網(wǎng)絡(luò)(NOC)中的第一節(jié)點(diǎn)中的輸入已壓縮直接線程間通信緩沖區(qū)(⑶ICB)傳 輸所述第一⑶ICBP,其中所述輸入⑶ICB在存儲(chǔ)于所述輸入⑶ICB中的任何兩個(gè)數(shù)據(jù)字之 間不具有空緩沖區(qū)單元,并且其中所述UDICOB和所述輸入⑶ICB包含多個(gè)不同的數(shù)據(jù)字聚 合;使用所述第一節(jié)點(diǎn)中的第一多路器集合,選擇性地對(duì)齊和讀取來(lái)自所述輸入CDICB中 的數(shù)據(jù)字,以復(fù)制所述UDICBP中的數(shù)據(jù)字排列;處理從所述輸入CDICBP讀取的每個(gè)數(shù)據(jù)字,以產(chǎn)生未壓縮的輸出數(shù)據(jù)字行的輸出;以及使用第二多路器集合對(duì)來(lái)自所述第一節(jié)點(diǎn)中的處理器的未壓縮輸出數(shù)據(jù)字行的輸出 進(jìn)行壓縮,以填充輸出CDICB,所述輸出CDICB在存儲(chǔ)于所述輸出CDICB中的任何兩個(gè)數(shù)據(jù) 字間不具有空緩沖區(qū)單元。
11.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述輸入CDICB和所述輸出CDICB 使用特定數(shù)據(jù)字的相同排列。
12.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述第一多路器集合由多路器控制 器來(lái)控制,其中所述多路器控制器由存儲(chǔ)在所述第一 CDICBP中的字對(duì)齊信息來(lái)控制。
13.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述NOC中的每個(gè)節(jié)點(diǎn)與不同的專(zhuān) 用超微內(nèi)核相關(guān)聯(lián),并且其中每個(gè)超微內(nèi)核是僅能向所述NOC中的節(jié)點(diǎn)以及在所述NOC中 的節(jié)點(diǎn)之間傳輸工作單元消息和CDICBP的軟件邏輯的薄片。
14.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述處理器是向量處理器。
15.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)方法,進(jìn)一步包括根據(jù)存儲(chǔ)在所述輸出⑶ICB中的已壓縮數(shù)據(jù),創(chuàng)建第二⑶ICBP ;以及向所述NOC中的第二節(jié)點(diǎn)傳輸所述第二⑶ICBP。
16.一種通過(guò)片上網(wǎng)絡(luò)(NOC)上的節(jié)點(diǎn)來(lái)流式傳輸直接線程間緩沖區(qū)封包的設(shè)備,所 述設(shè)備包括用于實(shí)現(xiàn)權(quán)利要求10-15中任一項(xiàng)所述的方法。
全文摘要
本發(fā)明涉及用于流式傳輸直接線程間緩沖區(qū)封包的方法、裝置、片上網(wǎng)絡(luò)。具體地,給出了用于對(duì)在高度線程化片上網(wǎng)絡(luò)(NOC)處理器中的線程間通信緩沖區(qū)封包中傳輸?shù)南蛄坎僮鲾?shù)進(jìn)行任意對(duì)齊的計(jì)算機(jī)實(shí)現(xiàn)方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。NOC中的節(jié)點(diǎn)中的多路器集合對(duì)來(lái)自傳入已壓縮線程間通信緩沖區(qū)封包的數(shù)據(jù)字聚合進(jìn)行重對(duì)齊和提取。所提取的數(shù)據(jù)字聚合作為操作數(shù)由節(jié)點(diǎn)中的執(zhí)行單元來(lái)使用。
文檔編號(hào)G06F9/54GK101807161SQ20101000475
公開(kāi)日2010年8月18日 申請(qǐng)日期2010年1月19日 優(yōu)先權(quán)日2009年1月26日
發(fā)明者A·J·穆夫, M·R·塔布斯, R·A·希勒 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司