孟振華 ,柳 柱 ,仲雪潔 ,張宏波 ,楊 誠
(1.北京航天自動控制研究所,北京 100854;2.宇航智能控制技術國家級重點實驗室,北京 100854)
高性能計算作為一種國之重器,為解決經濟發展、科學研究、社會進步和國防建設等過程中遇到的問題發揮了巨大的作用。長久以來,對高性能計算的研究,各國都從未停止過。然而,高性能計算中心由于計算單元規模龐大,系統復雜,體積、功耗巨大等,在嵌入式領域很難發力。
在互聯網信息時代,飛行器導航系統、綜合電子系統、圖像處理系統、衛星數據處理、微型大數據系統等領域,對嵌入式系統的超實時特性、信息綜合處理、超高速運算的需求持續增長。既要滿足對高速信息的實時交互能力,對大數據量、大計算量的高速處理能力,還需要具有對針對應用變化的自適應能力,在實際應用中對系統所面臨的體積和功耗也急需解決。
受傳統高性能計算領域中多核架構技術思想的啟發,嵌入式處理器上的多核技術也取得長足發展,目前已經有了常見的多核DSP和ARM處理器芯片。在國外谷歌推出的MapReduce編程模型,加州伯克利大學AMP實驗室的Spark MapReduce模型,Nokia研究中心開發的Disco模型等均已獲得良好的并行加速效果。在國內陳天洲等人研發的多核平臺可以很好地支持多核間的任務調度;林明亮和祝永新在多核仿真器方面,研發出具有評估多核處理器性能的仿真驗證器;國防科學技術大學的學者們開發出在多核平臺上運行的操作系統,并實現主、輔核的地位對等[1]。
目前對多核系統的研究大多通過增加處理器核數來增加系統性能,或基于某一具體問題加以解決,通用性差,功耗墻、存儲墻、編程墻、通信墻、架構墻、可靠性墻[2]這六大挑戰依然是高性能嵌入式領域的難題。對此,文中分析當前國內外研究現狀,針對高性能嵌入式計算領域的關鍵難題,進行FPGA+DSP的多核并行計算架構研究。
當前,對大數據量信息的快速處理能力,已成為評測嵌入式系統性能的一個重要指標,實時性、多信息融合、低功耗、小型化等同樣,已成為嵌入式處理器設計過程中普遍需要解決的問題。
面對這些問題,可采取的解決辦法有2種,一種是采用更先進的處理器,另一種是采用多處理器協同工作。然而,這2種辦法只能在一定時期內解決問題,隨著需求的進一步增加,設計者要選用更加先進的處理器或者更多的處理器。處理器的開發速度遠不如信息量增加速度快,單核處理器已經很難滿足當前系統對各項指標的要求。而多個處理器共同工作的模式,會因為處理器數量增多而增大對系統體積的占用,功耗增多,同時多處理器協同工作還會帶來處理器之間通信、調度等諸多問題。
多核處理器的出現,在很大程度上滿足了系統目前對高速性、實時性、多信息融合、低功耗、小型化等要求。然而,多核嵌入式處理器更多地應用于實際工程項目,依然是沿用傳統的設計思路,多采用類似于傳統的多處理器架構。如何更好地挖掘多核處理器潛在的處理能力,是設計者所需要考慮的。在系統架構設計中,如果能夠揚長避短,結合不同的處理器,構建新型并行處理架構,勢必大大增強系統的整體性能。
在此,采用DSP+FPGA架構,結合FPGA和DSP的優點,兼顧速度和靈活性;FPGA與DSP相比,前者具有良好的硬件化并行優勢,可在數據前期的預處理過程中發揮其優勢,后期復雜算法的執行由數字信號處理能力較強的DSP來完成。就DSP而言,雖然目前集成度越來越高,處理頻率也越來越高,已突破1 GHz,但在數據傳輸過程中,由于DSP的接口集成特性,使得數據的傳輸能力大大降低,從而整體上影響了處理效率。與此同時,FPGA擁有豐富的I/O口資源可供配置,與各種功能內核相配合,能夠非常便利地完成數據的快速傳輸,相比之下FPGA對復雜算法的處理能力遜色很多。因此,最好的組合方式是FPGA+DSP,使DSP的高速數據處理能力與FPGA的高速以及組合、時序邏輯控制能力融合在一起,綜合兩者的優勢,達到高速高性能信號處理系統的目的;整個系統結構靈活可變,又兼具通用性,在提高算法執行效率的同時也縮短了設計周期。系統的整體架構如圖1所示。

圖1 基于FPGA+DSP的系統整體架構Fig.1 Overall architecture of the system based on FPGA+DSP
該設計的處理核心是DSP,因為DSP的強大處理能力可方便地完成算法的快速運算,而在控制方面FPGA可以發揮靈活以及擁有多種輸入輸出引腳的特點。這種組合式設計加上大容量外設存儲器而成的高性能信息處理系統,是當前高性能信號處理的主流設計理念。
FPGA模塊主要完成信號采集、時序控制、大容量存儲和讀取以及外圍電路管理等。其中,重點在于實現對采集到的信息進行大容量快速、同步存/讀取,FPGA內部并行架構設計,其次還有接口模塊設計、通信模塊等。利用FPGA可重構特性,進行可重構設計,大大增加了設計的靈活性。
FPGA內的并行架構由FPGA內部固有的硬核和通過設計構建的軟核組成,可重配置區域作為預留資源。硬核與軟核一起構成主從架構的處理模式。根據任務的不同,軟核處理器的功能也不同,其中軟核負責進行單元計算和相關模塊的控制總體。可重配置區域作為補充部分,根據軟核處理器功能的需要,適當地增減資源,甚至重構軟核處理器。
以簡單的圖像處理為例,可以構建一個兩級流水,硬核負責圖像采集、預處理及任務分配,軟核執行具體的任務并給出處理結果。FPGA內的并行架構如圖2所示。

圖2 FPGA內的并行架構Fig.2 Parallel architecture within FPGA
MicroBlaze軟核處理器是一個可配置的、靈活的處理器。它根據具體任務的需要,利用FPGA內部豐富的通用資源和IP核去配置。根據系統需求,可適當增減MicroBlaze核數量。對MicroBlaze的硬件設計以及XMK操作系統的配置在EDK中進行,對軟件的設計和調試主要在SDK中進行,主要設計流程如圖3所示。

圖3 MicroBlaze軟核的設計和調試Fig.3 Design and debuge the MicroBlaze soft core
在大容量數據存讀去過程中,采用乒乓緩沖設計,設計FPGA+DDR2 SDRAM的高速接口,以保證數據可以實現同時存讀取。這樣設計的好處就是,在滿足大容量存儲的同時還可以進行數據的同步存儲和讀取,相對于以往的DDR2緩存完一幀的數據,FPGA才可以進行讀取,避免了等待讀取的時間。
同時,在FPGA內部構建了2塊雙口RAM,再利用EMIF總線將DSP和雙口RAM互聯。采用乒乓緩沖的方式,把經FPGA處理后的數據再交替寫入雙口RAM,每個DSP從對應的RAM讀取數據[3]。在設計過程中,只要保證FPGA存入雙口RAM數據的速度大于DSP一次讀取與處理數據的速度之和即可。其設計流程如圖4所示。

圖4 大容量快速存/讀取系統模型Fig.4 Large capacity fast memory/read system model
多核并行架構的設計,可以極大地發揮DSP的潛在性能,提高效率。多核DSP的出現為并行性設計帶來無限可能,采用了TI公司的嵌入式處理器TMS320C6678進行架構設計與實現,并分析其多核之間并行編程方式。
多核并行編程模型,是在多核處理器中,用于編寫適合多核架構的可編譯執行的架構模型。目前常用的主要有過程交互方式。
由于處理器之間的通信機制不同,可將過程交互方式劃分為共享存儲編程[4](如圖5所示)、消息傳遞編程[4](如圖6所示)。

圖5 共享模型Fig.5 Sharing model

圖6 消息傳遞模型Fig.6 Messaging transfer model
在基于共享存儲(shared memory)的編程模型中,全部的處理器都享有同時對內存同一區域的訪問權限。
消息傳遞(message passing)模型中,各處理器間的消息通信由一個互連的網絡提供。進程進行消息傳遞的一個主要目的是實現進程間的相互通信和同步。
通過對基于過程交互的2種并行編程技術的分析,并結合本設計的數據交互過程中模型的需求,擬采用共享存儲模型,通過對全局地址空間內存共享,極大地提高了處理器之間數據共享和交互,負載均衡得以方便實現。分析2種并行編程架構,共享內存模型適合單核多處理器,而消息傳遞并行編程模型適合多處理器架構。故在此選用了基于共享內存的并行編程模型。
基于共享的內存的并行方式,目前主要有主從模型、數據流模型、OpenMP模型三大主要并行程序處理模型。
比較這3種方式,主從模型、數據流模型較為復雜,且為了負載的平衡,需要考慮算法處理時間的協調、任務的合理分割以及映射核的處理,而OpenMP的使用就相對簡單一些,大多只需要考慮該循環數據上的相關性,然后在其循環前面加上OpenMP的相關指令,就可以實現并行,這就降低了并行編程的難度和復雜度[5]。
OpenMP的編程模型以線程為基礎,通過編譯指導語句和運行時并行函數庫來顯性地指導程序并行化。OpenMP的執行模型如圖7所示,即Fork-Join 執行模型[4],當一個主線程(master thread)執行到Fork處時,則創建新的線程或者喚醒已有的并行線程;在Fork-Join之間的區域為并行區域也是程序執行效率是否能提高的關鍵區域;當程序執行到Join處時,并行區域的線程重新匯合成一個“主線程(master thread)”[6]。

圖7 Fork-Join的編程模型Fig.7 Fork-Join programming model
Fork-Join的執行流程如下:程序開始時只有1個程序入口,程序也只有1個主線程;隨著程序的執行,創建或者喚醒已有的并行線程;當執行完成并行區域的程序后,程序的控制權又回到主線程的手中。
通過算法改進,在以共享內存的OpenMP編程模型框架下進行算法設計和優化,最后對應用程序的性能加速比進行實際性能測試。試驗平臺在TMS320C6678 DSP上實現。
文中對常用的圖像處理算法——邊緣檢測算法進行分析優化。通過OpenMP的parallel sections指令,把將2個方向上的梯度計算進行并行化處理[5]。分別利用CPU的單核、雙核、三核和四核進行測試,部分測試代碼如圖8所示。
經過算法分析,并優化可并行部分,再分別設置用單核、雙核、三核和四核去執行優化后的算法,最后測試優化之后算法的運行時間,優化前后的并行計算時間見表1。再根據優化前后的時間,計算出并行加速比,其優化前后的對比見表1。

圖8 部分OpenMP編程示例Fig.8 Part of the OpenMP programming examples

表1 OpenMP并行優化前后時間對比和加速比對比Tab.1 Comparison of time and speedup ratio before and after optimization OpenMP parallel
根據表1數據得到優化前后的并行加速比曲線如圖9所示。

圖9 OpenMP優化前后的加速比Fig.9 Speedup ratio of OpenMP before and after optimization
由試驗結果可知,在采用相同處理器的前提下,通過傳統架構運行邊緣檢測算法,速度較慢,而采用基于共享內存模式的OpenMP并行編程模型,可以極大地提高算法的執行速度,且大大降低系統的資源消耗。尤其對于具有較多循環的算法,加速效果更加明顯。
隨著當前對嵌入式系統快速、實時、低功耗等性能的迫切需求,高性能嵌入式并行計算是當前的研究熱點之一。基于FPGA+DSP的多核并行計算架構,采用連接個體局部信息交互的處理器A+處理器B的系統多處理器自適應架構。該架構既可以滿足任務對于快速、實時的要求,也可以滿足當任務變化時及時的適應能力,在滿足同等性能的同時又極大地減少處理器的數量,降低對系統空間的占有量和功耗的消耗,從而整體上極大地提高了資源利用率。在當前嵌入式領域——工業生產領域、衛星導航和遙測領域、圖像處理領域、飛行器導航領域等需要對大量數據快速、實時處理的前提下,設計高性能的嵌入式處理系統,對解決當前難題具有重大意義。在當前軍民融合的背景下,在其他領域也都有廣闊的應用前景。
參考文獻:
[1] 張琪,王正勇,余艷梅.基于多核DSP的OpenMP研究與實現[J].圖像與信號處理,2016,5(4):147-154.
[2] 王慶,季振洲,朱素霞.高性能嵌入式計算幾個關鍵問題及其研究進展[J].智能計算機與應用,2013,3(4):71-75.
[3]郭富民.基于FPGA和多核DSP的高速圖像傳輸與處理系統的設計[D].武漢:華中科技大學,2012.
[4] 吳保東.眾核處理器的并行編程模型性能分析與優化[D].鄭州:鄭州大學,2015.
[5] 王子聰.基于OpenMP的多核DSP并行優化方法的研究及應用[D].長沙:國防科學技術大學,2017.
[6] 江德.并行計算系統中任務分配問題算法研究[D].大連:大連理工大學,2010.