(57)【要約】【課題】従来のマイクロコンピュータでは処理能力を十分に高めることできない問題があった。【解決手段】本発明にかかるマイクロコンピュータは、第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令と、第２の実行ステージにおいて実行される第２の演算命令を含む順次演算命令と、をデコードして演算情報を出力する命令デコーダ１４と、第１の演算命令に対応した第１の演算情報を格納する演算情報格納回路１５、１６と、条件分岐命令に基づき、分岐条件の成立／不成立を判断して判定結果信号Ｊ１を出力する分岐条件判定回路１８と、判定結果信号Ｊ１が分岐条件の成立又は不成立の一方の状態を示す場合に演算情報格納回路１５、１６に格納された第１の演算情報を出力するセレクタ１７と、セレクタが出力した演算情報に基づき演算を行う演算器２１と、を有する。【選択図】図１
2010079841.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン処理により演算を実行するマイクロコンピュータであって、
第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令と、前記第２の実行ステージにおいて実行される第２の演算命令を含む順次演算命令と、をフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する命令デコーダと、
前記分岐複合命令のデコードにより得られる演算情報のうち前記第１の演算命令に対応した第１の演算情報を格納する演算情報格納回路と、
前記分岐複合命令のデコードにより得られる演算情報のうち前記条件分岐命令に対応した条件分岐演算情報に基づき、分岐条件の成立／不成立を判断し、判定結果信号を出力する分岐条件判定回路と、
前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合に前記演算情報格納回路に格納された前記第１の演算情報を出力し、前記判定結果信号が分岐条件の成立又は不成立の他方の状態を示す場合に前記第２の演算命令に対応した第２の演算情報を出力するセレクタと、
前記セレクタが出力した演算情報に基づき演算を行い、演算結果信号を出力する演算器と、
を有するマイクロコンピュータ。
【請求項２】
前記セレクタは、前記命令デコーダの出力を受ける第１の入力端子と、前記演算情報格納回路の出力を受ける第２の入力端子とを有し、
前記セレクタは、前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合において選択する入力端子を前記第１の入力端子から前記第２の入力端子へと所定のタイミングで切り替える請求項１に記載のマイクロコンピュータ。
【請求項３】
前記所定のタイミングを制御する入力制御回路を有する請求項２に記載のマイクロコンピュータ。
【請求項４】
前記演算器の演算結果を保持する演算結果保持回路を有し、
前記分岐条件判定回路は、前記演算結果保持回路に保持されているすでに演算された演算結果を参照して、前記分岐条件の成立／不成立を判定する請求項１に記載のマイクロコンピュータ。
【請求項５】
予め決められた順序で第１のフェッチアドレスを出力する命令フェッチアドレスレジスタと、
前記第１のフェッチアドレスを遅延させ、前記演算回路において実行中の命令に対応する第２のフェッチアドレスを出力するプログラムカウンタと、
前記第１のフェッチアドレスと、前記演算回路が前記第２のフェッチアドレスに基づき演算する分岐先フェッチアドレスと、を前記判定結果信号に基づき選択し、選択したフェッチアドレスを前記実行フェッチアドレスとして出力するセレクタと、
前記実行フェッチアドレスに関連付けて前記分岐複合命令及び前記順次演算命令を格納し、入力される前記実行フェッチアドレスに関連付けられた命令を出力する命令格納部と、
を有する請求項１に記載のマイクロコンピュータ。
【請求項６】
前記第２のフェッチアドレスと前記分岐演算情報に基づき演算された演算結果とを加算し、前記分岐先フェッチアドレスを生成する加算器を有する請求項５に記載のマイクロコンピュータ。
【請求項７】
前記演算情報格納回路は、前記第２の実行ステージが複数の実行ステージを含む場合、前記複数の実行ステージの数に応じた数が設けられる請求項１に記載のマイクロコンピュータ。
【請求項８】
前記第１の演算命令は、前記条件分岐命令において分岐条件が成立又は不成立の一方の状態した場合に実行されるべき演算命令であり、
前記第２の演算命令は、前記条件分岐命令において分岐条件が成立又は不成立の他方の状態であった場合に実行されるべき演算命令である請求項１に記載のマイクロコンピュータ
【請求項９】
パイプライン処理により演算を実行するマイクロコンピュータにおける命令実行方法であって、
第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令をデコードして前記条件分岐命令に応じた条件分岐演算情報と前記第１の演算命令に応じた第１の演算情報とを生成し、
前記第１の演算情報を演算情報格納回路に格納し、
前記条件分岐演算情報に基づき分岐条件の成立／不成立を判断すると共に、前記第２の実行ステージにおいて実行される第２の演算命令を含む順次演算命令をデコードして前記第２の演算命令に応じた第２の演算情報とを生成し、
前記分岐条件が成立又は不成立の一方の状態となった場合は前記演算情報格納回路に格納された前記第１の演算情報に基づき演算を行い、前記分岐条件の成立又は不成立の他方の状態となった場合は前記第２の演算情報に基づき演算を行うマイクロコンピュータにおける命令実行方法。
【請求項１０】
前記分岐条件が成立したと判断された場合は、前記条件分岐演算情報に基づき分岐先の演算命令をフェッチし、前記分岐条件が不成立であると判断された場合は、命令のフェッチアドレスのジャンプを行わずに演算命令をフェッチする請求項９に記載のマイクロコンピュータにおける命令実行方法。
【請求項１１】
前記分岐条件が成立しているか否かの判定は、前記条件分岐演算情報を処理する以前に演算されている演算結果を参照して行われる請求項９に記載のマイクロコンピュータにおける命令実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明にかかるマイクロコンピュータ及びその命令実行方法は、特にパイプライン処理により演算を実行するマイクロコンピュータ及びその命令実行方法に関する。
【背景技術】
【０００２】
マイクロコンピュータでは、演算速度を向上させるためにパイプライン処理と呼ばれる情報処理方法が採用される。パイプライン処理では、複数の演算系列に対して演算命令を順次投入し、演算器における命令実行期間に空白が発生しないように演算処理を行う。そのために、パイプライン処理では後続の演算命令を予測して投機的に演算命令をフェッチする。しかしながら、演算器における処理には条件分岐命令等の処理が完了しなければ次に実行する命令が定まらない処理がある。この条件分岐命令が発生した場合、分岐先を予測して後続の演算命令をフェッチすることが行われるが、予測が外れた場合は投機的にフェッチした演算命令を廃棄しなければならない。このような演算命令の廃棄が発生すると実行期間に空白（この空白期間を分岐ペナルティと称す）が生じ演算性能が低下する。
【０００３】
そこで、条件分岐命令が発生した場合における分岐ペナルティを低減するパイプライン計算機の命令方式が特許文献１に開示されている。特許文献１には、分岐命令の後に無演算命令ＮＯＰと演算命令と分岐先命令がある場合、分岐命令と無演算命令と演算命令を分岐条件が成立しないという条件付きの演算命令に代える、という技術が開示されている。図８（ａ）（ｂ）は最も単純な一例である。図８（ａ）は、パイプライン計算機において採用される命令の元となる命令群である。そして、図８（ｂ）は、パイプライン計算機において採用される命令群である。
【０００４】
図８（ａ）に示すように、この例では、命令１として比較命令ｃｍｐを実行する。続いて命令２として分岐命令ｊｇを実行する。この分岐命令は、比較命令ｃｍｐにおいてｒ１が０を超える場合にＬ１のフェッチアドレスにジャンプするものである。そして、分岐条件が成立しなければ、命令３として何らの演算を行わない無演算命令ｎｏｐが実行される。続いて、命令４として加算命令ａｄｄが実行される。一方、条件分岐命令ｊｇにおいて分岐命令が成立した場合、命令１ａとして減算命令ｓｕｂが実行される。
【０００５】
このような命令群を実行する場合、パイプライン計算機では、条件命令の後に無演算命令と演算命令と分岐先演算命令がある場合に、条件命令、無演算命令及び演算命令に代えて、分岐条件が不成立のときに演算命令を実行するという条件の付いた演算命令を実行する。この命令群を図８（ｂ）に示す。
【０００６】
図８（ｂ）に示すようにパイプライン計算機において採用される演算命令には、命令２として分岐条件が不成立であった場合に図８（ａ）の命令４の演算を指示する条件付演算命令ａｄｄ．ｌｅを有する。この演算命令ａｄｄ．ｌｅを採用することで、分岐条件が成立したときは条件付演算命令ａｄｄ．ｌｅは実行されず、その先にある分岐先演算命令である減算命令ｓｕｂが実行される。一方、分岐条件が不成立であった場合は条件付演算命令ａｄｄ．ｌｅが実行され、その後分岐先演算命令である減算命令ｓｕｂが実行される。
【０００７】
このような条件付演算命令を備えることで、パイプライン計算機では、分岐命令が不成立であった場合に発生する分岐ペナルティのサイクル数を削減することができる。例えば、図８（ａ）に示す場合、分岐命令が不成立であった場合に無演算命令ｎｏｐを実行する必要があったが、パイプライン計算機ではこの無演算命令ｎｏｐを実行する必要がない。
【０００８】
図８（ａ）、（ｂ）は最も単純な例で、分岐条件の成立／不成立に依存する命令が、加算命令ａｄｄしかないものである。減算命令ｓｕｂは、条件の成立／不成立に関係なく、常に実行される命令である。このような分岐条件の成立／不成立に依存する命令が１つしかないような単純な例であれば、図８（ｂ）とすることで分岐ペナルティのサイクル数は削減が可能である。
【０００９】
また、図９（ａ）、（ｂ）に、特許文献１において開示されている別の例を示す。図９（ｂ）は、特許文献１が開示している技術により、図９（ａ）の命令群から作成された命令群である。そのため、図９（ａ）と図９（ｂ）との関係の基本的な考え方は図８と同様であるため詳細説明は省略する。図９に示す例では、図８に示す例と異なり、分岐条件の成立／不成立に依存する命令が複数ある。具体的には、命令３の条件付き加算命令ａｄｄ．ｇ命令と命令４の減算命令ｓｕｂは、命令２の分岐命令ｊｌｅの条件が不成立の場合に実行される命令である。また、命令１ａの減算命令ｓｕｂと命令２ａの加算命令ａｄｄは、命令２の分岐命令ｊｌｅの条件が成立した場合に実行される命令である。図９（ｂ）においては、図９（ａ）と比較して、条件が不成立の場合に無演算命令ｎｏｐ分のサイクル数の削減が可能となる。
【特許文献１】特開平６−１６１７４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載の技術では、条件の成立に依存する命令、不成立に依存する命令が存在する場合は、分岐ペナルティのサイクル数を十分に削減できない場合がある。このような場合を図９（ｂ）の例を用いて説明する。
【００１１】
まず、図９（ｂ）の命令群を、フェッチ／デコード／実行の各ステージを持つ一般的なパイプラインで処理する場合について説明する。命令１の比較命令ｃｍｐ、命令２の分岐命令ｊｌｅ、命令３の条件付き加算命令ａｄｄ．ｇ、命令４の減算命令ｓｕｂは、この順番で、それぞれフェッチ／デコード／実行が行われる。一方、命令２の分岐命令ｊｌｅの実行ステージでは、命令３の条件付き加算命令ａｄｄ．ｇのデコード及び命令４の減算命令ｓｕｂのフェッチが行われることになる。このパイプライン処理において、命令２の分岐命令ｊｌｅの実行ステージで、条件が成立しない結果となった場合、デコード中の条件付き加算命令ａｄｄ．ｇ及びフェッチ中の減算命令ｓｕｂはそれぞれそのまま実行が継続される。この場合は、図９（ａ）の無演算命令ｎｏｐ分のサイクル数が削減できる。しかし、命令２の分岐命令ｊｌｅの実行ステージで、条件が成立する結果となった場合、デコード中の条件付き加算命令ａｄｄ．ｇ及びフェッチ中の減算命令ｓｕｂの処理は廃棄し、新たに命令１ａの減算命令ｓｕｂのフェッチ処理を開始しなければならない。すなわち、命令３の条件付き加算命令ａｄｄ．ｇのデコード及び命令４の減算命令ｓｕｂのフェッチ処理にかかる２サイクルの分岐ペナルティが生じることになる。
【課題を解決するための手段】
【００１２】
本発明にかかるマイクロコンピュータの一態様は、パイプライン処理により演算を実行するマイクロコンピュータであって、第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令と、前記第２の実行ステージにおいて実行される第２の演算命令を含む順次演算命令と、をフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する命令デコーダと、前記分岐複合命令のデコードにより得られる演算情報のうち前記第１の演算命令に対応した第１の演算情報を格納する演算情報格納回路と、前記分岐複合命令のデコードにより得られる演算情報のうち前記条件分岐命令に対応した条件分岐演算情報に基づき、分岐条件の成立／不成立を判断し、判定結果信号を出力する分岐条件判定回路と、  前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合に前記演算情報格納回路に格納された前記第１の演算情報を出力し、前記判定結果信号が分岐条件の成立又は不成立の他方の状態を示す場合に前記第２の演算命令に対応した第２の演算情報を出力するセレクタと、前記セレクタが出力した演算情報に基づき演算を行い、演算結果信号を出力する演算器と、を有するものである。
【００１３】
また、本発明にかかるマイクロコンピュータにおける命令実行方法の一態様は、パイプライン処理により演算を実行するマイクロコンピュータにおける命令実行方法であって、第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令をデコードして前記条件分岐命令に応じた条件分岐演算情報と前記第１の演算命令に応じた第１の演算情報とを生成し、前記第１の演算情報を演算情報格納回路に格納し、前記条件分岐演算情報に基づき分岐条件の成立／不成立を判断すると共に、前記第２の実行ステージにおいて実行される第２の演算命令を含む順次演算命令をデコードして前記第２の演算命令に応じた第２の演算情報とを生成し、前記分岐条件が成立又は不成立の一方の状態となった場合は前記演算情報格納回路に格納された前記第１の演算情報に基づき演算を行い、前記分岐条件の成立又は不成立の他方の状態となった場合は前記第２の演算情報に基づき演算を行うものである。
【００１４】
本発明にかかるマイクロコンピュータ及びその命令実行方法によれば、条件分岐命令の実行により分岐条件の成立／不成立が判明した時点において、分岐条件が成立した場合に実行される第１の演算命令と分岐条件が不成立であった場合に実行される第２の演算命令とが共にデコードされた状態となる。そして、本発明にかかるマイクロコンピュータ及びその命令実行方法では、分岐条件の成立／不成立に応じて第１の演算命令と第２の演算命令とのいずれか一方を選択的に実行する。これにより、本発明にかかるマイクロコンピュータ及びその命令実行方法では、分岐条件の成立／不成立にかかわらず分岐ペナルティを発生させることはない。
【発明の効果】
【００１５】
本発明にかかるマイクロコンピュータ及びその命令実行方法によれば、条件の成立に依存する命令又は不成立に依存する命令が存在する場合に、分岐ペナルティを削減することが可能となる。
【発明を実施するための最良の形態】
【００１６】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１に本実施の形態にかかるマイクロコンピュータ１のブロック図を示す。なお、以下の説明では、マイクロコンピュータ１は、第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令と、第２の実行ステージにおいて実行される第２の演算命令を含む順次演算命令とを順次フェッチし、条件分岐命令の成立／不成立に応じて前記第２の実行ステージにおいて実行する命令を切り替えるものとする。また、第２の実行ステージにおいて実行される演算命令は一つに限られないものとする。
【００１７】
図１に示すようにマイクロコンピュータ１は、命令フェッチアドレスレジスタ１０、セレクタ１１、１７、加算器１２、命令格納部１３、命令デコーダ１４、演算情報保持回路１５、１６、分岐条件判定回路１８、入力制御回路１９、プログラムカウンタ２０、演算器２１、演算結果保持回路２２を有する。
【００１８】
命令フェッチアドレスレジスタ１０は、予め決められた順序で第１のフェッチアドレスＦＡ１を出力する。セレクタ１１は、判定結果信号Ｊ１の値に基づき第１のフェッチアドレスＦＡ１と分岐先フェッチアドレスＦＡ３とのいずれか一方を選択して、選択したアドレスを実行フェッチアドレスＦＡ４として出力する。加算器１２は、実行フェッチアドレスＦＡ４のアドレス値に１を加算して、その値を命令フェッチアドレスレジスタ１０に与える。なお、命令フェッチアドレスレジスタ１０が出力する第１のフェッチアドレスは、加算器１２から与えられたアドレス値に基づき決められるものである。
【００１９】
命令格納部１３は、実行フェッチアドレスＦＡ４の値に関連付けて分岐複合命令及び順次演算命令を格納する。そして、命令格納部１３は、入力される実行フェッチアドレスＦＡ４の値に関連付けられた命令を命令デコーダ１４に出力する。命令デコーダ１４は、分岐複合命令と順次演算命令とをフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する。より具体的には、命令デコーダ１４は、分岐複合命令をデコードすることで、条件分岐命令に対応した条件分岐演算情報及び第１の演算命令に対応した第１の演算情報を出力する。また、命令デコーダ１４は、順次実行命令をデコードすることで、第２の演算命令に対応した第２の演算情報を出力する。ここで、本実施の形態では、第１の演算命令は、条件分岐命令に基づく分岐条件が成立した場合に実行される演算命令であるものとする。また、本実施の形態では、第１の演算情報には２つの演算情報が含まれるものとする。例えば、第１の演算情報には、第２の実行ステージの前半で実行される前期演算情報と第２の実行ステージの後半で実行される後期演算情報とを含むものとする。
【００２０】
演算情報保持回路１５、１６は、分岐複合命令をデコードすることで得られる第１の演算情報を格納する。より具体的には、演算情報保持回路１５は、第１の演算情報のうち前期演算情報を格納し、演算情報保持回路１６は、第１の演算情報のうち後期演算情報を格納する。なお、演算情報保持回路の数は、第１の演算情報に含まれる演算情報の数に応じて増減させることが可能である。
【００２１】
セレクタ１７は、第１の入力端子ａ、第２の入力端子ｂ、ｃを有する。第１の入力端子ａには、命令デコーダ１４の出力が接続される。第２の入力端子ｂには、演算情報保持回路１５の出力が接続される。第２の入力端子ｃには演算情報保持回路１６の出力が接続される。そして、セレクタ１７は、３つの入力端子に入力される演算情報をセレクタ制御信号Ｊ２に応じて一つ選択して、選択した演算情報を出力する。なお、本実施の形態ではセレクタ制御信号Ｊ２は、後述する入力制御回路１９により出力される。
【００２２】
分岐条件判定回路１８は、命令デコーダ１４においてデコードされた条件分岐演算情報が入力されたことに応じて、条件分岐演算情報に対する処理が行われる以前に算出された演算結果を参照し、分岐条件が成立したか否かを判定する。そして、その判定結果は、条件分岐の成立／不成立を示す判定結果信号Ｊ１として出力される。入力制御回路１９は、命令デコーダ１４においてデコードされた条件分岐演算情報が入力されたことに応じて、判定結果信号Ｊ１を参照する。そして、判定結果信号Ｊ１が条件分岐の成立を示す場合に、セレクタ制御信号Ｊ２を出力する。より具体的には、セレクタ制御信号Ｊ２は、所定のタイミングでセレクタ１７が選択する入力端子を切り替えるための制御信号である。つまり、セレクタ制御信号Ｊ２に応じてセレクタ１７が動作することで、セレクタ１７は、判定結果信号Ｊ１が分岐条件の成立を示す場合、所定のタイミングで選択すべき入力端子を切り替える。
【００２３】
プログラムカウンタ２０は、命令フェッチアドレスレジスタ１０から出力される第１のフェッチアドレスＦＡ１を遅延させて第２のフェッチアドレスＦＡ２として出力する。本実施の形態では、第１のフェッチアドレスＦＡ１が出力されてから、第１のフェッチアドレスに対応する命令が演算器２１で処理されるまでに２処理ステージの間隔がある。そのため、本実施の形態では、プログラムカウンタ２０は、２処理ステージ分の遅延期間を経て第１のフェッチアドレスＦＡ１を第２のフェッチアドレスＦＡ２として出力する。
【００２４】
演算器２１は、セレクタ１７を介して入力される演算情報に基づき演算命令を実行する。より具体的には、演算器２１は、入力される演算情報が条件分岐演算情報である場合、分岐先のフェッチアドレスを第２のフェッチアドレスに基づき演算して分岐先フェッチアドレスＦＡ３を出力する。一方、演算器２１は、入力される演算情報が第１の演算命令又は第２の演算命令に応じたものである場合、加算等の演算結果を出力する。
【００２５】
演算結果保持回路２２は、演算器２１において演算された演算結果を保持し、保持している演算結果を分岐条件判定回路１８に対して出力する。なお、演算結果保持回路２２において保持されている演算結果は、演算器２１において演算が行われる度に更新されるものとする。
【００２６】
次に、本実施の形態において採用する分岐複合命令及び順次演算命令について詳細に説明する。本実施の形態において採用する命令群を説明するための図を図２に示す。図２（ａ）は、本実施の形態において行う処理を記載した標準的な命令の一例を示すものである。図２（ｂ）は、本実施の形態において採用する命令の一例を示すものである。
【００２７】
図２（ａ）に示すように、本実施の形態では、まず命令１よりも前に実行された演算結果に基づき条件分岐命令ｊｌｅが実行される。このとき分岐条件が満たされれば、Ｌ１にジャンプしてＬ１よりも後のフェッチアドレスに関連付けられた順次演算命令ＬＡＡ〜ＬＤＤを実行する。一方、分岐条件が満たされない場合、条件分岐命令ｊｌｅに続くフェッチアドレスに関連付けられた順次演算命令ＡＡ〜ＤＤを実行する。
【００２８】
このような演算処理に対して、本実施の形態では、分岐複合命令Ｘｊｌｅを用いる。分岐複合命令Ｘｊｌｅは、第１の実行ステージにおいて実行される条件分岐命令ｊｌｅと、条件分岐の成立後に第１の実行ステージに続く第２の実行ステージにおいて実行される順次演算命令ＬＡＡ、ＬＢＢを含む命令である。ここで、順次演算命令とは、フェッチアドレスが後に実行される命令と連続した命令であって、演算器２１において行う演算を単純に定義した命令である。
【００２９】
図２（ｂ）に示すように、分岐複合命令Ｘｊｌｅを用いることで、分岐先のＬ１には順次演算命令ＬＣＣ、ＬＤＤが定義される。そして、本実施の形態にかかるマイクロコンピュータ１では、分岐複合命令Ｘｊｌｅに含まれる条件分岐命令ｊｌｅを実行し、分岐条件が成立した場合は、Ｌ１にジャンプし順次演算命令ＬＣＣ及びＬＤＤをフェッチする。一方、分岐複合命令Ｘｊｌｅに含まれる条件分岐命令ｊｌｅを実行し、分岐条件が不成立であった場合は、順次演算命令ＡＡ〜ＤＤをフェッチする。
【００３０】
次に、図２（ｂ）に示す命令群をマイクロコンピュータ１において実行した場合の命令実行シーケンスを図３に示す。図３に示すように、各命令は、フェッチステージＩＦにおいてフェッチされ、デコードステージＩＤでデコードされ、実行ステージＥＸで実行される。また、マイクロコンピュータ１では、１処理ステージに一つの命令をフェッチするものとする。
【００３１】
まず、分岐複合命令Ｘｊｌｅは、条件分岐命令ｊｌｅと分岐条件の成立後に実行される第１の演算命令（例えば、命令ＬＡＡ、ＬＢＢ）を含む。命令ＬＡＡ、ＬＢＢは、順次演算命令である。そのため、フェッチステージＩＦ及びデコードステージＩＤを経ることで、分岐複合命令Ｘｊｌｅから条件分岐命令ｊｌｅに対応した条件分岐演算情報と、命令ＬＡＡ、ＬＢＢに対応した２つの第１の演算情報とが生成される。条件分岐演算情報は第１の実行ステージで実行されるもので、２つの第１の演算情報は、分岐条件が成立した場合に第２の実行ステージで実行される。また、命令ＬＡＡに対応した第１の演算情報は演算情報保持回路１５に格納され、命令ＬＢＢに対応した第１の演算情報は演算情報保持回路１６に格納される。
【００３２】
命令ＡＡは、分岐複合命令Ｘｊｌｅよりも１処理ステージ遅れてフェッチされる。命令ＡＡは、第２の演算命令であって、順次演算命令である。命令ＡＡは、フェッチステージＩＦ及びデコードステージＩＤを経ることで、分岐条件が不成立であった場合に第２の実行ステージのうち前半部分で実行される第２の演算情報となる。命令ＢＢは、命令ＡＡよりも１処理ステージ遅れてフェッチされる。命令ＢＢは、第２の演算命令であって、順次演算命令である。命令ＢＢは、フェッチステージＩＦ及びデコードステージＩＤを経ることで、分岐条件が不成立であった場合に第２の実行ステージのうち後半部分で実行される第２の演算情報となる。
【００３３】
命令ＢＢよりも１処理ステージ遅れてフェッチされる命令は、分岐条件が成立したか否かによって異なる。具体的には、分岐条件が不成立であった場合には、命令ＢＢに続く命令ＣＣがフェッチされる。一方、分岐条件が成立した場合には、命令ＬＢＢに続く命令ＬＣＣがフェッチされる。命令ＣＣ及び命令ＬＣＣは、順次演算命令である。命令ＣＣ及び命令ＬＣＣは、フェッチステージＩＦ及びデコードステージＩＤを経ることで、第３の実行ステージで実行される演算情報となる。
【００３４】
マイクロコンピュータ１では、このような動作を行うことにより、分岐判断が行われる第１の実行ステージの完了後に、分岐条件が成立した場合に実行すべき命令と不成立であった場合に実行すべき命令とがデコードされた状態となる。そして、マイクロコンピュータ１は、分岐判断に従ってデコード済みの２つの命令のいずれを用いるかを選択する。
【００３５】
この選択動作を行った場合には、選択されなかった命令は廃棄される。そこで、図４に分岐条件が成立した場合の命令群を示し、図５に分岐条件が不成立であった場合の命令群を示す。図４に示すように、分岐条件が成立した場合、第２の実行ステージで命令ＡＡ及び命令ＢＢが廃棄される。また、分岐条件が成立した場合、分岐先の命令ＬＣＣがフェッチされる。また、図５に示すように、分岐条件が不成立であった場合、第２の実行ステージで命令ＬＡＡ及び命令ＬＢＢに対応する第１の演算情報が廃棄される。また、分岐条件が不成立であった場合、命令ＢＢに続く命令ＣＣがフェッチされる。
【００３６】
次に、マイクロコンピュータ１における命令実行手順を示すフローチャートを図６に示す。そして、この図６を参照してマイクロコンピュータ１の動作を説明する。図６に示すように、マイクロコンピュータ１は、ステップＳ１において分岐複合命令Ｘｊｌｅをフェッチする。続いてステップＳ１でフェッチした分岐複合命令Ｘｊｌｅを命令デコーダ１４でデコードすると共に分岐複合命令Ｘｊｌｅに続く命令ＡＡをフェッチする（ステップＳ２）。このステップＳ２のデコード処理では、分岐複合命令Ｘｊｌｅから条件分岐演算情報、命令ＬＡＡに対応した第１の演算情報及び命令ＬＢＢに対応した第１の演算情報が得られる。そして、命令ＬＡＡに対応した第１の演算情報は演算情報保持回路１５に格納され、命令ＬＢＢに対応した第１の演算情報は演算情報保持回路１６に格納される。また、このステップＳ１、Ｓ２では、セレクタ１７は第１の入力端子ａを選択した状態である。
【００３７】
そして、ステップＳ３では、ステップＳ２でフェッチした命令ＡＡを命令デコーダ１４でデコードすると共に命令ＡＡに続く命令ＢＢをフェッチする。さらにステップＳ３では、ステップＳ２におけるデコード処理で得られた条件分岐演算情報が分岐条件判定回路１８及び入力制御回路１９に入力される。これにより分岐条件判定回路１８は、演算結果保持回路２２を参照して、すでに演算された演算結果を参照して、分岐条件が成立したか否かを判定する分岐判断を実行する（ＥＸ１）。ステップＳ３の分岐判断において分岐条件が成立した場合、分岐条件判定回路１８は、判定結果信号Ｊ１を分岐条件成立状態とする。そして、この判定結果信号Ｊ１に応じて、入力制御回路１９は、セレクタ１７に所定のタイミングで選択する入力端子を切り替える指示を与えるセレクタ制御信号Ｊ２を出力する。一方、ステップＳ３の分岐判断において分岐条件が不成立であった場合、分岐条件判定回路１８は、判定結果信号Ｊ１を分岐条件不成立状態とする。そして、この判定結果信号Ｊ１に応じて、入力制御回路１９は、セレクタ１７に選択する入力端子を第１の入力端子ａで固定する指示を与えるセレクタ制御信号Ｊ２を出力する。
【００３８】
ステップＳ４以降の動作では、ステップＳ３における分岐判断の結果によって動作が異なる。そこで、まずステップＳ３において分岐条件が成立した場合の動作について説明する。この場合、ステップＳ４では、セレクタ１７が第２の入力端子ｂを選択する。そのためセレクタ１７から出力される演算情報は、演算情報保持回路１５に格納されている命令ＬＡＡに対応した第１の演算情報となる。そして、セレクタ１７から出力される演算情報に基づき演算器２１は、命令ＬＡＡを実行する。一方、セレクタ１７が第２の入力端子ｂを選択しているため、命令ＡＡ及び命令ＢＢは演算器２１に送られることはなく実質的に廃棄される状態となる。また、分岐条件が成立しているため、ステップＳ４では、分岐先の命令ＬＣＣがフェッチされる。
【００３９】
続いて、ステップＳ５では、セレクタ１７が第２の入力端子ｃを選択する。そのためセレクタ１７から出力される演算情報は、演算情報保持回路１６に格納されている命令ＬＢＢに対応した第１の演算情報となる。そして、セレクタ１７から出力される演算情報に基づき演算器２１は、命令ＬＢＢを実行する。また、命令デコーダ１４は、ステップＳ４でフェッチされた命令ＬＣＣをデコードする。そして、ステップＳ６では、セレクタ１７がセレクタ制御信号Ｊ２に基づき選択する入力する端子を第１の入力端子ａとする。そのためセレクタ１７から出力される演算情報は、命令デコーダ１４がステップＳ５でデコードした命令ＬＣＣ演算情報となる。そして、セレクタ１７から出力される演算情報に基づき演算器２１は、命令ＬＣＣを実行する。
【００４０】
次いで、ステップＳ３において分岐条件が不成立であった場合の動作について説明する。この場合、ステップＳ４では、セレクタ１７が第１の入力端子ａを選択する。そのためセレクタ１７から出力される演算情報は、命令デコーダ１４がステップＳ３でデコードした命令ＡＡに対応した第２の演算情報となる。そして、セレクタ１７から出力される演算情報に基づき演算器２１は、命令ＡＡを実行する。また、命令デコーダ１４は、ステップＳ３でフェッチされた命令ＢＢをデコードする。一方、セレクタ１７が第２の入力端子ａを選択しているため、命令ＬＡＡ及び命令ＬＢＢに対応した演算情報は演算器２１に送られることはなく実質的に廃棄される状態となる。また、分岐条件が不成立であるため、ステップＳ４では、命令ＢＢに続く命令ＣＣがフェッチされる。
【００４１】
続いて、ステップＳ５においても、セレクタ１７は第２の入力端子ａを選択する。そのためセレクタ１７から出力される演算情報は、命令デコーダ１４がステップＳ４でデコードした命令ＢＢに対応した第２の演算情報となる。そして、セレクタ１７から出力される演算情報に基づき演算器２１は、命令ＢＢを実行する。また、命令デコーダ１４は、ステップＳ４でフェッチされた命令ＣＣをデコードする。そして、ステップＳ６においてもセレクタ１７が第１の入力端子ａを選択する。そのためセレクタ１７から出力される演算情報は、命令デコーダ１４がステップＳ５でデコードした命令ＣＣに対応した演算情報となる。そして、セレクタ１７から出力される演算情報に基づき演算器２１は、命令ＣＣを実行する。
【００４２】
上記説明より、本実施の形態にかかるマイクロコンピュータ１は、条件分岐命令ｊｌｅとその後に実行される第１の演算命令とを複合した分岐複合命令Ｘｊｌｅをデコードし、デコードにより生じた条件分岐演算情報以外の演算情報をその後の処理のために演算情報保持回路１５、１６により保持する。そして、分岐条件演算情報による分岐判断を分岐条件判定回路で行うと共に、条件分岐命令ｊｌｅに続いて処理される第１の演算情報とは異なる第２の演算命令のデコードを行う。これにより、マイクロコンピュータ１では、分岐判断と同時に分岐条件が成立した場合に実行されるべき演算情報と分岐条件が不成立であった場合に実行されるべき演算情報とが共に準備された状態となる。そして、マイクロコンピュータ１は、分岐条件の成立／不成立に応じて準備された２つの演算情報のうちいずれを用いるかを選択する。従って、マイクロコンピュータ１では、分岐条件が成立／不成立のいずれの場合であっても、処理ステージに空白期間（分岐ペナルティ）を生じさせることなくその後の処理を実行することができる。つまり、マイクロコンピュータ１は、分岐条件の成立の如何にかかわらず処理能力の低下を生じさせることがない。言い換えると、条件の成立に依存する命令又は不成立に依存する命令が存在する場合に、分岐ペナルティを削減することが可能となる。
【００４３】
なお、本実施の形態では、分岐複合命令Ｘｊｌｅに分岐条件が成立した場合の順次演算命令を含める形態としたが、マイクロコンピュータの構成に応じて、分岐条件が不成立であった場合の順次演算命令を分岐複合命令に含めてもよい。また、分岐複合命令Ｘｊｌｅに含める順次演算命令の数は、分岐複合命令Ｘｊｌｅのフェッチから分岐判断が行われる第１の実行ステージまでの間に含まれる処理ステージの数に応じて増減させることが好ましい。分岐複合命令Ｘｊｌｅに含める順次演算命令の数を分岐複合命令Ｘｊｌｅのフェッチから分岐判断が行われる第１の実行ステージまでの間に含まれる処理ステージの数に合わせることで、処理ステージの空白期間をなくすことができるからである。
【００４４】
また、図７にマイクロコンピュータ１の変形例となるマイクロコンピュータ２のブロック図を示す。図７に示すように、マイクロコンピュータ２では、分岐先フェッチアドレスＦＡ３を演算するために別途加算器２３を有する。加算器２３は、セレクタ１７からの出力とプログラムカウンタ２０から出力される第２のフェッチアドレスＦＡ２とを加算して分岐先フェッチアドレスＦＡ３を出力する。このようにすることで、演算器２１の構成を簡略化することができる。
【００４５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【図面の簡単な説明】
【００４６】
【図１】実施の形態１にかかるマイクロコンピュータのブロック図である。
【図２】実施の形態１にかかるマイクロコンピュータにおいて採用される命令群を説明するための図である。
【図３】実施の形態１にかかるマイクロコンピュータにおいて処理される命令群を説明するための図である。
【図４】実施の形態１にかかるマイクロコンピュータにおいて分岐条件が成立した場合の命令群の状態を示す図である。
【図５】実施の形態１にかかるマイクロコンピュータにおいて分岐条件が不成立であった場合の命令群の状態を示す図である。
【図６】実施の形態１にかかるマイクロコンピュータの動作手順を示すフローチャートである。
【図７】実施の形態１にかかるマイクロコンピュータの変形例を示すブロック図である。
【図８】従来のパイプライン計算機において採用される命令群を説明するための図である。
【図９】従来のパイプライン計算機において採用される命令群の別の例を説明するための図である。
【符号の説明】
【００４７】
１、２    マイクロコンピュータ
１０    命令フェッチアドレスレジスタ
１１、１７    セレクタ
１２、２１    加算器
１３    命令格納部
１４    命令デコーダ
１５、１６    演算情報保持回路
１８    分岐条件判定回路
１９    入力制御回路
２０    プログラムカウンタ
２１    演算器
２２    演算結果保持回路
ＦＡ１    第１のフェッチアドレス
ＦＡ２    第２のフェッチアドレス
ＦＡ３    分岐先フェッチアドレス
ＦＡ４    実行フェッチアドレス
Ｊ１    判定結果信号
Ｊ２    セレクタ制御信号
【図１】
2010079841.tif 000003
【図２】
2010079841.tif 000004
【図３】
2010079841.tif 000005
【図４】
2010079841.tif 000006
【図５】
2010079841.tif 000007
【図６】
2010079841.tif 000008
【図７】
2010079841.tif 000009
【図８】
2010079841.tif 000010
【図９】
2010079841.tif 000011
【手続補正書】
【提出日】平成21年7月15日(2009.7.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パイプライン処理により演算を実行するマイクロコンピュータであって、
第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令と、前記第２の実行ステージにおいて実行される第２の演算命令と、をフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する命令デコーダと、
前記分岐複合命令のデコードにより得られる演算情報のうち前記第１の演算命令に対応した第１の演算情報を格納する演算情報格納回路と、
前記分岐複合命令のデコードにより得られる演算情報のうち前記条件分岐命令に対応した条件分岐演算情報に基づき、分岐条件の成立／不成立を判断し、判定結果信号を出力する分岐条件判定回路と、
前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合に前記演算情報格納回路に格納された前記第１の演算情報を出力し、前記判定結果信号が分岐条件の成立又は不成立の他方の状態を示す場合に前記第２の演算命令に対応した第２の演算情報を出力するセレクタと、
前記セレクタが出力した演算情報に基づき演算を行い、演算結果信号を出力する演算器と、
を有するマイクロコンピュータ。
【請求項２】
前記セレクタは、前記命令デコーダの出力を受ける第１の入力端子と、前記演算情報格納回路の出力を受ける第２の入力端子とを有し、
前記セレクタは、前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合において選択する入力端子を前記第１の入力端子から前記第２の入力端子へと所定のタイミングで切り替える請求項１に記載のマイクロコンピュータ。
【請求項３】
前記所定のタイミングを制御する入力制御回路を有する請求項２に記載のマイクロコンピュータ。
【請求項４】
前記演算器の演算結果を保持する演算結果保持回路を有し、
前記分岐条件判定回路は、前記演算結果保持回路に保持されているすでに演算された演算結果を参照して、前記分岐条件の成立／不成立を判定する請求項１に記載のマイクロコンピュータ。
【請求項５】
予め決められた順序で第１のフェッチアドレスを出力する命令フェッチアドレスレジスタと、
前記第１のフェッチアドレスを遅延させ、前記演算回路において実行中の命令に対応する第２のフェッチアドレスを出力するプログラムカウンタと、
前記第１のフェッチアドレスと、前記演算回路が前記第２のフェッチアドレスに基づき演算する分岐先フェッチアドレスと、を前記判定結果信号に基づき選択し、選択したフェッチアドレスを前記実行フェッチアドレスとして出力するセレクタと、
前記実行フェッチアドレスに関連付けて前記分岐複合命令及び前記第２の演算命令を格納し、入力される前記実行フェッチアドレスに関連付けられた命令を出力する命令格納部と、
を有する請求項１に記載のマイクロコンピュータ。
【請求項６】
前記第２のフェッチアドレスと前記分岐演算情報に基づき演算された演算結果とを加算し、前記分岐先フェッチアドレスを生成する加算器を有する請求項５に記載のマイクロコンピュータ。
【請求項７】
前記演算情報格納回路は、前記第２の実行ステージが複数の実行ステージを含む場合、前記複数の実行ステージの数に応じた数が設けられる請求項１に記載のマイクロコンピュータ。
【請求項８】
前記第１の演算命令は、前記条件分岐命令において分岐条件が成立又は不成立の一方の状態であった場合に実行されるべき演算命令であり、
前記第２の演算命令は、前記条件分岐命令において分岐条件が成立又は不成立の他方の状態であった場合に実行されるべき演算命令である請求項１に記載のマイクロコンピュータ。
【請求項９】
パイプライン処理により演算を実行するマイクロコンピュータにおける命令実行方法であって、
第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令をデコードして前記条件分岐命令に応じた条件分岐演算情報と前記第１の演算命令に応じた第１の演算情報とを生成し、
前記第１の演算情報を演算情報格納回路に格納し、
前記条件分岐演算情報に基づき分岐条件の成立／不成立を判断すると共に、前記第２の実行ステージにおいて実行される第２の演算命令をデコードして前記第２の演算命令に応じた第２の演算情報とを生成し、
前記分岐条件が成立又は不成立の一方の状態となった場合は前記演算情報格納回路に格納された前記第１の演算情報に基づき演算を行い、前記分岐条件の成立又は不成立の他方の状態となった場合は前記第２の演算情報に基づき演算を行うマイクロコンピュータにおける命令実行方法。
【請求項１０】
前記分岐条件が成立したと判断された場合は、前記条件分岐演算情報に基づき分岐先の演算命令をフェッチし、前記分岐条件が不成立であると判断された場合は、命令のフェッチアドレスのジャンプを行わずに演算命令をフェッチする請求項９に記載のマイクロコンピュータにおける命令実行方法。
【請求項１１】
前記分岐条件が成立しているか否かの判定は、前記条件分岐演算情報を処理する以前に演算されている演算結果を参照して行われる請求項９に記載のマイクロコンピュータにおける命令実行方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
本発明にかかるマイクロコンピュータの一態様は、パイプライン処理により演算を実行するマイクロコンピュータであって、第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令と、前記第２の実行ステージにおいて実行される第２の演算命令と、をフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する命令デコーダと、前記分岐複合命令のデコードにより得られる演算情報のうち前記第１の演算命令に対応した第１の演算情報を格納する演算情報格納回路と、前記分岐複合命令のデコードにより得られる演算情報のうち前記条件分岐命令に対応した条件分岐演算情報に基づき、分岐条件の成立／不成立を判断し、判定結果信号を出力する分岐条件判定回路と、  前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合に前記演算情報格納回路に格納された前記第１の演算情報を出力し、前記判定結果信号が分岐条件の成立又は不成立の他方の状態を示す場合に前記第２の演算命令に対応した第２の演算情報を出力するセレクタと、前記セレクタが出力した演算情報に基づき演算を行い、演算結果信号を出力する演算器と、を有するものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
また、本発明にかかるマイクロコンピュータにおける命令実行方法の一態様は、パイプライン処理により演算を実行するマイクロコンピュータにおける命令実行方法であって、第１の実行ステージにおいて実行される条件分岐命令と第２の実行ステージにおいて実行される第１の演算命令とを含む分岐複合命令をデコードして前記条件分岐命令に応じた条件分岐演算情報と前記第１の演算命令に応じた第１の演算情報とを生成し、前記第１の演算情報を演算情報格納回路に格納し、前記条件分岐演算情報に基づき分岐条件の成立／不成立を判断すると共に、前記第２の実行ステージにおいて実行される第２の演算命令をデコードして前記第２の演算命令に応じた第２の演算情報とを生成し、前記分岐条件が成立又は不成立の一方の状態となった場合は前記演算情報格納回路に格納された前記第１の演算情報に基づき演算を行い、前記分岐条件の成立又は不成立の他方の状態となった場合は前記第２の演算情報に基づき演算を行うものである。