郭 彪,唐 麒,文智敏,傅 娟,王 玲,魏急波
(1.湖南大學 電氣與信息工程學院,長沙 410082;2.國防科技大學 電子科學學院,長沙 410073;3.長沙軌道交通運營有限公司,長沙 410000;4.軍事科學院 系統工程研究院,北京 100101)
目前,不同用戶需求和技術迭代衍生出WIFI、藍牙等短距無線通信以及衛星通信、GSM 等長距無線通信。硬件平臺趨于多樣化,設備之間存在兼容性差、軟件開發和維護升級周期長、部署成本高等問題。軟件無線電(Software Defined Radio,SDR)技術提供了一種有效的、成本相對低的解決方案,通過軟件更新升級即可實現多模式、多頻段、多功能的無線通信[1]。
SDR在移動終端、通信基站等民用領域應用廣泛。在軍事上,SDR 作為新一代軍事無線通信領域的關鍵核心技術,已成為全球軍事無線通信系統的技術體制和發展方向。以美軍為例,其各軍種的無線通信頻率范圍為2 MHz~3 GHz,頻譜覆蓋范圍廣,相互之間通信協同性要求高。美軍主導制定了聯合戰術通信系統和聯合戰術網絡中心計劃,在2012 年全面實現軟件無線電電臺裝備體制,截止到2017 年底裝備約50 萬部各型軟件無線電臺。這種電臺改變了傳統以硬件平臺為主的設計模式,通過將接收、發送、調制、解調等功能進行模塊化設計,從而裝載不同功能的波形軟件,實現同一平臺的多種通信方式切換。
SDR 系統包括硬件支撐平臺和軟件體系架構。軟件體系架構是支撐整個系統的核心,其中以美軍JTRS/JTNC 項目中發布的軟件通信體系結構(Software Communication Architecture,SCA)最具代表性。目前有諸多針對SDR 的相關研究[2-4],在硬件支撐平臺方面,文獻[5]搭建了通用一體化SDR 平臺,該平臺可實現基本的SDR 射頻數據收發功能。文獻[6]設計了基于ZEDBOARD 的嵌入式軟件無線電軟件平臺,該平臺擁有較高的集成度和可拓展性。
基于SCA 的軟件架構是SDR 系統的核心,相關研究也十分廣泛[7]。在SCA 的標準符合性測試方面,文獻[8]基于擴展有限狀態機進行SCA 符合性測試,并使用了貪心算法以快速驗證測試波形應用是否符合SCA 標準規范。在SCA 的框架設計方面,文獻[9]設計了輕量化的SCA 核心框架,解決了接口冗余與可調整性不足的問題。在SDR 系統兼容性發展方面,SCA 已從被設計時部署在通用處理器(General Purpose Processor,GPP)上面,到現在可支持多種類型設備的擴展。文獻[10]解決了SCA 在數字信號處理器(Digital Signal Processor,DSP)上的部署問題,通過其框架設計與調制解調器硬件抽象層(Modem Hardware Abstraction Layer,MHAL)的 使用,使波形組件可以在兼容SCA 規范的前提下運行在DSP 上。文獻[11]設計了基于SCA 的新型軟硬件架構,通過GPP+DSP+FPGA 的數字基帶處理單元在硬件平臺構建符合SCA 的規范,將該架構應用在雷達、數據鏈、電子戰等多種領域。
隨著目前以賽靈思Zynq-7000 等為代表的新型DPR FPGA 計算架構的出現,如何在SCA 中對FPGA 動態部分可重構能力提供支撐的問題尚未得到有效解決。傳統的SCA 將FPGA 虛擬化為單一資源,導致資源不能得到有效的空時復用,且SCA 存在資源粒度大、部署方式單一的缺點。
本文將SCA 和FPGA DPR 技術相結合,設計基于SCA 的動態部分可重構軟件架構。通過擴展SCA 功能,提升波形應用在動態部分可重構FPGA下的實時部署能力。在此基礎上,設計ACO 調度算法增強組件的調度和管理方式,提高硬件平臺的使用效率。
SCA 是美軍為建立聯合戰術通信電臺開發定義的與設計實現無關的框架。SCA 通過公共對象請求代理體系結構定義統一的開發標準框架和通用結構,使通信系統開發的軟件和硬件可以分離,其宗旨是通過在同一硬件平臺上加載不同的波形組件以實現不同的功能。此外,也可根據特定的需要對系統進行部分升級,從而最大化地利用系統資源[12]。基于SCA 的通信系統架構如圖1 所示。

圖1 基于SCA 的通信系統架構Fig.1 Communication system architecture based on SCA
如圖1 所示,該系統包括上層的波形應用、中間的核心框架及對應的域描述文件3 個部分。其中波形應用由不同功能的組件組成,用來實現FSK、MSK、擴頻等通信功能。核心框架是一系列應用編程接口與組件集合,在操作系統上對軟件和底層硬件進行更高層次封裝,為波形應用提供標準化接口和服務,并對波形應用的動態加卸載、部署和域內資源進行統一管理。域描述文件采用可拓展標記語言(eXtensible Markup Language,XML)配置SCA 域內的所有組件。根據配置功能的不同又分為軟件包描述文件(Software Package Descriptor,SPD)、設備配置描述文件、軟件裝配描述文件(Software Assembly Descriptor,SAD)等[13]。這些文件配置了域內每個組件的接口、容量、屬性、內部依賴、互聯、邏輯位置等信息[14]。核心框架通過解析組件的域描述文件,完成組件的部署、啟動、配置、查詢等操作。
SCA 將FPGA、DSP、GPP 等物理硬件設備虛擬化為域內的設備組件,設備組件通過提供統一的加載、卸載、部署等接口滿足硬件平臺的可復用性需求。
基于FPGA 的動態可重構技術能夠在FPGA 運行過程中將其內部的全部或部分邏輯資源重新配置,進而實現FPGA 邏輯功能的動態切換和時分復用,而不終止器件的運行[15]。此外,FPGA 的DPR 技術重構粒度更小,允許每個重構區域根據功能需要動態加載和切換配置文件。FPGA 通過內部配置訪問端口下載配置文件,并對指定區域進行邏輯功能實時更改而不影響其他區域的任務執行。FPGA DPR 功能示意圖如圖2 所示。

圖2 FPGA 動態部分可重構示意圖Fig.2 Schematric diagram of dynamic partial reconfiguration of FPGA
圖2 中的DPR FPGA 劃分了4 個重構子區域,并分別執行Task1、Task2、Task3、Task4 任務。每個重構區域之間獨立執行,可根據任務需求實時更改重構子區域的數量和大小,不影響其他正在執行的重構區域。
在現有的SCA 軟件架構體系下,只有面向FPGA 全局重構方式的資源虛擬化支撐,沒有針對DPR FPGA 的相關虛擬化架構。本文第2 節在基于SCA 的規范下設計DPR FPGA 的硬件資源虛擬化軟件架構,提出波形組件DPR 部署的流程機制。
為滿足SDR 系統的異構性和可移植性需求,SCA域內將FPGA 硬件設備虛擬化為FPGA 設備組件,核心框架通過管理設備組件來間接管理FPGA 硬件。設備組件的域描述文件利用XML 和統一的軟件架構完成硬件資源虛擬化。其主要配置兩部分信息:一是該設備組件自身運行所需的軟硬件環境,主要包括操作系統、設備組件編程代碼語言及設備組件代碼在系統內的存放路徑等;二是該設備組件所代表的硬件資源,包括硬件設備名稱、資源量(內存、計算單元)、接口等信息。
然而,現有SCA 規范下的軟件架構將FPGA 設備虛擬化為單一的硬件資源,導致FPGA 的重構粒度大,不能進行空時復用。
將DPR FPGA 劃分的子區域數量和子區域大小不同稱為不同的劃分方式。將DPR FPGA 硬件設備設計并抽象封裝成支持DPR 能力的邏輯設備組件時,該邏輯設備組件應支持不同的劃分方式、不同區域約束和不同資源配置。同時,區域描述文件的軟件架構要符合SCA 規范要求。圖3 所示為本文設計提出的DPR FPGA 設備組件域描述文件的軟件架構示意圖。其中,DPR FPGA 邏輯設備組件的域描述文件(Domain Profile)主要由軟件包描述文件(SPD)和屬性配置文件(PRF)組成。SPD 文件的根元素(softpkg)配置了組件開發者(author)、組件實現(implementation)、屬性配置文件(PRF)等信息。其中author 元素配置了開發者姓名(name)、組件開發公司(company)等信息;implementation 元素配置了組件代碼(code)、組件運行環境(os)、組件執行處理器(processor)等信息;code 元素配置了組件接口信息(entrypoint)、組件代碼位置(localfile)等信息。PRF 文件中的結構元素(struct)用來配置多個不同類別組件屬性,simple 元素用來配置單一屬性。

圖3 DPR FPGA 設備組件域描述文件的軟件架構Fig.3 Software architecture of DPR FPGA device component domain description file
上述架構在SCA 的規范下提供了對DPR FPGA的資源虛擬化,滿足了如下3 個約束:
1)DPR FPGA 支持多種區域劃分方式。通過配置圖3 中SPD 文件的softpkg 根元素,使其包含一個或多個implementation 子元素,部分代碼實現如下:

softpkg 元素下的2 個implementation 子元素分別表示一種FPGA 動態部分可重構區域劃分方式的資源描述,每一種劃分方式包含不同的FPGA 動態部分可重構區域的數量和大小。
2)每種劃分方式支持不同的重構子區域資源描述。配置implementation 元素包含的PRF 屬性文件,該文件由多個struct 元素組成,每個struct 元素代表一個重構區域,部分實現代碼如下:


上述代碼中配置了3 個重構區域,分別是靜態重構區、動態重構區1 和動態重構區2。
3)每個重構區域支持細粒度的資源配置。圖3中的每個simple 元素表示重構區域的一個資源配置信息。資源配置信息包括重構區域標識、重構區域坐標位置、重構區域CLB Logic Cells 數量、重構區域CLB Slices數量、重構區域Digital Clock Managers數量、重構區域DSP 數量、重構區域RAM 數量等。以重構區域CLB Slices 數量為例,部分實現代碼如下:

上述代碼中的simple 元素配置區域中CLB 資源的數量為2 132。
上述針對DPR FPGA 設備組件域描述文件的軟件架構設計,支持了FPGA 的細粒度資源虛擬化,拓展了FPGA DPR 功能,建立了FPGA 硬件可重構區域到SCA 域內的映射關系。軟件架構設計使用的所有域描述文件配置元素如simple、struct 等均符合SCA 規范,保證了SCA 整體架構的一致性和統一性,減小了SCA 軟件的升級和維護難度。
波形應用是完成某種通信功能的軟件應用,由多個組件組成,圖4 所示為波形應用示例。

圖4 波形應用示例Fig.4 Sample of waveform application
該波形應用由網絡設備、濾波、變頻等組件組成。基于SCA 的SDR 系統,域管理器通過解析波形應用的XML 域配置文件啟動、初始化、運行、配置、重構相應的波形應用程序[16]。
在2.1 節中完成了FPGA DPR 的資源虛擬化,使SCA 域內有了FPGA 動態部分可重構區域的資源信息。為了將波形組件部署到FPGA 動態部分可重構區域,本節提出了在SCA 域內波形組件DPR 部署的流程和機制,如圖5 所示。

圖5 波形組件DPR 部署機制Fig.5 DPR deployment mechanism of waveform components
在圖5 中,客戶端首先調用核心框架控制接口中ApplicationFactory接口 的create 操作。create 操作在SCA 域內創建應用,從而在客戶端請求的設備上創建應用提供客戶端接口。SCA 解析波形應用的域描述文件,包括應用的SAD 文件、各個組件的SPD 文件等,從而獲得應用的組成、各個組件之間的端口連接、組件部署所需的處理器/運行環境等配置信息。邏輯設備通過執行allocateCapacity 操作,分配組件運行所需的內存、處理器,從而更新Device(s)的內存和處理器使用狀態。邏輯設備還可以通過LoadableInterface 和ExecutableInterface接口完成組件的加載和執行。如此,波形組件DPR 部署機制建立了波形應用創建、依賴性檢查、容量分配、可重構部署完整的映射,提高了組件部署和管理的靈活性。
本文第2 節提供了SCA 下對于DPR FPGA 的架構支撐,包含DPR FPGA 的SDR 硬件設備系統,使組件部署更具靈活性。DPR FPGA 與CPU 計算設備構成了可重構的異構計算平臺。為進一步提高波形應用在該平臺的部署效率,提升硬件資源利用率,高效的調度算法支撐尤為關鍵。
目前針對應用的建模方法有多種,如有向無環圖(DAG)[17-19]、同步數據流圖(SDFG)[20-22]等。本文運用目前研究較多的DAG 圖建模波形應用。圖6 所示為DAG 應用示例。

圖6 DAG 應用示例Fig.6 Sample of DAG application
在圖6 中,該應用由8 個任務和9 條邊組成。任務之間的箭頭表示相互依賴關系。將任務在DPR FPGA 上的執行時間稱為硬件執行時間,在CPU 上的執行時間稱為軟件執行時間。表1 為具體任務參數信息,包括任務名、軟件執行時間、硬件執行時間以及在FPGA 上執行所需的CLB 資源數量。

表1 波形應用的任務參數Table 1 Task parameters of the waveform application
DPR FPGA 與CPU 組成的SDR 系統中的異構計算平臺模型如圖7 所示。

圖7 異構計算平臺Fig.7 Heterogeneous computing platform
圖7 中的異構計算系統由一個CPU 和支持二維重構的DPR FPGA 組成,其中FPGA 被劃分為4 個重構子區域,通過加載不同的配置文件來更改其邏輯功能。
高效的調度算法可以減小波形應用的執行時間,從而提高系統計算資源的利用率。將確定DAG圖中各個任務的執行方式(軟件執行或硬件執行)和執行時間(任務的開始時間和結束時間)稱為調度。調度結果示意圖如圖8 所示。

圖8 波形應用的調度結果示意圖Fig.8 Schematic diagram of scheduling results of the waveform application
在圖8 中,計算單元包括一個CPU 和2 個DPR FPGA 重構子區域,深灰色方塊代表任務在FPGA 上的重構時間,淺灰色方塊代表任務的執行時間。
對于3.1 節異構計算平臺,在對波形應用進行調度時需要滿足一定的約束條件,具體如下:
1)DAG 圖中的任務依賴關系。子任務需要等其所有父任務執行和通信結束后才能開始執行。
2)任務只能執行一次且只能選擇一個計算單元(CPU 或FPGA 的一個重構區域)。
3)FPGA 上執行的任務需要先重構再執行。
4)限制FPGA 的資源數量,需滿足任務執行所需的資源且同一時間不能超過FPGA 的資源總量。
5)重構端口不能復用,且同一時間只能重構一個任務。
針對3.1 節的應用和計算平臺模型,本文提出一種基于蟻群優化的調度算法,通過設置循環次數和控制參數進行迭代求解。每次迭代計算主要分為3 步:確定任務的調度順序;映射任務到計算單元;信息素更新。該算法能夠解決SDR 系統中的波形應用調度問題,有效支撐波形應用的部署。
下面將對算法細節進行介紹。
步驟1確定任務的調度順序。算法實現時,通過計算組成DAG 各個任務的調度概率,選擇調度概率最大的任務作為當前步驟需要調度的任務。任務i在第j步的調度概率如下:

其中:αs為全局調度信息素揮發控制因子;βs為局部調度信息素揮發控制因子為全局調度信息素局部調度信息素;集合N={1,2,…,M}為調度DAG 所需要的總步數,其中M的值等于組成DAG 任務的數量。
步驟2映射任務到計算單元。確定好每一步待調度的任務后,將任務映射到計算單元上并執行,其中計算單元集合由CPU 和DPR FPGA 的重構區域組成。計算任務的“映射概率”,并選取計算值最大的映射單元為計算單元映射。任務i選擇計算單元k的映射概率如下:

其中:αm為全局映射信息素揮發控制因子;βm為局部映射信息素揮發控制因子為全局映射信息素局部映射信息素;N是所有計算單元的集合。
步驟3信息素更新。所有螞蟻完成一次求解時,即更新對應的信息素。信息素的更新公式如下:

其中:ρs為調度信息素揮發因子;ρm為映射信息素揮發因子;SSL為本次迭代所有螞蟻求解的應用完成時間最小值。其中si為第i只螞蟻求解的調度長度,其大小等于本次迭代所有任務所完成時間的最大值。Antcount的大小等于螞蟻數量。上述3 個步驟為單次迭代求解過程,算法執行時不斷進行迭代求解。當達到所設置迭代次數的上限時返回已經求得的最優解,該最優解中包含了波形應用的調度結果和波形應用的總完成時間。
為驗證本文所提算法的性能,波形應用調度的DAG圖使用文獻[23]中的方式隨機生成。表2 所示為隨機生成DAG 的詳細信息,包括任務數n、邊數m和問題規模2n+3m[24]。由于軟件無線電的硬件計算平臺大多執行計算密集型的波形應用,通信計算比(CCR)較小,故本文測試基準DAG 的CCR 設置為0.1。所提算法中的迭代次數為1 000 次,螞蟻數量為5,全局調度信息素揮發控制因子αs設置為1,局部調度信息素揮發控制因子βs、全局映射信息素揮發控制因子αm及局部映射信息素揮發控制因子βm均設置為1,調度信息素揮發因子ρs設置為0.9,映射信息素揮發因子ρm設置為0.98。為了驗證所提調度算法的有效性,本文仿真了沒有調度的DAG 隨機算法部署(Random Deployment Without Scheduling,RDWS)、MILP 算法[25]和ILP 算法[26]的調度結果。調度性能的評價指標為DAG 的調度長度(SL)和算法求解時間。其中MILP 算法的求解器為LINDO API12.0,ILP 算法的求解器為Gurobi 9.0.1,求解時間上限值(timeout)均設置為1 800 s,若求解器達到時間上限值時仍沒有求出最優解,則返回當前已求得的最優解。

表2 隨機生成的DAG 信息Table 2 Randomly generated DAG information
表3 為仿真實驗的結果數據,包含DAG 的調度長度和算法求解時間。

表3 本文算法仿真實驗結果Table 3 Simulation results of the algorithm in this paper
為評估所提算法在波形應用調度中的性能,引入調度長度提升程度(SSLI)來計算求解性能提升程度。

圖9 分析了在面對不同DAG 規模時4 種算法的調度結果變化關系。由圖9 可知,任務規模越大,本文所提算法求解性能越好,可以有效提升部署效率,減少應用的總執行時間。圖10 分析了算法的求解時間變化關系。從圖10 中可以看出,當任務規模大于15 時,MILP 和ILP 算法在1 800 s 內已經求不出最優解,時間復雜度遠大于本文所提算法復雜度。

圖9 調度長度與任務規模的關系Fig.9 The relationship between scheduling length and task size

圖10 3 種算法求解時間對比Fig.10 Comparison of solution time of three algorithms
表4 所示為測試DAG 應用的SLI 數據。由表4數據可知,與沒有調度的隨機算法相比,本文所提算法的平均性能提升了57.04%,可有效減少SDR 系統中的軟件部署和執行時間,提升硬件的資源利用率。與MILP 算法相比,當任務規模小于20 時,本文算法性能略差于MILP 算法,但隨著任務規模的增大總體性能呈遞增的趨勢,最終平均性能提升了35.89%。當任務規模較小時,ILP 算法可在時間上限值內求出問題的最優解,求解時間也較短。但隨著任務規模的增大,算法的時間復雜度呈指數級增長,任務數量大于20 時,在時間上限值內已求不出問題的最優解,求解結果差于本文算法。實驗結果表明,本文算法與ILP 算法相比,平均性能提升了29.09%。綜上分析,在面對大規模應用時,本文算法在求解性能和求解時間上更有優勢。

表4 3 種算法SLI 分析Table 4 Three algorithm SLI analysis %
本文將軟件通信體系架構與FPGA 的DPR 技術相結合,提出在軟件通信體系架構規范下的DPR FPGA設備資源虛擬化及波形組件的部署機制。介紹基于XML域描述文件的DPR 軟件架構設計,并從軟件架構層面建立從波形組件到FPGA 可重構區域的映射關系。在此基礎上,針對SDR 系統中支持DPR FPGA 的異構計算平臺和波形應用,提出基于蟻群優化的調度技術算法。實驗結果表明,與MILP 算法和ILP 算法相比,該算法能有效提升調度性能,減少求解時間。下一步將對列表啟發式和搜索元啟發式算法進行系統設計,以支持波形應用的實時調度。