题目
若某程序编译后生成的目标代码[1]由A、B、C、D4类指令组成,它们在程序中所占比例分别为40%、20%、15%、25%。已知A、B、C、D四类指令的CPI分别为1、2、2、2。现需要对程序进行编译优化,优化后的程序中A类指令数量减少了一半,而其他指令数量未发生变化。假设运行该程序的计算机CPU主频为500MHz。回答下列各题。(1) 优化前后程序的平均CPI各为多少?(2) 优化前后程序的MIPS各为多少?优化前 CPI=____,优化后 CPI=____;优化前 MIPS=____,优化后 MIPS=____ (保留一位小数)(1) 1.6(2) 1.75(3) 312.5(4) 285.7
若某程序编译后生成的目标代码[1]由A、B、C、D
4类指令组成,它们在程序中所占比例分别为
40%、20%、15%、25%。已知A、B、C、D四
类指令的CPI分别为1、2、2、2。现需要对程序
进行编译优化,优化后的程序中A类指令数量减
少了一半,而其他指令数量未发生变化。假设运
行该程序的计算机CPU主频为500MHz。回答下
列各题。(1) 优化前后程序的平均CPI各为多
少?(2) 优化前后程序的MIPS各为多少?
优化前 CPI=____,优化后 CPI=____;优化
前 MIPS=____,优化后 MIPS=____ (保留
一位小数)
(1) 1.6
(2) 1.75
(3) 312.5
(4) 285.7
题目解答
答案
1. 优化前的平均CPI:
\[
\text{CPI}_{\text{avg}} = 0.4 \times 1 + 0.2 \times 2 + 0.15 \times 2 + 0.25 \times 2 = 1.6
\]
2. 优化后的指令比例:A = 25%,B = 25%,C = 18.75%,D = 31.25%。
\[
\text{CPI}_{\text{avg}}' = 0.25 \times 1 + 0.25 \times 2 + 0.1875 \times 2 + 0.3125 \times 2 = 1.75
\]
3. MIPS计算:
\[
\text{MIPS}_{\text{原}} = \frac{500}{1.6} = 312.5
\]
\[
\text{MIPS}_{\text{优}} = \frac{500}{1.75} \approx 285.7
\]
综上:
- 优化前CPI = 1.6,MIPS = 312.5。
- 优化后CPI = 1.75,MIPS ≈ 285.7。
解析
本题主要考察计算机体系结构中平均CPI(Cycles Per Instruction,每条指令的平均时钟周期数)和MIPS(Million Instructions Per Second,每秒执行百万条指令数)的计算。解题思路如下:
- 计算优化前的平均CPI:根据各类指令的比例和各自的CPI,利用加权平均公式计算优化前程序的平均CPI。
- 计算优化后的指令比例:由于A类指令数量减少一半,其他指令数量不变,重新计算各类指令在优化后程序中所占的比例。
- 计算优化后的平均CPI:同样使用加权平均公式,根据优化后的指令比例和各类指令的CPI,计算优化后程序的平均CPI。
- 计算优化前后的MIPS:根据MIPS的计算公式$MIPS=\frac{CPU主频}{平均CPI}$,分别计算优化前后程序的MIPS。
具体计算过程
- 计算优化前的平均CPI
已知A、B、C、D四类指令在程序中所占比例分别为$p_A = 0.4$、$p_B = 0.2$、$p_C = 0.15$、$p_D = 0.25$,它们的CPI分别为$CPI_A = 1$、$CPI_B = 2$、$CPI_C = 2$、$CPI_D = 2$。
根据加权平均公式$CPI_{avg}=\sum_{i = 1}^{n}p_i\times CPI_i$,可得优化前程序的平均CPI为:
$\begin{align*}CPI_{avg}&=p_A\times CPI_A + p_B\times CPI_B + p_C\times CPI_C + p_D\times CPI_D\\&=0.4\times 1 + 0.2\times 2 + 0.15\times 2 + 0.25\times 2\\&=0.4 + 0.4 + 0.3 + 0.5\\&=1.6\end{align*}$ - 计算优化后的指令比例
设优化前程序中指令总数为$N$,则A类指令数量为$0.4N$,B类指令数量为$0.2N$,C类指令数量为$0.15N$,D类指令数量为$0.25N$。
优化后A类指令数量减少一半,变为$0.2N$,其他指令数量不变。
此时程序中指令总数变为$N' = 0.2N + 0.2N + 0.15N + 0.25N = 0.8N$。
则优化后A类指令所占比例为$p_A'=\frac{0.2N}{0.8N}=0.25$;
B类指令所占比例为$p_B'=\frac{0.2N}{0.8N}=0.25$;
C类指令所占比例为$p_C'=\frac{0.15N}{0.8N}=0.1875$;
D类指令所占比例为$p_D'=\frac{0.25N}{0.8N}=0.3125$。 - 计算优化后的平均CPI
根据加权平均公式,可得优化后程序的平均CPI为:
$\begin{align*}CPI_{avg}'&=p_A'\times CPI_A + p_B'\times CPI_B + p_C'\times CPI_C + p_D'\times CPI_D\\&=0.25\times 1 + 0.25\times 2 + 0.1875\times 2 + 0.3125\times 2\\&=0.25 + 0.5 + 0.375 + 0.625\\&=1.75\end{align*}$ - 计算优化前后的MIPS
已知计算机CPU主频为$f = 500MHz$。
根据MIPS的计算公式$MIPS=\frac{f}{CPI}$,可得优化前程序的MIPS为:
$MIPS_{原}=\frac{500}{1.6}=312.5$
优化后程序的MIPS为:
$MIPS_{优}=\frac{500}{1.75}\approx 285.7$