2016年3月24日 星期四

FLOPS:CPU運算速度的單位

估計某台電腦主機運算速度:
FLOPS = CPU插槽數 * 每個CPU有幾個核心 * 運行的時脈 * 每個週期做幾次運算


中央處理器(CPU)是電腦的運算中心。In One Lesson的影片《What's Inside a CPU》介紹了CPU裡面裡面的電子元件與線路:


CPU內每個運算核心每個週期內可以做數次的運算,這個週期是靠CPU上面的時鐘控制,每次的運算則是靠CPU上面的線路與元件交互作用完成。詳細的運作方式參考In One Lesson的影片《How a CPU Works》

Visual Transistor-level Simulation of the 6502 CPU這個網站用HTML5寫了一個網頁,模擬MOS 6502 這個中央處理器,可以詳細見識到每個週期電子元件開關的情況。這個處理器被用在Apple II還有紅白機等等電腦或是遊戲主機上面
既然CPU每個週期都會做數次的運算,所以週期越短的話,代表這個CPU能夠執行更多次的運算。CPU的週期很短,因此不會說一個週期多久,而是會用一秒鐘執行幾個週期,也就是所謂的頻率(Hz)。對當代的CPU來說是用的單位會到GHz,1GHz = 1 giga Hz = 10^9 Hz,意思就是一秒鐘十億個週期。

估計CPU運算速度的量詞是FLOPS(floating-point operations per second),每秒執行幾次浮點數運算。上面說到每個週期會執行數次運算,根據Mark R. Fernandez的文章,這個數字會是4,每個週期可以執行四次運算的意思。所以估計某台電腦主機的FLOPS則會是:

FLOPS = CPU插槽數 * 每個CPU有幾個核心 * 運行的時脈 * 每個週期做幾次運算

以某台電腦,上面只有一個CPU插槽,是個雙核心的CPU,運行時脈是2.53GHz為例子,這台電腦的運行速度會是1 * 2 * 2.53G * 4 = 20.24 G(FLOPS) ≈ 20 GFLOPS。也就是說隨便一台目前的筆電,每秒就可以做兩百億次的運算!(一個世紀以前的人應該會非常的羨慕......)

這種方式只是個估算,由於現代CPU設計非常的複雜,最難知道與估算的部分就是每個週期能夠執行數次運算,也因此上述的估算要用來比較不同的CPU會有許多問題。以前的CPU會去拼時脈,但是現在時脈基本上已經到了某個瓶頸很難再上去(可以參考這篇說明可能的時脈上限,能夠知道怎樣把時脈弄高應該很多電子廠會想要這種人才吧...),所以說現代的CPU都是想辦法讓每個週期多做幾次運算,或是增加每個CPU裡面的運算核心數目。

_EOF_

沒有留言:

張貼留言