---
# System prepended metadata

title: 'Chapter5-5,5-6　「CPUの性能指標」「CPUの高速化技術」'
tags: [基本情報技術]

---


# Chapter5-5,5-6　「CPUの性能指標」「CPUの高速化技術」
##  4/29(木) 
###### tags:`基本情報技術`


皐月：
### Chapter5-5
#### CPUの性能
1. クロック周波数...クロックが１秒間に繰り返される回数のこと。
* コンピュータ内部の色々な装置は、「クロック」と呼ばれる周期的な信号にあわせて動いている。
→装置同士がタイミングを合わせることができる。
* １周期の間隔が短いほど、繰り返し処理も早くなる。→性能が高い。
* クロック周波数1GHzのCPU...1秒間に10億回振動している。
* 1クロックに要する時間は、10の-9乗秒

> わたしのMacは1.4GHzだ。。
2. CPI...Clockcycles（クロックサイクル） Per（/） Instruction（命令）
> 命令の実行に2クロックサイクル必要なら、2CPI。
> 4クロックサイクル必要なら、4CPI。
> クロックサイクル数が小さい方が、より多くの命令を処理できるということなので、高速と言えます。

3. MIPS...Million（百万） Instruction（命令） Per（/） Second（秒）
* １秒間に実行できる命令の数
* 数字が大きい方が、たくさん命令が処理できる。
* 100MIPS、20MIPSなど
5. 命令ミックス
 * よく使われる命令を、ひとつのセットにしたものです。

#### 過去問
* 問1 計算！　
    * [トランザクション](https://qiita.com/zd6ir7/items/6568b6c3efc5d6a13865)
* 問2 計算！
* 問3 計算！
* 問4 計算！
> 解説みる。

### Chapter5-6

#### パイプライン処理...出番待ちという無駄をなくす
* 処理が終わってバトンタッチしたら、次の処理にうつる。
* 次から次へと命令の先読みを行なっているので、分岐命令がでてきたときは、先読み文が無駄になってしまうことがある。これを分岐ハザードという。

#### 分岐予測と投機実行
* 処理というのは、えてして条件分岐が発生する。
* 分岐結果が明確にならなければ、次の命令を処理開始できないのは困る。
* 「これまでの経験から、たぶんこれだろう。だから処理はこっちだろう」と予測するのが、分岐予測。
* 「あとあと無駄になるかもしれないけど、多分これだから先にやっておこう」というのが投機実行。

> 予測がはずれだったらまるまる無駄。
> いかに精度の高い分岐予測ができるかが鍵。
#### スーパーパイプラインとスーパースカラ
* スーパーパイプライン
    * 各ステージ（命令の読み取り、命令の保存など、各処理フェーズ）を、さらにこまかいステージに分けることで、効率アップをはかるもの。
* スーパースカラ
    * 　パイプライン処理を行う回路を複数持たせることで、まったく同時に複数の命令を実行できるようにしたもの
#### CISCとRISC
CPUのアーキテクチャ
* CISC...Complex Instruction Set Computer
    * 高機能な命令を持たせることによって、一つの命令で複雑な処理を実行できるアーキテクチャ
* RISC...Reduced Instruction Set Computer
    * CPU内部に単純な命令しか持たないかわりに、それらをハードウェアのみで実装して、ひとつひとつの命令を高速に処理するアーキテクチャ。

ちさと：
* CPUの性能を表す指標値
    * クロック周波数
        * チクタクという一周期が短かければ短いほど多くの処理ができる
        * 1秒間に繰り返される回数を「クロック周波数」という
        * 単位はHz
        * 1クロックに要する時間（クロックサイクル時間）を求めるには、1秒 / クロック周波数
    * CPI（Clock Cycles Per Instruction）
        * 「１命令で何クロックサイクル時間必要か」を表す
    * MIPS（Million Instructions Per Second）
        * 「１秒間に実行できる命令の数」
    * 命令ミックス
        * CPUの命令実行手順は「命令の取り出し」→「命令の解読」→「対象データ読み出し」→「命令実行」
        * 仮に「対象データ読み出し」が必要ない命令があれば、この手順は必要ない　＝　必要となるクロックサイクル数が異なる
        * そういう時のために使われるのが命令ミックス（よく使われる命令をひとまとめにしてる）
    
* 過去問
    * 問１〜問４：計算問題いろんなのやって慣れないとだ…苦手

* CPUの高速化
    * パイプライン処理
        * 次から次へと流すように作業する、待ち時間をなくす
    * 分岐予測
        * 「もし〜だったら、〜する」という処理の時は分岐結果が出るまで次の命令の処理ができない。処理が無駄になることを「分岐ハザード」という
        * こういう時に、次の命令を予測して無駄をなくすことを「分岐予測」という
        * この予測をもとにあとあと無駄になるかもだけどやってみっか！と実行することを「投機実行」という
    * スーパーパイプライン、スーパースカラ
        * パイプライン処理をより高速化する
    * CPUのアーキテクチャ（高速化させるための思想）
        * CISC：CPUに高機能な命令を持たせることで、ひとつの命令で複雑な処理を実現するアーキテクチャ
        * RISC: CPUに単純な命令しか持たない代わりに、それらをハードウェアのみで実装してひとつひとつの命令を高速に処理する

にわ：
- chapter 5-5
- 読み込み
    * CPUの性能はクロック周波数、CPI、MIPSなどの指標で評価される
    * クロック周波数：クロックが１秒間に繰り返される回数のこと。単位はHz
        * コンピュータの装置が動くタイミングを「クロック」という周期的信号に合わせてる
        * 4HzのCPUは１秒間に4回クロックを繰り返す。ので、１クロック0.25秒かかる。->１クロックにかかる秒数を「クロックサイクル」という
    * CPI：Clock cycles Per Instruction、１命令あたり何クロックサイクル必要かを表す。
        * 1GHzのCPUで3CPIの場合、クロックサイクルは 1 / 10の9乗 秒（=1ナノ秒）->これが３クロック必要なので、命令実行時間は3ナノ秒
    * MISP：Million Instructions Per Second、１秒間に実行できる命令の数。
    * 命令ミックス：よく使われる命令をセットにしたもの。命令の出現頻度をもとに命令実行時間を割り出したりする。
- 過去問
    * 問１：ほ〜なるほど　解説読んで理解
    * 問２：MISPの計算めっちゃ大変・・・
    * 問３：数値の変換がややこしい・・・w
    * 問４：マイクロとナノを覚えてるか問題な気がする
- chapter 5-6
- 読み込み
    * 処理効率を高めるために、複数の命令を並行して実行する手法を「パイプライン処理」という。
        * パイプライン処理では命令を先読みしてやってるので、分岐が出てくると分岐結果が明確になるまで次に進めなかったりする（=「分岐ハザード」）。
        * そこでアタリをつけて分岐結果を予測することを「分岐予測」という。
        * で、その予測に基づいて分岐先の命令を実行しちゃうのを「投機実行」という。（予測なので精度の高さが大事）
    * もっと処理を高速化するための手法として「スーパーパイプライン」「スーパースカラ」がある。
        * スーパーパイプライン：各ステージの中身を細分化して並行して処理できる範囲を増やす。
        * スーパースカラ：パイプライン処理を行う回路を複数持つことでめっちゃ並行して実行できる！
    * CPUのアーキテクチャ（設計思想）には「CISC」「RISC」がある。
    * CISC（Complex Instruction Set Computer）：高機能な命令を持たせることで、１命令で複雑な処理ができる。
    * RISC（Reduced Instruction Set Computer）：単純な命令を持たせて処理を早くする。
