指令平均周期數
指令平均周期數(英語:Cycle Per Instruction, CPI),也稱每指令周期,即執行在計算機體系結構中一條指令所需要的平均時鐘周期(機器主頻的倒數)數[1]。
其方程為:
其中是第i種指令的數量,是第i種指令的時鐘周期數,是總的指令數,對於一個給定的基準測試過程,總和為所有指令類型。
一個完整的計算機系統執行時間,即指令周期指從內存中取出並執行該條指令所用的全部時間,它取決於硬件結構和各部件的性能[2]。
解釋
假設目前為經典RISC流水線,執行一條指令一般分為五個階段:
- 取指周期
- 譯碼周期
- 執行周期
- 訪問內存
- 寫回周期
每一條指令都需要順序經過這五個步驟,每個需要一個時鐘周期,如果在一個沒有流水線技術的處理器中,只有當前一條指令的第五階段執行完,下一條指令的第一階段才會開始運行,因此,每執行一條指令的時鐘周期就是5(CPI=5),這種情況下,處理器被稱為亞純量的。在有流水線技術的處理器中,通過利用指令級並行,每一個時鐘周期,都有一條指令被取得。因此,因為在理論上同一時刻,在流水線的五個周期上有五個不同的指令,所以在每一個時鐘周期中,都會有一個指令完成第五階段,所以平均執行每一條指令的時鐘周期就是1(CPI=1),這樣的處理器稱為純量處理器
示例
示例1
對於多周期MIPS架構,有以下五種指令:
- Load(5周期)
- Store(4周期)
- R_type(4周期)
- Branch(3周期)
- Jump(3周期)
如果程序中有
- 50% load 指令
- 25% store 指令
- 15% R-type 指令
- 8% branch 指令
- 2% jump 指令
其CPI為
參考
- ^ 王換招編著. 计算机组成与设计. 北京:清華大學出版社. 2013.08: 28. ISBN 978-7-302-32884-1.
- ^ 王換招編著. 计算机组成与设计. 北京:清華大學出版社. 2013.08: 27. ISBN 978-7-302-32884-1.