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