(57)【要約】  【課題】  プリフィックス命令を含む命令セットを有する情報処理装置におけるパイプライン制御を簡略化して高速実行可能な情報処理装置を提供する。  【解決手段】  情報処理装置１は、フェッチ回路１２の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか１つを命令選択回路１５に選択させる命令コードセレクト信号を発生するセレクト信号発生回路２６と、命令選択回路１５で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路１７と、プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路１８と、フェッチ回路１２の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも１つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路１３とを具備する。【選択図】  図１
2006163566.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン制御により命令を処理し、プログラムにおいてターゲット命令の前に置かれたときにターゲット命令の機能を修飾するプリフィックス命令が使用可能な情報処理装置であって、
プログラムに含まれている複数の命令をそれぞれ表す複数の命令コードが格納された命令コードメモリと、
前記命令コードメモリから特定の命令コードを読み出すための命令アドレスを発生する命令アドレスジュネレータと、
前記命令コードメモリから順次読み出された複数の命令コードを複数の命令キューにそれぞれフェッチするフェッチ回路と、
前記フェッチ回路の複数の命令キューに接続された命令選択回路と、
前記フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか１つを前記命令選択回路に選択させる命令コードセレクト信号を発生するセレクト信号発生回路と、
前記命令選択回路で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路と、
プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路と、
前記フェッチ回路の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも１つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路と、
を具備する、情報処理装置。
【請求項２】
デバッグ時にブレーク処理の対象となる命令を表す命令コードの命令アドレスが前記命令アドレスジュネレータから入力されると、ブレーク条件成立信号を発生するブレーク条件判定回路と、
ブレーク条件成立信号が前記ブレーク条件判定回路から入力されたときにブレークビットを発生するデバッグ回路と、
前記フェッチ回路と前記命令コード変換回路との間に接続されたブレーク選択回路と、
をさらに具備し、
前記フェッチ回路が、前記デバッグ回路から入力されるブレークビットを命令コードに対応させてブレークビット用キューにフェッチし、
前記命令選択回路が、前記セレクト信号発生回路から入力される命令コードセレクト信号に従って、前記フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか１つを選択し、
前記ブレーク選択回路が、前記セレクト信号発生回路から入力されるブレークセレクト信号に従って、前記フェッチ回路のブレークビット用キューにフェッチされた、前記命令選択回路によって選択された命令コードに対応するブレークビットを選択し、
前記命令コード変換回路が、前記ブレーク選択回路によって選択されたブレークビットが入力されると、前記命令選択回路によって選択された命令コードをプリフィックス命令コードに変換し、
前記デコード回路が、プリフィックス命令コードが前記命令コード変換回路から入力されると、プリフィックス命令コードをノンオペレーション命令コードとみなす、
請求項１記載の情報処理装置。
【請求項３】
前記セレクト信号発生回路が、前記フェッチ回路の複数の命令キューがすべて空である場合に、前記命令コード変換回路に命令変換信号を出力する、請求項１又は２記載の情報処理装置。
【請求項４】
前記デコード回路からの制御信号に従って動作する実行回路をさらに具備し、
前記セレクト信号発生回路が、前記実行回路からジャンプ命令成立信号が入力されると、前記命令コード変換回路に命令変換信号を出力する、請求項１から３のいずれか１項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令のフェッチ、命令のデコード及び各種の演算処理をパイプライン制御で行う情報処理装置に関する。
【背景技術】
【０００２】
本出願人は、ターゲット命令の前に置かれ、かつターゲット命令の機能を修飾（拡張）するプリフィックス命令を含む命令セットを用いるマイクロコンピュータ（広義には、情報処理装置）を開発している。このようなプリフィックス命令として、例えば、ターゲット命令が即値を含む場合に、この即値の上位ビットをプリフィックス命令で与えてターゲット命令の即値を拡張する即値拡張プリフィックス命令等を有している。
【０００３】
本出願人は、下記の特許文献１において、プリフィックス命令で修飾されたターゲット命令の機能を高速で実行できる、命令コードのフェッチ、命令コードのデコード及び各種の演算処理をパイプライン制御で行うマイクロコンピュータ（情報処理装置）を提案した。
【０００４】
しかしながら、このようなパイプライン制御を行うマイクロコンピュータの動作開始時には、命令コードを一旦格納するための命令キューが空であるため、実行回路の処理を中止させる制御信号を命令キューからデコード回路に出力して、デコード回路が実行回路における処理を止めるようにしている。その結果、パイプライン制御が複雑になるという問題があった。
【０００５】
また、実行回路においてジャンプ命令が実行されると、ジャンプ命令後に命令キューに残っている命令コードはすべて無効となり、ジャンプ後の命令コードを命令キューに順次格納する必要があるため、上述したマイクロコンピュータの動作開始時と同様の問題があった。
【０００６】
さらに、命令キューにプリフィックス命令コードしか格納されていない場合にも、実行回路における処理を中止させる制御信号を命令キューからデコード回路に出力して、デコード回路が実行回路における処理を止めるようにしているため、上述したマイクロコンピュータの動作開始時と同様の問題があった。
【０００７】
さらに、マイクロコンピュータにデバッグ機能を付加した場合には、ブレーク処理において１クロックの遅れが生じるため、ブレーク処理の対象となる命令が実行回路において実行されないようにデコード回路で処理する必要があり、パイプライン制御が複雑になるという問題があった。
【特許文献１】特開２００４−３００１５号公報（段落０００５）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、上記の点に鑑み、本発明は、プリフィックス命令を含む命令セットを用いる情報処理装置におけるパイプライン制御を簡略化して高速実行可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明に係る情報処理装置は、パイプライン制御により命令を処理し、プログラムにおいてターゲット命令の前に置かれたときにターゲット命令の機能を修飾するプリフィックス命令が使用可能な情報処理装置であって、プログラムに含まれている複数の命令をそれぞれ表す複数の命令コードが格納された命令コードメモリと、命令コードメモリから特定の命令コードを読み出すための命令アドレスを発生する命令アドレスジュネレータと、命令コードメモリから順次読み出された複数の命令コードを複数の命令キューにそれぞれフェッチするフェッチ回路と、フェッチ回路の複数の命令キューに接続された命令選択回路と、フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか１つを命令選択回路に選択させる命令コードセレクト信号を発生するセレクト信号発生回路と、命令選択回路で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路と、プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路と、フェッチ回路の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも１つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路とを具備する。
【００１０】
ここで、デバッグ時にブレーク処理の対象となる命令を表す命令コードの命令アドレスが命令アドレスジュネレータから入力されると、ブレーク条件成立信号を発生するブレーク条件判定回路と、ブレーク条件成立信号がブレーク条件判定回路から入力されたときにブレークビットを発生するデバッグ回路と、フェッチ回路と命令コード変換回路との間に接続されたブレーク選択回路とをさらに具備し、フェッチ回路が、デバッグ回路から入力されるブレークビットを命令コードに対応させてブレークビット用キューにフェッチし、命令選択回路が、セレクト信号発生回路から入力される命令コードセレクト信号に従って、フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか１つを選択し、ブレーク選択回路が、セレクト信号発生回路から入力されるブレークセレクト信号に従って、フェッチ回路のブレークビット用キューにフェッチされた、命令選択回路によって選択された命令コードに対応するブレークビットを選択し、命令コード変換回路が、ブレーク選択回路によって選択されたブレークビットが入力されると、命令選択回路によって選択された命令コードをプリフィックス命令コードに変換し、デコード回路が、プリフィックス命令コードが命令コード変換回路から入力されると、プリフィックス命令コードをノンオペレーション命令コードとみなしても良い。
【００１１】
また、セレクト信号発生回路が、フェッチ回路の複数の命令キューがすべて空である場合に、命令コード変換回路に命令変換信号を出力しても良い。
さらに、デコード回路からの制御信号に従って動作する実行回路をさらに具備し、セレクト信号発生回路が、実行回路からジャンプ命令成立信号が入力されると、命令コード変換回路に命令変換信号を出力しても良い。
【発明の効果】
【００１２】
本発明によれば、以下に示す効果が得られる。
（１）情報処理装置の動作開始時やジャンプ命令後には、プリフィックス命令コードをデコード回路に出力すると共に、デコード回路においてプリフィックス命令をノーオペレーション命令として処理することにより、デコード回路において実行回路の処理を中止させる処理を行う必要がなくなるので、パイプライン制御の簡略化を図ることができる。
（２）命令キューにプリフィックス命令コードしか格納されていない場合にデコード回路にプリフィックス命令コードが出力されても、デコード回路はプリフィックス命令をノーオペレーション命令として処理するだけであり、実行回路の処理を中止させる処理を行う必要はないので、パイプライン制御の簡略化を図ることができる。
（３）情報処理装置にデバッグ機能を付加した場合でも、ブレークビットが立った命令コードをプリフィックス命令コードに変換してデコード回路に入力させて、デコード回路がプリフィックス命令をノーオペレーション命令として処理することにより、実行回路におけるブレーク処理の対象となる命令の実行を防ぐことができるので、ブレーク処理における１クロック遅延に起因するパイプライン制御の複雑化を解消することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の一実施形態によるマイクロコンピュータ１（広義には、情報処理装置）の構成を示す図である。図１に示すように、本実施形態によるマイクロコンピュータ１は、ＣＰＵ１０（広義には、処理回路）と、命令コードメモリ３０と、ブレーク条件判定回路４１と、デバッグ回路４２と、ＢＣＵ（バスコントローラユニット）１００とを含む。
なお、マイクロコンピュータ１は、これ以外にも、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）ドライバ又はＳＩＯ（Ｓｅｒｉａｌ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）等の各種周辺回路を含むことができる。
【００１４】
命令コードメモリ３０には、各種の命令、ターゲット命令、及び、ターゲット命令の前に置かれてターゲット命令の機能を修飾するプリフィックス命令を表す命令コードが格納されている。
【００１５】
ＢＣＵ１００は、図示しない３２ビットの命令データバスや、命令データアクセスのための命令アドレスバスや、３２ビットのデータバスや、データアクセスのためのデータアドレスバスや、コントロール信号のためのコントロールバス等の各種バスのバスコントロール処理を行う。ＣＰＵ１０は、このような各種バスを介して外部と信号のやり取りを行う。
【００１６】
ＣＰＵ１０は、ＲＯＭやＲＡＭに記憶されたプログラムに従って、命令のフェッチ、命令のデコード、演算処理、レジスタへの書き込み等をパイプライン制御で行う。ＣＰＵ１０は、３２ビット幅のデータを扱うが、１６ビットの命令コードを処理するよう構成されている。
【００１７】
ＣＰＵ１０は、命令アドレスジェネレータ１１と、フェッチ回路１２と、プリフィックスデータ生成回路１３と、ブレーク選択回路１４と、命令選択回路１５と、セレクト信号発生回路１６と、命令コード変換回路１７と、デコード回路１８と、実行回路１９とを含んでいる。
【００１８】
命令アドレスジェネレータ１１は、プログラムカウンタ等を用いて命令アドレスを生成して、命令コードメモリ３０に命令アドレスを出力することにより、必要な命令コードをＢＣＵ１００を介してフェッチ回路１２の命令キューに入力する。
【００１９】
フェッチ回路１２は、命令コードメモリ３０から入力されてくる命令コードを命令キュー０から命令キュー５にフェッチすると共に、デバッグ回路４２から入力される１ビットのブレークビットを、命令コードメモリ３０から入力されてくる命令コードと対応させてブレークビット用キューｂｒｋ０からｂｒｋ５にフェッチする。フェッチ回路１２は、命令キュー０から命令キュー５にフェッチされた命令コードを命令選択回路１５に出力すると共に、ブレークビット用キューｂｒｋ０からｂｒｋ５にフェッチされたブレークビットをブレーク選択回路１４に出力する。
【００２０】
プリフィックスデータ生成回路１３は、プリフィックス命令を表す命令コードがフェッチ回路１２から入力されてくると、このプリフィックス命令を表す命令コードと、その後にフェッチ回路１２から入力されてくるターゲット命令を表す命令コードとに基づいて、このプリフィックス命令によって修飾されたターゲット命令のデコードを行う。プリフィックスデータ生成回路１３の出力信号は実行回路１９に出力される。
【００２１】
例えば、図２に示すように、プリフィックス命令の１つである即値拡張プリフィックス命令（以下、「ｅｘｔ命令」と称する。）を表す命令コード（以下、「ｅｘｔ命令コード」と称する。）２２０は、ビット１５からビット１３に３ビットのオペコード指定領域２２２を有し、ビット１２からビット０に１３ビットの即値を指定する即値指定領域２２４を有している。オペコード指定領域２１２は、ｅｘｔ命令コードであることを示すオペコード「１１０」が格納されている。即値指定領域２２４には、１３ビットの即値（ｉｍｍ１３）の値が格納されている。
【００２２】
また、図３に示すように、ｅｘｔ命令のターゲット命令を表す１６ビットの命令コード（以下、「ターゲット命令コード」と称する。）２１０は、ビット１５からビット１０に６ビットのオペコード指定領域２１２を有し、ビット９からビット４に６ビットの即値指定領域２１６を有し、ビット３からビット０に４ビットのレジスタ指定領域２１８を有している。オペコード指定領域２１２は、オペレーションの内容を特定するためのオペコードが格納されている。即値指定領域２１６には、６ビットの即値（ｉｍｍ６）の値が格納されており、レジスタ指定領域２１８には、いずれかの汎用レジスタ（ｒｄ）を示すコードが格納されている。
ここで、ｅｘｔ命令のターゲット命令は、即値（ｉｍｍ６）と汎用レジスタ（ｒｄ）の値に対してオペコードで示される演算を行い、その演算結果を汎用レジスタ（ｒｄ）に対して書き込む動作を行う命令である。
また、ｅｘｔ命令のターゲット命令は、単独で実行することもできるし、直前の１つ又は複数のｅｘｔ命令と組み合わせて実行することもできる。
【００２３】
ｅｘｔ命令はプリフィックス命令であるため、単独ではＣＰＵ１０におけるＡＬＵ（データ演算回路）での演算等の実行を何ら伴わないが、後続のターゲット命令が実行される際に、そのターゲット命令の実行に使用する即値を拡張する機能を有する。例えば、図３の命令コードのように命令コードに即値を含んでいる命令がｅｘｔ命令のターゲット命令となった場合に、このターゲット命令の実行時には、ターゲット命令コード２１０に含まれる即値（ｉｍｍ６）を、ｅｘｔ命令コード２２０に含まれている１３ビットの即値（ｉｍｍ１３）を用いて拡張する機能を有する。
【００２４】
図４は、ターゲット命令を２個のｅｘｔ命令と組み合わせて実行する場合のオペレーションを表した式と、このオペレーションの実行に使用される拡張された即値のビットフィールドを示す図である。同図に示すように、１回目のｅｘｔ命令コードに含まれている１３ビットの即値（ｉｍｍ１３）がビット３１からビット１９のフィールド２５２にセットされ、２回目のｅｘｔ命令コードに含まれている１３ビットの即値（ｉｍｍ１３）がビット１８からビット６のフィールド２５４にセットされ、ターゲット命令コードの６ビットの即値（ｉｍｍ６）がビット５からビット０のフィールド２５６にセットされることにより、３２ビットの即値（ｉｍｍ３２）２５０がプリフィックスデータ生成回路１３において生成される。
【００２５】
図３のターゲット命令コード２１０のオペコード指定領域２１２において指定されたオペコードと、ターゲット命令コード２１０のレジスタ指定領域２１８において指定された汎用レジスタ（ｒｄ）を示すコードと、図４の３２ビットの即値とは、図１に示すプリフィックスデータ生成回路１３から実行回路１９に出力される。実行回路１９は、オペコードにより表されるオペレーションの内容（演算）を３２ビットの即値を用いて行い、その結果を汎用レジスタ（ｒｄ）に格納する。
【００２６】
命令選択回路１５は、フェッチ回路１２の命令キュー０から命令キュー５の出力信号（命令コード）の内のいずれか１つを、セレクト信号発生回路１６から入力される命令コードセレクト信号に従って選択する。
【００２７】
ブレーク選択回路１４は、フェッチ回路１２のブレークビット用キューｂｒｋ０からブレークビット用キューｂｒｋ５にフェッチされた、かつ、命令選択回路１５によって選択された命令コードに対応するブレークビットを、セレクト信号発生回路１６から入力されるブレークセレクト信号に従って選択する。ブレーク選択回路１４は、選択したブレークビットを命令コード変換回路１７及びデコード回路１８に出力する。
【００２８】
セレクト信号発生回路１６は、フェッチ回路１２の命令キュー０から命令キュー５に命令コードが格納されていない場合、及び、実行回路１９からジャンプ命令成立信号が入力された場合には、命令コード変換回路１７に命令コードをｅｘｔ命令コードに変換させる命令変換信号を発生する。その他の場合には、フェッチ回路１２の命令キュー０から命令キュー５の出力信号（命令コード）をキューの順番に選択するように命令選択回路１５を制御する命令コードセレクト信号を発生する。
また、セレクト信号発生回路１６は、デバッグ時にブレーク処理を行う際に、命令選択回路１５によって選択された命令コードに対応するブレークビットを選択するようにブレーク選択回路１４を制御するブレークセレクト信号を発生する。
【００２９】
命令コード変換回路１７は、セレクト信号発生回路１６から命令変換信号が入力されると、命令選択回路１５から入力される命令コードの上位３ビットを「１１０」に変更することにより、この命令コードをｅｘｔ命令コードに変換したのち、変換したｅｘｔ命令コードをデコード回路１８に出力する。
【００３０】
デコード回路１８は、命令コード変換回路１７から入力される命令コードの上位３ビットの値が「１１０」であるか否かを判定し、上位３ビットの値が「１１０」でない場合には、この命令コードはｅｘｔ命令コードではないと判断して、この命令コードをデコードした後、デコードされた命令を実行するように実行回路１９を制御する制御信号を実行回路１９に出力する。一方、命令コード変換回路１７から入力される命令コードの上位３ビットの値が「１１０」である場合には、デコード回路１８は、この命令コードはｅｘｔ命令コードであると判断して、ｅｘｔ命令コードをノンオペレーション命令コード（ｎｏｐ命令コード）とみなすことにより、ノンオペレーション命令として処理する。
また、デコード回路１８は、ブレークビットがブレーク選択回路１４から入力されると、所定のブレーク処理を行う。
【００３１】
実行回路１９は、デコード回路１８から入力される制御信号及びプリフィックスデータ生成回路１３の出力信号に従って、データ演算処理やアドレス演算処理等を行う。実行回路１９の出力信号は、ＢＣＵ１００を介して外部に出力される。
【００３２】
ブレーク条件判定回路４１は、ＣＰＵ１０のデバッグ時に外部の入力装置（図示せず）から入力される、ＣＰＵ１０をブレークさせる命令アドレス（以下、「ブレークアドレス」と称する。）と、命令アドレスジェネレータ１１から入力される命令アドレスとを比較して、両者が一致した場合には、ブレーク条件成立信号をデバッグ回路４２に出力する。
【００３３】
デバッグ回路４２は、ＣＰＵ１０のデバッグ動作を制御すると共に，ブレーク条件成立信号がブレーク条件判定回路４１から入力されると、ブレークビットをフェッチ回路１２に出力する。
【００３４】
次に、本実施形態によるマイクロコンピュータ１の通常動作時の動作について、図１を参照しながら説明する。なお、以下に説明する動作は、パイプライン制御で行われる。
動作開始時には、ＣＰＵ１０のフェッチ回路１２に命令コードが何も入っていないため、セレクト信号発生回路１６は、命令変換信号を発生して、命令コード変換回路１７に出力する。また、セレクト信号発生回路１６は、フェッチ回路１２の命令キュー０の出力信号を選択させる命令コードセレクト信号を命令選択回路１５に出力する。
このとき、命令キュー０には命令コードがフェッチされていないため、ランダムなデータが命令選択回路１５によって選択されて、命令コード変換回路１７に入力される。命令コード変換回路１７は、命令選択回路１５から入力されるランダムなデータの上位３ビットを「１１０」に変更することにより、ランダムなデータをｅｘｔ命令コードに変換する。その後、命令コード変換回路１７は、変換したｅｘｔ命令コードをデコード回路１８に出力する。
【００３５】
デコード回路１８は、命令コード変換回路１７から入力されるｅｘｔ命令コードをｎｏｐ命令コードとみなす。その結果、デコード回路１８から実行回路１９に実行させる命令を示す制御信号は出力されず、実行回路１９は、何の処理もすることなく、次の制御信号がデコード回路１８から入力されるのを待つだけであるので、パイプライン処理の複雑化を防ぐことができる。
【００３６】
その後、プログラムに従って命令アドレスジェネレータ１１からＢＣＵ１００を介して命令アドレスを命令コードメモリ３０に出力することにより、例えば、ｓｕｂ命令コードと、２つのｅｘｔ命令（即値拡張プリフィックス命令）を表す命令コード（以下、「第１及び第２のｅｘｔ命令コード」と称する。）と、この２つのｅｘｔ命令（即値拡張プリフィックス命令）のターゲット命令となり得るａｄｄ命令を表すａｄｄ命令コードとが、命令コードメモリ３０からＢＣＵバス１００を介してフェッチ回路１２に入力される。ここで、これらの命令コードは、３２ビット単位でフェッチ回路１２に入力される。
【００３７】
フェッチ回路１２は、ＢＣＵ１００から入力される命令コードを１６ビット単位で命令キュー０から順番にフェッチする。
【００３８】
セレクト信号発生回路１６は、フェッチ回路１２の命令キュー０にｓｕｂ命令コードがフェッチされると、フェッチ回路１２の命令キュー０から出力されるｓｕｂ命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路１５に出力する。
命令選択回路１５は、この命令コードセレクト信号に従って、命令キュー０から出力されるｓｕｂ命令コードを選択して、命令コード変換回路１７に出力する。
命令コード変換回路１７は、命令選択回路１５から入力されるｓｕｂ命令コードをデコード回路１８に出力する。
デコード回路１８は、命令コード変換回路１７から入力されるｓｕｂ命令コードをデコードし、それによって得たｓｕｂ命令を実行させる制御信号を実行回路１９に出力する。
【００３９】
続いて、セレクト信号発生回路１６は、フェッチ回路１２の命令キュー１から入力される第１のｅｘｔ命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路１５に出力する。また、フェッチ回路１２の命令キュー１にフェッチされた第１のｅｘｔ命令コードは、プリフィックスデータ生成回路１３にも出力される。
命令選択回路１５は、この命令コードセレクト信号に従って、命令キュー１から入力される第１のｅｘｔ命令コードを選択して、命令コード変換回路１７に出力する。
命令コード変換回路１７は、命令選択回路１５から入力される第１のｅｘｔ命令コードをデコード回路１８に出力する。
デコード回路１８は、命令コード変換回路１７から入力される第１のｅｘｔ命令コードをｎｏｐ命令コードとみなす。その結果、実行回路１９は、デコード回路１８から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路１８から入力されるのを待つ。
【００４０】
続いて、セレクト信号発生回路１６は、フェッチ回路１２の命令キュー２から出力される第２のｅｘｔ命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路１５に出力する。また、フェッチ回路１２の命令キュー２にフェッチされた第２のｅｘｔ命令コードは、プリフィックスデータ生成回路１３にも出力される。
命令選択回路１５は、この命令コードセレクト信号に従って、命令キュー２から入力される第２のｅｘｔ命令コードを選択して、命令コード変換回路１７に出力する。
命令コード変換回路１７は、命令選択回路１５から入力される第２のｅｘｔ命令コードをデコード回路１８に出力する。
デコード回路１８は、命令コード変換回路１７から入力される第２のｅｘｔ命令コードをｎｏｐ命令コードとみなす。その結果、実行回路１９は、デコード回路１８から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路１８から入力されるのを待つ。
【００４１】
続いて、フェッチ回路１２の命令キュー３にフェッチされたａｄｄ命令コードが、プリフィックスデータ生成回路１３に入力される。プリフィックスデータ生成回路１３は、第１及び第２のｅｘｔ命令コードとａｄｄ命令コードとをデコードして、ａｄｄ命令コードに含まれているオペコード（図３参照）と、ａｄｄ命令コードに含まれている汎用レジスタ（ｒｄ）を示すコード（図３参照）を得ると共に、第１のｅｘｔ命令コードに含まれる１３ビットの即値（図２参照）と、第２のｅｘｔ命令コードに含まれる１３ビットの即値（図２参照）と、ａｄｄ命令コードに含まれている６ビットの即値とを組み合わせて、３２ビットの即値（図４参照）を生成する。
オペコードと汎用レジスタ（ｒｄ）を示すコードと３２ビットの即値とは、プリフィックスデータ生成回路１３から実行回路１９に出力される。実行回路１９は、オペコードにより表されるオペレーションの内容（ａｄｄ演算）を３２ビットの即値を用いて行い、その結果を汎用レジスタ（ｒｄ）に格納する。
【００４２】
次に、実行回路１９においてジャンプ命令が実行された後のマイクロコンピュータ１の動作について、図１を参照しながら説明する。
例えば、フェッチ回路１２の命令キュー２にフェッチされた命令コードがジャンプ命令コードであった場合には、このジャンプ命令コードは、上述したｓｕｂ命令コードと同様に、命令選択回路１５及び命令コード変換回路１７を介してデコード回路１８に入力され、デコード回路１８においてデコードされることにより、ジャンプ命令を実行させる制御信号がデコード回路１８から実行回路１９に出力される。これにより、実行回路１９においてジャンプ命令が実行される。また、実行回路１９は、ジャンプ命令成立信号をセレクト信号発生回路１６に出力する。
【００４３】
実行回路１９においてジャンプ命令が実行されると、フェッチ回路１２の命令キュー３から命令キュー５にフェッチされている命令コードはすべて無効とされ、ジャンプ命令実行後に命令コードメモリ３０からＢＣＵ１００を介してフェッチ回路１２に入力される命令コードは、命令キュー０から順番にフェッチされる。
【００４４】
従って、ジャンプ命令実行後には、フェッチ回路１２の命令キュー０から命令キュー５に有効な命令コードが存在しない事態が生じるので、セレクト信号発生回路１６は、ジャンプ命令成立信号が実行回路１９から入力されると、命令変換信号を発生して、命令コード変換回路１７に出力する。命令コード変換回路１７は、命令選択回路１５から入力される命令コードの上位３ビットを「１１０」に変更することにより、この命令コードをｅｘｔ命令コードに変換する。その後、命令コード変換回路１７は、このｅｘｔ命令コードをデコード回路１８に出力する。
【００４５】
デコード回路１８は、命令コード変換回路１７から入力されるｅｘｔ命令コードをｎｏｐ命令コードとみなす。その結果、実行回路１９は、何の処理もすることなく次の制御信号がデコード回路１８から入力されるのを待つだけであるので、パイプライン処理の複雑化を防ぐことができる。
【００４６】
次に、ＣＰＵ１０のデバッグ時におけるマイクロコンピュータ１の動作について、図１を参照しながら説明する。
例えば、デバッグ時に、ｌｏａｄ命令、ｓｕｂ命令、及び、ｎｏｐ命令を実行回路１９に順次実行させる場合に、ｓｕｂ命令でブレーク処理を行いたいときには、操作者は、デバッグ開始前に、ブレーク処理を行いたいｓｕｂ命令を表すｓｕｂ命令コードが格納されている命令コードメモリ３０の命令アドレス（以下、「ブレークアドレス」と称する。）を、入力装置を用いてブレーク条件判定回路４１に入力する。
【００４７】
その後、デバッグ処理が開始されると、命令アドレスジェネレータ１１から出力される命令アドレスに従って、まず、ｌｏａｄ命令コード（１６ビット）及びｓｕｂ命令コード（１６ビット）が命令コードメモリ３０から順番に出力されて、ＢＣＵ１００（３２ビット命令データバス）を介してフェッチ回路１２に入力され、命令キュー０及び命令キュー１にそれぞれフェッチされる。
【００４８】
このとき、ブレーク条件判定回路４１においては、ｌｏａｄ命令を表すｌｏａｄ命令コードの命令アドレスを命令アドレスジェネレータ１１が出力したときには、入力装置から入力されたブレークアドレスと、命令アドレスジェネレータ１１から入力される命令アドレスとが一致しないので、ブレーク条件成立信号が発生されない。
【００４９】
一方、ｓｕｂ命令を表すｓｕｂ命令コードの命令アドレス（即ち、ブレークアドレス）を命令アドレスジェネレータ１１が出力したときには、入力装置から入力されたブレークアドレスと、命令アドレスジェネレータ１１から入力される命令アドレスとが一致するので、ブレーク条件成立信号が発生される。その結果、デバッグ回路４２は、ブレークビットをフェッチ回路１２に出力する。このブレークビットは、ｓｕｂ命令コードに対応してフェッチ回路１２のブレークビット用キューｂｒｋ１にフェッチされる。
【００５０】
まず、セレクト信号発生回路１６は、ｌｏａｄ命令コードがフェッチ回路１２の命令キュー０にフェッチされると、フェッチ回路１２の命令キュー０から出力されるｌｏａｄ命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路１５に出力する。
命令選択回路１５は、この命令コードセレクト信号に従って、命令キュー０から入力されるｌｏａｄ命令コードを選択して、命令コード変換回路１７に出力する。
命令コード変換回路１７は、命令選択回路１５から入力されるｌｏａｄ命令コードをデコード回路１８に出力する。
デコード回路１８は、命令コード変換回路１７から入力されるｌｏａｄ命令コードをデコードすることにより得たｌｏａｄ命令を実行させる制御信号を実行回路１９に出力する。
【００５１】
続いて、セレクト信号発生回路１６は、フェッチ回路１２の命令キュー１から出力されるｓｕｂ命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路１５に出力する。
また、セレクト信号発生回路１６は、フェッチ回路１２のブレークビット用キューｂｒｋ１から出力されるブレークビットを選択させるブレークセレクト信号を発生して、ブレーク選択回路１４に出力する。ブレーク選択回路１４は、このブレークセレクト信号に従って、ブレークビット用キューｂｒｋ１から入力されるブレークビットを選択して、命令コード変換回路１７に出力する。
ブレークビットがブレーク選択回路１４から入力されると、命令コード変換回路１７は、命令選択回路１５で選択されたｓｕｂ命令コードの上位３ビットを「１１０」に変換することにより、ｓｕｂ命令コードをｅｘｔ命令コードに変換して、デコード回路１８に出力する。
デコード回路１８は、命令コード変換回路１７から入力されるｅｘｔ命令コードをｎｏｐ命令コードとみなす。その結果、実行回路１９は、デコード回路１８から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路１８から入力されるのを待つ。これにより、ブレーク処理における１クロック分の遅延に起因する実行回路１９でのｓｕｂ命令の実行を防ぐことができる。
【００５２】
以上の説明では、プリフィックス命令として即値拡張プリフィックス命令（ｅｘｔ命令）を用いたが、本出願人が上記の特許文献１で提案しているシフトプリフィックス命令、レジスタ拡張プリフィックス命令、又は、実行制御プリフィックス命令を用いてもよい。
【図面の簡単な説明】
【００５３】
【図１】本発明の一実施形態によるマイクロコンピュータの構成を示す図。
【図２】ｅｘｔ命令コードのビットフィールドを示す図。
【図３】ｅｘｔ命令のターゲット命令コードのビットフィールドを示す図。
【図４】ターゲット命令を２個のｅｘｔ命令と組み合わせて実行する場合のオペレーションを表した式と、このオペレーションの実行に使用される拡張された即値のビットフィールドを示す図。
【符号の説明】
【００５４】
１  マイクロコンピュータ（広義には、情報処理装置）、１０  ＣＰＵ（広義には、処理回路）、１１  命令アドレスジェネレータ、１２  フェッチ回路、１３  プリフィックスデータ生成回路、１４  ブレーク選択回路、１５  命令選択回路、１６  セレクト信号発生回路、１７  命令コード変換回路、１８  デコード回路、１９  実行回路、３０  命令コードメモリ、４１  ブレーク条件判定回路、４２  デバッグ回路、１００  ＢＣＵ（バスコントローラユニット）、２２０  ｅｘｔ命令コード（即値拡張プリフィックス命令コード）、２２２  オペコード指定領域、２２４  即値指定領域、２１０  命令コード、２１２  オペコード指定領域、２１６  即値指定領域、２１８  レジスタ指定領域、２５０  即値、２５２、２５４及び２５６  フィールド
【図１】
2006163566.tif 000003
【図２】
2006163566.tif 000004
【図３】
2006163566.tif 000005
【図４】
2006163566.tif 000006