フォワーディング/バイパス
演算結果を、レジスタファイルへの書き戻しを待たずに、生成した実行ユニットから必要とする命令へ直接送る技法。データハザードを解消し、ストールを避ける最も一般的な方法。
問題はこうだ。フォワーディングがないと、結果を必要とする命令は、直前の命令が完全に終わってレジスタファイルに値を書き込み、そこから読み出せるようになるまで待たなければならず、数サイクルが無駄になる。フォワーディング(バイパスとも呼ぶ)はハードウェアに近道を作る。ALUが値を計算した瞬間に、レジスタへの書き込みと並行して、次の命令の入力へ直接渡せるようにするのだ。その結果、すぐ後ろに続く命令どうしのRAW依存でも、待ちがまったく生じないことが多い。
すべての実行ユニットの出力をすべての入力につなぐ「フォワーディングネットワーク」は、コアのなかでも複雑で、面積と電力を食う部分だが、性能には不可欠である。パイプライン最適化の基本中の基本で、データハザードやパイプラインストールと密接に関わる。