クロック・CPI・MIPS で CPU の性能を計算する
クロック周波数・CPI・MIPSを相互に換算し、命令列の実行時間、CPUのMIPS値、1秒あたりのトランザクション処理件数を計算で求められるようになる。あわせて「クロックを2倍にすれば性能も2倍」のような誤った記述を見抜けるようになる。
免除試験を含めると、この5つの知識で40回以上出題されている。計算の型は「クロック周期×CPI」と「単位換算」の2つしかないので、覚えれば確実に取れる得点源になる。システムの処理能力を見積もるときにも同じ考え方を使う。
このレッスンで稽古する(用語チェック・過去問)結論:計算に使う式は3本だけ
CPUの性能計算は、次の3本の式と単位換算ですべて解けます。
- クロック周期 = 1 ÷ クロック周波数(100MHz → 10ナノ秒、1GHz → 1ナノ秒)
- 1命令の時間 = CPI × クロック周期
- MIPS = 1秒に実行できる命令数 ÷ 100万(= クロック周波数[MHz] ÷ 平均CPI)
flowchart LR
F["クロック周波数"] -->|"逆数"| T["クロック周期"]
T -->|"× 平均CPI"| I["平均命令実行時間"]
I -->|"逆数(÷100万)"| M["MIPS"]
F -->|"÷ 平均CPI(MHzのまま)"| M
どの問題も、この図のどこからどこへ進むかを決めれば解けます。
クロック・CPIは「メトロノーム」と「拍数」
クロックは、CPU内部の動作の足並みをそろえる一定間隔の信号です。メトロノームにたとえると、クロック周波数は1秒間に鳴る回数、クロック周期は1拍の長さにあたります。
CPI(Cycles Per Instruction)は、1命令を終えるのに何拍かかるかを表します。命令の種類によってCPIは違い、0.8のように1未満になることもあります(複数の命令を同時に進められるCPUの場合)。
| 用語 | 意味 | 単位の例 | 例 |
|---|---|---|---|
| クロック周波数 | 1秒間のクロック数 | Hz・MHz・GHz | 100MHz |
| クロック周期 | 1クロックの時間(周波数の逆数) | 秒・ns | 10ns |
| CPI | 1命令に必要なクロック数 | クロック/命令 | 4 |
| 平均命令実行時間 | 1命令にかかる平均時間 | ns・μs | 20ns |
| MIPS | 1秒間に実行できる命令数(百万単位) | MIPS | 50MIPS |
単位換算でほとんどのミスが起きる
計算そのものは簡単で、間違いの原因はほぼ単位換算です。次の表を必ず使ってください。
| 小さい方の単位 | 値 | 大きい方の単位 | 値 |
|---|---|---|---|
| ミリ(m) | 10⁻³ | キロ(k) | 10³ |
| マイクロ(μ) | 10⁻⁶ | メガ(M) | 10⁶ |
| ナノ(n) | 10⁻⁹ | ギガ(G) | 10⁹ |
- 100MHz = 10⁸回/秒 → 周期は 10⁻⁸秒 = 10ns
- 1GHz = 10⁹回/秒 → 周期は 1ns
- 「何万命令か」と聞かれたら、命令数を 10⁴で割る
MIPSと平均命令実行時間は逆数の関係(最頻出)
MIPS(Million Instructions Per Second)は、1秒間に何百万命令を実行できるかを表す値です。平均命令実行時間とMIPSは逆数の関係にあり、出題回数が最も多いのはこの換算です。
- 平均命令実行時間が μs単位 なら MIPS = 1 ÷ μsの値(0.02μs → 50MIPS)
- 20ns = 0.02μs → 1 ÷ 0.02 = 50MIPS
- 逆に50MIPSなら 1 ÷ 50 = 0.02μs = 20ns
命令ごとにクロック数と出現率(プログラム中にその命令が占める割合)が表で示された場合は、まず加重平均CPI(CPI×出現率の合計)を求めます。そのあと「クロック周波数[MHz] ÷ 平均CPI」でMIPSになります。CPIの単純平均を使うのは誤りです。
命令列の実行時間とCPU同士の比較
実行時間 = 総クロック数 × クロック周期で求めます。総クロック数は、命令ごとのCPIを実行順に足し合わせた値です。同じ命令を2回実行するなら、2回とも数えます。
2台のコンピュータを比べる問題では、1命令あたりの時間 = CPI × クロック周期 を両方について計算し、割り算で比べます。命令セットが同じなら命令数は共通なので、計算から消えます。
トランザクション処理能力(使用率をかけ忘れない)
トランザクションは、注文1件・振込1件のようなまとまった処理の単位です。1秒間に処理できる件数は次の式で求めます。
処理件数/秒 = MIPS × 10⁶ × CPU使用率 ÷ 1件あたりの命令数
たとえるなら、レジ係(CPU)が80%の時間しか接客できない場合、客1人の手間で割る前に、まず使える時間を80%に減らすということです。「1時間あたり何件」で問われたら、3,600で割って秒あたりに直してから計算します。
クロック周波数だけでは性能は決まらない
実際の性能は、クロック周波数のほかにCPI、主記憶の速さ、システムバス(CPUと主記憶などを結ぶ通り道)の速さにも左右されます。そのため次のように判断します。
- 正しい:CPUのクロックとシステムバスのクロックは同じでなくてよい
- 正しい:アーキテクチャが同じなら、クロック周波数が高いほど単位時間あたりの実行命令数は多い
- 誤り:クロックを2倍にすれば、システム全体の性能も2倍になる
- 誤り:CPUの種類とクロックが同じなら、PCの性能も同じになる
- 誤り:クロック周波数の逆数は1秒間の命令数である(正しくはクロック周期)
- 誤り:1命令は必ず1クロックで終わる
- 誤り:プログラムを実行していないときはクロックが止まる
平均命令実行時間20ナノ秒は何MIPSか
ア 5
イ 10
ウ 20
エ 50
解き方と答えを見る
- 20ナノ秒をマイクロ秒に直す:20ns = 0.02μs
- MIPSは1秒間の命令数を百万単位で表した値なので、1 ÷ 0.02μs を計算する
- 1 ÷ 0.02 = 50
- 秒で検算する:1 ÷ (20×10⁻⁹) = 5×10⁷命令/秒。これを10⁶で割ると50MIPS
答え:エ:50MIPS
1GHz・平均0.8クロックのCPUは毎秒何万命令を実行できるか
ア 125
イ 250
ウ 80,000
エ 125,000
解き方と答えを見る
- 1GHz = 10⁹クロック/秒
- 1命令に0.8クロックかかるので、命令数 = 10⁹ ÷ 0.8 = 1.25×10⁹命令/秒
- 「万命令」で答えるので10⁴で割る:1.25×10⁹ ÷ 10⁴ = 1.25×10⁵ = 125,000万命令
- ×0.8 と掛けてしまうと80,000になる。クロックをCPIで割ることを確認する
答え:エ:125,000
命令の出現率から700MHzのCPUのMIPS値を求める
| 命令の種別 | 命令実行に必要なクロック数 | 出現率(%) |
|---|---|---|
| レジスタ間演算 | 4 | 30 |
| メモリ・レジスタ間演算 | 8 | 60 |
| 無条件分岐 | 10 | 10 |
ア 10
イ 50
ウ 70
エ 100
解き方と答えを見る
- 加重平均CPIを求める:4×0.3 + 8×0.6 + 10×0.1
- = 1.2 + 4.8 + 1.0 = 7クロック/命令
- MIPS = クロック周波数[MHz] ÷ 平均CPI = 700 ÷ 7 = 100
- 単純平均((4+8+10)÷3 ≒ 7.3)を使うと答えが合わない
答え:エ:100MIPS
100万命令を1GHzで実行するのに何ミリ秒かかるか
| 演算命令 | CPI (Cycles Per Instruction) | 構成比率 (%) |
|---|---|---|
| 浮動小数点加算 | 3 | 20 |
| 浮動小数点乗算 | 5 | 20 |
| 整数演算 | 2 | 60 |
ア 0.4
イ 2.8
ウ 4.0
エ 28.0
解き方と答えを見る
- 加重平均CPIを求める:3×0.2 + 5×0.2 + 2×0.6 = 0.6 + 1.0 + 1.2 = 2.8
- 総クロック数 = 1,000,000命令 × 2.8 = 2,800,000クロック
- 1GHzのクロック周期は1ns = 10⁻⁹秒
- 実行時間 = 2.8×10⁶ × 10⁻⁹秒 = 2.8×10⁻³秒 = 2.8ミリ秒
答え:イ:2.8ミリ秒
命令列 a→c→b→a→c→d の実行時間(100MHz)
| 命令 | CPI |
|---|---|
| a | 6 |
| b | 2 |
| c | 4 |
| d | 8 |
ア 30
イ 40
ウ 200
エ 300
出典:基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問8
解き方と答えを見る
- 実行順にCPIを足す:a6 + c4 + b2 + a6 + c4 + d8 = 30クロック(aとcは2回ずつ数える)
- 100MHz = 10⁸回/秒なので、クロック周期 = 1 ÷ 10⁸ = 10⁻⁸秒 = 10ナノ秒
- 実行時間 = 30クロック × 10ns = 300ナノ秒
- 30(総クロック数)を選ぶのは、時間への換算を忘れたときの誤り
答え:エ:300ナノ秒
コンピュータAの処理時間はBの何倍か
| CPU クロック周期 | CPI | |
|---|---|---|
| コンピュータ A | 1 ナノ秒 | 4.0 |
| コンピュータ B | 4 ナノ秒 | 0.5 |
ア 1/32
イ 1/2
ウ 2
エ 8
出典:基本情報技術者試験 科目A免除 修了試験 20221211 実施分 問12
解き方と答えを見る
- 命令セットが同じなので、命令数は両方で共通(計算から消える)
- Aの1命令の時間 = CPI 4.0 × 1ns = 4ns
- Bの1命令の時間 = CPI 0.5 × 4ns = 2ns
- A ÷ B = 4 ÷ 2 = 2倍
答え:ウ:2倍
200MIPS・使用率80%で1秒に何件処理できるか
ア 20
イ 200
ウ 250
エ 313
解き方と答えを見る
- 実際に使える命令数/秒 = 200×10⁶ × 0.8 = 160×10⁶命令/秒
- 1件あたりの命令数 = 80万 = 0.8×10⁶命令
- 処理件数 = 160×10⁶ ÷ 0.8×10⁶ = 200件/秒
- 使用率をかけ忘れると250件になる
答え:イ:200件/秒
1時間36,000件を処理するとき、1件あたりの命令数の上限は何万個か
ア 0.2
イ 800
ウ 1,000
エ 1,250
出典:基本情報技術者試験 科目A免除 修了試験 200907 実施分 問9
解き方と答えを見る
- 1時間を秒に直す:36,000件 ÷ 3,600秒 = 10件/秒
- 使える命令数/秒 = 100×10⁶ × 0.8 = 8×10⁷命令/秒
- 1件あたりの上限 = 8×10⁷ ÷ 10件 = 8×10⁶命令 = 800万個
- 利用率をかけ忘れると1,000、秒に直し忘れると0.2付近の誤答になる
答え:イ:800
要点(試験直前に読む)
- クロック周期 = 1 ÷ 周波数(100MHz = 10ns、1GHz = 1ns)
- 実行時間 = 命令数 × CPI × クロック周期。命令列なら各命令のCPIを実行順に全部足す
- MIPS = 周波数[MHz] ÷ 平均CPI。平均CPIは必ずCPI×出現率で加重平均する
- MIPSと平均命令実行時間は逆数の関係(20ns ⇔ 50MIPS)
- 処理件数/秒 = MIPS×10⁶×使用率 ÷ 1件の命令数。1時間あたりの件数なら、先に3,600で割る
- クロック周波数だけでは性能は決まらない。バスのクロックはCPUと違ってよい
ひっかけ
- 「クロックを2倍にすれば性能も2倍」「同じCPUで同じクロックなら同じ性能」は誤り。主記憶やバスなどほかの要素も性能に影響する
- 「クロック周波数の逆数 = 1秒間の命令数」は誤り。逆数で得られるのはクロック周期(1クロックの時間)
- ns・μs・msを1段ずらすと、答えが1,000倍ずれた選択肢をそのまま選んでしまう。換算表で必ず確認する
- 出現率つきの表でCPIを単純平均すると答えが合わない。CPI×出現率を足し合わせる
- トランザクション問題では、使用率のかけ忘れと時間単位(1時間 → 秒)の直し忘れが定番の誤答になる
用語(14)
CPU内部の回路が足並みをそろえて動くために、一定の間隔で刻まれる信号。
1秒間に刻まれるクロックの回数で、単位はHz(MHz・GHz)。
⚠ クロック周期と取り違えやすい。周波数は「回数/秒」、周期は「1回あたりの時間」で、互いに逆数の関係
クロック1回分の時間で、クロック周波数の逆数(100MHzなら10ns)。
⚠ 「周波数の逆数は1秒間の命令数」という選択肢は誤り。逆数で得られるのは1クロックの時間
1命令の実行に必要なクロック数で、命令の種類によって異なり、1未満のこともある。
⚠ MIPSと混同しやすい。CPIは小さいほど速く、MIPSは大きいほど速い
命令ごとのCPIを出現率で重みづけして平均した値。
⚠ 単純平均とは違う。必ずCPI×出現率を足し合わせる
プログラム中で各種類の命令が占める割合。
1秒間に実行できる命令数を百万単位で表したCPU性能の指標。
⚠ 平均命令実行時間とは逆数の関係(μs単位なら MIPS = 1 ÷ μsの値)
1命令の実行にかかる平均時間で、平均CPI×クロック周期で求める。
⚠ MIPSとは逆数の関係。20ns ⇔ 50MIPS の組を覚えておくと検算に使える
それぞれ10⁻⁹秒、10⁻⁶秒、10⁻³秒を表す時間の単位。
⚠ 1μs = 1,000ns、1ms = 1,000μs。単位を1段ずらすと答えが1,000倍ずれる
CPUと主記憶などの装置を結ぶデータの通り道で、CPUとは別のクロックで動いてよい。
⚠ 「CPUとバスのクロックは同一でなければならない」は誤り
命令セットや内部構造など、CPUの基本的な設計方式。
⚠ 同じアーキテクチャなら、クロックが高いほど実行命令数が多いといえる。別アーキテクチャならクロックだけでは比べられない
CPUの能力のうち、その処理に実際に使える(使ってよい)割合。
⚠ 処理件数を計算するときは、MIPSに使用率をかけてから割る
注文1件や振込1件のような、ひとまとまりで処理する業務処理の単位。
複数の命令の実行を時間的に重ねて進めること(パイプラインなど)。
⚠ 「オーバラップしない」と書かれていれば、CPIを単純に足し合わせればよい
このレッスンの過去問
- クロック周波数とシステム性能の関係平成28年度 春期 基本情報技術者試験 午前 問9
- 命令列の実行時間計算(CPIとクロックサイクル時間)基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問8
- MIPS計算(CPI・出現率)令和元年度 秋期 基本情報技術者試験 午前 問12
- 平均命令実行時間からMIPS換算平成29年度 秋期 基本情報技術者試験 午前 問9
- トランザクション処理能力の計算(MIPS・使用率)平成25年度 秋期 基本情報技術者試験 午前 問9