隨著智能化產(chǎn)品的需求不斷提高,慢慢的單芯片單核處理器已經(jīng)不能滿足我們的需求,于是就在一個芯片上集成兩個或多個核心,進而轉向了多核處理器的發(fā)展,多核處理器具有更高的計算密度和更強的并行處理能力,所以它也是大趨勢。多核處理器從硬件的角度來區(qū)分,又分為同構和異構:
多核同構處理器:一個處理器的多個核心的體系架構是一樣的,如:T113
多核異構處理器:一個處理器中包含不同體系架構的核心,如:STM32MP157
多核處理器從軟件的角度來區(qū)分,又分為SMP和AMP:
SMP:又稱對稱多處理(Symmetric multiprocessing),只有一個操作系統(tǒng)(OS)實例上運行多個核心,一個OS同等的管理各個內(nèi)核,為各個內(nèi)核分配工作負載,系統(tǒng)中所有的內(nèi)核平等地訪問內(nèi)存資源和外設資源。
AMP:又稱非對稱多處理(Asymmetric Multi-Processing),每個核心運行自己的OS或同一OS的獨立實例,或者說不運行OS,如運行裸機,每個內(nèi)核有自己獨立的內(nèi)存空間,也可以和其它內(nèi)核共享部分內(nèi)存空間,每個核心相對獨立地運行不同的任務,但是有一個核心為主要核心,它負責控制其它核心以及整個系統(tǒng)的運 行,而其它核心負責“配合”主核心來完成特定的任務。
本篇文章圍繞SMP展開講解。
什么是SMP
對稱多處理器結構 , 英文名稱為 "Symmetrical Multi-Processing" , 簡稱SMP。SMP又稱為UMA, 全稱"Uniform Memory Access", 中文名稱"統(tǒng)一內(nèi)存訪問架構"。
在 " 對稱多處理器結構 " 的 系統(tǒng)中 , 所有的處理器單元的地位都是平等的 , 一般指的是服務器設備上 , 運行的 多個 CPU , 沒有 主次/從屬 關系,都是平等的。
這些處理器共享所有的設備資源, 所有的資源對處理器單元具有相同的可訪問性, 如: 內(nèi)存, 總線等,多個CPU處理器共享相同的物理內(nèi)存, 每個CPU訪問相同的物理地址, 所消耗的時間是相同的;

SMP的優(yōu)缺點
優(yōu)點 :避免了結構障礙, 其最大的特點是所有的資源共享。缺點:SMP架構的系統(tǒng), 擴展能力有限, 有瓶頸限制。如: 內(nèi)存瓶頸限制, 每個CPU處理器必須通過相同的總線訪問相同的內(nèi)存資源, 如果CPU數(shù)量不斷增加, 使用同一條總線, 就會導致內(nèi)存訪問沖突; 這樣就降低了CPU的性能;
操作系統(tǒng)如何滿足SMP
公平共享: CPU的負載, 需要公平地共享, 不能出現(xiàn)某個CPU空閑, 造成資源浪費。
可設置線程(進程)與CPU親和性: 可以為某些類型的線程(進程)與指定的處理器設置親和性, 可以針對性地匹配線程(進程)與處理器。
線程(進程)遷移: 可以將線程(進程)在不同的CPU處理器之間進行遷移 。
總結:操作系統(tǒng)的SMP對稱多處理器結構調(diào)度,核心就是將線程(進程)遷移到合適的處理器上, 并且可以保持各個處理器的負載均衡。
SMP調(diào)度方式
作者總結SMP的調(diào)度算法可以分為三種:
①線程(進程)默認核心0運行,可以指定親和性:
當用戶創(chuàng)建線程(進程)時,可以指定掛在到指定核心運行。當任務掛在到指定核心,那么該任務只能在該核心上運行。
當用戶創(chuàng)建線程(進程)時,沒有指定掛在到指定核心運行,線程(進程)默認掛在到核心0。該任務核心0上運行。

問題:
優(yōu)點:可以規(guī)定某個核心專注的做某一件事或某一類事。
缺點:核心0的負載會很大,它需要調(diào)度其他核心不調(diào)度的任務。
適用場景:
項目需要指定核心專一處理某一件事情的時候,可以使用這種調(diào)度算法
②線程(進程)默認均分到不同核心,可以指定親和性。
當用戶創(chuàng)建線程(進程)時,可以指定掛在到指定核心運行。當任務掛在到指定核心,那么該任務只能在該核心上運行。
當用戶創(chuàng)建線程(進程)時,沒有指定掛在到指定核心運行,系統(tǒng)會判斷每個核心的任務數(shù),將該任務放在任務數(shù)最少的核心中。

問題:
優(yōu)點:將任務平分給每個核心,每個核心的負載會相對均衡。
缺點:可能存在某個核心分配的任務都是比較輕的,某個核心分配的任務比較重。導致核心中的任務比較輕的,會更加容易進入空閑狀態(tài),核心中的任務比較重的,可能會一直處于忙碌狀態(tài),這樣也會導致每個核心的負載不均衡。
適用場景:
項目中,所有的任務的復雜程度都差不多,可以均分到每個核心上,這樣可以提高系統(tǒng)性能。
③線程(進程)根據(jù)核心負載獲取任務調(diào)度,可以指定親和性。
當用戶創(chuàng)建線程(進程)時,可以指定掛在到指定核心運行。當任務掛在到指定核心,那么該任務只能在該核心上運行。
當用戶創(chuàng)建線程(進程)時,沒有指定掛在到指定核心運行,將該任務掛載一個總任務隊列中,當某個核心調(diào)度空閑時,就從總任務隊列中獲取一個任務運行。運行完畢之后歸還給總任務隊列。

問題:
優(yōu)點:根據(jù)每個核心的負載,均分整個系統(tǒng)的任務調(diào)度,提供了每個核心的利用率。
缺點:調(diào)度算法比較復雜
適用場景:
項目中不需要關心任務的具體運行到那個核心。
總結
上述的調(diào)度算法,只有第三種滿足:①公平共享;②可設置線程(進程)與CPU親和性;③線程(進程)遷移。
調(diào)度算法,第一種和第二種,只滿足三個條件的某一部分。
不用的調(diào)度適用于不同的場景,需要根據(jù)實際的需求選擇相應的調(diào)度算法。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
20323瀏覽量
254655 -
芯片
+關注
關注
463文章
54369瀏覽量
468955 -
SMP
+關注
關注
0文章
82瀏覽量
20952 -
操作系統(tǒng)
+關注
關注
37文章
7431瀏覽量
129597 -
調(diào)度算法
+關注
關注
1文章
68瀏覽量
12243
原文標題:總結
文章出處:【微信號:風火輪技術團隊,微信公眾號:風火輪技術團隊】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
異構多核處理器系統(tǒng)的特點及基于加權優(yōu)先級的任務調(diào)度算法分析
嵌入式多核處理器硬件結構分析與對排序算法進行并行化優(yōu)化
一種改進的SEDF調(diào)度算法
多核處理器設計九大要素
AliOS Things SMP系統(tǒng)及其在esp32上實現(xiàn)示例
多核處理器分類之SMP與NUMA簡析
中國首顆ARM+RISC-V異構多核MCU伴隨IAR在上海國際嵌入式展亮相
最遲預分配容錯實時調(diào)度算法設計與分析
搶占閾值調(diào)度算法的分析與研究
網(wǎng)格任務調(diào)度算法研究
多核嵌入式系統(tǒng)內(nèi)聯(lián)網(wǎng)絡優(yōu)化調(diào)度
嵌入式多核處理器任務調(diào)度研究
多核同構SMP--調(diào)度算法分析
評論