パイプライン
読み:パイプライン
外語:pipeline

 マイクロプロセッサーの命令実行を幾つかの段階に分割し、それぞれの段階で独立して命令を実行できるよう工夫した技術のこと。
目次

概要
 古くは8086の時代から使われてきた。マイクロプロセッサーにおいて各処理を細分化して処理すると、動作周波数を上げやすくなる効果がある。
 具体的には、命令フェッチ(命令の取り込み)、命令デコード(解釈)、実行、結果の反映などに分けられ、このそれぞれを「ステージ」と呼ぶ。
 そして、それぞれが独立に動作することにより平行して次々と命令の処理が可能となり、処理速度の向上を実現できる。さらに、このステージを細かく分割することで、より効率的な処理を実現することができる。

技術

超多段のパイプライン
 最近のマイクロプロセッサーはパイプラインを細かく分け、処理の高速化に役立てている。
 例えば、Intelのプロセッサーの場合、i486Pentiumでは5ステージ、MMX Pentium では6ステージで構成されているが、Pentium 4はNorthwoodコアで20ステージ、Prescottコアに至っては31ステージにもなっている。
 このようにパイプラインが深いアーキテクチャーを「スーパーパイプライン」という。また、20ステージを超える極端なパイプラインを採用したPentium 4では「ハイパーパイプライン」を自称している。

難点
 パイプラインアーキテクチャーというのは、命令が滞らず流れ続けることで性能を稼ぐものである。
 従って、滞らないように工夫して設計されることになるが、完全に滞りを無くすことはできない。この滞りをパイプラインストールといい、ストールの原因となるものをハザードという。
 分岐予測をミスした場合にはパイプライン中で処理中のものをすべて廃棄しなくてはならない。分岐予測は完璧でないため、どうしても失敗が生じ、パイプラインを乱して実行速度を低下させる主要な要因となる。
 分岐予測を失敗させないための対策方法として特徴的な方針を採用したのが32ビットARMアーキテクチャである。ARMでは殆どの命令が条件実行機能を搭載し、条件加算、条件減算など他のCPUにはまず無いような珍しい命令を搭載した。これにより、条件分岐命令自体を減らすことでパイプラインの乱れを減らし、高速実行を可能とした。しかしARMも、64ビットARMアーキテクチャでは分岐以外の条件は廃止された。

再検索