(57)【要約】【課題】  機能ユニットにおいて不必要な電力消費を最小限に抑えるためのデータ経路の割振りのための方法および装置を提供する。【解決手段】  高位合成レジスタ転送レベル設計を作成するための方法および装置は、電力管理の定式化を用い、最小の擬似スイッチングのハードウェアアーキテクチャを生成するために、割振り処理に適合するために用いることができる。２部重み付け割当ては、コスト定式化およびハンガリーのアルゴリズムによって、機能ユニットの共有を決定するために用いられる。【選択図】図５
2007034888.tif 000002
【特許請求の範囲】
【請求項１】
データフローグラフからリソースの割振りの生成を含むデータ経路割振り方法。
【請求項２】
前記生成が、機能ユニットの共有における良好な電力管理に基づいて、リソースを割振るステップを含む、請求項１に記載の方法。
【請求項３】
前記生成が、前記機能ユニットの共有において回避することができる不必要な電力損失を削減するために、リソースを割振るステップを含む、請求項２に記載の方法。
【請求項４】
前記生成が、前記機能ユニットの共有における前記不必要な電力損失を削減するために、リソースを割振るステップを含む、請求項２に記載の方法。
【請求項５】
リソースの割振りを生成するステップが、複数の可能な割振りに関連するコストを決定するステップと、前記関連コストに基づいて割振りを選択するステップと、を含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記関連コストに基づく割振りを選択するステップが、最低の関連コストで前記割振りを選択するステップを含む、請求項５に記載の方法。
【請求項７】
前記関連電力コストが、可能な割振りにおいて生成されるようなマルチプレクサの電力消失コストと、可能な演算に対する機能ユニットの割当てで生じる電力管理コストと、を含む、請求項５に記載の方法。
【請求項８】
前記マルチプレクサの前記電力消失コストが、前に特徴付けられた平均電力および得られた面積を用いて定数因子ＫＭＵＸをＭＵＸの面積の倍率に掛けることによって得られる、請求項７に記載の方法。
【請求項９】
変数に関してスイッチングアクティビティを自動的に決定するステップをさらに含む、請求項５または６に記載の方法。
【請求項１０】
スイッチングアクティビティに関するデフォルト値が、周知でない場合に決定される、請求項５または６に記載の方法。
【請求項１１】
前の変数が切替わるときまで他の変数の信号の流れが進む一連の機能ユニットの電力測定基準の和への変数の切替え速度を乗算することによって、２変数のそれぞれに関して、２変数の間の共通の出力ポートの共有から相対的な電力消失コストを計算し、共有処理に導入される擬似的な電力消失を表すステップをさらに含む、請求項５から１０のいずれか１項に記載の方法。
【請求項１２】
前記相対的な電力消失コストが、両方ともレジスタタイプであるか、または両方とも配線タイプである入力変数に関する以下の定式化に基づいて計算され、
＜数１＞
2007034888.tif 000013
であり、式中、
Ｖａｒ  １は、所定の宛先の演算に対する第１の入力変数であり、
Ｖａｒ  ２は、所定の宛先の演算に対する第２の入力変数であり、
ＳＡは、すべての変数に対する変数のスイッチングアクティビティであり、
ｎは、宛先の演算の数であり、
Ｐｏｗｅｒは、出力変数から前の変数と共通の機能ユニットの出力ポートを共有する別の変数の所定の宛先の演算までの不必要な信号の流れを計算することによって得られる電力消費コストである、請求項１１に記載の方法。
【請求項１３】
前記コストの計算が、両方のレジスタタイプのみの出力を有する演算に関して行われる、請求項１２に記載の方法。
【請求項１４】
前記コストの計算が、両方の配線タイプの出力を有する演算に関して行われる、請求項１２に記載の方法。
【請求項１５】
前記相対的な電力消失コストが、１つの入力変数がレジスタタイプであり、他方の入力変数が配線タイプである演算の間の機能ユニットの共有に関して以下の定式化に基づいて計算され、
＜数２＞
2007034888.tif 000014
であり、式中、
Ｖａｒは、変数が配線タイプである場合の所定の宛先の演算に対する入力変数であり、
ＳＡは、すべての変数に対する変数のスイッチングアクティビティであり、
ｎは、宛先の演算の数であり、
Ｐｏｗｅｒは、出力変数から前の変数と共通の機能ユニットの出力ポートを共有する別の変数の所定の宛先の演算までの不必要な信号の流れを計算することによって得られる電力消費コストである、請求項１１に記載の方法。
【請求項１６】
前記コストの計算が、配線タイプの入力変数を有する演算およびレジスタタイプのみの他の演算の機能ユニットの共有に関して行われる、請求項１５に記載の方法。
【請求項１７】
意図的でない信号の流れが停止されるまで、不必要な電力の流れの前記コストが計算される、請求項１２または１５に記載の方法。
【請求項１８】
意図的でない信号の流れが他の変数の所期の信号の流れの実行時にラッチされない出力レジスタへの入力によって停止されるまで、不必要な電力の流れの前記コストが計算される、請求項１７に記載の方法。
【請求項１９】
意図的でない信号の流れが他の出力変数からの所期の信号の流れの実行時にマルチプレクサへの入力によって停止されるまで、不必要な電力の流れの前記コストが計算される、請求項１７に記載の方法。
【請求項２０】
リソースの割振りを生成するステップが、データ経路中の演算をモジュールに割振るステップを含む、請求項１から１９のいずれか１項に記載の方法。
【請求項２１】
同一のモジュールを用いることができる演算のグループを生成するステップをさらに含む、請求項２０に記載の方法。
【請求項２２】
モジュールに演算を割振る場合に、重なるライフタイムを有する演算のクラスタを生成するステップをさらに含む、請求項２０または２１に記載の方法。
【請求項２３】
前記演算が、同一のモジュールおよび重なるライフタイムを用いる機能によってクラスタ化される、請求項２１または２２に記載の方法。
【請求項２４】
前記電力消失コストが、前記モジュールの可能な割振りで生成される前記マルチプレクサで消失される電力を含む、請求項５または６に記載の方法。
【請求項２５】
面積コストが、特定の割振りにおける明示の面積コストを含む、請求項２４に記載の方法。
【請求項２６】
前記面積コストが、特定の割振りにおける暗黙の面積コストをさらに含む、請求項２４に記載の方法。
【請求項２７】
前記マルチプレクサの電力消失コストが、マルチプレクサの特徴付けられた面積と電力との間の関係によって決定される定数因子によって、請求項２４または請求項２５に記載されるマルチプレクサの面積コストの倍率を掛けることによって計算される、請求項２４に記載の方法。
【請求項２８】
リソースの割振りを生成するステップが、電力および面積の利用に関する重み付けを備えた２部重み付け割当て割振りを用いるステップをさらに含む、請求項１から２７のいずれか１項に記載の方法。
【請求項２９】
異なる状態で前記機能ユニットに対する前記マルチプレクサの入力が、前記機能ユニットに対する演算のすべての割振りの後で更新される、請求項２０に記載の方法。
【請求項３０】
リソースの割振りを生成するステップが、ハンガリーのアルゴリズムを用いて、割振りのマッチング問題を克服するステップをさらに含む、請求項１から２９のいずれか１項に記載の方法。
【請求項３１】
所与のデータフローグラフ（ＤＦＧ）に基づくデータ経路割振りの方法である、請求項１から３０のいずれか１項に記載の方法。
【請求項３２】
回路のためのデータ経路割振りの方法である、請求項１から３１のいずれか１項に記載の方法。
【請求項３３】
電子回路のためのデータ経路割振りの方法である、請求項１から３２のいずれか１項に記載の方法。
【請求項３４】
添付図面を参照して、上記に実質的に記載され、添付図面に示されているようなデータ経路割振りの方法。
【請求項３５】
機能ユニットの共有における前記電力管理コストおよび生じたマルチプレクサの電力消失を考慮すると同時に、リソースを生成するための手段を具備するデータ経路割振り装置。
【請求項３６】
請求項１から３５のいずれか１項に記載の方法によって動作可能な装置。
【請求項３７】
請求項１から３５のいずれか１項に記載の方法によって動作可能な、請求項３６に記載の装置。
【請求項３８】
添付図面を参照して、上記に実質的に記載され、添付図面に示されているように、動作するように構成および配置されたデータ経路割振り装置。
【請求項３９】
データ経路割振りのために、コンピュータ読取り可能な媒体上に記録され、請求項１から３８のいずれか１項に記載の方法によって動作可能なコンピュータプログラムを有するコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば回路設計におけるデータ経路の割振りに関する。
【背景技術】
【０００２】
回路設計において、設計者は、回路の機能性のアルゴリズムの仕様を含む動作記述から始めると考えられる。高位合成は、超大規模集積（ＶＬＳＩ）回路の動作記述を構造的なレジスタ転送レベル（ＲＴＬ）実装に変換する。ＲＴＬ実装は、マクロブロック（たとえば、機能ユニット、レジスタ、マルチプレクサ、バス、メモリブロックなど）およびランダム論理の相互接続を記述する。
【０００３】
順次回路の動作記述は、回路のサイクルごとの動作またはその構造的な実装に関する情報をほとんど含まないと考えられる。高位合成（ＨＬＳ）ツールは一般に、制御データフローグラフ（ＣＤＦＧ）などの適切な中間フォーマットに動作記述をコンパイルする。ＣＤＦＧの頂点は、動作記述のさまざまな演算を表す。データおよび制御エッジは、演算および制御の流れとの間のデータ依存性をあらわすために用いられる。
【０００４】
高位合成ツールは一般に、１つ以上の以下のタスク、すなわち変換、モジュール選択、クロック選択、スケジューリング、リソース割振りおよび割当て（リソース共有またはハードウェア共有とも呼ぶ）を行う。スケジューリングは、１つ以上のクロックサイクルまたは制御ステップに各演算を割当てることによって、設計のサイクルごとの動作を決定する。割振りは、動作記述を実行するために用いられる各タイプのハードウェアリソースの数を決定する。割当てとは、割当てられたレジスタ（および対応する機能ユニット）の１つに対する各変数（および対応する演算）の結合を指す。
【０００５】
ＶＬＳＩ回路において、回路における信号が論理遷移を受けるときは常に被る動的構成要素は、電力消失が著しく目立つことが多い。しかし、回路のすべての部分が各クロックサイクルの中で機能する必要があるとは限らない。したがって、複数の低電力設計技術は、不必要な信号遷移の抑制または解消に基づいて提案されている。一般に、そのような技術をあらわすために用いられる用語は、電力管理である。データ経路割振りとの関連において、電力管理が、以下の技術を用いてデータ経路割振りに適用されうる。
【０００６】
オペランド分離
組込み式組合せ論理ブロックの入力に透過ラッチを挿入することおよび論理ブロック用に使用していない状態を検出するためのさらなる制御回路。制御回路の出力は、論理ブロックの入力におけるラッチが値を変更することができないようにするために適切に用いられる。したがって、前のサイクルの入力値は、検討中、論理ブロックの入力で保持され、不必要な電力消失を排除する。
【０００７】
オペランド分離技術には、２つの欠点がある。種々のサブ回路用に使用していない状態を検出する信号は一般に、遅れて到着する（たとえば、各制御装置状態の中で入れ子の条件文の存在のために、使用していない状態は、データ経路からの比較器の出力に左右されうる）。したがって、課せられなければならないタイミングの制約（すなわち透過ラッチに対するイネーブル信号は、そのデータ入力が変更することができる前に決定しなければならない）が満たされないことが多いため、抑制を無効にする。さらに、機能ユニットの前の透過ラッチの挿入は、回路の限界経路にさらなる遅延を生じる可能性があり、これは、高速のほかに電力効率を必要とする信号処理用途および画像処理用途では許容可能ではない可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本特許は、連鎖演算のためのデータ経路割振りにおける電力消費の最小化に取組むことを目的としている。データ経路割振りにおいて、機能ユニットに演算を慎重に割振ることによって、回路の電力消費を最小限に抑えることができる。図１を参照すると、ＡＬＵ２における不必要な電力消失のために、不必要な電力消費がデータ経路割振りの場合に生じるのに対し、よりすぐれたデータ経路割振りスキーム（図２）の場合には、不必要な電力損失は機能ユニットの共有から生じない。すべての機能ユニットが共有されない場合には、不必要な電力損失は生じない。しかし、これは、多額のハードウェアコストのために廉価ではない。データ経路割振りにおける機能ユニットの割当てに対する可能な演算に関して生じうる適切な演算候補のそれぞれの不必要な電力コストを考慮することによって、電力損失を最小限に抑えることができる。
【０００９】
図３および図４に示されている別のデータ経路割振りスキームの組を考えることにする。抽出器は平均して乗算器より電力消費が少ないと仮定する。図３に示されているスキームは、抽出器における不必要な電力損失が乗算器で生じる不必要な電力損失よりはるかに小さいために、電力消失がより少ないことが分かる。乗算器および抽出器への入力に共通のスイッチング頻度を仮定すると、抽出器または乗算器が用いられる場合のシフタに関する不必要な電力損失は、同一である。したがって、図３のデータ経路割振りスキームは、図４に示されるスキームと比較して、電力消失を考慮するという点でより好ましい。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、データ経路割振りの方法が提供される。この方法は、機能ユニットにおける不必要な電力消費を低減するために、電力コストの定式化によってリソースの割振りを生成するステップを含む。
【００１１】
本発明の別の態様によれば、データ経路割振りの装置が提供される。この装置は、リソースの割振りを生成する手段を具備する。
【００１２】
本発明のさらに別の態様によれば、データ経路割振りのためにコンピュータ読取り可能な媒体に記録されるコンピュータプログラムを有するコンピュータプログラム製品が提供される。このコンピュータプログラム製品は、機能ユニットの共有の異なる代替例に関してリソースの相対的に不必要な電力消費を計算し、低電力リソースを生成するためにこれらの情報を用いるためのコンピュータプログラムコード手段を具備する。
【発明の効果】
【００１３】
本発明により、連鎖演算において最小の不必要な電力消費で回路を生成することができる。
【発明を実施するための最良の形態】
【００１４】
本発明は、添付図面を参照して非限定的な例によって説明される。
【００１５】
高位合成のデータ経路割振り最適化段階は、２つのサブタスク、すなわちモジュール割振り（演算と機能ユニットとの結合）およびレジスタ割振り（変数とレジスタとの結合）からなる。本発明の記載される実施形態は、モジュール割振りサブタスクにおいて有用である。
【００１６】
モジュール割振りに関する電力管理のコストは、最適の割振りを与えるために、電力管理コストの定式化によってすべての割振りステージで比較される。
【００１７】
図５は、ハードウェア設計を生成するために、本発明の実施形態の演算に関する概略のフローチャートである。
【００１８】
回路の動作記述が提供される（ステップＳ１０）。回路設計に関する変数のスイッチング頻度が決定される（ステップＳ１２）。スイッチング頻度は、コンパイラの上位段階によって計算され、不完全な電力管理アーキテクチャにおいて生じるモジュールの共有によって導入される擬似的な電力消失の計算におけるリソース割振り段階の中で用いられる。
【００１９】
動作記述は、たとえばＨＬＳコンパイラによって構文解析される（ステップＳ１４）。中間表現もまた、複数の周知の方法のいずれかによって最適化される（ステップＳ１６）。中間表現を最適化するための一般的な技法としては、ソフトウェアパイプライニング、ループ展開、命令並列化スケジューリング、強制指向スケジューリングなどが挙げられる。これらの方法は通常、中間表現を最適化するために合わせて適用される。データフローグラフ（ＤＦＧ）は、変数のスイッチング頻度を用いてスケジューリングされる（ステップＳ１８）。構文表現は、ＤＦＧをスケジューリングするためにコンパイルされる。
【００２０】
後述するように、モジュールおよびレジスタは、回路設計に割振られ（ステップＳ２０）、ＲＴＬ設計の形で提案されたアーキテクチャ（ステップＳ２２）を生じる。
【００２１】
データ経路割振りプログラム
図６は、データ経路割振り処理を示すフローチャートである。データ経路割振りの中で実行するためのサブタスクは、モジュール割振り（演算と機能ユニットとの結合）およびレジスタ割振り（変数とレジスタとの結合）である。この例示的な実施形態において、モジュール割振りに続いて、レジスタ割振りが実行されるが、これは同時であってもよく、逆であってもよい。
【００２２】
すべての変数に関する演算データ、すなわち、変数が導出される演算に関する情報（Ｏｐ＿ｆｒｏｍ）から変数が用いられる演算に関する情報（Ｏｐ＿ｄｅｓｉｔｉｎａｔｉｏｎｓ）が収集される（ステップＳ２０２）。すべての演算に関する変数データ、すなわち、すべての演算によって用いられ、導出される変数に関する情報が収集される（ステップＳ２０４）。すべての変数に関する演算データの解析から、生成時および破棄時がすべての変数に割当てられる（ステップＳ２０６）。生成時および破棄時は、すべての演算に割当てられる（ステップＳ２０８）。
【００２３】
演算は、必要な機能に応じて、すなわちモジュールタイプによって最初にグループ化される。同一のモジュールタイプを必要とする演算、すなわち同一の機能ユニットを共有しうる演算が、そのライフタイム（生成および破棄に基づく）に応じて、クラスタ化される（ステップＳ２１０）。演算は、その生成時に基づいて昇順に最初に分類される。互いに共有可能ではない演算のクラスタは、分類順に応じて割振られる（ライフタイムが重ならない場合に限り、２つの演算は共有可能ではない）。必要な各タイプのモジュールの数が決定される（ステップＳ２１２）。モジュールのそれぞれの可能性のあるタイプに関して、必要な数は、任意の１つの制御ステップにおいて同時に生じるモジュールのそのタイプを共有しうる演算の最大数である。各タイプのモジュールの総数は、そのモジュールタイプを用いた演算の任意の１つのクラスタにおける演算の最大数より大きく、少なくとも最大数に達する可能性がある。次に、モジュールが異なる演算に割振られる（Ｓ２１４）。
【００２４】
次に、変数がレジスタに割当てられる。
【００２５】
ここで、割振りモジュールのステップの例（図６のステップＳ２１４）を、図７を参照して説明する。
【００２６】
モジュールタイプにはすべて、モジュールタイプ番号が割振られる。共通の機能ユニットを共有しうるモジュールは、同一のモジュールタイプに基づいてグループ化される。同一のモジュールタイプ中のすべてのモジュールは、同一の待ち時間（生成から破棄までの時間）を有する。モジュールタイプに割振られたモジュールタイプ番号は、待ち時間の降順で割振られる。すなわち、最長の待ち時間のモジュールタイプが最小のモジュールタイプ番号（すなわち０）を有し、最短の待ち時間のモジュールタイプが最大のモジュールタイプ番号を有する。同一の待ち時間のモジュールタイプには、ランダムに異なる連続番号が割振られる。同様に、各モジュールタイプに関して演算の各クラスタには番号が割振られる。
【００２７】
割振りモジュールの処理は、割振られる対象の第１のモジュールタイプをモジュールタイプ＝０に設定することによって開始される（ステップＳ３０２）。現在のモジュールタイプ番号が最後（可能な限り最高の）モジュールタイプ番号より高いかどうかの確認がなされる（ステップＳ３０４）。現在のモジュールタイプ番号が最後のモジュール番号より高くない場合には、現在のモジュールタイプに関して現在の演算クラスタ番号が０に設定される（ステップＳ３０６）。現在のモジュールタイプに関する現在の演算クラスタ番号におけるすべての演算が、現在のモジュールタイプの異なる機能ユニットに割当てられる（ステップＳ３０８）。モジュールが、現在のクラスタにおける演算に関して待ち時間の降順に割振られる。次に、現在の演算クラスタ番号が１つ増分される（ステップＳ３１０）。
【００２８】
現在の演算クラスタ番号が最後（最高）の演算クラスタ番号より高いかどうかの確認がなされる（ステップＳ３１２）。現在の演算クラスタ番号が最後の演算クラスタ番号より高い場合には、現在のモジュールタイプ番号が１つ増分され（ステップＳ３１４）、処理はステップＳ３０４に戻る。新しい現在のモジュールタイプ番号が最後のモジュールタイプの番号より高くない場合には、この次のモジュールタイプのモジュールを用いる第１の演算クラスタにおける演算がこの次のタイプのモジュールに割振られる（ステップＳ３０８による）。
【００２９】
ステップＳ３１２で現在の演算クラスタ番号が最後の演算クラスタ番号より高くない場合には、モジュール割振りに関して行列またはグラフが構築される（ステップＳ３１６）。行列またはグラフは、モジュールの既存の割振り（第１の演算クラスタおよびこれまでに処理された任意の他の演算クラスタに対して）および現在の演算クラスタ番号に基づいている。現在のモジュールタイプに関してこれまでに処理されたすべてのクラスタに対する割振りを行うために、任意の割振り問題が克服される（ステップＳ３１８）。
【００３０】
次に、現在の演算クラスタ番号が１つ増分され（ステップＳ３２０）、処理はステップＳ３１２に戻る。
【００３１】
一旦、モジュール割振り処理がすべてのモジュールタイプにわたって一巡すると、ステップＳ３０４は、モジュールタイプ番号が最後または最高のモジュールタイプ番号より大きいことを検出し、モジュール割振り処理はすべてのモジュールタイプに対するモジュール割振りを出力する（ステップＳ３２２）。
【００３２】
モジュール割振りは、待ち時間の降順で演算に関して行われる。これは、より短い待ち時間のモジュールと比較した場合、重なったライフタイムを有するモジュールの可能性が、より長い待ち時間の演算の場合のほうが高いためである。より短い待ち時間の演算の場合には、より長い待ち時間の演算に割当てられる実際の機能ユニットは、演算自体ではなく、解析に用いられる。
【００３３】
共有可能な機能ユニットの演算は、２部重み付け割当て（Ｂｉｐａｒｔｉｔｅ  Ｗｅｉｇｈｔｅｄ  Ａｓｓｉｇｎｍｅｎｔｓ）を用いて、機能ユニットにクラスタごとに割当てられる。重み付け２部グラフＷＢ＝（Ｓ，Ｔ，Ｅ）は、マッチング問題を解決するために構築される。グラフの各頂点ｓｉ∈Ｓ（ｔｊ∈Ｔ）は演算ｏｐｉ∈ＯＰ（機能ユニットｆｕｉ∈ＦＵ）を表し、ｏｐｉをｆｕｉに割振ることができる（すなわち、ｆｕｉに既に結合された演算はそのライフタイムがｏｐｉと重なっていない）場合に限り、ｓｉとｔｊとの間には重み付けのなされたエッジｅｉｊがある。エッジｅｉｊに関連する重み付けｗｉｊは、電力コストの定式化（式１を用いて）に基づいて計算される。すべてのモジュールクラスタの割振りは、重み付け２部グラフにおけるマッチング問題としてモデル化され、たとえば、表２に関して後述しているように、公知のハンガリー法［Ｃ．Ｈ．パダディミトリオウ（Ｃ．Ｈ．Ｐａｄａｄｉｍｉｔｒｉｏｕ）およびＫ．スティグリッツ（Ｋ．Ｓｔｅｉｇｌｉｔｚ）著、「Ｃｏｍｂｉｎａｔｏｒｉａｌ  Ｏｐｔｉｍｉｓａｔｉｏｎ」、Ｐｒｅｎｔｉｃｅ−Ｈａｌｌ、１９８２］によって解決される。
【００３４】
レジスタ割振り処理は、レジスタに対する変数の割振りを含む。変数とレジスタの結合処理を最適化するための一般的な技法としては、貪欲アルゴリズムなどの貪欲構成的アプローチまたはｉ）クリーク分割法、ｉｉ）レフトエッジアルゴリズムおよびｉｉｉ）重み付け２部マッチングアルゴリズムなどの分解アプローチが挙げられる。
【００３５】
コストの定式化
モジュール割振り電力コストの定式化（図７のステップＳ３１６の場合）
図８は、演算候補と特定のクラスタに割当て可能な機能ユニットとの間のコスト割当て処理を示すフローチャートである。機能ユニットに対する演算のすべてのエッジは、機能ユニットに対する演算の割当てで生じる電力コストに割当てられる。グラフエッジ割当ては、利用可能な第１の機能ユニットに対して第１の演算候補に割振られる現在の演算を評価することによって開始される。コスト割当て処理（Ｓ４１２）は、図に示されているように、すべての演算候補および機能ユニットに関して反復される。
【００３６】
図９は、ステップＳ４１２のコスト割当て処理を示すフローチャートである。このステップにおいて、ＦＵに対する現在の演算候補の割当てで生じうる不必要な電力コストが、ＦＵに割当てられるすべての演算に対して演算候補を評価することによって計算される。コスト割当ては、現在の演算候補と、過去の割振りクラスタにおけるＦＵに割当てられた第１の演算から始まる。演算候補に対する評価は、過去の割振りにおいてＦＵに割当てられたすべての演算に関して行われる。
【００３７】
ステップＳ５０８において、２つの演算の間の詳細な電力の定式化が行われる。モジュール割振りにおいて変更することができる関連電力コストは、マルチプレクサ（ＭＵＸ）および電力管理コストの割振りが原因で生じるコストである。モジュール割振りにおいて、電力のコストの定式化は、以下のように決定される。
ｆｐｏｗｅｒ（ｘ）＝（電力管理コストの和）＋（マルチプレクサの電力コストの和）［１］
【００３８】
モジュール割振りにおいて変更することができる唯一の関連面積コストは、マルチプレクサの番号が原因で生じるコストである。したがって、モジュール割振りにおいて、式２を用いたマルチプレクサの電力コストは、以下のように決定される。
ｆＭＵＸ（ｘ）＝ＫＭＵＸ＊（マルチプレクサの面積コストの和）                  ［２］
式中、ＫＭＵＸは、用いられる技術に関して、ＭＵＸの正規化された電力コスト消費に対する面積コストの倍率をかけるために用いられる定数である。
【００３９】
この実装の場合には、機能ユニットは、可能であれは常に共有される。必要な最小値より大きい機能ユニットの割振りはない。モジュール割振り段階は、その入力およびレジスタ入力で最小のＭＵＸ電力使用および最適な電力管理構成が生成されるように、機能ユニットをどのように共有するかを決定するための段階である。
【００４０】
レジスタおよび機能ユニットへの入力におけるマルチプレクサ（ＭＵＸ）の電力消費は、２部重み付け割当てターゲットを用いて、抑制される。演算の変数の入出力のためのＭＵＸの電力要件は、モジュール割振りにおいて電力コストの定式化を評価し、図１０のステップＳ６１４で生成されるように、式３に示している。機能ユニットに対する演算のすべての割振りに関して、式３は、レジスタへの入力で生じる明示のＭＵＸコストを評価するために最初に用いられる（レジスタはレジスタ割振り段階まで割振られることはないが、レジスタの必要性はモジュール割振り段階で認識されるため、コストを見積もることができる）。続いて、式３が用いられ、機能ユニットへの入力で生じる暗黙のコストを計算する。
＜数１＞
2007034888.tif 000003
式中、ｏｐｉ、ｏｐｊは、それぞれ演算候補および比較においてレジスタの過去に割振られた演算である。
ＣＭＵＸは、ＭＵＸの推定コスト（たとえばＭＵＸのビット幅に基づく）である。
ＭＡＸは、演算が同一の機能ユニットを共有することができないために、マッチングが可能でない場合に割当てられる最大値（値は、示されたコストがオーバフローを生じるほど高くてはならない）である。
変数または変数が入力変数である場合に変数が達する演算、または出力変数の場合に変数が供給される演算が重なるライフタイムを有する場合には、Ｏｖｅｒｌａｐ（）は１を返し、それ以外の場合には０を返す。
ＯＰは、変数がモジュールへの入力変数である場合に変数が達する演算または変数がモジュールから出力変数として供給される演算のいずれかである。
【００４１】
ＲＥＧ＿ＴＹＰＥ（ｖａｒｉ）は、変数ｉのポートタイプであり、変数タイプはレジスタタイプまたは配線タイプに属することができる。
【００４２】
モジュールに供給される変数が異なる演算から生じる場合には、モジュールの入力への入力で明示のＭＵＸコストが生じる。他の組合せに関して共通の機能ユニットに供給されるモジュールの共有を促進するために、モジュールからの出力で、共通の機能ユニットに供給されない組合せに暗黙のＭＵＸコストが割当てられる。これは、共通の機能ユニットに供給される演算が異なるモジュールに割当てられる場合には、ＭＵＸコストが生じるためである。ＭＵＸコストが必ずしも生じるとは限らないため、すなわち組合せが共通の機能ユニットに供給される変数から構成されないとき、この点では暗黙に過ぎない。しかし、コストが実際に生じるかどうかは、特定のモジュール割振りが選択され、レジスタが割振られるまで決定されない。したがって、暗黙のコストは不確実であると仮定されると、別の実施形態ではそのようなコストを無視する場合がある。
【００４３】
演算が重なるライフタイムを有する場合には、モジュールを共有することはできない。したがって、結果は常に、最大スコアであり、Ｏｖｅｒｌａｐ（ｏｐｉ，ｏｐｊ）＝１である。したがって、
＜数２＞
2007034888.tif 000004
である。
【００４４】
したがって、唯一の結果は、１＊ＭＡＸ＝ＭＡＸとなる。
【００４５】
演算が重なるライフタイムを有さない場合には、
Ｏｖｅｒｌａｐ（ｏｐｉ，ｏｐｊ）＝０である。したがって、
Ｏｖｅｒｌａｐ（ｏｐｉ，ｏｐｊ）＊ＭＡＸ＝０である。しかし、ＭＵＸの面積コストが依然として存在しうる。これは、演算の変数が重なるライフタイムを有するかどうか、演算が重なるライフタイムを有するかどうか、同一の演算が両方の変数に用いられるかどうかに左右される。変数のポートタイプもまた、考慮すべき因子である。
【００４６】
変数ｖａｒｉおよびｖａｒｊが同一のタイプではない場合には、モジュールへのインターフェイスが異なるため、ＭＵＸが必要である。示されているように、共通の演算への入力が異なるタイプである、すなわち一方の入力には配線、他方の入力にはレジスタがある場合には、特定のクロックタイミングで配線からの直接入力および別のクロックタイミングでレジスタからのラッチ出力を受け入れるために、入力にＭＵＸが必要となる。したがって、レジスタタイプが異なる場合には、
＜数３＞
2007034888.tif 000005
である。結果は１＊１＊ＣＭＵＸ＝ＣＭＵＸである。
【００４７】
演算の変数が重なるライフタイムを有する場合には、Ｏｖｅｒｌａｐ（ｖａｒｉ，ｖａｒｊ）＝１である。次の演算または前の演算が重なるライフタイムを有する場合には、
＜数４＞
2007034888.tif 000006
である。したがって、
＜数５＞
2007034888.tif 000007
である。次の演算または前の演算のいずれかあるいは変数が重なるライフタイムを有し、その演算が重なるライフタイムを有さない場合には、結果は１＊１＊ＣＭＵＸ＝ＣＭＵＸである。
【００４８】
同一の演算が用いられる場合には、（Ｏｐｉ＝＝Ｏｐｊ）＝１である。演算が重なるライフタイムを有さず、変数も重なるライフタイムを有さず、レジスタタイプが同一である場合には、
＜数６＞
2007034888.tif 000008
である。したがって、
＜数７＞
2007034888.tif 000009
であり、Ｏｖｅｒｌａｐ（ｖａｒｉ，ｖａｒｊ）＝０であり、
＜数８＞
2007034888.tif 000010
である。したがって、ＭＵＸの面積コストは０である。
【００４９】
変数が重なるライフタイムを有する場合には、共通のレジスタを共有することができないため、ＭＵＸが必要である。変数が重なるライフタイムを有さない場合には、変数は、共通のレジスタまたは機能ユニットの共通の入力ポートまたは出力ポートを共有することができる。レジスタに割当てられた変数が共通の機能ユニットから続く場合には、共有されたレジスタへの入力でＭＵＸコストが避けられる。これは、変数の両方が機能ユニットを共有することができる類似の演算から続き、これらの演算が重なるライフタイムを有さない場合に唯一可能である。機能ユニットへの入力変数が共通のレジスタまたは入力ポートに割当てられる場合には、機能ユニットへの入力でＭＵＸコストが避けられる。
【００５０】
ＭＵＸが原因で生じるモジュール割振りにおける総電力の増加は、ＭＵＸの面積の増大に比例する。ＫＭＵＸは、すべての演算の電力消費に関する基準として用いられるレジスタの電力消費に対して生じるＭＵＸの電力消費を反映するために、ＭＵＸの面積の倍率をかける因子である。ＫＭＵＸは、一部のマルチプレクサの電力測定から得ることができる。ｎビットマルチプレクサによって消費される平均電力が実現される。次のこの電力が、ｎビットレジスタで消費される電力を用いて正規化される。因子ＫＭＵＸは、ＭＵＸの面積単位によって正規化された電力を除算することによって得られる。ｎビットレジスタで消費される電力を用いて、すべての演算の電力測定基準を正規化する。
【００５１】
電力管理コストは、前の演算クラスタにおける同種の演算に割当てられる機能ユニットを共有しうる同一の演算に関して計算される。電力管理コストの計算において満たすべき必須条件は、機能ユニットがレジスタ割振りにおける最適な電力管理を許容することができるような態様で割振られるように、モジュール割振りはレジスタ割振りを考慮して実行されるため、レジスタ共有のための候補である出力変数のライフタイムがモジュールの過去の割振りの出力変数と重ならないことである。
【００５２】
電力に関連するコストの定式化は、レジスタまたは機能ユニットの入力ポートまたは出力ポートの共有によって導入される擬似動作の計算を含む。これは、変数が共通のレジスタまたはポートを共有する場合には、共有に含まれる変数のスイッチングアクティビティと、共有されたレジスタまたはポートに接続される機能ユニットに変数によって導入される擬似電力消失と、を考慮することによって実現される。スイッチングアクティビティに関する情報は、コンパイラによって自動的に決定される。第１の変数によって導入される擬似動作は、その第１の変数のスイッチングアクティビティに、第１の変数がレジスタまたは入力ポートまたは出力ポートを共有する他の変数に関連する不必要なスイッチング演算の電力測定基準を乗算することによって計算される。モジュール割振りは、この情報を利用してモジュールを共有する。
【００５３】
スイッチングアクティビティの計算
コンパイラがプログラムの実行において変数のスイッチングの反復を決定することができない場合には、コンパイラはデフォルト値に周知の「反復数」を割当てる。このデフォルト値は、前に用いられた反復数、たとえばすべての既知の反復数の平均（または過去数回、たとえば最後の５回だけの平均）から導出される。コンパイラは、入力プログラムによって予め定義されるサイクルで実行される変数のための周知の反復数を割当てる。たとえば、変数が現れるループのループサイクルの数が入力プログラムによって１００に定義されている場合には、変数は反復数１００を割当てられる。
【００５４】
両方の出力変数がレジスタタイプである場合、両方の変数が配線タイプである場合
＜数９＞
モジュール割振りの電力管理コスト＝
2007034888.tif 000011
となる。式中、
Ｖａｒ  １は、所定の宛先の演算に対する第１の入力変数であり、
Ｖａｒ  ２は、所定の宛先の演算に対する第２の入力変数であり、
ＳＡは、すべての変数に対する変数のスイッチングアクティビティであり、
ｎは、宛先の演算の数であり、
Ｐｏｗｅｒは、両方の演算が共通の機能ユニットを共有する場合に、出力変数から別の変数の所定の宛先の演算までの不必要な信号の流れを計算することによって得られる電力消費コストである。この方法は、ステップＳ５０８（図１０）に記載されている。
【００５５】
いずれか一方の変数がレジスタタイプであり、他方の変数が配線タイプである場合には、
＜数１０＞
モジュール割振りの電力管理コスト＝
2007034888.tif 000012
となる。式中、
Ｖａｒは、変数が配線タイプである場合の所定の宛先の演算に対する入力変数であり、
ＳＡは、すべての変数に対する変数のスイッチングアクティビティであり、
ｎは、宛先の演算の数であり、
Ｐｏｗｅｒは、両方の演算がステップＳ５０８（図１０）から共通の機能ユニットを共有する場合に、出力変数から別の変数の所定の宛先の演算までの不必要な信号の流れを計算することによって得られる電力消費コストである。
【００５６】
レジスタへの入力が変化するとき、レジスタが切替わる。しかし、機能ユニットの出力が切替わるとき、全体的な電力消費に関して、出力がラッチされるのが共有されるレジスタであるか、または共有されないレジスタであるに関係なく、レジスタの電力消費は依然として同一のままである。すなわち１つのレジスタをスイッチングなければならない。他方、存在するマルチプレクサは電力を消費し、全体的な電力消費に相違を生じる。電力管理コストは、不必要な機能ユニットのスイッチングにのみ関連しているコストである。このコストは、レジスタのスイッチングまたはマルチプレクサのスイッチングの電力損失に関係がない。
【００５７】
電力管理コストの定式化は、異なるシナリオに関する２つの式の利用を伴う。演算候補およびＦＵ演算の両方の宛先変数が同一タイプである、すなわち両方とも配線タイプまたは両方ともレジスタタイプである場合には、式４ａが用いられ、そうでない場合には式４ｂが用いられる。両方の変数タイプがレジスタである場合には、出力変数は同一のレジスタを共有してもよい。したがって、レジスタの出力で各変数によって誘発される不必要な電力消費を考慮することができる。図１１に示されているように、レジスタがＯＰ１の値をスイッチングする場合には、ＯＰ２に接続されるＦＵは、不必要に切替えられ、逆もまた同様である。
【００５８】
両方の変数タイプが配線である場合には、出力変数は、他の変数の宛先の演算への不必要なスイッチングを誘発する。一連の内部で接続される演算を通るこの不必要に切替えられる信号は、出力レジスタまたはマルチプレクサによって終了する。図１２は、そのような接続によって誘発されうる不必要なスイッチングを示している。
【００５９】
他方、１つの変数タイプが配線であり、他方のタイプがレジスタである場合には、配線タイプの変数からの信号の流れは、レジスタタイプの他の変数における不必要な電力消費に誘発されない。これは、レジスタが特定の状態でラッチされないためである。しかし、レジスタタイプの出力変数の信号の流れは、前の変数が切替えられる場合に、配線タイプの出力変数に接続される演算によって、不必要な電力消費を生じる。不必要に切替えられる演算の信号の流れは、レジスタへの入力またはマルチプレクサへの入力で終了する。図１３を参照すると、共有されるＦＵがＯＰ２の出力変数のために切替える場合には、ＯＰ１の出力に接続されるＦＵは不必要に切替えられる。共有されたＦＵがＯＰ１の出力変数に関して実行される場合には、レジスタはこのクロックでラッチされないため、ＲＥＧ２の切替えを生じることはない。したがって、式４ｂがこのような場合に用いられる。
【００６０】
各入力変数に生じる不必要な電力消費を計算するための処理（ステップＳ５０８）が、図１０に示されている。変数ｉの宛先の演算が最初に評価される。演算ｉが状態Ｍで切替えられ、宛先の演算の不必要な切替えを生じる変数が状態Ｎで切替えられると仮定する。
【００６１】
宛先の演算は、ＦＵに割当てられるかどうかを調べるために、最初に確認される。既に割当てられている場合には、状態Ｎにおける宛先のＦＵの利用が確認される。状態Ｎで用いられる場合には、状態Ｍおよび状態Ｎの両方で用いられるこのＦＵの利用から不必要な電力消費が生じないために、電力管理コストの計算が終了する。ＦＵが両方の状態で用いられる場合には、状態Ｎにおける宛先のＦＵマルチプレクサへの入力で確認が行われる。状態Ｎにおけるその前の演算から続く入力が現在の演算の前の演算である場合には、不必要な電力消費は現在の演算に割当てられる機能ユニットで生じる。したがって、電力消費コストは、機能ユニットの正規化された電力消費を用いて増分される。宛先の機能ユニットの入力マルチプレクサへの入力が前の演算でない場合には、機能ユニットにおける不必要な電力消失の計算は、この一連の内部接続される演算に関して終了する。意図的でない信号の流れは、機能ユニットの入力マルチプレクサへの入力によって中断される。
【００６２】
割振られた機能に関するマルチプレクサの情報は、モジュール割振りが行われるステップＳ３１８において更新される。
【００６３】
現在の演算がまだ割当てられていない（次のクラスタ割振りまたは次のモジュールタイプの割振りにおいて割当て可能である）場合には、状態Ｎにおける演算の共有可能性が確認される（ステップＳ６１２）。演算が状態Ｎにおける演算のいずれかと同一の機能ユニットを共有することができる場合には、電力管理コストの計算は停止する。そうでない場合には、入力マルチプレクサの存在およびその信号がこの接合点では周知ではないために、生じうる電力コストもまた考慮される（Ｓ６１４）。
【００６４】
ステップＳ５０８において計算される電力は、他の変数の宛先の演算のいずれか（擬似アクティビティ）と共有可能でない演算の正規化された電力消費である。宛先変数の演算が共有され、状態Ｍおよび状態Ｎにおいて用いられる場合には、不必要な電力消費は生じない。
【００６５】
その次に、現在の演算の宛先変数のタイプが確認される（ステップＳ６１６）。宛先変数がレジスタタイプである場合には、変数ｉから続く一連の内部接続された演算に関して、電力管理コストの計算はここで終了する。意図的でない結果が、この一連の演算に関して出力レジスタ（宛先変数に割当てられる）にラッチされず、この点からさらに不必要な電力消失を生じない。
【００６６】
例示的な実施形態の装置および処理は、たとえば図１４に概略的に示されるようなコンピュータシステム７００で実行されうる。実施形態は、コンピュータシステム７００の中で実行中であり、実施例の実施形態の方法を行うようにコンピュータシステム７００に命令するコンピュータプログラムなどのソフトウェアとして実現されてもよい。
【００６７】
コンピュータシステム７００は、コンピュータモジュール７０２、キーボード７０４およびマウス７０６などの入力モジュールおよびディスプレイ７０８およびプリンタ７１０などの複数の出力装置を具備する。
【００６８】
コンピュータモジュール７０２は、適切なトランシーバ装置７１４によってコンピュータネットワーク７１２に接続され、たとえば、インターネットまたはローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）などの他のネットワークシステムへのアクセスを可能にする。
【００６９】
実施例におけるコンピュータモジュール７０２は、プロセッサ７１８、ランダムアクセスメモリ（ＲＡＭ）７２０および読取り専用メモリ（ＲＯＭ）７２２を具備する。コンピュータモジュール７０２はまた、たとえば、ディスプレイ７０８へのＩ／Ｏインターフェイス７２４およびキーボード７０４へのＩ／Ｏインターフェイス７２６などの多数の入力／出力（Ｉ／Ｏ）インターフェイスを具備する。キーボード７０４は、たとえば、入力ファイルまたはＫＭＵＸ定数を指定するためにチップデザイナによって用いられてもよい。
【００７０】
コンピュータモジュール７０２の構成要素は一般に、内部接続バス７２８および関連業界の当業者には周知の態様で通信を行う。
【００７１】
アプリケーションプログラムは一般に、ＣＤ−ＲＯＭまたはフロッピディスクなどのデータ記憶媒体に符号化され、コンピュータシステム７００のユーザに供給され、データ記憶装置７３０の対応するデータ記憶媒体ドライブを用いて読取られる。アプリケーションプログラムは、プロセッサ７１８による実行中に読取られ、制御される。プログラムデータの中間記憶は、ＲＡＭ７２０を用いて実現されてもよい。
【００７２】
高位合成レジスタ転送レベル設計を作成するための方法および装置は、最小の不必要な電力消費のデータ経路を形成するために電力管理コストの定式化を利用する。
【００７３】
電力管理の定式化に関する演算と機能ユニットとの結合は、最小の不必要な電力を消費する結合に達するために、さまざまな別の結合における不必要な電力消費を評価する。
【００７４】
示された実施形態は、演算と機能ユニットとの結合における不必要な電力の電力管理の定式化を用いて、演算と機能ユニットとの結合を行う機構を提供することによって、従来技術において示された問題を軽減する。機能ユニット割当てに対する演算のエッジのグラフは、ありとあらゆる可能な割振りにおいて生じる不必要な電力を反映するために、電力管理の定式化に基づいて重み付けされる。
【００７５】
モジュール割振りは、２部重み付け割当てを用いて実行され、これらの割当てのマッチング問題を克服するためにハンガリーのアルゴリズムが行われる。ハンガリーのアルゴリズムはＯ（ｎ３）の低い複雑度を有するため、割当てには時間がかからない。
【００７６】
上記の実施形態は、たとえばデコーダまたはエンコーダ用の電子回路に対するデータ経路の割振りに関して説明される。しかし、記載された処理は、当業者には容易に理解されるように、光学／フォトニック回路などの他の回路にデータ経路を割振るために用いることができる。
【００７７】
前述の態様において、データ経路を割振るための方法および装置が開示される。複数の実施形態のみが示されているが、本発明の範囲を逸脱することなく、さまざまな変更および／または修正を行うことができることは、本開示を鑑みれば、当業者には明白であろう。
【産業上の利用可能性】
【００７８】
本発明は、機能ユニットにおいて不必要な電力消費を最小限に抑えるためのデータ経路の割振りのための方法および装置に利用可能である。
【図面の簡単な説明】
【００７９】
【図１】ＡＬＵ２において不必要な電力消費を生じる不用意な機能ユニットの共有を示している。
【図２】不必要な電力消費を生じることのない慎重な機能ユニットの共有を示している。
【図３】シフタおよびビット抽出器まで延在するその出力を備えた機能ユニットの共有を示している。
【図４】シフタおよび乗算器まで延在するその出力を備えた機能ユニットの共有を示している。
【図５】本発明の実施形態の演算に関連する概略のフローチャートである。
【図６】データ経路割振りを示すフローチャートである。
【図７】モジュール割振り処理を示すフローチャートである。
【図８】ありとあらゆる演算候補と機能ユニットとの間の電力管理コストの定式化を示すフローチャートである。
【図９】演算候補とＦＵとの間の電力管理コストの定式化を示すフローチャートである。
【図１０】演算候補と、現在の演算候補の割振り前に割振りにおいてＦＵに割当てられる演算との間の電力管理コストの定式化を示すフローチャートである。
【図１１】ＯＰ１およびＯＰ２の両方によって共有されるＦＵの出力レジスタに接続される入力を備えた機能ユニットに生じる不必要な電力消費の図である。
【図１２】ＯＰ１およびＯＰ２の出力に接続される機能ユニットに生じる不必要な電力消費の図である。
【図１３】ＯＰ１のみの出力に接続される機能ユニットに生じる不必要な電力消費の図である。
【図１４】例示的な実施形態に関連する装置および処理を実行するためのコンピュータシステムの図である。
【符号の説明】
【００８０】
７００  コンピュータシステム
７０２  コンピュータモジュール
７０４  キーボード
７０６  マウス
７０８  ディスプレイ
７１０プリンタ
７１２  コンピュータネットワーク
７１４  トランシーバ装置
７１８  プロセッサ
７２０  ランダムアクセスメモリ（ＲＡＭ）
７２２  読取り専用メモリ（ＲＯＭ）
７２４  入出力（Ｉ／Ｏ）インターフェイス
７２６  入出力（Ｉ／Ｏ）インターフェイス
７２８  内部接続バス
７３０  データ記憶装置
ＦＵ  機能ユニット
ＯＰ  演算
ＭＵＸ  マルチプレクサ
【図１】
2007034888.tif 000015
【図２】
2007034888.tif 000016
【図３】
2007034888.tif 000017
【図４】
2007034888.tif 000018
【図５】
2007034888.tif 000019
【図６】
2007034888.tif 000020
【図７】
2007034888.tif 000021
【図８】
2007034888.tif 000022
【図９】
2007034888.tif 000023
【図１０】
2007034888.tif 000024
【図１１】
2007034888.tif 000025
【図１２】
2007034888.tif 000026
【図１３】
2007034888.tif 000027
【図１４】
2007034888.tif 000028