趙寶功,徐玉潔,屈凌翔
(中國電子科技集團(tuán)公司第58研究所 ,江蘇 無錫,214035)
隨著微電子計算技術(shù)的發(fā)展,超大規(guī)模集成電路的集成度越來越高,片上系統(tǒng)(SOC)總線結(jié)構(gòu)的弊端逐漸暴露出來,物理連接、單一時鐘引起的時鐘延遲等問題,制約了SOC系統(tǒng)的進(jìn)一步發(fā)展。在1999年,以瑞典皇家理工學(xué)院為代表的學(xué)術(shù)機構(gòu)提出了新型的通訊架構(gòu)——NOC[1],這種設(shè)計把通信網(wǎng)絡(luò)概念結(jié)合到集成電路設(shè)計中,每個計算單元模塊都是片上網(wǎng)絡(luò)的一個路由節(jié)點。而在傳統(tǒng)的SOC設(shè)計中,都是采用總線架構(gòu)將各個模塊連接起來并且使用一個統(tǒng)一時鐘。在SOC系統(tǒng)集成度低的情況下這個方案還是可行的,但是隨著集成度的不斷提高,SOC系統(tǒng)受到嚴(yán)重的時鐘延遲和偏移影響,這給設(shè)計者帶來極大的挑戰(zhàn),片上網(wǎng)絡(luò)(NOC)徹底地解決了這個問題,NOC系統(tǒng)采用一種分布式網(wǎng)絡(luò)結(jié)構(gòu),它們沒有統(tǒng)一時鐘,各個計算單元通過路由器連接,各自可以完全獨立工作。為了減低功耗本文通過改進(jìn)現(xiàn)有的2D MESH架構(gòu),設(shè)計了其中一個節(jié)點作為主控核,控制從核以及路由的時鐘和復(fù)位,對于工作過程中不使用的節(jié)點,節(jié)點時鐘不打開,達(dá)到降低功耗的目的。
目前片上網(wǎng)絡(luò)的種類有網(wǎng)格型拓?fù)浣Y(jié)構(gòu)、環(huán)繞型拓?fù)浣Y(jié)構(gòu)、環(huán)型拓?fù)浣Y(jié)構(gòu)[1,2,8],樹型拓?fù)浣Y(jié)構(gòu),選擇合適的NOC網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)對NOC設(shè)計非常重要,目前階段NOC的研究大部分借鑒了并行計算機體系結(jié)構(gòu)中的靜態(tài)網(wǎng)絡(luò)結(jié)構(gòu),各種拓?fù)浣Y(jié)構(gòu)各有各的優(yōu)勢,目前比較多的研究機構(gòu)采用了2D MESH 結(jié)構(gòu),2D MESH結(jié)構(gòu)顯著的特點是路由的編碼簡單[11],結(jié)構(gòu)簡潔,目前商用的片上網(wǎng)絡(luò)架構(gòu)多是采用2D MESH。
片上網(wǎng)絡(luò)核心思想是將計算機宏觀網(wǎng)絡(luò)技術(shù)移植到芯片設(shè)計中來,從體系結(jié)構(gòu)上解決總線架構(gòu)帶來的問題。片上網(wǎng)絡(luò)原理就是在芯片上搭建網(wǎng)絡(luò),用網(wǎng)絡(luò)的方式把各個IP核聯(lián)系在一起,各個IP核之間通過報文方式實現(xiàn)數(shù)據(jù)交互。
NOC 結(jié)構(gòu)是采用二維MESH_3×3網(wǎng)絡(luò)結(jié)構(gòu)(如圖1),片上網(wǎng)絡(luò)架構(gòu)主要由計算單元、網(wǎng)絡(luò)接口(NI)、路由器(R)組成[3],處理單元分為主控單元、從單元,計算單元主要為IP內(nèi)核,這里采用高性能DSP內(nèi)核,處理單元通過局部總線訪問私有存儲器,通過網(wǎng)絡(luò)接口訪問共享存儲器。處理單元(如圖1左上角)為主控核控制其他處理單元的時鐘以及復(fù)位等。整個系統(tǒng)的存儲空間統(tǒng)一編址,每個核都可以訪問其他核的存儲空間,這樣所有計算單元可以共享所有存儲器。
圖1 NOC平臺
路由器主要功能是根據(jù)源節(jié)點數(shù)據(jù)發(fā)送端和目的節(jié)點數(shù)據(jù)接收端的網(wǎng)絡(luò)地址信息,按照一定的路由算法選擇最佳的路徑,實現(xiàn)數(shù)據(jù)的通訊。路由器的核心模塊是路由仲裁器,它根據(jù)路由算法,通過交叉開關(guān)分配路徑為數(shù)據(jù)選擇其輸出端口,當(dāng)數(shù)據(jù)進(jìn)入路由時,先將數(shù)據(jù)存儲在緩存器中,根據(jù)數(shù)據(jù)的頭包解析,向路由的仲裁器申請仲裁選擇,當(dāng)輸入數(shù)據(jù)申請獲得仲裁時路由分配鏈路,讓數(shù)據(jù)通過路由[5,6,9,10]。
圖2 路由器示意圖
路由有 5個雙向端口,分別為北(north)、東(east)、南(south)、西(west)和本地端口(local)。每個端口都有輸入數(shù)據(jù)、控制信號通道和輸出數(shù)據(jù)控制信號通道,local端口和本地的計算單元連接,其余連接其他方向的路由器。路由節(jié)點內(nèi)部采用隊列緩存方式緩存分組數(shù)據(jù),輸入通道由兩個虛擬通道構(gòu)成,實現(xiàn)了分組數(shù)據(jù)的緩存,并且為每個分組數(shù)據(jù)選擇輸出端口;虛擬通道分配模塊根據(jù)相鄰節(jié)點輸入通道的虛通道狀態(tài),為輸出端口的分組數(shù)據(jù)分配虛擬通道;仲裁模塊控制開關(guān)電路的選通,連接輸入輸出端口,為了提高重用性,我們采用相同的輸入輸出端口連接路由器和IP,其中IP通過網(wǎng)絡(luò)接口來實現(xiàn)與路由之間的數(shù)據(jù)轉(zhuǎn)換,路由器示意圖如圖2,路由器算法采用xy 維序算法,先沿著x軸方向?qū)ふ夷康牡刂?,然后在y軸方向輪轉(zhuǎn)仲裁機制,xy維序算法是典型的確定性路由算法。這個算法實現(xiàn)起來比較容易,路由的效率比較高,不會死鎖,算法的偽代碼如下:
假設(shè)(xd ,yd)為目的節(jié)點坐標(biāo),(xc ,yc )為當(dāng)前節(jié)點坐標(biāo)[4],
在片上網(wǎng)絡(luò)中傳輸數(shù)據(jù)的基本傳輸單元為數(shù)據(jù)包,每個數(shù)據(jù)包又分為頭Flit[2]和數(shù)據(jù)Flit,它們都有相同的數(shù)據(jù)位寬,在通信協(xié)議中頭Flit包含通訊協(xié)議中的各項信息,包括電源管理、vc位、方向控制、目的計算節(jié)點地址、源計算節(jié)點地址、包長、包有效位等,這些信息將在網(wǎng)絡(luò)接口中被打包發(fā)送到路由器中,并在路由中被解析,根據(jù)頭f l it信息把數(shù)據(jù)包轉(zhuǎn)發(fā)到對應(yīng)的輸出端口上。實際應(yīng)用協(xié)議內(nèi)容被放在數(shù)據(jù)Flit中,Packet有兩種結(jié)構(gòu),分別是頭Flit和數(shù)據(jù)Flit,如表1和表2。
表1 頭Flit格式
表2 數(shù)據(jù)Flit格式
網(wǎng)絡(luò)接口將AHB總線的數(shù)據(jù)和地址格式轉(zhuǎn)化為Router能識別的Packet格式,Packet結(jié)構(gòu)如表1、表2,頭Flit主要包含標(biāo)志位、控制信息和目的存儲器地址信息;數(shù)據(jù)Flit主要用來存儲需要傳輸?shù)臄?shù)據(jù)。
片上網(wǎng)絡(luò)接口用于連接IP模塊與片上網(wǎng)絡(luò),是NOC架構(gòu)中的重要組成部分。網(wǎng)絡(luò)接口主要負(fù)責(zé)資源節(jié)點與路由之間進(jìn)行總線結(jié)構(gòu)到網(wǎng)絡(luò)結(jié)構(gòu)的協(xié)議轉(zhuǎn)換,主要分為兩個步驟:存儲計算單元模塊發(fā)送的數(shù)據(jù)并將其封裝打包便于NOC通訊架構(gòu)中傳輸;存儲從通訊架構(gòu)傳輸?shù)竭_(dá)目的IP 模塊的數(shù)據(jù),在網(wǎng)絡(luò)接口中將數(shù)據(jù)包拆分得到有效數(shù)據(jù)并發(fā)送到IP模塊。另外在網(wǎng)絡(luò)接口根據(jù)接收部分狀態(tài),當(dāng)數(shù)據(jù)接收完成后網(wǎng)絡(luò)接口向計算單元發(fā)送中斷信號。
網(wǎng)絡(luò)接口實現(xiàn)數(shù)據(jù)包的打包和拆包都要通過狀態(tài)機來控制實現(xiàn)[7~11],網(wǎng)絡(luò)接口在實現(xiàn)總線結(jié)構(gòu)到網(wǎng)絡(luò)片上網(wǎng)絡(luò)結(jié)構(gòu)的協(xié)議轉(zhuǎn)換過程中需要暫存數(shù)據(jù),同時為了實現(xiàn)片上網(wǎng)絡(luò)架構(gòu)局部同步全局異步的功能特點,網(wǎng)絡(luò)接口還要有FIFO對數(shù)據(jù)進(jìn)行暫存以便于對數(shù)據(jù)包封裝、拆分和轉(zhuǎn)發(fā)。
發(fā)送通道工作流程如下:
(1)配置網(wǎng)絡(luò)接口中寄存器;
(2)從相應(yīng)的寄存器中讀取包頭的有效載荷,形成包頭并發(fā)送出去;
(3)識別并讀取數(shù)據(jù)包的有效載荷,形成包實體并發(fā)送出去;
(4)識別并讀取尾包的有效載荷,形成尾包并發(fā)送出去。
接收通道寫入FIFO的操作是在接收來自片上網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行的,同時并不是所有接收來的數(shù)據(jù)都寫入FIFO。在接收數(shù)據(jù)過程中,首先被接收的是頭包,頭包中包含了電源管理位、有效位、VC位、頭Flit位、目的地址位、方向位等,當(dāng)數(shù)據(jù)包達(dá)到目的節(jié)點時,頭包已經(jīng)沒有意義,不被送到IP核,只有數(shù)據(jù)包及尾包有效才會被寫入到FIFO中暫存,接收通道的工作流程如下:
(1)頭包的識別過程,該過程結(jié)束后啟動下一過程;
(2)數(shù)據(jù)包和尾包有效荷載的抽取并寫入到FIFO中,當(dāng)數(shù)據(jù)寫完后將會觸發(fā)中斷請求事件的發(fā)生。
圖3 網(wǎng)絡(luò)接口示意圖
目前的仿真是基于MESH 3×3搭建的RTL系統(tǒng)驗證平臺,使用core0節(jié)點作為主控核,控制其他計算單元的時鐘和復(fù)位,當(dāng)計算單元不工作的時候可以把對應(yīng)的計算單元、時鐘關(guān)掉,這樣可以降低功耗。這里使用nc仿真器,仿真計算節(jié)點之間的數(shù)據(jù)通訊。首先配置下網(wǎng)絡(luò)接口中的寄存器,然后讓計算節(jié)點向網(wǎng)絡(luò)接口發(fā)送數(shù)據(jù),在網(wǎng)絡(luò)接口中數(shù)據(jù)被打包發(fā)送到指定的計算節(jié)點(見圖3),數(shù)據(jù)從core8經(jīng)過17個周期后到達(dá)core7,并把數(shù)據(jù)送到指定的存儲空間上,在實際應(yīng)用時盡量先分配好任務(wù),把要處理的計算任務(wù)改為并行處理任務(wù)映射到各個計算單元,優(yōu)化數(shù)據(jù)傳輸路徑,降低數(shù)據(jù)傳輸?shù)难舆t,提供網(wǎng)絡(luò)運行效率。
圖4 仿真結(jié)果
為了充分利用多核性能,設(shè)計了流水矩陣乘法,在此應(yīng)用中每個從核接點都有個本地N維矩陣。具體通過設(shè)計并行程序來實現(xiàn),具體過程如下。
首先將任務(wù)分解,把一次矩陣運算作為一個子任務(wù),將多組矩陣乘法運算分解為多個有數(shù)據(jù)依賴關(guān)系的子任務(wù),如圖5(a)所示,圖中圓圈代表一次矩陣乘法運算,縱向代表一組矩陣連乘的過程。
圖5 多組矩陣連乘的依賴關(guān)系和并發(fā)性
根據(jù)如圖5(a)的分解方法,按照乘法步驟進(jìn)行分配,將連乘分為4步,給每一步編上一個號,把編號相同的分配到同一個進(jìn)程中,如圖5(b)所示,這樣的分配方式既能考察核的計算能力,也能考察通訊能力。
圖6 流水方式的并行計算時序圖
其次協(xié)調(diào)與映射,使用圖5(b)的分配方法,按照進(jìn)程與處理器一一對應(yīng)的映射方法將3個進(jìn)程映射到4個處理器上,使用流水方式執(zhí)行。圖6使用流水方式的并行計算時序圖,圖中橫方向表示時間,縱方向表示某一時刻的事件,p0、p1、p2、p3為4個處理器,首先在p0上執(zhí)行第一組連乘的第一運算,把結(jié)果發(fā)送給p1;p1進(jìn)行第二步計算,把結(jié)果發(fā)送給下一個處理器,在這個過程中,p0完成第一組連乘后接著完成第二組連乘的第一步,其他處理器類似,每個處理器只負(fù)責(zé)連乘的一個步驟,這樣處理器構(gòu)成并行流水線工作,協(xié)調(diào)完成連乘任務(wù)。
隨著無人機、聲納、雷達(dá)、信號情報以及軟件無線電等波形密集型應(yīng)用中信號處理需求的不斷提高,多個數(shù)字信號處理器內(nèi)核的使用已經(jīng)成為重要的實現(xiàn)手段,多核數(shù)字信號處理器能夠滿足關(guān)鍵的任務(wù)需求,包括更強大的處理速度、更精細(xì)的分辨率、更高的精度,過去靠工藝升級,提高主頻來實現(xiàn)越來越遇到瓶頸。
本文通過NOC拓?fù)浣Y(jié)構(gòu)實現(xiàn)了多核芯片,計算單元之間可以通過router進(jìn)行數(shù)據(jù)交換。2D MESH拓?fù)浼軜?gòu)具有功能簡單、擴(kuò)展性強等特點,對解決未來多核芯片的需求具有重要意義,NOC架構(gòu)將成為大規(guī)模多核芯片的發(fā)展方向。
[1]段宜賓,王曉冬,唐磊. 片上網(wǎng)絡(luò)關(guān)鍵技術(shù)及仿真方法研究[J]. 通信技術(shù),2009,42(12).
[2]丁帥,吳寧,葛芬,王祺. 片上網(wǎng)絡(luò)路由單元的系統(tǒng)級建模研究[J]. 微電子學(xué)與計算機,2009,26 (1).
[3]譚耀東,劉有耀. NOC系統(tǒng)研究綜述[J]. 西安郵電學(xué)院學(xué)報,2008,13(1).
[4]姚放吾,高 莉. 一種改進(jìn)的二維MESH結(jié)構(gòu)片上網(wǎng)絡(luò)拓?fù)鋄J]. 計算機計算與發(fā)展,2009,19(7).
[5]謝曉燕,蔣林. 基于電路交換的NOC路由器設(shè)計與實現(xiàn)[J].
[6]劉炎炎. 基于FPGA的NOC的通訊架構(gòu)的設(shè)計與測試[D].合肥工業(yè)大學(xué)碩士學(xué)位論文,2011.
[7]楊盛光,李麗,張宇昂,王佳文,董嵐,高明倫. 多處理器NOC仿真平臺[J]. 系統(tǒng)仿真學(xué)報,2009,21(19).
[8]李忠琦,凌翔,胡劍浩. 片上網(wǎng)絡(luò)系統(tǒng)網(wǎng)絡(luò)層設(shè)計與研究[J]. 中國集成電路.
[9]萬玉鵬,吳寧. NOC路由單元的系統(tǒng)級設(shè)計[J]. 2009, 22(2).
[10]Shashi KumarAxel, Jantsch Juha-Pekka, Soininen Martti,Forsell Mikael Millberg. A Network on chip Architecture and design methodology computer SOC iety annual symposium[C]. VLSI 2002 IEEE.
[11]Mullins R, West A, Moore S. Low –latency virtual channel router for on chip network [C]. Proceedings of the 31stAnnual International Symposium on Computer Architecture germany Munchen ,2004.188-197.