概要
今回はCPUの代表的な高速化手法について。
CPUの代表的な高速化手法は以下の通り。
・パイプライン
・スーパーパイプライン
・スーパースカラ
・マルチプロセッサ
・分岐予測と投機実行
・マルチコアプロセッサ
・VLIW(Very Long Instruction Word)
逐次制御方式(高速化なし)
![](/webpage/img/00_NewsImgSet/43/0081.jpg)
画像クリックで等倍
特に高速化をせず
命令を一つずつ開始から完了まで行うのが「逐次制御方式」。
一番シンプルだが実際には
CPUの各部品がほとんど休んでいることが多い。
パイプライン
![](/webpage/img/00_NewsImgSet/43/0082.jpg)
画像クリックで等倍
一つの命令を各ステージごとに分けて、
複数の命令を並列的に実行する方式。
スーパーパイプライン
![](/webpage/img/00_NewsImgSet/43/0083.jpg)
画像クリックで等倍
「パイプライン」をさらに細かいステージに分ける方式。
スーパースカラ
![](/webpage/img/00_NewsImgSet/43/0084.jpg)
画像クリックで等倍
「パイプライン」そのものの本数を増やす方式。
分岐予測と投機実行
![](/webpage/img/00_NewsImgSet/43/0085.jpg)
画像クリックで等倍
条件によって分岐する処理について、
どの分岐に進むのかを予測するのが「分岐予測」
その分岐予測に基づいて、
先んじて命令を実行するのが「投機実行」。
「分岐予測」の結果が間違っていた場合、それによって行われた「投機実行」は
丸々破棄されるため、「分岐予測」の精度を高めることで無駄な「投機実行」をしないようにしている。
マルチプロセッサ
![](/webpage/img/00_NewsImgSet/43/0086.jpg)
画像クリックで等倍
CPUそのものの数を増やす方式。
別々のCPUで同じメモリを共有する場合
「密結合マルチプロセッサ」、各CPUごとに異なるメモリを使う場合
「疎結合マルチプロセッサ」と言う。
マルチコアプロセッサ
![](/webpage/img/00_NewsImgSet/43/0087.jpg)
画像クリックで等倍
CPU内のコアの数を増やす方式。
VLIW(Very Long Instruction Word)
![](/webpage/img/00_NewsImgSet/43/0088.jpg)
画像クリックで等倍
特に依存関係のない複数の命令を一つにまとめ、それらを分割し複数の演算ユニットで実行する。
特に依存関係がないため複数の演算ユニット間で
分岐予測や依存関係を意識する必要がないため、CPUの開発が容易になる反面、CPUの設計により最適化された翻訳が必要になるためプロセッサの開発が大変になる。
パイプラインのハザード
パイプライン処理は何らかの要因によって「待ち」が入り込み、その待ちによってパイプラインが乱れることがある。
その
パイプラインの乱れを「ハザード」という。
制御ハザード
分岐予測の予測失敗など、
分岐にかかわるハザード。
データハザード
前の命令の結果を待つことによるハザード。
構造ハザード
ハードウェアの競合によるハザード。