平常的cpu執行緒數要麼是核心數,要麼是2倍核心數,為什麼不能4倍?

時間 2021-06-03 05:27:53

1樓:ijrys

沒那麼簡單的

多執行緒能出現,主要是因為兩點

一是倆執行緒經常使用不同的運算器,比如乙個執行緒做邏輯判斷,乙個做浮點運算,這樣倆執行緒就可以跑在乙個核裡

二是乙個執行緒經常跑不滿乙個運算器,現在intel、amd的u都有SIMD,但是經常運算不去做SIMD優化,那運算器就空下了很多沒用到的部分,可以倆執行緒擠在一起去整

如果你要一核3/4執行緒,需要檢查更多狀態,保證執行緒跑起來都不衝突,或是更寬的運算器,合不來的

有這個功夫不如多來個核

順,也有一核四執行緒的u,IBM的power系列

2樓:呵呵

可以簡單理解成廚房炒菜。

CPU核心是廚師,執行緒是爐頭,當廚師煮時間長且難度低的食物時,就會出現廚師還有餘力。(即,CPU處理難度低,時間久的任務)

那麼多了執行緒,廚師在煲湯,那個這個爐頭A就處理不了煮不了其他菜,多了爐頭B(執行緒)就可以在廚師能力範圍內繼續處理其他任務。這樣可以提高廚師效率(核心)

至於為什麼是兩倍,可能是核心處理能力有限,或者考慮到晶體面積等等之類的問題作出的最優解了。三倍四倍也不是不可以,只是核心處理不過來就造成浪費資源和成本。兩倍可能是剛剛好,或者有點餘力,但肯定不能讓核心超出能力範圍。

3樓:1ightmagic

CPU的處理機制,簡單理解可以認為是排隊。

每乙個核心就相當於乙個僅限於一人通過的通道,等候處理的資料會排成乙個隊伍,資料挨個進通道,然後被逐一處理。這個理解為流水線也行,就是一條傳送帶的意思。

二線程,是指在處理器偶爾因資料緩衝或程序暫停的時候,有限地優先處理後乙個資料。

現實中可以拿火車票檢票來比擬:

某個乘客都到了檢票口,才想起忘了把票從拉桿箱裡的皮包裡的票夾裡拿出來,

於是暫時靠邊拿一下票,

此時跟在他後面的其他幾個持票在手的乘客就可以馬上檢票通過。

而且因為這位忘拿票的乘客已經在檢票口了,

只要他票拿出來,也就可以立馬通過,不用回到隊伍尾部重新排隊。

這就等於臨時允許插隊的意思。

可以加速乘客的通過效率。

所以,無論設定多少執行緒,因為通過的門只有1個,能得以有效執行的實際效率,最終也就相當於偶爾插個隊罷了。

PS:給小白做個民科:

多執行緒不等於多個核心的效能。

比如2核4執行緒,不是指2個核心的效率會被放大到4個核心的處理效率。

而是指單位時間段內,有4個資料流併發處理的可能。

實際處理效率還是以兩個核心為準。

再簡單點來說,

CPU不管多少核心,他們的綜合處理效率是按照其型號恆定的,(包括超頻效率在內)。

多執行緒就是負責讓這些核心沒有偷懶的機會和空擋,從而提高資料處理量。

核心越多,則執行緒插隊效率越高,多核心多執行緒的優勢也就體現在此了。

一般來說,多執行緒的實際提公升效率,整體上大概在 5-20% 左右浮動。

而且還要執行的軟體和系統能良好支援才行。

關於多執行緒程式設計和CPU多核多執行緒的關係?

佐佐浪 具體到你的例子,修改優先順序和修改時間片是無法達到這個效果的。你需要做的是把你的計算部分做成並行的。單獨乙個執行緒是達不到你要的效果的。 棒子先生 首相我們了解下為什麼需要用到4核,這是由於不能盲目的提高CPU的主頻和頻寬,這樣會產生各種實際很難處理的問題,比如溫度飆公升等。舉例來說我們需要...

多執行緒網路程式設計中如何合理地選擇執行緒數?

jameswhale 若業務是CPU計算型,建立比CPU核多的執行緒的確是沒有意義的,徒增執行緒的切換開銷。若業務是IO密集型的,可以建立比CPU核數多一些的執行緒,實際經驗是一般設定為2倍。 戈君 需要的執行緒數 qps latency 單位秒 依據是little s law,類似的應用是tcp中...

多執行緒程式設計時,最佳執行緒數目與什麼有關,核數,還有其他的嗎?

Name5566 我所了解到的原則是 活躍執行緒數為 CPU 核 數時最佳。過少的活躍執行緒導致 CPU 無法被充分利用,過多的活躍執行緒導致過大的執行緒上下文切換開銷。首先執行緒應該是活躍的,處於 IO 的執行緒,休眠的執行緒等均不消耗 CPU。在實際環境中,當前活躍執行緒數一直在變化,很多活躍執...