CPUの性能指標【クロック周波数/CPI/MIPS】

# はじめに

基本情報技術者試験の学習中です。
今回はCPUの性能評価について、備忘録としてまとめます。

※CPUはじめコンピュータの5大装置については、下記記事にまとめております。粗記事ですが参考まで…
[5大装置、CPUの役割](https://qiita.com/pli8xxx_yu/items/88c56d955f4a2b65386a)


# CPUの性能を表す指標
**コンピュータの処理能力は、CPUの性能が高速であればあるほど高くなる**と言えます。
CPUの性能を比較するために、下記のような指標値が用いられます。

## 1. クロック周波数
CPUをはじめコンピュータ内の各装置は、装置同士が動作のタイミングを合わせられるよう、周期的な信号を元に動くこととなっています。
この信号を**「クロック」**と呼びます。(オーケストラの指揮者のイメージだと思っています)

`1周期 = 1クロック`　という単位です。

この信号の周期に合わせて動くということは、同じ時間でも周期が短ければ短いほど、多くの処理が可能となり、性能が高いと言えます。

### 1-1. クロック周波数

この、**クロックが1秒間に繰り返される回数のことが「クロック周波数」**です。(単位は`Hz:ヘルツ`)

**【計算例】**
「クロック周波数1G(ギガ)Hz」という場合は

$$1G = 10^{9} = 1,000,000,000$$

ですので、1秒間に10億回の信号が送られている、ということになります。

### 1-2. クロックサイクル時間
また、**1クロックあたりの所要時間を「クロックサイクル時間」**と言います。

**【計算例】**
上記の1GHzのCPUですと、10億回の信号発信に1秒かかるということなので

$$1(秒)/10^{9}(回)　= 10^{-9} = 1n$$

クロックサイクル時間は1n(ナノ)秒、ということになります。


## 2. CPI:Clock cycles Per Instruction
その名の通り「クロックサイクル・/(パー)・命令」、**「1命令あたりに必要なクロックサイクル数」**を表す指標です。
例えば、
1命令の実行に2クロックサイクルが必要　→　2CPI
1命令の実行に4クロックサイクルが必要　→　4CPI
という具合に表現出来ます。

**CPIの値が小さい方が、1つの命令にかかるクロックサイクルが少なくて済むということであり、より多くの命令を高速に処理できる**と言えます。

クロック周波数から求められるクロックサイクル数とCPIを用いることで、**命令の実行時間**を計算出来ます。

**【計算例】**
1GHzのCPUが命令の実行に3クロックを要する(3CPI)場合、クロックサイクル時間は1n秒でしたので

$$1n(秒) × 3(クロック) = 3n(秒)$$

命令実行時間は3n秒、ということになります。


## 3. MIPS(ミップス):Million Instructions Per second
こちらは「100万・命令・/(パー)・秒」、**「1秒間に実行できる、百万単位の命令数」**を表します。
※数値が大きく0が多いので、百万(×$10^{6}$)単位で表します。

例えば、
20MIPS　→　1秒間に**20**00万個の命令を実行できる
100MIPS　→　1秒間に**100**00万個の命令を実行できる
という様に言います。

**MIPSの値は大きい方が、1秒間に実行できる命令数が多いということであり、処理が高速である**と言えます。

命令実行時間からMIPS値を求めることが可能です。

**【計算例】**
平均命令実行時間が20n秒の場合、
1つの命令に20n秒かかるということなので、このCPUのMIPS値は

$$1(秒)/20^{-9}(秒)　= 0.05×10^{9} = 50×10^{6}$$

上記から50MIPSと求められます。

## 命令ミックス
一口に「命令」とは言っても、種類によって実行に必要なクロックサイクル数は異なります。
(例えば、データの読み出しと演算では行われる処理が変わるのは、何となくイメージができるかと思います)

そこで、**よく使われる命令を一つのセットにし、各命令の実行時間と出現率をから、命令の実行に要する平均時間を計算するのが「命令ミックス」**です。
実際のプログラムでは何種類もの命令が集まっているため、各性能指標の算出時にもまず命令ミックスを行う場合があります。


ちなみに標準的な命令ミックスとして、科学技術計算で用いられる**「ギブソンミックス」**、事務計算などに使われる**「コマーシャルミックス」**の２種類があります。(解説は今回は省略させていただきます)

## 性能指標の関連性
3つの性能指標を中心にまとめると、下図の様になります。

![CPUseinou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/813419/0a6ac7e8-8982-a3f3-a78f-16bb4de70822.png)

クロック周波数、クロックサイクル時間はそれぞれ、どちらかの値が分かっていれば求めることが可能です。

- クロック周波数から１クロックサイクル毎の時間を計算→クロックサイクル時間
- クロックサイクル時間を1秒毎に換算→クロック周波数

という具合です。

また、命令実行時間の計算は以下の２パターンになります。

- クロックサイクル時間×CPI(１命令に必要なクロックサイクル数)
- MIPS値(1秒間の命令数)から1命令あたりの時間を算出

また、MIPS値は命令実行時間を1秒換算すると求めることが出来ます。

# 終わりに/感想

「命令」の文字に絶賛ゲシュタルト崩壊中です…

学習中にこの3つの指標の関係性が理解出来ずつまずいていましたが、
自分で記事や図にまとめることでスッキリしました。

初学者で拙い記事ですが、少しでもお役に立てると嬉しく思います。
最後まで読んでいただき、誠にありがとうございました。



## 参考文献・記事
[キタミ式イラストIT塾 基本情報技術者 令和2年/きたみりゅうじ 技術評論社
](https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E4%BB%A4%E5%92%8C02%E5%B9%B4-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4297110210)
[CPU の 性能とは /パソコン ハードウェア 初心者の館](https://pcsyosinsya.com/CPU.htm#ht)
[略語でわかる MIPS の計算方法｜かんたん計算問題 /基本情報技術者試験受験ナビ](https://www.seplus.jp/dokushuzemi/fe/fenavi/easy_calc/mips/)
[「厳選5題」過去問と解説 | 平成30年度 秋期 の過去問やるならこれをやれ /基本情報技術者試験受験ナビ](https://www.seplus.jp/dokushuzemi/fe/fenavi/kakomon-gensen/h30_autumn/#_2)