JP2013527943A - 熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成 - Google Patents

熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成 Download PDF

Info

Publication number
JP2013527943A
JP2013527943A JP2012548006A JP2012548006A JP2013527943A JP 2013527943 A JP2013527943 A JP 2013527943A JP 2012548006 A JP2012548006 A JP 2012548006A JP 2012548006 A JP2012548006 A JP 2012548006A JP 2013527943 A JP2013527943 A JP 2013527943A
Authority
JP
Japan
Prior art keywords
integrated circuit
version
binding
computer
thermal energy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012548006A
Other languages
English (en)
Inventor
ポトゥコニャック ミオドラグ
コウシャンファー ファリナツ
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2013527943A publication Critical patent/JP2013527943A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Architecture (AREA)

Abstract

熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成のための技術が概説される。それぞれが様々なスケジュールおよびバインディングの結果を有するハードウェア設計の複数のバージョンが生成され得る。スケジューリングおよびバインディングは、複数のバージョンの熱プロファイルが、バージョン間で離れた熱ピークを有するものになるように行われ得る。各バージョンの熱ピーク間の物理的距離を増大させることにより各バージョンに一意の熱特性を与えることができる。設計の複数のバージョン間の循環のスケジュールは、動作時に集積回路の熱プロファイルの収支が合うように構築され得る。複数の設計を解析し、熱を考慮した循環のスケジューリングおよびバインディングを構築するために線形計画法の枠組みが使用され得る。例えば、K個の最も効率のよいバージョンが選択され、次いで、1循環内で各バージョン動作させる持続時間が決定され得る。
【選択図】図1

Description

特に指示しない限り、本項に記載される資料は本出願における特許請求の範囲の先行技術ではなく、本項に含まれることにより先行技術であると認められるものではない。
集積回路のためのハードウェア設計は、ハイレベル記述から合成することができる。例えば記述は、ハードウェア記述言語またはプログラミング言語を使用してアルゴリズムレベルで行われ得る。前記記述は、モジュールレベル、レジスタ転送レベル(RTL:register transfer level)、ゲートレベル、またはトランジスタレベルで設計に合成することができる。信号処理を伴うハードウェア設計はデータ・フロー・グラフ(DFG:data flow graph)として要約され得る。
スケジューリングおよびバインディングはハードウェア合成の一部である。スケジューリングは、回路の機能を実施されるべきステップへと分割することを伴う。例えば前記ステップは、有限状態機械(FSM:finite state machine)の各状態、または信号処理回路内で信号サンプルに対して実施される動作とすることができる。バインディングは、機能を集積回路内のハードウェアリソースにマップする。
より小型の集積回路の最小加工寸法値に合わせて比例縮小する技術は、出力密度または単位面積当たりの消費電力を増加させる。集積回路内の局所的電力消費の増加はチップ上に高温領域を生じさせることになり得る。異なる温度の領域があると熱勾配が生じる。熱勾配は、負バイアス温度不安定性、エレクトロマイグレーション、または漸次的誘電破壊に起因するチップエージングを増大させる可能性のある熱応力を生じさせる。これらの要因は回路の信頼性を低下させる。またチップの性能は、温度の上昇によりキャリア移動度が鈍化し、トランジスタスイッチング速度が低下し、相互接続抵抗が増大するときにも低下し得る。
複雑な電子システムのための多くの設計および動作についての考慮事項では、電力消費を低減しようとする。しかし、電力消費最適化と熱的最適化とは互換性がない。というのは、電力最適化では平均電力消費を最小化しようと試みるが、局所的な高温部の形成には対応し得るからである。限界状態の高温部は、平均電力をあまり増大させなくてもチップを損傷する可能性がある。チップレベルで静的または動的電力消費を低減するための技法は、全体としての電力使用を低減し得るが、全体として電力を低減しようとするために、電力勾配または高温部はそのままに留まり、または増大する可能性さえもある。
本開示は、一般に、集積回路の合成のためのコンピュータで実施される方法を説明する。あるコンピュータで実施される方法例によれば、以下の動作のうちの1つまたは複数を実施することができる。その動作が集積回路についての第1の熱的エネルギーパターンをもたらす集積回路についてのバインディングの第1のバージョンが生成される。その動作が集積回路についての第2の熱的エネルギーパターンをもたらす集積回路についてのバインディングの第2のバージョンが生成される。また、第1の熱的エネルギーパターンと第2の熱的エネルギーパターンとは相互に対して熱的に異なる。第1のバージョンと第2のバージョンとがそれぞれ循環スケジュールの個々の部分について動作する、集積回路内でバインディングの第1のバージョンとバインディングの第2のバージョンとの一方を動作させるための循環スケジュールが生成される。
本開示は、一般に、コンピュータによって実行されるときに、コンピュータを、集積回路の合成を行うように適合させる方法のためのコンピュータ実行可能命令が記憶されているコンピュータ記憶媒体を説明する。ある方法例によれば、以下の動作のうちの1つまたは複数を実施することができる。各バージョンの動作が集積回路についての個々の熱的エネルギーパターンが互いに対して熱的に異なるような個々の熱的エネルギーパターンをもたらす、集積回路についてのバインディングの2つ以上のバージョンが生成される。バインディングの2つ以上のバージョンがそれぞれ循環サイクルの各部分について動作する循環スケジュールが生成される。バインディングの2つ以上のバージョンとコントローラとが循環スケジュールを実現するために集積回路のための実装設計へと統合される。
本開示は、一般に、集積回路を説明する。ある集積回路の例は、アルゴリズムと関連付けられた動作を実装するためのモジュールと、モジュールにアルゴリズムをスケジュールし、バインドして、集積回路と関連付けられるピーク熱的エネルギーの低減をサポートするために複数の熱的に異なるバージョンを順に使用するように構成されたコントローラとのうちの1つまたは複数を含むように構成されている。
以上の概要は例示にすぎず、いかなる点においても限定が意図されるものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えて、さらに別の態様、実施形態、および特徴も明らかになるであろう。
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態を示すものにすぎず、したがって、本開示の範囲を限定するものとみなすべきでないことを踏まえ、添付の図面を使用して、本開示をさらに具体的に詳細に説明する。
熱を考慮したスケジューリングおよびバインディングを使用して集積回路を合成するためのシステムを示すブロック図である。 集積回路を実装するための設計に適用される熱を考慮したスケジューリングおよびバインディングの適用例を示すブロック図である。 集積回路内の隣り合うモジュールについての熱モデルを示す概略図である。 多バージョンのスケジューリングおよびバインディングのためのプロセスを示す流れ図である。 コンピューティングシステムの例を示すブロック図である。 すべて本明細書で提示する少なくともいくつかの実施形態に従って構成された、コンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品の部分を示す図である。
以下の詳細な説明では、本開示の一部を形成する添付の図面を参照する。図面では、文脈上他の意味に解される場合を除き、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は、限定を意図するものではない。本開示で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説し、図に例示する本開示は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらすべてが本開示において明確に企図されていることが容易に理解されるであろう。
本開示は、特に、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成に関連した方法、装置、システム、およびコンピュータプログラム製品を広く対象とするものである。合成されるハードウェアは集積回路とすることができる。ある実施形態によれば、集積回路は、カスタム製造のデバイスやマスクデバイスといった特定用途向け集積回路(ASIC:application specific integrated circuit)とすることができる。別の実施形態によれば、集積回路は、複合プログラマブル論理回路(CPLD:complex programmable logic device)や、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)や、他の任意の種類のプログラマブル論理回路(PLD)といったプログラマブルデバイスとすることができる。集積回路はディジタルデバイスでも、アナログデバイスでも、混成信号デバイスでもよいことを理解すべきである。
簡単にいうと、本明細書で提示される様々な実施形態による様々なスケジュールおよびバインディングの結果をそれぞれ有する、設計の複数のバージョンが生成され得る。例えば、スケジューリングおよびバインディングは、複数のバージョンの熱プロファイルが各バージョン間で離れた熱ピークを有するように実施され得る。また熱プロファイルを熱的エネルギーパターンまたは温度パターンともいう。各バージョンの熱ピーク間の物理的距離を増大させることにより、各バージョンに一意の熱特性を与えることができる。設計の複数のバージョン間の循環のスケジュールは、動作時に集積回路の熱プロファイルの収支が合うように構築され得る。集積回路の熱特性を、熱的エネルギー、熱エネルギー、温度、および/または生成熱エネルギーともいう。複数の設計を解析し、熱を考慮した循環スケジューリングおよびバインディングを構築するのに線形計画法の枠組みが使用され得る。例えば、K個の最も効率のよいバージョンが選択され、次いで、1循環内で各バージョンを動作させる持続時間が決定され得る。本明細書で論じる技術は、総温度、ピーク温度、総熱的エネルギー、またはピーク熱的エネルギーを低減し得る。
本明細書で説明する複数バージョンのスケジューリングおよびバインディングの技法は、あるバージョンで多用されるモジュールが1つまたは複数の他のバージョンではあまり利用されないように実施され得る。ある例では、複数のバージョンが同時に1つの設計に組み込まれ得る。集積回路の動作時に、各バージョンは、各バージョンが指定された持続時間について使用されることになるように順に動作するようスケジュールされ得る。熱的に異なるバージョン間の循環スケジューリングは、設計内での各モジュールの活動割合の平衡を保つことにより、集積回路上の局所的高温部を低減し得る。循環スケジュール内で各バージョンを動作させる各フェーズの持続時間は不均一とすることができる。ある集積回路設計内で複数のバージョンをスケジュールするための制御機構は、低オーバーヘッドで提供され得る。
図1は、本明細書で提示する1つまたは複数の実施形態に従って構成された、熱を考慮したスケジューリングおよびバインディングを有する集積回路150を合成するためのシステム100を示すブロック図である。コンピュータ10は、ハードウェア設計120を合成するためのソフトウェアを実行するように構成することができる。コンピュータ10は、図5を参照してさらに詳細に論じる。コンピュータ10によって利用されるソフトウェアは、熱を考慮したスケジューリング・バインディングモジュール110を含むことができる。熱を考慮したスケジューリング・バインディングモジュール110は、本明細書で開示する方法、プロセス、および技法を実装するのに利用することができる。
ハードウェア設計120は、各バージョンが熱的に異なる複数のスケジューリングおよびバインディングのバージョンの間で循環する集積回路150のためのハードウェアソリューションを指定することができる。複数の熱的に異なるバージョンが順番にスケジュールされるような集積回路150の動作は、集積回路150内のピーク温度の領域の平衡を保つことができる。この平衡化は、バージョンのうちのただ1つだけを有する設計を使用するのと比べて、集積回路150内の熱的勾配を低減することができる。
集積回路150は、電子システム160で使用するための信号処理アルゴリズムの一部または全部を実装し得る。そのような信号処理は、オーディオ、ビデオ、レーダ、医用イメージング、通信信号、または他の任意の信号のための符号化、復号、または符号変換を含み得る。あるいは、信号処理は、圧縮、展開、検証、暗号化、解読、変換、フィルタリング、アップコンバート、ダウンコンバート、補間、デシメーション、スケーリング、等化、または他の任意の種類の処理を含んでいてもよい。ディジタル信号処理用途に加えて、集積回路150は、計算処理、シミュレーション、通信、記憶、制御、または関連付けられた電子システム160によって求められる他の任意の用途にも使用され得る。
次に図2を見ると、ブロック図に、本明細書で提示する1つまたは複数の実施形態に従って構成された、集積回路150Aを実装するための設計に適用される熱を考慮したスケジューリングおよびバインディングの適用例が示されている。図2の集積回路150Aは図1の集積回路150の説明例である。集積回路150Aは、8個の加算器230A〜230Hと2個の乗算器220A〜220Bとを使用した高速フーリエ変換(FFT:Fast Fourier Transform)といった信号処理機能を実装することができる。8個の加算器230A〜230Hを全体として、すなわち一括して、加算器230ともいう。同様に、2個の乗算器220A〜220Bを全体として、すなわち一括して、乗算器220ともいう。乗算器220と加算器230とは、集積回路150内のモジュール、ブロック、演算器、または機能単位の例である。コントローラ210は、乗算器220および加算器230を信号処理アルゴリズム(例によってはFFTアルゴリズムなど)の実装に適用するための循環スケジュールを実施し得る。
複数の乗算器220および加算器230が多くの信号処理アルゴリズムを実装するように組み合わされ得る。例えば、入力信号サンプルを係数値で乗算し、結果を加算、すなわち累算して出力信号にすることによってディジタルフィルタを実施することができる。これらの乗算結果の累算(MAC:multiply and accumulate)演算は、乗算器220と加算器230との集合体によって行われ得る。また、これらの種類の計算処理ブロックは、符号化、復号、畳み込み、ニューラルネットワーク、パターンマッチング、ビデオ処理、画像処理、オーディオ処理、医用イメージング、レーダ、ソナー、マシンビジョン、動き追跡、三次元イメージング、画素/画像シェーディング、ビデオ形式変換などといった他の様々な信号処理アルゴリズムにも使用され得る。
FFTアルゴリズムは、乗算器220や加算器230といった利用可能なリソース上での様々な演算をスケジュールすることによって集積回路150A内で実施することができる。例示のアーキテクチャへのFFTアルゴリズムのバインディングおよびスケジューリングのための1つの可能なバージョンは、一方の乗算器220Aと加算器のうちの3つ230B、230F、230Hとがその他のモジュールと比べて多用される結果を生じ得る。集積回路150Aの動作時に、これらの多用されるモジュールはその他のモジュールより高温になり、高温部および熱的勾配が生じる結果になり得る。例示のアーキテクチャへのFFTアルゴリズムのバインディングおよびスケジューリングのための別の可能なバージョンは、そうではなく、他方の乗算器220Bとその他の加算器のうちの3つ230A、230C、230Gがより多用される結果を生じる。
本明細書で論じる技法を使用して、コントローラ210は、2つの異なるバージョン(例えば、特定のアルゴリズム/関数についての2つの異なるバインディングなど)の選択および動作を順にスケジュールするように構成され得る。循環スケジュールは、2つのバージョンを順に使用して各モジュール上の熱を再分配させるのをサポートすることができる。よって、集積回路150A全体のピーク温度が低減され得る。実証的試験が示すところでは、本明細書で論じる複数バージョンのスケジューリングおよびバインディングの技法は、定常状態のピーク温度を平均6.35%低下させる。
上記では2つの異なるバージョンに関して説明したが、3バージョン、4バージョンなど、他の任意の数のバージョンも可能である。ある例では、異なるバージョンは、集積回路の異なる地理的領域間で熱的エネルギーを分離するために物理的に分離され得る。別の例では、異なるバージョンの各部分が、熱的エネルギーを時間の経過と共に集積回路全体にわたって拡散するように交互に設定され得る。例えば、加算器230Aおよび230Dがあるバージョンで使用され、加算器230Cおよび230Bが別のバージョンで使用され、それによって、熱的エネルギーが集積回路全体にわたって次第に拡散され得る。熱的に異なるバージョンを組み合わせることにより、集積回路の動作時におけるピーク温度、全体的エネルギー消費、または漏洩エネルギーの低減をサポートすることができる。
次に図3を見ると、概略図に、本明細書で提示する1つまたは複数の実施形態に従って構成された、集積回路150内の隣り合うモジュール310A〜310Iについての熱モデル300が示されている。モジュール310A〜310Iを全体として、すなわち一括して、モジュール310ともいう。コンパクトな熱モデル300を使用して特定のバインディングおよびスケジューリングバージョン内の温度上昇が計算されてもよい。各モジュール310の熱的エネルギーは、モジュール310内の活動によって消費された電力と、隣り合うモジュール310と交換されたエネルギーとから推定することができる。
モデル300では、生成される熱的エネルギーを環境に移行されるエネルギーから求めることができる集積回路150についての定常的熱状態を考えることができる。ある例では、モデル300は、集積回路150が環境に対して小さいと想定し得る。そのような例では、環境は、集積回路150からの熱的エネルギー(熱など)の結果としてあまり温度変化を生じない可能性がある。また、モデル300のある例は、集積回路150内の熱変化の割合が、集積回路150内のスイッチングに影響するクロック周波数より大幅に遅いことも想定し得る。よって、あるスケジューリングラウンドにおけるモジュール310のエネルギー消費率は、当該モジュール310からの集積回路150の温度に対する長期的影響の妥当な近似とみなされ得る。
熱モデル300は、一定の熱的性質を使用したフーリエ伝導方程式に基づくものとすることができる。そのように定義されたシステムは線形楕円境界値問題とみなされ得る。楕円境界値問題は時間の関数でなくてよい。むしろ、そのような問題は単に空間変数だけに依存し得る。
図示のようなモジュール310のレイアウトが与えられた場合、中央のモジュール310Eはインデックス(i,j)で指示され得る。したがって、中央のモジュール310Eは、温度Ti,jおよび熱的エネルギーQi,jを有するといえる。中央のモジュール310Eは4つのモジュール310B、310D、310F、および310Hと境界を共有する。各モジュールの熱的エネルギーは共有境界を有する4つの隣り合うモジュールと交換され得る。3つだけの隣り合うモジュール310と1つのさらに別の環境へのインターフェースとを有するエッジモジュール310についてはわずかな修正が導入され得る。同様に、コーナモジュール310も、2つだけの隣り合うモジュールと、環境とインターフェースする2つの境界とを有し得る。フーリエ伝導方程式に基づいて、(i,j)モジュールについての熱的エネルギー(Q)は次式として表され得る。
Qi,j=kSi/env*ASi/env*(Ti,j−Tenv)
+kSi/Si*ASi/Si*(Ti,j−Ti,j−1)
+kSi/Si*ASi/Si*(Ti,j−Ti,j+1)
+kSi/Si*ASi/Si*(Ti,j−Ti−1,j)
+kSi/Si*ASi/Si*(Ti,j−Ti+1,j) (式1)
式中、Tenvは、環境の温度であり、kSi/Siは、シリコン上で支持される2つのモジュール間の熱係数であり、kSi/envはシリコンと環境との間の熱係数であり、ASi/Siは、シリコン上で支持される2つのモジュール間の面積係数であり、ASi/envは、シリコンと環境との間の面積係数である。
次に図4を参照して、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成のための本明細書で提示する実施形態に関してさらに詳細に説明する。特に図4は、本明細書で提示する少なくともいくつかの実施形態による多バージョンのスケジューリングおよびバインディングのためのプロセス400を示す流れ図である。プロセス400は、ブロック410、420、430、440、450、460、470、480および/または490の1つまたは複数によって例示される1つまたは複数の動作、機能または処置を含み得る。
本明細書で説明する各ブロックは、コンピュータで実施される命令のシーケンスもしくはコンピューティングシステム上で実行されるプログラムモジュールとして、コンピューティングシステム内の相互接続された機械論理回路もしくは回路モジュールとして、またはそれらの何らかの組み合わせとして実装され得ることを理解すべきである。実装は、様々な実施形態の性能およびその他の要件に依存する選択の問題である。本明細書で説明する論理演算の中には、状態演算、関数、構造的デバイス、処置、またはモジュールと様々に呼ばれるものもある。これらの演算、関数、構造的デバイス、処置、およびモジュールは、ソフトウェアとしても、ファームウェアとしても、専用ディジタル論理としても、それらの任意の組み合わせとしても実装され得る。また、ある実装形態においては、例示のブロックのうちの1つまたは複数が除外され、組み合わされ、または各図に示し、本明細書で説明するブロック以外のブロックへと分離され得ることも理解すべきである。またこれらのブロックは、順次に行われても、並列に行われても、本明細書で説明するのと異なる順序で行われてもよい。
プロセス400は、ブロック410(集積回路のための設計を受け取る)から開始し得る。ブロック410に続いてブロック420(設計を用いて機能モジュールを識別する)が行われ得る。ブロック420に続いてブロック430(機能モジュールについてのフロアプランを生成する)が行われ得る。ブロック430に続いてブロック440(設計のK個のバージョンを生成する)が行われ得る。ブロック440に続いてブロック450(K個のバージョンのそれぞれについての循環持続時間を決定する)が行われ得る。ブロック450に続いて判断ブロック460(ピーク熱放散は改善されたか)が行われ得る。判断ブロックでピーク熱放散が改善した(はい)と判定するときには、判断ブロック460に続いてブロック470(Kを増加させる)が行われ得る。ブロック470に続いてブロック440が行われ得る。判断ブロックでピーク熱放散を改善し得なかった(いいえ)と判定するときには、判断ブロック460に続いてブロック480(実装のために現在または以前のバインディングおよびスケジューリングを使用する)が行われ得る。ブロック480に続いてブロック490(K個のバージョンの循環スケジュールのための状態機械を生成する)が行われ得る。ブロック490の後で処理は終了し得る。以下で各ブロックについてさらに詳細に説明する。
ブロック410(集積回路のための設計を受け取る)で、コンピュータ10上で実行される熱を考慮したスケジューリング・バインディングモジュール110は、集積回路150を実装するための設計を受け取るように構成することができる。集積回路の設計は、ハードウェア記述言語、プログラミング言語、データ・フロー・グラフ(DFG)、ネットリスト、動作記述、アーキテクチャ記述、他の任意のハードウェア記述、これらの任意の組み合わせといったハイレベル記述で表すことができる。
ブロック420(設計内の機能モジュールを識別する)で、熱を考慮したスケジューリング・バインディングモジュール110を実行するコンピュータ10は、ブロック410で受け取られた設計内のモジュール310を識別するように構成することができる。モジュール310は、計算処理ブロック、演算器、機能単位、または集積回路150内の他の要素とすることができる。例えば、前述の信号処理(FFTなど)集積回路150Aにおいて、モジュール310は乗算器220および加算器230を含む。
設計内のモジュール310の種類は、設計のハイレベル記述内に存在する動作から識別することができる。各種のモジュール310の下限は、設計を実装するのに必要とされるその種のモジュール310の最小数として決定され得る。実施形態によれば、下限を特定するのにリストスケジューリングの手法が使用され得る。リストスケジューリングは、クリティカル・パス・タイミング制約条件を維持しつつ所与の種類のモジュール310の数のおおよその最小値を見つけることができる。そのような手法は、スループットに影響を及ぼさずに限界データパス遅延を変更することができず、スループットが一定のままであることを必要とする信号処理用途において有益となり得る。
実際の設計において使用される各種のモジュール310の数は、設計内の動作または機能から決定され得る。使用される各種のモジュール310の数は、決定された下限に等しくなるように、または下限を上回るように選択することができる。下限に適合し、または下限を上回れば、設計のタイミング要件への適合をサポートすることができる。
ブロック430(機能モジュールについてのフロアプランを生成する)で、ブロック420で識別された各モジュール310を集積回路150内に位置決めするためのフロアプランナが構成され得る。要素の集積回路内での配置をフロアプランニングともいう。フロアプランナは、熱モデル300に関して論じた(i,j)インデックスといったグリッド上の座標に従って各モジュール310を位置決めするように構成することができる。フロアプランナは、コンピュータ10で実行される熱を考慮したスケジューリング・バインディングモジュール110の一部として実行されるソフトウェアコードとすることができる。
力指向フロアプランナは、類似のリソースを、集積回路150のフロアプラン内で可能な限り互いから遠く離して位置決めするように構成され得る。そのような位置決めにより、ピーク動作温度がバージョン間で異なって位置し得る、すなわち多様となり得る代替モジュール・バインディング・バージョンの数を増加させることができる。各バージョンは、ピーク動作温度の位置に関して熱的に異なる可能性がより高いものとなり得る。
ブロック440(設計のK個のバージョンを生成する)で、コンピュータ10上で実行される熱を考慮したスケジューリング・バインディングモジュール110は、フロアプラン内で利用できる可能なスケジューリングおよびバインディングのバージョンの量Kを選択するように構成することができる。K個のバージョンは、選択されるバージョンが最小のピーク熱的エネルギー放散を有するように選択することができる。選択を行うに際しては線形計画(LP:linear programming)法が用いられ得る。LP法は、所与の種類の使用頻度の高いモジュールと使用頻度の低いモジュールとの反対の関係の対を使用して相互に熱的に相殺し合うような、最大限に制約される最小限制約ヒューリスティックを用いることができる。ある例では、リソースによって異なる活動を有するバージョンを生成することを目的とし得る。
最大限に制約される最小限制約ヒューリスティックは、各種のモジュール310についての中心リソースを選択するように構成することができる。中心リソースは、バージョン内で最も頻繁に使用されるその種類のモジュールとすることができる。その場合、優先順位が各モジュール310に割り当てられ得る。
例えば、優先順位対(pr,nr)が各モジュール310に割り当てられ得る。各種のモジュール310の中心リソースには最高の優先順位(pr=1)が割り当てられ得る。これは、設計を最大限制約するといってよい。あるモジュール310が同じ種類のモジュールの中心リソースからより離れているほど、より低い優先順位、すなわちより大きいprの値がそのリソースに割り当てられ得る。同じprの値を有するリソースは、隣り合うリソースの数nrによって分けられ得る。より小さいnrの値を有するモジュール310はより高い優先順位を持つことができ、よって、設計を最小限しか制約しない。
設計内の動作は、優先順位の順に集積回路150内で各モジュール310に割り当てられ、すなわちバインドされ得る。例えば、前述の信号処理(例えばFFTなど)内の乗算演算が、関連付けられた優先順位対(pr,nr)に従って乗算器220Aまたは乗算器220Bに割り当てられ得る。また動作は、設計と関連付けられるデータパスに従って割り当てられてもよい。各バージョンは、バージョン間でデータパスを異ならせることによって、バージョン間で制御フローを異ならせることによって、バージョン間で他の任意の設計パラメータを変えることによって、またはこれらの任意の組み合わせによって生成され得ることを理解すべきである。
ブロック450(K個のバージョンのそれぞれについての循環持続時間を決定する)で、K個のバージョンのそれぞれを動作させる持続時間が、コンピュータ10上で実行される熱を考慮したスケジューリング・バインディングモジュール110によって決定され得る。バージョンごとの持続時間を決定するのに線形計画(LP)法が用いられ得る。LP法は、面積とタイミング両方の制約条件を維持しようとし得る。またLP法は、集積回路のピーク動作温度を最小化しようとも試み得る。
ある実施形態によれば、LPは、1つまたは複数の制約条件を考慮して目的関数を求めてもよい。例えば目的関数は、集積回路150上のピーク温度、すなわち最大温度を実質的に最小化することとしてもよい。
1つの制約条件は、局所的なニュートン熱法則に関し得る。例えば、熱モデル300における前述の熱的エネルギーQi,jについての式(式1参照)は、モジュール310ごとに使用され得る。
第2の制約条件は、スケジュールの関数としての局所的熱的エネルギー生成に関し得る。熱的エネルギー(Qi,j)は次式で表すことができる。
Qi,j=d1*P1+d2*P2+d3*P3+…+dk*Pk (式2)
式中、Pkは、バージョンkの座標(i,j)においてモジュール310によって生成される平均電力を表す定数であり、dkは、バージョンkが各ローテーションの間に動作するようにスケジュールされる時間の部分を表す持続時間割当てである。
第3の制約条件は、グリッド上の最大温度に対する全般的制約条件に関し得る。各モジュール温度(Ti,j)は、集積回路150の最大温度(Tmax)を超えてはならない。
Ti,j≦Tmax (式3)
第4の制約条件は、持続時間比に対して次式のように和が1になる制約を課すことができる。
d1+d2+d3+dk=1 (式4)
判断ブロック460(ピーク熱放散は改善されたか)で、プロセス400は、K個の循環するバージョンの最新のセットが、コンピュータ10上で実行される熱を考慮したスケジューリング・バインディングモジュール110を使用してピーク熱放散を改善するかどうか判定し得る。そうでない場合には、Kを増加させることに関連した改善が限界収穫逓減に達している可能性がある。
ブロック470(Kを増加させる)は、ブロック460で、K個の循環するバージョンの最新のセットがピーク熱放散を改善したと判定されたときにブロック460に続いて行われる。ブロック470(Kを増加させる)では、ピーク熱放散をさらに改善しようとしてKを増加させ得る。Kは、1ずつ増加させてもよく、1以外の他のある指定の刻みサイズずつ増加させてもよい。ブロック470から、処理は折り返しブロック440に戻り、増加したKの値を使用して熱を考慮したスケジューリングおよびバインディングを再検査し得る。
ブロック480(実装のために現在または以前のバインディングおよびスケジューリングを使用する)は、ブロック460で、K個の循環するバージョンの最新のセットがピーク熱放散を改善しなかったと判定されたときにブロック460に続いて行われる。ブロック480(実装のために現在または以前のバインディングおよびスケジューリングを使用する)では、K個のバージョンの現在のセットがハードウェア合成へと実装され得る。K個の循環するバージョンの最新のセットがピーク熱放散を改善しなかったと判定されたため、K個の循環するバージョンの前のセットが代替として実装され得る。
ブロック490(K個のバージョンの循環スケジュールのための状態機械を生成する)で、小型コントローラが、Kバージョンの循環スケジューラおよび割当てを実装するために構成され得る。循環Kバージョンコントローラのための低オーバーヘッド実装の一例は、有限状態機械(FSM)に基づくものとすることができる。FSMは、バージョンの第1のものF1からスケジュールとして開始するFrとして構築され得る。FrについてのlogKの量の余分の入力が、K個のバージョンのうちの特定の1つを選択するためのキーとして使用されるようにF1に追加され得る。キーはIkeyで表され得る。Frの出力の数は、F1の出力の数と同じとすることができる。OrをFrの出力とし、O1をF1の出力とするマッピング関数、Or=g(Ikey,O1)が構築され得る。スケジュールについてのFSMの第kのバージョンの出力がOkである場合、Oは、キーがkである場合には、Okから割り当てることができる。次いで、回路を生成し、F1の出力に加えてFrを作成することができる。次いでFrは、所与の時刻に使用されるべき現在のスケジュールを生成する循環コントローラに接続され得る。
図5を参照して、本明細書で提示する様々な実施形態を実施するためのコンピューティングシステム例を論じる。コンピューティングシステムは、図1に関して簡単に論じたコンピュータ10を含む。コンピュータ10は、プロセッサ11、メモリ12、および1つまたは複数のドライブ13を含み得る。ドライブ13および各ドライブに関連付けられたコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール23、およびコンピュータ10のための他のデータの記憶を提供し得る。コンピューティングシステムは、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成を実装するための実施形態をサポートするように適合され得る。例えば、コンピューティングシステムは、前述の熱を考慮したスケジューリング・バインディングモジュール110といったプログラムモジュール23を備えていてもよい。様々な実施形態は、コンピュータ、専用ハードウェア、または埋め込みコンピューティングシステムを含み得る。
コンピュータ10は、従来のコンピュータシステム、埋め込み制御コンピュータ、ラップトップ、もしくはサーバコンピュータ、モバイル機器、セットトップボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、または他のハードウェアプラットフォームとして実施され得る。プロセッサ11は、汎用プロセッサ、プロセッサコア、マルチプロセッサ、マルチコアプロセッサ120、グラフィックスプロセッサ、ディジタル信号処理(DSP)プロセッサ、特定用途向け集積回路(ASIC)内に実装されたカスタマイズコンピューティング機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)内に実装されたカスタマイズコンピューティング機器、任意の種類のプログラマブル論理内に実装されたカスタマイズコンピューティング機器、状態機械、再構成可能型プロセッサ、他の任意の処理装置、またはそれらの任意の組み合わせもしくは多数のそれらのものとすることができる。プロセッサ11は、本明細書で論じるマルチコアプロセッサを活用した並列の動的最適化をサポートし得る。
ドライブ13、他の記憶装置、またはそれらに関連付けられたコンピュータ可読記憶媒体は、オペレーティングシステム21、アプリケーションプログラム22、およびプログラムモジュール23を記憶し得る。コンピュータ10は、ユーザがコマンドおよびデータを入力するためのユーザ入力装置15を含み得る。入力装置には、電子ディジタイザ、マイクロフォン、キーボード、ポインティングデバイス、またはこれらの任意の組み合わせが含まれ得る。ポインティングデバイスの例には、マウス、トラックボール、ライトペン、タッチスクリーン、またはタッチパッドが含まれ得る。コンピュータ10への他の入力装置には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。入力装置は、システムバスに結合されたユーザ入力インターフェースを介してプロセッサ11に結合され得る。また入力装置は、パラレルポート、ゲームポート、ユニバーサル・シリアル・バス(USB)といった他のインターフェースおよびバス構造によっても結合され得る。また、コンピュータ10などのコンピュータは、出力周辺インターフェース19または類似のインターフェースを介して結合され得る、スピーカといった他の周辺出力装置も含み得る。
コンピュータ10は、ネットワークインターフェース16に結合されたリモートコンピュータといった1台または複数のコンピュータへの論理接続を使用してネットワーク環境において動作し得る。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア機器、または他の一般のネットワークノードとすることができる。リモートコンピュータは、コンピュータ10に関して本明細書で説明した要素の多くまたは全部を含み得る。ネットワーク環境は、ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、イントラネット、インターネット、またはそれらの組み合わせを含み得る。
LANまたは無線LAN(WLAN)ネットワーク環境で使用されるとき、コンピュータ10は、ネットワークインターフェース16またはネットワークアダプタを介してLANに結合され得る。WANネットワーク環境で使用されるとき、コンピュータ10は、モデムまたはWAN上で通信を確立するための他の機構を含み得る。WANには、インターネット、例示のネットワーク18、様々な他のネットワーク、またはこれらの任意の組み合わせが含まれ得る。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立する他の機構も使用され得ることを理解すべきである。
1つまたは複数の実施形態によれば、コンピュータ10は、プロセッサ11および/またはプログラムモジュール23が、本明細書で提示する様々な実施形態と一致する熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成を行い得るように構成され得る。コンピュータ10は、ドライブ13または他の記憶装置と関連付けられた1つまたは複数の物理的コンピュータ可読記憶媒体の1つまたは複数のインスタンスを含み得る。システムバスは、プロセッサ11が、コンピュータ可読器記憶媒体との間でコードおよび/またはデータを読み取ることを可能にし得る。媒体は、それだけに限らないが、半導体、磁性材料、光学媒体、電気的記憶、電気化学的記憶、または他の任意のそのような記憶技術を含む任意の適切な技術を使用して実施される記憶素子の形の装置を表し得る。媒体は、RAM、ROM、フラッシュ、または別の種類の揮発性もしくは不揮発性のメモリ技術のいずれとして特徴付けられるにせよ、メモリ12と関連付けられた構成要素を表し得る。また媒体は、記憶ドライブ13として実施されるにせよそれ以外として実施されるにせよ、2次記憶も表し得る。ハードドライブ実装形態は、固体素子として特徴付けられてもよく、磁気的に符号化された情報を記憶する回転媒体を含んでいてもよい。
記憶媒体は、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成を行うための1つまたは複数のプログラムモジュール23を含み得る。プログラムモジュール23は、プロセッサ11にロードされ、実行されると、汎用コンピューティングシステムを、本明細書で開示する熱を考慮したスケジューリングおよびバインディングの技法の全部または一部を円滑に行わせるようにカスタマイズされた専用コンピューティングシステムに変換するソフトウェア命令を含み得る。本明細書全体で詳述したように、プログラムモジュール23は、コンピュータ10が、前述の構成要素、論理フロー、および/またはデータ構造を使用してシステム全体または動作環境内で関与するための様々なツールまたは技法を提供し得る。
プロセッサ11は、任意の数のトランジスタまたは他の回路素子から構築されてよく、それらのトランジスタまたは回路素子は、個々にまたは集合体として、任意の数の状態を帯びることができる。より詳細には、プロセッサ11は、状態機械または有限状態機械として動作し得る。そのような機械は、プログラムモジュール23内に含まれる実行可能命令をロードすることによって第2の機械、すなわち特殊な機械へ変換され得る。これらのコンピュータ実行可能命令は、プロセッサ11を変換して、プロセッサ12が状態間をどのように遷移するか指定し、それによってプロセッサ11を構成するトランジスタまたは他の回路素子を第1の機械から第2の機械へ変換することができ、第2の機械は、熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成をサポートするように特に構成され得る。また、どちらの機械の状態も、1台もしくは複数のユーザ入力装置15、ネットワークインターフェース16、他の周辺機器、他のインターフェース、または他の1人もしくは複数のユーザもしくは他の動作者からの入力を受け取ることによって変換され得る。またどちらの機械も、状態、すなわち、プリンタ、スピーカ、ビデオディスプレイ、あるいはそれ以外のものといった様々な出力装置の様々な物理特性も変換し得る。
また、プログラムモジュール23を符号化することにより、記憶媒体の物理的構造も変換され得る。物理的構造の具体的変換は、本明細書の様々な実装形態における様々な要因に依存し得る。そのような要因の例には、それだけに限らないが、記憶媒体を実装するのに使用される技術、記憶媒体が1次記憶として特徴付けられるかそれとも2次記憶として特徴付けられるかなどが含まれ得る。例えば、記憶媒体が半導体ベースのメモリとして実装される場合、プログラムモジュール23は、ソフトウェアがそこに符号化されているときに半導体メモリ12の物理的状態を変換し得る。例えばソフトウェアは、半導体メモリ12を構成するトランジスタ、コンデンサ、または他のディスクリート回路素子の状態を変換し得る。
別の例として、記憶媒体は、ドライブ13といった磁気または光学技術を使用して実装されてもよい。そのような実装形態において、プログラムモジュール23は、ソフトウェアがそこに符号化されているときに、磁性媒体または光学媒体の物理的状態を変換し得る。これらの変換は、所与の磁性媒体内の特定の位置の磁気特性を変更することを含み得る。またこれらの変換は、所与の光学媒体内の特定の位置の物理的特徴または特性を変更してそれらの位置の光学的特性を変更することも含み得る。この説明の範囲および趣旨を逸脱することなく物理媒体の他の様々な変換も可能であることを理解すべきである。
次に図6を見ると、概略図に、本明細書で提示する少なくともいくつかの実施形態に従って構成された、コンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品700の部分が示されている。このコンピュータプログラム製品例の例示的実施形態は、信号担持媒体702を使用して提供され、ハードウェア設計を集積回路のアーキテクチャへスケジュールし、バインドするための複数の熱的に異なるバージョンを生成するための1つもしくは複数の命令、複数の熱的に異なるバージョンがそれぞれ、集積回路と関連付けられるピーク熱的エネルギーが実質的に最小化されるように循環サイクルの各部分について動作する循環スケジュールを生成するための1つもしくは複数の命令、または複数の熱的に異なるバージョンとコントローラとを循環スケジュールを実現するために集積回路のための実装設計へと統合するための1つもしくは複数の命令のうちの少なくとも1つの命令704を含み得る。1つまたは複数の命令は、例えば、コンピュータ実行可能命令、および/または論理で実施される命令などとすることができる。ある実施形態において、1つまたは複数のコンピュータプログラム製品700の信号担持媒体702は、コンピュータ可読媒体706、書込み可能媒体708、および/または通信媒体710を含む。
ある実装形態において、信号担持媒体702は、それだけに限らないが、ハード・ディスク・ドライブ、コンパクトディスク(CD)、ディジタル多用途ディスク(DVD)、ディジタルテープ、メモリなどといったコンピュータ可読媒体706を含み得る。ある実装形態において、信号担持媒体702は、それだけに限らないが、メモリ、読取り/書込み(R/W)CD、R/W DVDなどといった書込み可能媒体708を含み得る。ある実装形態において、信号担持媒体702は、それだけに限らないが、ディジタルおよび/またはアナログ通信媒体(例えば光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)といった通信媒体710を含み得る。よって、例えばコンピュータプログラム製品700は、信号担持媒体702が通信媒体710の無線形態(IEEE802.11規格に準拠した無線通信媒体など)によって搬送されるRF信号担持媒体702によって前述のシステムの1つまたは複数のモジュールに搬送され得る。
本開示は、様々な態様の例示として意図されている本出願に記載される特定の実施形態にだけ限定されるものではない。当業者には理解されるように、本開示の趣旨および範囲を逸脱することなく、多くの改変および変形を加えることができる。本明細書に記載されているもの以外の、本開示の範囲内の機能的に等価な方法および装置が、以上の説明を読めば当業者には明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲の範囲内に含まれるものと意図されている。本開示は、添付の特許請求の範囲の各項と、かかる特許請求の範囲が権利付与される対象となる全範囲の均等物とによってのみ限定されるべきである。本開示は、特定の方法、構成部品、要素、装置、またはシステムだけに限定されず、当然ながら多様であり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
本明細書における実質的にいかなる複数形および/または単形数の用語の使用についても、当業者は、状況および/または用途に合わせてしかるべく、複数形から単数形に、かつ/または単数形から複数形に変換することができる。本明細書においては明確にするために様々な単数形/複数形の置換形が明示され得る。
一般に、本明細書において、特に添付の特許請求の範囲(例えば添付の特許請求の範囲の本文など)において使用される用語は、一般には、「非限定的な(open)」用語として意図されている(例えば、「including(〜を含み)」という用語は「それだけに限らないが〜を含み」と解釈すべきであり、「having(〜を有し)」という用語は「少なくとも〜を有し」と解釈すべきであり、「includes(〜を含む)」という用語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど)ことが当業者には理解されるであろう。
さらに、導入請求項記載の特定の数が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば理解の一助として挙げると、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「1つまたは複数の」あるいは「少なくとも1つの」という導入句および「a」や「an」といった不定冠詞を含むときでさえも、不定冠詞「a」または「an」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ1つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない(例えば、「a」および/または「an」は「少なくとも1つの」または「1つまたは複数の」を意味するものと解釈されるべきであるなど)。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、導入請求項記載の特定の数が明示的に記載されている場合でさえも、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることも当業者は理解するであろう(例えば、他の修飾語句を伴わない「2つの記載」という記載だけで、少なくとも2つの記載、または2つ以上の記載を意味するなど)。
「A、B、およびCのうちの少なくとも1つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである(例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、それだけに限らないが、Aだけを、Bだけを、Cだけを、AとBとを共に、AとCとを共に、BとCとを共に、かつ/またはA、B、およびCを共に有するシステムを含むはずであるなど)。「A、B、またはCのうちの少なくとも1つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである(例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、それだけに限らないが、Aだけを、Bだけを、Cだけを、AとBとを共に、AとCとを共に、BとCとを共に、かつ/またはA、B、およびCを共に有するシステムを含むはずであるなど)。さらに、2つ以上の択一的項目を提示する事実上あらゆる選言的な語および/または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの1つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「AまたはB」という句は、「A」または「B」または「AおよびB」の可能性を含むものと理解されるであろう。
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることも当業者は理解するであろう。
当業者には理解されるように、ありとあらゆる目的で、例えば書面による説明を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも2等分、3等分、4等分、5等分、10等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下3分の1、中3分の1および上3分の1に容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで(up to)」、「少なくとも(at least)」「〜より大(greater than)」「〜より小(less than)」などといったすべての表現は、記載される数を含み、後で前述の下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって例えば、1〜3個の要素を有するグループは、1個、2個、または3個の要素を有するグループを指す。同様に、1〜5個の要素を有するグループは、1個、2個、3個、4個または5個の要素を有するグループを指し、以下同様である。
本明細書では様々な態様および例が開示されているが、当業者には他の態様および例も明らかであろう。本明細書で開示する様々な態様および例は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。

Claims (24)

  1. 集積回路の合成のためのコンピュータで実施される方法であって、
    その動作が前記集積回路についての第1の熱的エネルギーパターンをもたらす前記集積回路についてのバインディングの第1のバージョンを生成するステップと、
    その動作が前記集積回路についての第2の熱的エネルギーパターンをもたらす前記集積回路についての前記バインディングの第2のバージョンを生成するステップと、
    前記集積回路内で前記バインディングの前記第1のバージョンと前記バインディングの前記第2のバージョンとの一方を動作させるための循環スケジュールを生成するステップと
    を含み、前記第1の熱的エネルギーパターンと前記第2の熱的エネルギーパターンとが互いに対して熱的に異なり、前記第1のバージョンと前記第2のバージョンとがそれぞれ前記循環スケジュールの個々の部分について動作する、方法。
  2. 前記集積回路内で前記循環スケジュールを実施するためのコントローラを生成するステップをさらに含む、請求項1に記載のコンピュータで実施される方法。
  3. その動作が前記集積回路についてのさらに別の熱的エネルギーパターンをもたらす前記集積回路についての前記バインディングのさらに別のバージョンを生成するステップと、
    前記集積回路内で前記バインディングの前記第1のバージョン、前記バインディングの前記第2のバージョン、および前記バインディングの前記さらに別のバージョンのうちの1つを動作させるように前記循環スケジュールを適合させるステップと
    をさらに含み、前記第1の熱的エネルギーパターン、前記第2の熱的エネルギーパターン、および前記さらに別の熱的エネルギーパターンが互いに対して熱的に異なり、前記第1のバージョン、前記第2のバージョン、および前記さらに別のバージョンがそれぞれ前記循環スケジュールの個々の部分について動作する、請求項1に記載のコンピュータで実施される方法。
  4. 前記第1のバージョンと前記第2のバージョンとを生成する前記ステップが、前記集積回路と関連付けられるデータパスに従って前記バージョン内の動作を関連付けるステップを含む、請求項1に記載のコンピュータで実施される方法。
  5. 前記第1のバージョンと前記第2のバージョンとを生成する前記ステップが、タイミング制約条件を維持しながら前記集積回路内の所与の種類のモジュールの数を最小化しようと試みるステップを含む、請求項1に記載のコンピュータで実施される方法。
  6. 前記第1のバージョンと前記第2のバージョンとを生成する前記ステップが、1組のタイミング制約条件を満たしながら面積制約条件を維持しようと試みるステップを含む、請求項1に記載のコンピュータで実施される方法。
  7. 前記循環スケジュールを生成する前記ステップが、前記集積回路についての前記第1の熱的エネルギーパターンおよび前記第2の熱的エネルギーパターンを推定するための熱モデルを適用するステップを含む、請求項1に記載のコンピュータで実施される方法。
  8. 前記熱モデルが、それぞれ、当該バージョンのための前記循環スケジュールの前記個々の部分と関連付けられる持続時間で乗算された、前記バインディングの前記第1のバージョンによって消失する電力と前記バインディングの前記第2のバージョンによって消失する電力との和に等しい総熱的エネルギーを含む、請求項7に記載のコンピュータで実施される方法。
  9. 前記循環スケジュールを生成する前記ステップが、前記集積回路と関連付けられる漏洩エネルギーを最小化するステップを含む、請求項1に記載のコンピュータで実施される方法。
  10. 前記循環スケジュールを生成する前記ステップが、前記集積回路と関連付けられる総エネルギー消費を最小化するステップを含む、請求項1に記載のコンピュータで実施される方法。
  11. 前記バインディングの前記第1のバージョンが、前記バインディングの前記第2のバージョンによって使用される第2のデータパスとは異なる第1のデータパスを使用する、請求項1に記載のコンピュータで実施される方法。
  12. コンピュータによって実行されるときに、前記コンピュータを、集積回路の合成を行うように適合させるための方法についてのコンピュータ実行可能命令が記憶されているコンピュータ記憶媒体であって、前記方法が、
    各バージョンの動作が、前記集積回路についての個々の熱的エネルギーパターンが互いに対して熱的に異なるような前記個々の熱的エネルギーパターンをもたらす前記集積回路についてのバインディングの2つ以上のバージョンを生成するステップと、
    前記バインディングの前記2つ以上のバージョンがそれぞれ循環サイクルの各部分について動作する循環スケジュールを生成するステップと、
    前記バインディングの前記2つ以上のバージョンとコントローラとを前記循環スケジュールを実現するために前記集積回路のための実装設計へと統合するステップと
    を含む、コンピュータ記憶媒体。
  13. 前記方法が、前記集積回路と関連付けられるピーク温度を低減するように前記バインディングの前記2つ以上のバージョンの量を調整するステップをさらに含む、請求項12に記載のコンピュータ記憶媒体。
  14. 前記バインディングの前記2つ以上のバージョンを生成する前記ステップが、前記バージョン内の動作を、前記動作の優先順位に従って関連付けるステップを含む、請求項12に記載のコンピュータ記憶媒体。
  15. 前記バインディングの前記2つ以上のバージョンを生成する前記ステップが、信号処理のためのサンプリングレートと関連付けられたタイミング制約条件を維持するステップを含む、請求項12に記載のコンピュータ記憶媒体。
  16. 前記循環スケジュールを生成する前記ステップが、前記集積回路についての前記個々の熱的エネルギーパターンを推定するための熱モデルを適用するステップを含む、請求項12に記載のコンピュータ記憶媒体。
  17. 前記熱モデルが、前記2つ以上のバージョンのそれぞれのための前記循環サイクルの前記個々の部分と関連付けられる持続時間で乗算された、前記2つ以上のバージョンのそれぞれによって消失する電力の和に等しい総熱的エネルギーを含む、請求項16に記載のコンピュータ記憶媒体。
  18. アルゴリズムと関連付けられた動作を実装するためのモジュールと、
    前記モジュールに前記アルゴリズムをスケジュールし、バインドして、前記集積回路と関連付けられるピーク熱的エネルギーの低減をサポートするために複数の熱的に異なるバージョンを順に使用するように構成されたコントローラと
    を備える、集積回路。
  19. 前記低減されるピーク熱的エネルギーが、前記複数の熱的に異なるバージョンのうちのただ1つを実装するように構成された集積回路と関連付けられるピーク熱的エネルギーより低い、請求項18に記載の集積回路。
  20. 前記コントローラが、前記複数の熱的に異なるバージョンを、それぞれ、循環サイクルの個々の部分持続時間について順に使用する、請求項18に記載の集積回路。
  21. 前記コントローラが有限状態機械である、請求項18に記載の集積回路。
  22. 前記モジュールのうちの1つまたは複数が数値演算を実装する、請求項18に記載の集積回路。
  23. 前記アルゴリズムが信号処理アルゴリズムである、請求項18に記載の集積回路。
  24. 前記モジュールが、集積回路内で、同一の動作を行うモジュールが相互に離れて位置決めされるように位置決めされている、請求項18に記載の集積回路。
JP2012548006A 2010-01-11 2010-11-12 熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成 Pending JP2013527943A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/685,114 2010-01-11
US12/685,114 US8365131B2 (en) 2010-01-11 2010-01-11 Hardware synthesis using thermally aware scheduling and binding
PCT/US2010/056526 WO2011084237A2 (en) 2010-01-11 2010-11-12 Hardware synthesis using thermally aware scheduling and binding

Publications (1)

Publication Number Publication Date
JP2013527943A true JP2013527943A (ja) 2013-07-04

Family

ID=44259499

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012548006A Pending JP2013527943A (ja) 2010-01-11 2010-11-12 熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成

Country Status (7)

Country Link
US (2) US8365131B2 (ja)
JP (1) JP2013527943A (ja)
KR (1) KR20120101177A (ja)
CN (1) CN103180853A (ja)
DE (1) DE112010005118T5 (ja)
GB (1) GB2489150A (ja)
WO (1) WO2011084237A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8365131B2 (en) 2010-01-11 2013-01-29 Empire Technology Development Llc Hardware synthesis using thermally aware scheduling and binding
US9141159B2 (en) 2011-11-03 2015-09-22 International Business Machines Corporation Minimizing aggregate cooling and leakage power with fast convergence
US8464200B1 (en) 2012-02-15 2013-06-11 International Business Machines Corporation Thermal relief optimization
US8566773B2 (en) * 2012-02-15 2013-10-22 International Business Machines Corporation Thermal relief automation
US8683418B2 (en) 2012-06-18 2014-03-25 International Business Machines Corporation Adaptive workload based optimizations to mitigate current delivery limitations in integrated circuits
US8863068B2 (en) 2012-06-18 2014-10-14 International Business Machines Corporation Current-aware floorplanning to overcome current delivery limitations in integrated circuits
US8826216B2 (en) 2012-06-18 2014-09-02 International Business Machines Corporation Token-based current control to mitigate current delivery limitations in integrated circuits
US8914764B2 (en) 2012-06-18 2014-12-16 International Business Machines Corporation Adaptive workload based optimizations coupled with a heterogeneous current-aware baseline design to mitigate current delivery limitations in integrated circuits
US8826203B2 (en) 2012-06-18 2014-09-02 International Business Machines Corporation Automating current-aware integrated circuit and package design and optimization
US8782593B2 (en) * 2012-09-25 2014-07-15 Taiwan Semiconductor Manufacturing Company, Ltd. Thermal analysis of integrated circuit packages
US9477568B2 (en) 2013-09-27 2016-10-25 International Business Machines Corporation Managing interconnect electromigration effects
KR102268591B1 (ko) 2014-08-18 2021-06-25 삼성전자주식회사 회로의 자가 발열 특성을 예측하는 시뮬레이션 시스템 및 그것의 회로 설계 방법
CN105917354A (zh) * 2014-10-09 2016-08-31 微软技术许可有限责任公司 用于图像处理的空间金字塔池化网络
US20160153922A1 (en) * 2014-11-27 2016-06-02 Mediatek Inc. System and method for adaptive thermal analysis
JP5807887B1 (ja) * 2015-05-07 2015-11-10 株式会社制御システム研究所 プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法
US9779058B2 (en) * 2015-07-13 2017-10-03 Google Inc. Modulating processsor core operations
CN106709352B (zh) * 2015-11-12 2019-09-24 阿里巴巴集团控股有限公司 样本处理方法、装置及系统
EP3533034A4 (en) * 2016-12-19 2020-09-09 Hewlett-Packard Development Company, L.P. LAYOUT DETERMINATION FOR PARTS MADE IN 3D
TWI646315B (zh) 2017-11-15 2019-01-01 財團法人工業技術研究院 溫度估算裝置及溫度估算方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5541849A (en) * 1990-04-06 1996-07-30 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters
US6324679B1 (en) * 1997-06-03 2001-11-27 Nec Usa, Inc. Register transfer level power optimization with emphasis on glitch analysis and reduction
US6363506B1 (en) * 1999-04-13 2002-03-26 Agere Systems Guardian Corp. Method for self-testing integrated circuits
US6701272B2 (en) * 2001-03-30 2004-03-02 Intel Corporation Method and apparatus for optimizing thermal solutions
US7539879B2 (en) * 2002-12-04 2009-05-26 Nxp B.V. Register file gating to reduce microprocessor power dissipation
US7191349B2 (en) * 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7146496B2 (en) * 2003-01-23 2006-12-05 Hewlett-Packard Development Company, L.P. Methods and apparatus for managing temporary capacity in a computer system
DE10324565A1 (de) * 2003-05-30 2004-12-30 Chipvision Desigin Systems Ag Verfahren und Vorrichtung zum Schaltungsentwurf mittels High-Level-Synthese
WO2004109531A2 (en) * 2003-06-10 2004-12-16 Koninklijke Philips Electronics N.V. Real-time adaptive control for best ic performance
US20090077508A1 (en) * 2004-01-28 2009-03-19 Rubin Daniel I Accelerated life testing of semiconductor chips
CA2580998A1 (en) * 2006-03-03 2007-09-03 Queen's University At Kingston Adaptive analysis methods
US7627841B2 (en) * 2006-04-12 2009-12-01 The Regents Of The University Of California, Santa Cruz Efficient method to predict integrated circuit temperature and power maps
US20070260894A1 (en) * 2006-05-03 2007-11-08 Aguilar Maximino Jr Optimizing thermal performance using feed-back directed optimization
US7596430B2 (en) * 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US7552346B2 (en) * 2006-05-03 2009-06-23 International Business Machines Corporation Dynamically adapting software for reducing a thermal state of a processor core based on its thermal index
US8571847B2 (en) * 2010-01-08 2013-10-29 International Business Machines Corporation Efficiency of static core turn-off in a system-on-a-chip with variation
US8365131B2 (en) 2010-01-11 2013-01-29 Empire Technology Development Llc Hardware synthesis using thermally aware scheduling and binding

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6013035973; Yousra Alkabani and Farinaz Koushanfar: 'N-Variant IC Design: Methodology and Applications' Design Automation Conference, 2008. DAC 2008. 45th ACM/IEEE , 200806, 第546-551頁 *
JPN6013035975; Avizienis A: 'The N-Version Approach to Fault-Tolerant Software' Software Engineering, IEEE Transactions on(Volume:SE-11, Issue: 12 ) , 198512, 第1491-1501頁 *
JPN7013002709; Yousra Alkabani, Farinaz Koushanfar, and Miodrag Potkonjak: 'N-Version Temperature-Aware Scheduling and Binding' Proceedings of the 14th ACM/IEEE international symposium on Low power electronics and design (ISLPED , 200908, 第331-334頁 *

Also Published As

Publication number Publication date
GB201211474D0 (en) 2012-08-08
WO2011084237A2 (en) 2011-07-14
KR20120101177A (ko) 2012-09-12
US20130145335A1 (en) 2013-06-06
US8656338B2 (en) 2014-02-18
WO2011084237A3 (en) 2014-04-03
DE112010005118T5 (de) 2013-06-27
GB2489150A (en) 2012-09-19
CN103180853A (zh) 2013-06-26
US8365131B2 (en) 2013-01-29
US20110173581A1 (en) 2011-07-14

Similar Documents

Publication Publication Date Title
JP2013527943A (ja) 熱を考慮したスケジューリングおよびバインディングを使用したハードウェア合成
Guo et al. [DL] A survey of FPGA-based neural network inference accelerators
US9619240B2 (en) Core-level dynamic voltage and frequency scaling in a chip multiprocessor
Yang et al. OpenCL for HPC with FPGAs: Case study in molecular electrostatics
Lari et al. Hierarchical power management for adaptive tightly-coupled processor arrays
Zhang et al. CMOST: A system-level FPGA compilation framework
Abe et al. Energy-efficient high-level synthesis for HDR architectures
Tibaldi et al. A survey of FPGA optimization methods for data center energy efficiency
Abe et al. An energy-efficient high-level synthesis algorithm for huddle-based distributed-register architectures
Yang et al. Effective Task Scheduling and IP Mapping Algorithm for Heterogeneous NoC‐Based MPSoC
TWI536260B (zh) 採石墨烯型電晶體的異質多核心處理器
Li et al. Agile design of DCT circuit on soft CGRA
Zhao et al. Empirical study of data allocation in heterogeneous memory
Sousa et al. Runtime adaptation of application execution under thermal and power constraints in massively parallel processor arrays
Asad et al. Exploiting heterogeneity in cache hierarchy in dark-silicon 3d chip multi-processors
Huang et al. Hardware task scheduling optimizations for reconfigurable computing
Liu et al. Thermal-aware memory system synthesis for MPSoCs with 3D-stacked hybrid memories
Liu et al. Thermal-aware task and data co-allocation for multi-processor system-on-chips with 3D-stacked memories
Wang et al. Whole procedure heterogeneous multiprocessors low-power optimization at algorithm-level
Srivardhan et al. Improving the Performance of SoC’s with Ecosystem Based Artificial Intelligence and Enhanced Thermal and Power Management
Nobes et al. Advanced methods for electromagnetic simulation
Koraei et al. DTP: enabling exhaustive exploration of FPGA temporal partitions for streaming HPC applications
Golshan et al. Exploiting power budgeting in thermal-aware dynamic placement for reconfigurable systems
Kawamura et al. A thermal-aware high-level synthesis algorithm for RDR architectures through binding and allocation
Adegbija et al. Thermal-aware phase-based tuning of embedded systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130722

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131219