(57)【要約】      （修正有） 【課題】  条件分岐を容易にコーディング可能とすること。【解決手段】  条件分岐命令をパイプライン処理可能なプロセッサであって、前記条件分岐命令には、分岐条件を示す第１及び第２オペコードと当該分岐命令に後続する４つの命令それぞれを実行させるか否かを決定する要素である基本制御パターン指定ビットとが含まれ、前記分岐条件の判定結果と前記基本制御パターンとに基づいて前記後続する４つの命令の実行パターンを条件分岐命令の制御回路の実行判定回路で設定し、その設定された実行パターンに基づいて前記後続する４つの命令の実行をシフト・セレクト回路、判定結果格納用メモリ及びマルチプレクサで制御するようにした。【選択図】    図３
2005141651.tif 000002
【特許請求の範囲】
【請求項１】
条件分岐命令をパイプライン処理可能なプロセッサであって、前記条件分岐命令には、分岐条件と当該分岐命令に後続する所定数の命令それぞれを実行させるか否かを決定する要素とが含まれ、前記分岐条件の判定結果と前記要素とに基づいて前記後続する所定数の命令の実行パターンを設定する実行パターン設定手段と、その実行パターン設定手段で設定された実行パターンに基づいて前記後続する所定数の命令の実行を制御する実行制御手段を備えたことを特徴とするプロセッサ。
【請求項２】
前記条件分岐命令には、前記後続する所定数の命令それぞれに対応して設けられ、前記実行パターン設定手段で設定された実行パターンに基づいて前記対応する命令の実行を制御させるか否かを示す所定数のフラグが含まれ、前記実行パターン設定手段は、対応する前記フラグが所定状態である命令の実行のみを前記実行パターンに基づいて制御することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記実行パターン設定手段は、前記後続する所定数の命令それぞれを実行させるか否かを示すビット列を設定し、前記実行制御手段は、前記実行パターン設定手段で設定されたビット列を１つずつシフトさせながら前記後続する所定数の命令の実行を１つずつ制御し、前記条件分岐命令の実行中に特定の割り込みが発生すると前記特定の割り込みの発生直前のビット列の状態を保持することを特徴とする請求項１又は２に記載のプロセッサ。
【請求項４】
条件分岐命令をパイプライン処理可能なプロセッサの制御方法であって、前記条件分岐命令には、分岐条件と当該分岐命令に後続する所定数の命令それぞれを実行させるか否かを決定する要素とが含まれ、前記分岐条件の判定結果と前記要素とに基づいて前記後続する所定数の命令の実行パターンを設定し、その設定された実行パターンに基づいて前記後続する所定数の命令の実行を制御することを特徴とするプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、条件分岐命令をパイプライン処理可能なプロセッサ及びプロセッサの制御方法に関する。
【背景技術】
【０００２】
従来、この種のプロセッサとしては、例えば、条件分岐命令によって分岐させるときに、条件分岐命令に基づいて所定の条件が満たされているか否かを判定し、その判定結果に基づいて分岐先命令をパイプラインに送り込むもの、つまり前記判定結果が得られてから分岐先命令をパイプラインに送り込むものがある（例えば、特許文献１参照。）。
【０００３】
このようなプロセッサにあっては、通常、条件分岐命令による分岐条件の判定中は分岐と無関係な命令をパイプラインに送り込み、パイプラインに無駄な空き（遅延スロット）が生じることを防止し、処理効率の向上をはかるようになっていた。
【特許文献１】特開平０５−２００６７号広報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来のプロセッサにあっては、条件分岐命令の判定中に、条件分岐と無関係な命令を送り込むようになっているため、プログラムの流れとは異なる複雑なスケジューリングが必要とされ、ソースコードが複雑となってしまい、条件分岐命令をコーディングすることが難しくなってしまう恐れがあった。
そこで、本発明は、上記従来のプロセッサの未解決の問題点を解決することを目的とするものであって、条件分岐命令を容易にコーディングすることができるプロセッサ及びプロセッサの制御方法を提供することを課題とする。
【課題を解決するための手段】
【０００５】
したがって、上記課題を解決するために、第１の発明であるプロセッサは、条件分岐命令をパイプライン処理可能なプロセッサであって、前記条件分岐命令には、分岐条件と当該分岐命令に後続する所定数の命令それぞれを実行させるか否かを決定する要素とが含まれ、前記分岐条件の判定結果と前記要素とに基づいて前記後続する所定数の命令の実行パターンを設定する実行パターン設定手段と、その実行パターン設定手段で設定された実行パターンに基づいて前記後続する所定数の命令の実行を制御する実行制御手段を備えたことを特徴とする。なお、所定数の命令としては、１つの命令であってもよいし、２つ以上の複数の命令であってもよい。
【０００６】
また、第２の発明であるプロセッサは、前記条件分岐命令には、前記後続する所定数の命令それぞれに対応して設けられ、前記実行パターン設定手段で設定された実行パターンに基づいて前記対応する命令の実行を制御させるか否かを示す所定数のフラグが含まれ、前記実行パターン設定手段は、対応する前記フラグが所定状態である命令の実行のみを前記実行パターンに基づいて制御することを特徴とする。
【０００７】
一方、第３の発明であるプロセッサの制御方法は、条件分岐命令をパイプライン処理可能なプロセッサの制御方法であって、前記条件分岐命令には、分岐条件と当該分岐命令に後続する所定数の命令それぞれを実行させるか否かを決定する要素とが含まれ、前記分岐条件の判定結果と前記要素とに基づいて前記後続する所定数の命令の実行パターンを設定し、その設定された実行パターンに基づいて前記後続する所定数の命令の実行を制御することを特徴とする。
【０００８】
これら第１〜第３の発明によれば、条件分岐命令に基づいて後続する所定数の命令それぞれを実行させるか否かを決定するようにしたため、分岐条件命令に続けて分岐先命令を送り込むというように、プログラムの流れに沿った自然なコーディングをすることができ、条件分岐命令と無関係の命令を送り込むための複雑なスケジューリングの必要がなく、条件分岐命令を容易にコーディングすることができる。
【０００９】
さらに、第４の発明であるプロセッサは、前記実行パターン設定手段は、前記後続する所定数の命令それぞれを実行させるか否かを示すビット列を設定し、前記実行制御手段は、前記実行パターン設定手段で設定されたビット列を１つずつシフトさせながら前記後続する所定数の命令の実行を１つずつ制御し、前記条件分岐命令の実行中に特定の割り込みが発生すると前記特定の割り込みの発生直前のビット列の状態を保持することを特徴とする。
【００１０】
この第４の発明によれば、分岐命令の直後に特定の割り込み命令を発生させることで、前記分岐命令に後続する所定数の命令のうちいずれの命令が実行されるのかを適切に確認することができ、プログラムのデバッグ作業を容易に行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明のプロセッサの一実施形態を図面に基づいて説明する。
まず、本実施形態にかかるプロセッサに入力される条件分岐命令の命令コードについて説明する。この条件分岐命令の命令コードには、図１に示すように、ＣＳ（Condition Set）タイプとＣＳＩ（Condition Set with Immediate）タイプとの２タイプがある。これらのうちＣＳタイプは、図１（ａ）に示すように、３２ビットのビット長を有し、下位ビットから順に、５ビットの第２オペコードopecode2と、５ビットの第１ソースアドレスsrc1と、５ビットの第２ソースアドレスsrc2と、８ビットのコンディションデータconditionと、５ビットの第１オペコードopecode1とを含み、その他のビットには「０」が配されている。また、ＣＳＩタイプは、図１（ｂ）に示すように、３２ビットのビット長を有し、下位ビットから順に、１０ビットのイミディエイトimmediateと、５ビットの第１ソースアドレスsrc1と、８ビットのコンディションデータconditionと、５ビットの第１オペコードopecode1とを含み、その他のビットには「０」が配されている。ここで、第１オペコードopecode1及び第２オペコードopecode2は、図２に示すように、命令コードのタイプと分岐条件とを示すデータである。
【００１２】
さらに、８ビットのコンディションデータconditionは、２ビットの基本制御パターン指定ビットＡと、１ビットの第１命令無条件実行フラグＢと、１ビットの第２命令無条件実行フラグＣと、１ビットの第３命令無条件実行フラグＤと、１ビットの第４命令無条件実行フラグＥと、２ビットの判定結果演算用フラグＦとを含んでいる。
これらのうち基本制御パターン指定ビットＡは、条件分岐命令による分岐条件の判定結果に基づいて、その条件分岐命令に後続する１番目〜４番目の命令それぞれの実行パターンを指定するためのデータである。すなわち、その値が「００」である場合には後述するプリセレクト回路３に格納されている累積判定結果反映フラグＦ１が「０」である場合に前記後続する命令が全て実行され、前記累積判定結果反映フラグＦ１が「１」である場合に前記後続する命令の実行が全て禁止される（False実行）。また、基本制御パターン指定ビットＡが「０１」である場合には前記累積判定結果反映フラグＦ１が「１」であるときに前記後続する命令が全て実行され、前記累積判定結果反映フラグＦ１が「０」であるときに前記後続する命令の実行を全て禁止するようになっている（True実行）。さらに、「１０」である場合には前記累積判定結果反映フラグＦ１が「１」であるときに前記後続する命令のうち２番目及び４番目の命令のみを実行させ且つ１番目及び３番目の命令の実行を禁止し、前記累積判定結果反映フラグＦ１が「０」であるときに前記後続する命令のうち１番目及び３番目の命令のみを実行させ且つ２番目及び４番目の命令の実行を禁止し、また、「１１」である場合には前記累積判定結果反映フラグＦ１が「１」であるときに前記後続する命令のうち１番目及び３番目の命令のみを実行させ且つ２番目及び４番目の命令の実行を禁止し、前記累積判定結果反映フラグＦ１が「０」であるときに前記後続する命令のうち２番目及び４番目の命令のみを実行させ且つ１番目及び３番目の命令の実行を禁止するようになっている。
【００１３】
また、第１〜第４命令無条件実行フラグＢ〜Ｅは、図４に示すように、条件分岐命令に後続する１番目〜４番目の命令を基本制御パターン指定ビットＡ及び後述するプリセレクト回路３に格納されている累積判定結果反映フラグＦ１によって指定された実行パターンに従って実行させるか否かを制御するためのデータである。すなわち、その値が「０」である場合には前記実行パターンに従わず対応する命令が実行され、「１」である場合には前記実行パターンに従って対応する命令が実行されたり当該実行が禁止されたりする。
【００１４】
さらに、判定結果演算用フラグＦは、図５に示すように、後述するプリセレクト回路３に格納されている累積判定結果反映フラグＦ１と今回の条件分岐命令による判定結果を示すフラグ（今回判定結果反映フラグ）Ｆ２との論理演算を行わせ、その演算結果を新たな累積判定結果反映フラグＦ１とするためのデータである。すなわち、その値が「０１」である場合にはそれらの論理積を新たな累積判定結果反映フラグＦ１とし、「１０」である場合にはそれらの論理和を新たな累積判定結果反映フラグＦ１とし、「００」である場合には今回判定結果反映フラグＦ２をそのまま累積判定結果反映フラグＦ１とする。
【００１５】
上述のように構成可能な命令コードに対し、プログラマは所定の命令を指定してソースコードをコーディングする。条件分岐命令のソースコードは、条件のタイプを示すコード名（条件タイプ）と、第１ソースアドレスsrc1を示すコードと、第２ソースアドレスsrc2又はイミディエイトimmediateを示すコードとから構成され、これらに、さらに基本制御パターン指定ビットＡを示すコードと、判定結果演算用フラグＦを示すコードとを含ませることができる。
【００１６】
そして、例えば、ソースコード「ＳＬＴＩ  ％ＳＲ０，＃０，／Ｆ；」がコンパイルされると、図２に示すように、第１オペコードopecode1が「０１００１」であり、第１ソースアドレスsrc1が変数ＳＲ０のアドレスであり、イミディエイトimmediateが数値「０」の２進数表示であり、また図３及び図４に示すように、基本制御パターン指定ビットＡが「００」であり、第１命令無条件実行フラグＢが「１」であり、第２命令無条件実行フラグＣが「０」であり、第３命令無条件実行フラグＤが「１」であり、第４命令無条件実行フラグＥが「１」であり、また図５に示すように、判定結果演算用フラグＦが「００」であるＣＳＩタイプの命令コードが生成される。
【００１７】
また、例えば、ソースコード「ＳＬＴＩ  ％ＳＲ０，＃１２８；」がコンパイルされると、図２に示すように、第１オペコードopecode1が「０１００１」であり、第１ソースアドレスsrc1が変数ＳＲ０のアドレスであり、イミディエイトimmediateが数値「１２８」の２進数表示であり、また図３及び図４に示すように、基本制御パターン指定ビットＡが「００」であり、第１〜第４命令無条件実行フラグＢ〜Ｅが全て「１」であり、また図５に示すように、判定結果演算用フラグＦが「００」であるＣＳＩタイプの命令コードが生成される。この分岐命令に続いて、さらにソースコード「ＳＧＥＩ  ％ＳＲ０，＃−１２８，／Ｔ，／ａｎｄ；」がコンパイルされると、図２に示すように、第１オペコードopecode1が「０１００１」であり、第１ソースアドレスsrc1が変数ＳＲ０のアドレスであり、イミディエイトimmediateが数値「−１２８」の２進数表示であり、また図３及び図４に示すように、基本制御パターン指定ビットＡが「０１」であり、第１命令無条件実行フラグＢが「０」であり、第２命令無条件実行フラグＢが「１」であり、第３命令無条件実行フラグＢが「１」であり、第４命令無条件実行フラグＢが「１」であり、また図４に示すように、判定結果演算用フラグＦが「００」であるＣＳＩタイプの命令コードが生成される。
【００１８】
次に、本実施形態にかかるプロセッサの構成について説明する。
図６は、本実施形態のプロセッサにおける条件分岐命令の制御回路１の概略構成を示すブロック図である。この図６に示すように、制御回路１は、条件判定回路２、プリセレクト回路３、実行判定回路４、シフト・セレクト回路５、判定結果格納用メモリ６、処理復帰用メモリ７、及びマルチプレクサ８で構成され、マルチプレクサ８は、図示しないフェッチ回路から出力される命令コードを順次デコード可能なデコーダ９に接続されている。
【００１９】
これらのうち条件判定回路２は、図示しないフェッチ回路から条件分岐命令の命令コードが出力されているか否かを判定し、条件分岐命令の命令コードが出力されている場合には当該命令コードに含まれる第１ソースアドレスsrc1と第２ソースアドレスsrc2又イミディエイトimmediateとに基づいて、当該命令コードに含まれる第１オペコードopecode1と第２オペコードopecode2とに応じた分岐条件が満たされているか否かを判定する。なお、図２に、第１オペコードopecode1及び第２オペコードopecode2に応じた分岐条件を示す。
【００２０】
条件分岐命令の命令コードに含まれる第１オペコードopecode1及び第２オペコードopecode2に応じた分岐条件が満たされている場合には、今回判定結果反映フラグＦ２を「１」のセット状態とし、そうでない場合には今回判定結果反映フラグＦ２を「０」のリセット状態とする。
また、プリセレクト回路３は、図示しないフェッチ回路から条件分岐命令の命令コードが出力されているか否かを判定し、条件分岐命令の命令コードが出力されている場合には、当該命令コードに含まれるコンディションデータconditionの判定結果演算用フラグＦが「００」であるか否かを判定する。判定結果演算用フラグＦが「００」である場合には、条件判定回路２でセット状態あるいはリセット状態とされた今回判定結果反映フラグＦ２を図示しないフリップフロップに累積判定結果反映フラグＦ２として格納させる。
【００２１】
判定結果演算用フラグＦが「００」でない場合には、判定結果演算用フラグＦが「０１」であるか否かを判定し、「０１」である場合には、図示しないフリップフロップに格納されている累積判定結果反映フラグＦ１と、条件判定回路２でセット状態あるいはリセット状態とされた今回判定結反映フラグＦ２との論理積を算出し、その算出結果を図示しないフリップフロップに累積判定結果反映フラグＦ１として格納させる。
【００２２】
判定結果演算用フラグＦが「０１」でない場合には、判定結果演算用フラグＦが「１０」であるか否かを判定し、「１０」である場合には、図示しないフリップフロップに格納されている累積判定結果反映フラグＦ１と、条件判定回路２でセット状態あるいはリセット状態とされた今回判定結果反映フラグＦ２との論理和を算出し、その算出結果を図示しないフリップフロップに累積判定結果反映フラグＦ１として格納させる。
【００２３】
さらに、実行判定回路４は、図示しないフェッチ回路から条件分岐命令の命令コードが出力されているか否かを判定し、条件分岐命令の命令コードが出力されている場合には、当該命令コードに含まれるコンディションデータconditionの基本制御パターン指定ビットＡが「００」であるか否かを判定する。
基本制御パターン指定ビットＡが「００」である場合には、プリセレクト回路３の図示しないフリップフロップに格納されている累積判定結果反映フラグＦ１が「１」であるか否かを判定し、「１」である場合には、条件分岐命令に後続する１番目〜４番目の命令の実行を全て禁止する指令、つまりビット列「１１１１」を出力し、「０」である場合には、後続する１番目〜４番目の命令を全て実行する指令、つまりビット列「００００」を出力する。なお、これらの４ビットの指令は、最下位ビットから順に後続する１番目〜４番目の命令に対応し、「０」は対応する命令を実行させる指令であり、「１」は対応する命令の実行を禁止する指令である。
【００２４】
基本制御パターン指定ビットＡが「００」でない場合には、当該基本制御パターン指定ビットＡが「０１」であるか否かを判定し、「０１」である場合には、プリセレクト回路３の図示しないフリップフロップに格納されている累積判定結果反映フラグＦ１が「１」であるか否かを判定し、「１」である場合には、後続する１番目〜４番目の命令を全て実行する指令、つまりビット列「００００」を出力し、「０」である場合には、後続する１番目〜４番目の命令の実行を全て禁止する指令、つまりビット列「１１１１」を出力する。
【００２５】
基本制御パターン指定ビットＡが「０１」でない場合には、当該基本制御パターン指定ビットＡが「１０」であるか否かを判定し、「１０」である場合には、プリセレクト回路３の図示しないフリップフロップに格納されている累積判定結果反映フラグＦ１が「１」であるか否かを判定し、「１」である場合には、後続する命令のうち２番目及び４番目の命令のみを実行させ且つ１番目及び３番目の命令の実行を禁止する指令、つまりビット列「０１０１」を出力し、「０」である場合には、後続する命令のうち１番目及び３番目の命令のみを実行させ且つ２番目及び４番目の命令の実行を禁止する指令、つまりビット列「１０１０」を出力する。
【００２６】
基本制御パターン指定ビットＡが「１０」でない場合には、当該基本制御パターン指定ビットＡが「１１」であるか否かを判定し、「１１」である場合には、プリセレクト回路３の図示しないフリップフロップに格納されている累積判定結果反映フラグＦ１が「１」であるか否かを判定し、セット状態である場合には、後続する命令のうち１番目及び３番目の命令のみを実行させ且つ２番目及び４番目の命令の実行を禁止する指令、つまりビット列「１０１０」を出力し、「０」である場合には、後続する命令のうち２番目及び４番目の命令のみを実行させ且つ１番目及び３番目の命令の実行を禁止する指令、つまりビット列「０１０１」を出力する。
【００２７】
また、シフト・セレクト回路５は、実行判定回路４から指令が出力されているか否かを判定し、指令が出力されている場合には当該指令を判定結果格納用メモリ６及び処理復帰用メモリ７に出力し、指令が出力されていない場合には図示しない割り込み管理部から割り込みが発生したことを示す割り込み発生信号が出力されているか否かを判定する。
割り込み発生信号が出力されている場合には、図示しない演算処理部に処理を中断させるＢＲＥＡＫ命令がデコードされたか否かを判定し、ＢＲＥＡＫ命令がデコードされた場合には実行指令、つまりビット列「００００」を判定結果格納用メモリ６のみに出力し且つ処理復帰用メモリ７への指令の出力を禁止し、ＢＲＥＡＫ命令がデコードされていない場合にはビット列「００００」を判定結果格納用メモリ６に出力し且つ実行指令、つまり「０」ビットを処理復帰用メモリ７に出力する。
【００２８】
割り込み発生信号が出力されていない場合には既に割り込みを実行中であるか否かを判定し、割り込みを実行中である場合には判定結果格納用メモリ６及び処理復帰用メモリ７への指令の出力を禁止し、割り込みを実行中でない場合には割り込みを終了し、それまでの処理に復帰するところであるか否かを判定する。
割り込みを終了し、それまでの処理に復帰するところである場合には、処理復帰用メモリ７の下位４ビットに格納されているビット列を判定結果格納用メモリ６に出力し、そうでない場合、つまり上記いずれの場合にもあてはまらない場合には、マルチプレクサ８が判定結果格納用メモリ６からデータを取得するたびに判定結果格納用メモリ６及び処理復帰用メモリ７に「０」ビットを出力する。
【００２９】
さらに、判定結果格納用メモリ６は、５ビットの記憶領域を有し、シフト・セレクト回路５から４ビットの指令が出力されているか否かを判定し、前記指令が出力されている場合には指令を図示しない記憶領域の下位４ビットに格納し、前記指令が出力されていない場合にはシフト・セレクト回路５から「０」ビットが出力されるたびに、図示しない記憶領域に格納されている指令を１つ下位ビット側にシフトすると共に最上位ビットに「０」ビットを格納させる。
【００３０】
また、処理復帰用メモリ７も、５ビットの記憶領域を有し、シフト・セレクト回路５から４ビットの指令が出力されているか否かを判定し、前記指令が出力されている場合には指令を図示しない記憶領域の下位４ビットに格納し、前記指令が出力されていない場合にはシフト・セレクト回路５から「０」ビットが出力されるたびに、図示しない記憶領域に格納されている指令を１つ下位ビット側にシフトすると共に最上位ビットに「０」ビットを格納させる。
【００３１】
さらに、マルチプレクサ８は、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されているデータを取得すると共に、その取得されたデータが「０」ビットであるか否かを判定し、「０」ビットである場合には図示しないフェッチ回路から出力される命令コードをそのままデコードさせる指令をデコーダ９に出力し、「０」ビットで場合、つまり「１」である場合には、図示しないフェッチ回路から出力される命令コードに代えて、何もしない命令であるＮＯＰ(Not Operation)命令の命令コードをデコードさせる指令をデコーダ９に出力させる。
【００３２】
次に、本実施形態にかかるプロセッサの動作を具体的状況に基づいて説明する。
まず、プログラマが、以下に示すように、条件分岐命令とその条件分岐命令に後続する４つの命令を含むソースコードをコーディングし、そのソースコードをコンパイルしてプロセッサに実行させたと実行したとする。
ＳＥＱａ，ｂ／ＴＦＴＦ；
ＭＰＩｄ，ａ，２；
ＭＰＩｄ，ａ，３；
ＡＤＤｃ，ｄ，ｂ；
ＳＵＢｃ，ｄ，ｂ；
そして、その実行中に、図示しないフェッチ回路から条件分岐命令「ＳＥＱａ，ｂ／ＴＦＴＦ；」の命令コード（第１オペコードopecode1「００１００」、第２オペコードopecode2「０１１００」、基本制御パターン指定ビットＡ「１１」、判定結果演算用フラグＦ「００」、第１ソースアドレスsrc1「変数ａのアドレス」、第２ソースアドレスsrc2「変数ｂのアドレス」）が出力されたとする。すると、まずサイクル「１」で、条件判定回路２によって、第１ソースアドレスsrc1及び第２ソースアドレスsrc2に格納されている内容、つまり変数ａ及び変数ｂが等しくないか否か判定され、変数ａ及び変数ｂが等しくないとすると、今回判定結果反映フラグＦ２が「１」とされる。また、プリセレクト回路３によって、条件判定回路２でセット状態とされた今回判定結果反映フラグＦ２がそのまま図示しないフリップフロップに累積判定結果反映フラグＦ１として格納される。さらに、実行判定回路４によって、条件分岐命令に後続する１番目及び３番目の命令のみを実行させ且つ２番目及び４番目の命令の実行を禁止する指令、つまりビット列「１０１０」が出力され、シフト・セレクト回路５によって、そのビット列「１０１０」が判定結果格納用メモリ６及び処理復帰用メモリ７に出力される。そして、判定結果格納用メモリ６及び処理復帰用メモリ７によって、そのビット列「１０１０」がそれぞれの図示しない記憶領域の下位４ビットに格納され、図７のサイクル「２」に示すように、図示しない各記憶領域にはビット列「０１０１０」が格納される。
【００３３】
また、サイクル「２」で、マルチプレクサ８によって、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されている「０」ビットのデータが取得され、図示しないフェッチ回路から出力される命令コードをデコーダ９にデコードさせる指令が出力され、デコーダ９によって、条件分岐命令に後続する１番目の命令「ＭＰＩｄ，ａ，２；」の命令コードがデコードされ、図示しない演算ユニットで演算「ｄ＝ａ×２」が実行される。また、マルチプレクサ８によって判定結果格納用メモリ６から最下位ビットのデータが取得されると、シフト・セレクト回路５によって、判定結果格納用メモリ６及び処理復帰用メモリ７に「０」ビットが出力され、判定結果格納用メモリ６及び処理復帰用メモリ７によって、図示しない記憶領域に格納されているビット列「０１０１０」が１つ下位ビット側にシフトされると共に最上位ビットに「０」ビットが格納され、図７のサイクル「３」に示すように、図示しない各記憶領域にはビット列「００１０１」が格納される。
【００３４】
さらに、サイクル「３」で、マルチプレクサ８によって、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されている「１」ビットのデータが取得され、ＮＯＰ命令の命令コードをデコードさせる指令が出力され、デコーダ９によって、条件分岐命令に後続する２番目の命令「ＭＰＩｄ，ａ，３；」の命令コードに代えてＮＯＰ命令がデコードされ、何もしない状態とされる。また、マルチプレクサ８によって判定結果格納用メモリ６から最下位ビットのデータが取得されると、シフト・セレクト回路５によって、判定結果格納用メモリ６及び処理復帰用メモリ７に「０」ビットが出力され、判定結果格納用メモリ６及び処理復帰用メモリ７によって、図示しない記憶領域に格納されているビット列「００１０１」が１つ下位ビット側にシフトされると共に最上位ビットに「０」ビットが格納され、図７のサイクル「４」に示すように、図示しない各記憶領域にはビット列「０００１０」が格納される。
【００３５】
また、サイクル「４」で、マルチプレクサ８によって、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されている「０」ビットのデータが取得され、図示しないフェッチ回路から出力される命令コードをデコーダ９にデコードさせる指令が出力され、デコーダ９によって、条件分岐命令に後続する３番目の命令「ＡＤＤｃ，ｄ，ｂ；」の命令コードがデコードされ、図示しない演算ユニットで演算「ｃ＝ｄ＋ｂ」が実行される。また、マルチプレクサ８によって判定結果格納用メモリ６から最下位ビットのデータが取得されると、シフト・セレクト回路５によって、判定結果格納用メモリ６及び処理復帰用メモリ７に「０」ビットが出力され、判定結果格納用メモリ６及び処理復帰用メモリ７によって、図示しない記憶領域に格納されているビット列「０００１０」が１つ下位ビット側にシフトされると共に最上位ビットに「０」ビットが格納され、図７のサイクル「５」に示すように、図示しない各記憶領域にはビット列「００００１」が格納される。
【００３６】
さらに、サイクル「５」で、マルチプレクサ８によって、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されている「１」ビットのデータが取得され、ＮＯＰ命令の命令コードをデコードさせる指令が出力され、デコーダ９によって、条件分岐命令に後続する４番目の命令「ＳＵＢｃ，ｄ，ｂ；」の命令コードに代えてＮＯＰ命令がデコードされ、何もしない状態とされる。また、マルチプレクサ８によって判定結果格納用メモリ６から最下位ビットのデータが取得されると、シフト・セレクト回路５によって、判定結果格納用メモリ６及び処理復帰用メモリ７に「０」ビットが出力され、判定結果格納用メモリ６及び処理復帰用メモリ７によって、図示しない記憶領域に格納されているビット列「００００１」が１つ下位ビット側にシフトされると共に最上位ビットに「０」ビットが格納され、図７のサイクル「４」に示すように、図示しない各記憶領域にはビット列「０００００」が格納される。
【００３７】
このように、本実施形態の条件分岐命令の制御回路１にあっては、条件分岐命令に基づいて後続する４つの命令それぞれを実行させるか否かを決定するようにしたため、分岐条件命令に続けて分岐先命令を送り込むというように、プログラムの流れに沿った自然なコーディングをすることができ、条件分岐命令と無関係の命令を送り込むための複雑なスケジューリングの必要がなく、条件分岐命令を容易にコーディングすることができる。
【００３８】
ちなみに、条件分岐命令としてブランチ命令ＢＥＱを用い、条件分岐命令に後続する１番目の命令としてＮＯＰ命令を送り込む従来の方法にあっては、以下に示すように、条件分岐のコードサイズが大きくなってしまい、ソースコードが複雑なものとなってしまう。
ＢＥＱａ，ｂ，＃３；
ＮＯＰ；
Ｊ＃３；
ＭＰＩｄ，ａ，２／／ｄ＝ａ＊２；
ＡＤＤｃ，ｄ，ｂ／／ｃ＝ｄ＋ｂ；
Ｊ＃３；
ＭＰＩｄ，ａ，３／／ｄ＝ａ＊３；
ＳＵＢｃ，ｄ，ｂ／／ｃ＝ｄ−ｂ；
一方、サイクル「２」で、図示しない割り込み管理部がシフト・セレクト回路５に割り込み発生信号を出力したとする。すると、シフト・セレクト回路５によって、ビット列「００００」が判定結果格納用メモリ６にのみ出力され、「０」ビットが処理復帰用メモリ７に出力され、判定結果格納用メモリ６によって、そのビット列「００００」が図示しない記憶領域の下位４ビットに格納される。そして、図８のサイクル「３」に示すように、判定結果格納用メモリ６の図示しない記憶領域にはビット列「０００００」が格納され、処理復帰用メモリ７の図示しない記憶領域にはビット列「００１０１」が格納される。
【００３９】
また、サイクル「３」で、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されている「０」ビットのデータが取得され、図示しないフェッチ回路から出力される割り込みの命令コードをデコーダ９にデコードさせる指令が出力され、デコーダ９によって、割り込みの命令コードがデコードされ、図示しない演算ユニットで割り込みが実行される。また、割り込みが実行されると、シフト・セレクト回路５によって、判定結果格納用メモリ６及び処理復帰用メモリ７への指令の出力が禁止され、判定結果格納用メモリ６及び処理復帰用メモリ７によって、図８のサイクル「４」に示すように、図示しない各記憶領域に格納されているビット列「００００」「００１０１」が保持される。
【００４０】
判定結果格納用メモリ６及び処理復帰用メモリ７の図示しない各記憶領域に格納されているビット列が保持されているうちに、サイクル「ｉ」で、割り込みが終了したとする。すると、シフト・セレクト回路５によって、処理復帰用メモリ７の下位４ビットに格納されているビット列「０１０１」が取得され、その取得されたビット列「０１０１」が判定結果格納用メモリ６に出力され、判定結果格納用メモリ６によって、そのビット列「０１０１」が図示しない記憶領域の下位４ビットに格納され、図８のサイクル「ｉ＋１」に示すように、判定結果格納用メモリ６の図示しない記憶領域にはビット列「００１０１」が格納される。
【００４１】
また、サイクル「ｉ＋１」で、マルチプレクサ８によって、判定結果格納用メモリ６の図示しない記憶領域の最下位ビットに格納されている「１」ビットのデータが取得され、ＮＯＰ命令の命令コードをデコードさせる指令が出力され、デコーダ９によって、条件分岐命令に後続する２番目の命令「ＭＰＩｄ，ａ，３；」の命令コードに代えてＮＯＰ命令がデコードされ、何もしない状態とされる。また、マルチプレクサ８によって判定結果格納用メモリ６から最下位ビットのデータが取得されると、シフト・セレクト回路５によって、判定結果格納用メモリ６及び処理復帰用メモリ７に「０」ビットが出力され、判定結果格納用メモリ６及び処理復帰用メモリ７によって、図示しない記憶領域に格納されているビット列「００１０１」が１つ下位ビット側にシフトされると共に最上位ビットに「０」ビットが格納され、図８のサイクル「ｉ＋２」に示すように、図示しない各記憶領域にはビット列「０００１０」が格納される。
【００４２】
また一方、サイクル「２」で、条件分岐命令に後続する１番目〜４番目の命令のうちいずれの命令が実行されるのかを確認するために、デバッガがＢＲＥＡＫ命令の割り込みを発生し、図示しない割り込み管理部がシフト・セレクト回路５に割り込み発生信号を出力したとする。すると、シフト・セレクト回路５によって、ビット列「００００」が判定結果格納用メモリ６にのみ出力され、処理復帰用メモリ７への指令の出力が禁止され、判定結果格納用メモリ６によって、そのビット列「００００」が図示しない記憶領域の下位４ビットに格納され、図９のサイクル「３」に示すように、判定結果格納用メモリ６の図示しない記憶領域にはビット列「０００００」が格納され、また処理復帰用メモリ７の図示しない記憶領域に格納されているビット列が保持される。
【００４３】
このように、本実施形態の条件分岐命令の制御回路１にあっては、デバッガからＢＲＥＡＫ命令による割り込みが発生すると、その割り込みの発生直前のビット列を処理復帰用メモリ７に保持するようにしたため、分岐命令の直後にＢＲＥＡＫ命令による割り込み命令を発生させることで、分岐命令に後続する命令のうちいずれの命令が実行されるのかを適切に確認することができ、プログラムのデバッグ作業を容易に行うことができる。
【００４４】
なお、上記実施形態では、実行判定回路４が実行パターン設定手段を構成し、シフト・セレクト回路５、判定結果格納用メモリ６及びマルチプレクサ８が実行制御手段を構成する。
また、上記実施形態は、本発明に係るプロセッサ及びプロセッサの制御方法の一例を示したものであり、その構成等を限定するものではない。
【００４５】
例えば、条件分岐命令のソースコード「ＳＥＱａ，ｂ／ＴＦＴＦ；」に後続する４つの命令としてソースコード「ＭＰＩｄ，ａ，２；」等の演算を実行するための命令をコーディングする例を示したが、これに限られるものではなく、例えば前記後続する４つの命令として任意の行に移動可能なＪＵＭＰ命令等をコーディングするようにしてもよく、そのようにすれば、ＪＵＭＰ命令による移動先に複数の命令からなる処理をコーディングすることで、それら複数の命令からなる処理の実行を制御することができる。
【図面の簡単な説明】
【００４６】
【図１】条件分岐命令の命令コードを説明するための説明図である。
【図２】図１の第１及び第２オペコードを説明するための説明図である。
【図３】基本制御パターン指定ビットを説明するための説明図である。
【図４】基本制御パターン指定ビットを説明するための説明図である。
【図５】判定結果演算用フラグを説明するための説明図である。
【図６】本発明のプロセッサの一実施形態を示す概略構成図である。
【図７】図６のプロセッサの動作を説明するための説明図である。
【図８】図６のプロセッサの動作を説明するための説明図である。
【図９】図６のプロセッサの動作を説明するための説明図である。
【符号の説明】
【００４７】
１は制御回路、２は条件判定回路、３はプリセレクト回路、４は実行判定回路（実行パターン設定手段）、５はシフト・セレクト回路（実行制御手段）、６は判定結果格納用メモリ（実行制御手段）、７は処理復帰用メモリ、８はマルチプレクサ（実行制御手段）、９はデコーダ
【図１】
2005141651.tif 000003
【図２】
2005141651.tif 000004
【図３】
2005141651.tif 000005
【図４】
2005141651.tif 000006
【図５】
2005141651.tif 000007
【図６】
2005141651.tif 000008
【図７】
2005141651.tif 000009
【図８】
2005141651.tif 000010
【図９】
2005141651.tif 000011