本發(fā)明屬于集成電路片上網(wǎng)絡的通信技術(shù)領(lǐng)域,尤其涉及一種應用于層次化片上網(wǎng)絡的兩級拆分路由器及其路由算法。
背景技術(shù):
隨著片上網(wǎng)絡上核數(shù)的不斷增加,多核之間的并行通信使得片上網(wǎng)絡通信關(guān)系變得相當復雜。傳統(tǒng)的片上網(wǎng)絡設(shè)計只考慮一個源節(jié)點向一個目的節(jié)點的單播通信模式。在片上網(wǎng)絡上實現(xiàn)單個源節(jié)點向多個目的節(jié)點的多播通信成為一項越來越重要的通信需求。
目前有很多種多播路由算法,其中,基于層次化網(wǎng)絡結(jié)構(gòu)的混合多播路由算法,算法采用兩層網(wǎng)絡結(jié)構(gòu),將底層網(wǎng)絡分成不同的區(qū)域。上層網(wǎng)絡的每個路由器相當于底層區(qū)域中間路由器的橋接路由器。單播數(shù)據(jù)包只在底層網(wǎng)絡傳輸。多播數(shù)據(jù)包先傳輸?shù)缴蠈泳W(wǎng)絡,從上層網(wǎng)絡再傳播到各個目的節(jié)點所在的不同區(qū)域,然后到達目的節(jié)點。
但是該算法為了避免一份死鎖情況,規(guī)定一個區(qū)域內(nèi)的所有多播數(shù)據(jù)包都必須從上層路由器進入該區(qū)域,即使是一個源節(jié)點對自身區(qū)域的其他節(jié)點或相鄰的節(jié)點進行多播傳輸也必須通過該區(qū)域的上層路由器進入該區(qū)域,這會大大增加數(shù)據(jù)包的延遲。
技術(shù)實現(xiàn)要素:
本發(fā)明為了解決上述現(xiàn)有技術(shù)存在的不足之處,提出一種應用于層次化片上網(wǎng)絡的兩級拆分路由器及其路由算法,以期能將數(shù)據(jù)包直接傳輸?shù)轿挥谙蛏蟼鬏斅窂缴系哪康墓?jié)點或者向上傳輸路徑的相鄰位置的目的節(jié)點,從而能有效提高傳輸效率,并降低延遲。
本發(fā)明為達到上述目的所采用的技術(shù)方案是:
本發(fā)明一種應用于層次化片上網(wǎng)絡的兩級拆分路由器,所述層次化片上網(wǎng)絡是由n×m的底層二維網(wǎng)絡和l×s的上層網(wǎng)絡構(gòu)成;1≤l<n,1≤s<m;所述底層二維網(wǎng)絡分為l×s個區(qū);每個區(qū)內(nèi)包含一個中間路由器和若干個普通路由器;所述普通路由器包含五個傳輸方向;所述中間路由器包含五個傳輸方向和一個向上傳輸方向;所述上層網(wǎng)絡均為傳輸路由器;所述傳輸路由器包含五個傳輸方向和一個向下傳輸方向;所述中間路由器與所述傳輸路由器互相連接;其特點是,
將所述中間路由器和若干個普通路由器中的譯碼模塊設(shè)置為多播路由計算模塊;所述多播路由計算模塊包括分類譯碼單元ym、單播數(shù)據(jù)包路由計算單元sr、多播上行數(shù)據(jù)包路由計算單元ur、多播下行數(shù)據(jù)包路由計算單元dr和輸出端口寄存單元;多播上行數(shù)據(jù)包路由計算單元ur包括:兩級拆分單元ts和普通上行路由計算單元rc;所述輸出端口寄存單元包括:m位的傳輸方向寄存器port_1[m-1:0]和m位全方向寄存器port_2[m-1:0];m為傳輸方向的個數(shù);所述傳輸方向寄存器port_1[m-1:0]用于存儲當前頭微片的傳輸方向;所述全方向寄存器port_2[m-1:0]用于存儲所有頭微片的傳輸方向;
任意一個區(qū)內(nèi)的中間路由器或普通路由器作為當前路由節(jié)點并通過自身的輸入模塊接收到數(shù)據(jù)包時,當前路由節(jié)點的輸入模塊向自身的多播路由計算模塊發(fā)送所述數(shù)據(jù)包中的微片;
當前路由節(jié)點的分類譯碼單元ym對所接收到的當前微片進行判斷,若所接收到的當前微片為頭微片,則分類譯碼單元ym對所述頭微片再進行判斷;
若所述頭微片為多播數(shù)據(jù)包的頭微片;則對所述多播數(shù)據(jù)包的頭微片的傳輸方向進行判斷,若為向上傳輸方向,則將所述多播數(shù)據(jù)包的頭微片發(fā)送至多播上行數(shù)據(jù)包路由計算單元ur用于計算傳輸方向;若為向下傳輸方向,則將所述多播數(shù)據(jù)包的頭微片發(fā)送至多播下行數(shù)據(jù)包路由計算單元dr用于計算傳輸方向;
若所述頭微片為單播數(shù)據(jù)包的頭微片;則將單播數(shù)據(jù)包的頭微片發(fā)送至單播數(shù)據(jù)包路由計算單元sr用于計算傳輸方向;
若所接收到的當前微片為體微片,則所述輸出端口寄存單元將所有頭微片的傳輸方向從全方向寄存器port_2[m-1:0]復制到傳輸方向寄存器port_1[m-1:0]中,當前路由節(jié)點的輸入模塊根據(jù)輸出端口寄存單元中傳輸方向寄存器port_1[m-1:0]的傳輸方向?qū)Ⅲw微片傳輸至下游路由節(jié)點;
若所接收到的當前微片為尾微片,則所述輸出端口寄存單元將所有頭微片的傳輸方向從全方向寄存器port_2[m-1:0]復制到傳輸方向寄存器port_1[m-1:0]中,當前路由節(jié)點的輸入模塊根據(jù)輸出端口寄存單元中傳輸方向寄存器port_1[m-1:0]的傳輸方向?qū)⑽参⑵瑐鬏斨料掠温酚晒?jié)點;然后,當前路由節(jié)點的分類譯碼單元ym向所述輸出端口寄存單元發(fā)送數(shù)據(jù)包傳輸結(jié)束信號;所述輸出端口寄存單元根據(jù)所接收到的數(shù)據(jù)包傳輸結(jié)束信號,將當前路由節(jié)點的輸出端口寄存單元清零;
所述多播上行數(shù)據(jù)包路由計算單元ur的兩級拆分單元ts根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,將所述當前路由節(jié)點的自身坐標與目的節(jié)點的坐標進行比較,
若兩個坐標相同,則表示當前路由節(jié)點即為目的節(jié)點,得到傳輸方向為本地方向并保存至所述輸出端口寄存單元中;
若兩個坐標相鄰,則表示當前路由節(jié)點與目的節(jié)點為相鄰節(jié)點,得到傳輸方向為相鄰方向,所述兩級拆分單元ts再判斷當前路由節(jié)點的輸出端口是否空閑,若空閑,則將相鄰方向保存至所述輸出端口寄存單元中;若不空閑,則不保存相鄰方向,并將所述多播數(shù)據(jù)包的頭微片傳輸至普通上行路由計算單元rc;
若兩個坐標不相鄰也不相同,則直接將所述多播數(shù)據(jù)包的頭微片傳輸至普通上行路由計算單元rc;所述普通上行路由計算單元rc根據(jù)當前路由節(jié)點所在區(qū)的中間路由器坐標,計算出多播數(shù)據(jù)包頭微片下游的傳輸方向,并保存至當前路由節(jié)點的輸出端口寄存單元;
所述多播下行數(shù)據(jù)包路由計算單元dr根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,利用xy路由算法計算出多播數(shù)據(jù)包頭微片下游的傳輸方向,并保存至當前路由節(jié)點的輸出端口寄存單元;
單播數(shù)據(jù)包路由計算單元sr根據(jù)所接收到的單播數(shù)據(jù)包的頭微片,利用xy路由算法計算出單播數(shù)據(jù)包頭微片下游的傳輸方向,并保存至當前路由節(jié)點的輸出端口寄存單元;
所述全方向寄存器port_2[m-1:0]接收到當前微片的輸入方向時,判斷當前微片的傳輸方向是否已經(jīng)存在,若已經(jīng)存在,則當前路由節(jié)點的多播路由計算模塊將重仲裁請求信號發(fā)送至自身的仲裁模塊,用于打開交叉開關(guān)模塊相應的輸出端口,否則,直接存儲當前微片的輸入方向。
本發(fā)明一種應用于層次化片上網(wǎng)絡的兩級拆分路由器的路由算法,所述層次化片上網(wǎng)絡是由n×m的底層二維網(wǎng)絡和l×s的上層網(wǎng)絡構(gòu)成;1≤l<n,1≤s<m;所述底層二維網(wǎng)絡分為l×s個區(qū);每個區(qū)內(nèi)包含一個中間路由器和若干個普通路由器;所述普通路由器包含五個傳輸方向;所述中間路由器包含五個傳輸方向和一個向上傳輸方向;所述上層網(wǎng)絡均為傳輸路由器;所述傳輸路由器包含五個傳輸方向和一個向下傳輸方向;所述中間路由器與所述傳輸路由器互相連接;其特點是,以任意一個區(qū)內(nèi)的中間路由器或普通路由器作為當前路由節(jié)點并通過自身的輸入模塊接收到數(shù)據(jù)包時,所述路由算法是按如下步驟進行:
步驟1、設(shè)置所述中間路由器和若干個普通路由器均包括:m位的傳輸方向寄存器port_1[m-1:0]和m位全方向寄存器port_2[m-1:0];m為傳輸方向的個數(shù);所述傳輸方向寄存器port_1[m-1:0]用于存儲當前頭微片的傳輸方向;所述全方向寄存器port_2[m-1:0]用于存儲所有頭微片的傳輸方向;
步驟2、當前路由節(jié)點對所接收到的數(shù)據(jù)包中的當前微片進行判斷,若所接收到的當前微片為頭微片,則執(zhí)行步驟3;若所接收到的當前微片為體微片,則執(zhí)行步驟8;若所接收到的當前微片為尾微片,則執(zhí)行步驟9;
步驟3、當前路由節(jié)點對所述頭微片再進行判斷;若所述頭微片為多播數(shù)據(jù)包的頭微片;則執(zhí)行步驟4;若所述頭微片為單播數(shù)據(jù)包的頭微片;則直接利用xy路由算法計算出單播數(shù)據(jù)包頭微片下游的傳輸方向并保存至傳輸方向寄存器port_1[m-1:0]和全方向寄存器port_2[m-1:0]中;再執(zhí)行步驟10;
步驟4、當前路由節(jié)點對所述多播數(shù)據(jù)包的頭微片的傳輸方向進行判斷,若為向上傳輸方向,則執(zhí)行步驟5;若為向下傳輸方向,則執(zhí)行步驟7;
步驟5、當前路由節(jié)點根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,將所述當前路由節(jié)點的自身坐標與目的節(jié)點的坐標進行比較,若兩個坐標相同,則表示當前路由節(jié)點即為目的節(jié)點,得到傳輸方向為本地方向并保存至傳輸方向寄存器port_1[m-1:0]和全方向寄存器port_2[m-1:0]中;再執(zhí)行步驟10;
若兩個坐標相鄰,則表示當前路由節(jié)點與目的節(jié)點為相鄰節(jié)點,得到傳輸方向為相鄰方向,并判斷當前路由節(jié)點的輸出端口是否空閑,若空閑,則保存相鄰方向至傳輸方向寄存器port_1[m-1:0]和全方向寄存器port_2[m-1:0]中,再執(zhí)行步驟10;否則執(zhí)行步驟6;若兩個坐標不相鄰也不相同,則直接執(zhí)行步驟6;
步驟6、當前路由節(jié)點根據(jù)自身所在區(qū)的中間路由器坐標,計算出多播數(shù)據(jù)包頭微片下游的傳輸方向并保存至傳輸方向寄存器port_1[m-1:0]和全方向寄存器port_2[m-1:0]中;再執(zhí)行步驟10;
步驟7、當前路由節(jié)點根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,利用xy路由算法計算出多播數(shù)據(jù)包頭微片下游的傳輸方向并保存至傳輸方向寄存器port_1[m-1:0]和全方向寄存器port_2[m-1:0]中;再執(zhí)行步驟10;
步驟8、當前路由節(jié)點將所有頭微片的傳輸方向從全方向寄存器復制到傳輸方向寄存器port_1[m-1:0]中,從而根據(jù)傳輸方向寄存器port_1[m-1:0]中的傳輸方向?qū)Ⅲw微片傳輸至下游路由節(jié)點;再返回步驟2;
步驟9、當前路由節(jié)點將所有頭微片的傳輸方向從全方向寄存器port_2[m-1:0]復制到傳輸方向寄存器port_1[m-1:0]中,從而根據(jù)傳輸方向寄存器port_1[m-1:0]中的傳輸方向?qū)⑽参⑵瑐鬏斨料掠温酚晒?jié)點;當尾微片傳輸結(jié)束時,當前路由節(jié)點將傳輸方向寄存器port_1[m-1:0]和全方向寄存器port_2[m-1:0]清零,再返回步驟2;
步驟10、所述全方向寄存器port_2[m-1:0]接收到當前微片的輸入方向時,判斷當前微片的傳輸方向是否已經(jīng)存在,若已經(jīng)存在,則當前路由節(jié)點的將重仲裁請求信號發(fā)送至自身的仲裁模塊,用于打開交叉開關(guān)模塊相應的輸出端口,否則,直接存儲當前微片的輸入方向;
步驟11、返回步驟2。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益技術(shù)效果體現(xiàn)在:
1、本發(fā)明通過將底層路由網(wǎng)絡分區(qū),每一個區(qū)域都有一個中間路由器與上層的傳輸路由器相連接,通過傳輸路由器連接每個區(qū)域,從而實現(xiàn)區(qū)域與區(qū)域的傳輸;通過改變普通路由器譯碼模塊為多播路由計算模塊,根據(jù)頭微片信息將數(shù)據(jù)包傳輸分成了單播數(shù)據(jù)包傳輸,多播上行數(shù)據(jù)包傳輸和多播下行數(shù)據(jù)包傳輸;單播數(shù)據(jù)包傳輸,多播下行數(shù)據(jù)包傳輸都是通過xy路由算法直接進行傳輸,而將多播上行數(shù)據(jù)包傳輸根據(jù)目的節(jié)點是否是當前節(jié)點,當前節(jié)點相鄰節(jié)點,以及兩者都不符合的節(jié)點進行分類,從而將多播上行數(shù)據(jù)包傳輸分成三種情況;對于目的節(jié)點是當前節(jié)點的情況進行直接拆分,因為這種方式不會產(chǎn)生死鎖問題,所以即使輸出通道被占用也可以等待輸出通道空閑在進行傳輸,這就大大提高了傳輸效率,而且也不會影響數(shù)據(jù)包向其他方向的傳輸;當目的節(jié)點為當前節(jié)點相鄰節(jié)點,為了避免死鎖問題,如果輸出通道被占用,則直接向中間路由傳輸,如有輸出通道空閑,則可以直接傳輸至相鄰節(jié)點,由于沒有增加新的死鎖問題,這就不會增加算法硬件實現(xiàn)的復雜度,而且也不會產(chǎn)生擁塞問題;當目的節(jié)點不滿足以上兩種情況,則將數(shù)據(jù)包傳輸至中間路由器,通過上層傳輸路由器傳輸至目的節(jié)點所在區(qū)域,通過多播下行數(shù)據(jù)包傳輸算法傳輸至目的節(jié)點;從而解決了混合多播路由算法中必須經(jīng)由上層傳輸路由器才能傳輸至目的節(jié)點的問題,通過兩級拆分路由算法實現(xiàn)了數(shù)據(jù)包可以向目的節(jié)點在當前節(jié)點及其相鄰節(jié)點位置上進行傳輸;進而大大提高了傳輸效率,降低了擁塞和延遲。
2、本發(fā)明為了能夠?qū)⒍嗖シ较蛐畔⒛軌蛉坎杉?,通過兩種寄存器進行保存,一種傳輸方向寄存器來保存當前微片傳輸方向;而為了保存多個頭微片方向信息,采用全方向寄存器,同時傳輸體微片和尾微片時將方向信息傳輸至傳輸方向寄存器;這就將當前傳輸方向與多播所有傳輸方向區(qū)別開來;同時為了避免相同傳輸方向的多次仲裁,通過設(shè)置重仲裁請求信號直接打開交叉開關(guān),從而了降低仲裁時間和復雜度,也減少了仲裁器工作時間,降低了延時,同時降低了路由器功耗。
3、本發(fā)明通過兩級拆分路由算法對多播上行數(shù)據(jù)包進行再底層網(wǎng)絡有選擇的傳輸,通過對當前多播數(shù)據(jù)包的目的節(jié)點是否是當前節(jié)點,當前節(jié)點相鄰節(jié)點,以及兩者都不符合的節(jié)點進行分類,從而增加了數(shù)據(jù)包在底層網(wǎng)絡傳輸至目的節(jié)點的過程,大大減少了數(shù)據(jù)包向上層的傳輸路由器的過程,大大降低了上層網(wǎng)絡的擁塞情況,降低延遲。
4、本發(fā)明為了不增加新的死鎖問題,將二級拆分模塊判斷目的節(jié)點在當前節(jié)點相鄰位置時,根據(jù)輸出通道是否空閑決定數(shù)據(jù)包是否拆分至相鄰節(jié)點,而且避免了網(wǎng)絡擁塞情況,降低了延時。
5、本發(fā)明通過判斷向上傳輸方向的數(shù)據(jù)包目的節(jié)點的位置,將數(shù)據(jù)包傳輸分成三種情況,分別為當前節(jié)點是目的節(jié)點的情況,以及當前節(jié)點相鄰節(jié)點是目的節(jié)點的情況,和其他情況;改變了基于層次化網(wǎng)絡結(jié)構(gòu)的混合多播路由算法只能從上層傳輸路由傳輸?shù)侥康墓?jié)點的局限性,從而大大提升了傳輸效率,降低了延時。
附圖說明
圖1為現(xiàn)有技術(shù)中底層6×6,上層2×2規(guī)模的層次化網(wǎng)絡結(jié)構(gòu)圖;
圖2為本發(fā)明多播路由計算模塊電路結(jié)構(gòu)圖;
圖3為本發(fā)明兩個目的節(jié)點在其上行路徑上;
圖4為本發(fā)明一個目的節(jié)點在其上行路徑的相鄰節(jié)點;
圖5為本發(fā)明兩個目的節(jié)點在其上行路徑的相鄰節(jié)點;
圖6為本發(fā)明三個目的節(jié)點在其上行路徑的相鄰節(jié)點;
圖7為本發(fā)明四個目的節(jié)點在其上行路徑的相鄰節(jié)點;
圖8為本發(fā)明上行路徑上不同目的節(jié)點數(shù)的延遲對比圖;
圖9為本發(fā)明不同可拆分相鄰目的節(jié)點數(shù)的延遲對比圖。
具體實施方式
本實施例中,數(shù)據(jù)包的格式如表1所示,每個多播數(shù)據(jù)包頭微片包含虛通道號標志、微片類型標志、數(shù)據(jù)包類型標志、目的節(jié)點編號、源節(jié)點編號、數(shù)據(jù)包當前傳輸路徑、目的節(jié)點所在區(qū)域的上層節(jié)點編號、上層網(wǎng)絡傳輸方向;
表1網(wǎng)絡數(shù)據(jù)包格式
采用的層次化片上網(wǎng)絡結(jié)構(gòu)是由6×6的底層二維網(wǎng)絡和2×2的上層網(wǎng)絡所構(gòu)成的雙層片上網(wǎng)絡,如圖1所示;底層二維網(wǎng)絡分為4個區(qū);每個區(qū)內(nèi)包含一個中間路由器和若干個普通路由器;普通路由器包含五個傳輸方向;中間路由器包含五個傳輸方向和一個向上傳輸方向;上層網(wǎng)絡均為傳輸路由器;傳輸路由器包含五個傳輸方向和一個向下傳輸方向;中間路由器與傳輸路由器互相連接。
本實施例中,將中間路由器和若干個普通路由器中的譯碼模塊設(shè)置為多播路由計算模塊;如圖2所示,多播路由計算模塊包括分類譯碼單元ym、單播數(shù)據(jù)包路由計算單元sr、多播上行數(shù)據(jù)包路由計算單元ur、多播下行數(shù)據(jù)包路由計算單元dr和輸出端口寄存單元;多播上行數(shù)據(jù)包路由計算單元ur包括:兩級拆分單元ts和普通上行路由計算單元rc;普通路由器輸出端口寄存單元包括:5位的傳輸方向寄存器port_1[4:0]和5位全方向寄存器port_2[4:0];中間路由器輸出端口寄存單元包括:6位的傳輸方向寄存器port_1[5:0]和6位全方向寄存器port_2[5:0];普通路由器與中間路由器的傳輸方向寄存器統(tǒng)一表示為傳輸方向寄存器port_1,全方向寄存器統(tǒng)一表示為全方向寄存器port_2;傳輸方向寄存器port_1用于存儲當前頭微片的傳輸方向;全方向寄存器port_2用于存儲所有頭微片的傳輸方向,全方向寄存器port_2中一位代表一個傳輸方向;
任意一個區(qū)內(nèi)的中間路由器或普通路由器作為當前路由節(jié)點并通過自身的輸入模塊接收到數(shù)據(jù)包時,當前路由節(jié)點的輸入模塊向自身的多播路由計算模塊發(fā)送數(shù)據(jù)包中的微片data_in[38:0];
當前路由節(jié)點的分類譯碼單元ym對所接收到的當前微片data_in[38:0]進行判斷,判斷微片data_in[36:35]微片類型標志是否為2’b01,若是,則當前微片為頭微片,若是2’b11,則當前微片為體微片,若是2’b10,則當前微片為尾微片;若所接收到的當前微片為頭微片,則分類譯碼單元ym對頭微片再進行判斷,判斷頭微片data_in[34]數(shù)據(jù)包類型標志是否為1’b1,若是,則頭微片為多播數(shù)據(jù)包頭微片,若不是,則是單播數(shù)據(jù)包頭微片。
若頭微片為多播數(shù)據(jù)包的頭微片,則對多播數(shù)據(jù)包的頭微片的傳輸方向進行判斷,判斷頭微片data_in[32]數(shù)據(jù)包當前傳輸路徑是否為向上傳輸路徑1’b1,若是,當前傳輸路徑為向上傳輸路徑,若不是,當前傳輸路徑為向下傳輸路徑;若為向上傳輸方向,則將多播數(shù)據(jù)包的頭微片發(fā)送至多播上行數(shù)據(jù)包路由計算單元ur用于計算傳輸方向;若為向下傳輸方向,則將多播數(shù)據(jù)包的頭微片發(fā)送至多播下行數(shù)據(jù)包路由計算單元dr用于計算傳輸方向;
若頭微片為單播數(shù)據(jù)包的頭微片;則將單播數(shù)據(jù)包的頭微片發(fā)送至單播數(shù)據(jù)包路由計算單元sr用于計算傳輸方向;
若所接收到的當前微片為體微片,則輸出端口寄存單元將所有頭微片的傳輸方向從全方向寄存器port_2復制到傳輸方向寄存器port_1中,當前路由節(jié)點的輸入模塊根據(jù)輸出端口寄存單元中傳輸方向寄存器port_1的傳輸方向?qū)Ⅲw微片傳輸至下游路由節(jié)點;
若所接收到的當前微片為尾微片,則輸出端口寄存單元將所有頭微片的傳輸方向從全方向寄存器port_2復制到傳輸方向寄存器port_1中,當前路由節(jié)點的輸入模塊根據(jù)輸出端口寄存單元中傳輸方向寄存器port_1的傳輸方向?qū)⑽参⑵瑐鬏斨料掠温酚晒?jié)點;然后,當前路由節(jié)點的分類譯碼單元ym向輸出端口寄存單元發(fā)送數(shù)據(jù)包傳輸結(jié)束信號;輸出端口寄存單元根據(jù)所接收到的數(shù)據(jù)包傳輸結(jié)束信號,將當前路由節(jié)點的輸出端口寄存單元清零;
多播上行數(shù)據(jù)包路由計算單元ur的兩級拆分單元ts根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,將當前路由節(jié)點的自身坐標與目的節(jié)點的坐標data_in[23:8]進行比較,
若兩個坐標相同,則表示當前路由節(jié)點即為目的節(jié)點,得到傳輸方向為本地方向并保存至輸出端口寄存單元中;
若兩個坐標相鄰,則表示當前路由節(jié)點與目的節(jié)點為相鄰節(jié)點,得到傳輸方向為相鄰方向,兩級拆分單元ts再判斷當前路由節(jié)點的輸出端口是否空閑,若空閑,則將相鄰方向保存至輸出端口寄存單元中;若不空閑,則不保存相鄰方向,并將多播數(shù)據(jù)包的頭微片傳輸至普通上行路由計算單元rc;
若兩個坐標不相鄰也不相同,則直接將多播數(shù)據(jù)包的頭微片傳輸至普通上行路由計算單元rc;普通上行路由計算單元rc根據(jù)當前路由節(jié)點所在區(qū)的中間路由器坐標,計算出多播數(shù)據(jù)包頭微片下游的傳輸方向,并保存至當前路由節(jié)點的輸出端口寄存單元;
多播下行數(shù)據(jù)包路由計算單元dr根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,利用xy路由算法計算出多播數(shù)據(jù)包頭微片下游的傳輸方向,并保存至當前路由節(jié)點的輸出端口寄存單元;
單播數(shù)據(jù)包路由計算單元sr根據(jù)所接收到的單播數(shù)據(jù)包的頭微片,利用xy路由算法計算出單播數(shù)據(jù)包頭微片下游的傳輸方向,并保存至當前路由節(jié)點的輸出端口寄存單元;
全方向寄存器port_2接收到當前微片的輸入方向時,判斷當前微片的傳輸方向是否已經(jīng)存在,若已經(jīng)存在,則當前路由節(jié)點的多播路由計算模塊將重仲裁請求信號發(fā)送至自身的仲裁模塊,用于打開交叉開關(guān)模塊相應的輸出端口,否則,直接存儲當前微片的輸入方向。
本實施例中,一種應用于層次化片上網(wǎng)絡的兩級拆分路由器的路由算法,層次化片上網(wǎng)絡是由6×6的底層二維網(wǎng)絡和2×2的上層網(wǎng)絡構(gòu)成;底層二維網(wǎng)絡分為4個區(qū);每個區(qū)內(nèi)包含一個中間路由器和若干個普通路由器;普通路由器包含五個傳輸方向;中間路由器包含五個傳輸方向和一個向上傳輸方向;上層網(wǎng)絡均為傳輸路由器;傳輸路由器包含五個傳輸方向和一個向下傳輸方向;中間路由器與傳輸路由器互相連接;以任意一個區(qū)內(nèi)的中間路由器或普通路由器作為當前路由節(jié)點并通過自身的輸入模塊接收到數(shù)據(jù)包時,路由算法是按如下步驟進行:
步驟1、設(shè)置中間路由器和若干個普通路由器均包括:5位的傳輸方向寄存器port_1[4:0]和5位全方向寄存器port_2[4:0];中間路由器輸出端口寄存單元包括:6位的傳輸方向寄存器port_1[5:0]和6位全方向寄存器port_2[5:0];普通路由器與中間路由器的傳輸方向寄存器統(tǒng)一表示為傳輸方向寄存器port_1,全方向寄存器統(tǒng)一表示為全方向寄存器port_2;傳輸方向寄存器port_1用于存儲當前頭微片的傳輸方向;全方向寄存器port_2用于存儲所有頭微片的傳輸方向,全方向寄存器port_2中一位代表一個傳輸方向;
步驟2、當前路由節(jié)點對所接收到的數(shù)據(jù)包中的當前微片進行判斷,若所接收到的當前微片為頭微片,則執(zhí)行步驟3;若所接收到的當前微片為體微片,則執(zhí)行步驟8;若所接收到的當前微片為尾微片,則執(zhí)行步驟9;
步驟3、當前路由節(jié)點對頭微片再進行判斷;若頭微片為多播數(shù)據(jù)包的頭微片;則執(zhí)行步驟4;若頭微片為單播數(shù)據(jù)包的頭微片;則直接利用xy路由算法計算出單播數(shù)據(jù)包頭微片下游的傳輸方向并保存至傳輸方向寄存器port_1和全方向寄存器port_2中;再執(zhí)行步驟10;
步驟4、當前路由節(jié)點對多播數(shù)據(jù)包的頭微片的傳輸方向進行判斷,若為向上傳輸方向,則執(zhí)行步驟5;若為向下傳輸方向,則執(zhí)行步驟7;
步驟5、當前路由節(jié)點根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,將當前路由節(jié)點的自身坐標與目的節(jié)點的坐標進行比較,若兩個坐標相同,則表示當前路由節(jié)點即為目的節(jié)點,得到傳輸方向為本地方向并保存至傳輸方向寄存器port_1和全方向寄存器port_2中;再執(zhí)行步驟10;
若兩個坐標相鄰,則表示當前路由節(jié)點與目的節(jié)點為相鄰節(jié)點,得到傳輸方向為相鄰方向,并判斷當前路由節(jié)點的輸出端口是否空閑,若空閑,則保存相鄰方向至傳輸方向寄存器port_1和全方向寄存器port_2中,再執(zhí)行步驟10;否則執(zhí)行步驟6;若兩個坐標不相鄰也不相同,則直接執(zhí)行步驟6;
步驟6、當前路由節(jié)點根據(jù)自身所在區(qū)的中間路由器坐標,計算出多播數(shù)據(jù)包頭微片下游的傳輸方向并保存至傳輸方向寄存器port_1和全方向寄存器port_2中;再執(zhí)行步驟10;
步驟7、當前路由節(jié)點根據(jù)所接收到的多播數(shù)據(jù)包的頭微片,利用xy路由算法計算出多播數(shù)據(jù)包頭微片下游的傳輸方向并保存至傳輸方向寄存器port_1和全方向寄存器port_2中;再執(zhí)行步驟10;
步驟8、當前路由節(jié)點將所有頭微片的傳輸方向從全方向寄存器port_2復制到傳輸方向寄存器port_1中,從而根據(jù)傳輸方向寄存器port_1中的傳輸方向?qū)Ⅲw微片傳輸至下游路由節(jié)點;再返回步驟2;
步驟9、當前路由節(jié)點將所有頭微片的傳輸方向從全方向寄存器port_2復制到傳輸方向寄存器port_1中,從而根據(jù)傳輸方向寄存器port_1中的傳輸方向?qū)⑽参⑵瑐鬏斨料掠温酚晒?jié)點;當尾微片傳輸結(jié)束時,當前路由節(jié)點將傳輸方向寄存器port_1和全方向寄存器port_2清零,再返回步驟2;
步驟10、port_2全方向寄存器接收到當前微片的輸入方向時,判斷當前微片的傳輸方向是否已經(jīng)存在,若已經(jīng)存在,則當前路由節(jié)點的將重仲裁請求信號發(fā)送至自身的仲裁模塊,用于打開交叉開關(guān)模塊相應的輸出端口,否則,直接存儲當前微片的輸入方向;
步驟11、返回步驟2。
具體實施中,改變多播上行路徑上可拆分的目的節(jié)點數(shù)。對于底層6×6的網(wǎng)絡,按照每3×3分成一個區(qū)域那么多播數(shù)據(jù)包在上行路徑上最多有兩個可拆分的目的節(jié)點。實驗以(1,1)為源節(jié)點,目的節(jié)點分別是(2,1)、(2,2)和(2,4),如圖3所示。數(shù)據(jù)包由三個頭微片、三個體微片和一個尾微片組成,從源節(jié)點向目的節(jié)點發(fā)送一個數(shù)據(jù)包。不同情況下數(shù)據(jù)包的延遲結(jié)果如圖8所示。
當可拆分節(jié)點只有一個時,數(shù)據(jù)包的平均延遲降低了15.9%;當可拆分節(jié)點有兩個時,數(shù)據(jù)包的平均延遲降低了22%。由此可以看出,路徑上拆分傳輸?shù)哪康墓?jié)點越多,相比于不拆分傳輸,數(shù)據(jù)包的到達延遲降低的越多。
在相同的網(wǎng)絡條件下,可拆分的路徑相鄰目的節(jié)點數(shù)分別設(shè)為1、2、3、4。
相鄰可拆分節(jié)點數(shù)為1:實驗設(shè)定源節(jié)點為(3,4),目的節(jié)點為(2,2),(3,3),(2,6)和(2,1),一個數(shù)據(jù)包含有四個頭微片、三個體微片和一個尾微片,如圖4所示。
相鄰可拆分節(jié)點數(shù)為2:實驗設(shè)定源節(jié)點為(3,4),目的節(jié)點為(2,2),(3,3),(4,4)和(2,1),一個數(shù)據(jù)包含有四個頭微片、三個體微片和一個尾微片,如圖5所示。
相鄰可拆分節(jié)點數(shù)為3:實驗設(shè)定源節(jié)點為(3,4),目的節(jié)點為(2,2),(3,3),(4,4)和(3,5),一個數(shù)據(jù)包含有四個頭微片、三個體微片和一個尾微片,如圖6所示。
相鄰可拆分節(jié)點數(shù)為4:實驗設(shè)定源節(jié)點為(3,4),目的節(jié)點為(2,3),(3,3),(4,4)和(3,5),一個數(shù)據(jù)包含有四個頭微片、三個體微片和一個尾微片,如圖7所示。
基于上述設(shè)定的實驗條件,得出的延遲結(jié)果如圖9所示??刹鸱值南噜徆?jié)點數(shù)從1個增加到4個所對應的延遲降低結(jié)果分別是22.7%、31.5%、41.4%和50.3%。可以得出,可拆分的相鄰節(jié)點數(shù)越多,數(shù)據(jù)包的平均延遲優(yōu)化越大。