多核、多線程的引入

引言:

對應着處理器從單核到多處理器及多核,操作系統的發展歷程中,從進程演化到線程、多線程。於是,我們會想到這些問題:

1、爲什麼微處理要從單核轉向多核?

功耗問題 限制了單核處理器不斷提高性能的發展途徑:


作爲計算機核心,影響計算機性能高低的核心部件就是處理器。反映在指令上就是處理器執行指令的效率。
  處理器性能 = 主頻 x IPC
可以看出,衡量處理器性能的主要指標是每個時鐘週期內可以執行的指令數(IPC)和處理器的主頻。


因此,提高處理器性能就是兩個途徑:

提高主頻和提高每個時鐘週期內執行的指令數(IPC)。

1)處理器微架構的變化可以改變IPC,效率更高的微架構可以 提高IPC從而提高處理器的性能。但是,對於同一代的架構,改良架構來提高IPC的幅度是非常有限的,所以在單核處理器時代通過提高處理器的主頻來提高性 能就成了唯一的手段。


2)然而,給處理器提高主頻不是沒有止境的,從下面的推導中可以看出,處理器的功耗和處理器內部的電流、電壓的平方和主頻成正比,而主頻和電壓成正比。
  處理器功耗 正比於 電流 x 電壓 x 電壓 x 主頻

主頻 正比於 電壓
  處理器功耗 正比於 主頻的三次方


3)如果通過提高主頻來提高處理器的性能,就會使處理器的功耗以三次方非線性(一次方) 的速度急劇上升,很快就會觸及frequency wall。過快的能耗上升,需要尋找提高處理器性能的因子,提高IPC。

  提高IPC可以通過提高指令執行的並行度來實現,而提高並行度有兩種途徑:一是提高處理器微架構的並行度;二是採用多核架構。

  在採用同樣的微架構的情況下,爲了達到處理器IPC的目的,我們可以採用多核的方法,同時有效地控制功耗的急劇上升。
  處理器功耗 正比於 電流x 電壓 x 電壓 x 主頻

IPC 正比於 電流
  處理器功耗 正比於 IPC

  由單核處理器增加到雙核處理器,如果主頻不變的話,IPC理論上可以提高一倍,功耗理論上也就最多提高一倍,因爲功耗的增加是線性的。而實際情況是, 雙核處理器性能達到單核處理器同等性能的時候,前者的主頻可以更低,因此功耗的下降也是三次方下降 的。反映到產品中就是雙核處理器的起跳主頻可以比單核處理器更低,性能更好。

  由此可見,將來處理器發展的趨勢是:爲了達到更高的性能,在採用相同微架構的情況下,可以增加處理器的內核數量同時維持較低的主頻。這樣設計的效果是,更多的並行提高IPC,較低的主頻有效地控制了功耗的上升。

2、爲什麼提出線程?

其目的有二:

1)如上面所提到的,更好的支持SMP和多核:進程在SMP上可以同時使用多個cpu或者核執行各個線程,很好的支持並行。
2)減小上下文切換的開銷:同一進程的線程共享資源、狀態記錄等;實現同類任務的內存塊共享,對邏輯內存重用,而進程間只能實現對物理內存的分時共享。

3、線程模型

針對上述兩大目的,相應的提出了兩大線程模型 :用戶級線程和核心級線程;分類的標準在於線程的調度者在覈內還是核外。
其中,核內的可以實現併發;核外的使得上下文切換開銷更小。

1、核心以線程爲單位,控制線程的分發調度;
2、單純的用戶線程的調度全部在覈外實現,只需完成線程運行棧的切換,但由於核心信號都以進程爲單位,無法定位到線程,因此不能用於多處理器系統。

於是,現在的大多操作系統不是採用單一的線程模型,而是將兩個模型結合起來,譬如Solaris和Linux]都是採用這樣的混合模型

1、提供核心線程,高層包括基本抽象,如硬件狀態和軟件上下文,滿足SMP;
2、支持線程庫,一個核心線程成爲多個用戶線程的調度者,進而減小了上下文開銷。每個用戶線程可以獨立於該進程的其他線程進行調度執行。
這個模型中,一個進程的某個線程(內核線程)由核內調度,而他又可以調度用戶線程。其目的是保證內核負載最小的條件下,一個進程可以創建大量用戶線程,爲併發提供條件。
發佈了28 篇原創文章 · 獲贊 115 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章