「CPUのパイプラインやスーパースカラとは」の版間の差分
(ページの作成:「CPUの内部で行われいる処理には、パイプライン(pipeline)、スーパースカラ(supersclar,スーパースケーラ)、アウトオブオーダー...」) |
(相違点なし)
|
2015年5月10日 (日) 11:57時点における最新版
CPUの内部で行われいる処理には、パイプライン(pipeline)、スーパースカラ(supersclar,スーパースケーラ)、アウトオブオーダー実行(O-o-O,OoO)などいろいろな用語が出てきます。
読み方
- パイプライン
- ぱいぷらいん
- スーパースカラ
- すーぱーすから
- アウトオブオーダー
- あうとおぶおーだー
概要
CPUは、処理を効率化するために、処理をステージに分割し、それぞれのステージを並列に実行します。これをパイプラインと呼びます。スーパースカラーは、さらに複数のパイプラインを持つことで、同時に実行できる命令を増やします。データ待ちなどにより、並列実行の効率が落ちないように、アウトオブオーダー実行を利用して、効率的に命令が実行できるようにします。
CPUの仕事
CPUの内部処理は、以下の通りです。
- フェッチ
- メモリから命令を取り出す
- デコード
- 命令を解釈
- エグゼキュート
- 命令の実行
- ライトバック
- 結果の書き出し
パイプライン
古い世代のCPUでは、上記のCPUの仕事を1つのユニットが実行していました。1クロックで1つの工程が行われると、1つの処理は、4クロックかかることになります。
i386のCPUでは、4つの処理の工程を、それぞれ別の専用ユニットで分担するように設計されています。フェッチユニットは、デコードユニットにデータを渡すと、次のフェッチを開始します。
すべての処理が1クロックで完了する前提で以下の図を書いています。各工程(ステージ)を流れ作業のように処理していく技術をパイプラインと名づけました。
クロック 1 2 3 4 5 6 フェッチ a b c d デコード a b c d エグゼキュート a b c d ライトバック a b c d
a,b,c,dは、命令です。
スーパースカラ
Pentiumでは、パイプラインを2つ持ちました。それぞれのパイプラインは、異なる命令を同時に実行できます。この機能は、スーパースカラ(super scalar)と呼ばれます。
クロック 1 2 3 4 5 6 フェッチ a b c d フェッチ w x y z デコード a b c d デコード w x y z エグゼキュート a b c d エグゼキュート w x y z ライトバック a b c d ライトバック w x y z
MMX Pentiumでは、パイプラインのデコードステージが1段増え、MXX命令用に2本のパイプラインが用意されました。
アウトオブオーダー実行
アウトオブオーダー実行はパイプラインを詰まらせなくするための技術です。
スーパーパイプライン
通常のパイプラインは、4ステージから5ステージです。スーパーパイプラインは、7-10,多いものでは、20ステージになります。スーパーパイプラインでは、各ステージを構成する回路が簡略化されるため、CPUの実行速度の高速化にもつながります。
Pentium Proでは、各ステージが細かく分割され、12段階になりました。細分化されたパイプラインは、スーパーパイプラインと呼ばれます。