前言
在2024年2月26日,ETAS推出了名为“Time-Triggered Scheduling (TTS)”的确定性调度解决方案。这项技术旨在改变汽车行业中的软件工作负载管理方式。随着汽车行业向软件定义车辆(SDV)的转变,软件组件数量不断增加,依赖关系变得复杂,底层硬件资源也多样化。特别是在集成了系统级芯片(SoC)的电子控制单元(ECU)和高级驾驶辅助系统(AD/ADAS)的开发中。
Time-Triggered Scheduling (TTS)
Time-Triggered Scheduling (TTS) 中间件是为多核 SOC 嵌入式系统设计的,它提供了一种时间确定性的调度方法。这种调度方法能够确保系统的行为和响应时间是可预测的,这对于需要高度精确和实时响应的复杂系统至关重要,通过预先定义任务的执行计划,TTS能够有效地管理多核处理器中对共享资源的访问,从而减少因资源竞争导致的延迟和不确定性,提升系统的实时性能和整体可靠性。这项技术的引入将有助于更好地满足未来汽车系统对性能、可靠性和安全性的需求。
智能汽车软件的现状与挑战
智能汽车中的应用程序数量和同时运行的任务数取决于车辆的具体软件架构和硬件能力。目前,智能汽车的软件架构正逐步向服务导向架构(SOA)演进,这意味着软件和算法成为车企竞争的核心要素。例如,一些高级的智能汽车平台可能集成了多达数百个应用程序,同时运行多个任务以支持复杂的功能,如自动驾驶、智能座舱管理、娱乐系统等。
1.1什么是确定性调度?
确定性调度是指在操作系统中,任务或任务链按照预定的时间和顺序执行,以确保系统行为的可预测性。
虽然Linux系统本身不是一个实时操作系统,但它可以通过实时调度策略来增强任务的确定性执行。这意味着,即使在非实时系统中,也可以通过特定的调度策略来提高系统对任务执行时间的控制。
实时系统与非实时系统的主要区别在于,实时系统能够提供更强的时间保证和更高的确定性。
时间的确定性:
在嵌入式系统中,时间的确定性是指系统能够保证在规定的时间内完成特定的任务。这是实时操作系统(RTOS)的一个重要特性,它可以分为硬实时和软实时两种类型。
硬实时系统:
硬实时系统要求在严格的时间限制内必须完成操作,任何超时都是不允许的。这种类型的系统通常用于关键任务,如飞行控制系统或医疗设备,其中任何延迟都可能导致严重后果。
软实时系统:
相比之下,软实时系统对完成任务的时间要求较为宽松,允许一定程度的延迟。这类系统通常用于多媒体应用等领域,其中一些小的延迟不会导致灾难性的后果。
基于时间的确定性调度:
软实时系统可能无法提供同样的时间保证,但通过实现实时调度策略,可以在一定程度上提高确定性调度的吞吐量。换句话说,确定性调度并不会将Linux转变为实时系统,但通过实时系统提供的调度机制可以提高Linux中任务执行的时间确定性,从而在特定应用中提升系统的整体性能。
1.2确定性调度的重要性和面临的挑战
确定性调度是系统设计中的一种关键技术,它通过精确控制任务执行的时间和顺序,来确保系统的可预测性和稳定性。汽车行业面临着一系列前所未有的挑战,这些挑战包括:
任务执行的可预测性:确定性调度确保系统中的任务能够按照预定的时间和顺序执行,这对于实时系统至关重要,因为它们通常需要在严格的时间限制内响应外部事件。
系统稳定性:通过确保任务按照既定的计划执行,确定性调度有助于维持系统的稳定性,尤其是在软件迭代和集成过程中,这有助于减少因任务冲突或资源争用导致的不稳定性。
周期性任务的管理:在AD/ADAS系统中,如传感器数据采集等周期性任务需要准确而灵活地执行,确定性调度可以协调这些周期性任务,确保它们按时完成。
计算结果的时效性:例如,基于融合后数据的路径规划需要在特定时间内完成,确定性调度可以保证这些计算任务及时执行,以满足系统对时间的严格要求。
偶发任务的处理:确定性调度允许系统在不影响核心任务的情况下,及时处理如异常情况等偶发任务。
任务执行顺序:在多团队开发环境中,不同团队开发的算法任务可能存在依赖关系,确定性调度有助于协调这些任务的执行顺序,降低同步和协调的复杂性。
算法复杂度:数据采集、融合、规控等算法不仅复杂,而且更新迭代速度快,通常涉及多个开发团队。
性能监控:确定性调度提供了一种方案来监控核心任务的执行情况和测量任务的性能,这对于优化系统性能和确保质量标准至关重要。
在信息娱乐系统(IVI)或车身控制系统中,确定性调度同样重要,因为它协调了如数字信号处理器(DSP)和SoC之间的数据处理任务,确保数据的准确传输和处理。
基于SoC的ECU开发要求开发者在保证算法复杂度和迭代速度的同时,还要管理好任务的稳定性、时效性和执行顺序,确保系统整体的高性能和可靠性。这需要一套综合的任务调度和性能监控机制,以适应自动驾驶系统的高安全和实时性要求。
1.3ETASTTS确定性调度如何解决这些问题
确定性调度的范围涵盖了多个关键领域,以确保复杂系统中任务的准时执行和资源的有效管理。以下是清晰的描述:
1.基于时间触发任务调度:
周期任务和浮动任务激活窗口:TTS确保周期性任务在预定的时间窗口内激活,同时为非周期性任务提供灵活的激活机制。
CPU资源(时间片)管理:通过分配固定的时间片,TTS允许任务在指定的CPU资源上运行,优化处理器的使用。
执行时间监控:TTS监控任务的执行时间,确保它们不会超出预定的时间限制。
性能测量:开发者可以选择性地测量任务的性能,以评估系统的效率和响应速度。
2.基于数据触发任务、任务链调度:
任务依赖链和协调同步:TTS管理任务之间的依赖关系,并确保它们按照正确的顺序同步执行。
CPU资源和数据内存共享:TTS允许任务共享CPU和内存资源,同时管理这些资源的访问,防止冲突。
依赖链时间监控:TTS监控依赖链中各任务的时间,确保整个链的流畅运行。
3.基于事件触发任务、任务链调度:
零星事件处理:TTS支持对非周期性事件的及时响应,如传感器输入或用户交互。
事件处理任务链:任务链中的任务按照事件触发进行调度,确保系统的反应能力。
CPU最佳利用:通过精确的时间控制,减少系统中的不确定性,确保数据传输和处理的及时性。
任务、任务链deadline:TTS管理任务的截止时间,确保任务按照既定的性能标准运行。
4.调度表切换:
多模系统:TTS支持在不同模式下切换调度表,适应多变的系统需求,提高了中间件的灵活性。
5.可视化调度工具:
系统资源预测:TTS提供工具,如可视化调度工具,帮助开发者更好地理解和管理任务调度。
6.日志查看过滤工具:
DltViewer:集成了DltViewer,这是一个用于远程日志查看和分析的工具,增强了用户的日志管理能力。
ETAS TTS确定性调度通过这些功能的集成,成为了一个高度可配置、可监控和性能优化的中间件解决方案,为软件定义车辆的开发和运行提供了强有力的支持。
ETAS确定性调度中间件—TTS
Time-Triggered Scheduling (TTS)中间件,专为复杂的多核心系统设计,以确保智能驾驶系统的任务能够得到有效的全局编排和调度。这种中间件通过时间触发、数据触发和事件触发的机制,为智能驾驶系统提供了一个可靠和确定性的运行环境,为关键任务链提供了确定性的计算、通信和端到端的时延保证。它支持多种场景和任务组合,能够为多核SoC的系统提供整体规划,确保任务的确定性执行。这对于确保系统的稳定性和性能至关重要,特别是在需要高度安全和实时响应的智能驾驶应用中。
Time-Triggered Scheduling (TTS) 确定性调度系统是为高度复杂和实时性要求严格的环境设计的,它通过一系列精细的机制确保任务的及时执行和资源的高效管理。
以下是TTS系统关键特性的概述:
任务调度:TTS为周期性和非周期性任务提供了精确的激活窗口,确保它们在适当的时间内启动。
资源分配:通过固定时间片的分配,TTS优化了CPU资源的使用,提高了处理器效率。
执行监控:TTS严格监控任务执行时间,防止任何任务超出其预定的时间限制。
性能评估:开发者可以测量任务性能,以评估和优化系统效率。
依赖管理:TTS协调任务之间的依赖关系,确保按正确顺序同步执行。
资源共享:TTS管理CPU和内存资源的共享,任务时间片共享,避免资源访问冲突。
多模式支持:TTS适应不同系统模式下的调度需求,增加了系统的灵活性。
预测与记录:TTS预测资源需求并进行日志记录,便于后续的问题追踪和性能分析。
调度灵活性:TTS支持调度表的动态切换任务调度,提高了调度的灵活性。
可视化工具:TTS提供可视化调度工具和DltViewer,帮助开发者更好地理解和管理任务调度。
ETAS TTS中间件是一个多功能的实时任务调度系统,它通过时间触发、数据触发和事件触发机制,实现了任务的精确调度和性能监控。这个系统不仅提高了任务执行的效率和准确性,还通过其灵活的调度策略,确保了系统的高度可靠性和韧性。
通常情况下,TTS中不管是基于时间触发的任务调度还是基于数据触发的任务和任务链调度,面向的任务都是周期性任务。
在运行时处理任务动态性的挑战以及调度的关键点,如激活窗口设计和支持多模式系统,通常可以可以概括为时间触发和非时间触发。
非时间触发(如固定优先级或最早截止日期优先):可能会导致所有其他任务的执行发生变化,从而改变整个系统的状态。这种调度方式在处理突发事件时具有灵活性,但也可能引入不确定性,因为任务的执行受到其他任务和系统状态的影响。
时间触发: 保持所有其他任务的执行不变,不会引起系统状态的变化。这种调度策略按照预定的时间表执行任务,提供了更高的确定性和可预测性。它适用于那些需要严格时间控制的应用,如工业控制系统或安全关键的应用。时间触发调度通过固定的激活窗口和对多模式系统的支持,为系统提供了稳定和可靠的任务执行环境。
2.1基于时间触发的任务调度
TTS的时间触发任务调度系统,它通过浮动窗口激活周期性任务,并为这些任务分配时间片,确保它们在指定的时间内得到执行。这种调度方式采用动态优先级和FIFO(先进先出)策略,以及对任务执行的严格监控,确保关键任务在截止时间前被激活并释放CPU资源给其他任务。此外,系统支持多模式操作,允许在不同的核心上调度同一进程(SWC)的Runnable,以及通过线程池为Runnable分配线程,并提供性能测量接口。
基于时间触发的任务调度可以实现以下目标:
1.周期任务动态激活窗口:通过精确的激活时间窗口,确保系统中的周期性任务既能按照预定的时间表执行又有一定的灵活性,从而维护系统的稳定性。
2.核心任务资源保障:即使增加新的软件模块,也不会影响已有的核心功能模块的运行状态。这意味着核心任务的资源分配和执行不会受到其他任务的干扰。
3.任务执行监控:对任务的执行进行监控,确保任务按照预期执行。如果任务执行超出预期,错误处理模块将及时上报异常。
4.性能测量通道:为开发者提供任务性能测量的通道,以便评估任务的执行效率和性能。
5.快速集成:这种调度策略可以快速集成到已开发的软件系统中,为系统提供更高的可靠性和实时性。
TTS(Time-Triggered Scheduling)的核心功能之一是为POSIX系统提供稳定和可预测的任务执行环境,确保任务的确定性执行,同时提供了灵活性和可扩展性,以适应不同的系统需求和运行模式。以下是其关键特性:
浮动窗口激活周期任务:通过动态调整任务的激活窗口,TTS确保即使在系统负载变化的情况下,周期性任务也能够稳定执行,增强了系统的韧性。
任务分配时间片:每个任务都被分配了一个时间片,确保它在指定的时间内有足够的CPU资源来执行,从而保证任务的运行时资源。
动态优先级:TTS使用动态优先级机制(例如Linux中的FIFO调度)来保证任务在其时间片内得到执行。
任务执行监控:系统监控任务的执行情况,确保任务在最晚开始时间之前激活,并在截止时间之前释放CPU资源,以供其他任务使用。
调度单位:TTS将SWC(Process)中的Runnable(Thread)作为调度单位,这些Runnable可以在不同的核心(Core)上进行调度。
线程池:通过线程池为Runnable分配线程,并提供性能测量接口,使开发者能够监控和评估Runnable的性能。
调度表切换:TTS支持多模式系统,允许根据不同的运行模式切换调度表,这些调度表包含了基于时间触发、事件触发和数据触发的任务。
2.2基于数据触发的任务链调度
数据触发任务链调度是TTS的核心功能之一,它支持基于图形依赖关系的任务链。在这个系统中,每个Runnable都被分配了时间片,并且它们的运行状态不仅取决于自身的时间触发属性,还受到任务链中其他任务的影响。所有Runnable共享时间片,形成一个有向无环图。系统内部提供共享内容机制,以及接口来保证数据在有依赖关系的Runnable之间传递。此外,系统还监控图的执行时间和性能。
多任务编排示运行意图
数据触发任务链调度是TTS提供的一种调度策略,它支持基于图状依赖关系的任务链。这种策略中,每个可运行单元(Runnable)都是周期性任务,并且被分配了时间片,以确保任务链中的任务能够有效地运行并访问资源。在这个系统中:
每个节点都具有时间触发属性,其运行状态还取决于任务图中其他任务的运行状态。
所有Runnable和组内的Runnable共享时间片,以优化资源利用。
为了避免循环依赖和潜在的死锁,Runnable组成的图必须是有向无环图(DAG)。
在同一SoC内部,提供了共享内容机制,通过接口保证有依赖关系的Runnable之间的数据传递。通过集成了ETAS RTA-VRTE PIPC(共享内存组件,冰羚的商业版)来保证Runnable之间的数据高效、安全传输。
图中的Runnable(Thread)可以属于不同的软件组件SWC(Process)以及不同的处理器核心。
系统提供了图的执行时间监控和性能测量功能,以确保调度的效率和效果。
此调度策略与基于事件触发的任务链调度相结合,形成跨SoC的综合调度图。
这种调度方法为开发者提供了一个清晰的框架,用于管理和优化在复杂的多核环境中的任务执行。
2.3基于事件触发任务、任务链调度
事件触发任务调度则关注于处理偶发事件,无论是单个任务还是任务链。它的目标是确保这些任务在规定时间内完成,而不是简单地提高响应速度。这个系统也构建了一个有向无环图,其中的Runnable可以属于不同的SWC和核心。它还提供了任务链中有依赖关系的Task之间的数据缓存机制和数据同步机制。
它的核心功能包括:
支持零星事件处理:可以是单个任务或一系列任务链,以灵活应对不同的事件处理需求。
确保任务按时完成:重点是在规定时间内完成任务,而不仅仅是快速响应。
有向无环图结构:Runnable组成的任务图必须避免循环依赖,确保任务的顺利执行。
事件分类:零星事件可以被定义为用户级或系统级,以区分事件的来源和重要性。
动态资源管理:CPU资源的动态计算,确保处理零星事件的同时,不会影响其他已有任务的执行。
跨SWC和核心的任务分配:任务链中的Runnable可以分布在不同的软件组件和处理器核心上。
监控和性能测量:对处理事件的任务链进行Deadline监控和性能测量,以优化调度效率。
数据缓存和同步:为有依赖关系的Task提供数据缓存和同步机制,确保数据的一致性。
这种调度策略为软件定义车辆(SDV)中的事件驱动任务提供了一个可靠和高效的框架,特别适用于需要精确时间管理的自动驾驶和高级驾驶辅助系统。
2.31系统事件和用户事件
在基于事件的调度系统中,当事件被触发,系统的首要关注点是确定事件的处理时间。这涉及到从事件发生的那一刻起,评估系统上所有CPU核心的空闲时间,以确保是否有足够的资源来处理该事件。
这种调度机制的关键特点是它能够同时响应事件并及时处理,同时保证不会干扰到其他周期性任务的调度。事件被分为两类:
系统事件:这类事件一旦触发,会立即抢占其他任务的资源以开始执行,因为它们通常具有更高的优先级。
用户事件:对于这类事件,系统会先计算所有CPU核心的空闲时间,以判断是否有足够的资源来处理事件。只有在资源不足以处理事件时,才会考虑抢占其他任务的资源。
这些事件的处理通常是动态的,它们只有在运行时才会被分配到具体的CPU核心。这种动态分配和资源管理确保了系统能够灵活地响应各种事件,同时维持其他任务的稳定运行。
2.4调度表切换
ETAS确定性调度系统能够根据实时需求灵活切换工作模式。系统可以在紧急情况下迅速转换到新模式,虽然这可能会带来一定程度的不确定性和不可预测性。为了安全和可预测性,系统也可以在预定的时间点,如任务周期的开始或结束时,安全地切换到新模式,确保所有组件同步更新状态。这种设计既满足了即时响应的需求,也保证了系统的稳定运行。
时间触发调度系统的模式变更
时间触发调度系统的模式变更,提供了更细粒度的灵活性和动态行为:
•基本模式变更 - 一组基础模式,例如停车、巡航控制、城市驾驶等。
•即时变更 - 新模式在触发后尽可能快地发生。
o系统状态可能是不确定的。
o缺乏所需的可预测性。
o例如,从巡航控制到驾驶员控制的紧急模式。
•延迟变更 - 在调度周期的结束或开始的预定义点,确保所有节点切换到新模式。
o系统状态是安全的。
o可预测性。
o例如,从驾驶模式切换到停车模式。
2.5ETAS确定性调度中间件TTS的其它功能
TTS中间件是一个多功能的软件框架,专为软件定义车辆而设计。它不仅提供了强大的确定性调度能力,还包含了一系列辅助功能,以支持车辆系统的高效开发和运行。以下是TTS中间件的一些关键功能:
日志记录:具备全面的日志记录功能,允许用户应用层软件记录事件,便于追踪和问题诊断。
DltViewer支持:集成了DltViewer,这是一个用于远程日志查看和分析的工具,增强了用户的日志管理能力。
数据传输与共享:通过IceOryx支持,实现了任务链之间的高效数据共享,提升了数据处理的速度和可靠性。
多模式系统支持:能够根据不同模式切换调度表,适应多变的系统需求,提高了中间件的灵活性和适应性。
AUTOSAR Adaptive集成:与ETAS AUTOSAR Adaptive(VRTE)平台紧密集成,尤其是与PHM模块的集成,使得任务执行监控结果能够上报给PHM处理,从而增强系统的自我监控能力。
配置和调度验证工具:提供了配置工具和调度验证工具,帮助用户确保系统配置的准确性和调度策略的有效性。
eBPF性能分析工具集成:集成了eBPF性能分析工具,这是一种先进的性能分析技术,帮助用户优化系统性能。
综上所述,ETAS TTS中间件通过这些功能的集成,成为了一个高度可配置、可监控和性能优化的中间件解决方案,为软件定义车辆的开发和运行提供了强有力的支持。
2.5.1日志记录
Log模块中的Stamp后台进程是一个关键组件,它在用户发出指令时被唤醒。这个进程负责捕捉和记录线程的调度状态、状态转换触发的具体时刻等重要信息,并将这些数据整理成日志文件。
Log模块内部流程图
用户随后可以通过用户界面查看这些详细的日志信息,以便进行系统监控和性能调优。
Runnable实际运行状态图
TTS的日志模块与ETAS AUTOSAR Adaptive(RTA-VRTE)平台可以无缝集成,特别是与PHM模块的交互。这样,任务执行监控的结果可以传递给PHM处理,从而增强了系统的自我监控能力。
2.5.2TTS配置工具以及调度分析工具
TTS中间件的配置工具和调度分析工具是为高效和精确的任务管理而设计的。
2.5.2.1TTS UI配置工具
TTS确定性调度中间件配备了一个定制的UI配置工具,该工具具有跨平台的灵活性,如Ubuntu和Windows操作系统上独立运行,或者作为Eclipse插件集成到现有的客户现有的工具链中,提供无缝的用户体验和增强的工作流程效率。这个工具提供了一个直观的界面,使用户能够轻松配置和管理调度任务。
如下图所示:在软件组件SWC(Process)中,您可以设置进程的可执行文件信息,确保正确的程序被调用。对于Runnable(rnbl或Thread),则是配置线程或任务的细节,以便它们能够按预期执行。而在任务链(TaskChain,简称grp1)中,通过配置任务的序列和关系,这样它们就能以正确的顺序和方式协同工作。这些配置步骤是确保系统中各个部分能够高效、准确地协同运行的关键。
TTS UI配置主界面
TTS UI配置——Arcs1(任务链的一段)
TTS UI配置——任务链
TTS中间件允许用户利用图形化界面,基于他们所配置的文件,直观地监控整个系统中Runnable的预期运行状况。这个功能不仅可以帮助用户提前识别出任何不合理的任务规划,还能通过特定命令激活确定性调度模块来跟踪和记录Runnable的实际运行数据,如启动时间、运行时长以及被中断的时间等。这些信息随后会在UI界面中展示,使用户能够实时查看并分析任务的实际运行情况,从而优化系统性能和调度策略。
2.5.2.2调度状态图形化界面
通过这个功能,用户可以利用现有的配置文件,以图形化的方式查看整个系统中Runnable的预期运行状态。这不仅有助于提前识别和解决任务规划中可能出现的问题,还允许用户通过特定命令记录和监控Runnable的实际运行状态,包括启动时间、运行时间和被强占时间等关键信息。
系统被调度的Runnable的预期运行状态图
支持通过勾选或鼠标选中Runnable的方式,选择性地显示想要观察的Runnable的执行情况。
2.5.2.3运行状态监控和分析
TTS工具也提供了一个图形化界面,用于监控Runnable的运行状态。用户可以通过命令激活确定性调度模块,记录所需的运行状态信息,并通过UI界面进行查看,从而确保任务的实际运行与预期一致。
任务链
例如:通过勾选Runnable A、B、C、D来显示任务链的执行情况
TTS确定性调度中间件多任务编排示意图
用户可以使用命令来启用确定性调度模块,以记录需要记录的Runnable的运行状态。这些状态包括启动时间、运行时间、被强占时间等等。通过UI界面,用户可以查看被记录的Runnable的实际运行状态,从而监控Task的执行情况。这样,用户可以更好地了解系统中各个任务的运行情况。
Runnable实际运行状态图
TTS中间件的配置工具和调度分析工具提供了一个全面的解决方案,用于优化任务的配置、监控和分析,确保系统运行的高效性和准确性。这些工具的集成和使用,显著提高了任务管理的可视化和用户友好性,同时也增强了系统的可靠性和性能。
2.6 ETAS TTS中间件确定性调度的性能
TTS中间件利用其高精度的确定性调度能力,显著提升了CPU资源的使用效率。通过这种优化,任务能够以0.01毫秒的高定时器精度高效执行。在测试环境中,硬件为S32G274RDB2,操作系统为Linux 5.4.69,设置了不同周期的任务链和时间触发任务。这些任务链和时间触发任务的精确调度,确保了任务的及时完成,并最大化了CPU资源的利用。
ETAS的TTS解决方案正在与客户Orin的Drive OS进行集成和测试部署。未来,该解决方案将根据客户项目的具体需求,扩展对更多硬件环境的支持。此外,该解决方案还提供了硬件定时器支持,使得任务调度可以更加精确,从而有效提升系统性能。
全部0条评论
快来发表一下你的评论吧 !