遅延分岐 【delayed branch】

概要

遅延分岐(delayed branch)とは、CPUの命令実行を高速化する仕組みの一つで、分岐命令の直後に分岐先に関係なく実行する命令を実行し、分岐によってパイプライン処理に無駄が生じるのを防ぐこと。

パイプライン処理では複数の命令を同時に実行状態に置くことで実行効率を高めるが、条件分岐命令が存在する場合、その次にどの命令を実行するかは条件の評価がわれるまで確定しないため、パイプラインに投入する命令列に空白が生じる「制御ハザード」(分岐ハザード)が起きる。

遅延分岐を採用したCPUでは、パイプライン内で条件分岐命令の直後に当たる位置(これを遅延スロットという)には分岐先の如何に関わらず必ず実行される命令をいくつか置いておき、分岐先が確定したら分岐先の命令をパイプラインに詰めていく。

分岐先が確定するまでの時間は分岐と無関係な命令の実行に費やされるため、分岐先がどこであっても実行時間が無駄になることはない。プログラムによっては遅延スロットに詰める命令が用意できない場合もあるため、何もしないNOP命令を実行する(その分の時間は無駄になる)。

プログラム上の(本来の)命令の並び順では分岐命令の次の命令が分岐しない場合に実行する命令となるため、遅延分岐を利用する場合はコンパイラが命令の並び順を変更し、分岐命令遅延スロットの長さ(パイプラインステージの数)の分だけ手前に移動するといった処理をう。

(2023.11.16更新)
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる