韓向清,俞育新,任塨曄,付 林
(1.中國船舶集團有限公司第八研究院,南京 211153;2.91007部隊,浙江 舟山 316000)
隨著新體制雷達的不斷涌現(xiàn)以及電磁環(huán)境的愈加復(fù)雜,對雷達輻射源信號的準確、實時分選愈加困難[1]。在相控陣體制下,被動探測雷達利用數(shù)字波束技術(shù)可以產(chǎn)生多個獨立的同時接收波束,其接收的信號可能來自多個方位,且外部環(huán)境信號復(fù)雜密集,導(dǎo)致需要從海量信號數(shù)據(jù)中實時提取輻射源有效信息以實時跟蹤目標,這對被動數(shù)據(jù)處理的實時性提出了更高要求。
針對高復(fù)雜電磁環(huán)境和高密度目標環(huán)境下,被動數(shù)據(jù)處理可能出現(xiàn)的緩存飽和導(dǎo)致不能正常接收、處理數(shù)據(jù)進而導(dǎo)致的目標增批、丟失、老化率較高等問題,本文基于多CPU硬件環(huán)境,從接收/處理/統(tǒng)計等多任務(wù)并行計算、多CPU資源分析優(yōu)化分配、算法優(yōu)化等3個方面進行了優(yōu)化設(shè)計,測試及試驗結(jié)果表明上述優(yōu)化設(shè)計提高了被動探測數(shù)據(jù)處理的實時性。
針對被動數(shù)據(jù)處理過程中諸如接收大數(shù)鋸、小報文、目標關(guān)聯(lián)、統(tǒng)計、分析等多樣性工程需求,設(shè)計以多任務(wù)并行方式來完成上述任務(wù)[2]。脈沖接收頻率最高,而小報文處理需要及時,目標關(guān)聯(lián)等數(shù)據(jù)處理為最重要任務(wù),統(tǒng)計及分析相對而言為輔助,根據(jù)這些需求將脈沖流接收、小報文接收、數(shù)據(jù)處理設(shè)為高優(yōu)先級任務(wù);統(tǒng)計、分析等過程設(shè)為低優(yōu)先級任務(wù),通過基于優(yōu)先級的多任務(wù)并行處理實現(xiàn)資源優(yōu)化分配[3]。
在多個CPU同時并行處理時,為充分利用硬件資源,需要考慮各CPU任務(wù)分配問題[4]。
(1)根據(jù)任務(wù)進行CPU任務(wù)劃分:
(a)假定使用N+1塊CPU完成數(shù)據(jù)處理任務(wù),數(shù)據(jù)處理模塊設(shè)計為1+n模式,即1個中心處理模塊、n個分布式處理模塊,可設(shè)定CPU1和CPU2合稱為模塊1,CPU3和CPU4合稱為模塊2,以此類推,如圖1所示,各個模塊功能一致流程統(tǒng)一;
(b)設(shè)定一個CPU為中心處理模塊,如CPU0,中心處理模塊負責(zé)對外的高速海量數(shù)據(jù)接收和自動分發(fā)、其他模塊資源使用情況統(tǒng)計等功能。
(c)考慮在實際應(yīng)用中占據(jù)主導(dǎo)位置的處理,使用CPU1的全部資源處理該任務(wù),且該任務(wù)設(shè)定高優(yōu)先級,并負責(zé)當(dāng)前模塊與中心處理模塊數(shù)據(jù)交互。
(d)CPU2處理主導(dǎo)任務(wù)外的其他任務(wù),該CPU的主導(dǎo)任務(wù)同樣設(shè)定優(yōu)先級較其他任務(wù)優(yōu)高。
各CPU之間的數(shù)據(jù)流示意圖見圖1。
圖1 各CPU間數(shù)據(jù)流示意圖
(2)根據(jù)資源使用率分發(fā)數(shù)據(jù)
資源優(yōu)化需使得各模塊處理的數(shù)據(jù)流盡可能均勻。中心處理CPU實時獲取模塊1、模塊2等硬件的資源使用率,并將數(shù)據(jù)發(fā)送至空閑的或資源使用率低的模塊,避免某一個模塊處理數(shù)據(jù)量大緩存飽和而另一個模塊處理數(shù)據(jù)少、資源分配不均的現(xiàn)象,如此在硬件資源一定情況下實現(xiàn)了資源的充分利用,數(shù)據(jù)流圖如圖2所示。
圖2 數(shù)據(jù)流發(fā)送示意圖
當(dāng)軟件編碼已經(jīng)完成,需要進行處理速度提升,則需對任務(wù)中各函數(shù)的耗時進行比較分析,確定哪些算法耗時大,有針對性地進行優(yōu)化設(shè)計。
(1)通過軟件自帶的計算當(dāng)前時間函數(shù)可獲取不同算法耗時,某次仿真包含4種算法,各算法在不同時刻耗時如表1所示。
表1 不同算法耗時百分比(單位:%)
可以看出算法D較其他耗時多,考慮對該算法進行優(yōu)化設(shè)計,效果更明顯。
(2)通過相關(guān)軟件查找各算法耗時,分析如下:
使用軟件獲取不同算法耗時,數(shù)據(jù)處理過程分為階段1和階段2,以某次仿真過程中使用打樁分析軟件獲得的各算法耗時為例,階段1大約160 μs執(zhí)行2次,階段2大約42 ms執(zhí)行7次,可見階段2耗時非常大,需對階段2對應(yīng)算法進行針對性優(yōu)化設(shè)計。
(1)整型比較代替浮點型比較
算法中有較多for循環(huán),編寫如下測試代碼:
N=1000000;i=0;j=0
for(i=0;i { if(j { k=i-j; } } ? 若k為int型,上述代碼耗時6.9 ms ? 若k為float型,上述代碼耗時37 ms ? 若j為int型,上述代碼耗時12 ms ? 若j為float型,上述代碼耗時53 ms 即: 浮點型計算比整型計算耗時多; 浮點型比較比整型比較耗時多; 浮點型判斷比整型判斷耗時多。 根據(jù)上述分析,對算法進行優(yōu)化設(shè)計:在進入處理之前將循環(huán)里float型變量進行單位變換,變成int型再作差或比較,記錄到數(shù)組里,處理后再進行單位逆變換。 (2)for循環(huán)使用優(yōu)化 雙層循環(huán)將循環(huán)體長、次數(shù)多的放入內(nèi)層循環(huán); 如數(shù)據(jù)有規(guī)律,通過哈希法等方法替代循環(huán),減少循環(huán)層數(shù); 如果循環(huán)有不依賴于循環(huán)體的條件判斷,將條件判斷放到for循環(huán)外; 遍歷前對PDW濾波,進行有效性判斷,去除無效PDW[5-6]。 無效性抑制流程如圖3所示。 圖3 無效性抑制 (3)快速排序方法代替遞歸方法 在數(shù)據(jù)處理過程中大量數(shù)據(jù)進行排序時,不同排序方法耗時大不相同,排序好壞從以下幾方面進行研究: ? 時間效率,即排序速度(排序所花費的全部比較次數(shù)); ? 空間效率,即占內(nèi)存輔助空間的大小; ? 穩(wěn)定性:若兩個記錄A和B的關(guān)鍵字值相等,但排序后A、B的先后次序保持不變,則認為此排序算法是穩(wěn)定的。 目前使用的排序方法主要有:選擇排序、插入排序、冒泡排序、快速排序、歸并排序、堆排序、基數(shù)排序等。本文研究了快速排序和遞歸排序,當(dāng)PDW個數(shù)為1 000時,快速排序比遞歸減少大約15%的時間。 (4)哈希法代替for循環(huán) 哈希表是根據(jù)關(guān)鍵碼值直接訪問的數(shù)據(jù)結(jié)構(gòu),它通過把關(guān)鍵碼值映射到表中一個位置來訪問數(shù)據(jù),可加快查找速度。設(shè)計中將預(yù)先明確的數(shù)據(jù)根據(jù)一定映射關(guān)系存儲于結(jié)構(gòu)中,在需要獲取時根據(jù)下標與數(shù)據(jù)的對應(yīng)關(guān)系可快速讀取所需數(shù)據(jù),與循環(huán)相比哈希表處理速度更快。 結(jié)合2.1節(jié),上述4種方法修改后測試耗時,結(jié)果如表2所示。 表2 優(yōu)化前后耗時比較 可以看出,經(jīng)過上述系列優(yōu)化設(shè)計,處理速度大幅提高,仿真輸入脈沖流密度為65萬/s,目標連續(xù)穩(wěn)定跟蹤,結(jié)果如表3所示。上述措施有效改善了基于脈沖流復(fù)雜密集而導(dǎo)致的目標增批、老化等不連續(xù)跟蹤現(xiàn)象。 表3 目標穩(wěn)定輸出參數(shù) 本文通過仿真分析、試驗及工程實踐提出了基于多CPU架構(gòu)的被動數(shù)據(jù)高效處理方法。主要從資源分配和算法執(zhí)行兩個方面進行優(yōu)化設(shè)計,多種方法結(jié)合使得處理速度提升可達85%,有效緩解了由于脈沖流密度較大、處理速度慢而引起的目標老化、丟失等問題,提升了目標的穩(wěn)定性。本文方法具有較高的工程應(yīng)用價值。 被動數(shù)據(jù)高效處理研究是一個長期過程,后續(xù)將在軟件設(shè)計、多CPU硬件架構(gòu)布局、系統(tǒng)框架搭建、算法優(yōu)化等方面開展深入研究。3 結(jié)束語