(57)【特許請求の範囲】
【請求項１】
それぞれ記憶及び演算の機能を有し相互に配線で接続されうる複数のプロセッサエレメントを行列状に配置し、この複数のプロセッサエレメントの配線の接続関係によって実現される機能を時間的に変化させるリコンフィギュラブルプロセッサの制御方法において、
所定の時間において、前記複数のプロセッサエレメントの１つである第１のプロセッサエレメントをデータの記憶に用い、
前記所定の時間に続く時間において、前記複数のプロセッサエレメントの他の１つである第２のプロセッサエレメントと前記第１のプロセッサエレメントとを配線で接続することによって前記第１のプロセッサエレメントに記憶された前記データを前記第２のプロセッサエレメントに移動または複写させ、同時に、前記複数のプロセッサエレメントの残部で所定の機能を実現する、
ことを特徴とするリコンフィギュラブルプロセッサの制御方法。
【請求項２】
請求項１記載のリコンフィギュラブルプロセッサの制御方法において、
前記リコンフィギュラブルプロセッサは外部からクロック信号が供給され、このクロック信号に応じて、前記複数のプロセッサエレメントの配線の接続関係によって実現される機能が時間的に変化し、
配線による接続関係を有するようにされるプロセッサエレメントとの間の信号遅延により規定されるクリティカルパスが所定範囲内になるように前記第１のプロセッサエレメントと前記第２のプロセッサエレメントが選択されることを特徴とするリコンフィギュラブルプロセッサの制御方法。
【請求項３】
それぞれ記憶及び演算の機能を有し相互に配線で接続されうる複数のプロセッサエレメントを行列状に配置したリコンフィギュラブル回路と、この複数のプロセッサエレメントの配線の接続関係によって実現される機能を時間的に変化させるコンフィギュレーション情報を格納するコンフィギュレーションメモリとを有するリコンフィギュラブルプロセッサの前記コンフィギュレーション情報を生成する方法において、
順次前記リコンフィギュラブル回路に実装されるべき複数の関数に用いられ又は生成されるところのデータのライフタイムを所定の範囲に制限し、当該ライフタイムを超えて同一のプロセッサエレメントが前記データを記憶し続けることを避けることを特徴とするリコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する方法。
【請求項４】
請求項３記載のリコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する方法において、
所定の時間に、あるデータをあるプロセッサエレメントが記憶し始めた場合には、前記所定の時間が終わって、複数のプロセッサエレメントの配線の接続関係により実現される機能が変化した上で、次の時間となった際に、当該次の時間に、前記あるデータを前記あるプロセッサエレメントから他のプロセッサエレメントに移動させるように、リコンフィギュラブルプロセッサのコンフィギュレーション情報を生成することを特徴とするリコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する方法。
【請求項５】
ハードウェアに、請求項３又は４記載のリコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する方法を実行させるためのコンフィギュレーション情報生成ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィギュラブルプロセッサ（動的再構成プロセッサ）の制御方法及びリコンフィギュラブルプロセッサのコンフィギュレーション情報（動的再構成情報）を生成する方法及びコンフィギュレーション情報生成ツールに関する。
【背景技術】
【０００２】
それぞれ記憶及び演算の機能を有し相互に配線で接続されうる複数のプロセッサエレメントを行列状に配置したリコンフィギュラブル回路（動的再構成回路）と、この複数のプロセッサエレメントの配線の接続関係によって実現される機能を時間的に変化させるコンフィギュレーション情報を格納するコンフィギュレーションメモリ（構成情報メモリ）とを有するリコンフィギュラブルプロセッサが知られている。
【０００３】
リコンフィギュラブルプロセッサは時間の経過と共に回路構成を変更しながら処理を行う。図１１はその動作の概要を示した図であり、図１１（Ａ）は処理すべき関数をＣ言語表記で表したコード、図１１（Ｂ）はその動作を時系列とともに示した図である。図１１（Ｂ）においては、上から下に向かって時間の流れがある。個々の矩形はリコンフィギュラブル回路とこれが実装するところの関数を示している。
【０００４】
図１１（Ａ）の各関数ｆｕｎｃｔｉｏｎ＿１（）、ｆｕｎｃｔｉｏｎ＿２（）、ｆｕｎｃｔｉｏｎ＿１（）及びｆｕｎｃｔｉｏｎ＿３（）は、同じリコンフィギュラブル回路で異なる時間に実装される。時間１においてはｆｕｎｃｔｉｏｎ＿１（）がリコンフィギュラブル回路上に実装され、時間２においてはｆｕｎｃｔｉｏｎ＿２（）がリコンフィギュラブル回路上に実装され、時間３においてはｆｕｎｃｔｉｏｎ＿１（）がリコンフィギュラブル回路上に実装され、時間４においてはｆｕｎｃｔｉｏｎ＿３（）がリコンフィギュラブル回路上に実装される。
【０００５】
図１１（Ｂ）に示すように、時間１において、ｆｕｎｃｔｉｏｎ＿１（）に引数０が供給され、その出力は変数ａに格納される。時間２においてはｆｕｎｃｔｉｏｎ＿２（）の出力が変数ｂに格納される。時間３においてはｆｕｎｃｔｉｏｎ＿１（）に時間１において求められた変数ａが引数として用いられ、その出力は変数ｃに格納される。時間４においてはｆｕｎｃｔｉｏｎ＿３（）に引数ａ、ｂ及びｃが供給され、出力が変数ｚに格納される。そして、この図から明らかなように、変数ａ、ｂ、ｃは、各回路構成（リコンフィギュラブル回路に実装された関数）間でデータの受け渡しを行う必要がある。
【０００６】
データの受け渡し方法の例の１つを図１２に示す。すなわち、データの処理結果を適切なタイミングでリコンフィギュラブル回路外のメモリにストア（退避）させる（図１２（Ａ））。データの初期化や演算をする場合などは、適切なタイミングで、リコンフィギュラブル回路外のメモリからロード（復旧）する（図１２（Ｂ））。メモリはリコンフィギュラブルプロセッサと同一チップ上に設けてもよいし、別チップ上に設けても良い。これは、一般的なプロセッサシステムに例えると、キャッシュメモリ、外部メモリ乃至ＨＤＤに対応する。しかし、ロード／ストア処理に時間がかかるという問題がある。
【０００７】
データの受け渡し方法の他の例を図１３に示す。すなわち、リコンフィギュラブル回路そのものでデータを表現するというものである。ステートマシン（状態遷移マシン）の例として、ｓ１、ｓ２、ｓ３、ｓ４、ｓ１・・・と遷移する例が示されている。そして、ｓ１、ｓ２、ｓ３、ｓ４の各状態を異なる時間における異なる回路構成ｃｏｎｆｉｇ＃１、ｃｏｎｆｉｇ＃２、ｃｏｎｆｉｇ＃３、ｃｏｎｆｉｇ＃４に割り当てる。このように、ステートマシンの各ステートを独立した回路構成に割り当てた場合、それぞれの回路構成が対応したステートを表現しているとみなすことができる。この方法によれば、メモリを使わないのでロード／ストア処理は不要である。しかし、演算対象データを受け渡すには不向きである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００６−１２９７２２号公報
【特許文献２】特開２００６−４０２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以上説明した、回路構成（リコンフィギュラブル回路に実装された関数）間でのデータの受け渡し方法にはいずれも問題がある。そこで、リコンフィギュラブル回路内に生成したメモリを使用する方法が考えられる。これを図１４に示す。リコンフィギュラブル回路領域内に、そのプロセッサエレメントを用いてフリップフロップ回路やＲＡＭ等のメモリを構成し、演算後にライト（書込み）したり（図１４（Ａ））、演算前にリード（読出し）したり（図１４（Ｂ））する。これは、一般的なプロセッサに例えると、レジスタに相当する。したがって、動作が極めて高速になるというメリットがある。一方で、ストアを行った回路構成とロードを行う回路構成で同じメモリを参照する必要があり、その間はデータを保持し続けなければならない。
【００１０】
しかし、リコンフィギュラブル回路内のプロセッサエレメントを用いてメモリを構成しこれに受け渡すべきデータを保存する場合には、そのプロセッサエレメントを長い時間メモリとしての使用に固定化することは、回路構成内の配置計算における計算量、すなわち、コンフィギュレーション情報を生成するための計算量が膨大になるという問題がある。また、後述するような自由度の低下、クリティカルパスの問題もある。
【００１１】
本発明は、以上のような問題に鑑み創案されたもので、リコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する際の計算量を減らすことを目的の１つとするものである。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明においては、それぞれ記憶及び演算の機能を有し相互に配線で接続されうる複数のプロセッサエレメントを行列状に配置し、この複数のプロセッサエレメントの配線の接続関係によって実現される機能を時間的に変化させるリコンフィギュラブルプロセッサの制御方法において、所定の時間において、前記複数のプロセッサエレメントの１つである第１のプロセッサエレメントをデータの記憶に用い、前記所定の時間に続く時間において、前記複数のプロセッサエレメントの他の１つである第２のプロセッサエレメントと前記第１のプロセッサエレメントとを配線で接続することによって前記第１のプロセッサエレメントに記憶された前記データを前記第２のプロセッサエレメントに移動または複写させ、同時に、前記複数のプロセッサエレメントの残部で所定の機能を実現する、ことを特徴とするリコンフィギュラブルプロセッサの制御方法が提供される。
【００１３】
この方法においては、リコンフィギュラブルプロセッサは外部からクロック信号が供給され、このクロック信号に応じて、前記複数のプロセッサエレメントの配線の接続関係によって実現される機能が時間的に変化し、配線による接続関係を有するようにされるプロセッサエレメントとの間の信号遅延により規定されるクリティカルパスが所定範囲内になるように前記第１のプロセッサエレメントと前記第２のプロセッサエレメントが選択されることが望ましい。
【００１４】
上記課題を解決するため、本発明においては、それぞれ記憶及び演算の機能を有し相互に配線で接続されうる複数のプロセッサエレメントを行列状に配置したリコンフィギュラブル回路と、この複数のプロセッサエレメントの配線の接続関係によって実現される機能を時間的に変化させるコンフィギュレーション情報を格納するコンフィギュレーションメモリとを有するリコンフィギュラブルプロセッサの前記コンフィギュレーション情報を生成する方法において、順次前記リコンフィギュラブル回路に実装されるべき複数の関数に用いられ又は生成されるところのデータのライフタイムを所定の範囲に制限し、当該ライフタイムを超えて同一のプロセッサエレメントが前記データを記憶し続けることを避けることを特徴とするリコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する方法が提供される。
【００１５】
この方法においては、所定の時間に、あるデータをプロセッサエレメントが記憶し始めた場合には、前記所定の時間が終わって、複数のプロセッサエレメントの配線の接続関係により実現される機能が変化した上で、次の時間までに限られることが望ましい。
【００１６】
上記課題を解決するため、本発明においては、さらに、上記方法を用いるコンフィギュレーション情報生成ツールが提供される。
【発明の効果】
【００１７】
以上、説明した本発明によれば、リコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する際の計算量を減らし、構成の自由度を向上することが可能となる。また、動作クロックを高速化することが可能になる場合がある。
【図面の簡単な説明】
【００１８】
【図１】本発明において用いられるリコンフィギュラブルプロセッサの内部構成の一例である。
【図２】本発明において用いられるリコンフィギュラブル回路の回路構成の一例である。
【図３】構成間の共有メモリをプロセッサエレメントＰＥ上に実装した例である。
【図４】本発明の構成間共有の分割の方法を説明した図である。
【図５】本発明の構成間共有の分割の方法を説明した図である。
【図６】コンフィギュレーション情報を生成するツール（ワークステーション上で動作するソフトウェア）の構成例である。
【図７】本発明の論理合成モジュールによる実現例である。
【図８】本発明の論理合成モジュールによる実現例である。
【図９】本発明の配置配線の例である。
【図１０】本発明の配置配線の例である。
【図１１】リコンフィギュラブルプロセッサの動作の概要を示した図である。
【図１２】リコンフィギュラブルプロセッサにおけるデータの受け渡し方法の例である。
【図１３】リコンフィギュラブルプロセッサにおけるデータの受け渡し方法の例である。
【図１４】リコンフィギュラブルプロセッサにおけるデータの受け渡し方法の例である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を図示例と共に説明する。図１は、本発明において用いられるリコンフィギュラブルプロセッサ１００の内部構成の一例である。リコンフィギュラブルプロセッサ１００は、リコンフィギュラブル回路１０１とコンフィギュレーションメモリ１０２とリコンフュギュレーション制御回路１０３とから構成され、内部バス１０４を経由して外部Ｉ／Ｏ１０５と接続されている。内部バス１０４とリコンフィギュラブル回路１０１とは信号線１０６で接続され、ここでデータがやり取りされる。内部バス１０５とリコンフィギュレーション制御回路１０３とは信号線１０８で接続され、ここで制御データ（コンフィギュレーション情報及び各種の制御情報を含む。）がやり取りされる。リコンフィギュレーション制御回路１０３は信号線１０７を介してリコンフィギュラブル回路１０１に含まれるプロセッサエレメントの記憶及び演算の機能並びにこれらの配線の再構成を制御する。リコンフィギュレーション制御回路１０３はコンフィギュレーションメモリ１０２にコンフィギュレーション情報を、信号線１０９を介してストアしロードする。
【００２０】
図２は、リコンフィギュラブル回路１０１の回路構成の一例である。図２に示すように、リコンフィギュラブル回路１０１は行列状（ｙ行、ｘ列）に配列されたプロセッサエレメントＰＥから構成されている。プロセッサエレメントＰＥは、ルックアップテーブルＬＵＴ、フリップフロップＦＦ及び選択回路ｓｅｌから構成され、記憶及び演算の機能を有する。各プロセッサエレメントＰＥの間には配線領域が存在し、任意のプロセッサエレメントＰＥ間を接続可能な配線を有する。
【００２１】
図３は構成間の共有メモリをプロセッサエレメントＰＥ上に実装し、かつ、その位置を固定した場合の例である。時間０においては、構成ｃｏｎｆｉｇ＃０がリコンフィギュラブル回路に実装されている。そして、＃０、＃５、＃６、＃８及び＃１０のプロセッサエレメントＰＥが用いられており、残りのプロセッサエレメントＰＥは用いられていないものとする。時間０に引き続く時間１においては、構成ｃｏｎｆｉｇ＃１がリコンフィギュラブル回路に実装されている。そして、＃０、＃１、＃６、＃８及び＃１０のプロセッサエレメントＰＥが用いられており、残りのプロセッサエレメントＰＥは用いられていないものとする。時間１に引き続く時間２においては、構成ｃｏｎｆｉｇ＃２がリコンフィギュラブル回路に実装されている。そして、＃０、＃２、＃５、＃８、＃９及び＃１０のプロセッサエレメントＰＥが用いられており、残りのプロセッサエレメントＰＥは用いられていないものとする。このような例において、時間０、時間１及び時間２の通しで開いているプロセッサエレメントＰＥは＃４（＃０と＃８に挟まれた部分）のみであるため、この３つの時間にまたがる記憶領域（格納される変数のライフタイムが３であることに対応する。）は＃４にしか確保できない。つまり、複数の時間にわたって同じ座標のプロセッサエレメントが空いていないと、配置配線に失敗するのである。
【００２２】
各回路構成内の配置配線は、従来のＬＳＩの配置配線方法によって実現することが可能である。しかしながら、ダイナミックリコンフィギュラブル回路においては、構成間共有メモリを通じて、各回路構成同士が影響し合う。つまり、回路構成毎の独立した配置配線に分割することができず、配置配線における計算量が膨大になる。図３の例においては、具体的には、合計計算量は（ｃｏｎｆｉｇ＃０の計算量）＋（ｃｏｎｆｉｇ＃１の計算量）＋（ｃｏｎｆｉｇ＃２の計算量）ではなく、（ｃｏｎｆｉｇ＃０の計算量）×（ｃｏｎｆｉｇ＃１の計算量）×（ｃｏｎｆｉｇ＃２の計算量）とならざるをえない。
【００２３】
（構成間共有の分割をすることにより計算量の削減及び自由度の向上）
【００２４】
図４及び図５を用いて、本発明による構成間共有の分割の方法を説明する。ここで紹介する例は変数のライフタイムを２以下に制限した例である。
【００２５】
図４（Ａ）は処理すべき関数をＣ言語表記で表したコード、図４（Ｂ）はその動作を状態遷移図で表した図、図４（Ｃ）は変数のライフタイムを示した図表である。図４（Ａ）の各関数ｆｕｎｃｔｉｏｎ＿１（）、ｆｕｎｃｔｉｏｎ＿２（）、ｆｕｎｃｔｉｏｎ＿１（）及びｆｕｎｃｔｉｏｎ＿３（）は、同じリコンフィギュラブル回路で異なる時間に実装される。時間１においてはｆｕｎｃｔｉｏｎ＿１（）がリコンフィギュラブル回路上に実装され、時間２においてはｆｕｎｃｔｉｏｎ＿２（）がリコンフィギュラブル回路上に実装され、時間３においてはｆｕｎｃｔｉｏｎ＿１（）がリコンフィギュラブル回路上に実装され、時間４においてはｆｕｎｃｔｉｏｎ＿３（）がリコンフィギュラブル回路上に実装される。
【００２６】
図４（Ｃ）に示すように、変数ａは時間１、２、３及び４を通して生存する。つまり、そのライフタイムは４である。変数ｂは時間２、３及び４を通して生存する。つまり、そのライフタイムは３である。変数ｃは時間３及び４を通して生存する。つまり、そのライフタイムは２である。変数ｚは時間４のみで用いられる。つまり、そのライフタイムは１である。しかし、この例をそのまま実装すると、変数ａのために同じプロセッサエレメントＰＥを通しで確保する必要があり、配置配線にかかる計算量が極めて膨大になるうえ、配置配線の自由度も低下する。
【００２７】
図５（Ａ）は図４（Ａ）のコードに改変を加えたものである。図５（Ｂ）はその配置配線における実装の一例を示した図、図５（Ｃ）は変数のライフタイムを示した図表である。各関数ｆｕｎｃｔｉｏｎ＿１（）、ｆｕｎｃｔｉｏｎ＿２（）、ｆｕｎｃｔｉｏｎ＿１（）及びｆｕｎｃｔｉｏｎ＿３（）は、同じリコンフィギュラブル回路で異なる時間に実装される。時間１においてはｆｕｎｃｔｉｏｎ＿１（）がリコンフィギュラブル回路上にｃｏｎｆｉｇ＃１として実装され、時間２においてはｆｕｎｃｔｉｏｎ＿２（）がリコンフィギュラブル回路上にｃｏｎｆｉｇ＃２として実装され、時間３においてはｆｕｎｃｔｉｏｎ＿１（）がｃｏｎｆｉｇ＃１としてリコンフィギュラブル回路上に実装され、時間４においてはｆｕｎｃｔｉｏｎ＿３（）がリコンフィギュラブル回路上にｃｏｎｆｉｇ＃３として実装される。
【００２８】
図５（Ａ）のコード及び図５（Ｃ）の変数のライフタイムにあるように、変数のライフタイムは２に制限されている。ある時間と次の時間までしか同一の変数が用いられないように構成されている。つまり、変数ａは、ａ１、ａ２、ａ３に分割され、変数ｂは、ｂ１、ｂ２に分割されている。つまり、分割した共有が同一変数について複数存在する場合に、それらを別物として扱い、変数はその数だけ複製を生成する。図５（Ｂ）の例では、時間３において変数ａ２は変数ａ３にコピーされ、変数ｂ１は変数ｂ２にコピーされる。同時に時間３においては関数ｆｕｎｃｔｉｏｎ＿１（）も実装されている。
【００２９】
ここで変数ａについて着目すると、配置配線に必要な計算量は、図４に示したようなライフタイムの長い変数の記憶領域が特定のＰＥ上に実装される例と比較すると、激減することが理解される。すなわち、図４の例においては、合計計算量は（ｃｏｎｆｉｇ＃１の計算量）×（ｃｏｎｆｉｇ＃２の計算量）×（ｃｏｎｆｉｇ＃３の計算量）となるところを、図５のように構成間共有の分割を施すと、（ｃｏｎｆｉｇ＃１の計算量）×（ｃｏｎｆｉｇ＃２の計算量）＋（ｃｏｎｆｉｇ＃２の計算量×ｃｏｎｆｉｇ＃３の計算量）となる。このようにして、変数のライフタイムを２に制限することによって、配置配線に必要な計算量は激減するとともにその自由度は増加する。このような配置配線によって得られたコンフィギュレーション情報は、前述したリコンフィギュラブルプロセッサに転送され、リコンフィギュラブルプロセッサが所望の機能をダイナミックに再構成して動作する。
【００３０】
（コンフィギュレーション情報を生成するツール）
【００３１】
図６は、コンフィギュレーション情報を生成するツール２００（ワークステーション上で動作するソフトウェア）の構成例である。ツール２００は、高位言語（ＨＤＬ、Ｃ等）による設計をサポートするためのモジュール２０１、論理合成モジュール２０２及び配置配線モジュール２０３から構成される。
【００３２】
設計サポートモジュール２０１によって、主として回路設計を高位言語で行うユーザとのインターフェイス及びそのためのエディタ等が供給される。
【００３３】
論理合成モジュール２０２には、設計サポートモジュール２０１によって生成された設計情報が供給され、これによって、各時間における論理回路構成にかかる情報（ＲＴＬ等）が生成される。具体的には、リコンフィギュラブル回路のリソース（プロセッサエレメントの規模・数等）に応じて、回路を適切な単位に分割し、処理の単位が小さい場合は、リコンフィギュラブル回路のリソースにあわせて回路を結合する。さらに、本発明においては、状態遷移情報を管理する必要もある。
【００３４】
配置配線モジュール２０３には、論理回路構成情報が供給され、これによって、各時間における配置配線（使用するプロセッサエレメントＰＥの配置、機能、プロセッサエレメント間の配線）が決められ、コンフィギュレーション情報が生成される。さらに、本発明においては、論理合成モジュールから状態遷移情報を受取る必要がある。
【００３５】
（論理合成による実現例）
【００３６】
以下、図７及び図８を参照して、本発明の論理合成モジュールによる実現例を示す。図７（Ａ）は論理合成すべきソースコードの一例である。ｘ  ＝  ａ  ＋  ｂはｃｏｎｆｉｇ＃１に合成し、ｙ  ＝  ｃ  ＊  ｄはｃｏｎｆｉｇ＃２に合成し、ｚ  ＝  ｘ  −  ｙ及びｗ  ＝  ｘ  ＋  ｙはｃｏｎｆｉｇ＃３に合成する。
【００３７】
図７（Ｂ）はこのソースコードをＤＦＧ（データフローグラフ）表現した例である。図中矩形はレジスタを、丸は演算器を表している。演算器内に付された記号は演算器の動作（加算が＋、減算が−、乗算が＊である。）を示している。時間の流れに沿って、上から下へとデータが流れるように表現されている。ｃｏｎｆｉｇ＃１で計算したｘはｃｏｎｆｉｇ＃３で使用するため、変数ｘが生成される。変数ｘはｃｏｎｆｉｇ＃２では演算に使用されず、値を保持するためにのみ使用される。その結果、変数ｘはｃｏｎｆｉｇ＃１、ｃｏｎｆｉｇ＃２、ｃｏｎｆｉｇ＃３を通じて生存することになり、そのライフタイムが３となる。
【００３８】
図８（Ａ）は論理合成すべきソースコードに本発明の方法に従って変形を加えてた例である。ｘ＝ａ＋ｂがｃｏｎｆｉｇ＃１に合成されるのは図７（Ａ）と同様である。しかし、ｙ＝ｃ＊ｄのみならずｘをｘ’にコピーするところのｘ’＝ｘが共にｃｏｎｆｉｇ＃２に合成される。そして、ｘ’−ｙ及びｗ＝ｘ’＋ｙがｃｏｎｆｉｇ＃３に合成される。
【００３９】
図８（Ｂ）はこのソースコードをＤＦＧ（データフローグラフ）表現した例である。ｃｏｎｆｉｇ＃１で計算したｘはｃｏｎｆｉｇ＃２においてｘ’にコピー（移動）される。ｃｏｎｆｉｇ＃３で使用する変数は変数ｘ’である。その結果、変数ｘはｃｏｎｆｉｇ＃１及びｃｏｎｆｉｇ＃２を通じてのみ生存し、そのライフタイムは２となる。また、変数ｘ’はｃｏｎｆｉｇ＃２及びｃｏｎｆｉｇ＃３を通じてのみ生存することになり、そのライフタイムは２となる。なお、本発明の論理合成モジュールによる実現例として、ｃｏｎｆｉｇ＃１で計算したｘはｃｏｎｆｉｇ＃２においてｘ’にコピー（移動）される例を示したが、コンフィギュレーション情報を生成するための計算量が所定の範囲内の場合またはクリティカルパスが所定の範囲内の場合は，ｘはｘ’にコピー（移動）されず，そのまま生存されてもよい。
【００４０】
以上のようにして論理合成モジュール２０２において変数のライフタイムを制限しつつ論理合成を行う結果、次の段の配置配線モジュール２０３における計算量を減らすことができるとともに配置の自由度を向上することが可能となる。
【００４１】
（クリティカルパスの考慮による動作速度の改善）
【００４２】
プロセッサエレメントＰＥ間の配線遅延は、データを出力するプロセッサエレメントＰＥとデータを入力するプロセッサエレメントＰＥのマンハッタン距離によって規定される。ここでマンハッタン距離とは、行の差の絶対値及び列の差の絶対値の和である。最も遅延が生じる距離は、図２を例にとると、０行０列のプロセッサエレメントＰＥとｙ行ｘ列のプロセッサエレメントＰＥ間である（したがって、これがクリティカルパスとなる。）。一般的なリコンフィギュラブルプロセッサにおいては、一定の周波数のクロック信号を用いて、そのクロックの周期（又は分周したクロックの周期）に従って動作を行っていた。そして、クリティカルパスにおける信号遅延時間が発生したとしても、誤動作を行わないようなクロック信号を選択していた。
【００４３】
図９には、図７（Ａ）のソースコードによって示される処理を配置配線した例である。ｘ＝ａ＋ｂはｃｏｎｆｉｇ＃１に合成し、ｙ＝ｃ＊ｄはｃｏｎｆｉｇ＃２に合成し、ｚ＝ｘ−ｙ及びｗ＝ｘ＋ｙはｃｏｎｆｉｇ＃３に合成する。この図から明らかなように、ｃｏｎｆｉｇ＃１は、演算処理を行うプロセッサエレメントと引数ａ及びｂ、処理結果ｘの保持を行うプロセッサエレメントとがいずれも距離１であるために、最適化配置がなされている。ｃｏｎｆｉｇ＃２においても、演算処理を行うプロセッサエレメントと引数ｃ及びｄ、処理結果ｙの保持を行うプロセッサエレメントとがいずれも距離１であるために、最適化配置がなされている。しかしながら、ｃｏｎｆｉｇ＃３においては、演算処理を行うプロセッサエレメントと引数ｘの保持を行うプロセッサエレメントとが距離３乃至４であるために、最適化配置されていない。これでは、変数の受け渡しを行うべきプロセッサエレメントと演算処理を行うプロセッサエレメントとの間にクリティカルパスが形成され、十分な速度を得ることができない。クロック周波数が一定の場合にはこのクリティカルパスを前提にした低速なクロックを選択する必要があり、全体的に動作が遅くなるおそれがある。
【００４４】
図１０には、図８（Ａ）のソースコードによって示される処理を配置配線した例である。この図から明らかなように、ｃｏｎｆｉｇ＃１は、演算処理を行うプロセッサエレメントと引数ａ及びｂ、処理結果ｘの保持を行うプロセッサエレメントとがいずれも距離１であるために、最適化配置がなされている。ｃｏｎｆｉｇ＃２においても、演算処理を行うプロセッサエレメントと引数ｃ及びｄ、処理結果ｙの保持を行うプロセッサエレメントと、並びにｘとｘ’を保持するプロセッサエレメントがいずれも距離１であるために、最適化配置がなされている。そして、ｃｏｎｆｉｇ＃３においては、演算処理を行うプロセッサエレメントと引数ｘの保持を行うプロセッサエレメントとが最大２となっている。その結果、クリティカルパスは距離２であり、これに応じてクロックの速度を早めることができ、クロック周波数が一定の場合にはこのクリティカルパスを前提にした高速なクロックを選択することが可能となり、全体的に動作が早くなる。
【００４５】
図１０では、距離を２以下に制限した例を示したが、さらに自由度を上げて、２以上の所定の距離となるように制限することも可能である。そして、そのような制限を加えた形で変数を保持するプロセッサエレメントを選択する。
【００４６】
以上、本発明の実施例にかかるリコンフィギュラブルプロセッサの制御方法及びリコンフィギュラブルプロセッサのコンフィギュレーション情報を生成する方法及びコンフィギュレーション情報生成ツールを説明したが、本発明は上述の実施例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【符号の説明】
【００４７】
１００  リコンフィギュラブルプロセッサ
１０１  リコンフィギュラブル回路
１０２  コンフィギュレーションメモリ
１０３  リコンフュギュレーション制御回路
１０４  内部バス
１０５  外部Ｉ／Ｏ
１０６、１０７、１０８、１０９  信号線
２００  ツール
２０１  設計サポートモジュール
２０２  論理合成モジュール
２０３  配置配線モジュール
【図１】
0005882714.tif 000002
【図２】
0005882714.tif 000003
【図４】
0005882714.tif 000004
【図５】
0005882714.tif 000005
【図６】
0005882714.tif 000006
【図７】
0005882714.tif 000007
【図８】
0005882714.tif 000008
【図１１】
0005882714.tif 000009
【図１２】
0005882714.tif 000010
【図１３】
0005882714.tif 000011
【図１４】
0005882714.tif 000012
【図３】
0005882714.tif 000013
【図９】
0005882714.tif 000014
【図１０】
0005882714.tif 000015