コンピュータの性能計算は「1秒間に何命令できるか」で考える

広告

コンピュータの性能計算では、次の3つがよく出てきます。

  • MIPS
  • 平均命令実行時間
  • クロック周波数

それぞれ別々に覚えようとすると混乱しやすいですが、

1秒間に何命令できるか

という考え方でつなげると、かなり理解しやすくなります。


まず覚える単位

計算に入る前に、単位をそろえておきましょう。

秒とナノ秒

1秒は、

1,000,000,000

ナノ秒です。

また、1ナノ秒は、

10^{-9}

秒です。

つまり、

1秒 = 1,000,000,000ナノ秒

1ナノ秒 = 10のマイナス9乗秒

です。


秒とマイクロ秒

1マイクロ秒は、

1,000

ナノ秒です。

また、1マイクロ秒は、

10^{-6}

秒です。

つまり、

1マイクロ秒 = 1,000ナノ秒

です。


GHz

1GHzは、

1,000,000,000

Hzです。

指数を使うと、

10^9

Hzです。

Hzは、1秒間に何回動作するかを表す単位です。

したがって、1GHzなら、

1秒間に10億回クロックが動く

という意味になります。


MIPSとは

MIPSは、

Million Instructions Per Second

の略です。

意味は、

1秒間に何百万命令を実行できるか

です。

1MIPSは、

1,000,000

命令/秒です。

つまり、

1MIPS = 1秒間に100万命令

です。


問題1

平均命令実行時間が20ナノ秒のコンピュータがある。

このコンピュータの性能は何MIPSか。

  • ア 5
  • イ 10
  • ウ 20
  • エ 50

問題1の考え方

平均命令実行時間が20ナノ秒ということは、

1命令を実行するのに20ナノ秒かかる

という意味です。

MIPSを求めるには、

1秒間に何命令実行できるか

を考えます。


20ナノ秒を秒に直す

1ナノ秒は、

10^{-9}

秒です。

したがって20ナノ秒は、

20 \times 10^{-9}

秒です。

つまり、

1命令の実行時間は20 × 10のマイナス9乗秒

ということです。


1秒間に実行できる命令数を求める

1命令に20 × 10のマイナス9乗秒かかります。

したがって、1秒間に実行できる命令数は、

\frac{1}{20 \times 10^{-9}}

です。

計算すると、

50,000,000

となります。

つまり、

1秒間に50,000,000命令

実行できます。


MIPSに直す

MIPSは、100万命令を1単位として表します。

したがって、

50,000,000 \div 1,000,000 = 50

となります。

よって、

50MIPS

です。

答えは、

エ 50

です。


問題1のまとめ

20ナノ秒で1命令

1秒間では50,000,000命令

50,000,000命令は50MIPS

という流れです。

大切なのは、

  • ナノ秒を秒に直す
  • MIPSは100万命令単位に直す

という2点です。


問題2

50MIPSのプロセッサの平均命令実行時間は幾らか。

  • ア 20ナノ秒
  • イ 50ナノ秒
  • ウ 2マイクロ秒
  • エ 5マイクロ秒

問題2の考え方

今度は、問題1の逆です。

50MIPSとは、

1秒間に50百万命令

という意味です。

つまり、

1秒間に50,000,000命令

実行できるプロセッサです。


1命令あたりの時間を求める

1秒間に50,000,000命令実行できます。

そのため、1命令あたりの時間は、

\frac{1}{50,000,000}

秒です。

計算すると、

0.000000020

秒です。

指数を使うと、

20 \times 10^{-9}

秒となります。


秒をナノ秒に直す

1ナノ秒は、

10^{-9}

秒です。

したがって、

20 \times 10^{-9}

秒は、

20ナノ秒

です。

したがって答えは、

ア 20ナノ秒

です。


問題2のまとめ

50MIPS

1秒間に50,000,000命令

1命令の時間は、

\frac{1}{50,000,000}

20ナノ秒

となります。

問題1と問題2は、表裏の関係です。

平均命令実行時間 → MIPS

と、

MIPS → 平均命令実行時間

を行ったり来たりしているだけです。


問題3

1GHzのクロックで動作するCPUがある。

このCPUは、機械語の1命令を平均0.8クロックで実行できることが分かっている。

このCPUは1秒間に平均何万命令を実行できるか。

  • ア 125
  • イ 250
  • ウ 80,000
  • エ 125,000

問題3の考え方

この問題では、MIPSではなく、

1秒間に平均何万命令か

を聞かれています。

使う情報は2つです。

  • クロック周波数:1GHz
  • 1命令に必要なクロック数:0.8クロック

です。


1GHzをクロック数に直す

1GHzは、

1 \times 10^9

Hzです。

つまり、

1,000,000,000

Hzです。

Hzは1秒間の回数を意味します。

したがって、

1GHz = 1秒間に1,000,000,000クロック

です。


1命令に0.8クロックかかる

問題文には、

1命令を平均0.8クロックで実行できる

とあります。

つまり、

0.8クロックで1命令

と考えます。

1秒間に10億クロックあるので、

1秒間のクロック数 ÷ 1命令に必要なクロック数

で命令数を求めます。


命令数を求める

計算式は、

1,000,000,000 \div 0.8

です。

計算すると、

1,250,000,000

となります。

つまり、

1秒間に1,250,000,000命令

実行できます。


「何万命令」に直す

問題は、

何命令

ではなく、

何万命令

と聞いています。

1万命令は、

10,000命令

です。

したがって、

1,250,000,000 \div 10,000 = 125,000

となります。

よって答えは、

エ 125,000

です。


問題3のまとめ

1GHz

1秒間に1,000,000,000クロック

1命令に0.8クロック必要

1,000,000,000 \div 0.8 = 1,250,000,000

1秒間に1,250,000,000命令

「万命令」に直す

1,250,000,000 \div 10,000 = 125,000

したがって、

125,000万命令/秒

となります。


0.8クロックで1命令という表現について

初学者が引っかかりやすいのが、

1命令が0.8クロック?

1クロックより短いの?

という点です。

ここでいう0.8クロックは、

1つの命令が必ず0.8クロックで終了する

という意味ではありません。

平均すると、

1命令あたり0.8クロックで処理できる

という意味です。

CPUでは、パイプライン処理などによって、複数の命令を流れ作業のように処理できます。

そのため、平均値として、

1命令あたりのクロック数が1未満

になることがあります。

基本情報技術者試験では、あまり深く考えすぎず、

1秒間のクロック数 ÷ 1命令あたりの平均クロック数

で計算すれば大丈夫です。


3問をまとめて整理

問題1

20ナノ秒で1命令

1秒間に50,000,000命令

50MIPS


問題2

50MIPS

1秒間に50,000,000命令

1命令は20ナノ秒


問題3

1GHz

1秒間に1,000,000,000クロック

1命令は0.8クロック

1秒間に1,250,000,000命令

125,000万命令


3つの関係を整理

ここでは、無理に複雑な公式として覚える必要はありません。

考え方を整理しておきましょう。

平均命令実行時間から命令数を求める

1命令にかかる時間が分かっている場合は、

1秒 ÷ 1命令にかかる時間

です。

数式で表すと、

\frac{1}{t}

です。

ここで、t は1命令にかかる時間を秒で表したものです。


MIPSから命令数を求める

1MIPSは100万命令/秒なので、

MIPSの値を M とすると、

M \times 10^6

命令/秒です。

たとえば50MIPSなら、

50 \times 10^6 = 50,000,000

命令/秒です。


MIPSから平均命令実行時間を求める

1秒間の命令数が分かったら、

1秒 ÷ 命令数

で1命令の時間が求められます。

MIPSの値を M とすると、

\frac{1}{M \times 10^6}

秒です。


クロック周波数から命令数を求める

クロック周波数を f

1命令あたりの平均クロック数を C とすると、

\frac{f}{C}

で、1秒間の命令数を求められます。

難しく見える場合は、

1秒間のクロック数 ÷ 1命令に必要なクロック数

と覚えておけば十分です。


試験での解き方のコツ

この分野では、公式を丸暗記するよりも、次の順番で考えると安定します。

  1. 問題が何を求めているか確認する
  2. 秒・ナノ秒・GHzなどの単位を確認する
  3. 1秒間に何命令できるかを求める
  4. MIPSや万命令など、問題で指定された単位に直す

特に大事なのは、次の4つです。

1MIPS = 1,000,000命令/秒

1万命令 = 10,000命令

1GHz = 10の9乗Hz

1ナノ秒 = 10のマイナス9乗秒

指数の部分だけ数式で書くと、

1\mathrm{MIPS} = 10^6

1\mathrm{GHz} = 10^9\mathrm{Hz}

1\mathrm{ns} = 10^{-9}\mathrm{s}

となります。


まとめ

問題1から問題3は、すべて、

1秒間にどれだけ処理できるか

を考える問題です。

見た目は違いますが、本質は同じです。

時間が分かっている場合

1秒 ÷ 1命令にかかる時間

で、1秒間の命令数を求めます。


MIPSが分かっている場合

まず、

MIPS × 1,000,000

で1秒間の命令数を求めます。

その後、

1秒 ÷ 命令数

で1命令にかかる時間を求めます。


クロック周波数が分かっている場合

1秒間のクロック数 ÷ 1命令に必要なクロック数

で、1秒間の命令数を求めます。


この3つを別々に暗記するのではなく、

「結局、1秒間に何命令できるのか?」

と考えるのがポイントです。

この流れで整理すれば、

MIPS・ナノ秒・GHz

が一緒に出てきても、落ち着いて解けるようになります。

訪問数 15 回, 今日の訪問数 16回

広告