本發(fā)明涉及多核或眾核結(jié)構(gòu)下片上網(wǎng)絡(luò)的路由結(jié)構(gòu)設(shè)計(jì)領(lǐng)域,特別涉及一種面向多地址共享數(shù)據(jù)路由包的路由器、路由方法及其芯片
背景技術(shù):
隨著高性能計(jì)算的發(fā)展,高性能計(jì)算即將進(jìn)入E級(jí)時(shí)代,為了不斷挖掘高性能計(jì)算下特定應(yīng)用的并行性,在處理器片上往往采用了大規(guī)模處理核心的結(jié)構(gòu)。由于片上網(wǎng)絡(luò)承擔(dān)了不同處理器核心之間通信,提高片上網(wǎng)絡(luò)通信效率因而可以有效提高程序并行效率,然而處理核心數(shù)目的增加也給片上網(wǎng)絡(luò)的設(shè)計(jì)帶來的新的挑戰(zhàn),對(duì)于一些傳輸延遲敏感的應(yīng)用或執(zhí)行模式的實(shí)際性能在很大程度上依賴于片上網(wǎng)絡(luò)的傳輸效率??梢园l(fā)現(xiàn)一般處理器核向片上網(wǎng)絡(luò)發(fā)送的大部分消息的目的地址不同但是數(shù)據(jù)相同的特性,例如一些眾核結(jié)構(gòu)中的同步消息,處理核心上cache的一致性消息,以及數(shù)據(jù)流眾核結(jié)構(gòu)中的操作數(shù)消息等。
在最新的數(shù)據(jù)流眾核結(jié)構(gòu)中,大量運(yùn)算的操作數(shù)需要通過片上網(wǎng)絡(luò)傳遞,造成片上網(wǎng)絡(luò)上傳輸消息量巨大,嚴(yán)重影響了數(shù)據(jù)流眾核片上處理器核接收消息的延遲,并且數(shù)據(jù)流眾核處理器核的性能很依賴接收操作數(shù)帶寬?;谝陨锨闆r出現(xiàn)了將傳統(tǒng)的單地址單數(shù)據(jù)包格式改成多地址共享數(shù)據(jù)包格式,新的路由包相比于傳統(tǒng)的數(shù)據(jù)包可以大量減少片上網(wǎng)絡(luò)上傳輸消息量,從而減少片上網(wǎng)絡(luò)傳輸延遲,提高數(shù)據(jù)流眾核處理器核的運(yùn)算吞吐量。
目前現(xiàn)有的基于多地址共享數(shù)據(jù)片上網(wǎng)絡(luò)路由結(jié)構(gòu)通常應(yīng)用的是圖1所示的,這種路由結(jié)構(gòu)一個(gè)路由包路由后會(huì)分成一到多個(gè)路由包,并送往對(duì)應(yīng)的隊(duì)列中儲(chǔ)存,也就是一個(gè)差別不是很大的路由包可能在多個(gè)隊(duì)列中存多次,雖然這種設(shè)計(jì)很簡單,但是造成寄存器空間成倍浪費(fèi),同時(shí)也增加了路由器的功耗。并且隨著眾核的發(fā)展,片上網(wǎng)絡(luò)中路由器個(gè)數(shù)越來越多,利用傳統(tǒng)的設(shè)計(jì)會(huì)使芯片的面積過大,造成設(shè)計(jì)無法流片。
如果能妥善利用多地址共享數(shù)據(jù)路由包的特點(diǎn),將片上路由器結(jié)構(gòu)中加上多隊(duì)列共享緩存,這樣可以充分利用路由包多地址共享數(shù)據(jù)的特性,并且相比傳統(tǒng)片上路由器的設(shè)計(jì)可以成倍減少片上路由器的寄存器面積和功耗。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明首先提出一種面向多地址共享數(shù)據(jù)路由包的路由器,通過多個(gè)輸入端口向?qū)?yīng)的多個(gè)輸出端口傳輸包含了多地址共享數(shù)據(jù)的原始路由包,其特征在于,所述路由器的每個(gè)輸入端口和輸出端口之間包括:
路由算法模塊,用于接收由所述輸入端口發(fā)送的所述原始路由包,并從所述原始路由包中獲取每個(gè)地址的路由端口去向,統(tǒng)計(jì)共享數(shù)據(jù)的地址復(fù)用次數(shù),生成刪除了所有地址有效位的裁剪路由包,并根據(jù)所述路由端口去向生成地址有效位組合信息;
緩存模塊,與所述路由算法模塊相連,用于存儲(chǔ)所述裁剪路由包和所述地址復(fù)用次數(shù);
隊(duì)列模塊,與所述路由算法模塊及所述緩存模塊相連,用于存儲(chǔ)所述地址有效位組合信息;
仲裁模塊,與所述緩存模塊和所述隊(duì)列模塊相連,用于將所述隊(duì)列模塊和所述緩存模塊中存儲(chǔ)的內(nèi)容重新組合以形成新的多地址共享數(shù)據(jù)路由包。
根據(jù)本發(fā)明提出的面向多地址共享數(shù)據(jù)路由包的路由器,所述地址復(fù)用次數(shù)為原始路由包中的有效地址個(gè)數(shù),或所述地址復(fù)用次數(shù)為原始路由包中包含的所有端口去向的種類數(shù)。
根據(jù)本發(fā)明提出的面向多地址共享數(shù)據(jù)路由包的路由器,所述緩存模塊中存儲(chǔ)的所述裁剪路由包每被讀取一次,則所述地址復(fù)用次數(shù)減一,當(dāng)所述地址復(fù)用次數(shù)為零時(shí),停止從所述緩存模塊中讀取數(shù)據(jù)。
根據(jù)本發(fā)明提出的面向多地址共享數(shù)據(jù)路由包的路由器,其中,與每一個(gè)所述路由算法模塊相連的隊(duì)列模塊包括一個(gè)或多個(gè),每一個(gè)隊(duì)列模塊對(duì)應(yīng)一個(gè)固定的路由端口去向,根據(jù)原路由包中多個(gè)地址路由后的端口方向,每個(gè)地址有效位被送往對(duì)應(yīng)路由端口去向的隊(duì)列模塊中存儲(chǔ)。
本發(fā)明同時(shí)還提出一種面向多地址共享數(shù)據(jù)路由包的路由方法,通過多個(gè)輸入端口向?qū)?yīng)的多個(gè)輸出端口傳輸包含了多地址共享數(shù)據(jù)的原始路由包,包括以下步驟:
通過路由算法模塊接收由所述輸入端口發(fā)送的所述原始路由包,并從所述原始路由包中獲取每個(gè)地址的路由端口去向,統(tǒng)計(jì)共享數(shù)據(jù)的地址復(fù)用次數(shù),生成刪除了所有地址有效位的裁剪路由包,并根據(jù)所述路由端口去向生成地址有效位組合信息;
所述裁剪路由包和所述地址復(fù)用次數(shù)存儲(chǔ)至與所述路由算法模塊相連的緩存模塊中;
將所述地址有效位組合信息存儲(chǔ)至與所述路由算法模塊及所述緩存模塊相連的隊(duì)列模塊中;
通過仲裁模塊將所述隊(duì)列模塊和所述緩存模塊中存儲(chǔ)的內(nèi)容重新組合以形成新的多地址共享數(shù)據(jù)路由包。
根據(jù)本發(fā)明提出的面向多地址共享數(shù)據(jù)路由包的路由方法,其中,所述地址復(fù)用次數(shù)為原始路由包中的有效地址個(gè)數(shù),或所述地址復(fù)用次數(shù)為原始路由包中包含的所有端口去向的種類數(shù)。
根據(jù)本發(fā)明提出的面向多地址共享數(shù)據(jù)路由包的路由方法,其中,所述緩存模塊中存儲(chǔ)的所述裁剪路由包每被讀取一次,則所述地址復(fù)用次數(shù)減一,當(dāng)所述地址復(fù)用次數(shù)為零時(shí),停止從所述緩存模塊所述地址中讀取數(shù)據(jù)。
根據(jù)本發(fā)明提出的面向多地址共享數(shù)據(jù)路由包的路由方法,其中,與每一個(gè)所述路由算法模塊相連的隊(duì)列模塊包括一個(gè)或多個(gè),每一個(gè)隊(duì)列模塊對(duì)應(yīng)一個(gè)固定的路由端口去向,根據(jù)原路由包中多個(gè)地址路由后的端口方向,每個(gè)地址有效位被送往對(duì)應(yīng)路由端口去向的隊(duì)列模塊中存儲(chǔ)。
本發(fā)明同時(shí)提供一種包括上述內(nèi)容中任一項(xiàng)所述的面向多地址共享數(shù)據(jù)路由包的路由器的芯片。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明利用多地址共享數(shù)據(jù)路由包的結(jié)構(gòu)特性,在傳統(tǒng)片上網(wǎng)絡(luò)路由器設(shè)計(jì)上加上多隊(duì)列共享緩存,避免路由后的多個(gè)類似的路由包在多個(gè)隊(duì)列中儲(chǔ)存,減少片上網(wǎng)絡(luò)路由器中存儲(chǔ)路由包信息的寄存器浪費(fèi),對(duì)比傳統(tǒng)路由器結(jié)構(gòu),本發(fā)明可以大幅減少片上網(wǎng)絡(luò)路由器存儲(chǔ)寄存器的面積和功耗。
附圖說明
圖1為現(xiàn)有技術(shù)中傳統(tǒng)路由結(jié)構(gòu)設(shè)計(jì)圖;
圖2為本發(fā)明的多地址共享數(shù)據(jù)路由包結(jié)構(gòu)圖;
圖3為本發(fā)明的面向多地址共享數(shù)據(jù)路由包的路由器結(jié)構(gòu);
圖4為本發(fā)明中路由包路由到路由后信息存儲(chǔ)示例圖;
圖5為本發(fā)明中仲裁選擇到輸出新的路由包示例圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明根據(jù)多地址共享數(shù)據(jù)路由包的結(jié)構(gòu)特性,提出一種面向多地址共享數(shù)據(jù)路由包的新型片上路由器、路由方法、芯片。本發(fā)明中的多地址共享路由包的結(jié)構(gòu)如圖2所示,該結(jié)構(gòu)分為兩部分,一部分是包頭,該包頭含有多個(gè)地址201-204,另一部分是多地址共享的數(shù)據(jù)205,每個(gè)地址都有一位代表其地址有效位206。
本發(fā)明提出一種面向多地址共享數(shù)據(jù)路由包的新型片上路由器結(jié)構(gòu),具體實(shí)例結(jié)構(gòu)如圖3所示,該路由器結(jié)構(gòu)有路由算法模塊301-305,緩存模塊306-310,成組的隊(duì)列311-315,連接有多套緩存和隊(duì)列的仲裁選擇模塊316-320。路由包在以上路由器結(jié)構(gòu)大致執(zhí)行流程如下:
步驟301:路由算法模塊301-305接收路由包,通過路由得到路由包里面每個(gè)有效地址的端口去向,統(tǒng)計(jì)路由包地址復(fù)用次數(shù)。
步驟302:對(duì)原路由包裁去所有地址有效位,再與統(tǒng)計(jì)的路由包路由隊(duì)列去向次數(shù)一并送往緩存模塊306-310。
步驟303:根據(jù)路由包每個(gè)有效地址的端口去向,將每個(gè)地址有效位信息和路由包儲(chǔ)存的緩存地址一起送往對(duì)應(yīng)的隊(duì)列311-315。
步驟304:仲裁模塊316-320向選擇的隊(duì)列送去讀隊(duì)列請(qǐng)求,此時(shí)隊(duì)列模塊會(huì)將隊(duì)首單元讀出,將隊(duì)首單元里的緩存地址送往所在輸入端口的緩存中,并且將地址有效信息送往仲裁模塊,緩存模塊根據(jù)地址取出裁剪的路由包送往仲裁模塊和更新裁剪的路由包的復(fù)用率,仲裁模塊將隊(duì)列讀數(shù)據(jù)和緩存讀數(shù)據(jù)組合形成新的多地址共享緩存路由包。
本發(fā)明還提出一種面向多地址共享數(shù)據(jù)路由包的新型片上路由器方法,從接收路由包到路由后信息存儲(chǔ)的具體實(shí)例如圖4所示,該輸入端口為圖3里面的東路端口,輸入路由包401有3個(gè)地址有效,并且這3個(gè)地址的最后路由端口方向分別為西、北、南,具體執(zhí)行流程如下:
步驟401:東路端口輸入路由包401,路由算法模塊402準(zhǔn)備處理該路由包
步驟402:路由算法模塊402路由路由包,得到送往隊(duì)列的信息403-405和送往緩存的信息406,隊(duì)列信息403里的左端兩位代表修改后的路由包存儲(chǔ)的緩存地址,右端四位1001代表原路由包的第1和第4地址是去向西隊(duì)列,除了第1和第4位位都置0,意思為新的路由包從西端口出時(shí)第2到第3地址應(yīng)該變成無效。由于原路由包所有地址共享相同數(shù)據(jù),所以當(dāng)前產(chǎn)生所有隊(duì)列的信息403-405的緩存地址都是一樣的。
步驟403:裁剪原路由包的所有地址有效位,得到新的裁剪路由包,除了裁剪了所有地址有效位外,原路由包的其他數(shù)據(jù)保持不變。準(zhǔn)備送往緩存的信息406既包含新的裁剪路由包還包含該路由包的復(fù)用次數(shù),該復(fù)用次數(shù)是由路由算法模塊統(tǒng)計(jì)原路由包路由后隊(duì)列去向的個(gè)數(shù),因此該路由包的復(fù)用次數(shù)為3。
步驟404:輸出西端口的隊(duì)列407接收產(chǎn)生的隊(duì)列信息403,輸出北端口的隊(duì)列408接收產(chǎn)生的隊(duì)列信息404,輸出南端口的隊(duì)列409接收產(chǎn)的的隊(duì)列信息405。
步驟405:緩存模塊411將產(chǎn)生的緩存信息406送往對(duì)應(yīng)的緩存地址10單元處。
路由后的信息在隊(duì)列和緩存儲(chǔ)存后,接下就是通過仲裁控制邏輯選擇隊(duì)列模塊和對(duì)應(yīng)的緩存模塊,讀選擇的隊(duì)列和緩存數(shù)據(jù),然后組合隊(duì)列和緩存數(shù)據(jù)產(chǎn)生新的路由包,最后送出輸出端口。從仲裁選擇到輸出端口輸出新的路由包的具體示例如圖5所示,該示例是接著圖4示例,詳細(xì)運(yùn)行流程如下:
步驟501:仲裁控制邏輯507在隊(duì)列0-3中選擇一個(gè)不為空的隊(duì)列,當(dāng)前選擇了隊(duì)列501,讀隊(duì)列隊(duì)首信息,獲得地址有效位信息505,緩存地址502,計(jì)算地址有效信息里面的地址有效個(gè)數(shù)503。
步驟502:隊(duì)列模塊將緩存地址10和需要減去的復(fù)用次數(shù)1送到緩存0,同時(shí)將地址有效位信息1001送往仲裁控制邏輯。
步驟503:緩存模塊根據(jù)隊(duì)列發(fā)送的緩存地址讀取緩存數(shù)據(jù),更新該緩存地址上數(shù)據(jù)的復(fù)用次數(shù),然后將裁剪了所有地址有效位的原路由包506送往仲裁控制邏輯。
步驟504:仲裁控制邏輯根據(jù)獲得地址有效信息和裁剪的路由包,組合恢復(fù)成新的路由包,此時(shí)合成的路由包508只有從西端口輸出的地址才有效,其他的都無效。最后將新的路由包送出輸出端口。
本發(fā)明還提出一種面向多地址共享數(shù)據(jù)路由包的新型片上路由芯片,該芯片上的片上路由器使用本發(fā)明提出的上述結(jié)構(gòu)。
本領(lǐng)域普通技術(shù)人員可以理解:附圖只是一個(gè)實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。