程 玮,杨智玲
(1.厦门海洋职业技术学院,福建 厦门 361100; 2.厦门市智慧渔业重点实验室,福建 厦门 361100)
多核处理器使嵌入式系统能够同时运行多个任务,提升了系统的计算能力,同时也给系统的实时调度带来了不小的挑战[1]。与传统的单核处理器不同,多核处理器在处理系统任务时,需要考虑任务的优先级,也要考虑任务的分配问题,保证任务准确、快速地完成[2]。因此,以往的异构多核嵌入式系统实时调度方法面临十分严峻的挑战。对此,不少研究学者提出了自己的想法。刘璐等[3]提出基于半划分调度算法的异构多核嵌入式系统实时调度方法,在核集的支持下,利用半划分调度算法,改变任务只能运行在一个处理器核的情况,使得任务能够运行于局部核,降低系统进行任务调度时的计算压力,实现嵌入式系统的实时调度,实验结果表明该方法耗费时间太长。张小花等[4]提出基于整数线性规划的异构多核嵌入式系统实时调度方法,通过将任务的控制流程图分解成内存图,将内存图中的每个节点锁定在高速缓存中,并创建出循环网树,从中计算出任务运行的最差时间,实现系统的实时调度。实验结果表明,该方法应用成本过高。刘洪标等[5]提出基于云计算技术的异构多核嵌入式系统实时调度方法,通过对系统数据信息进行分簇式整理,划分系统数据信息的优先级,利用云计算技术,对系统数据进行调控,实现系统的实时调度,实验结果表明该方法的适用性较差。在以往研究的基础上,本文设计了面向任务协同的异构多核嵌入式系统实时调度方法,通过构建系统实时调度模型,设置相关的调度参数,实现系统的实时调度。
为实现嵌入式系统的实时调度,需要对嵌入式系统的信息进行实时分析。对于嵌入式系统的实时调度,需要先将嵌入式系统中的实时数据信息作为初始的任务结构信息。在连接网络时,利用通信装置接收不同时刻任务的实时信息,并对该任务节点信息进行判定[6]。本文在任务协同的基础上,将原本的系统任务数据信息转变成阵列形式的数据,并结合调度行为来调整发送需求的平台[7]。同时,在系统指定的空间,将系统实时信息进行结构描述,利用信息动态对其进行控制,从而构建系统实时调度模型[8]。其具体结构规划如图1所示。
图1 面向任务协同构建系统实时调度模型
如图1所示,面对多个任务,系统会使用多个处理单元进行处理,且每个任务并不会仅使用单一的处理器进行处理。同时,在进行任务实时处理时,需要重点考虑的一个因素就是系统的丢包率[9]。系统中处理器对于任务的处理效率,将会直接影响系统的丢包率大小。因此,在进行系统调度时,系统中任务节点的传输情况如下:
(1)
其中,F(t)表示系统传输的效率,L(i,t)表示系统在节点i时的丢包率,S(i,t)表示系统在节点i处的任务数据信息交换速度,S1表示系统中任意任务节点传输时所需的速率,B(i,t)表示系统在传输任务节点的最大速率。
通过式(1)可计算出系统任务节点的速度,同时,对系统中各任务节点的丢包率按照一定的顺序进行排序,将其中最小丢包率和次小丢包率的任务节点的速度进行提升,提升到最大速率,再将任务节点按照丢包率的从小到大的顺序进行速度的提升,直到所有的任务节点速度均不低于正常的传输速率[10]。在本文的设计中,将丢包率作为系统实时跳读的依据,能够提高任务节点的传输速度,加强系统的有效传输,但这也会导致不需要高速率传输的任务节点无法进行有效传输,增加系统负载,同时还会导致其他任务节点无法进行快速传输,无法实现系统整体的效率最大化[11]。因此,在上述设计的实时调度模型中,通过对任务节点数据的分时分批传输,将任务节点的贡献情况引入系统中,提升系统的传输速率,减少资源浪费。其具体的贡献过程如下:
(2)
其中,C(i,t)表示任务节点i的贡献量,β表示任务传输的速率,C1(i,t)表示任务节点的上传量,i,j表示任务节点在上传过程中的序列数,D表示系统运行频率,α表示任务节点的贡献因子,k表示系统在一定周期内传输任务的个数。
在上述公式的基础上,构建嵌入式系统实时调度的数学模型。其模型具体描述如下:
(3)
其中,ts表示任务节点进入系统的时间,te表示任务节点退出系统的时间,o表示任务节点进出系统的次数,n表示任务节点的数量。
通过上述公式,构建系统实时调度模型,为后续系统的实时调度做准备。至此,面向任务协同的嵌入式系统实时调度模型的构建完成。
在完成嵌入式系统实时调度模型的构建后,为保证系统内数据信息调度的合理性,对系统实时调度模型中相关参数进行设定。在构建系统调度模型后,为了保证设定的参数具有一定的时效性,系统中会汇聚大量的有效信息和无效信息[12]。其具体汇集过程如下:
(4)
其中,C表示信息汇集的最终结果,T表示系统传输数据的时间,x1表示系统任务传输的比特序列,Xv表示系统任务传输的分布序列,M表示系统传输的最大字节,N表示系统传输的最小字节。
通过上述公式,将大量的任务数据信息汇集到一起。由于汇集的任务数据信息占用了大量的空间,会影响到后续的参数设定[13],因此将汇集的信息量进行自适应分析,其具体分析过程如下:
(5)
其中,sm(t)表示系统中任务数据的自适应分析量,V表示任务在系统中传输的实时数据量,c1表示系统传输的速率系数。
在上述公式的基础上,设定实时调度模型的相关参数。其具体设定过程如下:
(6)
其中,A表示系统实时调度的时间均衡控制参数,u(i,d)表示系统任务的信息传输补偿系数,z(i,d)表示系统任务调度的速率控制系数,x(i,d)表示系统任务的传输频率系数,CR表示系统任务实时调度的信息最大可容量,FZ表示系统任务的安全性系数,n1表示随机传输的系统任务信息。
通过上述公式,计算出系统调度模型的时间均衡控制参数和安全性系数,以此作为基础进行系统的实时调度。至此,系统实时调度相关参数的设定完成。
在上述设定的基础上,实现异构多核嵌入式系统的实时调度,其实时调度过程如图2所示。在调度开始时,从构建的模型中获取系统原始队列中最高优先级任务,并满足最高优先级任务的配置需求,同时从任务集合中获取最高优先级的任务,将任务集合中的最高优先级任务和原始队列中最高优先级任务进行对比,若前者大于后者,则直接将任务集合中的最高优先级任务作为后继任务,并在处理器上运行,从而完成系统调度[14]。若前者不大于后者,则需要进行二次判定,判断前者是否等于后者:若等于,则将执行时间较长的任务作为后继任务,在处理器上运行,完成系统实时调度[15];若不等于,则将原始队列中的最高优先级任务作为后继任务,在处理器上进行运行,从而完成系统的实时调度。
图2 异构多核嵌入式系统实时调度过程
在本文中,系统实时调度的具体过程如下:
(7)
其中,Smax表示系统实时调度的结果,xi,j表示进行实时调度的任务,minSmax表示系统实时调度的最小属性值,p表示实时调度的最小周期,m表示系统实时调度的任务量,k表示系统的调度参数。
通过上述公式,完成对系统实时调度结果的计算。同时,根据计算的实时调度的最小属性值,判断当前调度结果是否为最优调度过程,如果最小属性值小于或等于标准值,则说明当前调度方法较好;如果最小属性值大于标准值,则需要重新规划调度过程[16]。至此,面向任务协同的异构多核嵌入式系统实时调度方法的设计完成。
为验证本文设计的面向任务协同的异构多核嵌入式系统实时调度方法在实际应用中的效果,进行仿真实验。在本次实验中,从某异核多构嵌入式系统选取11个实验测试集,作为实验对象。11个实验测试集的具体介绍如表1所示。
表1 实验测试集
如表1所示,利用本文设计的方法对上述实验测试集进行实验测试。同时,为保证实验顺利进行,搭建相应的实验环境,设置对应的实验参数。具体设置情况如表2所示,实验环境如图3所示。
表2 实验参数设置
图3 实验环境
如图3所示,在上述环境中进行实验测试。为保证本次实验的可信度,设置对照实验。本文设计的面向任务协同的异构多核嵌入式系统实时调度方法为方法1,基于群集一致性的异构多核嵌入式系统实时调度方法为方法2,基于混沌进化算法的异构多核嵌入式系统实时调度方法为方法3。
为验证三种方法在实验中的效果,本次实验以各调度方法的调度时间为评价指标,对三种方法测试效果进行对比。由于本文篇幅有限,本次实验结果仅展示三种方法对实验测试集adpcm的测试效果。其具体结果如图4所示。
图4 三种实时调度方法的调度时间
如图4所示,不论哪种实时调度方法,极少有任务调度时间超过10 s的,这说明在10 s时间内,系统能够完成绝大部分的任务调度。同时,从上述任务调度时间的分布状态上看,方法1的任务调度时间最短,最大调度仅为5 s,方法2和方法3的任务调度时间虽然都在10 s之内,但是存在大部分任务调度需要花费5 s以上的时间,可见,方法1实时调度所花费的时间最短。因此,本文设计的面向任务协同的异构多核嵌入式系统实时调度方法在实际应用中效果最好,能够快速且准确地进行系统调度。
综上所述,本文设计的面向任务协同的异构多核嵌入式系统实时调度方法通过构建系统实时调度模型,设置相应的模型,提高了系统进行任务调度的速度和准确性。同时,本文设计的方法针对系统调度不准确的问题,采用多处理器协同作业,保证了系统的响应速度。然而,本文设计的方法中还存在些许不足,如系统内部缓存空间不充足,在下一步研究中将针对此问题进行改善。