裸机,RTOS,还是Linux?采用SoC,FPGA优化实时性能
时间:2020-09-14 08:01:09 来源:达达文档网 本文已影响 人
打开文本图片集
引言
实时系统有很高的实时要求,抖动必须要在一定的范围内。在某些隋况下,无法满足这一要求会导致严重的损害。其他还有软实时要求,例如,优化能效等,这虽然不会带来严重的失效,但是,对于长期工作仍然非常重要。
不论怎样,重要的是理解某些系统体系结构在实时循环延时、抖动和其他需求方面的实时响应。很多系统设计人员最初认为实现“非OS”或者“裸机”系统会比较简单,比全OS更陕。但是,随着当今系统中应用处理器的出现,并非如此了。在速度极高功能很强的应用处理器上运行应用程序,运行RTOS实际上要比裸机实现的响应时间更好。选择哪一种呢?本文介绍了不同OS实现的响应时间。开发了一个实时“DataMover”应用实例,测试不同的实现,产生了一些很有意义的结果。
实时系统需求和挑战
一个典型的工业控制应用包括实时任务和非实时任务。实时任务处理外部中断,通过寄存器轮询或者中断服务来实现,这发生的时间在10几个微秒,例如,响应中断,移动与每次中断相关的数据,进行计算,在下一次中断发生之前返回结果等。为保证实时响应,抖动不能超过几微秒。通常,用户希望把所有实时处理分给一个内核,更直接的进行控制,希望进一步提高性能。非实时任务一般包括看护任务、网络和用户接口。在大部分这些系统中,处理器内核之间很少会共享外设,但是需要共享某些公共存储器缓冲,以便同步、通信或者显示数据。
很显然,还有其他需求以保证能够成功的推出电子产品。这些需求从简单的编程开始。能够使用简单、成熟可靠的解决方案对多核处理器进行编程是高效能和项目进度的关键。降低风险也很重要。风险的形式包括已知风险和未知风险。重要的是通过工程实践消除已知风险,减小未知风险。需要辅助系统支持来方便的进行编程,降低风险。辅助系统很显然能够帮助用户受益于大众的智慧,对于ARM,就是其开发社区。
最后,为保证设计能够迅速的采用功能更强大、内核更多的处理器,可以借鉴全球开发人员社区的软件创新,重要的是设计能够在硬件和软件上支持移植,这通常意味着在抽象的操作系统之上进行编程。
测量实时性能
实时响应时间和抖动容限要求是大部分实时设计决定的关键因素。实时响应时间一般以系统处理一次中断,在下一次中断到达之前完成所有必须的计算实时循环时间来表示。如
实时循环时间变化很大,从软件实时系统的Ims到实时系统的10几微秒,或者高性能硬核实时系统的一个微秒。由于实时要求代表了大部分设计决定,因此,实时循环时间被用作评估不同系统体系结构性能的指标。
进入Altera SoC
半导体集成功能已越来越高,Altera Cyclone V SoC同时集成了高性能应用处理器和FPGA,如图2所示。
这种组合使用户能够更加灵活。可以在集成应用处理器,FPGA阵列中例化的软核处理器,或者FPGA架构状态机上运行函数。但是,提高了灵活性也带来了挑战——怎样利用更多的功能,同时处理好复杂度,这对于系统划分带来了更大的压力,在时间和工程资源效率方面尽可能发挥硅片的最大能力。
Altera SoC上的SMP和AMP
如图3所示,SoC硬核处理器系统(HPS)中的双核ARM CortexA9处理器与使用ARM MPCore技术密切相关,采用了经典的对称多处理(SMP)硬件配置。目前很多ARM辅助系统软件提供商成熟可靠的软件解决方案支持在这一平台上实现非对称多处理(AMP),包括具有内核相关或者内核保留功能的SMP等方法,使得AMP系统编程与单核CPU编程一样简单。本文后面介绍的对称多核系统经验数据(图5、6、7和8)表明,采用定义好的编程方法,例如,内核相关和线程锁定等,一般要优于每一内核单独编程。通过采用标准、成熟的解决方案,用户能够同时获得性能、效能、系统可靠性和未来可扩展等优势。
在芯片级,SoC代表了异构多核系统,定义硬件配置AMP。在FPGA中实现一个或者多个软核处理器、硬件加速器或者其他定制计算单元,可以采用Altera SoC“随意”实现非对称多处理,比固定SoC更加灵活。FPGA非常实际的应用是在实时处理中增加双核A9群。
实时应用实例
为获得不同实时OS配置对象评估的数据,我们升发了一个买时应用买例。这一基准测试应用设计用于展现实时应用的特性。系统运行在AlteraCyclone V SoC开发板上,采用了双核A9群和FPGA。有一个DMA小设计,运行在FPGA上,和A9群一起工作,与FPGA传送数据。这一设计被称为“DataMover”设计。
系统接收来自FPGA的中断。每次中断时,某些数据从FPGA发送给HPS进行处理,涉及到一些计算,之后,结果被写回到FPGA中。仿真中断处理、数据传送,以及把数据返回FPGA的任务一起被称为“实时任务”。测量往返循环时间和抖动,以指示系统的实时响应。
采用中断服务例程,通过中断轮询来处理中断。系统还有很多非实时任务,由操作系统不断产生斐波那契数列进行仿真。
这一应用软件按照以下方式来实现,对比三种不同软件配置的结果:
软件体系结构1:Linux SMP
在SMP中运行Linux,采用内核相关模式,在双核A9群的两个内核中。
内核l:使用DataMover传送数据,处理中断。
内核0:空闲或者忙于运行连续斐波那契数列,仿真非实时任务。
以轮询或者中断服务例程的形式处理中断。
软件体系结构2:VxWorks SMP
在SMP中运行VxWorks,采用内核相关模式,在双核A9群的两个内核中。
内核l:使用DataMover传送数据,处理中断。
内核0:空闲或者忙于运行连续斐波那契数列,仿真非实时任务。
以轮询或者中断服务例程的形式处理中断
软件体系结构3:裸机单核
只在一个内核中运行裸机模式
内核l:使用DataMover传送数据,处理中断。
内核0:没有用于表示“最佳情形”环境(没有开销或者缓冲管理)
以轮询或者中断服务例程的形式处理中断
系统体系结构
参考硬件设计如图4所示。
在这一系统中,FPGA中实现的片内RAM存储的数据被用于进行仿真。很容易改变数据规模以便研究数据规模和DMA工作效率时间的关系。
从DMA工作开始仿真中断处理,可以由DMA控制器本身,CortexA9处理器,或者实时控制单元启动(在这个例子中,使用了Nios II软核处理器)。DMA把数据从FPGA移动到HPS片内RAM。
双核A9群的第1个内核被配置为轮询片内RAM,查看是否出现新数据,如果有,它会把数据复制到私有存储中,把结果复制回存储器。在需要微秒级实时响应的系统中,适合采用轮询模式工作,这是因为它更具有确定性,只占用了部分中断处理时间。还通过中断服务例程(ISR)来处理数据,并进行了对比。
实时控制单元会和定制DMA调度知识产权(IP)一样简单,也有可能像软核处理器系统那样复杂。这可以是固定功能硬件状态机,只知道怎样排列和安排DMA逻辑,这些逻辑采集FPGA中产生的数据。这也可以是软核逻辑处理器等,在FPGA中实现,运行软件算法以确定数据怎样流入和流出FPGA。本文收集的数据使用了基于软核Nios II处理器的设计。
通过DMA把数据从HPS存储器移回FPGA来完成仿真的实时循环。
软件应用实例
参考硬件设计使用了以下操作系统版本:
Linux LTSI v3. 10
VxWorks v6.9
裸机使用硬件库(SoC嵌入式设计套装14.0中的HWLIB)作为基础。
应用实例基本上运行连续实时数据申请、处理和返回循环。输入数据通过FPGA至HPS桥接,以高速缓存一致性访问的方式,从FPGA发送至A9处理器。以下是应用程序的伪代码:
Wlule(l){
Real_input=Requestadata();//申请来自FPGA的新数据
While(kevtoken(real_input)!=expectedtoken);//等待新数据有效。我们在每一数据中嵌入了令牌,知道新数据是否有效。
Request_data_back(real_out);//申请将结果送回FPGA
测试结果
使用了标准效能计数器来采集总循环时间。由于是纳秒级的测量,为适应计数器粒度的变化,每一结果都是100次测量的平均。
不需要开发特殊的IP来实现这种策略。
软件体系结构1:LinuxSMP
空闲Linux系统的结果,内核l采用轮询或者中断服务例程(ISR)方法来处理实时任务,而内核0空闲,如图5所示。
繁忙Linux系统的结果,内核l采用轮询或者中断服务例程方法来处理实时任务,而内核0计算斐波那契数列,如图6所示。
结果是可预测的,繁忙或者空闲Linux系统看不出明显差别。轮询的确产生了稍好一些的总响应,而轮询和ISR的抖动都相对较高( 软件体系结构2:VxWorks(RTOS) SMP 空闲VxWorks系统的结果,内核l采用轮询或者中断服务例程(ISR)方法来处理实时任务,而内核0空闲,如图7所示。 繁忙VxWorks系统的结果,内核l采用轮询或者中断服务例程方法来处理实时任务,而内核0计算斐波那契数列,如图8所示。 这里的结果也是可预测的。繁忙或者空闲VxWorks系统在繁忙或者空闲系统的循环时间上没有明显不同。但是在繁忙VxWorks系统,lk数据大小时,总抖动变化不大。 软件体系结构3:裸机单核 建立了裸机系统在一个内核上运行;这一内核除了采用轮询或者ISR方法处理中断之外,不做其他工作。由于没有使用其他内核,因此,没有空闲或者繁忙系统对比。这在响应上代表了“基本情形”场景,没有考虑CPU之间的公共缓冲的任何开销或者管理。根据内核之间的通信情况,这类系统的抖动会比较大。图9显示了结果。 正如所期望的,轮询和ISR方法的抖动都不到lμs,系统中没有发生什么。对于轮询方法,总循环时间与Linux和VxWorks相当,而ISR响应要明显高。这可以归结于裸机系统没有事件调度或者优先级这一事实。因此,裸机在编程上没有性能优势,未来注定会过时。通过对比,运行在操作系统之上的应用程序抽象出硬件差别,因此,可以移植到未来器件。 测量实时循环时间的关键发现 缩短中断响应时间,降低抖动最重要的因素有以下几条: 配置系统运行在SMP模式中,采用内核相关方式,内核l专用于实时处理。这一结论也适用于VxWorks和Linux。配置处理器运行在内核相关模式下,极大的提高了内核l的实时处理性能。这一方法的确降低了处理器两个内核间负载均衡的能力,因此,也降低了内核0的工作能力,如果实时响应是要满足的最重要的需求,那么,这是达到这一目标最简单最安全的方法。 内核l用于轮询中断,而不是使用处理器固有的中断处理机制。反对者会指出轮询导致系统一直运行,功耗更高,但是,如果需要微秒级响应时间,那么,处理器已经在一直运行了。因此,轮询是去掉A9MPCore中断处理过程不确定性最好的方法。
使用FPGA中的DataMoverDMA设计将数据传送给片内RAM,内核l可以找到并使用最低开销。取决于实际需求,确定DMA设计的复杂程度。采用了一个简单DMA,使用内核l来启动和停止它。或者,用户可以设计DMA或者DMA和Nios II处理器承担内核l的负载。
编程多核SoC的最佳实践
考虑到实时响应的微秒级需求,因此,应分开实时任务和非实时任务,均衡这些需求,降低设计风险,提高设计移植性,以下几条有助于获得最佳设计,包括:
使用所有可用硬件资源来提高系统性能。DataMover应用系统体系结构对此进行了解释(见图4),使用了基于FPGA的DMA实时移动数据,并行完成数据处理任务。为克服CortexA9处理器的非确定性特性,采用了中断轮询。一起使用后,这一简单系统实现了微秒级实时响应,而且抖动很小。
默认SMP硬件体系结构与SMP操作系统相结合,很好的平衡了性能和开发时间。VxWorks和Linux标准配置实例支持了这一结论,建立了两种相似的高性能系统,唯一不同的是中断响应抖动。
选择合适的RTOS是保证实时性能和确定性最简单的方法——采用VxWorks是实现确定性性能最简单的方法,即“开箱即用”。
采用多核编程方法实现并发、负载均衡,以及未来不会过时的可扩展特性。DataMover设计(见图4)展示了FPGA怎样用于提高系统总体并发能力,这是固定SoC无法做到的。系统使用标准货架SMP操作系统,这一设计很容易扩展适应未来内核更多的处理器。
需要时,使用SMP/内核相关概念把实时和非实时任务分到不同的内核上,以实现应用级AMP。即使SMP操作系统与SMP处理器内核相匹配,仍然采用内核相关特性来高效的完成应用程序的非对称处理,满足用户需求——能够将实时任务和非实时任务分开,最重要的是,降低抖动以产生确定性实时响应。
采用成熟而且应用广泛的解决方案能够受益于ARM软件辅助支持系统——采用配置最标准的Linux和VxWorks,软件以及软件合作伙伴很容易支持设计。随着这些操作系统的发展和提高,系统将会充分发挥其优势。
结论
手动开发最明显的推动因素是性能优势和成本。考虑到复杂的现代应用处理器,不使用现代操作系统很难建立稳定、手动优化的解决方案。如本文测试结果所示,即使建立了这类系统,在处理器级和FPGA上,工作起来不如基于OS的解决方案。在性能方面,由于现代应用处理器有调度需求,大部分操作系统已经充分利用了处理器体系结构,在手动建立的裸机解决方案中,可能还需要重新开发。通过使用成熟可靠的操作系统作为运行软件,应用程序开发人员可以把精力集中在系统级优化上。真正需要硬核实时性能时,FPGA是很好的选择。如果需要软核基于处理器的实时解决方案,在FPGJA中例化的NIOS II软核处理器是最优途径。
德州仪器创新型汽车信息娱乐平台帮助福特汽车公司重新定义Ford SYNC 3用户体验
德州仪器(TI)与福特汽车公司(Ford MotorCompany)日前联合推出了可改进消费者与其车辆互动方式的信息娱乐解决方案。全新的通信和娱乐系统Ford SYNC3采用Tl“Jacinto”汽车处理器系列中的OMAP 5处理器,同时集成了囊括高性能WiFi、Bluetooth 4.0与全球导航卫星系统(GNSS)的WiLink 8Q平台以及Tl的电源管理和FPDLink川串行器/解串器(SerDes)有线连接解决方案。TI的各种器件可提供更高的性能,以实现更佳的语音识别和导航功能,更优质的免提蓝牙连接、WiFi致能软件更新及更强的驾驶员互动性。
“当Ford选择Tl作为研发该创新系统的战略合作伙伴时,我们认为这是一个与业界领先者携手合作的绝佳机会,同时也能够充分利用我们在汽车领域的长期经验。通过广泛的技术支持,我们能迅速的为Ford的用户提供一个可改变整个行业现状的产品。”Tl汽车处理器业务部总经理Curt Moore说道。