マナビング基本情報技術者

MIPS値の計算:出現率で重み付けした平均クロック数から求める

基本情報技術者試験 平成30年度秋期 午前 問9 / コンピュータ構成要素 › プロセッサ

過去問にチャレンジ

平成30年度秋期 午前 問9

動作クロック周波数が700MHzのCPUで、命令実行に必要なクロック数及びその命令の出現率が表に示す値である場合、このCPUの性能は約何MIPSか。

平成30年度秋期 午前 問9の図
  1. ア

    10

  2. イ

    50

  3. ウ

    70

  4. エ

    100

会話形式の解説

講師講師
今回はCPUの性能をMIPSで求める計算問題です。MIPSは、1秒間に実行できる命令数を百万単位で表した指標です。表には命令の種類ごとにクロック数と出現率が並んでいるので、まず1命令あたり平均何クロックかかるかを出すのがポイントです。
受験者受験者
クロック数は4、8、10の3種類ですね。私は計算に時間がかかるので、これを足して3で割ればよいかと一瞬思いましたが、それで合っていますか。
講師講師
そこが注意点です。出現率が命令ごとに違うので、単純な平均ではなく、出現率で重みを付けた平均を使います。命令ごとに「クロック数×出現率」を出して合計してみてください。
受験者受験者
レジスタ間演算が4×0.3で1.2、メモリ・レジスタ間演算が8×0.6で4.8、無条件分岐が10×0.1で1.0です。合計すると7クロックになりました。
講師講師
正しいです。この1命令あたりの平均クロック数はCPIとも呼ばれます。次に、700MHzのCPUは1秒間に何回クロックを刻むでしょうか。
受験者受験者
700×106700 \times 10^{6}回です。1命令に平均7クロックかかるので、700×106÷7700 \times 10^{6} \div 7で、1秒間に100×106100 \times 10^{6}命令です。百万単位にすると100MIPSですね。
講師講師
そのとおりです。MHzの数値をそのまま平均クロック数で割れば、MIPSの値が直接出ると覚えておくと速く解けます。検算もしておきましょう。100×106100 \times 10^{6}命令に7クロックを掛けると、どうなりますか。
受験者受験者
700×106700 \times 10^{6}クロックで、700MHzと一致します。逆に考えると、ほかの値になるには平均クロック数がいくつ必要か、という見方もできそうです。
講師講師
よい視点です。10MIPSなら700÷10で平均70クロック、50MIPSなら700÷50で平均14クロックが必要です。どちらも表から求めた7クロックとは合いません。
受験者受験者
70MIPSは、700÷70で平均10クロックですね。10クロックは無条件分岐の値なので、それを全命令に当てはめたときの答えのように見えます。
講師講師
そうですね。平均が10クロックになるのは、全命令が10クロックかかる場合に相当します。しかし無条件分岐の出現率は10%だけなので、出現率を反映した平均は7クロックです。表の一部の数値だけで判断しないことが大切です。
受験者受験者
流れとしては、クロック数×出現率の合計で平均を出し、MHzの数値をそれで割り、最後に掛け算で検算する、ということですね。
講師講師
はい、その手順で確実に解けます。補足として、MIPS値は命令の種類と出現率によって変わります。命令の構成が異なるCPU同士をMIPS値だけで比べるときは注意が必要です。同じ形の問題は過去にも繰り返し出題されているとされるので、手順ごと身に付けておきましょう。

まとめ

この問題は、命令ごとのクロック数と出現率から1命令あたりの平均クロック数を求め、CPUの性能をMIPS値で答える計算問題です。平均クロック数は単純な平均ではなく、出現率で重み付けして4×0.3+8×0.6+10×0.1=7クロックと求めます。700MHzのCPUは1秒間に700×106700 \times 10^{6}回クロックを刻むので、700×106÷7=100×106700 \times 10^{6} \div 7 = 100 \times 10^{6}命令、つまり100MIPSとなります。100×106100 \times 10^{6}命令×7クロック=700×106700 \times 10^{6}クロックで検算でき、ほかの選択肢は平均クロック数が70、14、10の場合に相当するため条件に合いません。

解答・解説

正解はエです

この問題のテーマ

命令ごとのクロック数と出現率から1命令あたりの平均クロック数を求め、動作クロック周波数と組み合わせてCPUの性能をMIPS値で求める計算問題です。

解き方の考え方

まず、表の命令ごとに「必要なクロック数×出現率」を出し、合計して1命令あたりの平均クロック数を求めます。出現率が命令ごとに違うので、単純な平均ではなく出現率で重みを付けた平均を使います。平均クロック数は 4×0.3+8×0.6+10×0.1=1.2+4.8+1.0=7 クロックです。700MHzのCPUは1秒間に700×106700 \times 10^{6}回クロックを刻むので、1秒間に実行できる命令数は 700×106÷7=100×106700 \times 10^{6} \div 7 = 100 \times 10^{6} 命令です。これを百万単位で表すと100MIPSになります。

選択肢ごとの解説

  1. ×ア  10
    10MIPSは、1秒間に実行できる命令が10×10610 \times 10^{6}個という値です。700MHzでこの値になるには、1命令に平均70クロックかかる必要があります。表から求めた平均は7クロックなので、10MIPSにはなりません。
  2. ×イ  50
    50MIPSになるには、700÷50=14で、1命令あたり平均14クロックが必要です。出現率で重み付けした表の平均は7クロックなので、条件が合いません。
  3. ×ウ  70
    70MIPSになるには、700÷70=10で、すべての命令が平均10クロックかかる必要があります。表で10クロックかかるのは出現率10%の無条件分岐だけです。出現率を反映した平均は7クロックなので、70MIPSにはなりません。
  4. ○エ  100
    出現率で重み付けした平均クロック数は7です。700MHzをこの7で割ると100となり、毎秒100×106100 \times 10^{6}命令、つまり100MIPSです。検算すると、100×106100 \times 10^{6}命令×7クロック=700×106700 \times 10^{6}クロックとなり、700MHzと一致します。

補足

MIPS値は命令の種類と出現率によって変わります。そのため、命令の構成が異なるCPU同士をMIPS値だけで比べるときは注意が必要です。なお、同じ問題は平成29年度秋期の問19、平成29年度春期の問8、応用情報技術者試験の平成22年度秋期の問9でも出題されているとされます。

POINT

  • MIPSは、1秒間に実行できる命令数を百万単位で表した性能指標です。
  • 1命令あたりの平均クロック数(CPI)は、命令ごとの「クロック数×出現率」を合計して求めます。
  • MIPS値は、クロック周波数をMHz単位にした数値を平均クロック数で割れば求められます。
  • 答えが出たら「命令数×平均クロック数=周波数」になるかを確かめると、計算ミスに気付けます。

※出典:平成30年度秋期 基本情報技術者試験 午前 問9(一部改変)