(57)【要約】【課題】本発明は、サイクル数、命令長の増大を抑え、条件分岐処理を高速化する処理装置を提供する。【解決手段】開示される処理装置は、命令セットとして、１つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、前記条件を設定する条件設定命令と、を含み、条件設定命令で指定された複合条件を記憶する複合条件設定記憶部（１）と、複合条件分岐命令の実行時に、複合条件設定記憶部（１）のうち複合条件分岐命令で指定された複合条件の各条件を比較する複数の比較器を有する条件比較部（２）と、前記条件比較部（２）の複数の比較器で行われた比較演算の結果と、複合条件分岐命令で指定された分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部（３）とを備えている。【選択図】図１
2008305185.tif 000002
【特許請求の範囲】
【請求項１】
命令セットとして、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、
前記条件設定命令の実行時、前記条件設定命令で指定された条件を記憶する条件設定記憶部と、
前記条件分岐命令の実行時、前記条件設定記憶部に記憶された条件のうち前記条件分岐命令で選択された条件に対応する比較演算を行う条件比較部と、
前記条件比較部での比較演算結果に基づき、分岐先へ分岐するか否かを判定する分岐条件判定部と、
を備えた、ことを特徴とするプロセッサ装置。
【請求項２】
前記条件分岐命令が、分岐判定用の条件として、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
前記条件設定記憶部は、前記複合分岐条件命令の複合条件を構成する複数の条件を記憶する複合条件記憶部を少なくとも１つ備えるとともに、前記複合分岐条件命令で指定された複合条件記憶部を有効とする回路を備え、
前記条件比較部は、前記複合条件分岐命令の実行時、前記複合条件分岐命令で指定された複合条件記憶部に保持された複数の条件の各々に対して比較演算を実行する、ことを特徴とする請求項１記載のプロセッサ装置。
【請求項３】
前記条件比較部が、前記複合条件分岐命令で指定された複合条件記憶部の複数の条件を並列に比較する複数の比較器を備え、
前記分岐条件判定部は、前記複数の比較器での比較結果に基づき、分岐先へ分岐するか否かを判定する、ことを特徴とする請求項２記載のプロセッサ装置。
【請求項４】
前記条件設定命令は、前記条件設定記憶部の複合条件記憶部のうち、どの複合条件記憶部を用い、前記複合条件記憶部において何番目の条件を設定するかを、オペランドで指定する、ことを特徴とする請求項２記載のプロセッサ装置。
【請求項５】
命令セットとして、指定した複合条件を構成する複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する処理を行う複合条件分岐命令と、
複合条件と、該複合条件を構成する複数の条件のうちどの条件であるかを指定し、前記条件を設定する処理を行う条件設定命令と、
を含み、
複数の前記条件設定命令の実行によって設定される複数の条件からなる複合条件を記憶する複合条件設定記憶部と、
前記複合条件分岐命令の実行時に、前記複合条件設定記憶部に記憶保持されている複合条件のうち、前記複合条件分岐命令で指定された複合条件を構成する複数の条件の各々について比較演算を実行する条件比較部と、
前記条件比較部で行われた比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、
を備えている、ことを特徴とするプロセッサ装置。
【請求項６】
前記条件設定命令は、オペランドに、
前記複合条件設定記憶部における複合条件の格納先の指定情報、及び、前記複合条件を構成する複数の条件のうち何番目の条件であるかの指定情報と、
比較演算の種別と、
比較演算対象の演算用レジスタのレジスタアドレス、又は、前記演算用レジスタのレジスタアドレスと即値データを含む、ことを特徴とする請求項５記載のプロセッサ装置。
【請求項７】
前記複合条件分岐命令は、オペコードに、比較演算の種別を含み、
オペランドに、
前記複合条件設定記憶部における複合条件の格納先の指定情報と、
前記分岐条件値と、
前記分岐先と、
を含む、ことを特徴とする請求項５又は６記載のプロセッサ装置。
【請求項８】
前記複合条件設定記憶部は、
比較対象の２つの演算用レジスタの第１及び第２のアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を１セットとして記憶する条件記憶部を、前記複合条件分岐命令の複合条件を構成する複数の条件の個数に対応して備えた複合条件記憶部を複数備え、
前記複合条件記憶部の各々は、前記条件設定命令によって指定された条件記憶部を選択する第１のセレクタを備え、
前記複合条件設定記憶部は、前記複数の複合条件記憶部のうち、前記複合条件分岐命令によって指定された複合条件に対応する複合条件記憶部を選択する第２のセレクタを備え、
前記第２のセレクタは、前記条件設定命令によって指定された複合条件記憶部の選択も行う、ことを特徴とする請求項５記載のプロセッサ装置。
【請求項９】
前記条件比較部は、前記条件記憶部に記憶された前記第１及び第２のアドレスをデコードし、前記演算用レジスタに第１、第２のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第１及び第２のデコーダと、
前記複合条件記憶部に記憶された即値データと、前記第２のデコーダの値を受け、前記フラグの出力に基づき一方を選択する第３のセレクタと、
前記第３のセレクタの出力と前記第１のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器と、
の組を、前記複合条件記憶部内の前記複数の条件記憶部に対応して備えている、ことを特徴とする請求項８記載のプロセッサ装置。
【請求項１０】
前記複合条件設定記憶部において、前記条件設定命令の実行によって記憶された条件は、前記条件設定命令のあとに別の条件設定命令が実行され、前記別の条件設定命令によって前記条件設定比較部が再び選択され別の条件に書き換えられるまでの間、保持される、ことを特徴とする請求項５記載のプロセッサ装置。
【請求項１１】
算術論理演算装置での演算結果を反映するフラグレジスタに基づき、条件判定を行う条件分岐判定部の出力と、前記複合条件分岐判定部からの出力とに入力が接続され、命令デコーダでデコードされた条件分岐命令が、前記複合条件分岐命令のときは、前記複合条件分岐判定部からの出力を選択し、前記複合条件分岐命令以外の条件分岐命令のときは、前記条件分岐判定部の出力を選択する第４のセレクタと、
前記第４のセレクタから出力された、前記複合条件分岐判定部又は前記条件分岐判定部の出力を受け、真である場合には、実行する条件分岐命令の分岐アドレスを選択し、偽の場合には、現在のプログラムカウンタの値を１つ増分させたアドレスを選択して、プログラムカウンタに設定する第５のセレクタと、
をさらに備えている、ことを特徴とする請求項５乃至１０のいずれか一に記載のプロセッサ装置。
【請求項１２】
前記複合条件設定記憶部を複数備え、前記複数の複合条件設定記憶部のうちの１つを選択する手段を備えている、ことを特徴とする請求項５乃至１０のいずれか一に記載のプロセッサ装置。
【請求項１３】
プロセッサにおける条件分岐の処理方法であって、
命令セットに、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を記憶させる条件設定命令と、
を含み、
複数の条件設定のために、前記条件設定命令を複数回実行することで複数の条件を記憶部に記憶しておき、
前記条件分岐命令の実行時、前記条件設定命令によって前もって記憶されている複数の前記条件のうち、前記条件分岐命令で選択された条件に関して比較演算を行い、
前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する、ことを特徴とする条件分岐処理方法。
【請求項１４】
前記条件分岐命令は、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
複数の前記条件設定命令を実行することで、前記複合分岐条件命令の複合条件を構成する複数の条件を１組として１又は複数組を記憶しておき、
前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複合条件のうち前記複合分岐条件命令で指定された複合条件が選択され、選択された複合条件を構成する複数の条件の各々に対応する比較演算が実行され、複数の条件の比較演算の結果に基づき、分岐判定を行い、
前記複合条件による条件分岐処理を１つの複合条件分岐命令で実行できるようにしてなる、ことを特徴とする請求項１３記載の条件分岐処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令をフェッチ、デコードして実行するプロセッサに関し、特に、複合条件分岐処理の方法と装置とに関する。
【背景技術】
【０００２】
この種の複合条件処理方式として、例えば特許文献１には、複数の命令を並列処理する構成として、複数の比較命令の実行結果の真偽値にしたがって独立に且つ並列にビットをセット／リセット可能なフラグレジスタ手段と、このフラグレジスタ手段の保持内容と、条件分岐命令によって指定されたマスク値とのビット毎の論理積をとる論理積手段と、論理積手段の出力値がゼロであるか否かに応じて前記条件分岐命令の指定する分岐先アドレス又は同命令の次の命令アドレスを、次に実行すべき命令アドレスとして選択する命令フェッチアドレス選択手段を備え、マスク値で指定されたフラグレジスタの各ビット位置のビット状態を複合条件として分岐を実行するか否かを決定する構成が開示されている。
【０００３】
特許文献１記載の並列処理装置においては、比較命令デコーダを複数持つことで、同時に、複数の比較命令を実行し、実行結果を、フラグレジスタに格納しておき、フラグレジスタの状態に応じて条件分岐する。
【０００４】
まず、特許文献１記載の複合条件処理方式について概説しておく。プログラムとして、Ｃ言語によるプログラム、
ｉｆ  （Ｘ＞１  ＆＆  Ｘ＜１０  ＆＆  Ｘ！＝５）  
｛複合条件成立時の処理｝
に対応するアセンブラ命令（コンパイル結果）を例に説明する。なお、Ｃ言語の上記プログラムは、３つの条件  Ｘ＞１とＸ＜１０とＸ！＝５が全て成立している場合には（＆＆はＡＮＤ演算を表す）、次の命令、すなわち｛複合条件成立時の処理｝が実行され、３つの条件のうち１つでも不成立のとき、｛複合条件成立時の処理｝を実行しないように、分岐が行われる。特許文献１によれば、Ｃ言語の上記プログラムのコンパイル結果は以下のようになる。
【０００５】
ＳＬＥ  Ｘ，  １，０    ＳＧＥ  Ｘ，１０，１    ＳＥＱ  Ｘ，５，２
ＢＮＺ  ７，  ＄１
（複合条件成立時の処理）
＄１：  （分岐先の処理）
【０００６】
１つ目の比較命令  ＳＬＥ  Ｘ，  １，０，・・・  において、複合条件の比較演算を行っている。ＳＬＥ比較命令は、“ＳＬＥ  Ａ，Ｂ，Ｃ”形式とされ、ＡとＢを比較し、Ａ＜＝Ｂのとき、フラグレジスタのビットＣ（０〜３ビットのいずれか）を“１”に、そうでない場合、“０”にセットする比較命令である。ＳＧＥ比較命令は、“ＳＧＥ  Ａ，Ｂ，Ｃ”形式とされ、ＡとＢを比較し、Ａ＞＝Ｂのとき、フラグレジスタのビットＣ（０〜３ビットのいずれか）を“１”に、そうでない場合、“０”にセットする比較命令である。ＳＥＱ比較命令は、“ＳＥＱ  Ａ，Ｂ，Ｃ”形式とされ、ＡとＢを比較し、Ａ＝Ｂのとき、フラグレジスタのビットＣ（０〜３ビットのいずれか）を“１”に、そうでない場合、“０”にセットする比較命令である。
【０００７】
２つ目の条件分岐命令  ＢＮＺ  ７，  ＄１  では、複合条件の比較演算結果と、分岐条件値（マスク値）“７”とのビット演算を行い、条件が不成立ならば、アドレス＄１にジャンプする。ＢＮＺ条件分岐命令は、“ＢＮＺ  Ｍ，Ｌ”形式とされ、Ｍ（４ビットマスク値）とフラグレジスタの対応ビットの論理積をとり、ゼロ判定回路は、論理積結果が全て“０”であるか否か判定し、全て“０”である場合、“１”、そうでなければ、“０”を出力し、ゼロ判定回路の出力信号（セロ／非ゼロ判定結果）を分岐成立／分岐不成立信号として出力し、分岐成立時、Ｌの指定するアドレスに分岐する。なお、ＢＮＺ  ７、＄１においてマスク値は“０１１１”であり、フラグレジスタのビット０〜３のうちビット０〜２の値に応じた条件分岐を行う。
【０００８】
このように、比較命令ＳＬＥ  Ｘ，１，０，・・・と、条件分岐命令ＢＮＺの２つの命令を用いている。
【０００９】
このプログラム例では、値Ｘ（レジスタに相当）に対する３つの比較条件（Ｘ＞１、Ｘ＜１０、Ｘ！＝５）のうち１つでも不成立のとき、すなわち、アセンブラコードによれば、３つの比較条件（Ｘ＜＝１、Ｘ＞＝１０、Ｘ＝５）のうちいずれか１つでも成立したときに、分岐先＄１にジャンプする場合を示しているが、比較結果の反転を行うことですべてＯＲ条件にすることも可能となっている。
【００１０】
なお、特許文献２には、パイプラインレジスタが出力する命令を用いて、外部状態信号を選択するための値と符号制御のための値とを条件値選択器で選択し、選択された値を用いて、外部状態信号から信号を条件符号選択器にて選択し、符号制御器にて極性判定を行うことで、次番地選択器は、非分岐アドレスもしくは分岐アドレスを選択して出力することができるため、プログラム順序の分岐条件もしくは極性判定条件を変更する場合、命令メモリの命令語を変更することなく、条件レジスタの内容を変更するだけで、分岐条件もしくは極性判定条件を変更することができるようにした構成が開示されている。
【００１１】
【特許文献１】特開平５−２７４１４３号公報
【特許文献２】特開平６−２９００４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献１記載の複合条件処理方式は、複合条件を１回だけ演算する場合には、特段に問題は生じ無い。しかしながら、同じ条件を繰り返し実行するループ処理に用いようとした場合、以下のような問題点を有している（以下は、本発明者の分析結果による）。
【００１３】
第１の問題点は、複合条件の比較命令と条件分岐命令とをセットで実行する必要があるため、毎回、条件分岐処理に２ステップ分の実行サイクルが必要とされる、ということである。この点について以下に説明する。
【００１４】
特許文献１記載の複合条件処理方式では、図１１に示すように、２命令分のサイクル数が必要となる。なお、図１１は、特許文献１記載の複合条件処理方式の動作を説明するために、本発明者が作成したものである。
【００１５】
図１１に示した例では、１回に付き、比較命令（ＳＬＥ  Ｘ，１，０，・・・）と条件分岐命令（ＢＮＺ）の２命令分の、６サイクル（Ｆ（命令フェッチ）、Ｄ（命令デコード）、ＥＸ（実行）、Ｆ、Ｄ、ＥＸ）を要している（図１１の８−１、８−２、８−３等参照）。複合条件の比較命令（ＳＬＥ  Ｘ，１，０，・・・）では、複合条件の各条件に対応する比較演算を並列実行し、比較演算結果を、フラグレジスタの指定ビットに設定し、条件分岐命令（ＢＮＺ）では、フラグレジスタの値とマスク値の論理演算結果に基づき分岐判定が行われる。このように、特許文献１記載の複合条件処理方式においては、命令が比較命令と条件分岐命令の２つに分かれているため、命令フェッチと命令デコードのサイクルが少なくとも２回必要となり、サイクル数が増え、ループ処理でのサイクル数の増大が顕著となり律速要因となる。
【００１６】
第２の問題点は、特許文献１記載の複合条件処理方式においては、比較命令は、複合条件をすべて１命令で並列実行する構成とされており、複数の条件を表すために、命令長が長くなる、ということである。
【００１７】
例えば、比較命令
ＳＬＥ  Ｘ，１，０    ＳＧＥ  Ｘ，１０，１    ＳＥＱ  Ｘ，５，２
において、
・命令コードを８ビット（２５６種類までの命令を有するプロセッサと仮定）、
・比較器の種類は６種類であることから、比較器の種類の選択に３ビット、
・オペランドＸは、１６個のレジスタから１つを選択するものとすると、レジスタ選択用に４ビット、
・オペランドの条件値（例えば“ＳＬＥ  Ｘ，１，０”の１は、比較条件Ｘ＜＝１における右辺の１に対応する）を、０〜１５まで指定できるものとして４ビット、
・オペランドのフラグレジスタ内のビット位置指定（ビット０〜３のいずれか）を２ビットとすると、合計で、
８＋４＋（３＋４＋２）×３＝３９ビット必要となる（表１参照）。
【００１８】
【表１】
2008305185.tif 000003
【００１９】
このように、命令長が長くなるのは、特許文献１の並列処理装置では、複合条件をすべて１つの命令（比較命令）で指定しているためである。
【課題を解決するための手段】
【００２０】
本願で開示される発明は、前記課題を解決するため概略以下の構成とされる。
【００２１】
本発明の１つのアスペクト(側面)に係る装置は、命令セットとして、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含む。本発明において、前記条件設定命令の実行時、前記条件設定命令で指定された条件を記憶する条件設定記憶部と、前記条件分岐命令の実行時、前記条件設定記憶部に記憶された条件のうち前記条件分岐命令で選択された条件に対応する比較演算を行う条件比較部と、前記条件比較部での比較演算結果に基づき、分岐先へ分岐するか否かを判定する分岐条件判定部と、を備えている。
【００２２】
本発明において、前記条件分岐命令が、分岐判定用の条件として、複数の条件からなる複合条件を含む複合分岐条件命令よりなる。本発明において、前記条件設定記憶部は、前記複合分岐条件命令の複合条件を構成する複数の条件を記憶する複合条件記憶部を少なくとも１つ備えるとともに、前記複合分岐条件命令で指定された複合条件記憶部を有効とする回路を備えている。本発明において、前記条件比較部は、前記複合条件分岐命令の実行時、前記複合条件分岐命令で指定された複合条件記憶部に保持された複数の条件の各々に対して比較演算を実行するようにしてもよい。
【００２３】
本発明において、前記条件比較部が、前記複合条件分岐命令で指定された複合条件記憶部の複数の条件を並列に比較する複数の比較器を備えている。本発明において、前記分岐条件判定部は、前記複数の比較器での比較結果に基づき、分岐先へ分岐するか否かを判定する、ようにしてもよい。
【００２４】
本発明において、前記条件設定命令は、前記条件設定記憶部の複合条件記憶部のうち、どの複合条件記憶部を用い、前記複合条件記憶部において何番目の条件を設定するかをオペランドで指定する、ようにしてもよい。
【００２５】
本発明においては、プロセッサは、命令セットとして、指定した複合条件を構成する複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する処理を行う複合条件分岐命令と、
複合条件と、該複合条件を構成する複数の条件のうちどの条件であるかを指定し、前記条件を設定する処理を行う条件設定命令と、を含む。本発明において、プロセッサは、、前記条件設定命令で指定された複合条件を複数組記憶する条件設定記憶部と、前記複合条件分岐命令の実行時に、前記条件設定記憶部に記憶保持されている複数組の複合条件のうち、前記複合条件分岐命令で指定された複合条件を構成する複数の条件の各々について比較演算を実行する条件比較部と、前記条件比較部で行われた比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、を備えている。
【００２６】
本発明に係る方法において、命令セットに、条件の成立の有無に応じて、分岐先へ分岐／非分岐する条件分岐命令と、前記条件を記憶させる条件設定命令と、を含むプロセッサが、複数の条件設定のために、前記条件設定命令を複数回実行することで複数の条件を記憶部に記憶しておき、
前記条件分岐命令の実行時、前記条件設定命令によって前もって記憶されている複数の前記条件のうち、前記条件分岐命令で選択された条件に関して比較演算を行い、
前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する。
【００２７】
本発明に係る方法において、前記条件分岐命令は、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
複数の前記条件設定命令を実行することで、前記複合分岐条件命令の複合条件を構成する複数の条件を１組として１又は複数組を記憶しておき、
前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複合条件のうち、複合分岐条件命令で指定された複合条件が選択され、選択された複合条件の各々の条件に対応する比較演算が実行され、複数の条件の比較演算の結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を１つの複合条件分岐命令で実行できるようにしている。
【発明の効果】
【００２８】
本発明によれば、条件設定命令を実行することで条件を予め記憶しておき、条件分岐命令では、前もって設定された条件を選択する構成としたことにより、サイクル数、命令長の増大を抑え、条件分岐処理を高速化することができる。本発明によれば、同一条件の処理を繰り返し実行する回数が多いほど、処理性能の向上効果は大となる。
【発明を実施するための最良の形態】
【００２９】
本発明においては、条件設定命令によって複合条件を複数個記憶しておき（ただし、１つの複合条件を記憶してもよい）、記憶された複合条件のうち、任意の複合条件を、複合条件分岐命令実行時に呼び出して、条件分岐処理を実行できるようにしたものである。かかる構成により、より複雑な条件や多重ループ処理等に適用でき、条件分岐を高速化できる。
【００３０】
本発明に係るプロセッサ装置は、１つの態様として、命令セットとして、
（Ａ）指定した複合条件を構成する複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する処理を行う複合条件分岐命令と、
（Ｂ）複合条件と、該複合条件を構成する複数の条件のうちどの条件であるかを指定し、前記条件を設定する処理を行う条件設定命令と、
を含む。
【００３１】
本発明に係るプロセッサ装置においては、命令デコーダでデコードされた命令を実行する実行部として、前記条件設定命令で指定された複合条件を１又は複数組記憶する複合条件設定記憶部（１）と、前記複合条件分岐命令の実行時に、複合条件設定記憶部（１）に記憶保持されている複合条件のうち、前記複合条件分岐命令で指定された複合条件を構成する複数の条件の各々について比較演算を実行する条件比較部（２）と、前記条件比較部（２）で行われた比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部（３）とを備えている。
【００３２】
本発明において、前記条件設定命令は、
オペランドに、前記複合条件設定記憶部における複合条件の格納先の指定情報、及び前記複合条件を構成する複数の条件のうち何番目の条件であるかの指定情報と、
比較演算の種別と、
比較演算対象の演算用レジスタのレジスタアドレス、又は、前記演算用レジスタのレジスタアドレスと即値データと、
を含むようにしてもよい。
【００３３】
本発明において、前記複合条件分岐命令は、
オペコードに、比較演算の種別（複合条件の複数の条件に関する複数の比較演算結果の比較演算の種別、ＮＥ、ＥＱ等）を含み、
オペランドに、前記複合条件設定記憶部における複合条件の格納先の指定情報と、前記分岐条件値と、前記分岐先と、を含むようにしてもよい。
【００３４】
本発明において、複合条件設定記憶部（１）は、
比較対象の２つの演算用レジスタの第１及び第２のアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を、１セットとして、記憶する条件記憶部（１０１、１０２、１０３）を、複合条件分岐命令の複合条件を構成する複数の条件の個数に対応して備えた複合条件記憶部を、複数備えている(図２の１００、２００、３００、４００)。
【００３５】
複合条件記憶部(図２の１００、２００、３００、４００)の各々は、前記条件設定命令によって指定された条件記憶部を選択するセレクタ（１０４）を備えている。
【００３６】
複合条件設定記憶部（１）は、複数の複合条件記憶部（図２の１００、２００、３００、４００）のうち、複合条件分岐命令によって指定された複合条件に対応する複合条件記憶部を選択するセレクタ（５００）を備えている。セレクタ（５００）は、条件設定命令によって指定された複合条件記憶部の選択も行う。なお、複合条件設定記憶部（１）において、プログラムの構成如何によっては、４個の複合条件記憶部（図２の１００、２００、３００、４００）の全てを用いずに、１つあるいは２つの複合条件記憶部を用いて処理を実行する場合もある。４個の複合条件記憶部を備えた場合、４個の異なる複合条件を複合条件分岐命令の実行に先立って記憶保持しておくことができるということである。また、条件記憶部（１０１、１０２、１０３）の記憶内容は、基本的に、次の条件設定命令で書き換えが行われるまで保持される。
【００３７】
条件比較部（２）は、条件記憶部（例えば図３の１０１）に記憶された前記第１及び第２のアドレスをデコードし、前記演算用レジスタに第１、第２のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第１及び第２のデコーダ（図３の２０１ａ、２０１ｂ）と、
前記複合条件記憶部に記憶された即値データと、前記第２のデコーダの値を受け、前記フラグの出力に基づき一方を選択するセレクタ（図３の２０１ｃ）と、
前記第３のセレクタの出力と前記第１のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器（２０１ｄ）と、の組（図３の２０１、２０２、２０３）を、前記複合条件記憶部の条件記憶部（１０１、１０２、１０３）に対応して備えている。
【００３８】
前記複合条件設定記憶部において、前記条件設定命令の実行によって設定された条件は、前記条件設定命令のあとに別の条件設定命令が実行され、前記別の条件設定命令によって前記条件設定比較部が再び選択され別の条件に書き換えられる。
【００３９】
算術論理演算装置（図１の７）での演算結果を反映するフラグレジスタ（図１の８）に基づき、条件判定を行う条件分岐判定部（９）の出力と、前記複合条件分岐判定部（３）からの出力とに入力が接続され、命令デコーダ（４）でデコードされた条件分岐命令が、前記複合条件分岐命令のときは、前記複合条件分岐判定部からの出力を選択し、前記複合条件分岐命令以外の条件分岐命令のときは、前記条件分岐判定部の出力を選択する第４のセレクタ（１０）と、セレクタ（１０）から出力された結果の真偽値を受け、真である場合には、命令デコーダ（４）でデコードされた条件分岐命令で指定された分岐先アドレスを選択し、偽の場合には、プログラムカウンタ（１２）の値＋１のアドレスを選択してプログラムカウンタ（１２）に設定するセレクタ（１１）と、をさらに備えている。以下実施例に即して説明する。
【実施例】
【００４０】
図１は、本発明の一実施例の構成を示す図である。図１を参照すると、本実施例のマイクロコンピュータは、複数の複合条件を記憶できる複合条件設定記憶部１と、複合条件の個々の条件に対して比較演算を行う条件比較部２と、複合条件分岐命令においてプログラムの分岐を行うか否かを判定する複合条件分岐判定部３と、命令コードを保持および解析し、その命令に関連するブロックを制御する命令デコーダ４と、命令コードを記憶している命令メモリ５と、プロセッサが演算のために用いる汎用の演算用レジスタ群６と、演算命令に対応する算術演算や論理演算等を行う演算ユニット（Arithmetic  and Logic  Unit;ＡＬＵ）７と、演算ユニットの演算結果を基に生成される各種フラグを保持するフラグレジスタ８と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部９と、条件分岐命令か複合条件分岐命令かで入力値を選択するセレクタ１０と、セレクタ１０の値を基に、分岐先アドレスか次の命令のアドレス（現在のプログラムカウンタの値ＰＣ＋１）かを選択するセレクタ１１と、プロセッサの命令実行位置を表すプログラムカウンタ（ＰＣ）１２と、を備えている。
【００４１】
ここで、発明の理解のために、特許文献１等を参照して説明した複合条件分岐ではない通常の条件分岐動作について、図１０に示した比較例（参考例）を用いて説明しておく。条件分岐は、図１０（ｂ）に示すように、まず算術演算命令（ＡＤＤ  ｒ１，５）や比較命令（ＣＭＰ  ｒ１，１００）といった命令（ｉ）を実行してから、条件分岐命令（ＢＥＱ  Ｌ１）（ｉｉ）を行う。この動作を、図１０（ａ）のブロック図を用いて説明する。
【００４２】
初めにプログラムカウンタ（ＰＣ）１２の値が示す命令メモリ５のアドレスからデータすなわち命令コードが命令デコーダ４にフェッチされる。
【００４３】
この命令は、比較命令（図１０（ｂ）のＣＭＰ  ｒ１，１００  （ｉ））である。
【００４４】
命令デコーダ４は、命令コードを解析して、演算ユニット（ＡＬＵ）７にオペコード（ＣＭＰ）とオペランド（ｒ１と１００）を渡す。
【００４５】
演算ユニット７内の演算器７ａで演算用レジスタ６から１番目のレジスタ（ｒ１）の値を読み出し、値１００（即値データ）と比較演算を行う。
【００４６】
その演算結果を基に、フラグ生成部７ｂは各種フラグ値を計算し、フラグレジスタ８に格納する。図１０におけるフラグＺ、Ｓ、Ｅ、Ｃ、Ｏは以下の通りである。
【００４７】
フラグＺは、Ｚｅｒｏフラグであり、演算結果がゼロのとき１、ゼロ以外のとき０の値をとる。
【００４８】
フラグＳは、Ｓｉｇｎフラグであり、演算結果が負の値のとき１、正のとき０となる。
【００４９】
フラグＥは、Ｅｖｅｎフラグであり、演算結果が偶数のとき１、奇数のとき０をなる。
【００５０】
フラグＣは、Ｃａｒｒｙフラグであり、演算結果が桁上がり／下がりしたとき１となる。
【００５１】
フラグＯは、Ｏｖｅｒｆｌｏｗフラグであり、演算結果が桁あふれしたときに１となる。
【００５２】
命令デコーダ４は、この比較命令は分岐を伴わない命令と判断し、セレクタ１１は偽（Ｆ）を選択するよう制御する。
【００５３】
これにより、次のアドレスの命令が命令デコーダ４にフェッチされることになる。
【００５４】
次の命令は、条件分岐命令（図１０（ｂ）のＢＥＱ  Ｌ１  （ｉｉ））である。
【００５５】
命令デコーダ４は、命令コードを解析して、条件分岐判定部９にオペコード（ＢＥＱ）を渡し、オペランド（Ｌ１）、すなわち分岐先アドレスをセレクタ１１へ出力する（この値は命令デコーダ４内のレジスタで保持されている）。
【００５６】
条件分岐判定部９は、オペコードの種類からＺｅｒｏフラグを選択し、Ｚｅｒｏフラグの値が１なら（ＥＱが成立）、真（Ｔ）をセレクタ１１へ出力し、Ｚｅｒｏフラグの値が０なら（ＥＱが不成立）、偽（Ｆ）をセレクタ１１へ出力する。
【００５７】
ここで、セレクタ１１において、条件分岐判定部９の結果が真（Ｔ）であった場合には、分岐先アドレス（Ｌ１）が選択されて、次はその分岐先にある命令が実行される。また、偽（Ｆ）であった場合には、“ＰＣ＋１”が選択されて、次のアドレスの命令が実行される。
【００５８】
このように、通常の条件分岐は、予め算術論理演算命令や比較命令等を実行して、フラグレジスタ８に条件分岐するための情報を記憶しておき、その直後に実行する条件分岐命令において、フラグレジスタ８に記憶されている値を、命令コードで指定された分岐条件に照らして評価し、分岐を行うか否かを判定する。すなわち、算術論理演算命令や比較命令と、条件分岐命令の２つの命令が対となって実行される。この場合、ループ内に、通常の条件分岐が実行されると、常に２つの命令が実行されることになる。
【００５９】
次に、本発明における複合条件分岐命令の動作に関して説明する。本発明の一実施例においては、図１に示したように、図１０（ａ）の構成に、条件設定命令と、複合条件分岐命令を命令セットとして追加し（命令デコーダは、これらの追加命令を解析できるように構成される）、追加された命令（条件設定命令と、複合条件分岐命令）を実行する実行部として、複合条件設定記憶部１、条件比較部２、複合条件分岐判定部３、複合条件分岐判定部３と条件分岐判定部９の判定結果を選択するセレクタ１０を備えたものである。
【００６０】
図２は、図１に示した複合条件設定記憶部１の構成を示す図である。図２を参照すると、複合条件設定記憶部１は、それぞれ、複合条件分岐命令の分岐判定に用いられる複合条件を記憶する複合条件記憶部１００、２００、３００、４００と、複数の複合条件記憶部１００〜４００のうちいずれを有効とするかを選択するセレクタ５００とを備えている。
【００６１】
複合条件記憶部１００は、複合条件を構成する複数の条件のうち１番目の条件を記憶する条件記憶部１０１、複合条件を構成する複数の条件のうち２番目の条件を記憶する条件記憶部１０２、複合条件を構成する複数の条件のうち３番目の条件を記憶する条件記憶部１０３と、複数の条件記憶部１０１〜１０３のうちのいずれを有効とするかを選択するセレクタ１０４を備えている。なお、図２では、簡略化のため、複合条件記憶部２００、３００、４００の内部構成は図示されないが、これらは、いずれも複合条件記憶部１００と同様の構成とされる。
【００６２】
条件記憶部１０１において、
ｒ１０１ａは、演算用レジスタ６の第１のレジスタアドレスを記憶するレジスタ、
ｒ１０１ｂは、演算用レジスタ６の第２のレジスタアドレスを記憶するレジスタ、
ｒ１０１ｃは、即値データを記憶するレジスタ、
ｒ１０１ｄは、Ｒ／Ｉフラグを記憶するレジスタ（Ｒ＝Register：レジスタアドレス）、Ｉ＝Immediate：即値の意味）、
ｒ１０１ｅは、比較器の演算の種類を記憶するレジスタ
である。
【００６３】
図３は、図１の条件比較部２の構成を示す図である。本実施例では、条件比較部２は、比較演算を行う条件比較部２０１、２０２、２０３の３個有しており、それぞれ、条件記憶部１０１、１０２、１０３に対応している。
【００６４】
条件比較部２０１は、
演算用レジスタ６のレジスタアドレスを格納する、複合条件記憶部１００の条件記憶部１０１のレジスタ（「アドレスレジスタ」ともいう）ｒ１０１ａ、ｒ１０１ｂからのアドレスを受けてデコードし、演算用レジスタ６のレジスタを選択するデコーダ２０１ａ、２０１ｂと、複合条件記憶部１００の条件記憶部１０１のＲ／Ｉフラグｒ１０１ｄの値を選択制御信号として入力し、複合条件記憶部１００の条件記憶部１０１のレジスタｒ１０１ｃからの即値と、デコーダ２０１ｂの出力を入力し、いずれか１方を選択するセレクタ２０１ｃと、演算用レジスタ６内のレジスタ値（デコーダ２０１ａの出力ｒ１）と、セレクタ２０１ｃから出力された値ｒ１２とを比較演算する比較器２０１ｄと、を備えている。なお、図３では、簡略化のため、条件比較部２０２、２０３の内部構成は図示されないが、これらは、いずれも条件比較部２０１と同様の構成とされる。
【００６５】
本発明では、プロセッサの命令セットに、あらたに、条件設定命令、複合条件分岐命令を用意する。
【００６６】
条件設定命令は、比較演算を行う条件を設定する命令であり、アセンブラのニーモニックでは下記のように表される。
【００６７】
ＳＥＴＣＭＰ  ｓ０，ｃ０，ｒ１，Ｌ，ｒ１１  ・・・（１）
【００６８】
“ＳＥＴＣＭＰ”は、条件設定命令の名前を表している。
【００６９】
“ｓ０”は、１番目の複合条件設定を表しており、複合条件設定記憶部１における複合条件記憶部１００（図２参照）を示している。同様に、“ｓ１”、“ｓ２”、“ｓ３”は、それぞれ、複合条件設定記憶部１における、複合条件記憶部２００、３００、４００（図２参照）に対応する。
【００７０】
“ｃ０”は、１番目の条件を表しており、条件記憶部１０１（図２参照）を示している。
【００７１】
“ｃ１”、“ｃ２”は、それぞれ条件記憶部１０２、１０３（図２参照）に対応する。
【００７２】
“ｒ１”および“ｒ１１”は、演算用レジスタ６内のレジスタアドレス１および１１のレジスタを表している。
【００７３】
“Ｌ”はｒ１とｒ１１の値を比較するときに用いる、比較演算器の種類“＜”（Ｌｅｓｓ）を表している。
【００７４】
図２において、命令デコーダ４には、上記（１）の条件設定命令の命令コードを解析して、ビット列に分解された状態が模式的に示されている。
【００７５】
すなわち、
“ｓ０”（００ｂ）（ｂは２進表示を表す）は、セレクタ５００に入力され、セレクタ５００は、複合条件記憶部１００を選択する。
【００７６】
“ｃ０”（００ｂ）は、セレクタ１０４に入力され、セレクタ１０４は、条件記憶部１０１を選択する。
【００７７】
“ｒ１”（０００１ｂ）はレジスタｒ１０１ａに入力されて保持される。
【００７８】
“ｒ１１”（１０１１ｂ）はレジスタｒ１０１ｂに入力されて保持される。
【００７９】
Ｒ／Ｉフラグ（０ｂ）はレジスタｒ１０１ｄに入力されて保持される、
【００８０】
比較器の種類“Ｌ”（０１０ｂ）はレジスタｒ１０１ｅに入力されて保持される。
【００８１】
この場合、図２の条件記憶部１０１（セレクタ１０４は条件記憶部１０１を選択）のレジスタｒ１０１ａ、ｒ１０１ｂ、ｒ１０１ｄ、ｒ１０１ｅには、バイナリ値の１、１１、０と、２項演算子“＜”に対応する符号がそれぞれ記憶保持される。即値ｒ１０１ｃには値は設定されない。
【００８２】
これらの値は、次に同じ場所の条件記憶部に対する条件設定命令が実行されない限り保持される。
【００８３】
複合条件分岐命令とは、条件設定命令で設定した各条件の比較演算を行い、その結果と分岐条件値との比較演算を行う命令で、アセンブラのニーモニックでは、下記のように表される。
【００８４】
ＸＢＮＥ  ｓ０，０１１１ｂ，  Ｌ１  ・・・（２）
【００８５】
“ＸＢＮＥ”は、複合条件分岐命令の名前で、“ＮＥ”の部分は、比較演算器の種類“！＝”を表している。なお、先頭の“Ｘ”は、通常の条件分岐命令ＢＮＥの拡張命令（複合条件分岐命令）であることを表している。
【００８６】
“ｓ０”は、１番目の複合条件設定を意味し、図２の複合条件記憶部１００を選択することを示している。
【００８７】
“０１１１ｂ”は、分岐条件値で、各条件の比較演算結果との比較を行う値を２進数で表している。
【００８８】
“Ｌ１”は、条件分岐の判定結果が真であった場合に分岐する、プログラムの分岐先アドレスを表している。
【００８９】
図４には、命令デコーダ４において、上記（２）の複合条件分岐命令の命令コードを解析してビット列に分解された状態が示されている。
【００９０】
“ｓ０”（００ｂ）は、セレクタ５００に入力され、セレクタ５００は、複合条件記憶部１００を選択する。これにより、条件記憶部１０１、１０２、１０３にそれぞれ記憶されている値（レジスタアドレス、即値、Ｒ／Ｉフラグ、比較器選択）が、条件比較部２０１、２０２、２０３にそれぞれ入力され、条件比較部２０１、２０２、２０３での比較演算結果Ｃ０、Ｃ１、Ｃ２が複合条件分岐判定部３にそれぞれ２ａ、２ｂ、２ｃとして出力される。
【００９１】
複合条件分岐判定部３において、分岐条件値３ａと比較演算結果２ａ、２ｂ、２ｃとが比較器３ｃで比較演算され、結果（真（Ｔ）／偽（Ｆ））がセレクタ１０に出力される。
【００９２】
比較器３ｃには、命令デコーダ４から分岐条件値３ａとして“０１１１ｂ”が入力され、演算種別３ｂとして、“ＮＥ”（ＮＯＴ  ＥＱＵＡＬ、“！＝”と表記）が入力される。
【００９３】
分岐条件値“０１１１ｂ”と比較演算結果２ａ、２ｂ、２ｃとが“ＮＥ”（ＮＯＴ  ＥＱＵＡＬ）の場合、比較器３ｃの出力は真（Ｔ）となる。
【００９４】
ここで、比較演算結果２ａ、２ｂ、２ｃは、図８（ａ）で示すように、分岐条件値３ａのそれぞれビット０、１、２に対応付ける。なお、分岐条件値３ａの値が“００１１ｂ”であった場合は、図８（ｂ）のようになる。
【００９５】
命令デコーダ４は、複合条件分岐命令（“ＸＢＮＥ”等、“Ｘ”ではじまるニーモニック）であった場合は、出力信号１０ａの値１（２進値）を選択制御信号として、セレクタ１０に出力する。このため、セレクタ１０からは、複合条件分岐判定部３での比較演算結果が、そのままセレクタ１１へ出力される。
【００９６】
一方、通常の条件分岐命令であった場合は、命令デコーダ４は、信号１０ａとして０をセレクタ１０に出力し、セレクタ１０は、条件分岐判定部９の出力を選択してセレクタ１１へ出力する。条件分岐判定部９は、通常の分岐命令に対して、演算ユニット７における演算の結果設定されるフラグレジスタ８に関する条件分岐判定を行う。
【００９７】
複合条件分岐判定部３での比較演算結果が真（Ｔ）であった場合には、セレクタ１１は、分岐先アドレス“Ｌ１”を選択してプログラムカウンタ１２に設定する。このため、次のサイクルでは、分岐先アドレス“Ｌ１”にある命令がフェッチされて命令デコーダ４に入力されて実行される。
【００９８】
複合条件分岐判定部３での比較演算結果が偽（Ｆ）であった場合には、セレクタ１１は、“ＰＣ＋１”を選択してプログラムカウンタ１２に設定する。このため、アドレス“ＰＣ＋１”の命令がフェッチ・デコード・実行される。
【００９９】
このようにして複合条件分岐命令は、複合条件設定記憶部１に記憶されている特定の複合条件を選択すると共に、比較演算を同時に評価し、分岐を行うか否かを判定することを１つの命令で実行する。
【０１００】
本実施例における複合条件分岐命令の動作について図９のタイミングチャートを参照して説明する。
【０１０１】
図９の命令サイクル６−１における１回目の複合条件分岐命令
ＸＢＮＥ  ｓ０，０１１１ｂ，Ｌ１
において、命令フェッチサイクルＦで、命令デコーダ４に命令コードが命令メモリ５から読み込まれる。
【０１０２】
次の命令デコードサイクルＤで、読み込まれた命令コードは、命令デコーダ４で、図４に示すように、解析される。
【０１０３】
命令デコーダ４において、ＸＢＮＥの“ＮＥ”（！＝）は“００１ｂ”であり、比較器３ｃに設定される。また複合条件分岐命令であるため、出力信号１０ａの値１（２進値）を選択制御信号として、セレクタ１０に出力される。１番目の複合条件設定で“００ｂ”が、複合条件設定記憶部１のセレクタ５００に供給される。分岐条件値“０１１１ｂ”は、“０１１１ｂ”として比較器３ｃに設定される。“Ｌ１”は“ＸＸＸＸＸＸＸＸｂ”（ジャンプ先アドレスＬ１を表す値）として、セレクタ１１に出力される。
【０１０４】
命令実行サイクルＥＸ（６−Ａ）において、複合条件の３つの条件に対応して、条件比較部２の比較比較部２０１、２０２、２０３（図３参照）では演算用レジスタ６のレジスタを指定する条件記憶部１０１、１０２、１０３のレジスタｒ１０１ａ、ｒ１０１ｂを用いて、デコーダ２０１ａ、２０１ｂが、演算用レジスタ６の中から、該当する演算用レジスタ６の値を読み出し、１番目の複合条件設定の複合条件の比較演算が行われ、条件比較部２の比較比較部２０１、２０２、２０３からそれぞれ比較演算結果ｃ０、ｃ１、ｃ２が出力される。つづく命令実行サイクルＥＸ（６−Ｂ）において、比較器３ｃでは、比較演算結果（ｃ０、ｃ１、ｃ２）＝（１、０、０）を分岐条件値“０１１１ｂ”と比較し、比較演算結果ｃ０、ｃ１、ｃ２がすべて１でないため条件ＮＥ（！＝）が成立し、比較器３ｃは真（Ｔ）を出力し、セレクタ１１はジャンプ先アドレスＬ１を出力する。次の命令フェッチサイクル（６−Ｃ）において、プログラムカウンタ（ＰＣ）１２に設定されたジャンプ先アドレスＬ１の命令がフェッチされる。
【０１０５】
図９の命令サイクル６−２における２回目の複合条件分岐命令  
ＸＢＮＥ  ｓ０，０１１１ｂ，Ｌ１
の命令実行サイクルＥＸ（６−Ｄ）において、比較比較部２０１、２０２、２０３の比較演算結果（ｃ０、ｃ１、ｃ２）は（１、１、１）となる。つづく命令実行サイクルＥＸ（６−Ｅ）において、比較器３ｃは、分岐条件値“０１１１ｂ”と比較し、比較演算結果ｃ０、ｃ１、ｃ２がすべて１であるため、条件ＮＥが不成立となり、比較器３ｃは偽（Ｆ）を出力し、セレクタ１１は次のアドレスｎ＋１を出力する。次の命令フェッチサイクル（６−Ｆ）において、プログラムカウンタ（ＰＣ）１２に設定されたアドレスｎ＋１の命令がフェッチされる。
【０１０６】
図５には、本実施例において、複合条件を１つだけ用いたプログラムの例が示されている。予め、前記（１）の条件設定命令により、３つの条件（複合条件）を設定している（図５（ａ））。図５において”／／”は注釈記号であり、右欄が注釈であることを表している。
【０１０７】
図５（ａ）において、ＳＥＴＣＭＰ  ｓ０，ｃ０，ｒ１，Ｌ，ｒ１１  は、図１の複合条件記憶部１００、条件記憶部１０１を選択し、ｒ１＜ｒ１１の比較演算を設定記憶する。
【０１０８】
ＳＥＴＣＭＰ  ｓ０，ｃ１，ｒ２，ＧＥ，１０は、図１の複合条件記憶部１００、条件記憶部１０２を選択し、ｒ２≧１０の比較演算を設定記憶する。
【０１０９】
ＳＥＴＣＭＰ  ｓ０，ｃ２，ｒ３，ＥＱ，１３は、図１の複合条件記憶部１００、条件記憶部１０２を選択し、ｒ３＝Ｒ１３の比較演算を設定記憶する。
【０１１０】
次に、これらの条件を変化させる何らかの処理を行った後、前記（２）の複合条件分岐命令を実行する（図５（ｂ））。
【０１１１】
ここで、複合条件、条件ｃ０、ｃ１、ｃ２が全て成立しないときは、ラベルＬ１にジャンプし、処理を繰り返し行う（命令ＸＢＮＥ  Ｓ０、０１１１ｂ、Ｌ１参照）。
【０１１２】
図６及び図７には、本実施例において、複合条件を複数用いたプログラムの例が示されている。なお、図６及び図７は単に図面作成の都合で分図されており、図６の最下行の命令（ＳＥＴＣＭＰ  ｓ３，ｃ２，ｒ６，ＮＥ，４）につづいて、図７の最上行の命令（ＬＤ  ｒ１０、０）が続くものとする。
【０１１３】
第１の複合条件を、３つの条件設定命令（ＳＥＴＣＭＰ）を用いて、図６（ａ）のように設定する。図６（ａ）の３つの条件設定命令（ＳＥＴＣＭＰ）は、いずれも複合条件設定記憶部１の複合条件記憶部１００を指定しており、複合条件記憶部１００内の条件記憶部１０１、１０２、１０３（図２参照）にそれぞれの条件が設定され記憶保持される。
【０１１４】
同様に、第２〜４の複合条件を、それぞれ、３つの条件設定命令を用いて、図６（ｂ）、図６（ｃ）、図６（ｄ）のように設定する。図６（ｂ）、図６（ｃ）、図６（ｄ）において、３つの条件設定命令（ＳＥＴＣＭＰ）によって設定される複合条件は、複合条件設定記憶部１の複合条件記憶部２００、３００、４００内の条件記憶部１０１、１０２、１０３（図２参照）に設定され記憶保持される。
【０１１５】
複合条件分岐命令は、例えば図７（ｅ）のように記述される。このアセンブラ言語の記述に対応する言語Ｃのソースプログラムは、図７（ｆ）に示される。
【０１１６】
図７（ｅ）のアセンブラ言語によるソース、図７（ｆ）の言語Ｃによるソースの手順の概略を以下に説明する。ループ（ｄｏループ）の直前で演算用レジスタ６のｒ１０を０とする。ｄｏループでは、まず処理Ａ（ｒ１〜ｒ３、ｒ１１、ｒ１３の値を更新する処理）に続いて、複合条件（ｒ１＜ｒ１１）且つ（ｒ２≧１０）且つ（ｒ３＝＝ｒ１３）（条件ｓ０ｃ０、ｓ０ｃ１、ｓ０ｃ２）が成立するか否かを判断し、成立する場合、処理Ｂを実行する。該複合条件成立しない場合には、（ｒ２＝＝０）（条件ｓ１ｃ０）、（ｒ４＞ｒ１２）且つ（ｒ４！＝ｒ１４）（条件ｓ１ｃ１、ｓ１ｃ２）が成り立つ場合、処理Ｃを実行する。
【０１１７】
（ｒ２＝＝０）が成立しない場合、（ｒ２＝５）（条件ｓ２ｃ０）が成り立つ場合、処理Ｄを実行し、つづいて、（ｒ５≧３）且つ（ｒ５＜１２）が成立するか否か判断し、成立する場合、処理Ｅを実行し、成立しない場合、（ｒ６≧１）且つ（ｒ６＜１０）且つ（ｒ６！＝４）が成立するか否か判断し、成立する場合、処理Ｆを実行し、そのあと処理Ｇを実行し、つづいて、ｄｏループのエグジット条件（ｒ１０＝＝０）が成り立つ限り、ラベルＬ＿ＬＯＯＰからの処理を繰り返す、というものである。なお、演算用レジスタ６のｒ１０は、処理Ａ乃至Ｇの中で更新されるものとする。
【０１１８】
本実施例によれば、図７（ｅ）に示すようなアセンブラプログラムによって、図７（ｆ）に示すような複雑な条件判断を、高速に処理することができる。すなわち、図７（ｆ）のような、複雑な条件判断分岐処理を行うにあたり、本実施例では、複合条件を、図６（ａ）乃至（ｄ）の条件設定命令により、事前に、複合条件設定記憶部１に記憶しておくことで、例えばループ処理内に、条件分岐命命令と、該条件分岐命令の直前に置かれ該条件分岐命令で用いられる条件を設定する命令（例えば比較命令）との組を挿入することは不要とされ、ループ処理内において、条件分岐命令のみで条件判断（分岐成立・比成立の判定のための条件判断）を行うことができる。
【０１１９】
なお、本実施例では、複合条件設定記憶部１として、４個の複合条件記憶部（１００、２００、３００、４００）を備え、各複合条件記憶部が３個の条件記憶部（１０１、１０２、１０３）を備えた構成を例として説明したが、本発明はかかる構成に制限されるものでなく、複合条件記憶部、条件記憶部はそれぞれ少なくとも１つ備えた構成であればよく、その数は任意である。
【０１２０】
さらに、本実施例の変形例として、複数の複合条件記憶部（１００、・・・４００）を備えた複合条件設定記憶部１を２個以上備えた構成としてもよい。
【０１２１】
この場合、複合条件分岐命令に複合条件設定記憶部１を選択するビットを追加して、命令で選択するようにしてもよい。例えば、複合条件設定記憶部の１つを割込み処理用にして、割込み処理に入ったら、その複合条件設定記憶部を自動的に選択するように制御してもよい。
【０１２２】
あるいは、マルチタスク環境におけるタスク毎に複数の複合条件設定記憶部１をそれぞれ自動的に選択するように制御してもよい。複数の複合条件設定記憶部１をタスクＩＤに関連付けて管理し、タスクＩＤで複合条件設定記憶部１を選択するようにしてもよい。なお、本実施例では、条件記憶部、複合条件記憶部、複合条件設定記憶部（あるいは、複数の複合条件設定記憶部）という構成を例に説明したが、かかる構成に限定されるものでなく、複合条件設定記憶部の記憶構造の階層化のレベルは任意である。
【０１２３】
上記本実施例では、条件比較部２に、条件比較用の比較器を３個備えた例を説明したが条件比較用の比較器は１個以上であればよく、その個数は任意である。ただし、複合条件命令で同時に評価する複合条件の個数より少ない場合、２サイクル以上のクロックに分けて比較演算を行うことになり、その分複合条件分岐命令のクロックサイクル数が増加することになる。
【０１２４】
本実施例の作用効果について以下に説明する（上記特許文献１、２等の相違点についても説明する）。
【０１２５】
特許文献１及び図１０の比較例では、比較と分岐の２つの命令を組み合わせて条件分岐を行っている。これに対して、本発明によれば、複合条件を複合条件設定記憶部１内の指定した記憶域（格納先）に格納する条件設定命令（ＳＥＴＣＭＰ）と、指定した複合条件を、命令実行時に、複合条件設定記憶部１内の格納先の記憶域から取り出して比較演算できるようにした複合条件分岐命令を有し、条件設定命令によって予め条件の設定を行っておくことで、条件分岐する段階では、１つの条件分岐命令の実行に必要なステップ数しか要しない。このため、本実施例によれば、より高速に分岐処理することが可能である。特に、同じ条件を繰り返し実行するループ処理に適用することで、関連技術と比べて、高速性が増す効果がある。また、本実施例においては、複数の複合条件記憶部（図２の１００、２００、３００、４００）を具備することで、複合条件を複数個記憶させておくことができる。このため、より複雑な条件の組み合わせや多重ループ処理に適用させることができ、高速化を図ることができる。
【０１２６】
なお、前記した特許文献２の場合、複合条件設定記憶部内の条件記憶部に相等するものは１組（単一条件）しかない。これに対して、本発明においては、条件記憶部を複数組（複合条件）持ち、それらの組のどれを選択するかを指定するセレクタを備え、さらに、複合条件を複数個を備えている。特許文献２においては、従来の一般的な手法と同様に、比較又は演算命令の後に、条件分岐命令を実行するという、２つの命令をセットとして、条件分岐を行う方式の構成となっている。特許文献２においては、条件レジスタ（第１と第２）で記憶している内容（あふれ、ゼロ、符号など）については、単一の条件を記憶している。また、特許文献２においては、演算器（図示されていない）から、演算結果の出力信号（外部状態信号）の何れかを条件符号選択器で選択している点から、外部状態信号を生成する演算は、条件分岐命令よりも前に実行されていなければならない。このように、特許文献２に開示された発明は、複合条件分岐のための複数の条件を予め設定（記憶）したり、設定した条件を、条件分岐命令を処理するときに実行する、という構成とは全く相違したものであることがわかる。
【０１２７】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０１２８】
【図１】本発明の一実施例の構成を示す図である。
【図２】本発明の一実施例における複合条件記憶部の構成を示す図である。
【図３】本発明の一実施例における条件比較部とその関連部分の構成を示す図である。
【図４】本発明の一実施例における複合条件分岐判定部とその関連部分の構成を示すブロック図である。
【図５】本発明の一実施例において条件設定命令と複合条件分岐命令を用いたプログラムの例を示す図である。
【図６】本発明の一実施例において条件設定命令と複合条件分岐命令を用いたプログラムの例を示す図（その１）である。
【図７】本発明の一実施例において条件設定命令と複合条件分岐命令を用いたプログラムの例を示す図（その２）である。
【図８】本発明の一実施例における比較演算結果と分岐条件値のビットの対応を示す図である。
【図９】本発明の一実施例の動作を示すタイミングチャートである。
【図１０】比較例の構成と条件分岐命令を説明する図である。
【図１１】特許文献１の動作を説明するためのタイミングチャートである。
【符号の説明】
【０１２９】
１  複合条件設定記憶部
２  条件比較部
３  複合条件分岐判定部
３ｃ  比較器
４  命令デコーダ
５  命令メモリ
６  演算用レジスタ
７  演算ユニット
７ａ  演算器
７ｂ  フラグ生成部
８  フラグレジスタ
９  条件分岐判定部
１０  セレクタ
１１  セレクタ
１２  プログラムカウンタ
１００、２００、３００、４００  複合条件記憶部
１０１、１０２、１０３  条件記憶部
１０４  セレクタ
２０１、２０２、２０３  条件比較部
２０１ａ、２０１ｂ  デコーダ
２０１ｃ  セレクタ
２０１ｄ  比較器
５００  セレクタ
【図１】
2008305185.tif 000004
【図２】
2008305185.tif 000005
【図３】
2008305185.tif 000006
【図４】
2008305185.tif 000007
【図５】
2008305185.tif 000008
【図６】
2008305185.tif 000009
【図７】
2008305185.tif 000010
【図８】
2008305185.tif 000011
【図９】
2008305185.tif 000012
【図１０】
2008305185.tif 000013
【図１１】
2008305185.tif 000014