CPI・MIPS・FLOPS(CPI, MIPS, FLOPS)
プロセッサの速さを表す数。CPIは1命令あたりの拍数、MIPSは1秒間にこなせる命令数。
もう少し詳しい説明
プロセッサ(計算と、命令を実行する仕事を受け持つ部品。CPUと同じものを指します)の速さを比べたいとき、クロック周波数(1秒間に刻む拍の数)だけでは足りません。1拍で進む仕事の量がプロセッサごとに違うので、そこも数にする必要があります。そのための指標が3つあります。
CPI:1命令に何拍かかるか
CPI(Cycles Per Instruction)は、1つの命令を終えるのに必要なクロック数です。
- CPI が 1 … 1拍で1命令。理想の形
- CPI が 4 … 1命令に4拍かかる。4倍遅い
CPIは小さいほど速いという、ほかの指標と逆向きの数です。ここを取り違えやすいので、「かかる拍数」という言葉で覚えてください。多くかかるほど遅い、です。
実行時間を出す
プログラム全体にかかる時間は、3つを順に掛けていくだけで出せます。式を覚える前に、何を掛けているのかを確かめてください。
①1拍は何秒か。 これはクロック周期で、クロック周波数の逆数です。クロック周波数が2GHzなら、
1拍の時間 = 1 ÷ (2×10⁹) = 0.5×10⁻⁹秒 = 0.5ナノ秒
②1命令は何秒か。 1命令にCPI回ぶんの拍が要るので、①にCPIを掛けます。CPIが4なら、
1命令の時間 = 0.5ナノ秒 × 4 = 2ナノ秒
③全部で何秒か。 ②に命令数を掛けます。命令数が100万なら、
実行時間 = 2×10⁻⁹秒 × 10⁶ = 2×10⁻³秒 = 2ミリ秒
この①②③をひとつにまとめたものが、よく見る式です。
実行時間 = 命令数 × CPI × クロック周期 実行時間 = 10⁶ × 4 × 0.5×10⁻⁹秒 = 2×10⁻³秒 = 2ミリ秒
式を忘れても、①②③をたどれば必ず答えが出ます。 本番では式の形を思い出そうとするより、「1拍は何秒 → 1命令は何秒 → 全部で何秒」と順に進めたほうが確実です。
MIPS:1秒間に何命令こなせるか
MIPS(Million Instructions Per Second)は、1秒間に実行できる命令数を100万単位で表した数です。読み方は「ミップス」。「100万命令/秒」がちょうど1MIPSになります。
これも式を覚える前に、順を追って組み立ててみます。クロック周波数2GHz、CPI 4のプロセッサで考えます。
①1拍は何秒か。
1拍の時間 = 1 ÷ (2×10⁹) = 0.5ナノ秒
②1命令は何秒か。 CPIが4なので、
1命令の時間 = 0.5ナノ秒 × 4 = 2ナノ秒
③1秒間に何命令こなせるか。 1命令に2ナノ秒かかるのだから、1秒をその時間で割れば個数が出ます。
1秒あたりの命令数 = 1秒 ÷ 2×10⁻⁹秒 = 5×10⁸ 命令(5億命令)
④100万単位に直す。 MIPSの単位は100万命令なので、10⁶で割ります。
MIPS = 5×10⁸ ÷ 10⁶ = 500MIPS
この①〜④をまとめると、よく見る式になります。
MIPS = クロック周波数 ÷ CPI ÷ 10⁶ MIPS = 2×10⁹ ÷ 4 ÷ 10⁶ = 5×10⁸ ÷ 10⁶ = 500MIPS
③の「1秒を1命令の時間で割る」が、式の中で「CPIで割る」に化けているところです。ここが分かっていれば、式の形を思い出せなくても組み立て直せます。
「割る」のか「掛ける」のかを確かめる方法
MIPSは大きいほど速い数です。1秒間にこなせる命令数なので、多いほうが速い。いっぽうCPIは小さいほど速い数でした。2つは向きが逆です。
このため、計算のときにCPIで割るのか掛けるのかを迷いやすいのですが、自分で値を2つ作って試せば、その場で確かめられます。
クロック周波数はどちらも1GHzで、CPIが2のプロセッサAと、CPIが4のプロセッサBを考えます。Aは1命令に2拍しか使わないので、AのほうがBより速い。したがってAのMIPSはBより大きくなるはずです。
まず割って計算してみます。
AのMIPS = 10⁹ ÷ 2 ÷ 10⁶ = 5×10⁸ ÷ 10⁶ = 500MIPS BのMIPS = 10⁹ ÷ 4 ÷ 10⁶ = 2.5×10⁸ ÷ 10⁶ = 250MIPS
速いAのほうが大きくなりました。筋が通っています。
次に掛けて計算してみます。
AのMIPS = 10⁹ × 2 ÷ 10⁶ = 2×10⁹ ÷ 10⁶ = 2,000MIPS BのMIPS = 10⁹ × 4 ÷ 10⁶ = 4×10⁹ ÷ 10⁶ = 4,000MIPS
1命令に4拍もかかる遅いBのほうが速いという、おかしな答えになりました。これで掛け算が間違いだと分かります。
本番で迷ったら、この「CPIが大きいほうは遅いはず」という一点に戻ってください。計算した結果がそれに反していれば、割り算と掛け算を取り違えています。
命令ミックス:CPIの平均を出す
ここまでは「CPIは4」というように、1つの値で話を進めてきました。ところが実際のプログラムでは、命令の種類によってCPIが違います。足し算のような単純な命令は少ない拍数で終わり、小数の掛け算のような重い命令は何倍もかかります。
そこで、どの種類の命令がどれくらいの割合で出てくるかを調べたものを使います。これが命令ミックスです。ここからプログラム全体をならしたCPI(平均CPI)を出します。
次の3種類が混ざったプログラムで計算してみます。
| 命令の種類 | 出現割合 | その命令のCPI |
|---|---|---|
| 整数演算 | 50% | 2 |
| 分岐 | 30% | 4 |
| 浮動小数点演算 | 20% | 10 |
単純に(2 + 4 + 10)÷ 3 としてはいけません。 3種類は同じ数だけ出てくるわけではないからです。整数演算は半分を占めるのに対し、重い浮動小数点演算は5回に1回しか出てきません。出てくる回数の多いものを重く見る必要があります。これが加重平均です。
①種類ごとに「割合 × CPI」を出す。 その種類が全体のCPIにどれだけ寄与しているか、という数になります。
- 整数演算 … 0.5 × 2 = 1
- 分岐 … 0.3 × 4 = 1.2
- 浮動小数点演算 … 0.2 × 10 = 2
②全部足す。 これが平均CPIです。
平均CPI = 0.5 × 2 + 0.3 × 4 + 0.2 × 10 = 1 + 1.2 + 2 = 4.2
①の3つの値を見比べてみてください。浮動小数点演算は5回に1回しか出てこないのに、平均CPIへの寄与は2で、いちばん大きい。1回が重いと、少ししか出てこなくても全体を引っ張る、ということが数で見えます。
③平均CPIが出たら、あとはふつうのMIPSの計算と同じです。このプロセッサが1GHzで動くなら、
MIPS = 10⁹ ÷ 4.2 ÷ 10⁶ ≒ 2.38×10⁸ ÷ 10⁶ ≒ 238MIPS
計算を始める前に、割合の合計が1(100%)になっていることを必ず確かめてください。 50 + 30 + 20 = 100 なので、この例は大丈夫です。ここが合っていないと、以降の計算は全部ずれます。問題文で割合が1つ伏せられていて、残りから逆算させる出題もあります。
もうひとつの検算として、平均CPIは必ず、いちばん小さいCPIといちばん大きいCPIのあいだに入ります。この例なら2〜10のあいだです。4.2 はその中に収まっているので、形としては正しい。もし12のような値が出たら、どこかで計算を間違えています。
FLOPS:小数の計算を1秒間に何回できるか
FLOPS(FLoating-point Operations Per Second、フロップス)は、浮動小数点数の演算を1秒間に何回できるかを表します。
MIPSが「命令の数」を数えるのに対し、FLOPSは小数の計算だけを数えます。
なぜ「小数の計算」だけを数えるのか。 整数の足し算に比べ、小数の計算は手順が多く、プロセッサ(計算と命令の実行を受け持つ部品)にとって重い処理だからです。浮動小数点数(小数を「符号・指数部・仮数部」の3つに分けて表す形式)は、足し算ひとつでも桁をそろえる作業が要ります。
天気予報のシミュレーションや構造計算、機械学習(大量のデータから規則を見つけさせる方法)の学習処理では、仕事のほとんどがこの小数の計算です。そういう用途では「1秒間に何命令こなせるか」より「1秒間に小数の計算を何回できるか」のほうが、実際の速さに近い数になります。スーパーコンピュータの性能が、ほぼFLOPSで語られるのはこのためです。
数が大きくなるので、接頭語を付けて使います。
| 表記 | 1秒間の演算回数 |
|---|---|
| MFLOPS | 100万回(10⁶) |
| GFLOPS | 10億回(10⁹) |
| TFLOPS | 1兆回(10¹²) |
| PFLOPS | 1000兆回(10¹⁵) |
接頭語の意味はMIPSやクロック周波数と同じで、M(メガ)が10⁶、G(ギガ)が10⁹、T(テラ)が10¹²、P(ペタ)が10¹⁵です。3桁ずつ上がっていきます。
3つの使い分け
| 指標 | 数えるもの | 向き |
|---|---|---|
| CPI | 1命令あたりのクロック数 | 小さいほど速い |
| MIPS | 1秒あたりの命令数 | 大きいほど速い |
| FLOPS | 1秒あたりの浮動小数点演算回数 | 大きいほど速い |
どれも万能ではありません。MIPSは「命令を何個こなしたか」しか見ていないので、1命令で多くの仕事をするプロセッサが不当に低く出ます。実際の速さは、動かすプログラムによって変わります。そのため実務では、決まったプログラムを実際に走らせて時間を測るベンチマークが使われます。
試験ではこう出る
科目A(旧・午前)では、計算問題として確実に出ます。出方は3通りです。
- クロック周波数とCPIからMIPSを求める(割るだけ)
- 命令数・CPI・クロック周期から実行時間を求める(掛けるだけ)
- 命令ミックスから平均CPIを求め、そこからMIPSを出す(加重平均 → 割り算)
いちばん間違えやすいのはCPIを掛けるか割るかです。MIPSを出すときは割る、実行時間を出すときは掛ける。「速さを出すなら割る、時間を出すなら掛ける」と対応で覚えてください。
単位の取り違えも定番です。GHzは10⁹、MIPSは10⁶、ナノ秒は10⁻⁹。選択肢には1000倍ずれた値がほぼ必ず混ざっています。
FLOPSは、応用情報で「MIPSとの違いは何か」という形で問われます。浮動小数点演算だけを数えるという点を押さえておけば足ります。
関連する用語
- クロック周波数
- 1秒間に刻む拍の数。これとCPIの両方がないと速さは出せない
- プロセッサ
- 命令を取り出して実行する部品。その速さを数で表したのがCPIやMIPS
- プロセッサの高速化技術
- パイプラインなど。CPIを1に近づけるための工夫
ミニクイズ
クロック周波数が2GHz、CPIが4のプロセッサの性能は何MIPSか。
正解は 1番:500MIPS
1命令に4拍かかるので、1秒間にこなせる命令数は 2×10⁹ ÷ 4 = 5×10⁸ 命令です。MIPSは100万命令単位なので 10⁶ で割って500MIPSとなります。8,000MIPSはCPIを掛けてしまった値、2,000MIPSはCPIを無視してクロック周波数だけで出した値、250MIPSはCPIを8として計算した値です。CPIで割る、と覚えてください。
この分野をまとめて解く → コンピュータ構成要素とハードウェアのミニテスト(全33問)
最終更新:2026-10-12