当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]很容易忘记的是,嵌入式Linux无法为所有嵌入式开发人员做任何事。虽然它适合于内存和强大处理器很多的应用程序,但嵌入式Linux和类似操作系统的开销对决定性和内存消耗造成负面影响的使用案例越来越多。

很容易忘记的是,嵌入式Linux无法为所有嵌入式开发人员做任何事。虽然它适合于内存和强大处理器很多的应用程序,但嵌入式Linux和类似操作系统的开销对决定性和内存消耗造成负面影响的使用案例越来越多。

细胞调制解调器、高性能视频处理和复杂的汽车控制器只是在小型、低功率多核平台上运行的对称多处理(SMP)架构下高度确定性应用的几个例子。这些系统需要从底层操作系统获得核心分配和任务安排支持,以满足严格的实时要求,同时又不影响资源的使用。

嵌入式Linux对于资源受限平台上的SMP来说并不是一个可行的选择,而且很少有实时操作系统支持SMP。因此,开发人员必须创建自己的跨多个核心调度和管理任务的方法。

由于更多的嵌入式设备需要跨多个核心部署确定性工作负载,在RTOS级别上动态负载平衡的需求只会增加。

对称多重处理与不对称多重处理

SMP和不对称多处理(AMP)是两个或多个处理器一起工作以安排和运行工作负载的体系结构模型。尽管SMP系统具有相同的核心,可以运行分配给他们的任何任务,但是AMP系统通常依靠一个主核心来根据可用性和优先级来安排和分配任务。在AMP下,核心本身不需要是相同的类型或体系结构(例如。,一个MPU可以与一个GPU一起工作),任务通常是针对核心类型的。

如果开发人员能够依赖稳定和可预测的环境,这样操作系统就可以有效地分配工作负载,而不需要花费大量的开销,那么AMP模型的工作效果最好。相比之下,对于在事件不断变化且需要动态地将工作负载从核心转移到核心的环境中运行的应用程序,SMP模型通常最有效。例如,许多手机都使用SMP,例如那些在ARM-A53平台上实现细胞调制解调器功能的手机。

为了有效地跨多个核心分配应用线程,嵌入式软件开发人员使用动态负载平衡技术。主要目标是确保应用程序在运行时在核心之间平均分配计算工作负载,并保证最高优先级线程不会被较低优先级线程取代。

动态负载平衡背后的原则

动态负载平衡中的"动态"是指在运行时对线程调度的连续评价,这使应用程序能够适应不断变化的任务需求和系统条件。动态负载平衡对于:

· 改进利用:通过在多个核心之间分配任务,开发人员可以充分利用每个核心的计算能力,提高整体系统利用率。

· 减少响应时间:适当的负载平衡确保将关键任务分配给最少争用的核心,减少响应时间并提高任务执行的可预测性。

· 容错:负载平衡可以通过将任务重新分配到非故障核心,确保持续的系统功能,帮助减轻软件故障和硬件故障的影响。

· 可伸缩性:随着系统需求的增加和更多的核心被添加,均匀分配任务对于扩展容量是必不可少的,而不会引入瓶颈。

嵌入式Linux有负载平衡机制,但也有一个缺点:操作系统会带来高昂的管理费用,这可能会对决定论产生显著影响。由于大多数硬实时rtos不支持SMP体系结构上的负载平衡,开发人员经常求助于构建自己的支持。这项努力本身也带来了挑战:

· 资源使用:由于每个核心都有自己的缓存、寄存器和其他独特的特性,开发人员必须投入时间来深入了解平台,以便在没有性能影响或资源争夺的情况下有效地分配任务。

· 内存访问:如果开发人员将具有共同内存池的任务分配给不同的核心,那么如果应用程序的控制和数据流没有得到充分的说明,内存访问可能会出现争用问题。

· 任务优先级:开发人员必须了解所有任务的优先级和最后期限,以确保分配足够的资源和时间来避免延误。

· 动态适应:由于负载平衡是一个适应系统条件变化的过程,开发人员必须实现某种反馈循环或控制机制,以便在运行时持续地重新评估线程分配和调整策略。

· 同步开销:开发人员必须最大限度地减少核心之间任务切换所需的开销,以减少延迟并维护系统的实时响应性。

实时操作系统层面的负载平衡

像 PX5 RTOS 这些设计用于基于多数据映射p的应用程序提供了内置的负载平衡,可以满足硬的实时决定性,与嵌入式Linux和其他操作系统相比,开销要小得多。 本地POSIX线程API 而运行px5rtos所需的时间不到10kb,它是非常可移植和资源高效的,并且使开发人员不必建立自己的负载平衡器。

这种固有的负载平衡器的工作方式与许多流行的负载平衡技术相同:

1. 给定任意数目的核心,rtos跟踪每个核心上运行的线程。当一个核心变得自由,并且一个线程可以用于调度时,RTOS将安排线程在该核心上运行。

2. 如果没有自由的内核,而且一个新线程已经准备好了,那么RTOS将使用该线程的优先级进行调度:如果它的优先级高于当前运行的任何其他线程,那么ros将安排新线程以预先选择一个正在运行的线程。如果它的优先级低于当前运行的任何线程的优先级,那么RTOS将等待下一个可用的核心运行。

这种方法使用与嵌入式Linux相同的处理器亲和力API,使开发人员很容易将线程分配给特定的核心,并依靠rtos来执行这些任务。就像大多数rto一样,开发人员必须确保共享资源的适当管理,以避免争用问题。

不是所有的线索都是平等的

在一个典型的单核心、基于优先级的先发制人的调度环境中,开发人员可以一次只依赖一个线程运行。在SMP环境中,这个条件无法保证,因为多个线程可以在任意数目的内核上并行运行。为了避免这种行为对系统的潜在负面影响,即只需要在给定时间内运行最高优先级的线程,PX5RTOS允许开发人员配置只允许具有同等优先级的线程在所有核心中并行运行的调度。这种方法强制执行更严格的并行性,使开发人员对其系统的可预测性有更大的信心。

结论

实现动态负载平衡是开发人员在小型、低功率多核平台上实现硬实时性能和响应所必需的。就像 PX5 RTOS 负载平衡功能支持随时可用的应用程序线程与可用核心的动态配对,所有这些线程都在超小(小于10kb)、超便携(带有完全兼容的P线程API)和严格测试(100%c语句和每个发布的分支决策覆盖)的包中。

RTO-固有负载平衡使开发人员能够专注于应用程序逻辑和测试,而不是不得不构建自己的方法,在多个处理器之间分配工作负载。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭