非同期パイプラインは非同期回路で使う。その場合のパイプラインレジスタは非同期に駆動される。一般にステージ間で要求メッセージと応答メッセージをやり取りして処理を進める。例えば、あるステージで処理が完了したとき、次のステージから要求メッセージが来ていたら、応答メッセージを返し、前のステージには要求メッセージを送る。あるステージが応答メッセージを受け取ったら、入力レジスタから読み込むことができ、処理を開始できる。
バッファのないパイプライン.
最大処理速度は、データを投入できる間隔で決まる。それより短い間隔でデータを投入すると、波が互いに干渉するように結果が不正になる。
命令パイプライン.
以下、CPUの内部処理を説明するため、以下の略語を用いる。
概要.
これらのユニットを有効利用するために、ユニット間にフリップフロップを挿入して分割し、クロック毎に各ユニットが独立して動作できるようにした上で次々に命令を投入・並列実行する方式をパイプライン処理と言う。これにより各ユニットのハードウェア資源を有効に活用することができ、処理速度が向上する。
パイプラインハザード.
パイプライン処理を行う場合にも、複数の命令同士が持つ依存関係から命令の投入を中断せざるを得ない状況が生じうるが、これをパイプラインハザードと呼ぶ。ハザードが発生すると処理速度の低下に繋がる。
パイプラインハザードの種類.
データ・ハザード.
処理するデータの依存関係に起因するハザードである。
データ・ハザードを防止するためには、プログラムをコンパイルする際などに、プログラムの内容に影響のない範囲でCPUに送る命令の順序を調整して、データ・ハザードが起きにくいようにする必要がある。また、ハードウェアによって、データを書き込むのと同時にパイプラインに投入することによってデータ・ハザードを軽減する方法もある。
構造ハザード.
ハードウェア的な資源の競合に起因するハザードである。
制御ハザード（分岐ハザード）.
制御の依存に起因するハザードである。
分岐命令がある場合、結果によって次に実行するべき命令がわからないため、パイプラインを止めて次に実行すべき命令が判明するのを待たなければならない。これを制御ハザード、または分岐ハザードという。MA→IFのステージに関係する。