用于跨過(guò)多個(gè)硬件線程的虛擬線程的細(xì)粒度并行的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)的制作方法
【專(zhuān)利摘要】一種方法和電路安排利用多核心處理器芯片中的多個(gè)處理核心的寄存器堆之間的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)來(lái)支持跨過(guò)多個(gè)硬件線程的虛擬線程的細(xì)粒度并行技術(shù)。變量轉(zhuǎn)移網(wǎng)絡(luò)上變量的傳送可以通過(guò)從源處理核心的寄存器堆中的本地寄存器到目的地處理核心中分配給目的地硬件線程的變量寄存器的移動(dòng)來(lái)啟動(dòng),以便目的地硬件線程接著可以將變量從變量寄存器移動(dòng)到目的地處理核心中的本地寄存器。
【專(zhuān)利說(shuō)明】用于跨過(guò)多個(gè)硬件線程的虛擬線程的細(xì)粒度并行的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般涉及數(shù)據(jù)處理,尤其涉及處理器架構(gòu)和多線程。
【背景技術(shù)】
[0002]隨著半導(dǎo)體技術(shù)在時(shí)鐘速度的增加方面繼續(xù)緩慢地越來(lái)越接近實(shí)際極限,架構(gòu)師們?cè)絹?lái)越多地把注意力放在處理器架構(gòu)的并行技術(shù)上來(lái)實(shí)現(xiàn)性能提高。在集成電路器件,或芯片級(jí)上,往往將多個(gè)處理器核心布置在同一芯片上,以與獨(dú)立處理器芯片,或在某種程度上,與完全獨(dú)立計(jì)算機(jī)幾乎相同的方式起作用。另外,甚至在核心內(nèi),通過(guò)使用專(zhuān)門(mén)管理某些類(lèi)型的操作的多個(gè)執(zhí)行單元來(lái)采用并行技術(shù)。在許多情況下也采用流水線技術(shù),以便將可能花費(fèi)多個(gè)時(shí)鐘周期來(lái)執(zhí)行的某些操作分解成幾個(gè)階段,使其它操作能夠在較早的操作完成之前開(kāi)始。還采用多線程技術(shù)使多個(gè)指令流能夠并行地得到處理,使得在任何給定時(shí)鐘周期中能夠執(zhí)行更綜合工作。
[0003]應(yīng)用上述技術(shù)的凈結(jié)果是向多線程處理環(huán)境提供分布在一個(gè)或多個(gè)處理器芯片中和在一臺(tái)或多臺(tái)計(jì)算機(jī)中的一個(gè)或多個(gè)處理核心之間和能夠并行地處理多個(gè)指令流的一批硬件線程的能力。可以預(yù)計(jì),隨著技術(shù)提高,處理器架構(gòu)將能夠支持?jǐn)?shù)百或數(shù)千個(gè)硬件線程,當(dāng)將多個(gè)處理器組合成像超級(jí)計(jì)算機(jī)和大型并行計(jì)算機(jī)那樣的高性能計(jì)算系統(tǒng)時(shí),存在支持?jǐn)?shù)百萬(wàn)個(gè)硬件線程的可能性。
[0004]但是,有效的并行處理要求運(yùn)行在多線程處理環(huán)境中的軟件應(yīng)用程序適當(dāng)利用多線程能力。軟件開(kāi)發(fā)者通常更樂(lè)于開(kāi)發(fā)單線程應(yīng)用程序,因?yàn)樗鼈兺ǔW裱瓐?zhí)行所希望任務(wù)所需的步驟順序。多線程支持往往不是憑直觀,而是往往需要考慮使沖突最少,以及依賴(lài)于使線程在它們可以完成它們自己的工作之前等待其它線程完成它們需要的工作而可能花費(fèi)的頻率最少。例如,如果一個(gè)線程需要計(jì)算其它線程正在計(jì)算的某組數(shù)值的平均值,則那個(gè)線程在所有其它線程計(jì)算它們各自的數(shù)值之前將不能執(zhí)行它的操作。另一方面,執(zhí)行完全獨(dú)立任務(wù)的線程通常不會(huì)遭受依賴(lài)問(wèn)題。因此,與開(kāi)發(fā)多線程應(yīng)用程序有關(guān)的許多努力都致力于將任務(wù)分解成相對(duì)獨(dú)立線程,以便使線程間依賴(lài)性最少。
[0005]鑒于與開(kāi)發(fā)多線程應(yīng)用程序有關(guān)的困難,在本領(lǐng)域中相當(dāng)需要簡(jiǎn)化多線程應(yīng)用程序的開(kāi)發(fā)的技術(shù)。例如,已經(jīng)相當(dāng)努力地在編譯期間,例如,使用優(yōu)化編譯器可編程地將單線程應(yīng)用程序代碼轉(zhuǎn)換成多線程應(yīng)用程序代碼。借助于一種方法,例如,將細(xì)粒度并行技術(shù)應(yīng)用于將指令流中的有序代碼轉(zhuǎn)換成多個(gè)小無(wú)序代碼段,并將指令插入指令流中,以便以變量的形式在代碼段之間傳遞數(shù)據(jù)。一種類(lèi)型的指令是將變量發(fā)送給另一個(gè)線程的“放置”指令,另一種類(lèi)型的指令是從另一個(gè)線程中檢索變量的“取得”指令。通過(guò)使用這些指令,可以通過(guò)延遲為特定變量發(fā)出取得語(yǔ)言的代碼段直到另一個(gè)代碼段為那個(gè)變量發(fā)出相應(yīng)放置指令來(lái)保持在多個(gè)線程上執(zhí)行的代碼段之間的同步。
[0006]雖然使用放置和取得指令可以有效地保持在不同硬件線程上執(zhí)行的依賴(lài)代碼段之間的同步,但是讓線程延遲等待來(lái)自另一個(gè)線程的變量的任何時(shí)間都代表生產(chǎn)力損失,因此最好是使與在線程之間傳送變量有關(guān)的延遲最小。
[0007]因此,在本領(lǐng)域中相當(dāng)需要在多線程處理環(huán)境下有效地在多個(gè)線程之間傳送數(shù)據(jù)以便使與線程間依賴(lài)性有關(guān)的延遲最小的方式。
【發(fā)明內(nèi)容】
[0008]本發(fā)明通過(guò)提供利用多核心處理器芯片中的多處理核心的寄存器堆之間的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)支持跨過(guò)多個(gè)硬件線程的虛擬線程的細(xì)粒度并行技術(shù)的方法和電路安排來(lái)解決與現(xiàn)有技術(shù)相關(guān)的這些和其它問(wèn)題。在本發(fā)明的一些實(shí)施例中,在變量轉(zhuǎn)移網(wǎng)絡(luò)上傳送變量通過(guò)從源處理核心的寄存器堆中的本地寄存器到目的地處理核心中分配給目的地硬件線程的變量寄存器的移動(dòng)來(lái)啟動(dòng),以便目的地硬件線程然后可以將變量從變量寄存器移動(dòng)到目的地處理核心中的本地寄存器。
[0009]依照本發(fā)明的一個(gè)方面,使變量轉(zhuǎn)移網(wǎng)絡(luò)耦合在多個(gè)處理核心之間,其中多個(gè)硬件線程被布置在多個(gè)處理核心中,以及其中每個(gè)處理核心包括一個(gè)寄存器堆和多個(gè)硬件線程當(dāng)中的至少一個(gè)硬件線程。該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成在多個(gè)處理核心當(dāng)中的一個(gè)源處理核心中的源硬件線程與多個(gè)處理核心當(dāng)中的一個(gè)目的地處理核心中的目的地硬件線程之間傳送變量。
[0010]表征本發(fā)明的這些和其它優(yōu)點(diǎn)和特征展示在所附的和形成其進(jìn)一步部分的權(quán)利要求書(shū)中。但是,為了更好地理解本發(fā)明,以及通過(guò)其使用達(dá)到的優(yōu)點(diǎn)和目的,應(yīng)該參考附圖以及描述本發(fā)明的示范性實(shí)施例的伴隨描述性?xún)?nèi)容。
[0011]從第一方面來(lái)看,本發(fā)明提供了一種電路安排,其包含:布置在多個(gè)處理核心中的多個(gè)硬件線程,每個(gè)處理核心包括一個(gè)寄存器堆和多個(gè)硬件線程當(dāng)中的至少一個(gè)硬件線程;以及耦合在多個(gè)處理核心之間的變量轉(zhuǎn)移網(wǎng)絡(luò),該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成在多個(gè)處理核心當(dāng)中的一個(gè)源處理核心中的源硬件線程與多個(gè)處理核心當(dāng)中的一個(gè)目的地處理核心中的目的地硬件線程之間傳送變量。
[0012]優(yōu)選的是,本發(fā)明提供了這樣的的電路安排,其進(jìn)一步包含多個(gè)變量寄存器,每個(gè)變量寄存器被分配給多個(gè)硬件線程當(dāng)中的各個(gè)硬件線程,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成響應(yīng)將變量存儲(chǔ)在分配給目的地硬件線程的變量寄存器中,將變量傳送給目的地處理核心。
[0013]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中將多個(gè)變量寄存器架構(gòu)成每個(gè)處理核心的寄存器堆,以及其中布置在每個(gè)處理核心內(nèi)的依賴(lài)性邏輯管理寄存器堆中的多個(gè)本地寄存器和多個(gè)變量寄存器兩者的依賴(lài)性。
[0014]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中將變量轉(zhuǎn)移網(wǎng)絡(luò)配置成響應(yīng)源硬件線程執(zhí)行的指令將變量傳送給目的地處理核心。
[0015]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該指令包含將變量從源處理核心的寄存器堆中的本地寄存器移動(dòng)到分配給目的地硬件線程的變量寄存器的放置指令。
[0016]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中分配給目的地硬件線程的變量寄存器包括指示目的地硬件線程是否準(zhǔn)備好在變量轉(zhuǎn)移網(wǎng)絡(luò)上接收變量的信用標(biāo)志,以及其中將該源處理核心配置成延遲放置指令,直到該信用標(biāo)志指示目的地硬件線程準(zhǔn)備好接收變量。
[0017]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成響應(yīng)將變量存儲(chǔ)在源處理核心中分配給目的地硬件線程的變量寄存器中,使變量出現(xiàn)在目的地處理核心中與源線程相聯(lián)系的變量寄存器上,以及其中該目的地硬件線程被配置成響應(yīng)目的地硬件線程執(zhí)行的指令,將變量從分配給源硬件線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器。
[0018]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該指令包含取得指令,其中目的地處理核心中分配給源硬件線程的變量寄存器包括指示在目的地處理核心中分配給源硬件線程的變量寄存器中是否存儲(chǔ)了有效數(shù)據(jù)的有效標(biāo)志,以及其中該目的地處理核心被配置成延遲取得指令,直到該有效標(biāo)志指示在目的地處理核心中分配給源硬件線程的變量寄存器中存儲(chǔ)了有效數(shù)據(jù)。
[0019]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該目的地處理核心被配置成響應(yīng)將變量從目的地處理核心中分配給源硬件線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器,在變量轉(zhuǎn)移網(wǎng)絡(luò)上返回信用。
[0020]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含耦合在源處理核心與目的地處理核心之間的發(fā)送總線,該發(fā)送總線包括配置成傳送變量的多條數(shù)據(jù)線、配置成為目的地硬件線程傳送標(biāo)識(shí)符的至少一條線程標(biāo)識(shí)符線、和配置成指示正在多線數(shù)據(jù)線上傳送有效數(shù)據(jù)的時(shí)間的有效線。
[0021]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中數(shù)據(jù)、線程標(biāo)識(shí)符和有效線的每一種由源處理核心驅(qū)動(dòng),以及其中該發(fā)送總線進(jìn)一步包括由目的地處理核心驅(qū)動(dòng)和配置成響應(yīng)目的地硬件線程成功轉(zhuǎn)移了變量將信用返回給源處理核心的信用線。
[0022]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該發(fā)送總線包含從源處理核心到目的地處理核心的專(zhuān)用總線,以及其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含多條發(fā)送總線,以便多個(gè)處理核心的每一個(gè)包括到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心的專(zhuān)用總線。
[0023]優(yōu)選的是,本發(fā)明提供了這樣的電路安排,其中該發(fā)送總線從源處理核心耦合到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心,以及其中該發(fā)送總線進(jìn)一步包括配置成為目的地處理核心傳送標(biāo)識(shí)符的至少一條核心標(biāo)識(shí)符線。
[0024]從另一個(gè)方面來(lái)看,本發(fā)明提供了一種集成電路器件,其包括如上所述的電路安排。
[0025]從另一個(gè)方面來(lái)看,本發(fā)明提供了一種程序產(chǎn)品,其包含計(jì)算機(jī)可讀介質(zhì)和存儲(chǔ)在該計(jì)算機(jī)可讀介質(zhì)上和定義如上所述的電路安排的邏輯定義程序代碼。
[0026]從另一個(gè)方面來(lái)看,本發(fā)明提供了一種在布置在多個(gè)處理核心中的多個(gè)硬件線程之間傳送變量的方法,每個(gè)處理核心包括一個(gè)寄存器堆和多個(gè)硬件線程當(dāng)中的至少一個(gè)硬件線程,該方法包含:利用多個(gè)處理核心當(dāng)中的源處理核心中的源硬件線程啟動(dòng)變量到多個(gè)處理核心當(dāng)中的目的地處理核心中的目的地硬件線程的轉(zhuǎn)移;以及響應(yīng)啟動(dòng)變量的轉(zhuǎn)移,在與源和目的地處理核心耦合的變量轉(zhuǎn)移網(wǎng)絡(luò)上將變量從源處理核心傳送到目的地處理核心。
[0027]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中該啟動(dòng)變量的轉(zhuǎn)移包含將變量存儲(chǔ)在分配給目的地硬件線程的變量寄存器中,其中該變量寄存器在布置在多核心處理芯片上的多個(gè)變量寄存器當(dāng)中,其中每個(gè)變量寄存器被配置給多個(gè)硬件線程當(dāng)中的各個(gè)硬件線程。
[0028]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中將多個(gè)變量寄存器架構(gòu)成每個(gè)處理核心的寄存器堆,以及其中布置在每個(gè)處理核心內(nèi)的依賴(lài)性邏輯管理寄存器堆中的多個(gè)本地寄存器和多個(gè)變量寄存器兩者的依賴(lài)性。
[0029]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中該啟動(dòng)變量的轉(zhuǎn)移包括利用源硬件線程執(zhí)行放置指令,其中該放置指令將變量從源處理核心的寄存器堆中的本地寄存器移動(dòng)到分配給目的地硬件線程的變量寄存器。
[0030]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中分配給目的地硬件線程的變量寄存器包括指示目的地硬件線程是否準(zhǔn)備好在變量轉(zhuǎn)移網(wǎng)絡(luò)上接收變量的信用標(biāo)志,以及其中該方法進(jìn)一步包含延遲放置指令,直到該信用標(biāo)志指示目的地硬件線程準(zhǔn)備好接收變量。
[0031]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成響應(yīng)將變量存儲(chǔ)在源處理核心中分配給目的地硬件線程的變量寄存器中,使變量出現(xiàn)在目的地處理核心中與源線程相聯(lián)系的變量寄存器上,以及該方法進(jìn)一步包含響應(yīng)目的地硬件線程執(zhí)行的取得指令,將變量從目的地處理核心中分配給源硬件線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器,其中目的地處理核心中分配給源硬件線程的變量寄存器包括指示在目的地處理核心中分配給源硬件線程的變量寄存器中是否存儲(chǔ)了有效數(shù)據(jù)的有效標(biāo)志,以及其中該方法進(jìn)一步包含延遲取得指令,直到該有效標(biāo)志指示在目的地處理核心中分配給源硬件線程的變量寄存器中存儲(chǔ)了有效數(shù)據(jù)。
[0032]優(yōu)選的是,本發(fā)明提供了這樣的方法,該方法進(jìn)一步包含響應(yīng)將變量從目的地處理核心中分配給源硬件線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器,在變量轉(zhuǎn)移網(wǎng)絡(luò)上返回信用。
[0033]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含耦合在源處理核心與目的地處理核心之間的發(fā)送總線,該發(fā)送總線包括配置成傳送變量的多條數(shù)據(jù)線、配置成為目的地硬件線程傳送標(biāo)識(shí)符的至少一條線程標(biāo)識(shí)符線、和配置成指示正在多線數(shù)據(jù)線上傳送有效數(shù)據(jù)的時(shí)間的有效線,其中數(shù)據(jù)、線程標(biāo)識(shí)符和有效線的每一種由源處理核心驅(qū)動(dòng),以及其中該發(fā)送總線進(jìn)一步包括由目的地處理核心驅(qū)動(dòng)和配置成響應(yīng)目的地硬件線程成功轉(zhuǎn)移了變量將信用返回給源處理核心的信用線。
[0034]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中該發(fā)送總線包含從源處理核心到目的地處理核心的專(zhuān)用總線,以及其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含多條發(fā)送總線,以便多個(gè)處理核心的每一個(gè)包括到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心的專(zhuān)用總線。
[0035]優(yōu)選的是,本發(fā)明提供了這樣的方法,其中該發(fā)送總線從源處理核心耦合到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心,以及其中該發(fā)送總線進(jìn)一步包括配置成為目的地處理核心傳送標(biāo)識(shí)符的至少一條核心標(biāo)識(shí)符線。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0036]現(xiàn)在參考附圖,只通過(guò)示例描述本發(fā)明的優(yōu)選實(shí)施例,在附圖中:
[0037]圖1是包括可用在依照本發(fā)明的實(shí)施例的數(shù)據(jù)處理中的示范性計(jì)算機(jī)的示范性自動(dòng)化計(jì)算總機(jī)的框圖;
[0038]圖2是在圖1的計(jì)算機(jī)中實(shí)現(xiàn)的示范性NOC的框圖;
[0039]圖3是更詳細(xì)地圖示來(lái)自圖2的NOC的節(jié)點(diǎn)的示范性實(shí)現(xiàn)的框圖;
[0040]圖4是圖示來(lái)自圖2的NOC的IP塊的示范性實(shí)現(xiàn)的框圖;[0041]圖5是圖示用于將單線程代碼分解成可由多個(gè)硬件線程執(zhí)行的多個(gè)代碼段的細(xì)粒度并行技術(shù)的框圖;
[0042]圖6是包括并入依照本發(fā)明的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)的多核心處理器芯片的示范性數(shù)據(jù)處理系統(tǒng)的框圖;
[0043]圖7是在圖6中引用的擴(kuò)充寄存器堆的示范性實(shí)現(xiàn)的框圖;
[0044]圖8是在圖6中引用的變量轉(zhuǎn)移網(wǎng)絡(luò)中的發(fā)送總線的示范性實(shí)現(xiàn)的框圖;
[0045]圖9是圖示在8中引用的發(fā)送總線上的示范性變量傳輸?shù)臅r(shí)序圖;
[0046]圖10是在圖8中圖示的發(fā)送總線的可替代實(shí)現(xiàn)的框圖;
[0047]圖11是圖示當(dāng)在圖6的多核心處理器芯片中執(zhí)行在變量轉(zhuǎn)移網(wǎng)絡(luò)上發(fā)送變量的放置指令時(shí)進(jìn)行的操作的示范性順序的流程圖;以及
[0048]圖12是圖示當(dāng)在圖6的多核心處理器芯片中執(zhí)行從變量轉(zhuǎn)移網(wǎng)絡(luò)接收變量的取得指令時(shí)進(jìn)行的操作的示范性順序的流程圖。
【具體實(shí)施方式】
[0049]依照本發(fā)明的實(shí)施例利用耦合在多核心處理器芯片中的多個(gè)處理核心的寄存器堆之間的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)在多線程處理環(huán)境下在線程之間傳送數(shù)據(jù)。在下文討論的實(shí)施例中,將可選地架構(gòu)成擴(kuò)充寄存器堆的多個(gè)變量寄存器的每一個(gè)分配給多個(gè)硬件線程的各個(gè)硬件線程,以便變量轉(zhuǎn)移網(wǎng)絡(luò)響應(yīng)將變量存儲(chǔ)在分配給那個(gè)目的地硬件線程的變量寄存器中,將變量傳送給目的地處理核心。另外,在下文所述的實(shí)施例中,變量寄存器被架構(gòu)成每個(gè)處理核心的寄存器堆,以便可以與寄存器堆中的本地寄存器幾乎相同的方式訪問(wèn)它們,以及以便布置在每個(gè)處理核心內(nèi)的依賴(lài)性邏輯管理寄存器堆中的本地寄存器和變量寄存器兩者的依賴(lài)性。
[0050]其它變種和修改例對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的,因此,本發(fā)明不局限于本文討論的特定實(shí)現(xiàn)。
[0051]硬件和軟件環(huán)境
[0052]現(xiàn)在轉(zhuǎn)到附圖,其中相同標(biāo)號(hào)在幾個(gè)視圖中自始至終表示相同零件,圖1圖示了包括可用在依照本發(fā)明的實(shí)施例的數(shù)據(jù)處理中的示范性計(jì)算機(jī)10的示范性自動(dòng)化計(jì)算總機(jī)。圖1的計(jì)算機(jī)10包括至少一個(gè)計(jì)算機(jī)處理器12或“CPU”,以及隨機(jī)訪問(wèn)存儲(chǔ)器14(“RAM”),該RAM14通過(guò)高速存儲(chǔ)器總線16和總線適配器18與處理器12連接以及與計(jì)算機(jī)10的其它組件連接。
[0053]存儲(chǔ)在RAM14中的是應(yīng)用程序20,S卩,執(zhí)行像,例如,文字處理、電子表格、數(shù)據(jù)庫(kù)操作、視頻游戲、股市模擬、原子量子過(guò)程模擬、或其它用戶(hù)級(jí)應(yīng)用那樣的特定數(shù)據(jù)處理任務(wù)的用戶(hù)級(jí)計(jì)算機(jī)程序指令的模塊。存儲(chǔ)在RAM14中的還有操作系統(tǒng)22??山Y(jié)合本發(fā)明的實(shí)施例使用的操作系統(tǒng)包括UNIX?、Linux?、微軟Windows XP?、AIX?、IBM i5/0S?、和本領(lǐng)域的普通技術(shù)人員可想到的其它操作系統(tǒng)。圖1的示例中的操作系統(tǒng)22和應(yīng)用程序20被顯示在RAM14中,但這樣軟件的許多組件通常也存儲(chǔ)在非易失性存儲(chǔ)器中,例如,在盤(pán)驅(qū)動(dòng)器24上。
[0054]如下面更明顯看到的那樣,依照本發(fā)明的實(shí)施例可以在片上網(wǎng)絡(luò)(NOC)集成電路器件或芯片內(nèi)實(shí)現(xiàn),這樣,計(jì)算機(jī)10被圖示成包括兩個(gè)示范性NOC:視頻適配器26和協(xié)處理器28。NOC視頻適配器26可替代地可以稱(chēng)為圖形適配器,是專(zhuān)門(mén)為圖形輸出到像顯示屏或計(jì)算機(jī)監(jiān)視器那樣的顯示設(shè)備30而計(jì)算的I/O適配器的示例。NOC視頻適配器26通過(guò)高速視頻總線32、總線適配器18、和也是高速總線的前端總線34與處理器12連接。NOC協(xié)處理器28通過(guò)總線適配器18、和也是高速總線的前端總線34和36與處理器12連接。圖1的NOC協(xié)處理器可以?xún)?yōu)化成,例如,在主處理器12的命令下加速特定數(shù)據(jù)處理任務(wù)。
[0055]圖1的示范性NOC視頻適配器26和NOC協(xié)處理器28每一個(gè)都包括N0C,該NOC包括集成處理器(“IP”)塊、路由器、存儲(chǔ)器通信控制器、和網(wǎng)絡(luò)接口控制器,它們的細(xì)節(jié)將在下面結(jié)合圖2-3作更詳細(xì)討論。NOC視頻適配器和NOC協(xié)處理器每一個(gè)都最適用于使用并行處理以及需要快速隨機(jī)訪問(wèn)共享存儲(chǔ)器的程序。但是,從本公開(kāi)中受益的本領(lǐng)域的普通技術(shù)人員應(yīng)該懂得,本發(fā)明可以在除了 NOC設(shè)備和設(shè)備架構(gòu)之外的其它設(shè)備和設(shè)備架構(gòu)中實(shí)現(xiàn)。因此本發(fā)明不局限于在NOC設(shè)備內(nèi)的實(shí)現(xiàn)。
[0056]圖1的計(jì)算機(jī)10包括通過(guò)擴(kuò)展總線40和總線適配器18與處理器12和計(jì)算機(jī)10的其它組件耦合的盤(pán)驅(qū)動(dòng)器適配器38。盤(pán)驅(qū)動(dòng)器適配器38以盤(pán)驅(qū)動(dòng)器24的形式將非易失性數(shù)據(jù)存儲(chǔ)設(shè)備與計(jì)算機(jī)10連接,可以使用,例如,集成驅(qū)動(dòng)電子設(shè)備(“IDE”)適配器、小型計(jì)算機(jī)系統(tǒng)接口( “SCSI”)適配器、和本領(lǐng)域的普通技術(shù)人員可想到的其它適配器來(lái)實(shí)現(xiàn)。如本領(lǐng)域的普通技術(shù)人員所想到,非易失性計(jì)算機(jī)存儲(chǔ)器也可以實(shí)現(xiàn)成光盤(pán)驅(qū)動(dòng)器、電可擦除可編程只讀存儲(chǔ)器(所謂的“EEPR0M”或“閃速”存儲(chǔ)器)、RAM驅(qū)動(dòng)器等。
[0057]計(jì)算機(jī)10還包括一個(gè)或多個(gè)輸入/輸出(“I/O”)適配器42,它通過(guò),例如,軟件驅(qū)動(dòng)器和計(jì)算機(jī)硬件實(shí)現(xiàn)面向用戶(hù)的輸入/輸出,以便控制到像計(jì)算機(jī)顯示屏那樣的顯示設(shè)備的輸出,以及從像鍵盤(pán)和鼠標(biāo)那樣的用戶(hù)輸入設(shè)備44的用戶(hù)輸入。另外,計(jì)算機(jī)10還包括用于與其它計(jì)算機(jī)48數(shù)據(jù)通信和與數(shù)據(jù)通信網(wǎng)絡(luò)50數(shù)據(jù)通信的通信適配器46。這樣的數(shù)據(jù)通信可以通過(guò)RS-232連線,通過(guò)像通用串行總線(“USB”)那樣的外部總線,通過(guò)像IP數(shù)據(jù)通信網(wǎng)絡(luò)那樣的數(shù)據(jù)通信網(wǎng)絡(luò),和以本領(lǐng)域的普通技術(shù)人員可想到的其它方式串行地進(jìn)行。通信適配器實(shí)現(xiàn)一臺(tái)計(jì)算機(jī)直接或通過(guò)數(shù)據(jù)通信網(wǎng)絡(luò)將通信數(shù)據(jù)發(fā)送給另一臺(tái)計(jì)算機(jī)的硬件級(jí)數(shù)據(jù)通信。適合用在計(jì)算機(jī)10中的通信適配器的示例包括用于有線撥號(hào)通信的調(diào)制解調(diào)器、用于有線數(shù)據(jù)通信網(wǎng)絡(luò)通信的以太網(wǎng)(IEEE802.3)適配器、和用于無(wú)線數(shù)據(jù)通信網(wǎng)絡(luò)通信的802.11。
[0058]為了進(jìn)一步說(shuō)明起見(jiàn),圖2展示了按照本發(fā)明實(shí)施例的示范性N0C102的功能框圖。圖2中的NOC是在“芯片”100上,S卩,在集成電路上實(shí)現(xiàn)的。N0C102包括分組成互連節(jié)點(diǎn)的集成處理器(“IP”)塊104、路由器110、存儲(chǔ)器通信控制器106、和網(wǎng)絡(luò)接口控制器108。每個(gè)IP塊104通過(guò)存儲(chǔ)器通信控制器106和網(wǎng)絡(luò)接口控制器108適用于路由器110。每個(gè)存儲(chǔ)器通信控制器106控制IP塊與存儲(chǔ)器之間的通信,以及每個(gè)網(wǎng)絡(luò)接口控制器108通過(guò)路由器110控制IP塊間通信。
[0059]在N0C102中,每個(gè)IP塊代表作為積木用于NOC內(nèi)的數(shù)據(jù)處理的同步或異步邏輯設(shè)計(jì)的可重用單元。術(shù)語(yǔ)“IP塊”有時(shí)被全寫(xiě)成“知識(shí)產(chǎn)權(quán)塊”,其有效地將IP塊指定為一方所有的設(shè)計(jì),即,一方授權(quán)給半導(dǎo)體電路的其他用戶(hù)或設(shè)計(jì)者的知識(shí)產(chǎn)權(quán)。但是,在本發(fā)明的范圍內(nèi),未要求IP塊受任何特定所有權(quán)支配,因此在本說(shuō)明書(shū)中該術(shù)語(yǔ)總是被全寫(xiě)成“集成處理器塊”。如這里所規(guī)定,IP塊是可能是或可能不是知識(shí)產(chǎn)權(quán)的主體的邏輯、單元、或芯片布局設(shè)計(jì)的可重用單元。IP塊是可以形成ASIC芯片設(shè)計(jì)或FPGA邏輯設(shè)計(jì)的邏輯核心。
[0060]通過(guò)類(lèi)比描述IP塊的一種方式是IP塊對(duì)于NOC設(shè)計(jì)如同庫(kù)對(duì)于計(jì)算機(jī)編程或分立集成電路組件對(duì)于印刷電路板設(shè)計(jì)。在依照本發(fā)明實(shí)施例的NOC中,IP塊可以實(shí)現(xiàn)成通用門(mén)級(jí)網(wǎng)表,實(shí)現(xiàn)成完全專(zhuān)用或通用微處理器,或以本領(lǐng)域的普通技術(shù)人員可想到的其它方式實(shí)現(xiàn)。網(wǎng)表類(lèi)似于高級(jí)程序應(yīng)用的匯編-代碼列表,是IP塊邏輯功能的布爾代數(shù)表示(門(mén)、標(biāo)準(zhǔn)單元)。NOC也可以,例如,以用像Verilog或VHDL那樣的硬件描述語(yǔ)言描述的可合成形式實(shí)現(xiàn)。除了網(wǎng)表和可合成實(shí)現(xiàn)之外,NOC也可以用較低級(jí)物理描述實(shí)現(xiàn)。諸如SERDES、PLL、DAC、ADC等的類(lèi)似IP塊元件可以以像⑶SII那樣的晶體管布局格式分布。IP塊的數(shù)字元件有時(shí)也以布局格式提供。還要懂得,IP塊以及依照本發(fā)明實(shí)現(xiàn)的其它邏輯電路可以以在各種細(xì)節(jié)水平上定義實(shí)現(xiàn)這樣邏輯的電路安排的功能和/或布局的計(jì)算機(jī)數(shù)據(jù)文件,例如,邏輯定義程序代碼的形式分發(fā),因此,雖然已經(jīng)和在下文中將在在全功能集成電路設(shè)備、利用這樣設(shè)備的數(shù)據(jù)處理系統(tǒng)、和其它有形、物理硬件電路中實(shí)現(xiàn)的電路安排的背景下對(duì)本發(fā)明加以描述,但從本公開(kāi)中受益的本領(lǐng)域的普通技術(shù)人員應(yīng)該懂得,本發(fā)明也可以在程序產(chǎn)品內(nèi)實(shí)現(xiàn),以及與用于分發(fā)程序產(chǎn)品的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的特定類(lèi)型無(wú)關(guān)地同等應(yīng)用本發(fā)明。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括,但不限于,諸如易失性和非易失性存儲(chǔ)器件、軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器、CD-ROM、和DVD (等等)的可記錄型介質(zhì)。
[0061]圖2的示例中的每個(gè)IP塊104通過(guò)存儲(chǔ)器通信控制器106適用于路由器110。每個(gè)存儲(chǔ)器通信控制器是適合于在IP塊與存儲(chǔ)器之間提供數(shù)據(jù)通信的同步和異步邏輯電路的總成。IP塊與存儲(chǔ)器之間的這樣通信的示例包括存儲(chǔ)器裝載指令和存儲(chǔ)器存儲(chǔ)指令。存儲(chǔ)器通信控制器106將在下面參考圖3作更詳細(xì)描述。每個(gè)IP塊104也通過(guò)網(wǎng)絡(luò)接口控制器108適用于路由器110,網(wǎng)絡(luò)接口控制器108控制IP塊104之間通過(guò)路由器110的通信。IP塊104之間的通信的示例包括并行應(yīng)用中和流水線應(yīng)用中在IP塊之間傳送數(shù)據(jù)的消息和處理數(shù)據(jù)的指令。網(wǎng)絡(luò)接口控制器108也將在下面參考圖3作更詳細(xì)描述。
[0062]路由器110以及其間的相應(yīng)鏈路118實(shí)現(xiàn)NOC的網(wǎng)絡(luò)操作。鏈路118可以是在連接所有路由器的物理、并行導(dǎo)線總線上實(shí)現(xiàn)的分組結(jié)構(gòu)。也就是說(shuō),每條鏈路可以在寬到足以同時(shí)容納包括所有首標(biāo)信息和有效負(fù)載數(shù)據(jù)的整個(gè)數(shù)據(jù)交換分組的導(dǎo)線總線上實(shí)現(xiàn)。如果分組結(jié)構(gòu)包括,例如,64個(gè)字節(jié),其中包括8個(gè)字節(jié)首標(biāo)和56個(gè)字節(jié)的有效負(fù)載數(shù)據(jù),則對(duì)應(yīng)每條鏈路的導(dǎo)線總線是64個(gè)字節(jié)寬的512條導(dǎo)線。另外,每條鏈路可以是雙向的,使得如果鏈路分組結(jié)構(gòu)包括64個(gè)字節(jié),則導(dǎo)線總線實(shí)際上包含每個(gè)路由器與網(wǎng)絡(luò)中其每個(gè)鄰居之間的1024條導(dǎo)線。在這樣的實(shí)現(xiàn)中,消息可以包括不止一個(gè)分組,但每個(gè)分組精確地與導(dǎo)線總線的寬度一致。在替代例中,可以在只寬到足以容納分組的一部分的導(dǎo)線總線上實(shí)現(xiàn)鏈路,以便可以將分組分解成多個(gè)節(jié)拍,例如,以便如果一條鏈路被實(shí)現(xiàn)成16個(gè)字節(jié)寬,或128條導(dǎo)線,則可以將64個(gè)字節(jié)分解成四個(gè)節(jié)拍。要懂得的是,不同實(shí)現(xiàn)可以根據(jù)實(shí)際物理限制以及所希望運(yùn)行特性使用不同總線寬度。如果路由器與導(dǎo)線總線的每個(gè)部分之間的連接被稱(chēng)為端口,則每個(gè)路由器包括五個(gè)端口,網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)乃膫€(gè)方向的每一個(gè)各一個(gè),第五個(gè)端口使路由器通過(guò)存儲(chǔ)器通信控制器和網(wǎng)絡(luò)接口控制器適用于IP塊。
[0063]每個(gè)存儲(chǔ)器通信控制器106控制IP塊與存儲(chǔ)器之間的通信。存儲(chǔ)器可以包括片外主RAMl 12、通過(guò)存儲(chǔ)器通信控制器106直接與IP塊連接的存儲(chǔ)器114、實(shí)現(xiàn)成IP塊116的片上存儲(chǔ)器、和片上高速緩存。在N0C102中,例如,片上存儲(chǔ)器114,116的任一個(gè)都可以實(shí)現(xiàn)成片上高速緩沖存儲(chǔ)器。所有這些形式的存儲(chǔ)器都可以布置在相同地址空間、物理地址或虛擬地址中,甚至對(duì)于直接附在IP塊上的存儲(chǔ)器也是如此。因此存儲(chǔ)器尋址消息相對(duì)于IP塊可以是完全雙向的,因?yàn)檫@樣的存儲(chǔ)器可以從網(wǎng)絡(luò)上的任何地方的任何IP塊直接尋址。IP塊上的存儲(chǔ)器116可以從那個(gè)IP塊或從NOC中的任何其它IP塊尋址。直接附在存儲(chǔ)器通信控制器上的存儲(chǔ)器114可以由通過(guò)那個(gè)存儲(chǔ)器通信控制器適用于網(wǎng)絡(luò)的IP塊尋址一也可以從NOC中的任何地方的任何其它IP塊尋址。
[0064]N0C102包括兩個(gè)存儲(chǔ)器管理單元(“MMU”) 120,122,其為依照本發(fā)明實(shí)施例的NOC圖示了兩種可替代存儲(chǔ)器架構(gòu)。MMU120在IP塊內(nèi)實(shí)現(xiàn),使IP塊內(nèi)的處理器可以在虛擬存儲(chǔ)器中操作,同時(shí)使NOC的整個(gè)其余架構(gòu)可以在物理存儲(chǔ)器地址空間中操作。MMU122是片外實(shí)現(xiàn)的,通過(guò)數(shù)據(jù)通信端口 124與NOC連接。端口 124包括引腳和在NOC與MMU之間傳導(dǎo)信號(hào)所需的其它互連線,以及將消息分組從NOC分組格式轉(zhuǎn)換成外部MMU122所需的總線格式的足夠智慧。MMU的外部地點(diǎn)意味著NOC的所有IP塊中的所有處理器可以在虛擬存儲(chǔ)器地址空間中操作,到片外存儲(chǔ)器的物理地址的所有轉(zhuǎn)換由片外MMU122管理。
[0065]除了使用MMU120,122圖示的兩種存儲(chǔ)器架構(gòu)之外,數(shù)據(jù)通信端口 126還圖示了可用在能夠用在本發(fā)明的實(shí)施例中的NOC中的第三種存儲(chǔ)器架構(gòu)。端口 126提供了 N0C102的IP塊104與片外存儲(chǔ)器112之間的直接連接。如果在處理路徑中沒(méi)有MMU,則這種架構(gòu)讓NOC的所有IP塊利用物理地址空間。在雙向共享地址空間時(shí),NOC的所有IP塊可以通過(guò)由直接與端口 126連接的IP塊引導(dǎo)、包括裝載和存儲(chǔ)的存儲(chǔ)器尋址消息在地址空間中訪問(wèn)存儲(chǔ)器。端口 126包括引腳和在NOC與片外存儲(chǔ)器112之間傳導(dǎo)信號(hào)所需的其它互連線,以及將消息分組從NOC分組格式轉(zhuǎn)換成外部片外存儲(chǔ)器112所需的總線格式的足夠智慧。
[0066]在圖2的示例中,將IP塊之一指定成主接口處理器128。主接口處理器128提供NOC與可以安裝NOC的主計(jì)算機(jī)10之間的接口,并且還對(duì)NOC上的其它IP塊提供數(shù)據(jù)處理服務(wù),包括,例如,從主計(jì)算機(jī)接收和在IP塊之間分派NOC數(shù)據(jù)處理請(qǐng)求。NOC可以,例如,如上面參考圖1所述將視頻圖形適配器26或協(xié)處理器28實(shí)現(xiàn)在較大型計(jì)算機(jī)10上。在圖2的示例中,主接口處理器128通過(guò)數(shù)據(jù)通信端口 130與較大型主計(jì)算機(jī)連接。端口 130包括引腳和在NOC與主計(jì)算機(jī)10之間傳導(dǎo)信號(hào)所需的其它互連線,以及將消息分組從NOC分組格式轉(zhuǎn)換成主計(jì)算機(jī)10所需的總線格式的足夠智慧。在圖1中的計(jì)算機(jī)中的NOC協(xié)處理器的示例中,這樣的端口將提供NOC協(xié)處理器28的鏈路結(jié)構(gòu)與NOC協(xié)處理器28與總線適配器18之間的前端總線36所需的協(xié)議之間的數(shù)據(jù)通信格式轉(zhuǎn)換。
[0067]圖3接著圖示了更詳細(xì)地圖示在用132籠統(tǒng)圖示的N0C102中的IP塊104、存儲(chǔ)器通信控制器106、網(wǎng)絡(luò)接口控制器108和路由器110內(nèi)實(shí)現(xiàn)的組件的的功能框圖。IP塊104包括計(jì)算機(jī)處理器134和I/O功能136。在這個(gè)示例中,計(jì)算機(jī)存儲(chǔ)器用IP塊104中的一片隨機(jī)訪問(wèn)存儲(chǔ)器(“RAM”)138表示。存儲(chǔ)器如上面參考圖2所述,可以占據(jù)每個(gè)IP塊上的內(nèi)容可從NOC中的任何IP塊訪問(wèn)的幾段物理地址空間。每個(gè)IP塊中的處理器134、I/O能力136、和存儲(chǔ)器138有效地將IP塊實(shí)現(xiàn)成一般可編程微型計(jì)算機(jī)。但是,如上所述,在本發(fā)明的范圍內(nèi),IP塊一般代表作為積木用于NOC內(nèi)的數(shù)據(jù)處理的同步或異步邏輯的可重用單元。因此,將IP塊實(shí)現(xiàn)成一般可編程微型計(jì)算機(jī)盡管是可用于說(shuō)明目的的普通實(shí)施例,但不限制本發(fā)明。
[0068]在圖3的N0C102中,每個(gè)存儲(chǔ)器通信控制器106包括多個(gè)存儲(chǔ)器通信執(zhí)行引擎140。使每個(gè)存儲(chǔ)器通信執(zhí)行引擎140都能夠執(zhí)行來(lái)自IP塊104的存儲(chǔ)通信指令,包括網(wǎng)絡(luò)與IP塊104之間的雙向存儲(chǔ)器通信指令流141,142,144。存儲(chǔ)器通信控制器106執(zhí)行的存儲(chǔ)器通信指令不僅可以源自通過(guò)特定存儲(chǔ)器通信控制器適合于路由器的IP塊,而且可以源自N0C102中的任何地方的任何IP塊104。也就是說(shuō),NOC中的任何IP塊都可以生成存儲(chǔ)器通信指令,并通過(guò)NOC的路由器將那種存儲(chǔ)器通信指令發(fā)送給與另一個(gè)IP塊相聯(lián)系的另一個(gè)存儲(chǔ)器通信控制器以便執(zhí)行那種存儲(chǔ)器通信指令。這樣的存儲(chǔ)器通信指令可以包括,例如,轉(zhuǎn)換后備緩沖器控制指令、高速緩存控制指令、屏障指令、和存儲(chǔ)器裝載和存儲(chǔ)指令。
[0069]使每個(gè)存儲(chǔ)器通信執(zhí)行引擎140能夠分開(kāi)地和與其它存儲(chǔ)器通信執(zhí)行引擎并行地執(zhí)行完整存儲(chǔ)器通信指令。存儲(chǔ)器通信執(zhí)行引擎實(shí)現(xiàn)為存儲(chǔ)器通信指令的并發(fā)吞吐量?jī)?yōu)化的可增減存儲(chǔ)器事務(wù)處理器。存儲(chǔ)器通信控制器106支持所有都同時(shí)運(yùn)行的多個(gè)存儲(chǔ)器通信執(zhí)行引擎140以便同時(shí)執(zhí)行多條存儲(chǔ)器通信指令。新存儲(chǔ)器通信指令由存儲(chǔ)器通信控制器106分配給存儲(chǔ)器通信執(zhí)行引擎140,存儲(chǔ)器通信執(zhí)行引擎140可以同時(shí)接受多個(gè)響應(yīng)事件。在這個(gè)示例中,所有存儲(chǔ)器通信執(zhí)行引擎140都是相同的。因此,增減存儲(chǔ)器通信控制器106可以同時(shí)管理的存儲(chǔ)器通信指令的數(shù)量通過(guò)增減存儲(chǔ)器通信執(zhí)行引擎140的數(shù)量來(lái)實(shí)現(xiàn)。
[0070]在圖3的N0C102中,使每個(gè)網(wǎng)絡(luò)接口控制器108能夠?qū)⑼ㄐ胖噶顝拿罡袷睫D(zhuǎn)換成通過(guò)路由器110在IP塊104之間傳輸?shù)木W(wǎng)絡(luò)分組格式。通信指令可以由IP塊104或由存儲(chǔ)器通信控制器106以命令格式明確表達(dá),并以命令格式提供給網(wǎng)絡(luò)接口控制器108。該命令格式可以是與IP塊104和存儲(chǔ)器通信控制器106的架構(gòu)寄存器堆相容的本機(jī)格式。網(wǎng)絡(luò)分組格式通常是通過(guò)網(wǎng)絡(luò)的路由110傳輸所需的格式。每個(gè)這樣的消息由一個(gè)或多個(gè)網(wǎng)絡(luò)分組組成。在網(wǎng)絡(luò)接口控制器中從命令格式轉(zhuǎn)換成分組格式的這樣通信指令的示例包括IP塊與存儲(chǔ)器之間的存儲(chǔ)器裝載指令和存儲(chǔ)器存儲(chǔ)指令。這樣的通信指令還可以包括在并行應(yīng)用中和在流水線應(yīng)用中在傳送數(shù)據(jù)的IP塊之間發(fā)送消息的通信指令和在IP塊之間處理數(shù)據(jù)的指令。
[0071]在圖3的N0C102中,使每個(gè)IP塊都能夠通過(guò)IP塊的存儲(chǔ)器通信控制器向和從存儲(chǔ)器發(fā)送基于存儲(chǔ)器地址的通信物,然后通過(guò)它的網(wǎng)絡(luò)接口控制器也發(fā)送給網(wǎng)絡(luò)?;诖鎯?chǔ)器地址的通信物是由IP塊的存儲(chǔ)器通信控制器的存儲(chǔ)器通信執(zhí)行引擎執(zhí)行、像裝載指令或存儲(chǔ)指令那樣的存儲(chǔ)器訪問(wèn)指令。這樣基于存儲(chǔ)器地址的通信物通常源自IP塊,以命令格式明確表達(dá),并轉(zhuǎn)交給存儲(chǔ)器通信控制器加以執(zhí)行。
[0072]許多基于存儲(chǔ)器地址的通信物利用消息業(yè)務(wù)來(lái)進(jìn)行,因?yàn)橐L問(wèn)的某個(gè)存儲(chǔ)器可能處在物理存儲(chǔ)器地址空間中的某個(gè)地方,片上或片外,直接附在NOC中的某個(gè)存儲(chǔ)器通信控制器上,或最終通過(guò)NOC的某個(gè)IP塊訪問(wèn)一IP塊與該NOC無(wú)關(guān)地始發(fā)某個(gè)特定基于存儲(chǔ)器地址的通信物。因此,在N0C102中,將利用消息業(yè)務(wù)進(jìn)行的所有基于存儲(chǔ)器地址通信物從存儲(chǔ)器通信控制器傳遞到相關(guān)網(wǎng)絡(luò)接口控制器,以便從命令格式轉(zhuǎn)換成分組格式和在消息中通過(guò)網(wǎng)絡(luò)發(fā)送。在轉(zhuǎn)換成分組格式時(shí),網(wǎng)絡(luò)接口控制器還依賴(lài)于基于存儲(chǔ)器地址的通信物要訪問(wèn)的一個(gè)或幾個(gè)存儲(chǔ)器地址地識(shí)別分組的網(wǎng)絡(luò)地址。利用存儲(chǔ)器地址尋址基于存儲(chǔ)器地址的消息。每個(gè)存儲(chǔ)器地址由網(wǎng)絡(luò)接口控制器映射成網(wǎng)絡(luò)地址,通常,負(fù)責(zé)某個(gè)范圍物理存儲(chǔ)器地址的存儲(chǔ)器通信控制器的網(wǎng)絡(luò)地點(diǎn)。存儲(chǔ)器通信控制器106的網(wǎng)絡(luò)地點(diǎn)自然也是存儲(chǔ)器通信控制器的相關(guān)路由器110、網(wǎng)絡(luò)接口控制器108、IP塊104的網(wǎng)絡(luò)地點(diǎn)。每個(gè)網(wǎng)絡(luò)接口控制器內(nèi)的指令轉(zhuǎn)換邏輯150能夠?yàn)榱送ㄟ^(guò)NOC發(fā)送基于存儲(chǔ)器地址通信物的目的將存儲(chǔ)器地址轉(zhuǎn)換成網(wǎng)絡(luò)地址。
[0073]一旦從網(wǎng)絡(luò)的路由器110接收到消息業(yè)務(wù),每個(gè)網(wǎng)絡(luò)接口控制器108就檢查每個(gè)分組是否有存儲(chǔ)器指令。將包含存儲(chǔ)器指令的每個(gè)分組交給與正在接收網(wǎng)絡(luò)接口控制器相聯(lián)系的存儲(chǔ)器通信控制器106,存儲(chǔ)器通信控制器106在將分組的其余有效負(fù)載發(fā)送給IP塊作進(jìn)一步處理之前執(zhí)行存儲(chǔ)器指令。這樣,在IP塊開(kāi)始執(zhí)行依賴(lài)于特定存儲(chǔ)器內(nèi)容的來(lái)自消息的指令之前,總是準(zhǔn)備好存儲(chǔ)器內(nèi)容來(lái)支持IP塊的數(shù)據(jù)處理。
[0074]在圖3的N0C102中,使每個(gè)IP塊104能夠繞過(guò)它的存儲(chǔ)器通信控制器106,通過(guò)IP塊的網(wǎng)絡(luò)接口控制器直接將IP塊間的網(wǎng)絡(luò)尋址通信物146發(fā)送給網(wǎng)絡(luò)。網(wǎng)絡(luò)尋址通信物是通過(guò)網(wǎng)絡(luò)地址指向另一個(gè)IF塊的消息。如本領(lǐng)域的普通技術(shù)人員所想到,這樣的消息在流水線應(yīng)用中發(fā)送工作數(shù)據(jù),在SMD應(yīng)用中在IP塊之間發(fā)送用于單程序處理的多個(gè)數(shù)據(jù)等等。這樣的消息與基于存儲(chǔ)器地址通信物的不同之處在于它們一開(kāi)始就被始發(fā)IP塊網(wǎng)絡(luò)尋址的,該始發(fā)IP塊知道通過(guò)NOC的路由器將消息引向的網(wǎng)絡(luò)地址。這樣的網(wǎng)絡(luò)尋址通信物由IP塊通過(guò)I/O功能136以命令格式直接傳遞給IP塊的網(wǎng)絡(luò)接口控制器,然后由網(wǎng)絡(luò)接口控制器轉(zhuǎn)換成分組格式,并通過(guò)NOC的路由器發(fā)送給另一個(gè)IP塊。這樣的網(wǎng)絡(luò)尋址通信物146是雙向的,依賴(lài)于它們?cè)谀硞€(gè)特定應(yīng)用中的使用,潛在地轉(zhuǎn)給NOC的每個(gè)IP塊和從NOC的每個(gè)IP塊轉(zhuǎn)出。但是,使每個(gè)網(wǎng)絡(luò)接口控制器都能夠向和從相關(guān)路由器發(fā)送和接收這樣的通信物,以及使每個(gè)網(wǎng)絡(luò)接口控制器都能夠繞過(guò)相關(guān)存儲(chǔ)器通信控制器106地直接向和從相關(guān)IP塊發(fā)送和接收這樣的通信物。
[0075]還使圖3的示例中的每個(gè)網(wǎng)絡(luò)接口控制器108都能夠在網(wǎng)絡(luò)上實(shí)現(xiàn)通過(guò)類(lèi)型表征網(wǎng)絡(luò)分組的虛擬通道。每個(gè)網(wǎng)絡(luò)接口控制器108包括按類(lèi)型分類(lèi)每條通信指令,以及在以分組形式將指令轉(zhuǎn)交給路由器110以便在NOC上發(fā)送之前將指令的類(lèi)型記錄在網(wǎng)絡(luò)分組格式的字段中的虛擬通道實(shí)現(xiàn)邏輯148。通信指令類(lèi)型的示例包括引向高速緩存的IP塊間基于網(wǎng)絡(luò)地址消息、請(qǐng)求消息、對(duì)請(qǐng)求消息的響應(yīng)、失效消息;存儲(chǔ)器裝載和存儲(chǔ)消息;以及對(duì)存儲(chǔ)器裝載消息的響應(yīng)等。
[0076]圖3的示例中的每個(gè)路由器110包括路由邏輯152、虛擬通道控制邏輯154、和虛擬通道緩沖器156。路由邏輯152通常被實(shí)現(xiàn)成為由路由器110、鏈路118、和路由器之間的總線導(dǎo)線形成的網(wǎng)絡(luò)中的數(shù)據(jù)通信實(shí)現(xiàn)數(shù)據(jù)通信協(xié)議棧的同步和異步邏輯的網(wǎng)絡(luò)。路由邏輯152包括本領(lǐng)域的普通技術(shù)人員可以將片外網(wǎng)絡(luò)與路由表相聯(lián)系的功能、在至少一些實(shí)施例中路由表被認(rèn)為太慢了,不方便用在NOC中。實(shí)現(xiàn)成同步和異步邏輯的網(wǎng)絡(luò)的路由邏輯可以配置成與單個(gè)時(shí)鐘周期一樣快地作出路由決定。本例中的路由邏輯通過(guò)為轉(zhuǎn)發(fā)在路由器中接收的每個(gè)分組選擇一個(gè)端口來(lái)傳送分組。每個(gè)分組包含分組要去往的網(wǎng)絡(luò)地址。
[0077]在上面描述基于存儲(chǔ)器地址通信物中,每個(gè)存儲(chǔ)器地址被描述成由網(wǎng)絡(luò)接口控制器映射到網(wǎng)絡(luò)地址,即,存儲(chǔ)器通信控制器的網(wǎng)絡(luò)地點(diǎn)。存儲(chǔ)器通信控制器106的網(wǎng)絡(luò)地點(diǎn)自然也是那個(gè)存儲(chǔ)器通信控制器的相關(guān)路由器110、網(wǎng)絡(luò)接口控制器108、和IP塊104的網(wǎng)絡(luò)地點(diǎn)。因此,在IP塊間,或基于網(wǎng)絡(luò)地址的通信物中,應(yīng)用級(jí)數(shù)據(jù)處理通常也將網(wǎng)絡(luò)地址視作由NOC的路由器、鏈路、和總線導(dǎo)線形成的網(wǎng)絡(luò)內(nèi)IP塊的地點(diǎn)。圖2圖示了這樣網(wǎng)絡(luò)的一種組織是行和列的網(wǎng)格,其中每個(gè)網(wǎng)絡(luò)地點(diǎn)可以實(shí)現(xiàn)成,例如,網(wǎng)格的每組相關(guān)路由器、IP塊、存儲(chǔ)器通信控制器、和網(wǎng)絡(luò)接口控制器的唯一標(biāo)識(shí)符或網(wǎng)格中每個(gè)這樣組的X,I坐標(biāo)。OOOO
[0078]在圖3的N0C102中,每個(gè)路由器110實(shí)現(xiàn)兩個(gè)或更多個(gè)虛擬通信通道,其中每個(gè)虛擬通信通道通過(guò)通信類(lèi)型來(lái)表征。通信指令類(lèi)型,因此虛擬通道類(lèi)型包括上述的那些消息:引向高速緩存的IP塊間基于網(wǎng)絡(luò)地址消息、請(qǐng)求消息、對(duì)請(qǐng)求消息的響應(yīng)、失效消息;存儲(chǔ)器裝載和存儲(chǔ)消息;以及對(duì)存儲(chǔ)器裝載消息的響應(yīng)等。為了支持虛擬通道,圖3的示例中的每個(gè)路由器110還包括虛擬通道控制邏輯154和虛擬通道緩沖器156。虛擬通道控制邏輯154檢查每個(gè)接收的分組是否具有其指定的通信類(lèi)型,并將每個(gè)分組放入那種通信類(lèi)型的輸出虛擬通道緩沖器中,以便通過(guò)端口發(fā)送給NOC上的相鄰路由器。
[0079]每個(gè)虛擬通道緩沖器156具有有限存儲(chǔ)空間。當(dāng)在較短時(shí)段內(nèi)接收到許多分組時(shí),可以填滿虛擬通道緩沖器一使得再也不能將分組放入緩沖器中。在其它協(xié)議下,到達(dá)緩沖器充滿的虛擬通道的分組將被丟棄。但是,利用總線導(dǎo)線的控制信號(hào)使本例中的每個(gè)虛擬通道緩沖器156能夠通過(guò)虛擬通道控制邏輯勸告周?chē)酚善鲿和T谔摂M通道中的發(fā)送,即,暫停特定通信類(lèi)型的分組的發(fā)送。當(dāng)如此暫停一個(gè)虛擬通道時(shí),所有其它虛擬通道不受影響一可以繼續(xù)滿負(fù)荷運(yùn)行??刂菩盘?hào)一直通過(guò)每個(gè)路由器有線傳回到每個(gè)路由器的相關(guān)網(wǎng)絡(luò)接口控制器108。每個(gè)網(wǎng)絡(luò)接口控制器被配置成一旦接收到這樣的信號(hào),就拒絕從它的相關(guān)存儲(chǔ)器通信控制器106或從它的相關(guān)IP塊104接收暫停虛擬通道的通信指令。這樣,虛擬通道的暫停影響一直回溯到始發(fā)IP塊、實(shí)現(xiàn)該虛擬通道的所有硬件。
[0080]暫停虛擬通道中的分組發(fā)送的一種效果是再也不會(huì)丟棄分組。當(dāng)路由器遇到在像,例如,互聯(lián)網(wǎng)協(xié)議那樣的一些不可靠協(xié)議中可能丟棄分組的狀況時(shí),圖3的示例中的路由器可以通過(guò)它們的虛擬通道緩沖器156和它們的虛擬通道控制邏輯154暫停虛擬通道中的所有分組發(fā)送,直到緩沖空間再次可用,從而沒(méi)有任何必要丟棄分組。因此,圖3的NOC可以利用極薄一層硬件來(lái)實(shí)現(xiàn)高度可靠的網(wǎng)絡(luò)通信協(xié)議。
[0081]圖3的示范性NOC還可以配置成保持片上和片外存儲(chǔ)器高速緩存兩者之間的高速緩存一致性。每個(gè)NOC可以支持每一個(gè)可以針對(duì)相同底層存儲(chǔ)器地址空間操作的多個(gè)高速緩存。例如,高速緩存可以由IP塊,由存儲(chǔ)器通信控制器,或由NOC外部的高速緩存控制器來(lái)控制。圖2的示例中的片上存儲(chǔ)器通信控制器114,116的任一個(gè)也可以實(shí)現(xiàn)成片上高速緩存,以及在本發(fā)明的范圍內(nèi),高速緩沖存儲(chǔ)器也可以片外實(shí)現(xiàn)。
[0082]圖示在圖3中的每個(gè)路由器110包括五個(gè)端口,即,通過(guò)總線導(dǎo)線118與其它路由器連接的四個(gè)端口 158A-D、和通過(guò)網(wǎng)絡(luò)接口控制器108和存儲(chǔ)器通信控制器106將每個(gè)路由器與它的相關(guān)IP塊104連接的第五端口 160??梢詮膱D2和3中的圖示中看出,N0C102的路由器110和鏈路118形成垂直和水平鏈路連接每個(gè)路由器中的垂直和水平端口的網(wǎng)狀網(wǎng)絡(luò)。在圖3的圖示中,例如,端口 158A,158B,和160被稱(chēng)為垂直端口,端口 158B和158D被稱(chēng)為水平端口。
[0083]圖4接著以另一種方式圖示了實(shí)現(xiàn)成劃分成發(fā)出或指令單元(IU) 162、執(zhí)行單元(XU) 164和輔助執(zhí)行單元(AXU) 166的處理單元、依照本發(fā)明的IP塊104的一種示范性實(shí)現(xiàn)。在圖示的實(shí)現(xiàn)中,IU162包括從LI指令高速緩存(iCHCHE) 170接收指令的多個(gè)指令緩沖器168。每個(gè)指令緩沖器168專(zhuān)用于多個(gè),例如,四個(gè)對(duì)稱(chēng)多線程(SMT)硬件線程之一。有效到真實(shí)地址轉(zhuǎn)換單元(iERAT)172與iCHCHE170耦合,用于將來(lái)自多個(gè)線程取出定序器174的指令取出請(qǐng)求轉(zhuǎn)換成從較低級(jí)存儲(chǔ)器中檢索指令的真實(shí)地址。每個(gè)線程取出定序器174專(zhuān)用于特定硬件線程,用于保證相關(guān)線程要執(zhí)行的指令被取到iCHCHE中以便分派給合適執(zhí)行單元。也如圖4所示,取到指令緩沖器168中的指令也可以通過(guò)分支預(yù)測(cè)邏輯176監(jiān)視,分支預(yù)測(cè)邏輯176向每個(gè)線程取出定序器174提供提示,以便使執(zhí)行線程時(shí)分支引起的指令高速緩存丟失最少。
[0084]IU162還包括專(zhuān)用于每個(gè)硬件線程、和配置成解決依賴(lài)性問(wèn)題和控制指令從指令緩沖器168到XU164的發(fā)出的依賴(lài)性/發(fā)出邏輯塊178。另外,在圖示的實(shí)施例中,在AXU166中配備了單獨(dú)依賴(lài)性/發(fā)出邏輯180,因此能夠分開(kāi)不同線程同時(shí)發(fā)給XU164和AXU166的指令。在一個(gè)可替代實(shí)施例中,可以將邏輯180布置在IU162中,或可以完全省略邏輯180,以便使邏輯178將指令發(fā)給AXU166。
[0085]XU164被實(shí)現(xiàn)成定點(diǎn)執(zhí)行單元,包括與定點(diǎn)邏輯184、分支邏輯186和/裝載/存儲(chǔ)邏輯188耦合的一組通用寄存器(GPR) 182。裝載/存儲(chǔ)邏輯188與LI數(shù)據(jù)高速緩存(dCACHE) 190耦合,由dERAT邏輯192提供有效到真實(shí)地址轉(zhuǎn)換。XU164可以配置成實(shí)現(xiàn)幾乎任何指令集,例如,32b或64bPowerPC指令集的全部或一部分。
[0086]AXU166起包括專(zhuān)用依賴(lài)性/發(fā)出邏輯180以及一個(gè)或多個(gè)執(zhí)行塊192的輔助執(zhí)行單元的作用。AXU166可以包括任何數(shù)量的執(zhí)行塊,以及可以實(shí)現(xiàn)幾乎任何類(lèi)型的執(zhí)行單元,例如,浮點(diǎn)單元、或像加密/解密單元、協(xié)處理器、矢量處理單元、圖形處理單元、XML處理單元等那樣的一個(gè)或多個(gè)專(zhuān)門(mén)執(zhí)行單元。在圖示的實(shí)施例中,AXU166包括與XU164的高速輔助接口,例如,以便支持AXU架構(gòu)狀態(tài)與XU架構(gòu)狀態(tài)之間的直接移動(dòng)。
[0087]與IP塊104的通信可以經(jīng)由與N0C102耦合的網(wǎng)絡(luò)接口控制器108,以上面結(jié)合圖2所討論的方式管理。例如,訪問(wèn)L2高速緩沖存儲(chǔ)器的基于地址通信可以與基于消息通信一起提供。例如,每個(gè)IP塊104可以包括專(zhuān)用輸入盒和/或輸出盒,以便管理IP塊之間的節(jié)點(diǎn)間通信。
[0088]本發(fā)明的實(shí)施例可以在上面結(jié)合圖1-4所述的硬件和軟件環(huán)境內(nèi)實(shí)現(xiàn)。但是,從本公開(kāi)中受益的本領(lǐng)域的普通技術(shù)人員應(yīng)該懂得,本發(fā)明可以在眾多不同環(huán)境中實(shí)現(xiàn),以及可以不偏離本發(fā)明的精神和范圍地對(duì)上述的硬件和軟件實(shí)施例作出其它修改。這樣,本發(fā)明不局限于本文公開(kāi)的特定硬件和軟件環(huán)境。
[0089]低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)
[0090]通過(guò)加強(qiáng)硬件線程實(shí)現(xiàn)更高單線程代碼執(zhí)行性能一旦是吞吐量計(jì)算中的目標(biāo)。達(dá)到這個(gè)目標(biāo)的一個(gè)編譯器選項(xiàng)是將單線程代碼分解成許多小代碼段,并在多個(gè)硬件線程上并行地執(zhí)行它們。例如,如圖5所圖示,單線程代碼200可以潛在地分解成表示成A-D多個(gè)較小代碼段,并如202,204,206和208所圖示,分別在多個(gè)線程T0-T3上執(zhí)行。
[0091]但是,將單線程代碼分解成多個(gè)片段往往導(dǎo)致硬件線程之間的緊密相互依賴(lài)性,導(dǎo)致線程在等待要完成的其它線程的結(jié)果的時(shí)候被延遲或推遲。例如,在依照本發(fā)明的一些實(shí)施例中,由編譯器將放置和取得指令插入相關(guān)代碼段中,以便在運(yùn)行在不同線程中的代碼段之間轉(zhuǎn)移本文稱(chēng)為變量的數(shù)據(jù)。例如,圖5圖示了將存儲(chǔ)在Rl中的數(shù)值指定給變量X的運(yùn)行在線程TO中的代碼段A中的放置指令、和檢索變量X并將那個(gè)變量的內(nèi)容存儲(chǔ)在寄存器R72中的運(yùn)行在線程T2中的代碼段C中的取得指令。
[0092]可以通過(guò)一個(gè)線程將數(shù)據(jù)存儲(chǔ)在變量中然后通過(guò)另一個(gè)線程檢索的速度可以對(duì)系統(tǒng)性能產(chǎn)生重大影響,相對(duì)較高延遲數(shù)據(jù)轉(zhuǎn)移必然降低任何并行化的有效性,因?yàn)榫€程更頻繁地延遲來(lái)等待從其它線程到達(dá)的變量。
[0093]這樣,依照本發(fā)明的實(shí)施例通過(guò)在硬件線程之間提供本文稱(chēng)為低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)的低延遲寄存器轉(zhuǎn)移機(jī)構(gòu),以便在多線程處理環(huán)境中在布置在一個(gè)或多個(gè)處理核心中的線程之間傳送變量,促進(jìn)了細(xì)粒度并行技術(shù)。除了其它好處之外,依照本發(fā)明的實(shí)施例可以使單處理線程擴(kuò)散成執(zhí)行的多個(gè)線程,以及從單線程代碼當(dāng)中提取更高性能。
[0094]在下面更詳細(xì)討論的實(shí)施例中,多線程處理環(huán)境支持允許在硬件線程之間低延遲變量轉(zhuǎn)移的指令集架構(gòu)中的一組指令。在一個(gè)實(shí)施例中,一群擴(kuò)充寄存器堆項(xiàng)目用作用于接收從其它硬件線程發(fā)送的變量的FIFO的頭部。每個(gè)FIFO可以小至一個(gè)項(xiàng)目,或根據(jù)系統(tǒng)要求,可以包括眾多項(xiàng)目。依賴(lài)于這些寄存器的指令然后可以利用現(xiàn)有依賴(lài)性檢驗(yàn)硬件來(lái)實(shí)現(xiàn)流水線級(jí)延遲,直到輸入寄存器可用。因此,相關(guān)指令在指令發(fā)出隊(duì)列中等待,直到源操作數(shù)可用。一旦從發(fā)送硬件線程接收到,輸入寄存器就變得可用,最好使用信用方案來(lái)管理FIFO,以便當(dāng)存在可用時(shí)隙時(shí),沒(méi)有延遲地發(fā)送寄存器值。在目的地硬件線程上,將寄存器值移動(dòng)到架構(gòu)寄存器,清除FIFO寄存器的頭部,并馬上將信用返回給發(fā)送硬件線程以便實(shí)現(xiàn)下一次轉(zhuǎn)移。
[0095]在不同實(shí)施例中,擴(kuò)充寄存器項(xiàng)目可以包括在允許在硬件線程之間轉(zhuǎn)移多達(dá)全部矢量寄存器變量的定點(diǎn)、浮點(diǎn)和/或矢量寄存器堆內(nèi)。但是,在其它實(shí)施例中,F(xiàn)IFO寄存器可以與任何寄存器堆分開(kāi)實(shí)現(xiàn),因此本發(fā)明不受此限制。
[0096]例如,圖6圖示了可以以依照本發(fā)明的方式實(shí)現(xiàn)低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)的多線程處理環(huán)境,即,數(shù)據(jù)處理系統(tǒng)210的示范性實(shí)現(xiàn)。數(shù)據(jù)處理系統(tǒng)210被實(shí)現(xiàn)成包括四個(gè)處理核心(也表示成核心A-D),每個(gè)處理核心包括通過(guò)低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)218耦合的四個(gè)硬件線程214(也表示成線程T0-T3)、和線程214共享的公用寄存器堆216。因此,在四個(gè)核心212當(dāng)中總共支持16個(gè)線程。
[0097]處理核心212通常布置在像多核心處理器芯片或SOC設(shè)備那樣的公用集成電路設(shè)備上,應(yīng)當(dāng)懂得,該核心通常經(jīng)由其它通信總線和/或網(wǎng)絡(luò)(例如,在NOC安排中)相互耦合,共享芯片上的其它組件。但是,為了簡(jiǎn)化本發(fā)明的討論,從圖6中省略了這些另外通信總線、網(wǎng)絡(luò)和組件。
[0098]為了在數(shù)據(jù)處理系統(tǒng)210中實(shí)現(xiàn)低延遲變量轉(zhuǎn)移網(wǎng)絡(luò),每個(gè)處理核心包括實(shí)現(xiàn)成寄存器堆216中的擴(kuò)充寄存器的多個(gè)變量寄存器220,以及變量轉(zhuǎn)移網(wǎng)絡(luò)控制邏輯222將這些變量寄存器220與變量轉(zhuǎn)移網(wǎng)絡(luò)218交接。例如,如圖7所圖示,寄存器堆216可以包括劃分成四個(gè)線程特定群的128個(gè)本地寄存器R0-R127,以便對(duì)每個(gè)線程T0-T3分配32個(gè)本地寄存器。另外,可以將寄存器堆216擴(kuò)充成帶有也表示成VR0-VR15的多個(gè)變量寄存器220,將一個(gè)變量寄存器分配或指定給數(shù)據(jù)處理系統(tǒng)中的每個(gè)單獨(dú)線程。
[0099]另外,為了協(xié)調(diào)硬件線程之間的變量轉(zhuǎn)移的目的,每個(gè)變量寄存器含有相關(guān)信用標(biāo)志224和有效標(biāo)志226。信用標(biāo)志224用在基于信用的協(xié)議中,以便只有當(dāng)源線程具有可用信用時(shí),才允許源線程將新變量傳送給目的地線程,而有效標(biāo)志226由源線程用于指示已經(jīng)將有效數(shù)據(jù)寫(xiě)入變量寄存器中。響應(yīng)目的地線程讀取變量并將信用發(fā)回給源線程,消除有效標(biāo)志226。
[0100]實(shí)現(xiàn)變量轉(zhuǎn)移網(wǎng)絡(luò)的方式在不同實(shí)施例中可能不同。例如,如圖8所圖示,變量轉(zhuǎn)移網(wǎng)絡(luò)可以通過(guò)為每個(gè)核心212提供到每個(gè)其它核心212的單獨(dú)專(zhuān)用發(fā)送總線230來(lái)實(shí)現(xiàn)。尤其,圖8圖示了可以實(shí)現(xiàn)成使核心A能夠?qū)⒆兞堪l(fā)送給核心B,C和D的每一個(gè)的三條專(zhuān)用發(fā)送總線230。應(yīng)當(dāng)懂得,每個(gè)其它核心B,C和D可以配有它自己的專(zhuān)用發(fā)送總線,從而總共提供12條發(fā)送總線,每個(gè)核心對(duì)兩條。
[0101]每條發(fā)送總線230主要由發(fā)送核心中的變量轉(zhuǎn)移網(wǎng)絡(luò)控制邏輯222驅(qū)動(dòng),并在內(nèi)部核心總線232上與變量寄存器220耦合。為了簡(jiǎn)化圖8,只將從核心A到核心C的發(fā)送總線分解成它的各自信號(hào)路徑,但應(yīng)當(dāng)懂得,從核心A到核心B和從核心A到核心C的發(fā)送總線也以相似方式構(gòu)成。
[0102]在這個(gè)實(shí)施例中,包括變量寄存器220的寄存器堆216中的寄存器64位寬,這樣,在每條發(fā)送總線230中配備一組64條數(shù)據(jù)線,以便在相同時(shí)鐘周期中傳送變量寄存器的內(nèi)容。與在數(shù)據(jù)線上傳送變量一致,維持I位有效信號(hào),以及2-位線程標(biāo)識(shí)符(ThreadID)。單位返回線用于當(dāng)目的地線程已經(jīng)讀取了變量時(shí)使信用從目的地核心返回到源核心。這樣,每條發(fā)送總線230用68條信號(hào)路徑來(lái)實(shí)現(xiàn),信用線由目的地核心驅(qū)動(dòng),所有其它線由源核心驅(qū)動(dòng)。
[0103]圖9圖示了發(fā)送總線230上的典型變量傳輸?shù)臅r(shí)序圖,從而每當(dāng)為特定目的地線程將變量寫(xiě)入變量寄存器中時(shí),設(shè)置變量寄存器的有效標(biāo)志,并在與目的地線程駐留的處理核心耦合的發(fā)送總線上維持?jǐn)?shù)據(jù)(時(shí)間A)。另外,在ThreadID線上維持目的地線程(T0-T3)的標(biāo)識(shí)符,因此可以將數(shù)據(jù)傳送到目的地處理核心中的適當(dāng)變量寄存器。如下面更詳細(xì)討論,在目的地核心中將數(shù)據(jù)存儲(chǔ)在變量寄存器中并設(shè)置變量寄存器中的有效標(biāo)志。
[0104]此后某時(shí)(時(shí)間B),目的地處理核心中的目的地線程讀取變量寄存器,清除目的地核心變量寄存器中的有效標(biāo)志并使信用返回到發(fā)送處理核心,使發(fā)送處理核心清除發(fā)送處理核心中的變量寄存器中的有效位。
[0105]還要懂得的是,變量轉(zhuǎn)移網(wǎng)絡(luò)在一些實(shí)施例中還可以配置成允許利用與用于不同處理核心之間的通信相同的協(xié)議在相同處理核心上的線程之間進(jìn)行變量的線程間通信,或在一些實(shí)施例中,如果需要的話,甚至允許線程將變量發(fā)送給自己。
[0106]使用從每個(gè)處理核心到每個(gè)其它處理核心的單獨(dú)發(fā)送總線可以實(shí)現(xiàn)線程之間的沖突機(jī)會(huì)最小的極低延遲操作。例如,圖10圖示了不是將單獨(dú)發(fā)送總線用于每個(gè)處理核心,而是為每個(gè)處理核心212到其它三個(gè)處理核心配備單條發(fā)送總線232'的可替代實(shí)現(xiàn)。因此,雖然圖10只圖示了核心A的單條發(fā)送總線232',但應(yīng)當(dāng)懂得,核心B-D的每一個(gè)包括它自己的發(fā)送總線232',總共四條總線。發(fā)送總線232'可以與發(fā)送總線232類(lèi)似地配置,但為變量添加了編碼目的地核心的兩條CoreID線,以便所有三個(gè)處理核心窺探在發(fā)送總線232上傳送的每個(gè)變量,但只有具有目的地線程的處理核心按協(xié)議參與。關(guān)于這一點(diǎn),四條CoreID和ThreadID線集體標(biāo)識(shí)16個(gè)硬件線程之一。
[0107]在本發(fā)明的其它實(shí)施例中可以使用其它網(wǎng)絡(luò)通信。例如,在一些實(shí)現(xiàn)中可能希望并入一個(gè)或多個(gè)緩沖器,例如,緩沖器234,因?yàn)閷?duì)于處理核心之間的較長(zhǎng)互連可能是有必要的,以考慮到信號(hào)傳播延遲。不過(guò),對(duì)于本文公開(kāi)的協(xié)議,異步地管理變量的發(fā)送和接收,因此添加一個(gè)或多個(gè)緩沖器雖然增加了傳輸?shù)难舆t,但仍然不會(huì)影響傳輸協(xié)議。另外,應(yīng)當(dāng)懂得,相同處理核心中的線程之間的線程間變量傳輸由于與核心之間的通信所需的長(zhǎng)度相t匕,核心內(nèi)的信號(hào)路徑的長(zhǎng)度要短得多,所以可能利用不依靠核心間傳輸可能需要的協(xié)議的優(yōu)化協(xié)議。此外,在一些實(shí)現(xiàn)中,每個(gè)線程可能含有到加入變量轉(zhuǎn)移網(wǎng)絡(luò)中的每個(gè)其它唯一線程的專(zhuān)用發(fā)送總線,這使得一概不需要CoreID和ThreadID線。
[0108]在一些實(shí)施例中可能希望利用較窄總線,以便減少變量轉(zhuǎn)移網(wǎng)絡(luò)中的信號(hào)路徑的數(shù)量。例如,對(duì)于64位變量,可以將變量分解成在2,4或8個(gè)周期內(nèi)傳送的32位,16位或8位碎片。可替代地,可以使用串行傳輸協(xié)議。在這些變種的每一種中,需要較少的信號(hào)路徑,但以增加延遲為代價(jià),這在希望延遲最小以便使性能最高的應(yīng)用中可以不是所希望的。
[0109]圖11和12接著圖示了可以利用依照本發(fā)明的低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)的示范性放置和取得指令。放置指令(由源線程執(zhí)行將存儲(chǔ)在本地寄存器Rx中的數(shù)值發(fā)送給用于目的地線程I的變量寄存器VRy的put VRy, Rx)如圖11中的250所圖示,通過(guò)首先在方框252中檢驗(yàn)用于目的地線程y的變量寄存器VRy中的信用標(biāo)志,以確定信用是否可用于寄存器來(lái)管理。如果不可用,則源線程使用傳統(tǒng)依賴(lài)性邏輯延遲直到信用變得可用。
[0110]但是,如果信用可用,則將控制傳遞給方框254,為目的地線程駐留的核心選擇發(fā)送總線,然后傳遞給方框256以便將寄存器Rx的內(nèi)容移動(dòng)到發(fā)送總線,在數(shù)據(jù)線上維持存儲(chǔ)在寄存器Rx中的數(shù)值,在發(fā)送總線上維持有效線,以及在發(fā)送總線的ThreadID線上維持目的地核心內(nèi)的目的地線程的標(biāo)識(shí)符。一旦這個(gè)數(shù)據(jù)維持在發(fā)送總線上,發(fā)送線程接著就自由地著手執(zhí)打指令流中的隨后指令。
[0111]取得指令(由目的地線程執(zhí)行將存儲(chǔ)在源線程y的變量寄存器中的變量移動(dòng)到本地寄存器Rx的get Rx, VRy)如圖12中的260所圖示,通過(guò)首先在方框262中檢驗(yàn)變量寄存器VRy中的有效標(biāo)志,以確定在變量寄存器中是否存儲(chǔ)著有效數(shù)據(jù)來(lái)管理。如果不是,則目的地線程使用傳統(tǒng)依賴(lài)性邏輯延遲直到在變量寄存器中指示有效數(shù)據(jù)。
[0112]但是,如果在變量寄存器中存儲(chǔ)著有效數(shù)據(jù),則將控制傳遞給方框264,以便清除變量寄存器中的有效標(biāo)志,然后傳遞給方框266,以便為源線程駐留的核心選擇發(fā)送總線。接著,在方框268中在發(fā)送總線上將信用返回,以便通知源核心已經(jīng)讀取了變量。一旦信用維持在發(fā)送總線上,目的地線程接著就自由地著手執(zhí)行指令流中的隨后指令。
[0113]應(yīng)當(dāng)懂得,對(duì)于圖示在圖11-12中的放置和取得指令,變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成使源線程中的放置指令移動(dòng)到與目的地線程相聯(lián)系的變量寄存器,但在與源線程相聯(lián)系的變量寄存器中向目的地線程展示數(shù)據(jù),以便目的地線程中的取得指令從與源線程相聯(lián)系的變量寄存器移動(dòng),而不是它自身。
[0114]因此,例如,如果希望使用運(yùn)行在一個(gè)處理核心上的線程O(píng)將存儲(chǔ)在那個(gè)處理核心上的本地寄存器Rl中的數(shù)據(jù)移動(dòng)到另一個(gè)處理核心上的本地寄存器R29供那個(gè)其它處理核心上的線程I (籠統(tǒng)標(biāo)識(shí)成線程13)訪問(wèn),由線程O(píng)通常進(jìn)行“put VR13, R1”操作,以便將其本地寄存器Rl的內(nèi)容移動(dòng)到用于線程13的變量寄存器VR13。其它處理核心上的線程13然后通常進(jìn)行“get R29, VRO”操作,以便將用于線程O(píng)的變量寄存器VRO的內(nèi)容移動(dòng)到其本地寄存器R29。
[0115]在圖示的實(shí)施例中,放置和取得指令通常通過(guò)優(yōu)化編譯器,例如,在應(yīng)用程序的開(kāi)發(fā)和編譯期間并入應(yīng)用程序的一個(gè)或多個(gè)指令流中。如上所述,這些指令可以結(jié)合將單線程代碼并行化成多個(gè)虛擬線程來(lái)使用。應(yīng)當(dāng)懂得,在編譯期間,通常希望編譯器每當(dāng)可以使延遲最小時(shí),使在相同處理核心上的彼此之間頻繁傳遞變量的虛線線程共處。而且,如果在不同處理核心之間延遲不變,例如,由于將緩沖器插入變量轉(zhuǎn)移網(wǎng)絡(luò)中來(lái)管理相同處理器芯片上彼此遠(yuǎn)離的核心之間的較長(zhǎng)路徑,或當(dāng)將一些處理核心布置在不同芯片上時(shí),當(dāng)將虛擬線程指定給處理核心時(shí),編譯器可能對(duì)此加以考慮。
[0116]還要懂得,依照本發(fā)明的變量轉(zhuǎn)移網(wǎng)絡(luò)無(wú)需結(jié)合編譯器線程虛擬化來(lái)使用,可以在需要低延遲線程間通信的其它應(yīng)用中找到用武之地。
[0117]如上所述,圖示性實(shí)施例中的每個(gè)變量寄存器起項(xiàng)目陣列或FIFO數(shù)據(jù)結(jié)構(gòu)的頭部的作用,非常像其相關(guān)硬件線程的輸入盒。但是,要懂得的是,變量寄存器可以使用多項(xiàng)目隊(duì)列或FIFO來(lái)實(shí)現(xiàn),基于信用的協(xié)議可以將多個(gè)信用頒發(fā)給源線程,以便允許緩存多個(gè)變量供目的地線程隨后消費(fèi)。
[0118]另外,圖示性實(shí)施例中的每個(gè)變量寄存器可以與寄存器堆中的其它寄存器大致相同的方式訪問(wèn),并與每個(gè)處理核心的現(xiàn)有依賴(lài)性邏輯耦合,以便可以平衡現(xiàn)有依賴(lài)性邏輯以使指令間延遲同步的相同方式使訪問(wèn)變量寄存器同步。
[0119]要懂得的是,在各種實(shí)施例中,可以將變量寄存器并入不同寄存器堆中和供不同執(zhí)行單元使用,例如,以便只為定點(diǎn)執(zhí)行單元、浮點(diǎn)執(zhí)行單元、標(biāo)量執(zhí)行單元、矢量執(zhí)行單元和/或它們的各種組合實(shí)現(xiàn)低延遲變量轉(zhuǎn)移網(wǎng)絡(luò)。
[0120]而且,盡管圖示性實(shí)施例公開(kāi)了 16個(gè)線程在四個(gè)處理核心之間以四個(gè)為一群分配的處理器芯片,但要懂得的是,本發(fā)明可以結(jié)合任何數(shù)量的線程和任何數(shù)量的處理核心來(lái)使用。另外,要懂得的是,其它同步、排隊(duì)和/或握手協(xié)議可以作為替代例用于本文公開(kāi)的基于信用單項(xiàng)目隊(duì)列協(xié)議,以及除了本文公開(kāi)的那些之外,可以使用其它網(wǎng)絡(luò)布局。因此,本發(fā)明不局限于本文公開(kāi)的特定實(shí)現(xiàn)細(xì)節(jié)。
[0121]另外,要懂得的是,雖然對(duì)于加入變量轉(zhuǎn)移網(wǎng)絡(luò)中的每個(gè)硬件線程,變量寄存器完全架構(gòu)在每個(gè)核心中,但依照本發(fā)明的實(shí)施例無(wú)需為每個(gè)核心內(nèi)的每個(gè)寄存器實(shí)現(xiàn)完全邏輯電路。例如,在一些實(shí)施例中,在將變量傳遞給寄存器堆中的本地寄存器之前,可以使用起共享輸入盒/輸出盒作用的共享緩沖器來(lái)臨時(shí)存儲(chǔ)變量,從而避免了為每個(gè)核心中的每個(gè)變量寄存器分配存儲(chǔ)體的需要。此外,可能希望允許線程將數(shù)據(jù)發(fā)送給它們分配的變量寄存器。這樣做的話,將有效地向每個(gè)線程提供它自己的暫時(shí)寄存器。另外,在一些實(shí)施例中可能希望為給定核心內(nèi)的本地線程省略變量寄存器,或在一些實(shí)現(xiàn)中省略有效或信用指示符。在一些實(shí)施例中還可能希望在不同數(shù)據(jù)結(jié)構(gòu)中而不是直接在變量寄存器內(nèi)實(shí)現(xiàn)信用和/或有效指示符。另外,在一些實(shí)施例中,可能每個(gè)處理核心中只有一個(gè)小組的線程支持變量轉(zhuǎn)移網(wǎng)絡(luò),這可能使實(shí)現(xiàn)變量轉(zhuǎn)移網(wǎng)絡(luò)所需的邏輯電路縮小,同時(shí)使需要變量轉(zhuǎn)移的某些工作負(fù)荷由那些線程承擔(dān),而不需要變量轉(zhuǎn)移的其它工作負(fù)荷由其它線程承擔(dān)??梢圆黄x本發(fā)明的范圍地對(duì)所公開(kāi)實(shí)施例作出各種另外修改。
【權(quán)利要求】
1.一種電路安排,包含: 布置在多個(gè)處理核心中的多個(gè)硬件線程,每個(gè)處理核心包括一個(gè)寄存器堆和多個(gè)硬件線程當(dāng)中的至少一個(gè)硬件線程;以及 耦合在多個(gè)處理核心之間的變量轉(zhuǎn)移網(wǎng)絡(luò),該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成在多個(gè)處理核心當(dāng)中的一個(gè)源處理核心中的源硬件線程與多個(gè)處理核心當(dāng)中的一個(gè)目的地處理核心中的目的地硬件線程之間傳送變量。
2.如權(quán)利要求1所述的電路安排,進(jìn)一步包含多個(gè)變量寄存器,每個(gè)變量寄存器被分配給多個(gè)硬件線程當(dāng)中的各個(gè)硬件線程,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成響應(yīng)將變量存儲(chǔ)在分配給目的地硬件線程的變量寄存器中,將變量傳送給目的地處理核心。
3.如權(quán)利要求2所述的電路安排,其中將多個(gè)變量寄存器架構(gòu)成每個(gè)處理核心的寄存器堆,以及其中布置在每個(gè)處理核心內(nèi)的依賴(lài)性邏輯處理寄存器堆中的多個(gè)本地寄存器和多個(gè)變量寄存器兩者的依賴(lài)性。
4.如權(quán)利要求2所述的電路安排,其中將變量轉(zhuǎn)移網(wǎng)絡(luò)配置成響應(yīng)源硬件線程執(zhí)行的指令將變量傳送給目的地處理核心。
5.如權(quán)利要求4所述的電路安排,其中該指令包含將變量從源處理核心的寄存器堆中的本地寄存器移動(dòng)到分配給目的地硬件線程的變量寄存器的放置指令。
6.如權(quán)利要求5所述的電路安排,其中分配給目的地硬件線程的變量寄存器包括指示目的地硬件線程是否準(zhǔn)備好在變量轉(zhuǎn)移網(wǎng)絡(luò)上接收變量的信用標(biāo)志,以及其中將該源處理核心配置成延遲放置指令 ,直到該信用標(biāo)志指示目的地硬件線程準(zhǔn)備好接收變量。
7.如權(quán)利要求2所述的電路安排,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成響應(yīng)將變量存儲(chǔ)在源處理核心中分配給目的地硬件線程的變量寄存器中,使變量出現(xiàn)在目的地處理核心中與源線程相聯(lián)系的變量寄存器上,以及其中該目的地硬件線程被配置成響應(yīng)目的地硬件線程執(zhí)行的指令,將變量從分配給源硬件線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器。
8.如權(quán)利要求7所述的電路安排,其中該指令包含取得指令,其中目的地處理核心中分配給源硬件線程的變量寄存器包括指示在目的地處理核心中分配給源硬件線程的變量寄存器中是否存儲(chǔ)了有效數(shù)據(jù)的有效標(biāo)志,以及其中該目的地處理核心被配置成延遲取得指令,直到該有效標(biāo)志指示在目的地處理核心中分配給源硬件線程的變量寄存器中存儲(chǔ)了有效數(shù)據(jù)。
9.如權(quán)利要求7所述的電路安排,其中該目的地處理核心被配置成響應(yīng)將變量從目的地處理核心中分配給源硬件線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器,在變量轉(zhuǎn)移網(wǎng)絡(luò)上返回信用。
10.如權(quán)利要求1所述的電路安排,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含耦合在源處理核心與目的地處理核心之間的發(fā)送總線,該發(fā)送總線包括配置成傳送變量的多條數(shù)據(jù)線、配置成為目的地硬件線程傳送標(biāo)識(shí)符的至少一條線程標(biāo)識(shí)符線、和配置成指示正在多條數(shù)據(jù)線上傳送有效數(shù)據(jù)的時(shí)間的有效線。
11.如權(quán)利要求10所述的電路安排,其中數(shù)據(jù)、線程標(biāo)識(shí)符和有效線的每一種由源處理核心驅(qū)動(dòng),以及其中該發(fā)送總線進(jìn)一步包括由目的地處理核心驅(qū)動(dòng)和配置成響應(yīng)目的地硬件線程成功轉(zhuǎn)移了變量將信用返回給源處理核心的信用線。
12.如權(quán)利要求10所述的電路安排,其中該發(fā)送總線包含從源處理核心到目的地處理核心的專(zhuān)用總線,以及其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含多條發(fā)送總線,以便多個(gè)處理核心的每一個(gè)包括到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心的專(zhuān)用總線。
13.如權(quán)利要求10所述的電路安排,其中該發(fā)送總線從源處理核心耦合到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心,以及其中該發(fā)送總線進(jìn)一步包括配置成為目的地處理核心傳送標(biāo)識(shí)符的至少一條核心標(biāo)識(shí)符線。
14.一種集成電路器件,其包括如權(quán)利要求1所述的電路安排。
15.一種程序產(chǎn)品,其包含計(jì)算機(jī)可讀介質(zhì)和存儲(chǔ)在該計(jì)算機(jī)可讀介質(zhì)上和定義如權(quán)利要求I所述的電路安排的邏輯定義程序代碼。
16.一種在布置在多個(gè)處理核心中的多個(gè)硬件線程之間傳送變量的方法,每個(gè)處理核心包括一個(gè)寄存器堆和多個(gè)硬件線程當(dāng)中的至少一個(gè)硬件線程,該方法包含: 利用多個(gè)處理核心當(dāng)中的源處理核心中的源硬件線程啟動(dòng)變量到多個(gè)處理核心當(dāng)中的目的地處理核心中的目的地硬件線程的轉(zhuǎn)移;以及 響應(yīng)啟動(dòng)變量的轉(zhuǎn)移,在與源和目的地處理核心耦合的變量轉(zhuǎn)移網(wǎng)絡(luò)上將變量從源處理核心傳送到目的地處理核心。
17.如權(quán)利要求16所述的方法,其中該啟動(dòng)變量的轉(zhuǎn)移包含將變量存儲(chǔ)在分配給目的地硬件線程的變量寄存器中,其中該變量寄存器在布置在多核心處理芯片上的多個(gè)變量寄存器當(dāng)中,其中每個(gè)變 量寄存器被配置給多個(gè)硬件線程當(dāng)中的各個(gè)硬件線程。
18.如權(quán)利要求17所述的方法,其中將多個(gè)變量寄存器架構(gòu)成每個(gè)處理核心的寄存器堆,以及其中布置在每個(gè)處理核心內(nèi)的依賴(lài)性邏輯處理寄存器堆中的多個(gè)本地寄存器和多個(gè)變量寄存器兩者的依賴(lài)性。
19.如權(quán)利要求17所述的方法,其中該啟動(dòng)變量的轉(zhuǎn)移包括利用源硬件線程執(zhí)行放置指令,其中該放置指令將變量從源處理核心的寄存器堆中的本地寄存器移動(dòng)到分配給目的地硬件線程的變量寄存器。
20.如權(quán)利要求19所述的方法,其中分配給目的地硬件線程的變量寄存器包括指示目的地硬件線程是否準(zhǔn)備好在變量轉(zhuǎn)移網(wǎng)絡(luò)上接收變量的信用標(biāo)志,以及其中該方法進(jìn)一步包含延遲放置指令,直到該信用標(biāo)志指示目的地硬件線程準(zhǔn)備好接收變量。
21.如權(quán)利要求17所述的方法,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)被配置成響應(yīng)將變量存儲(chǔ)在源處理核心中分配給目的地硬件線程的變量寄存器中,使變量出現(xiàn)在目的地處理核心中與源線程相聯(lián)系的變量寄存器上,以及該方法進(jìn)一步包含響應(yīng)目的地硬件線程執(zhí)行的取得指令,將變量從目的地處理核心中分配給源線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器,其中目的地處理核心中分配給源線程的變量寄存器包括指示在目的地處理核心中分配給源線程的變量寄存器中是否存儲(chǔ)了有效數(shù)據(jù)的有效標(biāo)志,以及其中該方法進(jìn)一步包含延遲取得指令,直到該有效標(biāo)志指示在目的地處理核心中分配給源線程的變量寄存器中存儲(chǔ)了有效數(shù)據(jù)。
22.如權(quán)利要求21所述的方法,進(jìn)一步包含響應(yīng)將變量從目的地處理核心中分配給源線程的變量寄存器移動(dòng)到目的地處理核心的寄存器堆中的本地寄存器,在變量轉(zhuǎn)移網(wǎng)絡(luò)上返回信用。
23.如權(quán)利要求16所述的方法,其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含耦合在源處理核心與目的地處理核心之間的發(fā)送總線,該發(fā)送總線包括配置成傳送變量的多條數(shù)據(jù)線、配置成為目的地硬件線程傳送標(biāo)識(shí)符的至少一條線程標(biāo)識(shí)符線、和配置成指示正在多條數(shù)據(jù)線上傳送有效數(shù)據(jù)的時(shí)間的有效線,其中數(shù)據(jù)、線程標(biāo)識(shí)符和有效線的每一種由源處理核心驅(qū)動(dòng),以及其中該發(fā)送總線進(jìn)一步包括由目的地處理核心驅(qū)動(dòng)和配置成響應(yīng)目的地硬件線程成功轉(zhuǎn)移了變量將信用返回給源處理核心的信用線。
24.如權(quán)利要求23所述的方法,其中該發(fā)送總線包含從源處理核心到目的地處理核心的專(zhuān)用總線,以及其中該變量轉(zhuǎn)移網(wǎng)絡(luò)包含多條發(fā)送總線,以便多個(gè)處理核心的每一個(gè)包括到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心的專(zhuān)用總線。
25.如權(quán)利要求23所述的方法,其中該發(fā)送總線從源處理核心耦合到多個(gè)處理核心當(dāng)中的每個(gè)其它處理核心,以及其中該發(fā)送總線進(jìn)一步包括配置成為目的地處理核心傳送標(biāo)識(shí)符的至少一條核心 標(biāo)識(shí)符線。
【文檔編號(hào)】G06F9/38GK104011676SQ201280063721
【公開(kāi)日】2014年8月27日 申請(qǐng)日期:2012年12月5日 優(yōu)先權(quán)日:2011年12月20日
【發(fā)明者】R.希勒, R.D.胡佛, A.沃特森, M.康帕蘭 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司