一种对异构多核处理器温度‑调度长度感知的实时任务调度方法与流程

文档序号:12363128阅读:来源:国知局

技术特征:

1.一种对异构多核处理器温度-调度长度感知的实时任务调度方法,其特征在于,该方法包括以下步骤:

步骤1:读取系统默认的权重因子α;

步骤2:将任务队列里存储的任务分配到最优的处理器;

步骤3:对每个处理器任务队列里的任务选取最优频率;

步骤4:确定每个处理器任务队列里的任务的执行顺序;

步骤5:对超过温度约束的任务进行切分;

步骤6:判断系统当前调度长度是否小于或等于给定的所有任务共享的截止

时间D,如果满足,任务执行,调度结束;如果不满足,返回调度失败,任务不能执行,调度结束。

2.如权利要求1所述的方法,其特征在于,所述步骤2中的将任务队列里存储的任务分配到最优的处理器,具体包括:

步骤A1:初始化L1=L2=…=Lk=…=LN;其中,Lk为处理器PEk上任务指令的条数,N为处理器的个数;

步骤A2:从任务队列Qglobal取出队头任务τhead

步骤A3:将标志位k赋值为1,即:k←1;

步骤A4:假设τhead分配到PEk,计算出处理器PEk以最大频率执行τhead后的调度长度其中,WChead为任务τhead最坏情况下执行周期,为处理器PEk的处于最大活性模式下的频率;

步骤A5:计算分配到除PEk外,τhead在其他处理器的时间;

步骤A6:计算出N个处理器调度长度的和tsum=(t1+t2+…+tN);

步骤A7:计算出在只考虑调度长度下,τhead分配到处理器PEk的概率λk,w=1-tk/tsum

步骤A8:计算τhead以最大频率在处理器PEk上执行后,结束时的温度Tend,k

步骤A9:判断Tend,k<Tpeak是否成立;若成立,转步骤A10;否则,转步骤A11;

步骤A10:利用公式λk,t=1-Tend,k/Tpeak计算出只考虑温度条件下分配τhead到PEk的概率λk,t

步骤A11:将0赋值给λk,t,即λk,t=0;

步骤A12:计算在考虑温度和调度长度下,τhead分配到PEk的概率,计算公式为:λk=α*λk,t+(1-α)*λk,w

步骤A13:更新k,公式为:k←k+1;

步骤A14:判断k≤N是否成立,若成立,转步骤A4;否则,转步骤A15;

步骤A15:从λ1至λN中选取最大值,并将其对应的处理器编号赋值给flag;

步骤A16:将τhead分配给处理器PEflag,将其插入到PEflag任务存储队列Qflag

步骤A17:将τhead从Qglobal中删除,更新队头任务;

步骤A18:更新Lflag=Lflag+WChead

步骤A19:判断Qglobal是否为空,不为空,转步骤A2;否则,转步骤A20;

步骤A20:所有任务分配完成,退出。

3.如权利要求1所述的方法,其特征在于,所述步骤3对每个处理器任务队列里的任务选取最优频率,具体包括:

步骤B1:将k赋值为1,即:k←1;

步骤B2:计算出PEk的调度长度tf(PEk);

步骤B3:k←k+1;

步骤B4:判断k≤N是否成立,若成立,转步骤B2;否则,转步骤B5;

步骤B5:计算N个调度长度的最大值,将其赋值给tf,即:

tf=max(tf(PE1),tf(PE2),…,tf(PEN));

步骤B6:将k重新赋值为1,即:k←1;

步骤B7:计算出处理器PEk可用的松弛时间slk,公式为:slk=tf-tf(PEk);

步骤B8:从Qk中取出队头任务τhead

步骤B9:计算τhead稳定状态下温度Tstd

步骤B10:根据Tstd对τhead进行冷热划分;如果该任务为热任务,将该任务插入队列Qk,h;如果为冷任务,则插入队列Qk,c

步骤B11:将τhead从Qk中删除,更新队头任务τhead

步骤B12:判断Qk是否为空,若不为空,转步骤B9;否则,转步骤B13;

步骤B13:将所有在Qk,c中的冷任务频率设为PEk的最大频率

步骤B14:对Qk,h中的热任务按照稳定状态下温度降序排序;

步骤B15:将ι赋值为处理器PEk的最大活性模式即:

步骤B16:将i赋值为1,即:i←1;

步骤B17:判断slk>0是否成立,若成立,转步骤B18,否则,转步骤B27;步骤B18:对在Qk,h中的任务τi,判断是否成立,若成立,转

步骤B19,否则,转步骤B25;

步骤B19:将τi的频率设置为Fk,i-1

步骤B20:更新slk,公式为:

步骤B21:更新ι,公式为:ι=ι-1;

步骤B22:判断ι==1是否成立,如果成立,转步骤B23,否则,转步骤17;

步骤B23:更新i,公式为:i←i+1;

步骤B24:判断i≤sizeof(Qk,h)是否成立,若成立,转步骤B17;否则,转步骤B25;其中,sizeof(Qk,h)为Qk,h中的任务个数;

步骤B25:将slk作为空任务插入到Qk,c

步骤B26:更新Qk,h与Qk,c

步骤B27:更新k,公式为:k←k+1;

步骤B28:判断k≤N,若成立,转步骤B7;否则,转步骤B29;

步骤B29:确定任务的最优频率结束,退出。

4.如权利要求1所述的方法,其特征在于,所述步骤4确定每个处理器任务队列里的任务的执行顺序,具体包括:

步骤C1:将k赋值为1,即:k←1;

步骤C2:对Qk,h中的热任务按照稳定状态下温度降序排序;

步骤C3:对Qk,c中的冷任务按照稳定状态下温度升序排序;

步骤C4:将Qk,h和Qk,c中任务个数最小值赋值给sizemin,公式为:

sizemin=min(sizeof(Qk,h),sizeof(Qk,c));

步骤C5:将i赋值为1,即:i←1;

步骤C6:将Qk,h[i]插入到目标队列Qk(2*i-1);

步骤C7:从Qk,h中删除Qk,h[i];

步骤C8:将QK,c[i]插入到目标队列Qk(2*i);

步骤C9:从Qk,c中删除Qk,c[i];

步骤C10:更新i,公式为:i←i+1;

步骤C11:判断i≤sizemin是否成立,若成立,转步骤C6;否则,转步骤

C12;

步骤C12:将剩余的Qk,h或Qk,c中的任务插入到Qk中;

步骤C13:更新k,公式为:k←k+1;

步骤C14:判断k≤N,若成立,转步骤C2;否则,转步骤C15;

步骤C15:确定每个处理器任务队列里的任务的执行顺序结束,退出。

5.如权利要求1所述的方法,其特征在于,所述步骤5为对超过温度约束的任务进行切分,具体包括:

步骤D1:将k赋值为1,即:k←1;

步骤D2:将i赋值为1,即:i←1;

步骤D3:计算任务QK(i)的结束温度Tend,i

步骤D4:判断Tend,i>Tmax是否成立,若成立,转步骤D5;否则,转步骤D10;

步骤D5:用上下文转换开销tsw,i初始化最优空闲时间即:

步骤D6:计算插入的最优空闲时间的结束温度

步骤D7:计算在活性模式下,子任务的执行时间tactive,i

步骤D8:计算最优的子任务个数公式为:其中,fi为任务QK,h(i)的频率。

步骤D9:计算出最优空闲时间公式为:其中,Tinit,i为任务QK(i)执行时的初始温度,Rk和Ck分别为处理器PEk热阻和热容。

步骤D10:更新i,公式为:i←i+1;

步骤D11:判断i≤sizeof(QK,h)是否成立,若成立,转步骤D3;否则,转步骤D12;

步骤D12:更新k,公式为:k←k+1;

步骤D13:判断k≤N,若成立,转步骤D2;否则,转步骤D14:

步骤D14:对超过温度约束的任务进行切分结束,退出。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1