專利名稱:令牌協(xié)議的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在處理器之間的鏈路上傳遞令牌(token )。
背景技術(shù):
處理器i殳計者面對的才4戰(zhàn)之一是在處理器之間處理大量通信,
(direct)消息的鏈路的電路的互聯(lián)系統(tǒng)上,例如,設(shè)置在同一電路 4反或芯片上的鏈路。
一個具體的問題就是這些通信在互連中消耗大量的功率。因此 迫切期望能夠降低這些通信的功耗。
另 一個困難在于進(jìn)行通信控制信息。發(fā)送到這種互聯(lián)上的消息 典型地由離散的凄t據(jù)字節(jié)組成。然而,必須還有一種用于傳遞控制 信息(用于控制互連本身)的機(jī)制。例如,控制信息可以是關(guān)閉由 開關(guān)所建立的通道的"消息結(jié)束,,信號,或者是讀取或?qū)懭肫渲幸?個開關(guān)或鏈路的控制寄存器的請求。難以解決的是找到一種方便地 與數(shù)據(jù)傳遞機(jī)制共存的控制機(jī)制。
視"消息結(jié)束"示例作為該問題的說明,通常電路設(shè)計者可能 在消息中分配(assign)字節(jié)值255作為控制值,表示消息結(jié)束,并 因此使開關(guān)關(guān)閉兩個正在通信的處理器之間的通道。然而,在沒有 誤解實(shí)際數(shù)字255為關(guān)閉通道的請求下,如果軟件開發(fā)者想要將該實(shí)際數(shù)字255傳送至目的軟件,然后為了防止互連在進(jìn)行所期望的 通信時以這樣的方式^皮觸發(fā),傳統(tǒng)上必須將復(fù)雜的換碼順序(escape sequence )才勾建到傳遞4幾制(transfer mechanism )中。
另外,需要提供一種更靈活的、在不同的專用需求范圍內(nèi)都是 有用的控制機(jī)制。
本發(fā)明的目的是降低由于處理器之間的通信而產(chǎn)生的功耗。在 實(shí)施例中,本發(fā)明的另一個的目的是將所降低的功耗與用于傳遞控 制信息的改進(jìn)機(jī)制有效地結(jié)合在 一起。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了 一種在處理器之間的鏈路上傳 遞令牌的方法,所述鏈路包括一線和零線,其中, 一線上的邏輯轉(zhuǎn)
換指示邏輯一,零線上的邏輯轉(zhuǎn)換指示邏輯零,該方法包括傳遞 令牌的第一部分;并且傳遞令牌的第二部分,以確保令牌中的邏輯 一位的總數(shù)是偶數(shù)、令牌中的邏輯零位的總數(shù)是偶數(shù),從而鏈路在 令Jf皁的結(jié)尾返回 <木目民4犬態(tài)(quiescent state )。
由于每個令牌總是包含偶數(shù)個一和偶數(shù)個零,則每條一線和零 線總是作出偶數(shù)次邏輯轉(zhuǎn)換,即對于每次上升轉(zhuǎn)換都存在一次下降 轉(zhuǎn)換。這意味著一旦鏈路完成了令牌的傳遞,則鏈路總是能確保其 返回到^f氐電壓。
在實(shí)施例中,該方法包括確定是傳遞數(shù)據(jù)令牌還是傳遞控制令 牌,其中第一部分包括信息部分,用于在確定傳遞凄t據(jù)令牌的情 況下傳送數(shù)據(jù),在確定傳遞控制令牌的情況下傳送控制信息;以及 第一附加位,其指示令牌是數(shù)據(jù)令牌還是控制令牌。
該鏈路可以在同 一 電路板或者芯片上的處理器之間。第 一部分可以具有奇凄t個位,其由偶l丈個信息位和第 一附加位 組成,且其中第二部分是第二附加位。4言息部分可以為,\個位。
該方法可以包4舌確定第一部分是否包含偶ft個為邏輯一的4立和 奇數(shù)個為邏輯零的位,或者確定第 一部分是否包含和奇數(shù)個為邏輯
一的位和偶凄t個為邏輯零的位;其中,在第一部分包含偶凄t個邏輯 一和奇數(shù)個邏輯零的條件下,第二部分是邏輯零位;以及在第一部
分包含奇數(shù)個邏輯一和偶數(shù)個邏輯零的條件下,第二部分是邏輯一 位。
該方法可以包括通過對第一部分進(jìn)行逐位XOR來計算第二部分。
在第一部分具有九個位的實(shí)施例中,仂、議是非常有效的,因?yàn)?信息部分可以4皮構(gòu)成一個具有單個附加位的合適的字節(jié)(八個位) 長度,以指示令牌是控制令牌還是數(shù)據(jù)令牌,并且單個附加位將鏈 路返回到^f木眠狀態(tài)。逐位XOR是計算第二附加位的非常有效的方式。
另外,通過使用不是字節(jié)而是更長位的令牌,可以避免復(fù)雜的 換碼序列,并且整個范圍的不同控制令牌都可用,而不沖擊傳遞數(shù) 據(jù)機(jī)制。
在令牌中的傳遞順序可以是第一附加位、信息部分,然后是 第二附加位。
第一部分可以由在其中一個所述處理器上執(zhí)行的軟件生成,并 且第二部分可以由鏈路中的硬件生成。第一部分可以是在所述處理
器之一上執(zhí)行的指令的操作數(shù)??刂屏钆?,
并且該方法可以包括^使用控制令牌來觸發(fā)互連中的邏輯,以控制互 連的部件。該方法可以包括通過使用在目的處理器上執(zhí)行的軟件來 接收所述結(jié)構(gòu)定義的控制令牌,以便在軟件中執(zhí)行功能。所述結(jié)構(gòu) 定義的控i 特權(quán)控制令牌<
所述令牌可以是軟件定義的控制令牌。
可以在包括用于指定目的處理器的一個或多個頭令牌的消息中 傳遞令牌。
可以在具有電路的互連上傳遞令牌,該電路包括開關(guān)和鏈路的 系統(tǒng),該鏈路連接在陣列的兩個以上處理器之間。
根據(jù)本發(fā)明的另一個方面,提供了一種設(shè)備,該設(shè)備包括多個 處理器以及所述處理器之間的鏈^各,所述鏈路包4舌一線和零線,其 中, 一線上的邏輯轉(zhuǎn)換指示邏輯一,零線上的邏輯轉(zhuǎn)換指示邏輯零, 其中,至少第一處理器^皮配置為傳遞令牌的第一部分;以及傳遞 令牌的第二部分,以確保令牌中的邏輯一位的總數(shù)是偶數(shù)、令牌中 的邏輯零位的總數(shù)是偶數(shù),使得鏈路在令牌的結(jié)尾返回到休眠狀態(tài)。
根據(jù)本發(fā)明的另 一個方面,提供了 一種用于在處理器之間的鏈 路上傳遞令牌的計算才幾程序產(chǎn)品,該鏈路包括一線和零線,其中, 一線上的邏輯轉(zhuǎn)換指示邏輯一,以及零線上的邏輯轉(zhuǎn)換指示零,該 程序包括當(dāng)處理器執(zhí)行以下步驟時所執(zhí)行的代碼傳遞令牌的第一 部分;以及傳遞令牌的第二部分,以確保令牌中的邏輯一位的總數(shù) 是偶數(shù)以及令牌中的邏輯零位的總數(shù)是偶數(shù),使得鏈路在令牌的結(jié) 尾返回到4木眠^)犬態(tài)。
14根據(jù)本發(fā)明的另一個方面,提供了一種設(shè)備,該設(shè)備包括多個 處理裝置以及用于在所述處理裝置之間進(jìn)行鏈接的鏈接裝置,鏈接 裝置包括通過邏輯轉(zhuǎn)換指示邏輯一的邏輯一傳遞裝置以及通過邏輯 轉(zhuǎn)換裝置指示邏輯零的邏輯零傳遞裝置,其中,至少第一處理裝置
包括用于傳遞令牌的第一部分的傳遞裝置;其中傳遞裝置還用于傳 遞令牌的第二部分,以確4呆令牌中的邏輯一位的總凄t是偶H以及令 牌中的邏輯零位的總數(shù)是偶數(shù),從而鏈接裝置在令牌的結(jié)尾返回到 休眠狀態(tài)。
,恨據(jù)本發(fā)明的另一個方面,提供了一種在處理器之間的鏈路上 傳遞一個或多個令牌的方法,其中鏈路至少包括三條線,這三條線 都被設(shè)置為根據(jù)編碼方案傳遞令牌,從而在這些線上的邏輯轉(zhuǎn)換的 預(yù)設(shè)配置被用于發(fā)送各個代碼,該方法包括通過在所述鏈路上發(fā) 送從所述代碼中選出的代碼序列來傳遞令牌;以及在所述線上傳遞 一個或多個附加代碼,以確保在發(fā)送所述一個或多個令牌以及附加 代碼之后,每條線上的邏輯轉(zhuǎn)換的總數(shù)將鏈路返回到休眠狀態(tài)。
鏈路可以包括五條線,所述線中的四條中的每一條線上的邏輯 轉(zhuǎn)換用于編碼相應(yīng)的值,以及剩下的第五條所述線上的邏輯轉(zhuǎn)換發(fā) 送哞爭義石馬(escape code );并且該方法可以是包4舌以下的方法通過 傳遞在所述四條線上發(fā)送的代碼序列而不傳遞在所述第五條線上發(fā) 送的轉(zhuǎn)義碼來傳遞數(shù)據(jù)令牌;以及通過傳遞從所述代碼中選出的代 碼序列,包括使用所述第五條線來發(fā)送轉(zhuǎn)義碼來傳遞控制令牌。
一個或多個附加轉(zhuǎn)換的發(fā)送(signalling)可以包括傳遞至少一 個所述代碼,以確保每條所述線上的邏輯轉(zhuǎn)換的總數(shù)是偶數(shù)。
該方法可以包括傳遞由鏈路生成的置信令牌(credit token)以 指示鏈路的自由容量(free capacity),置信令牌包括一對或多對所 述代碼,每對中的代碼都是相同的,以^f更每條所述線上的邏輯轉(zhuǎn)換的總數(shù)是偶數(shù)或者零,因此在傳遞置信令牌之后鏈路的狀態(tài)不受影響。
根據(jù)本發(fā)明的另 一個方面,提供了 一種包括多個處理器以及在所述處理器之間的鏈路的裝置,該鏈路至少包括三條線,這些線被設(shè)置為根據(jù)編碼方案來傳遞一個或多個令牌,從而在這些線上的邏
輯轉(zhuǎn)換的預(yù)設(shè)配置被用于發(fā)送各代碼,至少第一個處理器被配置為
及在所述線上發(fā)送一個或多個附加代碼,以確保在發(fā)送所述一個或多個令牌以及附加轉(zhuǎn)換之后,每條線上的邏輯轉(zhuǎn)換的總數(shù)將鏈路返回到休眠一犬態(tài)。
根據(jù)本發(fā)明的另 一個方面,提供了 一種用于在處理器之間的鏈路上傳遞一個或多個令牌的計算機(jī)程序產(chǎn)品,其中,鏈路至少包括三條線,這三條線都被設(shè)置為根據(jù)編碼方案傳遞令牌,從而這些線上的邏輯轉(zhuǎn)換的預(yù)設(shè)配置被用于發(fā)送各代碼,該程序包括當(dāng)處理器執(zhí)行以下步驟時所執(zhí)行的代碼通過在所述線上發(fā)送從所述代碼中選出的代碼序列來傳遞令牌;以及在所述線上傳遞一個或多個附加代碼,以確保在發(fā)送一個或多個令牌以及附加代碼之后,每條線上的邏輯轉(zhuǎn)換的總數(shù)將鏈路返回到休眠狀態(tài)。
圖1示出了4妾口處理器的示例應(yīng)用;圖2示出了4妄口處理器的另一個示例應(yīng)用;圖3是接口處理器的結(jié)構(gòu)的示意性表示;圖4是端口的示意性表示;圖5是線程寄存器集的示意性表示;圖6是線程寄存器集之間的互連的示意性表示;圖7是通道末端的示意性表示;圖8是處理器間的互連的示意性表示;圖9示出了令牌格式;圖10示出了讀取請求消息格式;圖11示出了成功讀取響應(yīng)消息格式;以及圖12示出了失敗讀取響應(yīng)消息格式。
具體實(shí)施例方式
圖1示出了移動電話中的4妻口處理器的示例應(yīng)用。移動應(yīng)用處理器2需要與多個外圍設(shè)備8通信。應(yīng)用處理器2包括總線3、 CPU4,以及用于與石更盤驅(qū)動器(HDD) 8a和SDRAM存儲器8b以及功率控制器10和無線電處理器12對接的存儲器控制器6a。
圖1的布置允許CPU4通過通用端口 7進(jìn)4亍外部通信。在這個示例中,提供了通用端口 7a和7b,用于與照相才幾8c和LCD顯示器8d對4妄;提供了通用端口7c,用于與麥克風(fēng)8e、揚(yáng)聲器8f和耳才幾8g對"l妄;以及4是供了通用端口 7d,用于與4建盤8h、通用串4亍總線(USB)設(shè)備8i、安全數(shù)字(Secure Digital) (SD)卡8j、多媒體卡(MMC ) 8k,以及通用異步傳遞收發(fā)器(UART )設(shè)備81對接。
圖1中,接口處理器14a、 14b以及14c設(shè)置在相應(yīng)端口 7的輸出端,同時第一接口處理器14a連接在圖像設(shè)備8c-8d和通用端口 7a-7b之間,第二接口處理器14b連接在音頻設(shè)備8e-8g和通用 端口 7c之間,以及第三接口處理器14c連接在通用端口 7d和各種 連接設(shè)備8h-81之間。端口7只需是通用端口,因?yàn)橛山涌谔幚砥?14a-14c以下文^)尋描述的方式來扭J于專用顯示、音頻以及連4姿功能。 端口 7不需要使用FPGA邏輯,因?yàn)榻涌谔幚砥?4提供了否則由 FPGA提供的靈活性和可配置性。接口處理器14a具有連接至端口 7a和7b的端口 22a和22b,以及連4妄至夕卜圍i殳備8c和8g的22c、 22d、 22e、和22f。接口處理器14b和14c具有圖1中未示出的相 似端口 。
接口處理器典型地涉及經(jīng)由各接口執(zhí)行用于傳遞數(shù)據(jù)6々特定 協(xié)i義;重新才各式化(reformat )數(shù)據(jù),包4舌在并4亍格式(parallel format) 和串行格式(serail format)之間轉(zhuǎn)換數(shù)據(jù);以及可能更高級的功能, 諸如編碼凄t據(jù)、壓縮凄t據(jù)或者加密婆t據(jù)。
接口處理器14的另一種應(yīng)用是作為如圖2所示的多處理器陣列 200的部件。這種陣列200包括多個處理器瓦片(tile) 202,其中每 個瓦片在陣列中定義了一個節(jié)點(diǎn),并且包括一個或多個處理器14 和互連204。這些瓦片202經(jīng)由支持陣列200中的瓦片202之間的 通信的高性能連接218連接, 一些處理器14使用端口 22與陣列200 外部的其他設(shè)備進(jìn)行通信??梢栽趩蝹€芯片上執(zhí)行該陣列,或者從 多個芯片中組裝該陣列。
下文中將更充分討論的接口處理器的重要功能是其管理內(nèi)部和 外部通信的能力。每個處理器包括CPU、存儲器以及通信系統(tǒng) (communication )。為了允i午CPU和端口之間的直4妻和響應(yīng)連孑妄, 每個處理器具有用于執(zhí)行多個并發(fā)程序線程的硬件支持,每個線程 都包括指令序列,并且至少一些指令可以負(fù)責(zé)處理通信。如下文中 將更充分討論的,硬件支持包括-用于各個線程的一組寄存器,
-動態(tài)選擇執(zhí)行哪個線程的線程調(diào)度器,
-用于輸入和輸入的一組端口 (端口22),以及 -用于在線禾呈之間建立通道的互連系統(tǒng)。
在每個處理器上使用小線程組的可以用于允許通信或者輸入/ 輸出與由處理器處理的待處理(pending)任務(wù)一起進(jìn)行,并且通過 允i午一些線禾呈繼續(xù)而其^f也線禾呈暫1'亭到或來自遠(yuǎn)禾呈4妾口處J里器的4寺處 理通信而而允許互聯(lián)中的等待隱藏。
圖3示意性地示出了沖艮據(jù)本發(fā)明的一個實(shí)施例的接口處理器14 的示例性結(jié)構(gòu)。處理器14包括用于在線程調(diào)度器18的控制下執(zhí)行 指令線程的執(zhí)行單元16。處理器14還包括用于保存程序代碼和其 他數(shù)據(jù)的隨才;Wf取存儲器(RAM) 24,以及用于存儲永久信息(諸 如引導(dǎo)代碼)的只讀存儲器(ROM)(未示出)。
線程調(diào)度器18動態(tài)的選擇執(zhí)行單元16應(yīng)該執(zhí)4于哪個線程。通 常,為了保持充分占用處理器,線程調(diào)度器可以僅從程序存儲器中 調(diào)度線程。然而,4艮據(jù)本發(fā)明,線程調(diào)度器18的調(diào)度還與端口 22 處的活動(activity)相關(guān)。應(yīng)當(dāng)注意,在這方面,線^f呈調(diào)度器可以 直接耦合到端口 22上,以^f更當(dāng)由于端口處的輸入或輸出活動線程變 得可運(yùn)行時使延遲最小化。
線程調(diào)度器18所考慮的m個線程中的每一個都由線程調(diào)度器 18可訪問的寄存器庫(bank ) 20中的相應(yīng)組的線程寄存器20卜.20m 表示。還提供了指令緩沖器(INSTR) 19,用于在隨后發(fā)到執(zhí)行單 元16之前,臨時存儲從存儲器24取出的指令。數(shù)據(jù)可以通過通道 在寄存器組20之間通信。這些寄存器和通道的細(xì)節(jié)將在后面討論。在m個線程中,線程調(diào)度器18維持一組n個可運(yùn)行線程,該 組^皮稱為"運(yùn)4亍",線程調(diào)度器從該組中優(yōu)選地以循環(huán)方式 (round-robin manner )依次提取指令。當(dāng)線程不能繼續(xù)時,則線程 調(diào)度器通過將該線程從該運(yùn)行組中移除而使其暫停。這樣做的原因 是,例如,因?yàn)榫€程正等待一個或多個以下類型的活動
-其寄存器在能夠運(yùn)行之前先被初始化,
-試圖從沒有準(zhǔn)備就緒或者沒有可用凄t據(jù)的端口或通道l命入,
-試圖輸出至未就緒或沒有用于數(shù)據(jù)的空間的端口或通道,
-已經(jīng)執(zhí)行了致使其等待一個或多個事件的指令,這些事件可 以在端口準(zhǔn)備好輸入時生成。
應(yīng)當(dāng)注意,本文所用的術(shù)語"事件"是指具體的操作類型,其 略不同于基本的輸入-輸出操作。下面結(jié)合圖4和5討論所述區(qū)別。
有利i也,為了有助于快速反應(yīng)時間,在線程調(diào)度器18和"^Vf亍單 元16之間設(shè)置了直接硬接線連接28,以允許線程調(diào)度器18控制執(zhí) 行單元16應(yīng)取出并執(zhí)4亍哪個或哪些線程。在線程調(diào)度器18和各端 口 22之間也設(shè)置直接硬接線路30a、 30b、 30c;以及在線程調(diào)度器 18和各寄存器20之間設(shè)置直接硬接線路29卜.29m。這些直接線路 優(yōu)選地提供允許線程調(diào)度器將各線程與一個或多個端口 22相關(guān)聯(lián) 的控制線路,并且更具體地,當(dāng)端口發(fā)生某個活動時允許線程調(diào)度 器從該端口返回就緒指示,控制線路用于允許處理器快速響應(yīng)于在 端口 22處發(fā)生的活動或激^力。在下文結(jié)合圖4和圖6討i侖涉及端口 的線程調(diào)度器的操作。
執(zhí)行單元16還經(jīng)由直接連接27和31訪問各端口 22a-22c以及 各寄存器2(V20m,因此在核心處理器、寄存器、和外部環(huán)境之間提
20供了直接鏈路。優(yōu)選地,這些直接線路提供了另外的控制線路,以
允許執(zhí)行單元將條件傳遞給端口 。這將在下面結(jié)合圖4進(jìn)一步詳細(xì) 討論。直接線路27和31也可允許數(shù)據(jù)在線程寄存器20和端口 22 之間直接輸入和輸出,因此允許各線程直接與外部環(huán)境通信。例如, 數(shù)據(jù)可直接從外部設(shè)備寫到線程的其中 一個操作數(shù)寄存器,而非寫 到存儲器24隨后再取出。相反,在一次操作之后,來自操作數(shù)寄存 器的數(shù)據(jù)可由執(zhí)行單元16獲取并直接發(fā)出端口 22。這顯著縮短了 反應(yīng)時間。
應(yīng)當(dāng)注意,"直接連接"或"直接線路"表示與執(zhí)行單元和程序 存儲器24之間的連接相分離的連接。因此,例如,線程調(diào)度器18 和執(zhí)行單元16訪問來自端口 22的數(shù)據(jù)無需存儲這些數(shù)據(jù)隨后再從 存儲器24取出。具體地,如果執(zhí)行單元16和存儲器24之間的連接 經(jīng)由總線13,則"直接"連接或線路指的是與總線相分離的連接。 因此,無需總線仲裁(bus arbitration),縮短反應(yīng)時間,端口 22、 寄存器20、線程調(diào)度器18和執(zhí)行單元16之間的各種通信都可以發(fā) 生。端口 22還可配備有具有總線13的另外的連接(未示出)。
圖4示意性地示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的端口 22。端口 22包括I/O緩沖器32,其用于傳遞送往和來自處理器14的輸入和 輸出數(shù)據(jù)。此外,各端口 22還包括活動處理邏輯36,用于監(jiān)視發(fā) 生在端口的活動并通過至少一個就緒數(shù)位或標(biāo)記37發(fā)送某個活動 發(fā)生。就緒標(biāo)記37優(yōu)選地經(jīng)由直接線路30發(fā)信令至線程調(diào)度器。 端口可檢測的潛在活動包括
-數(shù)據(jù)已經(jīng)輸入到端口
- 一些特定凄t據(jù)已經(jīng)輸入到端口 ,和/或
-端口已經(jīng)可用于輸出。為了有助于對這些活動的4企測,端口 22配備有一組寄存器38。 這些寄存器包括線程標(biāo)識符(TID)寄存器,用于存儲相關(guān)線程 的標(biāo)識符(identification);控制(CTRL)寄存器,用于存儲一個或 多個條件;連續(xù)點(diǎn)矢量(VECTOR)寄存器,用于存儲在程序中執(zhí) 行被桂起的位置;以及數(shù)據(jù)(DATA)寄存器,用于存儲任何與條 件相關(guān)聯(lián)的數(shù)據(jù)。值TID由線程調(diào)度器18經(jīng)由直接線; 各30 (圖3 中直接線路是30a、 30b、 30c )寫到寄存器38中,以及值VECTOR、 CTRL和DATA由執(zhí)4亍單元16經(jīng)由直4妾線路31寫到寄存器38中。 一旦4企測到所期望的活動,TIDY更返回到線禾呈調(diào)度器18,以<更識別 相關(guān)聯(lián)的線程?;顒舆壿嬤€包括下面進(jìn)一步詳細(xì)討論的使能標(biāo)記 39。
應(yīng)當(dāng)注意,雖然圖4中示出了包含在端口 22中的寄存器38, 但它們實(shí)際上可位于處理器14中的其他位置并僅與端口 22相關(guān)聯(lián)。
圖5示出了用于表示線程的示例性線程寄存器庫20。寄存器庫 20包括對應(yīng)于線程調(diào)度器18當(dāng)前所考慮的相應(yīng)線程l至Tm的多 個寄存器組。在該優(yōu)選示例中,每個線程的狀態(tài)由十八個寄存器表 示兩個控制寄存器、四個存取寄存器和十二個操作數(shù)寄存器。這 些寄存器分別如下
控制寄存器
-PC是程序計數(shù)器
-SR是狀態(tài)寄存器 存取寄存器
-GP是全局池指針(global pool pointer )-DP是數(shù)據(jù)指針 -SP是堆棧(stack)指針 -LR是鏈路寄存器 操作數(shù)寄存器OPl…OP12
控制寄存器存儲關(guān)于線程狀態(tài)的信息,并且用于控制線程的執(zhí) 行。具體地,線程對事件或中斷的反應(yīng)能力由保存在線程狀態(tài)寄存 器SR中的信息控制。存取寄存器包括堆棧指針,用于程序的局 部變量;數(shù)據(jù)指針,通常用于各程序之間所共享的數(shù)據(jù);以及常量 池指針(constant pool pointer ),用于存取較大的常數(shù)和程序入口點(diǎn) (procedure entry points )。 l喿作凄t寄存器OP1…OP12由執(zhí)行算術(shù)和 邏輯運(yùn)算、存取數(shù)據(jù)結(jié)構(gòu)以及調(diào)用子程序的指令使用。如結(jié)合圖6
和7所討i侖的,處理器還包括用于在不同組20的纟喿作數(shù)寄存器OP 之間建立通道的互連系統(tǒng)40。
還提供了大量指令緩沖器(INSTR) 19,用于臨時存儲線程的 實(shí)際指令。每個指令緩沖器優(yōu)選為六十四位長,且每條指令優(yōu)選為 十六位長,即允許每個緩沖器存儲四條指令。在線程調(diào)度器18的控 制下從程序存儲器24中取出指令并將指令臨時存放在指令緩沖器 19中。
執(zhí)行單元可訪問每個寄存器20和緩沖器19。此外,線程調(diào)度 器18至少可以訪問用于每個線程的狀態(tài)寄存器SR。
如上所述,本文所用的術(shù)語"事件"指的是特定類型的操作, 或者指的是對應(yīng)于特定類型操作的活動?;诓僮鞯氖录c基本的 輸入-輸出操作略有不同,其以如下方式工作。首先,優(yōu)選地通過經(jīng) 由直接線路31和30將來自執(zhí)行單元16的連續(xù)點(diǎn)矢量和來自線程調(diào)度器18的線程標(biāo)識符傳遞到與端口 22相關(guān)聯(lián)的VECTOR和TID 寄存器38而為線程設(shè)定事件,相關(guān)聯(lián)的條件和條件數(shù)據(jù)還可寫到端 口 22的CTRL和DATA寄存器38中。因此該事件可以在端口處設(shè) 定,而不必被 使能。為了4吏端口生成事件指示,還必須聲明(assert) 端口的使能標(biāo)記39 ,優(yōu)選地由線程調(diào)度器18經(jīng)由直接線路30來 聲明。此外,為了使線程本身接受事件,線程的各狀態(tài)寄存器SR 中的線程事件使能(EE )標(biāo)記必須被設(shè)定為事件使能 (event-enabled )。 一旦事件被設(shè)定并被使能,就可以使用作用于線 程調(diào)度器18的基于事件(event-based)的等待指令掛起線程等待事 件。此時,可以從相關(guān)指令緩沖器19中放棄當(dāng)前的待處理指令。當(dāng) 發(fā)生事件時,例如一些數(shù)據(jù)輸入到端口時,通過從端口 22返回線程 標(biāo)識符和連續(xù)點(diǎn)矢量而將該發(fā)生發(fā)信令告知線程調(diào)度器18和執(zhí)行 單元16,使得允許從程序存儲器24取出連續(xù)點(diǎn)矢量所識別的指令 并放入指令緩沖器19中,并在代碼中適當(dāng)位置點(diǎn)繼續(xù)執(zhí)行。例如, 如果等待的事件是輸入某些特定的數(shù)據(jù),則連續(xù)點(diǎn)矢量可以識別包 括用于輸入數(shù)據(jù)的輸入指令的代碼。
當(dāng)事件發(fā)生時,相應(yīng)狀態(tài)寄存器SR中的線程EE標(biāo)記可被設(shè)定 為事件禁止,以防止線程在發(fā)生事件后立即對事件做出反應(yīng)。事件 發(fā)生時,使能標(biāo)記39可以由于線程執(zhí)行指令的結(jié)果而被解除聲明。
在為等待來自一個或多個端口的事件準(zhǔn)備設(shè)置多個端口時,可 以聲明使能標(biāo)記39。還可在使能一組端口使能標(biāo)記前將線程EE標(biāo) 記設(shè)定為事件使能,在該情形下,準(zhǔn)備就緒的即將使能的第一端口 將生成事件,該事件使得當(dāng)前指令被丟棄并通過在連續(xù)點(diǎn)矢量處立 即取出和執(zhí)行指令而繼續(xù)運(yùn)行。
端口使能標(biāo)記39和狀態(tài)寄存器EE標(biāo)記的優(yōu)點(diǎn)在于事件的使 能和禁止通過等待指令而與事件的建立和線程的掛起(suspension ) 分離,允許針對特定線程和/或各種不同線程易于開啟和關(guān)閉
24(toggled on and off )不同輸入和輸出條件。例如,即使事件-故禁止, 該事件也可以;陂留在端口 22處凈皮建立。因此,事件可以由線禾呈重復(fù) 使用,因?yàn)殡m然事件已經(jīng)發(fā)生過一次,但是線程標(biāo)識符、連續(xù)點(diǎn)矢 量和條4牛仍然存<渚在端口 22的TID, VECTOR, CTRL和DATA寄 存器38中。所以如果線程需要重復(fù)使用事件,端口寄存器38不需 要被重復(fù)寫,僅需再次聲明端口的使能標(biāo)記39,和/或?qū)⒕€程的狀態(tài) 寄存器SR中的EE標(biāo)記再次設(shè)為事件使能。然后,在同一事件再次 發(fā)生之前另 一個等待指令將線程掛起。
此外,連續(xù)點(diǎn)矢量的使用允許每個線程使能多個事件。也就是 i兌,給定的線程可以通過將連續(xù)點(diǎn)矢量傳遞到一個端口 22a而在該 端口建立一個事件,通過將不同的連續(xù)點(diǎn)矢量傳遞到另 一個端口
22b而在該端口建立另一個事件,以此類4偉。線禾呈也可通過分別聲 明或不聲明用于每個相應(yīng)端口的不同使能標(biāo)記39來使能或禁止各 個事件。接著等待指令將使線程掛起以等待任何使能事件。
與事件相比,基本I/O操作僅使用輸入或輸出指令而沒有之前 的等待指令。通過使用基本I/0操作,線程調(diào)度器18不將連續(xù)點(diǎn)矢 量傳遞到VECTOR寄存器,且不使用端口的使能標(biāo)記39或狀態(tài)寄 存器SR中的EE標(biāo)記。相反,下一條待處理指令簡單地留在指令緩 沖器19中,如果需要,輸入或輸出指令作用于線程調(diào)度器18,以 在數(shù)據(jù)輸入或用于輸出的端口可用(如就緒標(biāo)記37所指示的)之前 中止執(zhí)行。如果端口立即就緒,即當(dāng)執(zhí)行輸入或輸出指令時已經(jīng)設(shè) 定就緒標(biāo)記37,則線程將不會中止。在實(shí)施例中,僅要求TID寄存 器根據(jù)基本I/O進(jìn)行調(diào)度?;綢/O可以使用或不使用CTRL和 DATA寄存器中的條件。如果不使用這樣的條件,則端口一準(zhǔn)備好
就僅完成I/0。基本i/o操作中止或不中止線程,不影響端口的使能
標(biāo)記39或者狀態(tài)寄存器中的EE標(biāo)記,也不影響將控制傳遞 (transfer)至事件矢量。類似的事件和I/O技術(shù)還可以適用于各線程之間的通信,或者 更精確地,適用于線程寄存器組20之間的通信,所述線程寄存器組 20存儲與線程相關(guān)的信息。圖6示出了包括用于建立通道的電路的 互連系統(tǒng)40。為了說明的目的,圖6僅示出了四個線程寄存器組2^ 至204,每個寄存器組存儲各線程Ti至T4的信息。線程寄存器組中 的每一組通過互連系統(tǒng)40都連接至其他組中的每一個,互連系統(tǒng) 40是直接硬件互連,其是可操作的以建立用于在線程寄存器組20 的至少兩個組之間直接傳遞數(shù)據(jù)的至少一個通道。在不使用直接存 儲器讀取(DMA)并且經(jīng)由任何共享存儲器(諸如RAM24)和任 何通用系統(tǒng)總線(諸如總線13)都不發(fā)生傳遞的意義上,該互聯(lián)是 直接的。通道優(yōu)選地用于傳遞送往或來自操作數(shù)寄存器OP的數(shù)據(jù), 但原則上用于傳遞送往或來自其他類型的寄存器(諸如狀態(tài)寄存器 SR)的信息。線程調(diào)度器18可以基于發(fā)生在通道上的活動以與結(jié) 合上文的端口討論的相似方式來調(diào)度線程。本文所使用的包括端口 、 通道以及其他活動源的通用術(shù)語是"資源"。
互連系統(tǒng)40包括多個硬件端子42,其在本文被稱為"通道末 端",用于在各線程之間建立通道。每個通道末端(即通道端子)都 可以分配給任一線程寄存器組20,每個通道末端42通過互連系統(tǒng) 40可連接至任何其它的通道末端42。為了說明的目的,圖6僅示出 了四條通道,但應(yīng)該理解,可以存在不同數(shù)目的通道末端,并且通 ??梢源嬖谂c寄存器組20的數(shù)目不相同的通道末端42的數(shù)目。
每個通道末端42包括緩沖器,以在進(jìn)入的凄t據(jù)祐:輸入之前保存 該數(shù)據(jù),并且優(yōu)選地還包括保存數(shù)據(jù)量的記錄(record )。通道末端 42還保持記錄其是否連4妄至另一個通道末端,以及記錄所連4妄的通 道末端的地址,以便通過通道的數(shù)據(jù)輸出可以寫入正確的輸入緩沖 器中。這些緩沖器和記錄可以通過使用兩個文件來執(zhí)行,即通道輸 入文件和通道輸出文件。這些通道輸入和輸出"文件"是"寄存器 文件"的一部分,這這種意義上(in this sense)其指的是用于執(zhí)行
26寄存器和緩沖器的處理器14上的專用存儲器的小塊。寄存器文件與 通用RAM (諸如存儲器24)不同,因?yàn)榇鎯ζ魑募械拿總€入口 (即每個寄存器)專供特定目的之用,而且還因?yàn)椴煌ㄟ^系統(tǒng)總線 13訪問寄存器。
如圖7所示,每個通道末端42類似一對端口 ,具有輸入緩沖器 44和輸出緩沖器46,以在各線程之間提供全雙工(full-duplex)數(shù) 據(jù)傳遞(盡管單獨(dú)緩沖器也是一個選擇)。輸入緩沖器44可用于將 來自另一個通道末端42的數(shù)據(jù)輸入至線程寄存器組20,并且輸出 緩沖器46可用于將來自線程寄存器組20的輸出數(shù)據(jù)輸出至另 一個 通道末端42。優(yōu)選地,每個緩沖器能夠保存足夠多的令牌,以允許 緩沖至少一個字。
與端口 22 —樣,每個通道輸入緩沖器44和輸出緩沖器46可 以與活動處理邏輯36,相關(guān)4關(guān),該活動處理邏輯用于監(jiān)一見通道上活 動的發(fā)生并且通過至少一個就緒標(biāo)記37,(標(biāo)記是一位寄存器)表 示某個活動發(fā)生。潛在活動可以是數(shù)據(jù)已經(jīng)輸入到通道,或通道 已經(jīng)可用于輸出。如果在通道太滿而不能提取數(shù)據(jù)時執(zhí)行輸出指令, 則線程調(diào)度器18中止指令,并且當(dāng)在通道中有足夠空間用于指令成 功完成時重新開始或者重新執(zhí)行該線程。同樣地,當(dāng)執(zhí)行輸入指令 且沒有足夠的數(shù)據(jù)可用時,線程調(diào)度器18中止該線程直到有足夠數(shù) 據(jù)可用。通道末端42中的計數(shù)器47在輸入緩沖器44和輸出緩沖器 46中保持記錄數(shù)據(jù)量。
為了在兩個線程寄存器組之間建立通道,必須分配并連4妄兩個 通道末端。如前所述,每個通道末端可以分配給任一線程,并且每 個通道末端42可連4妄至4壬<可其4也通道末端42。為了有助于通道末 端42的分配和連接,每個通道末端42還包括通道末端標(biāo)識符寄 存器CEID 41,用于記錄該通道末端連4妾至其它通道末端中的哪一個;連接標(biāo)記43,用于記錄通道末端是否被連接;以及聲明標(biāo)記45, 用于記錄通道末端是否已經(jīng)由線程聲明。
為了將各通道末端42分配給兩個線程中的每一個線程,則分別 執(zhí)行兩條"獲得通道末端"指令,這些指令的每條指令為線程使用 保留了通道末端42。這些指令還各自聲明各通道末端42的聲明標(biāo) 記45。在兩個線程中的每一個中,可以分別執(zhí)行"獲得通道末端" 指令,或者通過一個主線程執(zhí)行兩個"獲得通道末端"指令。
然后,如下,各通道末端通過交換通道末端標(biāo)識符而連接在一 起。當(dāng)執(zhí)行第一線程的輸出指令以便執(zhí)行至第二線程的通道末端的 輸出時,第二線程的通道末端中的連接標(biāo)記43用于確定第二線程的 通道末端當(dāng)前是否被連接。如果第二線程的通道末端沒有被連接, 則提供至該通道末端的數(shù)據(jù)被解釋為是第 一線程的通道末端的標(biāo)識 符。該標(biāo)識符記錄在第二線程的通道末端的CEID寄存器41中,并 且聲明第二線程的通道末端的連4妾標(biāo)志43。相反地,則才丸4亍第二線 程的輸出指令,以將輸出執(zhí)行至第一通道末端。假設(shè)還沒有聲明第 一線程的通道末端連4妾標(biāo)記43,則提供至第一線程的通道末端的凄t 據(jù)-故解釋為是第二線程的通道末端標(biāo)識符。該標(biāo)識符記錄在第 一線 程的通道末端的CEID寄存器41中,并且聲明第一線程的通道末端 的連接標(biāo)志43。
一旦通道末端42 #皮連4妾,<壬<可至第二通道末端的輸出將/人第二 通道末端的標(biāo)識符寄存器CEID 41的記錄中確定相關(guān)聯(lián)的第一通道 末端。如果第二通道末端的輸入緩沖器中有足夠的空間來保存數(shù)據(jù), 則將傳遞數(shù)據(jù);否則將中止第一線程的輸出指令。如果在輸入第二 通道末端之前中止線程,則由輸出指令向第二通道的數(shù)據(jù)提供也可 以不中止第二線程,以允許第二線程提取數(shù)據(jù)。相似地,如果第二 線程從第二通道末端輸入的影響是從第一通道末端為來自第一線程 的中止輸出的數(shù)據(jù)騰出空間,將不中止第一線程的輸出,以允許第
28一線程完成執(zhí)4于。,俞入還可以觸發(fā)事件(看下文)。對于每個線程,
線程調(diào)度器18保存任何中止的輸出指令的記錄、其相關(guān)聯(lián)的數(shù)據(jù)、 以及其試圖實(shí)現(xiàn)將數(shù)據(jù)所傳遞到的通道末端。
一旦不再需要通道,可以通過執(zhí)行輸出"消息結(jié)束"(EOM) 控制令牌的指令來切斷各通道末端42。然后,通道末端42將可用 于與任何其他通道末端相連接。另外,可以通過執(zhí)行"解除通道,,
(free channel)指令而從線程中解除每個通道末端42。然后,釋放 通道末端42以由4^f可其4也線程^使用。
如根據(jù)通道寄存器文件所描述的,當(dāng)處理器在通道末端c上執(zhí) 行輸出時,檢查通道輸出文件中的第c個(cth)入口 ,以確定c是 否被連接。如果未連接,輸出數(shù)據(jù)d被解釋為是c上的另外的輸出 將發(fā)送到的通道末端的地址(即ID)。檢查地址d,以確定其是否為 同一處理器上的通道末端的地址。如果是,將地址d寫到通道輸出 文件中的第c個入口。隨后的輸出經(jīng)由c將訪問第c個入口,以確 定連接至c的通道末端,以及假如該通道末端沒有滿,則將輸出數(shù) 據(jù)寫到連接的通道末端d的輸入數(shù)據(jù)中。如果發(fā)現(xiàn)緩沖器已滿,則 中止輸出指令,直到緩沖器中有足夠的空間,并且在這種情況下, 輸出線程將由創(chuàng)建(create)足夠空間的輸入指令釋》文。
當(dāng)在通道末端c上執(zhí)行輸入時,讀取輸入緩沖文件中的第c個 入口,以確定其是否包含數(shù)據(jù)。如果包含數(shù)據(jù),則提取數(shù)據(jù)并且完 成輸入。否則輸入線程被中止并且被將充足的數(shù)據(jù)寫到c的輸入緩 沖器中的隨后輸出指令釋放。
線程調(diào)度器18維護(hù)(maintain)具有用于每個線程的一個入口 的"中止表",該表用于i己錄明卩個通道末端^皮中止(如果有的i舌)。 不論何時在通道末端c上完成輸入,或者不論何時在與通道末端c相關(guān)聯(lián)的通道上完成輸出,都檢查這個表,且如果存在為C所中止 的線程,則將該表釋i丈。
當(dāng)經(jīng)由c輸出EOM令牌時,則修改輸出文件中的第c個入口, 以記錄通道末端不再凈皮連4妾。
為了降低所需的邏輯量,優(yōu)選地,在任何時間只有一條指令初 始化通道,在任何時間只有一條通信指令需要在給定的通道上執(zhí)行 操作。然而,也不排除在多通道上的操作可能性。
所描述的通道末端系統(tǒng)在代碼密度方面是非常有效的,因?yàn)槠?降低了為控制和執(zhí)行線程間的通信而由每個線程所執(zhí)行的指令數(shù) 目,同時很多功能性改為在硬件通道末端中執(zhí)行,且不需要DMA 或訪問存〗渚器24。
仍與端口 22—樣,為了有助于在通道上檢測活動發(fā)生,每個通 道末端42的輸入緩沖器44與寄存器38,相關(guān)聯(lián)。這些寄存器包括 用于存儲相關(guān)線程的標(biāo)識符的線程標(biāo)識符(TID)寄存器和用于存 儲執(zhí)行應(yīng)繼續(xù)事件發(fā)生所在的程序中位置的連續(xù)點(diǎn)矢量(VECTOR ) 寄存器。這些TID和VECTOR寄存器可由線程調(diào)度器18以及執(zhí)行 單元164吏用,以與端口 22相同的方式而依據(jù)事件來調(diào)度線程。也 就是說,通過存儲用于線程的線程標(biāo)識符和連續(xù)點(diǎn)矢量以便建立事 件、通過使用等待指令來掛起線程、以及一旦事件發(fā)生就返回到連 續(xù)點(diǎn)矢量所指定的代碼中的點(diǎn)。在這種情況下,事件可以是將數(shù)據(jù) 輸入至通道末端42。 VECTOR寄存器還允許通道生成中斷。通道末 端還具有^f吏能標(biāo)i己39,,以-使通道生成事件。在優(yōu)選實(shí)施例中,雖 然未排除可能性,但通道末端42可以不配備CTRL和DATA寄存 器。
30應(yīng)當(dāng)注意,將通信延遲最小化,用于在通道上傳遞凄欠據(jù)的輸入
和輸出指令可以有利地直接作用于線程調(diào)度器18。也就是說,當(dāng)執(zhí) 4亍單元16 4丸4亍指令時,々支i殳用于該通道的就緒位37,當(dāng)前沒有指示 通道就緒,則指令通過從運(yùn)行組中移除相關(guān)線程來使線程調(diào)度器中 止該相關(guān)線程。相似地,作i設(shè)沒發(fā)生事件、在線程的狀態(tài)寄存器SR 中沒有設(shè)定線程事件使能標(biāo)志EE、和/或沒有聲明通道末端的事件 使能標(biāo)記,則基于事件的等待指令將使線程調(diào)度器掛起執(zhí)行線程。
可以在不同處理器上的各線程之間建立通道。圖8示出了包括 互連節(jié)點(diǎn)204的瓦片202,該節(jié)點(diǎn)204用于在不同處理器14上的各
線程寄存器之間建立通道,每個處理器都是以上所討論的類型?;?連系統(tǒng)是在同 一 電路板或芯片上的處理器之間的直接硬件鏈路,與 端口 22相分離。并且其可以是在電路才反和/或芯片上^f吏用的串4亍互 連和信息包(packet)路由機(jī)制(packet routing mechanism )。 然而, 本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,其他類型的互聯(lián)系統(tǒng)也是可行的。并且 其優(yōu)選設(shè)置為低功率、低插腳輸出(pin-out )、易于使用。
每個互連節(jié)點(diǎn)204包4舌系統(tǒng)開關(guān)216以及3。圖2所示的可以用 于將其他類似瓦片202 —起連接成陣列的系統(tǒng)鏈路218。從而所連 4妄的一個或多個節(jié)點(diǎn)204組成互連系統(tǒng)。不同處理器的各存儲器可 以4妄夫見定尺寸制造以最佳匹配目標(biāo)應(yīng)用,并且不必是相同的尺寸。 這些瓦片可以在同一芯片上或者不同芯片上,每個節(jié)點(diǎn)204還包括 處理器開關(guān)214,每個處理器14都對應(yīng)一個開關(guān)。每個處理器開關(guān) 經(jīng)由處理器鏈路220與各系統(tǒng)開關(guān)216之間連接,以及通過通道鏈 路222與在處J里器14的通道末端42之間連才妄。
應(yīng)當(dāng)注意,將互連系統(tǒng)上的功耗最小化是有益的。在實(shí)施例中, 本發(fā)明的互連系統(tǒng)具有無功耗的休眠狀態(tài),而且在接收器處不需要 采樣時鐘、鎖相環(huán)、或者延時鎖定環(huán)(delay-locked lo叩)。優(yōu)選地,包括這種互連204的系統(tǒng)(諸如陣列200)將使用僅當(dāng)數(shù)據(jù)開始到達(dá)鏈路218、 220、 222時4皮上電的部4牛。
每條鏈路218、 220、 222都使用四條線每個方向上都有邏輯一線和邏津?qū)A憔€。以"雙4九跡不歸零(dual-rail non-return-to-zero )"的方式傳遞位。也就是說,通過邏輯一線上的轉(zhuǎn)換來發(fā)送邏輯一位,通過邏輯零線上的轉(zhuǎn)換來發(fā)送邏輯零位(即上升或者下降轉(zhuǎn)換發(fā)送一位)。
處理器14之間的通信通過令牌發(fā)生,這些令牌可以是用于控制通信的控制令牌或者是包含將被通信的實(shí)際數(shù)據(jù)的數(shù)據(jù)令牌。通道在通道末端之間承載(carry )由數(shù)據(jù)令牌和控制令牌所構(gòu)成的信息。每個令牌優(yōu)選地是一個字節(jié)。數(shù)據(jù)令牌包括數(shù)據(jù),控制令牌用來對用于控制互連的各方面的通信協(xié)議進(jìn)行編碼。每個開關(guān)214、 216都包含被配置為對用于建立、控制以及關(guān)閉通道的控制令牌(看下文)起作用的^更件開關(guān)邏輯。
消息由令牌序列構(gòu)成,通常由數(shù)據(jù)令牌和控制令牌構(gòu)成。任選地,消息可以劃分為信息包,其中每個信息包包括確定數(shù)目的消息令牌。消息或信息包中的第一個令牌是包含識別目的節(jié)點(diǎn)、目的處理器以及目的通道末端的目的地址的頭令牌。消息或信息包中的最后一個令牌是"消息結(jié)束"EOM或者"信息包結(jié)束"EOP令牌。"數(shù)據(jù)結(jié)束"EOD令牌也可以用于在信息包中描繪。軟件開發(fā)者可以使用這些EOM、 EOP以及EOD令牌,以不管他們?nèi)绾芜x擇這些令牌,都將通信設(shè)置到消息和/或信息包中。從互聯(lián)開關(guān)的觀點(diǎn)看,EOM、EOP以及EOD優(yōu)選是沒有區(qū)別的,但是它們可以不同地用于軟件中。
每個處理器14都包括如上所討論的線程寄存器組20。當(dāng)連接至不同處理器的通道末端時,可以以三種方式^f吏用通道。第一,可以以在單個處理器中建立通道的才莫擬方式來建立"流化(streamed )"
每一個線程,并且通過交換通道末端IDs來連接各通道末端,然后使用通道來傳遞連續(xù)數(shù)據(jù)流或者傳遞多條消息。這有效地在兩個線考呈之間建立電3各,并且在通道上傳遞的信息只是特 木令"皁流。第二,"分包化(packetised ),,通道可以用于執(zhí)行信息包路由,其中每條消息或者消息包通過建立信道開始,并且通過4吏用EOP或者EOM控制令牌切斷路由結(jié)束。這就允許在多個并發(fā)通信之間共享互連。所傳遞的信息具有適當(dāng)定義的信息包結(jié)構(gòu),在該結(jié)構(gòu)中, 一組輸出對應(yīng)于相匹配的一組輸入。未知的緩沖(buffering)量將出現(xiàn)在通道中。第三,"同步化,,通道與分包化通道相類似,除了其是零緩沖的(zero buffered )以及除其執(zhí)行線程被同步的通信之外。
一旦建立通道,與在同一處理器上的通道一才羊,可以在這些通
道上扭^于i/o和事件。
在才喿作中,通過系統(tǒng)鏈3各218或者處理器鏈路220在系統(tǒng)開關(guān)216處來接收頭令牌。系統(tǒng)開關(guān)216讀取目的節(jié)點(diǎn)地址,如果該目的地址與本地節(jié)點(diǎn)地址不匹配,則通過系統(tǒng)鏈路218將信息包路由至另一個節(jié)點(diǎn)。另一方面,如果目的節(jié)點(diǎn)地址與本地節(jié)點(diǎn)地址相匹配,則系統(tǒng)開關(guān)216讀取目的處理器地址,并通過處理器鏈路220將信息包路由至其中一個本地處理器14。然后,處理器開關(guān)216讀取目的通道地址,并且經(jīng)由通道鏈路222和互連40將消息路由至正確的通道末端42。
每條鏈路218、 220、 222都包含控制寄存器(未示出)。再次參考圖2和圖8,隨著頭令牌通過每個開關(guān)214、 216,開關(guān)的開關(guān)邏輯被頭令牌觸發(fā),以通過將目標(biāo)鏈路地址寫到源鏈路的控制寄存器中以及將源鏈路地址寫到目標(biāo)鏈路的控制寄存器中來創(chuàng)建從源鏈路到動態(tài)分配的目標(biāo)鏈路的路線(route )。 一旦路線存在,則沿該路
33線發(fā)送所有另外的令牌,當(dāng)沿著該路線發(fā)送EOM、 EOP或EOD令牌時,可以切斷該路線。當(dāng)EOM/EOP/EOD通過每個開關(guān)216、 220時它們就會切斷該路線的每個級(stage )。
詳細(xì)闡述,當(dāng)數(shù)據(jù)d輸出至不同處理器上的未連接的通道末端時,將為通道動態(tài)地分配鏈路222中的一條鏈路,并且該鏈路用于將地址d轉(zhuǎn)發(fā)至互連開關(guān)(記住該數(shù)據(jù)d是頭,即目的通道的地址)。所使用的鏈路的標(biāo)識符被寫到與第c個入口相關(guān)聯(lián)的通道輸出文件中。隨后經(jīng)由c輸出將訪問第c個入口以確定將用于轉(zhuǎn)發(fā)輸出數(shù)據(jù)的鏈路。如果鏈路中的緩沖器是滿的,則將中止輸出線程;當(dāng)鏈路已經(jīng)轉(zhuǎn)發(fā)數(shù)據(jù)并且具有空間來緩沖另 一個輸出時,則輸出線程將被再次釋放。這通過使用中止表來完成。
當(dāng)數(shù)據(jù)開始到達(dá)未連接的鏈路時,數(shù)據(jù)被解釋為目的通道末端d的地址,并且該地址被記錄在與該鏈路相關(guān)聯(lián)的寄存器中。來自鏈路的隨后數(shù)據(jù)將被寫到通道末端d的輸入緩沖器中。如果通道末端d的緩沖器(即通道輸入文件中的第d個入口 )是滿的,則鏈路流量控制將防止開關(guān)發(fā)送另外的數(shù)據(jù),直到線程輸入了足夠的數(shù)據(jù)以在輸入緩沖器中騰出空間。
當(dāng)在通道末端d執(zhí)行輸入時,讀取輸入緩沖器以確定其是否包含數(shù)據(jù);如果包括數(shù)據(jù),則提取數(shù)據(jù)并完成輸入。否則就中止輸入線程,并且通過鏈路提供足夠的新數(shù)據(jù)給d的輸入緩沖器來釋放該線程。
當(dāng)經(jīng)由c輸出最終的EOM、 EOP或EOD令牌時,將EOM/EOP/EOD轉(zhuǎn)發(fā)至開關(guān),以及修改輸出文件中的第c個入口來記錄不再連接通道末端。當(dāng)鏈^4妄收EOM/EOP/EOD時,它們被轉(zhuǎn)發(fā)至d并且鏈路被切斷。應(yīng)當(dāng)注意,有利地,通道末端的相同^L制既用于同一處理器上的各線程間的通信,也用于不同處理器上的線程之間的通信。重要的是,這還意味著通道末端的地址(即通道末端ID)是全系統(tǒng)的(system wide )。也就是i兌,每個通道末端ID在互連的處理器的整個系統(tǒng)中(諸如在陣列200中)都是唯一的。因此,在整個系統(tǒng)中資源有效地共享,使編程變得更容易。
通道末端和鏈路可以由多個線程共享。這有益于允許將祐:使用的單個通道末端從任何數(shù)目的線程接收消息。為了做到這一點(diǎn),每個輸入通道末端都具有聲明標(biāo)記43,以指示該輸入通道末端當(dāng)前是否正在使用。如果當(dāng)輸出頭時在消息的開始處發(fā)現(xiàn)其正在使用,則中止輸出線程;當(dāng)4妾下來EOM、 EOP或EOD令牌4吏通道末端被切斷(因此適用于新的連接)時,將釋放輸出線程。類似的機(jī)制用于每個鏈路218、 220、 222,以允許在多個輸出線程之間共享鏈路。
另外,應(yīng)當(dāng)再次注意,通道是雙向的。由于每個通道末端都具有輸入和輸出能力(狀態(tài)以及數(shù)據(jù)緩沖器),因此其可以同時用于輸入和輸出。這意味著任何通道都可以用于提供一對完全獨(dú)立的單向通道,以及在不同處理器中的各線程之間的通道的情況下,這些通道將按相反方向操作??蛇x地,通道可以用于提供將在兩個線程之間祐 使用的雙向ii/f言線路,其中,可以隨著線禾呈的繼續(xù)而改變通^言的方向。
另外,應(yīng)當(dāng)注意, 一旦建立雙向通道,單個標(biāo)識符(本地通道末端ID)可以用于識別雙向通道,而不是必須使用本地和遠(yuǎn)程通道末端ID。結(jié)合提供通道末端42的集合,這使得通道的通信非常高效。通過以下特征使得使用單個標(biāo)識符變得容易-在本地通道末端中通過通道末端標(biāo)識符寄存器CEID 41來存 儲目的頭??梢蕴峁┲噶钣糜诿鞔_地設(shè)定CEID寄存器41。這可以 是下文描述的SETD指令。
-無論何時在非活動(即未連接)通道上執(zhí)行輸出,而不是執(zhí) 4亍必須由單個指令輸出的頭時,都使處理器開關(guān)214首先從CEID 寄存器41自動發(fā)送頭。非活動通道是自從其最后一次被切斷就沒有 執(zhí)行過輸出的通道。(應(yīng)當(dāng)注意,如果EOM僅是^皮發(fā)送來作為確認(rèn) 的令牌,即,那么仍然首先自動輸出頭)。
-4吏EOM (或EOP或EOD )令牌將通道返回到非活動(即切 斷)狀態(tài)。
這使在合適的時間建立通道,即它們在當(dāng)程序中被聲明時,并 JU妄著4又需要傳遞(pass around)本地通道末端;也址以識別通道。 即4吏對于雙向通道這也是正確的,即線禾呈可以4吏用單個標(biāo)識符用于 發(fā)送和接收。
下文進(jìn)一步討i侖處理器間通信令牌的細(xì)節(jié),^旦為了完整,首先 描述用于控制端口和通道的一些指令細(xì)節(jié)。由于編程方法基于線程 的結(jié)構(gòu),因此接口處理器可以支持多種編程方法。接口處理器可以
以被編程為幾百個通信部件的并行陣列的一部分。提供了支持這些 選擇的指令組。該指令組包括支持初始化、終止、開始和停止線程
的以及提供輸入/輸出通信的特定指令。輸入和輸出指令允許與外部 設(shè)備非常快地通信。它們支持高速、低等待時間的輸入和輸出,以 及支撐高水平的并發(fā)編程技術(shù)。將在下文中更充分地討論它們在本 文處理端口和通道活動的應(yīng)用,其中描述了可以用于實(shí)施本發(fā)明的 示例指令。首先資源通過使用用于指定所需資源類型的GETR指令專供線 程之用,并且通過使用FREER指令被再次釋放。
可以以輸入或輸出才莫式4吏用端口。在輸入才莫式中,條件可用來 過濾傳遞到線程的lt據(jù)。如下面所述,在數(shù)據(jù)可用時,端口可用來 生成事件或中斷。這允許線程監(jiān)視多個端口,以僅服務(wù)于就緒的端 口。接著,輸入和輸出指令(IN和OUT)可以用于傳遞送往或來 自立即準(zhǔn)備就緒的端口的數(shù)據(jù)。在這種情況下,IN指令輸入以及零 擴(kuò)展(zero-extends )來自n位端口中的n個最不重要位,以及OUT 指令輸出這n個最不重要的位。
另外兩個指令(INSHR和OUTSHR )優(yōu)化數(shù)據(jù)的傳遞。INSHR 指令將寄存器內(nèi)容(content)向右移動n個位,用從n位端口輸入 的數(shù)據(jù)填補(bǔ)最左邊的n個位。OUTSHR指令將數(shù)據(jù)的n個最不重要 的位輸出至n位端口,并且將寄存器內(nèi)容向右移動n個位。
OUTSHR port, s port <1 s[bits 0 for width(port)]; 從端口輸
出
s <~ s >> width(port) 移位 INSHR port, s s <~ s 〉> width(d ); 移4立 port O s[bits (bitsperword — width(d)) for width(d)] 乂人端口 #T
入
其中"I>,,表示輸入,"<]"表示輸出。
在^f吏用端口前必須配置端口 。其可以通過^f吏用用于定義幾種獨(dú) 立的端口設(shè)置的SETC指令來配置。每種設(shè)置都具有缺省模式,且 僅在需要不同模式時配置端口 。SETC port, mode port[ctrl] <~ mode i殳置端口4空制
下文描述了 SETC模式設(shè)置的作用。每種設(shè)置中的第一入口都 是缺省模式。
模式 作用
OFF
端口不是活動的,管腳高阻抗
ON
活動的
IN
端口為^r入
OUT 端口為庫餘出(^f旦豐t入返回當(dāng)前管腳^直(pin value))
EVENT 端口將引起事件
INTERRUPT 端口將引發(fā)(raise )中斷
DRIVE
管腳凈皮高電平和〗氐電平驅(qū)動
PULLDOWN 管腳下拉電平0位,否則為高阻抗
PULLUP
管腳上拉電平為l位,否則為高阻抗
UNCOND
端口始終就緒,輸入立即完成
EQUAL NE
當(dāng)端口值等于其DATA值時端口就緒
當(dāng)端口值不同于其DATA值時端口就緒
TRANSITION 當(dāng)端口值朝著其DATA值改變時端口就緒GR 當(dāng)端口值大于其DATA值時端口就緒
LS 當(dāng)端口值小于其DATA值時端口就緒
DRIVE、 PULLDOWN和PULLUP才莫式4叉在端口方向?yàn)镺UT 時是相關(guān)的。TRANSITION條件僅與一位端口相關(guān),以及GR和LS 條件僅與 一位以上的端口相關(guān)。
每個端口都具有就緒位37,其用來控制通過端口的ft據(jù)流量, 以及定義端口是否能夠完成輸入或輸出指令。根據(jù)端口配置以不同 方式設(shè)置就緒位。當(dāng)執(zhí)行SETC、 SETD或SETV指令中的任意一個 時,便清除就緒位。
輸入模式中的端口可被配置成用于執(zhí)行條件輸入。所述條件過 濾輸入數(shù)據(jù),以便僅滿足條件的數(shù)據(jù)返回到程序。當(dāng)設(shè)置條件時, 僅在端口準(zhǔn)備就緒時完成IN和INSHR指令。如上所述,在未就緒 的端口上執(zhí)行輸入指令將中止線程。當(dāng)端口準(zhǔn)備就緒時,端口便設(shè) 置向線程調(diào)度器發(fā)送信令的其就緒位。然后線程調(diào)度器通過重啟執(zhí) 行單元16的流水線中的相關(guān)指令,或者通過重新執(zhí)行指令,即通過 將指令重發(fā)至流水線來繼續(xù)線程。當(dāng)端口準(zhǔn)備就緒時,返回數(shù)據(jù)且 清除就緒位37。
一旦設(shè)置了端口就緒位,就捕獲(trap)滿足條件的凄t據(jù)值, 從而即使端口上的值隨后改變,軟件也獲得了滿足條件的值。當(dāng)執(zhí) 行IN或INSHR指令以及設(shè)置就緒位時,則返回數(shù)據(jù)以及清除就緒 位。如果沒有設(shè)置就緒位,則中止線程直到設(shè)置就緒位。如果設(shè)置 了條件,則接著將數(shù)據(jù)與條件相比較,并且僅在滿足條件時設(shè)置該 就緒位。
39在執(zhí)行OUT或OUTSHR指令時,如果就緒位被清除,則端口 提取數(shù)據(jù)并設(shè)置就緒位。如果設(shè)置了就緒位,則中止線程直到就緒 4立#皮端口清除。
線程間的通信使用通道來執(zhí)行,所述通道提供末端之間的全雙 工^t據(jù)傳遞,這兩個末端都在同一處理器上,或者在同一芯片的不 同處理器上,或者在不同芯片的處理器上。通道在兩個通道末端之 間承載由數(shù)據(jù)和控制令牌構(gòu)成的消息。控制令牌用于編碼通信協(xié)議。 盡管大多數(shù)控制令牌可用于軟件,但也為編碼由互連硬件使用的協(xié) 議保留了 一些數(shù)目的控制令牌,且不能使用指令來發(fā)送和接收這些 保留的控制令牌。
如下所述,當(dāng)數(shù)據(jù)可用時,通道末端可以用于生成事件和中斷。
這就允許線程監(jiān)#見幾個通道和/或端口 ,用于4義月良務(wù)于那些就緒的端 口 。
為了在兩個線程之間通信,需要分配兩個通道末端,每個線程
具有一個通道末端。這通過^f吏用GETRCHAN指令來完成。然后必
須將第一線程的通道末端的標(biāo)識符交給第二線程,反之亦然。然后
兩個線程可4吏用資源標(biāo)識符,以通過使用輸出和輸入指令來傳遞消 自
OUTT d <] s OUCT d O s INT d !> s OUT d <1 s IN d D> s
輸出令牌
輸出控制令牌
輸入令牌
輸出數(shù)據(jù)字
輸入數(shù)據(jù)字
TESTCT d<~isctoken ( s )為控制令牌測試TESTWCT d<~hasctoken (s) 為控制令牌測試字
每條消息以包含另 一線程的資源標(biāo)識符的頭開始。其后通常是 一系列數(shù)據(jù)或控制令牌,并且以結(jié)束控制令牌或消息(EOM)控制 令牌結(jié)束。OUT和IN指令用于通過通道傳遞數(shù)據(jù)字;OUTT、 INTT、 OUTTSHL以及INTTSHL指令用于傳遞凄t凌居的字節(jié)。OUTTSHL和 INTTSHL是移位指令,其用于優(yōu)化以字的最重要字節(jié)開始的通信, 并且主要用于在消息頭中構(gòu)造路由地址。
OUTTSHL channel, s channel <] s[bits (bps _ 8) for 8];
s <~ s 8 /人通道豐命出并移^f立
INTSHL channel, ss <~ s《8; 移位并
channel > s[bits 0 for 8] 從通道輸入
通道末端具有能夠保存足夠多令牌的緩沖器,以允許至少緩沖 一個字。如果在通道太滿而不能提取數(shù)據(jù)時來執(zhí)行輸出指令,則接 著中止執(zhí)行指令的線程。當(dāng)通道中有足夠空間用于成功完成指令時, 則重新開始線程。同樣地,當(dāng)執(zhí)行指令且沒有足夠的可用數(shù)據(jù)時, 則中止線程,并且當(dāng)有可用足夠數(shù)據(jù)時重新開始線程。
為了在通道上發(fā)送控制令牌,使用了 OUTCT指令??刂屏钆?占用了通道中的存儲器的單個字節(jié)。在接收末端,軟件可以使用 TESTCT指令(其等待直到至少一個令牌可用)來檢驗(yàn)下一個字節(jié) 是否是控制令牌。也可以使用TESTWCT指令來檢驗(yàn)下一個字是否 包含控制令牌,該TESTWCT指令等待直到接收到至少一個控制令 牌或者直到接收到整個數(shù)據(jù)字為止。
在檢驗(yàn)令牌是控制令牌之后,可以使用INT接收控制令牌。一 旦接收到令牌,可能沒有方法來檢查該令牌是否是控制令牌。如果通道末端包含^t據(jù)和控制令牌的混合體,則IN指令會將它們?nèi)孔?為數(shù)據(jù)返回。
當(dāng)不再需要通道時,通過使用FREE CHAN指令釋放通道。否 則通道可用于另外的消息。
系統(tǒng)中的互連由所有通道共享。在處理器中不存在連接性的限 制,因此通道末端不必彼此斷開以允許互連共享。僅在目標(biāo)通道末 端與另一個通道末端共享時,通道末端必須斷開。
然而,當(dāng)在不同處理器上連4妄至通道末端時,這有益于確?;?聯(lián)與系統(tǒng)中的其他通道有效地共享。這通過將傳遞的凄t據(jù)劃分成信 息包和消息來完成。每個信息包或消息以頭開始,并以〗言息包結(jié)束 (EOP)或者EOM控制令W皁結(jié)束。
事件和中斷允許資源(端口和通道)自動將控制傳遞到預(yù)設(shè)的 事件處理器(event handler )。線程接受事件或中斷的能力由保存在 線程狀態(tài)寄存器SR (參見圖4)中的信息來控制,并且可以通過使 用TSE和TSD指令來明確控制。所述信息包括事件使能標(biāo)記(EE ) 和中斷使能標(biāo)記(IE)。
TSE s SR <~ SR v s 線禾呈狀態(tài)^f吏能 TSDs SR—SRa,s 線禾呈習(xí)犬態(tài)禁止 這些指令的操作數(shù)應(yīng)是以下之一 EE 使能或禁止事件 IE 使能或禁止中斷
在建立事件的同一范圍中處理這些事件。因此,對于所有線程 的狀態(tài)都有效的事件,允許線程快速響應(yīng)于事件。線程可以通過4吏
42用引起事件的端口同時留下一些或所有未改變的事件信息來執(zhí)行輸 入和輸出操作。這允許線程完成處理事件并立即等待另 一個類似事 件。
事件處理器的程序位置(location)必須在通過使用SETV指令 使能事件前設(shè)定。端口具有確定端口何時生成事件的條件,這些端 口通過使用SETC和SETD指令來設(shè)定。 一旦通道包含足夠多的數(shù) 據(jù)或具有接收用于輸出的數(shù)據(jù)的空間,則就認(rèn)為通道準(zhǔn)備就緒。
可以使用事件使能無條件(EEU)指令來使能特定端口或通道 生成事件,以及使用事件禁止無條件(EDU)指令來禁止特定端口 或通道生成事件。如果事件條件操作數(shù)為真,則事件使能真(EET) 指令使能事件,否則禁止事件;相反,如果事件條件操作數(shù)為假, 則事件使能假(EEF)指令使能事件,否則禁止事件。這些指令用 來優(yōu)化受保護(hù)輸入(guarded inputs )的實(shí)施。下面是用于在端口上 配置事件的一些示例指令格式,4旦應(yīng)當(dāng)理解,可以結(jié)合通道應(yīng)用同 樣的指令。
SETV port, v port[vector] <~ v i殳置事4牛矢量 SETD port, d port[data] —d i殳置事件凄t據(jù) SETC port,c port[ctrl]<~c i殳置事件4空制 EET port, b port [enable]— b; port[tid] <~ thread 事件4吏能真 EEF port, b port[enable]— ,b; port[tid] <~ thread 事4牛4吏能寸艮 EDU portport[enable]—false; port[tid] — thread 事4牛禁止 EEU portport[enable]— true; port[tid] <~ thread 事件使肖fe在一個或多個資源上已經(jīng)使能事件后,線程可以通過使用
WAITEU指令等4寺至少一個事件。這通過控制事件^皮傳遞到由相應(yīng) 的事件矢量指定的事件控制器可以導(dǎo)致事件立即發(fā)生,同時事件由 清除EE (事件使能)標(biāo)記禁止??蛇x地,可以暫停線程,直到事件 發(fā)生一一在這種情況下,將在事件發(fā)生時清除EE標(biāo)記,且線程繼 續(xù)執(zhí)行。
WAITET b if b then SR[EE] — true 如果真貝'J事件等待
WAITEF b if , b then SR[EE] <~ true 如果假貝'J事件等待
WAITEU SR[EE] <~ true 事件等待
CLRE SR[EE] — false; 為線禾呈禁止所有事件
forall port
if port[tid] 二.: thread then port[enable] <~ false
為了優(yōu)化重復(fù)等待一個或多個事件直到條件發(fā)生的常見情形, 提供了事件等待指令的條件形式。只要事件條件操作數(shù)為真, WAITET指令就等待,并且只要事件條件操作數(shù)為假,WAITEF就 等待。
通過單個CLRE指令可以禁止線程已使能的所有事件。這會禁 止在具有由線程所使能的事件的所有端口中生成事件。CLRE指令 還清除線程狀態(tài)寄存器中的事件使能狀態(tài)。
為了優(yōu)化線程對高優(yōu)先級資源的響應(yīng)性,在隨后開始使能端口 和/或通道以及使用其中一個事件等待指令之前,TSE EE指令首先
44可以用來在線程上使能事件。這樣,處理器可以按照優(yōu)先級順序掃 描資源。這可以使事件一被使能便被立即處理。
與事件相比,不在當(dāng)前范圍內(nèi)處理中斷,因此在執(zhí)行中斷控制
器之前必須保存當(dāng)前PC和SR (潛在地仍是一些或所有的其他寄存 器)。在資源r生成中斷時,自動發(fā)生以下動作
SAVEPC <~ PC; SAVESR <~ SR; SR[EE] <~ false; SR[IE] <~ false; PC <~ r[vector]
當(dāng)處理器完成這些動作時,可以由RFINT指令來4丸4亍中斷的線 程的執(zhí)行。
RFINT PC— SAVEPC; /人中斷返回 SR <~SAVESR
中斷可以中斷線程,同時暫停線程以等待事件。
現(xiàn)在返回到處理器間的通信,描述了用于這樣的通信中的數(shù)據(jù) 和4空制令片皁的細(xì)節(jié)。如前所述,每條鏈路218、 220、 222者IM吏用四 條線在每個方向上都有邏輯一線和邏輯零線,其中以"雙4九跡不 歸零"的方式傳遞各位,即通過邏輯一線上的轉(zhuǎn)換來發(fā)送邏輯一, 通過邏輯零線上的轉(zhuǎn)換來發(fā)送邏輯零。通過使用數(shù)據(jù)令牌來傳遞實(shí) 際數(shù)據(jù),每個數(shù)據(jù)令牌承載十位令牌中的八個位,并且每個數(shù)據(jù)令 牌通過使用控制令牌(每一個也承載十位令牌中的八個位)來傳遞控制信息。兩條軌跡在每個令牌的結(jié)尾都返回到靜止(零)狀態(tài)(除 非有錯誤)。
可以同時在兩個方向上承載數(shù)據(jù)(以及控制)。令牌可以用于傳
遞(transport)各種長度的信息包或消息。 一些控制令牌專供物理 鏈路控制(諸如流量控制、初始化以及復(fù)位)之用;以及其他控制 令牌可以用于軟件鏈路控制(更高的協(xié)議層)的軟件。
《木眠狀態(tài)。如圖9示意性示出的,以下述方式對令牌進(jìn)4亍編石馬。
每個令牌900包含由信息部分901和第一附加位902組成的第 一部分。信息部分優(yōu)選地是一個字節(jié)(八個位)并且是由令牌所承 載的實(shí)際數(shù)據(jù)或控制信息。第一附加位指示令牌是數(shù)據(jù)令牌還是控 制令牌。
因此第一部分為九個位長,即是一個奇數(shù)。隨后傳遞奇數(shù)個位, 這會有兩種可能
(a) 已經(jīng)傳遞了奇數(shù)個邏輯零位和偶數(shù)個邏輯一位后,在這種 情況下,在零線上的奇數(shù)個轉(zhuǎn)換使零線處于高電壓,在一線上的偶 數(shù)個轉(zhuǎn)換使一線處于低電平;或者
(b) 已經(jīng)傳遞了偶數(shù)個邏輯零位和奇數(shù)個邏輯一位后,在這種 情況下,在零線上的偶數(shù)個轉(zhuǎn)換使零線處于低電壓,在一線上的奇 數(shù)個轉(zhuǎn)換使一線處于高電平。
因此,為了確保鏈路返回到休眠狀態(tài),即確保一線和零線都返 回到低電壓,每個令牌900都包括第二部分,在這種情況下,第二 部分是第二附加位903。在上述(a)的情況下,第二附加位是邏輯 零,在上述(b)的情況下,第二附加位是邏輯一。在任一種情況下,令牌中邏輯零和邏輯一的總數(shù)都是偶數(shù),并且都將鏈路返回到休眠 狀態(tài)U叚設(shè)零線和一線在傳遞令牌之前都從低電壓開始)。
在第一部分具有奇數(shù)個位的情況下(在這種情況下,是信息位
901的字節(jié)和第一附加位卯2),則可以-f又通過對第一部分進(jìn)4于逐位 XOR來非常高效地計算第二附加位903。為了快速計算,優(yōu)選地這 可以由互連204或處理器14中的XOR邏輯電路來執(zhí)行,而不是在 軟件中執(zhí)行。
關(guān)于傳遞順序,優(yōu)選地首先傳遞第一附加位902,隨后傳遞信 息部分901,然后傳遞第二附加位903。
但是應(yīng)當(dāng)注意,將第一附加位902和第二附加位903置于何處 實(shí)際上是無關(guān)緊要的。第 一附加位和/或第二附加位可以被置于令牌 的開始處、末端或者甚至在中間的某個位置——只要接收側(cè)知道到 哪去尋找每一位。
上文描述了具有奇數(shù)個位的第一部分(即信息部分加上第一附 加位)。但是應(yīng)當(dāng)注意,如果第一部分具有偶數(shù)個位(即如果沒有第 一附加位或者使用奇數(shù)個信息位),那么可以考慮(calculate)第二 部分具有兩個位,以確保鏈路返回到休眠狀態(tài)。
另外,在每個方向上僅使用兩條線的上述兩線方案是一個相對 基本的實(shí)施例,其4又允許在任何給定方向上進(jìn)4亍串4亍通信。優(yōu)選地, 實(shí)際上可以在更慢的串行模式和更快的寬模式之間切換鏈路。如下 所述,寬才莫式^f吏用與兩線串行方案不同的編碼方案。
在寬模式中,每條鏈路218、 220、 222都使用"五個中的一個 (one-of-five ),,代碼。才艮據(jù)五個中的一個編碼,五條線i殳置在每條 鏈路的每個方向中(因此為包括兩個方向的每條鏈路總共提供了十 條線)。通過任何時間僅在五條線中的一條上發(fā)送轉(zhuǎn)換而在該鏈路上傳遞代碼,使得(giving)將全部可能的五個代碼映射至不同的含義(與兩線方案中的兩個K碼相反,借由兩線方案,兩個"兩個中的一個"代Z馬-f又直4姿映射至邏輯一或者邏輯零)。例如,可以以如下方式映射代碼
代碼 含義OOOOl值00
00010 值Ol
00100 值10
01000 值11
10000 換碼
(上面"代碼"標(biāo)題下方的"1"指示相應(yīng)鏈路線上的上升或者
下降邏輯轉(zhuǎn)換,并且"o"指示沒有邏輯轉(zhuǎn)換)。
然后,這種代碼序列或者"符號,,用于編碼令牌。經(jīng)過四個周
期,可以編碼54個令牌,即625個,這對編碼數(shù)據(jù)令牌和控制令牌來說綽綽有余。例如,如果w是符號i中的值,&是符號i中的轉(zhuǎn)義碼
令牌V0V1V2V3
C0 ViV2V3
V0G1V2V3
V0VlC2V3
使用
256個lt據(jù)令牌64個4空制令片牟192-25564個控制令牌128-19164個控制令牌64-127值得注意的是,還存在其中多于一個符號是轉(zhuǎn)義符的少量附加代碼。這些代碼可以用于將某些控制令牌(諸如EOM )編碼為例如e。e!V2S3,其中V2表示發(fā)送EOM, s3被選擇用于迫使所有信號線為零,以將鏈路返回到休眠狀態(tài)。附加符號S3可以是任何東西,以及可以包括在五條線的任一條線上的一個以上并行轉(zhuǎn)換(與限制只在五條線中的一條上進(jìn)行單個轉(zhuǎn)換的值和換碼的代碼v和e不同)。也就是說,按需要選擇轉(zhuǎn)換S3,以將這些線返回至休眠狀態(tài)。
通過4吏用上述示例,兩個連續(xù)(consecutive)的4爭義石馬
是在第一線上產(chǎn)生偶數(shù)個轉(zhuǎn)換,并且在任何其他線上沒有轉(zhuǎn)換。然
后值v2在第二至第五線中的 一條線上產(chǎn)生額外的轉(zhuǎn)換。因此例如,如果所有的線都從邏輯低開始,然后e^將使所有的線處于邏輯低,
隨后的V2將使第二至第五線中的一條線處于邏輯高電壓。因此,選擇最終代碼S3作為與V2相同的代碼,以在同 一條線上執(zhí)行另 一轉(zhuǎn)換,
從而將這條線返回到邏輯低電壓。但是如果所有的線都不從邏輯低
開始,那么線通??梢蕴幱谌魏螤顟B(tài),并且將適當(dāng)選擇S3,如果必
要,包括在五條線中的任何一條線或者所有線上的多于一個的并行轉(zhuǎn)換。
有利;也,可以在不工作時(on the fly)在兩線和五線編石馬之間轉(zhuǎn)化(translate)數(shù)據(jù)。
五線方案優(yōu)選于兩線方案用作可選模式,但是五線方案也可以被單獨(dú)使用或者作為另 一個鏈路模式方案的替換。
例如,另一種方案可以是三線方案,該方案具有在每個方向上為每條鏈路218、 220、 222提供的三條線,以及"三個中的一個(one-of-there ),,代碼用于傳遞數(shù)據(jù)令牌和控制令牌。在這種情況下,
49僅通過在三條線中的一條線上發(fā)送轉(zhuǎn)換來傳遞代碼。在一個示例中,
可以連續(xù)傳遞多對代碼,以對值或者換碼進(jìn)4亍編碼,如下
代碼1代碼2含義
001001值000
010001值OOl
100001值010
001010值011
010010值100
100010值101
001100值110
010100值111
100100換碼
(再次,上面'M、石馬"標(biāo)題下方的"1"指示相應(yīng)鏈路線上的上
升或者下降邏輯轉(zhuǎn)換,并且"o"指示沒有邏輯轉(zhuǎn)換)。
在六個握手(handshake)周期中,該方案可以編碼36個令牌, 即729個,這對用于編碼數(shù)據(jù)令牌和控制令牌來說綽綽有余。還有, 其中一個轉(zhuǎn)義碼可以用來提供多個歸零的令牌(諸如EOM )作為例
如VoVie2V3V4V5,其中選擇V3 , V4,以及V5迫^f吏所有4言號線為零。
現(xiàn)在描述了數(shù)據(jù)令牌和控制令牌的示例。應(yīng)該理解,可以使用 任何適當(dāng)?shù)木幋a方案(包括上述的兩線、三線或者五線方案)來編 碼這些令牌。
50傳統(tǒng)上,可以只在硬件上執(zhí)行電路板或者芯片上的處理器之間 的互連控制,且其對專欠件是不可見或不可訪問的。然而,才艮據(jù)本發(fā) 明的多個方面,控制令牌可以分類為"結(jié)構(gòu)定義,,(即硬件定義)或
者"l欠件定義"的令力牟。如果一個或多個開關(guān)214、 216或互連204 中的鏈路218、 220、 222包含硬件邏輯以檢測令牌值,以及響應(yīng)于 被觸發(fā)以控制互連204的某方面,則控制令牌是結(jié)構(gòu)定義的。也就 是說,結(jié)構(gòu)定義的控制令牌的功能由互連204中的硬件邏輯預(yù)先確 定。觸發(fā)硬件邏輯以執(zhí)行該功能,而不需要包含在令牌的目的處理 器14上運(yùn)行的軟件。盡管如此,本發(fā)明還允許軟件訪問某些結(jié)構(gòu)定 義的控制令牌,即,某些結(jié)構(gòu)定義的控制令牌還可以由軟件來解釋, 以便在軟件中提供如軟件開發(fā)者所定義的附加功能。如果沒有檢測 令牌值或者作用于令牌值的這種硬件邏輯,則控制令牌是軟件定義 的,控制令牌僅由接收處理器14上運(yùn)行的軟件來解釋。軟件定義的 控制令牌從不由互聯(lián)204中的硬件來解釋,因?yàn)楦鶕?jù)定義沒有如此 解釋的邏輯。
在實(shí)施例中,控制令牌實(shí)際上被劃分為四組應(yīng)用令牌、特殊 令牌、特權(quán)令牌、以及硬件令牌。優(yōu)選地,在控制令牌的八位部分 901中,值0-127用于編碼應(yīng)用令牌,值128-191用于編碼特殊令牌, 值192-233用于編碼特權(quán)令牌,以及值224-255用于編碼硬件令牌, 但是根據(jù)專用要求也可以實(shí)施其他組合。四種不同類型的控制令牌 如下。
-應(yīng)用令牌,由軟件定義、從不由硬件解釋。它們是用來由編 譯器或應(yīng)用軟件使用,以有助于數(shù)據(jù)結(jié)構(gòu)的編碼以及專用協(xié)議的實(shí) 施。
-專用令牌,由結(jié)構(gòu)定義、可以由硬件或軟件解釋。它們用于 纟會出/>用數(shù)據(jù)類型和結(jié)構(gòu)的標(biāo)準(zhǔn)編碼,用于編碼凄t據(jù)、程序和通道 傳遞協(xié)議。-特權(quán)令牌,由結(jié)構(gòu)定義、可以由硬件或特權(quán)軟件解釋。它們 用于執(zhí)行包括硬件資源共享、控制、監(jiān)控以及調(diào)試的系統(tǒng)功能。試 圖傳遞送往或來自無特權(quán)軟件的特權(quán)令牌中的一個將導(dǎo)致異常。
-》更件令牌,^又由硬/HH吏用。試圖傳遞送往或來自專t件的;更件 令牌中的一個將導(dǎo)致異常。
還根據(jù)本發(fā)明的多個方面,在軟件中構(gòu)造包括控制令牌和數(shù)據(jù) 令牌的消息。如上所述,通常電路板或芯片內(nèi)的物理互連的控制可 以保存互連中的專用硬件的任務(wù)。也就是說,用于控制物理互連的 信號可以由互連中的石更件生成,而不由處理器上運(yùn)4亍的4欠件生成。 例如,這種控制可以包括訪問開關(guān)和鏈路的控制寄存器。然而,根 據(jù)本發(fā)明,數(shù)據(jù)令牌和控制令牌,以及結(jié)構(gòu)定義和軟件定義的控制
令牌都可以從由執(zhí)行單元16執(zhí)行的指令(OUTCT指令)的操作數(shù) 輸出至互連204上。這些操作數(shù)可以是從指令本身直接讀取的立即 操作數(shù),也可以是從由相關(guān)指令指定的操作數(shù)寄存器OP中讀取的 操作數(shù)。 一個可選的但不是優(yōu)選的選擇可以是從由指令指定的存儲 器地址中讀取數(shù)據(jù)令牌或控制令牌。只有硬件令牌從不由軟件生成, 并JU又用于互連石更件電路。
現(xiàn)在討論不同類型的控制令牌的一些示例。應(yīng)用令牌沒有預(yù)定 的功能,并且可以用于軟件開發(fā)者選擇的任何目的。如上所述,可 以i殳想,其可以由用于編碼凄t據(jù)結(jié)構(gòu)和^M于專用協(xié)i義的編譯器或應(yīng) 用使用。
專用令牌的示例是 EOM 消息結(jié)束 EOP 信息包結(jié)束 EOD 數(shù)據(jù)結(jié)束
52READ 從遠(yuǎn)程存儲器讀取 WRITE 寫入遠(yuǎn)程存儲器
ACK 確iU喿作成功完成 NACK 確i人存在4昔誤
在這里使用了動態(tài);洛由(即分組交換路由(packet switched routing)),連接由頭令牌或令牌建立,并且由EOM、 EOP或者EOD 令牌切斷。應(yīng)當(dāng)注意,頭令牌實(shí)際上是數(shù)據(jù)令牌,但開關(guān)218、 220、 222包含配置為當(dāng)從未連接的通道末端40輸出時將數(shù)據(jù)令牌識別為 頭令牌的邏輯。
EOM、 EOP或者EOD令牌是結(jié)構(gòu)定義的,因?yàn)樗鼈兠總€都觸 發(fā)互連204中的石更件邏輯,以獨(dú)立地執(zhí)行在目的處理器14上運(yùn)行的 任何軟件的特定功能,也就是觸發(fā)開關(guān)218、 220、 222來切斷通道。 至于涉及到互連石更件,EOM、 EOP或者EOD令牌是4艮難區(qū)分的。 然而,由于4欠件可訪問這些令牌,l欠件開發(fā)者可以4吏用它們,以在 軟件中具有不同含義。因此例如,軟件開發(fā)者可以通過使用EOP令 牌來選擇將消息細(xì)分為信息包,以及通過〗吏用EOD令牌在信息包中 描繪這些令牌。
一組控制令牌用來提供數(shù)據(jù)通信和訪問協(xié)議。這些通常由軟件 解釋,并且包括用于訪問另一個瓦片的存儲器的操作(諸如READ 和WRITE )。如果在處理器14上存在i殳置為由涉及讀取或?qū)懭氲牧?牌觸發(fā)的特定硬件邏輯,則READ和WRITE令牌是結(jié)構(gòu)定義的。 可選地或另外地,可以通過使用應(yīng)用令牌來執(zhí)行讀或?qū)戭愋偷牟僮鳌m憫?yīng)于先前接收到的消息或信息包來傳遞ACK和NACK令牌, 以指示是否成功地作用于消息或信息包??蛇x地或另外地,可以通 過使用應(yīng)用令牌來執(zhí)行確認(rèn)類型操作。
在實(shí)施例中,特權(quán)令牌用于系統(tǒng)初始化、調(diào)試、監(jiān)控等等,示 例是
WRITEID寫入裝置標(biāo)識編號(identification number ) READID 讀取裝置^H只編號 READTY讀取裝置類型
WRITEC 寫入配置
READC 讀取配置
START 啟動裝置
STOP 停止裝置
QSTATUS查詢裝置狀態(tài)
WRITEID、READID令牌用于寫入和讀取送往或來自開關(guān)214、 216的控制寄存器的標(biāo)識編號。READTY令牌用于從其控制寄存器 讀取開關(guān)214、 216的類型。該類型指示開關(guān)是系統(tǒng)開關(guān)216還是處 理器開關(guān)214。每個開關(guān)214、216都由其標(biāo)識編碼和類型在陣列200 中來唯一確定。
54WRITEC和READC令牌用于寫入和讀取送往或者來自開關(guān) 214、 216的控制寄存器的配置信息。例如,該配置信息可以涉及由 開關(guān)使用的路由表或者涉及瓦片地址,并且例如這些令牌可以用于 對陣列200的初始設(shè)定。
START和STOP令牌用于^f吏能和禁止開關(guān)214、 216。
QSTATUS令牌用于查詢鏈路218、 220、 222的控制寄存器, 以確定它們的狀態(tài),例如確定鏈路是否在使用中(如果是,那么在 項IM、方向上)。
硬件令牌用于控制通信鏈路220、 222的操作。示例是
CREDIT 允許數(shù)據(jù)傳遞 LRESET 鏈路復(fù)位
產(chǎn)生CREDIT控制令牌,并且從接收鏈路220或222將其發(fā)送 至發(fā)送鏈路220或222,以表示接收器能夠接收令牌,且指示在接 收鏈路中可用的空間的令牌價值(worth)的凄史目。
出現(xiàn)錯誤后,可以通過鏈路生成并發(fā)送LRESET令牌來重新開 始鏈路220或222。鏈路通過發(fā)送回LRESET令牌而進(jìn)行答復(fù)。4又 在兩條鏈^各已經(jīng)發(fā)送并接收到LRESET令牌后才復(fù)位。應(yīng)當(dāng)注意, 如果兩條鏈路都嘗試同時發(fā)送LRESET令牌是無關(guān)緊要的。
在一個使用如上所述的五線方案的特別有利的實(shí)施例中, CREDIT令牌;故編碼為一個換碼、 一個值、另一個換碼、再一個相 同的值,例如,eoVle2v3,其中v!與V3是相同的值。以那樣的方式, 因?yàn)閮蓚€換碼符號總是在同 一條線上產(chǎn)生兩個相反的轉(zhuǎn)換,類似地, 兩個值符號總是在同 一條線上產(chǎn)生兩個相反的轉(zhuǎn)換,使鏈路處于與 傳遞CREDIT令牌之前相同的狀態(tài)。所以保證了 CREDIT令牌不改變?nèi)魏尉€的狀態(tài)。所以如果鏈路承載其他值,這些值將不受CREDIT 令牌的影響。CREDIT令牌可以高效地"通過"這些令牌。因此這 樣做是有用的,因?yàn)槠湓试S互連中的硬件將CREDIT令牌傳遞至各 處,而不必^旦心干擾軟件令牌或者鏈路上的其他值。由互連力更件進(jìn) 行的CREDIT令牌傳遞可以是完全自動的。
類似的i殳想可以應(yīng)用于^f吏用三線方案或者其他方案的CREDIT 令牌,只要可以構(gòu)造沒有全面影響鏈路狀態(tài)的令牌。
現(xiàn)在結(jié)合圖iO描述了軟件消息構(gòu)成的示例,其舉例說明了由一
個處理器14 (源處理器)^r出的讀取消息ioi,以i更讀耳又另一個處
理器14 (目的處理器)的存儲器24。
在操作中,在處理器14上運(yùn)行的代碼首先生成用于輸出至目的 處理器的頭102,所述頭用于指定目的處理器的地址,以^更以上述 方式創(chuàng)建通道。在這個示例中,頭包括兩個數(shù)據(jù)令牌。隨后,在生 成頭102之后,軟件生成READ控制令牌104,以便請求讀取目的 處理器的存儲器。該READ控制令牌由源處理器執(zhí)行的OUTCT指 令的操作數(shù)生成。并且該控制令牌告知目的軟件必須執(zhí)行什么功能。 隨后生成READ令牌,源軟件生成地址部分106和返回頭108,在 這個示例中,它們分別是四個令牌長以及兩個令牌長,每個令牌再 被OUTCT指令輸出。這兩部分106和108提供執(zhí)行請求所需要的 信息,即,要加載的字的地址以及數(shù)據(jù)必須返回到的處理器的地址。 在生成讀取地址106并返回頭108之后,軟件生成EOM控制令牌 110,以〗更關(guān)閉通道。
應(yīng)當(dāng)注意,在消息格式方面沒有限制關(guān)于地址必須是字對齊 ( -aligned )的,還是在本地存儲器中的偏移等等。這將取決于 消息的軟件處理。:i口圖11所示,成功讀取響應(yīng)消息111以由讀取"i青求消息101提 供的返回頭108開始。返回頭108后面是肯定應(yīng)答控制令牌ACK 112,以向源處理器指示讀取成功。隨后,在生成ACK令牌112之 后,目的軟件生成從目的處理器的存儲器地址(由地址部分106指 定)輸出的返回數(shù)據(jù)部分114。在生成ACK令牌112之后,軟件生 成EOM控制令牌116,以關(guān)閉通道。
如圖12所示,失敗讀取響應(yīng)消息121也以由讀取i青求消息101 提供的返回頭108開始。返回頭108后面是否定應(yīng)答控制令牌NACK 118,以向源處理器指示讀取不成功,即存在鋪-i吳,例如由于不存在 地址部分106所指定的地址。在這種錯誤的情況下,沒有必要返回 任何數(shù)據(jù),因此NACK 118的后面僅為隨后的EOM控制令牌,以 關(guān)閉通道。
如上所述,存在4吏用通道的三種方式流化的、分包化的以及 同步化的(同步化的通道是分包化的通道類型)。以下說明的是對令 牌組和指令組的一些進(jìn)一步的改進(jìn)(refinement),以使這些通信更 為高步文。
第一種改進(jìn)是提供關(guān)閉開關(guān)214、 216中的路線而對接收處理 器14不可見的(或者至少,其祐:接收處理器上執(zhí)行的輸入指令忽略) PAUSE控制令牌。PAUSE令牌是具有硬件令牌和專用令牌的特性 的一種特殊情況,其與硬件令牌相似而與專用令牌不同,接收處 理器上的軟件不可訪問PAUSE令牌;但是與硬件令牌不同而與專 用令牌相似,其可以由傳遞處理器上的軟件生成。這就意味著在接 收器中沒有任何特殊代碼的情況下,可以中止令牌流(stream)并 且可以臨時釋放互連路線。為了繼續(xù),發(fā)送器僅再次開始發(fā)送令牌。 如果目的通道末端在同一處理器上,則PAUSE不起作用。PAUSE 可以用作EOP令力皁的替才奐。第二種改進(jìn)是提供發(fā)送和檢查EOM令牌的快速方式。這通過 ^使用 一個;也址OUTEOM以及CHKEOM指令來實(shí)主見。OUTEOM輸 出EOM令牌。CHKEOM轉(zhuǎn)移(trap)除非所接收的下一個令牌是 EOM令牌。如果NT和IN指令用在EOM令牌上,則INT和IN指 令轉(zhuǎn)移。這些轉(zhuǎn)移除了由特定錯誤條件自動生成并且傳遞至特定轉(zhuǎn) 移矢量外,與中斷具有類似的作用。轉(zhuǎn)移的原理為本領(lǐng)域技術(shù)人員 所熟悉。
第三種改進(jìn)是提供OUTPAUSE指令,因此不需要單獨(dú)編碼 PAUSE令牌。
下面給出了用于建立以及控制通道的代碼序列的示例。在同一 處理器上的兩個線程之間建立通道如下
GETR CHAN cl GETR CHAN c2 SETD cl, c2 SETD c2, cl
當(dāng)通道被初始化時,則將通道末端標(biāo)識符cl或c2傳遞至另一 個線程。
當(dāng)通過執(zhí)行以下代碼引導(dǎo)(booting)遠(yuǎn)程處理器時,可以建立 遠(yuǎn)禾呈通道,即在不同處理器上的線禾呈之間的建立通道
GETR CHAN, cl
然后發(fā)送引導(dǎo)程序,該引導(dǎo)程序,包括GETR CHAN, c2 SETD c2, cl
OUT c2, c 1 〃輸出通道末端的標(biāo)識符
以及最后扭J亍
IN c 1, c2 〃輸入通道末端的標(biāo)識符
SETD cl, c2
在上面的兩個示例中,《接著可以<又通過4吏用通道的一個末端的 標(biāo)識符來執(zhí)4于通4言。
現(xiàn)在描述了用于建立和控制三種不同類型的通道(流化的、分 包化的以及同步化的)的示例^碼。
可以僅使用輸出和輸入來操作流化通道c。 "pause (c)"(中止 通道)指令也是可用的,以便生成PAUSE令牌,這可以在任何時 間結(jié)束(breakup)傳遞,這對于輸入線程是不可見的。在高級代碼 方面,用于在流化通道上接收令牌的代碼可以像下面這樣
switch c=>〉 s case ctl... 〃如果是控制令牌1...
case ct2... 〃如果是控制令牌2...
default control... case dt 1 〃如果是數(shù)據(jù)令牌1...
59case dt2 〃如果是凄t據(jù)令牌2…
default data... 這些代^馬可以編譯為 TESTCT c, flag IN c, s
BFF flag, data 〃如果是數(shù)據(jù)令牌,跳轉(zhuǎn)至"數(shù)據(jù),,
BFUend 〃跳轉(zhuǎn)至"結(jié)束"
data:
end:
對于分包化通道c上的單向通信,在傳遞處理器P上的高級代
碼為
out(c)(...〉〃包括c上的輸出的指令序列
可以編譯為
OUTT c, token 1 OUTT c, token2
OUTEOM c(應(yīng)當(dāng)注意,在優(yōu)選實(shí)施例中,如上所述,OUTT沒有必要輸 出頭,因?yàn)楫?dāng)頭輸出至未連接的通道末端42時,CEID寄存器41 會自動傳遞頭)
以及在接收處理器Q上的高級代碼為
in(c){.,.} 〃包括c上的輸入的指令序列
可以編譯為
INT c, token 1 INT c, token2
CHKEOM c
應(yīng)當(dāng)注意,如果P發(fā)送太多令牌,Q的CHKEOM將轉(zhuǎn)移,如 果P發(fā)送太少令牌,則其中Q的一個輸入將轉(zhuǎn)移。因此,CHKEOM 指令強(qiáng)制實(shí)施處理器之間的通信的信息包結(jié)構(gòu)。
對于同步化通道c上的通信(分包化通道的類型),傳遞處理器 P上的代碼為
out(c) {...} 〃包括c上的輸出的指令序列 可以編譯為
OUTT c, token 1 OUTT c, token2
61OUTEOM c CHKEOM c
以及接收處理器Q上的高級代碼為
in (c) {...} 〃包括c上的輸入的指令序列 可以編譯為
INT c, token 1 INT c, token2
CHKEOM c
OUTEOM c
此外,應(yīng)當(dāng)注意,如果P發(fā)送太多令牌,則Q的CHKEOM將 轉(zhuǎn)移,且如果P發(fā)送太少令牌,則其中Q的一個輸入將轉(zhuǎn)移。還有, 直到P發(fā)送了其EOM, Q才能繼續(xù),以及直到Q發(fā)送了其EOM, P才能繼續(xù),因此P和Q是同步化的。也就是說,Q的CHKEOM 確保Q直到已接收到來自P的整個信息包才能響應(yīng),以及P的 CHKEOM確保P直到已接收到來自Q的整個應(yīng)答信息包(包括返 回EOM)才能繼續(xù)任何另外的通信。
在分包化的以及同步化的通信中,如果P和Q在兩個方向上通 信,則上述指-
應(yīng)該理解,^又通過示例的方式描述了上述實(shí)施例。在其他實(shí)施 例中,根據(jù)芯片所期望的規(guī)格,可以提供不同寄存器組以及指令組。 可以提供事件緩沖器38,(作為輸入緩沖器44的可選緩沖器或者除用于輸入緩沖器44外)用于通道末端42的輸出緩沖器46??梢曰?于來自除端口和通道外的其他源的活動來調(diào)度線程。已經(jīng)描述了通 道末端具有輸入緩沖器和輸出緩沖器,但是也可以使用單行通道末 端??梢栽谔幚砥鞯母鞑考g設(shè)置不同連接,和/或可以在各處理 器和/或各瓦片202之間設(shè)置互連204的不同布置??梢砸圆煌樞?生成和/或設(shè)置數(shù)據(jù)令牌和/或控制令牌。頭、消息、地址和/或令牌 可以是不同的長度,且可以操作不同數(shù)據(jù)量。還有,本發(fā)明不專門 用于具有移動應(yīng)用處理器的移動終端中。其^f也應(yīng)用和配置對本領(lǐng)i或 技術(shù)人員來說是顯而易見的。本發(fā)明的保護(hù)范圍不由所描述的實(shí)施 例限定,而是僅由權(quán)利要求限定。
權(quán)利要求
1.一種在處理器之間的鏈路上傳遞令牌的方法,所述鏈路包括一線和零線,其中,所述一線上的邏輯轉(zhuǎn)換指示邏輯一,所述零線上的邏輯轉(zhuǎn)換指示邏輯零,所述方法包括傳遞令牌的第一部分;以及傳遞所述令牌的第二部分,以確保所述令牌中的邏輯一位的總數(shù)是偶數(shù)、所述令牌中的邏輯零位的總數(shù)是偶數(shù),從而所述鏈路在所述令牌的結(jié)尾返回到休眠狀態(tài)。
2. 根據(jù)權(quán)利要求1所述的方法,包括確定傳遞數(shù)據(jù)令牌還是傳遞 控制令牌,其中,所述第一部分包括信息部分,用于在確定傳遞數(shù)據(jù)令牌的情況下傳送數(shù)據(jù), 在確定傳遞控制令牌的情況下傳送控制信息;以及第一附加 位,用于指示所述令牌是數(shù)據(jù)令牌還是控制令牌。
3. 根據(jù)權(quán)利要求1所述的方法,其中,所述鏈路在同一電路板或 芯片上的處理器之間。
4. 才艮據(jù)權(quán)利要求1所述的方法,其中,所述第一部分具有由偶數(shù) 個信息位和第一附加位組成的奇凄t個位,其中,所述第二部分 是第二附加位。
5. 根據(jù)權(quán)利要求4所述的方法,包括確定所述第一部分是否包含 偶數(shù)個為邏輯一 的位和奇數(shù)個為邏輯零的位,或者確定所述第 一部分是否包含奇數(shù)個為邏輯一位和偶數(shù)個為邏輯零的位;其中,在所述第一部分包含偶數(shù)個邏輯一和奇數(shù)個邏輯零 的條件下,所述第二部分是邏輯零位;以及在所述第一部分包含奇數(shù)個邏輯一和偶數(shù)個邏輯零的條 件下,所述第二部分是邏輯一位。
6. 4艮據(jù)4又利要求5所述的方法,包括通過對所述第一部分進(jìn)行逐 位XOR來計算所述第二部分。
7. 根據(jù)權(quán)利要求2所述的方法,其中,所述信息部分為八個位。
8. 根據(jù)權(quán)利要求4所述的方法,其中,在所述令牌內(nèi)的傳遞順序 是所述第一附加位、信息部分、然后是所述第二附加位。
9. 根據(jù)權(quán)利要求1所述的方法,其中,所述第一部分由在其中一 個所述處理器上執(zhí)行的軟件生成,所述第二部分由所述鏈路中 的硬件生成。
10. 根據(jù)權(quán)利要求9所述的方法,其中,所述第一部分是在所述處 理器之一上執(zhí)行的指令的操作數(shù)。
11. 根據(jù)權(quán)利要求2所述的方法,其中,所述令牌是結(jié)構(gòu)定義的控 制令牌,所述方法包括使用所述控制令牌來觸發(fā)所述互連中的 邏輯,以控制所述互連的部件。
12. 才艮據(jù)權(quán)利要求11所述的方法,包括通過使用在目的處理器上 執(zhí)行的軟件來接收所述結(jié)構(gòu)定義的控制令牌,以便在軟件中執(zhí) 行功能。
13. 根據(jù)權(quán)利要求12所述的方法,其中,所述結(jié)構(gòu)定義的控制令 令牌。 、 、 、 口 口 '
14. 根據(jù)權(quán)利要求2所述的方法,其中,所述令牌是軟件定義的控 制令牌。
15. 根據(jù)權(quán)利要求1所述的方法,其中,所述令牌在包括用于指定 目的處理器的一個或多個頭令牌的消息中被傳遞。
16. 根據(jù)權(quán)利要求1所述的方法,其中,在具有電路的互連上傳遞 所述令牌,所述電路包括開關(guān)和鏈路的系統(tǒng),所述鏈路連接在 陣列的兩個以上處理器之間。
17. —種設(shè)備,包括多個處理器以及所述處理器之間的鏈路,所述 鏈路包括一線和零線,其中,所述一線上的邏輯轉(zhuǎn)換指示邏輯 一,所述零線上的邏輯轉(zhuǎn)換指示邏輯零,其中,至少第一處理 器被配置為傳遞令牌的第一部分;以及傳遞所述令牌的第二部分,以確保所述令牌中的邏輯一位 的總數(shù)是偶數(shù)、所述令牌中的邏輯零位的總數(shù)是偶數(shù),從而所 述鏈路在所述令牌的結(jié)尾返回到休眠狀態(tài)。
18. 才艮據(jù)權(quán)利要求17所述的設(shè)備,其中,第一處理器被配置為確 定傳遞數(shù)據(jù)令牌還是傳遞控制令牌;以及其中,第一部分包括信息部分,用于在確定傳遞數(shù)據(jù)令 牌的情況下傳送數(shù)據(jù),在確定傳遞控制令牌的情況下傳送控制 信息;以及第一附加位,用于指示所述令牌是數(shù)據(jù)令牌還是控 制令牌。
19. 根據(jù)權(quán)利要求17所述的設(shè)備,其中,所述設(shè)備包括在同一電 路板或芯片中。
20. 根據(jù)權(quán)利要求17所述的設(shè)備,其中,所述第一部分具有由偶 凄t個信息位和第一附加位組成的奇凄t個位,其中,所述第二部 分是第二附加位。
21. 根據(jù)權(quán)利要求20所述的設(shè)備,其中,所述第一處理器被配置 為確定所述第一部分是否包含偶凄t個為邏輯一的位和奇婆史個 為邏輯零的位,或者確定所述第一部分是否包含奇數(shù)個為邏輯 一的位和偶^i:個為邏輯零的位;其中,在所述第一部分包含偶數(shù)個邏輯一和奇數(shù)個邏輯零 的條件下,所述第二部分是邏輯零位;以及在所述第一部分包含奇數(shù)個邏輯一和偶數(shù)個邏輯零的條 件下,所述第二部分是邏輯一位。
22. 根據(jù)權(quán)利要求21所述的設(shè)備,包括邏輯電路,其被配置為通 過》于所述第一部分進(jìn)4于XOR來計算所述第二部分。
23. 根據(jù)權(quán)利要求18所述的設(shè)備,其中,所述信息部分為八個位。
24. 根據(jù)權(quán)利要求20所述的設(shè)備,其中,所述令牌內(nèi)的傳遞順序 是所述第一附加位、信息部分、然后是所述第二附加位。
25. 根據(jù)權(quán)利要求17所述的設(shè)備,其中,所述第一部分由在所述 第一處理器上執(zhí)行的軟件生成,所述第二部分由所述鏈路中的 硬件生成。
26. 根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述第一部分是在所述 第一處理器上執(zhí)行的指令的操作數(shù)。
27. 根據(jù)權(quán)利要求18所述的設(shè)備,其中,所述令牌是結(jié)構(gòu)定義的 控制令牌,并且互連包括^皮配置為由所述控制令牌觸發(fā)以控制 所述互連的部〗牛的邏輯。
28. 根據(jù)權(quán)利要求27所述的設(shè)備,其中,第二處理器被配置為通 過使用在所述第二處理器上執(zhí)行的軟件來接收所述結(jié)構(gòu)定義 的控制令牌,以便在軟件中執(zhí)行功能。
29. 才艮據(jù)權(quán)利要求28所述的設(shè)備,其中,所述結(jié)構(gòu)定義的控制令 牌僅是對在所述第二處理器上執(zhí)行的特權(quán)軟件可訪問的特權(quán) 控制令牌。
30. 根據(jù)權(quán)利要求18所述的設(shè)備,其中,所述令牌是軟件定義的 控制令牌。
31. 4艮據(jù)權(quán)利要求17所述的設(shè)備,其中,所述第一處理器被配置 為在用于指定目的處理器的一個或多個頭令牌的消息中傳遞 所述令牌。
32. 根據(jù)權(quán)利要求17所述的設(shè)備,其中,互連包括開關(guān)和鏈路的 系統(tǒng),所述鏈^各連接在陣列的兩個以上處理器之間。
33. —種在處理器之間的鏈路上傳遞令牌的計算機(jī)程序產(chǎn)品,所述 鏈路包括一線和零線,其中,在所述一線上的邏輯轉(zhuǎn)換指示邏 輯一,在所述零線上的邏輯轉(zhuǎn)換指示邏輯零,所述程序包括當(dāng) 處理器執(zhí)4于以下步驟時所才丸4于的代石馬傳遞令牌的第一部分;以及傳遞所述令牌的第二部分,以確保所述令牌中的邏輯一位 的總數(shù)是偶數(shù)、所述令牌中的邏輯零位的總數(shù)是偶數(shù),從而所 述鏈路在所述令牌的結(jié)尾返回到休眠狀態(tài)。
34. —種設(shè)備,包括多個處理裝置以及用于在所述處理裝置之間進(jìn) 行鏈接的鏈接裝置,所述鏈接裝置包括用于通過邏輯轉(zhuǎn)換指示 邏輯一的邏輯一傳遞裝置以及用于通過邏輯轉(zhuǎn)換指示邏輯零 的邏輯零傳遞裝置,其中,至少第一處理裝置包括用于傳遞令牌的第一部分的傳遞裝置;其中,傳遞裝置還用于傳遞所述令牌的第二部分,以確係:所述令牌中的邏輯一位的總數(shù)是偶數(shù)、所述令牌中的邏輯零位 的總數(shù)是偶數(shù),從而所述鏈接裝置在所述令牌的結(jié)尾返回到休 眠狀態(tài)。
35. —種在處理器之間的鏈路上傳遞一個或多個令if皁的方法,其中,所述鏈路包括至少三條線,所述三條線被配置為根據(jù)編碼 方案傳遞令牌,從而這些線上的邏輯轉(zhuǎn)換的預(yù)設(shè)配置被用于發(fā)送各代碼,所述方法包括 遞令牌;以及在所述線上傳遞一個或多個附加^碼,以確〗呆在發(fā)送所述 一個或多個令牌以及附加代碼之后,每條線上的邏輯轉(zhuǎn)換的總 數(shù)將鏈路返回到休眠狀態(tài)。
36. 根據(jù)權(quán)利要求35所述的方法,其中,所述鏈路包括五條線, 所述線中的四條中的每一條上的邏輯轉(zhuǎn)換對相應(yīng)的值進(jìn)行編 碼,并且剩下的第五條所述線上的邏輯轉(zhuǎn)換發(fā)送轉(zhuǎn)義碼;并且 所述方法包括述第五條線上發(fā)送的轉(zhuǎn)義碼來傳遞數(shù)據(jù)令牌;以及通過傳遞從所述代碼中選出的代碼序列,包括使用所述第 五條線發(fā)送的所述轉(zhuǎn)義碼來傳遞控制令牌。
37. 根據(jù)權(quán)利要求35所述的方法,其中,所述一個或多個附加轉(zhuǎn) 換的發(fā)送包括傳遞至少一個所述代碼,以確保每條所述線上的 邏輯轉(zhuǎn)換的總數(shù)是偶數(shù)。
38. 根據(jù)權(quán)利要求35所述的方法,包括傳遞由所述鏈路生成的置 信令牌以指示所述鏈路的自由容量,所述置信令牌包括一對或 多對所述代碼,并且每對中的所述代碼是相同的,以便每條所 述線上的邏輯轉(zhuǎn)換的總數(shù)是偶數(shù)或者零,因此在傳遞置信令牌 之后鏈路的狀態(tài)不受影響。
39. —種i殳備,包4舌多個處理器以及在所述處理器之間的鏈3各,所 述鏈路至少包括三條線,所述三條線;故配置為4艮據(jù)編碼方案來 傳遞一個或多個令牌,從而這些線上的邏輯轉(zhuǎn)換的預(yù)設(shè)配置被 用于發(fā)送各代碼,至少第一個所述處理器被配置為通過在所述線上發(fā)送從所述代碼中選出的代碼序列來傳 遞令牌;以及在所述線上發(fā)送一個或多個附加代碼,以確保在發(fā)送所述 一個或多個令牌以及附加轉(zhuǎn)換之后,每條線上的邏輯轉(zhuǎn)換的總 數(shù)將鏈路返回到休眠狀態(tài)。
40. 根據(jù)權(quán)利要求39所述的設(shè)備,其中,所述鏈路包括五條線, 所述線中的四條中的每一條上的邏輯轉(zhuǎn)換用于對相應(yīng)的值進(jìn) 行編碼,并且剩下的第五條所述線上的邏輯轉(zhuǎn)換發(fā)送轉(zhuǎn)義碼; 所述第一處理器被配置為述第五條線上發(fā)送的轉(zhuǎn)義碼來傳遞數(shù)據(jù)令牌;以及通過傳遞從所述代碼中選出的代碼序列,包括使用所述第 五條線發(fā)送的所述轉(zhuǎn)義碼來傳遞控制令牌。
41. 根據(jù)權(quán)利要求39所述的設(shè)備,其中,所述第一處理被配置為 通過傳遞至少一個所述代碼來發(fā)送一個或多個附加轉(zhuǎn)換,以確 保每條所述線上的邏輯轉(zhuǎn)換的總數(shù)是偶數(shù)。
42. 根據(jù)權(quán)利要求39所述的設(shè)備,其中,所述鏈路被配置為生成 置信令牌以指示所述鏈路的自由容量,所述置信令牌包括僅一對或多對所述代碼,每對中的兩個代碼是相同的,以便每條所 述線上的邏輯轉(zhuǎn)換的總數(shù)是偶數(shù)或者零,因此在傳遞置信令牌 之后鏈路的狀態(tài)不受影響。
43. —種在處理器之間的鏈i 各上傳遞一個或多個令牌的計算才幾程 序產(chǎn)品,其中,所述鏈路包括至少三條線,所述三條線被配置 為根據(jù)編碼方案來傳遞令牌,從而所述線上的邏輯轉(zhuǎn)換的預(yù)設(shè) 配置用于發(fā)送各代碼,所述程序包括當(dāng)處理器執(zhí)行以下步驟時 所執(zhí)行的代碼遞令牌;以及在所述線上傳遞一個或多個附加^碼,以確^呆在發(fā)送一個 或多個令牌以及附加代碼之后,每條線上的邏輯轉(zhuǎn)換的總數(shù)將 鏈路返回到休眠狀態(tài)。
44. 一種設(shè)備,包括多個處理裝置以及所述處理裝置之間的鏈接裝 置,所述鏈接裝置至少包括三個傳遞裝置,所述傳遞裝置用于 根據(jù)編碼方案傳遞一個或多個令牌,從而所述傳遞裝置上的邏 輯轉(zhuǎn)換的預(yù)設(shè)配置被用于發(fā)送各代碼,至少第一個所述處理裝 置用于通過在所述傳遞裝置上發(fā)送從所述代碼中選出的代碼序 列來傳遞令牌;以及在所述傳遞裝置上發(fā)送一個或多個附加代碼,用于確保在 發(fā)送所述一個或多個令牌以及附加轉(zhuǎn)換之后,每個所迷傳遞裝 置上的邏輯轉(zhuǎn)換的總數(shù)將鏈接裝置返回到休眠狀態(tài)。
全文摘要
本發(fā)明提供了一種在處理器之間的鏈路上傳遞一個或多個令牌的方法,從而這些線上的邏輯轉(zhuǎn)換的配置被用于發(fā)送各代碼。該方法包括通過在所述線上發(fā)送從所述代碼中選出的代碼序列來傳遞令牌;以及在所述線上傳遞一個或多個附加碼,以確保在發(fā)送所述一個或多個令牌和附加碼之后,每條線上的邏輯轉(zhuǎn)換的總數(shù)將鏈路返回到休眠狀態(tài)。
文檔編號G06F13/36GK101689159SQ200880023610
公開日2010年3月31日 申請日期2008年5月27日 優(yōu)先權(quán)日2007年7月6日
發(fā)明者邁克爾·戴維·梅 申請人:Xmos有限公司