本小節講述爲何使用 CPI 分析程序性能的意義。若是已經很是瞭解 CPI 對分析程序性能的意義,能夠跳過本小節的閱讀。算法
理解什麼是 CPI,首先讓咱們思考一個問題:在一個給定的處理器上,如何才能讓程序跑得更快呢?性能
假設程序跑得快慢的標準是程序的執行時間,那麼程序執行的快慢,就能夠用以下公式來表示:優化
程序執行時間 = 程序總指令數 x 每 CPU 時鐘週期時間 x 每指令執行所需平均時鐘週期數
所以,要想程序跑得快,即減小程序執行時間,咱們就須要在如下三個方面下功夫:spa
減小程序總指令數scala
要減小程序執行的總指令數,可能有如下手段:設計
這一點很容易理解,縮短 CPU 時鐘週期的時間,實際上就是要提升 CPU 的主頻。這正是 Intel 過去佔無不勝的法寶之一。今天,因爲主頻的提升已經到了製造工藝的極限,CPU 時鐘週期的時間很難再繼續下降了。code
減小每指令執行所需平均時鐘週期數ip
如何減小每指令執行所需平均 CPU 時鐘週期數呢?讓咱們先從 CPU 設計角度看一下:編譯器
所以不難看出,若是使用支持超標量處理器的 CPU,利用 CPU 流水線提升指令並行度,那麼就能夠達到咱們的目的了。流水線的並行度越高,執行效率越高,那麼每指令執行所需平均時鐘週期數就會越低。編譯