分岐命令

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

分岐命令(ぶんきめいれい)は、プロセッサ命令の一種である。ジャンプ命令ともいう。条件ジャンプ命令と無条件ジャンプ命令があり、厳密には「分岐」するのは条件ジャンプであって無条件ジャンプは「分岐」と言えないかもしれないが、特に区別しないことが多い。サブルーチン呼出や戻りの命令も分岐命令の一種とすることもある。

一般的なプロセッサでは、機械語の命令列はアドレスの昇順に逐次実行されるが、分岐命令が実行されると次に実行される命令が切り替わる。高水準言語コンパイラは、条件文Goto文サブルーチンなどの制御構造から分岐命令を生成する。

分岐命令は引数として少なくともターゲットアドレスを持つ。ターゲットアドレスとは、分岐命令が実行される時、プログラムカウンタに代入される値である。元来、分岐命令が実行された直後に実行される命令は、ターゲットアドレスに配置された命令であった。

しかし、増え過ぎたパイプライン段数に伴って肥大化した分岐命令実行ペナルティを少しでも軽減するため、遅延分岐方式を採用したCPUもある(MIPSSHSPARCなど)。遅延分岐方式では、分岐命令が配置されたアドレスに後続するアドレスに配置された命令(ディレイスロットにある命令)を実行してから、ターゲットアドレスに配置された命令に制御を移す。RISCでは比較的採用例が多い遅延分岐方式は、1986年NECから発表されたμPD77230、1988年TIから発表されたTMS320C30、などに見られるように当初DSPによって採用されていた。ディレイスロット(にある命令)の数は、μPD77320の場合で 1 、TMS320C30の場合で 3 であった。大多数のRISCのディレイスロットは 1 である。

パイプライン処理では命令のフェッチが重要であり、分岐予測が用いられることがある。分岐予測は失敗時のコストが大きいので、これを減らすために投機的実行などの技術が用いられる。

ARMIA-64では、全ての命令を条件実行命令として、分岐命令の必要性を低減しパイプラインストールの可能性を低くする工夫をしている。

関連項目[編集]