2020 RTSS: Pythia-MCS: Enabling Quarter-Clairvoyance in I/O-Driven Mixed-Criticality Systems
目录
一、文章核心
在混合关键性系统(MCS)中,模式切换是一种关键策略,动态平衡系统性能和安全性。在传统的MCS框架中,模式切换是由于任务的过度执行而触发的,即任务超出了最乐观的最坏情况下的执行时间(WCET)。然而,在网络物理系统中,I/O产生的数据量会影响甚至主导任务的计算时间。为了解决这一问题,本文提出了一种新型的MCS架构,称为Pythia-MCS,它根据I/O的运行时行为预测任务执行时间。Pythia-MCS提供了更及时且准确的模式切换。本文还提出了一种新的理论模型(四分之一预见性),并进行了一种新的可调度性分析,展示了Pythia-MCS相对于传统MCS框架的改进。
二、文章介绍
安全关键系统对生命关键应用至关重要。在这些系统中,将不同关键性等级的组件集成到共享硬件平台上变得越来越重要。在双重关键性MCS中,有两个关键性等级(高和低),并且任务的WCET估计具有不同的置信度。高关键性WCET(HI-WCET)非常保守,但可信度高;低关键性WCET(LO-WCET)则不那么保守,但可信度较低。模式切换是关键策略,当任务未能在LO-WCET内完成时,系统切换到高关键性模式(HI模式),此时假设高关键性任务可能会超过其LO-WCET,但不会超过其HI-WCET。
主要贡献
本文的主要贡献如下:
- 提出一种新颖的系统架构,支持运行时I/O监控和I/O驱动的模式切换。
- 提出一种新的理论模型——四分之一预见性,能够在任务执行过程中预测任务的过度执行。
- 提出一种新的可调度性分析,展示了Pythia-MCS相对于传统MCS框架的改进。
- 通过实验评估了Pythia-MCS在硬件和软件开销方面的性能,以及在实际汽车案例中的预测准确性。
系统架构
Pythia-MCS的系统架构在硬件和软件层面都有变化。硬件层面引入了Pythia协处理器,负责运行时监控和模式切换触发。软件层面,移除了传统MCS架构中的执行监控器,通过Pythia协处理器直接触发模式切换,从而减少了软件开销和系统复杂性。
Pythia协处理器
Pythia协处理器由两个主要模块组成:I/O监控单元(IMU)和模式切换单元(MSU)。IMU监控连接的I/O的运行时状态,并分解I/O数据包,报告数据量给MSU。MSU检查是否需要模式切换。
二、动机:I/O驱动的MCS
1. I/Os和任务执行时间的关系
为了理解I/Os和任务执行时间之间的关系,可以将任务分解为两部分:
- I/O独立计算:包括纯软件计算,不涉及I/O访问。计算时间通常取决于系统微架构,例如CPU架构、分支预测、内存带宽等。
- I/O相关计算:包括I/O访问和I/O绑定的计算。计算时间通常由I/Os生成的数据量决定。
如果任务涉及I/O相关计算,则称其为I/O相关任务,否则为I/O独立任务。
算法1:以太网控制任务的伪代码
如图1所示,任务在时间点t0释放,执行I/O独立计算,在时间点t1开始I/O相关计算。I/O独立计算时间是常量,而I/O相关计算时间随收到的以太网数据包的数量变化。
3. I/O驱动的模式切换
实现基于传统MCS模型的I/O驱动模式切换需要以下两个特性,这些特性必须在线下获取:
- I/O访问点():I/O相关计算始于处理I/O访问(如算法1中的第7行)。在当前/下一次任务释放时处理的I/O数据分别在之前/之后接收。
- 阈值I/O数据量(TH-I/O):在,如果任务积累的数据量(记作)超过其TH-I/O(即),则预测任务将超过其LO-WCET,因此需要模式切换。
4. 实验测量和
首先,移除未检查的任务,初始化系统且无I/O数据输入。然后线性增加I/O数据输入量,并在每个系统配置下执行系统10000次。在每次实验中记录I/O访问时间点,并检查任务是否超出LO-WCET。图2显示了测量结果,选择20 MB作为TH-I/O,即当I/O数据量超过20 MB时可能发生超时。
5. 研究挑战
为了实现I/O驱动的模式切换并创建具有一定预见性的MCS,需要解决以下关键挑战:
- 必须在线监控每个I/O生成的数据量。一个I/O通常由多个任务调用,因此在线监控必须及时且精确地确定每个对应任务的I/O数据量。
- 必须及时地将发送给每个任务的数据量与其TH-I/O进行比较。比较必须在对应的I/O访问点进行(或在小范围内)。
- 需要新的系统架构来支持上述功能。实际上,任务可能仅包含I/O独立计算(即I/O独立任务);因此,提出的系统架构必须同时支持I/O驱动和传统MCS模型。
- 需要新的可调度性分析框架来理论上评估新型I/O驱动的MCS模型带来的可调度性改进。
通过引入新的Pythia-MCS系统架构和相应的可调度性分析来解决这些研究挑战。
三、 Pythia-MCS架构
A. 背景
本文假设如下:
-
平台为嵌入式片上网络(NoC)。
- Pythia-MCS对总线类型无依赖。
- NoC的部署可以增强片上事务的可预测性。
-
Pythia-MCS适用于单核和多核架构。多核Pythia-MCS中采用完全分区方案
-
一个任务最多可以访问一个I/O,而一个I/O可以被多个任务访问。
B. 设计概念
Pythia-MCS有两个主要设计概念:
- 在线I/O监控:Pythia-MCS引入了Pythia协处理器,监控并分析I/O生成的运行时数据。
- 自适应模式切换:Pythia-MCS支持I/O驱动和传统模式切换。在运行前,I/O相关高关键性任务的TH-I/O和I/O独立高关键性任务的LO-WCET预加载到协处理器。在运行时,协处理器检测到I/O相关高关键性任务超过TH-I/O或I/O独立高关键性任务超过LO-WCET时触发模式切换。
C. 传统MCS系统架构
传统MCS架构(见图3上半部分)基于传统嵌入式/计算机架构,并增加了一个执行监控器,通常在操作系统(OS)级别实现,比用户应用具有更多权限。执行监控器必须支持以下两个功能:
- 监控任务执行时间;
- 检测高关键性任务过度执行时触发模式切换。
这两个功能通过硬件中的专用计时器和OS内核中的附加库(lib mode switch)合作实现。不同实现方法包括将执行监控器集成到OS内核中(例如Kim等人的研究)或实现为独立的虚拟机管理程序(例如Li和Xi等人的研究)。
运行时行为:
- 系统初始化时,预加载高关键性任务的LO-WCET到内存。
- 在上下文切换期间,OS内核挂起当前执行任务的计时器并(重新)激活下一个执行任务的计时器。
- 如果高关键性任务超过其LO-WCET,硬件计时器发送中断触发lib mode switch执行模式切换。算法2展示了这一过程的伪代码。
D. Pythia-MCS系统架构
与传统MCS系统架构相比,Pythia-MCS在硬件和软件层面都有架构变化(见图3下半部分):
硬件层:如设计概念所述,运行时监控和模式切换触发由Pythia协处理器管理。因此,在硬件层面,我们用新的协处理器取代了传统MCS架构中监控任务执行时间的计时器。
软件层:移除OS层管理硬件计时器的执行监控器。在Pythia-MCS中,来自Pythia协处理器的触发模式切换的中断直接路由到OS内核中的lib mode switch。移除执行监控器有效减少了软件开销和系统复杂性。
运行时行为:新的系统架构带来了不同于传统MCS框架的运行时行为。在系统初始化时,预加载I/O相关高关键性任务的LO-WCET和I/O独立高关键性任务的TH-I/O到协处理器。在上下文切换期间,OS内核与协处理器同步计划任务的ID(见算法3第3行)。如果I/O独立高关键性任务超过其LO-WCET或I/O相关高关键性任务超过其TH-I/O,协处理器生成中断以触发lib mode switch执行模式切换。算法3展示了这一过程的伪代码。
五、 Pythia协处理器
Pythia协处理器的典型使用场景是在基于片上网络(NoC)的多核架构中(见图4),其中协处理器物理连接到一个路由器/仲裁器进行片上通信,并与不同的I/O设备连接以进行运行时I/O监控。
协处理器设计概述(见图5)
Pythia协处理器设计为模块化,包含两个主要模块:
- I/O监控单元(IMU):观察连接I/O的运行时状态,并分解I/O数据包,然后将数据量报告给模式切换单元(MSU)。IMU的设计是通用的,可以直接应用于同一系统中的不同I/O设备。
- 模式切换单元(MSU):检查是否需要进行模式切换。MSU的设计也是通用的,可以直接应用于不同的系统。
A. I/O监控单元(IMU)
I/O监控 从嵌入式/计算机架构的角度来看,软件任务访问I/O通常涉及系统组件,如OS内核、I/O驱动程序、总线互连和I/O控制器。因此,可以从系统的任何层次监控I/O行为。为了保证监控事务的及时性和数据分解的兼容性,I/O监控被放置在硬件层,即I/O控制器和总线互连之间(见图4)。
I/O数据分解 I/O数据分解返回每个I/O数据包的数据量和目的地。分解选定层次(即I/O控制器和总线互连之间)的I/O数据包。
这里以AMBA AXI协议为例,解释I/O数据分解。AMBA AXI协议包含五个通信通道:写/读地址通道、写数据通道和写/读响应通道。片上事务总是从写/读地址通道初始化,提供事务的必要信息。因此,IMU只需监控这两个通道。例如,在写地址通道中,事务通过将AWVALID和AWREADY信号设置为1来初始化。
同时,控制信号AWID、AWLEN和AWSIZE变为有效,表示事务的目的地、长度和大小。事务的数据量(记作)由公式1计算。
图6展示了一个写地址通道的波形示例。IMU设计如图7所示,包含运行时采样器、访问接口和内存库。内存库存储每个任务未处理的数据量(即υi)。系统执行期间,采样器分解捕获的每个I/O数据包,返回其目的地(即任务τd)和数据量(即υ∗),然后将υ∗加到τd的未处理数据量中,并将计算结果存回内存的对应地址。
模式切换单元(MSU) MSU是Pythia协处理器的核心,在运行时触发模式切换。MSU通过三个执行阶段确定模式切换的必要性:
- 离线预加载:运行前,每个高关键性任务的(虚拟)I/O访问点(CiS)和(虚拟)TH-I/O(ΥiL)被分组并存储在MSU中。
- 在线同步:运行时,MSU持续与OS内核同步,更新当前执行高关键性任务的计算时间(Ci),并与IMUs同步,更新当前高关键性任务的未处理I/O数据量(υi)。
- 决策:在每个高关键性任务的CiS处,MSU将υi与ΥiL进行比较。如果υi>Υi,MSU触发中断进行模式切换。比较后,MSU将υi重置为0。
为了支持这些执行阶段,MSU设计了两种可能的方法:
- 硬件/软件协同设计(见图8(a)):预加载(虚拟)I/O访问点和(虚拟)TH-I/O存储在内存单元中;运行时同步和比较由处理器上执行的软件处理。
- 纯硬件设计(见图8(b)):保留内存单元,但用两个决策器替换处理器。每个决策器包含一个同步器和一个比较器。
这两种方法都引入了影子寄存器,以保证MSU与整个系统的时间同步。
尽管预见性在一般情况下表示能够预测未来,但在MC调度中,最近文献中研究了几种不同程度的预见性。本文引入了介于预见性和非预见性之间的中间概念,称为半预见性。本文提出了一种新的预见性程度,称为四分之一预见性,介于半预见性和非预见性之间。
A. 系统模型
我们考虑在单处理器上调度一组n个MC任务。每个MC周期性任务τi在两次连续作业之间至少有Ti时间单位的最小间隔。任务τi的第j个作业记为,它在时间释放,并在时有一个绝对截止时间,其中Di是任务的相对截止时间。我们关注隐式截止时间,即对所有任务Di=Ti
我们考虑一个双重关键性任务系统,其中每个任务要么是高关键性任务,要么是低关键性任务。高关键性任务集记为,低关键性任务集记为。
高关键性任务有两个WCET估计值:一个极其保守但安全的值(例如,通过静态时序分析和/或增加了安全裕度因子)记为,另一个不那么保守的值(例如,通过测量)记为。低关键性任务只有一个WCET估计值,记为。
高关键性任务的低关键性利用率记为,高关键性利用率记为。低关键性任务的利用率记为。
B. EDF-VDSD算法
为了改进调度性,提出了一种新的调度算法,称为EDF-VDSD,通过利用协处理器带来的预见性来改进调度性。
EDF-VD是MCS的调度算法。它通过为高关键性任务分配虚拟截止日期来改进系统的调度性能,从而提高系统的可调度性。
虚拟截止日期是指为高关键性任务在低模式下分配的比其实际截止日期更早的截止日期。这种做法的目的是在lomode下提高任务的调度优先级,从而在任务可能需要更长的执行时间(超过低模式的WCET)时及时切换到高模式。
lo模式下的调度:在LO模式下,所有LO任务按照它们的实际截止日期进行调度,而所有HI关键性任务按照它们的虚拟截止日期进行调度。由于HI关键性任务的虚拟截止日期比实际截止日期更早,它们会获得更高的优先级,从而提前完成。
模式切换: 当hi任务接近其虚拟截止日期时,如果发现任务可能会超过其lo模式的WCET,系统会切换到hi模式。在hi模式下,所有lo任务被丢弃,剩下的hi任务按照实际截止日期进行调度,以确保它们能够在更长的WCET范围内完成。
运行前处理 与EDF-VD类似,EDF-VDSD也为每个高关键性任务τi计算相对虚拟截止时间,其中。此外,还为每个高关键性任务计算相对切换截止时间。
每个hi作业在处有一个虚拟截止时间,在处有一个切换截止时间。
表示hi任务 τi在lo模式下执行时间的某个特定时间点,系统可以在此时间点预测该任务是否会超过其lo-WCET。如果任务 τi 在执行了 时间单位后,系统可以预测它是否需要更多时间来完成整个任务(即超过lo-WCET),从而决定是否触发模式切换。
运行时调度 在运行时,采用基于截止时间的调度方案。在LO模式下,每个LO作业使用其实际截止时间作为优先级进行调度,每个HI作业被认为分为两个子作业。具体来说,每个HI作业的前时间单位执行被认为是第一个子作业,并以切换截止时间为优先级进行调度;任何超过时间单位到lo-WCET的执行被认为是第二个子作业,并以虚拟截止时间为优先级进行调度。
C. 可调度性测试
我们现在分析EDF-VDSD下的可调度性,并提出一个在多项式时间内运行的可调度性测试。
引理1 在EDF-VDSD下,在lo模式中,所有lo作业满足其实际截止时间,所有高关键性作业的第一个子作业满足其切换截止时间,所有第二个子作业满足其虚拟截止时间,如果
证明:
-
流体调度模型:
- 假设在低模式下,每个低关键性任务 τk 被连续地分配执行率。
- 每个高关键性任务 τi被连续地分配执行率 。
-
流体调度满足性:
- 在这种流体调度中,所有低关键性任务满足其实际截止时间。
- 所有高关键性任务的第一个子作业满足其切换截止时间,所有第二个子作业满足其虚拟截止时间。
- 这是因为流体调度的总分配率满足:
-
EDF-VDSD调度满足性:
- 在EDF-VDSD下,这些低关键性作业、第一子作业和第二子作业按照它们的实际截止时间、切换截止时间和虚拟截止时间进行调度。
- 由于EDF在单处理器上的最优性,存在可行的流体调度意味着EDF-VDSD也保证所有“作业”满足它们的“截止时间”。
- 因此,引理1得证。
引理2 在EDF-VDSD下,在hi模式中,所有hi作业满足其实际截止时间,如果
定理1 任务系统是MC可调度的,如果
这直接意味着一个在O(n)时间内运行的充分可调度性测试,其中n是任务的数量。
剩余证明请参考原文