基于多CPU架构的被动数据高效处理方法研究

2021-03-18 02:09韩向清俞育新任塨晔
雷达与对抗 2021年4期
关键词:排序数据处理模块

韩向清,俞育新,任塨晔,付 林

(1.中国船舶集团有限公司第八研究院,南京 211153;2.91007部队,浙江 舟山 316000)

0 引 言

随着新体制雷达的不断涌现以及电磁环境的愈加复杂,对雷达辐射源信号的准确、实时分选愈加困难[1]。在相控阵体制下,被动探测雷达利用数字波束技术可以产生多个独立的同时接收波束,其接收的信号可能来自多个方位,且外部环境信号复杂密集,导致需要从海量信号数据中实时提取辐射源有效信息以实时跟踪目标,这对被动数据处理的实时性提出了更高要求。

针对高复杂电磁环境和高密度目标环境下,被动数据处理可能出现的缓存饱和导致不能正常接收、处理数据进而导致的目标增批、丢失、老化率较高等问题,本文基于多CPU硬件环境,从接收/处理/统计等多任务并行计算、多CPU资源分析优化分配、算法优化等3个方面进行了优化设计,测试及试验结果表明上述优化设计提高了被动探测数据处理的实时性。

1 资源优化设计

1.1 多任务并行处理

针对被动数据处理过程中诸如接收大数锯、小报文、目标关联、统计、分析等多样性工程需求,设计以多任务并行方式来完成上述任务[2]。脉冲接收频率最高,而小报文处理需要及时,目标关联等数据处理为最重要任务,统计及分析相对而言为辅助,根据这些需求将脉冲流接收、小报文接收、数据处理设为高优先级任务;统计、分析等过程设为低优先级任务,通过基于优先级的多任务并行处理实现资源优化分配[3]。

1.2 多CPU资源优化分配

在多个CPU同时并行处理时,为充分利用硬件资源,需要考虑各CPU任务分配问题[4]。

(1)根据任务进行CPU任务划分:

(a)假定使用N+1块CPU完成数据处理任务,数据处理模块设计为1+n模式,即1个中心处理模块、n个分布式处理模块,可设定CPU1和CPU2合称为模块1,CPU3和CPU4合称为模块2,以此类推,如图1所示,各个模块功能一致流程统一;

(b)设定一个CPU为中心处理模块,如CPU0,中心处理模块负责对外的高速海量数据接收和自动分发、其他模块资源使用情况统计等功能。

(c)考虑在实际应用中占据主导位置的处理,使用CPU1的全部资源处理该任务,且该任务设定高优先级,并负责当前模块与中心处理模块数据交互。

(d)CPU2处理主导任务外的其他任务,该CPU的主导任务同样设定优先级较其他任务优高。

各CPU之间的数据流示意图见图1。

图1 各CPU间数据流示意图

(2)根据资源使用率分发数据

资源优化需使得各模块处理的数据流尽可能均匀。中心处理CPU实时获取模块1、模块2等硬件的资源使用率,并将数据发送至空闲的或资源使用率低的模块,避免某一个模块处理数据量大缓存饱和而另一个模块处理数据少、资源分配不均的现象,如此在硬件资源一定情况下实现了资源的充分利用,数据流图如图2所示。

图2 数据流发送示意图

2 算法优化设计

2.1 算法耗时对比

当软件编码已经完成,需要进行处理速度提升,则需对任务中各函数的耗时进行比较分析,确定哪些算法耗时大,有针对性地进行优化设计。

(1)通过软件自带的计算当前时间函数可获取不同算法耗时,某次仿真包含4种算法,各算法在不同时刻耗时如表1所示。

表1 不同算法耗时百分比(单位:%)

可以看出算法D较其他耗时多,考虑对该算法进行优化设计,效果更明显。

(2)通过相关软件查找各算法耗时,分析如下:

使用软件获取不同算法耗时,数据处理过程分为阶段1和阶段2,以某次仿真过程中使用打桩分析软件获得的各算法耗时为例,阶段1大约160 μs执行2次,阶段2大约42 ms执行7次,可见阶段2耗时非常大,需对阶段2对应算法进行针对性优化设计。

2.2 算法优化对比

(1)整型比较代替浮点型比较

算法中有较多for循环,编写如下测试代码:

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

即:

浮点型计算比整型计算耗时多;

浮点型比较比整型比较耗时多;

浮点型判断比整型判断耗时多。

根据上述分析,对算法进行优化设计:在进入处理之前将循环里float型变量进行单位变换,变成int型再作差或比较,记录到数组里,处理后再进行单位逆变换。

(2)for循环使用优化

双层循环将循环体长、次数多的放入内层循环;

如数据有规律,通过哈希法等方法替代循环,减少循环层数;

如果循环有不依赖于循环体的条件判断,将条件判断放到for循环外;

遍历前对PDW滤波,进行有效性判断,去除无效PDW[5-6]。

无效性抑制流程如图3所示。

图3 无效性抑制

(3)快速排序方法代替递归方法

在数据处理过程中大量数据进行排序时,不同排序方法耗时大不相同,排序好坏从以下几方面进行研究:

• 时间效率,即排序速度(排序所花费的全部比较次数);

• 空间效率,即占内存辅助空间的大小;

• 稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则认为此排序算法是稳定的。

目前使用的排序方法主要有:选择排序、插入排序、冒泡排序、快速排序、归并排序、堆排序、基数排序等。本文研究了快速排序和递归排序,当PDW个数为1 000时,快速排序比递归减少大约15%的时间。

(4)哈希法代替for循环

哈希表是根据关键码值直接访问的数据结构,它通过把关键码值映射到表中一个位置来访问数据,可加快查找速度。设计中将预先明确的数据根据一定映射关系存储于结构中,在需要获取时根据下标与数据的对应关系可快速读取所需数据,与循环相比哈希表处理速度更快。

结合2.1节,上述4种方法修改后测试耗时,结果如表2所示。

表2 优化前后耗时比较

可以看出,经过上述系列优化设计,处理速度大幅提高,仿真输入脉冲流密度为65万/s,目标连续稳定跟踪,结果如表3所示。上述措施有效改善了基于脉冲流复杂密集而导致的目标增批、老化等不连续跟踪现象。

表3 目标稳定输出参数

3 结束语

本文通过仿真分析、试验及工程实践提出了基于多CPU架构的被动数据高效处理方法。主要从资源分配和算法执行两个方面进行优化设计,多种方法结合使得处理速度提升可达85%,有效缓解了由于脉冲流密度较大、处理速度慢而引起的目标老化、丢失等问题,提升了目标的稳定性。本文方法具有较高的工程应用价值。

被动数据高效处理研究是一个长期过程,后续将在软件设计、多CPU硬件架构布局、系统框架搭建、算法优化等方面开展深入研究。

猜你喜欢
排序数据处理模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
无人机测绘数据处理关键技术及运用
作者简介
恐怖排序
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
节日排序
视频大数据处理的设计与应用