資格道場 › レッスン一覧 › コンピュータ構成要素
コンピュータ構成要素・2/9・15分

クロック・CPI・MIPS で CPU の性能を計算する

ゴール

クロック周波数・CPI・MIPSを相互に換算し、命令列の実行時間、CPUのMIPS値、1秒あたりのトランザクション処理件数を計算で求められるようになる。あわせて「クロックを2倍にすれば性能も2倍」のような誤った記述を見抜けるようになる。

免除試験を含めると、この5つの知識で40回以上出題されている。計算の型は「クロック周期×CPI」と「単位換算」の2つしかないので、覚えれば確実に取れる得点源になる。システムの処理能力を見積もるときにも同じ考え方を使う。

このレッスンで稽古する(用語チェック・過去問)

結論:計算に使う式は3本だけ

CPUの性能計算は、次の3本の式と単位換算ですべて解けます。

  1. クロック周期 = 1 ÷ クロック周波数(100MHz → 10ナノ秒、1GHz → 1ナノ秒)
  2. 1命令の時間 = CPI × クロック周期
  3. 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
100MHz のクロック(1拍 = 10ns)10ns時間 →命令A2拍=20ns命令B2拍=20ns命令C2拍=20ns1命令 = CPI 2 × 10ns = 20ns1秒に5,000万命令 → 50MIPS
100MHzのクロックは10nsごとに1拍。CPI 2の命令は2拍で終わるので、1命令は20nsで、1秒に5,000万命令(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の単純平均を使うのは誤りです。

1μs に 0.02μs の命令は何個入るか↓ 1個 = 0.02μs(20ns)1μs = 0.02μs × 50個平均命令実行時間0.02μsMIPS501 ÷ 0.02μs = 50MIPS1 ÷ 50MIPS = 0.02μs
1μsを0.02μsの命令で区切ると50個入る。1秒なら50×100万個なので50MIPS。平均命令実行時間とMIPSは逆数の関係になる。

命令列の実行時間とCPU同士の比較

実行時間 = 総クロック数 × クロック周期で求めます。総クロック数は、命令ごとのCPIを実行順に足し合わせた値です。同じ命令を2回実行するなら、2回とも数えます。

2台のコンピュータを比べる問題では、1命令あたりの時間 = CPI × クロック周期 を両方について計算し、割り算で比べます。命令セットが同じなら命令数は共通なので、計算から消えます。

トランザクション処理能力(使用率をかけ忘れない)

トランザクションは、注文1件・振込1件のようなまとまった処理の単位です。1秒間に処理できる件数は次の式で求めます。

処理件数/秒 = MIPS × 10⁶ × CPU使用率 ÷ 1件あたりの命令数

たとえるなら、レジ係(CPU)が80%の時間しか接客できない場合、客1人の手間で割る前に、まず使える時間を80%に減らすということです。「1時間あたり何件」で問われたら、3,600で割って秒あたりに直してから計算します。

使える時間に減らしてから割る1秒に実行できる命令数MIPS × 10⁶使える 80%20%× CPU使用率(かけ忘れ注意)÷ 1件あたりの命令数処理件数/秒
1秒に実行できる命令数にCPU使用率をかけて使える分だけにし、そのあと1件あたりの命令数で割ると1秒あたりの処理件数になる。

クロック周波数だけでは性能は決まらない

実際の性能は、クロック周波数のほかにCPI、主記憶の速さ、システムバス(CPUと主記憶などを結ぶ通り道)の速さにも左右されます。そのため次のように判断します。

  • 正しい:CPUのクロックとシステムバスのクロックは同じでなくてよい
  • 正しい:アーキテクチャが同じなら、クロック周波数が高いほど単位時間あたりの実行命令数は多い
  • 誤り:クロックを2倍にすれば、システム全体の性能も2倍になる
  • 誤り:CPUの種類とクロックが同じなら、PCの性能も同じになる
  • 誤り:クロック周波数の逆数は1秒間の命令数である(正しくはクロック周期)
  • 誤り:1命令は必ず1クロックで終わる
  • 誤り:プログラムを実行していないときはクロックが止まる
クロック2倍でも全体は2倍にならないかかる時間 →元のPCCPU処理主記憶・バス元の半分の長さクロック2倍CPU主記憶・バス↑ 全体が2倍速ならここで終わるバスや主記憶はCPUのクロックと別の速さ→ 全体の時間は半分にならない
クロックを2倍にしてもCPUの処理部分が縮むだけで、主記憶やシステムバスの時間は変わらないため、全体の時間は元の半分(点線)まで縮まず、性能は2倍にならない。
例題 1

平均命令実行時間20ナノ秒は何MIPSか

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

ア 5
イ 10
ウ 20
エ 50

出典:平成29年度 秋期 基本情報技術者試験 午前 問9

解き方と答えを見る
  1. 20ナノ秒をマイクロ秒に直す:20ns = 0.02μs
  2. MIPSは1秒間の命令数を百万単位で表した値なので、1 ÷ 0.02μs を計算する
  3. 1 ÷ 0.02 = 50
  4. 秒で検算する:1 ÷ (20×10⁻⁹) = 5×10⁷命令/秒。これを10⁶で割ると50MIPS

答え:エ:50MIPS

例題 2

1GHz・平均0.8クロックのCPUは毎秒何万命令を実行できるか

1 GHz のクロックで動作する CPU がある。この CPU は,機械語の 1 命令を平均 0.8 クロックで実行できることが分かっている。この CPU は 1 秒間に平均何万命令を実行できるか。

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

出典:令和元年度 秋期 基本情報技術者試験 午前 問12

解き方と答えを見る
  1. 1GHz = 10⁹クロック/秒
  2. 1命令に0.8クロックかかるので、命令数 = 10⁹ ÷ 0.8 = 1.25×10⁹命令/秒
  3. 「万命令」で答えるので10⁴で割る:1.25×10⁹ ÷ 10⁴ = 1.25×10⁵ = 125,000万命令
  4. ×0.8 と掛けてしまうと80,000になる。クロックをCPIで割ることを確認する

答え:エ:125,000

例題 3

命令の出現率から700MHzのCPUのMIPS値を求める

動作クロック周波数が 700MHz の CPU で,命令実行に必要なクロック数及びその命令の出現率が表に示す値である場合,この CPU の性能は約何 MIPS か。
命令の種別命令実行に必要なクロック数出現率(%)
レジスタ間演算430
メモリ・レジスタ間演算860
無条件分岐1010

ア 10
イ 50
ウ 70
エ 100

出典:平成30年度 秋期 基本情報技術者試験 午前 問9

解き方と答えを見る
  1. 加重平均CPIを求める:4×0.3 + 8×0.6 + 10×0.1
  2. = 1.2 + 4.8 + 1.0 = 7クロック/命令
  3. MIPS = クロック周波数[MHz] ÷ 平均CPI = 700 ÷ 7 = 100
  4. 単純平均((4+8+10)÷3 ≒ 7.3)を使うと答えが合わない

答え:エ:100MIPS

例題 4

100万命令を1GHzで実行するのに何ミリ秒かかるか

表のCPIと構成比率で,3種類の演算命令が合計1,000,000命令実行されるプログラムを,クロック周波数が1GHzのプロセッサで実行するのに必要な時間は何ミリ秒か。
演算命令CPI (Cycles Per Instruction)構成比率 (%)
浮動小数点加算320
浮動小数点乗算520
整数演算260

ア 0.4
イ 2.8
ウ 4.0
エ 28.0

出典:平成22年度 春期 基本情報技術者試験 午前 問9

解き方と答えを見る
  1. 加重平均CPIを求める:3×0.2 + 5×0.2 + 2×0.6 = 0.6 + 1.0 + 1.2 = 2.8
  2. 総クロック数 = 1,000,000命令 × 2.8 = 2,800,000クロック
  3. 1GHzのクロック周期は1ns = 10⁻⁹秒
  4. 実行時間 = 2.8×10⁶ × 10⁻⁹秒 = 2.8×10⁻³秒 = 2.8ミリ秒

答え:イ:2.8ミリ秒

例題 5

命令列 a→c→b→a→c→d の実行時間(100MHz)

あるプログラムは,命令 a ~ d を次の順で実行する。 各命令の実行に必要なクロックサイクル数(CPI:Cycles Per Instruction)は,表のとおりである。CPU のクロック周波数を 100MHz とするとき,この命令列の実行時間は何ナノ秒か。ここで,命令の実行はオーバラップしないものとする。
命令の実行順: a → c → b → a → c → d
命令CPI
a6
b2
c4
d8

ア 30
イ 40
ウ 200
エ 300

出典:基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問8

解き方と答えを見る
  1. 実行順にCPIを足す:a6 + c4 + b2 + a6 + c4 + d8 = 30クロック(aとcは2回ずつ数える)
  2. 100MHz = 10⁸回/秒なので、クロック周期 = 1 ÷ 10⁸ = 10⁻⁸秒 = 10ナノ秒
  3. 実行時間 = 30クロック × 10ns = 300ナノ秒
  4. 30(総クロック数)を選ぶのは、時間への換算を忘れたときの誤り

答え:エ:300ナノ秒

例題 6

コンピュータAの処理時間はBの何倍か

同じ命令セットをもつコンピュータ A と B がある。それぞれの CPU クロック周期,及びあるプログラムを実行したときの CPI (Cycles Per Instruction) は,表のとおりである。そのプログラムを実行したとき,コンピュータ A の処理時間は,コンピュータ B の処理時間の何倍になるか。
CPU クロック周期CPI
コンピュータ A1 ナノ秒4.0
コンピュータ B4 ナノ秒0.5
選択肢ア・イは分数(1/32,1/2)。

ア 1/32
イ 1/2
ウ 2
エ 8

出典:基本情報技術者試験 科目A免除 修了試験 20221211 実施分 問12

解き方と答えを見る
  1. 命令セットが同じなので、命令数は両方で共通(計算から消える)
  2. Aの1命令の時間 = CPI 4.0 × 1ns = 4ns
  3. Bの1命令の時間 = CPI 0.5 × 4ns = 2ns
  4. A ÷ B = 4 ÷ 2 = 2倍

答え:ウ:2倍

例題 7

200MIPS・使用率80%で1秒に何件処理できるか

1 件のトランザクションについて 80 万ステップの命令実行を必要とするシステムがある。プロセッサの性能が 200 MIPS で,プロセッサの使用率が 80%のときのトランザクションの処理能力(件/秒)は幾らか。

ア 20
イ 200
ウ 250
エ 313

出典:平成25年度 秋期 基本情報技術者試験 午前 問9

解き方と答えを見る
  1. 実際に使える命令数/秒 = 200×10⁶ × 0.8 = 160×10⁶命令/秒
  2. 1件あたりの命令数 = 80万 = 0.8×10⁶命令
  3. 処理件数 = 160×10⁶ ÷ 0.8×10⁶ = 200件/秒
  4. 使用率をかけ忘れると250件になる

答え:イ:200件/秒

例題 8

1時間36,000件を処理するとき、1件あたりの命令数の上限は何万個か

あるオンラインシステムでは,100 MIPS の CPU を使い,1 時間当たり 36,000 件のトランザクションを処理することが求められている。CPU 利用率の上限を 80 % とするとき,1 トランザクション当たりの平均命令数の上限は何万個か。

ア 0.2
イ 800
ウ 1,000
エ 1,250

出典:基本情報技術者試験 科目A免除 修了試験 200907 実施分 問9

解き方と答えを見る
  1. 1時間を秒に直す:36,000件 ÷ 3,600秒 = 10件/秒
  2. 使える命令数/秒 = 100×10⁶ × 0.8 = 8×10⁷命令/秒
  3. 1件あたりの上限 = 8×10⁷ ÷ 10件 = 8×10⁶命令 = 800万個
  4. 利用率をかけ忘れると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)

クロック clock
CPU内部の回路が足並みをそろえて動くために、一定の間隔で刻まれる信号。
クロック周波数 くろっくしゅうはすう
1秒間に刻まれるクロックの回数で、単位はHz(MHz・GHz)。
⚠ クロック周期と取り違えやすい。周波数は「回数/秒」、周期は「1回あたりの時間」で、互いに逆数の関係
クロック周期(クロックサイクル時間) くろっくしゅうき
クロック1回分の時間で、クロック周波数の逆数(100MHzなら10ns)。
⚠ 「周波数の逆数は1秒間の命令数」という選択肢は誤り。逆数で得られるのは1クロックの時間
CPI Cycles Per Instruction
1命令の実行に必要なクロック数で、命令の種類によって異なり、1未満のこともある。
⚠ MIPSと混同しやすい。CPIは小さいほど速く、MIPSは大きいほど速い
平均CPI へいきんしーぴーあい
命令ごとのCPIを出現率で重みづけして平均した値。
⚠ 単純平均とは違う。必ずCPI×出現率を足し合わせる
出現率(命令ミックス) しゅつげんりつ
プログラム中で各種類の命令が占める割合。
MIPS Million Instructions Per Second
1秒間に実行できる命令数を百万単位で表したCPU性能の指標。
⚠ 平均命令実行時間とは逆数の関係(μs単位なら MIPS = 1 ÷ μsの値)
平均命令実行時間 へいきんめいれいじっこうじかん
1命令の実行にかかる平均時間で、平均CPI×クロック周期で求める。
⚠ MIPSとは逆数の関係。20ns ⇔ 50MIPS の組を覚えておくと検算に使える
ナノ秒・マイクロ秒・ミリ秒 ns・μs・ms
それぞれ10⁻⁹秒、10⁻⁶秒、10⁻³秒を表す時間の単位。
⚠ 1μs = 1,000ns、1ms = 1,000μs。単位を1段ずらすと答えが1,000倍ずれる
システムバス しすてむばす
CPUと主記憶などの装置を結ぶデータの通り道で、CPUとは別のクロックで動いてよい。
⚠ 「CPUとバスのクロックは同一でなければならない」は誤り
アーキテクチャ architecture
命令セットや内部構造など、CPUの基本的な設計方式。
⚠ 同じアーキテクチャなら、クロックが高いほど実行命令数が多いといえる。別アーキテクチャならクロックだけでは比べられない
CPU使用率(利用率) しーぴーゆーしようりつ
CPUの能力のうち、その処理に実際に使える(使ってよい)割合。
⚠ 処理件数を計算するときは、MIPSに使用率をかけてから割る
トランザクション transaction
注文1件や振込1件のような、ひとまとまりで処理する業務処理の単位。
オーバラップ overlap
複数の命令の実行を時間的に重ねて進めること(パイプラインなど)。
⚠ 「オーバラップしない」と書かれていれば、CPIを単純に足し合わせればよい

このレッスンの過去問

このレッスンで稽古する