專利名稱:一種應(yīng)用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種應(yīng) 用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法及系統(tǒng),應(yīng)用于集成電路領(lǐng) 域,尤其涉及集成電路片上互連網(wǎng)絡(luò)設(shè)計(jì)領(lǐng)域。
背景技術(shù):
隨著深亞微米超大規(guī)模集成電路工藝技術(shù)的成熟及進(jìn)一步發(fā)展,SoC (System on Chip,片上系統(tǒng))的設(shè)計(jì)面臨著嚴(yán)峻的問(wèn)題,主要表現(xiàn)在三個(gè)方面連線延遲與全局時(shí)鐘的 同步問(wèn)題,有限地址空間和無(wú)法支持多組設(shè)備并行通信等結(jié)構(gòu)性問(wèn)題,以及系統(tǒng)擴(kuò)展問(wèn)題。 為了解決SoC設(shè)計(jì)中遇到的問(wèn)題,歐洲一些研究機(jī)構(gòu)于2000年提出了 NoC (Network on Chip,片上網(wǎng)絡(luò))的概念,其核心思想就是將計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)移植到芯片設(shè)計(jì)中來(lái),將片上 系統(tǒng)分割為執(zhí)行通信的多個(gè)子系統(tǒng),子系統(tǒng)之間通過(guò)網(wǎng)絡(luò)互連,從體系結(jié)構(gòu)上徹底解決總 線架構(gòu)帶來(lái)的缺陷。片上網(wǎng)絡(luò)由RN (Resource Node,資源節(jié)點(diǎn))和 CN(Communication Node,通信節(jié) 點(diǎn))兩個(gè)基本部分組成。資源節(jié)點(diǎn)執(zhí)行計(jì)算功能,資源節(jié)點(diǎn)之間可以通過(guò)收發(fā)消息進(jìn)行通 信。在片上網(wǎng)絡(luò)研究的眾多分支中,路由方法占據(jù)著重要的地位。路由方法負(fù)責(zé)為數(shù)據(jù)包 傳輸分配路徑,方法的優(yōu)劣直接影響片上網(wǎng)絡(luò)的系統(tǒng)性能。目前片上網(wǎng)絡(luò)路由方法主要是 通過(guò)優(yōu)化和裁剪并行計(jì)算領(lǐng)域中的路由方法得到的,其時(shí)間開(kāi)銷(xiāo)、資源開(kāi)銷(xiāo)以及容錯(cuò)性能 等方面并不完全適應(yīng)片上網(wǎng)絡(luò)的需求,特別是在容錯(cuò)性方面,主要缺陷表現(xiàn)在現(xiàn)有的路由 方法主要根據(jù)監(jiān)控相鄰節(jié)點(diǎn)獲得局部網(wǎng)絡(luò)狀態(tài),而忽略了全局網(wǎng)絡(luò)狀態(tài)對(duì)數(shù)據(jù)包傳輸?shù)挠?響。應(yīng)用該方法的路由方法存在如下幾個(gè)問(wèn)題
a)當(dāng)網(wǎng)絡(luò)負(fù)載較重時(shí),容易產(chǎn)生局部鏈路擁堵,導(dǎo)致一些關(guān)鍵路徑的通信請(qǐng)求不能得 到實(shí)時(shí)響應(yīng);
b)網(wǎng)絡(luò)負(fù)載分布不均勻;在網(wǎng)絡(luò)的某一區(qū)域內(nèi)數(shù)據(jù)流量過(guò)大,數(shù)據(jù)包延時(shí)無(wú)法接受,而 同時(shí)網(wǎng)絡(luò)的某些區(qū)域的通信節(jié)點(diǎn)處于空閑狀態(tài),網(wǎng)絡(luò)鏈路利用率過(guò)低;
c)當(dāng)網(wǎng)絡(luò)中出現(xiàn)故障節(jié)點(diǎn)或某些節(jié)點(diǎn)被暫時(shí)禁用而導(dǎo)致發(fā)生擁堵的鏈路數(shù)增加時(shí),通 信性能會(huì)大大降低。因此,從全局網(wǎng)絡(luò)狀態(tài)信息的角度,研究保證QoS性能約束并且適用于片上網(wǎng)絡(luò) 的動(dòng)態(tài)路徑分配方法,使之能夠根據(jù)網(wǎng)絡(luò)狀態(tài)的變化調(diào)整路由路徑,以解決網(wǎng)絡(luò)擁塞和鏈 路故障的問(wèn)題,是優(yōu)化和改善片上網(wǎng)絡(luò)通信性能的一種重要手段。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)背景技術(shù)的缺陷,提供一種應(yīng)用于片上網(wǎng)絡(luò)的 動(dòng)態(tài)路徑分配方法及應(yīng)用該方法的動(dòng)態(tài)路徑分配系統(tǒng),通過(guò)實(shí)時(shí)收集片上網(wǎng)絡(luò)中各路由單 元的帶寬占用情況和故障信息,并根據(jù)網(wǎng)絡(luò)狀態(tài)動(dòng)態(tài)調(diào)整通信任務(wù)的路由路徑,使之繞開(kāi) 擁塞和故障的鏈路。本發(fā)明為解決上述技術(shù)問(wèn)題采用以下技術(shù)方案一種用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法,包括如下步驟
a)根據(jù)源節(jié)點(diǎn)與目的節(jié) 點(diǎn)的ID判斷兩者的相對(duì)位置,針對(duì)具體的相對(duì)位置判斷源節(jié) 點(diǎn)到目的節(jié)點(diǎn)是否有最短路徑存在。b)如果不存在最短路徑,則尋找中繼源節(jié)點(diǎn),中繼源節(jié)點(diǎn)分別與原來(lái)的目的節(jié)點(diǎn)、 源節(jié)點(diǎn)分別組成子通信任務(wù)。根據(jù)源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的相對(duì)位置情況,記錄當(dāng)前節(jié)點(diǎn)及其 路徑方向上的節(jié)點(diǎn),以及鏈路帶寬。C)分別整理以源節(jié)點(diǎn)為起點(diǎn)的正向路徑和以目的節(jié)點(diǎn)為起點(diǎn)的逆向路徑,尋找所 有可能的最短路徑組合和使用的帶寬,直至結(jié)果一致。d)將源節(jié)點(diǎn)的記錄與目的節(jié)點(diǎn)的記錄連接起來(lái),分析各組記錄的帶寬,從中選擇 帶寬最小的點(diǎn)序列進(jìn)行路徑映射。如果通信任務(wù)被拆分,將各部分路徑組合起來(lái)得到源節(jié) 點(diǎn)到目的節(jié)點(diǎn)的路徑。進(jìn)一步的,為了優(yōu)化路由方法的延時(shí)性能,本發(fā)明首先以最短路徑滿足QoS的延 時(shí)約束,然后在滿足延時(shí)約束的基礎(chǔ)上計(jì)算滿足帶寬約束的路徑。因此在得到通信任務(wù)中 的源節(jié)點(diǎn)與目的節(jié)點(diǎn)位置后,首先應(yīng)判斷兩者之間是否存在最短路徑,其步驟如下
al)如果源節(jié)點(diǎn)和目的節(jié)點(diǎn)的χ維坐標(biāo)和y維坐標(biāo)都不相同,在下列情況中存在最短路
徑
①如果源節(jié)點(diǎn)的兩條輸出鏈路或者目的節(jié)點(diǎn)的兩條輸入鏈路只有一條發(fā)生故障,則存 在最短路徑。②如果源節(jié)點(diǎn)的一條輸出鏈路和目的節(jié)點(diǎn)的一條輸入鏈路故障,源節(jié)點(diǎn)與目的節(jié) 點(diǎn)的最短路徑的曼哈頓距離是2,并且故障鏈路分別位于X維和y維,則存在最短路徑。③如果源節(jié)點(diǎn)的一條輸出鏈路和目的節(jié)點(diǎn)的一條輸入鏈路故障,源節(jié)點(diǎn)與目的節(jié) 點(diǎn)的最短路徑的曼哈頓距離是3,故障鏈路分別位于χ維和y維,則存在最短路徑。④如果源節(jié)點(diǎn)的一條輸出鏈路和目的節(jié)點(diǎn)的一條輸入鏈路故障,源節(jié)點(diǎn)與目的節(jié) 點(diǎn)的最短路徑的曼哈頓距離是3,故障鏈路都位于χ維或y維,并且該維上的曼哈頓距離為 1,則存在最短路徑。⑤源節(jié)點(diǎn)與目的節(jié)點(diǎn)的最短路徑的曼哈頓距離不小于4。a2)如果源節(jié)點(diǎn)與目的節(jié)點(diǎn)的χ維坐標(biāo)或y維坐標(biāo)相同,只存在一條源節(jié)點(diǎn)到目的 節(jié)點(diǎn)的最短路徑,一旦該路徑中的任何一條鏈路發(fā)生故障,將不會(huì)有最短路徑存在。進(jìn)一步的,如果存在源節(jié)點(diǎn)到目的節(jié)點(diǎn)的最短路徑,本發(fā)明從源節(jié)點(diǎn)到目的節(jié)點(diǎn) 的多條最短路徑中選擇符合帶寬約束的路徑作為最優(yōu)路徑。如果不存在源節(jié)點(diǎn)到目的節(jié)點(diǎn) 的最短路徑,本發(fā)明將路由路徑劃分為多個(gè)子通信任務(wù)并尋找中繼節(jié)點(diǎn),然后分別為每個(gè) 子任務(wù)分配符合帶寬約束和延時(shí)約束的路徑,再將各部分路徑組合起來(lái)。該過(guò)程具體步驟 如下
bl)如果不存在最短路徑,將源節(jié)點(diǎn)周?chē)c數(shù)據(jù)傳輸方向相反的相鄰節(jié)點(diǎn)作為中繼源 節(jié)點(diǎn),將目的節(jié)點(diǎn)周?chē)c數(shù)據(jù)傳輸方向相反的相鄰節(jié)點(diǎn)作為中繼目的節(jié)點(diǎn),與原來(lái)的目的 節(jié)點(diǎn)、源節(jié)點(diǎn)分別組成子通信任務(wù)。b2)從源節(jié)點(diǎn)開(kāi)始記錄當(dāng)前節(jié)點(diǎn)及其最短路徑方向上的下一個(gè)節(jié)點(diǎn),以及鏈路帶 寬。同時(shí),從目的節(jié)點(diǎn)開(kāi)始回溯,開(kāi)始記錄在最短路徑方向上可能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn)ID, 以及相應(yīng)的鏈路帶寬。記錄節(jié)點(diǎn)時(shí)必須判斷鏈路的狀態(tài),將故障鏈路的帶寬設(shè)置為帶寬上限。b3)整理源節(jié)點(diǎn)的序列記錄和目的節(jié)點(diǎn)的序列記錄。如果有節(jié)點(diǎn)序列重復(fù),則需要 對(duì)其進(jìn)行整理,保留使用帶寬最小的相關(guān)節(jié)點(diǎn)序列。進(jìn)一步的,本發(fā)明通過(guò)節(jié)點(diǎn)序列記錄通信任務(wù)中數(shù)據(jù)包經(jīng)過(guò)的路徑。根據(jù)記錄序 列順序的不同,節(jié)點(diǎn)序列分為源節(jié)點(diǎn)序列記錄、目的節(jié)點(diǎn)序列和相關(guān)節(jié)點(diǎn)序列。本發(fā)明通過(guò) 對(duì)節(jié)點(diǎn)序列的整理,尋找最優(yōu)的路由路徑。具體步驟如下
Cl)根據(jù)源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的相對(duì)位置情況,從源節(jié)點(diǎn)開(kāi)始記錄當(dāng)前節(jié)點(diǎn)及其最短路 徑方向上的下一個(gè)節(jié)點(diǎn),以及鏈路帶寬。同時(shí),從目的節(jié)點(diǎn)開(kāi)始回溯,開(kāi)始記錄在最短路徑 方向上可能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn)ID,以及相應(yīng)的鏈路帶寬。記錄節(jié)點(diǎn)時(shí)必須判斷鏈路的狀 態(tài)。c2)分別把上次記錄中的各個(gè)后繼節(jié)點(diǎn)nextID作為源節(jié)點(diǎn),保持目的節(jié)點(diǎn)不變, 記錄當(dāng)前節(jié)點(diǎn)和最短路徑方向上的后繼結(jié)點(diǎn)以及使用的帶寬。c3)保持源節(jié)點(diǎn)不變,把上次記錄中的前繼節(jié)點(diǎn)preID作為目的節(jié)點(diǎn),依次記錄最 短路徑方向上可能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn)以及使用的帶寬。c4)重復(fù)c2)和c3)中的操作,直至nextID節(jié)點(diǎn)的集合與preID節(jié)點(diǎn)的集合完全相等。與上述動(dòng)態(tài)路徑分配方法相對(duì)應(yīng),本發(fā)明還提供一種用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分 配系統(tǒng),包括接收控制器、故障管理模塊、通信任務(wù)管理模塊、節(jié)點(diǎn)序列記錄模塊、路徑映射 模塊、路徑管理模塊、發(fā)送控制器;其中,
接收控制器用于接收路由單元永久性故障或鏈路擁塞狀態(tài)報(bào)告,并發(fā)送給故障管理模
塊;
故障管理模塊用于根據(jù)通信任務(wù)判斷源節(jié)點(diǎn)與目的節(jié)點(diǎn)兩者之間的相對(duì)位置,針對(duì)相 對(duì)位置判斷源節(jié)點(diǎn)到目的節(jié)點(diǎn)是否有最短路徑存在,并將判斷結(jié)果發(fā)送至通信任務(wù)管理模 塊;
通信任務(wù)管理模塊用于根據(jù)源節(jié)點(diǎn)與目的節(jié)點(diǎn)兩者之間的路徑情況對(duì)通信任務(wù)的路 徑進(jìn)行劃分和組合;
節(jié)點(diǎn)序列記錄模塊用于根據(jù)通信任務(wù)管理模塊的處理結(jié)果,分別生成符合帶寬和故障 避免約束的路由路徑結(jié)果并發(fā)送至路徑映射模塊;
路徑映射模塊用于將節(jié)點(diǎn)序列記錄模塊生成的路由路徑結(jié)果轉(zhuǎn)換成路由單元可識(shí)別 的數(shù)據(jù)格式;
路徑管理模塊用于對(duì)路徑映射模塊生成的路由路徑結(jié)果進(jìn)行格式調(diào)整和數(shù)據(jù)包裝,并 傳輸至發(fā)送控制器;
發(fā)送控制器用于將路徑管理模塊生成的數(shù)據(jù)發(fā)送至輸出總線。本發(fā)明采用以上技術(shù)方案,與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果
本發(fā)明可以實(shí)時(shí)收集片上網(wǎng)絡(luò)中各路由單元的帶寬占用情況和故障信息,并根據(jù)網(wǎng)絡(luò) 狀態(tài)動(dòng)態(tài)調(diào)整通信任務(wù)的路由路徑,使之繞開(kāi)擁塞和故障的鏈路。該方法能在片上網(wǎng)絡(luò)存 在鏈路擁塞和永久性故障的情況下優(yōu)化通信任務(wù)的路由路徑,平衡網(wǎng)絡(luò)負(fù)載,降低數(shù)據(jù)包 阻塞率,有利于改善片上網(wǎng)絡(luò)在鏈路擁塞和故障狀態(tài)下的性能。
圖1是動(dòng)態(tài)路徑分配系統(tǒng)的電路結(jié)構(gòu)圖; 圖2是故障處理模塊的工作流程圖3是通信任務(wù)模塊的電路結(jié)構(gòu)圖; 圖4是節(jié)點(diǎn)序列記錄模塊的工作流程圖; 圖5是節(jié)點(diǎn)序列記錄模塊的電路結(jié)構(gòu)圖; 圖6是路徑映射模塊的工作流程圖; 圖7是路徑映射模塊的電路 結(jié)構(gòu)圖; 圖8是路徑管理模塊的電路結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步詳細(xì)說(shuō)明
如圖1所示,動(dòng)態(tài)路徑分配系統(tǒng)按其實(shí)現(xiàn)的功能可劃分為節(jié)點(diǎn)序列記錄模塊、路徑映 射模塊、故障管理模塊、通信任務(wù)管理模塊和路徑管理模塊。各部分實(shí)現(xiàn)功能分別如下
(1)故障管理模塊針對(duì)不同相對(duì)位置根據(jù)全局網(wǎng)絡(luò)狀態(tài)信息判斷是否存在源節(jié)點(diǎn)到目 的節(jié)點(diǎn)的最短路徑,分為存在最短路徑和不存在最短路徑兩種情況將通信任務(wù)發(fā)送到通信 任務(wù)管理模塊進(jìn)行處理。(2)通信任務(wù)管理模塊將存在最短路徑的通信任務(wù)直接發(fā)送到節(jié)點(diǎn)序列記錄模 塊,進(jìn)行路徑分配。對(duì)于不存在最短路徑的通信任務(wù),通信任務(wù)管理模塊尋找合適的中繼源 節(jié)點(diǎn)與目的節(jié)點(diǎn)組成通信節(jié)點(diǎn)對(duì),或者中繼目的節(jié)點(diǎn)與源節(jié)點(diǎn)組成通信節(jié)點(diǎn)對(duì),將重新組 合的子通信任務(wù)發(fā)送到各個(gè)節(jié)點(diǎn)序列記錄模塊。(3)節(jié)點(diǎn)序列記錄模塊分析源節(jié)點(diǎn)與目的節(jié)點(diǎn)的相對(duì)位置,針對(duì)不同的相對(duì)位置 記錄節(jié)點(diǎn)序列以及已占用的鏈路帶寬,并對(duì)節(jié)點(diǎn)序列進(jìn)行整理,把通信量最小的節(jié)點(diǎn)序列 發(fā)送到路徑映射模塊。(4)路徑映射模塊根據(jù)當(dāng)前節(jié)點(diǎn)與其下一個(gè)節(jié)點(diǎn)的ID關(guān)系將點(diǎn)序列映射成路徑, 然后將路徑和跳數(shù)組成固定的數(shù)據(jù)格式,發(fā)送到路徑管理模塊。(5)路徑管理模塊對(duì)接收到的各部分路徑進(jìn)行組合,然后重新組包成路徑格式,發(fā) 送到輸出控制模塊的路徑存儲(chǔ)器。根據(jù)故障處理模塊的定義,故障處理函數(shù)分析源節(jié)點(diǎn)與目的節(jié)點(diǎn)的相對(duì)位置情 況,針對(duì)不同的相對(duì)位置根據(jù)鏈路狀態(tài)信息判斷通信節(jié)點(diǎn)對(duì)之間是否有最短路徑存在,然 后根據(jù)是否存在最短路徑進(jìn)行下一步處理。故障處理模塊的工作流程如圖2所示。故障處理模塊根據(jù)源節(jié)點(diǎn)與目的節(jié)點(diǎn)的相對(duì)位置情況調(diào)用函數(shù)FaultManageL NE > Faul tManager_WN> Faul tManager_ES > FaultManager_WS> FaultManager_Eff 禾口 FaultManager_SN完成通信任務(wù)的路徑分配。函數(shù)首先針對(duì)不同的相對(duì)位置分析源節(jié)點(diǎn) 與目的節(jié)點(diǎn)組成的矩形通信域內(nèi)的鏈路狀態(tài),根據(jù)故障鏈路的位置判斷是否有最短路徑存 在。如果存在最短路徑,則直接調(diào)用節(jié)點(diǎn)序列記錄函數(shù)和路徑映射函數(shù)為通信任務(wù)分配路 徑。如果不存在最短路徑,在通信網(wǎng)絡(luò)中尋找合適的中繼源節(jié)點(diǎn)或者中繼目的節(jié)點(diǎn),與源節(jié) 點(diǎn)、目的節(jié)點(diǎn)組合成多個(gè)子通信任務(wù),分別對(duì)各個(gè)子通信任務(wù)調(diào)用節(jié)點(diǎn)序列記錄函數(shù)和路 徑映射函數(shù)獲得各個(gè)子通信任務(wù)的最優(yōu)路徑,再將這些路徑按照順序組合起來(lái),獲得源節(jié)點(diǎn)到目的節(jié)點(diǎn)的最優(yōu)路徑。當(dāng)故障處理模塊完成對(duì)最短路徑判斷,該模塊必須通知通信任務(wù)管理模塊是否需 要對(duì)通信任務(wù)進(jìn)行重組,因此模塊使用信號(hào)線Split_flag完成此功能。設(shè)置split_flag 為低電平時(shí)表示不需要重組,為高電平時(shí),通信任務(wù)管理模塊必須對(duì)通信任務(wù)進(jìn)行重組。通信任務(wù)模塊對(duì)不存在最短路徑的通信任務(wù)進(jìn)行重組,電路結(jié)構(gòu)圖如附圖中圖3 所示。控制器接收信號(hào)線Split_flag,根據(jù)它的狀態(tài)控制發(fā)送模塊和任務(wù)重組模塊。如果 split_flag是低電平,控制器設(shè)置sencLtrigger為高電平,設(shè)置split_trigger為低電 平,控制發(fā)送模塊發(fā)送通信任務(wù),并將COmbine_flag設(shè)置為00狀態(tài)。如果split_flag的 狀態(tài)是高電平,控制器設(shè)置sencLtrigger為低電平,設(shè)置splitjrigger為高電平,啟動(dòng)任 務(wù)重組模塊。任務(wù)重組模塊重組通信任務(wù),按照不同的組合方式發(fā)送通信任務(wù),并且設(shè)置 combine_flag為相應(yīng)狀態(tài)的值。節(jié)點(diǎn)序列記錄模塊針對(duì)不同的相對(duì)位置記錄節(jié)點(diǎn)序列以及已占用的鏈路帶寬,并 對(duì)節(jié)點(diǎn)序列進(jìn)行整理,以獲得通信量最小的點(diǎn)序列。節(jié)點(diǎn)序列記錄模塊的工作流程如附圖 中圖4所示。首先,節(jié)點(diǎn)序列記錄函數(shù)分析源節(jié)點(diǎn)與目的節(jié)點(diǎn)的相對(duì)位置,根據(jù)不同的相對(duì) 位置調(diào)用各自的節(jié)點(diǎn)記錄程序記錄節(jié)點(diǎn)序列,并且對(duì)重復(fù)的節(jié)點(diǎn)信息的進(jìn)行處理。然后,對(duì) 節(jié)點(diǎn)序列進(jìn)行整理,調(diào)用路徑映射函數(shù)對(duì)整理結(jié)束的點(diǎn)序列進(jìn)行映射。 記錄源節(jié)點(diǎn)啟始的節(jié)點(diǎn)序列的過(guò)程,首先從源節(jié)點(diǎn)開(kāi)始,把源節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn), 記錄相對(duì)位置方向的下一個(gè)節(jié)點(diǎn),以及該鏈路的帶寬,記為pOintRecOrd_s
,源節(jié)點(diǎn)記錄 次數(shù)counter_sW 1。然后分別把記錄pointRecord_s
中每個(gè)節(jié)點(diǎn)point的低4位對(duì)應(yīng) 的節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),重復(fù)上述過(guò)程,直到counters彡recordCount_s0記錄目的節(jié)點(diǎn)啟始的節(jié)點(diǎn)序列的過(guò)程,首先從目的節(jié)點(diǎn)開(kāi)始,把目的節(jié)點(diǎn)作為 當(dāng)前節(jié)點(diǎn),回溯相對(duì)位置方向能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn),記錄該節(jié)點(diǎn)以及鏈路的帶寬,記為 pointRecord_d
,目的節(jié)點(diǎn)記錄次數(shù)counter_dW 1。然后分別把記錄pointRecord_d
中每個(gè)節(jié)點(diǎn)point的高4位對(duì)應(yīng)的節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),重復(fù)上述過(guò)程,直到COimter_d ^ recordCount—d0每個(gè)節(jié)點(diǎn)序列在記錄時(shí)都必須判斷該節(jié)點(diǎn)到下一個(gè)節(jié)點(diǎn)的鏈路狀態(tài),如果發(fā)生故 障或者擁塞將該序列的帶寬設(shè)為最大值。在對(duì)節(jié)點(diǎn)序列進(jìn)行處理的過(guò)程中,判斷各序列的 帶寬是否為最大值,如果是最大值,舍棄該節(jié)點(diǎn)序列,以保證所記錄的節(jié)點(diǎn)序列中無(wú)故障或 者擁塞鏈路。在矩形通信域內(nèi)無(wú)擁塞和故障的情況下,對(duì)于NE、WN、ES、WS四種相對(duì)位置,每一 個(gè)當(dāng)前節(jié)點(diǎn)有兩個(gè)節(jié)點(diǎn)序列;而對(duì)于相對(duì)位置EW和SN,每一個(gè)當(dāng)前節(jié)點(diǎn)只有一個(gè)節(jié)點(diǎn)序 列。各個(gè)相對(duì)位置方向記錄節(jié)點(diǎn)序列的流程大致相同,但是節(jié)點(diǎn)記錄的方向不同。相對(duì)位置 體現(xiàn)了數(shù)據(jù)流的方向。在最短路徑方向上記錄的節(jié)點(diǎn)序列的方向與相對(duì)位置的方向相同。 對(duì)于相對(duì)位置NE,數(shù)據(jù)流向?yàn)镹E方向。源節(jié)點(diǎn)記錄的節(jié)點(diǎn)序列分別是源節(jié)點(diǎn)在N方向和E 方向的相鄰節(jié)點(diǎn)及其鏈路帶寬。目的節(jié)點(diǎn)記錄的節(jié)點(diǎn)序列分別是從N方向和E方向能到該 節(jié)點(diǎn)的相鄰節(jié)點(diǎn)及其鏈路帶寬。而對(duì)于相對(duì)位置EW和SN,體現(xiàn)了數(shù)據(jù)流的方向是東西方向 或南北方向,但是沒(méi)有體現(xiàn)出數(shù)據(jù)流的起點(diǎn)在哪個(gè)方向,因此必須判斷數(shù)據(jù)流的準(zhǔn)確流向, 即目的節(jié)點(diǎn)在源節(jié)點(diǎn)的E方向還是W方向、S方向還是N方向。如果目的節(jié)點(diǎn)在源節(jié)點(diǎn)的 E方向,則源節(jié)點(diǎn)記錄的節(jié)點(diǎn)序列是源節(jié)點(diǎn)在E方向的相鄰節(jié)點(diǎn)及其鏈路帶寬,目的節(jié)點(diǎn)記錄的節(jié)點(diǎn)序列是從E方向能到該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)及其鏈路帶寬。在counter_s彡1時(shí),pointRecord_s中將會(huì)有重復(fù)的節(jié)點(diǎn)序列。如果有節(jié)點(diǎn)序 列重復(fù),則需要對(duì)其進(jìn)行整理,保留帶寬較小的鏈路。
在節(jié)點(diǎn)序列記錄模塊的電路結(jié)構(gòu)如附圖中圖5所示,模塊設(shè)計(jì)了節(jié)點(diǎn)序列記錄結(jié) 束標(biāo)志位finish_flagl、finish_flag2和finish_flag3。低電平表示節(jié)點(diǎn)序列記錄未完 成,高電平表示節(jié)點(diǎn)序列記錄結(jié)束。如果源節(jié)點(diǎn)到目的節(jié)點(diǎn)的最短路徑的跳數(shù)不超過(guò)2,設(shè) 置finish_flagl為高電平;如果跳數(shù)是3或者4,設(shè)置finish_flag2為高電平,finish, flagl為低電平;如果跳數(shù)大于4,設(shè)置finish_flagl、finish_flag2為低電平,finish, flag3為高電平。網(wǎng)絡(luò)中無(wú)故障和擁塞發(fā)生時(shí),在源節(jié)點(diǎn)與目的節(jié)點(diǎn)的六種相對(duì)位置中,NE、WN、ES 和WS輸入第二級(jí)節(jié)點(diǎn)記錄子模塊的源節(jié)點(diǎn)和目的節(jié)點(diǎn)的通信節(jié)點(diǎn)對(duì)有兩個(gè),而EW和SN輸 入第二級(jí)節(jié)點(diǎn)記錄子模塊的源節(jié)點(diǎn)和目的節(jié)點(diǎn)的通信節(jié)點(diǎn)對(duì)只有一個(gè)。因此,模塊設(shè)計(jì)了 src_flag2和desti_flag2分別記錄輸入第二級(jí)節(jié)點(diǎn)記錄子模塊的源節(jié)點(diǎn)和目的節(jié)點(diǎn)的通 信節(jié)點(diǎn)對(duì)的位置,src_flag3和deSti_flag3分別記錄輸入第三級(jí)節(jié)點(diǎn)記錄子模塊的源節(jié) 點(diǎn)和目的節(jié)點(diǎn)的通信節(jié)點(diǎn)對(duì)的位置,設(shè)置高電平表示有效的通信任務(wù)。src_flag2
,src_ flag2[l]分別對(duì)應(yīng)通信任務(wù) src_taskl、src_task2 是否有效,desti_flag2
、desti_ flag2[l]分別對(duì)應(yīng)通信任務(wù) desti_taskl、desti_task2 是否有效。src_flag3
、src_ flag3[l]、src_flag3[2]分另U 對(duì)應(yīng)通信任務(wù) src_task3、src_task4、src_task5 是否有 效,desti_flag3
、desti_flag3 [1]、desti_flag3 [2]分別對(duì)應(yīng)通信任務(wù) desti_task3、 desti_task4、desti_task5 是否有效。節(jié)點(diǎn)序列記錄模塊按照三級(jí)節(jié)點(diǎn)管理,第一級(jí)節(jié)點(diǎn)記錄模塊記錄通信任務(wù)task 的源節(jié)點(diǎn)的點(diǎn)序列src_pointl、src_point2和目的節(jié)點(diǎn)的點(diǎn)序列desti_pointl、desti_ point2,然后,根據(jù)曼哈頓距離判斷節(jié)點(diǎn)序列記錄是否完成。第二級(jí)節(jié)點(diǎn)的序列記錄方法 與第一級(jí)節(jié)點(diǎn)的方法不同。對(duì)于與目的節(jié)點(diǎn)組成的通信任務(wù)srC_taskl和src_task2,分 別將的nextpoint作為當(dāng)前節(jié)點(diǎn),記錄節(jié)點(diǎn)序列src_point3、src_point4、src_point5, 不記錄Desti_ID作為目的節(jié)點(diǎn)的節(jié)點(diǎn)序列。對(duì)于與源節(jié)點(diǎn)組成的通信任務(wù)desti_taskl 禾口 desti_task2,分別將pinpoint作為當(dāng)前節(jié)點(diǎn),記錄節(jié)點(diǎn)序列desti_point3、desti_ point4、deSti_p0int5,不記錄Src_ID作為源節(jié)點(diǎn)的節(jié)點(diǎn)序列。根據(jù)跳數(shù)判斷節(jié)點(diǎn)序列記 錄是否完成。第三級(jí)節(jié)點(diǎn)與第二級(jí)節(jié)點(diǎn)記錄的方法相同。不同之處在于,在拓?fù)浣Y(jié)構(gòu)中,源 節(jié)點(diǎn)到目的節(jié)點(diǎn)的最短路徑跳數(shù)不會(huì)超過(guò)6,第三級(jí)節(jié)點(diǎn)記錄執(zhí)行后節(jié)點(diǎn)序列記錄必然完 成。因此,模塊設(shè)置finish_flag3為高電平并進(jìn)行節(jié)點(diǎn)整理。模塊把節(jié)點(diǎn)序列按照數(shù)據(jù)傳輸?shù)姆较蚪M成相關(guān)節(jié)點(diǎn)序列,對(duì)重復(fù)的節(jié)點(diǎn)序列進(jìn)行 整理,最終形成四組點(diǎn)序列p0intl、p0int2、p0int3、p0int4,分別比較各個(gè)點(diǎn)序列已傳輸?shù)?數(shù)據(jù)量BW_used,記錄最大通信量為BW1、BW2、BW3、BW4,與各個(gè)點(diǎn)序列互相對(duì)應(yīng)。輸出仲裁 模塊和多路選擇器從四組點(diǎn)序列中選取通信量最小的一組節(jié)點(diǎn)序列point,然后發(fā)送到節(jié) 點(diǎn)拆分模塊進(jìn)行拆分,按照數(shù)據(jù)傳輸?shù)姆较虮4娴絧ointl、point2、…、point7,并記錄節(jié) 點(diǎn)的個(gè)數(shù)pointcoimt,發(fā)送到路徑映射模塊。路徑映射模塊將點(diǎn)序列映射成路徑的形式。根據(jù)路徑映射模塊的功能定義,路徑 映射函數(shù)需要記錄路徑及其跳數(shù)。模塊定義數(shù)據(jù)結(jié)構(gòu)s_Path保存路徑映射函數(shù)的執(zhí)行結(jié)果,s_Path的數(shù)據(jù)格式定義如下
hopnum表示路徑跳數(shù),direction[i]表示從源節(jié)點(diǎn)開(kāi)始的第i個(gè)轉(zhuǎn)發(fā)方向。路徑映射 模塊的工作流程如附圖中圖6所示。圖中,curID表示當(dāng)前節(jié)點(diǎn)的ID,nextID表示下一個(gè) 節(jié)點(diǎn)的ID。路徑映射函數(shù)執(zhí)行一次循環(huán),只能對(duì)兩個(gè)節(jié)點(diǎn)進(jìn)行映射,需要循環(huán)多次完成整 個(gè)點(diǎn)序列的映射。每次循環(huán)都在循環(huán)體中更新curID和nextID,然后根據(jù)curID和nextID 的差值判斷下一跳的方向,并將其保存在路徑s_Path中。在二維網(wǎng)格拓?fù)浣Y(jié)構(gòu)的片上網(wǎng)絡(luò)系統(tǒng)中,通信節(jié)點(diǎn)的ID與其相鄰節(jié)點(diǎn)ID的關(guān)系 與各個(gè)傳輸方向互相對(duì)應(yīng),路徑映射模塊根據(jù)節(jié)點(diǎn)ID之間的關(guān)系對(duì)接收的節(jié)點(diǎn)進(jìn)行路徑 映射。路徑映射模塊由方向選擇模塊,控制器和路徑組合模塊組成,電路結(jié)構(gòu)如附圖中圖7 所示。控制器根據(jù)節(jié)點(diǎn)的個(gè)數(shù)使能各個(gè)方向選擇模塊。在4X4的二維網(wǎng)格拓?fù)浣Y(jié)構(gòu)中, 由于節(jié)點(diǎn)記錄模塊限制在最短路徑方向記錄節(jié)點(diǎn)序列,通信任務(wù)的源節(jié)點(diǎn)、目的節(jié)點(diǎn)和源 節(jié)點(diǎn)到目的節(jié)點(diǎn)的最短路徑數(shù)據(jù)傳輸經(jīng)歷的中間節(jié)點(diǎn)總共不會(huì)超過(guò)7個(gè)。因此,點(diǎn)序列個(gè) ^pointcount的取值范圍為2彡pointcount彡7。方向選擇模塊的功能是一個(gè)多路選擇器。多路選擇器的輸入是四個(gè)方向00、 01、10、11,輸入節(jié)點(diǎn)pointi與pointi+Ι的關(guān)系作為仲裁選擇相應(yīng)的值賦給diri,其中
7。各個(gè)方向選擇模塊執(zhí)行結(jié)束后,在路徑組合模塊將這些方向組合成路徑的形式, 按照對(duì)應(yīng)的位置排列。路徑組合完成后把路徑path發(fā)送到路徑管理模塊。路徑管理模塊將各個(gè)子任務(wù)的路徑組合成源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路徑,并調(diào)整路徑 的格式。路徑管理模塊由控制器、路徑組合模塊和格式調(diào)整模塊三部分組成,如附圖中圖8 所示??刂破鹘邮招盘?hào)線COmbine_flag,判斷是否需要對(duì)路徑進(jìn)行組合。如果combing flag為狀態(tài)00,則不需要組合路徑,控制器通過(guò)信號(hào)線adjustjrigger控制格式調(diào)整模塊 對(duì)pathl進(jìn)行格式調(diào)整后輸出。否則,控制器通過(guò)信號(hào)線COmbine_trigger啟動(dòng)路徑組合 模塊,根據(jù)COmbine_flag的各個(gè)狀態(tài)對(duì)相應(yīng)的輸入路徑進(jìn)行組合,然后將路徑path_COmb 發(fā)送到格式調(diào)整模塊進(jìn)行格式調(diào)整后發(fā)送。應(yīng)用上述方法可以構(gòu)成動(dòng)態(tài)路徑分配系統(tǒng),實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)全局擁塞和故障信息的響 應(yīng),以及對(duì)通信任務(wù)中數(shù)據(jù)傳輸路徑的調(diào)整。
權(quán)利要求
1.一種用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法,其特征在于,包括如下步驟a)根據(jù)源節(jié)點(diǎn)與目的節(jié)點(diǎn)的ID判斷兩者的相對(duì)位置,根據(jù)相對(duì)位置判斷源節(jié)點(diǎn)到目 的節(jié)點(diǎn)是否有最短路徑存在;b)如果不存在最短路徑,則尋找中繼源節(jié)點(diǎn),中繼源節(jié)點(diǎn)與原來(lái)的目的節(jié)點(diǎn)、源節(jié)點(diǎn)分 別組成子通信任務(wù);根據(jù)源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的相對(duì)位置情況,記錄當(dāng)前節(jié)點(diǎn)及其路徑方向 上的節(jié)點(diǎn),以及鏈路帶寬;c)分別整理以源節(jié)點(diǎn)為起點(diǎn)的正向路徑和以目的節(jié)點(diǎn)為起點(diǎn)的逆向路徑,尋找所有可 能的最短路徑組合和使用的帶寬,直至結(jié)果一致;d)將源節(jié)點(diǎn)的記錄與目的節(jié)點(diǎn)的記錄連接起來(lái),分析各組記錄的帶寬,從中選擇帶寬 最小的點(diǎn)序列進(jìn)行路徑映射;如果通信任務(wù)被拆分,將各部分路徑組合起來(lái)得到源節(jié)點(diǎn)到 目的節(jié)點(diǎn)的路徑。
2.根據(jù)權(quán)利要求1所述的用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法,其特征在于所述的步 驟a)具體包括以下步驟al)如果源節(jié)點(diǎn)和目的節(jié)點(diǎn)的χ維坐標(biāo)和y維坐標(biāo)都不相同,在下列情況中存在最短路徑①如果源節(jié)點(diǎn)的兩條輸出鏈路或者目的節(jié)點(diǎn)的兩條輸入鏈路只有一條發(fā)生故障;②如果源節(jié)點(diǎn)的一條輸出鏈路和目的節(jié)點(diǎn)的一條輸入鏈路故障,源節(jié)點(diǎn)與目的節(jié)點(diǎn)的 最短路徑的曼哈頓距離是2,并且故障鏈路分別位于χ維和y維;③如果源節(jié)點(diǎn)的一條輸出鏈路和目的節(jié)點(diǎn)的一條輸入鏈路故障,源節(jié)點(diǎn)與目的節(jié)點(diǎn)的 最短路徑的曼哈頓距離是3,故障鏈路分別位于χ維和y維;④如果源節(jié)點(diǎn)的一條輸出鏈路和目的節(jié)點(diǎn)的一條輸入鏈路故障,源節(jié)點(diǎn)與目的節(jié)點(diǎn)的 最短路徑的曼哈頓距離是3,故障鏈路都位于χ維或y維,并且該維上的曼哈頓距離為1 ;⑤源節(jié)點(diǎn)與目的節(jié)點(diǎn)的最短路徑的曼哈頓距離不小于4;a2)如果源節(jié)點(diǎn)與目的節(jié)點(diǎn)的χ維坐標(biāo)或y維坐標(biāo)相同,只存在一條源節(jié)點(diǎn)到目的節(jié)點(diǎn) 的最短路徑,一旦該路徑中的任何一條鏈路發(fā)生故障,將不會(huì)有最短路徑存在。
3.根據(jù)權(quán)利要求1所述的用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法,其特征在于所述的步 驟b)具體包括以下步驟bl)如果不存在最短路徑,將源節(jié)點(diǎn)周?chē)c數(shù)據(jù)傳輸方向相反的相鄰節(jié)點(diǎn)作為中繼源 節(jié)點(diǎn),將目的節(jié)點(diǎn)周?chē)c數(shù)據(jù)傳輸方向相反的相鄰節(jié)點(diǎn)作為中繼目的節(jié)點(diǎn),與原來(lái)的目的 節(jié)點(diǎn)、源節(jié)點(diǎn)分別組成子通信任務(wù);b2)從源節(jié)點(diǎn)開(kāi)始記錄當(dāng)前節(jié)點(diǎn)及其最短路徑方向上的下一個(gè)節(jié)點(diǎn),以及鏈路帶寬;同 時(shí),從目的節(jié)點(diǎn)開(kāi)始回溯,開(kāi)始記錄在最短路徑方向上可能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn)ID、以及相 應(yīng)的鏈路帶寬;記錄節(jié)點(diǎn)時(shí)必須判斷鏈路的狀態(tài),將故障鏈路的帶寬設(shè)置為帶寬上限;b3)整理源節(jié)點(diǎn)的序列記錄和目的節(jié)點(diǎn)的序列記錄;如果有節(jié)點(diǎn)序列重復(fù),則需要對(duì)其 進(jìn)行整理,保留使用帶寬最小的相關(guān)節(jié)點(diǎn)序列。
4.根據(jù)權(quán)利要求1所述的用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法,其特征在于所述的步 驟c)具體包括以下步驟cl)根據(jù)源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的相對(duì)位置情況,從源節(jié)點(diǎn)開(kāi)始記錄當(dāng)前節(jié)點(diǎn)及其最短路 徑方向上的下一個(gè)節(jié)點(diǎn)、以及鏈路帶寬;同時(shí),從目的節(jié)點(diǎn)開(kāi)始回溯,開(kāi)始記錄在最短路徑方向上可能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn)ID、以及相應(yīng)的鏈路帶寬;記錄節(jié)點(diǎn)時(shí)必須判斷鏈路的狀 態(tài);c2)分別把上次記錄中的各個(gè)后繼節(jié)點(diǎn)作為源節(jié)點(diǎn),保持目的節(jié)點(diǎn)不變,記錄當(dāng)前節(jié)點(diǎn) 和最短路徑方向上的后繼結(jié)點(diǎn)以及使用的帶寬;c3)保持源節(jié)點(diǎn)不變,把上次記錄中的前繼節(jié)點(diǎn)作為目的節(jié)點(diǎn),依次記錄最短路徑方向 上可能到達(dá)目的節(jié)點(diǎn)的節(jié)點(diǎn)以及使用的帶寬;c4)重復(fù)c2)和c3)中的操作,直至后繼節(jié)點(diǎn)的集合與前繼節(jié)點(diǎn)的集合完全相等。
5. 一種用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配系統(tǒng),其特征在于包括接收控制器、故障管理 模塊、通信任務(wù)管理模塊、節(jié)點(diǎn)序列記錄模塊、路徑映射模塊、路徑管理模塊、發(fā)送控制器; 其中,接收控制器用于接收路由單元永久性故障或鏈路擁塞狀態(tài)報(bào)告,并發(fā)送給故障管理模塊;故障管理模塊用于根據(jù)通信任務(wù)判斷源節(jié)點(diǎn)與目的節(jié)點(diǎn)兩者之間的相對(duì)位置,針對(duì)相 對(duì)位置判斷源節(jié)點(diǎn)到目的節(jié)點(diǎn)是否有最短路徑存在,并將判斷結(jié)果發(fā)送至通信任務(wù)管理模 塊;通信任務(wù)管理模塊用于根據(jù)源節(jié)點(diǎn)與目的節(jié)點(diǎn)兩者之間的路徑情況對(duì)通信任務(wù)的路 徑進(jìn)行劃分和組合;節(jié)點(diǎn)序列記錄模塊用于根據(jù)通信任務(wù)管理模塊的處理結(jié)果,分別生成符合帶寬和故障 避免約束的路由路徑結(jié)果并發(fā)送至路徑映射模塊;路徑映射模塊用于將節(jié)點(diǎn)序列記錄模塊生成的路由路徑結(jié)果轉(zhuǎn)換成路由單元可識(shí)別 的數(shù)據(jù)格式;路徑管理模塊用于對(duì)路徑映射模塊生成的路由路徑結(jié)果進(jìn)行格式調(diào)整和數(shù)據(jù)包裝,并 傳輸至發(fā)送控制器;發(fā)送控制器用于將路徑管理模塊生成的數(shù)據(jù)發(fā)送至輸出總線。
全文摘要
本發(fā)明公開(kāi)了一種應(yīng)用于片上網(wǎng)絡(luò)的動(dòng)態(tài)路徑分配方法及系統(tǒng),該方法實(shí)時(shí)收集片上網(wǎng)絡(luò)中各路由單元的帶寬占用情況和故障信息,并根據(jù)網(wǎng)絡(luò)狀態(tài)動(dòng)態(tài)調(diào)整通信任務(wù)的路由路徑,使之繞開(kāi)擁塞和故障的鏈路。分配系統(tǒng)包括接收控制器、故障管理模塊、通信任務(wù)管理模塊、節(jié)點(diǎn)序列記錄模塊、路徑映射模塊、路徑管理模塊、發(fā)送控制器;本發(fā)明能在片上網(wǎng)絡(luò)存在鏈路擁塞和永久性故障的情況下優(yōu)化通信任務(wù)的路由路徑,平衡網(wǎng)絡(luò)負(fù)載,降低數(shù)據(jù)包阻塞率,有利于改善片上網(wǎng)絡(luò)在鏈路擁塞和故障狀態(tài)下的性能。
文檔編號(hào)H04L12/56GK102148763SQ20111010769
公開(kāi)日2011年8月10日 申請(qǐng)日期2011年4月28日 優(yōu)先權(quán)日2011年4月28日
發(fā)明者吳寧, 周磊, 周芳, 張穎, 葛芬 申請(qǐng)人:南京航空航天大學(xué)