アプリ版:「スタンプのみでお礼する」機能のリリースについて

きたみりゅうじ著 H30年度基本情報技術者より
受験勉強中で、テキストと過去問集をもとに勉強に取り組んでおります。
P146ページのMIPSの過去問について 質問させて下さい。
146ページ問2の過去問の解説を読んでも考え方に詰まっています。

この過去問の解説には
クロック数×出現率を足して、三つの命令の平均クロック数を求めるとありました。
平均クロック数というのは、「命令実行に必要なクロック数」×出現率とそのまま解釈するのでしょうか。
1命令を実行するのに必要な平均クロック数 4×0.3+8×0.6+10×0.1=1.2+4.8+1.0=7
その求めた、「平均クロック数」7.0、と、「1秒間に実行されるクロック数」7百万クロックを割るとMIPSが算出される。と理解しました。
700百万クロック÷7=100百万命令

しかし145ページでは、MIPSの計算はまず周波数から「クロックサイクル時間」を求めるところから始まっています。
周波数と1秒を割って、「クロックサイクル時間」を出します。
「クロックサイクル時間」とクロック数をかけ、各命令の実行時間を出します。
その値と出現率とかけて、「平均命令実行時間」を出しています。
「平均命令実行時間」をもとに、10の9乗とをかけてMIPSを出しています。

この計算方法を試したものの、過去問のクロック数と出現率をかけて全て足していって平均クロック数になるという流れが、なぜそうなるのか理解に及びません。

過去問での計算は145ページの計算方法と違いますが、どうして、この解説はクロック数と出現率とをかけてるのでしょうか。また、出現率で割引されていても、なぜこの値が平均クロック数と言っているのでしょうか。

この解説には、画像2にある、一秒÷周波数のクロックサイクル時間も使ってないです。なので、クロック数とサイクル時間の掛け算や、その結果を出現率と計算することもしてません。
どうしてなのか理由もまったく推測できず、、、

そもそも、過去問の問題文の意図もわかってないのかもわかりません。
ほかの問題集も解いたあとなのですが、依然としてわからず、困り果てております。

質問者からの補足コメント

  • 画像はありませんので、お手持ちの方のご回答お待ちしております。

      補足日時:2019/02/01 23:48

A 回答 (2件)

MIPSの名前の通り、


 IPS = 全体の命令数 ÷ 全体の実行時間(秒) ...(1)
 1MIPS = 100万IPS (M メガ)
です。
他のものは、ここから式を変形したものです。



通常、1命令の実行時間はの関係は一定ではありません。
そこで「1命令の平均実行時間(秒)」を求めます。

1命令の平均実行時間(秒) = 全体の実行時間(秒) ÷ 全体の命令数 ... (2)

(すべて0でないとすると)
(2)は次のように変形できます。

全体の命令数 ÷ 全体の実行時間(秒) = 1 ÷ 1命令の平均実行時間(秒) ...(3)

(3)の左辺は(1)の IPS です。つまり

IPS = 1 ÷ 1命令の平均実行時間(秒) ...(4)

でも求められる、ということです。


クロックは一定間隔で発生する信号です。
CPUの命令は、クロックに合わせて動作します。
そのため、各命令の実行時間は「実行に何クロックかかるか」ということで表わせます。

 1命令の実行時間 = その命令に必要なクロック数 × 1クロックあたりの時間(秒)
  = その命令に必要なクロック数 × (1 ÷ クロック周波数(Hz) )
  = その命令に必要なクロック数 ÷ クロック周波数(Hz)

これは、平均したのも同じです。

 1命令の平均実行時間(秒) = 1命令の平均クロック数 ÷ クロック周波数(Hz) ..(5)

(5) を (4)に代入すると

PS = 1 ÷ ( 1命令の平均クロック数 ÷ クロック周波数(Hz) )
 = 1 ÷ 1命令の平均クロック数 × クロック周波数(Hz)
 = クロック周波数(Hz) ÷ 1命令の平均クロック数



確率から平均が求まる理由は、数学の確率・統計の分野でも確認してください。
    • good
    • 1
この回答へのお礼

ありがとうございます。
かなりややこしいですね。
式の解説とても勉強になりました。
またまだ私の知らないことばかりです。
期待値が平均値であることをすっかり忘れていました。
でもやはり難しいですね。MIPSについて調べていたら、2005年以降CPUの性能の向上が高速になっていました。今や1000MIPS以上が普通の時代になっていることを理解したいと思います。

お礼日時:2019/02/02 15:06

質問文をちゃんと読んでいませんが、MIPSはMillion(もしくはMega)Instructions Per Secondの略ということはご存知ですよね?それさえわかっていれば求め方に疑問がわく余地はないように思うのですが。

MIPS値の次元は「時間^(-1)」です。
    • good
    • 1
この回答へのお礼

ありがとうございます。MIPSは1秒間に実行できる命令の数ということですね。
次元が時間^-1というのは下記の計算だと、10^9秒を8秒と読み返すということかと認識しました。間違えてますか?

1/2ナノ秒=1/2×10^9秒
=1/2×10^9秒=0.5×10^9秒=500000000秒 0が8個
百万なので、結果500MIPS
私はここで間違えて50と間違えてしまいます。

お礼日時:2019/02/02 10:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!