(57)【要約】【課題】ダイナミックリコンフィギャラブル回路のデザインを容易にし、また開発期間の短縮を可能にすること。【解決手段】設計装置５００には、論理アセンブラ５０１、ハードウェア要素情報５０２、要求性能ファイル５０３、汎用エレメント構成ファイル５０４、共有指示ファイル５０５が入力情報５１０として入力される。また、設計装置５００は、エレメント構成定義ファイル５０６、資源使用状況ファイル５０７、物理アセンブラ５０８、性能レポート５０９を出力情報５２０として出力する。ダイナミックリコンフィギャラブル回路は、エレメント構成定義ファイル５０６に定義されたクラスタ数およびＰＥ数を最低限含むように作成される。そして、コンテキストが切り替わることにより、そのコンテキストに応じた物理アセンブラ５０８および資源使用状況ファイル５０７を満足するような回路に再構成されることとなる。【選択図】図５
2010026599.tif 000002
【特許請求の範囲】
【請求項１】
複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計するコンピュータを、
クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得する取得手段、
前記取得手段によって取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出する算出手段、
前記算出手段によって算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成する生成手段、
前記生成手段によって生成された回路構成を出力する出力手段、
として機能させることを特徴とする設計プログラム。
【請求項２】
前記算出手段は、
前記演算器数として、前記演算器の必要最小数を算出することを特徴とする請求項１に記載の設計プログラム。
【請求項３】
前記算出手段は、
前記クラスタ数として、前記クラスタの必要最小数を算出することを特徴とする請求項１または２に記載の設計プログラム。
【請求項４】
前記生成手段は、
前記コンテキストごとに生成された回路構成を網羅する回路構成を生成し、
前記出力手段は、
前記コンテキストごとに生成された回路構成および当該回路構成を網羅する回路構成のうち少なくともいずれか一つを出力することを特徴とする請求項１〜３のいずれか一つに記載の設計プログラム。
【請求項５】
前記生成手段は、
前記ダイナミックリコンフィギャラブル回路に関する制約情報を満足する回路構成を生成することを特徴とする請求項１〜４のいずれか一つに記載の設計プログラム。
【請求項６】
前記コンピュータを、
前記クラスタ数および前記演算器数に基づいて、前記回路構成が実現可能な構成であるか否かを判断する実現可能性判断手段として機能させ、
前記生成手段は、
前記実現可能性判断手段によって実現可能な構成でないと判断された回路構成内の前記演算器の配置または前記ネットワークモジュールの結線を変更させた次状態の回路構成を、前記クラスタ数および前記演算器数を満足するように生成することを特徴とする請求項１〜４のいずれか一つに記載の設計プログラム。
【請求項７】
前記コンピュータを、
前記ダイナミックリコンフィギャラブル回路に関する制約情報に基づいて、前記回路構成が実現可能な構成であるか否かを前記回路構成ごとに判断する実現可能性判断手段として機能させ、
前記生成手段は、
前記実現可能性判断手段によって実現可能な構成でないと判断された回路構成内の前記演算器の配置または前記ネットワークモジュールの結線を変更させた次状態の回路構成を、前記クラスタ数および前記演算器数を満足するように生成することを特徴とする請求項５に記載の設計プログラム。
【請求項８】
前記コンピュータを、
焼きなまし法を用いて、前記次状態の回路構成の採用を決定する採用決定手段として機能させ、
前記出力手段は、
前記採用決定手段によって決定された前記次状態の回路構成を出力することを特徴とする請求項６または７に記載の設計プログラム。
【請求項９】
複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計する設計装置であって、
クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得する取得手段と、
前記取得手段によって取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出する算出手段と、
前記算出手段によって算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成する生成手段と、
前記生成手段によって生成された回路構成を出力する出力手段と、
を備えることを特徴とする設計装置。
【請求項１０】
複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計するコンピュータが、
クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得する取得工程と、
前記取得工程によって取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出する算出工程と、
前記算出工程によって算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成する生成工程と、
前記生成工程によって生成された回路構成を出力する出力工程と、
を実行することを特徴とする設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計する設計プログラム、設計装置、および設計方法に関する。
【背景技術】
【０００２】
近年、演算や選択、遅延などを実行する演算器（プロセッシングエレメント。以下、単に「ＰＥ」と称す。）と、各ＰＥをつなぐネットワークとを組み合わせて、リコンフィギャラブル（「再構成可能」ともいう）回路が実用化されている。リコンフィギャラブル回路のうちＰＥの規模が大きい回路は粗粒度の回路と呼ばれている。ここでは、ＰＥとネットワークの接続情報はコンテキストと呼ばれ、コンテキストは必要に応じて変更することができる。
【０００３】
特に、コンテキストを１クロック程度で変更できるリコンフィギャラブル回路は、ダイナミックリコンフィギャラブル（「動的再構成可能」ともいう）回路と呼ばれ、ダイナミックリコンフィギャラブル回路では、コンテキストを次々と切り替えることにより、複数とおりの回路構成を単一の電子回路で実現することができる。
【０００４】
ネットワーク資源やダイナミックリコンフィグレーションを細かい単位で実行するようにするため、いくつかのＰＥとネットワークなどの制御系とをまとめたクラスタを単位とする電子回路もある（たとえば、下記特許文献１を参照。）。
【０００５】
【特許文献１】特開２００６−１８５１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ダイナミックリコンフィギャラブル回路を利用する際には、二つの設計が必要になる。一つ目は、ダイナミックリコンフィギャラブル回路そのものの設計であり、もう一つはダイナミックリコンフィギャラブル回路上で実現する回路の設計である。後者に関しては、高級言語から翻訳する方法を基本とした設計方法もあり、解決策は実現化されつつある。
【０００７】
一方、前者は、ダイナミックリコンフィギャラブル回路が様々な種類のＰＥからなる粗粒度回路の場合、どの機能を持ったＰＥを組み合わせて回路を作るかが問題となる。今のところ、冗長にして汎用性を持たせた回路を予め設計しておき、そこに動的プログラムを載せている。この方法では、回路規模の肥大、高チップ単価、大消費電力を招くという問題がある。
【０００８】
ダイナミックリコンフィギャラブル回路では、ダイナミックリコンフィグレーションによって物理回路を使いまわすことにより、使用する物理的な論理回路面積を削減できる。ダイナミックリコンフィグレーションは、物理的回路を時間分割して別の回路として使いまわすことに他ならない。このため、通常は、ダイナミックリコンフィグレーションを行うと、実行速度は低下するという問題がある。
【０００９】
また、ダイナミックリコンフィギャラブル回路の実用で見込まれるプログラムの回路規模（ＰＥの数）は、数十から数千個を超え、コンテキスト毎に使用するＰＥの種類や量が異なっており、クラスタをまたぐネットワークの制限もＰＥの数に応じて多くなる。したがって、上述した特許文献１のようなクラスタをまたぐネットワークの制限を考慮してＰＥの配置を手作業で決定することは非常に困難であるという問題がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するため、ダイナミックリコンフィギャラブル回路で実現される回路の回路面積および消費電力の見積もりの工数削減、ダイナミックリコンフィギャラブル回路で実現される回路の回路構成決定作業の容易化および工数削減、ダイナミックリコンフィギャラブル回路で実現される回路での配置配線の容易化および工数削減、クラスタ数の最小化およびそのための工数削減、ダイナミックリコンフィギャラブル回路で実現される回路のパフォーマンスや面積などの改善点の調査および反映の工数削減を図ることができる設計プログラム、設計装置、および設計方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、この設計プログラム、設計装置、および設計方法は、複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計するにあたって、クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得し、取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出し、算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成し、生成された回路構成を出力することを要件とする。
【発明の効果】
【００１２】
この設計プログラム、設計装置、および設計方法によれば、ダイナミックリコンフィギャラブル回路の設計の容易化および開発期間の短縮を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この設計プログラム、設計装置、および設計方法の好適な実施の形態を詳細に説明する。ダイナミックリコンフィギャラブル回路をデザインする作業工程は、以下のとおりである。
（１）ダイナミックリコンフィギャラブル回路に載せる論理の検証
（２）ダイナミックリコンフィギャラブル回路の設計
（３）ダイナミックリコンフィギャラブル回路の結線検証
（４）ダイナミックリコンフィギャラブル回路の動作検証（シミュレーション）
（５）ダイナミックリコンフィギャラブル回路にプログラムを載せた回路の動作検証（シミュレーション）
（６）ＣＰＵ、ＩＰなどと組み合わせる物理的なレイアウト
【００１４】
高級言語でプログラムを組む場合においては、（１）はパソコンなどで検証可能である。また、（３）と（４）は自動実行するシステムが組まれている。（５）は基本的には動作が保障されている。本実施の形態は（２）を簡略化または自動化する。これにより、ダイナミックリコンフィギャラブル回路のデザインを容易にし、また開発期間の短縮を可能にすることができる。
【００１５】
（ダイナミックリコンフィギャラブル回路およびその設計の概要）
つぎに、実施の形態にかかるダイナミックリコンフィギャラブル回路およびその設計の概要について説明する。
【００１６】
図１は、ダイナミックリコンフィギャラブル回路で使用されるコンテキストを示す説明図である。ダイナミックリコンフィギャラブル回路は、コンテキストＣＴ（ＣＴ０，ＣＴ１）を有する。図１では、コンテキストＣＴ０からコンテキストＣＴ１に切り替えられたことをあらわしている。各コンテキストＣＴ内のブロックはＰＥを示しており、ブロック内の表記（ＣＯＵＮＴＥＲ、ＡＤＤ、ＭＵＬ、ＲＡＭ、ｄｅｌａｙ、ＳＵＢ、ＡＣＣ）によりＰＥの種別をあらわしている。
【００１７】
また、ＰＥ間の矢印は、データネットワークをあらわしている。また、各コンテキストＣＴ０，ＣＴ１の左端のＣ＃（＃は数字）は、実行サイクル番号をあらわしている。なお、図１では、制御フロー用ネットワークは省略している。
【００１８】
図２は、ＰＥ情報テーブルを示す説明図である。ＰＥ情報テーブル２００には、ＰＥとその個数がＰＥの種別ごとに対応付けられている。コンテキストＣＴ０，コンテキストＣＴ１をダイナミックリコンフィギャラブル回路に載せるためには、図２に示した種別のＰＥとその個数が必要となる。
【００１９】
図３は、ダイナミックリコンフィギャラブル回路で実現される回路の概念図である。図３に示した回路３００は、クラスタＣＬａとクラスタＣＬｂが接続されて構成されている。各クラスタＣＬａ，ＣＬｂ内のブロックはＰＥをあらわしており、矢印はネットワークをあらわしている。クラスタＣＬａ，ＣＬｂ内においては、ネットワークはＰＥ間を自由に接続することができる。
【００２０】
図４は、ＰＥとネットワークモジュールとの接続関係を示す説明図である。各クラスタＣＬ＃（＃は番号）にはＰＥとネットワークモジュールＮＭ＃が備えられている。各クラスタＣＬ＃において、ＰＥとネットワークモジュールＮＭ＃との間はクラスタ内結線されており、クラスタＣＬ＃間はクラスタ間結線されている。また、クラスタＣＬ０およびクラスタＣＬ２は外部インターフェースと接続される。ネットワークモジュールＮＭ＃に接続するＰＥの種類とその個数を変更することで、用途に合ったダイナミックリコンフィギャラブル回路を生成することができる。また、クラスタの数も変更可能である。
【００２１】
実際に使用するプログラムが既に判っている場合、実行速度などの要求を満たすダイナミックリコンフィギャラブル回路のうち、なるべく回路面積の少なくなるようなものを合成することで、ダイナミックリコンフィギャラブル回路のコストダウンが可能になる。
【００２２】
そこで、本実施の形態では、実際に使用される機能、性能を実現するのに必要十分な量を割り出して、ＰＥの数と配置、および、クラスタの数を変更することでダイナミックリコンフィギャラブル回路を設計する。ただし、ネットワークモジュールとＰＥと制御部の回路は、予め決められたものを用いる。こうすることにより、信号のタイミングが保障され、設計工程の大幅な自動化と、回路検証の省略が可能になり、設計および検証に掛かる期間を短縮することができる。
【００２３】
本実施の形態にかかるダイナミックリコンフィギャラブル回路の設計装置において、ダイナミックリコンフィギャラブル回路を決定するには、面積や消費電力、実行サイクル数の条件とともに、各コンテキストの論理アセンブラ、または論理データフローが必要になる。高級言語記述の場合には、単一または複数のプログラムを適切なコンパイラでコンパイルすることにより、単数又は複数のコンテキストを含む論理アセンブラに翻訳し、これを入力する。
【００２４】
ここで、アセンブラとは、各コンテキストの内容や、コンテキストの使用される順番やコンテキストを実行するハードウェアをあらわす記述である。コンテキストの使用される順番は、条件分岐等によって複数のパターンがありうる。また、１コンテキスト中のすべてのＰＥは１クラスタに入ると仮定して書かれたアセンブラを論理アセンブラという。
【００２５】
（設計装置の入力情報）
図５は、設計装置の入出力情報を示す説明図である。設計装置５００には、論理アセンブラ５０１、ハードウェア要素情報５０２、要求性能ファイル５０３、汎用エレメント構成ファイル５０４、共有指示ファイル５０５が入力情報５１０として入力される。
【００２６】
論理アセンブラ５０１は、１コンテキスト中のすべてのＰＥは１クラスタに入ると仮定して書かれたアセンブラであるため、論理アセンブラ５０１はクラスタの数分入力されることとなる。
【００２７】
図６は、論理アセンブラ５０１の一例を示す説明図である。論理アセンブラ５０１において、“ｄｅｆ＿ｖｉｒｔｕａｌ＿ｃｏｎｆｉｇ（）”は、仮想的な構成として配置されたＰＥを定義している。たとえば、“ｄｅｆ＿ｖｉｒｔｕａｌ＿ｃｏｎｆｉｇ（０）”では、カウンタとして“ｃｏｕｎｔｅｒ（０）”および“ｃｏｕｎｔｅｒ（１）”、加算器として“ａｄｄｅｒ（０）”および“ａｄｄｅｒ（１）”、乗算器として“ｍｕｌｔｉｐｌｉｅｒ（０）”、遅延器として“ｄｅｌａｙ（０）”および“ｄｅｌａｙ（１）”、ＲＡＭとして“ｒａｍ（０）”および“ｒａｍ（１）”が定義されている。
【００２８】
また、“ｄａｔａ＿ｎｅｔｗｏｒｋ（）”は、仮想配置されたＰＥのデータネットワークをあらわしている。これにより、どのＰＥのどの出力がどのＰＥの入力につながっているかが特定できる。また、“ｃｏｎｔｒｏｌ＿ｎｅｔｗｏｒｋ（）”は、制御フロー用ネットワークの記述である。ここでは、カウンタとシーケンサとの間の制御内容が記述されている。このように論理アセンブラ５０１には、制御フロー用ネットワークの記述も含めることができる。
【００２９】
論理アセンブラ５０１の中では、ＰＥの数の制限などがないため、ハードウェアイメージはない。高級言語でプログラムを与えた場合、コンパイラを用いて論理アセンブラ５０１を得て、それを入力とする。論理アセンブラ５０１から、その使用ＰＥがわかる。論理アセンブラ５０１とデータベースから、設計しようとするダイナミックリコンフィギャラブル回路の面積が大まかに計算できる。論理アセンブラ５０１は、ダイナミックリコンフィギャラブル回路を設計する設計装置５００への入力情報５１０となる。
【００３０】
図７は、ハードウェア要素情報５０２を示す説明図である。ハードウェア要素情報５０２とは、コンパイルや性能見積もりに必要なハードウェアの情報である。ハードウェア要素情報５０２としてはＰＥのほか、クラスタ間ネットワーク、クラスタ内ネットワーク、制御部の情報も記憶されている。ＰＥを例に挙げると、ＰＥごとに、プロセステクノロジー、項目、（項目の）値、単位が記憶されている。ダイナミックリコンフィギャラブル回路の消費電力を算出するためには、使用ＰＥ数と動作率が必要になる。動作率として予めユーザーに与えられた値、ユーザーにより指定されない場合は、デフォルト値を仮定することで算出する。
【００３１】
処理速度を最適化した場合、処理はパイプライン化されることが前提となる。このとき、処理サイクル数はループ１回に割り振られるサイクル数となる。このサイクル数は、適切に並列化、パイプライン化されている場合、同一ＲＡＭへのアクセス回数と、ＲＡＭが同時に受け付けるアクセス数によって決まる。このサイクル数を主たる性能とし、ループを１回きりで抜けた場合の全体の処理時間をもう一つの速度の性能として評価することができる。論理アセンブラ５０１では、それぞれのＲＡＭへのアクセスは、パイプラインループ実行中１回ずつなので、“ｉｎｔｅｒｖａｌ＝０”になっている。ハードウェア要素情報５０２は、設計装置５００への入力情報５１０となる。
【００３２】
また、図５において、要求性能ファイル５０３とは、設計されるダイナミックリコンフィギャラブル回路に要求される性能情報が記述されたファイルである。性能情報としては、たとえば、ダイナミックリコンフィギャラブル回路の上限面積、１イタレーションあたりの実行サイクル数などが記述されている。
【００３３】
図８は、汎用エレメント構成ファイル５０４の一例を示す説明図である。図８では、最大８クラスタまで搭載できるハードウェア向けの汎用エレメント構成ファイル５０４の内容が記述されている。一番左の列はクラスタ番号である。他の列は、左から、加算器、乗算器、アキュムレータ、遅延器、パイプラインループカウンタ、レジスタ、ＲＡＭ、制御のためのＰＥの個数が記述されている。
【００３４】
図９は、ＰＥに対する共有指示ファイル５０５の一例を示す説明図である。このファイルの内、一つのプログラム内のコンテキスト間共有の情報は、コンパイラによって生成される。複数のプログラム間でＰＥを共有する場合、および、ＰＥを占有する場合は、ユーザーによって予めコンパイラに指示される。
【００３５】
図９において、“ｃｏｍｍｏｎ（０，−１，−１）”では、プログラム“ｐｒｏｇ＿ｎａｍｅ＿０”と“ｐｒｏｇ＿ｎａｍｅ＿１”の中のコンテキストでＲＡＭを共有していることが記述されており、他のプログラムが同じＲＡＭを更新することは禁止していない。引数の始めの“０”は、共有条件の番号で、ファイル中で唯一の番号とする。引数の二つの“−１”は、位置指定を行わないことを示している。
【００３６】
“ｃｏｍｍｏｎ（１，１，２）”は、プログラム“ｐｒｏｇ＿ｎａｍｅ＿１”の３つのコンテキスト間でレジスタを共有していることを示している。他のプログラムが同じレジスタを更新することは禁止していない。引数の二番目の“１”はクラスタ１、引数の三番目の“２”は、２個目のレジスタを使用することを示している。
【００３７】
“ｅｘｃｌｕｓｉｖｅ（０，−１，−１）”は、プログラム“ｐｒｏｇ＿ｎａｍｅ＿０”と“ｐｒｏｇ＿ｎａｍｅ＿１”の中のコンテキストでＲＡＭを共有し、かつ、同時にコンパイルや配置配線の行われる他のプログラムでは、同ＲＡＭを変更しないことを指示している。引数の二つの“−１”により、位置指定を行わない。
【００３８】
また、設計装置５００は、エレメント構成定義ファイル５０６、資源使用状況ファイル５０７、物理アセンブラ５０８、性能レポート５０９を出力情報５２０として出力する。ダイナミックリコンフィギャラブル回路は、エレメント構成定義ファイル５０６に定義されたクラスタ数およびＰＥ数を最低限含むように作成される。そして、コンテキストが切り替わることにより、そのコンテキストに応じた物理アセンブラ５０８および資源使用状況ファイル５０７を満足するような回路に再構成されることとなる。
【００３９】
図１０は、エレメント構成定義ファイル５０６を示す説明図である。エレメント構成定義ファイル５０６は、設計装置５００により生成された回路構成の各クラスタが有するＰＥ種とその数を有している。
【００４０】
図１１は、資源使用状況ファイル５０７を示す説明図である。資源使用状況ファイル５０７は、コンテキストごとにコンテキストで使用されるクラスタ内のＰＥの割合を示している。なお、各ＰＥの使用状況をあらわす割合のうち分母は、そのクラスタにおけるエレメント構成定義ファイル５０６のＰＥ数となる。
【００４１】
たとえば、コンテキストＣＴ０は、クラスタＣＬ０，ＣＬ１から構成されており、クラスタＣＬ０のａｄｄｒ（加算器）については、“１／２”となっている。すなわち、クラスタＣＬ０ではａｄｄｒ（加算器）は最大で２個配置できるが、コンテキストＣＴ０については、クラスタＣＬ０には、ａｄｄｒ（加算器）を１個配置していることがわかる。
【００４２】
図１２は、物理アセンブラ５０８を示す説明図である。物理アセンブラ５０８は、設計装置５００により得られる回路構成をあらわす記述である。物理アセンブラ５０８は、回路構成を生成する際に評価した各コンテキストのエレメントの配置、配線の仕方および回路構成から生成される。
【００４３】
図１３は、性能レポート５０９を示す説明図である。性能レポート５０９には、各パイプラインループのインターバルのパラメータと、コンテキスト毎に生成された全体のレイテンシーとが記述される。このパラメータとレイテンシーは、物理アセンブラ５０８単位で実行速度のレポートとして得られる。そのほか、図示はしないが、回路面積や消費電力も性能レポート５０９として出力する。
【００４４】
（設計装置５００のハードウェア構成）
図１４は、実施の形態にかかる設計装置５００のハードウェア構成を示す説明図である。図１４において、設計装置５００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１４０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）１４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４０３と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１４０４と、磁気ディスク１４０５と、光ディスクドライブ１４０６と、光ディスク１４０７と、ディスプレイ１４０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１４０９と、キーボード１４１０と、マウス１４１１と、スキャナ１４１２と、プリンタ１４１３と、を備えている。また、各構成部はバス１４００によってそれぞれ接続されている。
【００４５】
ここで、ＣＰＵ１４０１は、設計装置５００の全体の制御を司る。ＲＯＭ１４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１４０３は、ＣＰＵ１４０１のワークエリアとして使用される。磁気ディスクドライブ１４０４は、ＣＰＵ１４０１の制御にしたがって磁気ディスク１４０５に対するデータのリード／ライトを制御する。磁気ディスク１４０５は、磁気ディスクドライブ１４０４の制御で書き込まれたデータを記憶する。
【００４６】
光ディスクドライブ１４０６は、ＣＰＵ１４０１の制御にしたがって光ディスク１４０７に対するデータのリード／ライトを制御する。光ディスク１４０７は、光ディスクドライブ１４０６の制御で書き込まれたデータを記憶したり、光ディスク１４０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４７】
ディスプレイ１４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１４０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４８】
インターフェース（以下、「Ｉ／Ｆ」と略する。）１４０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク１４１４に接続され、このネットワーク１４１４を介して他の装置に接続される。そして、Ｉ／Ｆ１４０９は、ネットワーク１４１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１４０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４９】
キーボード１４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００５０】
スキャナ１４１２は、画像を光学的に読み取り、設計装置５００内に画像データを取り込む。なお、スキャナ１４１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ１４１３は、画像データや文書データを印刷する。プリンタ１４１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００５１】
（回路構成の求め方）
つぎに、回路構成の求め方について説明する。単一コンテキストのＰＥをクラスタに分配する場合、大まかに次の３つに分けられる。
【００５２】
（ア）クラスタ内のＰＥの構成は予め決まっており、ＰＥの追加はできない状態。
（イ）クラスタ内のＰＥの構成は予め決まっているが、ＰＥを追加できる状態。
（ウ）クラスタ内のＰＥはまったく決まっておらず、自由にＰＥを追加してクラスタの構成を決めつつ、コンテキスト内のＰＥをクラスタへ分配する場合。
【００５３】
（ア）の場合は、既にあるＰＥにコンテキストをマップしていくという作業になる。（イ）も同様だが、（イ）ではＰＥが不足したときには新たに追加すればよい点が異なる。（ウ）では、単に新たにＰＥを追加していけばよい。いずれの場合にも、簡便な方法として、焼きなまし法がある。他に、長いデータフローが一つのクラスタに入るように配置する方法、短いデータフローをつめていく方法、発見的な方法等が考えられるが、焼きなまし法に比べると、条件を満たす構成を見つけることは難しい。また、バランスの取れた配置に近づけるといった操作も複雑になる。
【００５４】
これらの方法を使い、ＰＥをクラスタに載せていく。ダイナミックリコンフィギャラブル回路の制限もユーザーの要求も満たした場合は、コンテキストの分配状態を出力する。（イ）または（ウ）の場合、ハードウェアの構成情報も出力する。
【００５５】
ダイナミックリコンフィギャラブル回路の制限は守れたが、ユーザーの要求を満たす配置が見つからない場合には、コンテキストの分配状態を出力し、条件を満たせなかった旨を告げる。（イ）または（ウ）の場合、ハードウェアの構成情報も出力する。ダイナミックリコンフィギャラブル回路の制限を守った配置方法が見つからない場合にはその旨を設計装置５００が伝える。この場合、ユーザーは、さらに細かくコンテキスト切り替えを用いるなどの変更を行うことになる。
【００５６】
複数のコンテキストを実装する場合、ＬＳＩ設計段階の場合であれば、設計装置５００に搭載するコンテキストを同時に与えて最適なＰＥの構成を算出させるのが良い。複数のコンテキストを同時に満たすＰＥの構成を決定するアルゴリズムは大まかに２つある。いずれの場合もネットワークの制限を満たすＰＥの構成が見つからない場合にはエラーを出して終了する。
【００５７】
一つ目の方法では、まず設計装置５００が、すべてのコンテキストを載せるための最小のＰＥの組み合わせを論理コンパイル結果から算出し、必要クラスタ数を見積もる。この時点で、すでに許される面積を超過しそうな場合はユーザーに知らせる。
【００５８】
つぎに、先ほど求めた数分だけクラスタを用意し、上記（ウ）の方法で、あるコンテキストが載る構成を計算する。このときに、バランスの取れた構成に近づく様に配置していく。後の載せやすさを考えると、一番規模の大きいコンテキストから載せるほうが良い。コンテキストが小さい場合を除き、どこかのクラスタにＰＥを載せすぎないように、またクラスタ間ネットワークが制限内に収まるようにする。
【００５９】
つぎに、クラスタ間ネットワークやクラスタ内ネットワークの制限を守りながら、（イ）の方法で、残りのコンテキストをひとつずつ載せていく。載せていくコンテキストの順番はいくつかのパターンが考えられるが、ここではＰＥの規模が大きい順に計算するとしておく。また、コンテキストが小さい場合には、載せるのに使うクラスタ数を減らして、省電力化を図る。もし、どうやっても載らない場合、許される範囲でクラスタ数を増やすか減らすなどして挑戦する。
【００６０】
二つ目の方法は焼きなましシミュレーション（シミュレーテッドアニーリング。以下、単に、「焼きなまし法」と称す。）である。この方法では、前者と同様の方法の他に、（ウ）の方法ですべてのコンテキストを載せ、同時に評価しながらＰＥの構成を決めていくことが可能である。いずれの場合にも、コンテキスト間で同一のＰＥを使用する必要がある場合には、そのように配置する。この状況は、通常、ＲＡＭやレジスタなど、データを保持するＰＥに対して発生する。この場合、ＰＥをコンテキスト間で共有することを共有指示ファイル５０５で指示する。以下、本実施の形態では、焼きなまし法を用いて回路構成を求める。
【００６１】
また、ＰＥの配置完了後、タイミングを調整する。その後、仮想ＰＥを、物理的なＰＥに置き換えて実際のＰＥの構成を決める。これを、実ＰＥ化と称す。配置後、面積や電力等に余裕がある場合には、条件の範囲内で余分なエレメントを追加し、各クラスタのＰＥの構成をバランスの取れたものに近づけることにより、汎用性を増すことも可能である。これを汎用化と称す。バランスの取れた構成は、汎用エレメント構成ファイル５０４により与える。以上の内容を踏まえて、本実施の形態にかかる設計装置５００の設計処理手順について説明する。
【００６２】
（設計装置５００の設計処理手順）
図１５は、本実施の形態にかかる設計装置５００の設計処理手順を示すフローチャートである。図１５において、上述した入力情報５１０を読み込み（ステップＳ１５０１）、入力情報５１０内の論理アセンブラ５０１をコンテキストごとにデータフローに変換する（ステップＳ１５０２）。そして、ＰＥおよびクラスタの必要最小数を算出する（ステップＳ１５０３）。
【００６３】
具体的には、たとえば、使用しているＰＥ数を種類ごと、コンテキストごとに計数し、全コンテキストを通して最大幾つのＰＥを使用するかをＰＥ種ごとに算出する。また、同一のＰＥを排他的に使用することが指示されている場合、排他的使用が可能になるように数を算出する。得られた値とクラスタ内ネットワークの入出力端子数から、必要なクラスタ数を算出する。より具体的には、すべてのＰＥは、クラスタ内ネットワークでつながるモデルとして考える。この算出結果が、エレメント構成定義ファイル５０６となって出力される。
【００６４】
図１６は、クラスタ内ネットワークを示す説明図であり、図１７は、クラスタ間ネットワークを示す説明図である。ＰＥは、クラスタ間ネットワーク端子がつながっていない端子に接続されることとなる。図１６および図１７の例では、１クラスタあたり入出力５６端子あるものとする。
【００６５】
そして、必要なＰＥ種とそのＰＥ数と、ＰＥのネットワーク端子とから、すべてのＰＥをつなぐのに必要なネットワークの端子数がわかる。すべてのＰＥの端子がネットワークに接続できるクラスタ数を、クラスタの必要最小数とする。たとえば、ＰＥの入力（ネットワークの出力）が２００端子、ＰＥの出力（ネットワークの入力）が１００端子必要な場合、４クラスタが必要最小数となる。すなわち、４個のクラスタがあれば、すべてのＰＥは、４×５６（＝２２４）個の端子を有することとなり、ＰＥの入力（ネットワークの出力）が２００端子およびＰＥの出力（ネットワークの入力）が１００端子を満たす。
【００６６】
そして、図１５において、使用クラスタ数ｉをｉ＝ｉｍｉｎとする（ステップＳ１５０４）。ｉｍｉｎはクラスタ必要最小数である。そして、ｉ＞ｉｍａｘであるか否かを判断する（ステップＳ１５０５）。ｉｍａｘは最大クラスタ数である。ｉ＞ｉｍａｘでない場合（ステップＳ１５０５：Ｎｏ）、使用クラスタ数ｉの回路構成作成処理を実行する（ステップＳ１５０６）。そして、回路構成が作成されたか否かを判断する（ステップＳ１５０７）。
【００６７】
回路構成が作成された場合（ステップＳ１５０７：Ｙｅｓ）、汎用化指示があるか否かを判断する（ステップＳ１５０８）。具体的には、汎用化指示ファイルが入力情報５１０として読み込まれているか否かを判断する。
【００６８】
汎用化指示ありの場合（ステップＳ１５０８：Ｙｅｓ）、汎用化処理を実行し（ステップＳ１５０９）、出力情報生成処理を実行して（ステップＳ１５１０）、ステップＳ１５１１に移行する。出力情報生成処理については後述する。一方、汎用化指示がない場合（ステップＳ１５０８：Ｎｏ）、汎用化処理を実行せず、出力情報生成処理を実行して（ステップＳ１５１０）、ステップＳ１５１１に移行する。
【００６９】
また、ステップＳ１５０７において、回路構成が作成されなかった場合（ステップＳ１５０７：Ｎｏ）、ステップＳ１５１１に移行する。ステップＳ１５１１では、生成された出力情報５２０を出力する（ステップＳ１５１１）。また、ステップＳ１５０７において回路構成が作成されなかった場合（ステップＳ１５０７：Ｎｏ）には、エラー出力する。そして、ｉをインクリメントし（ステップＳ１５１２）、ステップＳ１５０５に戻る。ステップＳ１５０５において、ｉ＞ｉｍａｘである場合（ステップＳ１５０５：Ｙｅｓ）、一連の処理を終了する。
【００７０】
なお、図１５では、ステップＳ１５０５において、ｉ＞ｉｍａｘである場合（ステップＳ１５０５：Ｙｅｓ）に終了することとしているが、ステップＳ１５０７において回路構成が作成されて（ステップＳ１５０７：Ｙｅｓ）場合に、ステップＳ１５０８〜Ｓ１５１２を実行して、ステップＳ１５０５に戻ってきた場合に、終了してもよい。
【００７１】
ここで、上述した出力情報生成処理（ステップＳ１５１０）について説明する。出力情報生成処理では、エレメント構成定義ファイル５０６を生成する。また、回路構成を生成する際に評価した各コンテキストのエレメントの配置、配線の仕方および回路構成から、物理アセンブラ５０８を生成する。
【００７２】
さらに、物理アセンブラ５０８から、各パイプラインループのインターバルのパラメータと、全体のレイテンシーをコンテキスト毎に生成し、実行速度のレポートとして物理アセンブラ５０８単位にまとめて出力する。使用資源情報もコンテキスト毎に生成し、物理アセンブラ５０８単位で出力する。そのほか、回路面積や消費電力を算出して出力情報５２０とする。
【００７３】
回路面積は、下記式（１）により算出される。
【００７４】
【数１】
2010026599.tif 000003
【００７５】
ここで、ｓ（ｃ）はコンテキストｃでの面積、ｎPE（ｃ，ｌ）は、コンテキストｃでのＰＥの種類ｌの使用個数、ｓPE（ｌ，ｔ）はテクノロジーｔでのＰＥの種類ｌの一個あたりの面積、ｎCl（ｃ）は、コンテキストｃでのクラスタの使用個数、ｓCl（ｔ）はテクノロジーｔでの１クラスタあたりの制御系とクラスタ内ネットワークの面積の合計、ｎEN（ｃ）はコンテキストｃでのクラスタ間ネットワークの使用数、ｓEN（ｔ）はテクノロジーｔでのクラスタ間ネットワーク１接続あたりの面積である。
【００７６】
消費電力は、下記式（２）により算出される。
【００７７】
【数２】
2010026599.tif 000004
【００７８】
上記式（１）ではｓで面積を表したが、ここではｐで消費電力を表している。すなわち、ｐ（ｃ）はコンテキストｃでの消費電力である。ｎPE（ｃ，ｌ）は、コンテキストｃでのＰＥの種類ｌの使用個数である。ｐPE（ｌ，ｔ）はテクノロジーｔでのＰＥの種類ｌの一個あたりの消費電力である。ｎCl（ｃ）は、コンテキストｃでのクラスタの使用個数である。
【００７９】
ｐCl（ｔ）はテクノロジーｔでの１クラスタあたりの制御系とクラスタ内ネットワークの消費電力の合計である。ｎEN（ｃ）はコンテキストｃでのクラスタ間ネットワークの使用数である。ｐEN（ｔ）はテクノロジーｔでのクラスタ間ネットワーク１接続あたりの消費電力である。また、ｄは回路の動作率である。
【００８０】
つぎに、回路構成作成処理（ステップＳ１５０６）の詳細な処理手順について説明する。ここでは、焼きなまし法を応用した回路構成作成処理について説明する。
【００８１】
（回路構成作成処理の詳細な処理手順）
図１８は、回路構成作成処理の詳細な処理手順を示すフローチャートである。まず、焼きなまし法で用いるパラメータを読み込む（ステップＳ１８０１）。図１９は、焼きなまし法で用いるパラメータを示す説明図である。このほか、図２に示したＰＥ情報テーブル２００や、図８に示した汎用エレメント構成ファイル５０４も読み込んでおく。そして、ループカウンタｓをｓ＝０とし（ステップＳ１８０２）、初期状態生成処理を実行する（ステップＳ１８０３）。初期状態生成処理（ステップＳ１８０３）については後述する。
【００８２】
このあと、現状態は実現可能な回路構成か否かを判断する（ステップＳ１８０４）。具体的には、たとえば、ハードウェア要素情報５０２に照らし合わせ、クラスタ内のＰＥの構成が、入出力端子数等の制約を満たしているか否かにより判断する。満たしている場合、現状態は実現可能な回路構成であると判断する。
【００８３】
実現可能な回路構成である場合（ステップＳ１８０４：Ｙｅｓ）、ステップＳ１５０７に移行する。一方、実現可能な回路構成でない場合（ステップＳ１８０４：Ｎｏ）、次状態生成処理を実行する（ステップＳ１８０５）。次状態生成処理（ステップＳ１８０５）についても後述する。
【００８４】
このあと、ｓ＞ｓｍａｘであるか否かを判断する（ステップＳ１８０６）。ｓｍａｘは、図１９に示した繰り返し回数である。ｓ＞ｓｍａｘでない場合（ステップＳ１８０６：Ｎｏ）、ループカウンタｓをインクリメントし（ステップＳ１８０７）、ステップＳ１８０４に戻る。一方、ｓ＞ｓｍａｘである場合（ステップＳ１８０６：Ｙｅｓ）、ステップＳ１５０７に移行する。
【００８５】
（初期状態生成処理の詳細な処理手順）
つぎに、初期状態生成処理の詳細な処理手順について説明する。図２０−１は、初期状態生成処理の詳細な処理手順（前半）を示すフローチャートである。図２０−１において、未処理のコンテキストがあるか否かを判断する（ステップＳ２００１）。未処理のコンテキストがある場合（ステップＳ２００１：Ｙｅｓ）、未処理のコンテキストを選択する（ステップＳ２００２）。そして、使用クラスタ数ｉ分の初期状態の回路構成を生成する（ステップＳ２００３）。
【００８６】
図２１は、初期状態の回路構成を示す説明図である。図２１の初期状態の回路構成２１００では、使用クラスタ数ｉをｉ＝２としている。また、各クラスタＣＬ０，ＣＬ１は、内部のネットワーク入出力端子を１０本ずつ、クラスタＣＬ０，ＣＬ１間のネットワーク入出力端子を２本ずつ持つこととしている。また、図２１中、ネットワークモジュールＮＭ０，ＮＭ１間を接続する点線は、論理的に配線可能であることを示している。この回路構成はＰＥのマッピングがおこなわれていないため、ＰＥが配置されていない。
【００８７】
図２０−１に戻って、初期状態の回路構成２１００を生成した後、コンテキストＣＴ内のＰＥを割り振る（ステップＳ２００４）。具体的には、たとえば、選択コンテキストＣＴのデータフローグラフの上流から、ＰＥ数が平均的に分布するように各クラスタＣＬ０，ＣＬ１にＰＥを置いて行く。置いて行くクラスタの順番は、例えば、クラスタＣＬ０，ＣＬ１，…などとする。例外として、共有指示ファイル５０５において、共有が指示されているＰＥで、対応するＰＥが別のコンテキストＣＴで既に配置済みの場合、同じ位置に配置する。また、配置位置が指定されている場合には、それに従う。
【００８８】
ＰＥを割り振ると、信号線を生成する（ステップＳ２００５）。信号線生成後、タイミング調整処理を実行する（ステップＳ２００６）。具体的には、たとえば、同期回路となるＰＥの待ち合わせ箇所でタイミングを合わせるために、遅延器のＰＥを挿入する操作であり、既に広く行われている処理である。信号線生成後を初期の配置配線イメージ（仮想イメージ）とする。配線を物理的回路に落とすと、タイミングを維持するためのフリップフロップが導入される。
【００８９】
このため、合流点でのタイミングを合わせなおす。これにより、信号線生成後の回路構成が物理イメージとなる。そして、仮想ＰＥの実ＰＥ化を実行する（ステップＳ２００７）ことで、初期状態の回路構成が生成される。仮想ＰＥの実ＰＥ化（ステップＳ２００７）については後述する。
【００９０】
図２２は、実ＰＥ化後における初期状態の回路構成を示す説明図である。図２２における初期状態の回路構成２２００では、ネットワークモジュールＮＭ０，ＮＭ１以外のブロックは、ステップＳ２００４において配置されたＰＥを示している。また、ＰＥとネットワークモジュールＮＭ０（またはＮＭ１）とを接続する実線およびネットワークモジュールＮＭ０，ＮＭ１内の実線は、信号線を示している。
【００９１】
また、ネットワークモジュールＮＭ０，ＮＭ１内の×印は、結線できていないことを示している。そして、この実ＰＥ化後の初期状態の回路構成２２００についてコストＣsを算出する（ステップＳ２００８）。算出されたコストＣsは、実ＰＥ化後の初期状態の回路構成２２００とともに保存しておく。コストＣsは、たとえば、下記式（３），（４）により算出する。
【００９２】
【数３】
2010026599.tif 000005
【００９３】
ここで、Ｃsはｓ番目に生成した状態のコストで、初期状態はｓ＝０と定義する。ｉはクラスタＣＬの番号である。ｊはコンテキスト番号である。ｄj,iは、コンテキストｊ、番号ｉのクラスタで使用したデータネットワークの入出力端子の使用数である。より正確には、ｄj,iは、番号ｊのコンテキスト、番号ｉのクラスタで必要となったデータネットワークの入出力端子数である。ＤiはクラスタＣＬiのデータネットワークの入出力端子数からマージン（図１９を参照）を引いた値である。
【００９４】
ｆDはデータネットワークの超過コスト（図１９を参照）である。ｇj,iは使用したコントロールネットワークの入出力端子の使用数である。より正確には、ｄj,iは、番号ｊのコンテキスト、番号ｉのクラスタで必要となったコントロールネットワークの入出力端子数である。Ｇiはコントロールネットワークの入出力端子数からマージン（図１９を参照）を引いた値である。ｆGはコントロールネットワークの超過コスト（図１９を参照）である。
【００９５】
ｋはクラスタ間およびクラスタ−外部間の番号である。ｈkは番号ｋで必要な配線数、Ｈkは番号ｋに存在する信号線の数からマージンを引いた値である。ｆHは外部インターフェースの超過コスト（図１９を参照）である。ｅはＰＥの種類、Ｎi,eはクラスタＣＬi中のＰＥ“ｅ”の必要な個数である。Ｅi,eは汎用クラスタＣＬi中のＰＥ“ｅ”の個数、ｆEは汎用構成コスト（図１９を参照）である。求めたコストＣsは、仮想イメージと共に保存しておく。なお、コストＣsは、上記式（３），（４）に限らず、焼きなまし法が採用できるコストであれば、他の計算式でもよい。
【００９６】
このあと、ステップＳ２００１に戻る。このステップＳ２００１〜Ｓ２００８の処理を繰り返すことにより、使用クラスタ数ｉの初期状態の回路構成をコンテキストごとに自動生成することができる。
【００９７】
図２０−２は、初期状態生成処理の詳細な処理手順（後半）を示すフローチャートである。図２０−２では、図２０−１で生成されたコンテキストごとの初期状態の回路構成をすべて網羅する初期状態の回路構成をあらたに生成する。
【００９８】
まず、図２０−１のステップＳ２００１において、未処理のコンテキストがないと判断された場合（ステップＳ２００１：Ｎｏ）、使用クラスタ数ｉ分の追加対象の回路構成を生成する（ステップＳ２００９）。この回路構成は、図２１に示した回路構成と同一である。この回路構成に、各コンテキストの初期状態の回路構成をマッピングすることとなる。
【００９９】
つぎに、未処理のクラスタがあるか否かを判断する（ステップＳ２０１０）。未処理のクラスタがある場合（ステップＳ２０１０：Ｙｅｓ）、未処理のクラスタを選択する（ステップＳ２０１１）。そして、未選択の回路構成があるか否かを判断する（ステップＳ２０１２）。未選択の初期状態の回路構成がある場合（ステップＳ２０１２：Ｙｅｓ）、初期状態の回路構成を１つ選択して（ステップＳ２０１３）、追加対象の回路構成に不足している選択回路構成のＰＥを追加更新する（ステップＳ２０１４）。そして、ステップＳ２０１２に戻る。
【０１００】
一方、未選択の回路構成がない場合（ステップＳ２０１２：Ｎｏ）、ステップＳ２０１０に戻る。ステップＳ２０１０において、未処理のクラスタがない場合（ステップＳ２０１０：Ｎｏ）、ステップＳ１８０４に移行する。
【０１０１】
ここで、図２０−２の追加更新の具体例について説明する。ここでは、図２１に示した回路構成２１００を追加対象の回路構成とし、図２２に示した回路構成２２００を、コンテキストＣＴ０の初期状態の回路構成とする。
【０１０２】
図２３は、コンテキストＣＴ１の初期状態の回路構成を示す説明図である。図２２および図２３の回路構成２２００，２３００は、図２０−１に示した処理により生成された回路構成とする。まず、図２２のコンテキストＣＴ０の初期状態の回路構成２２００のうち、追加対象の回路構成２１００には存在しないＰＥを、追加対象の回路構成２１００に追加更新する。
【０１０３】
図２４は、追加更新後の回路構成を示す説明図（その１）である。図２４の回路構成２４００では、図２１の初期状態の回路構成２１００にはないＰＥがマッピングされている。つぎに、図２３のコンテキストＣＴ１の初期状態の回路構成２３００のうち、図２４の追加対象の回路構成２４００には存在しないＰＥを、追加対象の回路構成２４００に追加更新する。
【０１０４】
図２５は、追加更新後の回路構成を示す説明図（その２）である。図２５の回路構成２５００では、図２４の初期状態の回路構成２４００にはないＰＥがマッピングされている。これにより、コンテキストＣＴ０の初期状態の回路構成２２００内のＰＥとコンテキストＣＴ１の初期状態の回路構成２３００内のＰＥを網羅した初期状態の回路構成２５００を得ることができる。
【０１０５】
つぎに、図２０−１に示した仮想ＰＥの実ＰＥ化（ステップＳ２００７）について説明する。仮想ＰＥとは、図１のコンテキストＣＴ内のＰＥであり、物理ＰＥとは、図２２〜図２５のようなマッピングされたＰＥである。
【０１０６】
図２６は、仮想ＰＥの実ＰＥ化の詳細な処理手順を示すフローチャートである。まず、未処理のクラスタがあるか否かを判断する（ステップＳ２６０１）。未処理のクラスタがある場合（ステップＳ２６０１：Ｙｅｓ）、未処理のクラスタを選択し（ステップＳ２６０２）、選択クラスタ内の仮想遅延器を、物理遅延器と同一時間制限で分割する（ステップＳ２６０３）。
【０１０７】
そして、選択クラスタに、コンテキスト間共通の未処理の仮想ＰＥがあるか否かを判断する（ステップＳ２６０４）。未処理の仮想ＰＥがある場合（ステップＳ２６０４：Ｙｅｓ）、物理ＰＥ割付処理を実行して（ステップＳ２６０５）、ステップＳ２６０４に戻る。一方、未処理の仮想ＰＥがない場合（ステップＳ２６０４：Ｎｏ）、選択クラスタに、コンテキスト間共通ではない未処理の仮想ＰＥがあるか否かを判断する（ステップＳ２６０６）。
【０１０８】
未処理の仮想ＰＥがある場合（ステップＳ２６０６：Ｙｅｓ）、物理ＰＥ割付処理を実行し（ステップＳ２６０７）、ステップＳ２６０６に戻る。一方、未処理の仮想ＰＥがない場合（ステップＳ２６０６：Ｎｏ）、ステップＳ２６０１に戻る。ステップＳ２６０１において、未処理のクラスタがない場合（ステップＳ２６０１：Ｎｏ）、ステップＳ２００８に移行する。
【０１０９】
図２７は、物理ＰＥ割付処理の詳細な処理手順を示すフローチャートである。まず、既存の物理ＰＥに仮想ＰＥを格納可能か否かを判断する（ステップＳ２７０１）。格納可能でない場合（ステップＳ２７０１：Ｎｏ）、物理ＰＥを追加して（ステップＳ２７０２）、仮想ＰＥを物理ＰＥに割り付ける（ステップＳ２７０３）。一方、仮想ＰＥを格納可能である場合（ステップＳ２７０１：Ｙｅｓ）、その仮想ＰＥを物理ＰＥに割り付ける（ステップＳ２７０３）。
【０１１０】
つぎに、図１８に示した次状態生成処理（ステップＳ１８０５）の詳細な処理手順について説明する。次状態生成処理（ステップＳ１８０５）は、現状態が実現可能な回路構成でない場合に、現状態の回路構成を元にして、次状態の回路構成を生成する処理である。
【０１１１】
図２８は、図１８に示した次状態生成処理（ステップＳ１８０５）の詳細な処理手順を示すフローチャートである。図２８において、現状態の回路構成において、パラメータとして読み込まれた乱数を用いて選ばれたＰＥを、同じく乱数を用いて選ばれたクラスタに移動することで、次状態の回路構成を生成する（ステップＳ２８０１）。
【０１１２】
具体的には、たとえば、ランダムにコンテキスト、クラスタ、ＰＥを選び、そのＰＥの移動先のクラスタもランダムに選んで移動させる。ただし、配置位置が指定されていて、動かせないＰＥは選ばれないようにしておく。コンテキスト、クラスタ、ＰＥ、ＰＥの種類、移動先クラスタを選ぶ際の確率分布を制御することで効率よく解を求められるが、ここでは説明を割愛する。ＰＥを移動する際、配線もあわせて変更する。また、ＰＥが共有されている場合、共有している他のコンテキストでも同じ様に移動する。生成した次状態は、現状態とは別の記憶領域に記憶しておき、現状を消さない様にしておく。
【０１１３】
そして、この次状態の回路構成に対して、信号線の更新（ステップＳ２８０２）、同期回路となるＰＥの待ち合わせ箇所でのタイミング調整処理（ステップＳ２８０３）、仮想ＰＥの実ＰＥ化（ステップＳ２８０４）、クラスタ構成の更新（ステップＳ２８０５）をおこなう。仮想ＰＥの実ＰＥ化（ステップＳ２８０４）の処理手順は、図２６および図２７に示した処理手順と同一である。また、クラスタ構成の更新（ステップＳ２８０５）は、実ＰＥが追加された場合に実行する。
【０１１４】
このあと、上記式（３），（４）を用いて次状態の回路構成のコストＣs+1を算出する（ステップＳ２８０６）。求めたコストＣs+1は、次状態の回路構成とともに保存しておく。そして、現状態の温度Ｔsを下記式（５）により算出する（ステップＳ２８０７）。
【０１１５】
【数４】
2010026599.tif 000006
【０１１６】
式（５）において、Ｔfは温度Ｔsの最大値、Ｔiは最小値、ｌは減衰パラメータ、Ｒは再加熱までのサイクルで、ｍｏｄ（ｓ，Ｒ）はｓをＲで割った余りをあらわす。コストＣsは、ｍｏｄ（ｓ，Ｒ）が大きくなると、パラメータの設定により温度Ｔsは小さくなる。たとえば、サイクルＲがＲ＝１０，０００とすると、ｓ＝０のとき、温度Ｔsは最小値Ｔiで、ｓが大きくなっていくにつれて温度Ｔsは最大値Ｔfに近づいて行く。焼きなまし法では、通常冷ましていくので、Ｔf＜Ｔiとしており、は小さくなっていく。ｓ＝９，９９９になったとき、温度Ｔsは最小値Ｔiになる。ｓ＝１０，０００になると、ｍｏｄ（ｓ，Ｒ）＝０になるため、再び温度Ｔsは最小値Ｔiになり、ｓ＝１９，９９９になるまで小さくなって行く。以後も同様に、サイクルＲの倍数ごとに温度Ｔsは最小値Ｔiに戻り、次の倍数になるまで、小さくなることを繰り返す。なお、Ｔs，Ｔf，Ｔiはすべて０より大きい実数である。
【０１１７】
このあと、下記式（６）により、採用確率ｐ（０≦ｐ≦１）を算出する（ステップＳ２８０８）。なお、コストＣsに比べて、コストＣs+1が小さい場合があるため、採用確率ｐが１を超える場合があるが、その場合は、ｐ＝１とする。また、温度Ｔsが低くなるにしたがって、採用確率ｐも低くなるため、次状態の回路構成は採用されなくなり、現状態に落ち着くこととなる。
【０１１８】
【数５】
2010026599.tif 000007
【０１１９】
温度Ｔsは正の値なので、Ｃs+1がＣsに比べて大きいと、採用確率ｐは１より小さな値になる。温度Ｔsが大きいうちは、Ｃs+1がＣsに比べてかなり大きくても、採用確率ｐは大きな値となるので、次状態の方が高コスト状態でも、採用されやすくなる。結果として、Ｃsが大きくなって行くことがある。温度Ｔsが小さくなると、Ｃs+1がＣsに比べて少しだけ大きい場合でも、採用確率ｐは小さな値になるので、高コスト状態が採用されにくく、主にコストの低い状態へと移っていく。より低コストの状態が見つけにくくなると、その状態で落ち着くことになる。
【０１２０】
たとえば、ダイナミックリコンフィギャラブル回路のマッピングを鉄の塊だとすると、Ｃsは鉄の塊の温度、Ｔsは、周りの温度に相当する。ここで、Ｔsは、空調装置などで制御できるとする。温度Ｔsが高いということは、空調装置で周りの温度を高くしていることに相当する。このとき、鉄の塊（ダイナミックリコンフィギャラブル回路のマッピング）は周りの影響で温まるため、温度Ｃsもあがって行く。Ｔsを低くすると、空調装置で鉄の塊を冷やすことになるので、鉄の塊の温度Ｃsも下がって行く。
【０１２１】
採用確率ｐが算出されると、乱数ｒ（０≦ｒ＜１）を生成し（ステップＳ２８０９）、乱数ｒが採用確率ｐに入った（ｒ≦ｐ）か否かを判断する（ステップＳ２８１０）。ｒ≦ｐである場合（ステップＳ２８１０：Ｙｅｓ）、次状態の採用を決定して（ステップＳ２８１１）、ステップＳ１８０６に移行する。一方、ｒ≦ｐでない場合（ステップＳ２８１０：Ｎｏ）、次状態の不採用を決定して（ステップＳ２８１２）、ステップＳ１８０６に移行する。なお、式（５）、式（６）は、その目的にあった関数であれば、他の関数でもよい。
【０１２２】
このように、採用された状態がハードウェア要素情報５０２の制約を満たさない間は、次状態生成から繰り返す。すべてのコンテキストが制約を満たす場合は、回路構成ができたとして終了する。ここで、具体例を示す。
【０１２３】
図２９は、図２２の回路構成２２００の次状態の回路構成を示す説明図である。たとえば、図４に示した論理アセンブラ５０１の処理中、図２９に示した次状態の回路構成２９００ではハードウェア要素情報５０２の制約を満たさないので次状態生成から繰り返すこととなる。具体的には、図２２のクラスタＣＬ０にあったＰＥであるｃｏｕｎｔｅｒ（カウンタ回路）を、クラスタＣＬ１に移動させているが、図２２の回路構成２２００で結線できていなかったＰＥ間の配線は改善されていない。したがって、制約を満たしていないこととなる。
【０１２４】
図３０は、コンテキストＣＴ０をマッピングした回路構成を示す説明図である。図３０に示した回路構成３０００中、点線は未使用の物理配線である。コンテキストＣＴ１のＰＥも含まれている。
【０１２５】
図３１は、コンテキストＣＴ１をマッピングした回路構成を示す説明図である。図３１の回路構成３１００は、図３０の回路構成３０００における配線とＰＥへの命令を変更し、コンテキストＣＴ１を載せた構成である。
【０１２６】
図３０および図３１の回路構成３０００，３１００では、すべてのコンテキストＣＴ０，ＣＴ１が制約を満たすため、処理を終了する。図３０および図３１の回路構成３０００，３１００は、物理アセンブラ５０８に相当する。例外として、予め与えられた繰り返し回数だけ次状態を生成しても、制約を満たすものが見つからなかった場合は、回路構成ができなかったとして終了する。
【０１２７】
（汎用化処理）
つぎに、図１５に示した汎用化処理（ステップＳ１５０９）について説明する。汎用化処理（ステップＳ１５０９）とは、制約の範囲内で余分なＰＥを追加し、各クラスタのエレメント構成をバランスの取れたものに近づける処理である。これにより、汎用性が向上する。具体的には、たとえば、ＰＥの配置後、面積や電力などに余裕がある場合に実行する。バランスの取れた構成は、予め用意してある汎用エレメント構成ファイル５０４により与える。
【０１２８】
図３２−１は、汎用化処理（ステップＳ１５０９）の詳細な処理手順（前半）を示すフローチャートである。まず、汎用エレメント構成ファイル５０４を読み込む（ステップＳ３２０１）。つぎに、未処理のクラスタがあるか否かを判断する（ステップＳ３２０２）。未処理のクラスタがない場合（ステップＳ３２０２：Ｎｏ）、図１５に示したステップＳ１５１０に移行する。
【０１２９】
一方、未処理のクラスタがある場合（ステップＳ３２０２：Ｙｅｓ）、未処理のクラスタを選択する（ステップＳ３２０３）。そして未処理のＰＥ種があるか否かを判断する（ステップＳ３２０４）。未処理のＰＥ種がある場合（ステップＳ３２０４：Ｙｅｓ）、未処理のＰＥ種を選択する（ステップＳ３２０５）。そして、汎用エレメント構成ファイル５０４の選択ＰＥ種のＰＥ数からクラスタ内の選択ＰＥ種のＰＥ数を引いた差ａを算出する（ステップＳ３２０６）。
【０１３０】
そして、差ａを２乗してｖとする（ステップＳ３２０７）。ｖはＰＥ数の差の大きさをあらわす指標値である。指標値として使用できる関数であればなんでもよい。ステップＳ３２０７により選択ＰＥ種についてリストが生成されると、ステップＳ３２０４に戻る。ステップＳ３２０４において、未処理のＰＥ種がない場合（ステップＳ３２０４：Ｎｏ）、図３２−２のステップＳ３２０９に移行する。
【０１３１】
図３３は、生成された回路構成におけるクラスタごとにおけるＰＥ種ごとのＰＥ数を示すリストを示す説明図である。図３４は、汎用エレメント構成ファイル５０４の選択ＰＥ種のＰＥ数からクラスタ内の選択ＰＥ種のＰＥ数を引いた差ａを示すリストを示す説明図である。図３５は、生成された回路構成におけるクラスタごとにおけるＰＥ種ごとの指標値ｖを示すリストを示す説明図である。図３４および図３５のリストは、ステップＳ３２０４において、未処理のＰＥ種がない場合（ステップＳ３２０４：Ｎｏ）に完成する。
【０１３２】
図３２−２は、汎用化処理（ステップＳ１５０９）の詳細な処理手順（後半）を示すフローチャートである。指標値ｖを降順にソートする（ステップＳ３２０９）。このソート結果において、順位ｂをｂ＝１とする。順位ｂのＰＥ種があるか否かを判断する（ステップＳ３２１０）。順位ｂのＰＥ種がある場合（ステップＳ３２１０：Ｙｅｓ）、順位ｂのＰＥ種を選択する（ステップＳ３２１１）。そして、選択ＰＥ種のＰＥを１個追加可能であるか否かを判断する（ステップＳ３２１２）。
【０１３３】
具体的には、たとえば、ネットワークの入出力端子が充足していれば、ＰＥを１個追加可能と判断し、不足していれば追加不可能と判断する。追加不可能である場合（ステップＳ３２１２：Ｎｏ）、順位ｂをインクリメントして（ステップＳ３２１３）、ステップＳ３２１０に戻る。一方、追加可能である場合（ステップＳ３２１２：Ｙｅｓ）、選択クラスタにおいて、選択ＰＥ種のＰＥを１個追加して（ステップＳ３２１４）、図３２−１のステップＳ３２０４に戻る。なお、追加されたＰＥは未処理のＰＥとして扱う。また、ステップＳ３２１０において、順位ｂのＰＥ種がない場合（ステップＳ３２１０：Ｎｏ）、図３２−１のステップＳ３２０２に戻る。
【０１３４】
この図３２−１および図３２−２の処理により、すべてのクラスタについて処理が完了したら汎用化処理を終了する。これにより、制約の範囲内で余分なＰＥを追加し、各クラスタのエレメント構成をバランスの取れたものに近づけることができる。
【０１３５】
（設計装置５００の機能的構成）
上述した内容を踏まえて、本実施の形態にかかる設計装置５００の機能的構成について説明する。
【０１３６】
図３６は、本実施の形態にかかる設計装置５００の機能的構成を示すブロック図である。設計装置５００は、取得部３６０１と、算出部３６０２と、生成部３６０３と、出力部３６０４と、実現可能性判断部３６０５と、採用決定部３６０６と、演算器種決定部３６０７と、追加判断部３６０８と、を含む構成である。この制御部となる機能（取得部３６０１〜追加判断部３６０８）は、具体的には、たとえば、図１４に示したＲＯＭ１４０２、ＲＡＭ１４０３、磁気ディスク１４０５、光ディスク１４０７などの記憶領域に記憶されたプログラムをＣＰＵ１４０１に実行させることにより、または、Ｉ／Ｆ１４０９により、その機能を実現する。
【０１３７】
取得部３６０１は、クラスタ内に配置すべき演算器とクラスタ内のネットワークモジュールとの接続情報およびネットワークモジュール間の接続情報を有する複数のコンテキストを取得する機能を有する。具体的には、たとえば、図５および図６に示したコンテキストＣＴ０，ＣＴ１が記述されている論理アセンブラ５０１を読み込む。
【０１３８】
算出部３６０２は、取得部３６０１によって取得された複数のコンテキストに基づいて、クラスタのクラスタ数とクラスタごとにおける演算器種（ＰＥ種）ごとの演算器数（ＰＥ数）とを算出する機能を有する。具体的には、たとえば、コンテキストＣＴをデータフローに変換し、図１５のステップＳ１５０３や図１６および図１７に示したように、ＰＥおよびクラスタの必要最小数を算出する。算出された必要最小数は、エレメント構成定義ファイル５０６として出力される。
【０１３９】
このＰＥの必要最小数を算出することで、回路構成の生成の際におけるＰＥの不足を解消することができる。また、クラスタの必要最小数を算出することで、実現不可能な回路構成の生成を未然に防止することができる。したがって、無駄な設計を省略することができ、設計期間の短縮化を図ることができる。
【０１４０】
生成部３６０３は、算出部３６０２によって算出されたクラスタ数および演算器数を満足するように、各クラスタへの演算器の配置とネットワークモジュールの結線とがなされた回路構成を、コンテキストごとに生成する機能を有する。具体的には、たとえば、図１５および図１８に示した使用クラスタ数ｉの回路構成作成処理（ステップＳ１５０６）や図１８および図２０−１に示した初期状態生成処理（ステップＳ１８０３）を実行する。また、回路構成以外の出力情報５２０の生成も実行する。
【０１４１】
出力部３６０４は、生成部３６０３によって生成された回路構成を出力する機能を有する。具体的には、たとえば、図５に示した各種出力情報５２０を出力する。出力形式としては、たとえば、ディスプレイ１４０８への表示、プリンタ１４１３への印刷出力、Ｉ／Ｆ１４０９による外部装置への送信がある。また、ＲＡＭ１４０３、磁気ディスク１４０５、光ディスク１４０７などの記憶領域に記憶することとしてもよい。
【０１４２】
また、生成部３６０３は、コンテキストごとに生成された回路構成を網羅する回路構成を生成することができる。具体的には、たとえば、図２０−２に示した初期状態生成処理（ステップＳ２００９〜Ｓ２０１４）を実行する。この場合、出力部３６０４は、コンテキストごとに生成された回路構成および当該回路構成を網羅する回路構成のうち少なくともいずれか一つを出力する。
【０１４３】
たとえば、上述した例では、コンテキストＣＴ０の回路構成２２００、コンテキストＣＴ１の回路構成２３００、コンテキストＣＴ０，ＣＴ１を網羅する回路構成２５００の中から選ばれた回路構成を出力する。どの回路構成を出力させるかは、あらかじめ設定しておく。これにより、コンテキストをすべて網羅した回路構成も自動生成することができ、ダイナミックリコンフィギャラブル回路の汎用性の向上を図ることができる。
【０１４４】
また、生成部３６０３は、ダイナミックリコンフィギャラブル回路に関する制約情報を満足する回路構成を生成することもできる。制約情報とは、たとえば、図７に示したハードウェア要素情報５０２が挙げられる。そのほか、クラスタ間ネットワークについて遵守すべき結線情報やクラスタ内ネットワークについて遵守すべき結線情報であってもよい。制約情報を満足する回路構成を自動生成することで、制約違反の回路構成の生成を未然に防止することができる。したがって、無駄な設計を省略することができ、設計期間の短縮化を図ることができる。
【０１４５】
実現可能性判断部３６０５は、算出部３６０２によって算出されたクラスタ数および演算器数に基づいて、生成部３６０３によって生成された回路構成が実現可能な構成であるか否かを判断する機能を有する。具体的には、たとえば、クラスタ数および演算器数を満足している回路構成であるか否かにより、当該回路構成が実現可能であるか否かを判断する。この判断処理は、図１８のステップＳ１８０４により実行される。これにより、クラスタ数および演算器数を満足しない実現不可能な回路構成の生成を未然に防止することができる。したがって、無駄な設計を省略することができ、設計期間の短縮化を図ることができる。
【０１４６】
この場合、出力部３６０４は、実現可能性判断部３６０５によって実現可能であると判断された回路構成を出力する。一方、生成部３６０３は、実現可能性判断部３６０５によって実現可能な構成でないと判断された回路構成内の演算器の配置またはネットワークモジュールの結線を変更させた次状態の回路構成を、クラスタ数および演算器数を満足するように生成する。この生成処理は、図１８および図２８に示した次状態生成処理（ステップＳ１８０５）により実行される。このように、次状態の回路構成を生成することで、可能な限り実現可能な回路構成を自動的に探求することができる。
【０１４７】
また、実現可能性判断部３６０５は、ダイナミックリコンフィギャラブル回路に関する制約情報に基づいて、回路構成が実現可能な構成であるか否かを回路構成ごとに判断することとしてもよい。具体的には、たとえば、クラスタ内のＰＥの構成が、ハードウェア要素情報５０２に照らし合わせ、入出力端子数等の制約を満たしているか否かにより判断する。満たしている場合、現状態は実現可能な回路構成であると判断する。これにより、制約情報を満足しない実現不可能な回路構成の生成を未然に防止することができる。したがって、無駄な設計を省略することができ、設計期間の短縮化を図ることができる。
【０１４８】
採用決定部３６０６は、焼きなまし法を用いて、次状態の回路構成の採用を決定する機能を有する。具体的には、たとえば、図２８に示した次状態生成処理（ステップＳ１８０５）におけるステップＳ２８０６〜Ｓ２８１２を実行する。焼きなまし法では、温度Ｔsが低くなるにしたがって、採用確率ｐも低くなるため、次状態の回路構成は採用されなくなり、現状態に落ち着くこととなる。これにより、可能な限り設計可能な回路構成を探求することができる。この場合、出力部３６０４は、採用決定部３６０６によって採用が決定された次状態の回路構成を出力することとなる。
【０１４９】
また、実現可能性判断部３６０５は、採用決定部３６０６によって決定された次状態の回路構成が実現可能な構成であるか否かを判断することとしてもよい。この場合、出力部３６０４は、実現可能性判断部３６０５によって実現可能であると判断された次状態の回路構成を出力する。一方、生成部３６０３は、実現可能性判断部３６０５によって実現可能な構成でないと判断された次状態の回路構成を現状態の回路構成とする。
【０１５０】
そして、当該現状態の回路構成内の演算器の配置またはネットワークモジュールの結線を変更させた次状態の回路構成を、クラスタ数および演算器数を満足するように生成する。この生成処理は、図１８および図２８に示した次状態生成処理（ステップＳ１８０５）により実行される。このように、次状態の回路構成を生成することで、可能な限り実現可能な回路構成を自動的に探求することができる。
【０１５１】
また、生成部３６０３は、汎用エレメント構成ファイル５０４と算出部３６０２の算出結果との差分に基づいて、回路構成に演算器を追加することとしてもよい。具体的には、たとえば、演算器種決定部３６０７が、この差分に基づいて、追加対象となる演算器種を決定する。この決定処理は、図１５および図３２−１，図３２−２に示した汎用化処理（ステップＳ１５０９）により実行される。そして、生成部３６０３は、演算器種決定部３６０７によって決定された演算器種の演算器を、回路構成に追加する。各クラスタのＰＥの構成をバランスの取れたものに近づけることができ、汎用性が向上する。
【０１５２】
追加判断部３６０８は、回路構成内の結線状態に基づいて、演算器種決定部３６０７によって決定された演算器種の演算器が追加可能であるか否かを判断する機能を有する。具体的には、たとえば、図３２−２の処理手順により実行される。たとえば、ネットワークの入出力端子が充足していれば、ＰＥを１個追加可能と判断し、不足していれば追加不可能と判断する。
【０１５３】
以上説明したように、本実施の形態によれば、ダイナミックリコンフィギャラブル回路の設計を簡略化または自動化する。これにより、ダイナミックリコンフィギャラブル回路のデザインを容易にし、また開発期間の短縮を可能にすることができる。
【０１５４】
なお、本実施の形態で説明した設計方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な媒体であってもよい。
【０１５５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１５６】
（付記１）複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計するコンピュータを、
クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得する取得手段、
前記取得手段によって取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出する算出手段、
前記算出手段によって算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成する生成手段、
前記生成手段によって生成された回路構成を出力する出力手段、
として機能させることを特徴とする設計プログラム。
【０１５７】
（付記２）前記算出手段は、
前記演算器数として、前記演算器の必要最小数を算出することを特徴とする付記１に記載の設計プログラム。
【０１５８】
（付記３）前記算出手段は、
前記クラスタ数として、前記クラスタの必要最小数を算出することを特徴とする付記１または２に記載の設計プログラム。
【０１５９】
（付記４）前記生成手段は、
前記コンテキストごとに生成された回路構成を網羅する回路構成を生成し、
前記出力手段は、
前記コンテキストごとに生成された回路構成および当該回路構成を網羅する回路構成のうち少なくともいずれか一つを出力することを特徴とする付記１〜３のいずれか一つに記載の設計プログラム。
【０１６０】
（付記５）前記生成手段は、
前記ダイナミックリコンフィギャラブル回路に関する制約情報を満足する回路構成を生成することを特徴とする付記１〜４のいずれか一つに記載の設計プログラム。
【０１６１】
（付記６）前記コンピュータを、
前記クラスタ数および前記演算器数に基づいて、前記回路構成が実現可能な構成であるか否かを判断する実現可能性判断手段として機能させ、
前記生成手段は、
前記実現可能性判断手段によって実現可能な構成でないと判断された回路構成内の前記演算器の配置または前記ネットワークモジュールの結線を変更させた次状態の回路構成を、前記クラスタ数および前記演算器数を満足するように生成することを特徴とすることを特徴とする付記１〜４のいずれか一つに記載の設計プログラム。
【０１６２】
（付記７）前記コンピュータを、
前記ダイナミックリコンフィギャラブル回路に関する制約情報に基づいて、前記回路構成が実現可能な構成であるか否かを前記回路構成ごとに判断する実現可能性判断手段として機能させ、
前記生成手段は、
前記実現可能性判断手段によって実現可能な構成でないと判断された回路構成内の前記演算器の配置または前記ネットワークモジュールの結線を変更させた次状態の回路構成を、前記クラスタ数および前記演算器数を満足するように生成することを特徴とすることを特徴とする付記５に記載の設計プログラム。
【０１６３】
（付記８）前記コンピュータを、
焼きなまし法を用いて、前記次状態の回路構成の採用を決定する採用決定手段として機能させ、
前記出力手段は、
前記採用決定手段によって決定された前記次状態の回路構成を出力することを特徴とする付記６または７に記載の設計プログラム。
【０１６４】
（付記９）前記実現可能性判断手段は、
前記採用決定手段によって決定された前記次状態の回路構成が実現可能な構成であるか否かを判断し、
前記生成手段は、
前記実現可能性判断手段によって前記次状態の回路構成が実現可能な構成でないと判断された場合、当該次状態の回路構成を現状態の回路構成とし、前記クラスタ数および前記演算器数を満足するように、前記現状態の回路構成内の前記演算器の配置または前記ネットワークモジュールの結線を変更させた次状態の回路構成を生成することを特徴とする付記８に記載の設計プログラム。
【０１６５】
（付記１０）前記出力手段は、
前記実現可能性判断手段によって実現可能であると判断された回路構成を出力することを特徴とする付記６〜９のいずれか一つに記載の設計プログラム。
【０１６６】
（付記１１）前記取得手段は、
前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器種ごとの演算器数とがあらかじめ設定された汎用エレメント構成ファイルを取得し、
前記生成手段は、
前記汎用エレメント構成ファイルの前記クラスタ数および前記演算器数と前記算出手段によって算出された前記クラスタ数および前記演算器数との差分に基づいて、前記回路構成に前記演算器を追加することを特徴とする付記１〜１０のいずれか一つに記載の設計プログラム。
【０１６７】
（付記１２）前記コンピュータを、
前記差分に基づいて、追加対象となる前記演算器種を決定する演算器種決定手段として機能させ、
前記生成手段は、
前記演算器種決定手段によって決定された演算器種の演算器を、前記回路構成に追加することを特徴とする付記１１に記載の設計プログラム。
【０１６８】
（付記１３）前記コンピュータを、
前記回路構成内の結線状態に基づいて、前記演算器種決定手段によって決定された演算器種の演算器が追加可能であるか否かを判断する追加判断手段として機能させ、
前記生成手段は、
前記追加判断手段によって追加可能と判断された場合、前記演算器種決定手段によって決定された演算器種の演算器を、前記回路構成に追加することを特徴とする付記１２に記載の設計プログラム。
【０１６９】
（付記１４）複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計する設計装置であって、
クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得する取得手段と、
前記取得手段によって取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出する算出手段と、
前記算出手段によって算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成する生成手段と、
前記生成手段によって生成された回路構成を出力する出力手段と、
を備えることを特徴とする設計装置。
【０１７０】
（付記１５）複数通りの回路構成を単一回路で実現するダイナミックリコンフィギャラブル回路を設計するコンピュータが、
クラスタ内に配置すべき演算器と前記クラスタ内のネットワークモジュールとの接続情報および前記ネットワークモジュール間の接続情報を有する複数のコンテキストを取得する取得工程と、
前記取得工程によって取得された複数のコンテキストに基づいて、前記クラスタのクラスタ数と前記クラスタごとにおける前記演算器の演算器種ごとの演算器数とを算出する算出工程と、
前記算出工程によって算出されたクラスタ数および前記演算器数を満足するように、前記各クラスタへの前記演算器の配置と前記ネットワークモジュールの結線とがなされた回路構成を、前記コンテキストごとに生成する生成工程と、
前記生成工程によって生成された回路構成を出力する出力工程と、
を実行することを特徴とする設計方法。
【図面の簡単な説明】
【０１７１】
【図１】ダイナミックリコンフィギャラブル回路で使用されるコンテキストを示す説明図である。
【図２】ＰＥ情報テーブルを示す説明図である。
【図３】ダイナミックリコンフィギャラブル回路で実現される回路の概念図である。
【図４】ＰＥとネットワークモジュールとの接続関係を示す説明図である。
【図５】設計装置の入出力情報を示す説明図である。
【図６】論理アセンブラの一例を示す説明図である。
【図７】ハードウェア要素情報を示す説明図である。
【図８】汎用エレメント構成ファイルの一例を示す説明図である。
【図９】ＰＥに対する共有指示ファイルの一例を示す説明図である。
【図１０】エレメント構成定義ファイルを示す説明図である。
【図１１】資源使用状況ファイルを示す説明図である。
【図１２】物理アセンブラを示す説明図である。
【図１３】性能レポートを示す説明図である。
【図１４】実施の形態にかかる設計装置のハードウェア構成を示す説明図である。
【図１５】本実施の形態にかかる設計装置の設計処理手順を示すフローチャートである。
【図１６】クラスタ内ネットワークを示す説明図である。
【図１７】クラスタ間ネットワークを示す説明図である。
【図１８】回路構成作成処理の詳細な処理手順を示すフローチャートである。
【図１９】焼きなまし法で用いるパラメータを示す説明図である。
【図２０−１】初期状態生成処理の詳細な処理手順（前半）を示すフローチャートである。
【図２０−２】初期状態生成処理の詳細な処理手順（後半）を示すフローチャートである。
【図２１】初期状態の回路構成を示す説明図である。
【図２２】実ＰＥ化後における初期状態の回路構成を示す説明図である。
【図２３】コンテキストＣＴ１の初期状態の回路構成を示す説明図である。
【図２４】追加更新後の回路構成を示す説明図（その１）である。
【図２５】追加更新後の回路構成を示す説明図（その２）である。
【図２６】仮想ＰＥの実ＰＥ化の詳細な処理手順を示すフローチャートである。
【図２７】物理ＰＥ割付処理の詳細な処理手順を示すフローチャートである。
【図２８】図１８に示した次状態生成処理（ステップＳ１８０５）の詳細な処理手順を示すフローチャートである。
【図２９】図２２の回路構成の次状態の回路構成を示す説明図である。
【図３０】コンテキストＣＴ０をマッピングした回路構成を示す説明図である。
【図３１】コンテキストＣＴ１をマッピングした回路構成を示す説明図である。
【図３２−１】汎用化処理（ステップＳ１５０９）の詳細な処理手順（前半）を示すフローチャートである。
【図３２−２】汎用化処理（ステップＳ１５０９）の詳細な処理手順（後半）を示すフローチャートである。
【図３３】生成された回路構成におけるクラスタごとにおけるＰＥ種ごとのＰＥ数を示すリストを示す説明図である。
【図３４】汎用エレメント構成ファイルの選択ＰＥ種のＰＥ数からクラスタ内の選択ＰＥ種のＰＥ数を引いた差ａを示すリストを示す説明図である。
【図３５】生成された回路構成におけるクラスタごとにおけるＰＥ種ごとの指標値ｖを示すリストを示す説明図である。
【図３６】本実施の形態にかかる設計装置の機能的構成を示すブロック図である。
【符号の説明】
【０１７２】
５００  設計装置
５０１  論理アセンブラ
５０２  ハードウェア要素情報
５０３  要求性能ファイル
５０４  汎用エレメント構成ファイル
５０５  共有指示ファイル
５０６  エレメント構成定義ファイル
５０７  資源使用状況ファイル
５０８  物理アセンブラ
５０９  性能レポート
３６０１  取得部
３６０２  算出部
３６０３  生成部
３６０４  出力部
３６０５  実現可能性判断部
３６０６  採用決定部
３６０７  演算器種決定部
３６０８  追加判断部
【図１】
2010026599.tif 000008
【図２】
2010026599.tif 000009
【図３】
2010026599.tif 000010
【図４】
2010026599.tif 000011
【図５】
2010026599.tif 000012
【図６】
2010026599.tif 000013
【図７】
2010026599.tif 000014
【図８】
2010026599.tif 000015
【図９】
2010026599.tif 000016
【図１０】
2010026599.tif 000017
【図１１】
2010026599.tif 000018
【図１２】
2010026599.tif 000019
【図１３】
2010026599.tif 000020
【図１４】
2010026599.tif 000021
【図１５】
2010026599.tif 000022
【図１６】
2010026599.tif 000023
【図１７】
2010026599.tif 000024
【図１８】
2010026599.tif 000025
【図１９】
2010026599.tif 000026
【図２０−１】
2010026599.tif 000027
【図２０−２】
2010026599.tif 000028
【図２１】
2010026599.tif 000029
【図２２】
2010026599.tif 000030
【図２３】
2010026599.tif 000031
【図２４】
2010026599.tif 000032
【図２５】
2010026599.tif 000033
【図２６】
2010026599.tif 000034
【図２７】
2010026599.tif 000035
【図２８】
2010026599.tif 000036
【図２９】
2010026599.tif 000037
【図３０】
2010026599.tif 000038
【図３１】
2010026599.tif 000039
【図３２−１】
2010026599.tif 000040
【図３２−２】
2010026599.tif 000041
【図３３】
2010026599.tif 000042
【図３４】
2010026599.tif 000043
【図３５】
2010026599.tif 000044
【図３６】
2010026599.tif 000045