MIPS・ns・GHzの計算をつなげて理解する

広告

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

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

平均命令実行時間
1命令を実行するのに平均何秒かかるか

クロック周波数
1秒間に何回クロックが動くか

この3つは、別々に覚えるよりも、

1秒間に何命令できるか

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


まず覚える単位

計算に入る前に、単位をそろえます。

1秒 = 1,000,000,000ナノ秒
1ナノ秒 = 10^-9秒

1マイクロ秒 = 1,000ナノ秒
1マイクロ秒 = 10^-6秒

1GHz = 1,000,000,000Hz
1GHz = 10^9Hz

MIPSは、

Million Instructions Per Second

の略です。

つまり、

1 MIPS = 1秒間に100万命令

です。


問題1

平均命令実行時間が20ナノ秒のコンピュータがある。
このコンピュータの性能は何MIPSか。

ア 5
イ 10
ウ 20
エ 50

問題1の考え方

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

1命令に20ナノ秒かかる

という意味です。

MIPSを求めるには、

1秒間に何命令できるか

を考えます。


20ナノ秒を秒に直す

20ナノ秒 = 20 × 10^-9秒

つまり、

1命令 = 20 × 10^-9秒

です。


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

1命令に20ナノ秒かかるので、1秒間にできる命令数は、

1 ÷ (20 × 10^-9)

です。

計算すると、

1 ÷ 0.000000020 = 50,000,000

つまり、

1秒間に50,000,000命令

実行できます。


MIPSに直す

MIPSは「100万命令単位」です。

50,000,000命令 ÷ 1,000,000 = 50

したがって、

50 MIPS

です。

答えは、

エ 50

問題1のまとめ

20ナノ秒で1命令
↓
1秒間では50,000,000命令
↓
50,000,000命令 = 50MIPS

ポイントは、

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

ことです。


問題2

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

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

問題2の考え方

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

50MIPSとは、

1秒間に50百万命令

という意味です。

つまり、

1秒間に50,000,000命令

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


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

1秒間に50,000,000命令できるので、1命令あたりの時間は、

1秒 ÷ 50,000,000命令

です。

1 ÷ 50,000,000 = 0.000000020秒

これは、

20 × 10^-9秒

です。


秒をナノ秒に直す

1ナノ秒 = 10^-9秒

なので、

20 × 10^-9秒 = 20ナノ秒

したがって答えは、

ア 20ナノ秒

です。


問題2のまとめ

50MIPS
↓
1秒間に50,000,000命令
↓
1命令の時間 = 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秒間に1,000,000,000クロック

という意味です。

つまり、

1GHz = 10億クロック/秒

です。


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

問題文には、

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

とあります。

つまり、

0.8クロックで1命令

です。

では、1秒間に10億クロックあるなら、命令数はどう求めるでしょうか。

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

です。


命令数を求める

1,000,000,000 ÷ 0.8

を計算します。

1,000,000,000 ÷ 0.8 = 1,250,000,000

つまり、

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

実行できます。


「何万命令」に直す

問題は「何命令」ではなく、

何万命令

と聞いています。

1万命令は、

10,000命令

です。

したがって、

1,250,000,000 ÷ 10,000 = 125,000

よって答えは、

エ 125,000

です。


問題3のまとめ

1GHz = 1秒間に1,000,000,000クロック
↓
1命令に0.8クロック必要
↓
1,000,000,000 ÷ 0.8 = 1,250,000,000命令
↓
「万命令」に直す
↓
1,250,000,000 ÷ 10,000 = 125,000万命令

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

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

1命令が0.8クロック?
1クロックより短いの?

という点です。

これは、1つ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,000,000,000 ÷ 0.8
→ 1,250,000,000命令
→ 125,000万命令

試験での解き方のコツ

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

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

特に大事なのは、

MIPSは100万命令単位
万命令は10,000命令単位
GHzは1秒間のクロック数
ナノ秒は10^-9秒

です。


まとめ

問題1から3は、すべて

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

を考える問題です。

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

時間が分かる → 1秒 ÷ 1命令の時間
MIPSが分かる → 1秒間の命令数から1命令の時間を出す
クロックが分かる → クロック数 ÷ 1命令に必要なクロック数

この流れで整理すれば、MIPS・ナノ秒・GHzが混ざっても落ち着いて解けます。

訪問数 5 回, 今日の訪問数 5回

広告