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