揚州萬方電子技術有限責任公司 陶 婭
異構計算多單元的網絡數據分配多在系統及軟件層面解決,這就導致計算單元種類或數量較多的情況下適配困難、花費大等問題。為此,提出基于FPGA的異構計算單元數據動態分配控制器及其方法,該控制器以FPGA為核心輔以外設資源及配套軟件,利用FPGA的并行優勢,進行網絡數據的分組、擁堵、隊列管理,最終實現異構計算單元的數據動態分配,為異構計算單元間的融合提供參考和支撐。
多計算單元服務器(又稱多單元服務器)具有性能強大,并行計算能力強的特點,是計算服務器發展的趨勢。其目前采用獨立的網絡處理單元(NPU)進行數據預處理,但其只作用于數據輸入端,對數據輸出端的處理尚未完善,尤其是在異構單元接口類型不一的情況。
為了解決上述問題,在實際設計中硬件層面通常采用獨立NPU以及為各計算單元配備獨立數據通道的方式實現,由各個通道接入NPU;軟件層面中數據流量控制由操作系統協同各個計算單元自主控制。如山東超越數控電子有限公司的趙瑞東等(CN201710520154)為了解決異構計算機間通信的問題,引入了OpenCL計算語言,增加了開發周期,且其獲取數據處理信息是由其中一個計算單元綜合各計算單元上報結果處理后再進行數據分配,處理周期長,增加開發成本。
如按照現有方法和手段必然會導致硬件電路設計復雜,軟件開發工作難度大,繼而拖慢產品研發周期,降低產品競爭力。
為解決上述問題,利用FPGA并行計算能力強的特點,結合IP核技術,提出基于FPGA的異構計算單元數據動態分配控制器及方法。
FPGA具備并行能力強的特點,廣泛應用于通信、計算機等領域,為此基于FPGA輔以外設及配套軟件進行異構計算單元的數據動態分配控制。
該基于FPGA的異構計算單元數據動態分配控制器及方法,包括基于FPGA構建的控制器及配套軟件算法。
該控制器,以FPGA為核心,外設資源包括用于數據緩存的RAM、用于存放啟動數據的NandFlash、用于與異構計算單元做數據交換的RAM及RAM控制器、用于與異構計算單元直接相連的計算單元接口板、用于故障及配置信息輸出的串口。具體硬件整體架構如圖1所示。

圖1 基于FPGA的異構計算單元數據動態分配控制器硬件框架
外設資源中用于數據緩存的RAM是按照規則對交互數據進行分組排序后用于存放優先級較低的數據,該RAM支持擴展,可通過更換不同的RAM控制器及接口便捷的完成升級。
外設資源中與FPGA連接的NandFlash是存放FPGA啟動代碼及數據分組算法的存儲芯片,其中數據分組算法包括分類協處理、策略引擎、業務流量管理三個部分。
外設資源中RAM及RAM控制器用于異構計算單元數據交換的緩存及流量偵測,異構計算單元通過計算單元接口板與RAM控制器相連,RAM控制器另一端與FPGA相連,FPGA內置的IP核用于模擬各類型計算單元的交互接口協議。RAM控制器能夠在與其相連的RAM內開辟一個可變容量的環形通道和一個直通通道,環形通道用于計算單元的數據輸入,該環形通道能夠改變緩沖區大小,RAM控制器能輸出使用者也就是計算單元所在環形通道內的地址及空閑區地址信號;直通通道用于輸出計算單元計算結果數據。其與計算單元數量為一對一的關系。
如上所述的計算單元接口板是具備多種硬件接口,如現有的CPCI、PCIE、PCI、VPX、MXM接口,各接口的協議及其驅動由FPGA內集成的IP核提供,可通過增刪改接口的接插件及IP內核便捷的實現異構計算單元的接入。FPGA內的IP核為各計算單元接口提供驅動,各單元調度信息模塊能夠向多單元服務器的主計算單元提供各計算單元的調度信息,調度信息包括計算當前計算吞吐量、峰值吞吐量、主要數據分組類別、RAM空閑區,可供主計算單元協同異構計算單元進行數據運算提供支撐。
處于核心位置的FPGA能夠連接外置RAM、RAM及RAM控制器、NandFlash,具有統一的數據接口與外部系統相連。FPGA內的IP核為各計算單元接口提供驅動,各單元調度信息模塊能夠向多單元服務器的主計算單元提供各計算單元的調度信息,調度信息包括計算當前計算吞吐量、峰值吞吐量、主要數據分組類別、RAM空閑區,調度信息能夠為FPGA調整RAM及RAM控制器的帶寬提供依據。
與該控制器相配合的方法按照如下步驟執行:
步驟1):FPGA上電,讀入NandFlash內的配置文件,完成RAM、RAM及RAM控制器、串口、IP內核初始化;
步驟2):檢測FPGA初始化配置結果信號,如果初始化成功則獲取異構計算單元的接口類型及接口數量信息并執行下一步,否則通過串口輸出故障代碼信息并轉到步驟1);
步驟3):讀入NandFlash內的數據分組規則,完成支撐數據分組的分類協處理、策略引擎、業務流量管理三模塊初始化,根據步驟2)所獲取的接口類型及接口數量信息完成核心的策略算法、擁堵管理算法、調度算法的參數調整,等待外部數據交互;
步驟4):進行外部接入數據的處理,按照分組規則進行數據分組,優先級低的數據由FPGA接收后暫存在RAM中等待取用,優先高的數據由FPGA直接供給RAM及RAM控制器,并經計算單元接口板與計算單元進行交互,獲取RAM控制器提供的空閑區地址及使用者地址信號,經計算獲取到周期時間內計算單元數據取用量,動態調整環形分區大小及各計算單元的數據帶寬、分組規則,并向主計算單元提供各計算單元的調度信息,調度信息包括計算當前計算吞吐量、峰值吞吐量、主要數據分組類別、RAM空閑區。執行步驟4)直到數據交互結束。
其中步驟3)中將數據分類為音頻數據、視頻數據、業務數據和其他數據,其中業務數據可根據具體業務細分。
其中步驟3)中策略算法選擇令牌桶算法;擁堵管理算法選擇加權隨機早期檢測算法;調度算法選擇加權公平隊列算法。
具體執行流程如圖2所示。
OPEN CL是一個面向異構系統通用編程的標準及編程環境,其是一個純軟件系統,需要先在系統中啟動然后進行數據分配及協同操作。為此針對某型異構計算單元進行開發,從啟動時間、大數據通信、高頻突發通信三個個指標進行分析對比。
通過實測分析,啟動時間與計算單元的數量之間的關系為:隨著個數的增加基于OpenCL開發的異構計算分配系統在各系統上存在啟動時間增加的情況,且增加的時間與異構的處理器還有一定的關系,并不是一個線性的增長過程,而本控制器對系統啟動的影響微乎其微。
通過實測分析,大數據通信性能關系為:open CL處理數據分配讓異構單元分出資源進行處理,占用了一定的資源,而本方案將處理部分下移至FPGA,通信數據量對異構計算單元的資源影響微乎其微,但數據量過大時FPGA也存在性能不足的可能。
通過實測分析,高頻突發通信性能關系為:open CL處理數據分配讓異構單元分出資源進行處理,占用了一定的資源,隨著頻率的提高占用資源越多。本方案幾乎不占用異構計算單元的資源,尤其是在小數據量多目標情況下效果更優。

圖2 基于FPGA的異構計算單元數據動態分配方法流程
本方案能夠為異構多計算單元提供交互數據,能夠在底層進行數據流量的管理,避免操作系統層的改動,減少硬件電路,增強整個系統的穩定性,兼容性好,適用范圍廣;控制器內各模塊耦合程度低,可根據性能需要進行升級、擴展,具備廣闊的應用前景。