分岐命令

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

分岐命令(ぶんきめいれい)は、プロセッサ命令の一種である。ジャンプ命令ともいう。

機械語の命令列は逐次実行されるが、分岐命令が実行されると次に実行される命令が切り替わる。高級言語プログラムでは、条件文Goto文サブルーチンなどの制御構文の実現に用いられる。

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

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

分岐命令には、ある条件が成り立った場合のみ分岐する条件分岐と、無条件で分岐する無条件分岐がある。

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

また、ARMアーキテクチャIA-64アーキテクチャーでは、全ての命令を条件実行命令とし、分岐命令の必要性を低減しパイプラインストールの可能性を低くする工夫が見られる。

関連項目[編集]