(57)【要約】  命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、動的構成演算器と、クロック生成回路とを備え、一連の各工程は、動的構成演算器を用いて命令を実行する命令実行工程を除き、メインクロックに基づいて開始タイミングが規定され、動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を動的構成演算器により動的に構成する演算器生成サブ工程と、演算器生成サブ工程で構成した演算器により命令に対応した演算を行う演算サブ工程とを含み、演算器生成サブ工程及び演算サブ工程は、サブクロックに基づいて開始タイミングが規定され、サブクロックは、演算器生成サブ工程及び命令実行サブ工程が、命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成される。
2011125174.tif 000002
【特許請求の範囲】
【請求項１】
命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
命令に対応する演算器を動的に構成する動的構成演算器と、
メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成されることを特徴とする、動的再構成プロセッサ。
【請求項２】
前記命令実行工程の直後の工程の開始タイミングは、前記命令実行工程の直前の工程の開始タイミングに対して前記メインクロックの２クロック後に規定される、請求項１に記載の動的再構成プロセッサ。
【請求項３】
前記サブクロックは、前記メインクロックを逓倍したクロック、前記メインクロックの位相をずらしたクロック、又は、前記メインクロックの位相をずらし且つ逓倍したクロックである、請求項１に記載の動的再構成プロセッサ。
【請求項４】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える、請求項１に記載の動的再構成プロセッサ。
【請求項５】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなり、
前記最小セット演算器を用いてシングルスレッドで動作する、請求項１に記載の動的再構成プロセッサ。
【請求項６】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器を複数個備え、
各最小セット演算器を利用して並列処理又はパイプライン処理を行う、請求項１に記載の動的再構成プロセッサ。
【請求項７】
再構成不能な演算器を更に備え、
命令に応じて、前記動的構成演算器と前記再構成不能な演算器とを使い分け、
前記再構成不能な演算器を用いて命令を実行する命令実行工程は、前記メインクロックに基づいて開始タイミングが規定される、請求項１に記載の動的再構成プロセッサ。
【請求項８】
比較的高い頻度で発生する所定の命令に対しては、前記再構成不能な演算器を用い、比較的低い頻度で発生する命令に対しては、前記動的構成演算器を用いる、請求項７に記載の動的再構成プロセッサ。
【請求項９】
同一命令が、該命令に対応する前記再構成不能な演算器の数よりも多い命令数で同時に発行された場合に、前記再構成不能な演算器の数の命令に対しては、前記再構成不能な演算器を用い、前記再構成不能な演算器の数よりも多い分の命令に対しては、前記動的構成演算器を用いる、請求項７に記載の動的再構成プロセッサ。
【請求項１０】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなり、
前記最小セット演算器のゲート又は素子に故障が発生した場合に使用される故障補修用ゲート又は故障補修用素子を更に備える、請求項１に記載の動的再構成プロセッサ。
【請求項１１】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲートを、ＮＡＮＤ，ＮＯＲ，ＮＯＴのゲート単位で備える最小セット演算器からなり、
前記記演算器生成サブ工程は、前記ＮＡＮＤ，ＮＯＲ，ＮＯＴのゲート単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項１に記載の動的再構成プロセッサ。
【請求項１２】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限の素子を、ＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴレベルの素子単位で備える最小セット演算器からなり、
前記記演算器生成サブ工程は、前記ＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴレベルの素子単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項１に記載の動的再構成プロセッサ。
【請求項１３】
命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
前記エクゼキュート工程は、前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
当該方法は、
前記メインクロックで規定される第１のタイミングで前記フェッチ工程を実行し、
前記メインクロックで規定される第２のタイミングで前記デコード工程を実行し、
前記メインクロックで規定される第３のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第１のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第２のタイミングで、前記演算サブ工程を実行し、
前記メインクロックで規定される第４のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサ及びその動作方法に関する。
【背景技術】
【０００２】
従来から、演算器構成情報を格納する書き換え可能なメモリ（ＲＡＭ）と、メモリ内の演算器構成情報に基づいて所定の専用演算器を構成する専用演算ユニットとを備える演算処理装置が知られている（例えば、特許文献１参照）。この専用演算器はＦＰＧＡ（Field Programmable Gate Array）により構成されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１７５６３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＲＩＳＣ（Reduced Instruction Set Computer）プロセッサ等では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）というサイクルで処理が行われており、エクゼキュートは、ＣＰＵのハードウェアとして命令毎に予め用意された演算器を用いて実行される。また、高速化のためにパイプライン処理などが実行されている。【０００５】
しかしながら、命令毎に演算器をハードウェアで用意する構成では、ハードウェアの面積が増加するという問題がある。例えば、代表的な命令として、ロード／ストア、整数算術演算／論理演算命令、分岐命令、ビット操作命令等がある。これらの命令のそれぞれには、数種類から数十種類の命令があり、更に、オペランド数に応じた命令や、ワード長に応じた命令を用意している場合もあり、３２ビットマイコンでは数百にも及ぶ場合がある。【０００６】
これら１つ１つの命令に対して、ＣＰＵ内部に演算器（ハードウェア）を予め用意しなければならないが、実際には、同時刻に１つの演算器しか動作しておらず、他の演算器は全て停止している。【０００７】
この点、特許文献１に記載の構成では、ＦＰＧＡにより専用演算器を構成することができるので、基本演算ユニット内に用意すべき基本演算器の数を減らすことができ、演算の高速化及び装置の小型化を図ることができる。【０００８】
しかしながら、命令に応じて動的にＦＰＧＡにより演算器を構成する構成において、命令を遅れ無しで実行するためには、命令に応じて動的にＦＰＧＡにより演算器を構成する処理と、該構成した演算器により演算を行う処理とを、データキャッシュのクロックタイミングよりも前に完了させる必要がある。【０００９】
そこで、本発明は、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法の提供を目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の一局面によれば、命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
命令に対応する演算器を動的に構成する動的構成演算器と、
メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成されることを特徴とする、動的再構成プロセッサが提供される。【００１１】
本発明のその他の一局面によれば、命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
前記エクゼキュート工程は、前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
当該方法は、
前記メインクロックで規定される第１のタイミングで前記フェッチ工程を実行し、
前記メインクロックで規定される第２のタイミングで前記デコード工程を実行し、
前記メインクロックで規定される第３のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第１のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第２のタイミングで、前記演算サブ工程を実行し、
前記メインクロックで規定される第４のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法が提供される。
【発明の効果】
【００１２】
本発明によれば、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法が得られる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例１による動的再構成プロセッサ１の構成を概略的に示す図である。
【図２】最小セット演算器１１の設定方法の一例を示す表図である。
【図３】最小セット演算器１１の設定方法のその他の一例を示す表図である。
【図４】最小セット演算器１１の設定方法の更なるその他の一例を示す表図である。
【図５】本実施例による単一の最小セット演算器１１によりシングルスレッド（パイプラインなし）を実現した場合の時系列の一例を示す図である。
【図６】図５に対応した最小セット演算器１１の遷移態様を示す図である。
【図７】本実施例による２つの最小セット演算器１１Ａ，１１Ｂによりマルチスレッド（２段のパイプライン）を実現した場合の時系列の一例を示す図である。
【図８】図７に対応した最小セット演算器１１Ａ，１１Ｂで構成される演算器の遷移態様を示す図である。
【図９】本実施例による２つの最小セット演算器１１Ａ，１１Ｂによりマルチスレッド（５段のパイプライン）を実現した場合の時系列の一例を示す図である。
【図１０】本実施例による２つの最小セット演算器１１Ａ，１１Ｂによりスーパースカラーアーキテクチャを実現した場合の時系列の一例を示す図である。
【図１１】図１０に対応した最小セット演算器１１Ａ，１１Ｂで構成される演算器の遷移態様を示す図である。
【図１２】本発明の実施例２による動的再構成プロセッサ２の構成を概略的に示す図である。
【図１３】本発明のその他の一実施例（実施例３）による動的再構成プロセッサ３の構成を概略的に示す図である。
【図１４】ＣＰＵ２２によりシングルスレッド（パイプラインなし）を実現した場合の時系列の一例を示す図である。
【図１５】ＣＰＵ２２によりマルチスレッド（２段のパイプライン）を実現した場合の時系列の一例を示す図である。
【図１６】ＣＰＵ２２によりスーパースカラーアーキテクチャを実現した場合の時系列の一例を示す図である。
【図１７】パイプラインがストールするような状況を示す図である。
【図１８】パイプラインのストールを防止できる態様での最小セット演算器１１の適用例を示す図である。
【図１９】クロック生成回路１２の構成の一例を（第１の遅れ防止方法）示す図である。
【図２０】図１９に示すクロック生成回路１２により実現される遅れ防止機能の原理を示す図である。
【図２１】クロックＣＬＫ１のみを用いる場合に生じる遅れを示す図である。
【図２２】クロック生成回路１２の構成のその他の一例（第２の遅れ防止方法）を示す図である。
【図２３】図２２に示すクロック生成回路１２により実現される遅れ防止機能の原理を示す図である。
【図２４】第２の遅れ防止方法単独では遅れを完全に防止できない状況を示す図である。
【図２５】第１の遅れ防止方法及び第２の遅れ防止方法の組み合わせにより実現される遅れ防止機能の原理を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００１５】
図１は、本発明の一実施例（実施例１）による動的再構成プロセッサ１の構成を概略的に示す図である。
【００１６】
動的再構成プロセッサ１は、ＣＰＵ１０と、クロック生成回路１２とを含む。クロック生成回路１２は、ＣＰＵ１０の動作に必要な２つのクロックＣＬＫ１，ＣＬＫ２を発生する。クロックＣＬＫ１は、メインクロックである。クロックＣＬＫ２は、後述の遅れ防止のために生成される特別なクロックである。クロック生成回路１２の構成及びクロックＣＬＫ２の機能については、後に詳説する。尚、以下の説明において、図１８までの説明までは、クロックという用語は、メインクロックを指す。図１９以降の説明において、２つのクロックＣＬＫ１，ＣＬＫ２を区別して説明する。
【００１７】
ＣＰＵ１０は、命令実行部（主に演算回路）を構成する最小セット演算器１１を含む。ＣＰＵ１０は、演算回路以外については、命令デコーダ制御回路、命令キャッシュ、レジスタファイル、データキャッシュ等（図示せず）の一般的な構成を含んでよい。ＣＰＵ１０には、メモリ（ＲＯＭ，ＲＡＭ等）が接続される。
【００１８】
最小セット演算器１１は、全命令セットに対応する演算器を生成可能な最小限のゲート（又は素子）を備える。全命令セットとは、動的再構成プロセッサ１に組み込まれるソフトウェアに含まれる全命令セットであってよいし、汎用性を持たせるために、動的再構成プロセッサ１に組み込まれるソフトウェアに含まれる命令以外の命令を含む全命令セットであってもよい。生成可能とは、実際に生成されるか否かを問わない趣旨であり、理論的に生成できる状態をいう。
【００１９】
図２は、最小セット演算器１１の設定方法の一例を示す表図である。図２に示す例では、最小セット演算器１１は、全命令セットに対応する演算器を生成可能な最小限のゲートを備えるＦＰＧＡ（Field Programmable Gate Array）からなる。即ち、最小セット演算器１１は、いわゆるＦＰＧＡ合成用のゲートレベルのゲート単位で最小限のゲートを備えるように構成される。ＦＰＧＡ合成用のゲートは、ＮＡＮＤ，ＮＯＲ，ＮＯＴのようなＡＳＩＣ（application specific integrated circuit）論理合成用のゲートに加えて、ＡＮＤ，ＯＲなどの複雑なゲート（ＡＳＩＣ論理合成用のゲートを組み合わせて構成されるゲート）を含む。例えば、ＡＮＤは、ＮＡＮＤとＮＯＴを組み合わせて構成されるゲートであり、ＯＲは、ＮＯＲとＮＯＴを組み合わせて構成されるゲートである。
【００２０】
図２には、全命令セットに含まれる各命令に対応する各演算器が示されている。例えば、演算器１Ｃは、１６ビットの桁上げの無い加算命令を実行するための演算器であり、例えば２入力のＡＮＤゲートが３０個、ＯＲゲートが２０個、ＮＯＴゲートが４０個、ＭＵＸゲートが４個、ＤＦＦ（Ｄフリップフロップ）が１７個、等から構成されることを意味する。演算器Ｃ２，...，Ｃｎ（ｎは全命令セットのそれぞれの命令に対応した演算器の数）は、同様に、全命令セット（上記の演算器１Ｃに係る加算命令を除く全命令）のそれぞれの命令に対応した他の演算器を表す。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
【００２１】
図２に示す例では、最小セット演算器１１を構成するに当たり、２入力のＡＮＤゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、３０，２０，...，２５）の最大数（本例では、３０）の２入力のＡＮＤゲートが用意され、同様に、３入力のＡＮＤゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、０，２０，...，１５）の最大数（本例では、２０）の３入力のＡＮＤゲートが用意され、同様に、ＯＲゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、２０，３０，...，１５）の最大数（本例では、３０）のＯＲゲートが用意され、同様に、ＮＯＴゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、４０，３０，...，２０）の最大数（本例では、４０）のＮＯＴゲートが用意され、同様に、ＸＯＲゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、０，４，...，０）の最大数（本例では、４）のＸＯＲゲートが用意され、同様に、ＭＵＸゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、４，８，...，５）の最大数（本例では、８）のＭＵＸゲートが用意され、同様に、ＤＦＦゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、１７，８，...，１６）の最大数（本例では、１７）のＤＦＦゲートが用意され、といった具合に、各ゲートについて、全演算器Ｃ１，...，Ｃｎの任意の１つを生成できるようにするのに必要な最小限のゲート数が用意される。
【００２２】
図３は、最小セット演算器１１の設定方法のその他の一例を示す表図である。図３に示す例では、最小セット演算器１１は、ＦＰＧＡ合成用のゲートレベルのゲート単位よりも小さい単位で最小限のゲートを備えるように構成される。具体的には、最小セット演算器１１は、いわゆるＡＳＩＣ論理合成用のゲートレベルのゲート単位で最小限のゲートを備えるように構成される。即ち、最小セット演算器１１は、ＮＡＮＤ，ＮＯＲ及びＮＯＴのゲート単位で最小限のゲートを備えるように構成される。
【００２３】
図３には、図２と同様に、全命令セットに含まれる各命令に対応する各演算器が示されている。図３の表図の見方は、図２と同様である。全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれに対して、ＮＡＮＤ，ＮＯＲ及びＮＯＴのそれぞれのゲートの必要数が示されている。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
【００２４】
図３に示す例では、図２に示す例と同様に、最小セット演算器１１を構成するに当たり、２入力のＮＡＮＤゲートについては、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのそれぞれを構成するのに必要な数（本例では、３０，２０，...，２５）の最大数（本例では、３０）の２入力のＮＡＮＤゲートが用意され、といった具合に、ＮＡＮＤ，ＮＯＲ及びＮＯＴのそれぞれのゲートについて、全演算器Ｃ１，...，Ｃｎの任意の１つを生成できるようにするのに必要な最小限のゲート数が用意される。
【００２５】
図４は、最小セット演算器１１の設定方法の更なるその他の一例を示す表図である。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
【００２６】
図４に示す例では、最小セット演算器１１は、ＡＳＩＣ論理合成用のゲートレベルのゲート単位よりも更に小さい素子単位で最小限の素子を備えるように構成される。具体的には、最小セット演算器１１は、ＰｃｈＭＯＳＦＥＴ（Metal-Oxide-Semiconductor Field-Effect Transistor）及びＮｃｈＭＯＳＦＥＴレベルの素子単位で最小限の素子を備えるように構成される。即ち、最小セット演算器１１は、全演算器Ｃ１，...，Ｃｎの任意の１つを生成できるようにするのに必要な最小限のＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴを備えるように構成される。
【００２７】
ここで、図２に示す例に比べて図３に示す例の方が粒度が小さく、図３に示す例に比べて図４に示す例の方が粒度が小さい。粒度が小さくなるほど、無駄が少なくなる。但し、その反面として、粒度が小さくなるほど、最小セット演算器１１を用いて後述の演算器を構成するのに要する時間が長くなる。
【００２８】
このように構成された最小セット演算器１１は、全命令セットに対応する全演算器Ｃ１，...，Ｃｎのうちの任意の１つの演算器を構成することができる。即ち、最小セット演算器１１は、対応する結線情報に基づいて、ゲート（又は素子）の結線を行うことで、全演算器Ｃ１，...，Ｃｎのうちの任意の１つの演算器を構成することができる。結線情報は、全演算器Ｃ１，...，Ｃｎのそれぞれに対応して予め用意され（即ち全命令セットのそれぞれに対応して予め用意され）、メモリに記憶されていてよい。尚、結線情報は、最小セット演算器１１の最小単位に応じて規定される。例えば、最小セット演算器１１が図２に示した例のようにＦＰＧＡ合成用のゲート単位を最小単位として構築されている場合は、ＦＰＧＡ合成用のゲート単位で結線情報（即ち、各ＡＮＤ、各ＯＲ等のゲート間の結線態様を表す情報）が生成・記憶される。また、最小セット演算器１１が図３に示した例のようにＡＳＩＣ論理合成用のゲート単位を最小単位として構築されている場合は、ＡＳＩＣ論理合成用のゲート単位で結線情報（即ち、各ＮＡＮＤ，各ＮＯＲ及び各ＮＯＴのゲート間の結線態様を表す情報）が生成・記憶される。また、最小セット演算器１１が図４に示した例のようにＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴの素子単位を最小単位として構築されている場合は、ＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴの素子単位で結線情報（即ち、各ＰｃｈＭＯＳＦＥＴのソース・ドレイン及び各ＮｃｈＭＯＳＦＥＴのソース・ドレイン間の結線態様を表す情報）が生成・記憶される。
【００２９】
図５は、本実施例による単一の最小セット演算器１１によりシングルスレッド（パイプラインなし）を実現した場合の時系列の一例を示す図である。図６は、図５に対応した最小セット演算器１１で構成される演算器の遷移態様を示す図である。図５において、ｔ＝４、ｔ＝９は、命令１のＩＦのクロックを１番目として何番目のクロックかを表し、それぞれの命令１，２に係るデータキャッシュ（ＤＣ）のクロックの発生時点を表す。
【００３０】
図５に示すように、本例では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）というサイクルで処理が実行される。
【００３１】
フェッチ（ＩＦ）では、命令キャッシュから命令を取り出す。デコード（ＩＤ）では、取り出した命令をデコードすると共にレジスタオペランドをフェッチする。エクゼキュート（ＥＸ）では、デコード結果とフェッチしたレジスタの値を元に命令（演算等）を実行する。また、ロード／ストア命令の場合は実行アドレスの計算を行い、分岐命令の場合は分岐先のアドレスの計算を行う。但し、エクゼキュート工程は、これらの演算処理に加えて、後述のように最小セット演算器１１による演算器生成処理を含む。データキャッシュ（ＤＣ）では、エクゼキュート工程で計算したアドレスに対応するメモリの値をデータキャッシュからリードする。ライトバック（ＷＢ）では、エクゼキュート工程で計算した結果又はデータキャッシュ工程でフェッチしたオペランドをレジスタに格納する。また、ストア命令の場合はデータキャッシュにライトする。
【００３２】
ここでは、一例として、命令１がＡＤＤ（加算）命令であり、命令２がＭＵＬ（乗算）命令であるとする。本実施例では、命令１がフェッチされ、命令１がデコードされると（命令１が理解されると）、命令１（加算）に応じた演算器（加算器）が最小セット演算器１１により構成される（図６の命令１の後の加算器参照）。そして、最小セット演算器１１により構成された加算器により演算が実行される（即ち、命令１が実行される）。この最小セット演算器１１による加算器の結線及び構成された加算器による演算は、命令１に係るＤＣのクロックの発生時（ｔ４）までに完了するように構成される（この構成の詳細は、後述する）。命令１が実行されると、演算結果がレジスタに格納され、命令１に対する処理が終了する。
【００３３】
命令１に対する処理が終了すると、命令２がフェッチされ、命令２がデコードされると（命令２が理解されると）、命令２（乗算）に応じた演算器（乗算器）が最小セット演算器１１により構成される（図６の命令２の後の乗算器参照）。そして、最小セット演算器１１により構成された乗算器により演算が実行される（即ち、命令２が実行される）。この最小セット演算器１１による乗算器の結線及び構成された乗算器による演算は、命令２に係るＤＣのクロックの発生時（ｔ９）までに完了するように構成される（この構成の詳細は、後述する）。命令２が実行されると、演算結果がレジスタに格納され、命令２に対する処理が終了する。尚、最小セット演算器１１の結線は、各命令に対する処理が終了する毎に一旦クリア（リセット）されてもよいし、若しくは、上書き形式で命令毎に変更されてもよい。このようにして、本実施例による単一の最小セット演算器１１によるシングルスレッド処理が実行されていく。
【００３４】
図７は、本実施例による２つの最小セット演算器１１（ここでは、区別のため、それぞれ参照符号１１Ａ，１１Ｂを付す）によりマルチスレッド（２段のパイプライン）を実現した場合の時系列の一例を示す図である。図８は、図７に対応した最小セット演算器１１Ａ，１１Ｂで構成される演算器の遷移態様を示す図である。図７において、ｔ＝３、ｔ＝４、ｔ＝５は、命令１のＩＦのクロックを１番目として何番目のクロックかを表し、命令１に係るエクゼキュート（ＥＸ）のクロックの発生時点、及び、それぞれの命令１，２に係るデータキャッシュ（ＤＣ）のクロックの発生時点を表す。
【００３５】
同様に、本例では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）というサイクルで処理が実行される。
【００３６】
ここでは、一例として、命令１がＡＤＤ（加算）命令であり、命令２がＭＵＬ（乗算）命令であるとする。
【００３７】
命令１に関しては、命令１がフェッチされ、命令１がデコードされると（命令１が理解されると）、命令１（加算）に応じた演算器（加算器）が最小セット演算器１１Ａにより構成される（図８の命令１の後の加算器参照）。そして、最小セット演算器１１Ａにより構成された加算器により演算が実行される（即ち、命令１が実行される）。この最小セット演算器１１Ａによる加算器の結線及び構成された加算器による演算は、命令１に係るＤＣのクロックの発生時（ｔ４）までに完了するように構成される（この構成の詳細は、後述する）。命令１が実行されると、演算結果がレジスタに格納され、命令１に対する処理が終了する。
【００３８】
命令２に関しては、命令２がフェッチされ、命令２がデコードされると（命令２が理解されると）、命令２（乗算）に応じた演算器（乗算器）が最小セット演算器１１Ｂにより構成される（図８の命令２の後の乗算器参照）。そして、最小セット演算器１１Ｂにより構成された乗算器により演算が実行される（即ち、命令２が実行される）。この最小セット演算器１１Ｂによる乗算器の結線及び構成された乗算器による演算は、命令２に係るＤＣのクロックの発生時（ｔ５）までに完了するように構成される（この構成の詳細は、後述する）。命令２が実行されると、演算結果がレジスタに格納され、命令２に対する処理が終了する。このようにして、本実施例による最小セット演算器１１Ａ，１１Ｂによるマルチスレッド（２段のパイプライン）処理が実行されていく。
【００３９】
尚、マルチスレッドのパイプラインの段数（本数）は、上述の２段に限られず、３段以上の任意の段数であってよい。最小セット演算器１１は、パイプラインの段数に応じた個数設けられてもよいが、図９を参照して後述するように最小セット演算器１１は、必要最小限の個数が望ましい。
【００４０】
図９は、本実施例による２つの最小セット演算器１１（ここでは、区別のため、それぞれ参照符号１１Ａ，１１Ｂを付す）によりマルチスレッド（５段のパイプライン）を実現した場合の時系列の一例を示す図である。図９において、ｔ＝１〜９は、命令１のＩＦのクロックを１番目として何番目のクロックかを表す。
【００４１】
ここでは、一例として、命令１がＡＤＤ（加算）命令であり、命令２がＭＵＬ（乗算）命令であり、命令３がＳＵＢ（減算）命令であり、命令４がＡＤＤ（加算）命令であり、命令５がＭＵＬ（乗算）命令であるとする。
【００４２】
命令１に関しては、ｔ＝１で命令１がフェッチされ、命令１がデコードされると（命令１が理解されると）、命令１（加算）に応じた演算器（加算器）が最小セット演算器１１Ａにより構成される。そして、最小セット演算器１１Ａにより構成された加算器により演算が実行される（即ち、命令１が実行される）。この最小セット演算器１１Ａによる加算器の結線及び構成された加算器による演算は、命令１に係るＤＣのクロックの発生時（ｔ４）までに完了するように構成される（この構成の詳細は、後述する）。命令１が実行されると、演算結果がレジスタに格納され、命令１に対する処理が終了する。
【００４３】
命令２に関しては、ｔ＝２で命令２がフェッチされ、命令２がデコードされると（命令２が理解されると）、命令２（乗算）に応じた演算器（乗算器）が最小セット演算器１１Ｂにより構成される。そして、最小セット演算器１１Ｂにより構成された乗算器により演算が実行される（即ち、命令２が実行される）。この最小セット演算器１１Ｂによる乗算器の結線及び構成された乗算器による演算は、命令２に係るＤＣのクロックの発生時（ｔ５）までに完了するように構成される（この構成の詳細は、後述する）。命令２が実行されると、演算結果がレジスタに格納され、命令２に対する処理が終了する。
【００４４】
命令３に関しては、ｔ＝３で命令３がフェッチされ、命令３がデコードされると（命令３が理解されると）、命令３（減算）に応じた演算器（減算器）が最小セット演算器１１Ａにより構成される。そして、最小セット演算器１１Ａにより構成された減算器により演算が実行される（即ち、命令３が実行される）。この最小セット演算器１１Ａによる減算器の結線及び構成された減算器による演算は、命令３に係るＤＣのクロックの発生時（ｔ６）までに完了するように構成される（この構成の詳細は、後述する）。命令３が実行されると、演算結果がレジスタに格納され、命令３に対する処理が終了する。ここで、命令３に関しては、命令１に関して使用された最小セット演算器１１Ａが減算器を構成するのに使用されている。これは、命令３のデコード（ＩＤ）の処理が完了するまでには、命令１のエクゼキュート（ＥＸ）は完了しており、命令１に関して使用された最小セット演算器１１Ａが解放された状態（利用可能な状態）となっているためである。
【００４５】
命令４に関しては、ｔ＝４で命令４がフェッチされ、命令４がデコードされると（命令４が理解されると）、命令４（加算）に応じた演算器（加算器）が最小セット演算器１１Ｂにより構成される。そして、最小セット演算器１１Ｂにより構成された加算器により演算が実行される（即ち、命令４が実行される）。この最小セット演算器１１Ｂによる加算器の結線及び構成された加算器による演算は、命令４に係るＤＣのクロックの発生時（ｔ７）までに完了するように構成される（この構成の詳細は、後述する）。命令４が実行されると、演算結果がレジスタに格納され、命令４に対する処理が終了する。同様に、この命令４に関しては、命令２に関して使用された最小セット演算器１１Ｂが加算器を構成するのに使用されている。これは、命令４のデコード（ＩＤ）の処理が完了するまでには、命令２のエクゼキュート（ＥＸ）は完了しており、命令２に関して使用された最小セット演算器１１Ｂが解放された状態（利用可能な状態）となっているためである。
【００４６】
同様にして命令５に関しては、命令１及び命令３に関して使用された最小セット演算器１１Ａを利用して演算器を構成し、演算が実行される。
【００４７】
尚、図９に示す例では、５段のパイプラインのマルチスレッドに対して、２つの最小セット演算器１１Ａ、１１Ｂを命令の順に交互に使用することで、演算器不足によるパイプラインのストールの発生を防止しつつ、ハードウェアリソースの低減を図っている。しかしながら、５段のパイプラインのマルチスレッドに対して、３つの最小セット演算器１１又は４つの最小セット演算器１１を順に周期的に使用することも可能である。このような考え方は、パイプラインの段数に応じて適宜適用可能である。
【００４８】
図１０は、本実施例による２つの最小セット演算器１１（ここでは、区別のため、それぞれ参照符号１１Ａ，１１Ｂを付す）によりスーパースカラー(superscalar)（並列実行）を実現した場合の時系列の一例を示す図である。図１１は、図１０に対応した最小セット演算器１１Ａ，１１Ｂで構成される演算器の遷移態様を示す図である。
【００４９】
同様に、本例では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）というサイクルで処理が実行される。ここでは、一例として、命令１がＡＤＤ（加算）命令であり、命令２がＡＤＤ（加算）命令であるとする。
【００５０】
図１０に示す例では、命令１がフェッチされ、命令１がデコードされると（命令１が理解されると）、命令１（加算）に応じた演算器（加算器）が最小セット演算器１１Ａにより構成される（図１１の命令１の後の加算器参照）。命令１と同時に、命令２がフェッチされ、命令２がデコードされると（命令２が理解されると）、命令２（加算）に応じた演算器（加算器）が最小セット演算器１１Ｂにより構成される（図１０の命令２の後の加算器参照）。そして、最小セット演算器１１Ａ、１１Ｂにより構成された加算器のそれぞれにより演算が実行される（即ち、命令１及び命令２が同時に実行される）。この最小セット演算器１１Ａ、１１Ｂによる加算器の結線及び構成された加算器による演算は、命令１及び命令２に係るＤＣのクロックの発生時（ｔ４）までに完了するように構成される（この構成の詳細は、後述する）。命令１及び命令２が実行されると、各演算結果がレジスタに格納され、命令１及び命令２に対する処理が終了する。このようにして、本実施例による最小セット演算器１１Ａ，１１Ｂによるスーパースカラー処理が実行されていく。
【００５１】
尚、並列処理の数（並列数）は、上述の２の並列数に限られず、３以上の任意の並列数であってよい。いずれの場合も、最小セット演算器１１は、並列数に応じた個数設けられる。これにより、演算器不足によるパイプラインのストールの発生を防止することができる。
【００５２】
図１２は、本発明のその他の一実施例（実施例２）による動的再構成プロセッサ２の構成を概略的に示す図である。
【００５３】
本実施例の動的再構成プロセッサ２は、ＣＰＵ１０及びクロック生成回路１２に加えて、故障修復用のゲート２０を備える。ＣＰＵ１０、特に最小セット演算器１１の構成や動作例については、上述の実施例１と同様であってよい。
【００５４】
故障修復用のゲート２０は、最小セット演算器１１の一部のゲートに故障が発生した場合に、故障したゲートに代えて使用される。即ち、最小セット演算器１１の一部のゲートに故障が発生した場合に、故障したゲートを停止し、故障修復用のゲート２０に接続（結線）を変更することで、動作を継続することができる。尚、ゲートの故障検出方法及びゲートの停止方法は、一般的に故障修復技術で使用される方法が利用されてもよい。
【００５５】
この目的のため、故障修復用のゲート２０は、最小セット演算器１１を構成する全ゲートよりも少ない数のゲートから構成され、最小セット演算器１１の最小単位に対応する単位のゲートから構成される。例えば、最小セット演算器１１が図２に示した例のようにＦＰＧＡ合成用のゲート単位を最小単位として構築されている場合は、故障修復用のゲート２０は、ＦＰＧＡ合成用のゲート単位で各ゲートを含む。また、最小セット演算器１１が図３に示した例のようにＡＳＩＣ論理合成用のゲート単位を最小単位として構築されている場合は、故障修復用のゲート２０は、ＡＳＩＣ論理合成用のゲート単位で各ゲートを含む。また、また、最小セット演算器１１が図４に示した例のようにＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴの素子単位を最小単位として構築されている場合は、故障修復用のゲート２０に代えて、ＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴの素子単位で各素子を含む故障修復用の素子が設けられてよい。
【００５６】
最小セット演算器１１が図２又は図３に示した例のようにゲート単位を最小単位として構築されている場合は、故障修復用のゲート２０は、最小セット演算器１１を構成する全ゲートのうちの所定のゲート（例えば、使用頻度の高いゲート）のみから構成されてもよい。或いは、最小セット演算器１１が図２又は図３に示した例のようにゲート単位を最小単位として構築されている場合は、故障修復用のゲート２０は、最小セット演算器１１を構成する全種類のゲートを種類毎に一つずつ備えてもよい。
【００５７】
このように、実施例２によれば、ゲートレベルの単位又は素子レベルの単位で故障修復用のゲート２０又は素子を構成するため、演算器単位で故障修復用の演算器を用意しておく構成に比べて、故障修復用に用意するゲート又は素子の数を低減することができ、小面積で故障修復用の構成を実現することができる。尚、当然ながら、図１２では説明上、故障修復用のゲート２０は最小セット演算器１１とは別に示されているが、最小セット演算器１１と一体に構成されてもよい（即ち、最小セット演算器１１に組み込まれてよい）。
【００５８】
図１３は、本発明のその他の一実施例（実施例３）による動的再構成プロセッサ３の構成を概略的に示す図である。
【００５９】
本実施例の動的再構成プロセッサ３は、ＣＰＵ１０及びクロック生成回路１２に加えて、ＣＰＵ（演算器）２２を備える。ＣＰＵ１０、特に最小セット演算器１１の構成や動作例については、上述の実施例１と同様であってよい。
【００６０】
ＣＰＵ２２は、一般的なＣＰＵであってよく、ハードウェアとして複数の演算器（再構成可能でない演算器）を備える。尚、ＣＰＵ２２は、ＣＰＵ１０と一体に構成されてもよい。即ち、ＣＰＵ２２内の複数の演算器（再構成可能でない演算器）が、ＣＰＵ１０内の最小セット演算器１１とは別に、ＣＰＵ１０内に組み込まれてもよい。この場合、共有可能なハードウェア（演算器以外のハードウェアであって、例えば命令デコーダ制御回路等）は１つにまとめられてもよい。
【００６１】
図１４、図１５及び図１６は、ＣＰＵ２２の各動作例（シングルスレッド、マルチスレッド、スーパースカラー）をそれぞれ示し、最小セット演算器１１の同動作例を示す図５、図７及び図１０とそれぞれ対照となる図である。ＣＰＵ２２の各動作は、図１４、図１５及び図１６に示すように、一般的な態様であってよい。
【００６２】
例えばシングルスレッドの場合は、図１４に示すように、命令１（加算命令）がフェッチされ、命令１がデコードされると（命令１が理解されると）、エクゼキュート（ＥＸ）のクロック（ｔ＝３）にてＣＰＵ２２内の加算器を用いて演算を行う。このようにして命令１が実行されると、演算結果がレジスタに格納され、命令１に対する処理が終了する。次いで、命令２（乗算命令）がフェッチされ、命令２がデコードされると（命令２が理解されると）、エクゼキュート（ＥＸ）のクロック（ｔ＝８）にてＣＰＵ２２内の乗算器を用いて演算を行う。このようにして命令２が実行されると、演算結果がレジスタに格納され、命令２に対する処理が終了する。このようにして、各種命令に応じて予めハードウェアとして用意されているＣＰＵ２２内の各種演算器を用いて各種演算を行い、シングルスレッド処理が実行されていく。
【００６３】
マルチスレッドの場合も同様に、図１５に示すように、各種命令に応じて予めハードウェアとして用意されているＣＰＵ２２内の各種演算器を用いて各種演算が実行される。スーパースカラーの場合も同様に、図１６に示すように、各種命令に応じて予めハードウェアとして用意されているＣＰＵ２２内の各種演算器を用いて各種演算が実行される。尚、図１４、図１５及び図１６では、ＣＰＵ２２内の特定種類の演算器が示されているが、実際にはより他の種類の演算器が含まれる。尚、図１６に示すＣＰＵ２２は、スーパースカラー（並列実行）のために、図１４及び図１５に示すＣＰＵ２２よりも多数の演算器を含んでいる。その際、並列数が２であることから、図１６に示すＣＰＵ２２は、図１４及び図１５に示すＣＰＵ２２に対して完全に２倍の演算器を搭載してもよいが、ある程度多くの演算器が搭載されていてもよい。
【００６４】
本実施例３の動的再構成プロセッサ３は、命令に応じて、最小セット演算器１１とＣＰＵ２２とを使い分けるように構成されている。この使い分けの態様は、任意の態様であってよい。
【００６５】
一例として、頻繁に使う命令は、ＣＰＵ２２内の演算器により実行し、低頻度の命令のみ、最小セット演算器１１により動的に構成される演算器により実行することとしてもよい。これにより、ＣＰＵ２２により高速演算を維持しつつ、最小セット演算器１１により小面積化を図ることができる。尚、コンパイラに依存するが、実際には、高頻度命令は限られており、面積低減効果が大きく損なわれることはない。高頻度の命令か低頻度の命令かの区分けは、相対的な基準であってよく、高速演算の要求と小面積化の要求との兼ね合いで決定されてもよい。各命令の頻度は、動的再構成プロセッサ３が最も利用される用途における命令解析を行うことで判断されてもよい。このようにして、コンパイラ技術と連携してアーキテクチャ設計を行い、コストと速度のバランスを取ることが可能である。
【００６６】
その他の一例として、ハイプラインのストールが生じるような状況が発生した場合、即ち同一の命令が同時にＣＰＵ２２内の演算器以上に発行された場合に（ＣＰＵ２２内の演算器で賄いきれない数の命令が発行された場合に）、最小セット演算器１１が臨時的に使用されることしてもよい。即ち、ＣＰＵ２２は、通常時に処理を行い、ＣＰＵ２２の演算器で実行できない態様の命令群が発行された場合に、ＣＰＵ２２の演算器で実行できない命令に応じた演算器が、最小セット演算器１１により動的に構成されてよい。そして、ＣＰＵ２２の演算器で処理できない命令は、このようにして最小セット演算器１１により構成された演算器により実行される。
【００６７】
具体例として、例えば図１７に示すように、加算命令の命令１，２，３が同時に発行されたが、ＣＰＵ２２内に加算器が２個しかない場合は、本来であれば、命令３のパイプラインがストールし、待ち状態が発生する。これに対して、本例では、図１８に示すように、ＣＰＵ２２が保有している演算器以上の命令が同時に発行されたことが分かった時点で、最小セット演算器１１を用いて加算器を生成し、ストールを回避する。尚、図１８に示す例では、命令１及び命令２については、ＣＰＵ２２が保有している演算器（２個の加算器）により実行され、命令３については最小セット演算器１１で構成された加算器により実行される。図１８に示す例においても、この最小セット演算器１１による加算器の結線及び構成された加算器による演算は、ＤＣのクロックの発生時（ｔ４）までに完了するように構成される（この構成の詳細は、後述する）。
【００６８】
次に、最小セット演算器１１による演算器の生成（結線）及び生成された加算器による演算を、遅くともＤＣのクロックの発生時（即ち、演算結果を記憶する処理のためのクロック発生時）までに完了させるための構成（特に、クロック生成回路１２の構成及び機能）について説明する。
【００６９】
図１９は、クロック生成回路１２の構成の一例（第１の遅れ防止方法）を示す図である。クロック生成回路１２は、発信回路１３と、第１の逓倍回路１５と、第２の逓倍回路１７とを含む。発信回路１３には、外部に設けられる発信子１４が接続される。尚、発信子１４は、動的再構成プロセッサ１，２，３の内部に設けられてもよい。発信回路１３の出力は、第１の逓倍回路１５に接続される。第１の逓倍回路１５の出力は、第２の逓倍回路１７に接続される。実施例１，２による動的再構成プロセッサ１，２の場合、第１の逓倍回路１５の出力は、ＣＰＵ１０に接続される。実施例３による動的再構成プロセッサ３の場合、第１の逓倍回路１５の出力は、ＣＰＵ１０及びＣＰＵ２２に接続される。
【００７０】
第１の逓倍回路１５は、典型的にはＰＬＬ（Phase Locked Loop）で構成され、発信回路１３で励起したクロック源信号の周波数forg（内部クロック周波数）を逓倍する。即ち、ｆPLL１=ｄ×forg。ここで、ｆPLL１は、第１の逓倍回路１５からのクロックＣＬＫ１の周波数を表し、ｄは定数である。尚、第１の逓倍回路１５は、低周波数の場合は省略されてもよいが、一般的に、数十ＭＨｚ以上の場合は、発信回路１３により励起される周波数を逓倍して使用するために必要とされる。
【００７１】
第１の逓倍回路１５の出力は、ＣＰＵ１０（又はＣＰＵ１０及びＣＰＵ２２）に入力され、メインクロックであるクロックＣＬＫ１として機能する。
【００７２】
第２の逓倍回路１７は、典型的にはＰＬＬで構成され、第１の逓倍回路１５の出力であるクロックＣＬＫ１の周波数を逓倍（本例では、２逓倍）する。即ち、ｆPLL２=２×ｆPLL１。これにより、クロックＣＬＫ１に同期したクロックＣＬＫ２であって、クロックＣＬＫ１の周波数の２倍の周波数のクロックＣＬＫ２が生成される。クロックＣＬＫ２は、ＣＰＵ１０に入力される。尚、第２の逓倍回路１７は、第１の逓倍回路１５と並列に設けられてもよい。この場合、第２の逓倍回路１７は、発信回路１３で励起したクロック源信号の周波数forg（内部クロック周波数）を、第１の逓倍回路１５に対して２倍の係数ｄで逓倍する。即ち、ｆPLL２=２×ｄ×forg。
【００７３】
図２０は、図１９に示すクロック生成回路１２により実現される遅れ防止機能（第１の遅れ防止方法）の原理を示す図である。図２０には、クロックＣＬＫ１の波形と共に１つのサイクル処理（フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ））が時系列で示されている。図２０において、ｔ＝１〜７は、命令１のＩＦのクロックを１番目として何番目のクロックかを表す。また、図２０には、クロックＣＬＫ２の波形と共に、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）の各処理のタイミングが示されている。また、図２０には、デコード（ＩＤ）における命令の理解が完了したタイミングが矢印で示されている。
【００７４】
フェッチ（ＩＦ）、デコード（ＩＤ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程は、クロックＣＬＫ１に基づいて実行される。即ち、フェッチ（ＩＦ）、デコード（ＩＤ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程は、それぞれ、クロックＣＬＫ１の立ち上がりエッジ（ｔ＝１，２，４，５）で開始される。
【００７５】
他方、本実施例では、エクゼキュート（ＥＸ）は、最小セット演算器１１による演算器の生成（結線）及び生成された加算器による演算の２つの処理を含むため、本来であれば、ＣＬＫ１の２クロックが必要である。しかしながら、図２１に対照的に示すように、エクゼキュート（ＥＸ）にＣＬＫ１の２クロックを与えると、その分だけ（ＣＬＫ１の１ブロック分だけ）データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程が遅れることになる。
【００７６】
そこで、図１９及び図２０に示す例では、最小セット演算器１１による演算器の生成処理（結線情報に基づく結線）、及び、最小セット演算器１１により生成された演算器による演算処理は、クロックＣＬＫ１を２逓倍したクロックＣＬＫ２に基づいて実行される。これにより、図２０に示すように、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）を、データキャッシュ（ＤＣ）用のクロックＣＬＫ１の立ち上がりエッジ（ｔ＝４）までに完了することができる。即ち、逓倍クロックを用いて演算器生成及び演算を高速に行うことで、図２１に示すような遅れが発生することなく、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程を実現することができる。
【００７７】
尚、以上の図２０の説明は、実施例１，２、３による動的再構成プロセッサ１，２、３におけるＣＰＵ１０の動作に関する。実施例３による動的再構成プロセッサ３におけるＣＰＵ２２の動作は、通常通りであってよい。即ち、動的再構成プロセッサ３におけるＣＰＵ２２では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程は、通常通り、クロックＣＬＫ１に基づいて実行される。
【００７８】
図２２は、クロック生成回路１２の構成のその他の一例（第２の遅れ防止方法）を示す図である。図２２に示すクロック生成回路１２は、図１９に示した例に対して、第２の逓倍回路１７に代えて位相調整回路１８を備える点が主に異なる。他の構成は同様であってよい。
【００７９】
位相調整回路１８は、第１の逓倍回路１５の出力であるクロックＣＬＫ１の位相を所定位相量だけずらしたクロックＣＬＫ２を生成する。所定位相量は、デコード（ＩＤ）の処理に要する時間（実処理時間）の最長時間（考えられうるワースト時間）ΔＴに基づいて設定される。所定位相量は、デコード（ＩＤ）の最長時間ΔＴ（図２３参照）よりも長くクロックＣＬＫ１の１クロック分の時間よりも短い時間に相当する位相範囲内で決定されてもよい。但し、好ましくは、所定位相量は、最小セット演算器１１による演算器の生成処理（演算器生成）が可能な限り早く開始できるように、デコード（ＩＤ）の最長時間ΔＴに相当する位相に設定される。ここでは、所定位相量は、デコード（ＩＤ）の最長時間ΔＴに相当する位相に設定された場合を想定して説明を続ける。
【００８０】
図２３は、図２２に示すクロック生成回路１２により実現される遅れ防止機能（第２の遅れ防止方法）の原理を示す図である。図２３には、クロックＣＬＫ１の波形と共に１つのサイクル処理（フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ））が時系列で示されている。図２３において、ｔ＝１〜７は、命令１のＩＦのクロックを１番目として何番目のクロックかを表す。また、図２３には、クロックＣＬＫ２の波形と共に、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）の各処理のタイミングが示されている。また、図２３には、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程に要する時間（実処理時間）の最長時間が示されている。また、デコード（ＩＤ）における命令の理解が完了したタイミング（最も遅い場合のタイミング）が矢印で示されている。尚、上述のデコード（ＩＤ）の最長時間ΔＴは、デコード（ＩＤ）用のクロックＣＬＫ１の立ち上がりエッジ（ｔ＝２）から命令の理解が完了したタイミングまでの最長時間である。
【００８１】
フェッチ（ＩＦ）、デコード（ＩＤ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程は、同様に、クロックＣＬＫ１に基づいて実行される。他方、図２２及び図２３に示す例では、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）の各処理は、クロックＣＬＫ１の位相をずらしたクロックＣＬＫ２に基づいて実行される。即ち、最小セット演算器１１による演算器の生成処理（演算器生成）は、クロックＣＬＫ２に基づいて、命令の理解が完了したタイミングで実行開始され、従って、デコード（ＩＤ）用のクロックＣＬＫ１の立ち上がりエッジ（ｔ＝２）の次の立ち上がりエッジ（ｔ＝３）よりも前に実行開始される。また、最小セット演算器１１により生成された演算器による演算処理（演算）は、次のクロックＣＬＫ２の立ち上がりエッジで実行開始される。これにより、図２３に示すように、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）を、データキャッシュ（ＤＣ）用のクロックＣＬＫ１の立ち上がりエッジ（ｔ＝４）までに完了することができる。即ち、２相クロックを用いることで、図２１に示すような遅れが発生することなく、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程を実現することができる。
【００８２】
尚、以上の図２３の説明は、実施例１，２、３による動的再構成プロセッサ１，２、３におけるＣＰＵ１０の動作に関する。実施例３による動的再構成プロセッサ３におけるＣＰＵ２２の動作は、通常通りであってよい。即ち、動的再構成プロセッサ３におけるＣＰＵ２２では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）の各工程は、通常通り、クロックＣＬＫ１に基づいて実行される。後述の図２４、２５の説明についても同様である。
【００８３】
ところで、クロックＣＬＫ１の１クロック分の時間（即ち周期）とデコード（ＩＤ）の最長時間ΔＴとの関係や、最小セット演算器１１による演算器の生成処理（演算器生成）に要する時間、最小セット演算器１１により生成された演算器による演算処理（演算）に要する時間等によっては、上述の第１及び第２の遅れ防止方法によっては遅れを防止できない場合も生じうる。かかる場合には、第１及び第２の遅れ防止方法を組み合わせたり、及び／又は、第１の遅れ防止方法において３逓倍以上の逓倍を行ったりすることで、遅れを防止することができる。
【００８４】
例えば、図２４に示すように、図２３に示す例よりもデコード（ＩＤ）の最長時間ΔＴが長い場合には、その分だけクロックＣＬＫ１に対するクロックＣＬＫ２の位相ずれ量が大きくなり、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）を、データキャッシュ（ＤＣ）用のクロックＣＬＫ１の立ち上がりエッジ（ｔ＝４）までに完了することができなくなる。この場合は、例えば図２５に示すように、第１及び第２の遅れ防止方法を組み合わせることで、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）を、データキャッシュ（ＤＣ）用のクロックＣＬＫ１の立ち上がりエッジ（ｔ＝４）までに完了することができる。
【００８５】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００８６】
例えば、上述した実施例では、２つのクロックＣＬＫ１、ＣＬＫ２を用いて、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）を、データキャッシュ（ＤＣ）の開始時までに完了させている。しかしながら、３つ以上のクロックを用いてもよい。例えば、クロックＣＬＫ１に対して異なる位相ずれた２つのクロックを生成し、それぞれのクロックに基づいて、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）のそれぞれを、実施してもよい。
【００８７】
また、上述した実施例では、最小セット演算器１１によるエクゼキュート（ＥＸ）は、最小セット演算器１１による演算器の生成処理（演算器生成）及び最小セット演算器１１により生成された演算器による演算処理（演算）の２つの処理に分離されている。しかしながら、３つ以上の処理に分解してもよい。例えば、最小セット演算器１１による演算器の生成処理を、更に、命令に応じた結線情報の読み出し処理と、読み出した結線情報に基づいて最小セット演算器１１により演算器を生成する処理とに分解してもよい。この場合も、同様に、３相クロックを用いたり、逓倍クロックを用いたりすることで、エクゼキュート（ＥＸ）をデータキャッシュ（ＤＣ）の開始時までに完了させることができる。
【００８８】
また、クロックＣＬＫ１、ＣＬＫ２のそれぞれは、必ずしも常に同一周期であるクロックである必要はなく、上述のような遅れの生じないようなタイミングで各処理のトリガを与えるものであればよい。また、クロックＣＬＫ１自体が、例えば周波数スプレッダにより周波数を変動されていてもよい。
【００８９】
また、上述した実施例では、フェッチ（ＩＦ）、デコード（ＩＤ）、エクゼキュート（ＥＸ）、データキャッシュ（ＤＣ）、ライトバック（ＷＢ）というサイクルで処理が実行されているが、他の形態であってよい。特に、エクゼキュート（ＥＸ）の直後の工程は任意である。また、データキャッシュ（ＤＣ）及びライトバック（ＷＢ）は、エクゼキュート（ＥＸ）での演算結果をメモリ又はレジスタファイル等に書き込む処理であればよい。また、データキャッシュ（ＤＣ）は、メモリアクセス（ＭＡ又はＭＥＭ）と称される場合もあり、呼び名は任意である。
【００９０】
また、上述した実施例では、好ましい実施例として、全命令セットに対応する演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器１１が動的構成演算器として使用されているが、最小セット演算器１１に代えて、最小セット演算器１１よりも多くのゲート又は素子を備える動的構成演算器が使用されてもよいし（図１２参照）、最小セット演算器１１よりも少ないゲート又は素子を備える動的構成演算器が使用されてもよい。
【符号の説明】
【００９１】
１，２，３    動的再構成プロセッサ
１０    ＣＰＵ
１１    最小セット演算器
１２    クロック生成回路
１３    発信回路
１４    発信子
１５    第１の逓倍回路
１７    第２の逓倍回路
１８    位相調整回路
２０    故障修復用のゲート
２２    ＣＰＵ
【図１】
2011125174.tif 000003
【図２】
2011125174.tif 000004
【図３】
2011125174.tif 000005
【図４】
2011125174.tif 000006
【図５】
2011125174.tif 000007
【図６】
2011125174.tif 000008
【図７】
2011125174.tif 000009
【図８】
2011125174.tif 000010
【図９】
2011125174.tif 000011
【図１０】
2011125174.tif 000012
【図１１】
2011125174.tif 000013
【図１２】
2011125174.tif 000014
【図１３】
2011125174.tif 000015
【図１４】
2011125174.tif 000016
【図１５】
2011125174.tif 000017
【図１６】
2011125174.tif 000018
【図１７】
2011125174.tif 000019
【図１８】
2011125174.tif 000020
【図１９】
2011125174.tif 000021
【図２０】
2011125174.tif 000022
【図２１】
2011125174.tif 000023
【図２２】
2011125174.tif 000024
【図２３】
2011125174.tif 000025
【図２４】
2011125174.tif 000026
【図２５】
2011125174.tif 000027
【手続補正書】
【提出日】平成22年7月26日(2010.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
命令に対応する演算器を動的に構成する動的構成演算器と、
メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成され、
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなることを特徴とする、動的再構成プロセッサ。
【請求項２】
前記命令実行工程の直後の工程の開始タイミングは、前記命令実行工程の直前の工程の開始タイミングに対して前記メインクロックの２クロック後に規定される、請求項１に記載の動的再構成プロセッサ。
【請求項３】
前記サブクロックは、前記メインクロックを逓倍したクロック、前記メインクロックの位相をずらしたクロック、又は、前記メインクロックの位相をずらし且つ逓倍したクロックである、請求項１に記載の動的再構成プロセッサ。
【請求項４】
（削除）
【請求項５】
前記最小セット演算器を用いてシングルスレッドで動作する、請求項１に記載の動的再構成プロセッサ。
【請求項６】
前記動的構成演算器を複数個備え、各動的構成演算器を利用して並列処理又はパイプライン処理を行う、請求項１に記載の動的再構成プロセッサ。
【請求項７】
再構成不能な演算器を更に備え、
命令に応じて、前記動的構成演算器と前記再構成不能な演算器とを使い分け、
前記再構成不能な演算器を用いて命令を実行する命令実行工程は、前記メインクロックに基づいて開始タイミングが規定される、請求項１に記載の動的再構成プロセッサ。
【請求項８】
比較的高い頻度で発生する所定の命令に対しては、前記再構成不能な演算器を用い、比較的低い頻度で発生する命令に対しては、前記動的構成演算器を用いる、請求項７に記載の動的再構成プロセッサ。
【請求項９】
同一命令が、該命令に対応する前記再構成不能な演算器の数よりも多い命令数で同時に発行された場合に、前記再構成不能な演算器の数の命令に対しては、前記再構成不能な演算器を用い、前記再構成不能な演算器の数よりも多い分の命令に対しては、前記動的構成演算器を用いる、請求項７に記載の動的再構成プロセッサ。
【請求項１０】
前記最小セット演算器のゲート又は素子に故障が発生した場合に使用される故障補修用ゲート又は故障補修用素子を更に備える、請求項１に記載の動的再構成プロセッサ。
【請求項１１】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲートを、ＮＡＮＤ，ＮＯＲ，ＮＯＴのゲート単位で備える最小セット演算器からなり、
前記演算器生成サブ工程は、前記ＮＡＮＤ，ＮＯＲ，ＮＯＴのゲート単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項１に記載の動的再構成プロセッサ。
【請求項１２】
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限の素子を、ＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴレベルの素子単位で備える最小セット演算器からなり、
前記演算器生成サブ工程は、前記ＰｃｈＭＯＳＦＥＴ及びＮｃｈＭＯＳＦＥＴレベルの素子単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項１に記載の動的再構成プロセッサ。
【請求項１３】
命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
前記エクゼキュート工程は、全命令セットに対応する全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器を用いて前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
当該方法は、
前記メインクロックで規定される第１のタイミングで前記フェッチ工程を実行し、
前記メインクロックで規定される第２のタイミングで前記デコード工程を実行し、
前記メインクロックで規定される第３のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第１のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第２のタイミングで、前記演算サブ工程を実行し、
前記メインクロックで規定される第４のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
づいて開始タイミングが規定され、
前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成され、
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなることを特徴とする、動的再構成プロセッサが提供される。
［００１１］
本発明のその他の一局面によれば、命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
前記エクゼキュート工程は、全命令セットに対応する全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器を用いて前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
当該方法は、
前記メインクロックで規定される第１のタイミングで前記フェッチ工程を実行し、
前記メインクロックで規定される第２のタイミングで前記デコード工程を実行し、
前記メインクロックで規定される第３のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第１のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第２のタイミングで、前記演算サブ工程を実行し、
前記メインクロックで規定される第４のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法が提供される。
発明の効果
［００１２］
本発明によれば、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法が得られる。
図面の簡単な説明
［００１３］
［図１］本発明の実施例１による動的再構成プロセッサ１の構成を概略的に示す図である。
【国際調査報告】
2011125174.tif 000028
2011125174.tif 000029
2011125174.tif 000030
2011125174.tif 000031