“调度”是指按一定的顺序安排任务。根据Mindtools的随意定义,它考虑了日常生活中的日程安排,日程安排是计划您的活动的艺术,以便您可以在可用的时间内实现您的目标和优先事项。换句话说,调度通过优先处理那些最紧急的任务来确保有足够的时间来处理 最重要的任务。翻译到硬实时系统的世界:调度的关键功能是保证安全关键任务的执行。重要的不仅是任务的实际执行,而且要准确及时地执行。
我们已经在之前的文章“面向未来的实时汽车安全系统”中讨论了硬实时系统及其必须满足的要求。为了介绍这个概念,Kopetz 教授在他的经典著作Real-Time Systems中对调度问题进行了如下描述:满足他们指定的期限。每项任务都需要计算和数据资源才能继续进行。调度问题与分配这些资源以满足所有时间要求有关。”
让我们将其置于我们行业的背景下,汽车电子电气系统正在朝着整合传统分离领域的方向发展。随着汽车功能在通用硬件上的聚合,系统准确时间行为的重要性正在上升。对于自动驾驶 (AD) 系统来说尤其如此,它结合了复杂的功能和严格的安全要求。它们的软件功能必须与其他软件驱动的汽车功能共存并共享资源,同时不牺牲其实时安全要求,从而提高汽车操作系统的标准。此外,AD 不仅对单个功能提出了严格的实时要求,而且还对传感器、控制软件和执行器网络之间的优先级依赖关系提出了额外的要求。TTTech 实验室科学家 Silviu S.混合临界系统,在安全临界合规性、时间和空间隔离方面需要更高的标准,导致在运行时需要新的调度功能,在设计时需要新的配置工具。
随着自动、互联、电动和共享 (ACES) 移动性的出现,这些挑战随着汽车中越来越多的数字功能而增加。为了充分响应,现代汽车不仅需要额外的计算性能来运行日益复杂的软件,还需要能够真正保证个人和集体安全水平以及所有汽车功能优先级的机制。这就是为什么安全的实时调度是汽车未来的核心。
什么是实时调度?
分布式实时计算机系统在其节点上同时执行多个系统功能。为了确保整个分布式系统中功能的一致执行,所有传入事件必须由它们各自的节点按照它们发生的时间顺序进行处理。
因此,分布式系统的所有互连组件必须相互之间适当地同步,以确保整个系统的可靠行为。对于实时分布式系统,还需要通过与国际原子时间 (TAI) 对齐,使所有节点的本地时钟与遵循物理世界指标的参考时钟正确同步。
实时分布式系统的节点必须在相同的全局时间下运行
为了定义“正确的”同步,我们可以想象每个节点都以其本地时钟滴答,我们将这些滴答称为微滴答。在可接受的容差范围内与全局时间刻度对齐的微刻度子集将被称为全局时间的宏刻度(或简称为 tic)。因此,当这些宏观反映从正在考虑的节点集合的同步本地物理时钟中正确选择的微观时,将全局时间概念引入系统。
除了跨节点同步执行任务之外,节点之间的协调通信对于整个系统的成功运行也是必不可少的。每个任务都由多个单独的操作或步骤组成。在每个任务执行过程中,一个顺序程序读取输入数据和节点内部状态,确定并传递输出结果,更新节点内部状态。
所有这些都可以用时间来衡量:任务的实际持续时间是任务开始和结束之间的时间间隔。在所有可能的输入数据和执行场景下,任务执行的最大可能持续时间称为最坏情况执行时间(WCET)。在现实生活场景中,WCET 设置得越接近运行时,调度的使用效率就越高。抖动是 WCET 与任务的最小持续时间(任务执行的最小时间间隔)之间的差异。
在硬实时系统中,所有关键任务都必须按时完成
在硬实时计算机系统中,安全关键任务必须在严格的时序约束下执行。这些任务必须满足所有期限,并在非常紧迫的时间间隔内执行,以实现“全局”实时端到端保证。调度是将计算机系统的资源分配给任务以确保其准确及时执行的方法。在此基础上,实时调度是一种方法,通过这种方法在系统的节点上分配任务,使得任何节点上的任何任务的最大允许抖动值都不会超过,从而确保可预测的、因此整个系统的安全行为。
实现自动驾驶汽车的硬实时调度
实时调度可以通过不同的方式来实现。让我们考虑如下所示的可用选项:
实时调度分类
从上面开始,动态和静态硬实时调度的主要区别在于动态调度是在运行时在线执行的,而静态调度是在运行时之前离线执行的。动态调度器很灵活,可以“随时随地”做出调度决策。这意味着它们适应不断发展的任务流,从而从当前的就绪任务集中选择要调度的任务。在运行时查找此类计划的开销可能很大。动态调度器在运行时分配任务开始时间,而静态调度器在设计时就已经找到了这些时间。静态调度程序生成调度表,其中包含有关离线任务的完整信息集,然后在运行时调度这些任务。
继续我们的分类图,我们可以看到静态和动态调度的两种不同方法——抢占式和非抢占式调度。在抢占式调度中,一些任务可以被其他更紧急的任务中断(抢占)。在非抢占式调度中,任务可以决定何时将资源(通常在完成时)释放给其他任务。如果要执行许多短任务,那么以非抢占方式调度任务是有意义的。
寻找可行的时间表是一个复杂的过程,会导致整个分布式系统的效率更高。某些任务特征可能有助于此搜索。一个对可调度性特别有用的量是任务请求时间,即请求执行任务的时间。根据任务请求时间,我们可以区分两种类型的任务:周期性的和零星的。在第一次请求周期性任务后,通过将已知周期的倍数添加到初始请求时间,可以知道所有未来的请求时间。对于零星任务,请求时间在其激活之前是未知的。在这种情况下,可调度性标准是零星任务的任意两个请求时间之间是否存在最小间隔。此外,
考虑到可用的选项,什么是 AD 系统实时调度的正确方法?我们已经指出,AD 严重依赖于硬实时行为。查看 AD 系统的“内部”,我们会看到许多并发任务共享公共资源和交换数据。在现实世界的场景中,这涉及到许多依赖关系的考虑,例如优先级较高的任务优先于低优先级的任务以及任务之间的互斥约束以找到合适的调度。面对这些挑战,动态调度技术很难保证这些任务可用的紧迫期限,特别是考虑到管理 E/E 架构节点之间的通信的需要。换句话说,动态模型的表达能力不足以有效地捕捉所有这些现实生活中的需求,因此一旦系统超出动态模型中的(极其过度简化的)假设,就几乎不可能确保保证。因此,为了实现所需的可预测性水平,实际上确保自动驾驶功能的安全性,我们需要一个静态的运行前调度来代替。
静态调度是在设计时根据事件和执行活动的总体确定的调度,适用于不同复杂程度的系统,包括分布式实时系统。它处理分布式系统中预先计划的资源使用和对通信介质的预先计划访问。尽管计算机系统无法控制外部中断,但这些传入事件将被服务的时间点可以先验地定义,基于对每一类事件的假设。我们可以将静态调度视为对可行调度的搜索。此搜索的目标是找到一个完整的时间表,该时间表考虑了任务之间的所有优先关系和互斥约束,并确保所有任务在截止日期之前完成。为了改进和优化结果,可以将启发式函数应用于搜索。获奖论文Mapping and Scheduling Automotive Applications on ADAS (Advanced driver-assistance systems) Platforms using Metaheuristics提出了这种搜索优化策略。
尽管静态调度是一种实现高级系统可预测性的方法,但它只能处理在设计时已经知道任务之间的依赖关系的情况。为了能够解决可变的现实用例,引入了某些方法来增加静态调度的灵活性。
这种效率措施之一是模式切换。ADAS 应用程序以不同的操作模式运行,例如停车模式或高速公路模式。这两种模式不需要相同的服务和功能。如果将任务分开调度,则根据活动模式,可以实现更好的资源利用率。然后将资源分配到需要的时间和地点。系统设计人员必须识别所有操作和紧急模式,并离线计算每种模式的静态调度,然后当在运行时请求模式切换时,必须相应地激活模式切换调度。
这些是静态实时调度带来的要素,以确保安全的 AD 系统行为以及在广泛的可能场景及其个性化要求下对计算资源的最佳使用。他们必须确保系统的正确性和响应性。
使用MotionWise在实践中进行安全的实时调度
已经提到的 ACES 发展正在推动汽车行业向软件定义和集中式 E/E 架构发展。随着这一趋势,预计车辆操作系统将朝着在少数中央计算中心支持所有车辆功能的方向发展,同时确保整个系统的可用性和安全性。对测试和验证工作的需求正在增加,并且需要模拟真实场景以获得准确和值得信赖的系统行为。这种领域的整合,以及集成到系统中的混合关键性的不同应用程序,需要一个系统设计来支持关键软件功能的保证优先级以及它们不受可能干扰的影响。
进入 MotionWise,这是一个软件安全平台,它结合运行时服务和设计时工具来解决这些问题,为软件行为提供端到端的保证。通过为每个应用程序定义和强制执行预定义的执行边界并实现运行前静态调度,MotionWise 编排了较低级别操作系统提供的机制,以确保整个系统的实时行为。凭借其工具,MotionWise 能够以协调和无缝的方式沿着开发生命周期系统开发汽车软件,包括设计、集成、测试和验证。
让我们深入了解一下这里的工作技术:MotionWise 提供了一个执行管理器,可以确定性地协调跨系统中所有主机的多个应用程序的调度。主机之间的所有通信均通过确定性网络实现,并由 MotionWise Communication Manager Stack 进行协调。全局调度概念确保主机的所有任务调度与连接这些主机的骨干通信网络的网络调度一致。由于全局调度要求所有主机上的时间概念相同,因此必须得到专用 MotionWise 功能的支持才能实现可靠的时间同步。此外,所有这些都是通过 MotionWise 规划工具和执行车载软件堆栈从用户的角度抽象出来的。
现代分布式系统的复杂性,再加上极其复杂和不可预测的现实驾驶条件,为寻找能够满足高度自动化、软件定义车辆的安全要求的适当时间表创造了一个具有挑战性的起点。因此,创建有效的时间表需要全局视图:系统范围的计划和全局时间考虑。这通常意味着在多主机,有时甚至是多 ECU 环境中进行架构工作。全局调度程序为整个异构、多 ECU、多 SoC、多核系统创建调度。这是通过 MotionWise Creator 实现的,它根据用户定义的约束生成有效的时间表。该工具还可以在无法制定可行的时间表时提供信息。
MotionWise 全局调度程序功能
如前所述,现实生活中的情况通常会引入高度复杂的任务流程,此时需要妥善管理大量相互依赖、相互排斥的任务。为了确保所有这些任务根据它们的相互依赖关系和延迟要求得到良好的组织和调度,MotionWise 将这些任务分组到所谓的计算链 (CC) 中。此外,它们可以安排在任何主机上并具有不同的时间段。在运行时,CC 的确定性执行理想地由其任务和消息传输的 WCET 来确保。如果 WCET 无法准确估计,则无法保证特定任务不会超出其预定时间。在实践中,运行时预算是迭代估计的,以尽量减少超支的可能性。在仍然发生溢出的极少数情况下,MotionWise 会检测到,报告,并触发适当的错误反应。传入的任务可以分为事件驱动、数据驱动或时间驱动。例如,规划和控制是时间驱动的,而多个异步传感器输入是事件驱动的。数据驱动任务的一个例子是感知层,它由一系列进程组成,它们之间存在数据依赖关系。
计算链
由于不同的应用程序根据其要求和优先级在不同的主机上运行,ADAS 系统架构师决定将哪些策略应用于哪个应用程序,以满足所有功能和安全要求。
时间触发的调度策略能够高度确定地执行相关的时间驱动任务。这些任务在它们各自的固定长度时隙内被激活和执行,并在预定的时间点周期性地发生。调度表离线生成并静态部署。这种方法允许高度不受干扰,但是,任务可能不需要全部分配的时间预算来执行它们(尤其是那些具有高度变化的运行时间的),因此需要更有效地使用这些场景的资源。由于即使是对安全至关重要的任务也可能具有可变的运行时间,因此在每个主机上有效地使用资源非常重要。此外,在我们硬实时系统的整体处理活动中,不仅是周期性的,但也需要考虑零星的任务。这似乎是静态调度的弱点。
显然,现代汽车行业需要灵活的调度机制来涵盖各种可能的用例。作为对现实世界驾驶条件的响应,MotionWise 调度功能体现了灵活性和安全性之间的完美协同作用。我们的时间感知解决方案架构通过允许完成事件驱动和数据驱动的任务,同时仍然提供时间保证,从而能够执行各种应用程序。例如,周期性传感器输入(相机图像帧)本质上是异步的,因此必须以事件驱动的方式处理。MotionWise Scheduling Service 通过将事件驱动任务(传感器输入)集成到时间感知架构中来处理时间驱动和事件驱动任务。与时间驱动任务的预定义时隙不同,
我们的时间感知架构中的事件驱动任务
MotionWise还允许数据驱动的调度,其中用户可以定义一组数据驱动的任务。数据驱动方法的用例是在感知层中任务的动态顺序执行,其中数据驱动的任务可以在满足先决条件(输入数据准备好)后立即开始。尽管单个任务的执行本质上并不取决于先前任务的完成,但至关重要的是端到端延迟不超过上限。
通过数据驱动的调度优化资源
MotionWise 同时灵活而准确,展示了支持这一终极安全目标的不同机制。我们已经提到模式切换是一种非常有用的提高静态调度效率的方法。为了有效地分配资源,重要的是为系统的不同操作模式采用单独的调度方法。换句话说,具有单个调度表会导致资源使用不理想,并且生成调度需要更长的时间。MotionWise Scheduling Service 支持在运行时在多个预先配置的调度表之间切换,以实现互斥的应用程序,例如高速公路领航员和停车辅助。
正如本文所述,硬实时调度对于 ADAS 和整个 AD 发展至关重要。MotionWise 平台提供了当今规划、构建和运行安全的实时 E/E 架构所需的所有功能。随着 ACES 移动性在我们的世界中逐渐成为现实,必须在技术进步的同时确保人类生命永远不会处于危险之中。在 TTTech Auto,我们了解这一旅程的意义,并每天热情地工作,为安全提供无条件的解决方案,这是真正繁荣的现代移动性的要求。
审核编辑:郭婷
-
传感器
+关注
关注
2550文章
51035浏览量
753080 -
汽车电子
+关注
关注
3026文章
7941浏览量
166910 -
计算机
+关注
关注
19文章
7488浏览量
87852
原文标题:自动驾驶安全实时调度算法
文章出处:【微信号:阿宝1990,微信公众号:阿宝1990】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论