基礎:計算機是什麼

效能鐵律(iron law of performance)

當有人問為何一台機器感覺比另一台快,誠實的答案不是單一數字,而是一條拒絕被作弊的小方程式——這正是它被稱為「鐵律」的原因。它說:跑完一支程式的時間,等於它執行了多少條指令,乘以每條指令平均花多少個時脈週期,再乘以每個時脈週期持續多久。三個因素相乘。想要更快,你必須縮小其中一個而不讓其他膨脹。

用符號寫,處理器時間 = 指令數 乘以 每指令週期數(CPI) 乘以 時脈週期時間。指令數主要由程式、編譯器與 ISA 決定。CPI——每條指令平均所需的週期——由微架構決定(管線化與快取把它壓低;快取未命中與停頓把它推高)。時脈週期時間是時脈頻率的倒數。給個感覺:10 億條指令,平均每條 1.5 個週期,每週期 0.5 奈秒,得到 0.75 秒的處理器時間。

效能鐵律是誠實思考速度的脊骨,它也解釋了為何那麼多「一個數字」的宣稱會誤導人。時脈更快只縮小第三個因素,可能被更差的 CPI 抵銷;一個聰明的編譯器減少指令數,即使時脈不變也有幫助;一個降低 CPI 的快取,完全不碰時脈也有幫助。本領域裡幾乎每個效能概念,其實都是在攻打這三項中的某一項——把這條方程式記在心裡,整個主題的其餘部分就會清晰對焦。

10 億條指令 乘 每條 1.5 週期 乘 每週期 0.5 奈秒 = 0.75 秒。把 CPI 砍半到 0.75,同一支程式在 0.375 秒內完成——完全不必動時脈。

時間 = 指令數 乘 CPI 乘 週期時間。三項,沒有免費的午餐。

之所以叫鐵律,是因為你無法迴避它:改善一個因素卻悄悄惡化另一個,等於白忙。任何誠實的速度宣稱,都必須交代清楚這三項。

又稱
the iron lawCPU performance equation處理器效能方程式