CPU性能公式
CPU性能取决于三个要素:
- 时钟频率$f$(时钟周期$T=\frac{1}{f}$)(也就是CPU的主频)
- 每条指令平均时钟周期数$CPI$
- 指令条数$IC$
🤔 $f=4.1\mathrm{GHz}$,则该CPU每秒可以完成$4.1\times 10^9$个时钟周期
一个程序执行所需的CPU时间如下($N$为CPU时钟周期总数):
$$
t_{CPU}=\frac{N}{f}=NT
$$
如果一个程序的指令条数为$IC$,则每条指令的平均时钟周期数$CPI$有:
$$
CPI=\frac{N}{IC}
$$
因此一个程序的CPU时钟周期总数$N$可表示为:
$$
N=CPI\times IC=\sum{CPI_i\times I_i}
$$
其中$CPI_i$表示指令$i$的平均时钟周期数,$I_i$是指令$i$在程序中的条数。
因此CPU时间可表示为:
$$
t_{CPU}=NT=T\sum{CPI_i*I_i}
$$
$$
CPI=\frac{\sum{CPI_i\times I_i}}{IC}=\sum{CPI_i\times\frac{I_i}{IC}}
$$
其中$I_i/IC$表示指令$i$在程序中所占的比例(操作的比例)。
一道例题
例题:在一个程序中,如果浮点操作FP的比例为$25%$,FP的CPI为$4$,其他指令的CPI为$1.33$。浮点开平方根操作FPSQR比例为$2%$,FPSQR的CPI为$20$。如有两种方案,分别把FPSQR操作的CPI和所有FP操作的CPI均减至$2$,试利用CPU性能公式分析这两种方案的优劣
解:我们需要计算该程序的CPU时间,来分析该两种方案的优劣。
对于两个方案的$CPI$:
$$
CPI_0=\sum{CPI_i\times\frac{I_i}{IC}}=4\times0.25+1.33\times0.75=2 \\
CPI_1=\sum{CPI_i\times\frac{I_i}{IC}}=CPI_0-( CPI_{FPSQR0}-CPI_{FPSQR1})\times0.02=1.64 \\
CPI_2=\sum{CPI_i\times\frac{I_i}{IC}}=CPI_0-(CPI_{FP0}-CPI_{FP1})\times0.25=1.5
$$
又由于:
$$
t_{CPU}=T\sum{CPI_i\times I_i}=T\times IC\times CPI
$$
且对应于同一台计算机上的统一程序$T,IC$是相同的。
因此有$t_{CPU1}>t_{CPU2}$,即后者是更优策略。
CPU性能优化策略
根据$CPU$性能指标可知,有3种优化策略:
- 提升时钟频率(依赖于更先进的工艺)
- 降低CPI(即对应精简指令集计算机RISC)
- 减少指令的条数(即对应复杂指令集计算机CISC)