超執行緒和多核心簡介

2021-10-03 21:50:00 字數 2080 閱讀 7659

在購買cpu的時候,我們往往會發現cpu的引數列表中核心數和執行緒數不一致,且大多數情況下執行緒數是核心數的兩倍。這是為什麼呢?這就涉及到超執行緒和多核心的概念。

超執行緒cpu簡介

超執行緒技術是英特爾研發的一種技術,與2023年發布。超執行緒技術把多執行緒處理器內部的兩個邏輯核心模擬成兩個物流晶元,讓單個處理器就能使用執行緒級的平行計算,使得cpu空閒資源得以充分利用。

雖然採用超執行緒技術能夠同時執行兩個執行緒,當兩個執行緒同時需要某個資源時,其中乙個執行緒必須讓出資源並暫時掛起,直到這些資源空間以後才能繼續。因此,超執行緒的效能並不等於兩個cpu的效能。

上圖是最簡單的雙線程cpu的乙個例子。圖中有兩個程式計數器(pc0和pc1)及兩個暫存器堆(register file0和register file1),它能同時執行兩個執行緒,相當於有兩個邏輯意義上的cpu(邏輯cpu)。三個功能部件(兩個alu和乙個fpu)被兩個邏輯cpu共享。當兩個執行緒同時要求使用fpu時,其中乙個的要求得到滿足,而另乙個則需要等待。

多核心cpu簡介

隨著半導體工藝技術的提高,在乙個晶元內能整合越來越多的電晶體,並且cpu的時鐘頻率也越來越快。但是時鐘頻率不可能無限地提高(受光速影響,電子訊號傳播速度約為光速三分之二),而且隨著頻率的增加,功率和散熱問題也越來越嚴重(據測算,主頻每增加1ghz,功耗將上公升25w,而在晶元功耗超過150w後,現有的風冷散熱系統將無法滿足散熱的需要)。所以單核處理器效能似乎達到了瓶頸,人們開始把視線放到了多核處理器上。

多核cpu就是在基板上整合多個單核cpu。

如果核的數量不是很多,一般都採用共享匯流排的結構。一般來說,每個核都有各自的第一級cache和第二級cache,共享第**cache,與外部的匯流排介面一般都只有乙個。

多核cpu的cache一致性問題

多核cpu實際上就是乙個小規模的多處理機。多處理機的乙個顯著特點就是共享儲存器。而存在於多處理機中的乙個著名的問題就是cache一致性。

多處理機解決cache不一致問題的方法有兩種。在大規模的分布式共享儲存器的多處理機系統中,往往採用基於目錄的協議。在小規模的基於匯流排的共享儲存器的多處理機系統中,往往採用匯流排監視協議。即每個cache控制器都要監視匯流排上的動作,當匯流排上有寫動作發生時,檢查自己的cache是否有相同位址的cache塊。如果有,則或者把新的資料寫入自己相應的cache塊,或者乾脆把相應的cache塊置為無效。

多處理器排程方法

非對稱多處理

乙個處理器負責所有排程決定、i/o處理以及其他系統活動,其他的處理器只執行使用者**。非對稱多處理很簡單,因為只有乙個處理器訪問系統資料結構,減少了資料共享的需要。

對稱多處理(smp)

每個處理器自我排程。所有程序可能處於乙個共同的就緒佇列中,或者每個處理器都有自己的就緒程序佇列。每個處理器的排程程式都檢查共同就緒佇列,以便選擇執行乙個程序。

處理器親和性

如果乙個原本在某個處理器上執行的程序轉移到了另乙個處理器上執行,則第乙個處理器的快取失效,而第二個處理器的緩衝需要重新填充。程序從乙個處理器轉移到另乙個處理器上執行的代價很大,因此大多數smp系統試圖避免將程序從乙個處理器轉移到另乙個處理器上。這就是處理器親和性。

處理器的親和性有兩種:軟親和性和硬親和性。軟親和性是指作業系統試圖將程序保持在同乙個處理器上,但不是強制的。硬親和性則強制程序只允許在某個處理器上。

多處理器負載均衡

多處理的負載均衡是為了充分利用每個處理器的計算資源,而不至於出現乙個處理器高負載,而其它處理器空閒等待的場景。對於大多數支援smp的現代作業系統,每個處理器都有乙個就緒程序佇列。負載均衡通常有兩種方法:推遷移和拉遷移。

推遷移

周期性地檢查每個處理器的負載,如果發現不平衡,則通過將程序從超載處理器推到低負載的處理器上。

拉遷移

空閒處理器從高負載處理器上拉取乙個程序執行。

CPU基礎 解釋了多個CPU,核心和超執行緒

您計算機中的 處理器 cpu 基本上執行計算工作 執行程式。但是現代cpu提供了諸如多核和超執行緒之類的功能。有些pc甚至使用多個cpu。我們在這裡幫助您解決所有問題。為什麼不能使用cpu時鐘速度來比較計算機效能 超執行緒是英特爾首次嘗試將平行計算引入消費類pc。它於2002年在pentium 4 ...

超執行緒和多執行緒的區別

關於執行緒,多執行緒,併發,並行等作業系統的基礎知識,可以回顧我之前的部落格 作業系統學習之一常用術語 物理cpu 物理cpu就是插在主機上的真實的cpu硬體,在linux下可以數不同的physical id 來確認主機的物理cpu個數。核心數 我們常常會聽說多核處理器,其中的核指的就是核心數。在l...

關於多執行緒和多核

上一次上嵌入式c語言的課,因為 太過活躍 導致獲得了乙個調研執行緒和多核的任務,呵呵。黃少珉老師都發話了,別人考試時安裝平時成績和最後期末考試兩部分為基準 我是三部分,多乙個這個的調研。今天下午花了點時間,在網上搜了點資料然後自己做了點實驗,簡單報告如下 執行平台 首先我們來看下面這段 執行這段 看...