(57)【要約】【課題】サイクル数の増加、命令長の増大を抑え、条件分岐処理を高速化する処理装置の提供。【解決手段】命令セットとして、１つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、１つの前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する複数の条件設定比較部２、３、４と、前記複合条件分岐命令の実行時、複数の前記条件設定比較部２、３、４での比較演算結果と、前記複合条件分岐命令で指定された前記分岐条件値を比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部７とを備えている。【選択図】図１
2007272353.tif 000002
【特許請求の範囲】
【請求項１】
命令セットとして、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、
前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する手段を備えている、ことを特徴とするプロセッサ装置。
【請求項２】
前記条件分岐命令が、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、
前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、複数の前記比較演算の結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、１つの複合条件分岐命令で実行できるようにしてなる、ことを特徴とする請求項１記載のプロセッサ装置。
【請求項３】
命令セットとして、１つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、
１つの前記条件を設定する条件設定命令と、
を含み、
前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に、前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する、複数の条件設定比較部と、
前記複合条件分岐命令の実行時に、複数の前記条件設定比較部でそれぞれ行われる比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、
を備えている、ことを特徴とするプロセッサ装置。
【請求項４】
前記条件設定命令は、オペランドに、前記条件設定比較部の指定と、比較演算の種別と、比較演算対象の演算用レジスタのレジスタ、又は、前記演算用レジスタのレジスタと即値データを含む、ことを特徴とする請求項２又は３に記載のプロセッサ装置。
【請求項５】
前記複合条件分岐命令は、オペコードに比較演算の種別を含み、オペランドに、前記分岐条件値と、前記分岐先を含む、ことを特徴とする請求項２又は３に記載のプロセッサ装置。
【請求項６】
前記条件設定比較部において、前記条件設定命令の実行によって設定された条件は、前記条件設定命令のあとに別の条件設定命令が実行され、前記別の条件設定命令によって前記条件設定比較部が再び選択され別の条件に書き換えられるまでの間、保持される、ことを特徴とする請求項３又は４記載のプロセッサ装置。
【請求項７】
前記条件設定比較部は、比較対象の２つの演算用レジスタのアドレス情報を格納する第１及び第２のアドレスレジスタと、即値データを格納する即値レジスタと、比較演算の種別を格納する比較器選択レジスタと、比較器と、前記第１及び第２のアドレスレジスタのアドレスをデコードする第１及び第２のデコーダを備え、
前記条件設定命令の実行により、前記第１及び第２のアドレスレジスタ、又は前記第１のアドレスレジスタ及び前記即値レジスタと、前記比較器選択レジスタの各レジスタの値が設定され、
前記複合条件分岐命令の実行により、前記第１及び第２のアドレスレジスタ、又は前記第１のアドレスレジスタで指定された前記演算用レジスタが読み出され、前記第１及び第２のアドレスレジスタの指定で読み出された２つの前記演算用レジスタの値、又は前記第１のアドレスレジスタの指定で読み出された前記演算用レジスタの値と前記即値データが、前記比較器で比較される、ことを特徴とする請求項３又は４記載のプロセッサ装置。
【請求項８】
前記複数の条件設定比較部の比較演算結果をそれぞれ保存する複数のレジスタを備えている、ことを特徴とする請求項３乃至７のいずれか一に記載のプロセッサ装置。
【請求項９】
前記複合条件分岐判定部は、前記複合条件分岐命令をデコードする命令デコーダからの出力を受け、前記複合条件分岐命令で指定された前記分岐条件値を記憶する第１のレジスタと、比較演算の種類を記憶する第２のレジスタと、
前記複数の条件設定比較部の比較演算結果をそれぞれ保存する前記複数のレジスタの出力と、前記第１のレジスタで指定された分岐条件値に関して、前記第２のレジスタで指定された比較演算を行い比較結果を出力する比較器と、
を備えている、ことを特徴とする請求項８記載のプロセッサ装置。
【請求項１０】
命令デコーダによる前記条件設定命令のデコード結果に基づき、前記条件設定命令で指定された前記条件設定比較部を選択するセレクタを備えている、ことを特徴とする請求項３乃至９のいずれか一に記載のプロセッサ装置。
【請求項１１】
前記命令デコーダでデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納するジャンプ先アドレスレジスタと、
前記複合条件分岐判定部から出力された結果の真偽値を受け、真である場合には、前記ジャンプ先アドレスを選択し、偽の場合には、プログラムカウンタの値＋１のアドレスを選択してプログラムカウンタに設定するセレクタと、
をさらに備えている、ことを特徴とする請求項１０記載のプロセッサ装置。
【請求項１２】
プロセッサにおける条件分岐の処理方法であって、
命令セットに、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、
を含み、
前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する、ことを特徴とする条件分岐処理方法。
【請求項１３】
前記条件分岐命令は、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、
前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、複数の前記比較演算の結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、１つの複合条件分岐命令で実行できるようにしてなる、ことを特徴とする請求項１２記載の条件分岐処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令をフェッチ、デコードして実行するプロセッサに関し、特に、複合条件分岐処理の方法と装置とに関する。
【背景技術】
【０００２】
この種の複合条件処理方式として、例えば特許文献１には、複数の命令を並列処理する構成として、複数の比較命令の実行結果の真偽値にしたがって独立に且つ並列にビットをセット／リセット可能なフラグレジスタ手段と、このフラグレジスタ手段の保持内容と、条件分岐命令によって指定されたマスク値とのビット毎の論理積をとる論理積手段と、論理積手段の出力値がゼロであるか否かに応じて前記条件分岐命令の指定する分岐先アドレス又は同命令の次の命令アドレスを、次に実行すべき命令アドレスとして選択する命令フェッチアドレス選択手段を備え、マスク値で指定されたフラグレジスタの各ビット位置のビット状態を複合条件として分岐を実行するか否かを決定する構成が開示されている。
【０００３】
特許文献１記載の並列処理装置においては、比較命令デコーダを複数持つことで、同時に、複数の比較命令を実行し、実行結果を、フラグレジスタに格納しておき、フラグレジスタの状態に応じて条件分岐する。
【０００４】
まず、特許文献１記載の複合条件処理方式について概説しておく。プログラムとして、Ｃ言語によるプログラム、
ｉｆ  （Ｘ＞１  ＆＆  Ｘ＜１０  ＆＆  Ｘ！＝５）  
｛複合条件成立時の処理｝
に対応するアセンブラ命令（コンパイル結果）を例に説明する。なお、Ｃ言語の上記プログラムは、３つの条件  Ｘ＞１とＸ＜１０とＸ！＝５が全て成立している場合には（＆＆はＡＮＤ演算を表す）、次の命令、すなわち｛複合条件成立時の処理｝が実行され、３つの条件のうち１つでも不成立のとき、｛複合条件成立時の処理｝を実行しないように、分岐が行われる。特許文献１によれば、Ｃ言語の上記プログラムのコンパイル結果は以下のようになる。
【０００５】
ＳＬＥ  Ｘ，  １，０    ＳＧＥ  Ｘ，１０，１    ＳＥＱ  Ｘ，５，２
ＢＮＺ  ７，  ＄１
（複合条件成立時の処理）
＄１：  （分岐先の処理）
【０００６】
１つ目の比較命令  ＳＬＥ  Ｘ，  １，０，・・・  において、複合条件の比較演算を行っている。ＳＬＥ比較命令は、“ＳＬＥ  Ａ，Ｂ，Ｃ”形式とされ、ＡとＢを比較し、Ａ＜＝Ｂのとき、フラグレジスタのビットＣ（０〜３ビットのいずれか）を“１”に、そうでない場合、“０”にセットする比較命令である。ＳＧＥ比較命令は、“ＳＧＥ  Ａ，Ｂ，Ｃ”形式とされ、ＡとＢを比較し、Ａ＞＝Ｂのとき、フラグレジスタのビットＣ（０〜３ビットのいずれか）を“１”に、そうでない場合、“０”にセットする比較命令である。ＳＥＱ比較命令は、“ＳＥＱ  Ａ，Ｂ，Ｃ”形式とされ、ＡとＢを比較し、Ａ＝Ｂのとき、フラグレジスタのビットＣ（０〜３ビットのいずれか）を“１”に、そうでない場合、“０”にセットする比較命令である。
【０００７】
２つ目の条件分岐命令  ＢＮＺ  ７，  ＄１  では、複合条件の比較演算結果と、分岐条件値（マスク値）“７”とのビット演算を行い、条件が不成立ならば、アドレス＄１にジャンプする。ＢＮＺ条件分岐命令は、“ＢＮＺ  Ｍ，Ｌ”形式とされ、Ｍ（４ビットマスク値）とフラグレジスタの対応ビットの論理積をとり、ゼロ判定回路は、論理積結果が全て“０”であるか否か判定し、全て“０”である場合、“１”、そうでなければ、“０”を出力し、ゼロ判定回路の出力信号（セロ／非ゼロ判定結果）を分岐成立／分岐不成立信号として出力し、分岐成立時、Ｌの指定するアドレスに分岐する。なお、ＢＮＺ  ７、＄１においてマスク値は“０１１１”であり、フラグレジスタのビット０〜３のうちビット０〜２の値に応じた条件分岐を行う。
【０００８】
このように、比較命令ＳＬＥ  Ｘ，  １，０，・・・と、条件分岐命令ＢＮＺの２つの命令を用いている。
【０００９】
このプログラム例では、値Ｘ（レジスタに相当）に対する３つの比較条件（Ｘ＞１、Ｘ＜１０、  Ｘ！＝５）のうち１つでも不成立のとき、すなわち、アセンブラコードによれば、３つの比較条件（Ｘ＜＝１、Ｘ＞１０、Ｘ＝５）のうちいずれか１つでも成立したときに、＄１にジャンプする場合を示しているが、比較結果の反転を行うことですべてＯＲ条件にすることも可能となっている。
【００１０】
【特許文献１】特開平５−２７４１４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
特許文献１記載の複合条件処理方式は、複合条件を１回だけ演算する場合には、特段に問題は生じ無い。しかしながら、同じ条件を繰り返し実行するループ処理に用いようとした場合、以下のような問題点を有している。
【００１２】
第１の問題点は、複合条件の比較命令と条件分岐命令とをセットで実行する必要があるため、毎回、条件分岐処理に２ステップ分の実行サイクルが必要とされる、ということである。この点について以下に説明する。
【００１３】
特許文献１記載の複合条件処理方式では、図１０（ａ）に示すように、２命令分のサイクル数が必要となる。図１０（ａ）の例では、１回に付き、比較命令（ＳＬＥ  Ｘ，  １，０，・・・）と条件分岐命令（ＢＮＺ）の２命令分の、６サイクル（Ｆ（命令フェッチ）、Ｄ（デコード）、ＥＸ（実行）、Ｆ、Ｄ、ＥＸ）を要している（図１０の１０−１、及び１０−２参照）。複合条件の比較命令（ＳＬＥ  Ｘ，  １，０，・・・）では、複合条件の各条件に対応する比較演算を並列実行し、比較演算結果を、フラグレジスタの指定ビットに設定し、条件分岐命令（ＢＮＺ）ではフラグレジスタの値とマスク値の論理演算結果に基づき分岐判定が行われる。このように、特許文献１記載の複合条件処理方式においては、命令が比較命令と条件分岐命令の２つに分かれているため、命令フェッチと命令デコードのサイクルが少なくとも２回必要となり、サイクル数が増え、ループ処理でのサイクル数の増大が顕著となり律速要因となる。
【００１４】
第２の問題点は、特許文献１記載の複合条件処理方式においては、比較命令は、複合条件をすべて１命令で並列実行する構成とされており、複数の条件を表すために、命令長が長くなる、ということである。
【００１５】
例えば、比較命令
ＳＬＥ  Ｘ，  １，０    ＳＧＥ  Ｘ，１０，１    ＳＥＱ  Ｘ，５，２
において、
・命令コードを８ビット（２５６種類までの命令を有するプロセッサと仮定）、
・比較器の種類は６種類であることから、比較器の種類の選択に３ビット、
・オペランドＸは、１６個のレジスタから１つを選択するものとすると、レジスタ選択用に４ビット、
・オペランドの条件値（例えば“ＳＬＥ  Ｘ，１，０”の１は、比較条件Ｘ＜＝１における右辺の１に対応する）を、０〜１５まで指定できるものとして４ビット、
・オペランドのフラグレジスタ内のビット位置指定（ビット０〜３のいずれか）を２ビットとすると、合計で、
８＋４＋（３＋４＋２）×３＝３９ビット必要となる（表１参照）。
【００１６】
【表１】
2007272353.tif 000003
【００１７】
このように、命令長が長くなるのは、特許文献１の並列処理装置では、複合条件をすべて１命令で指定しているためである。
【課題を解決するための手段】
【００１８】
本願で開示される発明は、前記課題を解決するため概略以下の構成とされる。
【００１９】
本発明の１つのアスペクト(側面)に係る装置は、命令セットに、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する手段を備えている。本発明において、前記条件分岐命令が、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、比較演算結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、１つの複合条件分岐命令で実行できるようにしている。
【００２０】
本発明の他のアスペクト(側面)に係る装置は、命令セットとして、１つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、１つの前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する、複数の条件設定比較部と、
前記複合条件分岐命令の実行時に、複数の前記条件設定比較部でそれぞれ行われる比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、を備えている。
【００２１】
本発明において、前記条件設定命令は、オペランドに、前記条件設定比較部の指定と、比較演算の種別と、比較対象の演算用レジスタの２つのレジスタ、又は、前記演算用レジスタの１つのレジスタと即値データを含む。
【００２２】
本発明において、前記複合条件分岐命令は、オペコードに比較演算の種別を含み、オペランドに、前記分岐条件値と、前記分岐先を含む。
【００２３】
本発明において、前記条件設定比較部は、比較対象の２つの演算用レジスタのアドレス情報を格納する第１及び第２のアドレスレジスタと、即値データを格納する即値レジスタと、比較演算の種別を格納する比較器選択レジスタと、比較器と、を備え、前記条件設定命令の実行により、前記第１及び第２のアドレスレジスタ、又は前記第１のアドレスレジスタ及び前記即値レジスタと、前記比較器選択レジスタの各レジスタの値が設定され、前記複合条件分岐命令の実行により、前記第１及び第２のアドレスレジスタ、又は前記第１のアドレスレジスタの指定で指定された前記演算用レジスタが読み出され、前記第１及び第２のアドレスレジスタで読み出された２つの前記演算用レジスタの値、又は前記第１のアドレスレジスタの指定で読み出された前記演算用レジスタの値及び前記即値データが、前記比較器で比較される。
【００２４】
本発明において、前記複数の条件設定比較部の比較演算結果をそれぞれ保存する複数のレジスタを備えている。
【００２５】
本発明において、前記複合条件分岐判定部は、前記複合条件分岐命令をデコードする命令デコーダからの出力を受け、前記複合条件分岐命令で指定された前記分岐条件値を記憶する第１のレジスタと、比較演算の種類を記憶する第２のレジスタと、前記複数の条件設定比較部の比較演算結果をそれぞれ保存する前記複数のレジスタの出力と、前記第１のレジスタで指定された分岐条件値に関して、前記第２のレジスタで指定された比較演算を行い比較結果を出力する比較器と、を備えている。
【００２６】
本発明において、命令デコーダによる前記条件設定命令のデコード結果に基づき、前記条件設定命令で指定された前記条件設定比較部を選択するセレクタを備えている。
【００２７】
前記命令デコーダでデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納するジャンプ先アドレスレジスタと、前記複合条件分岐判定部から出力された結果の真偽値を受け、真である場合には、ジャンプ先アドレスを選択し、偽の場合には、プログラムカウンタの値＋１のアドレスを選択してプログラムカウンタに設定するセレクタと、をさらに備えている。
【００２８】
本発明の別のアスペクトに係る方法は、プロセッサにおける条件分岐の処理方法であって、命令セットに、条件の成立の有無に応じて分岐先へ分岐／非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、
（ａ）前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
（ｂ）前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する、
上記各ステップを有する。
【００２９】
本発明に係る方法において、前記条件分岐命令は、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、比較演算結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、１つの複合条件分岐命令で実行できるようにしている。
【発明の効果】
【００３０】
本発明によれば、従来の複合条件処理方式において比較命令と条件分岐命令の２つの命令の組み合わせで実行されていた条件分岐処理を、１つの複合条件分岐命令で実行可能としたことにより、同一条件の処理を繰り返し実行するループ処理等に適用した場合、予めループ処理の直前で、複合条件を設定しておき、ループ処理内では、複合条件分岐命令１つで条件分岐することができる。このため、本発明によれば、従来の複合条件処理方式のように、２つの命令で条件分岐する場合と比べて、高速化を実現可能としている。
【００３１】
本発明によれば、同一条件の処理を繰り返し実行する回数が多いほど、処理性能の向上効果が大きくなる。
【００３２】
さらに、本発明によれば、条件設定命令は、１つの命令に対して、１つの条件を設定するだけなので、同時に複数の条件を設定する場合と比べ、命令長を短くすることができる。
【発明を実施するための最良の形態】
【００３３】
上記した本発明についてさらに詳細に説述すべく添付図面を参照して以下に説明する。
【００３４】
本発明は、逐次実行型コンピュータに適用され、分岐判定で用いられる比較条件を設定する条件設定命令を設け、この条件設定命令を複合条件分岐命令に先立って実行することで、複合条件を構成する複数の比較条件を事前に設定しておく。複合条件分岐命令の実行時、該設定された複合条件の各条件に対応する比較演算を行い、比較演算した結果と、命令コードで指定した分岐条件値を比較した結果を用いて、分岐するか否かを判定する手段を備えている。
【００３５】
より詳細には、本発明の好ましい形態の処理装置は、命令セットとして、分岐判定に用いられる比較条件を設定する条件設定命令（オペコード：ＳＥＴＣＭＰ）と、前記条件設定命令で設定された比較条件に対応する比較演算を実行し、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先へ分岐するか否かの判定を行う複合条件分岐命令（オペコード：ＸＢＥＱ、ＸＢＮＥ、ＸＢＬ、ＸＢＬＥ、ＸＢＧ、ＸＢＧＥ）と、を含む。本発明は、条件設定命令の実行により選択され、前記条件設定命令で指定された比較条件（比較演算の種別、比較対象のレジスタ、あるいはレジスタと即値データ）が設定され、前記複合条件分岐命令の実行時に、前記条件設定命令で設定された比較条件に対応する比較演算をそれぞれ実行する複数の条件設定比較部（図１の２、３、４参照）と、前記複合条件分岐命令の実行時、複数の前記条件設定比較部での比較演算結果と、前記複合条件分岐命令で指定された前記分岐条件値を比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部（図１の７）とを備えている。
【００３６】
本発明において、条件設定命令（ＳＥＴＣＭＰ）は、オペランドに、前記条件設定比較部の指定と、比較演算の種別と、比較対象の演算用レジスタの２つのレジスタ、又は、前記演算用レジスタの１つのレジスタと即値データを含む。
【００３７】
本発明において、前記複合条件分岐命令は、オペコードに、比較演算の種別を含み、オペランドに、前記分岐条件値と、前記分岐先を含む。
【００３８】
本発明において、各条件設定比較部は、図２を参照すると、演算用レジスタ（６）の２つのレジスタのアドレス情報をそれぞれ格納する第１及び第２のアドレスレジスタ（２ｃ、２ｄ）と、第１及び第２のアドレスレジスタ（２ｃ、２ｄ）のアドレスをそれぞれデコードする第１及び第２のデコーダ（２ａ、２ｂ）と、即値データを格納する即値レジスタ（２ｅ）と、比較演算の種別を格納する比較器選択レジスタ（２ｆ）と、比較器（２ｈ）と、を備え、条件設定命令（ＳＥＴＣＭＰ）の実行により、第１及び第２のアドレスレジスタ（２ｃ、２ｄ）と、即値レジスタ（２ｅ）と、比較器選択レジスタ（２ｆ）の各レジスタの値が設定され、複合条件分岐命令の実行により、第１及び第２のアドレスレジスタ（２ｃ、２ｄ）のアドレスをそれぞれデコードする第１及び第２のデコーダ（２ａ、２ｂ）によって選択された演算用レジスタ（６）の２つのレジスタが読み出され、読み出された該２つのレジスタの値が比較器（２ｈ）で比較されるか、あるいは、例えば第１のアドレスレジスタ（２ｃ）のアドレスをデコードする第１のデコーダ（２ａ）によって選択された演算用レジスタ（６）の１つのレジスタが読み出され、読み出された該１つレジスタの値と、即値データとが比較器（２ｈ）で比較される。
【００３９】
本発明において、複数の条件設定比較部（図１の２、３、４）の比較演算結果をそれぞれ保存する複数のレジスタ（図１の５ａ、５ｂ、５ｃ）を備えている。
【００４０】
本発明において、複合条件分岐判定部（図１の７）は、図５を参照すると、複合条件分岐命令をデコードする命令デコーダ（１１）からの出力を受け、前記複合条件分岐命令で指定された前記分岐条件値を記憶する第１のレジスタ（７ａ）と、比較演算の種類を記憶する第２のレジスタ（７ｂ）と、複数の条件設定比較部（２、３、４）の比較演算結果をそれぞれ記憶する複数のレジスタ（５ａ、５ｂ、５ｃ）の出力と、第１のレジスタ（７ａ）で指定された分岐条件値に関して、第２のレジスタ（７ｂ）で指定された比較演算を行い比較結果を出力する比較器（７ｃ）と、を備えている。
【００４１】
本発明において、命令デコーダ（図１の１１）による前記条件設定命令のデコード結果に基づき、前記条件設定命令で指定された条件設定比較部を選択するセレクタ（図１の１）を備えている。本発明においては、前記命令デコーダでデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納するジャンプ先アドレスレジスタ（図１の８）と、前記複合条件分岐判定部（図１の７）から出力された比較結果を受け、比較結果が真である場合には、ジャンプ先アドレスを選択し、偽の場合には、複合条件分岐命令の次の命令のアドレス、すなわち現在のプログラムカウンタの値＋１のアドレスを選択して、プログラムカウンタ（図１の１０）に設定するセレクタ（図１の９）と、を備えている。
【００４２】
上記特許文献１記載の従来の複合条件処理方式においては、比較命令と、条件分岐命令の２つの命令の組み合わせで実行していた条件分岐処理を、本発明は、１つの複合条件分岐命令で実行できるようにしている。このため、同一条件の処理を繰り返し実行する処理に適用する場合、ループ処理の直前で複合条件を設定しておき、ループ処理内では複合条件分岐命令１つで条件分岐ができる。すなわち、本発明によれば、従来の複合条件処理方式のように、２つの命令で条件分岐する場合よりも、高速処理を実現することができる。
【００４３】
本発明によれば、同一条件の処理を繰り返し実行する回数が多いほど、処理性能の向上効果が大きくなる。
【００４４】
また、本発明によれば、条件設定命令は、１つの命令に対して、１つの条件を設定するだけであることから、従来の複合条件処理方式のように、同時に複数の条件を設定する場合と比べ、命令長を短くすることができる。このため、命令メモリのバス幅が比較的狭いシステムにおいても、適用が容易であることを特徴とする。
【００４５】
以下、本発明と特許文献１等の従来の複合条件処理方式とを比較して説明しておく。従来方式では、１回に付き、６サイクルかかっているのに対し、本発明によれば、１命令で条件分岐できることから、４サイクルで済んでいる。繰り返し回数が２〜３回では、本発明では、予め条件設定命令の実行ステップがある分、実行サイクル数は多くなるが、従来の複合条件処理方式のように、同時に複数の条件設定を１つの命令で実行できるような並列システムであれば、１命令で実現することも可能であり、この場合は、繰り返し実行がなくても、従来の複合条件処理方式と同じステップ数にすることが可能となる。
【００４６】
また、本発明においては、１つ１つの条件毎に、それぞれ特定のレジスタや即値データを指定することができる。この機能を、従来の複合条件処理方式に適用すると、レジスタを指定するビット数が２個分増加し、レジスタの指定を４ビットとすると、合計で３９＋４×２＝４７ビットとなる。
【００４７】
【表２】
2007272353.tif 000004
【００４８】
命令メモリのバス幅が、例えば３２ビットの場合、表３のように、命令メモリのアドレスが２つ分に跨るため、図１０（ｂ）の１０ｂ−１に示したように、２回の命令フェッチが必要となり、命令フェッチサイクルが増え、複合条件比較命令の実行速度がその分低下する。
【００４９】
【表３】
2007272353.tif 000005
【００５０】
これに対し、本発明によれば、条件設定命令および複合条件分岐命令は両方とも、従来方式に比べて短い命令長で実現できる。具体的には、以下のようになる。
【００５１】
本発明において命令セットにあらたに導入された条件設定命令
ＳＥＴＣＭＰ  ｃ０，  ｒ１，  Ｌ，  ｒ１１
では、条件設定比較部の選択で２ビット、２つのレジスタで８ビット、比較器の種類で３ビットとなり、合計で８＋２＋４＋４＋３＝２１ビットとなる（表４参照）。
【００５２】
【表４】
2007272353.tif 000006
【００５３】
さらに、ＳＥＴＣＭＰ  ｃ１，  ｒ２，  ＧＥ，  １０  も即値を４ビットとすれば、２１ビットとなる（表５参照）。
【００５４】
【表５】
2007272353.tif 000007
【００５５】
また、本発明において命令セットにあらたに導入された複合条件分岐命令
ＸＢＮＥ  ０１１１ｂ，  Ｌ１
では、命令コードを８ビット、比較器の種類は３ビット、分岐条件値は０〜７まで選択可能とすると３ビット、ジャンプ先アドレスＬ１は命令メモリのアドレス値で６４Ｋワードアドレス空間だとすると１６ビット、合計で８＋３＋３＋１６＝３０ビットとなり、命令メモリのバス幅が３２ビット以下でも収まり、命令フェッチサイクルは増加しない（表６参照）。
【００５６】
【表６】
2007272353.tif 000008
【００５７】
さらに、ジャンプ先アドレスを１２ビットの相対アドレスにした場合、３２−８−３−１２＝９ビット分の余裕がある。以下の実施例では、分岐条件値を３ビットで示しているが、よりビット数を多くして、より多くの複合条件を指定することも可能である。この場合、条件設定比較部もそのビット数分の個数が必要とされる。以下具体的な実施例に即して説明する。
【実施例】
【００５８】
図１は、本発明の一実施例のプロセッサの要部構成を示す図である。図１を参照すると、本実施例のプロセッサは、セレクタ１と、複数の条件設定比較部２、３、４と、レジスタ５と、演算用レジスタ６と、複合条件分岐判定部７と、ジャンプ先アドレス８と、セレクタ９と、プログラムカウンタ１０と、命令デコーダ１１を備えている。複数の条件設定比較部として３つの構成が示されているが、本発明において、条件設定比較部は３つに制限されるものでないことは勿論である。
【００５９】
セレクタ１は、命令デコーダ１１における条件設定命令ＳＥＴＣＭＰのデコード結果を受けるレジスタ１ａ（条件設定命令ＳＥＴＣＭＰでの条件設定比較部の指定情報に対応する２ビットを格納）と、レジスタ１ａの値に基づき、条件設定比較部２、３、４を選択するセレクタ１ｂを備えている。
【００６０】
条件設定比較部２、３、４は、セレクタ１によって選択され（活性化され）、それぞれ、条件設定命令ＳＥＴＣＭＰで指定された１つの条件を設定し、該条件に対応する比較演算を行う。なお、条件設定比較部２、３、４では、条件設定命令ＳＥＴＣＭＰの実行時には、条件の設定（比較器の種別、比較対象のレジスタの指定等）が行われるだけであり、条件設定比較部２、３、４における比較演算の実行は、複合条件分岐命令の実行時とされる。かかる構成は、本発明の主たる特徴の１つをなしている。
【００６１】
レジスタ５は、条件設定比較部２、３、４の比較演算結果をそれぞれ保存するレジスタ５ａ、５ｂ、５ｃを備えている。
【００６２】
演算用レジスタ６は、プロセッサが演算のために用いるＮ個のレジスタ（レジスタファイル）ｒ１〜ｒＮである。
【００６３】
複合条件分岐判定部７は、複合条件分岐命令をデコードする命令デコーダ１１からの出力を受け、該複合条件分岐命令で指定された比較用の分岐条件値を記憶するレジスタ７ａ（図５参照）と、比較器の種類を記憶するレジスタ７ｂ（図５参照）と、比較演算を行う比較器７ｃ（図５参照）を備えている。
【００６４】
ジャンプ先アドレスレジスタ８は、命令デコーダ１１でデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納する。
【００６５】
プログラムカウンタ（ＰＣ）１０は、プロセッサの命令実行位置を表す。
【００６６】
セレクタ９は、ジャンプ先アドレス８と、複合条件分岐命令の次の命令のアドレス（プログラムカウンタの値（ＰＣ）＋１）を入力とし、複合条件分岐判定部７から出力された結果の真偽値（Ｔ／Ｆ）を選択制御信号として受け、複合条件分岐判定部７から出力された結果が真である場合には、ジャンプ先アドレス８を選択し、偽の場合には、複合条件分岐命令の次の命令のアドレス（プログラムカウンタの値（ＰＣ）＋１）を選択する。セレクタ９からの出力は、プログラムカウンタ（ＰＣ）１０に設定される。
【００６７】
このように、本実施例では、命令セットにあらたに、
・条件設定命令（ＳＥＴＣＭＰ）、
・複合条件分岐命令（ＸＢＮＥ、ＸＢＥＱ等）、
の２つの命令を用意する。
【００６８】
条件設定命令は、複合条件分岐命令で用いられる複合判定の各条件を設定する命令である。複合条件分岐命令は、条件設定命令で設定された各条件に対応する比較演算を行い、比較演算結果と、命令コードで指定した分岐条件値との比較演算を行い、比較演算結果に基づき分岐が行われる命令である。
【００６９】
まず、条件設定命令から説明する。本実施例では、アセンブラのニーモニックで示すと、下記のように表される。
【００７０】
ＳＥＴＣＭＰ  ｃ０，ｒ１，Ｌ，ｒ１１
【００７１】
“ＳＥＴＣＭＰ”は、条件設定命令の名前（オペコード）を表している。
【００７２】
第１オペランドの“ｃ０”は、１番目の条件設定を意味し、条件設定比較部２を示している。
【００７３】
第２、４オペランドの“ｒ１”と“ｒ１１”は、演算用レジスタ６内のレジスタアドレス１と１１のレジスタを指定している。
【００７４】
第３オペランドの“Ｌ”は、ｒ１とｒ１１の値を比較するときに使用する比較演算器の種類を表している。比較演算器の種類を、意味、Ｃ言語表記、選択値とともに、表７に一覧で掲載する。
【００７５】
【表７】
2007272353.tif 000009
【００７６】
本実施例の具体的な動作として、図６の３つの条件設定命令が実行されるときの動作を図６を用いて説明する。図６の各行の文字列において、“／／”以降(右側)の文字列はコメントである。図６の３つの条件設定命令（ＳＥＴＣＭＰ）は、ｒ１＜ｒ１１、ｒ２＞＝１０、ｒ３＝ｒ１３のそれぞれの比較条件の設定を行っている。なお、図６において、３つの条件設定命令に続く、ラベルＬ１以下では、演算が行われ、ｒ１〜ｒ３、ｒ１１、ｒ１３の各レジスタが更新され（命令コードは図示されない）、次の複合条件分岐命令ＸＢＮＥの実行時に条件Ｃ０〜Ｃ２が全て成立してない場合、ラベルＬ１へ分岐する。ラベルＬ１から複合条件分岐命令ＸＢＮＥまでがループ処理を構成し、複合条件分岐命令ＸＢＮＥは、ループ処理エグジット判定を行う。
【００７７】
１つ目の条件設定命令  
ＳＥＴＣＭＰ  ｃ０，  ｒ１，  Ｌ，  ｒ１１  
が実行されるとき、図７の７−１において、命令フェッチサイクルＦで、命令デコーダ１１に命令コードが命令メモリ（図示せず）から読み込まれる。
【００７８】
次の命令デコードサイクルＤで、読み込まれた命令コードは、図２の命令デコーダ１１に示すように解析される。図２には、条件設定命令
ＳＥＴＣＭＰ  ｃ０，  ｒ１，  Ｌ，  ｒ１１
に対して、図１の命令デコーダ１１の動作、条件設定比較部２の動作を説明する構成が模式的に示されている。
【００７９】
図２を参照すると、条件設定比較部２は、演算用レジスタ６のレジスタアドレスを格納するレジスタ（「アドレスレジスタ」ともいう）２ｃ、２ｄと、レジスタ２ｃ、２ｄからのレジスタアドレスを受けてデコードし演算用レジスタ６のレジスタを選択するデコーダ２ａ、２ｂと、即値データを格納する即値レジスタ２ｅと、比較器選択レジスタ２ｆと、即値レジスタ２ｅの出力とデコーダ２ｂの出力(選択された演算用レジスタ６の読み出し値)の一方を選択して出力するセレクタ２ｇと、デコーダ２ｂの出力(選択された演算用レジスタ６の読み出し値)とセレクタ２ｇの出力を入力し、比較器選択用レジスタ２ｆで選択された比較演算を行う比較器２ｈと、を備えている。なお、図１の条件設定比較部３、４も、条件設定比較部２と同一構成とされる。
【００８０】
命令デコーダ１１において、条件設定命令
ＳＥＴＣＭＰ  ｃ０，  ｒ１，  Ｌ，  ｒ１１
における、
“ｃ０”は、“００ｂ”（２進数）、
“ｒ１”は、“０００１ｂ”、
“Ｌ”は、“０１０ｂ”、
“ｒ１１”は、“１０１１ｂ”
にデコードされる。
【００８１】
同時に、セレクタ１のレジスタ１ａには、命令デコーダ１１から、条件設定“ｃ０”を示す値“００ｂ”が格納される。
【００８２】
さらに、次の命令実行サイクルＥＸで、セレクタ１のレジスタ１ａの値“ｃ０”がセレクタ１のセレクタ１ｂに作用して、条件設定比較部２が選択され（図２のセレクタ１内のＳａが活性化される）、条件設定比較部２のレジスタ２ｃ、２ｄ、及び２ｆに、それぞれ、命令デコーダ１１から、“０００１ｂ”、“１０１１ｂ”、及び“０１０ｂ”が格納される。
【００８３】
なお、レジスタ２ｃ〜２ｆの値は、条件設定命令
ＳＥＴＣＭＰ  ｃ０，  ｒ１，  Ｌ，  ｒ１１
の命令実行後もそのまま保持される。すなわち、次に条件設定比較部２に作用する条件設定命令が実行されるまでの間、条件設定比較部２内の各レジスタの値は書き換えられない。
【００８４】
図２は、この時点までの動作を実行した状態を示している。
【００８５】
条件設定比較部２のレジスタ２ｃには、演算用レジスタｒ１を示すレジスタアドレス“１”（“０００１ｂ”）、
条件設定比較部２のレジスタ２ｄには、演算用レジスタｒ１１を示すレジスタアドレス“１１”（“１０１１ｂ”）、
条件設定比較部２のレジスタ２ｆには、比較器の種類“Ｌ”を示す値（表１では“２”（“０１０ｂ”）、図２（ａ）では“＜”で表す）がそれぞれ記憶される。
【００８６】
２つ目の条件設定命令
ＳＥＴＣＭＰ  ｃ１，ｒ２，ＧＥ，１０
では、４番目のパラメータ（第４オペランド）に、演算用レジスタではなく、即値（ｉｍｍｅｄｉａｔｅ  ｖａｌｕｅ）“１０”が指定されている。
【００８７】
図７の７−２に示すように、動作的には、即値“１０”を、条件設定比較部３のレジスタ３ｅ（図３参照）へ記憶すること以外は、１つ目の条件設定命令のときと同様に処理される。
【００８８】
結果として、条件設定比較部３において、図３に示すように、
レジスタ３ｃには、演算用レジスタｒ２を示すレジスタアドレス“２”（“００１０ｂ”）、
レジスタ３ｅには、即値“１０”を示す値“１０”（“１０１０ｂ”）、
レジスタ３ｆには、比較器の種類“ＧＥ”を示す値（表７では“５”（“１０１ｂ”）、図２（ｂ）では“≧”で表す）
がそれぞれ記憶される。
【００８９】
３つ目の条件設定命令  
ＳＥＴＣＭＰ  ｃ２，ｒ３，ＥＱ，ｒ１３  
についても、条件設定“ｃ２”により、条件設定比較部４が選択され、１つ目の命令ＳＥＴＣＭＰ  ｃ０，  ｒ１，  Ｌ，  ｒ１１と同様に処理され、図７の７−３のような動作となる。
【００９０】
結果として、条件設定比較部４において、図４に示すように、
レジスタ４ｃには、演算用レジスタｒ３を示すレジスタアドレス“３”（“００１１ｂ”）、
レジスタ４ｄには、演算用レジスタｒ１３を示すレジスタアドレス“１３”（“１１０１ｂ”）、
レジスタ４ｆには、比較器の種類“ＥＱ”を示す値（表７では“０”（“０００ｂ”）、図２（ｃ）では“＝＝”で表す）
がそれぞれ記憶される。
【００９１】
このように本実施例においては、複合条件分岐命令を実行する前に、複合条件を構成する複数の条件を条件設定命令を用いて設定しておく。
【００９２】
なお、条件設定命令は、条件を設定するだけであり、実際の比較演算は行わない。なんとなれば、この時点では、比較演算の対象となる演算用レジスタ６に、まだ値が格納されていないためである。複合条件分岐命令の実行で比較演算が行われる。
【００９３】
本実施例で命令セットに導入された、もう１つの追加命令である複合条件分岐命令は、条件設定命令で設定した各条件に対応する比較演算を行い、その結果と分岐条件値との比較演算を行う命令であり、アセンブラのニーモニックでは、図６に示す例の場合、以下のように表される。
【００９４】
ＸＢＥＱ  ０１１１ｂ，  Ｌ１
【００９５】
“ＸＢＮＥ”は、命令の名前で、“ＮＥ”の部分は比較演算器の種類（表７参照）を表している。“ＮＥ”以外に、“ＥＱ”、“Ｌ”、“ＬＥ”，“Ｇ”、“ＧＥ”の比較であってもよい。
【００９６】
“０１１１ｂ”は分岐条件値であり、各条件での比較演算結果との比較（ビット比較）を行う値を２進数で表している。
【００９７】
“Ｌ１”は、複合条件の分岐の判定結果が真であった場合に分岐する、プログラムのジャンプ先アドレスを表している。
【００９８】
本実施例における複合条件分岐命令の動作を説明する。
【００９９】
図８の８−１における１回目の複合条件分岐命令  
ＸＢＮＥ  ０１１１ｂ，Ｌ１
において、命令フェッチサイクルＦで、命令デコーダ１１に命令コードが命令メモリ（図示せず）から読み込まれる。
【０１００】
次の命令デコードサイクルＤで、読み込まれた命令コードは、図５の命令デコーダ１１で、図５に示すように、解析される。なお、セレクタ７は、レジスタ７ａ、７ｂ、比較器７ｃを備えている。
【０１０１】
命令デコーダ１１において、
ＸＢＮＥの“ＮＥ”は“００１ｂ”、
“０１１１ｂ”は、そのまま“０１１１ｂ”、
“Ｌ１”は“ＸＸＸＸＸＸＸＸｂ”（ジャンプ先アドレスＬ１を表す値）
にそれぞれデコードされる。
【０１０２】
同時に、命令デコーダ１１から、
セレクタ７のレジスタ７ａには、“０１１１ｂ”がセットされ、
セレクタ７のレジスタ７ｂには、比較“ＮＥ”を示す値“００１ｂ”  （表７では“１”、図５では“ＮＥ”を“！＝”で表している）が格納される。
【０１０３】
また、ジャンプ先アドレスレジスタ８には、命令デコーダ１１からジャンプ先アドレス“Ｌ１”が格納される。各レジスタの値は、図８において、次のサイクル８−Ａ（ＸＢＮＥの命令実行実行サイクルＥＸ）で反映される。
【０１０４】
これと同時に、条件設定比較部２（図２参照）において、演算用レジスタ６のレジスタを指定するレジスタ２ｃ、２ｄを用いて、デコーダ２ａ、２ｂが、演算用レジスタ６の中から、該当する演算用レジスタ６（この場合、ｒ１、ｒ１１）の値を読み出す。読み出されたｒ１、ｒ１１の値は、比較器２ｈに供給される。
【０１０５】
条件設定比較部３と条件設定比較部４においても、同様に処理される。図３を参照すると、デコーダ３ａで指定された演算用レジスタ６の値が読み出される。条件設定比較部３では、レジスタ３ｃで選択された演算用レジスタ６のレジスタｒ２が読み出され、レジスタｒ２の値と、セレクタ３ｇで選択された即値レジスタ３ｅの値１０とが比較器３ｈに供給される。
【０１０６】
図４を参照すると、条件設定比較部４において、演算用レジスタ６のレジスタを指定するアドレスレジスタ４ｃ、４ｄを用いて、デコーダ４ａ、４ｂが、演算用レジスタ６の中から、該当する演算用レジスタ６（この場合、ｒ３、ｒ１３）の値を読み出す。読み出された演算用レジスタ６のｒ３、ｒ１３の値は、比較器４ｈに供給される。
【０１０７】
ＸＢＮＥの命令実行サイクルＥＸ（図８の８−Ａ）では、条件設定比較部２（図２参照）において、デコーダ２ａ、２ｂに読み出された２つの演算用レジスタの値を用いて、比較器２ｈは、比較器選択レジスタ２ｆが示す比較器で比較演算を実行し、結果をレジスタ５ａ（図５参照）へ格納する。
【０１０８】
ここで、条件設定比較部３のように、比較演算の片方の値が即値であった場合には、即値レジスタ３ｅ（図３）の値を、セレクタ３ｇ（図３）にて選択し、比較器３ｈへ受け渡して比較演算する。条件設定比較部４においても同様の処理が行われる。
【０１０９】
条件設定比較部２の比較器２ｈ、条件設定比較部３の比較器３ｈ、条件設定比較部４の比較器４ｈのそれぞれの演算結果を、レジスタ５ａ〜５ｃへ格納する。
【０１１０】
さらに、次の命令実行サイクルＥＸで（図８の８−Ｂ）、図５を参照すると、比較演算結果を格納したレジスタ５ａ〜５ｃと、命令コードから得られた分岐条件値（レジスタ７ａの値）との比較演算を、比較器７ｃで実行する。なお、複合条件分岐命令が、命令フェッチＦ、デコードＤにつづいて、２つの命令実行サイクルＥＸ（１つ目の命令実行サイクルＥＸは、条件設定比較部２、３、４での比較演算の実行と、レジスタ５への設定、２つ目の命令実行サイクルＥＸはレジスタ５の値と分岐条件値との比較による分岐判定）を含む。
【０１１１】
ここで使用される比較器の種類は、レジスタ７ｂで選択された値“ＮＥ”  （表７では“１”（“００１ｂ”）、図３では“！＝”で表す）となる。
【０１１２】
ここで、レジスタ５ａ、５ｂ、５ｃは、図９（ａ）で示すように、分岐条件値７ａのそれぞれビット０、１、２に対応付ける。なお、分岐条件値７ａの値が“００１１ｂ”であった場合は、図９（ｂ）のようになる。
【０１１３】
ＸＢＮＥの次の命令実行サイクルＥＸ（図８の８−Ｂ）では、比較器７ｃの演算結果出力Ｔ／Ｆが“Ｔ”、すなわち、複合条件の各条件が全て成立してはいなかったときを表しており、ジャンプ先アドレス８がセレクタ９によって選択され、プログラムカウンタ１０に代入される。
【０１１４】
このとき、命令メモリバスにジャンプ先アドレス８のアドレス値が出力され、次の命令フェッチサイクルで“Ｌ１”番地の命令が命令メモリから読み込まれる（図８の８−Ｃ）。
【０１１５】
その後、再び複合条件分岐命令  ＸＢＮＥ  ０１１１ｂ，Ｌ１  を実行するとき（図８の８−２）、前記と同様の処理が行われるが、今度は、図８の８−Ｄ（ＸＢＮＥの命令実行サイクルＥＸ）に示すように、すべての条件が成立したので、比較器７ｃ（図３参照）の演算結果出力Ｔ／Ｆが“Ｆ”となり、次の命令のアドレス（ｎ＋１）が、セレクタ９によって選択され、プログラムカウンタ１０に代入される。
【０１１６】
このとき、命令メモリバスに、次の命令のアドレス値が出力され、次の命令フェッチサイクルで、複合条件分岐命令ＸＢＮＥ  ０１１１ｂ，Ｌ１の次の命令が、不図示の命令メモリから読み込まれる（図８の８−Ｆ）。
【０１１７】
以上のように、予め条件設定命令で複数の条件を設定しておき、複合条件分岐命令で複数の条件の比較演算を行い、さらにその結果と、指定した分岐条件値との比較によって分岐の有無を判定することで、複数条件の条件分岐を１つの命令で行うことができる。
【０１１８】
以下、本実施例の作用効果について、特許文献１に記載された従来方式との比較対比を交えて説明する。
【０１１９】
前記した従来方式では、必ず比較命令と条件分岐命令の２つの命令を組み合わせて条件分岐していたのに対して、本実施例では、条件分岐で用いられる条件の設定を予め行っておくことで、条件分岐処理を、１つの条件分岐命令で実行することができる。このため、より高速化に対応可能としている。特に、同じ条件を繰り返し実行する処理に適用することで、従来と比べて高速性が増す効果がある。また、複合条件分岐命令において、複数の条件に対応する比較処理は、並列実行されるため、
【０１２０】
また、従来方式のように、すべての複合条件を１つの命令で表現した場合、オペランド部分が多く、命令長が長くなる。命令メモリのバス幅が比較的狭いシステムでは、命令フェッチに追加サイクルが必要となる。
【０１２１】
これに対して、本実施例では、条件分岐命令とは別の条件設定命令を用いて条件を設定できるようにしたことにより、条件設定命令及び条件分岐命令は、通常の比較命令や条件分岐命令とさほど変わらない命令長で実現できる。よって、命令メモリ幅が比較的狭いシステムでも、命令フェッチの追加サイクルは無くても済むようにできる場合が多くなる。これは、複数の条件を予め設定しておける条件設定命令と、設定された複合条件の演算と分岐条件との比較を行い、分岐するか否かを判定する複合条件分岐命令を有するためである。
【０１２２】
本実施例において、条件分岐処理は、１つの複合条件分岐命令のみが実行され、１命令分の実行サイクルで済むため、従来の２つの命令で条件分岐するよりも高速に条件分岐できるためである。
【０１２３】
さらに、本実施例では、条件設定を１つずつ行うためのセレクタ１、複合条件を記憶しておくためのレジスタ２ｃ〜２ｆと、演算用レジスタ６から値を取得するためのデコーダ２ａおよび２ｂを備え、かかる構成によって、複合条件の比較演算を、複合条件分岐命令の中で実行できるようにしている。
【０１２４】
これにより、以下のような作用効果（優位点）を奏する。
【０１２５】
従来方式では、複合条件比較命令と、条件分岐命令の２つの命令の組み合わせとなっているため、２回分の命令フェッチと命令デコードのサイクルが必要となる。
【０１２６】
これに対して、本実施例では、条件分岐命令１つの命令で同じ結果が得られ、１回分の命令フェッチと命令デコードで済むため、その分命令サイクル数が少なくなり、より高速である。ただし、予め複数の条件をそれぞれ条件設定命令でセットしているので、その分を含めると、１回だけの条件分岐処理では従来方式の方が高速に見える。しかしながら、同じ複合条件を複数回繰り返す処理に適用した場合は、本発明の方が繰り返し回数が多いほど高速に処理できる。
【０１２７】
従来方式の複合条件比較の命令は、複数の条件をすべて１つの命令で指定してるため、命令のオペランド部分が長くなる。このため、命令メモリのバス幅がその命令長よりも狭ければ、追加の命令フェッチサイクルが必要となり、その分命令実行サイクル数が増える。
【０１２８】
一方、本実施例では、基本的には１つの命令で１つの条件を指定しているので、他の通常の演算命令などと同程度の命令長にできる。このため、追加の命令フェッチサイクルも不要にできる可能性が高いので、実行サイクル数も増加しない。
【０１２９】
なお、上記実施例では、条件分岐命令の条件（condition）として、数値の大小を比較する２項比較演算を例に説明したが、本発明は、かかる２項比較演算に制限されるものでなく、また、大小比較以外にも、プロセッサのフラグ（ゼロフラグ、キャリフラグ）等の判定による条件分岐に対しても適用可能であることは勿論である。また、条件の比較演算として、論理演算を用いるようにしてもよいことは勿論である。
【０１３０】
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０１３１】
【図１】本発明の一実施例の構成を示す図である。
【図２】本発明の一実施例の条件設定比較部およびその関連部位を示す図である。
【図３】本発明の一実施例の条件設定比較部およびその関連部位を示す図である。
【図４】本発明の一実施例の条件設定比較部およびその関連部位を示す図である。
【図５】本発明の一実施例の複合条件分岐判定部およびその関連部位を示す図である。
【図６】本発明の一実施例における条件設定命令及び複合条件分岐命令をアセンブラ言語で例示した図である。
【図７】本発明の一実施例における条件設定命令の動作を示すタイミングチャートである。
【図８】本発明の一実施例における複合条件分岐命令の動作を示すタイミングチャートである。
【図９】（ａ）、（ｂ）は、本発明の一実施例を説明するための図であり、複合条件の比較演算結果と分岐条件とのビットの対応を示した図である。
【図１０】特許文献１の複合条件処理方式にループ処理を適用したときの、複合条件処理の動作を示すタイミングチャートである。
【符号の説明】
【０１３２】
１  セレクタ
１ａ  レジスタ
１ｂ  セレクタ
２、３、４  条件設定比較部
２ａ、２ｂ、３ａ、３ｂ、４ａ、４ｂ  デコーダ
２ｃ、２ｄ、３ｃ、３ｄ、４ｃ、４ｄ  レジスタ（アドレスレジスタ）
２ｅ、３ｅ、４ｅ  レジスタ（即値レジスタ）
２ｆ、３ｆ、４ｆ  レジスタ（比較器選択レジスタ）
２ｈ、３ｈ、４ｈ  比較器
５  レジスタ
５ａ、５ｂ、５ｃ  レジスタ
６  演算用レジスタ
７  複合条件分岐判定部
７ａ  レジスタ（分岐条件値レジスタ）
７ｂ  レジスタ（比較器選択レジスタ）
７ｃ  比較器
８  ジャンプ先アドレスレジスタ
９  セレクタ
１０  プログラムカウンタ
１１  命令デコーダ
【図１】
2007272353.tif 000010
【図２】
2007272353.tif 000011
【図３】
2007272353.tif 000012
【図４】
2007272353.tif 000013
【図５】
2007272353.tif 000014
【図６】
2007272353.tif 000015
【図７】
2007272353.tif 000016
【図８】
2007272353.tif 000017
【図９】
2007272353.tif 000018
【図１０】
2007272353.tif 000019