CPI
1つの命令を実行するのに必要な、CPUのクロックの数(サイクル数)。プログラムの実行時間は、命令数 × 平均CPI ÷ クロック周波数 で求められる。
イマシルちゃんの解説
CPUは、心臓の鼓動みたいに、一定のリズムで動いているんだ。
かんたんな命令なら、2拍くらいで終わるけど、
むずかしい計算の命令は、5拍もかかったりするんだよ。
1つの命令に何拍かかるかがわかれば、プログラム全部を動かすのに、どれくらい時間がかかるかを計算できるんだ。
より深い解説
定義
CPI(Cycles Per Instruction)は、1命令あたりの平均クロックサイクル数である。クロック周波数は、1秒あたりのクロックの数で、1GHzなら1秒に10⁹回、1クロックの時間(クロックサイクル時間)は1ナノ秒になる。
実行時間の求め方
実行時間 = 命令数 × 平均CPI × クロックサイクル時間
= 命令数 × 平均CPI ÷ クロック周波数
命令の種類ごとにCPIが違う場合は、出現する割合(構成比率)で重み付けした平均をとる。
平均CPI = Σ(命令の種類ごとのCPI × 構成比率)
計算例
| 命令の種類 | CPI | 構成比率 |
|---|---|---|
| ロード・ストア | 4 | 25% |
| 分岐 | 3 | 25% |
| 整数演算 | 1 | 50% |
- 平均CPI = 4 × 0.25 + 3 × 0.25 + 1 × 0.5 = 1 + 0.75 + 0.5 = 2.25
- 2,000,000命令を、クロック周波数 500MHz のCPUで実行すると
- 実行時間 = 2,000,000 × 2.25 ÷ 500,000,000 = 0.009秒 = 9ミリ秒
単位をそろえるのがポイントで、GHzは10⁹、MHzは10⁶として計算する。
MIPS
MIPS(Million Instructions Per Second)は、1秒間に実行できる命令の数を、百万単位で表した性能の指標である。
MIPS = クロック周波数 ÷ 平均CPI ÷ 10⁶
上の例では、500,000,000 ÷ 2.25 ÷ 10⁶ ≒ 222 MIPS となる。
性能を上げる方法
| 方法 | 効果 |
|---|---|
| クロック周波数を上げる | 1クロックの時間が短くなる |
| CPIを下げる | パイプライン、スーパースカラなどで、1クロックあたりに処理できる命令を増やす |
| 命令数を減らす | コンパイラの最適化、効率のよいアルゴリズム |