在很多人看來,似乎嵌入式Linux可以為嵌入式開發(fā)人員做所有的事情。雖然嵌入式Linux可以適用于一些具有數(shù)兆內(nèi)存和強大處理器的應用,但越來越多的案例表明,嵌入式Linux和類似操作系統(tǒng)的開銷會對確定性和內(nèi)存消耗產(chǎn)生負面影響。
蜂窩調(diào)制解調(diào)器、高性能視頻處理和復雜的汽車控制器只是在小尺寸、低功耗多核平臺的對稱多處理(SMP)架構(gòu)下運行的,高度確定性應用的幾個案例。此類系統(tǒng)需要底層操作系統(tǒng)的核心分配和任務調(diào)度能力,以滿足硬實時要求,同時又不影響資源使用。
在資源受限的平臺上,嵌入式Linux不是SMP的可行選擇,支持SMP的實時操作系統(tǒng)(RTOS)也寥寥無幾。因此,開發(fā)人員必須創(chuàng)建自己的方法來跨越多個內(nèi)核進行調(diào)度和管理任務。隨著越來越多的嵌入式設備需要跨多個內(nèi)核部署確定性工作負載,RTOS層的動態(tài)負載均衡需求只會不斷增長。
對稱多處理與非對稱多處理
SMP和非對稱多處理(AMP)是兩種多個處理器協(xié)同工作來調(diào)度和運行工作負載的架構(gòu)模式。SMP系統(tǒng)的處理器內(nèi)核是完全相同,可以運行分配給它們的任何任務,而AMP系統(tǒng)通常依賴于單個主內(nèi)核,根據(jù)可用性和優(yōu)先級來調(diào)度和分配任務。在AMP系統(tǒng)中,核心本身不需要是相同的類型或架構(gòu)(例如,MPU可以與GPU協(xié)同工作),并且任務通常是針對內(nèi)核類型的。
當開發(fā)人員可以依賴于一個穩(wěn)定且可預測的環(huán)境時,AMP模式效果最佳,因為操作系統(tǒng)可以有效地分配工作負載,而不會產(chǎn)生大量開銷。相比之下,對于在事件不斷變化的環(huán)境中運行的應用,需要在不同內(nèi)核之間動態(tài)轉(zhuǎn)移工作負載時,SMP模式通常效果最佳。例如,許多手機都使用SMP,像是在Arm Cortex-A53平臺上實現(xiàn)蜂窩調(diào)制解調(diào)器功能的手機。
為了有效地跨多個內(nèi)核分配應用線程,嵌入式軟件開發(fā)人員使用了動態(tài)負載均衡技術(shù)。其主要目標是確保應用在運行時在內(nèi)核之間均勻分配計算工作負載,并保證優(yōu)先級最高的線程不會被優(yōu)先級較低的線程搶占。
動態(tài)負載均衡的原理
動態(tài)負載均衡中的“動態(tài)”是指運行時對線程調(diào)度進行持續(xù)評估,使應用能夠適應不斷變化的任務需求和系統(tǒng)條件。動態(tài)負載均衡對于以下方面至關(guān)重要:
* 提高利用率:通過將任務分配到多個核心,開發(fā)人員可以充分利用每個核心的計算能力,提高系統(tǒng)整體利用率。
* 縮短響應時間:適當?shù)呢撦d均衡可確保將關(guān)鍵任務分配給占用最少的核心,從而縮短響應時間并增強任務執(zhí)行的可預測性。
* 容錯:通過將任務重新分配給未出現(xiàn)故障的核心,負載均衡可以幫助減輕軟件故障和硬件故障的影響,從而確保系統(tǒng)功能的持續(xù)運行。
* 可擴展性:隨著系統(tǒng)需求的增長和更多內(nèi)核的增加,均勻地分配任務對于在不引入瓶頸的情況下擴展容量至關(guān)重要。
嵌入式Linux自帶負載均衡機制,但也有缺點:操作系統(tǒng)會產(chǎn)生高昂的開銷,這可能會嚴重影響確定性。由于大多數(shù)硬實時RTOS不支持SMP架構(gòu)上的負載均衡,因此開發(fā)人員通常會自行構(gòu)建支持機制。這項工作本身也存在挑戰(zhàn):
* 資源使用:由于每個核心都有自己的緩存、寄存器和其他功能,開發(fā)人員必須花時間了解平臺,以便在不影響性能或不造成資源爭搶的情況下有效地分配任務。
* 內(nèi)存訪問:如果開發(fā)人員將具有公共內(nèi)存池的任務分配給不同的內(nèi)核,并且沒有充分考慮應用的控制和數(shù)據(jù)流,則可能會出現(xiàn)內(nèi)存訪問問題。
* 任務優(yōu)先級:開發(fā)人員必須了解所有任務優(yōu)先級和截止時間,以確保為高優(yōu)先級任務分配足夠的資源和時間,避免延遲。
* 動態(tài)適應:由于負載均衡是一個適應不斷變化的系統(tǒng)條件的過程,因此開發(fā)人員必須實現(xiàn)某種反饋回路或控制機制,以便在運行期間不斷重新評估線程分配并調(diào)整策略。
* 同步開銷:開發(fā)人員必須最大限度地減少內(nèi)核之間任務切換所需的開銷,以減少延遲并保持系統(tǒng)的實時響應能力。
RTOS層的負載均衡
像是PX5 RTOS這類專為基于多核MPU的應用而設計的RTOS可以提供內(nèi)置負載均衡功能,能夠滿足硬實時確定性的要求,且開銷遠遠低于嵌入式Linux和其他操作系統(tǒng)。PX5 RTOS采用原生POSIX pthreads API,運行所需的內(nèi)存不到10KB,具有極高的可移植性和資源效率,使開發(fā)人員無需構(gòu)建自己的負載均衡器。
這種RTOS原生負載均衡器的運行方式與許多流行的負載均衡技術(shù)相同:
1、給定任意數(shù)量的核心,RTOS會跟蹤每個核心上運行的線程。當核心空閑并且線程可用于調(diào)度時,RTOS會調(diào)度該線程在該核心上運行。
2、如果沒有空閑核心并且新線程已就緒,則RTOS會使用該線程的優(yōu)先級進行調(diào)度:如果其優(yōu)先級高于當前運行的任何其他線程的優(yōu)先級,則RTOS會調(diào)度新線程以搶占正在運行的線程。如果其優(yōu)先級低于當前運行的任何線程的優(yōu)先級,則RTOS會等待下一個可用核心運行。
這種方法使用與嵌入式Linux相同的處理器關(guān)聯(lián)API,使開發(fā)人員可以輕松地將線程分配給特定內(nèi)核并依賴RTOS來強制執(zhí)行此類分配。與大多數(shù)RTOS一樣,開發(fā)人員必須確保共享資源的恰當管理,以避免出現(xiàn)爭用問題。
并非所有線程都是平等的
在典型的單核、基于優(yōu)先級的搶占式調(diào)度環(huán)境中,開發(fā)人員一次只能依賴一個運行的線程。在SMP環(huán)境中,由于多個線程可以在任意數(shù)量的內(nèi)核上并行運行,因此這一條件無法保證。為了避免這種行為對系統(tǒng)的潛在負面影響,即要求在給定時間內(nèi)只運行優(yōu)先級最高的線程,PX5 RTOS讓開發(fā)人員能夠配置調(diào)度,僅允許相同優(yōu)先級的線程在所有內(nèi)核上并行運行。這種方法強制執(zhí)行更嚴格程度的并行,使開發(fā)人員對其系統(tǒng)的可預測性更有信心。
結(jié)論
開發(fā)人員要在小尺寸、低功耗的多核平臺上實現(xiàn)極高的實時性能和響應速度,就必須實現(xiàn)動態(tài)負載均衡。像是PX5 RTOS負載均衡功能這樣的機制支持將就緒的應用線程與可用內(nèi)核動態(tài)配對,所有這些都在一個超小(小于10KB)、超便攜(具有完全兼容的pthreads API),并且經(jīng)過嚴格測試(每個版本的C語句和分支決策覆蓋率都達到100%)的封裝內(nèi)實現(xiàn)的。
RTOS原生負載均衡使開發(fā)人員能夠?qū)W⒂趹煤蜏y試,而不必自己構(gòu)建在多個處理器之間分配工作負載的方法。
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19440瀏覽量
231315 -
調(diào)制解調(diào)器
+關(guān)注
關(guān)注
3文章
861瀏覽量
38965 -
SMP
+關(guān)注
關(guān)注
0文章
76瀏覽量
19758 -
MPU
+關(guān)注
關(guān)注
0文章
375瀏覽量
48983 -
嵌入式開發(fā)
+關(guān)注
關(guān)注
18文章
1036瀏覽量
47739
原文標題:在資源受限的MPU上使用SMP的新方法
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
MPU的性能評估方法
SMO與SMP的區(qū)別與聯(lián)系
大華股份榮獲中國創(chuàng)新方法大賽一等獎
基于遺傳算法的QD-SOA設計新方法
![基于遺傳算法的QD-SOA設計<b class='flag-5'>新方法</b>](https://file1.elecfans.com/web3/M00/02/99/wKgZO2dg2_iAdKqtAAACOVaVKwc137.png)
一種降低VIO/VSLAM系統(tǒng)漂移的新方法
![一種降低VIO/VSLAM系統(tǒng)漂移的<b class='flag-5'>新方法</b>](https://file1.elecfans.com/web3/M00/02/32/wKgZO2dbqBOAdkLrAABgnDOmV0Y836.png)
大華股份榮獲2024年中國創(chuàng)新方法大賽一等獎
利用全息技術(shù)在硅晶圓內(nèi)部制造納米結(jié)構(gòu)的新方法
保護4-20 mA,±20-mA模擬輸入的新方法
![保護4-20 mA,±20-mA模擬輸入的<b class='flag-5'>新方法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
一種無透鏡成像的新方法
![一種無透鏡成像的<b class='flag-5'>新方法</b>](https://file1.elecfans.com//web2/M00/FD/50/wKgZomaZlSKAXJd7AAD91lO42tY599.jpg)
從“蓋房子”到“頂竹筍”:我國科學家首創(chuàng)晶體制備新方法
![從“蓋房子”到“頂竹筍”:我國科學家首創(chuàng)晶體制備<b class='flag-5'>新方法</b>](https://file1.elecfans.com//web2/M00/FB/29/wKgaomaM17CAepTYAAFn8uwCbiI521.jpg)
使隱形可見:新方法可在室溫下探測中紅外光
![使隱形可見:<b class='flag-5'>新方法</b>可在室溫下探測中紅外光](https://file1.elecfans.com//web2/M00/CF/AB/wKgaomYhnzOALm_YAABXf_eZcXA235.jpg)
評論