揚(yáng)州萬方電子技術(shù)有限責(zé)任公司 陶 婭
異構(gòu)計(jì)算多單元的網(wǎng)絡(luò)數(shù)據(jù)分配多在系統(tǒng)及軟件層面解決,這就導(dǎo)致計(jì)算單元種類或數(shù)量較多的情況下適配困難、花費(fèi)大等問題。為此,提出基于FPGA的異構(gòu)計(jì)算單元數(shù)據(jù)動(dòng)態(tài)分配控制器及其方法,該控制器以FPGA為核心輔以外設(shè)資源及配套軟件,利用FPGA的并行優(yōu)勢,進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的分組、擁堵、隊(duì)列管理,最終實(shí)現(xiàn)異構(gòu)計(jì)算單元的數(shù)據(jù)動(dòng)態(tài)分配,為異構(gòu)計(jì)算單元間的融合提供參考和支撐。
多計(jì)算單元服務(wù)器(又稱多單元服務(wù)器)具有性能強(qiáng)大,并行計(jì)算能力強(qiáng)的特點(diǎn),是計(jì)算服務(wù)器發(fā)展的趨勢。其目前采用獨(dú)立的網(wǎng)絡(luò)處理單元(NPU)進(jìn)行數(shù)據(jù)預(yù)處理,但其只作用于數(shù)據(jù)輸入端,對數(shù)據(jù)輸出端的處理尚未完善,尤其是在異構(gòu)單元接口類型不一的情況。
為了解決上述問題,在實(shí)際設(shè)計(jì)中硬件層面通常采用獨(dú)立NPU以及為各計(jì)算單元配備獨(dú)立數(shù)據(jù)通道的方式實(shí)現(xiàn),由各個(gè)通道接入NPU;軟件層面中數(shù)據(jù)流量控制由操作系統(tǒng)協(xié)同各個(gè)計(jì)算單元自主控制。如山東超越數(shù)控電子有限公司的趙瑞東等(CN201710520154)為了解決異構(gòu)計(jì)算機(jī)間通信的問題,引入了OpenCL計(jì)算語言,增加了開發(fā)周期,且其獲取數(shù)據(jù)處理信息是由其中一個(gè)計(jì)算單元綜合各計(jì)算單元上報(bào)結(jié)果處理后再進(jìn)行數(shù)據(jù)分配,處理周期長,增加開發(fā)成本。
如按照現(xiàn)有方法和手段必然會(huì)導(dǎo)致硬件電路設(shè)計(jì)復(fù)雜,軟件開發(fā)工作難度大,繼而拖慢產(chǎn)品研發(fā)周期,降低產(chǎn)品競爭力。
為解決上述問題,利用FPGA并行計(jì)算能力強(qiáng)的特點(diǎn),結(jié)合IP核技術(shù),提出基于FPGA的異構(gòu)計(jì)算單元數(shù)據(jù)動(dòng)態(tài)分配控制器及方法。
FPGA具備并行能力強(qiáng)的特點(diǎn),廣泛應(yīng)用于通信、計(jì)算機(jī)等領(lǐng)域,為此基于FPGA輔以外設(shè)及配套軟件進(jìn)行異構(gòu)計(jì)算單元的數(shù)據(jù)動(dòng)態(tài)分配控制。
該基于FPGA的異構(gòu)計(jì)算單元數(shù)據(jù)動(dòng)態(tài)分配控制器及方法,包括基于FPGA構(gòu)建的控制器及配套軟件算法。
該控制器,以FPGA為核心,外設(shè)資源包括用于數(shù)據(jù)緩存的RAM、用于存放啟動(dòng)數(shù)據(jù)的NandFlash、用于與異構(gòu)計(jì)算單元做數(shù)據(jù)交換的RAM及RAM控制器、用于與異構(gòu)計(jì)算單元直接相連的計(jì)算單元接口板、用于故障及配置信息輸出的串口。具體硬件整體架構(gòu)如圖1所示。
圖1 基于FPGA的異構(gòu)計(jì)算單元數(shù)據(jù)動(dòng)態(tài)分配控制器硬件框架
外設(shè)資源中用于數(shù)據(jù)緩存的RAM是按照規(guī)則對交互數(shù)據(jù)進(jìn)行分組排序后用于存放優(yōu)先級較低的數(shù)據(jù),該RAM支持?jǐn)U展,可通過更換不同的RAM控制器及接口便捷的完成升級。
外設(shè)資源中與FPGA連接的NandFlash是存放FPGA啟動(dòng)代碼及數(shù)據(jù)分組算法的存儲(chǔ)芯片,其中數(shù)據(jù)分組算法包括分類協(xié)處理、策略引擎、業(yè)務(wù)流量管理三個(gè)部分。
外設(shè)資源中RAM及RAM控制器用于異構(gòu)計(jì)算單元數(shù)據(jù)交換的緩存及流量偵測,異構(gòu)計(jì)算單元通過計(jì)算單元接口板與RAM控制器相連,RAM控制器另一端與FPGA相連,F(xiàn)PGA內(nèi)置的IP核用于模擬各類型計(jì)算單元的交互接口協(xié)議。RAM控制器能夠在與其相連的RAM內(nèi)開辟一個(gè)可變?nèi)萘康沫h(huán)形通道和一個(gè)直通通道,環(huán)形通道用于計(jì)算單元的數(shù)據(jù)輸入,該環(huán)形通道能夠改變緩沖區(qū)大小,RAM控制器能輸出使用者也就是計(jì)算單元所在環(huán)形通道內(nèi)的地址及空閑區(qū)地址信號(hào);直通通道用于輸出計(jì)算單元計(jì)算結(jié)果數(shù)據(jù)。其與計(jì)算單元數(shù)量為一對一的關(guān)系。
如上所述的計(jì)算單元接口板是具備多種硬件接口,如現(xiàn)有的CPCI、PCIE、PCI、VPX、MXM接口,各接口的協(xié)議及其驅(qū)動(dòng)由FPGA內(nèi)集成的IP核提供,可通過增刪改接口的接插件及IP內(nèi)核便捷的實(shí)現(xiàn)異構(gòu)計(jì)算單元的接入。FPGA內(nèi)的IP核為各計(jì)算單元接口提供驅(qū)動(dòng),各單元調(diào)度信息模塊能夠向多單元服務(wù)器的主計(jì)算單元提供各計(jì)算單元的調(diào)度信息,調(diào)度信息包括計(jì)算當(dāng)前計(jì)算吞吐量、峰值吞吐量、主要數(shù)據(jù)分組類別、RAM空閑區(qū),可供主計(jì)算單元協(xié)同異構(gòu)計(jì)算單元進(jìn)行數(shù)據(jù)運(yùn)算提供支撐。
處于核心位置的FPGA能夠連接外置RAM、RAM及RAM控制器、NandFlash,具有統(tǒng)一的數(shù)據(jù)接口與外部系統(tǒng)相連。FPGA內(nèi)的IP核為各計(jì)算單元接口提供驅(qū)動(dòng),各單元調(diào)度信息模塊能夠向多單元服務(wù)器的主計(jì)算單元提供各計(jì)算單元的調(diào)度信息,調(diào)度信息包括計(jì)算當(dāng)前計(jì)算吞吐量、峰值吞吐量、主要數(shù)據(jù)分組類別、RAM空閑區(qū),調(diào)度信息能夠?yàn)镕PGA調(diào)整RAM及RAM控制器的帶寬提供依據(jù)。
與該控制器相配合的方法按照如下步驟執(zhí)行:
步驟1):FPGA上電,讀入NandFlash內(nèi)的配置文件,完成RAM、RAM及RAM控制器、串口、IP內(nèi)核初始化;
步驟2):檢測FPGA初始化配置結(jié)果信號(hào),如果初始化成功則獲取異構(gòu)計(jì)算單元的接口類型及接口數(shù)量信息并執(zhí)行下一步,否則通過串口輸出故障代碼信息并轉(zhuǎn)到步驟1);
步驟3):讀入NandFlash內(nèi)的數(shù)據(jù)分組規(guī)則,完成支撐數(shù)據(jù)分組的分類協(xié)處理、策略引擎、業(yè)務(wù)流量管理三模塊初始化,根據(jù)步驟2)所獲取的接口類型及接口數(shù)量信息完成核心的策略算法、擁堵管理算法、調(diào)度算法的參數(shù)調(diào)整,等待外部數(shù)據(jù)交互;
步驟4):進(jìn)行外部接入數(shù)據(jù)的處理,按照分組規(guī)則進(jìn)行數(shù)據(jù)分組,優(yōu)先級低的數(shù)據(jù)由FPGA接收后暫存在RAM中等待取用,優(yōu)先高的數(shù)據(jù)由FPGA直接供給RAM及RAM控制器,并經(jīng)計(jì)算單元接口板與計(jì)算單元進(jìn)行交互,獲取RAM控制器提供的空閑區(qū)地址及使用者地址信號(hào),經(jīng)計(jì)算獲取到周期時(shí)間內(nèi)計(jì)算單元數(shù)據(jù)取用量,動(dòng)態(tài)調(diào)整環(huán)形分區(qū)大小及各計(jì)算單元的數(shù)據(jù)帶寬、分組規(guī)則,并向主計(jì)算單元提供各計(jì)算單元的調(diào)度信息,調(diào)度信息包括計(jì)算當(dāng)前計(jì)算吞吐量、峰值吞吐量、主要數(shù)據(jù)分組類別、RAM空閑區(qū)。執(zhí)行步驟4)直到數(shù)據(jù)交互結(jié)束。
其中步驟3)中將數(shù)據(jù)分類為音頻數(shù)據(jù)、視頻數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)和其他數(shù)據(jù),其中業(yè)務(wù)數(shù)據(jù)可根據(jù)具體業(yè)務(wù)細(xì)分。
其中步驟3)中策略算法選擇令牌桶算法;擁堵管理算法選擇加權(quán)隨機(jī)早期檢測算法;調(diào)度算法選擇加權(quán)公平隊(duì)列算法。
具體執(zhí)行流程如圖2所示。
OPEN CL是一個(gè)面向異構(gòu)系統(tǒng)通用編程的標(biāo)準(zhǔn)及編程環(huán)境,其是一個(gè)純軟件系統(tǒng),需要先在系統(tǒng)中啟動(dòng)然后進(jìn)行數(shù)據(jù)分配及協(xié)同操作。為此針對某型異構(gòu)計(jì)算單元進(jìn)行開發(fā),從啟動(dòng)時(shí)間、大數(shù)據(jù)通信、高頻突發(fā)通信三個(gè)個(gè)指標(biāo)進(jìn)行分析對比。
通過實(shí)測分析,啟動(dòng)時(shí)間與計(jì)算單元的數(shù)量之間的關(guān)系為:隨著個(gè)數(shù)的增加基于OpenCL開發(fā)的異構(gòu)計(jì)算分配系統(tǒng)在各系統(tǒng)上存在啟動(dòng)時(shí)間增加的情況,且增加的時(shí)間與異構(gòu)的處理器還有一定的關(guān)系,并不是一個(gè)線性的增長過程,而本控制器對系統(tǒng)啟動(dòng)的影響微乎其微。
通過實(shí)測分析,大數(shù)據(jù)通信性能關(guān)系為:open CL處理數(shù)據(jù)分配讓異構(gòu)單元分出資源進(jìn)行處理,占用了一定的資源,而本方案將處理部分下移至FPGA,通信數(shù)據(jù)量對異構(gòu)計(jì)算單元的資源影響微乎其微,但數(shù)據(jù)量過大時(shí)FPGA也存在性能不足的可能。
通過實(shí)測分析,高頻突發(fā)通信性能關(guān)系為:open CL處理數(shù)據(jù)分配讓異構(gòu)單元分出資源進(jìn)行處理,占用了一定的資源,隨著頻率的提高占用資源越多。本方案幾乎不占用異構(gòu)計(jì)算單元的資源,尤其是在小數(shù)據(jù)量多目標(biāo)情況下效果更優(yōu)。
圖2 基于FPGA的異構(gòu)計(jì)算單元數(shù)據(jù)動(dòng)態(tài)分配方法流程
本方案能夠?yàn)楫悩?gòu)多計(jì)算單元提供交互數(shù)據(jù),能夠在底層進(jìn)行數(shù)據(jù)流量的管理,避免操作系統(tǒng)層的改動(dòng),減少硬件電路,增強(qiáng)整個(gè)系統(tǒng)的穩(wěn)定性,兼容性好,適用范圍廣;控制器內(nèi)各模塊耦合程度低,可根據(jù)性能需要進(jìn)行升級、擴(kuò)展,具備廣闊的應(yīng)用前景。