指令平均周期数

维基百科,自由的百科全书

指令平均周期数(英語: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.