Skip to main content

如何計算多核處理器的處理器速度?

如何計算多核處理器的處理器速度?

Geoffrey Carr

經濟型消費級多核處理器的出現為許多用戶提出了一個問題:如何有效地計算多核系統的實際速度? 4核3Ghz系統真的是12Ghz嗎?在我們調查時繼續閱讀。

今天的問答環節由SuperUser提供,這是Stack Exchange的一個細分,Stack Exchange是一個由Q&A網站組成的社區驅動組合。

問題

超級用戶讀者NReilingh很好奇如何實際計算多核系統的處理器速度:

Is it correct to say, for example, that a processor with four cores each running at 3GHz is in fact a processor running at 12GHz?

I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.

At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.

So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:

  1. Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
  2. Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.

那麼,什麼是表示總時鐘速度的合適方式,更重要的是,甚至可以在多核系統上使用單核速度命名法?

答案

超級用戶貢獻者Mokubai幫助清理事情。他寫:

The main reason why a quad-core 3GHz processor is never as fast as a 12GHz single core is to do with how the task running on that processor works, i.e. single-threaded or multi-threaded. Amdahl’s Law is important when considering the types of tasks you are running.

If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)

10: a = a + 1 20: goto 10

然後,任務在很大程度上取決於前一次傳遞的結果,並且不能在不破壞其值的情況下運行自身的多個副本'a' 因為每個副本都會得到的價值'a' 在不同的時間,並以不同的方式寫回。這將任務限制為單個線程,因此任務只能在任何給定時間在單個核心上運行,如果它在多個核心上運行,則會發生同步損壞。這將其限制為雙核系統的CPU功率的1/2,或四核系統的1/4。

現在執行如下任務:

10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10

所有這些線都是獨立的,可以分成4個獨立的程序,如第一個並同時運行,每個程序都能夠有效地利用其中一個核心的全部功能而沒有任何同步問題,這就是Amdahl定律進入它。

因此,如果你有一個單線程應用程序進行強力計算,那麼單個12GHz處理器就會勝出,如果你能以某種方式將任務拆分成單獨的部分和多線程,那麼4個核心可能會接近但不能完全達到,根據Amdahl定律,表現相同。

多CPU系統為您提供的主要功能是響應能力。在一台努力工作的單核機器上,系統似乎很遲鈍,因為大部分時間都可以被一項任務使用,而其他任務只能在較大的任務之間短時間內運行,導致系統看起來遲鈍或抖動。在多核系統上,繁重的任務獲得一個核心,所有其他任務在其他核心上運行,快速有效地完成工作。

“6核x 0.2GHz = 1.2Ghz”的論點在任何情況下都是垃圾,除非任務完全平行且獨立。有許多高度並行的任務,但它們仍然需要某種形式的同步。 Handbrake是一個視頻轉碼器,非常擅長使用所有可用的CPU,但它確實需要一個核心進程來保持其他線程充滿數據並收集它們完成的數據。

  1. 事實上,每個核心每秒進行x次計算,因此計算總數為x(核心)。

每個核心都能夠每秒進行x次計算,假設工作負載是平行的,在線性程序中你只有1個核心。

  1. 時鐘速度是處理器在一秒鐘內經過的周期數的計數,因此只要所有內核以相同的速度運行,無論存在多少個內核,每個時鐘週期的速度都保持不變。換句話說,Hz =(core1Hz + core2Hz + ...)/ cores。

我認為4 x 3GHz = 12GHz認為數學有效是一種謬論,但是你將蘋果與橙子進行比較而且總和不正確,不能簡單地將GHz加在一起用於各種情況。我會把它改成4 x 3GHz = 4 x 3GHz。

有什麼要補充說明嗎?在評論中發聲。想要從其他精通技術的Stack Exchange用戶那裡閱讀更多答案嗎?在這裡查看完整的討論主題。

Link
Plus
Send
Send
Pin