效能、功耗與能量

效能(performance)

假設兩位朋友都答應把一疊信送到城的另一頭。一個騎快速機車,但每趟只能帶一封信;另一個開慢速卡車,一次裝一千封。哪一個比較快?誠實的答案是:要看你說的「快」是什麼意思。如果你問第一封信多快送到,機車贏。如果你問每小時送到幾封信,卡車贏。「效能」就是這麼滑溜——沒有單一數字能完整描述它,而衡量電腦的第一項本領,就是拒絕被某個單一數字騙倒。

在計算機結構裡,效能通常被精確定義為執行時間的倒數:一個程式跑得越快、花的時間越少,效能就越高,所以效能等於 1 除以執行時間。如果機器 A 跑一個程式要 10 秒,機器 B 跑同一個程式要 5 秒,那麼在那個程式上 B 的效能是 A 的兩倍。請注意這句話的謹慎用詞:在那個程式上。效能永遠是相對於特定工作負載來衡量的,因為同一顆晶片在一項任務上可能極佳,在另一項任務上卻平庸。

最深層、最誠實的一點是:效能是多維度的。延遲(一件工作多快完成)和吞吐量(每單位時間完成幾件工作)是真正不同的東西,改善其中一個可能會傷害另一個。再加上能量、成本與可靠度,你就有好幾條軸,而單一的「速度」數字把它們全壓扁抹平了。時脈更快(更多 GHz)本身並不代表更快——真正的執行時間是指令數乘以每指令週期數乘以時脈週期時間,這就是效能鐵律。每當有人用一個數字告訴你某台電腦多好,你的第一個問題該是:在哪件事上快?又是怎麼量的?

機器 A 完成一段影片編碼要 20 秒;機器 B 完成同樣的編碼要 8 秒。效能(B) / 效能(A) = (1/8) / (1/20) = 20/8 = 2.5,所以在這項任務上 B 快 2.5 倍——即便在另一項分支很多的任務上 B 可能反而比 A 慢。

效能就是 1/時間,而且永遠綁在特定的工作負載上——絕不是一個放諸四海皆準的分數。

對任何「這台電腦比較快」的單一說法都要警惕。是延遲快還是吞吐量快?在哪個程式上?花多少功率與成本?時脈頻率更高本身並不代表更快——百萬赫茲迷思誤導了整整一代人。

又称
computer performance效能效率