一種基于Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)及其工作方式的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)及其工作方式,屬于片上網(wǎng)絡(luò)通訊
技術(shù)領(lǐng)域
【背景技術(shù)】
[0002] 與傳統(tǒng)的單核系統(tǒng)相比,多核系統(tǒng)在計(jì)算能力、功耗方面帶來(lái)了較大的優(yōu)勢(shì),但隨 著運(yùn)算能力的提高,也給片上通訊帶來(lái)了吞吐量、并行性、速度的挑戰(zhàn)。針對(duì)以上問(wèn)題,片上 網(wǎng)絡(luò)技術(shù)作為一種以通信為中心的集成電路互聯(lián)結(jié)構(gòu)被提出,成為解決多核系統(tǒng)片上通訊 的最佳方案。隨著片上網(wǎng)絡(luò)技術(shù)的發(fā)展,研究者們提出了各式各樣的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
[0003] 圖2所示的Toru S網(wǎng)絡(luò)與圖1所示的傳統(tǒng)的me sh網(wǎng)絡(luò)相比較,不僅繼承了其結(jié)構(gòu)簡(jiǎn) 單,可拓展性好,便于實(shí)現(xiàn)和分析的特點(diǎn),同時(shí)還具有較小的網(wǎng)絡(luò)半徑,較低的功耗等優(yōu)點(diǎn), 因此在片上網(wǎng)絡(luò)得到了廣泛的應(yīng)用。如圖1所示,在傳統(tǒng)的片上網(wǎng)絡(luò)中,每個(gè)路由節(jié)點(diǎn)只能 接入一個(gè)運(yùn)算單元或存儲(chǔ)單元,當(dāng)運(yùn)算單元處理雙目運(yùn)算時(shí),需要等待兩路數(shù)據(jù)準(zhǔn)備完畢 后才能開(kāi)始運(yùn)算,很大程度的降低了運(yùn)算處理的速度,影響多核系統(tǒng)的運(yùn)行效率。因此如何 提高并行度和網(wǎng)絡(luò)的吞吐量成為片上網(wǎng)絡(luò)設(shè)計(jì)的關(guān)鍵問(wèn)題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明為克服現(xiàn)有技術(shù)的不足之處,提出一種基于Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)及其 工作方式,以期能在具有雙接入結(jié)構(gòu)的Torus網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸,從而能縮短節(jié)點(diǎn)間的平 均距離,減小網(wǎng)絡(luò)半徑,提高網(wǎng)絡(luò)的吞吐量和并行性,實(shí)現(xiàn)資源節(jié)點(diǎn)的雙目流運(yùn)算的工作方 式,提尚片上網(wǎng)絡(luò)的運(yùn)算效率。
[0005] 本發(fā)明為達(dá)到上述目的所采用的技術(shù)方案是:
[0006] 本發(fā)明一種基于Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)的特點(diǎn)是,所述Torus網(wǎng)絡(luò)包括若干個(gè)路 由節(jié)點(diǎn)、若干個(gè)資源節(jié)點(diǎn)和若干條路由通道;
[0007] 任意一個(gè)路由節(jié)點(diǎn)具有兩個(gè)本地接口,兩個(gè)本地接口分別連接兩個(gè)對(duì)角線方向上 的資源節(jié)點(diǎn),任意一個(gè)資源節(jié)點(diǎn)以對(duì)角線的方式接入到兩個(gè)路由節(jié)點(diǎn)上,任意兩個(gè)相鄰的 路由節(jié)點(diǎn)通過(guò)所述路由通道相連接,任意行和任意列首尾的兩個(gè)路由節(jié)點(diǎn)通過(guò)所述路由通 道連接,從而形成所述Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)。
[0008] 本發(fā)明一種基于Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)的特點(diǎn)也在于,所述路由節(jié)點(diǎn)的組成包 括:輸入狀態(tài)機(jī)模塊、優(yōu)先級(jí)編碼器模塊、譯碼器模塊、仲裁器模塊、交叉開(kāi)關(guān)模塊和輸出狀 態(tài)機(jī)模塊;
[0009] 所述輸入狀態(tài)機(jī)模塊用于控制數(shù)據(jù)有序輸入,并由四個(gè)方向上的輸入狀態(tài)機(jī)和兩 個(gè)對(duì)角線方向上的輸入狀態(tài)機(jī)組成,包括:東向輸入狀態(tài)機(jī)、西向輸入狀態(tài)機(jī)、北向輸入狀 態(tài)機(jī)、南向輸入狀態(tài)機(jī)、本地〇方向輸入狀態(tài)機(jī)和本地1方向輸入狀態(tài)機(jī);
[0010]任意一個(gè)輸入狀態(tài)機(jī)的工作狀態(tài)包括:空閑狀態(tài)F_IDLE、請(qǐng)求狀態(tài)?_1^〇、預(yù)鎖定 狀態(tài)F_PREL0CK、鎖定狀態(tài)?_030(和失敗狀態(tài)F_FAIL
[0011] 任意一個(gè)輸入狀態(tài)機(jī)的初始狀態(tài)為空閑狀態(tài)?_101^;
[0012] 所述輸出狀態(tài)機(jī)模塊用于控制數(shù)據(jù)有序輸出,并由四個(gè)方向上的輸出狀態(tài)機(jī)和兩 個(gè)對(duì)角線方向上的輸出狀態(tài)機(jī)組成,包括:東向輸出狀態(tài)機(jī)、西向輸出狀態(tài)機(jī)、北向輸出狀 態(tài)機(jī)、南向輸出狀態(tài)機(jī)、本地0方向輸出狀態(tài)機(jī)和本地1方向輸出狀態(tài)機(jī);
[0013 ]任意一個(gè)輸出狀態(tài)機(jī)的工作狀態(tài)包括:空閑狀態(tài)F_IDLE和鎖定狀態(tài)F_L0CK;
[0014] 任意一個(gè)輸出狀態(tài)機(jī)的初始狀態(tài)為空閑狀態(tài)?_101^;
[0015] 所述優(yōu)先級(jí)編碼器模塊用于根據(jù)所設(shè)定的優(yōu)先級(jí)順序控制路由請(qǐng)求的處理順序;
[0016] 所述譯碼器模塊用于根據(jù)輸入的路由請(qǐng)求產(chǎn)生數(shù)據(jù)傳輸?shù)穆酚煞较颍?br>[0017] 所述仲裁器模塊用于判斷所產(chǎn)生的路由方向在相應(yīng)的輸出狀態(tài)機(jī)上是否被占據(jù); 若被占據(jù),則向所述輸入狀態(tài)機(jī)模塊返回"拒絕分配"信號(hào),若不被占據(jù),則向所述輸入狀態(tài) 機(jī)模塊返回"允許分配"信號(hào),并向所述交叉開(kāi)關(guān)模塊發(fā)送connection互連信號(hào);
[0018] 所述交叉開(kāi)關(guān)模塊根據(jù)connection互連信號(hào)實(shí)現(xiàn)相應(yīng)輸入狀態(tài)機(jī)與相應(yīng)輸出狀 態(tài)機(jī)的互聯(lián)。
[0019] 本發(fā)明一種基于Torus網(wǎng)絡(luò)的雙接入結(jié)構(gòu)的工作方式的特點(diǎn)是應(yīng)用于任意兩個(gè)資 源節(jié)點(diǎn)之間數(shù)據(jù)進(jìn)行傳輸?shù)倪^(guò)程中;所傳輸?shù)臄?shù)據(jù)包括:路由包、數(shù)據(jù)包和結(jié)束包;所述路 由包包含目的節(jié)點(diǎn)地址;定義發(fā)送所述路由包的資源節(jié)點(diǎn)為請(qǐng)求方源節(jié)點(diǎn),接收所述路由 包的資源節(jié)點(diǎn)為目的節(jié)點(diǎn);根據(jù)所傳輸?shù)臄?shù)據(jù)沿著所經(jīng)過(guò)路由節(jié)點(diǎn)的順序,定義數(shù)據(jù)當(dāng)前 所經(jīng)過(guò)的路由節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn),則數(shù)據(jù)所經(jīng)過(guò)的上一個(gè)路由節(jié)點(diǎn)為上游節(jié)點(diǎn),數(shù)據(jù)將要經(jīng) 過(guò)的下一個(gè)路由節(jié)點(diǎn)為下游節(jié)點(diǎn);
[0020] 以所述T 〇 ru s網(wǎng)絡(luò)的任一頂點(diǎn)上的路由節(jié)點(diǎn)為原點(diǎn)0,與所述頂點(diǎn)上的路由節(jié)點(diǎn)相 連的兩條互連的路由通道分別為X軸和Y軸,建立坐標(biāo)系0ΧΥ;并以X軸正方向?yàn)闁|向,以X軸 的負(fù)方向?yàn)槲飨?,以Y軸的正方向?yàn)楸毕?,以Y軸的負(fù)方向?yàn)槟舷颍粍t在所述坐標(biāo)系0ΧΥ中的 各個(gè)路由節(jié)點(diǎn)的位置坐標(biāo)即為相應(yīng)路由節(jié)點(diǎn)地址;
[0021 ]所述數(shù)據(jù)傳輸?shù)倪^(guò)程是按如下步驟進(jìn)行:
[0022 ]步驟1、所述請(qǐng)求方源節(jié)點(diǎn)向與其相連的路由節(jié)點(diǎn)的輸入狀態(tài)機(jī)模塊發(fā)送路由請(qǐng) 求和路由包,則接收到所述路由請(qǐng)求和路由包的路由節(jié)點(diǎn)變?yōu)楫?dāng)前節(jié)點(diǎn);
[0023] 步驟2、所述當(dāng)前節(jié)點(diǎn)的輸入狀態(tài)機(jī)模塊接收到所述路由包和路由請(qǐng)求;則所述當(dāng) 前節(jié)點(diǎn)在所接收方向上的輸入狀態(tài)機(jī)的工作狀態(tài)由空閑狀態(tài)F_IDLE跳轉(zhuǎn)到請(qǐng)求狀態(tài)?_ REQ;所述接收方向上的輸入狀態(tài)機(jī)將路由請(qǐng)求以及路由包中的目的節(jié)點(diǎn)地址發(fā)送到所述 優(yōu)先級(jí)編碼器模塊;
[0024] 步驟3、所述當(dāng)前節(jié)點(diǎn)的優(yōu)先級(jí)編碼器模塊接收到所述路由請(qǐng)求,并根據(jù)所設(shè)定的 優(yōu)先級(jí)順序處理來(lái)自不同方向上的路由請(qǐng)求;從而選出最高優(yōu)先級(jí)的路由請(qǐng)求,并用 select信號(hào)表示;再將所述select信號(hào)及其所對(duì)應(yīng)的路由包中的目的節(jié)點(diǎn)地址發(fā)送到譯碼 器模塊;
[0025] 步驟4、所述當(dāng)前節(jié)點(diǎn)的譯碼器模塊根據(jù)所接收的select信號(hào),根據(jù)目的節(jié)點(diǎn)切換 方法將所述select信號(hào)所對(duì)應(yīng)方向的路由包中的目的節(jié)點(diǎn)地址與所述當(dāng)前節(jié)點(diǎn)地址進(jìn)行 比較,從而產(chǎn)生可能的路由方向,并用dest信號(hào)表示;再將dest信號(hào)和select信號(hào)發(fā)送給仲 裁器模塊;
[0026]步驟5、所述仲裁器模塊接收到所述select信號(hào)和dest信號(hào)后,根據(jù)優(yōu)先級(jí)從高到 低的順序依次判斷dest信號(hào)中對(duì)應(yīng)方向上的輸出狀態(tài)機(jī)的工作狀態(tài)是否為空閑狀態(tài)F_ IDLE;若為空閑狀態(tài)F_IDLE,則向所述當(dāng)前節(jié)點(diǎn)的向?qū)?yīng)方向上的輸入狀態(tài)機(jī)返回"允許分 配"信號(hào),向所述交叉開(kāi)關(guān)模塊發(fā)送connect ion互連信號(hào);同時(shí)向?qū)?yīng)方向上的輸出狀態(tài)機(jī) 發(fā)送"占用"信號(hào),若不為空閑狀態(tài)F_IDLE,則向?qū)?yīng)方向上的輸入狀態(tài)機(jī)返回"拒絕分配" 信號(hào);
[0027]步驟6、所述對(duì)應(yīng)方向上的輸入狀態(tài)機(jī)若接收到所述"允許分配"信號(hào);則對(duì)應(yīng)方向 上的輸入狀態(tài)機(jī)的工作狀態(tài)由所述請(qǐng)求狀跳轉(zhuǎn)到預(yù)鎖定狀態(tài)F_PREL0CK;
[0028]所述當(dāng)前節(jié)點(diǎn)的交叉開(kāi)關(guān)模塊根據(jù)所接收到所述connect ion互連信號(hào)將相應(yīng)輸 入狀態(tài)機(jī)與對(duì)應(yīng)的輸出狀態(tài)機(jī)進(jìn)行互連;
[0029] 所述對(duì)應(yīng)方向上的輸出狀態(tài)機(jī)根據(jù)所接收的"占用"信號(hào)由所述空閑狀態(tài)F_IDLE 跳轉(zhuǎn)到鎖定狀態(tài)?_11)0(,并產(chǎn)生一個(gè)新的路由請(qǐng)求;
[0030] 同時(shí),所述對(duì)應(yīng)方向上的輸入狀態(tài)機(jī)將所述路由包通過(guò)所述交叉開(kāi)關(guān)發(fā)送到對(duì)應(yīng) 方向上的輸出狀態(tài)機(jī);并執(zhí)行步驟10;
[0031] 所述對(duì)應(yīng)方向上的輸入狀態(tài)機(jī)若接收到所述"拒絕分配"信號(hào),則對(duì)應(yīng)方向上的輸 入狀態(tài)機(jī)的工作狀態(tài)由所述請(qǐng)求狀跳轉(zhuǎn)到失敗狀并向上游節(jié)點(diǎn)的對(duì)應(yīng) 方向上輸出狀態(tài)機(jī)模塊發(fā)送"路由失敗"信號(hào)后,再由失敗狀跳轉(zhuǎn)到空閑狀態(tài)?_ IDLE,并執(zhí)行步驟7;
[0032] 步驟7、所述上游節(jié)點(diǎn)對(duì)應(yīng)方向上的輸出狀態(tài)機(jī)接收到"路由失敗"信號(hào)由所述鎖 定狀態(tài)F_L0CK跳轉(zhuǎn)到空閑狀態(tài)?_101^,同時(shí)將"路由失敗"傳輸?shù)剿錾嫌喂?jié)點(diǎn)對(duì)應(yīng)方向上 的輸入狀態(tài)機(jī);
[0033] 步驟8、所述上游節(jié)點(diǎn)對(duì)應(yīng)方向上的輸入狀態(tài)機(jī)根據(jù)接收到"路由失敗"信號(hào)由所 述預(yù)鎖定狀態(tài)F_PREL0CK跳轉(zhuǎn)到所述失敗狀態(tài)F_FAIL,同時(shí)返回"路由失敗"信號(hào)至所述上 游節(jié)點(diǎn)的上游后,再由失敗狀跳轉(zhuǎn)到空閑狀態(tài)?_101^,直到所述"路由失敗"信號(hào) 返回到所述請(qǐng)求方源節(jié)點(diǎn)為止;
[0034] 步驟9、所述請(qǐng)求方源節(jié)點(diǎn)接收到"路由失敗"信號(hào)后,返回執(zhí)行步驟1;
[0035]步驟10、所述對(duì)應(yīng)方向上的輸出狀態(tài)機(jī)將新的路由請(qǐng)求以及接收到的路由包發(fā)送 到下游節(jié)點(diǎn)或所述目的節(jié)點(diǎn);
[0036] 步驟11、