在很多人看來(lái),似乎嵌入式Linux可以為嵌入式開(kāi)發(fā)人員做所有的事情。雖然嵌入式Linux可以適用于一些具有數(shù)兆內(nèi)存和強(qiáng)大處理器的應(yīng)用,但越來(lái)越多的案例表明,嵌入式Linux和類(lèi)似操作系統(tǒng)的開(kāi)銷(xiāo)會(huì)對(duì)確定性和內(nèi)存消耗產(chǎn)生負(fù)面影響。
蜂窩調(diào)制解調(diào)器、高性能視頻處理和復(fù)雜的汽車(chē)控制器只是在小尺寸、低功耗多核平臺(tái)的對(duì)稱(chēng)多處理(SMP)架構(gòu)下運(yùn)行的,高度確定性應(yīng)用的幾個(gè)案例。此類(lèi)系統(tǒng)需要底層操作系統(tǒng)的核心分配和任務(wù)調(diào)度能力,以滿(mǎn)足硬實(shí)時(shí)要求,同時(shí)又不影響資源使用。
在資源受限的平臺(tái)上,嵌入式Linux不是SMP的可行選擇,支持SMP的實(shí)時(shí)操作系統(tǒng)(RTOS)也寥寥無(wú)幾。因此,開(kāi)發(fā)人員必須創(chuàng)建自己的方法來(lái)跨越多個(gè)內(nèi)核進(jìn)行調(diào)度和管理任務(wù)。隨著越來(lái)越多的嵌入式設(shè)備需要跨多個(gè)內(nèi)核部署確定性工作負(fù)載,RTOS層的動(dòng)態(tài)負(fù)載均衡需求只會(huì)不斷增長(zhǎng)。
對(duì)稱(chēng)多處理與非對(duì)稱(chēng)多處理
SMP和非對(duì)稱(chēng)多處理(AMP)是兩種多個(gè)處理器協(xié)同工作來(lái)調(diào)度和運(yùn)行工作負(fù)載的架構(gòu)模式。SMP系統(tǒng)的處理器內(nèi)核是完全相同,可以運(yùn)行分配給它們的任何任務(wù),而AMP系統(tǒng)通常依賴(lài)于單個(gè)主內(nèi)核,根據(jù)可用性和優(yōu)先級(jí)來(lái)調(diào)度和分配任務(wù)。在AMP系統(tǒng)中,核心本身不需要是相同的類(lèi)型或架構(gòu)(例如,MPU可以與GPU協(xié)同工作),并且任務(wù)通常是針對(duì)內(nèi)核類(lèi)型的。
當(dāng)開(kāi)發(fā)人員可以依賴(lài)于一個(gè)穩(wěn)定且可預(yù)測(cè)的環(huán)境時(shí),AMP模式效果最佳,因?yàn)椴僮飨到y(tǒng)可以有效地分配工作負(fù)載,而不會(huì)產(chǎn)生大量開(kāi)銷(xiāo)。相比之下,對(duì)于在事件不斷變化的環(huán)境中運(yùn)行的應(yīng)用,需要在不同內(nèi)核之間動(dòng)態(tài)轉(zhuǎn)移工作負(fù)載時(shí),SMP模式通常效果最佳。例如,許多手機(jī)都使用SMP,像是在Arm Cortex-A53平臺(tái)上實(shí)現(xiàn)蜂窩調(diào)制解調(diào)器功能的手機(jī)。
為了有效地跨多個(gè)內(nèi)核分配應(yīng)用線(xiàn)程,嵌入式軟件開(kāi)發(fā)人員使用了動(dòng)態(tài)負(fù)載均衡技術(shù)。其主要目標(biāo)是確保應(yīng)用在運(yùn)行時(shí)在內(nèi)核之間均勻分配計(jì)算工作負(fù)載,并保證優(yōu)先級(jí)最高的線(xiàn)程不會(huì)被優(yōu)先級(jí)較低的線(xiàn)程搶占。
動(dòng)態(tài)負(fù)載均衡的原理
動(dòng)態(tài)負(fù)載均衡中的“動(dòng)態(tài)”是指運(yùn)行時(shí)對(duì)線(xiàn)程調(diào)度進(jìn)行持續(xù)評(píng)估,使應(yīng)用能夠適應(yīng)不斷變化的任務(wù)需求和系統(tǒng)條件。動(dòng)態(tài)負(fù)載均衡對(duì)于以下方面至關(guān)重要:
* 提高利用率:通過(guò)將任務(wù)分配到多個(gè)核心,開(kāi)發(fā)人員可以充分利用每個(gè)核心的計(jì)算能力,提高系統(tǒng)整體利用率。
* 縮短響應(yīng)時(shí)間:適當(dāng)?shù)呢?fù)載均衡可確保將關(guān)鍵任務(wù)分配給占用最少的核心,從而縮短響應(yīng)時(shí)間并增強(qiáng)任務(wù)執(zhí)行的可預(yù)測(cè)性。
* 容錯(cuò):通過(guò)將任務(wù)重新分配給未出現(xiàn)故障的核心,負(fù)載均衡可以幫助減輕軟件故障和硬件故障的影響,從而確保系統(tǒng)功能的持續(xù)運(yùn)行。
* 可擴(kuò)展性:隨著系統(tǒng)需求的增長(zhǎng)和更多內(nèi)核的增加,均勻地分配任務(wù)對(duì)于在不引入瓶頸的情況下擴(kuò)展容量至關(guān)重要。
嵌入式Linux自帶負(fù)載均衡機(jī)制,但也有缺點(diǎn):操作系統(tǒng)會(huì)產(chǎn)生高昂的開(kāi)銷(xiāo),這可能會(huì)嚴(yán)重影響確定性。由于大多數(shù)硬實(shí)時(shí)RTOS不支持SMP架構(gòu)上的負(fù)載均衡,因此開(kāi)發(fā)人員通常會(huì)自行構(gòu)建支持機(jī)制。這項(xiàng)工作本身也存在挑戰(zhàn):
* 資源使用:由于每個(gè)核心都有自己的緩存、寄存器和其他功能,開(kāi)發(fā)人員必須花時(shí)間了解平臺(tái),以便在不影響性能或不造成資源爭(zhēng)搶的情況下有效地分配任務(wù)。
* 內(nèi)存訪(fǎng)問(wèn):如果開(kāi)發(fā)人員將具有公共內(nèi)存池的任務(wù)分配給不同的內(nèi)核,并且沒(méi)有充分考慮應(yīng)用的控制和數(shù)據(jù)流,則可能會(huì)出現(xiàn)內(nèi)存訪(fǎng)問(wèn)問(wèn)題。
* 任務(wù)優(yōu)先級(jí):開(kāi)發(fā)人員必須了解所有任務(wù)優(yōu)先級(jí)和截止時(shí)間,以確保為高優(yōu)先級(jí)任務(wù)分配足夠的資源和時(shí)間,避免延遲。
* 動(dòng)態(tài)適應(yīng):由于負(fù)載均衡是一個(gè)適應(yīng)不斷變化的系統(tǒng)條件的過(guò)程,因此開(kāi)發(fā)人員必須實(shí)現(xiàn)某種反饋回路或控制機(jī)制,以便在運(yùn)行期間不斷重新評(píng)估線(xiàn)程分配并調(diào)整策略。
* 同步開(kāi)銷(xiāo):開(kāi)發(fā)人員必須最大限度地減少內(nèi)核之間任務(wù)切換所需的開(kāi)銷(xiāo),以減少延遲并保持系統(tǒng)的實(shí)時(shí)響應(yīng)能力。
RTOS層的負(fù)載均衡
像是PX5 RTOS這類(lèi)專(zhuān)為基于多核MPU的應(yīng)用而設(shè)計(jì)的RTOS可以提供內(nèi)置負(fù)載均衡功能,能夠滿(mǎn)足硬實(shí)時(shí)確定性的要求,且開(kāi)銷(xiāo)遠(yuǎn)遠(yuǎn)低于嵌入式Linux和其他操作系統(tǒng)。PX5 RTOS采用原生POSIX pthreads API,運(yùn)行所需的內(nèi)存不到10KB,具有極高的可移植性和資源效率,使開(kāi)發(fā)人員無(wú)需構(gòu)建自己的負(fù)載均衡器。
這種RTOS原生負(fù)載均衡器的運(yùn)行方式與許多流行的負(fù)載均衡技術(shù)相同:
1、給定任意數(shù)量的核心,RTOS會(huì)跟蹤每個(gè)核心上運(yùn)行的線(xiàn)程。當(dāng)核心空閑并且線(xiàn)程可用于調(diào)度時(shí),RTOS會(huì)調(diào)度該線(xiàn)程在該核心上運(yùn)行。
2、如果沒(méi)有空閑核心并且新線(xiàn)程已就緒,則RTOS會(huì)使用該線(xiàn)程的優(yōu)先級(jí)進(jìn)行調(diào)度:如果其優(yōu)先級(jí)高于當(dāng)前運(yùn)行的任何其他線(xiàn)程的優(yōu)先級(jí),則RTOS會(huì)調(diào)度新線(xiàn)程以搶占正在運(yùn)行的線(xiàn)程。如果其優(yōu)先級(jí)低于當(dāng)前運(yùn)行的任何線(xiàn)程的優(yōu)先級(jí),則RTOS會(huì)等待下一個(gè)可用核心運(yùn)行。
這種方法使用與嵌入式Linux相同的處理器關(guān)聯(lián)API,使開(kāi)發(fā)人員可以輕松地將線(xiàn)程分配給特定內(nèi)核并依賴(lài)RTOS來(lái)強(qiáng)制執(zhí)行此類(lèi)分配。與大多數(shù)RTOS一樣,開(kāi)發(fā)人員必須確保共享資源的恰當(dāng)管理,以避免出現(xiàn)爭(zhēng)用問(wèn)題。
并非所有線(xiàn)程都是平等的
在典型的單核、基于優(yōu)先級(jí)的搶占式調(diào)度環(huán)境中,開(kāi)發(fā)人員一次只能依賴(lài)一個(gè)運(yùn)行的線(xiàn)程。在SMP環(huán)境中,由于多個(gè)線(xiàn)程可以在任意數(shù)量的內(nèi)核上并行運(yùn)行,因此這一條件無(wú)法保證。為了避免這種行為對(duì)系統(tǒng)的潛在負(fù)面影響,即要求在給定時(shí)間內(nèi)只運(yùn)行優(yōu)先級(jí)最高的線(xiàn)程,PX5 RTOS讓開(kāi)發(fā)人員能夠配置調(diào)度,僅允許相同優(yōu)先級(jí)的線(xiàn)程在所有內(nèi)核上并行運(yùn)行。這種方法強(qiáng)制執(zhí)行更嚴(yán)格程度的并行,使開(kāi)發(fā)人員對(duì)其系統(tǒng)的可預(yù)測(cè)性更有信心。
結(jié)論
開(kāi)發(fā)人員要在小尺寸、低功耗的多核平臺(tái)上實(shí)現(xiàn)極高的實(shí)時(shí)性能和響應(yīng)速度,就必須實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡。像是PX5 RTOS負(fù)載均衡功能這樣的機(jī)制支持將就緒的應(yīng)用線(xiàn)程與可用內(nèi)核動(dòng)態(tài)配對(duì),所有這些都在一個(gè)超小(小于10KB)、超便攜(具有完全兼容的pthreads API),并且經(jīng)過(guò)嚴(yán)格測(cè)試(每個(gè)版本的C語(yǔ)句和分支決策覆蓋率都達(dá)到100%)的封裝內(nèi)實(shí)現(xiàn)的。
RTOS原生負(fù)載均衡使開(kāi)發(fā)人員能夠?qū)W⒂趹?yīng)用和測(cè)試,而不必自己構(gòu)建在多個(gè)處理器之間分配工作負(fù)載的方法。
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19899瀏覽量
235445 -
調(diào)制解調(diào)器
+關(guān)注
關(guān)注
3文章
874瀏覽量
39634 -
SMP
+關(guān)注
關(guān)注
0文章
78瀏覽量
20288 -
MPU
+關(guān)注
關(guān)注
0文章
415瀏覽量
49949 -
嵌入式開(kāi)發(fā)
+關(guān)注
關(guān)注
18文章
1077瀏覽量
48901
原文標(biāo)題:在資源受限的MPU上使用SMP的新方法
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
芯片制造中高精度膜厚測(cè)量與校準(zhǔn):基于紅外干涉技術(shù)的新方法

無(wú)刷直流電機(jī)轉(zhuǎn)矩脈動(dòng)抑制新方法
無(wú)刷直流電機(jī)反電勢(shì)過(guò)零檢測(cè)新方法
MPU的性能評(píng)估方法
SMO與SMP的區(qū)別與聯(lián)系
石墨烯制備的新方法

大華股份榮獲中國(guó)創(chuàng)新方法大賽一等獎(jiǎng)
基于遺傳算法的QD-SOA設(shè)計(jì)新方法

一種降低VIO/VSLAM系統(tǒng)漂移的新方法

大華股份榮獲2024年中國(guó)創(chuàng)新方法大賽一等獎(jiǎng)
利用全息技術(shù)在硅晶圓內(nèi)部制造納米結(jié)構(gòu)的新方法
上海光機(jī)所提出強(qiáng)激光產(chǎn)生高能量子渦旋態(tài)電子新方法

保護(hù)4-20 mA,±20-mA模擬輸入的新方法

在Sitara MPU上啟用Matter

實(shí)踐JLink 7.62手動(dòng)增加新MCU型號(hào)支持新方法

評(píng)論