平成29年度 秋期 午前Ⅱ 問18
コンピュータ構成要素
CPIに関する問題
表のCPIと構成比率で,3種類の演算命令が合計1,000,000命令実行されるプログラムを,クロック周波数が1GHzのプロセッサで実行するのに必要な時間は何ミリ秒か。
| 演算命令 | CPI(Cycles Per Instruction) | 構成比率(%) |
|---|---|---|
| 浮動小数点加算 | 3 | 20 |
| 浮動小数点乗算 | 5 | 20 |
| 整数演算 | 2 | 60 |
- ア0.4
- イ2.8
- ウ4.0
- エ28.0
答えと解説を見る
✓ これが正解イ2.8
解説
平均CPI2.8×100万命令の280万クロックで、2.8ミリ秒です。
命令の種類ごとに CPI が違うので、まず構成比率で重み付けした平均 CPI を求めます。3×0.2+5×0.2+2×0.6=0.6+1.0+1.2=2.8 で、1命令あたり平均 2.8 クロックかかります。命令数は 1,000,000 なので、必要なクロック数は 2.8×1,000,000=2,800,000 です。クロック周波数 1GHz は1秒間に 10億回のクロックなので、1クロックは 1ナノ秒です。したがって実行時間は 2,800,000 ナノ秒=2.8 ミリ秒になります。見分け方としては、平均 CPI を出す段階と、クロック数を時間に直す段階の単位換算を分けて確かめます。
ほかの選択肢はなぜ違うのか
- ア0.4:0.4 ミリ秒は、表の値から平均 CPI を求めて命令数を掛け、時間に直すという手順のどこからも導けません。CPI はどの命令も 2 以上なので、100万命令を 1GHz で実行すれば少なくとも 2 ミリ秒はかかります。
- ウ4.0:浮動小数点の加算と乗算の CPI の平均 4 を全ての命令に当てはめると、4×1,000,000÷10億=4.0 ミリ秒になります。整数演算が 6割を占め、その CPI が 2 と小さいことを反映しておらず、時間を長く見積もっています。
- エ28.0:28.0 ミリ秒は、正しい値 2.8 ミリ秒のちょうど 10 倍です。クロック数 2,800,000 を時間に直すときに、1クロックを 10 ナノ秒(100MHz 相当)として扱うとこの値になり、単位換算の桁を一つ誤った結果です。
出典:平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)