不失一般性,流fk的偏移值的选择是在区间[0,Tk]上执行的。实际上,由于调度的周期性质(更多详情,见参考文献[2]),所以Ok≥Tk的偏移量等于OkTk。一旦初始Ok的偏移量被确定,流fk后续的所有释放时间流就被设定:Ok+iTk,i∈N。
随时间扩散的交通流,每个数据流fk偏移量的选择,使得它的第一帧fk,1的释放(或发布)尽可能远离其他已经被调度的帧。这是通过:①识别带最小工作负荷的最长的间隔;②并在此时间间隔中间设置fk的偏移量来实现的。
14.2.4.1 数据结构
因为对于每一个数据流fk,它的偏移量是在区间[0,Tk]内选择,我们选择基于时间区间[0,Tmax]上进行的分析,来分配偏移,其中。
在[0,Tmax]区间内,帧的释放时间被存储在列阵R中,R有Tmax/g个元素,其中第i个单元R[i]是在可能释放时刻i[也就是在(i-1)g时刻]释放的帧的集合。表14.1为帧流释放列阵R,它对应于交通流的集合Τ={f1,f2,f3},其中f1=(T1=10,O1=4),f2=(20,8),f3=(20,18)(Tmax=20),同时粒度g=2。
对于一个给定的帧流fk,区间是一组邻近的可能释放时刻的集合。
图14.1 NETCAR分析器运行时的屏幕截图。左侧图形是针对不同偏移值设置得到的响应
时间(通过降低优先级)。背景中的电子表格包含:帧的集合、测试的不同偏移设置、对应的WCRT和确定的ECU特性,比如微控制器层面的排队策略(比如FIFO或按优先级)。
表14.1帧流发布列阵R对应于交通流的集合Τ={f1,f2,f3},其中f1=(T1=10,O1=4),f2=(20,8),f3=(20,18),其分布间隔为[0,20]
定义14.2:对于一个流fk和时间常量g,可能的发布时刻i和i′是邻近的,当且仅当:
在上述公式中,取模算子告诉我们设置流fk在可能发布时刻i的偏移量等价于选择可能发布时刻i+uTk/g(u∈N)。表14.2显示了f1的这种定义,其中周期T1=10,时间常量g=2。
这样导致了时间间隔的定义。
定义14.3:对于流fk,区间间隔是一组有序的可能发布时刻,其中第i和第i+1个元素是邻近的。这个区间的长度就是有序集合中的单元数。
例如,对于流f1(见表14.2),集合{4,5,1,2}是邻近可能发布时刻的区间。在这里提到的算法中,我们只考虑到了在相同负载下可能发布时刻的区间。(www.daowen.com)
表14.2邻近的可能发布时刻(在流f1中,周期等于10)
定义14.4:可能发布时刻i的负载是在i时刻[即在时钟为(i-1)g时刻]对传输调度的发布数。
比如,在表14.1的案例中,可能发布时刻3的负载是1。我们用lk表示[0,Tk]间隔内的最小负载,最小负载间隔仅仅组成了负载为lk的可能发布时刻。例如,在表14.1中,l3等于0,且间隔{10,12}属于最小负载间隔[0,20]。
14.2.4.2 算法描述
我们假定流量通过增加周期值来分类,也就是说,k<h意味着Tk<Th。这种算法循环设置流(从f1到fn)的偏移值。让我们考虑分析中的流为fk。
为fk设置偏移值,比如使它的第一次发布fk,1与fk,1发布前后之间的间隔最大化。具体来说:
(a)在区间[0,Tk]中找到lk。
(b)在区间[0,Tk]中找到最长的最小负载区间,其中约束可以任意中断。区间中第一个可能的发布时间标记为Bk。
(c)在选定区间的中间设置偏移量Ok,它对应的可能发布时间是rk。
(d)更新发布列阵R,存储在区间[0,Tmax]中发布的fk的帧:
运行
实际中直接在O(n·maxk{Tk}/g)中实施算法,即使有大量的信息也不会产生问题。
14.2.4.3 算法的应用
在我们考虑的案例中,τ={f1,f2,f3},其中f1=(T1=10,O1=4),f2=(20,8),f3=(20,18),同时时间常数g=2。首先,算法决定f1的偏移:l1=0[步骤1中(a)],B1=1,E1=5[步骤1中(b)],因此r1=3[步骤1中(c)],这就意味着流的偏移量是4。然后更新列阵R:R[3]={f1,1},R[8]={f1,2}[步骤1中(d)]。对于流f2,l2=0,选择的区间是{4,5,6,7},此时B2=4,E2=7,r2=5,R[5]={f2,1}。对于流f3,l3=0,选择的区间是{9,10,1,2},此时B3=9,E3=2,r3=10,R[10]={f3,1}。应用算法得到的结果见表14.1。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。