JP5147944B2 - パイプライン式電子回路設計においてクロック・ゲーティング機会を検出するための方法、装置、およびプログラム - Google Patents

パイプライン式電子回路設計においてクロック・ゲーティング機会を検出するための方法、装置、およびプログラム Download PDF

Info

Publication number
JP5147944B2
JP5147944B2 JP2010521403A JP2010521403A JP5147944B2 JP 5147944 B2 JP5147944 B2 JP 5147944B2 JP 2010521403 A JP2010521403 A JP 2010521403A JP 2010521403 A JP2010521403 A JP 2010521403A JP 5147944 B2 JP5147944 B2 JP 5147944B2
Authority
JP
Japan
Prior art keywords
clock
pipeline
clock gating
latch
stage
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.)
Active
Application number
JP2010521403A
Other languages
English (en)
Other versions
JP2010537293A5 (ja
JP2010537293A (ja
Inventor
ファーンズラー、マシュー、アール
ヤコブセン、ハンズ、ミカエル
スロウジ、ジョニー
スワンソン、トッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010537293A publication Critical patent/JP2010537293A/ja
Publication of JP2010537293A5 publication Critical patent/JP2010537293A5/ja
Application granted granted Critical
Publication of JP5147944B2 publication Critical patent/JP5147944B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)
  • Testing Or Measuring Of Semiconductors Or The Like (AREA)

Description

本開示は電子回路に関し、より具体的に言えば、電力削減機会の検出によるパイプライン電子回路の効率的設計に関する。
情報処理システム(IHS)は、情報の処理、取り扱い、通信、またはその他の操作のための複数のプロセッサを含むことができる。各プロセッサは、それ自体が、情報を処理するため協働する複数のプロセッサ・コアを含むことができる。プロセッサまたはプロセッサ・コアは、プロセッサの効果的なスループットを向上させるためにいくつかのパイプライン・ステージを含むことができる。このパイプライン化によって、プロセッサまたはプロセッサ・コアは、並行して動作を実行することにより、より高い効率性を得ることができる。マルチコア・プロセッサ設計への移行は、プロセッサにおける電力損失問題を増加させる傾向がある。
現在、総電力消費は、マルチコア・プロセッサ設計などのプロセッサ設計における主要な問題の1つである。プロセッサの過度な電力消費は、プロセッサの機能不全を生じさせる可能性がある。さらに、適切な熱放散無しの過度な電力消費は、プロセッサを不安定にさせるか、または恒久的損害を与える可能性がある。ファン、冷却器、およびラジエータなどの外部冷却デバイスは、高性能プロセッサによる高電力消費および結果として生じる発熱の問題に対処するという点までは効果的である。残念ながら、これらのデバイスは、通常高価であり雑音がある。さらにこれらの冷却デバイスはしばしばかさばるものであり、特にポータブルまたはバッテリ駆動型システムでは望ましくない特殊な設計およびパッケージング方法を必要とする。
プロセッサにおける電力損失または消費には、2つの主要な面、すなわち、漏洩電力損失および有効電力損失(active power dissipation)が含まれる。
半導体製造プロセスがプロセッサ素子を小型に縮小すればするほど、漏洩電力損失は増加する。これに対して有効電力損失は、主に、特定作業負荷でのプロセッサの活動に関係する。たとえば、ラッチなどの順次素子の活動は、プロセッサにおける有効電力損失の一因である。プロセッサ内の組み合わせ論理によるデータ交換は、有効電力損失の他の原因である。プロセッサのパイプライン・ステージ内のラッチは、多量の電力消費を引き起こす。ラッチ・ベースの素子には、フリップフロップ、データ・ストレージ論理、レジスタ、交換コンポーネント、およびプロセッサ内の他のコンポーネントが含まれる。ラッチ・ベース素子の動作を良好に制御することは、プロセッサ内の電力削減に対する重要な機会を示す。
ラッチ・クロッキングは、電力の消費および損失の有効部分の主要なコンポーネントである。ラッチのクロッキングは、ラッチが状態を変更するか否かにかかわらず、ラッチに電力を消費させる。電力消費を削減するためにラッチのクロック動作を削減することは望ましいが、複雑なプロセッサにおいて大きな設計課題を提示する。「クロック・ゲーティング」は、ラッチ・クロックの電力消費を大幅に削減する。クロック・ゲーティングは、ラッチ機能への損害なしに、ある条件下で、特定のラッチまたはラッチ・セットのクロック入力へのクロック信号を切断かまたは中断する技法である。「クロック・ゲーティング」されたラッチとは、クロック・ゲーティング回路がラッチのクロック信号を切断または中断する状態のラッチを示す用語である。そうでない場合、ラッチは通常の動作をする。「クロック・ゲーティング」されたラッチは、通常のクロック・サイクル入力中に状態を始動、トグル、またはその他の方法で変更することはない。このクロック信号入力のブロックおよびその後のラッチの静的状態が、プロセッサの電力を節約する。ラッチをクロック・ゲーティングするタイミング、およびラッチをクロック・ゲーティングしないタイミングを決定することは、プロセッサ設計者に重大な設計課題を提示する。基本的には、特定クロック・サイクル中にラッチをクロック・ゲーティングすることは、その特定クロック・サイクル中にラッチの状態が変更されない場合、またはラッチの状態変更が後続のダウンストリーム論理に影響を与えない場合、許容される。しかしながら、クロック・ゲーティングするタイミングおよびクロック・ゲーティングしないタイミングを決定することは課題である。クロック・ゲーティング論理を設計するための手法の1つは、ラッチ内のデータがラッチの入力上に存在するデータと同じである(すなわち、Din=Qout)タイミングを決定するために、手動の調査を実行することである。クロック・ゲーティング機会を決定するためのシミュレーションも有用である。しかしながらこれらの手法は、クロック・ゲーティング機会を査定するには、悲観的過ぎる場合がある。設計者がこれらの設計手法を慎重に使用して、プロセッサ用のクロック・ゲーティング論理を生成した後でさえも、依然として、他のクロック・ゲーティング機会が与えられる可能性があることを設計者が完全に調査できない場合のある、複雑なシナリオが存在する可能性が高い。
米国特許出願第11/380126号
複雑なプロセッサにおいて、クロック・ゲーティング機会をより完全に識別する方法および装置が求められている。
したがって、一実施形態では、電力節約を達成するためにパイプライン電子デバイスをクロック・ゲーティングするための方法が開示される。この方法は、クロック・ゲーティング可能な論理要素をそれぞれが含む第1および第2のパイプライン・ステージを含む複数のパイプライン・ステージを、パイプライン電子デバイスに提供することを含む。各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給する。この方法は、シミュレータによって、所定の条件下でクロック・ゲーティング可能な選択論理要素を指定するシミュレーション結果を決定するために、パイプライン電子デバイスの動作をシミュレートすることも含む。この方法は、電力節約を達成するために、シミュレーション結果に基づき、パイプライン電子デバイスの選択論理要素をクロック・ゲーティングすることも含む。
他の実施形態では、メモリとパイプライン電子プロセッサ・デバイスとを含む、情報処理システム(IHS)が開示される。パイプライン電子プロセッサ・デバイスは、メモリと結合する。クロック・ゲーティング可能な論理要素をそれぞれが含む第1および第2のパイプライン・ステージを含む、複数のパイプライン・ステージを含むパイプライン電子プロセッサ・デバイス。各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給する。選択論理要素は、電力節約を達成するために所定の条件下でクロック・ゲーティング可能な選択論理要素を指定する、パイプライン電子プロセッサ・デバイスのシミュレーションに基づいて、クロック・ゲーティングされる。
好ましくは、クロック・ゲーティング可能な論理要素をそれぞれが含む第1および第2のパイプライン・ステージを含む、複数のパイプライン・ステージを含む、第1のパイプライン電子プロセッサ・デバイスを設計することであって、各パイプライン・ステージがダウンストリーム・パイプライン・ステージに情報を供給する、設計することと、所定の条件下でクロック・ゲーティング可能な選択論理要素を指定するシミュレーション結果を決定するために、第1のパイプライン電子デバイスの動作をシミュレートすることと、電力節約を達成するためにシミュレーション結果に基づいて選択論理要素をクロック・ゲーティングする、第2のパイプライン電子デバイスを形成するように、第1のパイプライン電子デバイスを修正することを含む、パイプライン電子デバイスの設計方法も提供される。
添付の図面は本発明の例示的諸実施形態のみを示し、本発明の概念は他の等しく効果的な諸実施形態に役立つため、その範囲を限定するものではない。
クロック・ゲーティングのための機会を実証する電子回路を示すブロック図である。 電子回路内で使用するためのクロック・ゲーティング技術を示す図である。 クロック・ゲーティング方法の効果的な使用を実証する、パイプライン電子回路を示すブロック図である。 開示されたクロック・ゲーティング方法を示す流れ図である。 開示されたクロック・ゲーティング設計改良方法を示す流れ図である。 開示されたクロック・ゲーティング方法を使用する情報処理システムを示すブロック図である。
プロセッサ内で、クロック・ゲーティングは有効電力消費を削減するための機会を提供する。クロック・ゲーティング論理を設計または生成するための基本的な方法は、特定クロック・サイクルに対するクロック信号を必要としないそれぞれのラッチへの、特定クロック・サイクルに対するクロック信号をブロックすることである。特定クロック・サイクルに対するラッチの状態が変化しない場合、その特定クロック・サイクルに対するそのラッチへのクロック信号を送信する必要はない。「クロック・ゲーティング」またはラッチへのクロック信号のブロックにより、ラッチはクロックのラッチまたはトグル状態を通過しない。したがってラッチは、クロック・ゲーティングが存在しなかった場合にそれ以外の方法でラッチが消費することになる電力を消費しない。各「クロック・ゲーティングされた」ラッチは、クロック・ゲーティングを介して特定クロック・サイクルに対してプロセッサが達成する全体の電力節約に寄与する。
クロック・ゲーティング機会を見つけるために統計的分析を利用する前述の手法は、プロセッサ内の総電力消費を削減する可能性があるが、これらの方法では、制約を課すこと、ならびに、パイプライン・システムおよびパイプライン電子回路が提供するクロック・ゲーティングのための機会を利用することが、できない可能性がある。
クロック・ゲーティング機会を識別するための手法の1つが、2006年4月25日付けで出願し、同じ譲受人に譲渡された、発明者Chaudhry等による「Method And Apparatus In Locating Clock GatingOpportunities Within A Very Large Scale Integration Chip Design」という名称の係属中の米国特許出願第11/380126号(整理番号AUS920050826US1)に開示されている。
クロック・ゲーティング機会を理解する基本的な方法の1つは、ラッチまたはラッチ・グループの出力が、クロック遷移中またはクロック・サイクル中に変化しないというシナリオを、考慮することである。通常これは、ラッチへのデータ入力が依然として静的状態にあり、同様に、クロック遷移中にラッチの出力が依然として定常状態にあることの結果である。他のクロック・ゲーティング機会は、特定のクロック・サイクル中に、ラッチの出力データがラッチの現在の入力データに等しいというシナリオである。この簡単明瞭なシナリオでは、別個のクロック・ゲーティング論理が、ラッチの出力状態にいかなる変化もなしに、ラッチへのクロック信号をブロック、除去、またはそうでなければキャンセルすることができる。こうした「クロック・ゲーティング」されたラッチは、その状態を変更しようとはしない。このため、そのラッチの電力消費はそうでない場合よりも少ない。
図1を見るとわかるように、従来の論理回路100は、クロック・ゲーティング機会回路110、すなわちこの特定の例ではラッチ120を含む。論理回路100内で、ラッチ120および140は、たとえばANDゲート135などの別個の組み合わせ論理130を介して、データ出力信号を提供する他のラッチ150に接続される。一実施形態では、論理回路100は、より大きくより複雑な論理回路(図示せず)の一部を表すことができる。たとえば、論理回路100は、プロセッサまたは他のデジタル論理回路の一部とすることができる。
ラッチ120は、データおよびクロック入力ならびにラッチング・データ出力信号を伴う、典型的なラッチ回路を表す。より具体的に言えば、他の回路論理(図示せず)からの入力データ信号DATA1が、ラッチ120へのデータ入力を提供する。ある信号条件下で、ラッチ120はクロック・ゲーティングの候補である。言い換えれば、何らかの条件下で、ラッチ120をクロック・ゲーティングするための機会が存在する可能性がある。このため、図1に示されるように、「クロック・ゲーティング機会」回路110という用語が、ラッチ回路120に適用される。
信号DATA3として示されるラッチ120の出力は、組み合わせ論理130の入力と、すなわちANDゲート135の2つの入力のうちの1つと、結合する。クロック信号CLK1は、ラッチ120およびラッチ140にクロッキングを提供する。クロック回路(図示せず)は、論理回路100を採用するプロセッサまたは他の電子回路内のマスタ・クロック信号から、CLK1などの個々のクロック信号を生成することができる。ラッチ140は、他の機能論理(図示せず)から、データとしてDATA2信号を受信する。信号DATA4で示されるラッチ140の出力は、組み合わせ論理130の他の入力と、すなわちANDゲート135の2つの入力のうちの2番目と、結合する。組み合わせ論理130は、ブール関数が回路分析の目的で表現可能な、任意の量の離散ゲートおよびトランジスタ論理を表す。組み合わせ論理130の出力、より具体的に言えばANDゲート135の出力は、信号DATA5で示される、ラッチ150のデータ入力と結合する。ラッチ150は、クロック入力信号CLK2を受信する。ラッチ150は、他のダウンストリーム機能論理(図示せず)に入力信号を提供する、出力信号DATA6を生成する。
論理回路100は、ある条件下でクロック・ゲーティングするための機会を提示する。以下の例がこうした条件の1つを示す。ラッチ140の出力でDATA4信号が論理ゼロ「0」を示す場合、対応するANDゲート135の入力は論理ゼロ「0」を示す。このシナリオでは、ブール代数により、ANDゲート135の出力も論理ゼロ「0」である(すなわち、DATA5信号は論理ゼロ「0」を示す)。この例で、ラッチ120の出力信号DATA3は、その論理状態(すなわち1または0)にかかわらず、ANDゲート135の出力信号DATA5にいかなる影響も与えない。ラッチ120の出力状態の分析は、ラッチ120の状態を「関与なし(do not care)」(DNC)条件とみなす可能性がある。次の順次論理機能、すなわちこの特定例ではラッチ150の場合、ラッチ120の状態は関係ない。さらに、同様に典型的なクロック・サイクルを示す上記例の状態の場合、ラッチ120は、その特定クロック・サイクル中のクロック・ゲーティングのための同一の機会を示す。ラッチ120がクロック・ゲーティングのための機会を提供するこれらの条件下で、ラッチ120に対する適切な代替名は、クロック・ゲーティング機会回路110である。
図2は、論理回路100内のクロック・ゲーティング機会回路110と結合する、代表的な従来のクロック・ゲーティング回路200を示すブロック図である。便宜上、図2は、論理回路100全体を反復せず、クロック・ゲーティング機会回路110およびそのラッチ120のみを示す。クロック・ゲーティング機会の分析により、回路設計者は、クロック・ゲーティング論理回路210などのクロック・ゲーティング論理を、プロセッサなどの電子回路に組み込むことができる。「クロック・ゲーティング」は、ラッチまたはラッチ・グループなどの論理コンポーネントへのクロック信号の伝搬をブロックする、通常はANDまたはNANDゲートあるいは他の論理回路である、回路を利用する方法である。回路設計者は、クロック・ゲーティング論理210を使用して、クロックがクロック・ゲーティング機会回路110の機能にいかなる影響も与えないという所定の条件下で、特定ラッチへのクロック信号の伝搬をブロックする。これら所定の条件が存在する場合、クロック・ゲーティング回路の動作により、クロック信号は事実上ラッチに到達しない。
信号CG1として示されるクロック・ゲーティング論理210の出力は、ANDゲート220の2つの入力のうちの1つと結合する。ANDゲート220の残りの入力は、電子回路(図示せず)の他の機能論理から、クロック信号CLK1入力を受信する。信号CG1をANDゲート220への入力として使用することにより、クロック・ゲーティング論理210は、クロック・ゲーティングが適切な一定条件下でCLK1信号を効果的にブロックすることができるハードウェア・コンポーネントを提供する。クロック・ゲーティング論理210の出力信号CG1が論理ゼロ「0」を示す場合、ANDゲート220は、信号CLK1からの入力状態にかかわらず、論理ゼロ「0」の出力信号を生成する。ANDゲート220の出力は、クロック・ゲーティング機会回路110内のラッチ120のクロック入力と結合する。クロック・ゲーティング論理210が、論理ゼロ「0」状態を示すCG1信号を出力する場合、ラッチ120への入力データ信号、すなわちDATA1は、ラッチ120に対して影響を及ぼさないため、「関与なし」DNC入力を構築する。より具体的に言えば、ラッチ120は、データ信号DATA1として示される入力データをクロッキングしないことになる。この条件で、ラッチ120は、次の順次論理回路(図示せず)へと流れるラッチ出力信号DATA3を変化させない。さらにラッチ120は、遷移状態を生成しないため、遷移ラッチ状態電力を消費しないことになる。しかしながら、クロック・ゲーティング論理210の出力信号CG1が論理「1」を示す場合、ANDゲート220は、クロック信号CLK1の状態をラッチ120のクロック入力へと渡すことになる。このシナリオでは、クロック・ゲーティング論理210はラッチ120を「クロック・ゲーティング」または干渉しない。
図2の例における手法は、以下で説明するような複数のパイプライン式ステージを含む複雑なプロセッサ・アーキテクチャでのクロック・ゲーティングを考慮の対象としない。クロック・ゲーティング機会は、複雑なパイプライン・アーキテクチャ内に存在する。電子回路のシミュレーションおよび電子回路内の信号ノードの分析が、クロック・ゲーティング機会を識別するための1つの方法を示す。信号ノードは、ブール論理として表すことが可能な関数間の接続点を示す、回路のシミュレーション・モデルにおける別個のトレースまたは接続である。電子回路のシミュレーションは、相互接続されたノードとブール論理関数ブロックとの集まりとみなすことができる。以下に開示された例示的方法の一実施形態は、シミュレーション・モデルにおけるデータの実作業負荷シミュレーションを生成すること、ならびに、シミュレーション・モデルを実回路としての信号状態でまったく同様に動作させることを含む。一実施形態では、シミュレーション・モデルおよびプログラムが、実作業負荷状態でシミュレーションを動作させ、クロック・ゲーティング機会について信号ノードを監視する。
図3は、プロセッサなどのパイプライン電子回路300においてクロック・ゲーティング機会を検出する開示された方法を実証する、パイプライン設計を示す。パイプライン電子回路300は、より大きなパイプライン回路(図示せず)の一部を表す。パイプライン電子回路300は、複数のステージ、すなわち代表的なパイプライン・ステージSTAGE 0、STAGE 1、STAGE 2、およびSTAGE 3を含み、そのうちのSTAGE 1およびSTAGE 2がより詳細に示されている。STAGE 0の出力データは、STAGE 1に入力データを提供する。STAGE 1の出力データは、STAGE 2に入力データを提供し、さらにパイプライン電子回路300のダウンストリーム・ステージへと続く。この特定の実施形態では、STAGE 1はSTAGE 2に対してアップストリームであり、これは、データがSTAGE 1からSTAGE 2へとダウンストリーム方向へ流れることを意味する。
図3のパイプライン電子回路300は、たとえばSTAGE 1およびSTAGE 2などのパイプライン・ステージの回路にマスタ・クロック信号(CLK)を提供する、マスタ・クロック回路302を含む。クロック回路302は、クロック・ゲーティング回路305(A1)、クロック・ゲーティング回路305(B1)等々、STAGE 1のクロック・ゲーティング回路305(M1)までと結合し、これにCLK信号を提供する。たとえば305(A1)などの各クロック・ゲーティング回路の第2の英数表現、すなわち「1」は、その回路が常駐するパイプライン・ステージ番号を表す。クロック回路302は、クロック・ゲーティング回路305(A2)、クロック・ゲーティング回路305(B2)、およびSTAGE 2のクロック・ゲーティング回路305(N2)へも結合し、これにCLK信号を提供する。クロック・ゲーティング回路305(A1)は、パイプライン電子回路300のSTAGE 1のラッチA1(310)のクロック入力と結合する。図3では、各ラッチに関する第2の英数表現は、ラッチのステージ番号位置を示す。たとえば、ラッチA1という表現は、図3のパイプライン電子回路のステージ1を表す第2の英数値「1」を示す。クロック・ゲーティング回路305(B1)は、STAGE 1のラッチB1(320)のクロック入力と結合する。クロック・ゲーティング回路305(M1)は、STAGE 1のラッチM1(330)のクロック入力と結合する。クロック・ゲーティング回路305(A2)は、パイプライン電子回路300のSTAGE 2のラッチA2(350)のクロック入力と結合する。クロック・ゲーティング回路305(B2)は、STAGE 2のラッチB2(360)のクロック入力と結合する。クロック・ゲーティング回路305(N2)は、STAGE 2のラッチN2(370)のクロック入力と結合する。パイプライン電子回路300は、順次アーキテクチャを示す。言い換えれば、データは、パイプライン・ステージからパイプライン・ステージへと、マスタ・クロック信号CLKと共に、ロック・ステップ内のラッチおよび論理素子を通じて流れる。データは、クロック信号CLKが代表的なクロック・サイクルNから次のクロック・サイクルN+1へと進むにつれて、ステージからステージへと移動する。
以下の考察では、クロック・サイクルに関してパイプライン電子回路300を通るデータの流れを説明する。たとえば、STAGE 0から、STAGE 1のラッチA1(310)へのデータ入力が、クロック・サイクルNでラッチA1(310)を通じてクロッキングする場合、STAGE 1のラッチA1は、そのクロック・サイクルN中にそのデータの値を格納する。しかしながら、次のクロック・サイクルN+1では、STAGE 2のラッチA2(350)は、ラッチA1データに関する論理回路340の動作の結果を格納する。したがってクロック・サイクルN+1では、STAGE 1のラッチA1からSTAGE 2のラッチA2へとデータが流れる。次にラッチA2はそのデータを格納する。このようにデータは、1つのクロック・サイクルから次のクロック・サイクルへとパイプライン式で、STAGE 1などのアップストリーム・ステージから、STAGE 2などのダウンストリーム・ステージへと移動する。図3で下方を指示する矢印は、電子回路300のパイプライン・ステージを通過する、このアップストリームからダウンストリームへのデータ流れを示す。
より詳細には、パイプラインSTAGE 0からのデータは、STAGE 1のラッチA1の入力へとダウンストリーム方向に流れ、パイプラインSTAGE 0からのデータは、ラッチB1の入力へもダウンストリーム方向に流れる。パイプライン電子回路300の各ステージは、複数のラッチを備えたパイプライン論理を含む。たとえば、STAGE 1は、ラッチA1(310)、ラッチB1(320)、...ラッチM1(330)を含む。ラッチM1(330)は、パイプライン電子回路300のSTAGE 1における任意の複数のラッチ「M」を表す。ラッチA1(310)の出力は、図に示されるように、論理回路340および論理回路345の両方の入力と結合する。論理回路340および論理回路345はどちらも、動作およびシミュレーションのためのブール関数として表現可能な、任意の量の組み合わせ論理を表す。パイプライン電子回路300のSTAGE 1のラッチB1(320)の出力は、論理回路345の入力と結合する。実際には、パイプラインのSTAGE 1は、図に示されたよりも多くの論理素子を含むことができる。
STAGE 1の論理回路340の出力は、パイプライン回路のSTAGE 2におけるラッチA2(350)の入力と結合する。STAGE 1の論理回路345の出力は、STAGE 2におけるラッチB2(360)の入力と結合する。実際には、STAGE 2は図に示されたよりも多くのラッチを含むことができる。たとえばSTAGE 2は、ラッチA2(350)、ラッチB2(360)、...ラッチN2(370)を含む。ラッチN2(370)は、パイプライン電子回路300のSTAGE 2における任意の複数のラッチ「N」を表す。ラッチA2の出力は、論理回路372の入力と結合する。ラッチB2の出力は、論理回路374の入力と結合する。論理回路372および374の出力は、パイプライン電子回路内の次のダウンストリーム・ステージ、すなわちSTAGE 3のラッチ(図示せず)の入力と結合する。実際には、パイプライン電子回路300は、図3の代表的な回路に示されたよりも多くのステージを含むことができる。
図3は、開示された方法に従って、パイプライン式のステージに対してクロック・ゲーティングが可能ないくつかの条件を実証するための、パイプライン電子回路300を示す。以下の表1は、図3に示されたようなパイプライン式環境にクロック・ゲーティング機会が存在する、代表的な5つのケースを示す。
Figure 0005147944
表1の第1のケースまたはシナリオでは、クロック・ゲーティング回路305(A1)がクロック・サイクルN中にラッチA1(310)をクロック・ゲーティングするか、あるいは、ラッチA1が格納する論理状態または値が、クロック・サイクルNで変更されない場合、クロック・ゲーティング回路305(A2)は、次のクロック・サイクルN+1でラッチA2(350)を潜在的にクロック・ゲーティングする可能性がある。このシナリオでは、ラッチA1は、パイプライン回路ステージを通るデータ流れのいかなる変化も示さず、結果として、ラッチA1は機能する必要がない。ラッチA1の状態が現在のクロック・サイクル中のダウンストリーム機能とは無関係であるため、ラッチA1の条件は「関与なし」(DNC)条件である。このため、クロック・ゲーティング回路305(A1)は、その現在の状態で、ラッチA1をクロック・ゲーティングするかまたは実質上保持することができる。
表1の第2のケースまたはシナリオでは、クロック・サイクルN中に、クロック・ゲーティング回路305(A1)がラッチA1(310)をクロック・ゲーティングし、クロック・ゲーティング回路305(B1)がラッチB1(320)をクロック・ゲーティングする場合、次のクロック・サイクルN+1で、クロック・ゲーティング回路305(A2)および305(B2)は、それぞれ、ラッチA2(350)およびラッチB2(360)をクロック・ゲーティングする可能性がある。これは、クロック・ゲーティングされたラッチA1およびB1の状態または値が、ダウンストリーム・ラッチA2およびB2の見地から、クロック・サイクルN+1に対して「関与なし」(DNC)であるためである。
表1の第3のケースまたはシナリオでは、ラッチB2(360)の値がクロック・サイクルN+1で変更されない場合、クロック・ゲーティング回路305(B1)は、クロック・サイクルNでラッチB1(320)をクロック・ゲーティングする可能性がある。これは、クロック・サイクルNでのラッチB1の出力が、クロック・サイクルN+1でのラッチB2の出力値に影響を与えないためである。同様に、表1の第4のケースまたはシナリオでは、ラッチA2(350)の値がクロック・サイクルN+1で変更されない場合、クロック・ゲーティング回路305(A1)は、クロック・サイクルNでラッチA1(310)をクロック・ゲーティングする可能性がある。これは、クロック・サイクルNでのラッチA1の出力が、クロック・サイクルN+1でのラッチA2の出力値に影響を与えないためである。
表1の第5のケースは、ラッチA2(350)およびラッチB2(360)の両方が、クロック・サイクルN+1での論理状態または出力値を変更しないか、あるいは、ラッチA2およびB2の両方がクロック・ゲーティングを示すというシナリオを示す。言い換えれば、クロック・ゲーティング回路305(A2)およびクロック・ゲーティング回路305(B2)は、それぞれ、クロック・サイクルN+1中にラッチA2およびB2をクロック・ゲーティングする。このシナリオでは、クロック・サイクルN中のラッチA1およびB1の両方の出力が、クロック・サイクルN+1におけるラッチA2およびラッチB2に影響を与えないことを示すため、ラッチA1およびB1の両方が、クロック・サイクルNにおけるクロック・ゲーティングの潜在的候補である。クロック・ゲーティング機会を認識するために、図1のラッチ論理を通るアップストリームおよびダウンストリームの両方を調べる機能によって、このパイプライン回路設計における大幅な電力削減を可能にする。たとえば図3で、ラッチA2およびB2のダウンストリーム状態を、クロック・サイクルN中のアップストリーム・ラッチA1およびB1に関するものと評価することで、クロック・ゲーティング機会を評価するためのデータが提供される。
電子回路設計では、設計者は、特定の論理回路をネット・リストとして表すことができる。パイプライン電子回路300などの論理回路のケースでは、設計者は、手操作またはコンピュータの支援によって、電子回路300の属性および接続を記述したネット・リスト375を生成する。ネット・リスト375は、電子回路300のパイプラインの関数論理およびパイプライン・ステージを表す、接続および論理関数のリストである。設計者またはその他の者は、従来のネット・リスト生成技法を採用してネット・リスト375を生成することができる。ネット・リスト375は、パイプライン電子回路300を記述するネット・リスト・データを含む。このネット・リスト・データは、図3に示されるようにシミュレータ380への入力である。シミュレータ380は、ネット・リスト375のネット・リスト・データを使用して、パイプライン電子回路300の様々なステージおよびコンポーネントの動作を代表するソフトウェア・シミュレーション・モデル382を生成する。パイプライン電子回路300のシミュレーション・モデル382は、パイプライン電子回路300の各ステージの、各相互接続のノードおよび機能論理コンポーネントまたは回路のソフトウェア・モデルを表す。シミュレータ380は、クロック信号入力、データ信号入力、入力データ・バス、およびパイプライン電子回路300の他の入力信号を含む、ソフトウェア内の各入力ノードをシミュレートすることができる。シミュレーション・モデル382は、パイプライン電子回路300のクロック・サイクルあたりの各ノードに関するブール式のシミュレーションおよび分析のためのツールを提供する。シミュレータ380はシミュレーション・プログラム385を含む。一実施形態では、シミュレーション・プログラム385は、トポグラフィ(topography)・プログラム392、最適化プログラム394、および作業負荷シミュレーション・プログラムを含む。シミュレータ380は、パイプライン電子回路300のシミュレーション・サポートのための他のプログラム(図示せず)を含むことができる。
シミュレータ380は、トポグラフィ・プログラム392を実行し、パイプライン電子回路100におけるクロック・ゲーティング機会意思決定プロセスで使用するために含める、物理パラメータを提供する。トポグラフィ・プログラム392は、この意思決定プロセスでトポグラフィ・データを採用することができる。トポグラフィ・データは、接続トレース幅、相互接続のトレース長さ、論理回路機能の離散的トランジスタの物理的近接、およびパイプライン電子回路300の他の有用な回路設計パラメータを、含むことができる。シミュレータ380は、シミュレーション・モデル382の複雑さを低減させるため、および、回路300内のクロック・ゲーティング機会の識別をさらに支援するために、最適化プログラム394を実行することができる。最適化プログラム394は、ラッチおよび論理関数の組み合わせがクロック・ゲーティング機会の検出または回路設計の機能に影響を与えない場合、こうした組み合わせによって、シミュレーション・モデル382の複雑さを低減させる。たとえば最適化プログラム394は、複数のラッチをシミュレーションのみのために単一ラッチに組み合わせるかまたはグループ化することが可能であり、こうしたラッチ・グループは、同じソースからクロックおよびデータ信号を受信する。
上記図3に示されるようなパイプライン電子回路にソフトウェア・シミュレーション・プログラム385を適用すること、およびそこに表1のクロック・ゲーティング・シナリオを適用することによって、システム・シミュレータ380は、回路300内でクロック・ゲーティング機会のより正確かつ包括的な表現を展開することができる。図3および表1に例示されたクロック・ゲーティング機会を識別するための上記方法は、複雑なパイプライン設計に適切である。パイプライン電子回路300のラッチ論理の図示されていない追加のステージを考慮に入れることによって、シミュレータ380がより多くのデータ・ノードを利用することができる。より多くのデータ・ノードは、シミュレーション・プログラム385の実行中に追加の読み取りデータをシミュレータ380に提供する。また、パイプライン回路の各ステージにおいてN+2、N+3などのようなより多くのクロック・サイクルを考慮に入れることによっても、シミュレータ380がより多くのデータを利用することができる。利用可能なより多くのデータを備えたシミュレータ380は、表1の代表的なクロック・ゲーティング・シナリオなどの本明細書の教示を使用することにより、より正確かつ現実的なクロック・ゲーティング機会を突き止めることができる。
手操作で実行された場合、上記の例でクロック・ゲーティングの機会を見つけることは、退屈な時間のかかるタスクである。そのため図3は、表1のシナリオに従って、パイプライン電子回路300ならびに作業負荷環境の両方をシミュレーションするための、シミュレータ380を含む。一実施形態では、シミュレータ380は、レジスタ転送レベル(RTL)言語を使用してパイプライン電子回路300のシミュレーション・モデル382を生成する。RTLは、デジタル電子回路を定義するための高水準記述言語である。RTLモデルは、ラッチおよびブール論理式のソフトウェア集合として電子回路を記述する。モデル上で真の作業負荷を実行すること、すなわち実際の代表的データをシミュレーション・モデル382の入力ノードに入力することによって、作業負荷シミュレーション・プログラム396は、シミュレータ380内の各ノードで実際の回路結果を読み取る。シミュレーション・モデル382のステージごとに各ノードの結果を分析することによって、作業負荷シミュレーション・プログラム396は、表1のシナリオと整合したクロック・ゲーティング機会の集合を生成する。シミュレータ380は、クロック・ゲーティング機会の結果を分析し、表1のそれなどのシナリオおよび他の基準ごとにデータを編成することができる。シミュレータ380は、分析用にこのデータをエンド・ユーザまたは設計者に提示することができる。これらの結果は、電子回路の再設計または今後の設計に有用な可能性がある。
クロック・ゲーティングのオンまたはオフを切り替える機能は、パイプライン電子回路300におけるクロック・ゲーティング論理の有用な機能を示す。エンド・ユーザは、パイプライン電子回路の論理機能に影響を与えることなく、クロック・ゲーティング論理全体の使用不可化を希望する場合がある。クロック・ゲーティング回路の使用不可化は、クロック・ゲーティングが提供する電力節約と同時に、回路の電力消費を増加させる効果がある。クロック・ゲーティング論理の使用不可化は、クロック・ゲーティングの影響なしに、パイプライン電子回路300をテストするメカニズムを提供する。パイプライン電子回路300は、CGE信号をそれぞれのパイプライン・ステージに提供する、マスタ・クロック・ゲーティング使用可能化(CGE)回路308を含む。クロック・ゲーティング使用可能化(CGE)回路308は、STAGE 1のクロック・ゲーティング回路305(A1)、305(B1)、および305(M1)と結合し、それらにクロック・ゲーティング使用可能化信号を提供する。クロック・ゲーティング使用可能化CGE信号は、パイプライン電子回路300を通じてクロック・ゲーティングを使用可能にするために1つの論理状態を示すこと、および回路300を通じてクロック・ゲーティングを使用不可にするために反対の論理状態を示すことが可能である。CGE回路308は、STAGE 2のクロック・ゲーティング回路305(A2)、305(B2)、および305(N2)と結合し、それらにクロック・ゲーティング使用可能化信号を提供する。図3は、複数のステージおよび複数のラッチおよび組み合わせ論理を含む、代表的なパイプライン電子回路300を示す。パイプライン電子回路300は、より大きく複雑な回路の一部などの、多くの形を取ることが可能である。たとえば、パイプライン電子回路300は、デスクトップ・コンピュータ、ノートブック・コンピュータ、サーバ、あるいは、他のフォーム・ファクタ・コンピュータまたはデータ処理システム内の、プロセッサの形を取ることができる。パイプライン電子回路は、ゲーム・デバイス、携帯情報端末(PDA)、通信デバイス、または、パイプライン・システム・アーキテクチャを含む任意の他のデバイスなどの、他のフォーム・ファクタを取ることができる。
図4は、開示されたクロック・ゲーティング機会プロセスの一実施形態に関する、設計および動作方法を示す流れ図である。プロセス流れは、開始ブロック405から始まる。回路設計者は、パイプライン電子回路設計ブロック410に従って、複数のパイプライン・ステージを含むパイプライン電子回路を設計する。設計者は、ブロック412に従って、論理回路、接続、ノード、および、他のパイプライン電子回路を記述する情報を含む、複数のパイプライン・ステージを記述するネット・リストを生成するために、従来の技法を使用することができる。たとえば設計者は、こうしたネット・リストを、時間のかかる手動プロセスによって、またはネット・リスト生成ツールを備えたコンピュータ支援によって、生成することができる。一実施形態では、シミュレータ380は、レジスタ転送レベル(RTL)言語プログラミングを使用することによって、シミュレーション・モデル382を生成する。より具体的に言えば、シミュレータ380は、ネット・リストを、ラッチおよび、パイプライン電子回路300に対応してこれを表す相互接続のブール表現可能な論理関数の、ソフトウェア・シミュレーションに変換する。シミュレータ380は、シミュレーション・モデル展開ブロック415に従って、ネット・リストからシミュレーション・モデル382を展開する。シミュレータ380は、ブロック420に従って、特定のパイプライン電子回路300に関するトポグラフィ・データを展開するために、トポグラフィ・プログラム392などのシミュレーション・プログラム385を実行する。トポグラフィの結果は、以下のクロック・ゲーティング機会を識別するための最終意思決定基準の一部として使用するために、シミュレータ380内に残留する。シミュレータ380は、ブロック425に従って、シミュレータ380が分析するデータの量を削減するために、最適化プログラム394などのシミュレーション・プログラム385も実行する。一実施形態では、現行のシミュレーション・モデル382を最適化することで、図4に示されたすべての後続のシミュレータ380のプロセスに関して、ソフトウェア・シミュレーション・モデル382に対する強化機能を生成する。
シミュレータ380は、ブロック430に従って、実世界作業負荷のデジタル1および0のデータを備えた、作業負荷シミュレーション・プログラム396などのシミュレーション・プログラム385も実行する。パイプライン電子回路300シミュレーションを通じて実作業負荷をシミュレーションすることによって、より現実的な結果、すなわちパイプライン電子回路300の観察可能クロック・ゲーティング機会が、シミュレータ380によって観察可能である。シミュレータ380は、ブロック435に従って、表1に示されたケースなどの条件付イベントに関して内部ノードを探査することによって、これらのクロック・ゲーティング機会を読み取る。表1のケース1〜5は、それぞれ、クロック・ゲーティング機会がパイプライン電子回路300内に存在することをシミュレータ380が識別できる条件を表す。たとえば、作業負荷シミュレーション・プログラム396を実行するシミュレータ380は、STAGE 1内のラッチA1またはラッチA1およびB1のグループを、表1のケース1〜5の下でクロック・ゲーティング機会を示すものとして識別する。シミュレータ380は、ラッチA1または、STAGE 1内のラッチM1の任意のグループ組み合わせを、表1のケース1〜5のうちの1つの下でクロック・ゲーティング機会を示すものとして識別することができる。クロック・ゲーティング機会は次の動作に進み、ここでシミュレータ380は、クロック・ゲーティング機会ケース発見の意思決定ブロック440に従って、クロック・ゲーティング機会を示すケース1〜5のうちの1つをプロセスが発見したかどうかを検証する。シミュレータ380が、パイプライン・ステージ内の特定のコンポーネントが、表1のケース1〜5のうちの1つに対応するクロック・ゲーティング機会を示すことを発見した場合、「CASE(S) FOUND」が得られるため、プロセス流れはケース重み付けブロック445へと進む。シミュレータ380は、ブロック445に従って、現時点で発見された、クロック・ゲーティング機会を示す各ケースに重みを印加する。ケースの重み付けによって、どのクロック・ゲーティング機会が他より多くの電力節約を与えるかを決定するための方法が提供される。電力節約の多いクロック・ゲーティング機会が、電力節約の可能性が少ないクロック・ゲーティング機会よりも、高位にランク付けされる。以下で考察する決定基準が、各特定ケースが受け取る特定の重みを決定する。
ケース重み付けは、特定カテゴリのクロック・ゲーティング機会が、他のクロック・ゲーティング機会よりも多くの回路設計改良のための機会を示す、開示された方法の一態様である。たとえば、シミュレータ380がクロック・ゲーティング機会のソースとして検出する、クロック・ゲーティングされたラッチ・タイプは、シミュレータ380が「関与なし」(DNC)タイプのクロック・ゲーティング機会として検出するラッチよりも、価値が高い。この価値付けすなわち重み付けの理由は、クロック・ゲーティングされたラッチ・タイプは高度に予測可能であり、クロック・ゲーティング回路は常時存在するためである。ラッチが「関与なし」DNCタイプのクロック・ゲーティング機会を示すケースでは、クロック・ゲーティング機会は、他のクロック・サイクルではクロック・ゲーティング機会を示さない可能性がある。すなわち、クロック・サイクルN+1、N+2、等々は、非DNCクロック・ゲーティング機会を示す可能性がある。シミュレータ380は、以下の表2に示されるように、特定の重み値を各クロック・ゲーティング機会タイプに割り当てる。
Figure 0005147944
上記表2に示されるように、カテゴリ「A」は、高い重み付けすなわち「H」値を示す、特定ステージ内の共通クロック・ゲーティング機会を示す複数のラッチを表す。クロック・ゲーティング機会を示す特定ステージ内のラッチ・グループは、同じ機会を示す単一ラッチよりも大きなケース重みを有する。複数ラッチのグループは、同量のクロック・ゲーティング機会を備えながら、より高い電力消費削減の可能性を表す。重み付けの他の例は、アップストリームまたはダウンストリームのクロック・ゲーティング機会のシミュレータ380分析である。クロック・ゲーティング機会が、シミュレーション・プログラム385のクロック・ゲーティング・ケース・データからダウンストリーム方向に常駐する場合、表2のカテゴリ「B」に示されるように、ケース重みは大きく、このケースでは重み付けが高を示す「H」である。たとえばシミュレータ380は、特定のクロック・ゲーティング機会が他のクロック・ゲーティング機会のダウンストリーム方向にある場合、特定のクロック・ゲーティング機会に、他のクロック・ゲーティング機会よりも大きな重みを与える。これは、ダウンストリームのクロック・ゲーティング機会の方が予測しやすいためである。
関与なし(DNC)クロック・ゲーティング機会に関して表2に示されるようなカテゴリ「C」の例は、「M」すなわち中程度の重み付け値を表す。シミュレータ380が決定するラッチは、関与なし状態を示すラッチが、上記表2の高位すなわち「H」値の格付けよりも機会値の少ない、クロック・ゲーティング機会とすることができる。値の重み付けの他の例が、最低のケース重み値「L」すなわち低を備える、変更なしラッチとして、カテゴリ「D」に示されている。シミュレータ380は、クロック・サイクルNからクロック・サイクルN+1へと状態変化を示さない、というよりむしろラッチ状態が変化しない、ラッチを検出する。重み値「L」すなわち低を有するアップストリームのクロック・ゲーティング機会として、さらに他の例がカテゴリ「E」として表2に示される。シミュレータ380が、現在のシミュレーション状態またはクロック・サイクルNから見てアップストリームであるとして検出するクロック・ゲーティング機会は、表2の値のうちで最低のケース重み付け機会を表す。作業負荷シミュレーション・プログラム396を実行しているシミュレータ380が重み付け動作を完了すると、シミュレータ380は、ブロック450に従って、クロック・ゲーティング機会を重みによってログ記録する。
クロック・ゲーティング機会のログが完了するか、またはクロック・ゲーティング機会ケース発見の意思決定ブロック440が偽の結果を与えた場合、シミュレータ前進ブロック455に従って、シミュレータ380は次のクロック・サイクルに進む。シミュレータ380が1クロック・サイクルずつ、すなわちクロック・サイクルNからクロック・サイクルN+1へ、またその次へと前進すると、作業負荷シミュレータ・プログラム396は、クロック・ゲーティングに関する機会をコンパイルする。シミュレータ380がクロック・サイクルを数多く前進すればするほど、作業負荷シミュレータ・プログラム396は、パイプライン電子回路300設計に関するクロック・ゲーティング機会を数多くログ記録することになる。特定のラッチに関するクロック・ゲーティング機会は、最初から最後まで図4のシミュレーション・プロセスからの全シミュレーション・データの組み合わせである。シミュレータ380は、1つのクロック・サイクルNのラッチA1に関する特定のクロック・ゲーティング機会を発見することができる。しかしながら、設計者は、クロック・ゲーティング回路を設計する前に、全クロック・ゲーティング・データを検査する。すべてのクロック・ゲーティング機会と、ラッチとラッチ・グループとの間の相互接続論理との累積が、シミュレータ380の最終設計ガイドライン出力を構成する。
クロック・ゲーティング機会は、拡張的作業負荷シミュレーション・プログラム396を実行した後、より完全となり、より大きな値となる。たとえば、作業負荷シミュレーション・プログラム396は、作業負荷シミュレーション・プログラム396において初期にクロック・ゲーティング機会を示す、ラッチA1の出力データなどの、最下位データ・ビットを検出することができる。作業負荷シミュレーション・プログラム396は、ラッチA1のデータ出力に対するいかなる変更も検出せずに、シミュレーションの多くのクロック・サイクルを通過し、潜在的なクロック・ゲーティング機会を表1のケース1などのDNCケースとしてログ記録することができる。多数のシミュレーション・クロック・サイクル後、ラッチA1のデータ出力はクロック・ゲーティングに良好な機会を表すことができる。しかしながら、ラッチA1は低位のデータ・ビットを表すため、最終的に作業負荷シミュレーション・プログラム中に、ビットが変更され、シミュレーション全体にわたってクロック・ゲーティングの候補資格に乏しい可能性がある。シミュレーションが初期に停止した場合、ビットはクロック・ゲーティング可能として現れる。しかしながら、作業負荷シミュレーション・プログラム396が多数のクロック・サイクルに対して実行された場合、ビットはトグル可能であり、そのラッチA1はもはやクロック・ゲーティングの候補ではない。シミュレーション・プログラム385が完了しない場合、意思決定ブロック460の結果は偽となり、シミュレータ380は、再度ブロック435に従って、条件に関して内部ノードを探査するために戻る。しかしながら、意思決定ブロック460の結果が肯定結果である場合、シミュレーションは完了し、シミュレータ380は、現在の設計に対する設計改良点として考慮するために、クロック・ゲーティング機会のすべての結果をログ記録する。シミュレーション動作は、終了ブロック470に従って完了する。
図5は、設計改良プロセスを表す流れ図である。流れは開始ブロック510から始まる。回路設計者は、ブロック520に従って、従来の回路設計の実践を使用して、パイプライン電子回路300の初期または予備のバージョンを設計する。ブロック520の初期または予備の電子回路設計が完了した後、シミュレータ380は、ブロック530に従って、本明細書で教示されるように、パイプライン電子回路300の予備バージョンのシミュレーションを完了するために、トポグラフィ、最適化、および作業負荷のシミュレーション・プログラム385を実行する。シミュレータ380プロセスの結果は、ケースによる、重みによる、ラッチによる、またはラッチのグループ化による、あるいは、クロック・ゲーティングを通じた設計変更機会への有用な入力を表す任意の他の基準による、データの編成とすることが可能な、クロック・ゲーティング機会のログである。シミュレーション・プロセスは、ブロック540に従って、クロック・ゲーティング機会のシミュレーション結果をログ記録する。回路設計者は、ブロック550に従って、クロック・ゲーティング実施のための最良の機会を識別するために、シミュレータ380の全結果を評価する。すべての結果を組み合わせること、およびクロック・ゲーティングから恩恵を得ることが可能なラッチまたはラッチ・グループを識別することによって、設計者は、パイプライン電子回路300の設計を改良するために、離散的クロック・ゲーティング回路を使用して、初期または予備のパイプライン電子回路設計を修正することができる。したがって設計者は、ブロック560に従って、シミュレーション・プロセスの結果として生じる識別されたクロック・ゲーティング機会を利用することによって、修正されたパイプライン電子回路設計を生成することができる。したがって、修正されたパイプライン電子回路は、識別されたクロック・ゲーティング機会に対処するクロック・ゲーティング回路を介した電力消費削減を達成することができる。一例として、設計者は、シミュレーションの識別されたクロック・ゲーティング機会の結果を使用する、パイプライン電子回路300のSTAGE 1の場合、クロック・ゲーティング回路305(A1)、305(B1)、から305(M1)までなどの、クロック・ゲーティング回路を生成することができる。クロック・ゲーティング回路は、ケースの表1に従った任意のケースの組み合わせを表す。設計者は、パイプライン電子回路300のSTAGE 2の場合、クロック・ゲーティング回路305(A2)、305(B2)、から305(N2)までなどの、クロック・ゲーティング回路を生成することができる。改良プロセスは、終了ブロック570に従った完了する。このようにして、設計者は、パイプライン電子回路300の改良または修正された最終バージョンを提供する。
図6は、プロセッサ605を採用する代表的な情報処理システム(IHS)600の簡略化されたブロック図を示す。一実施形態では、プロセッサ605はパイプライン電子回路300を含む。IHS 600は、プロセッサ605をメモリ・コントローラ615およびビデオ・グラフィクス・コントローラ620に結合する、バス610をさらに含む。より具体的に言えば、図に示されるように、システム・メモリ・バス630はシステム・メモリ635と結合する。実際には、バス610は、たとえばメモリ・バスおよびI/Oバスなどの複数のバスを含むことができる。ディスプレイ640は、ビデオ・グラフィクス・コントローラ620と結合する。ハード・ディスク・ドライブ、CDドライブ、DVDドライブ、または他の不揮発性ストレージなどの、不揮発性ストレージ645は、IHS 600に永続的な情報のストレージを提供するために、バス610と結合する。キーボードおよびマウス・ポインティング・デバイスなどのI/Oデバイス650は、I/Oバス655およびI/Oコントローラ660を介してバス610と結合する。USB、IEEE 1394バス、ATA、SATA、PCI、PCIE、および他のバスなどの、1つまたは複数の拡張バス665は、周辺装置およびデバイスのIHS 600への接続を容易にするために、バス610と結合する。
ネットワーク・インターフェース・アダプタ670は、IHS 600を有線または無線でネットワークおよび他の情報処理システムに接続するために、バス610と結合する。図6は、プロセッサ605内でパイプライン電子回路300を利用する1つのIHSを示すが、IHSは他の形を取ることが可能である。たとえばIHS 600は、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、あるいは他のフォーム・ファクタ・コンピュータまたはデータ処理システムの形を取ることができる。IHS 600は、ゲーム・デバイス、携帯情報端末(PDA)、携帯電話デバイス、通信デバイス、あるいはプロセッサおよびメモリを含む他のデバイスなどの、他のフォーム・ファクタを取ることができる。
上記は、クロック・ゲーティング機会を識別することによって、パイプラインのステージにおける電力節約を実行可能にする、パイプライン電子回路および設計方法を開示するものである。一実施形態では、シミュレーション結果は、パイプライン電子回路の設計において設計者を支援し、シミュレーションが識別するクロック・ゲーティング機会位置で、パイプラインのステージの間にクロック・ゲーティング回路を組み込むことによって、電力節約を達成することができる。
当業者であれば、本発明の本説明に鑑みて、本発明の修正および代替の実施形態が明らかとなろう。したがって本説明は、本発明を実施する方法を当業者に教示し、単なる例示としてのみ解釈されるものと意図される。図示および説明された本発明の形が、諸実施形態を構成する。当業者であれば、諸部分の形状、サイズ、および配置構成において様々な変更が実施可能である。たとえば当業者であれば、本明細書に図示および説明された諸要素を等価の諸要素と交換することができる。さらに当業者であれば、本発明の説明から恩恵を受けた後に、本発明の範囲を逸脱することなく、本発明のある一定の機能を他の機能の使用とは独立に使用することができる。

Claims (11)

  1. パイプライン電子デバイスにおける電力節約のための方法であって、前記パイプライン電子デバイスは、クロック・ゲーティングされるように動作可能な論理要素をそれぞれが備える第1および第2のパイプライン・ステージを備える、複数のパイプライン・ステージを備え、各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給するものであって、前記第2のパイプライン・ステージが、前記第1のパイプライン・ステージからダウンストリーム方向に配置されていて、
    所定の条件下でクロック・ゲーティングされるように動作可能な選択論理要素を指定するシミュレーション結果を決定するために、前記パイプライン電子デバイスの動作をシミュレートするステップと、
    前記シミュレーション結果に従って、前記パイプライン電子デバイスの前記選択論理要素をクロック・ゲーティングするステップと、
    を含み、
    前記シミュレートするステップが、次のクロック・サイクルで論理状態が変化しない前記第2のパイプライン・ステージの論理要素、または次のクロック・サイクルですでにクロック・ゲーティングされる前記第2のパイプライン・ステージの論理要素について、前記第2のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第1のパイプライン・ステージを分析するステップを含むことを特徴とする、方法。
  2. 前記シミュレートするステップが、クロック・サイクルからクロック・サイクルへと論理状態が変化しない第1のパイプライン論理要素について、前記第1のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第2のパイプライン・ステージを分析するステップを含む、請求項1に記載の方法。
  3. 前記シミュレートするステップが、クロック・サイクルからクロック・サイクルへとすでにクロック・ゲーティングされた第1のパイプライン論理要素について、前記第1のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第2のパイプライン・ステージを分析するステップを含む、請求項1または2に記載の方法。
  4. シミュレータがクロック・ゲーティング機会を識別し、
    どのクロック・ゲーティング機会がより多くの電力節約を提供するかを決定するために、識別された1つのクロック・ゲーティング機会を、他のクロック・ゲーティング機会に対して重み付けするステップをさらに含む、請求項1〜3のいずれか1項に記載の方法。
  5. シミュレーション結果に従って、前記選択論理要素をクロック・ゲーティングする、第2のパイプライン電子デバイスを形成するように、第1のパイプライン電子デバイスを修正するステップをさらに含む、請求項1〜4のいずれか1項に記載の方法。
  6. パイプライン電子デバイスにおける電力節約のための装置であって、前記パイプライン電子デバイスは、クロック・ゲーティングされるように動作可能な論理要素をそれぞれが備える第1および第2のパイプライン・ステージを備える、複数のパイプライン・ステージを備え、各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給するように動作可能で、前記第2のパイプライン・ステージが、前記第1のパイプライン・ステージからダウンストリーム方向に配置されていて、
    所定の条件下でクロック・ゲーティングされるように動作可能な選択論理要素を指定するシミュレーション結果を決定するために、前記パイプライン電子デバイスの動作をシミュレートするための手段と、
    前記シミュレーション結果に従って、前記パイプライン電子デバイスの前記選択論理要素をクロック・ゲーティングするための手段と、
    を備え、
    前記シミュレートするための手段が、クロック・ゲーティング機会について前記第1のパイプライン・ステージを分析するために、次のクロック・サイクルで論理状態が変化しない前記第2のパイプライン・ステージの論理要素、または次のクロック・サイクルですでにクロック・ゲーティングされる前記第2のパイプライン・ステージの論理要素について、前記第2のパイプライン・ステージを監視するための手段を含むことを特徴とする、装置。
  7. 前記シミュレートするための手段が、クロック・ゲーティング機会について前記第2のパイプライン・ステージを分析するために、クロック・サイクルからクロック・サイクルへと論理状態が変化しない第1のパイプライン論理要素について、前記第1のパイプライン・ステージを監視するための手段をさらに備える、請求項6に記載の装置。
  8. 前記シミュレートするための手段が、クロック・ゲーティング機会について前記第2のパイプライン・ステージを分析するために、クロック・サイクルからクロック・サイクルへとすでにクロック・ゲーティングされた第1のパイプライン論理要素について、前記第1のパイプライン・ステージを監視するための手段をさらに備える、請求項6または7に記載の装置。
  9. クロック・ゲーティング機会が識別されるのに応答して、どのクロック・ゲーティング機会がより多くの電力節約を提供するかを決定するために、識別された1つのクロック・ゲーティング機会を、他のクロック・ゲーティング機会に対して重み付けするための手段をさらに備える、請求項6〜8のいずれか1項に記載の装置。
  10. シミュレーション結果に従って、前記選択論理要素をクロック・ゲーティングする、第2のパイプライン電子デバイスを形成するように、第1のパイプライン電子デバイスを修正するための手段をさらに備える、請求項6〜9のいずれか1項に記載の装置。
  11. コンピュータを請求項から10のいずれか1項に記載の装置として機能させるためのコンピュータにより読み取り可能なコンピュータ・プログラム。
JP2010521403A 2007-08-21 2008-08-14 パイプライン式電子回路設計においてクロック・ゲーティング機会を検出するための方法、装置、およびプログラム Active JP5147944B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/842,491 US8073669B2 (en) 2007-08-21 2007-08-21 Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design
US11/842,491 2007-08-21
PCT/EP2008/060722 WO2009024540A2 (en) 2007-08-21 2008-08-14 Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design

Publications (3)

Publication Number Publication Date
JP2010537293A JP2010537293A (ja) 2010-12-02
JP2010537293A5 JP2010537293A5 (ja) 2012-08-16
JP5147944B2 true JP5147944B2 (ja) 2013-02-20

Family

ID=40378739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010521403A Active JP5147944B2 (ja) 2007-08-21 2008-08-14 パイプライン式電子回路設計においてクロック・ゲーティング機会を検出するための方法、装置、およびプログラム

Country Status (9)

Country Link
US (1) US8073669B2 (ja)
EP (1) EP2179342B1 (ja)
JP (1) JP5147944B2 (ja)
KR (1) KR20100037628A (ja)
CN (1) CN101779179B (ja)
AT (1) ATE507520T1 (ja)
DE (1) DE602008006561D1 (ja)
TW (1) TW200915724A (ja)
WO (1) WO2009024540A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2456363A (en) * 2008-01-08 2009-07-15 Ibm Methods and system for clock gating enhancement
US7844843B2 (en) * 2008-12-22 2010-11-30 International Business Machines Corporation Implementing power savings in HSS clock-gating circuit
US8302043B2 (en) * 2009-09-17 2012-10-30 International Business Machines Corporation Verification of logic circuit designs using dynamic clock gating
US9495490B2 (en) 2012-07-16 2016-11-15 International Business Machines Corporation Active power dissipation detection based on erroneus clock gating equations
US9268889B2 (en) 2013-12-05 2016-02-23 International Business Machines Corporation Verification of asynchronous clock domain crossings
US10318695B2 (en) 2013-12-05 2019-06-11 International Business Machines Corporation Phase algebra for virtual clock and mode extraction in hierarchical designs
US9916407B2 (en) 2013-12-05 2018-03-13 International Business Machines Corporation Phase algebra for analysis of hierarchical designs
US9928323B2 (en) 2015-08-20 2018-03-27 Microsemi Solutions (U.S.), Inc. Method and system for functional verification and power analysis of clock-gated integrated circuits
US9639641B1 (en) * 2015-08-20 2017-05-02 Microsemi Storage Solutions (U.S.), Inc. Method and system for functional verification and power analysis of clock-gated integrated circuits
KR20170025447A (ko) * 2015-08-28 2017-03-08 삼성전자주식회사 클락 파워를 줄일 수 있는 집적 회로를 설계하는 방법
JP6559257B2 (ja) 2016-01-08 2019-08-14 三菱電機株式会社 プロセッサ合成装置、プロセッサ合成方法及びプロセッサ合成プログラム
US10761559B2 (en) * 2016-12-13 2020-09-01 Qualcomm Incorporated Clock gating enable generation
US10585995B2 (en) * 2017-06-26 2020-03-10 International Business Machines Corporation Reducing clock power consumption of a computer processor
KR101952518B1 (ko) 2017-09-12 2019-02-26 두산중공업 주식회사 파이프 지지대 설계 시스템 및 그 방법
CN112100793B (zh) 2019-05-31 2023-06-13 超威半导体(上海)有限公司 用于重定时流水线的基于条带的自选通

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247134B1 (en) * 1999-03-31 2001-06-12 Synopsys, Inc. Method and system for pipe stage gating within an operating pipelined circuit for power savings
US6393579B1 (en) * 1999-12-21 2002-05-21 Intel Corporation Method and apparatus for saving power and improving performance in a collapsable pipeline using gated clocks
US6965991B1 (en) * 2000-05-12 2005-11-15 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US20030070013A1 (en) * 2000-10-27 2003-04-10 Daniel Hansson Method and apparatus for reducing power consumption in a digital processor
US7035785B2 (en) * 2001-12-28 2006-04-25 Intel Corporation Mechanism for estimating and controlling di/dt-induced power supply voltage variations
US7100060B2 (en) * 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
US7076681B2 (en) * 2002-07-02 2006-07-11 International Business Machines Corporation Processor with demand-driven clock throttling power reduction
US7065665B2 (en) * 2002-10-02 2006-06-20 International Business Machines Corporation Interlocked synchronous pipeline clock gating
US20040193846A1 (en) * 2003-03-28 2004-09-30 Sprangle Eric A. Method and apparatus for utilizing multiple opportunity ports in a processor pipeline
US7076682B2 (en) * 2004-05-04 2006-07-11 International Business Machines Corp. Synchronous pipeline with normally transparent pipeline stages
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7653807B2 (en) * 2005-09-19 2010-01-26 Synopsys, Inc. Removing a pipeline bubble by blocking clock signal to downstream stage when downstream stage contains invalid data
US7401242B2 (en) * 2005-09-27 2008-07-15 International Business Machines Corporation Dynamic power management in a processor design
US7797561B1 (en) * 2006-12-21 2010-09-14 Nvidia Corporation Automatic functional block level clock-gating
US7958483B1 (en) * 2006-12-21 2011-06-07 Nvidia Corporation Clock throttling based on activity-level signals
US7802118B1 (en) * 2006-12-21 2010-09-21 Nvidia Corporation Functional block level clock-gating within a graphics processor
JP4388965B2 (ja) * 2007-02-13 2009-12-24 富士通株式会社 クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法
US20080307240A1 (en) * 2007-06-08 2008-12-11 Texas Instruments Incorporated Power management electronic circuits, systems, and methods and processes of manufacture

Also Published As

Publication number Publication date
EP2179342A2 (en) 2010-04-28
EP2179342B1 (en) 2011-04-27
DE602008006561D1 (de) 2011-06-09
CN101779179A (zh) 2010-07-14
WO2009024540A3 (en) 2009-09-17
US20090055668A1 (en) 2009-02-26
US8073669B2 (en) 2011-12-06
CN101779179B (zh) 2012-07-11
WO2009024540A2 (en) 2009-02-26
TW200915724A (en) 2009-04-01
ATE507520T1 (de) 2011-05-15
KR20100037628A (ko) 2010-04-09
JP2010537293A (ja) 2010-12-02

Similar Documents

Publication Publication Date Title
JP5147944B2 (ja) パイプライン式電子回路設計においてクロック・ゲーティング機会を検出するための方法、装置、およびプログラム
US8244515B2 (en) Structure for detecting clock gating opportunities in a pipelined electronic circuit design
Blaauw et al. Statistical timing analysis: From basic principles to state of the art
Parkhurst et al. From single core to multi-core: preparing for a new exponential
US8037437B2 (en) Optimizing systems-on-a-chip using the dynamic critical path
US8266569B2 (en) Identification of critical enables using MEA and WAA metrics
EP2006784A1 (en) Methods for characterization of electronic circuits under process variability effects
JP2011529238A (ja) 順序セルを接近配置する方法及び装置
US20130232460A1 (en) Power State Transition Verification For Electronic Design
US11734480B2 (en) Performance modeling and analysis of microprocessors using dependency graphs
Nunez-Yanez et al. Enabling accurate modeling of power and energy consumption in an ARM-based System-on-Chip
US7509606B2 (en) Method for optimizing power in a very large scale integration (VLSI) design by detecting clock gating opportunities
Atitallah et al. MPSoC power estimation framework at transaction level modeling
Sapatnekar Static timing analysis
Fluhr et al. IBM POWER9 circuit design and energy optimization for 14-nm technology
Kumar et al. Machine learning-based microarchitecture-level power modeling of CPUs
Kim et al. Microarchitectural power modeling techniques for deep sub-micron microprocessors
Bal et al. Revamping timing error resilience to tackle choke points at NTC systems
Fu et al. A cross-layer power and timing evaluation method for wide voltage scaling
Kinage et al. Design and implementation of FPGA soft core processor for low power multicore Embedded system using VHDL
Pasricha et al. Capps: A framework for power–performance tradeoffs in bus-matrix-based on-chip communication architecture synthesis
Hsieh et al. Microprocessor power analysis by labeled simulation
Beerel et al. Estimation and bounding of energy consumption in burst-mode control circuits
Sørensen et al. Generation of Formal CPU Profiles for Embedded Systems
Zaccaria et al. Power estimation and optimization methodologies for VLIW-based embedded systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110715

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120628

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120628

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120926

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121030

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20121030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121127

R150 Certificate of patent or registration of utility model

Ref document number: 5147944

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250