莫锦攀
摘要:随着近年来泛在物联网及边缘计算技术在电力系统中的兴起,对于嵌入式电力产品的处理能力提出了巨大的挑战。以此同时,多核处理已经发展成为主流的处理器技术。面对日益复杂嵌入式电力应用领域,为了满足产品高性能、低功耗的要求,越来越多的嵌入式电力产品使用多核处理器作为应用平台。异构和同构是两种主要的多核处理器应用形态,由于系统架构采用多种了不同功能的核心,多核异构模式的处理器更加适合于功能复杂实时性要求高的嵌入式电力应用场合。鉴于此,文章结合笔者多年工作经验,就如何使用异构多核技术来搭建高实时性多核平台来满足日益复杂的嵌入式电力产品开发需求提出个人的观点,以供参考。
關键词:电力系统;嵌入式产品;多核异构;平台
引言
使用linux系统来应对嵌入式电力产品开发的复杂需求是非常适合的方案,linux系统有着庞大的生态系统,需要复杂的应用在linux系统上都有有着合适的解决方案,这可以极大加速嵌入式电力产品的开发速度,但linux系统是非实时系统,但嵌入式电力应用场景却对实时性要求非常高,这样矛盾的问题就可以通过引入处理的多核异构方案来解决。
1、多处理系统架构应用方案介绍
多核处理器根据内核的用途或结构,通常可分为多核异构架构和多核同构架构两种架构。多核异构是指处理器中的内核在结构或用途上是不同的,而多核同构架构是指处理器中的内核在结构或用途上是相同的;这些内核可以是通用内核,也可以是用于解决某些特定应用的专用内核。多核同构架构相比于多核异构架构,在软件和硬件设计上较为简单,通用性较高,但在某些特定应用场合下,如多核异构架构专用的硬件加速硬核,多核异构架构的性能会更高。
根据其软件构架,多核处理器的运行模式有SMP(对称多处理运行模式)、AMP(非对称多处理运行模式)和BMP(受约束多处理运行模式)这三种运行模式。
SMP:该运行模式指多个内核运行一个操作系统,这个操作系统同时管理多个内核,如x86电脑。
AMP:该运行模式指内核之间运行相对独立的任务,每个内核相互隔离,可以运行不同的操作系统或裸机程序。
BMP:该运行模式与 SMP 类似,但软件程序设计者可以指定将某个任务仅在某个指定核上执行。
SMP为较高级的应用提供统一的操作系统平台,软件程序设计者在操作系统之上构建应用时,无需考虑多个内核之间的资源共享和进程间通信。另外,对 SMP 而言存在一定的性能开销,这会对实时性要求较高的应用造成较大影响。比如电脑的多核处理器一般运行在SMP模式,对实时性的要求不高,但实现的功能较为复杂。
而 AMP运行模式开销相对比较小,比较适合实时性要求较高的应用场景,在运行裸机应用程序时,甚至几乎没有开销;但需要考虑到内核之间资源共享和通信等问题。如嵌入式电力控制保护产品通常需要与人机接口实现复杂的通信和高实时性的计算能力,一般采用 AMP运行模式,一个内核运行 Linux 操作系统,另一个内核运行裸机应用程序,最大程度兼顾了电力系统控制设备需要的实时性和复杂功能。
2、多核异构系统的操作系统选择
面对复杂的应用场景是,使用操作系统可以极大的简化系统应用,并提高程序的复用能力,为此在需要使用到多核处理的复杂嵌入式电力产品中,一般都会选择使用嵌入式操作系统。
嵌入式电力产品需要处理各种复杂的应用功能,有需要保证各种功能的实时性要求,选择合适的操作系统就显得至关重要。多核异构处理,由于存在多个独立运行的内核为此,可以根据应用的需求不同选择多种不同的嵌入式系统,这是多核异构处理模式,相对于常规单核处理模式和多核同构处理模式不具备的重要优势
linux系统是目前世界上使用最为广泛的操作系统,他具有非常高的稳定性以及非常丰富的应用生态,非常适合用于处理嵌入式电力系统中复杂的高级应用。但是由于linux是非实时系统,其系统任务调度间隔在1ms左右,实时性一般在10ms左右,无法满足嵌入式电力系统高实时部分应用的需求。这部分功能一般选择RTOS嵌入式实时操作系统,RTOS嵌入式实时操作系统具有高实时性以及系统精简占用资源少的特点,它能在较少资源的情况下完成高实时任务,从而腾出足够多的资源以供linux系统使用来完成嵌入式电力产品中的复杂高级应用。
3、多核异构系统的任务分配
由于电力系统中高实时要求的任务占比比较高,同时为了兼顾运行开销,一般使用AMP模式来构建多核异构系统。在多核异构系统中,如何设定多核之间的协作方式将是我们第一个需要面对的问题。
嵌入式电力产品的功能可以划分成保护功能和通讯功能两部分,其中保护部分功能包括了对外部数据的实时采集、数据计算分析和分析结果的执行三大部分,一般的继电保护功能要求在30ms内响应,即整个数据采集、计算分析和结果处理要在一个半周波内完成,此部分实现要求都比较高,一般建议放在由RTOS构建的实时内核上。而通讯部分功能主要是指嵌入式电力产品对外通讯功能,一般涉及到101规约、104规约、IEC61850规约等多种规约的处理,除了IEC61850规约的GOOSE部分功能有较高的实时性要求外,其他部分功能对实时性要求均比较低,一般建议放在由linux系统构建的复杂应用内核上。
4、多核异构系统的资源分配
根据上面分析,电力系统宜采用Linux+RTOS的多核异构系统架构,其中Linux具有系统稳定,资源丰富的特点,适合处理复杂的高级应用,其对资源的需求也是比较高的,而RTOS系统具有高实时性适合处理高实时任务,同时其系统一般都比较精简,对系统资源消耗较低。因此一般会将大部分内存和flash分配给Linux系统,并且将复杂以太网、USB、LCD、的外设也分配给Linux系统管理。而将小部分的内存和flash分配给RTOS系统,并让其管理那些高实时要求的外设。
5、多核异构系统的通讯方式
在 AMP 运行模式下的多核异构系统,虽然不同类型的内核可以独立运行,但往往大多数情况下,我们的软件设计要求多核之间能够进行数据交互,也就是能够实现核间通信,以访问共享资源时避免冲突,如果没有考虑到这些问题,则可能会导致系统运行出现问题。那多核之间的通讯方式都有哪些手段呢?
1、共享内存,我们可以设置一块系统内存区域,这块内存作为两个或多个核之间的共享数据区域,也就是说所有的核都可对该内存进行
2、SGI 中断,与硬件中断方式不同,SGI(软件生成中断(software generated interrupts)可以通过软件方式触发中断, 可以中断自身、可以中断另一个 CPU(核)或多个CPU,例如将某一个SGI 中断信号绑定到 cpu1,并且绑定了相应的中断处理函数,当 cpu0 需要与 cpu1 进行通信时就可以触发这个 SGI 中断信号,这样就会执行到 cpu1 的中断处理函数;事实上,SGI 中断本身就是为了核间通信而设计的,所以它是最适合用于核间通信的一种方法,但往往多数情况下只使用 SGI 中断是很难实现比较复杂的核间通信的,还得需要共享内存的配合。
6、多核异构系统的外设管理
多核异构系统相对于多处理系统的一个重要优势就是其外设可以由多核共同管理,这样可以提供非常灵活的外设管理方案,但同时也是多核异构系统的一个设计难点。
一般多核异构系统的外设有两种管理方案,一种是独占式,即外设完全分配给某一个内核来管理,其他内核无权直接访问该外设,必须通过核间通许来间接范围指定外设,其优点是系统底层设计相对简单稳定,一般没有外设共享冲突的,其缺点是会增加核间通讯的开销。另外一种是共享式,多核之间通过通讯的方式确定外设的使用权,获得使用权的内核可以直接对外设进行访问,其优点是内核对外设的访问速度比较快,核间通讯开销较小,缺点是系统底层设计相对比较复杂,处理不当容易出现外设共享冲突。综合电力系统的高实时性要求,一般建议复杂外设由linux内核独占使用,簡单的外设或者实时性要求高的外设全部由RTOS实时内核进行管理,多内核之间在应用层进行数据交互。
参考文献
[1] 丁毅, 陈新之,潘可,张尧,张玮,习伟. 基于电力专用多核异构芯片架构的低压保护测控装置设计[J]. 南方电网技术.2020(14):59
[2] 杨瑞星. 基于LPC4357 的异构双核配电网终端系统设计 与实现究[C]. 华南理工大学.2015-6