本发明属于雷达信号处理技术中的高速数据分发领域,特别涉及一种基于任务反馈的高速数据流数据分发方法。
背景技术:
1、为满足回波数据多波束并行处理的需求,雷达信息处理部分硬件常采取堆积结构,各cpu处理模块在系统中无差别,并行处理部分各模块运行程序也是一致的,各处理模块根据收到的数据被动地完成多个波束通道信息处理。当分发数据不均匀或者任务复杂度不同时,会出现各处理模块cpu利用率不均衡,数据输出端杂乱无序的问题。
2、针对这一问题,可以采用当前处理模块空闲后再进行数据分发的方式,但此方式在进行数据传输时cpu大部分资源处于空闲状态,cpu利用率低下。雷达系统常采用数据循环发送的方式,而忽略当前处理模块任务状态,该种方法虽然能够增强cpu的利用率,但是仍然未解决数据输出端无序的问题,同时无法保证高实时性任务的快速响应。
技术实现思路
1、针对背景技术中存在的问题和实际工程中的需求,本发明提出一种基于任务反馈的高速数据流数据分发方法,对接收数据进行优先级排序及任务数据量进行评估,同时收集cpu处理模块的运行状态,以高等级任务优先,同等级任务任务分配时延参数最小为准则进行数据分发,充分利用cpu的处理能力,满足总数据流先入先出的要求,同时保证高实时性任务的快速响应。
2、为了实现上述目的,本发明技术方案包括:
3、本发明包括数据分发决策模块和cpu处理模块,其中所述数据分发决策模块进行数据流接收、协议解析、参数计算、状态采集及任务分配,处理模块对数据进行处理,所述方法包括:
4、步骤1、数据分发决策模块通过高速数据传输介质接收雷达高速信息流数据包,并对数据包进行缓存解析,分析当前任务优先级参数priority_task_k,k=0,1分别代表任务优先级普通和紧急,根据数据包大小及传输速率计算当前任务传输时延参数timetrans_curtask及当前任务处理时延参数timeproc_curtask;
5、步骤2、判断雷达每个cpu处理模块的当前状态,首先对状态异常的cpu处理模块进行剔除,即不对其进行数据分发;状态正常的cpu处理模块,计算其当前待处理任务处理时延参数module_n_timeproc_processing,其中n=0,1……n代表cpu处理模块个数;
6、步骤3、根据步骤1计算的参数timetrans_curtask和timeproc_curtask,步骤2统计的参数timeproc_curtask,结合当前系统时间参数time_sys_cur和处理单元的状态反馈时间参数time_sys_module_n,计算每个cpu处理模块任务分配时延参数timethelta_n;
7、步骤4、根据步骤1获得的参数priority_task_k和步骤3统计的参数timethelta_n,首先查看任务优先级,以高等级任务优先,同等级任务任务分配时延参数最小为准则进行数据分发。
8、优选的,假设当前任务数据大小为datasize_curtask,高速数据传输速率为transrate,步骤1当前任务处理时延参数timetrans_curtask计算方式为:
9、timetrans_curtask=datasize_curtask/transrate
10、参数timeproc_curtask通过数据统计记录,提前缓存在数据分发决策模块中。
11、优选的,所述步骤3任务分配时延参数timethelta_n的计算过程包括:
12、timethelta_n=module_n_timeproc_processing-
13、(time_sys_cur-time_sys_module_n)-timetrans_curtask。
14、优选的,所述步骤4还包括:如果当前任务优先级参数为高等级,即priority_task_1,则选择参数module_n_timeproc_processing最小的cpu处理模块直接进行数据分发;如果当前任务优先级参数为普通,即priority_task_0,则选择参数timethelta_n最小的处理模块进行数据分发。
15、与现有技术相比,本发明以高等级任务优先,同等级任务任务分配时延参数最小为准则选择数据分发处理模块,在尽可能保证总数据流先入先出的要求下,充分利用cpu的处理能力,同时保证高实时性任务的快速响应。
16、下面结合附图和优选的实施例对本发明做进一步的详细说明。
1.一种基于任务反馈的高速数据流数据分发方法,其特征在于:
2.根据权利要求1所述的一种基于任务反馈的高速数据流数据分发方法,其特征在于:所述步骤1当前任务处理时延参数timetrans_curtask计算方式为:
3.根据权利要求1所述的一种基于任务反馈的高速数据流数据分发方法,其特征在于:所述步骤3任务分配时延参数timethelta_n的计算方式为:
4.根据权利要求1所述的一种基于任务反馈的高速数据流数据分发方法,其特征在于:所述步骤4还包括:如果当前任务优先级参数为高等级,即priority_task_1,则选择参数module_n_timeproc_processing最小的cpu处理模块直接进行数据分发;如果当前任务优先级参数为普通,即priority_task_0,则选择参数timethelta_n最小的处理模块进行数据分发。
