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

MIPSの計算は出現率で重み付けした平均クロック数が鍵

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

過去問にチャレンジ

平成29年度春期 午前 問8

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

平成29年度春期 午前 問8の図
  1. ア

    10

  2. イ

    50

  3. ウ

    70

  4. エ

    100

会話形式の解説

講師講師
今回はCPUの性能をMIPSで答える計算問題です。MIPSは、1秒間に何百万個の命令を処理できるかを表す指標です。表には命令の種類が3つあり、それぞれかかるクロック数と使われる割合が違います。この違いをどうまとめるかがポイントです。
受験者受験者
クロック数が4、8、10なので、まずは足して3で割ればよいと思いました。平均すると約7.3クロックでしょうか。
講師講師
その平均だと、3種類の命令が同じ回数ずつ出てくることになってしまいます。表を見ると、出現率は30%、60%、10%とばらばらですよね。よく使われる命令ほど、平均に大きく効くはずです。
受験者受験者
なるほど。では、クロック数に出現率を掛けてから合計するのですね。4×0.3が1.2、8×0.6が4.8、10×0.1が1.0なので、合計は7クロックです。
講師講師
そのとおりです。出現率はパーセントのままではなく、小数に直してから掛けています。30+60+10で100%になっているかも、最初に確かめておくと安心です。
受験者受験者
次は700MHzの扱いです。1秒間に7億回クロックが刻まれて、1命令あたり7クロック使うのだから、7億÷7で1億命令になります。
講師講師
はい。1億は百万の100倍なので、100MIPSです。実はMHzもMIPSも百万が単位なので、700÷7のように桁を気にせず割ってしまっても同じ答えになります。
受験者受験者
それなら計算がずいぶん楽になります。70MIPSという選択肢は、もしかして700を10で割った値ですか。
講師講師
そう考えられます。10クロックかかるのは、出現率が10%しかない無条件分岐だけです。その値を全部の命令に当てはめると、70MIPSという誤った答えになります。
受験者受験者
50MIPSと10MIPSのほうは、700をそれぞれ14と70で割った値ですね。表から平均で14や70クロックになることはないので、この2つも外れると分かります。
講師講師
よい確かめ方です。最後に逆算もしておきましょう。100MIPSに平均の7クロックを掛けると700になり、問題文の周波数とぴったり合います。
受験者受験者
まとめると、出現率で重み付けして平均クロック数を出し、MHzの値をそのまま割ればMIPSになる、ということですね。
講師講師
はい。試験では反対に、MIPS値と平均クロック数から必要なクロック周波数を答えさせる問題もあります。周波数を平均クロック数で割ると命令数になる、という関係を覚えておけば、どちらから聞かれても解けます。

まとめ

この問題では、クロック周波数が700MHzのCPUについて、命令ごとのクロック数と出現率からMIPS値を求めます。まず、各命令のクロック数に出現率(小数に直したもの)を掛けて合計し、平均クロック数を出します。計算すると4×0.3+8×0.6+10×0.1=7クロックです。MHzとMIPSはどちらも百万単位なので、700÷7=100となり、性能は100MIPSです。単純平均を使ったり、無条件分岐の10クロックだけで割ったりする誤りに注意が必要です。

解答・解説

正解はエです

この問題のテーマ

クロック周波数と、命令の種類ごとのクロック数・出現率から、CPUが1秒間に実行できる命令数(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命令に平均7クロックかかるので、1秒間の命令数は700×106÷7=100×106700 \times 10^{6} \div 7 = 100 \times 10^{6}です。百万命令単位に直すと100MIPSになります。

選択肢ごとの解説

  1. ×ア  10
    10MIPSは毎秒1,000万命令という意味です。700MHzでこの値になるのは、1命令あたり平均70クロックかかる場合です。表から求めた平均は7クロックなので、性能は毎秒1億命令となり、10MIPSとは合いません。
  2. ×イ  50
    50MIPSになるのは、700÷50=14から、1命令あたり平均14クロックかかる場合です。表の値で加重平均を計算すると7クロックにしかならないので、この値は当てはまりません。
  3. ×ウ  70
    70MIPSは、700を10で割った値です。平均クロック数を10とした計算にあたりますが、10クロックかかるのは出現率10%の無条件分岐だけです。出現率で重み付けした平均は7クロックなので、70MIPSにはなりません。
  4. ○エ  100
    出現率で重み付けした平均クロック数は7です。700MHzをこの値で割ると毎秒100×106100 \times 10^{6}命令となり、100MIPSに一致します。検算として、100MIPS×7クロック=700MHzとなり、問題文のクロック周波数に戻ります。

補足

逆に、MIPS値と平均クロック数から必要なクロック周波数を求める問題も出題されます。「周波数÷平均クロック数=命令数」の関係を覚えておけば、どちらの向きの問題にも対応できます。

POINT

  • MIPSは、1秒間に実行できる命令数を百万単位で表した性能指標です。
  • 命令の種類が混在する場合は、各命令のクロック数に出現率を掛けて合計し、1命令あたりの平均クロック数を求めます。
  • クロック周波数をMHz単位のまま平均クロック数で割ると、MIPS値が直接得られます。
  • 出現率は百分率を小数に直してから掛け、合計が1(100%)になることを確かめます。

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