回覆列表
  • 1 # 使用者2269540053531

    CPU的幾核幾線程具體適用於什麼情況?

    一個CPU核心就是一組運算單元(ALU)和一個控制單元 的組合,可以獨立地完成一些計算。控制單元從記憶體中讀取計算機指令,然後指揮運算單元執行指令,將指令結果寫入記憶體,然後再讀取下一條指令,以此重複。多個核心就可以同時獨立執行不同的計算任務,從而提高整體計算能力。

    執行緒是個作業系統中虛擬的概念。一個執行緒是一個應用程式中的一部分,負責執行程式中部分計算任務。多個執行緒可以並存,且不依賴於CPU核心的數量。只有一個CPU核心時,這個核心一會執行一個執行緒,一會又執行另一個執行緒,線上程中切換。因為切換的速度很快(微秒級別),人感覺不到,從而造成一種所有執行緒(程式)在同時執行的錯覺。就像快速翻畫書就會產生動畫的錯覺一樣。實際上,一個CPU核心在同一時刻只能執行一個執行緒。

    Intel的中高階CPU有一種超執行緒技術,可以讓一個CPU核心同時執行2個執行緒。為了產品宣傳,經常說什麼雙核四執行緒,四核八執行緒。實際上這裡指的是CPU可以真正同時地跑多少個執行緒。

    假設作業系統裡有8個執行緒在跑,如果電腦只有1個CPU核心的話,那麼這8個執行緒永遠不能同時執行,而是輪流執行。如果有2個核心,那麼有2個執行緒可以同時跑。如果有8個核心,那麼所有執行緒都可以真正同時跑起來,而不是快速切換造成的錯覺。

    每個應用程式,根據編寫的不同,可以只有一個執行緒,也可有任意多個執行緒。假設每個程式都是簡單的,也就是隻有一個執行緒的。那麼8個執行緒就是8個程式。在這種場景下,CPU核心數越接近8, 則電腦的整體運算效能就越好,每個程式都有獨立的核心持續不斷地執行,互不干擾,使用者的體驗就是不卡,流暢。而超過8個核心的話,剩下的核心不會被使用,所以也不會讓電腦更快,只能造成資源浪費。

    另一種極端情況是,只有一個程式在執行,它有8個執行緒 (比如某些大型3D遊戲)。同理,CPU核心數越接近8越好,多餘的則是浪費。

    實際應用中,不同的程式的執行緒數差別很大,從1個到上千個執行緒都有。執行緒數不是越多越好,多執行緒程式編寫和除錯非常困難。有些程式的性質決定了不同的執行緒之間幾乎沒有通訊和互相干擾(理想情況),而其他程式則隨著執行緒數的增加,執行緒間的通訊也越來越多,會拖慢速度,最終抵消掉多執行緒帶來的效能提升。更復雜的是,一臺電腦上往往執行著多個不同種類的程式,而且不是所有的程式或執行緒都一直在跑,大部分執行緒平時都處於等待狀態,不佔用CPU,只有在需要的時候才會用CPU跑起來。

    同理,CPU也不是說核心數越多越好。核心之間的通訊也會拖慢速度。而且CPU的整體效能不只取決與核心數,還和電壓,主頻,快取大小/速度/hit率,體系結構等等很多因素有關係。一個雙核CPU有可能完爆一個8核CPU。

    其後的Ghz是不是數字越高越好?

    Ghz是主頻的單位。同一種CPU,在快取,體系結構和其他技術指標完全一樣的情況下,主頻越高越好。但不同種類的CPU比較時,單獨比較主頻沒有意義。

    CPU工作時就像心臟,每隔一段時間跳一下,在跳的時候完成一個最小工作量。比如計算1+2+3, 第一跳計算1+2=3, 第二跳計算3+3=6,第三跳把結果(6)存起來。這個時間間隔就是CPU的工作週期(cycle)。在跳與跳之間,CPU是不能做任何事情的。所以,跳的越快,工作的速度就越快,同一時間內完成的工作就越多。hz是指一秒鐘跳一下,G是10的9次方(10億)。Ghz就是10億跳每秒。4Ghz就是每秒跳40億下。

    實際情況就更加複雜,有些CPU可以在一跳時完成兩份甚至更多的工作量,還有些CPU有變頻技術,工作少時跳的慢,工作多時跳的快,可以動態地調節。這些因素導致了單純比較主頻沒有任何意義。一個1Ghz的CPU可能完爆4Ghz的CPU。再舉例,除了CPU,其他的計算硬體比如FPGA主頻只有幾百Mhz, 比CPU跳的慢幾十倍,但效能卻比CPU高几十倍,只是因為造價太高導致無法大規模普及。ASIC主頻更慢,但效能是FPGA的上百倍,造價也更高。

  • 中秋節和大豐收的關聯?
  • 《數碼寶貝》中你覺得最“丟臉”的數碼寶貝是哪一隻呢?如何評價這部動漫?