(57)【要約】【課題】  パイプライン動作に障害を与えることなく、異なるアーキテクチャに対応する命令が混在したプログラムを実行できるデータ処理装置を提供する。【解決手段】  ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５の構成を変更できるアーキテクチャ制御ユニット２０を有するプロセッサ１を提供する。アーキテクチャ制御ユニット２０は、ＩＦステージ１１でフェッチした命令１９に対応するアーキテクチャ情報２９により、パイプライン１０を構成するステージ１３〜１５を、それぞれのステージにおいて命令１９を処理するタイミングで、それぞれのステージ１３〜１５の構成を変更する。したがって、パイプライン１０の流れを止めずに、アーキテクチャの異なる命令を実行できる。【選択図】        図１
2006178653.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン動作により命令をフェッチして処理するデータ処理システムであって、
パイプラインを構成するように接続される複数の回路要素と、
前記パイプラインのステージの少なくともいずれかの構成を、フェッチした命令を処理するタイミングに合わせて、前記フェッチした命令に対応するアーキテクチャタイプに基づき変更するコンフィグレーション制御ユニットとを有する、データ処理システム。
【請求項２】
請求項１において、前記パイプラインは、前記フェッチした命令に対応するアーキテクチャタイプを判別するアーキテクチャ判別ステージを備えている、データ処理システム。
【請求項３】
請求項１において、前記パイプラインは、命令と共に、その命令に対応するアーキテクチャタイプの情報をフェッチするフェッチステージを備えている、データ処理システム。
【請求項４】
請求項１において、前記コンフィグレーション制御ユニットは、前記アーキテクチャタイプの情報を前記パイプラインのサイクルにより転送する、データ処理システム。
【請求項５】
請求項１において、前記パイプラインは、前記フェッチした命令をデコードするデコードステージと、前記フェッチした命令による演算を実行する実行ステージと、前記フェッチした命令によるレジスタ書き込みを行うＷＢステージとを備えており、
前記コンフィグレーション制御ユニットは、前記デコードステージ、前記実行ステージおよび前記ＷＢステージの少なくともいずれかの構成を変更する、データ処理システム。
【請求項６】
請求項１において、前記複数の回路要素の少なくとも一部は、それら回路要素の間の接続および／またはそれぞれの回路要素内の設定を、所定の範囲で任意に変更可能であり、
前記コンフィグレーション制御ユニットは、前記複数の回路要素の間の接続および／またはそれぞれの回路要素内の設定を変更することにより、前記パイプラインのステージの少なくともいずれかを動的に再構成する、データ処理システム。
【請求項７】
パイプライン動作により命令をフェッチして処理するデータ処理システムの制御方法であって、
パイプラインのステージの少なくともいずれかの構成を、フェッチした命令を処理するタイミングに合わせて、前記フェッチした命令に対応するアーキテクチャタイプに基づき変更する構成変更工程を有する、データ処理システムの制御方法。
【請求項８】
請求項７において、前記パイプラインは、前記フェッチした命令に対応するアーキテクチャタイプを判別するアーキテクチャ判別ステージ、または、命令と共に、その命令に対応するアーキテクチャタイプの情報をフェッチするフェッチステージを備えており、
前記アーキテクチャタイプの情報を前記パイプラインのサイクルにより転送する工程を有する、データ処理システムの制御方法。
【請求項９】
請求項７において、前記パイプラインを構成するように接続される複数の回路要素の少なくとも一部は、それら回路要素の間の接続および／またはそれぞれの回路要素内の設定を、所定の範囲で任意に変更可能であり、
前記構成変更工程では、前記複数の回路要素の間の接続および／またはそれぞれの回路要素内の設定を変更することにより、前記パイプラインのステージの少なくともいずれかを動的に再構成する、データ処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アーキテクチャの異なるデータ処理システム用の命令あるいは命令セットを含むプログラムを、柔軟に実行することができるデータ処理システムおよびその制御方法に関するものである。
【背景技術】
【０００２】
コンピュータの機能的構造あるいは物理的構造をアーキテクチャと称しており、コンピュータシステムのソフトウェアとハードウェア全体の機能を決定する重要なファクタの１つである。ハードウェアの構成が異なれば、それを制御するためのソフトウェアの命令も異なる。ソフトウェア設計の容易化、資産の利用などのために、命令を共通にする努力は常に行われているが、新しい機能を搭載したハードウェアを制御したり、目的の異なる機能を搭載したハードウェアを制御するために異なる命令が採用されることはある。また、同じ命令が、ハードウェアに対して異なる処理の実行を要求するものであることもある。特に、ハードウェアを直接制御する機械語に近い命令はアーキテクチャの影響を受けるので、命令が全て同一であるというケースは少ない。
【特許文献１】特開２００３−１６７７３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
あるアプリケーションプログラムを異なるアーキテクチャのハードウェアで実行したいという要望がある。また、アプリケーションプログラムをより容易に開発したり、アプリケーションプログラムの一部を、その処理を実行するのに適した異なるアーキテクチャにより実行されるように設計したいという要望もある。
【０００４】
特開２００３−１６７７３０号公報においては、アプリケーション毎に最適化された命令セットで処理を行うことが可能なマイクロプロセッサとして、同一チップ上にデータパス部と制御部とを有し、その制御部をＦＰＧＡなどのプログラマブルロジックで構成し、データパス部はプログラマブルロジックではないハードウェアロジックで構成したマイクロプロセッサを提供することが開示されている。この技術を用いれば、アプリケーションプログラムに応じた命令セットで処理を行わせるように、マイクロプロセッサのプログラマブルロジックを書き換えることができる。しかしながら、ＦＰＧＡのプログラマブルロジックを書き換えるためには処理を中断する必要があるので、１つのアプリケーションプログラムの中に複数のアーキテクチャの命令を含めることは不可能である。
【０００５】
近年、動的に再構成可能なプロセッサが開発されており、１サイクルでロジックを書き換えることができる。したがって、ＦＰＧＡの代わりに、動的に再構成可能なプロセッサを用いることにより、１つのアプリケーションプログラム中に複数のアーキテクチャの命令セットの命令を含めることができる可能性がある。しかしながら、マイクロプロセッサの多くは実質的な処理時間を短縮するために、パイプライン動作により処理が進むように設計されている。パイプラインの分割方法はいろいろな方式が考えられるが、特開２００３−１６７７３０号公報においては、命令フェッチＩＦ、命令デコードＩＤ、演算実行ＥＸ、メモリアクセスＭＥＭ、レジスタ書き込みＷＢの５つのステージに分割して、１クロックサイクルあたりに処理しなければならない内容を簡単にしたり、クロック周波数を引き上げて処理スピードを高速化している。
【０００６】
したがって、制御部のロジックを１クロックサイクルで書き換えできるとしても、プログラム中の命令はパイプライン動作を制御する必要がある都合上、１つの命令によるパイプライン動作が終了するまでは、異なるアーキテクチャの命令セットをデコードできるように制御部を書き換えることができない。このため、制御部のロジックを書き換えるためにはパイプライン動作をいったん終え、リスタートする必要がある。したがって、リスタートのためにパイプラインが消費するクロックサイクル分の遅れが発生し、予定したアプリケーションプログラムとしての機能が得られなかったり、異なるアーキテクチャ用のプログラムを完全にエミュレートすることができないなどの問題が発生する。
【０００７】
そこで、本発明においては、パイプライン動作をリスタートさせることなく、パイプライン動作に障害を与えず、異なるアーキテクチャに対応する命令、すなわち、異なる命令セットに属する命令が混在したアプリケーションプログラムを実行できるデータ処理システムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明においては、パイプライン動作により命令をフェッチして処理するデータ処理システムであって、パイプラインを構成するように接続される複数の回路要素と、パイプラインのステージの少なくともいずれかの構成を、フェッチした命令を処理するタイミングに合わせて、フェッチした命令に対応するアーキテクチャタイプに基づき変更するコンフィグレーション制御ユニットとを有する、データ処理システムを提供する。このデータ処理システムにおいては、パイプラインの各ステージの構成を、フェッチした命令を処理するタイミングで変更することができる。このため、パイプライン動作をリセットしたり、中断したりすることなく、異なるアーキテクチャの命令セットの命令が混在したアプリケーションプログラムを実行できる。
【０００９】
本発明のデータ処理システムの制御方法は、パイプラインのステージの少なくともいずれかの構成を、フェッチした命令を処理するタイミングに合わせて、フェッチした命令に対応するアーキテクチャタイプに基づき変更する構成変更工程を有する。変更の対象となるものは、主に各ステージの処理を実現するためのデータパス構成であり、ＡＬＵなどの演算単位の機能を変更したり、ルックアップテーブル（ＬＵＴ）の内容を変更したりすることも含まれる。
【００１０】
アプリケーションプログラムに含まれる命令の属する命令セットのタイプが、ブロック単位あるいはファンクションユニット単位で異なる場合は、ブロック単位あるいはファンクションユニット単位で、パイプラインのアーキテクチャを交換すれば良い。したがって、アーキテクチャタイプを含む情報も、ブロック単位あるいはファンクションユニット単位で判断されるようにしても良い。しかしながら、その場合、アーキテクチャタイプを判断するために、ブロック単位あるいはファンクションユニット単位の命令のグループを判断する機能をデータ処理システムが持つ必要があり、構造および制御が複雑になる。さらに、命令単位で、異なる命令セットに属する命令が混在しているアプリケーションプログラムは処理できない。これに対し、パイプラインの各ステージを、フェッチした命令を処理するタイミングに合わせて、その命令のアーキテクチャタイプに合致するようにデータパスの構成を変更することにより、シンプルな回路構成および制御により、異なる命令セットに属する命令が命令単位で混在しているアプリケーションプログラムを処理できる。
【００１１】
フェッチした命令に対応するアーキテクチャタイプの情報を得る１つの形態は、パイプラインが、フェッチした命令に対応するアーキテクチャタイプを判別するアーキテクチャ判別ステージを備えていることである。命令と、その命令に対応するアーキテクチャタイプの情報が予めセットになって格納されているアプリケーションプログラムを提供することが可能である。その場合は、パイプラインが、命令と共に、その命令に対応するアーキテクチャタイプの情報をフェッチするフェッチステージを備えていることにより、アーキテクチャタイプの情報を取得できる。
【００１２】
アーキテクチャタイプの情報をパイプラインのサイクルにより転送することで、フェッチした命令が各ステージで実行されるタイミングに合わせて、パイプラインの各ステージの構成を変更できる。クロック同期のパイプライン動作では、パイプラインの各ステージは、パイプラインのサイクルに従い制御され、各ステージにおいて消費されるサイクルは予め判明している。したがって、各ステージの構成を、パイプラインのサイクルに従い変更することにより、各ステージの動作の制御と、各ステージの構成の制御とを独立して行なうことが可能であり、データフローコンピュータのように、処理ユニット単位で待ち合わせ機構を設けて発火制御する必要はない。
【００１３】
パイプラインが、フェッチした命令をデコードするデコードステージと、フェッチした命令による演算を実行する実行ステージと、フェッチした命令によるレジスタ書き込みを行うＷＢステージとを少なくとも備えている場合は、コンフィグレーション制御ユニットは、デコードステージ、実行ステージ、ＷＢステージの少なくともいずれかの構成を変更する。デコードステージの構成を変更することにより、フラグ位置が異なるなどの構造の異なる命令セットに属する命令を解釈することができる。実行ステージの構成またはＷＢステージの構成を変更することにより、複合命令の実行の可否を選択したり、フラグの自動更新の可否を選択したりすることができる。
【００１４】
パイプラインの各ステージを構成するハードウェアは、アプリケーションプログラムに含まれる幾つかの命令セットのアーキテクチャに対応できるように予めデザインされたものであっても良い。その場合、コンフィグレーション制御ユニットは、構成変更工程において、アーキテクチャタイプの情報に従い、予め決められたデータパス構成を選択する。
【００１５】
複数の回路要素の少なくとも一部が、それら回路要素の間の接続および／またはそれぞれの回路要素内の設定を、所定の範囲で任意に変更可能な動的に再構成できるハードウェアを用いることが可能であり、アーキテクチャタイプにより構成の変更が要求されるステージを、動的に再構成できるハードウェアで実現することが望ましい。コンフィグレーション制御ユニットが構成変更工程において、複数の回路要素の間の接続および／またはそれぞれの回路要素内の設定を変更することにより、パイプラインのステージを動的に変更することが可能である。ステージの構成を再構成することにより、複数のアーキテクチャに対応した複数のデータパス構成を予め実装しておく必要がなく、また、複数のデータパスを選択するためのセレクタも不要になる。したがって、構成の変更が必要なステージを少ないハードウェア資源で生成でき、さらに、セレクタなどで消費される時間および電力を削減できる。したがって、本発明のデータ処理システムを、コンパクトに実現でき、消費電力の低減も図れる。
【発明を実施するための最良の形態】
【００１６】
図１に、本発明のデータ処理システムの一例の概略構成を示してある。このデータ処理システム１は、命令をフェッチして処理するプロセスをパイプラインで行うプロセッサである。プロセッサ１のパイプライン１０は、外部あるいは内部のメモリ２に記録された、幾つかの命令からなるアプリケーションプログラム３から命令を、プログラムカウンタ１６の制御により順番にフェッチするフェッチステージ（ＩＦ）１１と、フェッチした命令の構成などから、そのフェッチした命令に対応するアーキテクチャタイプを判断するアーキテクチャ判別ステージ（ＴＲ）１２と、フェッチした命令をデコードするデコードステージ（ＤＥＣ）１３、フェッチした命令による演算を実行する実行ステージ（ＥＸ）１４、フェッチした命令によるレジスタ書き込みを行うＷＢステージ（ＷＢ）１５を備えている。図１には、パイプラインレジスタは示していないが、それぞれのステージ１１〜１５の構成にパイプラインレジスタとして機能するレジスタが含まれている。また、ＤＥＣステージ１３では、フェッチした命令１９がデコードされ、ＥＸステージ１４の制御情報３１およびＷＢステージ１５の制御情報３２が生成され、それぞれＥＸ制御部３３およびＷＢ制御部３４にセットされる。ＷＢ制御部３４に対しては、ＥＸステージ１４と同じサイクルのディレイを発生させるパイプラインディレイ用のレジスタ３５を介して制御情報３２が供給される。したがって、プロセッサ１においては、ＩＦステージ１１によりフェッチした命令１９の処理は、これらのステージ１１〜１５において、所定のサイクルにより順番に実行される。
【００１７】
ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５は、回路を動的に再構成できるハードウェアを用いて生成されている。動的に再構成可能なハードウェアの一例は、複数の回路要素の間の接続および／またはそれぞれの回路要素内の設定を、所定の範囲で任意に変更可能なものである。本願の出願人は、国際公開ＷＯ２００２−０９５９４６号公報において、再構成可能なハードウェアの一例を開示しており、基本的には１クロックサイクルで回路構成を変更することができる。本例のプロセッサ１は、その全体を、再構成可能なハードウェアに実装することにより実現することが可能である。また、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５を再構成可能なハードウェアに実装し、他の構成が固定されたステージをＡＳＩＣなどにより実装することも可能である。なお、本発明は、ＩＦステージ１１およびＴＲステージ１２は、構成が固定されたものに限定される必要はなく、ＤＥＣステージ１３のデコード結果により、あるいは外部からの制御により、ＩＦステージ１１またはＴＲステージ１２の構成を変更するものであっても良い。例えば、固定長の命令セットと、可変長の命令セットとが混在しているようなプログラムに対しては、ＩＦステージ１１の構成を変更することも有効である。
【００１８】
このプロセッサ１は、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５の構成を、ＴＲステージ１２により判断されたアーキテクチャタイプの情報（以降においてはアーキテクチャ情報）２９に基づき制御するためのコンフィグレーション制御ユニット２０を備えている。コンフィグレーション制御ユニット２０は、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５のそれぞれの構成を制御するステージ制御ユニット２１ａ〜２１ｃと、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５のそれぞれの構成情報を記録したステージ構成メモリ２２ａ〜２２ｃとを備えている。ステージ制御ユニット２１ａ〜２１ｃは、パイプラインレジスタを介して接続されており、それぞれのステージ制御ユニット２１ａおよび２１ｂは、ＤＥＣステージ１３およびＥＸステージ１４と同じサイクルを消費した後に、アーキテクチャ情報２９を転送する。したがって、コンフィグレーション制御ユニット２０においては、アーキテクチャ情報２９が、パイプライン１０のサイクルによりステージ制御ユニット２１ａ〜２１ｃの間で転送され、ステージ制御ユニット２１ａ〜２１ｃのそれぞれは、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５の構成を、それぞれのステージがフェッチした命令１９を処理するタイミングに合わせて、フェッチした命令１９のアーキテクチャ情報２９に基づき再構成する。
【００１９】
プログラム３に含まれる命令を、プログラム３の作成者の意図の通りに実行するためには、プログラム３の作成者が意図したように命令をデコードし、実行する必要がある。すなわち、プログラム３の命令は、その命令が実行されるべきアーキテクチャと同じあるいは共通するアーキテクチャのプロセッサにより実行されないと、プログラム３により与えられたアプリケーションは仕様通りには動かない。現在、プロセッサのアーキテクチャはＣＩＳＣおよびＲＩＳＣに大きく分けられており、ＲＩＳＣプロセッサと一口にいっても、ＡＲＭ、ＭＩＰＳ、ＳＰＡＲＣ、ＰｏｗｅｒＰＣ、Ａｌｐｈａなど、各メーカによってアーキテクチャが異なる。したがって、ＲＩＳＣ用の命令は、多くが共通の内容を示すが、各アーキテクチャによって処理内容が異なっていたり、命令自体が異なる場合がある。多くの場合、各アーキテクチャは、若干異なる命令セット、すなわち、命令フォーマットを採用しており、ＴＲステージ１２により、フェッチした命令を解析することによりアーキテクチャを判断できることが多い。したがって、本例のプロセッサ１においては、複数のアーキテクチャの命令がプログラム３に混在していても、各命令を、作成者が意図したアーキテクチャにより実行できる。
【００２０】
しかしながら、アーキテクチャにより、命令セットが共通する命令もあり、そのような場合は、プログラム３の側で、アーキテクチャが混在している場合は、命令毎にアーキテクチャ情報を指示することが望ましい。図２に示したプログラムコード３ａは、フェッチされる命令１９（Ｉｎ０〜Ｉｎ４）の単位で、アーキテクチャ情報（アーキテクチャコードＣ−０〜Ｃ−２）２９が指示されている。このようなプログラム３ａを対象とした、本発明のプロセッサにおいては、ＩＦステージ１１により、フェッチした命令１９に対応するアーキテクチャ情報２９を得ることができる。したがって、ＴＲステージ１２を省くことが可能であり、以降の説明においてはＴＲステージを省いていることがある。
【００２１】
図３に、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５の構成がパイプラインサイクル単位で変わり、フェッチした命令が実行される様子を模式的に示してある。このプロセッサ１のステージ１３〜１５の各々のステージは、それぞれの構成を、フェッチした命令１９を処理するタイミング、すなわち、パイプラインサイクルに合わせて、フェッチした命令１９に対応するアーキテクチャ情報２９に基づき変更する工程（構成変更工程）２５を含む制御方法により制御される。各ステージの処理の基本は、入力したデータに対して所望の処理を行って出力するというものであり、そのためのデータパス構造が変更の対象となる。データパスにＡＬＵなどの演算単位が含まれている場合は、その機能を変更したり、ルックアップテーブル（ＬＵＴ）により出力を求める場合は、その内容を変更したりすることも含まれる。
【００２２】
さらに、このプロセッサ１のステージ１３〜１５のステージ間は、アーキテクチャ情報２９をパイプライン１０のサイクルにより転送する工程２６を含む制御方法により制御される。したがって、パイプライン１０の流れをいったん止めたり、リスタート（リセット）させることなく、アーキテクチャの異なる命令を実行することができる。図３においては、一点鎖線のようにアーキテクチャ情報２９がステージ間を転送され、それと共に、フェッチした命令１９が転送される。したがって、個々のステージにおいては、再構成と命令実行とが繰り返され、パイプライン１０としては、アーキテクチャの異なる命令１９を、パイプライン１０によりパイプライン動作を破綻させずに処理することができる。図３は、フェッチした命令１９とアーキテクチャ情報２９を区別し易い状態で示しているが、それぞれのステージにアーキテクチャ情報２９が供給されるタイミングは、データがパイプライン１０によりそれぞれのステージでフェッチした命令１９により処理されるタイミングに合致していれば良い。したがって、各ステージのパイプラインレジスタがデータパスにより処理されたデータをラッチする前に、フェッチした命令１９が、アーキテクチャ情報２９により再構成された各々のステージで実行されるタイミングでアーキテクチャ情報２９は各々のステージに供給されれば良い。また、ＥＸステージ１４およびＷＢステージ１５などのＤＥＣステージ１３の下流に位置するステージでは、フェッチした命令１９は、それがデコードされた制御情報３１および３２として、それぞれのステージに供給されることは上述したとおりである。
【００２３】
図４に、パイプラインを破綻させずにアーキテクチャを変更できる様子を示してある。図４（ａ）に示すように、アーキテクチャＣ−１とアーキテクチャＣ−２の命令が含まれているプログラム３を実行する際に、本例のプロセッサ１であれば、パイプライン１０の各ステージ１１〜１５の進行に沿って構成を変更できるので、パイプライン１０を止めずに、異なるアーキテクチャの命令を実行できる。したがって、本発明のプロセッサ１によれば、アーキテクチャの異なる命令を、アーキテクチャが同じ命令と同じレベルで混在させてプログラムを作成することができ、種々のアーキテクチャのプロセッサの機能を入り混じって利用したアプリケーションを容易に開発することができる。
【００２４】
これに対し、アーキテクチャ情報２９により、構成を一括して変更するようなプロセッサを仮定すると、図４（ｂ）に示すように、アーキテクチャＣ−１の命令の処理が終了してからアーキテクチャＣ−２の構成に変更し、アーキテクチャＣ−２の命令を実行する必要がある。したがって、パイプライン１０の動作をいったん止めて、再構成できた段階でリスタートする必要がある。このため、アーキテクチャの異なる命令を実行する段階で、１パイプラインサイクル分のディレイが発生することになり、そのようなディレイを想定していないプログラム３を仕様通りに実行することができない。さらに、構成を１クロックで変更できる再構成可能なハードウェアであれば遅れは１パイプラインサイクルで済むが、ＦＰＧＡのように回路構成を変更するのにｍｓ単位の有意な時間を費やすハードウェアであると、アーキテクチャの異なる命令を１つのプログラムに混在させることは不可能になる。
【００２５】
図５に、ＥＸステージ１４の構成を変更する例を示してある。アーキテクチャＣ−２においては以下のような加算命令の設定があり、アーキテクチャＣ−１にはそのような加算命令がない場合を想定している。
【００２６】
命令：ＡＤＤ  Ｒｄ，Ｒｎ，Ｒｍ，ＬＳＬ  ＃５ｂｉｔ＿Ｉｍｍｅｄ
動作：Ｒｄ＝Ｒｎ＋（Ｒｍ＜＜＃５ｂｉｔ＿Ｉｍｍｅｄ）
アーキテクチャＣ−１においては以下の２つの命令により上記の命令と同じ処理を実行できる。したがって、コンパイラーによりアーキテクチャＣ−１の命令に完全に置き換えることも可能である。
ＬＳＬ  Ｒｍ，Ｒｍ，＃５ｂｉｔ＿Ｉｍｍｅｄ
ＡＤＤＵ  Ｒｄ，Ｒｎ，Ｒｍ
【００２７】
しかしながら、２命令を使用することにより、実行クロック数が増大するので処理時間が延びる。さらに、２命令に分割することにより、それらの命令の間に割り込みが入る可能性があり、オリジナルのプログラムの仕様に完全に沿ったものにはならない。一方、アーキテクチャＣ−１のＡＤＤ命令に関する構成をアーキテクチャＣ−２に置き換えてしまうと、アーキテクチャＣ−１の命令が実行できない。本例のプロセッサ１においては、アーキテクチャ情報２９によりＥＸステージ１４の構成を変更することによりこの問題を解決できる。すなわち、ＥＸステージ１４のステージ構成メモリ２２ｂに、図５（ａ）に示したアーキテクチャＣ−１の構成と、図５（ｂ）に示したアーキテクチャＣ−２の構成とを用意しておき、アーキテクチャＣ−２のＡＤＤ命令をＥＸステージ１４において実行するタイミングでＥＸステージ１４のデータパス構成をアーキテクチャＣ−２に再構成すれば良い。
【００２８】
図６に、ＥＸステージ１４の構成を変更する異なる例を示してある。この例では、ＥＸステージ１４にアーキテクチャＣ−１のデータパスとアーキテクチャＣ−２のデータパスとが予め用意され、さらに、それらのデータパスを切り換えるセレクタ１４ｓが用意されている。したがって、ステージ制御ユニット２１ｂがアーキテクチャ情報２９に基づきセレクタ１４ｓを切り換えることにより、アーキテクチャＣ−２のＡＤＤ命令を、そのＡＤＤ命令により予定されている通りに実行できる。この例においては、ステージ１４としての機能を得るために、動的に回路を再構成できるハードウェアは必要ない。しかしながら、２つのアーキテクチャの回路を構成できる量のハードウェアに加えて、それらを切り換えるためのセレクタなどのハードウェアが必要になる。したがって、ハードウェアの量が増大し、データパス中にセレクタが介在するので、ステージにおける実行サイクルが本来のアーキテクチャよりも増大する可能性がある。プロセッサ１において実行可能なアーキテクチャの種類を増やそうとすると、この問題はさらに増大する。この問題は、回路を動的に再構成可能なハードウェアを採用することにより防ぐことができる。
【００２９】
図７には、ＷＢステージ１５の構成を変更する例を示してある。図７はセレクタで切り換える例を示しているが、上記と同様に再構成可能なハードウェアによりＷＢステージ１５の構成を変更できる。この例では、アーキテクチャＣ−２においては、ａｌｕ＿ｏｐｒに加え、ａｌｕ＿ｏｐｒＳという命令があり、ａｌｕ＿ｏｐｒではフラグを更新しないのに対し、ａｌｕ＿ｏｐｒＳではフラグを更新する。一方、アーキテクチャＣ−１においては、ａｌｕ＿ｏｐｒという命令があり、ａｌｕ＿ｏｐｒＳはないが、ａｌｕ＿ｏｐｒを実行することによりフラグを更新する。したがって、ステージ制御ユニット２１ｃは、このステージで実行するフェッチした命令１９がアーキテクチャ情報２９によりアーキテクチャＣ−１の場合は、ａｌｕ＿ｏｐｒによりフラグが更新されるようにセレクタ１５ｓをセットする。一方、ステージ制御ユニット２１ｃは、このステージで実行するフェッチした命令１９がアーキテクチャ情報２９によりアーキテクチャＣ−２の場合は、ａｌｕ＿ｏｐｒＳによりフラグが更新されるようにセレクタ１５ｓをセットする。
【００３０】
図８に、ＤＥＣステージ１３の構成を変更する例を示してある。この例も、セレクタで切り換える構成で示しているが、再構成可能なハードウェアによりデータパス構成を再構成できることは上述した通りである。アーキテクチャにより命令セットのフォーマットが異なることがあることは上述した通りである。図８（ａ）に示すように、キャリービットの位置がアーキテクチャにより異なる場合、図８（ｂ）に示すように、アーキテクチャ情報２９によりステージ制御ユニット２１ａがセレクタ１３ｓを制御してＤＥＣステージ１３のフラグリードの構成を変更することができる。図８（ｃ）は、フラグビットの意味をアーキテクチャ毎に変えることができるＤＥＣステージ１３の例である。アーキテクチャＣ−１ではキャリーを示すビットと、アーキテクチャＣ−２では異なる意味のあるビットとしてフェッチした命令１９をデコードし、ＥＸステージ１４および／またはＷＢステージ１５を制御することができる。
【００３１】
なお、本例のプロセッサ１は、ＩＦステージ１１、ＤＥＣステージ１３、ＥＸステージ１４およびＷＢステージ１５によりパイプライン１０を構成しているが、ＥＸステージあるいはＷＢステージが複数のステージに分割されていたり、メモリリード用のステージが独立しているなどの、異なる構成のパイプラインを備えたプロセッサについても本発明を適用することができる。また、プロセッサが有するパイプラインの数は１つに限定されるものではない。さらに、本発明が適用されるプロセッサあるいはデータ処理システムは、汎用のプロセッサとしてチップ化された製品に限らず、プロセッサがエンベッドされたＳｏＣあるいはシステムＬＳＩと称される製品群も含まれる。
【図面の簡単な説明】
【００３２】
【図１】本発明のプロセッサの一例の概略構成を示すブロック図である。
【図２】アーキテクチャ情報を与えることができる異なるプログラムの一例を示す図である。
【図３】パイプラインのステージの構成が変わる様子を模式的に示す図である。
【図４】パイプラインのステージの構成を変えて命令を実行する様子を示す図であり、図４（ａ）は、本発明によりパイプラインの構成を変更したときの様子を示し、図４（ｂ）はパイプラインの構成を一括して変えたときの様子を示してある。
【図５】ＥＸステージの構成を再構成可能なハードウェアを用いて変更する例を示す図である。
【図６】ＥＸステージの構成を、セレクタにより変更する例を示す図である。
【図７】ＷＢステージの構成を、セレクタにより変更する例を示す図である。
【図８】ＤＥＣステージの構成を、セレクタにより変更する例を示す図である。
【符号の説明】
【００３３】
１    プロセッサ、  ２    メモリ、  ３    プログラム
１０    パイプライン、  １１    ＩＦステージ、  １２    ＴＲステージ
１３    ＤＥＣステージ、  １４    ＥＸステージ、  １５    ＷＢステージ
１９    フェッチした命令
２０    コンフィグレーション制御ユニット
２１ａ〜２１ｃ    ステージ制御ユニット
２２ａ〜２２ｃ    ステージ構成メモリ
２９    アーキテクチャ情報
【図１】
2006178653.tif 000003
【図２】
2006178653.tif 000004
【図３】
2006178653.tif 000005
【図４】
2006178653.tif 000006
【図５】
2006178653.tif 000007
【図６】
2006178653.tif 000008
【図７】
2006178653.tif 000009
【図８】
2006178653.tif 000010