Page 99 - 《软件学报》2021年第6期
P. 99
陆寅 等:面向 AADL 模型的存储资源约束可调度性分析 1673
放时就进入 Ready 状态.
2.4 基于抢占序列的CRPD计算方法
AADL 架构中,线程构件是一种基本可执行任务单元,然而,建立 AADL 系统模型时并不会直接给出线程模
型的代码实现,因此无法依据模型给出任务调度时所需的 UCBs(UCB 集合)与 ECBs(ECB 集合).为了能够支持系
统 AADL 模型中各线程构件的 CRPD 计算,就需要在建模时刻画出被抢占任务的 UCBs 与 ECBs 属性,因此我们
需要对任务的缓存利用率进行定义.
定义 1. 线程构件缓存利用率(cache utilization(T i ),简称 CU i )是指线程任务 T i 运行时占用缓存中缓存块的
数量与缓存资源块总数量的比例.任务 T i 的缓存利用率 CU i 计算可通过公式(4)得到:
CU i =B i /C i (4)
其中,
1) B i 为任务 T i 所使用内存空间映射到缓存中的块数,其大小是由 AADL 架构模型中线程任务 T i 的 ROM,
RAM 资源使用量来决定;
2) C i 为缓存中缓存块总数.
这样,一个模型中所有线程的缓存利用率之和就称为系统缓存利用率(cache utilization,简称 CU).如果一个
系统的 AADL 模型中包含了多个线程构件:S={T 1 ,T 2 ,…,T n },系统的缓存利用率可以利用公式(5)得到:
n
CU = ∑ CU i (5)
i= 1
当多个线程同时使用一个缓存块时,系统缓存利用率大于 1.
在 AADL 中,存储器构件 Memory 中具有 Memory_Size 来描述 Memory 的存储容量,Memory 构件源属性及
其描述见表 4.
Table 4 Properties of AADL memory component
表 4 存储资源属性及其含义
属性名 含义
Source_Code_Size 表示程序编译、链接后产生的静态代码和只读程序,在软件构件、系统、处理器、外设构件中声明
Source_Data_Size 表示原文本中的程序编译链接后产生的可读可写的数据,在软件构件、系统、处理器、外设构件中声明
Source_Stack_Size 处理器、外设驱动、线程、子程序所需栈空间的最大容量.
Source_Heap_Size 表示线程和子程序需要堆资源的大小,是一个区间值
存储资源模型中,存储资源类型归类为 RAM,ROM 这两种.AADL 将 Memory 构件属性 Source_Code_Size
归为 ROM 类型,将 Memory 构件属性 Source_Data_Size,Source_Stack_Size,Source_Heap_Size 归为 RAM 类型.
同时还可以定义 Memory 构件属性 RomBudget,RamBudget,它们表示构件的 ROM,RAM 资源预估容量,属性
RomActual,RamActual 用来定义 Memory 构件实际使用的 ROM,RAM 资源容量.因此,任务映射到缓存中的缓存
块数 B i 计算方法如公式(6)所示:
B i =[ROM(T i )+RAM(T i )/Line_Size] (6)
其中,(1) ROM(T i )为任务 T i 的 ROM 资源占有量;(2) RAM(T i )为任务 T i 的 RAM 资源占有量;(3) Line_Size 为缓存
块大小,由 AADL 架构模型属性 Line_Size 确定.
根据缓存利用率,在缓存中以均匀分布的方式来产生任务的 ECBs,UCBs 的产生依赖于 ECBs,对每个任务
的 UCBs,可以通过 ECBs 乘以一个重用因子ρ得到,因此,UCBs 是 ECBs 的一个子集,集合的秩满足关系|UCBs|=
ρ⋅|ECBs|.ρ用来说明任务在执行时缓存块的重用率.影响重用因子ρ大小的因素有许多,比如程序执行流程存在
循环路径时ρ就较大,数据处理类线程的程序局部性没有指令控制类线程的程序局部性明显,因而控制类线程
的重用因子相较于数据处理类线程更高.在模型设计时,ρ是一个随机变量,其取值空间在[0,1]范围内,且服从均
匀分布 [20] .
利用算法 2 计算出任务集在一个超周期内的抢占序列,结合任务 T i 被抢占的时间以及 T i 的周期大小,就可