【処理性能7問】MIPS・CPI・クロック周波数(FE計算問題シリーズ)
今回慣れて欲しいテーマは、周波数(回数)と周期(時間)。
私のIT専門学校でも「計算問題を捨て問」にする関門になってます。
とはいえ、周波数は「1秒間に何回」、周期は「1回に何秒」かを表しているだけ。
クロック周波数やクロック周期が絡む問題。混乱してるのではないでしょうか。アナログデジタル変換と似ているのに気づくと少し楽になるかも。
>>アナログデジタル変換のNote<< にて以下の式を使いました。
今回の命令関係。サンプリング周波数がクロック周波数、サンプリング周期がクロック周期にすると少し理解が捗るかも。
ただし「1/CPI」だけ注意。CPIは「1命令の実行に必要なサイクル数」なので、1/CPIにして「1サイクルで実行できる命令数」にします(÷CPIということ)。
アナログデジタル変換ではデータ量、上の式は命令数。
今回はさらに「命令実行時間」の問題も扱いので、上式の分子分母を反転させた使い方もします。
右辺に注目。1秒間に実行できる命令数(IPSやMIPS)の逆数が、命令実行で時間(秒やマイクロ秒)になっています。これもよく使います。
なお、指数計算ができると楽になるので >>指数の解説Note<< もそのうち覗いてみてくださいね。
それは始めましょう!
基本問題 | MIPSと命令実行時間
正答はア。
$$
1 / (50 \times 10^6)\\
= 1/50 \times 10^{-6}\\
= 0.02 \times 10^{-6}\\
= 0.02 マイクロ秒 選択肢にないですね。\\
= 20 \times 10^{-9}\\
= 20ナノ秒
$$
なお、平均実行時間の「平均」は、後で触れますが。命令には、時間のかかる命令やかからない命令があるので、平均(正確には期待値)で「だいたいこんぐらいの性能」を算出する意図です。
補強 | MIPSと命令実行時間
※スキップしてもOKですが、今後のために理解しておくと良いですよ。
MIPSは1秒間に実行できる命令の数(百万単位)
命令実行時間は1命令の実行に要する時間(秒単位)
以下の3段階で理解していきます。
英語の勉強「MIPS」の意味
命令実行時間[秒] = 1/ IPS
命令実行時間[マイクロ秒] = 1/ MIPS
STEP1:英語の勉強「MIPS」の意味
まずは、少し英語の勉強。
MIPS (Million Instructions Per Second)を英語で読み解きます。
Million:100万
Instructions:命令、説明など
Per:当たり
Second:秒
よって、1MIPSは「1秒間に百万命令を実行できる」こと。2MIPSなら「1秒間に二百万命令を実行できる」こと。
なお、時間の英語は知っておくと便利ですよ。単位の推測がし易くなります。
Year(イヤー):年
Month(マンス):月
Day(デイ):日
Hour(アワー):時間
Minute(ミニット):分
second(セカンド):秒
(カタカナ発音表記はあまり好きではないですが、ご容赦ください)
STEP2:命令実行時間[秒] = 1/ IPS
簡単で具体的な値を使って理解していきましょう。
もし、「1秒間に命令1個」が実行できるとき、つまり1 [IPS]。命令実行時間は、1[秒]ですよね。
では、「1秒間に命令2個」が実行できるなら、2 [IPS]。命令実行時間は、0.5 = 1/2 [秒]ですよね。
1秒間に3個、4個と考えていくと、命令実行時間[秒] = 1/ IPSと分かります。
STEP3:命令実行時間[マイクロ秒] = 1/ MIPS
最後に単位を調整します。
命令実行時間[秒] = 1/IPSより、100,000,000[IPS]の時、命令実行時間を考えます。
$$
1/100,000,000 \rm{[}IPS\rm{]} \\
= 1/(1 \times 10^6) \rm{[}IPS\rm{]}\\
= 1 \times 10^{-6} \rm{[}秒\rm{]}\\
= 1 \rm{[}マイクロ秒\rm{]}
$$
以上より「命令実行時間[マイクロ秒] = 1/ MIPS」となりました。
補助単位・指数の取り扱いは、CPUの処理速度・補助記憶の容量でもよく使います。直近だと >>AD変換の解説Note<< でも使いました。
気が向いたら >>指数の解説Note<< をどうぞ。
クロック周波数と命令実行数 |
正答はエ。
「1命令を0.8クロックで実行」「1秒間に1GHzクロック(10億)」より、1秒間に「10/0.8億命令 = 12.5億命令」が実行できると分かります。
あとは単位の調整。12.5億は1,250,000,000を10,000で割って125,000[万]。
指数を使ってみますね。
$$
1 \times 10^9 / 0.8 = 1.25 \times 10^9 \\
= 1.25 \times 10^5 \times 10^4 = 1.25 \times 10^5 [万] = 125,000[万]
$$
なお「MIPSは?」と聞かれて答えられますか?
$$
1.25 \times 10^9 \rm{[}IPS\rm{]} = 1.25 \times 10^3 \times 10^6
= 1.25 \times 10^3 \rm{[}MIPS\rm{]} = 1250 \rm{[}MIPS\rm{]}
$$
指数に慣れると計算が楽なんですよ。イチイチ0に数を数えなくてすみます。気が向いたら >>指数の解説Note<< をどうぞ。
補強 | クロック周波数は「テンポ」
コンピュータ内部の部品は「音頭にテンポを合わせて動作」しています。バケツリレーは、全員のテンポがあってないと受け渡しが上手くいきませんよね
CPUはコンピュータの脳みそ。クロックとは動作テンポのこと。
1GHzのような量を「クロック周波数」と云い「1秒間に動作できるテンポ」と思ってOKです。1[GHz]は「1秒間に10億回動作」。
さて、CPUへは計算や操作の命令が送られます。命令によって何テンポで実行できるかは違います。私たちも、1動作でできる行動と、2動作でできる行動がありますからね。
処理件数 | 単位に注目がコツ
正答はイ。
以下3点が読み取れればOK。
1件に80万命令の実行が必要
処理性能は200MIPS
ただし使用率80%
1秒間に200百万命令が実行できるので、1件の80万命令で割れば、1秒間に実行できる件数が分かりますね。
$$
(200 \times 10^6) / (80 \times 10^4)\\
= 200/80 \times 10^2
= 2.5 \times 10^2 = 250
$$
しかし80%の性能しか出せないので、250 × 0.8 = 200。
補強 | 単位を作って数式を試してみる
式が分からない時は「単位(っぽい何か)」に注目してみます。
800,000 [命令/件]
200 [MIPS] = 200,000,000[命令/秒]
作りたい単位は「件/秒」なので [命令/秒] / [命令/件] と計算すれば良いなと、200,000,000[命令/秒] / 800,000 [命令/件] と立式します。
単位(っぽいもの)を「回」「件」など屁理屈で良いので自分なりに書き出すと計算式が推測できますよ。>>単位に注目して数式を理解するNote<<
正確には単位にするしないは難しいので、矛盾が出ることもありますが、目安には充分です。最後に余らせた時間で挑戦してみてくださいね。
命令実行時間 | クロック周期 × CPI
正答はウ。
コンピュータAは、命令実行に4クロック必要で、1クロック1ナノ秒なので、4ナノ秒。
コンピュータBは、0.5必要で、1クロック4ナノ秒なので、2ナノ秒。
「コンピュータAの処理時間は、コンピュータBの処理時間の」2倍と計算できました。
IPSは「1秒間」に実行できる命令数、CPIは「1サイクル」に実行できる命令数です。よって、CPI × クロック周波数 = IPS。
CPI | 命令「列」の実行時間
正答はエ。
まずは命令列の実行に必要はクロック数を求めます。a(6)+c(4)+b(2)+a(6)+c(4)+d(8)=30。
CPUのクロック周波数は100MHz。クロック周期は逆数をと10ナノ秒。
$$
1/(100 \times 10^6) = 1/100 \times 10^{-6} = 0.01 \times 10^{-6}
= 0.01 マイクロ秒
= 10 ナノ秒 (10 \times 10^{-9})
$$
1クロック10ナノ秒が、30クロックあって命令列を実行できるので、300ナノ秒と考え至ります。
なお、現在のCPUのクロック数は2GHzや3GHz。100MHzは0.1GHzなので、全然違いますね。100MHzのCPUとか、30年前です。初代のペンティアムが出たぐらいかな。
ペンティアムは現在のCoreiの前のシリーズ。widows95(かver.3)ぐらい。
「平均」命令実行時間の意味
正答はウ。
今までチラリと出てきた「平均」命令実行時間の「平均」の理由に少し。
コンピュータには、時間のかかる命令もかからない命令もあります。よって、平均・期待値で考えて性能を算出します。
問題文にいい感じに数値表、しかも確率が出てますね。>>数値表を見たら掛けて足すNote<< の通り計算してみましょう。
数値が違うだけの同じ問題もありました。
正答はエ。もう大丈夫ですね。
少し極論しますが「分からなくても、計算して、選択肢にある答えと同じ値が出れば良い」という考えはどうでしょう。
勿論、他の問題を解き終わった後で。
まとめ | アナログデジタル変換との類似性
お疲れ様でした。
ちょっとずつでも「周波数」と「時間」の逆数関係になれたでしょうか。
「2Hzは1秒間に2回だから、周期は1/2=0.5秒だよな」程度からで良いです。毎回簡単な数で試算しておけば必ず慣れますよ。
公式と割り切るよりよほど簡単で、もし忘れても「その場で公式を導いて」粘り強く得点をゲットできます。
周波数と時間は、A/D変換でも使います。
>>アナログデジタル変換のNote<< や >>指数の解説Note<< で、少しずつ解ける問題の幅を広げ、「本質的な理解」をして未知の計算問題にも立ち向かえる力を養えれば素敵ですね。
では、またご縁があったらお会いしましょう。
\力試しは修了試験で!4回分の解説です/
p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。
でわでわ(・ω・▼)ノシ