(57)【要約】      （修正有）【課題】ループ処理内で繰り返し行われる条件分岐を高速化する装置、方法の提供。【解決手段】条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部１と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部５と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部６と、条件分岐判定部６からの出力値を元に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ７とを備え、条件設定命令で指定された分岐条件を分岐条件記憶部１の記憶域のうち前記条件設定命令で指定された記憶域に記憶し、分岐判定命令を実行時、前記分岐条件記憶部に記憶されている複数の分岐条件の判定を個々に行い、同時に成立した分岐条件のうち、前記分岐条件記憶部の予め定められた所定の記憶域に記憶されている分岐条件に該当する分岐アドレスを前記分岐アドレス記憶部から選択し前記分岐アドレスに分岐する。【選択図】図１
2009163624.tif 000002
【特許請求の範囲】
【請求項１】
分岐条件と前記分岐条件の優先順位とを指定する条件設定命令を命令セットに含み、
前記条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部を備え、
前記分岐条件記憶部は、命令デコーダでデコードされた命令が前記条件設定命令である場合、前記条件設定命令で指定された分岐条件を前記優先順位に対応した記憶域に記憶する、ことを特徴とするプロセッサ装置。
【請求項２】
分岐条件が成立時に分岐する分岐先アドレスを複数の記憶可能な分岐先アドレス記憶部を備え、
前記条件設定命令では、前記分岐条件と前記分岐条件の優先順位の指定に加え、前記条件設定命令で指定した分岐条件が成立した時の分岐先アドレスが指定され、
前記命令デコーダでデコードされた命令が前記条件設定命令である場合、
前記分岐先アドレス記憶部には、前記条件設定命令で指定された分岐先アドレスが、前記条件設定命令で指定された優先順位に関連付けて記憶される、ことを特徴とする請求項１記載のプロセッサ装置。
【請求項３】
分岐条件を判定し分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令セットに備え、
１つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている１つ又は複数の分岐条件について、それぞれ個別に判定を行う、１つ又は複数の条件比較部を有する分岐条件比較部と、
複数の前記条件比較部での比較演算結果のうち、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する条件分岐判定部と、
を備え、
前記条件分岐判定部で選択した前記分岐先アドレスに分岐する、ことを特徴とする請求項１又は２記載のプロセッサ装置。
【請求項４】
前記条件判定部は、同時に成立している複数の分岐条件のうち、前記分岐条件記憶部の最も優先順位の高い記憶域に記憶されている分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する、ことを特徴とする請求項３記載のプロセッサ装置。
【請求項５】
前記条件判定部は、１つの分岐条件が成立している場合には、前記分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する、ことを特徴とする請求項３又は４記載のプロセッサ装置。
【請求項６】
前記条件判定部は、分岐条件が１つも成立していない場合には、分岐条件不成立の情報を出力し、分岐は行わず、プログラムカウンタを１増加させる、ことを特徴とする請求項３又は４記載のプロセッサ装置。
【請求項７】
前記分岐条件記憶部のそれぞれの記憶域に記憶される分岐条件は、
比較対象の２つの演算用レジスタの第１及び第２のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
を含む、ことを特徴とする請求項１乃至６のいずれか一に記載のプロセッサ装置。
【請求項８】
前記条件設定命令は、オペランドに、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報と、
比較演算の種別と、
比較演算対象の演算用レジスタの第１のレジスタアドレスと、前記演算用レジスタの第２のレジスタアドレス又は即値データと、
分岐先アドレスと、
を含む、ことを特徴とする請求項１乃至７のいずれか一に記載のプロセッサ装置。
【請求項９】
前記分岐条件記憶部が、前記複数の記憶域として複数の条件記憶部を有し、
前記命令デコーダでデコードされた前記条件設定命令による分岐条件の優先順位情報に基づき、前記条件設定命令の分岐条件を格納する条件記憶部を選択するセレクタをさらに備えている、ことを特徴とする請求項１乃至８のいずれか一に記載のプロセッサ装置。
【請求項１０】
前記分岐条件記憶部を複数備え、前記複数の分岐条件記憶部のうちの１つを選択する別のセレクタをさらに備えている、ことを特徴とする請求項１乃至９のいずれか一に記載のプロセッサ装置。
【請求項１１】
前記条件設定命令は、オペランドに、
前記複数の分岐条件記憶部のうち１つを指定する情報、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報、
比較演算の種別と、
比較演算対象の演算用レジスタの第１のレジスタアドレスと、前記演算用レジスタの第２のレジスタアドレス又は即値データ、
分岐先アドレスを含む、ことを特徴とする請求項１０記載のプロセッサ装置。
【請求項１２】
前記条件分岐命令は、オペランドに、前記複数の分岐条件記憶部のうち１つを指定する情報を含む、ことを特徴とする請求項１１記載のプロセッサ装置。
【請求項１３】
前記条件分岐命令は、オペランドに、前記複数の条件記憶部での比較演算結果をマスクするか否かを指定するマスクビットを有する、ことを特徴とする請求項３乃至６のいずれか一に記載のプロセッサ装置。
【請求項１４】
前記分岐条件記憶部は、比較対象の２つの演算用レジスタの第１及び第２のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を１セットとして記憶する条件記憶部を複数備え、
前記複数の条件記憶部は、複数の分岐条件を記憶する前記複数の記憶域をなし、
前記複数の条件記憶部を選択するセレクタを備えている、ことを特徴とする請求項１乃至１３のいずれか一に記載のプロセッサ装置。
【請求項１５】
前記分岐条件比較部は、
それぞれが、対応する前記条件記憶部に記憶された前記第１及び第２のアドレスをデコードし、前記演算用レジスタに第１、第２のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第１及び第２のデコーダと、
前記条件記憶部に記憶された即値データと、前記第２のデコーダの値を受け、前記フラグの出力に基づき一方を選択する第３のセレクタと、
前記第３のセレクタの出力と前記第１のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器と、
を含む条件比較部の組を、前記複数の条件記憶部にそれぞれ対応して備えている、ことを特徴とする請求項９又は１４記載のプロセッサ装置。
【請求項１６】
前記分岐条件記憶部において、前記条件設定命令の実行によって記憶された分岐条件は、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の条件に書き換えられるまでの間、保持される、ことを特徴とする請求項１乃至１５のいずれか一に記載のプロセッサ装置。
【請求項１７】
前記分岐先アドレス記憶部において、前記条件設定命令の実行によって記憶された分岐先アドレスは、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の分岐先アドレスに書き換えられるまでの間、保持される、ことを特徴とする請求項１乃至１６のいずれか一に記載のプロセッサ装置。
【請求項１８】
前記条件分岐判定部は、
前記命令デコーダでデコードされた前記条件設定命令で指定された優先順位から、前記分岐先アドレス記憶部の該当する記憶域に、前記条件設定命令で指定された分岐先アドレスを格納する第２のセレクタと、
複数の前記条件比較部からの比較演算結果を受け、複数の比較演算結果が分岐条件成立を示す場合、予め定められた優先方式にしたがって１つの分岐先アドレスを選択する信号を出力し、分岐条件成立が１つの場合、該分岐条件に対応する分岐先アドレスを選択する信号を出力するプライオリティエンコーダと、
前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうちプライオリティエンコーダで選択された分岐先アドレスを選択する第３のセレクタと、
複数の前記条件比較部からの比較演算結果が全て分岐条件不成立の場合、第１の値を出力し、複数の前記条件比較部からの比較演算結果のその他の組み合わせに対して第２の値を出力する論理回路を備え、
プログラムカウンタの出力と、前記第３のセレクタの出力を受け、前記論理回路の出力が第１の値、第２の値であるかによって前記プログラムカウンタの出力、前記第３のセレクタの出力をプログラムカウンタに設定する第４のセレクタを備えている、ことを特徴とする請求項３記載のプロセッサ装置。
【請求項１９】
前記プライオリティエンコーダには、前記条件分岐命令で指定されたマスクビットと複数の前記条件比較部からの比較演算結果との論理演算結果が供給される、ことを特徴とする請求項１８記載のプロセッサ装置。
【請求項２０】
前記条件分岐判定部は、
前記命令デコーダでデコードされた前記条件設定命令の分岐条件の記憶域の指定情報、分岐先アドレスから分岐先アドレス記憶部の該当する記憶域に分岐先アドレスを格納する第２のセレクタと、
出力カウント値によって、前記分岐先アドレス記憶部内の分岐先アドレス、および前記分岐条件記憶部内の分岐条件を選択するカウンタを備え、
前記カウンタのカウント出力で選択された分岐条件の条件比較を実行し、
前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうち前記カウンタで選択された分岐先アドレスを選択する第３のセレクタと、
を備え、
プログラムカウンタの出力と、前記第３のセレクタの出力を受け、前記条件比較部の出力が分岐条件不成立、成立であるかによって前記プログラムカウンタの出力、前記第３のセレクタの出力をプログラムカウンタに設定する第４のセレクタを備えている、ことを特徴とする請求項３記載のプロセッサ装置。
【請求項２１】
前記分岐条件比較部は、１つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている１つ又は複数の分岐条件について、それぞれ、個別に判定を行う１つの条件比較部を有し、
前記カウンタは、前記命令デコーダで条件分岐命令が解析された場合に、前記命令デコーダからリセット信号を受け取り、最高優先順位の番号にリセットされ、
前記カウンタのカウント値に該当する優先順位の分岐条件を、前記分岐条件記憶部から読み出して、前記条件比較部へ格納し、
優先順位の高い分岐条件から順番に条件分岐判定を行っていき、分岐条件が成立したとき、その時点で選択されている分岐先アドレスに分岐する、ことを特徴とする請求項３記載のプロセッサ装置。
【請求項２２】
分岐条件と前記分岐条件成立時の分岐先アドレスとを、指定した優先順位に対応させて設定する条件設定命令と、
前記条件設定命令によって設定済みの１つ又は複数の分岐条件の条件成立の有無を判定し、分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令と、
を命令セットに含み、
１つ又は複数の前記条件設定命令でそれぞれ指定される１つ又は複数の分岐条件を、前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐条件記憶部と、
１つ又は複数の前記条件設定命令で指定される１又は複数の分岐先アドレスを前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐先アドレス記憶部と、
を備え、
１つ又は複数の前記条件設定命令の実行により、前記分岐条件記憶部に１つ又は複数の分岐条件が設定され、且つ、前記分岐先アドレス記憶部に１つ又は複数の分岐先アドレスが記憶された状態のもとで、１つ又は複数の前記条件設定命令の実行後、前記条件分岐命令の実行の間に、１つ又は複数の他の命令の実行が可能とされ、
前記条件分岐命令の実行時に、前記分岐条件記憶部に既に記憶されている１つ又は複数の分岐条件について、それぞれ、個別に判定を行い、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する手段を備えている、ことを特徴とするプロセッサ装置。
【請求項２３】
命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐条件を、複数の分岐条件を記憶する分岐条件記憶部のうち、前記条件設定命令で指定された優先順位に対応する記憶域に記憶する、ことを特徴とするプロセッサの条件分岐処理方法。
【請求項２４】
前記条件設定命令では、前記分岐条件と前記分岐条件の優先順位に加え、前記条件設定命令で指定された分岐条件が成立した時の分岐先アドレスが指定され、
前記命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐先アドレスを、前記分岐条件の優先順位に対応付けて記憶する、ことを特徴とする請求項２３記載のプロセッサの条件分岐処理方法。
【請求項２５】
１つ又は複数の前記条件設定命令が実行され、分岐条件と分岐先アドレスが記憶されたのち、
条件分岐命令の実行時、記憶されている複数の分岐条件についてそれぞれ個別に判定を行い、
同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従い選択された分岐条件に該当する分岐先アドレスに分岐する、ことを特徴とする請求項２３又は２４記載のプロセッサの条件分岐処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ装置及び条件分岐処理方法に関する。
【背景技術】
【０００２】
一般的な汎用ＣＰＵ等で用いられている条件分岐命令は、例えば図１０に模式的に示すように、分岐条件の判定の元となる演算を行う命令（例えばアドレスＮの条件Ａ判別命令）を、条件分岐命令の実行前に実行しておき、次に、該命令（条件Ａ判別命令）の演算結果を元にして、分岐条件が成立した場合には、該条件分岐命令のオペランドで指定された分岐先アドレス（例えば分岐先Ｌ１）に分岐し、不成立の場合は、そのまま次のアドレス（図１０の場合、例えばＮ＋２の条件Ｂ判別命令）の命令に進む、といった動作をする。
【０００３】
一例として、図１０に示すように、４つの分岐条件を処理する場合、条件判別のための命令（アドレスＮ、Ｎ＋２、Ｎ＋４、Ｎ＋６の条件Ａ判別命令、条件Ｂ判別命令、条件Ｃ判別命令、条件Ｄ判別命令）とそれぞれに対応するアドレスＮ＋１、Ｎ＋３、Ｎ＋５、Ｎ＋７の条件分岐命令とが１組を成して４回連続することになり、結果として、８ステップ分の実行時間と命令記憶領域を必要とする。
【０００４】
条件分岐の関連技術として、特許文献１の条件分岐について説明する。図１１は、特許文献１のプロセッサの構成を示す図である。図１１において、演算器４０１から出力された演算結果４２２と分岐条件４３１を入力とする条件判別回路４０２の出力である条件成否情報４２９を、条件成否レジスタ選択信号４２４に従って条件成否レジスタ４０３〜４０６から選択して格納する。多分岐処理を行なう場合には、予め処理すべき複数の条件に応じてそれぞれ異なる条件成否レジスタに条件成否情報を書き込む。分岐先アドレスレジスタ４０８〜４１１には、各々分岐条件に対応した分岐アドレスが格納してあり、多分岐命令実行時にプライオリタイザ４０７が前記条件成否レジスタ４０３〜４０６の値を入力し分岐先アドレス選択信号４２７を生成し、セレクタ４１２を制御する。セレクタ４１２は、分岐先アドレスレジスタ４０８〜４１１のうち１つを選択することによりプログラムカウンタ４１３の値を得て分岐処理を実行する。
【０００５】
また、特許文献２には、命令コードによる命令が分岐命令か否かを判断する分岐命令判断手段と、複数の分岐先アドレスを格納する分岐先格納手段と、複数の分岐条件の全てについて分岐条件を満足するか否かを判断する分岐条件判断手段と、前記分岐命令判断手段によって分岐命令であると判断した場合に、前記分岐条件判断手段で分岐条件を満足すると判断した分岐条件に対応する１個の分岐先アドレスを前記分岐先格納手段に格納された複数の分岐先アドレスの中から選択する分岐先選択手段とを設ける構成が開示されている。これは、直前に実行した命令の演算結果を元に、１つの条件分岐命令で処理しており、実質的に２ステップ分の実行時間と命令記憶領域だけで済むことになる。
【０００６】
さらに、特許文献３には、演算器動作と並行に算術演算器出力、論理シフタ出力、乗算器出力のいずれかの選択を行い、選択されたデータに対して予め設定されたｎ個の閾値と同時に大小関係を比較し、ｎ個の閾値によって区切られるｎ＋１個のデータ領域、出力データがどの領域に存在するか判定し、判定結果に対して予め定められたデータ領域を指定するｍ個の領域限定条件と順次比較し、条件が一致した場合、ｍ個の領域限定条件に対応したｍ個の分岐先アドレスの中から上記一致した領域限定条件に対応する分岐先アドレスを出力し、分岐先アドレスにプログラムカウンタを更新し、ｍ個の条件すべてが不一致の場合、全条件不一致を示す信号を出力し、プログラムカウンタを１増加させるプロセッサ（デジタル信号プロセッサ）が開示されている。演算結果をその都度、条件判定する必要があるような処理を行うときに、いちいち条件判定の命令を実行しなくても済むので、高速な処理が可能となっている。
【０００７】
特許文献４には、順序づけられたシーケンスの複数の命令を含む命令シーケンスを有するプログラムを実行し、前記順序づけられたシーケンスは始まりおよび複数の分岐命令を含み、前記分岐命令のそれぞれが、指定された条件が満たされたときに、分岐先番地で指定された命令を実行するデータ処理システムであって、複数の前記分岐命令を指定し、各分岐命令に対応する分岐先番地、および、前記分岐命令の前記順序づけられたシーケンスの前記始まりからの相対的な位置を含む情報を記憶する記憶手段と、前記分岐命令の１つに関連する前記条件が満たされたことを示す情報を受け取る比較結果手段と、前記記憶手段に記憶されている情報を持つ前記分岐命令の１つを識別する分岐実行命令を受け取る手段と、前記識別された分岐命令に関連する前記条件が満たされ、前記識別された分岐命令よりも前記順序づけられたシーケンスの始まりに近い分岐命令に関連する前記条件が満たされなかった場合に、前記分岐実行命令を受け取って反応し、前記データ処理システムに、前記識別された分岐命令に対応する分岐先番地で指定された前記命令を実行させる制御手段と、を備えた分岐処理装置を有する、データ処理システムが開示されている。
【０００８】
【特許文献１】特開平９−２８２１６０号公報
【特許文献２】特開平２００４−１１８６６９号公報
【特許文献３】特開平２−１８７８２４号公報
【特許文献４】特開平８−１０６３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以下、本発明による関連技術の分析を与える。
【００１０】
特許文献１に記載された発明は、図１２に示すように、アドレスＮ〜Ｎ＋３の個々の分岐条件判別命令（条件Ａ判別命令、条件Ｂ判別命令、条件Ｃ判別命令、条件Ｄ判別命令）を、４回実行した後、１つの多分岐命令（アドレスＮ＋４）で、条件分岐を処理できるため、５ステップ分の実行時間と、命令記憶領域が必要とされるだけとなり、高速および命令記憶領域の削減を実現している。
【００１１】
しかしながら、図１２に示すように、分岐判定を行うに必要な回数分だけ、条件分岐判別命令を、多分岐命令の直前で実行する必要がある。このため、同じ分岐条件を繰り返し実行するループ処理において、条件分岐判別命令の実行が必要となる。
【００１２】
特許文献２に記載の発明は、特許文献１と同様に、分岐命令の直前の演算結果を元に分岐判定しており、しかも、直前の命令１つの演算結果のみが分岐判定に与えられるだけなので、特許文献１等に比べて非常に単純な分岐条件でしかない。分岐先アドレスの値を大きく取りたい場合、分岐先アドレスを複数含んでいることにより、条件分岐命令の命令長が長くなり、命令メモリの２ワードに跨ることを示している。この場合、２ワード目の値を命令デコーダに読み込むステップが発生するため、一般的にその分命令の実行サイクル数が長くなる。
【００１３】
特許文献３は、予め複数の分岐先アドレスを記憶しておき、演算処理と同時に条件判定処理を行っている。すなわち、図１３に示すように、演算命令の中に条件分岐命令も含んでおり（演算+条件判定命令）、演算結果を元にして条件が成立すれば、その条件に対応する分岐先アドレスに分岐するようになっている。これは、演算命令の結果を比較対象として条件判定を行っており、単純な分岐条件しか設定できない。
【課題を解決するための手段】
【００１４】
本願で開示される発明は、前記課題を解決するため概略以下の構成とされる。
【００１５】
本発明の１つのアスペクト(側面)によれば、分岐条件と前記分岐条件の優先順位とを指定する条件設定命令を命令セットに含み、前記条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部を備え、前記分岐条件記憶部は、命令デコーダでデコードされた命令が前記条件設定命令である場合、前記条件設定命令で指定された分岐条件を前記優先順位に対応した記憶域に記憶するプロセッサ装置が提供される。
【００１６】
本発明に係るプロセッサ装置において、分岐条件が成立時に分岐する分岐先アドレスを複数の記憶可能な分岐先アドレス記憶部を備えている。前記条件設定命令には、前記条件設定命令で指定した分岐条件が成立した時の分岐先アドレスが指定される。前記命令デコーダでデコードされた命令が前記条件設定命令である場合、前記分岐先アドレス記憶部には、前記条件設定命令で指定された分岐先アドレスが、前記条件設定命令で指定された優先順位に関連付けて記憶される。
【００１７】
本発明に係るプロセッサ装置において、分岐条件を判定し分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令セットに備えている。１つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている１つ又は複数の分岐条件について、それぞれ、個別に判定を行う１つ又は複数の条件比較部を有する分岐条件比較部と、複数の前記条件比較部での比較結果のうち、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する条件分岐判定部と、を備え、前記条件分岐判定部で選択した前記分岐先アドレスに分岐する。
【００１８】
本発明に係るプロセッサ装置において、前記条件判定部は、同時に成立している複数の分岐条件のうち、前記分岐条件記憶部の最も優先順位の高い記憶域に記憶されている分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する。
【００１９】
本発明に係るプロセッサ装置において、前記条件判定部は、１つの分岐条件が成立している場合には、前記分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する。
【００２０】
本発明に係るプロセッサ装置において、前記条件判定部は、分岐条件が１つも成立していない場合には、分岐条件不成立の情報を出力し、分岐は行わず、プログラムカウンタを１増加させる。
【００２１】
本発明に係るプロセッサ装置において、前記分岐条件記憶部のそれぞれの記憶域に記憶される分岐条件は、
比較対象の２つの演算用レジスタの第１及び第２のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、を含む。
【００２２】
本発明に係るプロセッサ装置において、前記条件設定命令は、オペランドに、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報と、
比較演算の種別と、
比較演算対象の演算用レジスタの第１のレジスタアドレスと、前記演算用レジスタの第２のレジスタアドレス又は即値データと、
分岐先アドレスと、を含む。
【００２３】
本発明に係るプロセッサ装置において、前記分岐条件記憶部が、前記複数の記憶域として複数の条件記憶部を有し、
前記命令デコーダでデコードされた前記条件設定命令による分岐条件の優先順位情報に基づき、前記条件設定命令の分岐条件を格納する条件記憶部を選択するセレクタをさらに備えている。
【００２４】
本発明に係るプロセッサ装置において、前記分岐条件記憶部を複数備え、前記複数の分岐条件記憶部のうちの１つを選択する別のセレクタをさらに備えている。
【００２５】
本発明に係るプロセッサ装置において、前記条件設定命令は、オペランドに、
前記複数の分岐条件記憶部のうち１つを指定する情報、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報、
比較演算の種別と、
比較演算対象の演算用レジスタの第１のレジスタアドレスと、前記演算用レジスタの第２のレジスタアドレス又は即値データ、
分岐先アドレスと、を含む。
【００２６】
本発明に係るプロセッサ装置において、前記分岐条件記憶部は、比較対象の２つの演算用レジスタの第１及び第２のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を１セットとして記憶する条件記憶部を複数備え、
前記複数の条件記憶部は、複数の分岐条件を記憶する前記複数の記憶域をなし、
前記複数の条件記憶部を選択するセレクタを備えている。
【００２７】
本発明に係るプロセッサ装置において、前記分岐条件比較部は、
それぞれが、対応する前記条件記憶部に記憶された前記第１及び第２のアドレスをデコードし、前記演算用レジスタに第１、第２のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第１及び第２のデコーダと、
前記条件記憶部に記憶された即値データと、前記第２のデコーダの値を受け、前記フラグの出力に基づき一方を選択する第３のセレクタと、
前記第３のセレクタの出力と前記第１のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器と、
を含む条件比較部の組を、前記複数の条件記憶部にそれぞれ対応して備えている。
【００２８】
本発明に係るプロセッサ装置においては、前記分岐条件記憶部において、前記条件設定命令の実行によって記憶された分岐条件は、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の条件に書き換えられるまでの間、保持される。
【００２９】
本発明に係るプロセッサ装置においては、前記分岐先アドレス記憶部において、前記条件設定命令の実行によって記憶された分岐先アドレスは、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の分岐先アドレスに書き換えられるまでの間、保持される。
【００３０】
本発明に係るプロセッサ装置において、前記条件分岐判定部は、前記命令デコーダでデコードされた前記条件設定命令で指定された優先順位から、前記分岐先アドレス記憶部の該当する記憶域に、前記条件設定命令で指定された分岐先アドレスを格納する第２のセレクタと、複数の前記条件比較部からの比較結果を受け、複数の比較結果が分岐条件成立を示す場合、予め定められた優先方式にしたがって１つの分岐先アドレスを選択する信号を出力し、分岐条件成立が１つの場合、該分岐条件に対応する分岐先アドレスを選択する信号を出力するプライオリティエンコーダと、前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうちプライオリティエンコーダで選択された分岐先アドレスを選択する第３のセレクタと、複数の前記条件比較部からの比較結果が全て分岐条件不成立の場合、第１の値を出力し、複数の前記条件比較部からの比較結果のその他の組み合わせに対して第２の値を出力する論理回路を備え、プログラムカウンタの出力と、前記第３のセレクタの出力を受け、前記論理回路の出力が第１の値、第２の値であるかによって前記プログラムカウンタの出力、前記第３のセレクタの出力をプログラムカウンタに設定する第４のセレクタを備えている。
【００３１】
本発明に係るプロセッサ装置において、前記条件分岐判定部は、前記命令デコーダでデコードされた前記条件設定命令の分岐条件の記憶域の指定情報、分岐先アドレスから分岐先アドレス記憶部の該当する記憶域に分岐先アドレスを格納する第２のセレクタと、
出力カウント値によって、前記分岐先アドレス記憶部内の分岐先アドレス、および前記分岐条件記憶部内の分岐条件を選択するカウンタを備え、前記カウンタのカウント出力で選択された分岐条件の条件比較を実行し、前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうち前記カウンタで選択された分岐先アドレスを選択する第３のセレクタと、を備え、プログラムカウンタの出力と、前記第３のセレクタの出力を受け、前記条件比較部の力が分岐条件不成立、成立であるかによって前記プログラムカウンタの出力、前記第３のセレクタの出力をプログラムカウンタに設定する第４のセレクタを備えている。
【００３２】
本発明に係るプロセッサ装置において、前記分岐条件比較部は、１つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている１つ又は複数の分岐条件について、それぞれ、個別に判定を行う１つの条件比較部を有し、前記カウンタは、前記命令デコーダで条件分岐命令が解析された場合に、前記命令デコーダからリセット信号を受け取り、最高優先順位の番号にリセットされ、前記カウンタのカウント値に該当する優先順位の分岐条件を、前記分岐条件記憶部から読み出して、前記条件比較部へ格納し、優先順位の高い分岐条件から順番に条件分岐判定を行っていき、分岐条件が成立したとき、その時点で選択されている分岐先アドレスに分岐する。
【００３３】
本発明に係るプロセッサ装置は、分岐条件と前記分岐条件成立時の分岐先アドレスとを、指定した優先順位に対応させて設定する条件設定命令と、
前記条件設定命令によって設定済みの１つ又は複数の分岐条件の条件成立の有無を判定し、分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令と、を、
命令セットに含み、
１つ又は複数の前記条件設定命令でそれぞれ指定される１つ又は複数の分岐条件を、前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐条件記憶部と、
１つ又は複数の前記条件設定命令で指定される１又は複数の分岐先アドレスを前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐先アドレス記憶部と、
を備え、
１つ又は複数の前記条件設定命令の実行により、前記分岐条件記憶部に１つ又は複数の分岐条件が設定され、且つ、前記分岐先アドレス記憶部に１つ又は複数の分岐先アドレスが記憶された状態のもとで、１つ又は複数の前記条件設定命令の実行後、前記条件分岐命令の実行の間に、１つ又は複数の他の命令の実行が可能とされ、
前記条件分岐命令の実行時に、前記分岐条件記憶部に既に記憶されている１つ又は複数の分岐条件について、それぞれ、個別に判定を行い、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する手段を備えている。
【００３４】
本発明によれば、命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐条件を、複数の分岐条件を記憶する分岐条件記憶部のうち、前記条件設定命令で指定された優先順位に対応する記憶域に記憶するプロセッサの分岐処理方法が提供される。
【００３５】
本発明に係る方法において、前記条件設定命令には、前記条件設定命令で指定した分岐条件が成立した時の分岐先アドレスが指定され、
前記命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐先アドレスを、前記分岐条件の優先順位に対応付けて記憶する。
【００３６】
本発明に係る方法において、１つ又は複数の前記条件設定命令が実行され、分岐条件と分岐先アドレスが記憶されたのち、
条件分岐命令の実行時、記憶されている複数の分岐条件についてそれぞれ個別に判定を行い、
同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従い選択された分岐条件に該当する分岐先アドレスに分岐する。
【発明の効果】
【００３７】
本発明によれば、条件設定命令を複数回実行することによって分岐条件を複数記憶できるようにしているため、分岐条件を繰り返し行うループ処理等に適用した場合に、ループ処理内では、１つの条件分岐命令のみを実行するだけで条件分岐を処理することができ、処理を高速化する。
【発明を実施するための最良の形態】
【００３８】
本発明においては、複数の分岐条件をそれぞれ記憶するための複数の記憶域（条件記憶部）を有する分岐条件記憶部（１）と、命令コードを保持および解析する命令デコーダ（２）と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部（５）と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部（６）と、条件分岐判定部（６）からの出力値を基に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ（７）と、プロセッサの命令実行位置を表すプログラムカウンタ（８）とを備え、条件設定命令（ＳＥＴＣＭＰ）で指定された分岐条件は、分岐条件記憶部（１）の記憶域のうち、前記条件設定命令（ＳＥＴＣＭＰ）で指定された記憶域に記憶される。条件分岐命令（ＸＢＲＡ）を実行時、分岐条件比較部（５）では、分岐条件記憶部（１）に記憶されている複数の分岐条件の判定を個々に行う。条件分岐判定部（６）では、分岐条件比較部（５）からの比較結果を受け、同時に成立した分岐条件のうち、予め定められた所定の記憶域に記憶されている分岐条件に該当する分岐アドレスを、分岐先アドレス記憶部（６ｃ）から選択し、分岐アドレスに分岐する。
【００３９】
本発明は、命令セットとして、分岐条件の判定に必要な情報（比較対象とする第１のレジスタアドレス、第２のレジスタアドレスまたは即値など）を指定可能な条件設定命令（分岐条件設定命令）と、
予め複数回実行した条件設定命令の情報を用いて分岐条件の判定を行い、同時に成立した条件のうち、最も優先度の高い分岐条件に対応する分岐先アドレスへ分岐することが可能な条件分岐命令と、を有し、複数の分岐条件を１ステップ分の実行時間と命令記憶領域だけで実行するようにしたものである。
【００４０】
条件設定命令は、分岐条件と分岐先アドレスを、優先順位を付けて設定できる。
【００４１】
条件分岐命令は、１つの命令で予め条件設定命令によって設定された複数の分岐条件の成立／不成立を判定し、同時に成立した条件があれば、それらの内最も優先度の高い分岐条件に対応する分岐先アドレスを選択し、次の命令実行アドレスをする。
【００４２】
予め条件設定命令を複数実行するによって分岐条件を複数記憶できるようにしているため、同じ分岐条件を繰り返し行うループ処理等に適用したときに、ループ処理内では１つの条件分岐命令のみを実行するだけで条件分岐を処理できるため、高速に処理できる。
【００４３】
分岐条件と分岐先アドレスの情報量が増えて、命令長が２ワード以上になった場合でも、条件設定命令の命令長および実行ステップ数が増えるだけであって、条件分岐命令の命令長および実行ステップ数は増加しない。以下実施例に即して説明する。
【００４４】
＜実施例１＞
図１は、本発明の一実施例の構成を示す図である。図１を参照すると、本実施例のプロセッサ装置は、複数の分岐条件を記憶できる分岐条件記憶部１と、命令コードを保持および解析し、その命令に関連するブロックを制御する命令デコーダ２と、命令コードを記憶している命令メモリ３と、プロセッサが演算のために用いる演算用レジスタ（レジスタファイル）４と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部５と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部６と、条件分岐判定部６からの出力値を元に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ７と、プロセッサの命令実行位置を表すプログラムカウンタ（ＰＣ）８と、を備えている。
【００４５】
本実施例において、条件設定命令（ニーモニックはＳＥＴＣＭＰ；シンタックスは後述する）は、分岐条件のための比較演算に必要な情報（分岐条件が成立したときにジャンプする分岐先アドレスを含む）を分岐条件記憶部１に設定する命令である。条件設定命令は、優先順位を指定して、分岐条件のための比較演算に必要な情報を、分岐条件記憶部１の指定した記憶域（優先順位に対応した記憶域）に記憶する。
【００４６】
条件分岐命令（ニーモニックはＸＢＲＡ）は、それぞれが分岐条件、分岐先アドレス、優先順位を指定した条件設定命令を事前に複数実行することによって設定された複数の分岐条件について、成立／不成立を判定し、同時に成立した複数の分岐条件が存在する場合、同時に成立した複数の分岐条件の内最も優先度の高い分岐条件に対応する分岐先アドレスを選択し、次の命令実行アドレスをする。なお、プログラムとして、条件設定命令をループの前に実行し、ループの終了判定を条件分岐命令１つで実行することで、繰り返し実行されるループ演算の処理時間の短縮に貢献する。
【００４７】
図２は、図１の分岐条件記憶部１の構成の一例を説明するための図である。分岐条件記憶部１は、命令デコーダ２でデコードされた条件設定命令によって指定される分岐条件を記憶する。すなわち、１つの条件設定命令を実行することで、条件設定命令で指定された１つの分岐条件が、分岐条件記憶部１の指定された記憶域に記憶される。複数の条件設定命令を実行することで、それぞれの条件設定命令で指定された複数の分岐条件が、分岐条件記憶部１の複数の記憶域に記憶される。なお、本実施例においては、１つの条件分岐命令の実行により、分岐条件記憶部１の複数の記憶域に記憶された複数の分岐条件が評価され、分岐条件成立時、分岐が行われる。
【００４８】
本実施例においては、条件設定命令（ＳＥＴＣＭＰ）で指定される分岐条件に対して条件設定命令（ＳＥＴＣＭＰ）で指定された優先順位を付与して、分岐条件記憶部１に記憶するために、分岐条件記憶部１の分岐条件の各記憶場所に対して優先順位が予め決められている。
【００４９】
図２を参照すると、分岐条件記憶部１は、複数の記憶域として、それぞれが１つ分の分岐条件を記憶する条件記憶部１０１〜１０４を備え、さらに、条件記憶部１０１〜１０４の内のいずれを有効とするかを選択するセレクタ１０５とを備えている。
【００５０】
条件記憶部１０１は、分岐設定命令の分岐判定の条件演算（２項演算）を行う２つのレジスタの第１のレジスタアドレスを記憶するレジスタｒ１０１ａ、第２のレジスタアドレスを記憶するレジスタｒ１０１ｂ、即値を記憶するレジスタｒ１０１ｃ、２項比較演算で２つのレジスタを用いるか、即値を用いるかを示すＲ／Ｉフラグを記憶するレジスタ（Ｒ＝Ｒｅｇｉｓｔｅｒ：レジスタアドレス、Ｉ＝Ｉｍｍｉｄｉａｔｅ：即値の）ｒ１０１ｄ、演算を行う比較器の種類を記憶するレジスタｒ１０１ｅを備えている。条件記憶部１０２〜１０４も同様の構成である。
【００５１】
ここで、条件設定命令のアセンブラの命令シンタックスについて説明しておく。
【００５２】
条件設定命令は、分岐条件のための比較演算に必要な情報を分岐条件記憶部に設定する命令であり、オペコードのニーモニックはＳＥＴＣＭＰであり、例えば以下のようなオペランド形式を持つ。
【００５３】
ＳＥＴＣＭＰ  ｐ０，ｒ１，ＮＥ，ｒ１１，Ｌ１  ・・・（１）
【００５４】
“ｐ０”は、１番目の優先順位の分岐条件を意味し、条件記憶部１０１を示している。同様に“ｐ１”、“ｐ２”、“ｐ３”は、それぞれ条件記憶部１０２、１０３、１０４に対応する。なお、特に制限されないが、本実施例では、分岐条件記憶部１内の条件記憶部を４個備え、最大４つの分岐条件が同時に記憶される。優先順位ｐ０、ｐ１、ｐ２、ｐ２は例えば００ｂ（ｂは２進表示を表す）、０１ｂ、１０ｂ、１１ｂに対応する。
【００５５】
“ｒ１”および“ｒ１１”は、演算用レジスタ４内のレジスタアドレス１および１１のレジスタを表している。
【００５６】
“ＮＥ”は、ｒ１とｒ１１の値を比較するときに使用する比較演算器の種類“！＝”を表している。
【００５７】
“Ｌ１”は、この分岐条件が成立したときにジャンプする分岐先アドレスを表している。
【００５８】
以下の表１に、条件設定命令（ＳＥＴＣＭＰ）で指定される比較演算器の種類の例を、ニーモニック、意味、Ｃ言語表記、選択値（比較演算器の種類の対応２進コード）を示す。
【００５９】
［表１］  比較演算器の種類
2009163624.tif 000003
【００６０】
図２において、命令デコーダ２は、条件設定命令（ＳＥＴＣＭＰ）の命令コードを解析して、ビット列に分解された状態が示されている。“ｐ０”（００ｂ）は、セレクタ１０５に入力され、条件記憶部１０１を選択する。“ｒ１”（０００１ｂ）は、レジスタｒ１０１ａに入力されて記憶される。“ｒ１１”（１０１１ｂ）は、レジスタｒ１０１ｂに入力されて記憶される。Ｒ／Ｉフラグ（０ｂ）は、レジスタｒ１０１ｄに入力されて記憶される。比較器の種類“ＮＥ”（００１ｂ）はレジスタｒ１０１ｅに入力されて記憶される。
【００６１】
また、命令デコーダ２で解析された“ｐ０”、“Ｌ１”の値は、条件分岐判定部６に入力される。“Ｌ１”の値は、条件分岐判定部６内の“ｐ０”（００ｂ）に対応する分岐先アドレス記憶部（図４の６ｃ）に入力されて値が記憶される。
【００６２】
分岐条件記憶部１、分岐先アドレス記憶部にそれぞれ記憶された値は、次に同じ場所の分岐条件記憶部および分岐先アドレス記憶部に対する条件設定命令が実行されない限り保持される。
【００６３】
条件分岐命令は、条件設定命令（ＳＥＴＣＭＰ）で設定した各分岐条件の比較演算を行い、その結果をもとに、分岐条件の判定を行う命令である。アセンブラのニーモニックでは、次のように表される。
【００６４】
ＸＢＲＡ                              ・・・（２）
【００６５】
“ＸＢＲＡ”は、条件分岐命令の名前を表している。オペランド等、他のパラメータは特に必要ない。すなわち、本実施例において、条件分岐命令はオペコードのみの命令とされる。
【００６６】
分岐条件比較部５は、命令デコーダ２で条件分岐命令がデコードされたとき、条件設定命令（ＳＥＴＣＭＰ）の実行によって、事前に分岐条件記憶部１に設定された複数の分岐条件の比較演算を同時に実行する。
【００６７】
図３は、図１の分岐条件比較部５の構成の一例を示す図である。図３を参照すると、分岐条件比較部５は、複数の条件記憶部１０１、１０２、１０３にそれぞれ対応して、分岐条件の比較演算を行う複数の条件比較部５１、５２、５３、５４を備えている。
【００６８】
条件比較部５１は、分岐条件記憶部１内の条件記憶部１０１のレジスタｒ１０１ａの第１のレジスタアドレスを用いて演算用レジスタ４の中から該当するレジスタの値を取得するデコーダ５１ａと、レジスタｒ１０１ｂの第２のレジスタアドレスを用いて演算用レジスタ４の中から該当するレジスタの値を取得するデコーダ５１ｂと、条件記憶部１０１のレジスタｒ１０１ｄの即値と、デコーダ５１ｂで選択された演算用レジスタ４内のレジスタの値のいずれか一方を、条件記憶部１０１のレジスタｒ１０１ｅのＲ／Ｉフラグの値に基づき選択するセレクタ５１ｃと、デコーダ５１ａで選択された演算用レジスタ４内のレジスタの値とセレクタ５１ａから出力された値とを比較演算し、比較演算結果ｃ０を条件分岐判定部６に出力する比較器５１ｄと、を備えている。
【００６９】
条件比較部５１は、条件記憶部１０１のレジスタ（ｒ１０１ａ，１０１ｂ，ｒ１０１ｃ，ｒ１０１ｄ，ｒ１０１ｅ）の設定値に基づき比較演算を行い、比較演算結果ｃ０を条件分岐判定部６に出力する。
【００７０】
条件比較部５２、５３、５４の各構成も、条件比較部５１と同様とされる。
【００７１】
条件比較部５２、５３、５４のそれぞれ、分岐条件記憶部１内の条件記憶部１０２、１０３、１０４の各レジスタ（ｒ１０２ａ，１０２ｂ，ｒ１０２ｃ，ｒ１０２ｄ，ｒ１０２ｅ）、（ｒ１０３ａ，１０３ｂ，ｒ１０３ｃ，ｒ１０３ｄ，ｒ１０３ｅ）、（ｒ１０４，ａ１０４ｂ，ｒ１０４ｃ，ｒ１０４ｄ，ｒ１０４ｅ）の出力を入力し比較演算結果ｃ１、ｃ２、ｃ３を条件分岐判定部６に出力する。
【００７２】
本実施例では、最大４個の分岐条件を処理できる場合を示しており、分岐条件比較部５の条件比較部５１、５２、５３、５４と、条件記憶部１０１、１０２、１０３、１０４とが対を成すように構成されている。
【００７３】
条件分岐命令（ＸＢＲＡ）が命令デコーダ２でデコードされた場合、２つの処理が実行される。
【００７４】
第１の処理は、図３を参照して説明したように、分岐条件記憶部１に記憶されている分岐条件の情報を用いて分岐条件比較部５において、それぞれの分岐条件を同時に比較演算を行い、その結果ｃ０〜ｃ３を条件分岐判定部６へ出力する。
【００７５】
第２の処理は、図４（Ａ）に示すように、比較演算結果ｃ０〜ｃ３をプライオリティエンコーダ６ｂに入力し、比較演算結果ｃ０〜ｃ３の中で同時に条件が成立した場合でも、その中で最も優先度の高い条件（例えばｃ０）が選択されるようにする。
【００７６】
図４（Ａ）は、図１の条件分岐判定部６の構成の一例を示す図である。図４（Ａ）を参照すると、命令デコーダ２でのＳＥＴＣＭＰ命令のデコード結果である優先順位と、分岐先アドレスを入力するセレクタ（デコーダ）６ａと、セレクタ６ａで選択されたセレクトアドレスに分岐アドレスを格納する分岐先アドレス記憶部６ｃと、分岐条件比較部５からの比較結果ｃ０、ｃ１、ｃ２、ｃ３を入力し、比較演算結果ｃ０〜ｃ３の中で同時に条件が成立した場合、優先順位の高い分岐条件の比較を行った条件比較部を選択するプライオリティエンコーダ６ｂと、分岐先アドレス記憶部６ｃに記憶された複数の分岐先アドレスのうちから、プライオリティエンコーダ６ｂで選択された分岐条件に対応する分岐先アドレスを１つ選択するセレクタ６ｄと、分岐条件比較部５からの比較結果ｃ０、ｃ１、ｃ２、ｃ３を入力する論理和回路６ｅと、を備えている。
【００７７】
論理和回路６ｅは、分岐条件比較部５からの比較結果ｃ０、ｃ１、ｃ２、ｃ３が全て０のとき、セレクタ７の選択制御信号としてＦを出力し、セレクタ７はＰＣ＋１をプログラムカウンタ８に設定する（分岐無し）。
【００７８】
論理和回路６ｅは、分岐条件比較部５からの比較結果ｃ０、ｃ１、ｃ２、ｃ３のうち少なくとも１つが１のとき、セレクタ７の選択制御信号としてＴを出力し、セレクタ７はセレクタ６ｄからの分岐先アドレスをプログラムカウンタ８に設定する。
【００７９】
図４（Ｂ）に示すように、セレクタ６ａのセレクト値として、条件設定命令より抽出された“ｐ０”（００ｂ）の値が与えられ、該当する記憶域（条件Ａの箇所）に分岐先アドレスの値が格納される。すなわち、分岐先アドレス記憶部６ｃに記憶される分岐先アドレスは優先度順に並べられている。
【００８０】
セレクト値の００ｂ側と１１ｂ側のどちらが優先順位が高いかは、図４（Ａ）のプライオリティエンコーダ６ｂにおける優先方式によって異なる。
【００８１】
分岐先アドレス記憶部６ｃは、記憶した分岐アドレスをセレクタ６ｄへ出力し、セレクタ６ｄは、プライオリティエンコーダ６ｂの選択結果に基づき、分岐先アドレス記憶部６ｃ内の該当する分岐アドレスを選択し、セレクタ７へ出力する。
【００８２】
特に制限されないが、本実施例において、プライオリティエンコーダ６ｂは、ｃ３→ｃ２→ｃ１→ｃ０の順に優先順位が高くなるものとする。すなわち、ｃ０が１のとき、ｃ１〜ｃ３の少なくとも１つが同時に１の場合、ｃ０を選択し、出力００ｂを出力する。ｃ０が０で、ｃ１が１の場合、ｃ２〜ｃ３の少なくとも１つが同時に１の場合、ｃ１を選択し、出力０１ｂを出力する。ｃ０、ｃ１が０で、ｃ２が１の場合、ｃ３が同時に１の場合、ｃ１を選択し、出力１０ｂを出力する。ｃ０、ｃ１、ｃ２が０で、ｃ３が１の場合、ｃ３を選択し、出力１１ｂを出力する。比較演算結果ｃ０、ｃ１、ｃ２、ｃ３のうち１つのｃｉ（ｉは０〜３の１つ）が１、他が０の場合、ｃｉのｉに対応する２ビットコードを出力する。プライオリティエンコーダ６ｂは比較演算結果が１の分岐先アドレスを選択するようにセレクタ７ｄでの選択を制御する。
【００８３】
プライオリティエンコーダ６ｂの動作を示す真理値表は、以下の表２のようになる。ｂ０，ｂ１は出力値であり、セレクタ６ｄの選択制御信号である。
【００８４】
（ｂ０、ｂ１）＝（０，０）、（０，１）、（１，０）、（１，１）のとき、図４（Ｂ）の分岐先アドレス記憶部６ｃに記憶される分岐先アドレス１、２、３、４がそれぞれ選択される。
【００８５】
［表２］プライオリティエンコーダの真理値表の例
2009163624.tif 000004
【００８６】
本実施例においては、条件設定命令（ＳＥＴＣＭＰ）によって予め条件の設定を行っておくことで、条件分岐する段階では１つの条件分岐命令の実行に必要なステップ数しか掛からないので、より高速に分岐処理することが可能であるが、特に、同じ条件を繰り返し実行するループ処理に適用することで、ループ演算時間を短縮し、高速性を増すという作用効果を奏する。
【００８７】
図６は、本実施例において、複数の条件分岐を含むループ処理の例を説明するための説明図である。命令メモリのアドレスＮ〜Ｎ＋３までの４つの命令で、分岐条件Ａ〜Ｄの４つの分岐条件を条件設定命令（ＳＥＴＣＭＰ）で設定している（分岐条件Ａ〜Ｄの分岐先アドレスはそれぞれＬ１〜Ｌ４）。この設定処理はループ処理の外で１回だけ行えば良い。
【００８８】
その後、分岐条件Ａ〜Ｄに何らかの影響を与える処理を実行した後、アドレスＸの条件分岐命令を実行する。このとき、分岐条件Ａ〜Ｄの何れかが条件を満たせば、該当する分岐先アドレスに戻り、一連の処理が繰り返される。
【００８９】
また、分岐条件Ａ〜Ｄのうち２つ以上の条件が成立したときは、そのうち最も優先順位の高い分岐条件が選択されて、それに該当する分岐アドレスに戻る。例えば、分岐先Ａ〜Ｄの分岐条件が同時に成立した場合、もっともネストレベルの深い分岐先Ｌ４への分岐に対応する分岐条件Ｄが選択され、Ｌ４へ分岐する。
【００９０】
さらに、すべての条件が不成立だったときは、分岐は行われず、ループ処理を抜けて、次の命令（アドレスＸ＋１）が実行される。
【００９１】
なお、本実施例において、分岐条件記憶部１の条件記憶部１０１、１０２、１０３、１０４のうち、条件設定命令（ＳＥＴＣＭＰ）を１回実行して１つの条件記憶部１０１に分岐条件を設定し、条件分岐命令（ＸＢＲＡ）の実行時、分岐条件比較部５１のみで分岐条件の比較を行って分岐判定を行うようにしてもよい。すなわち、複合分岐条件として、条件設定命令（ＳＥＴＣＭＰ）を４回実行してから、条件記憶部１０１〜１０４に分岐条件をそれぞれ設定したのち、条件分岐命令（ＸＢＲＡ）を実行して４つの分岐条件を判定するという構成に制限されるものでなく、１個の分岐条件、あるいは、複合条件として２個の分岐条件、３個の分岐条件、４個の分岐条件の複合条件であってもよいことは勿論である。条件設定命令（ＳＥＴＣＭＰ）を１回だけ実行して分岐判定を行う場合、条件設定命令（ＳＥＴＣＭＰ）では、優先順位の最も高い条件記憶部１０１を指定して分岐条件を設定し、分岐先アドレス記憶部６ｃに分岐先アドレスを格納するようにしてもよい。そして、分岐条件比較部５は、条件記憶部１０１、１０２に対応する条件比較部５１、５２のみを用いる場合、使用しない条件比較部５３、５４の比較演算結果ｃ２、ｃ３の値を０にマスクするようにしてもよい。図５は、かかる機能を実現する構成を示す図である。
【００９２】
条件分岐命令（ＸＢＲＡ）のオペランドにマスクビットを設ける。
【００９３】
ＸＢＲＡ        マスクビット                          ・・・（３）
【００９４】
命令デコーダ２で条件分岐命令（ＸＢＲＡ）をデコードし、マスクビット（本実施例では４ビット）の各ビットと、条件比較部５１、５２、５３、５４の比較結果とのＡＮＤ演算をとった結果が、プライオリティエンコーダ６ｂにｃ０、ｃ１、ｃ２、ｃ３として入力される。図５に示した例では、条件分岐命令（ＸＢＲＡ）は、条件比較部５１、５２の比較演算結果をプライオリティエンコーダ６ｂにｃ０、ｃ１として伝達し、条件比較部５３、５４の比較演算結果を０に設定してプライオリティエンコーダ６ｂに与えている。
【００９５】
前記第１の実施例では、分岐条件記憶部１に記憶できる分岐条件の数と、条件比較部の個数が１対１に対応しているが、本発明はかかる構成に限定されるものでないことは勿論である。条件比較部５１の１個だけでも良い。
【００９６】
＜実施例２＞
本発明の第２の実施例は、分岐条件比較部５が１つの条件比較部５１を備えた構成としたものである。図７は、本発明の第２の実施例の条件分岐判定部６の構成を示す図である。
【００９７】
本実施例は、図４、図５のプライオリティエンコーダ６ｂの代わりに、カウンタ６ｆ（カウント値は２ビット）を備えている。
【００９８】
カウンタ６ｆは、分岐先アドレス記憶部６ｃ内の分岐先アドレス、および分岐条件記憶部１内の分岐条件を選択する役割を果たす。すなわち、カウンタ６ｆは、カウント値が優先順位に対応し、優先順位にしたがって分岐条件記憶部１の記憶域（条件記憶部）、分岐先アドレス記憶部６ｃの記憶域を選択するアドレスカウンタとして機能する。
【００９９】
カウンタ６ｆの動作を説明する。まず、命令デコーダ２で条件分岐命令（ＸＢＲＡ）が解析された時点で命令デコーダ２からリセット信号を受け取り、最高優先順位の番号（例えばゼロ）にリセットされる。リセット信号は、命令デコーダ２で条件分岐命令（ＸＢＲＡ）をデコードした時点で活性化される任意の信号を用いることができる。
【０１００】
カウンタ６ｆのカウント値は、分岐条件記憶部１のセレクタ１０５に選択制御信号として入力される。なお、本実施例において、図２の分岐条件記憶部１のセレクタ１０５には、命令デコーダ２からの条件設定命令の優先順位情報（２ビット）と、カウンタ６ｆの出力（２ビット）を選択するセレクタ（不図示）を備え、条件設定命令（ＳＥＴＣＭＰ）の実行時には、命令デコーダ２からの条件設定命令の優先順位情報（２ビット）がセレクタ１０５に供給され、条件分岐命令（ＸＢＲＡ）の実行時には、カウンタ６ｆの出力が選択されてセレクタ１０５に供給される。
【０１０１】
カウンタ６ｆのカウント値に該当する優先順位の分岐条件が分岐条件記憶部１の選択された条件記憶部から読み出され、条件比較部５１のデコーダ５１ａ、５１ｂ、セレクタ５１ｃ、比較器５１ｄに設定される。また、カウンタ６ｆの出力（２ビット）は、セレクタ６ｄに選択制御信号として入力される
【０１０２】
条件比較部５１で設定された分岐条件に関する比較演算を行い、比較演算結果ｃ０が条件分岐判定部６の制御回路６ｇに入力され、比較演算結果ｃ０が分岐成立を示す値（ｃ０＝１）のとき、制御回路６ｇは、セレクタ７の選択制御信号としてＴ（論理１）を出力する。分岐先アドレス記憶部６ｃに記憶される分岐先アドレスのうち、カウンタ６ｆのカウント値に対応する記憶域の分岐先アドレスがセレクタ６ｄによって選択されて、セレクタ７に出力され、該分岐先アドレスがプログラムカウンタ８にセットされる。
【０１０３】
分岐条件が成立しない場合（ｃ０＝０）、制御回路６ｇは、カウンタ６ｆのカウント値を１つ進めるように、カウンタ６ｆに対してカウントクロックを出力する（例えば１インクリメント）。カウンタ６ｆはカウント値を１つ進め、分岐条件記憶部１の２番目の優先順位の条件記憶部に設定されている分岐条件を条件比較部５１に設定する。また、カウンタ６ｆの出力（２ビット）は、セレクタ６ｄに選択制御信号として入力される。２番目に優先順位の分岐条件に関する条件比較部５１からの比較演算結果ｃ０が、分岐成立を示す値（ｃ０＝１）のとき、制御回路６ｇは、セレクタ７の選択制御信号としてＴ（論理１）を出力する。一方、比較演算結果ｃ０＝０のとき、制御回路６ｇはカウンタ６ｆのカウント値を１つ進めるようにカウントクロックを出力する（例えば１インクリメント）。このように、制御回路６ｇは、カウンタ６ｆを制御して、優先順位の高い分岐条件から順番に条件分岐判定を行っていき、分岐条件が成立したとき、その時点で選択されている分岐先アドレスに分岐するように制御する。分岐条件記憶部１の条件記憶部１０１〜１０４に記憶されている４つの分岐条件が全て不成立の場合、制御回路６ｇは、セレクタ７の選択制御信号として不成立（Ｆ）を出力し、セレクタ７は、現在のプログラムカウンタの値を１つ増加した値ＰＣ＋１をプログラムカウンタ８に出力する。
【０１０４】
本実施例では、条件分岐命令（ＸＢＲＡ）の実行サイクルは、最も優先順位の高い分岐条件が成立する場合を除き、複数サイクルにまたがる。そこで、制御回路６ｇは、プログラムカウンタ８に対してカウント制御信号を供給し、条件比較部５１で優先順位の高い分岐条件から順番に分岐条件の成立の有無を比較判定する期間、プログラムカウンタ８のインクリメント動作をディセーブル状態に設定する。制御回路６ｇは、命令デコーダ２において、条件分岐命令（ＸＢＲＡ）をデコーダした時点で出力されるリセット信号に基づき、プログラムカウンタ８へのカウント制御信号をディスエーブル状態とし、分岐の有無が確定した場合、カウント制御信号をイネーブル状態とする。プログラムカウンタ８は、カウント制御信号がイネーブル状態の場合にのみ、インクリメント動作（ＰＣ＋１）又は分岐先アドレスのラッチ動作を行う。なお、制御回路６ｇは、分岐条件記憶部１の４つの条件記憶部１０１〜１０４に記憶されている分岐条件を１つの条件比較部５１で順次実行した比較演算結果をそれぞれ一時的に保持しておく４つのラッチ回路と、４つのラッチ回路の出力の論理和をとる論理和回路と、論理和（ＯＲ）回路の出力が０を示し、カウンタ６ｆでオーバフローが生じていない場合、カウンタ６ｆを１インクリメント（あるいは１デクリメント）させるためのカウントクロックを出力する回路を備え、論理和回路の出力が１を示した段階で、分岐成立として、セレクタ７の選択制御信号としてＴ（１）を供給する構成としてもよい。
【０１０５】
本実施例において、分岐条件記憶部１が条件記憶部１０１〜１０４を備えている場合、制御回路６ｇは、４つの条件記憶部１０１〜１０４にそれぞれ設定されている分岐条件の成立の有無の判定を１つの条件比較部５１で順番に全て実行したのちに、セレクタ７に選択制御信号を出力するようにしてもよい。あるいは、制御回路６ｇは、４つの条件記憶部１０１〜１０４にそれぞれ設定されている分岐条件のうち優先順位にしたがって選択されたいずれかの分岐条件が成立した段階で、残りの分岐条件の成立の判定を条件比較部５１で行うことなく、セレクタ７に選択制御信号（Ｔ）を出力するようにしてもよい。
【０１０６】
なお、本実施例においても、前記実施例と同様、条件分岐命令（ＸＢＲＡ）のオペランドにマスクビットを備え、分岐条件記憶部１が条件記憶部１０１〜１０４のうち選択した条件記憶部に記憶される分岐条件のみを有効とするようにしてもよい。この場合、命令デコーダ２でデコードされた条件分岐命令（ＸＢＲＡ）のオペランドのマスクビットの各ビットと、制御回路６ｇ内の図示されない４つのラッチ回路の出力とのＡＮＤ演算結果を、制御回路６ｇ内の論理和（ＯＲ）回路に供給し、論理和（ＯＲ）回路の出力が０を示し、カウンタ６ｆでオーバフローが生じていない場合、カウンタ６ｆを１インクリメント（あるいは１デクリメント）させるためのカウントクロックを出力し、論理和回路の出力が１を示した段階で、分岐成立として、セレクタ７の選択制御信号としてＴ（１）を供給する構成としてもよい
【０１０７】
本実施例において、条件分岐命令の実行サイクル数は、分岐条件の数だけ増加することになり、前記第１の実施例に比べて実行速度は低下するが、条件比較部５と条件分岐判定部６の構成は簡素となり、回路規模を小さくできる利点がある。
【０１０８】
図８は、本発明のさらに別の実施例の構成を示す図である。分岐条件記憶部１として、該分岐条件記憶部１に記憶できる分岐条件の数を増やす際、単純にセレクタ１０５で選択できる数を増やしても良いが、図８に示すように、別のセレクタ５００を設けて、階層構造的に選択できるようにしても良い。
【０１０９】
図８を参照すると、分岐条件記憶部１は、それぞれ、条件記憶部１００、２００、３００、４００と、条件記憶部１００〜４００のうちいずれを有効とするかを選択するセレクタ５００とを備えている。
【０１１０】
条件記憶部１００は、条件記憶部１０１、１０２、１０３、１０４と、条件記憶部１０１〜１０４のうちのいずれを有効とするかを選択するセレクタ１０５とを備えている。なお、図８では、簡略化のため、条件記憶部２００、３００、４００の内部構成は図示されないが、これらは、いずれも条件記憶部１００と同様の構成とされる。
【０１１１】
条件記憶部１０１において、
ｒ１０１ａは、演算用レジスタ４の第１のレジスタアドレスを記憶するレジスタ、
ｒ１０１ｂは、演算用レジスタ４の第２のレジスタアドレスを記憶するレジスタ、
ｒ１０１ｃは、即値データを記憶するレジスタ、
ｒ１０１ｄは、Ｒ／Ｉフラグを記憶するレジスタ（Ｒ＝Register：レジスタアドレス）、Ｉ＝Immediate：即値の意味）、
ｒ１０１ｅは、比較器の演算の種類を記憶するレジスタ
である。
【０１１２】
本実施例では、例えば条件設定命令（ＳＥＴＣＭＰ）のオペランドに、条件記憶部１００〜４００のうち１つを選択するための値“ｐ０”〜“ｐ３”を指定できるようにする。また、条件分岐命令にも同様の指定ができるようにする。
【０１１３】
（条件設定命令の例）
ＳＥＴＣＭＰ  ｓ０，ｐ０，ｒ１，ＮＥ，ｒ１１，Ｌ１    ・・・（４）
【０１１４】
“ｓ０”で条件記憶部１００を選択し、“ｐ０”で条件記憶部１００内の条件記憶部１０１を選択する。同様に、“ｓ１”、“ｓ２”、“ｓ２”で条件記憶部２００、３００、４００をそれぞれ選択する。
【０１１５】
本実施例において、条件分岐命令は
ＸＢＲＡ  ｓ０                                    ・・・  （５）
“ｓ０”で条件記憶部１００の一連の分岐条件を選択する。
【０１１６】
なお、図８において、条件分岐命令（ＸＢＲＡ  ｓ０）実行時には、命令デコーダ２からの信号ｓ０が、セレクタ５００に供給され、条件記憶部１００が選択される。条件分岐命令がＸＢＲＡ  ｓ１の場合、セレクタ５００は、条件記憶部２００を選択する。同様に、“ｓ２”、“ｓ２”で条件記憶部３００、４００をそれぞれ選択する。
【０１１７】
かかる構成により、条件記憶部１０１〜１０４で構成される一連の分岐条件を複数個記憶しておくことが可能となり、特に、多重ループ処理に適用したときに、一連の分岐条件を再設定することなく処理できることから、条件分岐処理の高速化を図ることができる。
【０１１８】
＜実施例３＞
図９は、本発明の別の実施例を説明するための図である。前記第１の実施例において、条件設定命令（ＳＥＴＣＭＰ）の命令長は１ワードで収まる（図６参照）。
【０１１９】
図８に示した前記実施例の条件設定命令のように、指定する分岐条件の情報が増えてくると、命令長が長くなり、図９（Ａ）に示すように、命令メモリの１ワードに収まらなくなることがある。図９（Ａ）に示す例では、オペコードと分岐条件の一部で１ワードとなっている。
【０１２０】
本実施例においては、図９（Ｂ）に示すように、条件設定命令（ＳＥＴＣＭＰ）の命令長を、２ワード以上に跨るようにしてもよい。この場合、条件設定命令の実行には、２ワード以上の命令長に対応して、例えば２ステップ分以上要する。しかしながら、本実施例において、条件分岐命令（ＸＢＲＡ）の実行サイクルは、１ステップのままである。このため、分岐処理にかかる実行時間は変わらず、実行速度を低下することなく処理可能である。これは、特に同じ条件を繰り返し行うループ処理においては、条件分岐の実行速度を低下させないという点で大変有効である。
【０１２１】
特許文献１で同様の場合を想定すると、条件判別命令の命令長が２ワードになり、命令の実行に２ステップ掛かるとすると、４つの分岐条件を処理するのに２×４＝８ステップ掛かり、さらに多分岐命令の１ステップが加わって合計９ステップ分がループ処理を繰り返す回数分掛かることになる。
【０１２２】
（２×４＋１）×ループ回数                        ・・・（６）
【０１２３】
これに対し、本実施例においては、ループ処理の外で条件設定命令を行うので、たとえ条件設定命令の実行が２ステップになっても、ループ処理に掛かる分岐処理のステップ数は条件分岐命令のみの分で済む。
【０１２４】
２×４＋１×ループ回数                              ・・・（７）
【０１２５】
また、命令メモリのアドレス空間が広くなると、条件設定命令で指定する分岐先アドレスのビット数が多くなり、この場合も命令長が長くなり、１ワードに収まらなくなることがある。
【０１２６】
特許文献２のように、条件分岐命令で分岐先アドレスを複数指定すると、条件分岐命令の命令長が非常に長くなり、命令の実行ステップ数もその分増えることになる。
【０１２７】
例えば、４つの分岐先アドレスを含んだため条件分岐命令の命令長が４ワードになった場合、条件分岐命令を１回実行するのに４ステップ掛かることになるため、ループ処理に掛かる分岐処理のステップ数は下記のようになる。
【０１２８】
４×ループ回数                                      ・・・（８）
【０１２９】
これに対して、本実施例では、分岐先アドレスは条件分岐命令には含まない構成となっているので、命令長は１ワードのままで済み、処理時間は１ステップしか掛からない。従って、下記のようになる。
【０１３０】
１×ループ回数                                        ・・・（９）
【０１３１】
＜実施例４＞
次に本発明のさらに別の実施例を説明する。図６のプライオリティエンコーダ６ｂは、表２で示した優先順位とは逆であってもよい。
【０１３２】
本実施例によれば、条件設定命令（ＳＥＴＣＭＰ）において、優先順位の指定を行うことができることから、プライオリティエンコーダ６ｂのロジックは、表２で示した優先順位とは逆であってもよい。表２の優先順位とは逆の場合の真理値表を以下に示す。
【０１３３】
［表３］プライオリティエンコーダの真理値表の例
2009163624.tif 000005
【０１３４】
図４又は図５のプライオリティエンコーダ６ｂは、ｃ３→ｃ２→ｃ１→ｃ０の順に優先順位が低くなる（ｃ０→ｃ１→ｃ２→ｃ３の順に優先順位が高くなる）。すなわち、ｃ３が１のとき、ｃ２〜ｃ０の少なくとも１つが同時に１の場合、ｃ３を選択し、出力１１ｂを出力する。ｃ３が０で、ｃ２が１の場合、ｃ１〜ｃ０の少なくとも１つが同時に１の場合、ｃ２を選択し、出力１０ｂを出力する。ｃ３、ｃ２が０で、ｃ１が１の場合、ｃ０が同時に１の場合、ｃ１を選択し、出力０１ｂを出力する。ｃ３、ｃ２、ｃ１が０で、ｃ０が１の場合、ｃ０を選択し、出力００ｂを出力する。比較演算結果ｃ０、ｃ１、ｃ２、ｃ３のうち１つのｃｉ（ｉは０〜３の１つ）が１、他が０の場合、ｃｉのｉに対応する２ビットコードを出力する。プライオリティエンコーダ６ｂは比較演算結果が１の分岐先アドレスを選択するようにセレクタ７ｄでの選択を制御する。
【０１３５】
本実施例において、優先順位の正逆２種類のプライオリティエンコーダを用意しておき、これを条件分岐命令の指定で切り替え、もしくは選択できるようにすることも可能である。この場合、正逆切り替えのための指定は１ビット分で済む。条件分岐命令のオペコードあるいはオペランドに、正逆を指定するビット（０で正順、１で逆順）を追加すればよい。
【０１３６】
条件分岐処理は、必ず比較または演算命令の直後に、その演算結果のフラグをフラグレジスタに保持しておき、次の分岐命令でそのフラグを評価して分岐処理を実行するという、２つの命令の組み合わせで行っている。これに対して、条件設定命令によって予め分岐条件の設定を行っておくことで、条件分岐処理を行う段階では１つの条件分岐命令の処理時間しか掛からないので、より高速に分岐処理を行うことが可能である。特に、同じ条件を繰り返し実行するループ処理に適用することで、高速性が増す。
【０１３７】
複数の分岐条件の情報と分岐先アドレスを記憶できる、条件設定記憶部および分岐先アドレス記憶部を設けており、条件設定命令によって予め優先順位付けをして、それらの情報を記憶し、条件設定記憶部から一連の分岐条件を読み出して、比較演算を行う条件比較部を設け、その出力結果を基に、成立した分岐条件に該当する分岐先アドレスを選択できる条件分岐判定部を設けており、その処理を１つの条件分岐命令で実行できる。なお、条件分岐判定部は、複数の分岐条件が同時に成立した場合でも最も優先順位の高い分岐条件に該当する分岐アドレスを選択するようにしている。
【０１３８】
条件設定記憶部を持つことで、分岐条件を複数個記憶させておくことができるので、より複雑な条件の組み合わせや多重ループ処理に適用させることができ、高速性が増す。
【０１３９】
また、分岐条件や分岐先アドレスの情報が多くなることによる命令長の増大に対しても、これらの情報は、予め実行しておく条件設定命令で設定しているため、条件分岐命令の命令長にはほとんど影響しない。このため、本発明を用いない場合には、命令長の増大による実行速度の低下が起こる場合でも、本発明によれば、分岐処理の際の実行ステップ数を増やすことがなく、特にループ処理の際の条件分岐命令の実行速度は低下させること無く、高速に処理できる効果がある。
【０１４０】
以下に、上記した本実施例と上記した関連技術との作用効果の相違を対比して説明する。
【０１４１】
特許文献１では、分岐条件判定の命令が分岐条件に必要な回数分だけ条件分岐命令を実行する直前に必要であるため、同じ分岐条件を繰り返し実行するループ処理であっても、その一連の分岐条件判定の命令の実行が必要となる。本実施例によれば、１度設定した分岐条件は再度設定変更しない限り保持されることから、条件設定命令を再度実行する必要はなく、条件分岐命令のみの実行で処理できるので、分岐処理がより高速となる。
【０１４２】
特許文献２は、特許文献１と同様に、分岐命令の直前の演算結果を元に分岐判定しており、しかも、直前の命令１つの演算結果のみが分岐判定に与えられるだけであるため、特許文献１や、本発明に比べて、非常に単純な分岐条件にしか対応できない。ただし、条件分岐命令１つ分のステップしか必要としないので、分岐処理の速さは、本発明の第１の実施例（図１）と同じである。
【０１４３】
なお、特許文献２の第２の実施例は、分岐先アドレスの値を大きく取りたい場合、分岐先アドレスを複数含んでいることにより、条件分岐命令の命令長が長くなり、命令メモリの２ワードに跨ることを示している。この場合、２ワード目の値を命令デコーダに読み込むステップが発生するため、一般的にその分命令の実行サイクル数が長くなる。これに対して、本発明においては、前記実施例で説明したように、分岐先アドレスは条件分岐命令には含まれないことから、前述のような問題は発生しない。なお、本発明において、分岐先アドレスの値を大きく取りたい場合、条件設定命令の命令長が長くなるだけであり、分岐処理自体が遅くなることはない。
【０１４４】
特許文献３に記載のデジタル信号プロセッサでは、演算命令の結果（請求項には、算術演算器、論理シフタ、乗算器のいずれかを選択するとある）を比較対象として条件判定を行っており、単純な分岐条件しか設定できない。
【０１４５】
なお、上記の特許文献１乃至４の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施例ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０１４６】
【図１】本発明の一実施例の構成を示す図である。
【図２】本発明の一実施例の分岐条件記憶部の構成の一例を示す図である。
【図３】本発明の一実施例の分岐条件比較部とその関連部分の一例を示す図である。
【図４】本発明の一実施例の条件分岐判定部とその関連部の一例を示す図である。
【図５】本発明の一実施例の変形例を示す図である。
【図６】本発明の一実施例における条件設定命令と条件分岐命令を使用したプログラムの一例を示す図である。
【図７】本発明の別の実施例の条件分岐判定部の構成を示す図である。
【図８】本発明の別の実施例の条件分岐記憶部の構成を示す図である。
【図９】本発明の別の実施例の条件設定命令の一例を示す図である。
【図１０】一般的な条件分岐命令を用いたプログラムの一例を示す図である。
【図１１】特許文献１の構成を示す図である。
【図１２】特許文献１の条件分岐命令を用いたプログラムの一例を示す図である。
【図１３】特許文献３の条件分岐処理プログラムの例を示す図である。
【符号の説明】
【０１４７】
１  分岐条件記憶部
２  命令デコーダ
３  命令メモリ
４  演算用レジスタ
５  分岐条件比較部
６  条件分岐判定部
７  セレクタ
８  プログラムカウンタ
５１、５２、５３、５４  条件比較部
５１ａ、５１ｂ  デコーダ
５１ｃ  セレクタ
５２ｄ  比較器
６ａ、６ｄ  セレクタ
６ｃ  分岐先アドレス記憶部
６ｂ  プライオリティエンコーダ
６ｅ  論理和回路
６ｆ  カウンタ
６ｇ  制御回路
１０１、１０２、１０３、１０４  条件記憶部
１００、２００、３００、４００  条件記憶部
１０５  セレクタ
４０１  演算器  
４０２  条件判別回路
４０３〜４０６  条件成否レジスタ
４０７  プライオリタイザ
４０８〜４１１  分岐先アドレスレジスタ
４１２  セレクタ
４１３  プログラムカウンタ
４２２  演算結果
４２４  条件成否レジスタ選択信号
４２７  分岐先アドレス選択信号
４２９  条件成否情報
４３１  分岐条件
５００  セレクタ
ｒ１０１ａ、１０１ｂ、ｒ１０１ｃ、ｒ１０１ｄ、ｒ１０１ｅ  レジスタ
ｒ１０２ａ、１０２ｂ、ｒ１０２ｃ、ｒ１０２ｄ、ｒ１０２ｅ  レジスタ
ｒ１０３ａ、１０３ｂ、ｒ１０３ｃ、ｒ１０３ｄ、ｒ１０３ｅ  レジスタ
ｒ１０４ａ、１０４ｂ、ｒ１０４ｃ、ｒ１０４ｄ、ｒ１０４ｅ  レジスタ
【図１】
2009163624.tif 000006
【図２】
2009163624.tif 000007
【図３】
2009163624.tif 000008
【図４】
2009163624.tif 000009
【図５】
2009163624.tif 000010
【図６】
2009163624.tif 000011
【図７】
2009163624.tif 000012
【図８】
2009163624.tif 000013
【図９】
2009163624.tif 000014
【図１０】
2009163624.tif 000015
【図１１】
2009163624.tif 000016
【図１２】
2009163624.tif 000017
【図１３】
2009163624.tif 000018