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

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

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

評論