隨著智能化產(chǎn)品的需求不斷提高,慢慢的單芯片單核處理器已經(jīng)不能滿足我們的需求,于是就在一個(gè)芯片上集成兩個(gè)或多個(gè)核心,進(jìn)而轉(zhuǎn)向了多核處理器的發(fā)展,多核處理器具有更高的計(jì)算密度和更強(qiáng)的并行處理能力,所以它也是大趨勢(shì)。多核處理器從硬件的角度來區(qū)分,又分為同構(gòu)和異構(gòu):
多核同構(gòu)處理器:一個(gè)處理器的多個(gè)核心的體系架構(gòu)是一樣的,如:T113
多核異構(gòu)處理器:一個(gè)處理器中包含不同體系架構(gòu)的核心,如:STM32MP157
多核處理器從軟件的角度來區(qū)分,又分為SMP和AMP:
SMP:又稱對(duì)稱多處理(Symmetric multiprocessing),只有一個(gè)操作系統(tǒng)(OS)實(shí)例上運(yùn)行多個(gè)核心,一個(gè)OS同等的管理各個(gè)內(nèi)核,為各個(gè)內(nèi)核分配工作負(fù)載,系統(tǒng)中所有的內(nèi)核平等地訪問內(nèi)存資源和外設(shè)資源。
AMP:又稱非對(duì)稱多處理(Asymmetric Multi-Processing),每個(gè)核心運(yùn)行自己的OS或同一OS的獨(dú)立實(shí)例,或者說不運(yùn)行OS,如運(yùn)行裸機(jī),每個(gè)內(nèi)核有自己獨(dú)立的內(nèi)存空間,也可以和其它內(nèi)核共享部分內(nèi)存空間,每個(gè)核心相對(duì)獨(dú)立地運(yùn)行不同的任務(wù),但是有一個(gè)核心為主要核心,它負(fù)責(zé)控制其它核心以及整個(gè)系統(tǒng)的運(yùn) 行,而其它核心負(fù)責(zé)“配合”主核心來完成特定的任務(wù)。
本篇文章圍繞SMP展開講解。
什么是SMP
對(duì)稱多處理器結(jié)構(gòu) , 英文名稱為 "Symmetrical Multi-Processing" , 簡(jiǎn)稱SMP。SMP又稱為UMA, 全稱"Uniform Memory Access", 中文名稱"統(tǒng)一內(nèi)存訪問架構(gòu)"。
在 " 對(duì)稱多處理器結(jié)構(gòu) " 的 系統(tǒng)中 , 所有的處理器單元的地位都是平等的 , 一般指的是服務(wù)器設(shè)備上 , 運(yùn)行的 多個(gè) CPU , 沒有 主次/從屬 關(guān)系,都是平等的。
這些處理器共享所有的設(shè)備資源, 所有的資源對(duì)處理器單元具有相同的可訪問性, 如: 內(nèi)存, 總線等,多個(gè)CPU處理器共享相同的物理內(nèi)存, 每個(gè)CPU訪問相同的物理地址, 所消耗的時(shí)間是相同的;
SMP的優(yōu)缺點(diǎn)
優(yōu)點(diǎn) :避免了結(jié)構(gòu)障礙, 其最大的特點(diǎn)是所有的資源共享。缺點(diǎn):SMP架構(gòu)的系統(tǒng), 擴(kuò)展能力有限, 有瓶頸限制。如: 內(nèi)存瓶頸限制, 每個(gè)CPU處理器必須通過相同的總線訪問相同的內(nèi)存資源, 如果CPU數(shù)量不斷增加, 使用同一條總線, 就會(huì)導(dǎo)致內(nèi)存訪問沖突; 這樣就降低了CPU的性能;
操作系統(tǒng)如何滿足SMP
公平共享: CPU的負(fù)載, 需要公平地共享, 不能出現(xiàn)某個(gè)CPU空閑, 造成資源浪費(fèi)。
可設(shè)置線程(進(jìn)程)與CPU親和性: 可以為某些類型的線程(進(jìn)程)與指定的處理器設(shè)置親和性, 可以針對(duì)性地匹配線程(進(jìn)程)與處理器。
線程(進(jìn)程)遷移: 可以將線程(進(jìn)程)在不同的CPU處理器之間進(jìn)行遷移 。
總結(jié):操作系統(tǒng)的SMP對(duì)稱多處理器結(jié)構(gòu)調(diào)度,核心就是將線程(進(jìn)程)遷移到合適的處理器上, 并且可以保持各個(gè)處理器的負(fù)載均衡。
SMP調(diào)度方式
作者總結(jié)SMP的調(diào)度算法可以分為三種:
①線程(進(jìn)程)默認(rèn)核心0運(yùn)行,可以指定親和性:
當(dāng)用戶創(chuàng)建線程(進(jìn)程)時(shí),可以指定掛在到指定核心運(yùn)行。當(dāng)任務(wù)掛在到指定核心,那么該任務(wù)只能在該核心上運(yùn)行。
當(dāng)用戶創(chuàng)建線程(進(jìn)程)時(shí),沒有指定掛在到指定核心運(yùn)行,線程(進(jìn)程)默認(rèn)掛在到核心0。該任務(wù)核心0上運(yùn)行。
問題:
優(yōu)點(diǎn):可以規(guī)定某個(gè)核心專注的做某一件事或某一類事。
缺點(diǎn):核心0的負(fù)載會(huì)很大,它需要調(diào)度其他核心不調(diào)度的任務(wù)。
適用場(chǎng)景:
項(xiàng)目需要指定核心專一處理某一件事情的時(shí)候,可以使用這種調(diào)度算法
②線程(進(jìn)程)默認(rèn)均分到不同核心,可以指定親和性。
當(dāng)用戶創(chuàng)建線程(進(jìn)程)時(shí),可以指定掛在到指定核心運(yùn)行。當(dāng)任務(wù)掛在到指定核心,那么該任務(wù)只能在該核心上運(yùn)行。
當(dāng)用戶創(chuàng)建線程(進(jìn)程)時(shí),沒有指定掛在到指定核心運(yùn)行,系統(tǒng)會(huì)判斷每個(gè)核心的任務(wù)數(shù),將該任務(wù)放在任務(wù)數(shù)最少的核心中。
問題:
優(yōu)點(diǎn):將任務(wù)平分給每個(gè)核心,每個(gè)核心的負(fù)載會(huì)相對(duì)均衡。
缺點(diǎn):可能存在某個(gè)核心分配的任務(wù)都是比較輕的,某個(gè)核心分配的任務(wù)比較重。導(dǎo)致核心中的任務(wù)比較輕的,會(huì)更加容易進(jìn)入空閑狀態(tài),核心中的任務(wù)比較重的,可能會(huì)一直處于忙碌狀態(tài),這樣也會(huì)導(dǎo)致每個(gè)核心的負(fù)載不均衡。
適用場(chǎng)景:
項(xiàng)目中,所有的任務(wù)的復(fù)雜程度都差不多,可以均分到每個(gè)核心上,這樣可以提高系統(tǒng)性能。
③線程(進(jìn)程)根據(jù)核心負(fù)載獲取任務(wù)調(diào)度,可以指定親和性。
當(dāng)用戶創(chuàng)建線程(進(jìn)程)時(shí),可以指定掛在到指定核心運(yùn)行。當(dāng)任務(wù)掛在到指定核心,那么該任務(wù)只能在該核心上運(yùn)行。
當(dāng)用戶創(chuàng)建線程(進(jìn)程)時(shí),沒有指定掛在到指定核心運(yùn)行,將該任務(wù)掛載一個(gè)總?cè)蝿?wù)隊(duì)列中,當(dāng)某個(gè)核心調(diào)度空閑時(shí),就從總?cè)蝿?wù)隊(duì)列中獲取一個(gè)任務(wù)運(yùn)行。運(yùn)行完畢之后歸還給總?cè)蝿?wù)隊(duì)列。
問題:
優(yōu)點(diǎn):根據(jù)每個(gè)核心的負(fù)載,均分整個(gè)系統(tǒng)的任務(wù)調(diào)度,提供了每個(gè)核心的利用率。
缺點(diǎn):調(diào)度算法比較復(fù)雜
適用場(chǎng)景:
項(xiàng)目中不需要關(guān)心任務(wù)的具體運(yùn)行到那個(gè)核心。
總結(jié)
上述的調(diào)度算法,只有第三種滿足:①公平共享;②可設(shè)置線程(進(jìn)程)與CPU親和性;③線程(進(jìn)程)遷移。
調(diào)度算法,第一種和第二種,只滿足三個(gè)條件的某一部分。
不用的調(diào)度適用于不同的場(chǎng)景,需要根據(jù)實(shí)際的需求選擇相應(yīng)的調(diào)度算法。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19547瀏覽量
231869 -
芯片
+關(guān)注
關(guān)注
459文章
51600瀏覽量
429911 -
SMP
+關(guān)注
關(guān)注
0文章
76瀏覽量
19847 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6942瀏覽量
124172 -
調(diào)度算法
+關(guān)注
關(guān)注
1文章
68瀏覽量
12024
原文標(biāo)題:總結(jié)
文章出處:【微信號(hào):風(fēng)火輪技術(shù)團(tuán)隊(duì),微信公眾號(hào):風(fēng)火輪技術(shù)團(tuán)隊(duì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
異構(gòu)多核處理器系統(tǒng)的特點(diǎn)及基于加權(quán)優(yōu)先級(jí)的任務(wù)調(diào)度算法分析

一種改進(jìn)的SEDF調(diào)度算法
多核處理器設(shè)計(jì)九大要素
AliOS Things SMP系統(tǒng)及其在esp32上實(shí)現(xiàn)示例
多核處理器分類之SMP與NUMA簡(jiǎn)析
中國首顆ARM+RISC-V異構(gòu)多核MCU伴隨IAR在上海國際嵌入式展亮相
最遲預(yù)分配容錯(cuò)實(shí)時(shí)調(diào)度算法設(shè)計(jì)與分析
基于DiffServ模型的調(diào)度算法
搶占閾值調(diào)度算法的分析與研究
網(wǎng)格任務(wù)調(diào)度算法研究
一種多核混合分區(qū)調(diào)度算法設(shè)計(jì)與實(shí)現(xiàn)
多核嵌入式系統(tǒng)內(nèi)聯(lián)網(wǎng)絡(luò)優(yōu)化調(diào)度

嵌入式多核處理器任務(wù)調(diào)度研究

評(píng)論