任志明
(中國船舶重工集團公司第723研究所,揚州 225001)
?
基于DSPC6678多核平臺的實時任務調度架構設計分析
任志明
(中國船舶重工集團公司第723研究所,揚州 225001)
分析了數字信號處理器(DSP)C6678的多核模式,設計了一種基于C6678高速多核DSP硬件平臺的實時任務調度軟件架構,實現了實時任務調度。通過實際測試,整體設計滿足了設計指標。
實時任務調度;多核數字信號處理器;軟件架構
在當前艦載設備的控制系統(tǒng)中,任務調度模塊需要從外部接收大量導航數據、目標更新參數,并實時進行坐標轉換計算,輸出控制。單核主機已經難以滿足既能快速處理大量網絡輸入輸出,又能實現穩(wěn)定的脈沖級的實時控制,因此需要選用合適的多核硬件平臺,并研究相應的系統(tǒng)控制軟件架構。
艦載設備任務是以正北坐標設置的,任務最后的執(zhí)行必須是以設備坐標進行控制,整個流程有大量的坐標轉換計算,需要較高的浮點計算能力。實時任務調度運行的模式是以指定的周期運行,通過調度算法輸出每個周期需要執(zhí)行的動作序列,然后依次執(zhí)行每個控制[1]。在大網絡數據流量的輸入下,需要能夠穩(wěn)定地輸出調度結果,實時地執(zhí)行調度結果,因此需要從物理上將網絡輸入和調度、執(zhí)行隔離,避免影響調度、執(zhí)行的實時性。
按照對時間的響應要求劃分,整個處理流程可以分為3類:非實時性的,實時性的,強實時性的。如果從硬件上將3個層次的處理完全隔離,就可以保證在系統(tǒng)高數據流量輸入的情況下,不影響調度輸出的穩(wěn)定性和執(zhí)行的強實時性。系統(tǒng)功能分級示意圖如圖1所示。

圖1 軟件模塊分級示意圖
所以,系統(tǒng)的硬件平臺需要支持多核、高速度計算性能,同時需要設計匹配多核的軟件架構,實現穩(wěn)定的實時控制輸出。TI公司的C6678是一款高速多核DSP芯片,有8個核,而且TI也提供了配套的多核軟件開發(fā)包[2]。
設計目標是從網絡接收100次/s的導航數據,500次/s目標更新的情況下,調度模塊實現小于1ms精度的控制輸出,在執(zhí)行模塊實現精度為2μs的實時控制。
C6678是TI公司的多核高速數字信號處理器,支持高速定點和浮點計算,每個核的主頻高達1GHz,它是為了滿足高速的計算性能和低功耗的要求,以多核實現系統(tǒng)的性能提升,同時保持低功耗。每個核可以運行獨立的操作系統(tǒng),有獨立的L2SRAM,可以通過GPIO響應外部硬件中斷,通過EMIF和SRIO與外部設備進行高速通信[3]。核之間通過消息隊列和共享內存進行同步、數據共享。
C6678計算能力強,多核并行同時處理,為軟件設計提供了強大的硬件平臺,為軟件的架構提供了極大的靈活性,但是軟件設計難度較大,測試比較麻煩。
TI為C6678提供了實時操作系統(tǒng)Sys/Bios,具備操作系統(tǒng)的任務調度、中斷管理、同步模塊、定時器服務、內存管理、硬件抽象層管理、輸入輸出管理等主要功能,而且提供了集成開發(fā)調試工具CCS,能夠在開發(fā)過程中查看任務和各個對象的狀態(tài)[2]。和多核計算相關的軟件組件主要包括IPC、MCSDK、NDK、PDK和OpenMP。
IPC提供了處理器多核管理組件、共享區(qū)域管理組件、消息隊列管理組件、內存堆管理組件,如果使用多核必須使用IPC提供的組件進行配置和調度[3]。MCSDK提供了芯片支持庫、驅動、平臺配置工具、核間通信模塊[2]。NDK是TI公司的網絡通信組件模塊,實現了TCP/IP協(xié)議[2]。PDK是TI公司提供的平臺配置開發(fā)包,實現了CSL庫和硬件驅動程序、平臺庫。OpenMP是TI對實現并行計算的軟件支持包。
設計實時任務調度的硬件平臺框圖如圖2所示。

圖2 硬件平臺框圖
C6678多核的使用模式主要有3類:主從模式、數據流模式、OpenMP模式[2]。
3.1 主從模式
主從模式中有一個核作為主控,其他核只負責執(zhí)行分配的任務,集中控制分布執(zhí)行。主核負責調度分配任務,將數據分發(fā)給從核,主核使用高級操作系統(tǒng)linux運行復雜的邏輯控制、任務監(jiān)控。此種模式適用于有很多小的獨立任務的應用,每個任務可以獨立在單核上運行,任務之間不需要進行交互、同步、數據共享。對于電信協(xié)議的多路解析,每一鏈路對應一個獨立的任務,可以同時將多個任務分布到多個核上,各自獨立運行。主從模式示意圖如圖3所示。

圖3 主從模式示意圖
主核負責管理空閑資源以均衡運行,不至于有過載或過閑的核。任務分配通過消息隊列傳輸,從核一直有一個獨立的任務處于等待接收消息的狀態(tài),在消息沒有到來之前處于掛起狀態(tài)。
此種模式的難點在于如何實時均衡地分配任務和監(jiān)控執(zhí)行狀態(tài),因為每個核運行的任務不同,而且執(zhí)行順序是隨機的,任務的需求吞吐可能相差很大,所以需要不斷地進行任務的動態(tài)分配與資源調整。
3.2 數據流模式
數據流模式代表的是一種分段流水式的控制和執(zhí)行,每個核負責處理過程的一個步驟,然后將處理結果傳遞到下一個核進行后續(xù)處理,各個核相互協(xié)同,共同完成整個處理過程。一般的會有一個核負責從外部接收輸入的指令或者數據,可以從網絡或者現場可編程門陣列(FPGA)接收外部輸入,整個處理流程是數據流驅動的。一個核處理的輸出是另外一個核的輸入,適用于大型、復雜、相互依賴、不適合單核進行處理的任務,或者是需要實現高速外部輸入的情況下、能夠實時穩(wěn)定輸出控制的應用,每個核各自獨立地運行實時操作系統(tǒng)。
此種模式的難點在于如何將一個復雜的任務分解到多個核上,形成一個處理的流水,同時設計核之間高速的數據通信模式,保證數據流輸出的穩(wěn)定性,形成數據處理流水線。數據流模式示意圖如圖4所示。

圖4 數據流模式示意圖
3.3 OpenMP模式
OpenMP模式是一套在對稱多處理(SMP)模式下開發(fā)多任務應用的接口,由編譯指令、庫以及環(huán)境變量構成。一般是在主程序中通過編譯指令,指定需要運行時用的核和執(zhí)行體,執(zhí)行時展開到各個核上并行運行。
這種模式和主從模式有點類似,但是使用比主從模式簡單,只需要通過編譯指令就可以實現,不需要對任務進行動態(tài)的監(jiān)控調整。每個核上運行的代碼可以是相同的,也可以是不同的。OpenMP模式示意圖如圖5所示。
每個核執(zhí)行相同代碼的OpenMP示例:
omp_set_num_thread(4);
#pragmaompparallel
{
ProcessData();
}
每個核執(zhí)行不同代碼的OpenMP示例:
#pragmaompparallel
#pragmaompsections
{
#pragmaompsection
Process1();
#pragmaompsection
Process2();
}

圖5 OpenMP模式示意圖
此種模式一般用于計算量較大、數據能夠分段并行處理的場合,典型的應用有圖像數據處理、雷達快速傅里葉變換(FFT)計算等。
軟件架構必須匹配于應用模型,相應地也分為3個部分:非實時部分、實時部分、強實時部分,分別對應于接口、調度和執(zhí)行,3個部分分別運行于3個核上,相互獨立,通過消息隊列和直接共享內存?zhèn)鬟f、控制數據。軟件架構圖如圖6所示。
多核模式中的數據流模式比較符合此種應用場景,因此選用了多核模式中的數據流模式作為實時任務調度的控制模式。
通過物理隔離,將不同時間響應要求的功能模塊分布到不同的核上,避免了大流量的網絡輸入對調度和執(zhí)行的影響。

圖6 軟件架構圖
在核0上接收到導航數據后,寫入共享內存,核1與核2在需要時,直接訪問共享內存。在核1上,實時任務調度從核內的任務隊列空間讀取需要調度的任務,輸出每個調度周期的執(zhí)行波位序列。在核2上接收到執(zhí)行參數后,觸發(fā)實時任務執(zhí)行,從執(zhí)行波位序列中讀取執(zhí)行參數,實時任務執(zhí)行通知FPGA控制外部,當第1個結束后,FPGA觸發(fā)實時任務執(zhí)行繼續(xù)讀取第2個,直到執(zhí)行序列全部處理結束。圖6中核2的框圖內部使用粗實線表示與FPGA的硬中斷實時交互控制。
基于以上的分析,設計了實時任務調度系統(tǒng)。應用分為3個部分,每個部分為一個獨立的工程,分布在C6678的3個核上(核0、核1和核2)。
在核0上進行接口和數據預處理,處理非實時數據,連接非實時的對外接口;在核1上運行調度模塊,以小于1ms的誤差輸出調度的執(zhí)行序列;在核2上運行強實時執(zhí)行模塊,將一個調度周期的執(zhí)行序列在FPGA的實時中斷驅動下,以微秒級別的控制精度輸出。
給系統(tǒng)輸入導航數據,模擬目標更新數據,然后啟動一個控制任務,經過實時任務調度輸出調度結果,每個調度結果代表一組連續(xù)執(zhí)行的脈沖,測量其運行參數,進行驗證測試。
6.1 測試方法
通過網絡以100次/s的速度發(fā)送導航數據,按照500次/s的速度發(fā)送更新參數,然后啟動運行1個控制任務,工作參數是1組16個脈沖,每個脈沖的執(zhí)行時間長度為1 000μs。通過計算相鄰的調度結果輸出的時間間隔,可以評估調度輸出的穩(wěn)定性;通過計算1組脈沖連續(xù)輸出的時間間隔,可以評估脈沖的控制精度。在調度輸出的節(jié)點和任務執(zhí)行的節(jié)點錄取時間戳信息,然后通過網絡輸出,在外部進行錄取和統(tǒng)計分析,最后進行整體控制精度評估。
調度結果的輸出間隔應該是10ms的整數倍,脈沖執(zhí)行輸出的時間間隔應該是1 000μs,調度間隔與10ms整數倍的偏差小于1ms,脈沖執(zhí)行的偏差小于2μs。
6.2 測試結果統(tǒng)計
在設計中,在DSP和FPGA之間采用了數據流水線設計,在1組脈沖中,第1個脈沖執(zhí)行間隔實際是參數的計算時間,并不是執(zhí)行間隔,最后一個脈沖的時間間隔是下一個調度周期的脈沖的時間間隔,所以在數據處理的過程中需要去掉第一個脈沖間隔和最后一個脈沖間隔。
從錄取的輸出參數中總共提取了1 936 987組脈沖執(zhí)行參數、269 200組調度間隔參數。脈沖執(zhí)行參數偏差超過1μs的有22個,最大偏差1.159μs,其余的偏差均小于1μs。從錄取中共提取了269 200組數據,統(tǒng)計出調度的最大偏差為89.7μs,小于0.1ms。
本文通過分析艦載控制系統(tǒng)實時任務調度的過程,采用高速多核DSP平臺,通過分層設計將不同時間響應要求的邏輯處理進行物理隔離,設計了實時任務調度的多核軟件架構。從實際的測試數據可以看出,在高速網絡數據流輸入的情況下,調度結果的輸出是穩(wěn)定的,調度結果的執(zhí)行是實時的,實際的偏差在設計范圍內,實現了實時任務調度和實時任務執(zhí)行。
[1] 胡衛(wèi)東,郁文賢,盧建斌,王壯.相控陣雷達資源管理的理論與方法[M].北京:國防工業(yè)出版社,2010.
[2] 董言治,婁樹理,劉松濤.TMS320C6000系列DSP系統(tǒng)結構原理與應用教程[M].北京:清華大學出版社,2014.
[3] 牛金海.TIC66X多核軟件開發(fā)技術[M].上海:上海交通大學出版社,2015.
DesignandAnalysisofReal-timeTaskSchedulingArchitectureBasedonDSPC6678Multi-corePlatform
RENZhi-ming
(The723InstituteofCSIC,Yangzhou225001,China)
Thispaperanalyzesthemulti-coremodeofdigitalsignalprocessor(DSP)C6678,designsareal-timetaskschedulingsoftwarearchitecturebasedonC6678high-speedmulti-coreDSPhardwareplatform,implementsreal-timetaskscheduling.Thetotaldesignissatisfiedforthedesignindexesthroughactualtest.
real-timetaskscheduling;multi-coredigitalsignalprocessor;softwarearchitecture
2015-05-03
TN
A
CN32-1413(2016)05-0090-04
10.16426/j.cnki.jcdzdk.2016.05.023