条件ジャンプ
読み:じょうけんジャンプ

 マイクロプロセッサーの持つジャンプ命令のうち、ジャンプ条件が付けられているもの。指定したフラグが指定した内容の時にジャンプし、さもなくば何もしない、という機能を持つ。
目次

特徴

実装方法
 条件ジャンプの実装においては、大きくブランチ型とスキップ型に分けられる。

ブランチ型
 ブランチ型というのは、比較条件に応じ、指定したアドレスへジャンプする設計をいう。
 Intelの8080系やx86系その他、大半のプロセッサーはこの設計である。
 豊富な比較命令と豊富なジャンプ命令が揃えられるのが一般的である。

スキップ型
 スキップ型というのは、比較条件に応じ、その比較命令に続く命令を実行せずに飛ばす(スキップする)設計をいう。
 PICや、かつてのNECのワンチップマイコンμCOM87系で、これが採用されている。
 比較命令はブランチ型と大差なくても、ジャンプ命令は無条件一つのみで済むため、命令数の削減が可能である。

ブランチの方法
 ブランチ型の場合、ブランチのさせ方によって、大きく二つに分けられる。
  1. 分岐命令で条件を指定する方法
  2. 比較命令で条件を指定する方法
 前者は、比較命令は少なく済むが分岐命令は多数必要で、時間のかかる分岐命令が更に低速となる問題がある。但し、一つの比較命令で複数のジャンプが利用出来ることがある。
 後者は、比較命令が多く必要となるが、分岐命令はtrueかfalseかの二つだけで済むため、高速に処理できる。

分岐命令で条件を指定する方法
 多くのプロセッサーは、前者、分岐命令で条件を指定する方法を採用している。これは、演算命令や比較命令でゼロフラグキャリーフラグ、サインフラグなどを立て、分岐命令でどのフラグを参照するかを指定する方法である。
 例えば、8086シリーズでは、次のようにする。
 cmp ax,bx
 jne HOGE
 axレジスターとbxレジスターが一致すればゼロフラグが立つ。次の命令では、ゼロフラグが立っていない(ne=not equal=不一致)場合に、HOGEにジャンプする。

比較命令で条件を指定する方法
 SuperHなどは、後者、比較命令で条件を指定する方法を採用している。
 条件を格納するフラグは、Tフラグただ一つしかない。また、演算命令などでは多くの場合変化せず、比較命令でのみ変化する。これは、演算処理を高速化させる意味もある。
 例えば、SuperHシリーズでは、次のようにする。
 cmp/eq r0,r1
 bf HOGE
 r0レジスターとr1レジスターが一致すれば、Tフラグがセットされる。次の命令では、Tフラグがセットされていない(branch if false)場合に、HOGEにジャンプする。

パイプライン
 スーパーパイプラインマイクロプロセッサーの場合、条件ジャンプによるパイプラインの乱れが高速化に対する大きな課題である。
 高速化のために分岐予測など様々な技術が作られているほか、遅延スロット(遅延分岐命令)という解決方法を取るプロセッサーもある。

再検索