指令平均周期数
目录
指令平均周期数
在计算机体系结构中,每条指令的周期数(也称为每条指令的时钟周期数、每条指令的时钟数或 CPI)是处理器性能的一个方面:程序或程序片段的每条指令的平均时钟周期数。 它是每周期指令的乘法逆。
定义
给定进程中每条指令的平均循环数由以下定义
其中 I C i {displaystyle IC_{i}} 是给定指令类型 i {displaystyle i} 的指令数, C C i {displaystyle CC_{i}} 是该指令类型的时钟周期 I C = Σ i ( I C i ) {displaystyle IC=Sigma _{i}(IC_{i})} 是总指令数。 总和对给定基准测试过程的所有指令类型求和。
说明
让我们假设一个经典的 RISC 流水线,具有以下五个阶段:
- 指令获取周期 (IF)。
- 指令解码/寄存器获取周期 (ID)。
- 执行/有效地址周期 (EX)。
- 内存访问 (MEM)。
- 回写周期 (WB)。
每个阶段都需要一个时钟周期,一条指令按顺序通过这些阶段。 在没有流水线的情况下,在多周期处理器中,只有在前一条指令在第 5 阶段完成后,才会在第 1 阶段获取新指令,因此执行一条指令所需的时钟周期数为 5 (CPI = 5 > 1) . 在这种情况下,处理器被称为次标量的。 通过流水线,通过利用指令级并行性,每个时钟周期获取一条新指令,因此,由于理论上可以在五个流水线阶段同时有五个指令(每个阶段一条指令),不同的指令将在每个阶段完成第 5 阶段 时钟周期,执行一条指令所需的平均时钟周期数为 1 (CPI = 1)。 在这种情况下,处理器被称为标量。
对于单执行单元处理器,可达到的最佳 CPI 为 1。但是,对于多执行单元处理器,可以达到更好的 CPI 值(CPI < 1)。 在这种情况下,处理器被称为超标量。 为了在没有流水线的情况下获得更好的 CPI 值,执行单元的数量必须大于阶段的数量。

例如,对于六个执行单元,仅在前六条指令在阶段 5 完成后,才在阶段 1 中获取 6 条新指令,因此平均而言,执行一条指令所需的时钟周期数为 5/6(CPI = 5/ 6<1)。 要通过流水线获得更好的 CPI 值,必须至少有两个执行单元。 例如,对于两个执行单元,通过利用指令级并行性,每个时钟周期获取两条新指令,因此两条不同的指令将在每个时钟周期完成第 5 阶段,平均而言,执行一条指令所需的时钟周期数为 1/2(CPI = 1/2 < 01)。