指令平均周期數

指令平均周期數(英語:Cycle Per Instruction, CPI),也稱每指令周期,即執行在計算機體系結構中一條指令所需要的平均時鐘周期(機器主頻的倒數)數[1]

其方程為:

其中是第i種指令的數量,是第i種指令的時鐘周期數,是總的指令數,對於一個給定的基準測試過程,總和為所有指令類型。

一個完整的計算機系統執行時間,即指令周期指從內存中取出並執行該條指令所用的全部時間,它取決於硬件結構和各部件的性能[2]

解釋

編輯

假設目前為經典RISC流水線英語Classic RISC pipeline,執行一條指令一般分為五個階段:

  1. 取指周期
  2. 譯碼周期
  3. 執行周期
  4. 訪問內存
  5. 寫回周期

每一條指令都需要順序經過這五個步驟,每個需要一個時鐘周期,如果在一個沒有流水線技術的處理器中,只有當前一條指令的第五階段執行完,下一條指令的第一階段才會開始運行,因此,每執行一條指令的時鐘周期就是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為  


參考

編輯
  1. ^ 王換招編著. 计算机组成与设计. 北京:清華大學出版社. 2013.08: 28. ISBN 978-7-302-32884-1. 
  2. ^ 王換招編著. 计算机组成与设计. 北京:清華大學出版社. 2013.08: 27. ISBN 978-7-302-32884-1.