コンピュータの性能計算は「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命令に必要なクロック数
と覚えておけば十分です。
試験での解き方のコツ
この分野では、公式を丸暗記するよりも、次の順番で考えると安定します。
- 問題が何を求めているか確認する
- 秒・ナノ秒・GHzなどの単位を確認する
- 1秒間に何命令できるかを求める
- 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
が一緒に出てきても、落ち着いて解けるようになります。













ディスカッション
コメント一覧
まだ、コメントがありません