鄭靜雅,安軍社
(1.中國科學院國家空間科學中心 中國科學院復雜航天系統電子信息技術重點實驗室,北京 100190;2.中國科學院大學 計算機科學與技術學院,北京 100190)
隨著空間技術的不斷發展,衛星有效載荷數據的數量和速率[1,2]日益增加,歐洲航天局提出SpaceFibre[3]超高速數據通信技術。該技術將端口劃分為若干虛擬通道(virtual channel,VC),每條VC被分配唯一的虛擬網絡(virtual network,VN)號,協議[3]稱這種映射關系為VC-VN映射。
虛擬網絡增加了路由器設計的復雜度,目前關于SpaceFibre路由器設計的研究較少。文獻[4]設計了路由器原理樣機;文獻[5]和文獻[6]實現了具有基本功能的SpaceFibre路由器;文獻[7]公開了一種擴展性較強的交叉開關方案。但上述設計存在組自適應路由功能或多播功能缺省的問題,不能滿足部分數據網絡的應用需求。文獻[8]設計了一種功能完善的路由器并在多種FPGA型號上進行了驗證,但該路由器的性能可進一步提升以確保超高速數據的高效交換。
為適應多種航天應用場景、提高數據網絡中數據交換的效率,本文設計了一種SpaceFibre路由器結構,該結構采用多模式包頭識別狀態機以支持組自適應路由和數據包多播功能,利用并行映射降低了VC-VN映射延時,通過可重構混合機制仲裁器增加了仲裁方式的多樣性、降低了硬件資源消耗。
SpaceFibre的虛擬通道為雙向,用于緩存和傳輸數據。雙向VC分別稱為輸入VC和輸出VC,輸入虛擬通道是指到達路由器方向的通路,反之為輸出VC。SpaceFibre路由器使用的是基于靜態路由表的蟲孔交換方式[3],主要用于將數據包和廣播消息從輸入端口的輸入VC傳輸到輸出端口的VC。輸入端口的輸入虛擬通道,以下簡稱為輸入端口虛擬通道。相應地,輸出端口的輸出虛擬通道,簡稱為輸出端口虛擬通道。當數據包到達輸入端口VC時,該數據包在網絡中的虛擬網絡號已由該VC確定。在SpaceFibre網絡中,數據包只能在具有相同虛擬網絡號的VC之間傳輸,每個VN類獨立運行、互不干擾。此外,協議規定同一端口不同虛擬通道的虛擬網絡號互不相同。
SpaceFibre協議規定數據包的長度可以為任意大小,其數據包由地址段、數據包內容和數據包結束標志或數據包錯誤結束字符組成,該數據包格式與SpaceWire相同。
采用路徑尋址方式時,輸出端口是由數據包的首地址決定的,經過VC-VN映射可直接進行仲裁連接,無需訪問路由表。仲裁連接建立后,需要刪除數據包的首地址再進行數據發送。
當數據包的地址段為邏輯地址時,需要經過訪問路由表獲取物理地址、VC-VN映射、仲裁連接和包頭刪除等操作。若邏輯尋址從路由表獲取多個輸出端口,則查詢該邏輯地址對應多播還是組自適應路由功能。對于具有組自適應路由功能的路由器來說,數據包首先訪問路由表獲取物理地址,然后查詢每個輸出端口中處于同一VN的虛擬通道的占用狀態,最后在空閑的虛擬通道中建立連接。進行多播操作時,路由器首先從路由表中獲取物理地址,然后查詢每個輸出端口中相應虛擬通道的占用狀態,僅當所有端口中相應VC為空閑態時才發送數據。
同一VN中有多個VC同時發出請求時,需要使用仲裁機制來實現請求的篩選。協議中對路由器的仲裁機制沒有強制約束,目前產品[5-8]使用輪詢仲裁或基于雙優先級的輪詢仲裁。
圖1為SpaceFibre路由器整體架構,該路由器主要由內部配置模塊、路由表控制模塊、VC-VN并行映射模塊、全相連交換矩陣模塊、廣播控制模塊和SpaceFibre編解碼器模塊構成。m個SpaceFibre編解碼器模塊在SpaceFibre路由器中被稱為端口并被記為Port0~Portm-1。 每個端口包含n條VC。該架構不局限于具體的端口數目和虛擬通道數目,可根據實際應用需求進行數目選擇,具有一定的可擴展性。

圖1 SpaceFibre路由器整體架構
內部配置模塊主要用于路由表、VC-VN映射表和各端口虛擬通道寄存器的存取操作,上位機可通過該模塊實時地配置路由參數、映射參數和反饋路由狀態。路由表控制模塊主要功能是配置、存儲和反饋路由信息。VC-VN并行映射模塊實現VC-VN映射表的配置、存儲和讀取操作。路由表和VC-VN映射表的配置都在是內部配置模塊的控制下完成的,已配置的路由信息和映射信息分別存儲在路由表中和VC-VN映射表中。
全相連交換矩陣模塊是一種無阻塞的全相連結構。由于VC-VN映射是可配置的,所以全相連結構不僅包含端口之間,還包含各端口的虛擬通道之間。該模塊主要包含若干多模式包頭識別模塊和可重構仲裁連接模塊。包頭識別模塊對輸入端口VC的數據包進行包頭解析并發出仲裁請求信號。請求信號傳送至仲裁連接模塊后,仲裁連接模塊按照仲裁機制選擇合適的VC進行仲裁響應。包頭識別模塊接收到仲裁響應信號時,發出仲裁確認信號。仲裁連接模塊接收到仲裁確認信號后,建立輸出端口VC與輸入端口VC之間的連接以進行數據包傳輸。
SpaceFibre技術在網絡層與SpaceWire[9]向后兼容,所以在尋址過程中虛擬網絡和虛擬通道的概念對數據包來說是透明的,即數據包地址信息的最小粒度為端口。因此,數據包到達輸入端口VC后,需經過VC-VN映射才能在虛擬網絡中傳輸。
在FPGA中寄存器資源比較寶貴,所以采用RAM進行VC-VN映射信息的存儲,采用這種方式,無需占用觸發器資源即可實現映射表的讀寫操作。若路由器包含m個端口,每個端口有n條虛擬通道,則所需RAM大小為 (mn)×1, RAM中每一行記錄的是本端口各VC對應的VN號。
圖2為VC-VN串行映射方式[4-8],該方式的設計原理為:路由器中所有端口的VC-VN映射信息均存儲于大小為 (mn)×1的單一RAM塊中。該方案,同一時刻至多允許某一端口的單條虛擬通道進行映射表的訪問操作,當前映射操作完成后才可進行下一次操作。多個端口請求訪問映射表時,各端口按照端口編號遞增的順序依次獲取映射表的訪問權。同一端口的多條虛擬通道同時請求訪問映射表時,編號較小的先于編號較大的VC進行訪問。在極端情況下, Portm-1的虛擬通道n-1需要等待mn個時鐘周期才能獲得VC-VN映射表的訪問權。

圖2 VC-VN串行映射
VC-VN映射的速度直接影響路由器對到達數據包的響應速度,進而影響有效載荷通信的性能。為降低VC-VN映射延時,本文提出了如圖3所示的VC-VN并行映射方案。該方案的設計原理為:按端口編號將整個路由器的VC-VN映射信息進行劃分,每個目的端口的VC-VN映射表分別存儲在容量為n×1的m個RAM塊中;該方案中,每個RAM對應的讀信號為相應目的端口各虛擬通道的讀請求信號相或;當目的端口映射表的讀信號有效時,地址信號不斷加1,否則地址信號保持不變。同一時刻不同輸入端口可并行訪問不同目的端口的映射表,不同目的端口映射表的讀取操作互不影響,降低了路由器的響應延時。多個輸入端口虛擬通道同時請求訪問同一輸出端口的映射表時,任一輸入端口虛擬通道獲得該輸出端口映射表的訪問權,其它輸入端口虛擬通道均可使用該輸出端口VC-VN映射表所讀出的虛擬網絡信息。該方案有效避免了頻繁訪問映射表的問題,提高了映射表的讀取效率。在極端情況下,輸入端口VC最大等待時間為n個時鐘周期。

圖3 VC-VN并行映射
因此,在占用相同RAM資源的基礎上,VC-VN并行映射降低了多端口訪問映射表的沖突概率,加快了虛擬通道與虛擬網絡間的映射速度,降低了SpaceFibre路由器生成仲裁請求信號的延時,提高了路由器的響應速度。
SpaceFibre路由器端口的每條輸入虛擬通道都配置了多模式包頭識別模塊。數據包到達輸入端口虛擬通道后,該模塊首先識別包頭地址類型,然后生成該數據包的仲裁請求信號和優先級信號,輸出到相應輸出端口虛擬通的仲裁連接模塊。在接收到仲裁連接模塊的仲裁響應信號后,該模塊對仲裁響應信號進行判讀,發送仲裁確認信號并選擇相應輸出端口虛擬通道進行數據傳輸。傳輸數據時,該模塊將輸入端口虛擬通道緩沖區中的數據字依次傳輸至輸出端口的虛擬通道緩沖區。
包頭識別模塊的主要功能由圖4所示的多模式包頭識別狀態機實現,該態機包含空閑態、包頭尋找態、邏輯尋址態、VC-VN映射態、請求生成態、仲裁等待態、仲裁成功態、數據發送態和異常態共9種狀態。考慮到可靠性設計因素,該狀態機待機情況下處于空閑態,該狀態主要用于初始化的處理。當相應輸入虛擬通道緩沖區為非空時,該狀態機進入包頭尋找態。

圖4 多模式包頭識別狀態機
在包頭尋找狀態,若數據包的首地址為物理地址,則直接進入VC-VN映射態,進行VC-VN映射;若為邏輯尋址,則進入邏輯尋址態。在邏輯尋址態,狀態機根據數據包的首地址在路由表中獲取相應物理地址和優先級信息。本設計中的路由表存儲格式如圖5所示,0至m-1比特區間為物理地址信息段。若該比特區間某位為1,則表示相應端口為數據包的輸出端口。第m位為多播標志位,若該位為1則表示當前地址支持多播功能,否則表示不支持。 [m+1,m+k] 區間段表示數據包優先級信息,該區間段的數值越大相應的優先級越高。其中,k(k≥1) 為優先級信號的比特數。m+1+k位為保留位,用于路由器功能的擴展。最高位為非法地址標志位,用于指示非法的地址信息。若路由器的端口數目為4且數據包的路由信息為1AH,則該信息表示此數據包需進行目的端口為端口1和3的多播操作。

圖5 路由表存儲格式
由于存在VC-VN映射態,該狀態機僅對處于同一VN的輸出端口虛擬通道生成仲裁請求,仲裁連接模塊無需對屬于非相同虛擬網絡的仲裁請求進行屏蔽,避免了仲裁連接模塊的二次判斷,簡化了仲裁連接模塊的結構,減少了硬件資源的消耗。
該狀態機在請求生成態可直接進入仲裁等待態。在非多播模式下,只要有輸出端口生成仲裁響應信號,即可進入仲裁成功態。在多播功能中,僅當所請求的全部輸出端口生成仲裁響應信號,包頭識別狀態機才可以從仲裁等待態進入仲裁成功態。狀態機進入仲裁成功態后,進行優先級信號和仲裁請求信號的清除并轉入數據發送態。當接受到數據包結束字時,狀態機回到空閑態以確保正常運轉。
為避免由于設備故障而導致的狀態機長期處于仲裁等待狀態的情況,多模式包頭識別模塊中包含虛擬通道超時機制。當仲裁等待狀態持續時間到達規定時長,則狀態機自動退出該狀態進入異常態。狀態機進入異常態后,進行刪除數據包操作并向上位機記錄、反饋錯誤信息。
相比其它路由器[5-7]中類似功能的模塊,多模式包頭識別狀態機可使用較少的工作狀態支持路徑尋址、邏輯尋址、組自適應路由功能和數據包多播功能。該狀態機僅對相同VN中的輸出端口虛擬通道生成仲裁請求,簡化了仲裁連接模塊的邏輯。VC超時機制的加入,增加了該狀態機的可靠性。
可重構仲裁連接模塊的主體是一種可重構混合機制仲裁器,每條輸出虛擬通道均包含該仲裁器。當檢測到包頭識別模塊發送的仲裁請求信號后,該模塊結合輸入的優先級信息發起仲裁操作,仲裁結果作為仲裁響應信號返回包頭識別模塊。當接收到來自包頭識別模塊的仲裁確認信號后,該模塊將相應的輸入端口VC和輸出端口VC進行連接,直至緩沖區中的數據全部輸出。傳輸結束后,該模塊進行輸入端口虛擬通道的優先級輪轉,為下次的仲裁操作做準備。
若同一虛擬網絡中數據源較多且緊急程度各不相同,僅使用輪詢仲裁或雙優先級仲裁是不能滿足應用需求的。因此,該仲裁器采用基于多優先級的輪詢仲裁方案。輪詢仲裁功能通過仲裁使能窗口實現[10],輪詢仲裁機制中編號較小的端口優先獲得數據發送權。當請求信號的輸入優先級不同時,首先響應高優先級的仲裁請求,待高優先級的數據傳輸結束后,再響應優先級較低的端口請求。多優先級仲裁機制中共支持2k(k≥1) 個優先級,實現上述功能的仲裁單元如圖6所示。requ_in為輸入的仲裁請求信號,enable為仲裁窗口使能信號,pri_in為kbit輸入端口虛擬通道的優先級信號,pri_h為kbit輸出端口的優先級信號。若pri_h的某一位為1且pri_in的相應比特位為0,則該請求信號被屏蔽。當且僅當仲裁窗口使能信號和仲裁請求信號有效,pri_h的每bit位均與pri_in相應比特位相同,請求輸出信號grant_out為有效狀態。當高優先級數據包發送完成,pri_h的值需要根據當前最高優先級進行更新。若k=2, 則路由器中共存在4個優先級:0、1、2與3,此時pri_h為2比特11。假設優先級為2的端口進入多優先級仲裁單元且requ_in、enable均置位,由于pri_h的最低bit位與pri_in相應比特位相異,此端口請求信號被屏蔽。當具有最高優先級3的相應端口數據發送完畢后,路由器更新pri_h 為2比特10,優先級為2的端口獲得仲裁響應信號。

圖6 多優先級仲裁單元
由于交叉矩陣是全相連的,每個仲裁器中均需包含 (m-1)mn2個多優先級仲裁單元。若采用傳統的仲裁器,則整個路由器共包含 (m-1)m2n3個仲裁單元。當端口數目較大或端口所包含的虛擬通道數目較多時,傳統仲裁器[5-7,10]的硬件資源占用率會顯著增加。為降低硬件資源的消耗,本設計根據SpaceFibre虛擬網絡的特點,提出了一種可重構仲裁器。根據VC-VN映射表,該仲裁器可改變全相連交叉矩陣的內部結構和仲裁單元相互之間的連接關系,僅包含與本仲裁模塊處于相同虛擬網絡的m個仲裁單元。至多整個交叉開關矩陣僅需包含m2n個仲裁單元,該結構顯著降低了仲裁單元的數目,有效簡化了仲裁模塊的組合邏輯。由于減少了仲裁單元的數目,仲裁器僅需判斷至多m個仲裁單元即可產生仲裁響應信號,可有效降低最大仲裁延時。
圖7為可重構仲裁器,圖中箭頭的左側為仲裁單元構成的全相連交叉矩陣。假設端口1虛擬通道1對應的仲裁模塊等待重構,當路由器的VC-VN映射表配置完成后,可重構仲裁器根據映射信息在全相連交叉矩陣中選擇與Port1的VC1處于同一VN的仲裁單元。

圖7 可重構仲裁器
因此,相比傳統仲裁器[5-7,10],可重構混合機制仲裁器中全相連交叉矩陣的仲裁單元數目由 (m-1)m2n3減少至m2n, 有效降低了資源占用率,提高了整個路由器的工作頻率。該模塊采用基于多優先級的輪詢仲裁方式,該仲裁方式實現簡單、擴展性強且應用范圍較廣。
在Vivado 2017.4開發環境中,使用Verilog硬件描述語言對上述路由器進行RTL級描述并建立仿真平臺以驗證其功能的正確性。驗證過程中路由器共支持4個優先級,端口數目和虛擬通道數目均為4。所有端口的VC0均屬于VN0,VN1包含所有端口的VC1,任意端口的VC2均屬于VN2,所有端口的VC3虛擬網絡編號均為3。實驗過程中的路由表信息見表1。

表1 虛擬網絡參數
圖8為VC-VN并行映射仿真結果,仿真過程中輸入端口0的VC1和VC3、輸入端口2虛擬通道1同時訪問目的端口1的映射表,輸入端口3的VC2訪問目的端口2映射表。圖8中組1、組2分別對應端口0的兩虛擬通道,組3和組4依次對應端口2和端口3。映射延時是指從映射使能信號en_ram生成到映射成功信號flag_find置位的時間。

圖8 VC-VN并行映射仿真結果
觀察組1和組3波形圖可知:不同輸入端口0和端口2同時請求訪問目的端口1的映射表時,若端口0的VC1獲得輸出端口1映射表的訪問權,輸入端口2可共享輸出端口1的VC-VN映射表信息data_ram1,端口2僅需2個時鐘周期即可完成VC-VN映射操作,無需等待輸入端口0映射完畢后再獲得映射表訪問權。對比組1和組4可知,不同目的端口的輸入端口0和端口3可并行進行VC-VN映射操作且互不影響。觀察組2可知,當輸入端口的虛擬通道映射信息存儲在相應映射表的末尾位置時,VC-VN并行映射方案的映射延時最大,最大映射周期為4個時鐘周期。因此,VC-VN并行映射方案可同時進行多個VC-VN映射操作,有效降低各端口的VC-VN映射時間。
圖9為仲裁響應仿真結果,仿真過程中輸入端口0的VC1、VC2和VC3數據包地址分別為25H、29H和02H,Port3的VC2數據包地址為21H。圖9中組1~組4與上述輸入端口的虛擬通道一一對應。仲裁延時是指路由器從仲裁請求信號requ_arb生成到仲裁響應信號grant_tx產生的時間間隔。觀察圖9中各組波形圖可知:在組自適應尋址、多播、路徑尋址和邏輯尋址中,可重構仲裁機制均可在3個時鐘周期內完成仲裁響應。相比傳統仲裁器[5-7,10],可重構仲裁器縮短了2~6個時鐘周期,有效降低了仲裁延時。

圖9 仲裁響應仿真結果
對該路由器的仿真包含以下測試項目:路徑尋址、邏輯尋址的單路數據包交換;路徑尋址、邏輯尋址多路地址不沖突的數據包交換;路徑尋址、邏輯尋址多路地址沖突的交換測試;帶優先級的路徑尋址、邏輯尋址多路地址沖突的數據包交換測試;帶端口占用的、無端口占用的組自適應路由測試;無端口占用的、帶端口占用的多播功能測試;邏輯地址錯誤測試;VC-VN映射錯誤測試;仲裁等待超時測試;廣播幀測試。由于篇幅限制,僅對帶優先級的路徑尋址多路地址沖突的數據包交換測試和帶端口占用的多播功能測試的仿真結果進行分析。
帶優先級的路徑尋址多路地址沖突測試中,輸入端口0的VC3、輸入端口2的VC3和輸入端口3的VC3均有數據包達到且數據包首地址均指向端口1。端口0的優先級為0,端口2和端口3的優先級分別為2和3。圖10為該測試的功能仿真結果,仿真波形自上至下依次為端口0、2、3和輸出端口1的相應虛擬通道緩沖區輸出數據。從波形圖中可以看出,Port1的虛擬通道3按照優先級遞減的順序依次接收來自輸入端口3、2和1的數據包??梢?,該路由器實現了多優先級仲裁功能且在接收過程中完成了數據包的首地址刪除操作。

圖10 帶優先級的路徑尋址多路地址沖突仿真結果
圖11為帶端口占用的多播測試的功能仿真結果。在該測試中,輸入端口0的VC3中到達的數據包向輸出端口1和輸出端口3進行多播,輸入端口2的VC3數據包先于端口0的數據包到達輸出端口1。從仿真波形中可看出,輸入端口2數據包的首地址為邏輯地址且到達時間早于端口0,輸出端口1首先傳輸來自輸入端口2的數據包。輸入端口0的數據包在等待輸出端口1解除占用后,進行輸出端口1和輸出端口3的多播操作。因此,該路由器實現了數據包的多播操作。

圖11 帶端口占用的多播功能仿真結果
在XILINX型號為XC7Z100FFG900-2的FPGA上進行了實現并進行布局布線后時序仿真。仿真結果表明,上述測試項的結果均正確,進一步驗證了本設計功能的正確性。與相同平臺的相同功能路由器設計方案[8]相比,本設計中的寄存器資源由1.7%下降至0.5%,查找表資源由5.9%降低至2.02%,最高時鐘頻率由205.3 MHz提升至240.96 MHz。
本文提出了一種功能完備的低延時可重構SpaceFibre路由器設計方案,該方案通過VC-VN映射,提高了映射效率;該方案利用多模式包頭識別狀態機滿足了不同尋址方式的應用需求;該方案采用可重構混合機制仲裁器,簡化了硬件邏輯,兼顧了數據傳輸的公平性與優先性。在型號為XC7Z100FFG900-2的FPGA上對該設計進行了實現,實驗結果表明:該設計符合SpaceFibre協議標準;相比具有相同功能和實現平臺的其它方案,該方案寄存器資源和查找表資源的占用率顯著下降,最大工作頻率有所提高,具有良好的高效性、可靠性和工程實用性。