在FPGA 上設計一個高性能、靈活的,、面積小的通信體系結(jié)構(gòu)是一項巨大的挑戰(zhàn),。大多數(shù)基于FPGA 的片上網(wǎng)絡都是運行在一個單一時鐘下。隨著FPGA 技術(shù)的發(fā)展,,Xilinx 公司推出了Virtex-4 平臺,。該平臺支持同一時間內(nèi)32 個時鐘運行,也就是說每個片上網(wǎng)絡的內(nèi)核可以在一個獨立的時鐘下運行,, 從而使每個路由器和IP 核都運行在最佳頻率上,。因此適用于設計多時鐘片上網(wǎng)絡,,實現(xiàn)高性能分組交換片上網(wǎng)絡。
1 多時鐘片上網(wǎng)絡架構(gòu)的分析
片上網(wǎng)絡結(jié)構(gòu)包含了拓撲結(jié)構(gòu),、流量控制,、路由、緩沖以及仲裁,。選擇合適網(wǎng)絡架構(gòu)方面的元素,,將對片上網(wǎng)絡的性能產(chǎn)生重大影響。
?。?)網(wǎng)絡拓撲:在設計中,,選擇Mesh 拓撲結(jié)構(gòu)。Mesh結(jié)構(gòu)擁有最小的面積開銷以及低功耗的特點,。此外,,Mesh 的線性區(qū)的節(jié)點數(shù)量規(guī)模大以及通道較寬。同時,,Mesh 也能很好地映射到FPGA 下的底層路由結(jié)構(gòu),,降低了FPGA 邏輯擁塞和路由器的功耗。
?。?)流控機制:虛擬直通和蟲洞技術(shù)(不像存儲轉(zhuǎn)發(fā))有數(shù)據(jù)包的延時與路徑長度成正比,。然而,與復雜的蟲洞路由器相比,, 虛擬直通的路由器更加適合于設計的實現(xiàn),。因此,選擇虛擬直通流量控制機制作為路由器的流量控制機制,。相比較蟲洞機制,,它能支持更高的吞吐量,在堵塞時能更有效地釋放緩存,。此外,,虛擬直通流量控制低延時的高信道利用率, 與此同時并不保留物理通道,。
?。?)路由算法:選擇XY 算法作為設計所采用的路由算法。該算法中分組的路由只取決于源節(jié)點和目的節(jié)點的地址,,而與網(wǎng)絡狀況無關(guān),。當使用算法時首先在X 維上進行路由,當?shù)竭_與目的節(jié)點同一列時,,轉(zhuǎn)向在Y 維上的路由,,最后到達目的節(jié)點。該算法對硬件要求簡單和實現(xiàn)容易, 在網(wǎng)絡流量不大時,, 具有較小的時延,,能夠有效避免死鎖和活鎖。
?。?)仲裁機制:輸入端口分配是基于簡單的Roundrobin[3]機制,。上次接收或解決接收的端口會放在隊列的末端。切換時到下游的數(shù)據(jù)包,。當交換數(shù)據(jù)包時,,F(xiàn)IFO的虛擬通道也遵循這種機制。
2 路由器微節(jié)點結(jié)構(gòu)的設計
多時鐘片上網(wǎng)絡的路由器由5 個輸入端口,、交叉點矩陣和中央的仲裁器三部分組成。除了頭譯碼邏輯,,5 個輸入端口都是相同的,。由于設計中采取了虛擬通道流控機制(VCS),因此輸入端口就必須包含仲裁邏輯,。與此同時,, 輸入端口還應包含輸入緩沖區(qū)來存儲輸入的數(shù)據(jù)包。
2.1 數(shù)據(jù)包
利用Xilinx block RAM,, 設置深度為16 的FIFO(先入先出隊列),,數(shù)據(jù)包的大小能在24 位與128 位之間變化,每個數(shù)據(jù)包HEADER(包頭)占用一個flit(數(shù)據(jù)片),。flit 的大小固定在8 位,。數(shù)據(jù)包頭包含路由目標地址、flit 的類型以及部分數(shù)據(jù)包,。設計中采用的虛擬直通流量控制需要1 位去指定數(shù)據(jù)片的類型,。路由器支持可變化大小的數(shù)據(jù)包, 通過編碼將數(shù)據(jù)包的大小編譯為字段,,作為bRAM 所需要的部分,,放在數(shù)據(jù)包頭部。每個IP 核的網(wǎng)絡接口(NI)起到存儲在數(shù)據(jù)包頭部的信息的作用,。當需要更高粒度數(shù)據(jù)包時,,部分數(shù)據(jù)包的位數(shù)以及寬度將會相應的增加。增加部分數(shù)據(jù)包的位數(shù)的同時也提高了緩存的利用率,。數(shù)據(jù)包首部保留的位數(shù)將用于實現(xiàn)基于優(yōu)先級的流量控制,。
2.2 輸入端口
路由器有5 個輸入端口, 通過端口分別與內(nèi)核及鄰近的路由器通信,, 這5 個端口按在方位可分為本地(L),,北(N),東(E),南(S),,西(W),。每個輸入端口可以支持虛擬通道多路復用,相關(guān)聯(lián)的仲裁器,,以及頭譯碼邏輯,,從而作出路由決定。如圖1,,輸入端口的3 個主要組成部分分別是虛擬通道選擇器,、FIFO bRAMs 以及bRAM 仲裁器。虛擬通道選擇器:決定輸入端緩存的使用空間的決定權(quán)在虛擬通道選擇器,。當數(shù)據(jù)包大小以編碼形式傳播時,,虛擬通道選擇器接收數(shù)據(jù)包的首部。當虛擬通道選擇器收到來自上游路由器或者來自自身核心的數(shù)據(jù)時,, 虛擬通道選擇器就會拿數(shù)據(jù)包的大小跟虛擬通道目前可以容納數(shù)據(jù)包的大小進行比較,。這么做的目的是為了能夠使輸入的數(shù)據(jù)能夠符合FIFO 中write_count 的大小。如果有足夠的空間存在,,則虛擬通道選擇器將同意輸入請求,, 同時反饋信息。在此過程中,,虛擬通道選擇器還設置了輸入端解復用器,。解復用器的作用是使數(shù)據(jù)包從輸入通道傳輸?shù)秸_的復用器的輸入緩存中。FIFO bRAMs:在所設計的路由器中,,緩沖區(qū)的深度將參數(shù)化,,在試驗時同時將其深度設置為16 。這些緩存區(qū)將被作為bRAM FIFO 的存儲器,,同時起到以下作用:
?。?)緩沖部分或者全部到來的數(shù)據(jù)包,以及當下游開關(guān)可以用時,,傳送頭部及緊跟的flit,。
(2)劃分路由器核心以及路由器的頻率,,從而支持一個多時鐘的網(wǎng)絡設計,。
(3)通過仲裁器監(jiān)察write_count 端口的信息,,來實現(xiàn)支持可變化大小的數(shù)據(jù)包,。在緩沖區(qū)有單獨時鐘域的情況時, 就需要一種有效的方式實施完整的或者空的邏輯,。通過以下方式使控制信號同步:
?。?)發(fā)送數(shù)據(jù)包粒度作為一小部分FIFO 的空間。
(2) 在一個時鐘周期內(nèi),, 一個連接終止之前設置flit 的尾部位,。在所使用的FPGA 設計中,由于支持FIFO 的最小深度是16,, 所以它適合于在虛擬直通中緩沖整個數(shù)據(jù)包,。write_count 的空和滿狀態(tài)信號將集成在FIFO 中。在一個多數(shù)據(jù)包的緩沖區(qū)中加大存儲flit 的能力,,將有助于提高FIFO 的利用率,。此外,獲得網(wǎng)絡的吞吐量的增益,,是由于上游連續(xù)包釋放緩沖區(qū)所促成的,。
圖1 輸入端口設計圖
bRAM 仲裁器: 輸入端口還包含了控制邏輯作出的仲裁決定。當選擇一個非空的bRAM 時,, 簡單的Round-robin 的方式仲裁算法將會啟用,。當選擇bRAM時,F(xiàn)SM 將會送出頭部flit,,解碼出它的目的地址,并發(fā)送相應的要求,。在所設計的路由器中采用XY 路由算法將大大簡化了解碼器的邏輯結(jié)構(gòu),。根據(jù)XY 路由算法的通行路徑許可,即將釋放的請求線將會減少,。
頭譯碼器:在XY 路由算法中,,頭數(shù)據(jù)片一開始往X 軸方向走,當?shù)竭_X 軸所在的目標地址時,,就會往Y方向走,。所有緊隨著的數(shù)據(jù)片將以流水線的方式跟著頭數(shù)據(jù)片移動。這種簡便的XY 路由算法適用于減化頭解碼器,、交叉點矩陣以及中央仲裁器的邏輯結(jié)構(gòu),。以上簡化得邏輯結(jié)構(gòu)將使FPGA 的芯片數(shù)顯著減少。
2.3 交叉點矩陣
設計一個多路交叉點矩陣,, 目的是為了減少面積的使用,。而另一種設計是支持復分解虛擬通道的交叉點連接。后一種方法,,產(chǎn)生高網(wǎng)絡吞吐量,,但要增加一個重要的復雜性開關(guān)。交叉點支持并行連接,,以及被用于通過中央仲裁器支持多個信號同時請求,。并非所有的交叉點連接都是使用XY 路由算法。經(jīng)過邏輯優(yōu)化,如圖2 所示設計中實施簡單的4 和2 輸入多路復用器開關(guān)(分別是L,、N,、S、E 以及W 端口),。上述優(yōu)化方案減少了交叉點面積,,使其使用的切片只有32 片。因此,,達到路由器面積顯著減小的目的,。
輸入端口的分配方式將采用簡單的Round-robin仲裁機制。對上一次接收過的或沒有用到的端口將給予最低優(yōu)先級,,并排在隊列的最末端,。將通過以下的方式提高路由器的性能:
(1)降低中央仲裁器的邏輯復雜度,;
?。?)盡量集中仲裁器,以減少req/grant 信號的數(shù)量,。
在設計中減少邏輯復雜度以及布線,, 從而減少數(shù)據(jù)堵塞,達到提高性能以及減低功耗的效果,。
3 性能分析
利用Virtex-4 系列中XC4VLX100-11[4]設備進行設計,, 利用Xilinx ISE 8.2i 進行綜合布局布線。使用ModelSim 6.1c[5]驗證所設計的功能,。設置了單一時鐘和多時鐘進行了模擬,,分析多時鐘片上網(wǎng)絡的性能。由于路由器是直接連接到內(nèi)核,, 所以沒必要考慮片與片之間的延時而去估計最高的頻率,。所設計是由一個路由功能模塊(RFM)執(zhí)行[6],用以準確地估計工作頻率,,基本路由器的單機版工作頻率可到達357MHz,。因此8bits 通道的路由器的吞吐量最高可達2.85Gbits/s。在所設計的路由器中,, 頭數(shù)據(jù)片前進到下一個節(jié)點,,而剩下的數(shù)據(jù)片以流水線方式流通。在計劃中,,網(wǎng)絡延時僅僅與路徑長度H(跳躍點數(shù)量)有關(guān),。在信道爭用的情況下,網(wǎng)絡延時L 可以用以下方式計算:
L = 7×H + B/w (1)
公式(1)中,,B 是數(shù)據(jù)包的字節(jié)數(shù),,w 是每個時鐘周期轉(zhuǎn)換的字節(jié)數(shù),。參數(shù)7 是在多時鐘片上網(wǎng)絡路由器中安裝在每個路由器跳延遲支付。這個延時是因為基于數(shù)據(jù)包中的頭數(shù)據(jù)片的解碼和仲裁執(zhí)行所導致的,。
本文介紹了一個基于FPGA 的高效率多時鐘的虛擬直通路由器,,通過優(yōu)化中央仲裁器和交叉點矩陣,,以爭取較小面積和更高的性能。同時,,擴展路由器運作在獨立頻率的多時鐘NoC 架構(gòu)中,,并在一個3×3Mesh 的架構(gòu)下實驗,分析其性能特點,,比較得出多時鐘片上網(wǎng)絡具有更高的性能,。