硬件RTU中的实时操作系统:实现确定性和高性能实时系统的一种方法外文翻译资料
2022-11-03 18:04:00
硬件RTU中的实时操作系统:实现确定性和高性能实时系统的一种方法
Joakim Adomat,JohanFurunauml;s,Lennart Lindh,JohanStauml;rnerMauml;lardalens大学,IDT /实时计算机系统部电子邮件:lennart.lindh @ mdh.se,joakim.adomat @ mdh.se,johan.starner @ mdh.se,johan.furunas @ mdh.se
摘要
对实时操作系统的需求每年都在增加:随着应用变得越来越大并且越来越复杂,实时操作系统必须给出迅速和可预测的响应。
RTU(远程终端设备)是在ASIC(特定用途集成电路)中实现的实时内核协处理器,其旨在满足对实时内核的不断增加的期望。
由于RTU给出了快速的响应时间,因此有必要定义详细的时间模型以提高对mu;S域中实时内核行为的理解。
在本文中,我们描述了如何在单处理器或多处理器架构中使用RTU,并定义基于RTU的实时系统的时间模型。这个时间模型考虑了确定性和性能。
关键词:决定论,性能,实时系统,实时内核。
1介绍
在这篇文章里,我们描述了远程终端设备和分析了没有应用软件时实时系统的时间特性。目的是为了理解在系统中使用远程终端设备性能和决定性的提高。
在本文中,我们描述了RTU(实时单位)[1],并分析没有应用软件的实时系统中的时间特性。目的是通过使用RTU来理解系统中增加的性能和确定性。
系统的精确时间分析通常是不可能的,因为缺乏信息,并且在实时内核中的最佳和最差情况响应时间之间通常有很大的差距。 这种差距可以被看作是确定论的度量。
可以通过在硬件中实现内核来提高确定性和性能,例如RTU。 但是当使用类似于RTU的内核时,响应时间低于1mu;s,来自总线、硬件仲裁、硬件中断延迟等的开销时间不再是可以忽略的。这需要更精确的时间模型来更好地理解系统行为。本文中的时间模型用于使基于具有没有应用程序任务的处理器的总线的实时系统的行为更容易理解。
本文中的时间模型用于使基于具有没有应用程序任务的处理器的总线的实时系统的行为更容易理解。
RTU是在硬件中实现的小型单或多处理器多任务实时内核。它可以在8个优先级上处理最多64个任务,可以映射到多达三个CPU。 RTU包括处理不同内核功能的多个单元(参见图1),即等待下一周期、延迟、信号量、事件标志、看门狗、中断、本地和全局调度(优先级抢占),激活和终止任务。到RTU的接口是可读写的寄存器,这使得它易于移植到不同类型的处理器。此外,RTU ASIC(专用集成电路)现在被测试和工作。 使用片上外部通信协议,可以通过将功能映射到RTU外部的FPGA(现场可编程门阵列)来改变或添加内核功能。 当测试这些改变/附加部件时,它们可以被结合到下一个RTU生成中。RTU设计有很多真正的并发运行部分,并且是在mu;s域内获得响应时间的解决方案。
图1. RTU的内部结构
2具有RTU的系统架构
RTU当前被配置为在基于总线的任务级并行(即,任务并行执行)单操作系统和多处理器系统上操作。
由于与RTU的通信是基于寄存器的,因此可能具有在系统中执行的不同应用处理器 。
我们的研究系统是基于VME [3]总线的。它目前配置(见图2)有一个RTU,最多三个Force 68010 CPU-3VA [2],映射到FPGA上的全局存储器和总线仲裁器。RTU可以处理多达3个应用处理器。每个应用处理器必须被配置为响应特定的VME中断,RTU驱动它来通知CPU执行任务切换,即图2中的中断线0-2。
为了能够计算每个CPU的最大访问时间,在多处理器系统中,使用循环仲裁器来控制对总线的访问。基于优先级的总线仲裁器不能保证最坏情况的时间。
图2.基于RTU的实时系统
2.1 RTU的接口
RTU和应用处理器之间的通信通过中断,读取和写入寄存器来完成。通常在4-6次总线访问寄存器中进行通信。有关RTU接口的更多信息,请参见[6]。
每个RTU寄存器的简短描述:
CPU状态寄存器:由三个寄存器组成,每个CPU一个。它保持其相应CPU的状态,例如,上下文切换在CPU上启用。
RTU状态寄存器:保持RTU状态,例如执行从CPU接收的服务。
RTU控制寄存器:控制用于片上时间功能的定时器,例如:延迟、定期开始和看门狗。
NEXT TASK ID:由三个寄存器组成,每个CPU一个。它保存每个CPU的运行任务ID。
SVC指令寄存器:由三个寄存器组成,每个CPU一个。服务调用被写入寄存器。 服务呼叫是例如:等待信号量。
CPU控制寄存器:由三个寄存器组成,每个CPU一个。它控制CPU相关功能,例如:CPU上的禁用上下文切换,并重新安排新任务。
RTU寄存器可以直接从CPU访问。不需要信号量,因为在CPU之间没有使用共享寄存器。然而,CPU在执行服务调用时必须阻止任务切换,因为SVC INSTRUCTION REGISTER在一个处理器上的任务之间共享。
如果任务想要执行服务调用(见下面的协议)。等待下一个周期,它必须将服务调用写入SVC INSTRUCTION REGISTER。要为CPU请求新任务,CPU必须写入其CPU控制寄存器。
在单个或多处理器系统中的服务调用的协议描述如下:
1.将禁用上下文切换写入CPU控制寄存器。
2.将服务调用写入SVC INSTRUCTION REGISTER。
3.读RTU状态寄存器以检查RTU是否收到服务调用。
4.将服务结束呼叫代码写入SVC INSTRUCTION REGISTER以通知RTU启动服务。
5.读取RTU状态寄存器以检查RTU是否已准备好服务。继续读取,直到RTU已准备好服务。 由于RTU是快速的,CPU不必等待就绪服务。
6.将使能上下文切换写入CPU控制寄存器。
步骤3和5是握手动作,以使与RTU的通信更可靠。具有握手信号的动机是发现系统中的任何干扰,例如:VME总线上的故障。
3性能和确定性分析
在本节中,针对确定性和性能定义和讨论了基于具有无高速缓存的CPU的RTU(参见图2)的实时系统的准确时间模型。在讨论中,与软件内核(SWK)进行比较。基于软件内核的时间模型只是估计,因为很难找到关于它们如何工作的信息。
为了能够基于RTU定义实时系统的准确时间模型,必须定义系统中耗时的部分,即未花费在执行任务上的时间。在实时系统的模型中,以下部分被定义为消耗时间:
服务调用:服务调用时间可以定义为Tservicecall = Ti / o Tservice。Ti / o是CPU和RTU之间的接口时间,Tservice是RTU用于执行服务的时间。 由于Ti / o由m个总线访问组成,因此可以定义为:
Ti / o = m *(Tread / write Tbusmax Tarbitration)
m是总线访问的数量。 Tread / write是绝对读取或写入指令的时间。 Tbusmax是总线的最大总线等待时间,即CPU必须等待n个CPU以准备好它们的总线访问。 Tarbitration是仲裁时间,它是依赖于算法的,在这种情况下,它是一个轮询仲裁器.Tbusmax =(n-1)*(Tarbitration Tread / write)。 n是CPU的数量。
任务切换时间:任务切换时间可以定义为Ttaskswitch = Tbusmax Tirq Tgetnexttask Tchangeregs Trte.Tirq是CPU上的中断时间,即将程序计数器和状态寄存器保存到堆栈。Tchangeregs是CPU花费在为旧任务保存寄存器和为新任务恢复寄存器的时间。Tbusmax表示在中断过程中总线上的等待时间。Trte是从中断时间返回,即从堆栈恢复状态寄存器和程序计数器。由于Tgetnexttask是对RTU NEXT TASK ID寄存器的一个总线访问,因此可以定义为Tgetnexttask = Tread / write Tbusmax Tarbitration。
锁定时钟管理:时钟标志管理时间可以定义为Tclocktick = Tirq Tadb Trte。 Tadb是花在更新任务队列和调度即调度上的时间。
调度:调度时间是调度任务所需的时间,定义为Tscheduling
3.1 CPU上的时钟节拍管理
在实时系统中,存在不同的任务队列,例如, 时间队列和资源队列,必须更新。 为了在实时系统中启动内核,使用定时器周期性地产生时钟节拍中断。然而,当使用RTU时,在RTU内执行时间队列的所有更新。因此,CPU不必被时钟节拍中断,这意味着当实时内核是RTU时Tclocktick = 0。在SWK例如: pSOS [4]情况下,实时内核位于CPU Tclocktick = Tirq Tadb Trte。
决定论:
管理时间通常在软件内核情况下变化很大,因为不同的时间和任务队列在系统运行时动态地改变。队列上的搜索时间由于队列的交替长度而改变,这降低了确定性。
性能:
刻度频率越高,粒度越好,但执行任务花费的时间减少。使用低滴答时间,滴答频率可以很高,并在CPU上保持较高的利用率。当RTU用作内核时,CPU不需要时钟分配管理,这给予更多的系统容量来执行应用程序任务。
3.2服务调用
其中一个实时内核的工作是为不同服务的任务提供服务信号量处理。 当由RTU执行服务调用时,服务调用时间Tservicecall仅取决于Ti / o消耗多少时间,因为与Ti / o相比Tservice可忽略。在SWK单处理器系统中,服务调用时间Tservicecall仅取决于Tservice自Ti /oasymp;0(仅仅是一个简单的函数调用)后消耗的时间。当在SWK多处理器系统中执行服务调用时,服务调用时间Tservicecall取决于Tservice和Ti / o消耗多少时间。如果是全局服务调用,Ti / o是重要的,因为如果它是本地调用Ti /oasymp;0(只是一个简单的函数调用),通过总线的相关CPU之间的参数传输。
决定论:
由于RTU并行执行其所有功能,因此很容易给出服务调用的最大时间。 使用软件内核方法,可以通过说明悲观的最大时间来获得os确定性(在某种意义上)。RTU的精细时间粒度有助于将通信和服务调用的延迟降至使用软件方法非常难以实现的水平。 RTU情况下的服务调用时间取决于服务调用所需的6个总线访问,无论它是多处理器还是单处理器架构。在常规的多处理器系统中,本地和全局服务呼叫在时间上非常不同,降低了确定性。全局服务调用可能比本地调用长许多倍,因为必须在CPU之间传输的所有参数。
性能:
如果常规系统中的服务呼叫时间短于RTU所需的6个总线访问,则它相对于本地服务呼叫可以具有更好的性能。在全局情况下,RTU应该总是具有更好的服务调用响应。
3.3任务切换和调度
调度是实时内核的最重要的部分。主要部分是根据一些算法选择执行任务。 这意味着在经常变化的任务集中进行搜索。当已经找到适当的任务时,执行任务切换。在具有RTU的系统中,调度T调度的时间是可忽略的,因为在快速硬件中并行搜索队列。但是当使用SWK时,T调度不可忽略,因为CPU必须搜索任务集。 当调度新任务时,必须执行任务切换。 在SWK情况下,可以立即执行任务切换,但是在RTU情况下,必须通知CPU进行任务切换。这是通过来自RTU的中断完成的,该中断将新任务的任务ID放在NEXT TASK ID寄存器中。从该寄存器读取新的任务id,并且可以执行寄存器开关,即任务切换。
决定论:
在RTU和大多数其他系统中,上下文切换总是占用相同的时间。
硬件调度器增加确定性,因为必须考虑的唯一时间是任务切换的时间,这是确定性的。 在软件内核中,调度时间随任务数量和调度算法等而变化,并且必须受到悲观最大时间的限制,这降低了确定性。
性能:
RTU情况下的任务切换的性能是总线相关的,因为CPU必须被中断并且必须通过总线读取新的任务ID。SWK系统上的任务切换可能比RTU情况下更快,但是在SWK情况下耗时的调度可能比RTU情况下的任务切换时间更糟,这导致RTU的更好的性能。
4.中断任务响应时间分析
在本节中,我们给出两个不同的基于RTU的单处理器实时系统的中断任务响应时间Tiresp的测量值。Tiresp在[7]中定义为外部中断和执行高优先级任务的第一条指令之间的时间量,写为C.我们测量Tiresp,因为可以重新创建类似的测试先决条件 基准[7]。在我们的测试中,我们使用一个空闲任务和一个中断任务。
在VME总线上配置有Force 10 Mhz 68010 CPU-3VA的RTU实时系统的测量T iresp为111mu;s。
配置有16 Mhz Motorola 68332的RTU实时系统的测量T iresp为45mu;s。
空闲任务没有进行任何服务调用,因此不包括Tservicecall,否则应该添加4mu;s以获得最大Tiresp。
可根据要求提供测试协议[8]。
对于在25Mhz Motorola 68030上运行的五个领先的实时操作系统,[7]中给出的平均中断任务响应时间为72-175mu;s。
5.结论
在本文中,介绍了基于RTU的实时系统,并定义了一个简单的时间模型。 已经表明,当使用基于RTU的实时系统时,可以提
剩余内容已隐藏,支付完成后下载完整资料
英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[141086],资料为PDF文档或Word文档,PDF文档可免费转换为Word