遅延スロット
ステップ実行の場合、分岐遅延のステップ実行においては分岐遅延スロットの命令まで含めてまとめて実行し、ステップ実行後にプログラムカウンタが指し示すアドレスとしては分岐命令のターゲットアドレスになるようにするか、もしステップ実行で分岐遅延スロットでも命令境界でステップ実行するようにするなら、分岐遅延スロットからの実行再開後、該当する分岐命令のターゲットアドレスに分岐するように単なるステップ実行とは区別した動作が必要となる。
分岐遅延スロット数は、パイプラインの段数、レジスタ・フォワーディングの有無、分岐条件が計算されるのがパイプラインの何段目か、分岐先予測を行っているかなどの様々な要素が影響する。バイナリ互換を保つには、分岐遅延スロット数を変更することはできない。従って、技術の進歩によって遅延スロットが不要となっても、それを維持し続けることになる。
遅延スロットの存在は高パフォーマンスを保つ実装を複雑化させることを意味し、例えば RISC-V においてはオプションで分岐遅延スロットを持つ OpenRISC の設計と異なり、これを条件コードとともに廃することを選択している。
遅延スロットは高パフォーマンスを保つ実装を複雑化させるだけでなく、割り込み受付機構も複雑化させる。デバッガで遅延スロットにブレークポイントを設定する場合や、ステップ実行をする場合、分岐遅延スロットに対して特殊な取り扱いが必要になるのと同様割り込み受付機構とCPUにて制御が複雑化する。
遅延スロット(ちえんスロット)またはディレイスロット(英: Delay slot)は、直前の命令が効力を発揮する前に実行される命令のスロット(位置)を指す。最も典型的な形態としては、RISCやDSPアーキテクチャでの分岐命令(遅延分岐)の直後の位置の命令がある。この命令は分岐が実際に行われる前に実行される。従って、その命令は(その場所が遅延スロットであることを理解していないと)無意味な位置にあるように見える。アセンブラは一般に自動的な命令の並べ替えを行い、コンパイラやプログラマが遅延スロットを気にせずにコードを書けるようにしている。