一種基于FPGA的多時(shí)鐘片上網(wǎng)絡(luò )研究與設計
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í)起到以下作用:
?。?)緩沖部分或者全部到來(lái)的數據包,以及當下游開(kāi)關(guān)可以用時(shí),傳送頭部及緊跟的flit。
?。?)劃分路由器核心以及路由器的頻率,從而支持一個(gè)多時(shí)鐘的網(wǎng)絡(luò )設計。
?。?)通過(guò)仲裁器監察write_count 端口的信息,來(lái)實(shí)現支持可變化大小的數據包。在緩沖區有單獨時(shí)鐘域的情況時(shí), 就需要一種有效的方式實(shí)施完整的或者空的邏輯。通過(guò)以下方式使控制信號同步:
?。?)發(fā)送數據包粒度作為一小部分FIFO 的空間。
?。?) 在一個(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ù)減少。
評論