(57)【要約】【課題】マルチコンテキスト型の再構成装置に対してコンテキスト利用効率を改善する動作合成装置等を提供する。【解決手段】動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行する動作合成装置１００であって、外部からの入力を受け付ける入力部１と、前記ハードウェアを構成するパターンをコンテキストとして記憶する記憶部３と、前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合部２４と、を備え、前記統合部は、所定の複数条件うち、いずれか少なくとも１つの条件を備える。【選択図】図１
2009217619.tif 000002
【特許請求の範囲】
【請求項１】
動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行する動作合成装置であって、
外部からの入力を受け付ける入力部と、
前記ハードウェアを構成するパターンをコンテキストとして記憶する記憶部と、
前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合部と、を備え、
前記統合部は、以下の条件、
（ａ）前記ハードウェアの制約や、外部から受け付けた制約を満たすように前記状態を組み合わせる、
（ｂ）前記状態の数が前記ハードウェアのコンテキスト数を超えない限り、複数の前記状態を一つのコンテキストに割り付けないようにする、
（ｃ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する、
（ｄ）前記コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように前記状態を組み合わせる、
（ｅ）前記コンテキストの演算器段数が全状態の最大の演算器段数を超えないように前記状態を組み合わせる、
（ｆ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量の増加が最小となるように前記状態を組み合わせる、
（ｇ）複数の前記状態を一つのコンテキストに割り付ける際に、演算器段数の増加が最小となるように前記状態を組み合わせる、
（ｈ）各前記コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように前記状態を組み合わせる、
（ｉ）使用される前記コンテキスト数を最小にするように前記状態を組み合わせる、
（ｊ）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｋ）ループ処理や関数処理となっている前記状態をなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｌ）前記状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる、
のいずれか少なくとも１つの条件を備える、
ことを特徴とする動作合成装置。
【請求項２】
前記動作命令を実行する順序を決定し、前記動作命令に対応する前記ハードウェアを割り当てるスケジュール・バインディング部と、をさらに備える、
ことを特徴とする請求項１に記載の動作合成装置。
【請求項３】
前記統合部が統合した前記コンテキストを出力する出力部と、をさらに備える、
ことを特徴とする請求項１又は２に記載の動作合成装置。
【請求項４】
入力部と、記憶部と、統合部と、を有する動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行する動作合成装置にて実行される動作合成方法であって、
前記入力部が、外部からの入力を受け付ける入力工程と、
前記記憶部には、前記ハードウェアを構成するパターンをコンテキストとして記憶され、
前記統合部が、前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合工程と、を備え、
前記統合工程は、以下の条件、
（ａ）前記ハードウェアの制約や、外部から受け付けた制約を満たすように前記状態を組み合わせる、
（ｂ）前記状態の数が前記ハードウェアのコンテキスト数を超えない限り、複数の前記状態を一つのコンテキストに割り付けないようにする、
（ｃ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する、
（ｄ）前記コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように前記状態を組み合わせる、
（ｅ）前記コンテキストの演算器段数が全状態の最大の演算器段数を超えないように前記状態を組み合わせる、
（ｆ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量の増加が最小となるように前記状態を組み合わせる、
（ｇ）複数の前記状態を一つのコンテキストに割り付ける際に、演算器段数の増加が最小となるように前記状態を組み合わせる、
（ｈ）各前記コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように前記状態を組み合わせる、
（ｉ）使用される前記コンテキスト数を最小にするように前記状態を組み合わせる、
（ｊ）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｋ）ループ処理や関数処理となっている前記状態をなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｌ）前記状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる、
のいずれか少なくとも１つの条件を備える、
ことを特徴とする動作合成方法。
【請求項５】
動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行するコンピュータを、
外部からの入力を受け付ける入力部と、
前記ハードウェアを構成するパターンをコンテキストとして記憶する記憶部と、
前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合部と、として機能させ、
前記統合部は、以下の条件、
（ａ）前記ハードウェアの制約や、外部から受け付けた制約を満たすように前記状態を組み合わせる、
（ｂ）前記状態の数が前記ハードウェアのコンテキスト数を超えない限り、複数の前記状態を一つのコンテキストに割り付けないようにする、
（ｃ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する、
（ｄ）前記コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように前記状態を組み合わせる、
（ｅ）前記コンテキストの演算器段数が全状態の最大の演算器段数を超えないように前記状態を組み合わせる、
（ｆ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量の増加が最小となるように前記状態を組み合わせる、
（ｇ）複数の前記状態を一つのコンテキストに割り付ける際に、演算器段数の増加が最小となるように前記状態を組み合わせる、
（ｈ）各前記コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように前記状態を組み合わせる、
（ｉ）使用される前記コンテキスト数を最小にするように前記状態を組み合わせる、
（ｊ）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｋ）ループ処理や関数処理となっている前記状態をなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｌ）前記状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる、
のいずれか少なくとも１つの条件を備える、
ように機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述もしくは相当する回路情報を生成する動作合成装置に関し、特にマルチコンテキスト型の再構成装置に対してコンテキスト利用効率を改善する動作合成装置、動作合成方法、及び、これらをコンピュータにて実現するためのプログラムに関する。
【背景技術】
【０００２】
近年、半導体回路の回路規模が増大しているため、半導体回路の設計の際の手間や時間を削減するために様々な手法が用いられている。このような手法の１つとして、動作レベルの回路記述から、ＲＴＬ（Register Transfer Level）等の抽象度の低い回路記述を合成するための動作合成装置が提案されている。このような動作合成装置を用いることにより、ハードウェアの動作を表現しただけの動作レベルの回路記述から、ハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
【０００３】
また、装置内部にコンテキストと呼ばれる回路構成情報を保持するメモリを複数備え、動作中に当該コンテキストを入れ替えることにより動的に回路の構成を変更するマルチコンテキスト型の再構成装置を実現しているものがある（例えば、特許文献１参照）。
【特許文献１】特開２００３−９９４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されている構成では、生成された回路のオブジェクトコードが最適とならない場合がある。従って、マルチコンテキスト型の再構成装置に対してコンテキストの利用効率を改善するのに好適な新たな方法が求められている。
【０００５】
本発明は、上記問題に鑑みてなされたものであり、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述もしくは相当する回路情報を生成する動作合成装置に関し、特にマルチコンテキスト型の再構成装置に対してコンテキスト利用効率を改善する動作合成装置、動作合成方法、及び、これらをコンピュータにて実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するため、本発明の第１の観点に係る動作合成装置は、
動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行する動作合成装置であって、
外部からの入力を受け付ける入力部と、
前記ハードウェアを構成するパターンをコンテキストとして記憶する記憶部と、
前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合部と、を備え、
前記統合部は、以下の条件、
（ａ）前記ハードウェアの制約や、外部から受け付けた制約を満たすように前記状態を組み合わせる、
（ｂ）前記状態の数が前記ハードウェアのコンテキスト数を超えない限り、複数の前記状態を一つのコンテキストに割り付けないようにする、
（ｃ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する、
（ｄ）前記コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように前記状態を組み合わせる、
（ｅ）前記コンテキストの演算器段数が全状態の最大の演算器段数を超えないように前記状態を組み合わせる、
（ｆ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量の増加が最小となるように前記状態を組み合わせる、
（ｇ）複数の前記状態を一つのコンテキストに割り付ける際に、演算器段数の増加が最小となるように前記状態を組み合わせる、
（ｈ）各前記コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように前記状態を組み合わせる、
（ｉ）使用される前記コンテキスト数を最小にするように前記状態を組み合わせる、
（ｊ）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｋ）ループ処理や関数処理となっている前記状態をなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｌ）前記状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる、
のいずれか少なくとも１つの条件を備える、ことを特徴とする。
【０００７】
上記の目的を達成するため、本発明の第２の観点に係る動作合成方法は、
入力部と、記憶部と、統合部と、を有する動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行する動作合成装置にて実行される動作合成方法であって、
前記入力部が、外部からの入力を受け付ける入力工程と、
前記記憶部には、前記ハードウェアを構成するパターンをコンテキストとして記憶され、
前記統合部が、前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合工程と、を備え、
前記統合工程は、以下の条件、
（ａ）前記ハードウェアの制約や、外部から受け付けた制約を満たすように前記状態を組み合わせる、
（ｂ）前記状態の数が前記ハードウェアのコンテキスト数を超えない限り、複数の前記状態を一つのコンテキストに割り付けないようにする、
（ｃ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する、
（ｄ）前記コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように前記状態を組み合わせる、
（ｅ）前記コンテキストの演算器段数が全状態の最大の演算器段数を超えないように前記状態を組み合わせる、
（ｆ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量の増加が最小となるように前記状態を組み合わせる、
（ｇ）複数の前記状態を一つのコンテキストに割り付ける際に、演算器段数の増加が最小となるように前記状態を組み合わせる、
（ｈ）各前記コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように前記状態を組み合わせる、
（ｉ）使用される前記コンテキスト数を最小にするように前記状態を組み合わせる、
（ｊ）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｋ）ループ処理や関数処理となっている前記状態をなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｌ）前記状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる、
のいずれか少なくとも１つの条件を備える、ことを特徴とする。
【０００８】
上記の目的を達成するため、本発明の第３の観点に係るプログラムは、
動的にハードウェアの構成を変更する再構成装置に対して、動作命令を実行するコンピュータを、
外部からの入力を受け付ける入力部と、
前記ハードウェアを構成するパターンをコンテキストとして記憶する記憶部と、
前記動作命令の集合からなる状態を、一つのコンテキストに統合する統合部と、として機能させ、
前記統合部は、以下の条件、
（ａ）前記ハードウェアの制約や、外部から受け付けた制約を満たすように前記状態を組み合わせる、
（ｂ）前記状態の数が前記ハードウェアのコンテキスト数を超えない限り、複数の前記状態を一つのコンテキストに割り付けないようにする、
（ｃ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する、
（ｄ）前記コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように前記状態を組み合わせる、
（ｅ）前記コンテキストの演算器段数が全状態の最大の演算器段数を超えないように前記状態を組み合わせる、
（ｆ）複数の前記状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量の増加が最小となるように前記状態を組み合わせる、
（ｇ）複数の前記状態を一つのコンテキストに割り付ける際に、演算器段数の増加が最小となるように前記状態を組み合わせる、
（ｈ）各前記コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように前記状態を組み合わせる、
（ｉ）使用される前記コンテキスト数を最小にするように前記状態を組み合わせる、
（ｊ）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｋ）ループ処理や関数処理となっている前記状態をなるべく同じコンテキストにまとめるように前記状態を組み合わせる、
（ｌ）前記状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる、
のいずれか少なくとも１つの条件を備える、
ように機能させる、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述もしくは相当する回路情報を生成する動作合成装置に関し、特にマルチコンテキスト型の再構成装置に対してコンテキスト利用効率を改善することができる。
【発明を実施するための最良の形態】
【００１０】
以下では、本発明の動作合成装置の実施形態の一つについて説明するが、当該実施形態は本発明の原理の理解を容易にするためのものであり、本発明の範囲は、下記の実施形態に限られるものではなく、当業者が以下の実施形態の構成を適宜置換した他の実施形態も、本発明の範囲に含まれる。
【００１１】
（実施形態１）
まず、本発明の実施の形態に係る動作合成装置にて実現されるＤＲＰ（Dynamically Reconfigurable Processor）などのマルチコンテキスト型の再構成装置における使用演算器数と面積、演算器段数と遅延、それぞれと回路性能の関係について説明する。
【００１２】
使用演算器数は通常のＬＳＩの面積に相当する。ただし、ＤＲＰなどのプログラマブルデバイスではあらかじめ演算器が作りこまれており、作りこまれた領域に収まる限り演算器を多めに使用し性能を上げることも可能である。
【００１３】
しかし、コンテキストの使用演算器数が多くなると演算器の配置配線が難しくなり、配置配線が完了せず回路が生成できなくなったり、配置配線後の遅延が増加したりすることもある。遅延値が大きくなるとスループットが下がるため回路性能が悪化してしまう。つまり、並列性などが変わらない同一処理方式の場合、使用演算器数が少ないほうが高スループット、高性能な回路となる。演算器段数は通常のＬＳＩの遅延に相当する。演算器段数が小さいほど配置配線後の遅延が小さくなる可能性が高い。つまり、高速な高スループット、高性能な回路となる。
【００１４】
次に、実施形態１に係る動作合成装置について図１を参照して説明する。
なお、動作合成装置では、実際のデータ処理を行うデータパスと処理の状態遷移を制御するＦＳＭ（Finite State Machine）に分けて合成することも可能である。
【００１５】
動作合成装置１００は、入力部１と、データ処理部２と、記憶部３と、出力部４と、から構成される。
【００１６】
入力部１は、設計者の指示やデータ及び設計者が作成した動作レベルの回路記述などの入力を受け付ける。入力部１は、当該入力を後述するデータ処理部２（前処理部２１）に渡す。
【００１７】
データ処理部２は、前処理部２１と、スケジューリング・バインディング部２２と、後処理部２３と、コンテキスト統合部２４と、から構成される。データ処理部２は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等を備える。
【００１８】
前処理部２１は、入力部１により与えられた動作レベルの回路記述を解析する。また、前処理部２１は、当該回路記述を動作合成用の内部表現に変換し、最適化する。ここで内部表現とは、動作レベルの回路記述を解析した後に、その解析結果を内部で保持する際に使用する表現をいう。より具体的には、内部表現は、動作レベルの回路記述を解析した結果を抽象構文木（ＡＳＴ：Abstract Syntax Tree）やコントロールデータフローグラフ（ＣＤＦＧ：Control Data Flow Graph）と呼ばれるデータ構造で保存する際の表現を示す。
【００１９】
スケジューリング・バインディング部２２は、演算などの各処理を行うサイクル（実行順序）を決定し、それぞれの処理に対して必要なハードウェアリソース（例えば、レジスタ、演算器等）を割り当てる。
【００２０】
後処理部２３は、データパス・ＦＳＭ（Finite State Machine）の生成や最適化をした後、ＲＴＬ記述や並列演算装置にマトリクス配列された処理回路を出力する。
【００２１】
コンテキスト統合部２４は、より高性能な回路が生成されるように所定の制約に従い、複数状態を一つのコンテキストにまとめる。
コンテキスト統合部２４は、さらに以下の（１）から（１２）の機能を備えることができる。
【００２２】
（１）ハードウェアの制約（一コンテキストあたりの演算器数・レジスタ数・メモリ数やコンテキスト数）や、外部から与えた制約（使用演算器数・使用レジスタ数・使用メモリ数や遅延制約や使用コンテキスト数）を満たすように状態を組み合わせる機能。
当該機能により、ハードウェアの制約を満たすように状態を組み合わせた場合、ハードウェアの容量を超えないハードウェアが正しく動作する割り付けが行える。一方、外部から与えた制約を満たすように状態を組み合わせた場合、ハードウェアの容量よりきつい制約を与えることもできる。例えば、一コンテキストあたりの演算器数を少なくするよう制約を与え、より演算器段数・使用面積の小さい回路を生成することもできる。
【００２３】
（２）状態数がハードウェアのコンテキスト数を超えない限り、複数の状態を一つのコンテキストに割り付けないようにする機能。
当該機能により、状態数がハードウェアのコンテキスト数を超えない限り、一つの状態が一つのコンテキストに割り付けられる。これは各コンテキストの使用演算器数の最大値や演算器段数が増加しないので、より演算器段数・使用面積の小さい回路を生成することができる。
【００２４】
（３）複数の状態を一つのコンテキストに割り付ける際に、必要なセレクタ回路量を推定し制約条件として使用する機能。
当該機能により、使用演算器数や演算器段数などの制約条件を正しく考慮することができるようになりコンテキストに状態を割り付ける精度が向上するので、演算器段数・使用面積が小さく低消費電力で高スループットな回路を生成することができる。
【００２５】
（４）コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように状態を組み合わせる機能。
当該機能により、各コンテキストの使用演算器数の最大値が全状態の最大の使用演算器数に比べ多くなることはなく、使用演算器数の少ない回路を生成することができる。
【００２６】
（５）コンテキストの演算器段数が全状態の最大の演算器段数を超えないように状態を組み合わせる機能。
当該機能により、各コンテキストの演算器段数の最大値が全状態の最大の演算器段数に比べ大きくなることはなく、演算器段数が小さい回路を生成することができる。
【００２７】
（６）複数の状態を一つのコンテキストに割り付ける際に必要なセレクタ回路量の増加が最小となるように状態を組み合わせる機能。
当該機能により、演算器段数・使用面積の小さい回路を生成することができる。
【００２８】
（７）複数の状態を一つのコンテキストに割り付ける際に演算器段数の増加が最小となるように状態を組み合わせる機能。
当該機能により、演算器段数の小さい回路を生成することができる。
【００２９】
（８）各コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように状態を組み合わせる機能。
当該機能により、各コンテキストの使用演算器数の最大値が少ない回路を生成することができる。
【００３０】
（９）使用コンテキスト数を最小にするように状態を組み合わせる機能。
当該機能により、生成回路で使用していないコンテキスト数を増やすことができ、同時に使用しない回路情報を未使用コンテキストにより多く格納することができるようになる。
【００３１】
（１０）レジスタファイルやメモリや入出力ポートなどコンテキスト間で共有するリソースをなるべく同じコンテキストにまとめるように状態を組み合わせる機能。
当該機能により、コンテキスト間でのリソースの配置の自由度が高くなり配置配線が容易となる。これはコンテキスト間で共有するリソースは同一位置に配置しなくてはいけないことに起因する。この機能により同一位置に配置しなければいけないリソース数を減らすことができ、コンテキスト間でのリソースの配置の自由度が高くなる。これにより、配置配線後の遅延値を小さくしスループットの高い回路を生成することができる。
【００３２】
（１１）ループ処理や関数処理となっている状態をなるべく同じコンテキストにまとめるように状態を組み合わせる機能。
当該機能により、コンテキスト切り替えが減り、コンテキスト切り替えによる消費電力を減らすことができる。また、チップ内部のコンテキスト量を超えた処理を行う場合、途中でコンテキスト情報を一部書き換える。このコンテキスト書き換えの頻度を減らすことができ、スループットの高い回路を生成することができる。
【００３３】
（１２）状態のコンテキストへの割り付けの全てもしくは一部を外部から指定できる機能。
当該機能により、外部から全て指定した場合には設計者の望んだ通りのコンテキストの割り付けが行える。また、一部を指定した場合、残りの割り付けをデータ処理システムで自動的に生成することができる。
【００３４】
また、コンテキスト統合部２４は、以上の（１）から（１２）の機能を組み合わせて使用することができる。このため、演算器使用数・演算器段数・使用コンテキスト数・消費電力のどれを重視するか変更できるようになり、より要求に合ったさまざまな条件の回路を生成することができるようになる。
【００３５】
以下に、複数の状態を１つのコンテキストとしてまとめる具体例を説明する。
【００３６】
図３（ａ）及び（ｂ）に示す状態１の回路と状態２の回路とをコンテキストとしてまとめる場合を説明する。
状態１の回路は、レジスタ同士の値を加算しレジスタに書き込む回路であり、状態２の回路は、メモリから読み出した値をレジスタに値を書き込む回路である。
【００３７】
状態１の回路と状態２の回路とで書き込まれるレジスタが同じであるとする。このとき二つの状態を一つのコンテキストにまとめる場合、図３（ｃ）に示すように、書き込まれるレジスタの前段にセレクタを入れ、書き込み元を切り替えるような回路が作られる。つまり、複数の状態を一つのコンテキストに割り付ける場合には、レジスタファイルやメモリや入出力ポートなどのリソースを共有するためのセレクタが必要となり、使用演算器数や演算器段数が増加する。このセレクタの増加量は状態の組み合わせ方により変動する。
【００３８】
また、図４（ａ）から（ｃ）に示す状態１から３の回路を一つのコンテキストに割り付ける場合を説明する。
状態１の回路ではレジスタに書き込み、状態２の回路ではレジスタから読み出し、状態３の回路ではレジスタアクセスがないとする。
【００３９】
このとき状態３の回路でレジスタのデータを壊さないよう安全目に考えると、図４（ｄ）に示すように、点線のようにレジスタからセレクタを通してデータのフィードバックが必要となる。
しかし、状態２の回路での読み出しは状態１の回路で書き込んだデータを読むと分かっている場合など、状態３の回路でデータを保持する必要がないと分かっている場合には、フィードバックのパスを作成しないようにする。つまり切り替えのためのセレクタも不要となる。
【００４０】
例えば、コンテキスト数が６以上の場合、図５（ａ）及び（ｂ）に示すように、状態数がハードウェアのコンテキスト数を超えない限り、複数の状態を一つのコンテキストに割り付けないようにする機能により、一状態が一コンテキストに割り当てられる。
このため、各コンテキストの使用演算器数の最大値や演算器段数が増加しないので、より演算器段数・使用面積の小さい回路を生成できる。
【００４１】
記憶部３は、システム内部表現記憶部３１を有する。システム内部表現記憶部３１には、システムの内部表現が記録される。
【００４２】
出力部４は、回路の動作合成結果や解析結果等を出力する。
【００４３】
なお、前処理部２１、スケジューリング・バインディング部２２、後処理部２３、コンテキスト統合部２４の各部は、必要に応じてシステムの内部表現を、記憶装置３のシステム内部表現記憶部３１に対して、書き出しおよび読み込みを行う。
【００４４】
次に、本実施形態に係る動作合成装置１００の動作について、図２を参照して説明する。
【００４５】
まず、利用者により入力部１を通じて、Ｃ言語などの抽象度の高い回路仕様が記述されている動作レベル記述が用意される（ステップＳ１１）。
【００４６】
入力部１から与えられた動作レベル記述は、前処理部２１に供給される。前処理部２１は、動作レベルの回路記述を解析し動作合成用の内部表現に変換した後、最適化を行う（ステップＳ１２）。
ステップＳ１２において、動作合成用の内部表現であるＣＤＦＧ等が生成される。
【００４７】
次に、スケジューリング・バインディング部２２は、ＣＤＦＧでノードとして表現された演算やメモリアクセスや遷移などを順に処理する（ステップＳ１３）。
ステップＳ１３において、演算などの各処理が実行される順序が決定されるため、各処理に対応付けられた必要なハードウェアリソース（例えば、レジスタ、演算器等）が割り当てられる。
【００４８】
次に、後処理部２３は、スケジューリング・バインディング部２２の結果をもとにデータパス・ＦＳＭの生成や最適化を行う（ステップＳ１４）。
また、データパス・ＦＳＭの生成や最適化がなされた後、後処理部２３は、ＲＴＬ記述や並列演算装置にマトリクス配列された処理回路を出力する（ステップＳ１４）。
【００４９】
次に、コンテキスト統合部２４は、制約に従い複数の状態を一コンテキストにまとめ、ＲＴＬ記述や並列演算装置にマトリクス配列された処理回路を、出力部４を通じて出力する（ステップＳ１５）。
【００５０】
以上説明したように、本発明によれば、複数の状態を一コンテキストにまとめることができるため、演算器段数・使用面積が小さく低消費電力で高スループットな回路を生成することができる。
また、状態数がハードウェアのコンテキスト数を超えない限り、複数の状態を一つのコンテキストに割り付けないようにする機能により、状態数がハードウェアのコンテキスト数を超えない限り、一つの状態が一つのコンテキストに割り付けられる。これは各コンテキストの使用演算器数の最大値や演算器段数が増加しないので、より演算器段数・使用面積の小さい回路を生成することができる。
【００５１】
（実施形態２）
実施形態２について、図６（ａ）及び（ｂ）を参照して説明する。この実施形態２は、実施形態１に対応するものである。
ハードウェアの演算器数の制約を満たすように状態を組み合わせる機能により、状態１、２、３及び６がコンテキスト１に、状態４がコンテキスト２に、状態５がコンテキスト３に割り当てられる。
これにより、ハードウェアの容量を超えないハードウェアが正しく動作する割り付けが行われる。
【００５２】
（実施形態３）
実施形態３について、図７（ａ）及び（ｂ）を参照して説明する。この実施形態３は、実施形態１に対応するものである。
外部から与えた演算器数の制約を満たすように状態を組み合わせる機能により、状態１、２及び３がコンテキスト１に、状態４がコンテキスト２に、状態５、６がコンテキスト３に割り当てられる。
これにより、ハードウェアの容量よりきつい制約を与えることができ、より演算器段数・使用面積の小さい回路を生成することもできる。
【００５３】
（実施形態４）
実施形態４について、図８（ａ）及び（ｂ）を参照して説明する。この実施形態４は、実施形態１に対応するものである。
複数の状態を一つのコンテキストに割り付ける際に必要なセレクタ回路量を推定し制約条件として使用する機能により、状態１及び２がコンテキスト１に、状態３及び６がコンテキスト２に、状態４がコンテキスト３に状態５がコンテキスト４に割り当てられる。
これにより、使用演算器数や演算器段数などの制約条件を正しく考慮することができるようになり、コンテキストに状態を割り付ける精度が向上するので、より高性能な回路を生成することができる。
【００５４】
（実施形態５）
実施形態５について、図９（ａ）及び（ｂ）を参照して説明する。この実施形態５は、実施形態１に対応するものである。
コンテキストの使用演算器数が全状態の最大の使用演算器数を超えないように状態を組み合わせる機能により、状態１、２及び３がコンテキスト１に、状態４がコンテキスト２に、状態５及び６がコンテキスト３に割り当てられる。
これにより、各コンテキストの使用演算器数の最大値が全状態の最大の使用演算器数に比べ多くなることはなく、使用演算器数の少ない回路を生成することができる。
【００５５】
（実施形態６）
実施形態６について、図１０（ａ）及び（ｂ）を参照して説明する。この実施形態６は、実施形態１に対応するものである。
コンテキストの演算器段数が全状態の最大の演算器段数を超えないように状態を組み合わせる機能により、状態１、２及び３がコンテキスト１に、状態４がコンテキスト２に、状態５及び６がコンテキスト３に割り当てられる。各コンテキストの演算器段数はまとめた各状態の演算器段数の最大値となる。
これにより、各コンテキストの演算器段数の最大値が全状態の最大の演算器段数に比べ大きくなることはなく、演算器段数の小さい回路を生成することができる。
【００５６】
（実施形態７）
実施形態７について、図１１（ａ）及び（ｂ）を参照して説明する。この実施形態７は、実施形態１に対応するものである。
各コンテキストの演算器がなるべく同数使用され、その使用数が平均化されるように状態を組み合わせる機能により、図１１（ａ）に示す平均化の考慮されていない組み合わせ１より、図１１（ｂ）に示す平均化の考慮されている組み合わせ２の方が、最大演算器数の小さい回路が生成される。
これは、簡易的には状態ごとの使用演算器数で降順ソートしたあと順にコンテキストに割り付けるなどの方法をとることで実現できる。
【００５７】
（実施形態８）
実施形態８について、図１２（ａ）及び（ｂ）を参照して説明する。この実施形態８は、実施形態１に対応するものである。
使用コンテキスト数を最小にするように状態を組み合わせる機能により、図１２（ａ）に示す、その機能のない組み合わせ１より、図１２（ｂ）に示す、その機能のある組み合わせ２の方が、未使用領域の多い回路が生成される。
これにより、生成回路で使用していないコンテキスト数を増やすことができ、同時に使用しない回路情報を未使用コンテキストにより多く格納することができる。
【００５８】
（実施形態９）
実施形態９について、図１３（ａ）及び（ｂ）を参照して説明する。この実施形態９は、実施形態１に対応するものである。
ループ処理・関数処理となっている状態をなるべく同じコンテキストにまとめるように状態を組み合わせる機能、及び、コンテキスト切り替えがなるべく起きないように状態を組み合わせる機能により、図１３（ａ）に示す、その機能のない組み合わせ１より、図１３（ｂ）に示す、その機能のある組み合わせ２の方が、コンテキスト切り替えが減る回路が生成される。
このため、コンテキスト切り替えによる消費電力を減らすことができる。また、チップ内部のコンテキスト量を超えた処理を行う場合、途中でコンテキスト情報を一部書き換えることにより、このコンテキスト書き換えの頻度を減らすことができ、スループットの高い回路を生成することができる。
【図面の簡単な説明】
【００５９】
【図１】実施形態１に係る動作合成装置の構成を示すブロック図である。
【図２】実施形態１に係る動作合成装置の動作を説明するフローチャートである。
【図３】複数の状態を割り付けることによるセレクタの増加を説明する模式図である。
【図４】レジスタフィードバックの作り方を説明する模式図である。
【図５】実施形態１に係る状態のまとめ方を説明する図である。
【図６】実施形態２に係る状態のまとめ方を説明する図である。
【図７】実施形態３に係る状態のまとめ方を説明する図である。
【図８】実施形態４に係る状態のまとめ方を説明する図である。
【図９】実施形態５に係る状態のまとめ方を説明する図である。
【図１０】実施形態６に係る状態のまとめ方を説明する図である。
【図１１】実施形態７に係る状態のまとめ方を説明する図である。
【図１２】実施形態８に係る状態のまとめ方を説明する図である。
【図１３】実施形態９に係る状態のまとめ方を説明する図である。
【符号の説明】
【００６０】
１００  動作合成装置
１      入力部
２      データ処理部
２１    前処理部
２２    スケジュール・バインディング部
２３    後処理部
２４    コンテキスト統合部
３      記憶部
３１    システム内部表現記憶部
４      出力部
【図１】
2009217619.tif 000003
【図２】
2009217619.tif 000004
【図３】
2009217619.tif 000005
【図４】
2009217619.tif 000006
【図５】
2009217619.tif 000007
【図６】
2009217619.tif 000008
【図７】
2009217619.tif 000009
【図８】
2009217619.tif 000010
【図９】
2009217619.tif 000011
【図１０】
2009217619.tif 000012
【図１１】
2009217619.tif 000013
【図１２】
2009217619.tif 000014
【図１３】
2009217619.tif 000015