專利名稱:面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核微處理器領(lǐng)域的片上路由器結(jié)構(gòu),具體涉及一種應(yīng)用于無緩沖片上網(wǎng)絡(luò)容錯(cuò)偏轉(zhuǎn)路由方法及裝置。
背景技術(shù):
近年來,隨著集成電路工藝尺寸的降低、集成度的提高,單芯片上已可以集成越來越多的處理器核。片上網(wǎng)絡(luò)(Network-on-Chip,NoC)技術(shù)已逐漸成為單芯片多處理器(Chip-Multiprocessors, CMPs)片上互連的標(biāo)準(zhǔn)通信架構(gòu)。但是,隨著集成電路工藝進(jìn)入納米時(shí)代,更小的特征尺寸、更低的電源電壓以及不斷提升的時(shí)鐘頻率嚴(yán)重影響超大規(guī)模集成電路(VLSI電路)的可靠性。片上網(wǎng)絡(luò)主要面臨兩類故障的影響瞬態(tài)故障和永久故障。瞬態(tài)故障(Transientfault)又稱為軟錯(cuò)誤(Soft error),故障隨機(jī)出現(xiàn)并持續(xù)一個(gè)到數(shù)個(gè)周期,在片上網(wǎng)絡(luò)中主要表現(xiàn)為由串?dāng)_、耦合噪聲等引起的數(shù)據(jù)或控制信號(hào)的擾動(dòng),可以使數(shù)據(jù)的完整性降級(jí)或者對(duì)控制信號(hào)產(chǎn)生破壞,最終將會(huì)導(dǎo)致系統(tǒng)的異?;驘o效行為;永久故障出現(xiàn)后將會(huì)無限期地保持故障狀態(tài),通常由時(shí)間相關(guān)的電介質(zhì)擊穿(Time Dependent DielectricBreakdown)> 電遷移(Electromigration)、熱循環(huán)(Thermal Cycling)和應(yīng)力遷移(StressMigration)等效應(yīng)引起,必須采取相應(yīng)措施隔離故障并有效管理剩余可用資源。容錯(cuò)是指在片上網(wǎng)絡(luò)組件失效的情況下網(wǎng)絡(luò)仍能正常工作的能力,然而容錯(cuò)技術(shù)的實(shí)現(xiàn)往往是以性能降低為代價(jià)的。片上網(wǎng)絡(luò)所固有的結(jié)構(gòu)冗余特性(即源與目標(biāo)之間存在多條路徑)為容錯(cuò)路由的設(shè)計(jì)提供了可行性。在容錯(cuò)路由中,通常采用繞道路由的方式避開故障節(jié)點(diǎn)或鏈路。一個(gè)好的容錯(cuò)路由算法應(yīng)該在任意故障模式下保證包“0丟失率”。在目前已有的大部分容錯(cuò)路由算法中,通常存在三類類問題一是對(duì)故障模型進(jìn)行簡化來避免死鎖或活鎖,不能處理任意故障模式;二是通過離線方式對(duì)路由表進(jìn)行配置來處理較復(fù)雜的故障模型;三是不能保證包“0丟失率”,而僅能提高故障情況下的包到達(dá)率。因此,設(shè)計(jì)低開銷、高可靠的容錯(cuò)路由器對(duì)于提高片上網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)目煽啃跃哂蟹浅V匾囊饬x。如圖I和圖2所示,現(xiàn)有技術(shù)的容錯(cuò)偏轉(zhuǎn)路由器包括路由計(jì)算單元11、交換分配器12、交叉開關(guān)13、包頭更新單元14和N個(gè)寄存器15,路由計(jì)算單元11、交換分配器12、交叉開關(guān)13依次相連,寄存器15分別通過路由計(jì)算單元11、交換分配器12、交叉開關(guān)13與包頭更新單元14相連,包頭更新單元14的輸出端為路由器的N個(gè)輸出端口,N個(gè)寄存器15的輸入端構(gòu)成路由器的N個(gè)輸入端口。數(shù)據(jù)包到達(dá)路由器后,路由計(jì)算與輸入包優(yōu)先級(jí)排序同時(shí)進(jìn)行。路由計(jì)算由路由計(jì)算單元11完成,計(jì)算出每一個(gè)到達(dá)包的最佳路由方向(通過最短路徑到達(dá)目標(biāo)節(jié)點(diǎn)的路由方向)。輸入優(yōu)先級(jí)排序由交換分配器12完成,交換分配器12包括輸入優(yōu)先級(jí)排序模塊和分配模塊,輸入優(yōu)先級(jí)排序模塊根據(jù)每一個(gè)包在網(wǎng)絡(luò)中所經(jīng)歷的跳步數(shù)(由包格式中的跳步數(shù)域給出)進(jìn)行優(yōu)先級(jí)排序,經(jīng)歷跳步數(shù)越多的包優(yōu)先級(jí)越高,然后根據(jù)排序結(jié)果按包優(yōu)先級(jí)從高到低的順序分別通過分配模塊產(chǎn)生NXN的交叉開關(guān)13的選擇信號(hào)。如果 有多個(gè)包競爭同一個(gè)最佳路由方向,優(yōu)先級(jí)高的包通過該方向的輸出端口輸出,而較低優(yōu)先級(jí)的包則被偏轉(zhuǎn)到非最佳路由方向(偏離到目標(biāo)節(jié)點(diǎn)的最短路徑)。如果同一個(gè)包有多個(gè)最佳路由端口可用,可以隨機(jī)選擇一個(gè)空閑的輸出端口,也可根據(jù)負(fù)載信息對(duì)輸出端口排序,選擇一個(gè)負(fù)載較小的輸出端口。負(fù)載信息為與該端口相連的路由器在一段時(shí)間內(nèi)所處理的包數(shù)。按負(fù)載信息優(yōu)先級(jí)對(duì)輸出端口進(jìn)行分配可以有效平衡網(wǎng)絡(luò)負(fù)載。在無緩沖路由器中,由于數(shù)據(jù)包不需要在路由器中等待,因此路由器接收到包后立即將其轉(zhuǎn)發(fā)到下一個(gè)路由器,因此不存在死鎖。為了避免包被無限制的偏轉(zhuǎn)而產(chǎn)生活鎖,需要對(duì)輸入包進(jìn)行優(yōu)先級(jí)排序,按包優(yōu)先級(jí)從高到低的順序進(jìn)行輸出端口分配。交換分配器按輸入包在網(wǎng)絡(luò)中所經(jīng)歷的跳步數(shù)進(jìn)行優(yōu)先級(jí)排序,經(jīng)歷跳步數(shù)越多的包優(yōu)先級(jí)越高。優(yōu)先級(jí)排序完成后,按包優(yōu)先級(jí)順序依次為到達(dá)包進(jìn)行輸出端口分配。這樣保證了優(yōu)先級(jí)高的包總是能夠通過最佳路由端口路由,朝著目標(biāo)節(jié)點(diǎn)的方向前進(jìn)而不會(huì)被無限制的偏轉(zhuǎn),從而避免活鎖的產(chǎn)生。在無緩沖路由器中,除了流水線寄存器外,路由器中沒有額外的緩沖器,可以在很大程度上降低路由器的能耗和面積,為片上網(wǎng)絡(luò)提供了一種低開銷的解決方案。通常故障在芯片上隨機(jī)出現(xiàn),因此面積大的邏輯往往比面積小的邏輯更容易出錯(cuò)。研究表明,隨著電路邏輯面積的增加,可靠性按照指數(shù)率惡化。與有緩沖路由器相比,無緩沖路由器的面積大大降低,使其在應(yīng)對(duì)故障方面具有先天優(yōu)勢。由于包不在路由器中緩存,無緩沖路由器通常采用偏轉(zhuǎn)路由算法(Deflection routing),路由器接收到包后立即將其轉(zhuǎn)發(fā)到下一個(gè)路由器,在出現(xiàn)競爭的情況下,一些包將偏離最短路徑路由。偏轉(zhuǎn)路由的非最短路徑完全自適應(yīng)特性為設(shè)計(jì)容錯(cuò)路由算法提供了可行性。在偏轉(zhuǎn)路由器中,要求輸入端口數(shù)與輸出端口數(shù)相等,這樣才能保證每一個(gè)到達(dá)包均能分配到一個(gè)輸出端口輸出。在故障鏈路存在的情況下,改變了原有的拓?fù)浣Y(jié)構(gòu),使得與故障鏈路相連的路由器輸入與輸出端口數(shù)目不等?,F(xiàn)有的容錯(cuò)偏轉(zhuǎn)路由器將單向故障鏈路等效為雙向故障處理,保證了路由器輸入與輸出端口數(shù)目的平衡。但是,在實(shí)際情況中,兩個(gè)方向鏈路同時(shí)出現(xiàn)故障的概率較低,將單向鏈路故障等效為雙向故障將會(huì)降低網(wǎng)絡(luò)的效率。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種能夠在單向故障的情況下無需繞道路由即可實(shí)現(xiàn)容錯(cuò)、同時(shí)無需采用路由表、容錯(cuò)性能好、鏈路利用率高、面積開銷小的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法及裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為
一種面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其實(shí)施步驟如下
1)將任意相鄰路由器通過可配置雙向傳輸鏈路相連;
2)任意路由器在發(fā)送數(shù)據(jù)包前對(duì)發(fā)送的數(shù)據(jù)包進(jìn)行編碼,在接收數(shù)據(jù)包后對(duì)數(shù)據(jù)包進(jìn)行解碼,當(dāng)解碼發(fā)生指定錯(cuò)誤跳轉(zhuǎn)執(zhí)行步驟3);
3)暫停發(fā)生指定錯(cuò)誤的鏈路,對(duì)所述鏈路進(jìn)行檢測,如果檢測未遇到錯(cuò)誤則恢復(fù)所述鏈路,如果檢測遇到錯(cuò)誤則將所述鏈路標(biāo)記為故障鏈路;
4)實(shí)時(shí)檢測任意相鄰路由器之間的雙向傳輸鏈路,在雙向傳輸鏈路的一個(gè)鏈路為故障鏈路、另一個(gè)鏈路為正常鏈路時(shí),如果正常鏈路的上行路由器到達(dá)數(shù)據(jù)包數(shù)大于輸出端口數(shù),或者正常鏈路的下行路由器到達(dá)數(shù)據(jù)包數(shù)不大于輸出端口數(shù)且存在唯一最佳路由方向?yàn)樗稣f溌返臄?shù)據(jù)包,則將所述正常鏈路的傳輸方向配置為反向;并在正常鏈路的下行路由器到達(dá)數(shù)據(jù)包數(shù)大于輸出端口數(shù)時(shí),或者正常鏈路的上行路由器到達(dá)數(shù)據(jù)包數(shù)不大于輸出端口數(shù)且存在唯一最佳路由方向?yàn)樗稣f溌返臄?shù)據(jù)包時(shí),恢復(fù)所述正常鏈路的默認(rèn)傳輸方向。作為本發(fā)明上述技術(shù)方案的進(jìn)一步改進(jìn)
所述步驟2)中的編碼是指使用SECDED碼對(duì)數(shù)據(jù)包進(jìn)行編碼;所述步驟2)中的解碼是指使用SE⑶ED碼對(duì)數(shù)據(jù)包進(jìn)行解碼。所述對(duì)數(shù)據(jù)包進(jìn)行解碼的具體步驟包括將數(shù)據(jù)包的包頭使用SECDED碼編碼為至少兩個(gè)數(shù)據(jù)塊,將數(shù)據(jù)包的數(shù)據(jù)體使用SE⑶ED碼編碼為多個(gè)數(shù)據(jù)塊。 所述對(duì)數(shù)據(jù)包進(jìn)行解碼的詳細(xì)步驟包括使用SE⑶ED碼對(duì)數(shù)據(jù)包的包頭數(shù)據(jù)塊和數(shù)據(jù)體的數(shù)據(jù)塊分別進(jìn)行解碼,同時(shí)讀取解碼過程中產(chǎn)生的校驗(yàn)子,如果校驗(yàn)子包含的錯(cuò)誤信息為一位發(fā)生錯(cuò)誤,則直接校正該錯(cuò)誤;如果校驗(yàn)子包含的錯(cuò)誤信息為兩位發(fā)生錯(cuò)誤,則判定發(fā)生所述指定錯(cuò)誤。所述步驟3)中對(duì)鏈路進(jìn)行檢測的詳細(xì)步驟包括所述發(fā)生錯(cuò)誤的鏈路的下行路由器向上行路由器請(qǐng)求發(fā)送測試向量,所述上行路由器收到請(qǐng)求后向下行路由器發(fā)送測試數(shù)據(jù),如果下行路由器檢測到任意一個(gè)測試數(shù)據(jù)包含錯(cuò)誤則判定為檢測遇到錯(cuò)誤,否則判定為檢測未遇到錯(cuò)誤。所述測試數(shù)據(jù)包含{0}n、{1}\(Olln72, {10}"72共4個(gè)測試向量,其中n為發(fā)生錯(cuò)誤鏈路的位寬。一種面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置,包括路由器,所述路由器包括路由計(jì)算單元、交換分配器、交叉開關(guān)、包頭更新單元和多個(gè)寄存器,所述路由計(jì)算單元、交換分配器、交叉開關(guān)依次相連,所述寄存器分別通過路由計(jì)算單元、交換分配器、交叉開關(guān)與包頭更新單元相連,所述容錯(cuò)偏轉(zhuǎn)路由裝置還包括與寄存器一一對(duì)應(yīng)的多個(gè)傳輸控制單元、用于控制相鄰路由器之間的鏈路傳輸方向的方向分配器和用于檢測鏈路狀態(tài)的測試控制單元,所述傳輸控制單元包括解碼器、編碼器和用于控制外部鏈路傳輸方向的鏈路控制邏輯,所述寄存器的輸出端通過解碼器與交叉開關(guān)相連,所述寄存器的輸入端、所述包頭更新單元的輸出端均依次通過所述編碼器、鏈路控制邏輯與收發(fā)鏈路相連,所述方向分配器的輸入端分別與相鄰兩個(gè)路由器的路由計(jì)算單元相連,所述方向分配器的輸出端與鏈路控制邏輯的控制端相連,所述測試控制單元與鏈路控制邏輯相連。作為上述技術(shù)方案的進(jìn)一步改進(jìn)
所述鏈路控制邏輯包括第一雙向鏈路和第二雙向鏈路、二選一選擇器和二輸出分配器,所述寄存器的輸入端通過二選一選擇器分別與第一雙向鏈路、第二雙向鏈路相連,所述包頭更新單元的輸出端通過二輸出分配器分別與第一雙向鏈路、第二雙向鏈路相連,所述第一雙向鏈路和第二雙向鏈路上均設(shè)有用于控制鏈路收發(fā)方向的方向控制器,所述二選一選擇器的控制端、二輸出分配器的控制端、方向控制器的控制端分別與方向分配器的輸出端相連。所述方向控制器包括一對(duì)相互并聯(lián)且方向反向布置的低有效三態(tài)門和高有效三態(tài)門,所述低有效三態(tài)門的控制端和高有效三態(tài)門的控制端同時(shí)與所述方向分配器的輸出端相連。所述解碼器為SE⑶ED碼編碼器,所述編碼器為SE⑶ED碼編碼器。本發(fā)明面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法具有下述優(yōu)點(diǎn)
I、本發(fā)明通過編碼解碼來檢測數(shù)據(jù)包是否發(fā)生錯(cuò)誤,并通過檢測鏈路進(jìn)行判斷鏈路是否發(fā)生故障,并在鏈路發(fā)生單向鏈路故障時(shí)根據(jù)相鄰兩個(gè)路由器的到達(dá)包的狀況對(duì)無故障雙向鏈路的方向進(jìn)行動(dòng)態(tài)配置鏈路的傳輸方向,能夠在鏈路發(fā)生單向故障的情況下無需繞道路由即可實(shí)現(xiàn)容錯(cuò),具有容錯(cuò)性能好、鏈路利用率高、面積開銷小的優(yōu)點(diǎn)。 2、本發(fā)明根據(jù)相鄰兩個(gè)路由器的到達(dá)包的狀況進(jìn)行動(dòng)態(tài)配置鏈路的傳輸方向,無需建立復(fù)雜的故障模型,不需要采用路由表,在單向鏈路故障的情況下不需要繞道路由即可實(shí)現(xiàn)容錯(cuò),收發(fā)效率高,資源消耗更低、數(shù)據(jù)收發(fā)效率更好,而且還減小了路由器的面積開銷。3、本發(fā)明通過檢測鏈路進(jìn)行判斷鏈路是否發(fā)生故障,能夠區(qū)分瞬態(tài)故障與永久故障,僅僅針對(duì)發(fā)生永久故障的單向故障鏈路進(jìn)行處理,能夠提高故障的識(shí)別精度,有利于降低容錯(cuò)的數(shù)據(jù)處理量,從而提高容錯(cuò)處理效率。4、本發(fā)明采用可配置的雙向鏈路,通過同步配置相鄰路由器之間的雙向鏈路,鏈路傳輸方向能夠立即發(fā)生改變,根據(jù)到達(dá)包信息及鏈路故障狀態(tài)對(duì)雙向鏈路的方向進(jìn)行配置,因此不需要握手信號(hào),方向轉(zhuǎn)換的延遲非常低,方向變換不存在等待時(shí)間。本發(fā)明面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置由于具有與上述面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法對(duì)應(yīng)的結(jié)構(gòu),因此也具備上述面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法相對(duì)應(yīng)的優(yōu)點(diǎn)。
圖I為現(xiàn)有技術(shù)無緩沖路由器的框架結(jié)構(gòu)示意圖。圖2為現(xiàn)有技術(shù)無緩沖路由器中交換分配器的框架結(jié)構(gòu)示意圖。圖3為本發(fā)明實(shí)施例的基本流程示意圖。圖4為本發(fā)明實(shí)施例的數(shù)據(jù)包編碼格式示意圖。圖5為本發(fā)明實(shí)施例中方向分配器工作原理圖不意圖。圖6為本發(fā)明實(shí)施例的框架結(jié)構(gòu)示意圖。圖7為本發(fā)明實(shí)施例鏈路控制邏輯的框架結(jié)構(gòu)示意圖。圖8為應(yīng)用本發(fā)明實(shí)施例的3X3 二維Mesh網(wǎng)絡(luò)的框架結(jié)構(gòu)示意圖。圖9為3X3 二維Mesh網(wǎng)絡(luò)中RO和Rl兩個(gè)路由器之間的連接結(jié)構(gòu)示意圖。圖例說明1、路由器;11、路由計(jì)算單元;12、交換分配器;13、交叉開關(guān);14、包頭更新單元;15、寄存器;2、解碼器;3、編碼器;4、鏈路控制邏輯;41、第一雙向鏈路;42、第二雙向鏈路;43、二選一選擇器;44、二輸出分配器;45、方向控制器;451、低有效三態(tài)門;452、高有效三態(tài)門;5、方向分配器;6、測試控制單元。
具體實(shí)施例方式如圖3所示,本實(shí)施例面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法的實(shí)施步驟如下1)將任意相鄰路 由器通過雙向傳輸鏈路相連;
2)任意路由器在發(fā)送數(shù)據(jù)包前對(duì)發(fā)送的數(shù)據(jù)包進(jìn)行編碼,任意路由器在接收數(shù)據(jù)包后對(duì)數(shù)據(jù)包進(jìn)行解碼,當(dāng)解碼發(fā)生指定錯(cuò)誤跳轉(zhuǎn)執(zhí)行步驟3);
3)暫停發(fā)生指定錯(cuò)誤的鏈路,對(duì)鏈路進(jìn)行檢測,如果檢測未遇到錯(cuò)誤則恢復(fù)鏈路,如果檢測遇到錯(cuò)誤則將鏈路標(biāo)記為故障鏈路;
4)實(shí)時(shí)檢測任意相鄰路由器之間的雙向傳輸鏈路,在雙向傳輸鏈路的一個(gè)鏈路為故障鏈路、另一個(gè)鏈路為正常鏈路(即發(fā)生單向鏈路故障)時(shí),如果正常鏈路的上行路由器到達(dá)數(shù)據(jù)包數(shù)大于輸出端口數(shù),或者正常鏈路的下行路由器到達(dá)數(shù)據(jù)包數(shù)不大于(小于或者等于)輸出端口數(shù)且存在唯一最佳路由方向?yàn)檎f溌返臄?shù)據(jù)包,則將正常鏈路的傳輸方向進(jìn)行反向;并在正常鏈路的下行路由器到達(dá)數(shù)據(jù)包數(shù)大于輸出端口數(shù)時(shí),或者正常鏈路的上行路由器到達(dá)數(shù)據(jù)包數(shù)不大于(小于或者等于)輸出端口數(shù)且存在唯一最佳路由方向?yàn)檎f溌返臄?shù)據(jù)包時(shí),恢復(fù)正常鏈路的默認(rèn)傳輸方向。步驟2)中的編碼是指使用SE⑶ED碼對(duì)數(shù)據(jù)包進(jìn)行編碼;步驟2)中的解碼是指使用SE⑶ED碼對(duì)數(shù)據(jù)包進(jìn)行解碼。本實(shí)施例中,對(duì)數(shù)據(jù)包進(jìn)行解碼的具體步驟包括將數(shù)據(jù)包的包頭使用SE⑶ED碼編碼為至少兩個(gè)數(shù)據(jù)塊,將數(shù)據(jù)包的數(shù)據(jù)體使用SE⑶ED碼編碼為多個(gè)數(shù)據(jù)塊。對(duì)數(shù)據(jù)包進(jìn)行解碼的詳細(xì)步驟包括使用SECDED碼對(duì)數(shù)據(jù)包的包頭數(shù)據(jù)塊和數(shù)據(jù)體的數(shù)據(jù)塊分別進(jìn)行解碼,使用SE⑶ED碼解碼時(shí)會(huì)產(chǎn)生一個(gè)包含數(shù)據(jù)包錯(cuò)誤信息的校驗(yàn)子,讀取解碼過程中產(chǎn)生的校驗(yàn)子則可以判定數(shù)據(jù)包的發(fā)生錯(cuò)誤的位數(shù),如果校驗(yàn)子包含的錯(cuò)誤信息為一位發(fā)生錯(cuò)誤,不論其是哪一種故障類型均可直接校正該錯(cuò)誤;如果校驗(yàn)子包含的錯(cuò)誤信息為兩位發(fā)生錯(cuò)誤,則判定發(fā)生前述的指定錯(cuò)誤。如圖4所示,本實(shí)施例中數(shù)據(jù)包長度為128位,包含一個(gè)32位的包頭和96位的數(shù)據(jù)體,包頭包括一位有效位域、目標(biāo)地址域、源地址域和跳步數(shù)域;有效位域(I位)用于標(biāo)志包是否有效(0 :表示無效包;I :表示有效包);目標(biāo)地址域和源地址域使用相對(duì)尋址,目標(biāo)地址域和源地址域均為12位(分別包含6位行地址和6位列地址),采用二進(jìn)制補(bǔ)碼編碼,分別表示到目標(biāo)節(jié)點(diǎn)和源節(jié)點(diǎn)的相對(duì)地址。跳步數(shù)域(7位)用于記錄包在網(wǎng)絡(luò)中已經(jīng)歷的跳步數(shù),作為包優(yōu)先級(jí)以避免活鎖。為了進(jìn)行故障檢測與診斷,本實(shí)施例使用SECDED碼對(duì)數(shù)據(jù)包的包頭數(shù)據(jù)塊和數(shù)據(jù)體的數(shù)據(jù)塊分別進(jìn)行解碼,將數(shù)據(jù)包分為8個(gè)部分包頭2個(gè)部分,數(shù)據(jù)體6個(gè)部分(每一部分均為16位),分別采用SE⑶ED碼(漢明碼(22,16))進(jìn)行編碼。編碼后的數(shù)據(jù)包總長176位,分為8個(gè)22位的數(shù)據(jù)塊(包頭I 包頭2,數(shù)據(jù)體I 數(shù)據(jù)體6 ),且共包含48位校驗(yàn)位,采用分塊編碼的方式可以校正每一部分同時(shí)包含一位錯(cuò)誤的8位錯(cuò)誤,并可以最多檢測出每一部分同時(shí)包含2位錯(cuò)誤的16位錯(cuò)誤。將數(shù)據(jù)包包劃分為小數(shù)據(jù)塊分別編碼可以減少編/解碼器的邏輯級(jí)數(shù),有效提高性能并節(jié)省路由器的面積和功耗。步驟3)中對(duì)鏈路進(jìn)行檢測的詳細(xì)步驟包括發(fā)生錯(cuò)誤的鏈路的下行路由器向上行路由器請(qǐng)求發(fā)送測試向量,上行路由器收到請(qǐng)求后向下行路由器發(fā)送測試數(shù)據(jù),如果下行路由器檢測到任意一個(gè)測試數(shù)據(jù)包含錯(cuò)誤則判定為檢測遇到錯(cuò)誤,否則判定為檢測未遇到錯(cuò)誤,然后恢復(fù)該鏈路。對(duì)當(dāng)前鏈路測試期間,路由器的其他鏈路仍可以正常傳輸包。本實(shí)施例中,測試數(shù)據(jù)包含{0}n、{l}n、{01}n/2、{10}"72共4個(gè)測試向量,其中n為發(fā)生錯(cuò)誤鏈路的位寬。
如圖5所示,假設(shè)相鄰兩 個(gè)路由器為RO和R1,連接RO和Rl的一對(duì)雙向鏈路分別為發(fā)送(Tx)鏈路和接收(Rx)鏈路(以RO的角度命名)。Tx鏈路和Rx鏈路的狀態(tài)分別使用一位信號(hào)Tx_normal和Rx_normal表示(I :表示缺省配置方向;0 :表示缺省配置方向的反向)。對(duì)于Tx鏈路而言,默認(rèn)傳輸方向?yàn)槁酚善鱎O到路由器R1,數(shù)據(jù)包從路由器RO通過Tx鏈路發(fā)送給路由器R1,此時(shí)Tx鏈路的上行路由器為R0,下行路由器為Rl ;當(dāng)Tx鏈路的傳輸方向反向以后,數(shù)據(jù)包從路由器Rl通過Tx鏈路發(fā)送給路由器R0,此時(shí)Tx鏈路的上行路由器為R1,下行路由器為R0。如圖5中的區(qū)域(a)所示,如果Tx鏈路故障并且Rx鏈路處于缺省配置方向(Rx_normal=l ),在以下兩種情況下需要對(duì)Rx鏈路進(jìn)行反向配置(I )R0的到達(dá)包數(shù)大于輸出端口數(shù);(2 )R0的到達(dá)包數(shù)小于或等于輸出端口數(shù)并且有到達(dá)包的唯一最佳路由方向沿Tx鏈路方向。在情況(I)中,由于RO的到達(dá)包數(shù)大于輸出端口數(shù),如果不對(duì)Rx鏈路進(jìn)行反向,將有包不能被處理。在情況(2)中,RO的到達(dá)包數(shù)小于或等于輸出端口數(shù),僅當(dāng)有到達(dá)包的唯一最佳路由方向沿Tx鏈路方向時(shí),才需要對(duì)Rx鏈路進(jìn)行變向。如果Rx鏈路為反向配置狀態(tài)(Rx_normal=0),需要對(duì)Rx鏈路變向的兩種情況為(1)R1的到達(dá)包數(shù)大于輸出端口數(shù);
(2)Rl的到達(dá)包數(shù)小于或等于輸出端口數(shù)并且有到達(dá)包的唯一最佳路由方向沿Rx鏈路方向。在情況(I)中,由于之前Rx鏈路的變向?qū)е翿l的到達(dá)包數(shù)大于輸出端口數(shù),因此需要對(duì)Rx鏈路進(jìn)行變向恢復(fù)缺省方向。在情況(2)中,如果Rl的到達(dá)包數(shù)小于輸出端口數(shù),正常情況不需要對(duì)Rx鏈路變向,只有當(dāng)Rl中有到達(dá)包的唯一最佳路由方向沿Rx鏈路方向時(shí)才需要恢復(fù)Rx鏈路的缺省方向。如圖5中的區(qū)域(b)所示,如果Rx鏈路故障并且Tx鏈路處于缺省配置方向(Tx_normal=l), Tx鏈路變向的條件為以下兩種情況(I) Rl的到達(dá)包數(shù)大于輸出端口數(shù);(2)Rl的到達(dá)包數(shù)小于或等于輸出端口數(shù)并且有到達(dá)包的唯一最佳路由方向沿Rx鏈路方向。如果Tx鏈路處于反向配置狀態(tài)(Tx_normal =0),需要變向的情況為(1)R0的到達(dá)包數(shù)大于輸出端口數(shù);(2) RO的到達(dá)包數(shù)小于或等于輸出端口數(shù)并且有到達(dá)包的唯一最佳路由方向沿Tx鏈路方向。如圖6所示,本實(shí)施例面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置包括路由器1,路由器I包括路由計(jì)算單元11、交換分配器12、交叉開關(guān)13、包頭更新單元14和多個(gè)寄存器15,路由計(jì)算單元11、交換分配器12、交叉開關(guān)13依次相連,寄存器15分別通過路由計(jì)算單元11、交換分配器12、交叉開關(guān)13與包頭更新單元14相連,容錯(cuò)偏轉(zhuǎn)路由裝置還包括與寄存器15 —一對(duì)應(yīng)的多個(gè)傳輸控制單元、用于控制相鄰路由器I之間的鏈路傳輸方向的方向分配器5和用于檢測鏈路狀態(tài)的測試控制單元6,傳輸控制單元包括解碼器2、編碼器3和用于控制外部鏈路傳輸方向的鏈路控制邏輯4,寄存器15的輸出端通過解碼器2與交叉開關(guān)13相連,寄存器15的輸入端、包頭更新單元14的輸出端均依次通過編碼器3、鏈路控制邏輯4與收發(fā)鏈路相連,方向分配器5的輸入端分別與相鄰兩個(gè)路由器I的路由計(jì)算單元11相連,方向分配器5的輸出端與鏈路控制邏輯4的控制端相連,測試控制單元6與鏈路控制邏輯4相連。在本實(shí)施例中,相鄰路由器I之間每一對(duì)雙向鏈路的方向通過一個(gè)方向分配器5進(jìn)行配置雙向鏈路的傳輸方向,每一個(gè)路由器I形成可配置雙向鏈路的容錯(cuò)偏轉(zhuǎn)路由器結(jié)構(gòu)(BiFTDR)。在圖6 圖9中,黑色箭頭代表鏈路的默認(rèn)傳輸方向,線條箭頭代表鏈路反向后的傳輸方向。
如圖7所示,鏈路控制邏輯4包括第一雙向鏈路41和第二雙向鏈路42、二選一選擇器43和二輸出分配器44,寄存器15的輸入端通過二選一選擇器43分別與第一雙向鏈路41、第二雙向鏈路42相連,包頭更新單元14的輸出端通過二輸出分配器44分別與第一雙向鏈路41、第二雙向鏈路42相連,第一雙向鏈路41和第二雙向鏈路42上均設(shè)有用于控制鏈路收發(fā)方向的方向控制器45, 二選一選擇器43的控制端、二輸出分配器44的控制端、方向控制器45的控制端分別與方向分配器5的輸出端相連。由于第一雙向鏈路41、第二雙向鏈路42均為雙向鏈路,因此,在進(jìn)入寄存器15的數(shù)據(jù)通路上需要二選一選擇器43選擇從哪一條雙向鏈路輸入,從編碼器3輸出的數(shù)據(jù)通路上需要二輸出分配器44選擇從哪一條雙向鏈路輸出。方向分配器5接收相鄰路由器I的到達(dá)數(shù)據(jù)包信息(到達(dá)數(shù)據(jù)包的數(shù)量、每一個(gè)到達(dá)數(shù)據(jù)包的路由計(jì)算結(jié)果,由路由計(jì)算單元11產(chǎn)生)并根據(jù)鏈路的故障狀態(tài)(由測試控制單兀6產(chǎn)生)進(jìn)行方向分配,輸出二選一選擇器43和二輸出分配器44的選擇信號(hào)、方向控制器45的使能信號(hào)。本實(shí)施例中,方向控制器45包括一對(duì)相互并聯(lián)且方向反向布置的低有效三態(tài)門451和高有效三態(tài)門452,低有效三態(tài)門451的控制端和高有效三態(tài)門452的控制端同時(shí)與方向分配器5的輸出端相連。由于二維Mesh網(wǎng)絡(luò)在片上網(wǎng)絡(luò)中廣泛使用,在此以二維Mesh網(wǎng)絡(luò)為例說明本發(fā)明的應(yīng)用,除了二維Mesh網(wǎng)絡(luò)以外,本實(shí)施例也可用于路由器輸入端口數(shù)與輸出端口數(shù)相等的任意拓?fù)浣Y(jié)構(gòu)中。如圖8所示,應(yīng)用本實(shí)施例的二維Mesh網(wǎng)絡(luò)為3 X 3 二維Mesh網(wǎng)絡(luò)。在該二維Mesh網(wǎng)絡(luò)中,每一個(gè)路由器I都包括5個(gè)寄存器15和與寄存器15 —一對(duì)應(yīng)的5個(gè)傳輸控制單元。圖中雙向鏈路中的黑色箭頭為缺省配置方向(默認(rèn)傳輸方向),灰色箭頭為可配置的傳輸方向。相鄰路由器I之間每一對(duì)雙向鏈路的方向通過一個(gè)方向分配器5配置,在3X3 二維Mesh網(wǎng)絡(luò)中一共需要12個(gè)方向分配器5。如圖9所示,方向分配器5連接于相鄰的路由器RO和Rl之間,方向分配器5分別通過路由計(jì)算單元11獲取RO和Rl的到達(dá)包的狀況,并同步控制路由器RO和Rl的鏈路控制邏輯4。在無故障網(wǎng)絡(luò)中,每一條雙向鏈路按缺省方向工作,方向分配器5不工作,可以采用門控時(shí)鐘關(guān)閉其時(shí)鐘信號(hào)以降低功耗。在有單向故障鏈路存在的情況下,方向分配器5根據(jù)相鄰兩個(gè)路由器I的到達(dá)包的狀況對(duì)無故障雙向鏈路的方向進(jìn)行動(dòng)態(tài)配置。本實(shí)施例的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置的工作過程如下輸入數(shù)據(jù)包到達(dá)寄存器15后,首先由解碼器3進(jìn)行解碼,然后由路由計(jì)算單元11計(jì)算得到每一個(gè)數(shù)據(jù)包的最佳路由方向(通過最短路徑到達(dá)目標(biāo)節(jié)點(diǎn)的路由方向),交換分配器12對(duì)輸入數(shù)據(jù)包按其在網(wǎng)絡(luò)中經(jīng)歷的跳步數(shù)進(jìn)行優(yōu)先級(jí)排序,并根據(jù)路由計(jì)算的結(jié)果按包優(yōu)先級(jí)從高到低的順序產(chǎn)生的交叉開關(guān)13的選擇信號(hào)。由于包中的源地址和目標(biāo)地址采用相對(duì)尋址,因此,數(shù)據(jù)包在經(jīng)過交叉開關(guān)后需要經(jīng)過包頭更新單元14對(duì)地址域和跳步數(shù)域進(jìn)行更新。源地址與和目標(biāo)地址域分別更新為從下一個(gè)路由器到源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的相對(duì)地址。經(jīng)過包頭更新后的數(shù)據(jù)包由編碼器3進(jìn)行重新編碼。測試控制單元6在鏈路出現(xiàn)瞬態(tài)故障時(shí)產(chǎn)生測試向量對(duì)鏈路進(jìn)行測試,如果經(jīng)過解碼器3后檢測出包中任意部分包含兩位錯(cuò)誤,路由器進(jìn)入測試模式,兩個(gè)路由器之間的測試控制單元6使用4個(gè)測試向量({0}n,{l}n, {01} {10}其中n為鏈路位寬)對(duì)故障鏈路進(jìn)行收發(fā)測試,被測試鏈路暫時(shí)不可用。在測試模式下,下行路由器請(qǐng)求上行路由器發(fā)送測試向量,上行路由器依次發(fā)送上述4個(gè)測試向量。如果下行路由器檢測到4個(gè)測試向量中的任意一個(gè)包含錯(cuò)誤,測試過程終止,鏈路即被標(biāo)記為永久故障鏈路。如果所有測試通過,此故障為瞬態(tài)故障,鏈路重新被恢復(fù)。在測試模式期間,路由器的其他鏈路仍可以正常傳輸包。在檢測到發(fā)生單向鏈路故障時(shí),如果是Tx鏈路故障,則檢查是否滿足圖5中(a)所示的變向條件,若滿足條件,則對(duì)Rx鏈路進(jìn)行變向。Rx鏈路變向后也需要檢查變向條件根據(jù)情況恢復(fù)方向。如果是Rx鏈路故障,則檢查是否滿足圖5中(b)所示的變向條件,若滿足條件,則對(duì)Tx鏈路進(jìn)行變向。Tx鏈路變向后也需要檢查變向條件根據(jù)情況恢復(fù)方向,因此即使發(fā)生單向鏈路故障,也不會(huì)通過自動(dòng)配置鏈路方向而將網(wǎng)絡(luò)的數(shù)據(jù)包收發(fā)效率保持最優(yōu)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也 應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其特征在于其實(shí)施步驟如下 .1)將任意相鄰路由器通過可配置雙向傳輸鏈路相連; .2)任意路由器在發(fā)送數(shù)據(jù)包前對(duì)發(fā)送的數(shù)據(jù)包進(jìn)行編碼,在接收數(shù)據(jù)包后對(duì)數(shù)據(jù)包進(jìn)行解碼,當(dāng)解碼發(fā)生指定錯(cuò)誤跳轉(zhuǎn)執(zhí)行步驟3); .3)暫停發(fā)生指定錯(cuò)誤的鏈路,對(duì)所述鏈路進(jìn)行檢測,如果檢測未遇到錯(cuò)誤則恢復(fù)所述鏈路,如果檢測遇到錯(cuò)誤則將所述鏈路標(biāo)記為故障鏈路; .4)實(shí)時(shí)檢測任意相鄰路由器之間的雙向傳輸鏈路,在雙向傳輸鏈路的一個(gè)鏈路為故障鏈路、另一個(gè)鏈路為正常鏈路時(shí),如果正常鏈路的上行路由器到達(dá)數(shù)據(jù)包數(shù)大于輸出端口數(shù),或者正常鏈路的下行路由器到達(dá)數(shù)據(jù)包數(shù)不大于輸出端口數(shù)且存在唯一最佳路由方向?yàn)樗稣f溌返臄?shù)據(jù)包,則將所述正常鏈路的傳輸方向配置為反向;并在正常鏈路的下行路由器到達(dá)數(shù)據(jù)包數(shù)大于輸出端口數(shù)時(shí),或者正常鏈路的上行路由器到達(dá)數(shù)據(jù)包數(shù)不大于輸出端口數(shù)且存在唯一最佳路由方向?yàn)樗稣f溌返臄?shù)據(jù)包時(shí),恢復(fù)所述正常鏈路的默認(rèn)傳輸方向。
2.根據(jù)權(quán)利要求I所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其特征在于所述步驟2)中的編碼是指使用SECDED碼對(duì)數(shù)據(jù)包進(jìn)行編碼;所述步驟2)中的解碼是指使用SE⑶ED碼對(duì)數(shù)據(jù)包進(jìn)行解碼。
3.根據(jù)權(quán)利要求2所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其特征在于,所述對(duì)數(shù)據(jù)包進(jìn)行解碼的具體步驟包括將數(shù)據(jù)包的包頭使用SECDED碼編碼為至少兩個(gè)數(shù)據(jù)塊,將數(shù)據(jù)包的數(shù)據(jù)體使用SECDED碼編碼為多個(gè)數(shù)據(jù)塊。
4.根據(jù)權(quán)利要求3所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其特征在于,所述對(duì)數(shù)據(jù)包進(jìn)行解碼的詳細(xì)步驟包括使用SECDED碼對(duì)數(shù)據(jù)包的包頭數(shù)據(jù)塊和數(shù)據(jù)體的數(shù)據(jù)塊分別進(jìn)行解碼,同時(shí)讀取解碼過程中產(chǎn)生的校驗(yàn)子,如果校驗(yàn)子包含的錯(cuò)誤信息為一位發(fā)生錯(cuò)誤,則直接校正該錯(cuò)誤;如果校驗(yàn)子包含的錯(cuò)誤信息為兩位發(fā)生錯(cuò)誤,則判定發(fā)生所述指定錯(cuò)誤。
5.根據(jù)權(quán)利要求I或2或3或4所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其特征在于,所述步驟3)中對(duì)鏈路進(jìn)行檢測的詳細(xì)步驟包括所述發(fā)生錯(cuò)誤的鏈路的下行路由器向上行路由器請(qǐng)求發(fā)送測試向量,所述上行路由器收到請(qǐng)求后向下行路由器發(fā)送測試數(shù)據(jù),如果下行路由器檢測到任意一個(gè)測試數(shù)據(jù)包含錯(cuò)誤則判定為檢測遇到錯(cuò)誤,否則判定為檢測未遇到錯(cuò)誤。
6.根據(jù)權(quán)利要求5所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法,其特征在于所述測試數(shù)據(jù)包含{0}n、{l}n、(Olln72, {10}n/2共4個(gè)測試向量,其中n為發(fā)生錯(cuò)誤鏈路的位寬。
7.一種面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置,包括路由器(1),所述路由器(I)包括路由計(jì)算單元(11)、交換分配器(12)、交叉開關(guān)(13)、包頭更新單元(14)和多個(gè)寄存器(15),所述路由計(jì)算單元(11)、交換分配器(12)、交叉開關(guān)(13)依次相連,所述寄存器(15)分別通過路由計(jì)算單元(11)、交換分配器(12)、交叉開關(guān)(13)與包頭更新單元(14)相連,其特征在于所述容錯(cuò)偏轉(zhuǎn)路由裝置還包括與寄存器(15) —一對(duì)應(yīng)的多個(gè)傳輸控制單元、用于控制相鄰路由器(I)之間的鏈路傳輸方向的方向分配器(5)和用于檢測鏈路狀態(tài)的測試控制單元(6),所述傳輸控制單元包括解碼器(2)、編碼器(3)和用于控制外部鏈路傳輸方向的鏈路控制邏輯(4),所述寄存器(15)的輸出端通過解碼器(2)與交叉開關(guān)(13)相連,所述寄存器(15)的輸入端、所述包頭更新單元(14)的輸出端均依次通過所述編碼器(3)、鏈路控制邏輯(4)與收發(fā)鏈路相連,所述方向分配器(5)的輸入端分別與相鄰兩個(gè)路由器(I)的路由計(jì)算單元(11)相連,所述方向分配器(5)的輸出端與鏈路控制邏輯(4)的控制端相連,所述測試控制單元(6)與鏈路控制邏輯(4)相連。
8.根據(jù)權(quán)利要求7所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置,其特征在于所述鏈路控制邏輯(4)包括第一雙向鏈路(41)和第二雙向鏈路(42)、二選一選擇器(43)和二輸出分配器(44),所述寄存器(15)的輸入端通過二選一選擇器(43)分別與第一雙向鏈路(41)、第二雙向鏈路(42)相連,所述包頭更新單元(14)的輸出端通過二輸出分配器(44)分別與第一雙向鏈路(41 )、第二雙向鏈路(42 )相連,所述第一雙向鏈路(41)和第二雙向鏈路(42)上均設(shè)有用于控制鏈路收發(fā)方向的方向控制器(45),所述二選一選擇器(43)的控制端、二輸出分配器(44)的控制端、方向控制器(45)的控制端分別與所述方向分配器(5)的輸出端相連。
9.根據(jù)權(quán)利要求8所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置,其特征在于所述方向控制器(45)包括一對(duì)相互并聯(lián)且方向反向布置的低有效三態(tài)門(451)和高有效三態(tài)門(452),所述低有效三態(tài)門(451)的控制端和高有效三態(tài)門(452)的控制端同時(shí)與所述方向分配器(5)的輸出端相連。
10.根據(jù)權(quán)利要求7或8或9所述的面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由裝置,其特征在于所述解碼器(2)為SECDED碼編碼器,所述編碼器(3)為SECDED碼編碼器。
全文摘要
本發(fā)明公開了一種面向無緩沖片上網(wǎng)絡(luò)的容錯(cuò)偏轉(zhuǎn)路由方法及裝置,方法步驟如下1)將相鄰路由器通過可配置雙向傳輸鏈路相連;2)在發(fā)送數(shù)據(jù)包前進(jìn)行編碼、在接收數(shù)據(jù)包后進(jìn)行解碼,解碼發(fā)生指定錯(cuò)誤跳轉(zhuǎn)下一步;3)暫停錯(cuò)誤鏈路并對(duì)鏈路進(jìn)行檢測,如果檢測未遇到錯(cuò)誤則恢復(fù)鏈路,否則將鏈路標(biāo)記故障;4)根據(jù)正常鏈路兩端的收發(fā)情況對(duì)單向故障的鏈路進(jìn)行傳輸方向進(jìn)行配置;裝置包括路由器和用于控制相鄰路由器之間的鏈路傳輸方向的方向分配器,路由器包括計(jì)算單元、交換分配器、交叉開關(guān)、包頭更新單元、多個(gè)寄存器、測試控制單元和與寄存器對(duì)應(yīng)的多個(gè)方向可配置的傳輸控制單元。本發(fā)明具有容錯(cuò)性能好、鏈路利用率高、面積開銷小的優(yōu)點(diǎn)。
文檔編號(hào)H04L12/56GK102629912SQ20121008309
公開日2012年8月8日 申請(qǐng)日期2012年3月27日 優(yōu)先權(quán)日2012年3月27日
發(fā)明者馮超超, 張民選, 徐煒遐, 曹躍勝, 李元山, 李晉文, 羅煜峰, 肖立權(quán), 胡軍, 蔣句平, 陳旭, 齊樹波 申請(qǐng)人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)