(57)【要約】  熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成のための技術が概説される。それぞれが様々なスケジュールおよびバインディングの結果を有するハードウェア設計の複数のバージョンが生成され得る。スケジューリングおよびバインディングは、複数のバージョンの熱プロファイルが、バージョン間で離れた熱ピークを有するものになるように行われ得る。各バージョンの熱ピーク間の物理的距離を増大させることにより各バージョンに一意の熱特性を与えることができる。設計の複数のバージョン間の循環のスケジュールは、動作時に集積回路の熱プロファイルの収支が合うように構築され得る。複数の設計を解析し、熱を考慮した循環のスケジューリングおよびバインディングを構築するために線形計画法の枠組みが使用され得る。例えば、Ｋ個の最も効率のよいバージョンが選択され、次いで、１循環内で各バージョン動作させる持続時間が決定され得る。【選択図】図１
2013527943.tif 000002
【特許請求の範囲】
【請求項１】
集積回路の合成のためのコンピュータで実施される方法であって、
その動作が前記集積回路についての第１の熱的エネルギーパターンをもたらす前記集積回路についてのバインディングの第１のバージョンを生成するステップと、
その動作が前記集積回路についての第２の熱的エネルギーパターンをもたらす前記集積回路についての前記バインディングの第２のバージョンを生成するステップと、
前記集積回路内で前記バインディングの前記第１のバージョンと前記バインディングの前記第２のバージョンとの一方を動作させるための循環スケジュールを生成するステップと
を含み、前記第１の熱的エネルギーパターンと前記第２の熱的エネルギーパターンとが互いに対して熱的に異なり、前記第１のバージョンと前記第２のバージョンとがそれぞれ前記循環スケジュールの個々の部分について動作する、方法。
【請求項２】
前記集積回路内で前記循環スケジュールを実施するためのコントローラを生成するステップをさらに含む、請求項１に記載のコンピュータで実施される方法。
【請求項３】
その動作が前記集積回路についてのさらに別の熱的エネルギーパターンをもたらす前記集積回路についての前記バインディングのさらに別のバージョンを生成するステップと、
前記集積回路内で前記バインディングの前記第１のバージョン、前記バインディングの前記第２のバージョン、および前記バインディングの前記さらに別のバージョンのうちの１つを動作させるように前記循環スケジュールを適合させるステップと
をさらに含み、前記第１の熱的エネルギーパターン、前記第２の熱的エネルギーパターン、および前記さらに別の熱的エネルギーパターンが互いに対して熱的に異なり、前記第１のバージョン、前記第２のバージョン、および前記さらに別のバージョンがそれぞれ前記循環スケジュールの個々の部分について動作する、請求項１に記載のコンピュータで実施される方法。
【請求項４】
前記第１のバージョンと前記第２のバージョンとを生成する前記ステップが、前記集積回路と関連付けられるデータパスに従って前記バージョン内の動作を関連付けるステップを含む、請求項１に記載のコンピュータで実施される方法。
【請求項５】
前記第１のバージョンと前記第２のバージョンとを生成する前記ステップが、タイミング制約条件を維持しながら前記集積回路内の所与の種類のモジュールの数を最小化しようと試みるステップを含む、請求項１に記載のコンピュータで実施される方法。
【請求項６】
前記第１のバージョンと前記第２のバージョンとを生成する前記ステップが、１組のタイミング制約条件を満たしながら面積制約条件を維持しようと試みるステップを含む、請求項１に記載のコンピュータで実施される方法。
【請求項７】
前記循環スケジュールを生成する前記ステップが、前記集積回路についての前記第１の熱的エネルギーパターンおよび前記第２の熱的エネルギーパターンを推定するための熱モデルを適用するステップを含む、請求項１に記載のコンピュータで実施される方法。
【請求項８】
前記熱モデルが、それぞれ、当該バージョンのための前記循環スケジュールの前記個々の部分と関連付けられる持続時間で乗算された、前記バインディングの前記第１のバージョンによって消失する電力と前記バインディングの前記第２のバージョンによって消失する電力との和に等しい総熱的エネルギーを含む、請求項７に記載のコンピュータで実施される方法。
【請求項９】
前記循環スケジュールを生成する前記ステップが、前記集積回路と関連付けられる漏洩エネルギーを最小化するステップを含む、請求項１に記載のコンピュータで実施される方法。
【請求項１０】
前記循環スケジュールを生成する前記ステップが、前記集積回路と関連付けられる総エネルギー消費を最小化するステップを含む、請求項１に記載のコンピュータで実施される方法。
【請求項１１】
前記バインディングの前記第１のバージョンが、前記バインディングの前記第２のバージョンによって使用される第２のデータパスとは異なる第１のデータパスを使用する、請求項１に記載のコンピュータで実施される方法。
【請求項１２】
コンピュータによって実行されるときに、前記コンピュータを、集積回路の合成を行うように適合させるための方法についてのコンピュータ実行可能命令が記憶されているコンピュータ記憶媒体であって、前記方法が、
各バージョンの動作が、前記集積回路についての個々の熱的エネルギーパターンが互いに対して熱的に異なるような前記個々の熱的エネルギーパターンをもたらす前記集積回路についてのバインディングの２つ以上のバージョンを生成するステップと、
前記バインディングの前記２つ以上のバージョンがそれぞれ循環サイクルの各部分について動作する循環スケジュールを生成するステップと、
前記バインディングの前記２つ以上のバージョンとコントローラとを前記循環スケジュールを実現するために前記集積回路のための実装設計へと統合するステップと
を含む、コンピュータ記憶媒体。
【請求項１３】
前記方法が、前記集積回路と関連付けられるピーク温度を低減するように前記バインディングの前記２つ以上のバージョンの量を調整するステップをさらに含む、請求項１２に記載のコンピュータ記憶媒体。
【請求項１４】
前記バインディングの前記２つ以上のバージョンを生成する前記ステップが、前記バージョン内の動作を、前記動作の優先順位に従って関連付けるステップを含む、請求項１２に記載のコンピュータ記憶媒体。
【請求項１５】
前記バインディングの前記２つ以上のバージョンを生成する前記ステップが、信号処理のためのサンプリングレートと関連付けられたタイミング制約条件を維持するステップを含む、請求項１２に記載のコンピュータ記憶媒体。
【請求項１６】
前記循環スケジュールを生成する前記ステップが、前記集積回路についての前記個々の熱的エネルギーパターンを推定するための熱モデルを適用するステップを含む、請求項１２に記載のコンピュータ記憶媒体。
【請求項１７】
前記熱モデルが、前記２つ以上のバージョンのそれぞれのための前記循環サイクルの前記個々の部分と関連付けられる持続時間で乗算された、前記２つ以上のバージョンのそれぞれによって消失する電力の和に等しい総熱的エネルギーを含む、請求項１６に記載のコンピュータ記憶媒体。
【請求項１８】
アルゴリズムと関連付けられた動作を実装するためのモジュールと、
前記モジュールに前記アルゴリズムをスケジュールし、バインドして、前記集積回路と関連付けられるピーク熱的エネルギーの低減をサポートするために複数の熱的に異なるバージョンを順に使用するように構成されたコントローラと
を備える、集積回路。
【請求項１９】
前記低減されるピーク熱的エネルギーが、前記複数の熱的に異なるバージョンのうちのただ１つを実装するように構成された集積回路と関連付けられるピーク熱的エネルギーより低い、請求項１８に記載の集積回路。
【請求項２０】
前記コントローラが、前記複数の熱的に異なるバージョンを、それぞれ、循環サイクルの個々の部分持続時間について順に使用する、請求項１８に記載の集積回路。
【請求項２１】
前記コントローラが有限状態機械である、請求項１８に記載の集積回路。
【請求項２２】
前記モジュールのうちの１つまたは複数が数値演算を実装する、請求項１８に記載の集積回路。
【請求項２３】
前記アルゴリズムが信号処理アルゴリズムである、請求項１８に記載の集積回路。
【請求項２４】
前記モジュールが、集積回路内で、同一の動作を行うモジュールが相互に離れて位置決めされるように位置決めされている、請求項１８に記載の集積回路。
【発明の詳細な説明】
【背景技術】
【０００１】
特に指示しない限り、本項に記載される資料は本出願における特許請求の範囲の先行技術ではなく、本項に含まれることにより先行技術であると認められるものではない。
【０００２】
集積回路のためのハードウェア設計は、ハイレベル記述から合成することができる。例えば記述は、ハードウェア記述言語またはプログラミング言語を使用してアルゴリズムレベルで行われ得る。前記記述は、モジュールレベル、レジスタ転送レベル（ＲＴＬ：ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ）、ゲートレベル、またはトランジスタレベルで設計に合成することができる。信号処理を伴うハードウェア設計はデータ・フロー・グラフ（ＤＦＧ：ｄａｔａ  ｆｌｏｗ  ｇｒａｐｈ）として要約され得る。
【０００３】
スケジューリングおよびバインディングはハードウェア合成の一部である。スケジューリングは、回路の機能を実施されるべきステップへと分割することを伴う。例えば前記ステップは、有限状態機械（ＦＳＭ：ｆｉｎｉｔｅ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）の各状態、または信号処理回路内で信号サンプルに対して実施される動作とすることができる。バインディングは、機能を集積回路内のハードウェアリソースにマップする。
【０００４】
より小型の集積回路の最小加工寸法値に合わせて比例縮小する技術は、出力密度または単位面積当たりの消費電力を増加させる。集積回路内の局所的電力消費の増加はチップ上に高温領域を生じさせることになり得る。異なる温度の領域があると熱勾配が生じる。熱勾配は、負バイアス温度不安定性、エレクトロマイグレーション、または漸次的誘電破壊に起因するチップエージングを増大させる可能性のある熱応力を生じさせる。これらの要因は回路の信頼性を低下させる。またチップの性能は、温度の上昇によりキャリア移動度が鈍化し、トランジスタスイッチング速度が低下し、相互接続抵抗が増大するときにも低下し得る。
【０００５】
複雑な電子システムのための多くの設計および動作についての考慮事項では、電力消費を低減しようとする。しかし、電力消費最適化と熱的最適化とは互換性がない。というのは、電力最適化では平均電力消費を最小化しようと試みるが、局所的な高温部の形成には対応し得るからである。限界状態の高温部は、平均電力をあまり増大させなくてもチップを損傷する可能性がある。チップレベルで静的または動的電力消費を低減するための技法は、全体としての電力使用を低減し得るが、全体として電力を低減しようとするために、電力勾配または高温部はそのままに留まり、または増大する可能性さえもある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示は、一般に、集積回路の合成のためのコンピュータで実施される方法を説明する。あるコンピュータで実施される方法例によれば、以下の動作のうちの１つまたは複数を実施することができる。その動作が集積回路についての第１の熱的エネルギーパターンをもたらす集積回路についてのバインディングの第１のバージョンが生成される。その動作が集積回路についての第２の熱的エネルギーパターンをもたらす集積回路についてのバインディングの第２のバージョンが生成される。また、第１の熱的エネルギーパターンと第２の熱的エネルギーパターンとは相互に対して熱的に異なる。第１のバージョンと第２のバージョンとがそれぞれ循環スケジュールの個々の部分について動作する、集積回路内でバインディングの第１のバージョンとバインディングの第２のバージョンとの一方を動作させるための循環スケジュールが生成される。
【０００７】
本開示は、一般に、コンピュータによって実行されるときに、コンピュータを、集積回路の合成を行うように適合させる方法のためのコンピュータ実行可能命令が記憶されているコンピュータ記憶媒体を説明する。ある方法例によれば、以下の動作のうちの１つまたは複数を実施することができる。各バージョンの動作が集積回路についての個々の熱的エネルギーパターンが互いに対して熱的に異なるような個々の熱的エネルギーパターンをもたらす、集積回路についてのバインディングの２つ以上のバージョンが生成される。バインディングの２つ以上のバージョンがそれぞれ循環サイクルの各部分について動作する循環スケジュールが生成される。バインディングの２つ以上のバージョンとコントローラとが循環スケジュールを実現するために集積回路のための実装設計へと統合される。
【０００８】
本開示は、一般に、集積回路を説明する。ある集積回路の例は、アルゴリズムと関連付けられた動作を実装するためのモジュールと、モジュールにアルゴリズムをスケジュールし、バインドして、集積回路と関連付けられるピーク熱的エネルギーの低減をサポートするために複数の熱的に異なるバージョンを順に使用するように構成されたコントローラとのうちの１つまたは複数を含むように構成されている。
【０００９】
以上の概要は例示にすぎず、いかなる点においても限定が意図されるものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えて、さらに別の態様、実施形態、および特徴も明らかになるであろう。
【００１０】
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態を示すものにすぎず、したがって、本開示の範囲を限定するものとみなすべきでないことを踏まえ、添付の図面を使用して、本開示をさらに具体的に詳細に説明する。
【図面の簡単な説明】
【００１１】
【図１】熱を考慮したスケジューリングおよびバインディングを使用して集積回路を合成するためのシステムを示すブロック図である。
【図２】集積回路を実装するための設計に適用される熱を考慮したスケジューリングおよびバインディングの適用例を示すブロック図である。
【図３】集積回路内の隣り合うモジュールについての熱モデルを示す概略図である。
【図４】多バージョンのスケジューリングおよびバインディングのためのプロセスを示す流れ図である。
【図５】コンピューティングシステムの例を示すブロック図である。
【図６】すべて本明細書で提示する少なくともいくつかの実施形態に従って構成された、コンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品の部分を示す図である。
【発明を実施するための形態】
【００１２】
以下の詳細な説明では、本開示の一部を形成する添付の図面を参照する。図面では、文脈上他の意味に解される場合を除き、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は、限定を意図するものではない。本開示で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説し、図に例示する本開示は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらすべてが本開示において明確に企図されていることが容易に理解されるであろう。
【００１３】
本開示は、特に、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成に関連した方法、装置、システム、およびコンピュータプログラム製品を広く対象とするものである。合成されるハードウェアは集積回路とすることができる。ある実施形態によれば、集積回路は、カスタム製造のデバイスやマスクデバイスといった特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）とすることができる。別の実施形態によれば、集積回路は、複合プログラマブル論理回路（ＣＰＬＤ：ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）や、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）や、他の任意の種類のプログラマブル論理回路（ＰＬＤ）といったプログラマブルデバイスとすることができる。集積回路はディジタルデバイスでも、アナログデバイスでも、混成信号デバイスでもよいことを理解すべきである。
【００１４】
簡単にいうと、本明細書で提示される様々な実施形態による様々なスケジュールおよびバインディングの結果をそれぞれ有する、設計の複数のバージョンが生成され得る。例えば、スケジューリングおよびバインディングは、複数のバージョンの熱プロファイルが各バージョン間で離れた熱ピークを有するように実施され得る。また熱プロファイルを熱的エネルギーパターンまたは温度パターンともいう。各バージョンの熱ピーク間の物理的距離を増大させることにより、各バージョンに一意の熱特性を与えることができる。設計の複数のバージョン間の循環のスケジュールは、動作時に集積回路の熱プロファイルの収支が合うように構築され得る。集積回路の熱特性を、熱的エネルギー、熱エネルギー、温度、および／または生成熱エネルギーともいう。複数の設計を解析し、熱を考慮した循環スケジューリングおよびバインディングを構築するのに線形計画法の枠組みが使用され得る。例えば、Ｋ個の最も効率のよいバージョンが選択され、次いで、１循環内で各バージョンを動作させる持続時間が決定され得る。本明細書で論じる技術は、総温度、ピーク温度、総熱的エネルギー、またはピーク熱的エネルギーを低減し得る。
【００１５】
本明細書で説明する複数バージョンのスケジューリングおよびバインディングの技法は、あるバージョンで多用されるモジュールが１つまたは複数の他のバージョンではあまり利用されないように実施され得る。ある例では、複数のバージョンが同時に１つの設計に組み込まれ得る。集積回路の動作時に、各バージョンは、各バージョンが指定された持続時間について使用されることになるように順に動作するようスケジュールされ得る。熱的に異なるバージョン間の循環スケジューリングは、設計内での各モジュールの活動割合の平衡を保つことにより、集積回路上の局所的高温部を低減し得る。循環スケジュール内で各バージョンを動作させる各フェーズの持続時間は不均一とすることができる。ある集積回路設計内で複数のバージョンをスケジュールするための制御機構は、低オーバーヘッドで提供され得る。
【００１６】
図１は、本明細書で提示する１つまたは複数の実施形態に従って構成された、熱を考慮したスケジューリングおよびバインディングを有する集積回路１５０を合成するためのシステム１００を示すブロック図である。コンピュータ１０は、ハードウェア設計１２０を合成するためのソフトウェアを実行するように構成することができる。コンピュータ１０は、図５を参照してさらに詳細に論じる。コンピュータ１０によって利用されるソフトウェアは、熱を考慮したスケジューリング・バインディングモジュール１１０を含むことができる。熱を考慮したスケジューリング・バインディングモジュール１１０は、本明細書で開示する方法、プロセス、および技法を実装するのに利用することができる。
【００１７】
ハードウェア設計１２０は、各バージョンが熱的に異なる複数のスケジューリングおよびバインディングのバージョンの間で循環する集積回路１５０のためのハードウェアソリューションを指定することができる。複数の熱的に異なるバージョンが順番にスケジュールされるような集積回路１５０の動作は、集積回路１５０内のピーク温度の領域の平衡を保つことができる。この平衡化は、バージョンのうちのただ１つだけを有する設計を使用するのと比べて、集積回路１５０内の熱的勾配を低減することができる。
【００１８】
集積回路１５０は、電子システム１６０で使用するための信号処理アルゴリズムの一部または全部を実装し得る。そのような信号処理は、オーディオ、ビデオ、レーダ、医用イメージング、通信信号、または他の任意の信号のための符号化、復号、または符号変換を含み得る。あるいは、信号処理は、圧縮、展開、検証、暗号化、解読、変換、フィルタリング、アップコンバート、ダウンコンバート、補間、デシメーション、スケーリング、等化、または他の任意の種類の処理を含んでいてもよい。ディジタル信号処理用途に加えて、集積回路１５０は、計算処理、シミュレーション、通信、記憶、制御、または関連付けられた電子システム１６０によって求められる他の任意の用途にも使用され得る。
【００１９】
次に図２を見ると、ブロック図に、本明細書で提示する１つまたは複数の実施形態に従って構成された、集積回路１５０Ａを実装するための設計に適用される熱を考慮したスケジューリングおよびバインディングの適用例が示されている。図２の集積回路１５０Ａは図１の集積回路１５０の説明例である。集積回路１５０Ａは、８個の加算器２３０Ａ〜２３０Ｈと２個の乗算器２２０Ａ〜２２０Ｂとを使用した高速フーリエ変換（ＦＦＴ：Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）といった信号処理機能を実装することができる。８個の加算器２３０Ａ〜２３０Ｈを全体として、すなわち一括して、加算器２３０ともいう。同様に、２個の乗算器２２０Ａ〜２２０Ｂを全体として、すなわち一括して、乗算器２２０ともいう。乗算器２２０と加算器２３０とは、集積回路１５０内のモジュール、ブロック、演算器、または機能単位の例である。コントローラ２１０は、乗算器２２０および加算器２３０を信号処理アルゴリズム（例によってはＦＦＴアルゴリズムなど）の実装に適用するための循環スケジュールを実施し得る。
【００２０】
複数の乗算器２２０および加算器２３０が多くの信号処理アルゴリズムを実装するように組み合わされ得る。例えば、入力信号サンプルを係数値で乗算し、結果を加算、すなわち累算して出力信号にすることによってディジタルフィルタを実施することができる。これらの乗算結果の累算（ＭＡＣ：ｍｕｌｔｉｐｌｙ  ａｎｄ  ａｃｃｕｍｕｌａｔｅ）演算は、乗算器２２０と加算器２３０との集合体によって行われ得る。また、これらの種類の計算処理ブロックは、符号化、復号、畳み込み、ニューラルネットワーク、パターンマッチング、ビデオ処理、画像処理、オーディオ処理、医用イメージング、レーダ、ソナー、マシンビジョン、動き追跡、三次元イメージング、画素／画像シェーディング、ビデオ形式変換などといった他の様々な信号処理アルゴリズムにも使用され得る。
【００２１】
ＦＦＴアルゴリズムは、乗算器２２０や加算器２３０といった利用可能なリソース上での様々な演算をスケジュールすることによって集積回路１５０Ａ内で実施することができる。例示のアーキテクチャへのＦＦＴアルゴリズムのバインディングおよびスケジューリングのための１つの可能なバージョンは、一方の乗算器２２０Ａと加算器のうちの３つ２３０Ｂ、２３０Ｆ、２３０Ｈとがその他のモジュールと比べて多用される結果を生じ得る。集積回路１５０Ａの動作時に、これらの多用されるモジュールはその他のモジュールより高温になり、高温部および熱的勾配が生じる結果になり得る。例示のアーキテクチャへのＦＦＴアルゴリズムのバインディングおよびスケジューリングのための別の可能なバージョンは、そうではなく、他方の乗算器２２０Ｂとその他の加算器のうちの３つ２３０Ａ、２３０Ｃ、２３０Ｇがより多用される結果を生じる。
【００２２】
本明細書で論じる技法を使用して、コントローラ２１０は、２つの異なるバージョン（例えば、特定のアルゴリズム／関数についての２つの異なるバインディングなど）の選択および動作を順にスケジュールするように構成され得る。循環スケジュールは、２つのバージョンを順に使用して各モジュール上の熱を再分配させるのをサポートすることができる。よって、集積回路１５０Ａ全体のピーク温度が低減され得る。実証的試験が示すところでは、本明細書で論じる複数バージョンのスケジューリングおよびバインディングの技法は、定常状態のピーク温度を平均６．３５％低下させる。
【００２３】
上記では２つの異なるバージョンに関して説明したが、３バージョン、４バージョンなど、他の任意の数のバージョンも可能である。ある例では、異なるバージョンは、集積回路の異なる地理的領域間で熱的エネルギーを分離するために物理的に分離され得る。別の例では、異なるバージョンの各部分が、熱的エネルギーを時間の経過と共に集積回路全体にわたって拡散するように交互に設定され得る。例えば、加算器２３０Ａおよび２３０Ｄがあるバージョンで使用され、加算器２３０Ｃおよび２３０Ｂが別のバージョンで使用され、それによって、熱的エネルギーが集積回路全体にわたって次第に拡散され得る。熱的に異なるバージョンを組み合わせることにより、集積回路の動作時におけるピーク温度、全体的エネルギー消費、または漏洩エネルギーの低減をサポートすることができる。
【００２４】
次に図３を見ると、概略図に、本明細書で提示する１つまたは複数の実施形態に従って構成された、集積回路１５０内の隣り合うモジュール３１０Ａ〜３１０Ｉについての熱モデル３００が示されている。モジュール３１０Ａ〜３１０Ｉを全体として、すなわち一括して、モジュール３１０ともいう。コンパクトな熱モデル３００を使用して特定のバインディングおよびスケジューリングバージョン内の温度上昇が計算されてもよい。各モジュール３１０の熱的エネルギーは、モジュール３１０内の活動によって消費された電力と、隣り合うモジュール３１０と交換されたエネルギーとから推定することができる。
【００２５】
モデル３００では、生成される熱的エネルギーを環境に移行されるエネルギーから求めることができる集積回路１５０についての定常的熱状態を考えることができる。ある例では、モデル３００は、集積回路１５０が環境に対して小さいと想定し得る。そのような例では、環境は、集積回路１５０からの熱的エネルギー（熱など）の結果としてあまり温度変化を生じない可能性がある。また、モデル３００のある例は、集積回路１５０内の熱変化の割合が、集積回路１５０内のスイッチングに影響するクロック周波数より大幅に遅いことも想定し得る。よって、あるスケジューリングラウンドにおけるモジュール３１０のエネルギー消費率は、当該モジュール３１０からの集積回路１５０の温度に対する長期的影響の妥当な近似とみなされ得る。
【００２６】
熱モデル３００は、一定の熱的性質を使用したフーリエ伝導方程式に基づくものとすることができる。そのように定義されたシステムは線形楕円境界値問題とみなされ得る。楕円境界値問題は時間の関数でなくてよい。むしろ、そのような問題は単に空間変数だけに依存し得る。
【００２７】
図示のようなモジュール３１０のレイアウトが与えられた場合、中央のモジュール３１０Ｅはインデックス（ｉ，ｊ）で指示され得る。したがって、中央のモジュール３１０Ｅは、温度Ｔｉ，ｊおよび熱的エネルギーＱｉ，ｊを有するといえる。中央のモジュール３１０Ｅは４つのモジュール３１０Ｂ、３１０Ｄ、３１０Ｆ、および３１０Ｈと境界を共有する。各モジュールの熱的エネルギーは共有境界を有する４つの隣り合うモジュールと交換され得る。３つだけの隣り合うモジュール３１０と１つのさらに別の環境へのインターフェースとを有するエッジモジュール３１０についてはわずかな修正が導入され得る。同様に、コーナモジュール３１０も、２つだけの隣り合うモジュールと、環境とインターフェースする２つの境界とを有し得る。フーリエ伝導方程式に基づいて、（ｉ，ｊ）モジュールについての熱的エネルギー（Ｑ）は次式として表され得る。
Ｑｉ，ｊ＝ｋＳｉ／ｅｎｖ＊ＡＳｉ／ｅｎｖ＊（Ｔｉ，ｊ−Ｔｅｎｖ）
＋ｋＳｉ／Ｓｉ＊ＡＳｉ／Ｓｉ＊（Ｔｉ，ｊ−Ｔｉ，ｊ−１）
＋ｋＳｉ／Ｓｉ＊ＡＳｉ／Ｓｉ＊（Ｔｉ，ｊ−Ｔｉ，ｊ＋１）
＋ｋＳｉ／Ｓｉ＊ＡＳｉ／Ｓｉ＊（Ｔｉ，ｊ−Ｔｉ−１，ｊ）
＋ｋＳｉ／Ｓｉ＊ＡＳｉ／Ｓｉ＊（Ｔｉ，ｊ−Ｔｉ＋１，ｊ）  （式１）
式中、Ｔｅｎｖは、環境の温度であり、ｋＳｉ／Ｓｉは、シリコン上で支持される２つのモジュール間の熱係数であり、ｋＳｉ／ｅｎｖはシリコンと環境との間の熱係数であり、ＡＳｉ／Ｓｉは、シリコン上で支持される２つのモジュール間の面積係数であり、ＡＳｉ／ｅｎｖは、シリコンと環境との間の面積係数である。
【００２８】
次に図４を参照して、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成のための本明細書で提示する実施形態に関してさらに詳細に説明する。特に図４は、本明細書で提示する少なくともいくつかの実施形態による多バージョンのスケジューリングおよびバインディングのためのプロセス４００を示す流れ図である。プロセス４００は、ブロック４１０、４２０、４３０、４４０、４５０、４６０、４７０、４８０および／または４９０の１つまたは複数によって例示される１つまたは複数の動作、機能または処置を含み得る。
【００２９】
本明細書で説明する各ブロックは、コンピュータで実施される命令のシーケンスもしくはコンピューティングシステム上で実行されるプログラムモジュールとして、コンピューティングシステム内の相互接続された機械論理回路もしくは回路モジュールとして、またはそれらの何らかの組み合わせとして実装され得ることを理解すべきである。実装は、様々な実施形態の性能およびその他の要件に依存する選択の問題である。本明細書で説明する論理演算の中には、状態演算、関数、構造的デバイス、処置、またはモジュールと様々に呼ばれるものもある。これらの演算、関数、構造的デバイス、処置、およびモジュールは、ソフトウェアとしても、ファームウェアとしても、専用ディジタル論理としても、それらの任意の組み合わせとしても実装され得る。また、ある実装形態においては、例示のブロックのうちの１つまたは複数が除外され、組み合わされ、または各図に示し、本明細書で説明するブロック以外のブロックへと分離され得ることも理解すべきである。またこれらのブロックは、順次に行われても、並列に行われても、本明細書で説明するのと異なる順序で行われてもよい。
【００３０】
プロセス４００は、ブロック４１０（集積回路のための設計を受け取る）から開始し得る。ブロック４１０に続いてブロック４２０（設計を用いて機能モジュールを識別する）が行われ得る。ブロック４２０に続いてブロック４３０（機能モジュールについてのフロアプランを生成する）が行われ得る。ブロック４３０に続いてブロック４４０（設計のＫ個のバージョンを生成する）が行われ得る。ブロック４４０に続いてブロック４５０（Ｋ個のバージョンのそれぞれについての循環持続時間を決定する）が行われ得る。ブロック４５０に続いて判断ブロック４６０（ピーク熱放散は改善されたか）が行われ得る。判断ブロックでピーク熱放散が改善した（はい）と判定するときには、判断ブロック４６０に続いてブロック４７０（Ｋを増加させる）が行われ得る。ブロック４７０に続いてブロック４４０が行われ得る。判断ブロックでピーク熱放散を改善し得なかった（いいえ）と判定するときには、判断ブロック４６０に続いてブロック４８０（実装のために現在または以前のバインディングおよびスケジューリングを使用する）が行われ得る。ブロック４８０に続いてブロック４９０（Ｋ個のバージョンの循環スケジュールのための状態機械を生成する）が行われ得る。ブロック４９０の後で処理は終了し得る。以下で各ブロックについてさらに詳細に説明する。
【００３１】
ブロック４１０（集積回路のための設計を受け取る）で、コンピュータ１０上で実行される熱を考慮したスケジューリング・バインディングモジュール１１０は、集積回路１５０を実装するための設計を受け取るように構成することができる。集積回路の設計は、ハードウェア記述言語、プログラミング言語、データ・フロー・グラフ（ＤＦＧ）、ネットリスト、動作記述、アーキテクチャ記述、他の任意のハードウェア記述、これらの任意の組み合わせといったハイレベル記述で表すことができる。
【００３２】
ブロック４２０（設計内の機能モジュールを識別する）で、熱を考慮したスケジューリング・バインディングモジュール１１０を実行するコンピュータ１０は、ブロック４１０で受け取られた設計内のモジュール３１０を識別するように構成することができる。モジュール３１０は、計算処理ブロック、演算器、機能単位、または集積回路１５０内の他の要素とすることができる。例えば、前述の信号処理（ＦＦＴなど）集積回路１５０Ａにおいて、モジュール３１０は乗算器２２０および加算器２３０を含む。
【００３３】
設計内のモジュール３１０の種類は、設計のハイレベル記述内に存在する動作から識別することができる。各種のモジュール３１０の下限は、設計を実装するのに必要とされるその種のモジュール３１０の最小数として決定され得る。実施形態によれば、下限を特定するのにリストスケジューリングの手法が使用され得る。リストスケジューリングは、クリティカル・パス・タイミング制約条件を維持しつつ所与の種類のモジュール３１０の数のおおよその最小値を見つけることができる。そのような手法は、スループットに影響を及ぼさずに限界データパス遅延を変更することができず、スループットが一定のままであることを必要とする信号処理用途において有益となり得る。
【００３４】
実際の設計において使用される各種のモジュール３１０の数は、設計内の動作または機能から決定され得る。使用される各種のモジュール３１０の数は、決定された下限に等しくなるように、または下限を上回るように選択することができる。下限に適合し、または下限を上回れば、設計のタイミング要件への適合をサポートすることができる。
【００３５】
ブロック４３０（機能モジュールについてのフロアプランを生成する）で、ブロック４２０で識別された各モジュール３１０を集積回路１５０内に位置決めするためのフロアプランナが構成され得る。要素の集積回路内での配置をフロアプランニングともいう。フロアプランナは、熱モデル３００に関して論じた（ｉ，ｊ）インデックスといったグリッド上の座標に従って各モジュール３１０を位置決めするように構成することができる。フロアプランナは、コンピュータ１０で実行される熱を考慮したスケジューリング・バインディングモジュール１１０の一部として実行されるソフトウェアコードとすることができる。
【００３６】
力指向フロアプランナは、類似のリソースを、集積回路１５０のフロアプラン内で可能な限り互いから遠く離して位置決めするように構成され得る。そのような位置決めにより、ピーク動作温度がバージョン間で異なって位置し得る、すなわち多様となり得る代替モジュール・バインディング・バージョンの数を増加させることができる。各バージョンは、ピーク動作温度の位置に関して熱的に異なる可能性がより高いものとなり得る。
【００３７】
ブロック４４０（設計のＫ個のバージョンを生成する）で、コンピュータ１０上で実行される熱を考慮したスケジューリング・バインディングモジュール１１０は、フロアプラン内で利用できる可能なスケジューリングおよびバインディングのバージョンの量Ｋを選択するように構成することができる。Ｋ個のバージョンは、選択されるバージョンが最小のピーク熱的エネルギー放散を有するように選択することができる。選択を行うに際しては線形計画（ＬＰ：ｌｉｎｅａｒ  ｐｒｏｇｒａｍｍｉｎｇ）法が用いられ得る。ＬＰ法は、所与の種類の使用頻度の高いモジュールと使用頻度の低いモジュールとの反対の関係の対を使用して相互に熱的に相殺し合うような、最大限に制約される最小限制約ヒューリスティックを用いることができる。ある例では、リソースによって異なる活動を有するバージョンを生成することを目的とし得る。
【００３８】
最大限に制約される最小限制約ヒューリスティックは、各種のモジュール３１０についての中心リソースを選択するように構成することができる。中心リソースは、バージョン内で最も頻繁に使用されるその種類のモジュールとすることができる。その場合、優先順位が各モジュール３１０に割り当てられ得る。
【００３９】
例えば、優先順位対（ｐｒ，ｎｒ）が各モジュール３１０に割り当てられ得る。各種のモジュール３１０の中心リソースには最高の優先順位（ｐｒ＝１）が割り当てられ得る。これは、設計を最大限制約するといってよい。あるモジュール３１０が同じ種類のモジュールの中心リソースからより離れているほど、より低い優先順位、すなわちより大きいｐｒの値がそのリソースに割り当てられ得る。同じｐｒの値を有するリソースは、隣り合うリソースの数ｎｒによって分けられ得る。より小さいｎｒの値を有するモジュール３１０はより高い優先順位を持つことができ、よって、設計を最小限しか制約しない。
【００４０】
設計内の動作は、優先順位の順に集積回路１５０内で各モジュール３１０に割り当てられ、すなわちバインドされ得る。例えば、前述の信号処理（例えばＦＦＴなど）内の乗算演算が、関連付けられた優先順位対（ｐｒ，ｎｒ）に従って乗算器２２０Ａまたは乗算器２２０Ｂに割り当てられ得る。また動作は、設計と関連付けられるデータパスに従って割り当てられてもよい。各バージョンは、バージョン間でデータパスを異ならせることによって、バージョン間で制御フローを異ならせることによって、バージョン間で他の任意の設計パラメータを変えることによって、またはこれらの任意の組み合わせによって生成され得ることを理解すべきである。
【００４１】
ブロック４５０（Ｋ個のバージョンのそれぞれについての循環持続時間を決定する）で、Ｋ個のバージョンのそれぞれを動作させる持続時間が、コンピュータ１０上で実行される熱を考慮したスケジューリング・バインディングモジュール１１０によって決定され得る。バージョンごとの持続時間を決定するのに線形計画（ＬＰ）法が用いられ得る。ＬＰ法は、面積とタイミング両方の制約条件を維持しようとし得る。またＬＰ法は、集積回路のピーク動作温度を最小化しようとも試み得る。
【００４２】
ある実施形態によれば、ＬＰは、１つまたは複数の制約条件を考慮して目的関数を求めてもよい。例えば目的関数は、集積回路１５０上のピーク温度、すなわち最大温度を実質的に最小化することとしてもよい。
【００４３】
１つの制約条件は、局所的なニュートン熱法則に関し得る。例えば、熱モデル３００における前述の熱的エネルギーＱｉ，ｊについての式（式１参照）は、モジュール３１０ごとに使用され得る。
【００４４】
第２の制約条件は、スケジュールの関数としての局所的熱的エネルギー生成に関し得る。熱的エネルギー（Ｑｉ，ｊ）は次式で表すことができる。
Ｑｉ，ｊ＝ｄ１＊Ｐ１＋ｄ２＊Ｐ２＋ｄ３＊Ｐ３＋…＋ｄｋ＊Ｐｋ  （式２）
式中、Ｐｋは、バージョンｋの座標（ｉ，ｊ）においてモジュール３１０によって生成される平均電力を表す定数であり、ｄｋは、バージョンｋが各ローテーションの間に動作するようにスケジュールされる時間の部分を表す持続時間割当てである。
【００４５】
第３の制約条件は、グリッド上の最大温度に対する全般的制約条件に関し得る。各モジュール温度（Ｔｉ，ｊ）は、集積回路１５０の最大温度（Ｔｍａｘ）を超えてはならない。
Ｔｉ，ｊ≦Ｔｍａｘ  （式３）
【００４６】
第４の制約条件は、持続時間比に対して次式のように和が１になる制約を課すことができる。
ｄ１＋ｄ２＋ｄ３＋ｄｋ＝１  （式４）
【００４７】
判断ブロック４６０（ピーク熱放散は改善されたか）で、プロセス４００は、Ｋ個の循環するバージョンの最新のセットが、コンピュータ１０上で実行される熱を考慮したスケジューリング・バインディングモジュール１１０を使用してピーク熱放散を改善するかどうか判定し得る。そうでない場合には、Ｋを増加させることに関連した改善が限界収穫逓減に達している可能性がある。
【００４８】
ブロック４７０（Ｋを増加させる）は、ブロック４６０で、Ｋ個の循環するバージョンの最新のセットがピーク熱放散を改善したと判定されたときにブロック４６０に続いて行われる。ブロック４７０（Ｋを増加させる）では、ピーク熱放散をさらに改善しようとしてＫを増加させ得る。Ｋは、１ずつ増加させてもよく、１以外の他のある指定の刻みサイズずつ増加させてもよい。ブロック４７０から、処理は折り返しブロック４４０に戻り、増加したＫの値を使用して熱を考慮したスケジューリングおよびバインディングを再検査し得る。
【００４９】
ブロック４８０（実装のために現在または以前のバインディングおよびスケジューリングを使用する）は、ブロック４６０で、Ｋ個の循環するバージョンの最新のセットがピーク熱放散を改善しなかったと判定されたときにブロック４６０に続いて行われる。ブロック４８０（実装のために現在または以前のバインディングおよびスケジューリングを使用する）では、Ｋ個のバージョンの現在のセットがハードウェア合成へと実装され得る。Ｋ個の循環するバージョンの最新のセットがピーク熱放散を改善しなかったと判定されたため、Ｋ個の循環するバージョンの前のセットが代替として実装され得る。
【００５０】
ブロック４９０（Ｋ個のバージョンの循環スケジュールのための状態機械を生成する）で、小型コントローラが、Ｋバージョンの循環スケジューラおよび割当てを実装するために構成され得る。循環Ｋバージョンコントローラのための低オーバーヘッド実装の一例は、有限状態機械（ＦＳＭ）に基づくものとすることができる。ＦＳＭは、バージョンの第１のものＦ１からスケジュールとして開始するＦｒとして構築され得る。ＦｒについてのｌｏｇＫの量の余分の入力が、Ｋ個のバージョンのうちの特定の１つを選択するためのキーとして使用されるようにＦ１に追加され得る。キーはＩｋｅｙで表され得る。Ｆｒの出力の数は、Ｆ１の出力の数と同じとすることができる。ＯｒをＦｒの出力とし、Ｏ１をＦ１の出力とするマッピング関数、Ｏｒ＝ｇ（Ｉｋｅｙ，Ｏ１）が構築され得る。スケジュールについてのＦＳＭの第ｋのバージョンの出力がＯｋである場合、Ｏは、キーがｋである場合には、Ｏｋから割り当てることができる。次いで、回路を生成し、Ｆ１の出力に加えてＦｒを作成することができる。次いでＦｒは、所与の時刻に使用されるべき現在のスケジュールを生成する循環コントローラに接続され得る。
【００５１】
図５を参照して、本明細書で提示する様々な実施形態を実施するためのコンピューティングシステム例を論じる。コンピューティングシステムは、図１に関して簡単に論じたコンピュータ１０を含む。コンピュータ１０は、プロセッサ１１、メモリ１２、および１つまたは複数のドライブ１３を含み得る。ドライブ１３および各ドライブに関連付けられたコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール２３、およびコンピュータ１０のための他のデータの記憶を提供し得る。コンピューティングシステムは、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成を実装するための実施形態をサポートするように適合され得る。例えば、コンピューティングシステムは、前述の熱を考慮したスケジューリング・バインディングモジュール１１０といったプログラムモジュール２３を備えていてもよい。様々な実施形態は、コンピュータ、専用ハードウェア、または埋め込みコンピューティングシステムを含み得る。
【００５２】
コンピュータ１０は、従来のコンピュータシステム、埋め込み制御コンピュータ、ラップトップ、もしくはサーバコンピュータ、モバイル機器、セットトップボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、または他のハードウェアプラットフォームとして実施され得る。プロセッサ１１は、汎用プロセッサ、プロセッサコア、マルチプロセッサ、マルチコアプロセッサ１２０、グラフィックスプロセッサ、ディジタル信号処理（ＤＳＰ）プロセッサ、特定用途向け集積回路（ＡＳＩＣ）内に実装されたカスタマイズコンピューティング機器、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）内に実装されたカスタマイズコンピューティング機器、任意の種類のプログラマブル論理内に実装されたカスタマイズコンピューティング機器、状態機械、再構成可能型プロセッサ、他の任意の処理装置、またはそれらの任意の組み合わせもしくは多数のそれらのものとすることができる。プロセッサ１１は、本明細書で論じるマルチコアプロセッサを活用した並列の動的最適化をサポートし得る。
【００５３】
ドライブ１３、他の記憶装置、またはそれらに関連付けられたコンピュータ可読記憶媒体は、オペレーティングシステム２１、アプリケーションプログラム２２、およびプログラムモジュール２３を記憶し得る。コンピュータ１０は、ユーザがコマンドおよびデータを入力するためのユーザ入力装置１５を含み得る。入力装置には、電子ディジタイザ、マイクロフォン、キーボード、ポインティングデバイス、またはこれらの任意の組み合わせが含まれ得る。ポインティングデバイスの例には、マウス、トラックボール、ライトペン、タッチスクリーン、またはタッチパッドが含まれ得る。コンピュータ１０への他の入力装置には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。入力装置は、システムバスに結合されたユーザ入力インターフェースを介してプロセッサ１１に結合され得る。また入力装置は、パラレルポート、ゲームポート、ユニバーサル・シリアル・バス（ＵＳＢ）といった他のインターフェースおよびバス構造によっても結合され得る。また、コンピュータ１０などのコンピュータは、出力周辺インターフェース１９または類似のインターフェースを介して結合され得る、スピーカといった他の周辺出力装置も含み得る。
【００５４】
コンピュータ１０は、ネットワークインターフェース１６に結合されたリモートコンピュータといった１台または複数のコンピュータへの論理接続を使用してネットワーク環境において動作し得る。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア機器、または他の一般のネットワークノードとすることができる。リモートコンピュータは、コンピュータ１０に関して本明細書で説明した要素の多くまたは全部を含み得る。ネットワーク環境は、ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、イントラネット、インターネット、またはそれらの組み合わせを含み得る。
【００５５】
ＬＡＮまたは無線ＬＡＮ（ＷＬＡＮ）ネットワーク環境で使用されるとき、コンピュータ１０は、ネットワークインターフェース１６またはネットワークアダプタを介してＬＡＮに結合され得る。ＷＡＮネットワーク環境で使用されるとき、コンピュータ１０は、モデムまたはＷＡＮ上で通信を確立するための他の機構を含み得る。ＷＡＮには、インターネット、例示のネットワーク１８、様々な他のネットワーク、またはこれらの任意の組み合わせが含まれ得る。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立する他の機構も使用され得ることを理解すべきである。
【００５６】
１つまたは複数の実施形態によれば、コンピュータ１０は、プロセッサ１１および／またはプログラムモジュール２３が、本明細書で提示する様々な実施形態と一致する熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成を行い得るように構成され得る。コンピュータ１０は、ドライブ１３または他の記憶装置と関連付けられた１つまたは複数の物理的コンピュータ可読記憶媒体の１つまたは複数のインスタンスを含み得る。システムバスは、プロセッサ１１が、コンピュータ可読器記憶媒体との間でコードおよび／またはデータを読み取ることを可能にし得る。媒体は、それだけに限らないが、半導体、磁性材料、光学媒体、電気的記憶、電気化学的記憶、または他の任意のそのような記憶技術を含む任意の適切な技術を使用して実施される記憶素子の形の装置を表し得る。媒体は、ＲＡＭ、ＲＯＭ、フラッシュ、または別の種類の揮発性もしくは不揮発性のメモリ技術のいずれとして特徴付けられるにせよ、メモリ１２と関連付けられた構成要素を表し得る。また媒体は、記憶ドライブ１３として実施されるにせよそれ以外として実施されるにせよ、２次記憶も表し得る。ハードドライブ実装形態は、固体素子として特徴付けられてもよく、磁気的に符号化された情報を記憶する回転媒体を含んでいてもよい。
【００５７】
記憶媒体は、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成を行うための１つまたは複数のプログラムモジュール２３を含み得る。プログラムモジュール２３は、プロセッサ１１にロードされ、実行されると、汎用コンピューティングシステムを、本明細書で開示する熱を考慮したスケジューリングおよびバインディングの技法の全部または一部を円滑に行わせるようにカスタマイズされた専用コンピューティングシステムに変換するソフトウェア命令を含み得る。本明細書全体で詳述したように、プログラムモジュール２３は、コンピュータ１０が、前述の構成要素、論理フロー、および／またはデータ構造を使用してシステム全体または動作環境内で関与するための様々なツールまたは技法を提供し得る。
【００５８】
プロセッサ１１は、任意の数のトランジスタまたは他の回路素子から構築されてよく、それらのトランジスタまたは回路素子は、個々にまたは集合体として、任意の数の状態を帯びることができる。より詳細には、プロセッサ１１は、状態機械または有限状態機械として動作し得る。そのような機械は、プログラムモジュール２３内に含まれる実行可能命令をロードすることによって第２の機械、すなわち特殊な機械へ変換され得る。これらのコンピュータ実行可能命令は、プロセッサ１１を変換して、プロセッサ１２が状態間をどのように遷移するか指定し、それによってプロセッサ１１を構成するトランジスタまたは他の回路素子を第１の機械から第２の機械へ変換することができ、第２の機械は、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成をサポートするように特に構成され得る。また、どちらの機械の状態も、１台もしくは複数のユーザ入力装置１５、ネットワークインターフェース１６、他の周辺機器、他のインターフェース、または他の１人もしくは複数のユーザもしくは他の動作者からの入力を受け取ることによって変換され得る。またどちらの機械も、状態、すなわち、プリンタ、スピーカ、ビデオディスプレイ、あるいはそれ以外のものといった様々な出力装置の様々な物理特性も変換し得る。
【００５９】
また、プログラムモジュール２３を符号化することにより、記憶媒体の物理的構造も変換され得る。物理的構造の具体的変換は、本明細書の様々な実装形態における様々な要因に依存し得る。そのような要因の例には、それだけに限らないが、記憶媒体を実装するのに使用される技術、記憶媒体が１次記憶として特徴付けられるかそれとも２次記憶として特徴付けられるかなどが含まれ得る。例えば、記憶媒体が半導体ベースのメモリとして実装される場合、プログラムモジュール２３は、ソフトウェアがそこに符号化されているときに半導体メモリ１２の物理的状態を変換し得る。例えばソフトウェアは、半導体メモリ１２を構成するトランジスタ、コンデンサ、または他のディスクリート回路素子の状態を変換し得る。
【００６０】
別の例として、記憶媒体は、ドライブ１３といった磁気または光学技術を使用して実装されてもよい。そのような実装形態において、プログラムモジュール２３は、ソフトウェアがそこに符号化されているときに、磁性媒体または光学媒体の物理的状態を変換し得る。これらの変換は、所与の磁性媒体内の特定の位置の磁気特性を変更することを含み得る。またこれらの変換は、所与の光学媒体内の特定の位置の物理的特徴または特性を変更してそれらの位置の光学的特性を変更することも含み得る。この説明の範囲および趣旨を逸脱することなく物理媒体の他の様々な変換も可能であることを理解すべきである。
【００６１】
次に図６を見ると、概略図に、本明細書で提示する少なくともいくつかの実施形態に従って構成された、コンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品７００の部分が示されている。このコンピュータプログラム製品例の例示的実施形態は、信号担持媒体７０２を使用して提供され、ハードウェア設計を集積回路のアーキテクチャへスケジュールし、バインドするための複数の熱的に異なるバージョンを生成するための１つもしくは複数の命令、複数の熱的に異なるバージョンがそれぞれ、集積回路と関連付けられるピーク熱的エネルギーが実質的に最小化されるように循環サイクルの各部分について動作する循環スケジュールを生成するための１つもしくは複数の命令、または複数の熱的に異なるバージョンとコントローラとを循環スケジュールを実現するために集積回路のための実装設計へと統合するための１つもしくは複数の命令のうちの少なくとも１つの命令７０４を含み得る。１つまたは複数の命令は、例えば、コンピュータ実行可能命令、および／または論理で実施される命令などとすることができる。ある実施形態において、１つまたは複数のコンピュータプログラム製品７００の信号担持媒体７０２は、コンピュータ可読媒体７０６、書込み可能媒体７０８、および／または通信媒体７１０を含む。
【００６２】
ある実装形態において、信号担持媒体７０２は、それだけに限らないが、ハード・ディスク・ドライブ、コンパクトディスク（ＣＤ）、ディジタル多用途ディスク（ＤＶＤ）、ディジタルテープ、メモリなどといったコンピュータ可読媒体７０６を含み得る。ある実装形態において、信号担持媒体７０２は、それだけに限らないが、メモリ、読取り／書込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどといった書込み可能媒体７０８を含み得る。ある実装形態において、信号担持媒体７０２は、それだけに限らないが、ディジタルおよび／またはアナログ通信媒体（例えば光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）といった通信媒体７１０を含み得る。よって、例えばコンピュータプログラム製品７００は、信号担持媒体７０２が通信媒体７１０の無線形態（ＩＥＥＥ８０２．１１規格に準拠した無線通信媒体など）によって搬送されるＲＦ信号担持媒体７０２によって前述のシステムの１つまたは複数のモジュールに搬送され得る。
【００６３】
本開示は、様々な態様の例示として意図されている本出願に記載される特定の実施形態にだけ限定されるものではない。当業者には理解されるように、本開示の趣旨および範囲を逸脱することなく、多くの改変および変形を加えることができる。本明細書に記載されているもの以外の、本開示の範囲内の機能的に等価な方法および装置が、以上の説明を読めば当業者には明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲の範囲内に含まれるものと意図されている。本開示は、添付の特許請求の範囲の各項と、かかる特許請求の範囲が権利付与される対象となる全範囲の均等物とによってのみ限定されるべきである。本開示は、特定の方法、構成部品、要素、装置、またはシステムだけに限定されず、当然ながら多様であり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
【００６４】
本明細書における実質的にいかなる複数形および／または単形数の用語の使用についても、当業者は、状況および／または用途に合わせてしかるべく、複数形から単数形に、かつ／または単数形から複数形に変換することができる。本明細書においては明確にするために様々な単数形／複数形の置換形が明示され得る。
【００６５】
一般に、本明細書において、特に添付の特許請求の範囲（例えば添付の特許請求の範囲の本文など）において使用される用語は、一般には、「非限定的な（ｏｐｅｎ）」用語として意図されている（例えば、「ｉｎｃｌｕｄｉｎｇ（〜を含み）」という用語は「それだけに限らないが〜を含み」と解釈すべきであり、「ｈａｖｉｎｇ（〜を有し）」という用語は「少なくとも〜を有し」と解釈すべきであり、「ｉｎｃｌｕｄｅｓ（〜を含む）」という用語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど）ことが当業者には理解されるであろう。
【００６６】
さらに、導入請求項記載の特定の数が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば理解の一助として挙げると、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「１つまたは複数の」あるいは「少なくとも１つの」という導入句および「ａ」や「ａｎ」といった不定冠詞を含むときでさえも、不定冠詞「ａ」または「ａｎ」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ１つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は「少なくとも１つの」または「１つまたは複数の」を意味するものと解釈されるべきであるなど）。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、導入請求項記載の特定の数が明示的に記載されている場合でさえも、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることも当業者は理解するであろう（例えば、他の修飾語句を伴わない「２つの記載」という記載だけで、少なくとも２つの記載、または２つ以上の記載を意味するなど）。
【００６７】
「Ａ、Ｂ、およびＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。「Ａ、Ｂ、またはＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。さらに、２つ以上の択一的項目を提示する事実上あらゆる選言的な語および／または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの１つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むものと理解されるであろう。
【００６８】
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることも当業者は理解するであろう。
【００６９】
当業者には理解されるように、ありとあらゆる目的で、例えば書面による説明を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも２等分、３等分、４等分、５等分、１０等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下３分の１、中３分の１および上３分の１に容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」「〜より大（ｇｒｅａｔｅｒ  ｔｈａｎ）」「〜より小（ｌｅｓｓ  ｔｈａｎ）」などといったすべての表現は、記載される数を含み、後で前述の下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって例えば、１〜３個の要素を有するグループは、１個、２個、または３個の要素を有するグループを指す。同様に、１〜５個の要素を有するグループは、１個、２個、３個、４個または５個の要素を有するグループを指し、以下同様である。
【００７０】
本明細書では様々な態様および例が開示されているが、当業者には他の態様および例も明らかであろう。本明細書で開示する様々な態様および例は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。
【図１】
2013527943.tif 000003
【図２】
2013527943.tif 000004
【図３】
2013527943.tif 000005
【図４】
2013527943.tif 000006
【図５】
2013527943.tif 000007
【図６】
2013527943.tif 000008