(57)【要約】【課題】動作レベル記述で表される半導体集積回路における消費電力低減と性能向上を可能とする動作合成方法を提供する。【解決手段】動作合成方法は、動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのリードアクセスを解析するステップＳ２１と、解析結果に基づいて、対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出するステップＳ２２と、高頻度変数のリードデータを格納するための内部記憶領域を生成するステップＳ３１と、最初又は事前のリードアクセスのみ外部メモリへアクセスして高頻度変数のデータを読み出して内部記憶領域に格納し、以降のリードアクセスにおいて内部記憶領域にアクセスして高頻度変数のデータを読み出すアクセス回路を生成するステップＳ３２とを具備する。【選択図】図１０
2011022863.tif 000002
【特許請求の範囲】
【請求項１】
回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する動作合成方法であって、
前記動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのリードアクセスを解析するステップと、
前記解析結果に基づいて、前記対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出するステップと、
前記高頻度変数のリードデータを格納するための内部記憶領域を生成するステップと、
最初又は事前のリードアクセスのみ外部メモリへアクセスして前記高頻度変数のデータを読み出して前記内部記憶領域に格納し、以降のリードアクセスにおいて前記内部記憶領域にアクセスして前記高頻度変数のデータを読み出すアクセス回路を生成するステップと
を具備する
動作合成方法。
【請求項２】
請求項１に記載の動作合成方法であって、
前記リードアクセスを解析するステップは、
前記対象変数へのリードアクセス頻度を集計するステップと、
前記集計結果に基づいて、前記対象変数のうち、前記リードアクセス頻度が相対的に高い前記高頻度変数を所定数だけ抽出するステップと
を備える
動作合成方法。
【請求項３】
回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する動作合成方法を実行するプログラムであって、
前記動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのリードアクセスを解析するステップと、
前記解析結果に基づいて、前記対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出するステップと、
前記高頻度変数のリードデータを格納するための内部記憶領域を生成するステップと、
最初又は事前のリードアクセスのみ外部メモリへアクセスして前記高頻度変数のデータを読み出して前記内部記憶領域に格納し、以降のリードアクセスにおいて前記内部記憶領域にアクセスして前記高頻度変数のデータを読み出すアクセス回路を生成するステップと
を具備する動作合成方法をコンピュータに実行させるプログラム。
【請求項４】
請求項３に記載のプログラムであって、
前記リードアクセスを解析するステップは、
前記対象変数へのリードアクセス頻度を集計するステップと、
前記集計結果に基づいて、前記対象変数のうち、前記リードアクセス頻度が相対的に高い前記高頻度変数を所定数だけ抽出するステップと
を備える
プログラム。
【請求項５】
回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する動作合成装置であって、
前記動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのリードアクセスを解析し、前記解析結果に基づいて、前記対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出するメモリアクセス解析部と、
前記高頻度変数のリードデータを格納するための内部記憶領域と、最初又は事前のリードアクセスのみ外部メモリへアクセスして前記高頻度変数のデータを読み出して前記内部記憶領域に格納し、以降のリードアクセスにおいて前記内部記憶領域にアクセスして前記高頻度変数のデータを読み出すアクセス回路とを生成する回路追加部と
を具備する
動作合成装置。
【請求項６】
請求項５に記載の動作合成装置であって、
前記メモリアクセス解析部は、
前記対象変数へのリードアクセス頻度を集計するアクセス頻度解析部と、
前記集計結果に基づいて、前記対象変数のうち、前記リードアクセス頻度が相対的に高い前記高頻度変数を所定数だけ抽出する対象変数決定部と
を備える
動作合成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作合成装置及び動作合成方法に関する。
【背景技術】
【０００２】
回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する動作合成が知られている。図１は、動作合成を行う動作合成装置１０１の構成を示すブロック図である。動作合成装置１０１は、動作合成をコンパイル部１１１、スケジューリング部１１４、アロケーション部１１５、バインディング部１１６、モジュール部１１７、及びＲＴレベル記述生成部１１８の一連のプログラムで実施する。すなわち、動作レベル記述１２１に基づいて、入力に与える機能記述を忠実にかつ段階的に回路へ落とし込んで行き、ＲＴレベル記述１２２を生成する。この動作合成は、例えば、Ａｈｍｅｄ  Ａｍｉｎｅ  Ｊｅｒｒａｙａ  ｅｔ  ａｌ．，「Ｂｅｈａｖｉｏｒａｌ  Ｓｙｎｔｈｅｓｉｓ  ａｎｄ  Ｃｏｍｐｏｎｅｎｔ  Ｒｅｕｓｅ  ｗｉｔｈ  ＶＨＤＬ」，Ｓｐｒｉｎｇｅｒ，（１９９６）、において開示されている。
【０００３】
コンパイル部１１１は、動作レベル記述１２１を動作合成装置１０１の内部表現（中間形式）へコンパイルする。このステップは、定数伝播、デッドコード削除、演算共通項の抽出、関数のインライン展開、及び、ループ展開の各ステップを含んでいる。内部表現としては、動作レベル記述言語に近いグラフモデル（例示：ＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ））に例示される。スケジューリング部１１４は、動作レベル記述をグラフモデルで表した記述を複数のサブグラフに分割する。各サブグラフは、１つの制御ステップ（例示：１クロック）において実行される。一つの制御ステップは、並行に実行すべき複数の演算操作を含んでいてもよい。その場合、並列処理を実行するために十分なリソースが割り当てられることを仮定している。いくつかのスケジューリングアルゴリズムは、リソースの制約やタイミングの制約の下で実行される。アロケーション部１１５は、動作レベル記述のアルゴリズムの実行に必要なリソースの量及び型を決定する。すなわち、このステップは、計算ユニット（例示：ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）、コプロセッサ、ＡＤＤ（ＡＤＤｅｒ）、ＳＵＢ（ＳＵＢｔｒａｃｔｅｒ）、ＭＵＬＴ（ＭＵＬＴｉｐｌｉｅｒ））、記憶ユニット（レジスタ、レジスタファイル）、接続ユニット（ＭＵＸ（ＭＵｌｔｉｐｌｅＸ）、バス、配線）などの数と型を固定する。リソースの量は、データパス中に許される同時並行性を制限し、スケジューリングを制限する。バインディング部１１６は、どのリソースが動作レベル記述アルゴリズムの各演算によって用いられるかを決定する。すなわち、演算操作や変数に計算ユニットや記憶ユニットを割り当てる。システムによっては、このバインディングステップはアロケーション部１１５の中に含まれている場合がある。モジュール生成部１１７は、データパスのユニット（レジスタ及び演算器）間の通信のために必要なリソースを決定する。すなわち、接続ユニットを割り当てる。そして、ＲＴレベル記述生成部１１８は、合成設計のＲＴレベル記述を生成する。すなわち、計算ユニットや記憶ユニットを接続ユニットで結線してデータバスを作成してＲＴレベル記述を生成する。コントローラ及びデータパスは前の結果からスタートして構築される。
【０００４】
関連する技術として特開２００７−３２３２０６号公報に動作合成装置、同方法、シミュレーション装置、同方法及び設計装置が開示されている。この動作合成装置は、逐次動作記述のプログラミング言語によってハードウエアの動作および構成を記述した逐次動作記述プログラムに基づいて、動作合成を行う装置である。この動作合成装置は、メモリアクセス解析部と、関数変換部と、動作合成部とを有することを特徴とする。メモリアクセス解析部は、前記逐次動作記述プログラムを解析して、前記逐次動作記述プログラム中の１又は複数の関数による、前記逐次動作記述プログラム内のメモリモデルに対するアクセスパターンが予め決められたパターンに該当する記述の有無を検出する。関数変換部は、該メモリアクセス解析部により前記予め決められたパターンに該当する記述が検出された場合、前記１の関数を予め決められた２以上の関数に分割、あるいは前記複数の関数を予め決められた１つの関数に併合するように、前記逐次動作記述プログラム中の前記１又は複数の関数を他の関数に変換する。動作合成部は、該関数変換部により変換された前記他の関数を含む前記逐次動作記述プログラムに基づいて、動作合成を行う。
【０００５】
特開２００５−１７３６４８号公報に高位合成方法及び高位合成装置が開示されている。この高位合成方法は、動作レベル回路に記述された変数をメモリに割り当てて論理回路を生成する。この高位合成方法は、（ａ）〜（ｄ）ステップを具備する。（ａ）ステップは、前記変数が前記動作レベル回路において参照される参照回数を算出するステップである。（ｂ）ステップは、前記変数のビット幅を抽出し、抽出したビット幅のデータ転送が可能な複数のメモリを選定するステップである。（ｃ）ステップは、前記（ｂ）のステップにおいて選定された複数のメモリについて、前記参照回数と前記変数のビット幅とに基づいて、前記変数が割り当てられた場合におけるメモリアクセスのサイクル数の合計を算出するステップである。（ｄ）ステップは、前記（ｃ）のステップにおいて算出された前記メモリアクセスのサイクル数の合計が最小となるメモリを、前記変数の割り当て対象として選択するステップである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３２３２０６号公報
【特許文献２】特開２００５−１７３６４８号公報
【非特許文献】
【０００７】
【非特許文献１】Ａｈｍｅｄ  Ａｍｉｎｅ  Ｊｅｒｒａｙａ  ｅｔ  ａｌ．，「Ｂｅｈａｖｉｏｒａｌ  Ｓｙｎｔｈｅｓｉｓ  ａｎｄ  Ｃｏｍｐｏｎｅｎｔ  Ｒｅｕｓｅ  ｗｉｔｈ  ＶＨＤＬ」，Ｓｐｒｉｎｇｅｒ，（１９９６），ｐ１３−ｐ１５．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
動作レベル記述から動作合成装置を用いて設計される半導体集積回路において、ロジックから大規模低速メモリへのアクセスによるオーバーヘッドを削減するため、ロジックと大規模低速メモリとの間に小規模高速メモリを配置する、という方法が存在する。その方法では、ロジックと大規模低速メモリとの間でコストの高いシグナル転送を繰り返し行うのではなく、小規模高速メモリと大規模低速メモリとの間では効率の高い一括転送を行い、ロジックと小規模高速メモリとの間ではコストの低いシングル転送を行うことにより、性能の向上、消費電力の低減を図っている。
【０００９】
このような半導体集積回路では、小規模高速メモリの配置が必要となるため面積コストが高くなる。この小規模高速メモリは、単に大規模低速メモリから取得したデータのみならず、アドレス情報やコヒーレンシーをチェックするためのフラグを格納するための領域が必要である。加えて、有効なデータが小規模高速メモリに格納されているかを判定するための複雑な回路が必要となる。すなわち、単に記憶する領域のみの面積が増加するのではないため、必要以上に面積が必要となる。
【００１０】
また、このような半導体集積回路では、小規模高速メモリはロジックに実装されるアルゴリズムに最適化されていない。実際に発生する大規模低速メモリへのメモリアクセスのみに着目しており、アルゴリズム全体を見渡して最適化されているわけではない。そのため、小規模高速メモリの容量が不必要に大きくなり、面積が増加してしまう。
【課題を解決するための手段】
【００１１】
以下に、発明を実施するための形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明の動作合成方法は、回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する動作合成方法である。動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのリードアクセスを解析するステップ（Ｓ２１）と、解析結果に基づいて、対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出するステップ（Ｓ２２）と、高頻度変数のリードデータを格納するための内部記憶領域を生成するステップ（Ｓ３１）と、最初又は事前のリードアクセスのみ外部メモリへアクセスして高頻度変数のデータを読み出して内部記憶領域に格納し、以降のリードアクセスにおいて内部記憶領域にアクセスして高頻度変数のデータを読み出すアクセス回路を生成するステップ（Ｓ３２）とを具備する。
【００１３】
本発明では、動作レベル記述からＲＴレベル記述を生成する際、アルゴリズムにおいてメモリアクセスが頻繁に発生するデータを予め特定し、当該データを格納する内部記憶領域を生成する。そして、最初のリードアクセスのみ外部メモリへアクセスし、その後は内部記憶領域にリードアクセスするようにする。この処理により、データを格納する内部記憶領域のサイズは必要最小限に抑えることができ、アルゴリズムに最適な効率の高いデータバッファリングを実現できる。また、外部メモリへのアクセスを内部記憶領域へのアクセスに置き換えることにより、消費電力を低減でき、メモリアクセスレイテンシに起因するスループット低下を抑制することができ、性能を向上させることができる。
【００１４】
また、本発明のプログラムは、回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する動作合成方法を実行する。このプログラムは、動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのリードアクセスを解析するステップ（Ｓ２１）と、解析結果に基づいて、対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出するステップ（Ｓ２２）と、高頻度変数のリードデータを格納するための内部記憶領域を生成するステップ（Ｓ３１）と、最初又は事前のリードアクセスのみ外部メモリへアクセスして高頻度変数のデータを読み出して内部記憶領域に格納し、以降のリードアクセスにおいて内部記憶領域にアクセスして高頻度変数のデータを読み出すアクセス回路を生成するステップ（Ｓ３２）とを具備する動作合成方法をコンピュータに実行させる。
【００１５】
本発明のプログラムは、上記動作合成方法をコンピュータで実行可能とすることができ、上記動作合成方法と同様の効果を得ることができる。
【００１６】
また、本発明の動作合成装置は、回路の動作を記述した動作レベル記述からＲＴ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ）レベル記述を生成する。この動作合成装置は、メモリアクセス解析部（１２）と回路追加部（１３）とを具備する。メモリアクセス解析部（１２）は、動作レベル記述において、メモリにマッピングされる変数のうち動作中に動作に影響を与えるような変更が加えられない対象変数へのアクセスを解析し、解析結果に基づいて、対象変数のうち、アルゴリズムからのリードアクセス頻度が相対的に高い変数としての高頻度変数を抽出する。回路追加部（１３）は、高頻度変数のリードデータを格納するための内部記憶領域と、最初又は事前のリードアクセスのみ外部メモリへアクセスして高頻度変数のデータを読み出して内部記憶領域に格納し、以降のリードアクセスにおいて内部記憶領域にアクセスして高頻度変数のデータを読み出すアクセス回路とを生成する。
【００１７】
本発明の動作合成装置は、上記動作合成方法を実行であり、上記動作合成方法と同様の効果を得ることができる。
【発明の効果】
【００１８】
本発明により、動作レベル記述のアルゴリズムで表される半導体集積回路における消費電力低減と性能向上が可能となる。
【図面の簡単な説明】
【００１９】
【図１】図１は、動作合成装置１０１の構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係る動作合成装置１の構成を示すブロック図である。
【図３】図３は、本発明の実施の形態に係るメモリアクセス解析部１２の構成を示すブロック図である。
【図４】図４は、リードアクセス頻度のランキングの一例を示すランキング表である。
【図５】図５は、本発明の実施の形態に係る回路追加部１３の構成を示すブロック図である。
【図６】図６は、生成される内部記憶領域及びデータアクセス回路の構成及び動作を示す概念図である。
【図７】図７は、動作合成装置１に入力するときの当初の動作レベル記述の一例を示す図である。
【図８】図８は、メモリアクセス解析部１２及び回路追加部１３による処理を行った場合の動作レベル記述の一例を示す図である。
【図９】図９は、メモリアクセスと時間との関係を示すグラフである。
【図１０】図１０は、本発明の実施の形態に係る動作合成装置１の動作（動作合成方法）を示すフロー図である。
【図１１】図１１は、本実施の形態に係る動作合成装置の効果の一例を示す模式図である。
【発明を実施するための形態】
【００２０】
以下、本発明の動作合成装置及び動作合成方法の実施の形態に関して、添付図面を参照して説明する。
【００２１】
まず、本発明の実施の形態に係る動作合成装置の構成について説明する。図２は、本発明の実施の形態に係る動作合成装置１の構成を示すブロック図である。動作合成装置１は、回路の動作を記述した動作レベル記述５１からＲＴレベル記述５２を生成する動作合成を実行する。その際、動作レベル記述に特別な変更を行うことなく、ロジックの回路面積の増大を抑えつつ、動作レベル記述におけるメモリアクセス解析結果を基に、動作レベル記述で定義されるアルゴリズムに対して、メモリに格納されているデータのバッファリングを最適に行う回路を生成する。これにより、消費電力低減と性能向上を図ることを可能とする。以下詳細に説明する。
【００２２】
動作合成装置１は、コンピュータに例示される情報処理装置であり、図示されていないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、記憶装置と、入力装置と、出力装置と、インターフェースとを備えている。ＣＰＵ、記憶装置、入力装置、出力装置、及びインターフェースは、バスやケーブルにより互いに情報の送受信が可能に接続されている。記憶装置は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）に例示される。入力装置は、キーボード、及びマウスに例示される。出力装置は、ディスプレイやプリンタに例示される。インターフェースは、外部のコンピュータや記憶装置や記憶媒体読取装置などと双方向通信可能に接続されている。
【００２３】
ＣＰＵは、例えば外部の記憶媒体やサーバからインターフェースを介してＨＤＤにインストールされたコンピュータプログラムをＲＡＭに展開する。そして、展開されたコンピュータプログラムを実行して、必要に応じて記憶装置や入力装置や出力装置のようなハードウエアを制御しながら、当該コンピュータプログラムの情報処理を実現する。記憶装置は、コンピュータプログラムを記録し、ＣＰＵが利用する情報や生成する情報を記録する。入力装置は、ユーザに操作されることにより生成される情報をＣＰＵや記憶装置に出力する。出力装置は、ＣＰＵにより生成された情報や記憶装置の情報をユーザに認識可能に出力する。
【００２４】
動作合成装置１は、コンピュータプログラムであるコンパイル部１１と、メモリアクセス解析部１２と、回路追加部１３と、スケジューリング部１４と、アロケーション部１５と、バインディング部１６と、モジュール生成部１７と、ＲＴレベル記述生成部１８とを備えている。すなわち、コンピュータに例示される情報処理装置の記憶装置（図示されず）に、これらのコンピュータプログラムがインストールされて、動作合成装置１として機能する。
【００２５】
コンパイル部１１は、動作レベル記述５１を動作合成装置１の内部表現へコンパイルする。コンパイル部１１は、定数伝播、デッドコード削除、演算共通項の抽出、関数のインライン展開、及び、ループ展開の各ステップを実行する機能を含んでいる。内部表現としては、動作レベル記述言語に近いグラフモデル（例示：ＣＤＦＧ）に例示される。
【００２６】
メモリアクセス解析部１２は、動作レベル記述をコンパイル部１１の処理により内部表現で表した記述に関して、変数アクセスの解析を行う。ただし、変数アクセスのうち、動作合成によってメモリにマッピングされる変数へのアクセスを解析する。更に、その中でも、動作中に動作に影響を与えるような変更が加えられない変数へのアクセスを対象とする。すなわち、動作中に他の回路などによってメモリ内の値が書き換えられてしまうようなことのない変数である。そのような変数としては、例えば、ＲＯＭに格納されているデータのように、動作中に値が変化しない変数である。メモリアクセス解析部１２の機能は、動作レベル記述で表現されるアルゴリズムにおいて、メモリに格納された当該変数が、何回（リードアクセス頻度）読み出されるかを解析することに相当する。メモリアクセス解析部１２の詳細は後述される。
【００２７】
回路追加部１３は、内部表現で表した記述に関して、内部記憶領域とデータアクセス回路とをロジック内部に生成する。実体的には、最終的に生成されるＲＴレベル記述に内部記憶領域及びデータアクセス回路が追加されるように、内部表現に所定の記述（処理又は演算）を追加する。従って、内部表現への所定の記述の追加は、ロジック内部に内部記憶領域とデータアクセス回路とを生成することと実質的に等価と考えることができる。ただし、内部記憶領域は、メモリアクセス解析部１２の確定した各変数ＢｕｆＶａｒを記憶する領域である。データアクセス回路は、最初のリードアクセスについてはポートを介して外部メモリへアクセスして読み出したデータを内部記憶領域に格納し、以降のリードアクセスについては、内部記憶領域にアクセスしてデータを読み出す回路である。回路追加部１３の詳細は後述される。
【００２８】
スケジューリング部１４は、内部表現で表した記述を複数のサブグラフに分割する。各サブグラフは、１つの制御ステップ（例示：１クロック）において実行される。一つの制御ステップは、並行に実行すべき複数の演算操作を含んでいてもよい。その場合、並列処理を実行するために十分なリソースが割り当てられることを仮定している。いくつかのスケジューリングアルゴリズムは、リソースの制約やタイミングの制約の下で実行される。
【００２９】
アロケーション部１５は、動作レベル記述のアルゴリズムの実行に必要なリソースの量及び型を決定する。すなわち、このステップは、計算ユニット（例示：ＡＬＵ、コプロセッサ、ＡＤＤ、ＳＵＢ、ＭＵＬＴ）、記憶ユニット（レジスタ、レジスタファイル）、接続ユニット（ＭＵＸ、バス、配線）などの数と型を固定する。リソースの量は、データパス中に許される同時並行性を制限し、スケジューリングを制限する場合がある。
【００３０】
バインディング部１６は、どのリソースが動作レベル記述のアルゴリズムの各演算によって用いられるかを決定する。すなわち、演算操作や変数に計算ユニットや記憶ユニットを割り当てる。このとき、内部記憶領域やデータアクセス回路に対応する演算に対しても記憶ユニットや計算ユニットが割り当てられる。このバインディング部１６はアロケーション部１５の中に含まれていても良い。
【００３１】
モジュール生成部１７は、データパスのユニット（レジスタ及び演算器）間の通信のために必要なリソースを決定する。すなわち、接続ユニットを割り当てる。そして、ＲＴレベル記述生成部１８は、合成設計のＲＴレベル記述を生成する。すなわち、計算ユニットや記憶ユニットを接続ユニットで結線してデータバスを作成してＲＴレベル記述を生成する。これにより、データアクセス回路及び内部記憶領域も併せて生成される。
【００３２】
次に、メモリアクセス解析部１２について詳細に説明する。図３は、本発明の実施の形態に係るメモリアクセス解析部１２の構成を示すブロック図である。メモリアクセス解析部１２は、動作レベル記述をコンパイル部１１の処理により内部表現で表した記述に関して、変数アクセスの解析を行う。メモリアクセス解析部１２は、アクセス頻度解析部２１と、対象変数決定部２３とを備える。
【００３３】
アクセス頻度解析部２１は、変数アクセスの解析のうち、リードアクセス頻度を解析する。すなわち、メモリにマッピングされる変数のうち、動作中に動作に影響を与えるような変更が加えられない変数を、動作中に読み出す回数（リードアクセス頻度）を数えて集計する。そして、その解析結果として、リードアクセス頻度による変数のランキングを生成する。
【００３４】
図４は、リードアクセス頻度のランキングの一例を示すランキング表である。このランキング表では、メモリにマッピングされる変数のうち、動作中に動作に影響を与えるような変更が加えられない変数である「対象変数」と、リードアクセス頻度を示す「リードアクセス回数」と、リードアクセス頻度の多い順番をしめす「ランキング」とが関連付けられている。この図の例では、最もリードアクセス回数が多いのがａ［０］であり、以下、ｃ、ａ［２０］、ｂ、…の順にランキングされている。
【００３５】
ここで、データバッファリングを行う変数の数（以下、「Ｎｕｍ＿ＢｕｆＶａｒ」ともいう）を予め定めておく。この図の例では、Ｎｕｍ＿ＢｕｆＶａｒ＝３の場合を示し、上位３個の変数、すなわちａ［０］、ｃ、及びａ［２０］がデータバッファリングを行う変数（以下、「ＢｕｆＶａｒ」ともいう）となる。Ｎｕｍ＿ＢｕｆＶａｒの値が大きいほど、低消費電力化や性能向上の効果は高いが、回路面積が増大する。従って、低消費電力化や性能向上の効果（Ｎｕｍ＿ＢｕｆＶａｒの数の多さ）と回路面積とはトレードオフとなる。この変数の数Ｎｕｍ＿ＢｕｆＶａｒは設定により変更が可能である。例えば、内部記憶領域を相対的に広く取れる場合、Ｎｕｍ＿ＢｕｆＶａｒを増やすことが出来る。
【００３６】
次に、図３を参照して、対象変数決定部２３は、アクセス頻度解析部２１による解析結果（集計結果）により、リードアクセス頻度の最上位から順にＮｕｍ＿ＢｕｆＶａｒで表される個数分の変数を、データバッファリングを行う変数であるＢｕｆＶａｒとして確定する。上述のように、図４の場合では、Ｎｕｍ＿ＢｕｆＶａｒ＝３なので、上位３個分のａ［０］、ｃ、及びａ［２０］がＢｕｆＶａｒとなる。
【００３７】
上記メモリアクセス解析は、動作レベル記述（内部表現）を基にした静的な解析によって行う。ただし、シミュレーションのプロファイル結果を基にした動的な解析によって行っても良いし、両者を用いても良い。
【００３８】
メモリアクセス解析において、動作レベル記述における変数のうち、メモリにマッピングされる変数が明らかとなっている場合、メモリにマッピングする変数へのメモリアクセス情報（上記図４の内容）をシミュレーション結果から得た上で、動作レベル記述と共に、動作合成装置に与えたものを利用しても良い。あるいは、メモリアクセスがループ記述の内部にある場合などでは、ループのインデックス解析により静的に行って、メモリアクセス情報（上記図４の内容）を得ても良い。本発明は、上記図４に相当するような情報が得られれば、これらの方法に限定されるものではない。
【００３９】
次に、回路追加部１３について詳細に説明する。図５は、本発明の実施の形態に係る回路追加部１３の構成を示すブロック図である。回路追加部１３は、内部記憶領域とデータアクセス回路とをロジック内部に生成する。実体的には、最終的に生成されるＲＴレベル記述に内部記憶領域及びデータアクセス回路が追加されるように、内部表現に所定の記述（処理又は演算）を追加する。従って、実質的に、ロジック内部に内部記憶領域とデータアクセス回路とを生成すると考えることができる。回路追加部１３は、記憶領域生成部３１と、アクセス回路生成部３２とを備えている。
【００４０】
回路追加部１３の記憶領域生成部３１は、内部記憶領域をロジック内部に生成する。具体的には、内部表現で表された記述に関して、各ＢｕｆＶａｒをレジスタのような記憶素子に割り当てる記述（処理又は演算）を追加する。それにより、最終的なＲＴレベル記述において内部記憶領域（例示：レジスタ）が追加されることになる。
【００４１】
回路追加部１３のアクセス回路生成部３２は、データアクセス回路をロジック内部に生成する。具体的には、内部表現で表された記述に関して、各ＢｕｆＶａｒを読み出す際、最初のリードアクセスについては外部メモリにアクセスし、読み出したデータを内部記憶領域に格納し、以降のリードアクセスについては内部記憶領域にアクセスしてデータを読み出すように、データアクセスの判定の記述（処理又は演算）を追加する。それにより、最終的なＲＴレベル記述においてデータアクセス回路が追加されることになる。
【００４２】
図６は、生成される内部記憶領域及びデータアクセス回路の構成及び動作を示す概念図である。この図は、上記回路追加部１３により追加されるデータアクセス回路６１及び内部記憶領域６２が実際の回路上でどのように動作するかを模式的に示している。ロジック６０が、動作レベル記述５１ａ（実際の回路にはないが、分かり易さのために図上に動作レベル記述形式で一例を記載）で示されたアルゴリズム処理を行うときに、外部のメモリ７０へＢｕｆＶａｒの一つであるａ［０］を読み出しに行く場合を考える（リードアクセス）。このとき、アルゴリズム処理からａ［０］の事前リードアクセス（処理８１）を受けたデータアクセス回路６１は、ポート６５を介してメモリ７０にアクセスし、事前にａ［０］に対応するデータ７１を読み出す（処理８２）。そして、データアクセス回路６１は、読み出したデータ７１を、ａ［０］として内部記憶領域６２に格納する（処理８３）。この段階では、事前リードアクセスなのでアルゴリズム処理へはａ［０］を出力しない。その後、アルゴリズム処理によりａ［０］のリードアクセス（処理８１）を受けた場合、データアクセス回路６１は、内部記憶領域６２にアクセスしてａ［０］を読み出し（処理８４）、アルゴリズム処理へ与える（処理８１）。一方、アルゴリズム処理によりａ［０］のリードアクセス（処理８１）を受けたデータアクセス回路６１は、ＢｕｆＶａｒ以外の変数については、上記処理は行わず、データアクセス回路６１は、毎回メモリ７０にアクセスする。
【００４３】
ただし、上記のような事前のリードアクセスを行わなくても良い。すなわち、まず、最初のリードアクセス（処理８１）において、ポート６５を介してメモリ７０にアクセスし、ａ［０］に対応するデータ７１を読み出す（処理８２）。そして、データアクセス回路６１は、読み出したデータ７１を、ａ［０］としてアルゴリズム処理へ与える（処理８１）。それと共に、ａ［０］として内部記憶領域６２に格納する（処理８３）。その後、２回目以降のリードアクセスにおいては、アルゴリズム処理によりａ［０］のリードアクセス（処理８１）を受けたデータアクセス回路６１は、内部記憶領域６２にアクセスしてａ［０］を読み出し（処理８４）、アルゴリズム処理へ与える（処理８１）。
【００４４】
次に、回路追加部１３により追加される記述（処理又は演算）の具体例について説明する。
図７は、動作合成装置１に入力するときの当初の動作レベル記述の一例を示す図である。このような動作レベル記述（記述例Ａ）が動作合成装置１に入力されたとする。この記述例Ａは、コンパイル部１１により内部表現へコンパイルされた後、メモリアクセス解析部１２及び回路追加部１３で上記の処理が行われる。
【００４５】
図８はメモリアクセス解析部及び回路追加部による処理を行った場合の動作レベル記述の一例を示す図である。ただし、メモリアクセス解析部及び回路追加部による処理後の記述は、上述のように実際には内部表現で表されるが、ここでは分かり易さのために動作レベル記述形式で示している。この動作レベル記述（記述例Ｂ）は、図７と比較すると、対象変数（ＢｕｆＶａｒ）の指定（関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ）を行う記述５６、アルゴリズムによるメモリアクセス（関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ）を行う記述５７、及び、各関数を定義する記述５８が追加されている。
【００４６】
ここで、ＢＵＦ＿ＡＤＤＲは、バッファ（内部記憶領域）に格納する変数のメモリでのアドレスを示す。格納する変数が複数ある場合には、変数ごとにアドレスが設定される。このアドレスは、メモリアクセス解析部１２がメモリアクセス解析により対象変数（ＢｕｆＶａｒ）を決定した後、回路追加部１３が内部表現の記述（アルゴリズム）から当該対象変数（ＢｕｆＶａｒ）の格納されているメモリのアドレスを取得することで得られる。このＢＵＦ＿ＡＤＤＲは、そのアドレスを示す定数値である。図４（Ｎｕｍ＿ＢｕｆＶａｒ＝３）の場合、例えば、ＢＵＦ＿ＡＤＤＲ１、ＢＵＦ＿ＡＤＤＲ２、ＢＵＦ＿ＡＤＤＲ３の３個のアドレスが設定される。
【００４７】
関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）は、メモリにおけるアドレス（ａｄｄｒ）に示される領域に格納されている値（ｍｅｍ＿ａ［ａｄｄｒ］）をバッファのデータ（ｂｕｆ＿ｄａｔａ）とする、すなわちバッファに格納するという関数である（図８：記述５８の上部）。
この関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）は、例えば、アルゴリズムの中の当該ｍｅｍ＿ａ［ａｄｄｒ］を最初に読み出す前の、関数と関数との間に設けられる（図８：記述５６）。
【００４８】
例えば、Ｎｕｍ＿ＢｕｆＶａｒ＝３の場合、ＢＵＦ＿ＡＤＤＲ及びｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）は、以下のように所定の箇所に記述される。
「ＢＵＦ＿ＡＤＤＲ１＝メモリのアドレス１；
ＢＵＦ＿ＡＤＤＲ２＝メモリのアドレス２；
ＢＵＦ＿ＡＤＤＲ３＝メモリのアドレス３；
ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ＢＵＦ＿ＡＤＤＲ１）；
ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ＢＵＦ＿ＡＤＤＲ２）；
ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ＢＵＦ＿ＡＤＤＲ３）；」
【００４９】
上記の定義から、関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ＢＵＦ＿ＡＤＤＲ）（図８：記述５６）は、メモリにおけるアドレス（ＢＵＦ＿ＡＤＤＲ）に示された領域に格納されている値（ｍｅｍ＿ａ［ＢＵＦ＿ＡＤＤＲ］）をバッファのデータ（ｂｕｆ＿ｄａｔａ）とする、すなわちバッファに格納する。これにより、バッファにメモリのアドレスＢＵＦ＿ＡＤＤＲでの値が格納される。
記憶領域生成部３１は、この例では、関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ＢＵＦ＿ＡＤＤＲ）の処理の記述（図８：記述５６）、及び関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）の定義の記述（図８：記述５８の上部）を生成する。
【００５０】
アルゴリズムからのメモリアクセスは関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）を介して行う。
関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）は、アクセスを行うメモリのアドレス（ａｄｄｒ）がＢＵＦ＿ＡＤＤＲと一致するかを確認し、一致する場合にはバッファの値（ｂｕｆ＿ｄａｔａ）を読み出し、一致しない場合にはメモリのアドレス（ａｄｄｒ）での値（ｍｅｍ＿ａ［ａｄｄｒ］）を読み出す関数である（図８：記述５８の中／下部）。
この関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）は、アルゴリズムの中の当該ｍｅｍ＿ａ［ａｄｄｒ］を実際に読み出す命令に置き換えられる（図８：記述５７）。
【００５１】
上記の定義から、関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）（図８：記述５７）は、アクセスを行うメモリアドレス（ａｄｄｒ）がＢＵＦ＿ＡＤＤＲと一致するかを確認し、一致する場合にはメモリアクセスを行わずに、バッファから値（ｂｕｆ＿ｄａｔａ）を読み出し、一致しない場合にはメモリから値（ｍｅｍ＿ａ［ａｄｄｒ］）を読み出す。
アクセス回路生成部３２は、この例では、関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）の処理の記述（図８：記述５７）、及び関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）の定義の記述（図８：記述５８の中／下部）を生成する。
【００５２】
なお、関数ｐｒｅｆｅｔｃｈ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）や、関数ｇｅｔ＿ｍｅｍ＿ｄａｔａ（ａｄｄｒ）の定義は、他の関数等の定義の記述と同様の位置に追加・挿入することができる（図８：記述５８）。
【００５３】
このように、本実施の形態では、動作レベル記述に対して、メモリアクセス解析部１２及び回路追加部１３を用いた場合、メモリアクセス解析と外部メモリアクセスの一部を内部記憶領域にアクセスするように記述変更するための処理が加わる。この処理が加わることにより、動作レベル記述に予め特別な記述等をしなくても、例えば、図７の記述例Ａを入力とした場合、図８の記述例Ｂに示すような処理を行う回路を生成することができる。
【００５４】
図９は、メモリアクセスと時間との関係を示すグラフである。横軸は時間の進行を示し、縦軸は記述例Ａ及び記述例Ｂを示している。ここでは、記述例Ｂにおける内部記憶領域に格納する変数のメモリでのアドレスＢＵＦ＿ＡＤＤＲ＝Ｂとする。
記述例Ａのアルゴリズムでは、アドレスＡ、Ｂ、Ｃ、Ｄのすべてについて、いずれも４クロックを使用してデータアクセスを行っている。そのため、最初のｍｅｍ＿ａ［Ａ］の読み出しからから最後のｍｅｍ＿ａ［Ｂ］の読み出しまでで、インターバルを含めて４４クロックかっている。また、メモリへのアクセス回数も９回になっている。
しかし、記述例Ｂのアルゴリズムでは、最初に予め４クロックを用いてｍｅｍ＿ａ［Ｂ］を読み出して内部記憶領域に格納することで、他のｍｅｍ＿ａ［Ｂ］の読み出しを１クロックで行うことができる。それにより、記述例Ａと同様のデータアクセスについて、全体として、インターバルを含めて３５クロックに削減できる。また、メモリへのアクセス回数も５回に削減できる。
以上のことから、記述例Ｂでは記述例Ａに比べて、メモリアクセス回数が減るため、電力消費を抑制するとともに、メモリアクセスレイテンシに起因するスループット低下を抑制することができる。
【００５５】
次に、本発明の実施の形態に係る動作合成装置の動作（動作合成方法）について説明する。図１０は、本発明の実施の形態に係る動作合成装置１の動作（動作合成方法）を示すフロー図である。
【００５６】
動作レベル記述５１が、通信回線や記憶媒体を介して動作合成装置１に供給される。
コンパイル部１１は、動作レベル記述５１を動作合成装置１の内部表現へコンパイルする（ステップＳ０１）。コンパイルには、定数伝播、デッドコード削除、演算共通項の抽出、関数のインライン展開、及び、ループ展開の各ステップを含んでいる。
【００５７】
メモリアクセス解析部１２は、動作レベル記述をコンパイル部１１の処理により内部表現で表現した記述に関して、変数アクセスの解析を行う（ステップＳ０２）。ただし、変数アクセスのうち、動作合成によってメモリにマッピングされる変数であって、動作中に動作に影響を与えるような変更が加えられない変数へのアクセスを対象とする。
【００５８】
具体的には、アクセス頻度解析部２１が、変数アクセスの解析のうち、リードアクセス頻度を解析する（ステップＳ２１）。すなわち、メモリにマッピングされる変数のうち、動作中に動作に影響を与えるような変更が加えられない変数を、動作中に読み出す回数（リードアクセス頻度）を数えて集計する。そして、その解析結果として、リードアクセス頻度による変数のランキングを得る（例示：図４）。
【００５９】
次に、対象変数決定部２３が、アクセス頻度解析部２１による解析結果により、リードアクセス頻度の最上位から順にＮｕｍ＿ＢｕｆＶａｒ個分の変数を、データバッファリングを行うＢｕｆＶａｒとして確定する（ステップＳ２２）。例えば、Ｎｕｍ＿ＢｕｆＶａｒ＝３の場合、最上位から３個の変数をＢｕｆＶａｒとして確定する（例示：図４）。
【００６０】
次に、回路追加部１３は、内部表現で表した記述に関して、内部記憶領域とデータアクセス回路とをロジック内部に生成する（ステップＳ０３）。ただし、内部記憶領域は各ＢｕｆＶａｒを記憶する領域であり、データアクセス回路は最初のリードアクセスについては外部メモリへアクセスして、読み出したデータを内部記憶領域に格納し、以降のリードアクセスについては、内部記憶領域にアクセスしてデータを読み出す回路である（例示：図６）。
【００６１】
具体的には、記憶領域生成部３１が、内部記憶領域をロジック内部に生成する（ステップＳ３１）。すなわち、内部表現で表現した記述に関して、各ＢｕｆＶａｒをレジスタのような記憶素子に割り当てる記述（処理又は演算）を追加する（例示：図８の記述５６、記述５８の上部）。それにより、最終的なＲＴレベル記述において内部記憶領域（例示：レジスタ）が追加されることになる。
【００６２】
次に、アクセス回路生成部３２が、データアクセス回路をロジック内部に生成する（ステップＳ３２）。すなわち、内部表現で表した記述に関して、各ＢｕｆＶａｒを読み出す際、最初又は事前のリードアクセスについては外部メモリにアクセスし、読み出したデータを内部記憶領域に格納し、以降のリードアクセスについては内部記憶領域にアクセスしてデータを読み出すように、データアクセスの判定を行う記述（処理又は演算）を追加する（例示：図８の記述５７、記述５８の中下部）。それにより、最終的なＲＴレベル記述においてデータアクセス回路が追加されることになる。
【００６３】
その後、スケジューリング部１４は、内部表現で表した記述を複数のサブグラフに分割する（ステップＳ０４）。各サブグラフは、１つの制御ステップ（例示：１クロック）において実行される。一つの制御ステップは、並行に実行すべき複数の演算操作を含んでいてもよい。
【００６４】
続いて、アロケーション部１５は、動作レベル記述のアルゴリズムの実行に必要なリソースの量及び型を決定する（ステップＳ０５）。すなわち、このステップは、計算ユニット（例示：ＡＬＵ、コプロセッサ、ＡＤＤ、ＳＵＢ、ＭＵＬＴ）、記憶ユニット（レジスタ、レジスタファイル）、接続ユニット（ＭＵＸ、バス、配線）の数と型を固定する。
【００６５】
次に、バインディング部１６は、どのリソースが動作レベル記述のアルゴリズムの各演算によって用いられるかを決定する（ステップＳ０６）。すなわち、演算操作や変数に計算ユニットや記憶ユニットを割り当てる。このとき、内部記憶領域やデータアクセス回路に対応する演算に対しても記憶ユニットや計算ユニットが割り当てられる。
【００６６】
そして、モジュール生成部１７は、データパスのユニット（レジスタ及び演算器）間の通信のために必要なリソースを決定する（ステップＳ０７）。すなわち、接続ユニットを割り当てる。そして、ＲＴレベル記述生成部１８は、合成設計のＲＴレベル記述を生成する（ステップＳ０８）。すなわち、計算ユニットや記憶ユニットを接続ユニットで結線してデータバスを作成してＲＴレベル記述を生成する。これにより、データアクセス回路及び内部記憶領域も併せて生成される。
【００６７】
以上のプロセスにより、本発明の実施の形態に係る動作合成方法が実行される。
【００６８】
図１１は、本実施の形態に係る動作合成装置の効果の一例を示す模式図である。本実施の形態では、設計される半導体集積回路における消費電力の低減及び性能の向上を図ることができる。左側の破線で囲まれた方が図１の動作合成装置を用いた場合であり、右側の破線で囲まれた方が図２の本実施の形態に係る動作合成装置を用いた場合である。例えば、動作レベル記述で定義されるアルゴリズムでは配列の要素ａ［０］へのリードアクセス頻度が高いとする（左側下段のグラフ）。本実施の形態（右側）では、この要素ａ［０］についてロジック６０に内部記憶領域６２を設け、一度外部メモリ７０にアクセスを行って読み出したデータを内部記憶領域６２に格納し、それ以降の要素ａ［０］へのアクセスは内部記憶領域６２にアクセスすることにする。それにより、外部メモリ７０へのアクセス数が大幅に減少する。また、内部記憶領域６２へのアクセスはポートを介さない。このように、本実施の形態では、アルゴリズムの中でメモリアクセス頻度が高い変数について、一度外部メモリ７０から読み出したデータを内部記憶領域６２に格納し、以降の同変数へのリードアクセスは、メモリに対してではなく内部記憶領域６２に対して行うため、外部メモリ７０へのアクセス数を大幅に減少させることが可能となる。
【００６９】
本実施の形態では、動作レベル記述のアルゴリズムに、メモリへアクセスするのか内部記憶領域へアクセスするのかを切り換える論理を追加している。この追加そのものにより、ロジックの電力は増加する。しかし、ロジックから外部メモリに格納されたデータへアクセスするのに消費する電力に比べると、ロジックの内部記憶領域へアクセスするのに消費する電力は非常に小さく、その差はロジックの電力増加分と比較しても十分に大きい。そのため、全体として、外部メモリへのアクセスを内部記憶領域へのアクセスに置き換えることにより、消費電力を低減することができる。
【００７０】
また、ロジックから外部メモリにアクセスするにはポートを介する必要があり、一つのポートに対するアクセスは逐次的となる。しかし、ロジックの内部記憶領域へのアクセスにはポートを介する必要は無く、ロジック内部で並列にアクセスできる。したがって、ロジックの処理の並列性を高めることが可能となり、性能を向上させることができる。これはメモリアクセスを静的に解析する場合に得られる効果である。
【００７１】
また、ロジックの外部メモリへのアクセスに要するレイテンシに比べると、ロジックの内部記憶領域へのアクセスに要するレイテンシは非常に小さい。そのため、外部メモリへのアクセスを内部記憶領域へのアクセスに置き換えることにより、メモリアクセスレイテンシに起因するスループット低下を抑制することができ、性能を向上させることができる。
【００７２】
本実施の形態では、動作レベル記述のアルゴリズムにとってメモリアクセスが最頻度発生するデータを予め判定した上で、当該データを内部記憶領域に格納するための回路を作り込む。そのため、データを格納するための領域サイズは必要最小限に抑えられ、かつ、複雑なアドレス判定やフラグチェックの必要がない分、回路サイズをより小さく抑えられる。すなわち、本実施の形態における回路面積と低消費電力化や性能向上の効果と回路面積とのトレードオフの影響を抑制し、その効果を相対的に高めることが可能となる。
【００７３】
また、本実施の形態では、動作レベル記述におけるアルゴリズムにおいて、メモリのそれぞれのアドレスに対するアクセス頻度を明らかにしたうえで、アクセスが最頻度発生するデータのみを内部記憶領域に格納する回路を生成するため、アルゴリズムに最適な効率の高いデータバッファリングを実現することができる。
【００７４】
本発明のプログラム、データ構造は、コンピュータ読取可能な記憶媒体に記録され、その記憶媒体から情報処理装置に読み込まれても良い。
【００７５】
本発明は上記各実施の形態に限定されず、本発明の技術思想の範囲内において、各実施の形態は適宜変形又は変更され得ることは明らかである。
【符号の説明】
【００７６】
１、１０１    動作合成装置
１１、１１１    コンパイル部
１２    メモリアクセス解析部
１３    回路追加部
１４、１１４    スケジューリング部
１５、１１５    アロケーション部
１６、１１６    バインディング部
１７、１１７    モジュール生成部
１８、１１８    ＲＴレベル記述生成部
２１    アクセス頻度解析部
２３    対象変数決定部
３１    記憶領域生成部
３２    アクセス回路生成部
５１、５１ａ、１２１    動作レベル記述
５２、１２２    ＲＴレベル記述
５６、５７、５８    記述
６０    ロジック
６１    データアクセス回路
６２    内部記憶領域
６５    ポート
７０    メモリ
７１    データ
８１、８２、８３、８４    処理
【図１】
2011022863.tif 000003
【図２】
2011022863.tif 000004
【図３】
2011022863.tif 000005
【図４】
2011022863.tif 000006
【図５】
2011022863.tif 000007
【図６】
2011022863.tif 000008
【図７】
2011022863.tif 000009
【図８】
2011022863.tif 000010
【図９】
2011022863.tif 000011
【図１０】
2011022863.tif 000012
【図１１】
2011022863.tif 000013