多核嵌入式系統(tǒng)的軟件可能非常復(fù)雜。一個(gè)經(jīng)常討論的主題是如何在每個(gè)內(nèi)核上實(shí)現(xiàn)代碼,以便最佳地利用它。在這篇簡(jiǎn)短的文章中,有一個(gè)不同的觀點(diǎn):關(guān)注可以跨多個(gè)內(nèi)核運(yùn)行的軟件。
多核硬件架構(gòu)
從硬件的角度來看,多核設(shè)備大致有兩種類型:同構(gòu)多核,其中有多個(gè)相同類型的內(nèi)核,以及異構(gòu)多核,其中內(nèi)核是不同類型的。異構(gòu)設(shè)備可能包括一些相同的內(nèi)核。
要跨多個(gè)內(nèi)核運(yùn)行單個(gè)軟件,內(nèi)核必須相同(無論如何從指令集的角度來看)。因此,需要一個(gè)同質(zhì)的多核設(shè)備或異構(gòu)設(shè)備中的同質(zhì)“孤島”。
對(duì)稱多處理
構(gòu)建多核系統(tǒng)的一個(gè)原因是以節(jié)能的方式最大化計(jì)算能力。這是個(gè)人電腦設(shè)計(jì)者采用的方法;多核處理器在筆記本電腦和臺(tái)式機(jī)系統(tǒng)中幾乎無處不在。嵌入式開發(fā)人員可能有相同的目標(biāo)。最好的方法是使用支持對(duì)稱多處理 (SMP) 的操作系統(tǒng)。
SMP OS 將進(jìn)程分布在可用內(nèi)核上。這通常是自動(dòng)的,但嵌入式開發(fā)人員可能需要進(jìn)行一些控制,并可能將某些應(yīng)用程序鎖定到特定內(nèi)核。這些進(jìn)程并不“知道”它們?cè)诓煌膬?nèi)核上運(yùn)行;操作系統(tǒng)提供它們之間的通信和同步。提供多個(gè)實(shí)時(shí)操作系統(tǒng) (RTOS) 的 SMP 版本;Linux 還提供 SMP 變體。
管理程序
盡管嵌入式 SMP OS 提供了某種程度的控制,但嵌入式開發(fā)人員通常希望確保資源的分配完全符合他們的喜好。因此,另一種選擇是為每個(gè)內(nèi)核配置自己的操作系統(tǒng)實(shí)例——所有內(nèi)核不必運(yùn)行相同的操作系統(tǒng)——和應(yīng)用程序代碼。然后,在所有可以控制其操作(引導(dǎo)順序等)并提供內(nèi)核間(或操作系統(tǒng)間)通信的內(nèi)核上運(yùn)行管理程序。
為了獲得更大的靈活性……
到目前為止,我們通過從系統(tǒng)中的單個(gè) (SMP) 操作系統(tǒng)遷移到多個(gè)可能不同的操作系統(tǒng)實(shí)例來提高靈活性。但是,如果需要更大的靈活性而需要使用不同架構(gòu)的內(nèi)核呢?這消除了跨多個(gè)內(nèi)核運(yùn)行代碼的選項(xiàng)——SMP OS 或管理程序都需要同構(gòu)多核環(huán)境。但是,還有另一種選擇:在每個(gè)內(nèi)核上運(yùn)行一個(gè)多核框架(可能是基于 OpenAMP 的產(chǎn)品)。這種方法提供內(nèi)核間通信和生命周期管理。此外,還可以選擇在“裸機(jī)”(即沒有操作系統(tǒng))上運(yùn)行應(yīng)用程序。
結(jié)論
在多核嵌入式系統(tǒng)上開發(fā)軟件是一項(xiàng)復(fù)雜的工作。了解一些選項(xiàng)至關(guān)重要——在相對(duì)簡(jiǎn)單性和完全靈活性之間進(jìn)行權(quán)衡。
審核編輯:湯梓紅
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3607瀏覽量
129599 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1378瀏覽量
40338 -
多核系統(tǒng)
+關(guān)注
關(guān)注
0文章
11瀏覽量
7515
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論