[0013] 所述EDF策略为根据任务的
截止时间动态分配任务的优先级;截止时间越短,优先级越高。
[0014] 所述关键速度策略为:处理器能耗最小时对应的速度为关键速度。
[0015] 所述处理器能耗、关键速度计算如下:
[0016] 在给定闭区间[ts,te]内,任务Ti=(Ri,Ci,Pi),假设处理器状态转换开销为E0,则处理器能耗为:
[0017] P(s)=(α·S3+Pind)·C/S+E0
[0018] P(s)为关于参数s的凸函数,对公式进行求导 得到处理器能耗最小值时的根 即,关键速度
[0019] 其中,α为负载电容,Pind为与处理器速度无关的设备所消耗的功耗,C为任务Ti的执行周期,Eo为处理器从空闲状态进入休眠状态的能耗开销。
[0020] 所述传统DVS调度策略为:
[0021] 在给定闭区间[ts,te]内,任务Ti=(Ri,Ci,Pi),处理器能耗为:
[0022] E(s)=(α·S3+Pind)·C/S+(te-ts-C/S)·Pind=α·C·S2+(te-ts)·Pind
[0023] E(S)是关于S的单调递增函数,如果S>0,速度S越低则能耗越小;并且,传统DVS调度策略的处理器速度为C/(te-ts);
[0024] 其中,α为负载电容,Pind为与处理器速度无关的设备所消耗的功耗,C为任务Ti的执行周期,Eo为处理器从空闲状态进入休眠状态的能耗开销。
[0025] 所述使用平衡因子方法判断采用关键速度策略或传统DVS调度策略来设置处理器速度具体为:按照平衡因子C0设置处理器速度;使得处理器在闭区间内的能耗最小;
[0026] 在区间[0,Scrit·(te-tS))内,对当前任务Ti的执行周期C小于Scrit×(te-tS);
[0027] 将按照关键速度策略计算的处理器能耗P(s)与传统DVS调度策略计算的处理器能耗E(s)作差:
[0028]
[0029] 通过变换得到:
[0030]
[0031] 通过求导得到平衡因子
[0032] 如果C≤C0,则E(s)≥P(s),选择按照处理器能耗小的关键速度策略来设置处理器速度,即设置处理器速度为关键速度 来执行任务;如果C>C0,则E(s)
[0033] 其中,α为负载电容,Pind为与处理器速度无关的设备所消耗的功耗,Eo为处理器从空闲状态进入休眠状态的能耗开销;Scrit为关键速度,ts和te分别为闭区间[ts,te]的端点值。
[0034] 本发明具有以下优点及有益效果:
[0035] 1.采用本发明,充分利用系统的空闲时间,降低处理器的运行速度,依能耗指标评价所提的方法的性能。实验表明本发明比现有的DVSST方法和DSTLPSA方法节约10.3%~62.5%和5.4%~20.6%的能耗。
[0036] 2.本发明在离线阶段调整处理器速度根据释放任务的负载,充分利用处理器的资源;在线阶段通过高优先级任务提前完成剩余的空闲时间动态更新处理器速度,并且当处理器没有任务执行时,结合提出的平衡因子关键速度调度策略,判断是否使用DPM技术将处理器进入休眠状态以达到进一步降低能耗的目的。
[0037] 3.高能耗会显著提高系统的发热量,影响系统运行的
稳定性。增加了系统耗
能量,本发明的方法能够显著的降低系统能耗,因此增加系统的稳定性和降低系统能耗。
附图说明
[0038] 图1(a)能耗函数截距0.08·Δt-0.8>0;图1(b)能耗函数截距0.08·Δt-0.8<0[0039] 图2为本发明处理步骤
流程图;
[0040] 图3为本发明方法的系统利用率对能耗的影响仿真实验结果图;
[0041] 图4为本发明方法的任务真实负载对能耗的影响仿真实验结果图。
具体实施方式
[0042] 下面结合附图及
实施例对本发明做进一步的详细说明。
[0043] 如图1(a)和图1(b)所示,DVS和关键速度策略作为目前低功耗调度方法常用技术,得到了广泛的应用,本文发明结合了这两种低能耗技术。考虑传统关键速度调度策略存在的不足,提出基于平衡因子的偶发低功耗调度方法。本发明在离线阶段调整处理器速度根据释放任务的负载,充分利用处理器的资源;在线阶段通过高优先级任务提前完成剩余的空闲时间动态更新处理器速度,并且当处理器没有任务执行时,结合提出的平衡因子关键速度调度策略,判断是否使用DPM技术将处理器进入休眠状态以达到进一步降低能耗的目的。
[0044] 考虑有n个偶发任务的实时任务集T={T1,T2,…,Tn},并且使用EDF[13]调度策略调度该任务集,每个任务Ti用二元组(Pi,Ci)表示,其中Pi是任务Ti的周期,Ci是任务Ti最坏情况下的执行时间,并且假设任务的相对截止期限Di等于其周期。假设用ACi表示任务Ti的真实执行时间,Ri表示任务Ti的就绪时间,Di表示任务Ti的截止期限, 表示在最大运行速度下,任务集的总利用率。假设处理器提供连续的
频率和电压,对频率进行归一化处理,所以速度的取值范围为[Smin,1]。remi(t)表示任务Ti在时刻t的还没有执行的时间。
[0045] 处理器根据任务活动情况可以在空闲,睡眠,活跃三个状态之间转换(可参考:Zhang Y,Guo R.Power-aware scheduling algorithms for sporadic tasks in real-time systems[J].Journal of Systems and Software,2013,86(10):2611-2619.)。当处理器没有任务执行时,此时处于空闲状态,功耗主要来自Pind。如果处理器长时间处于空闲状态可以将处理器置于睡眠状态进一步减少功耗,处理器状态转换操作需要能耗开销和时间开销。时间开销是指进入休眠状态和唤醒操作所需要的时间。文献[18]指出这一开销非常的小,故本文不考虑处理器状态转换的时间开销。假设处理器处于空闲状态的功耗为Pidle,处理器从空闲状态进入休眠状态的能耗开销为E0。根据空闲时间大小是否超过决定处理器是否进入休眠状态或者保持空闲状态。(可参考:Niu L,Li W.Energy-efficient fixed-priority scheduling for real-time systems based on threshold work-demand analysis[C]//Hardware/Software Codesign and System Synthesis(CODES+ISSS),2011Proceedings of the 9th International Conference on.IEEE,
2011:159-168.)。
[0046] 对于一个任务Ti,当系统速度低于关键速度时,使用BF方法决定是否采用关键速度,为了更好的阐述我们的思想,首先介绍相关定义。
[0047] 定义1:对于任务Ti=(R,C,D),任务运行的可行闭区间为[ts,te],在这个区间内任务不被抢占。不失一般性,我们假设,ts≥R,te≤D。在这个定义下,本文的解决的问题可以如下表述:
[0048] 问题1:在给定闭区间[ts,te]调度任务Ti=(R,C,D),选择最低能耗的速度调度策略,即是在这个区间总的能耗最小。
[0049] 引理1.在闭区间[ts,te]调度任务Ti=(R,C,D),如果处理器在空闲时间总是关闭,则在区间内执行任务Ti最小的速度选择关键速度Scrit。
[0050] 证明.如果处理器关闭,假设总的处理器状态转换开销为E0,则在闭区间总的能耗可有一下公式得出:
[0051] P(S)=(α·S3+Pind)·C/S+E0 (1)
[0052] 从程式(1)中可知,P(S)关于参数S的凸函数.对程式进行求导得最小值:得程式最小值时的根 也即是关键速度Scrit。
[0053] 引理2.在闭区间[ts,te]调度任务Ti=(R,C,D),如果处理器在空闲时间不关闭,则在区间内执行任务Ti最小能耗下的速度选择传统DVS调度策略的速度:C/(te-ts)。
[0054] 证明:如果处理器从不关闭,在闭区间内总的最少能耗为:
[0055] E(s)=(α·S3+Pind)·C/S+(te-ts-C/S)·Pind=α·S2+(te-ts)·Pind (2)[0056] 显然,E(s)是关于s的单调递增函数,如果S>0,速度S越低则能耗越小。
[0057] 从引理1和引理2中,在闭区间内对于任务获得最小能耗的速度应该在关键速度和传统DVS速度之间选择。由于当任务的执行周期C大于或等于Scrit×(te-ts),任务不管选择那种速度调节策略能耗一样,因此,我们仅考虑当任务的执行周期C小于Scrit×(te-ts)。在这种情况下,为了更直观表达问题,我们采用Intel XScale处理器能耗模型,则(1)和(2)可以进一步化简。采用关键速度策略下的能耗为:
[0058] E1=(0.4×C+0.8) (3)
[0059] 如果我们采用传统的DVS调度任务其中Δt=te-ts则公式(2)可以简化为:
[0060]
[0061] 正如实例中的例子,E1是否大于E2取决去任务的执行周期C。我们将两式做差得到关于C的函数F(C):
[0062]
[0063] 下面我将证明在给定的闭区间[ts,te]内,F(C)存在一个根C0(平衡因子),使得F(C)在区间[0,0.3·Δt)中大于0或者小于0。
[0064] 定理1.考虑任务Ti=(R,C,D)(0
[0065] 图1(a)能耗函数截距0.08·Δt-0.8>0;图1(b)能耗函数截距0.08·Δt-0.8<0[0066] 证明:
[0067] 如图1(a)和图1(b)给出了方程(3)的曲线,从图中可以看出:
[0068] 当截距大于0时,即图1(a),F(C)在区间(0,0.3·Δt]和X轴有一个交点C0,这个点即是平衡因子,当任务的执行周期C在(0,C0]时,F(C)>0,得出:E2≥E1;否则,E2
[0069] 当截距小于0,如图1(b),此时F(C)在区间(0,0.3·Δt]恒小于0,得出E2
[0070] 当C≥0.3·Δt时,两种调度策略消耗的能耗一样,选择关键速度策略和传统DVS策略没有差别。
[0071] 综合上述,我们证明,在(0,0.3·Δt]区间内,对于任务要获得最小的能耗,其执行速度选择依赖任务执行周期C和平衡因子的关系,当C小于C0我们选择传统DVS策略执行任务,否则选择关键速度策略执行任务。
[0072] 图3展示了在表1中的试验数据下的各方法的能耗,保持任务负载和转换开销不变,改变系统利用率从0.1到0.8,根据实验结果可以得到如下结论:
[0073] 实验结果显示,三种方法的能耗消耗和系统利用率成正相关关系,随着利用率的增加,本发明(LP-DSAFST),DVSSST和DSTLPSA能耗消耗都增加。这是因为总的利用率是能耗消耗的主要因素。总利用率增加,系统的空闲时间就越少,任务速度可以调节的机会降低。DSTLPSA方法相比DVSST方法更节能是由于DSTLPSA方法采用关键速度,当系统产生的空闲时间比较长时,DSTLPSA方法可以通过关闭处理器进一步降低系统能耗。本发明消耗的能耗比DSTLPSA方法低,是因为本发明利用了平衡因子,在处理器是否进入睡眠状态时,进行了判断,进一步降低系统能耗。当U=0.8,本发明(LP-DSAFST)相比DVSSST和DSTLPSA方法消耗的能耗节约41.36%和18.62%能耗.
[0074] 表1:系统利用率对能耗的影响
[0075]Utilization AC/WCET overhead
0.1-0.8 0.5 0.1
[0076] 表2:任务真实负载对能耗的影响
[0077]AC/WCET Utilization Overhead
0.1-1.0 0.5 0.1
[0078] 图4展示了在表2中的实验数据下本发明的试验结果。随着AC/WCET的增加,方法本发明的归一化能耗始终低于DVSST和DSTLPSA方法,但差距逐渐缩小。这是因为在利用率和转换开销一定的情况下,任务负载越小,系统产生的空闲时间越多,本发明一方面可以利用空闲时间降低后续任务的速度,另一方面方法可以利用空闲时间关闭处理器的可能性增大,因此节能效果更明显。当AC/WCET等于1时,意味着系统中没有高优先级任务提前完成剩余的时间可以利用,因此三种方法消耗的能耗相差很小,但是由于本发明和DSTLPSA方法采用关键速度策略,因此相比DVSST方法获得更好的节能效果。
[0079] (3)DVSST和NonDVS方法,执行任务都是利用任务的最坏时间执行,因此他们的能耗消耗对AC/WCET变化不敏感,对于DVSST和NonDVS方法能耗消耗的多少来自任务的利用率而不是任务的负载。当任务负载AC/WCET=0.1,本发明(LP-DSAFST)相比DVSST和DSTLPSA方法可以分别节约38.02%和16.35%能耗。