自動構(gòu)建無死鎖互連的制作方法
【專利摘要】本發(fā)明涉及自動構(gòu)建無死鎖互連。本發(fā)明描述了用于在多核系統(tǒng)中自動地建立無死鎖的互通信網(wǎng)絡(luò)的系統(tǒng)與方法。本文中描述的示例性實施方式包括在系統(tǒng)的各塊之間映射用戶指定的通信圖期間檢測死鎖。然后,通過重新分配信道資源以避免檢測到的死鎖。死鎖避免方案的示例性實施方式在用于大規(guī)模多核片上系統(tǒng)的片上網(wǎng)絡(luò)互連上呈現(xiàn)。
【專利說明】自動構(gòu)建無死鎖互連
【技術(shù)領(lǐng)域】
[0001]本文中描述的方法和示例性實施方式總體上是指互連體系結(jié)構(gòu),更具體地,是指片上網(wǎng)絡(luò)系統(tǒng)互連體系結(jié)構(gòu)。
【背景技術(shù)】
[0002]由于整體化、系統(tǒng)復(fù)雜性以及縮小晶體管幾何尺寸的水平日漸提高,使得位于芯片上的的組件數(shù)量在迅速增長。復(fù)雜的片上系統(tǒng)(SoC)可以包括各種組件,例如,處理器核、DSP、硬件加速器、存儲器以及1/0,而片上多核處理器(CMP)可以包括大量同質(zhì)的處理器核、存儲器以及I/O子系統(tǒng)。在兩個系統(tǒng)中,片上系統(tǒng)互連對于在各個組件之間提供高性能的通信起到了關(guān)鍵的作用。由于基于互連的傳統(tǒng)總線和交叉開關(guān)的可伸縮性限制,片上網(wǎng)絡(luò)(NoC)已呈現(xiàn)為使芯片上的大量組件互連的范例。NoC是一種由使用點對點物理鏈路而彼此互連的幾個路由節(jié)點組成的全局共享的通信基礎(chǔ)設(shè)施。消息由源注入并且通過多個中間路由器和物理鏈路從源路由器路由至目的地。然后,目的地路由器將該消息發(fā)送并且將其提供至目的地。對于該文件的其余部分,術(shù)語“組件”、“模塊”或者“核”可被互換地使用來指代使用NoC互連的各種系統(tǒng)組件。無損失地概括,具有多個互連組件的系統(tǒng)本身將被稱為“多核系統(tǒng)”。
[0003]存在幾個可能的拓撲,在該拓撲中,路由器可以彼此連接以建立系統(tǒng)網(wǎng)絡(luò)。在相關(guān)技術(shù)中,雙向環(huán)(如圖1 (a)所示)與2-D網(wǎng)格(如圖1 (b)所示)是拓撲示例。
[0004]數(shù)據(jù)包是用于在各種組件之間進行相互通信的消息傳輸單元。路由選擇包括識別數(shù)據(jù)包從源發(fā)送至目的地所通過的路徑,該路徑是網(wǎng)絡(luò)上的路由器和物理鏈路的集合。將組件連接到一個或多個路由器的一個或多個端口,其中每一個這樣的端口都具有唯一的ID。數(shù)據(jù)包攜帶目的地路由器和端口 ID以供中間路由器用來將數(shù)據(jù)包發(fā)送至目的組件。
[0005]路由選擇技術(shù)的示例包括確定性路由選擇,該確定性路由選擇包括為每一個數(shù)據(jù)包選擇從A到B的相同路徑。這種形式的路由選擇獨立于網(wǎng)絡(luò)狀態(tài)并且不會在底層網(wǎng)絡(luò)中存在的路徑多樣性之間進行負載平衡。然而,確定性路由選擇對于在硬件中實施是簡單的,保持數(shù)據(jù)包的排序并且易于擺脫網(wǎng)絡(luò)級死鎖。因為最短路徑路由選擇減少了從源至目的地的跳數(shù),從而最短路徑路由選擇將延遲時間最小化。為此,該最短路徑對于兩個組件間的通信同樣是最低功率路徑。維序路由選擇是一種在2D網(wǎng)格網(wǎng)絡(luò)中存在的確定性最短路徑路由選擇的形式。
[0006]圖2示出了二維網(wǎng)格中XY路由選擇的示例。更具體地,圖2示出了從節(jié)點“34”到節(jié)點“00”的XY路由選擇。在圖2的示例中,每個組件僅連接到一個路由器的一個端口。首先,數(shù)據(jù)包被路由在X維度上直到其到達節(jié)點“04”,其中,X維度與目的地相同。接著,數(shù)據(jù)包被路由在Y維度上直至其到達目的地。
[0007]源路由選擇和使用表格的路由選擇是用于NoC中的其他路由選擇的選項。基于網(wǎng)絡(luò)的狀態(tài),自適應(yīng)路由選擇可以動態(tài)地改變網(wǎng)絡(luò)上兩點之間所采用的路徑。這種形式的路由選擇對于分析和實施會很復(fù)雜,并且因此很少應(yīng)用于實踐中。[0008]運行在大的多核系統(tǒng)上的軟件應(yīng)用在各種塊之間產(chǎn)生復(fù)雜的互通信消息。這樣的復(fù)雜的、并發(fā)的、多跳的塊間通信可以導(dǎo)致互連時的死鎖情形。當(dāng)消息不能行進至其目的地時會在網(wǎng)絡(luò)中發(fā)生死鎖,因為它們等待彼此釋放資源(例如,釋放緩沖器以及信道)。由于阻塞的緩沖器所發(fā)生的死鎖可以迅速地遍布于整個網(wǎng)絡(luò),這可能使系統(tǒng)更多的操作癱瘓。死鎖廣義上可以被分類為網(wǎng)絡(luò)級死鎖和協(xié)議級死鎖。
[0009]如果在網(wǎng)絡(luò)中的信道之間有循環(huán)依賴,則在網(wǎng)絡(luò)中就可能發(fā)生死鎖。圖3示出了網(wǎng)絡(luò)級死鎖的示例。在圖3的示例中,以將所有緩沖器清空的狀態(tài)開始,同時塊啟動A — C、B — D、C — A以及D — B的消息傳遞。每個塊控制其輸出信道并且將消息向其目的地發(fā)送。在圖3的示例中,每個信道每次僅能擁有一條消息。從這一點開始,每個信道等待下一個信道以將消息移動的更遠。在等待圖中有循環(huán)依賴并且網(wǎng)絡(luò)變成死鎖。通過使用無死鎖路由選擇或者虛擬路徑的構(gòu)造可以避免這樣的網(wǎng)絡(luò)層死鎖或者低級死鎖。
[0010]網(wǎng)絡(luò)端點可能不是理想的接收器,S卩,直至一些當(dāng)前未處理的數(shù)據(jù)包被處理它們才會接收所有到來的數(shù)據(jù)包。如果在未處理的數(shù)據(jù)包的處理期間需要發(fā)送新的數(shù)據(jù)包,會在模塊的NoC發(fā)射信道和接收信道之間產(chǎn)生依賴性?;谙⑿蛄?、組件位置以及由各種消息所采用的路線,該依賴性會成為循環(huán)。如果死鎖是由在網(wǎng)絡(luò)層以外的依賴性引起的,則這被稱之為高級別、協(xié)議或者應(yīng)用級死鎖。在相關(guān)領(lǐng)域的系統(tǒng)中,大多數(shù)的高級任務(wù)包括以特定的序列存在于NoC上的多個模塊之間的消息流。這樣互通信的多點序列會引入導(dǎo)致協(xié)議級死鎖的復(fù)雜依賴性。死鎖的根本原因依然是由存在于多個組件之間的相互依賴的消息所引入的信道依賴性循環(huán)。從網(wǎng)絡(luò)上的一個端點到另一個端點的獨立消息不會引起協(xié)議級死鎖;然而,取決于網(wǎng)絡(luò)上這種消息的路由選擇,系統(tǒng)中仍然有可能發(fā)生網(wǎng)絡(luò)級死鎖。
[0011]圖4 (a)、圖4 (b)以及圖5 (a)至圖5 (C)示出協(xié)議級死鎖的示例??紤]通過交叉開關(guān)(crossbar)連接至存儲器與高速緩沖存儲控制器的三個中央處理單元(CPU)系統(tǒng)的示例。用于互連的高速緩沖存儲控制器的接口具有單個先入先出(FIFO)緩沖器,該緩沖器最大可保持三個消息。內(nèi)部地,高速緩沖存儲控制器可以同時處理高達兩個請求(并且因此處理高達兩個未處理的存儲器的失敗請求)。
[0012]在圖4(a)中,所有三個CPU向高速緩沖存儲控制器發(fā)送讀取請求。
[0013]在圖4(b)中,對高速緩沖存儲控制器的讀取請求從交叉開關(guān)而排隊在輸入緩沖器中。
[0014]在圖5 Ca)中,高速緩沖存儲控制器接受來自輸入緩沖器的兩個請求“I”與“2”而第三請求“3”依然保留在輸入緩沖器中?!癐”與“2”在高速緩沖存儲器中發(fā)生讀取失敗,該高速緩沖存儲器依次將失敗補充請求發(fā)送至存儲器。
[0015]在圖5 (b)中,存儲器返回補充數(shù)據(jù)“dl”、“d2”。這個數(shù)據(jù)在高速緩沖存儲控制器的輸入緩沖器中排列在“3”之后。
[0016]在圖5 (c)中,在接受新的請求“3”之前,高速緩沖存儲控制器等待未處理的請求的補充數(shù)據(jù)。然而,補充數(shù)據(jù)被阻擋在該請求“3”的后面。因此,該系統(tǒng)發(fā)生死鎖。
[0017]在該系統(tǒng)中,通過在該系統(tǒng)中部署額外的緩沖區(qū),或者使用多個物理或者虛擬網(wǎng)絡(luò)來用于不同消息類型,可以達到避免死鎖的目的。通常,以手動的方式來避免死鎖I)解釋互通信消息序列與依賴性,2)然后,分配足夠的緩沖器以及虛擬和/或物理信道以及3)為序列中的各種消息分派適當(dāng)?shù)男诺馈0018]在諸如因特網(wǎng)的大規(guī)模網(wǎng)絡(luò)中,死鎖很少被關(guān)注。諸如擁塞檢測、超時、數(shù)據(jù)包丟失、確認和重傳的機制提供死鎖的解決方案。然而,在功率、范圍以及速度方面,這種復(fù)雜的機制太昂貴以至于不能在互連網(wǎng)絡(luò)上實施,其中,在該互連網(wǎng)絡(luò)上最主要的需求是低延遲時間和高性能。在這種系統(tǒng)中,死鎖避免成為了關(guān)鍵性的結(jié)構(gòu)需求。
【發(fā)明內(nèi)容】
[0019]本發(fā)明基于各種系統(tǒng)組件之間的互通消息的類型的給定說明,提出了擺脫網(wǎng)絡(luò)級死鎖和應(yīng)用級死鎖的系統(tǒng)互連的自動結(jié)構(gòu)。還公開了處理過程的示例性實施方式,其中,在保持互連資源成本最小的同時可實現(xiàn)避免死鎖。
[0020]根據(jù)本發(fā)明的實施方式,提供一種計算機實現(xiàn)的方法,包括:基于多核系統(tǒng)的信道,為所述多核系統(tǒng)自動構(gòu)建互連信道的映射,以使所述多核系統(tǒng)免于死鎖。
[0021]該方法進一步包括:在依賴圖中,為所述多核系統(tǒng)的消息序列的區(qū)段的端點之間的路線中的鏈路分配一個信道;以及自動地檢查所述依賴圖中的循環(huán)依賴性。
[0022]該方法進一步包括,當(dāng)沒有檢測到循環(huán)依賴性時:在所述映射的自動構(gòu)建中包括為所述鏈路分配一個所述信道;如果所述路線未被完整地映射,利用所述依賴圖中所分配的一個信道或為所述路線中的另一條鏈路新分配的信道;以及如果所述路線未被完整地映射,自動地檢查所述依賴圖中的循環(huán)依賴性。
[0023]該方法進一步包括,當(dāng)檢測到循環(huán)依賴性時:從所述依賴圖中丟棄所分配的一個信道,以及為所述依賴圖中的所述路線分配另一個可用的信道。
[0024]其中,重復(fù)所述分配和所述檢查循環(huán)依賴性,直至所述序列被完整地映射或者直至所述信道全部被用盡。
[0025]其中,所述構(gòu)建包括:接收包含死鎖的所述多核系統(tǒng)的說明;自動地再分配信道直至解決所述死鎖;以及基于所述再分配構(gòu)建所述映射。
[0026]根據(jù)本發(fā)明的另一個實施方式,提供一種計算機可讀存儲介質(zhì),存儲有用于實現(xiàn)方法的指令,所述指令包括:基于多核系統(tǒng)的信道,為所述多核系統(tǒng)自動地構(gòu)建互連信道的映射,以使所述多核系統(tǒng)免于死鎖。
[0027]其中,所述指令進一步包括:在依賴圖中,為所述多核系統(tǒng)的序列的端點之間的路線中的鏈路分配一個信道;以及自動地檢查所述依賴圖中的循環(huán)依賴性。
[0028]其中,所述指令進一步包括,當(dāng)沒有檢測到循環(huán)依賴性時:在所述映射的自動構(gòu)建中包括為所述鏈路分配一個所述信道;如果所述路線未被完整地映射,利用所述依賴圖中所分配的一個信道或為所述路線中的另一條鏈路新分配的信道;以及如果所述路線未被完整地映射,自動地檢查所述依賴圖中的循環(huán)依賴性。
[0029]其中,所述指令進一步包括,當(dāng)檢測到循環(huán)依賴性時:從所述依賴圖中丟棄所分配的一個信道,以及為所述依賴圖中的所述路線分配另一個可用的信道。
[0030]其中,重復(fù)所述分配和所述檢查循環(huán)依賴性,直至所述序列被完整地映射或者直至所述信道全部被用盡。
[0031]其中,所述構(gòu)建包括:接收包含死鎖的所述多核系統(tǒng)的說明;自動地再分配信道直至解決所述死鎖;以及基于所述再分配構(gòu)建所述映射。
[0032]根據(jù)本發(fā)明的又一個實施方式,提供一種系統(tǒng),包括:路線構(gòu)建模塊,被配置為基于多核系統(tǒng)的信道,自動地為所述多核系統(tǒng)構(gòu)建互連信道的映射,以使所述多核系統(tǒng)免于死鎖。
[0033]該系統(tǒng)進一步包括:分配模塊,被配置為在依賴圖中,為所述多核系統(tǒng)的序列的端點之間的路線中的鏈路分配一個信道;以及依賴性模塊,被配置為自動地檢查所述依賴圖中的循環(huán)依賴性。
[0034]其中,所述路線構(gòu)建模塊被配置為:當(dāng)通過所述依賴性模塊沒有檢測到循環(huán)依賴性時,在所述映射的自動構(gòu)建中包括為所述鏈路分配一個所述信道;如果所述路線未被完整地映射,指示所述分配模塊利用所述依賴圖中所分配的一個信道或為所述路線中的另一條鏈路新分配的信道;以及如果所述路線未被完整地映射,指示所述依賴性模塊自動地檢查所述依賴圖中的循環(huán)依賴性。
[0035]其中,所述分配模塊被配置為:當(dāng)通過所述依賴性模塊檢測到循環(huán)依賴性時,從所述依賴圖中丟棄所分配的一個信道,以及為所述依賴圖中的所述路線分配另一個可用的信道。
[0036]其中,所述分配模塊被配置為重復(fù)所述分配,并且其中,所述依賴性模塊被配置為重復(fù)地檢查循環(huán)依賴性,直至所述序列被完整地映射或者直至所述信道被全部用盡。
[0037]其中,所述路線構(gòu)建模塊被配置為通過以下步驟來自動地構(gòu)建所述映射:接收包含死鎖的所述多核系統(tǒng)的說明;指示所述分配模塊自動地再分配信道直至解決所述死鎖;以及基于所述再分配構(gòu)建所述映射。
[0038]其中,所述信道包括物理信道與虛擬信道中的至少一個。
[0039]其中,所述路線構(gòu)建模塊進一步被配置為捕獲所述多核系統(tǒng)的所有高級別依賴性。
【專利附圖】
【附圖說明】
[0040]圖1 (a)和圖1 (b)示出了雙向環(huán)和2D網(wǎng)格NoC拓撲。
[0041]圖2示出了在二維網(wǎng)格中XY路由的示例。
[0042]圖3示出了網(wǎng)絡(luò)級死鎖的示例。
[0043]圖4 (a)、圖4 (b)示出了具有三個向高速緩沖存儲控制器發(fā)送讀取請求的CPU的存儲器子系統(tǒng)的示例。
[0044]圖5 Ca)至圖5 (c)示出了在存儲器子系統(tǒng)中導(dǎo)致協(xié)議級死鎖的信息交換。
[0045]圖6示出了在存儲器子系統(tǒng)中高速緩沖存儲器讀取失敗時的通信序列的示例。
[0046]圖7 Ca)和圖7 (b)示出了存儲器子系統(tǒng)中死鎖的示例。
[0047]圖8 (a)和圖8 (b)示出了根據(jù)示例性實施方式的在存儲器子系統(tǒng)中自動實施死鎖避免的示例。
[0048]圖9示出了根據(jù)示例性實施方式的在NoC上進行無死鎖通信量映射的流程圖。
[0049]圖10示出了可以實現(xiàn)示例性實施方式的計算機系統(tǒng)的示例。
【具體實施方式】
[0050]由運行在大的多核系統(tǒng)上的應(yīng)用程序所引入的復(fù)雜依賴性使得通過人工分析以確保無死鎖運行來說是很困難的。本文中描述的示例性實施方式均基于為系統(tǒng)中特定的塊間的通信模式自動地構(gòu)造無死鎖互連的概念。還公開了自動構(gòu)建無死鎖互連的過程的示例。
[0051]運行在多核系統(tǒng)上的應(yīng)用通常在多個塊之間產(chǎn)生幾個相互依賴的消息序列,其中,在完成消息處理并在塊釋放資源以用于新的消息之前,到達塊的消息必須為不同的塊生成另一個消息。對于假設(shè)的示例,考慮在塊A上運行的任務(wù),其請求在塊B上執(zhí)行操作。一旦接收到請求消息,塊B完成部分操作并且將部分結(jié)果發(fā)送到第三塊C,第三塊C進行操作的其他部分并且將部分結(jié)果發(fā)送到塊D。塊D執(zhí)行合并以及將最終結(jié)果發(fā)送回塊A。在塊A上完成的操作需要生成消息序列并且在網(wǎng)絡(luò)上的多個塊之間交換消息序列。為了成功完成起始塊上的任務(wù)的消息之間存在更高等級的依賴性。在中間塊的網(wǎng)絡(luò)接口處存在輸入信道對塊的輸出信道的依賴性。這種信道依賴性中的任意循環(huán)均可導(dǎo)致系統(tǒng)中的協(xié)議級死鎖。
[0052]為了檢測多核系統(tǒng)中的潛在死鎖,傳統(tǒng)系統(tǒng)會采用半自動化分析。然而,人工地分析結(jié)果并且對互連進行適當(dāng)?shù)男薷囊员苊鉂撛诘乃梨i。
[0053]系統(tǒng)中的通信被全部指定以獲取所有高等級的消息依賴性。然后,示例性實施方式對互連上的消息采用了整體的觀察,分配信道資源,以及分配消息到已分配的信道資源以確保所產(chǎn)生的互連在網(wǎng)絡(luò)級和協(xié)議級兩者是無死鎖的。示例性實施方式通過利用虛擬信道,移除了通信圖中的循環(huán)資源依賴性。虛擬信道在連接兩個端口的物理信道上提供邏輯鏈路。每個虛擬信道在網(wǎng)絡(luò)節(jié)點中具有獨立分配的并且流控制的片緩沖器。系統(tǒng)中每一個高等級通信需要被指定為多個塊的分組端到端序列的形式,消息在該多個塊之間流動。在上述提供的假設(shè)的示例中,序列可表示為A —B —C — D — A。網(wǎng)絡(luò)上介于每一個源-目的地對之間的路由選擇路徑(即,組成上述序列的區(qū)段)被制作成可用在示例性實施方式中的算法中,或者算法自動地判定以避免死鎖。
[0054]示例性實施方式的流程以最復(fù)雜的消息序列開始,并且使用其在網(wǎng)絡(luò)上的路由路徑來創(chuàng)建信道依賴性圖。示例性實施方式使用物理鏈路上的最低虛擬信道ID,并且隨后漸進的獲取不太復(fù)雜的消息序列并且繼續(xù)將它們的路線映射(map,繪制)到現(xiàn)有的全局信道依賴性圖中。當(dāng)映射兩個塊之間的路徑時,如果在依賴性圖中檢測到循環(huán),則示例性實施方式由原路返回并且通過利用路徑上的下一個最高虛擬信道ID重新映射包含依賴性的區(qū)段,以將循環(huán)從依賴性圖中移除。通常,首先,示例性實施方式試圖以信道ID值遞增順序映射任意預(yù)分配的虛擬信道,并且如果沒有其他的預(yù)分配虛擬信道仍然保留在該路徑上,同樣以信道ID值遞增的順序分配空閑的虛擬信道ID。這個處理過程繼續(xù)直到所有特定的消息序列的網(wǎng)絡(luò)路線沒有任何循環(huán)地映射到全局圖上。如果不能以限定數(shù)目的可用虛擬信道實現(xiàn)特定的系統(tǒng)消息的無死鎖映射,則該算法中止嘗試。在以下示例與圖9的流程圖中提供了更多的細節(jié)。該方案的其他變形也是可行的。例如,代替為消息序列的區(qū)段的端點之間的路線的所有物理鏈路使用相同的虛擬信道,可以在路線的每個物理鏈路上使用不同的虛擬信道。為了減少虛擬信道的使用,或者為了在保持死鎖避免的同時的負荷平衡,算法同樣可以嘗試為不同的消息使用不同的路線。
[0055]在系統(tǒng)示例中,CPU與包括高速緩沖存儲器和外部DRAM存儲器的存儲器子系統(tǒng)通信。CPU發(fā)送在高速緩沖存儲器中發(fā)生讀取失敗的讀取請求。因此,高速緩沖存儲控制器將讀取補充請求發(fā)送至外部的存儲器控制器。補充數(shù)據(jù)從存儲器返回到高速緩沖存儲控制器,其反過來又將讀取響應(yīng)發(fā)送至CPU。
[0056]圖6示出了高速緩沖存儲器上的通信序列讀取失敗的示例。上述描述的通信模式示例被表示為如圖6所示的序列。在高速緩沖存儲器讀取失敗的序列示例中,讀取請求600從CPU (A)發(fā)送至高速緩沖存儲器(B)。在高速緩沖存儲器(B)處,發(fā)生高速緩沖存儲器讀取失敗并且產(chǎn)生讀取補充請求601,該讀取補充請求601繼續(xù)前進到存儲器(C)。在存儲器(C)處,產(chǎn)生讀取補充響應(yīng)602并且將其發(fā)送回高速緩沖存儲器(B)。然后,高速緩沖存儲器(B)將讀取響應(yīng)603發(fā)送回CPU (A)0
[0057]圖7 Ca)和圖7 (b)示出了存儲器子系統(tǒng)中死鎖的示例。具體地,圖7 Ca)示出了其中通過物理鏈路將CPU、高速緩沖存儲器以及存儲器互連的簡單拓撲。網(wǎng)絡(luò)上的每一個物理鏈路被假定為具有單個虛擬信道。圖7(b)示出了對于上面的通信序列的可能信道依賴性圖。具體地,基于圖7 (a)中的物理鏈路,在圖7 (b)中示出了如圖6中所描述的高度緩沖存儲器上的通信序列的讀取失敗。該圖包含指示潛在的應(yīng)用級死鎖的循環(huán)。例如,在高速緩沖存儲器(B)接收來自于存儲器(C)的響應(yīng)之前,當(dāng)CPU (A)通過物理信道c將隨后的讀取請求消息發(fā)送至高速緩沖存儲器(B)時,由于早期的補充請求通過相同物理的信道,故會發(fā)生死鎖。從而,高速緩沖存儲器(B)成為死鎖,因為其在不首先處理其未處理的補充請求的情況下,是不能處理來自于CPU (A)的后來的讀取請求消息的,并且不能處理未處理的補充請求,因為來自于存儲器(C)的補充請求的響應(yīng)在物理信道c的隊列中,該響應(yīng)位于后來的讀取請求消息之后。類似地,當(dāng)高速緩沖存儲器(B)試圖通過物理信道d返回來自于CPU (A)的消息的響應(yīng),但是在存儲器(C)沒處理完先前從高速緩沖存儲器(B)發(fā)送至存儲器(C)的消息的情況下是不能通過該信道發(fā)送消息時,就會發(fā)生死鎖。
[0058]圖8 (a)和圖8 (b)示出了根據(jù)示例性實施方式的在圖6的示例系統(tǒng)中實施的自動死鎖避免。如圖8 (a)所示,在通信區(qū)段A —B與B —C上利用虛擬信道IDO而沒有發(fā)現(xiàn)任何死鎖。然而,當(dāng)子系統(tǒng)試圖在VC IDO上映射區(qū)段C —B時,檢測到環(huán)路(例如,如圖7 (b)所描繪的由于死鎖所導(dǎo)致的物理信道C)。子系統(tǒng)向后沿著路線前進并且試圖使用VCIDl (離開未使用的VC ID0)重新映射C —B路徑,該VC IDl在該圖中不會引起任何循環(huán)。子系統(tǒng)以VC IDO開始繼續(xù)前進以映射路徑B— A,該VC IDO在該圖中引起循環(huán)(例如,如圖7 (b)中所描繪的由于死鎖的物理信道d)。于是子系統(tǒng)嘗試VC ID1,該VC IDl在圖中沒有循環(huán)地成功映射。因此,子系統(tǒng)成功地映射了整個通信序列同時避免了潛在死鎖。
[0059]圖9示出了根據(jù)示例性實施方式的用于在NoC上進行無死鎖通信量映射的流程圖。在如圖9所示的實施方式中,在900,系統(tǒng)選擇用戶指定的消息序列(例如,接收來自用戶的消息序列)。在901,系統(tǒng)選擇網(wǎng)絡(luò)端點以限定序列的區(qū)段。在902,系統(tǒng)基于路由選擇方案選擇區(qū)段的端點之間的路線。在903,內(nèi)部計數(shù)器可被從零設(shè)置以計數(shù)被試驗用以映射特定的通信量的可用虛擬信道的數(shù)量。在904,系統(tǒng)利用由計數(shù)器指示的下一個可用虛擬信道,以將路線上的鏈路添加至全局信道依賴性圖。在905,系統(tǒng)檢查(例如,自動地)當(dāng)前的依賴性圖中的循環(huán)依賴性。在906,如果檢測到循環(huán),那么系統(tǒng)前進到907以從依賴性圖中移除并且重置消息序列的當(dāng)前區(qū)段。然后,系統(tǒng)前進到908,以將計數(shù)器遞增到下一個可用的虛擬信道,并且在909,確定是否所有可用的虛擬信道都已經(jīng)用盡。如果可用的虛擬信道沒有用盡,則系統(tǒng)返回到904。然而,如果已經(jīng)嘗試了所有可用的虛擬信道,那么系統(tǒng)前進到910以結(jié)束該處理并且指示(例如,給用戶消息)指定通信量不能用可用的虛擬信道映射。[0060]如果未檢測到循環(huán),那么系統(tǒng)前進到911以確定當(dāng)前區(qū)段是否被完全地映射。如果當(dāng)前區(qū)段沒有被完全地映射,那么系統(tǒng)前進到904以利用虛擬信道(由計數(shù)器指示的)在路線上添加下一條鏈路。
[0061]如果當(dāng)前區(qū)段被完全地映射,那么系統(tǒng)前進到912以確定當(dāng)前序列是否已經(jīng)被完全地映射。如果當(dāng)前序列沒有被完全地映射,那么系統(tǒng)前進到901以為該序列的下一個區(qū)段選擇端點。
[0062]如果當(dāng)前序列已經(jīng)被完全地映射,那么系統(tǒng)前進到913以確定是否所有的序列都已經(jīng)被完全地映射。如果沒有完全地映射所有的序列,那么系統(tǒng)前進到900以使用來自于用戶說明的下一個消息序列。如果已經(jīng)完全地映射所有的序列,則系統(tǒng)前進到914以表明(例如,向用戶發(fā)送消息)特定通信量的可能無死鎖映射。
[0063]圖10示出了可以實現(xiàn)示例性實施方式的示例計算機系統(tǒng)1000。該計算機系統(tǒng)1000包括服務(wù)器1005,服務(wù)器1005可以包括輸入/輸出單元1035、存儲器1060以及可操作以執(zhí)行本領(lǐng)域的技術(shù)人員所熟知的一個或多個單元的處理器1010。本文中使用的術(shù)語“計算機可讀介質(zhì)”指的是參與向處理器1010提供用于執(zhí)行的指令的任何介質(zhì)(該介質(zhì)可以以諸如的形式存在,計算機可讀存儲介質(zhì)諸如有但并不限于光盤、磁盤、只讀存儲器、隨機存取存儲器、固態(tài)裝置以及驅(qū)動器);或者適用于存儲電子信息的任何其他類型切實的介質(zhì);或者可以包括諸如載波的臨時介質(zhì)的計算機可讀信號介質(zhì)。輸入/輸出單元對來自用戶界面1040和操作員界面1045的輸入進行處理,用戶界面1040和操作員界面1045可利用諸如鍵盤、鼠標、觸摸裝置或者口令的輸入設(shè)備。
[0064]服務(wù)器1005也可以連接至外部存儲器1050,該外部存儲器1050可以包括諸如便攜式硬盤驅(qū)動器、光學(xué)介質(zhì)(CD或者DVD)、磁盤介質(zhì)或者計算機讀取可執(zhí)行代碼所在的任何其他介質(zhì)的可移動式存儲器。服務(wù)器還可以連接諸如顯示器的輸出設(shè)備1055以輸出數(shù)據(jù)以及其他信息至用戶,以及向用戶請求附加信息。從服務(wù)器1055至用戶界面1040、操作員界面1045、外部存儲器1050以及輸出裝置1055的連接可經(jīng)由諸如802.11標準、藍牙?或者蜂窩協(xié)議的無線協(xié)議,或者經(jīng)由諸如電纜或者光纖的物理傳輸介質(zhì)。因此,該輸出設(shè)備1055可以進一步充當(dāng)用于與用戶交互的輸入設(shè)備。
[0065]處理器1010可以執(zhí)行一個或多個模塊。路線構(gòu)建模塊1011被配置為自動地構(gòu)建包括互連的物理鏈路的路徑,該路徑用于在多核系統(tǒng)中將消息從源塊發(fā)送到目的地塊。虛擬信道分配模塊1012可以被配置為為鏈路分配可用虛擬信道中的一個并將其添加至全局信道依賴性圖中,所述鏈路位于多核系統(tǒng)的消息序列中的區(qū)段的端點之間的路線中。依賴性模塊1013可以被配置為通過檢測信道依賴性圖中的環(huán)路自動地檢測信道之間的循環(huán)依賴性。
[0066]取決于想要的實施方式,路線構(gòu)建模塊1011、虛擬信道分配模塊1012以及依賴性模塊1013可以以不同的方式彼此相互作用。例如,路線構(gòu)建模塊1011可以選擇網(wǎng)絡(luò)端點以限定序列的區(qū)段,并且基于路由方案、基于負荷平衡、基于資源最小化或者其他可能的因素,選擇區(qū)段的端點之間的路線。虛擬信道分配模塊1012可以從零設(shè)置內(nèi)部計數(shù)器以計算被試驗用以映射特定通信量的可用的虛擬信道的數(shù)量。虛擬信道分配模塊可以基于資源共享與最小化、負荷平衡或者其他可能的因素分配虛擬信道。
[0067]路線構(gòu)建模塊1011可指示虛擬信道分配模塊1012利用下一個可用的虛擬信道(例如,由虛擬信道分配模塊中的計數(shù)器指示),以將路線上的鏈路增加到全局信道依賴性圖中。然而,路線構(gòu)建模塊1011可以指示依賴性模塊1013檢查(例如,自動地)當(dāng)前依賴性圖中的循環(huán)依賴性。如果依賴性模塊1013檢測到依賴性,則路線構(gòu)建模塊1011可從依賴性圖中移除并且重置消息序列的當(dāng)前區(qū)段,其中,虛擬信道分配模塊1012可以使計數(shù)器累加至下一個可用的虛擬信道,并且檢查可用的虛擬信道是否用盡。如果已經(jīng)嘗試了所有可用的虛擬信道,那么路線構(gòu)建模塊1011會終止并且指示(例如,向用戶發(fā)送消息)指定通信量不能以可用的虛擬信道作為路線(map映射)。
[0068]如果依賴性模塊1013沒有檢測到循環(huán),那么路線構(gòu)建模塊1011可以確定當(dāng)前區(qū)段是否被完全地映射。如果確定當(dāng)前區(qū)段沒有被完全地映射,那么路線構(gòu)建模塊1011嘗試利用已分配的虛擬信道來在路線上添加下一個鏈路,并且再核查依賴性。
[0069]如果確定當(dāng)前區(qū)段被完全地映射,那么路線構(gòu)建模塊1011可以確定當(dāng)前序列是否已經(jīng)被完全地映射。如果確定當(dāng)前序列沒有被完全地映射,那么路線構(gòu)建模塊1011會進行至為序列的下一個區(qū)段選擇端點并且基于路由選擇方案嘗試在新的端點之間選擇另一個路線。
[0070]如果確定當(dāng)前序列被完全地映射,那么路線構(gòu)建模塊確定所有的序列是否已被完全地映射。如果確定沒有完全地映射所有的序列,那么路線構(gòu)建模塊1011從用戶說明中選擇下一個消息序列并且嘗試映射下一個消息序列。如果確定已完全地映射所有的序列,那么路線構(gòu)建模塊1011可以指示(例如,向用戶發(fā)送消息)特定通信量的可能無死鎖映射。
[0071]路線構(gòu)建模塊通過被配置為接收包含死鎖的多核系統(tǒng)的說明;指示分配模塊1012自動地重新分配虛擬信道直至解決死鎖;并且基于重新分配來構(gòu)建映射,也可進行映射的自動構(gòu)建。
[0072]此外,根據(jù)在計算機內(nèi)操作的算法和符號表示法來提供詳細描述的一些部分。這些算法描述與符號表示法是在數(shù)據(jù)處理領(lǐng)域的技術(shù)人員使用的手段以最有效地向本領(lǐng)域的其他技術(shù)人員傳達他們新技術(shù)的本質(zhì)。算法是用于產(chǎn)生想要的最終狀態(tài)或結(jié)果的一系列限定的步驟。在示例性實施方式中,為了達到切實的結(jié)果,步驟的執(zhí)行需要切實數(shù)量的物理操作。
[0073]此外,根據(jù)本文公開的說明書的描述以及示例性實施方式的實踐,示例性實施方式的其他實施方式對于本領(lǐng)域中的技術(shù)人員是顯而易見的。所描述的示例性實施方式的各個方面和/或組件可以單獨使用或者以任意組合使用。說明書與示例旨在被認為是示例,具有由所附權(quán)利要求指示的實施方式的真實范圍與精神。
【權(quán)利要求】
1.一種計算機實現(xiàn)的方法,包括: 基于多核系統(tǒng)的信道,為所述多核系統(tǒng)自動構(gòu)建互連信道的映射,以使所述多核系統(tǒng)免于死鎖。
2.根據(jù)權(quán)利要求1所述的方法,進一步包括: 在依賴圖中,為所述多核系統(tǒng)的消息序列的區(qū)段的端點之間的路線中的鏈路分配一個信道;以及 自動地檢查所述依賴圖中的循環(huán)依賴性。
3.根據(jù)權(quán)利要求2所述的方法,進一步包括,當(dāng)沒有檢測到循環(huán)依賴性時: 在所述映射的自動構(gòu)建中包括為所述鏈路分配一個所述信道; 如果所述路線未被完整地映射,利用所述依賴圖中所分配的一個信道或為所述路線中的另一條鏈路新分配的信道;以及 如果所述路線未被完整地映射,自動地檢查所述依賴圖中的循環(huán)依賴性;以及 當(dāng)檢測到循環(huán)依賴性 時: 從所述依賴圖中丟棄所分配的一個信道,以及 為所述依賴圖中的所述路線分配另一個可用的信道。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述構(gòu)建包括: 接收包含死鎖的所述多核系統(tǒng)的說明; 自動地再分配信道直至解決所述死鎖;以及 基于所述再分配構(gòu)建所述映射。
5.一種系統(tǒng),包括: 路線構(gòu)建模塊,被配置為基于多核系統(tǒng)的信道,自動地為所述多核系統(tǒng)構(gòu)建互連信道的映射,以使所述多核系統(tǒng)免于死鎖。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),進一步包括: 分配模塊,被配置為在依賴圖中,為所述多核系統(tǒng)的序列的端點之間的路線中的鏈路分配一個信道;以及 依賴性模塊,被配置為自動地檢查所述依賴圖中的循環(huán)依賴性。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述路線構(gòu)建模塊被配置為:當(dāng)通過所述依賴性模塊沒有檢測到循環(huán)依賴性時, 在所述映射的自動構(gòu)建中包括為所述鏈路分配一個所述信道; 如果所述路線未被完整地映射,指示所述分配模塊利用所述依賴圖中所分配的一個信道或為所述路線中的另一條鏈路新分配的信道;以及 如果所述路線未被完整地映射,指示所述依賴性模塊自動地檢查所述依賴圖中的循環(huán)依賴性。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述分配模塊被配置為:當(dāng)通過所述依賴性模塊檢測到循環(huán)依賴性時, 從所述依賴圖中丟棄所分配的一個信道,以及 為所述依賴圖中的所述路線分配另一個可用的信道。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述分配模塊被配置為重復(fù)所述分配,并且其中,所述依賴性模塊被配置為重復(fù)地檢查循環(huán)依賴性,直至所述序列被完整地映射或者直至所述信道被全部用盡。
10.根據(jù)權(quán)利要求5所述的系統(tǒng),其中,所述路線構(gòu)建模塊被配置為通過以下步驟來自動地構(gòu)建所述映射: 接收包含死鎖的所述多核系統(tǒng)的說明; 指示所述分配模塊自動地再分配信道直至解決所述死鎖;以及 基于所述再分配構(gòu)建所述映射。
【文檔編號】H04L12/701GK103684961SQ201310389131
【公開日】2014年3月26日 申請日期:2013年8月30日 優(yōu)先權(quán)日:2012年8月30日
【發(fā)明者】喬吉·菲利普, 塞列什·庫馬爾, 埃里克·諾里格, 馬哈穆德·哈桑, 桑達里·米特拉 申請人:網(wǎng)速系統(tǒng)公司