(57)【要約】【課題】  パイプラインのステージ間のクロック・ゲーティング機会を識別するシミュレーションを介して、パイプラインのステージ内での電力節約を実行可能にする、パイプライン電子回路および設計方法を提供する。【解決手段】  一実施形態では、設計者がパイプライン電子回路を設計する際に、シミュレーション結果が支援し、シミュレーションが識別するクロック・ゲーティング機会位置でパイプラインのステージ間にクロック・ゲーティング回路を組み込むことによって、電力節約を達成する。【選択図】  図３
2010537293.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン電子デバイスにおける電力節約のための方法であって、前記パイプライン電子デバイスは、クロック・ゲーティングされるように動作可能な論理要素をそれぞれが備える第１および第２のパイプライン・ステージを備える、複数のパイプライン・ステージを備え、各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給するものであって、
所定の条件下でクロック・ゲーティングされるように動作可能な選択論理要素を指定するシミュレーション結果を決定するために、前記パイプライン電子デバイスの動作をシミュレートするステップと、
前記シミュレーション結果に従って、前記パイプライン電子デバイスの前記選択論理要素をクロック・ゲーティングするステップと、
を含む、方法。
【請求項２】
前記シミュレーション・ステップが、クロック・サイクルからクロック・サイクルへと論理状態が変化しない第１のパイプライン論理要素について、前記第１のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第２のパイプライン・ステージを分析するステップを含む、請求項１に記載の方法。
【請求項３】
前記シミュレーション・ステップが、クロック・サイクルからクロック・サイクルへとすでにクロック・ゲーティングされた第１のパイプライン論理要素について、前記第１のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第２のパイプライン・ステージを分析するステップを含む、請求項１に記載の方法。
【請求項４】
前記シミュレーション・ステップが、クロック・サイクルからクロック・サイクルへと論理状態が変化しない第１のパイプライン論理要素について、前記第２のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第１のパイプライン・ステージを分析するステップを含む、請求項１に記載の方法。
【請求項５】
前記シミュレーション・ステップが、クロック・サイクルからクロック・サイクルへとすでにクロック・ゲーティングされた第２のパイプライン論理要素について、前記第２のパイプライン・ステージを監視することによって、クロック・ゲーティング機会について前記第１のパイプライン・ステージを分析するステップを含む、請求項１に記載の方法。
【請求項６】
前記シミュレーション・ステップが、シミュレータによって、前記パイプライン電子デバイスを記述するネット・リストからシミュレーション・モデルを生成するステップをさらに含む、請求項１に記載の方法。
【請求項７】
クロック・ゲーティング機会を突き止めるために、シミュレータによって、クロック・サイクルからクロック・サイクルへと前記第１および第２のパイプライン・ステージの前記論理要素を監視するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記シミュレータがクロック・ゲーティング機会を識別し、
どのクロック・ゲーティング機会がより多くの電力節約を提供するかを決定するために、識別された１つのクロック・ゲーティング機会を、他のクロック・ゲーティング機会に対して重み付けするステップをさらに含む、請求項１に記載の方法。
【請求項９】
シミュレーション結果に従って、前記選択論理要素をクロック・ゲーティングする、第２のパイプライン電子デバイスを形成するように、前記第１のパイプライン電子デバイスを修正するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
パイプライン電子デバイスにおける電力節約のための装置であって、前記パイプライン電子デバイスは、クロック・ゲーティングされるように動作可能な論理要素をそれぞれが備える第１および第２のパイプライン・ステージを備える、複数のパイプライン・ステージを備え、各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給するように動作可能であり、
所定の条件下でクロック・ゲーティングされるように動作可能な選択論理要素を指定するシミュレーション結果を決定するために、前記パイプライン電子デバイスの動作をシミュレートするための手段と、
前記シミュレーション結果に従って、前記パイプライン電子デバイスの前記選択論理要素をクロック・ゲーティングするための手段と、
を備える、装置。
【請求項１１】
前記シミュレーション手段が、クロック・ゲーティング機会について前記第２のパイプライン・ステージを分析するために、クロック・サイクルからクロック・サイクルへと論理状態が変化しない第１のパイプライン論理要素について、前記第１のパイプライン・ステージを監視するための手段をさらに備える、請求項１０に記載の装置。
【請求項１２】
前記シミュレーション手段が、クロック・ゲーティング機会について前記第２のパイプライン・ステージを分析するために、クロック・サイクルからクロック・サイクルへとすでにクロック・ゲーティングされた第１のパイプライン論理要素について、前記第１のパイプライン・ステージを監視するための手段をさらに備える、請求項１０に記載の装置。
【請求項１３】
前記シミュレーション手段が、クロック・ゲーティング機会について前記第１のパイプライン・ステージを分析するために、クロック・サイクルからクロック・サイクルへと論理状態が変化しない第１のパイプライン論理要素について、前記第２のパイプライン・ステージを監視するための手段をさらに備える、請求項１０に記載の装置。
【請求項１４】
前記シミュレーション手段が、クロック・ゲーティング機会について前記第１のパイプライン・ステージを分析するために、クロック・サイクルからクロック・サイクルへとすでにクロック・ゲーティングされた第２のパイプライン論理要素について、前記第２のパイプライン・ステージを監視するための手段をさらに備える、請求項１０に記載の装置。
【請求項１５】
前記シミュレーション手段が、前記パイプライン電子デバイスを記述するネット・リストからシミュレーション・モデルを生成するための手段をさらに備える、請求項１０に記載の装置。
【請求項１６】
クロック・ゲーティング機会を突き止めるために、クロック・サイクルからクロック・サイクルへと前記第１および第２のパイプライン・ステージの前記論理要素を監視するための手段をさらに備える、請求項１５に記載の装置。
【請求項１７】
クロック・ゲーティング機会が識別されるのに応答して、どのクロック・ゲーティング機会がより多くの電力節約を提供するかを決定するために、識別された１つのクロック・ゲーティング機会を、他のクロック・ゲーティング機会に対して重み付けするための手段をさらに備える、請求項１０に記載の装置。
【請求項１８】
シミュレーション結果に従って、前記選択論理要素をクロック・ゲーティングする、第２のパイプライン電子デバイスを形成するように、前記第１のパイプライン電子デバイスを修正するための手段をさらに備える、請求項１０に記載の装置。
【請求項１９】
メモリと、
前記メモリに結合されたパイプライン電子プロセッサ・デバイスと、
を備える、情報処理システム（ＩＨＳ）であって、前記パイプライン電子プロセッサ・デバイスが、
クロック・ゲーティングされるように動作可能な論理要素をそれぞれが備える第１および第２のパイプライン・ステージを備える、複数のパイプライン・ステージを備え、各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給するように動作可能であり、選択された論理要素は、所定の条件下でクロック・ゲーティングされるように動作可能な前記選択論理要素を指定するように動作可能な、前記パイプライン電子デバイスのシミュレーションに従ってクロック・ゲーティングされるように動作可能である、
情報処理システム。
【請求項２０】
コンピュータ上で実行された場合、請求項１から９のいずれかに記載のすべてのステップを実行するように適合されたプログラム・コード手段を備えるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は電子回路に関し、より具体的に言えば、電力削減機会の検出によるパイプライン電子回路の効率的設計に関する。
【背景技術】
【０００２】
情報処理システム（ＩＨＳ）は、情報の処理、取り扱い、通信、またはその他の操作のための複数のプロセッサを含むことができる。各プロセッサは、それ自体が、情報を処理するため協働する複数のプロセッサ・コアを含むことができる。プロセッサまたはプロセッサ・コアは、プロセッサの効果的なスループットを向上させるためにいくつかのパイプライン・ステージを含むことができる。このパイプライン化によって、プロセッサまたはプロセッサ・コアは、並行して動作を実行することにより、より高い効率性を得ることができる。マルチコア・プロセッサ設計への移行は、プロセッサにおける電力損失問題を増加させる傾向がある。
【０００３】
現在、総電力消費は、マルチコア・プロセッサ設計などのプロセッサ設計における主要な問題の１つである。プロセッサの過度な電力消費は、プロセッサの機能不全を生じさせる可能性がある。さらに、適切な熱放散無しの過度な電力消費は、プロセッサを不安定にさせるか、または恒久的損害を与える可能性がある。ファン、冷却器、およびラジエータなどの外部冷却デバイスは、高性能プロセッサによる高電力消費および結果として生じる発熱の問題に対処するという点までは効果的である。残念ながら、これらのデバイスは、通常高価であり雑音がある。さらにこれらの冷却デバイスはしばしばかさばるものであり、特にポータブルまたはバッテリ駆動型システムでは望ましくない特殊な設計およびパッケージング方法を必要とする。
【０００４】
プロセッサにおける電力損失または消費には、２つの主要な面、すなわち、漏洩電力損失および有効電力損失（active power dissipation）が含まれる。
【０００５】
半導体製造プロセスがプロセッサ素子を小型に縮小すればするほど、漏洩電力損失は増加する。これに対して有効電力損失は、主に、特定作業負荷でのプロセッサの活動に関係する。たとえば、ラッチなどの順次素子の活動は、プロセッサにおける有効電力損失の一因である。プロセッサ内の組み合わせ論理によるデータ交換は、有効電力損失の他の原因である。プロセッサのパイプライン・ステージ内のラッチは、多量の電力消費を引き起こす。ラッチ・ベースの素子には、フリップフロップ、データ・ストレージ論理、レジスタ、交換コンポーネント、およびプロセッサ内の他のコンポーネントが含まれる。ラッチ・ベース素子の動作を良好に制御することは、プロセッサ内の電力削減に対する重要な機会を示す。
【０００６】
ラッチ・クロッキングは、電力の消費および損失の有効部分の主要なコンポーネントである。ラッチのクロッキングは、ラッチが状態を変更するか否かにかかわらず、ラッチに電力を消費させる。電力消費を削減するためにラッチのクロック動作を削減することは望ましいが、複雑なプロセッサにおいて大きな設計課題を提示する。「クロック・ゲーティング」は、ラッチ・クロックの電力消費を大幅に削減する。クロック・ゲーティングは、ラッチ機能への損害なしに、ある条件下で、特定のラッチまたはラッチ・セットのクロック入力へのクロック信号を切断かまたは中断する技法である。「クロック・ゲーティング」されたラッチとは、クロック・ゲーティング回路がラッチのクロック信号を切断または中断する状態のラッチを示す用語である。そうでない場合、ラッチは通常の動作をする。「クロック・ゲーティング」されたラッチは、通常のクロック・サイクル入力中に状態を始動、トグル、またはその他の方法で変更することはない。このクロック信号入力のブロックおよびその後のラッチの静的状態が、プロセッサの電力を節約する。ラッチをクロック・ゲーティングするタイミング、およびラッチをクロック・ゲーティングしないタイミングを決定することは、プロセッサ設計者に重大な設計課題を提示する。基本的には、特定クロック・サイクル中にラッチをクロック・ゲーティングすることは、その特定クロック・サイクル中にラッチの状態が変更されない場合、またはラッチの状態変更が後続のダウンストリーム論理に影響を与えない場合、許容される。しかしながら、クロック・ゲーティングするタイミングおよびクロック・ゲーティングしないタイミングを決定することは課題である。クロック・ゲーティング論理を設計するための手法の１つは、ラッチ内のデータがラッチの入力上に存在するデータと同じである（すなわち、Ｄｉｎ＝Ｑｏｕｔ）タイミングを決定するために、手動の調査を実行することである。クロック・ゲーティング機会を決定するためのシミュレーションも有用である。しかしながらこれらの手法は、クロック・ゲーティング機会を査定するには、悲観的過ぎる場合がある。設計者がこれらの設計手法を慎重に使用して、プロセッサ用のクロック・ゲーティング論理を生成した後でさえも、依然として、他のクロック・ゲーティング機会が与えられる可能性があることを設計者が完全に調査できない場合のある、複雑なシナリオが存在する可能性が高い。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願第１１／３８０１２６号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
複雑なプロセッサにおいて、クロック・ゲーティング機会をより完全に識別する方法および装置が求められている。
【課題を解決するための手段】
【０００９】
したがって、一実施形態では、電力節約を達成するためにパイプライン電子デバイスをクロック・ゲーティングするための方法が開示される。この方法は、クロック・ゲーティング可能な論理要素をそれぞれが含む第１および第２のパイプライン・ステージを含む複数のパイプライン・ステージを、パイプライン電子デバイスに提供することを含む。各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給する。この方法は、シミュレータによって、所定の条件下でクロック・ゲーティング可能な選択論理要素を指定するシミュレーション結果を決定するために、パイプライン電子デバイスの動作をシミュレートすることも含む。この方法は、電力節約を達成するために、シミュレーション結果に基づき、パイプライン電子デバイスの選択論理要素をクロック・ゲーティングすることも含む。
【００１０】
他の実施形態では、メモリとパイプライン電子プロセッサ・デバイスとを含む、情報処理システム（ＩＨＳ）が開示される。パイプライン電子プロセッサ・デバイスは、メモリと結合する。クロック・ゲーティング可能な論理要素をそれぞれが含む第１および第２のパイプライン・ステージを含む、複数のパイプライン・ステージを含むパイプライン電子プロセッサ・デバイス。各パイプライン・ステージは、ダウンストリーム・パイプライン・ステージに情報を供給する。選択論理要素は、電力節約を達成するために所定の条件下でクロック・ゲーティング可能な選択論理要素を指定する、パイプライン電子プロセッサ・デバイスのシミュレーションに基づいて、クロック・ゲーティングされる。
【００１１】
好ましくは、クロック・ゲーティング可能な論理要素をそれぞれが含む第１および第２のパイプライン・ステージを含む、複数のパイプライン・ステージを含む、第１のパイプライン電子プロセッサ・デバイスを設計することであって、各パイプライン・ステージがダウンストリーム・パイプライン・ステージに情報を供給する、設計することと、所定の条件下でクロック・ゲーティング可能な選択論理要素を指定するシミュレーション結果を決定するために、第１のパイプライン電子デバイスの動作をシミュレートすることと、電力節約を達成するためにシミュレーション結果に基づいて選択論理要素をクロック・ゲーティングする、第２のパイプライン電子デバイスを形成するように、第１のパイプライン電子デバイスを修正することを含む、パイプライン電子デバイスの設計方法も提供される。
【００１２】
添付の図面は本発明の例示的諸実施形態のみを示し、本発明の概念は他の等しく効果的な諸実施形態に役立つため、その範囲を限定するものではない。
【図面の簡単な説明】
【００１３】
【図１】クロック・ゲーティングのための機会を実証する電子回路を示すブロック図である。
【図２】電子回路内で使用するためのクロック・ゲーティング技術を示す図である。
【図３】クロック・ゲーティング方法の効果的な使用を実証する、パイプライン電子回路を示すブロック図である。
【図４】開示されたクロック・ゲーティング方法を示す流れ図である。
【図５】開示されたクロック・ゲーティング設計改良方法を示す流れ図である。
【図６】開示されたクロック・ゲーティング方法を使用する情報処理システムを示すブロック図である。
【発明を実施するための形態】
【００１４】
プロセッサ内で、クロック・ゲーティングは有効電力消費を削減するための機会を提供する。クロック・ゲーティング論理を設計または生成するための基本的な方法は、特定クロック・サイクルに対するクロック信号を必要としないそれぞれのラッチへの、特定クロック・サイクルに対するクロック信号をブロックすることである。特定クロック・サイクルに対するラッチの状態が変化しない場合、その特定クロック・サイクルに対するそのラッチへのクロック信号を送信する必要はない。「クロック・ゲーティング」またはラッチへのクロック信号のブロックにより、ラッチはクロックのラッチまたはトグル状態を通過しない。したがってラッチは、クロック・ゲーティングが存在しなかった場合にそれ以外の方法でラッチが消費することになる電力を消費しない。各「クロック・ゲーティングされた」ラッチは、クロック・ゲーティングを介して特定クロック・サイクルに対してプロセッサが達成する全体の電力節約に寄与する。
【００１５】
クロック・ゲーティング機会を見つけるために統計的分析を利用する前述の手法は、プロセッサ内の総電力消費を削減する可能性があるが、これらの方法では、制約を課すこと、ならびに、パイプライン・システムおよびパイプライン電子回路が提供するクロック・ゲーティングのための機会を利用することが、できない可能性がある。
【００１６】
クロック・ゲーティング機会を識別するための手法の１つが、２００６年４月２５日付けで出願し、同じ譲受人に譲渡された、発明者Chaudhry等による「Method And Apparatus In Locating Clock GatingOpportunities Within A Very Large Scale Integration Chip Design」という名称の係属中の米国特許出願第１１／３８０１２６号（整理番号AUS920050826US1）に開示されている。
【００１７】
クロック・ゲーティング機会を理解する基本的な方法の１つは、ラッチまたはラッチ・グループの出力が、クロック遷移中またはクロック・サイクル中に変化しないというシナリオを、考慮することである。通常これは、ラッチへのデータ入力が依然として静的状態にあり、同様に、クロック遷移中にラッチの出力が依然として定常状態にあることの結果である。他のクロック・ゲーティング機会は、特定のクロック・サイクル中に、ラッチの出力データがラッチの現在の入力データに等しいというシナリオである。この簡単明瞭なシナリオでは、別個のクロック・ゲーティング論理が、ラッチの出力状態にいかなる変化もなしに、ラッチへのクロック信号をブロック、除去、またはそうでなければキャンセルすることができる。こうした「クロック・ゲーティング」されたラッチは、その状態を変更しようとはしない。このため、そのラッチの電力消費はそうでない場合よりも少ない。
【００１８】
図１を見るとわかるように、従来の論理回路１００は、クロック・ゲーティング機会回路１１０、すなわちこの特定の例ではラッチ１２０を含む。論理回路１００内で、ラッチ１２０および１４０は、たとえばＡＮＤゲート１３５などの別個の組み合わせ論理１３０を介して、データ出力信号を提供する他のラッチ１５０に接続される。一実施形態では、論理回路１００は、より大きくより複雑な論理回路（図示せず）の一部を表すことができる。たとえば、論理回路１００は、プロセッサまたは他のデジタル論理回路の一部とすることができる。
【００１９】
ラッチ１２０は、データおよびクロック入力ならびにラッチング・データ出力信号を伴う、典型的なラッチ回路を表す。より具体的に言えば、他の回路論理（図示せず）からの入力データ信号ＤＡＴＡ１が、ラッチ１２０へのデータ入力を提供する。ある信号条件下で、ラッチ１２０はクロック・ゲーティングの候補である。言い換えれば、何らかの条件下で、ラッチ１２０をクロック・ゲーティングするための機会が存在する可能性がある。このため、図１に示されるように、「クロック・ゲーティング機会」回路１１０という用語が、ラッチ回路１２０に適用される。
【００２０】
信号ＤＡＴＡ３として示されるラッチ１２０の出力は、組み合わせ論理１３０の入力と、すなわちＡＮＤゲート１３５の２つの入力のうちの１つと、結合する。クロック信号ＣＬＫ１は、ラッチ１２０およびラッチ１４０にクロッキングを提供する。クロック回路（図示せず）は、論理回路１００を採用するプロセッサまたは他の電子回路内のマスタ・クロック信号から、ＣＬＫ１などの個々のクロック信号を生成することができる。ラッチ１４０は、他の機能論理（図示せず）から、データとしてＤＡＴＡ２信号を受信する。信号ＤＡＴＡ４で示されるラッチ１４０の出力は、組み合わせ論理１３０の他の入力と、すなわちＡＮＤゲート１３５の２つの入力のうちの２番目と、結合する。組み合わせ論理１３０は、ブール関数が回路分析の目的で表現可能な、任意の量の離散ゲートおよびトランジスタ論理を表す。組み合わせ論理１３０の出力、より具体的に言えばＡＮＤゲート１３５の出力は、信号ＤＡＴＡ５で示される、ラッチ１５０のデータ入力と結合する。ラッチ１５０は、クロック入力信号ＣＬＫ２を受信する。ラッチ１５０は、他のダウンストリーム機能論理（図示せず）に入力信号を提供する、出力信号ＤＡＴＡ６を生成する。
【００２１】
論理回路１００は、ある条件下でクロック・ゲーティングするための機会を提示する。以下の例がこうした条件の１つを示す。ラッチ１４０の出力でＤＡＴＡ４信号が論理ゼロ「０」を示す場合、対応するＡＮＤゲート１３５の入力は論理ゼロ「０」を示す。このシナリオでは、ブール代数により、ＡＮＤゲート１３５の出力も論理ゼロ「０」である（すなわち、ＤＡＴＡ５信号は論理ゼロ「０」を示す）。この例で、ラッチ１２０の出力信号ＤＡＴＡ３は、その論理状態（すなわち１または０）にかかわらず、ＡＮＤゲート１３５の出力信号ＤＡＴＡ５にいかなる影響も与えない。ラッチ１２０の出力状態の分析は、ラッチ１２０の状態を「関与なし（do not care）」（ＤＮＣ）条件とみなす可能性がある。次の順次論理機能、すなわちこの特定例ではラッチ１５０の場合、ラッチ１２０の状態は関係ない。さらに、同様に典型的なクロック・サイクルを示す上記例の状態の場合、ラッチ１２０は、その特定クロック・サイクル中のクロック・ゲーティングのための同一の機会を示す。ラッチ１２０がクロック・ゲーティングのための機会を提供するこれらの条件下で、ラッチ１２０に対する適切な代替名は、クロック・ゲーティング機会回路１１０である。
【００２２】
図２は、論理回路１００内のクロック・ゲーティング機会回路１１０と結合する、代表的な従来のクロック・ゲーティング回路２００を示すブロック図である。便宜上、図２は、論理回路１００全体を反復せず、クロック・ゲーティング機会回路１１０およびそのラッチ１２０のみを示す。クロック・ゲーティング機会の分析により、回路設計者は、クロック・ゲーティング論理回路２１０などのクロック・ゲーティング論理を、プロセッサなどの電子回路に組み込むことができる。「クロック・ゲーティング」は、ラッチまたはラッチ・グループなどの論理コンポーネントへのクロック信号の伝搬をブロックする、通常はＡＮＤまたはＮＡＮＤゲートあるいは他の論理回路である、回路を利用する方法である。回路設計者は、クロック・ゲーティング論理２１０を使用して、クロックがクロック・ゲーティング機会回路１１０の機能にいかなる影響も与えないという所定の条件下で、特定ラッチへのクロック信号の伝搬をブロックする。これら所定の条件が存在する場合、クロック・ゲーティング回路の動作により、クロック信号は事実上ラッチに到達しない。
【００２３】
信号ＣＧ１として示されるクロック・ゲーティング論理２１０の出力は、ＡＮＤゲート２２０の２つの入力のうちの１つと結合する。ＡＮＤゲート２２０の残りの入力は、電子回路（図示せず）の他の機能論理から、クロック信号ＣＬＫ１入力を受信する。信号ＣＧ１をＡＮＤゲート２２０への入力として使用することにより、クロック・ゲーティング論理２１０は、クロック・ゲーティングが適切な一定条件下でＣＬＫ１信号を効果的にブロックすることができるハードウェア・コンポーネントを提供する。クロック・ゲーティング論理２１０の出力信号ＣＧ１が論理ゼロ「０」を示す場合、ＡＮＤゲート２２０は、信号ＣＬＫ１からの入力状態にかかわらず、論理ゼロ「０」の出力信号を生成する。ＡＮＤゲート２２０の出力は、クロック・ゲーティング機会回路１１０内のラッチ１２０のクロック入力と結合する。クロック・ゲーティング論理２１０が、論理ゼロ「０」状態を示すＣＧ１信号を出力する場合、ラッチ１２０への入力データ信号、すなわちＤＡＴＡ１は、ラッチ１２０に対して影響を及ぼさないため、「関与なし」ＤＮＣ入力を構築する。より具体的に言えば、ラッチ１２０は、データ信号ＤＡＴＡ１として示される入力データをクロッキングしないことになる。この条件で、ラッチ１２０は、次の順次論理回路（図示せず）へと流れるラッチ出力信号ＤＡＴＡ３を変化させない。さらにラッチ１２０は、遷移状態を生成しないため、遷移ラッチ状態電力を消費しないことになる。しかしながら、クロック・ゲーティング論理２１０の出力信号ＣＧ１が論理「１」を示す場合、ＡＮＤゲート２２０は、クロック信号ＣＬＫ１の状態をラッチ１２０のクロック入力へと渡すことになる。このシナリオでは、クロック・ゲーティング論理２１０はラッチ１２０を「クロック・ゲーティング」または干渉しない。
【００２４】
図２の例における手法は、以下で説明するような複数のパイプライン式ステージを含む複雑なプロセッサ・アーキテクチャでのクロック・ゲーティングを考慮の対象としない。クロック・ゲーティング機会は、複雑なパイプライン・アーキテクチャ内に存在する。電子回路のシミュレーションおよび電子回路内の信号ノードの分析が、クロック・ゲーティング機会を識別するための１つの方法を示す。信号ノードは、ブール論理として表すことが可能な関数間の接続点を示す、回路のシミュレーション・モデルにおける別個のトレースまたは接続である。電子回路のシミュレーションは、相互接続されたノードとブール論理関数ブロックとの集まりとみなすことができる。以下に開示された例示的方法の一実施形態は、シミュレーション・モデルにおけるデータの実作業負荷シミュレーションを生成すること、ならびに、シミュレーション・モデルを実回路としての信号状態でまったく同様に動作させることを含む。一実施形態では、シミュレーション・モデルおよびプログラムが、実作業負荷状態でシミュレーションを動作させ、クロック・ゲーティング機会について信号ノードを監視する。
【００２５】
図３は、プロセッサなどのパイプライン電子回路３００においてクロック・ゲーティング機会を検出する開示された方法を実証する、パイプライン設計を示す。パイプライン電子回路３００は、より大きなパイプライン回路（図示せず）の一部を表す。パイプライン電子回路３００は、複数のステージ、すなわち代表的なパイプライン・ステージＳＴＡＧＥ  ０、ＳＴＡＧＥ  １、ＳＴＡＧＥ  ２、およびＳＴＡＧＥ  ３を含み、そのうちのＳＴＡＧＥ  １およびＳＴＡＧＥ  ２がより詳細に示されている。ＳＴＡＧＥ  ０の出力データは、ＳＴＡＧＥ  １に入力データを提供する。ＳＴＡＧＥ  １の出力データは、ＳＴＡＧＥ  ２に入力データを提供し、さらにパイプライン電子回路３００のダウンストリーム・ステージへと続く。この特定の実施形態では、ＳＴＡＧＥ  １はＳＴＡＧＥ  ２に対してアップストリームであり、これは、データがＳＴＡＧＥ  １からＳＴＡＧＥ  ２へとダウンストリーム方向へ流れることを意味する。
【００２６】
図３のパイプライン電子回路３００は、たとえばＳＴＡＧＥ  １およびＳＴＡＧＥ  ２などのパイプライン・ステージの回路にマスタ・クロック信号（ＣＬＫ）を提供する、マスタ・クロック回路３０２を含む。クロック回路３０２は、クロック・ゲーティング回路３０５（Ａ１）、クロック・ゲーティング回路３０５（Ｂ１）等々、ＳＴＡＧＥ  １のクロック・ゲーティング回路３０５（Ｍ１）までと結合し、これにＣＬＫ信号を提供する。たとえば３０５（Ａ１）などの各クロック・ゲーティング回路の第２の英数表現、すなわち「１」は、その回路が常駐するパイプライン・ステージ番号を表す。クロック回路３０２は、クロック・ゲーティング回路３０５（Ａ２）、クロック・ゲーティング回路３０５（Ｂ２）、およびＳＴＡＧＥ  ２のクロック・ゲーティング回路３０５（Ｎ２）へも結合し、これにＣＬＫ信号を提供する。クロック・ゲーティング回路３０５（Ａ１）は、パイプライン電子回路３００のＳＴＡＧＥ  １のラッチＡ１（３１０）のクロック入力と結合する。図３では、各ラッチに関する第２の英数表現は、ラッチのステージ番号位置を示す。たとえば、ラッチＡ１という表現は、図３のパイプライン電子回路のステージ１を表す第２の英数値「１」を示す。クロック・ゲーティング回路３０５（Ｂ１）は、ＳＴＡＧＥ  １のラッチＢ１（３２０）のクロック入力と結合する。クロック・ゲーティング回路３０５（Ｍ１）は、ＳＴＡＧＥ  １のラッチＭ１（３３０）のクロック入力と結合する。クロック・ゲーティング回路３０５（Ａ２）は、パイプライン電子回路３００のＳＴＡＧＥ  ２のラッチＡ２（３５０）のクロック入力と結合する。クロック・ゲーティング回路３０５（Ｂ２）は、ＳＴＡＧＥ  ２のラッチＢ２（３６０）のクロック入力と結合する。クロック・ゲーティング回路３０５（Ｎ２）は、ＳＴＡＧＥ  ２のラッチＮ２（３７０）のクロック入力と結合する。パイプライン電子回路３００は、順次アーキテクチャを示す。言い換えれば、データは、パイプライン・ステージからパイプライン・ステージへと、マスタ・クロック信号ＣＬＫと共に、ロック・ステップ内のラッチおよび論理素子を通じて流れる。データは、クロック信号ＣＬＫが代表的なクロック・サイクルＮから次のクロック・サイクルＮ＋１へと進むにつれて、ステージからステージへと移動する。
【００２７】
以下の考察では、クロック・サイクルに関してパイプライン電子回路３００を通るデータの流れを説明する。たとえば、ＳＴＡＧＥ  ０から、ＳＴＡＧＥ  １のラッチＡ１（３１０）へのデータ入力が、クロック・サイクルＮでラッチＡ１（３１０）を通じてクロッキングする場合、ＳＴＡＧＥ  １のラッチＡ１は、そのクロック・サイクルＮ中にそのデータの値を格納する。しかしながら、次のクロック・サイクルＮ＋１では、ＳＴＡＧＥ  ２のラッチＡ２（３５０）は、ラッチＡ１データに関する論理回路３４０の動作の結果を格納する。したがってクロック・サイクルＮ＋１では、ＳＴＡＧＥ  １のラッチＡ１からＳＴＡＧＥ  ２のラッチＡ２へとデータが流れる。次にラッチＡ２はそのデータを格納する。このようにデータは、１つのクロック・サイクルから次のクロック・サイクルへとパイプライン式で、ＳＴＡＧＥ  １などのアップストリーム・ステージから、ＳＴＡＧＥ  ２などのダウンストリーム・ステージへと移動する。図３で下方を指示する矢印は、電子回路３００のパイプライン・ステージを通過する、このアップストリームからダウンストリームへのデータ流れを示す。
【００２８】
より詳細には、パイプラインＳＴＡＧＥ  ０からのデータは、ＳＴＡＧＥ  １のラッチＡ１の入力へとダウンストリーム方向に流れ、パイプラインＳＴＡＧＥ  ０からのデータは、ラッチＢ１の入力へもダウンストリーム方向に流れる。パイプライン電子回路３００の各ステージは、複数のラッチを備えたパイプライン論理を含む。たとえば、ＳＴＡＧＥ  １は、ラッチＡ１（３１０）、ラッチＢ１（３２０）、．．．ラッチＭ１（３３０）を含む。ラッチＭ１（３３０）は、パイプライン電子回路３００のＳＴＡＧＥ  １における任意の複数のラッチ「Ｍ」を表す。ラッチＡ１（３１０）の出力は、図に示されるように、論理回路３４０および論理回路３４５の両方の入力と結合する。論理回路３４０および論理回路３４５はどちらも、動作およびシミュレーションのためのブール関数として表現可能な、任意の量の組み合わせ論理を表す。パイプライン電子回路３００のＳＴＡＧＥ  １のラッチＢ１（３２０）の出力は、論理回路３４５の入力と結合する。実際には、パイプラインのＳＴＡＧＥ  １は、図に示されたよりも多くの論理素子を含むことができる。
【００２９】
ＳＴＡＧＥ  １の論理回路３４０の出力は、パイプライン回路のＳＴＡＧＥ  ２におけるラッチＡ２（３５０）の入力と結合する。ＳＴＡＧＥ  １の論理回路３４５の出力は、ＳＴＡＧＥ  ２におけるラッチＢ２（３６０）の入力と結合する。実際には、ＳＴＡＧＥ  ２は図に示されたよりも多くのラッチを含むことができる。たとえばＳＴＡＧＥ  ２は、ラッチＡ２（３５０）、ラッチＢ２（３６０）、．．．ラッチＮ２（３７０）を含む。ラッチＮ２（３７０）は、パイプライン電子回路３００のＳＴＡＧＥ  ２における任意の複数のラッチ「Ｎ」を表す。ラッチＡ２の出力は、論理回路３７２の入力と結合する。ラッチＢ２の出力は、論理回路３７４の入力と結合する。論理回路３７２および３７４の出力は、パイプライン電子回路内の次のダウンストリーム・ステージ、すなわちＳＴＡＧＥ  ３のラッチ（図示せず）の入力と結合する。実際には、パイプライン電子回路３００は、図３の代表的な回路に示されたよりも多くのステージを含むことができる。
【００３０】
図３は、開示された方法に従って、パイプライン式のステージに対してクロック・ゲーティングが可能ないくつかの条件を実証するための、パイプライン電子回路３００を示す。以下の表１は、図３に示されたようなパイプライン式環境にクロック・ゲーティング機会が存在する、代表的な５つのケースを示す。
【表１】
2010537293.tif 000003
【００３１】
表１の第１のケースまたはシナリオでは、クロック・ゲーティング回路３０５（Ａ１）がクロック・サイクルＮ中にラッチＡ１（３１０）をクロック・ゲーティングするか、あるいは、ラッチＡ１が格納する論理状態または値が、クロック・サイクルＮで変更されない場合、クロック・ゲーティング回路３０５（Ａ２）は、次のクロック・サイクルＮ＋１でラッチＡ２（３５０）を潜在的にクロック・ゲーティングする可能性がある。このシナリオでは、ラッチＡ１は、パイプライン回路ステージを通るデータ流れのいかなる変化も示さず、結果として、ラッチＡ１は機能する必要がない。ラッチＡ１の状態が現在のクロック・サイクル中のダウンストリーム機能とは無関係であるため、ラッチＡ１の条件は「関与なし」（ＤＮＣ）条件である。このため、クロック・ゲーティング回路３０５（Ａ１）は、その現在の状態で、ラッチＡ１をクロック・ゲーティングするかまたは実質上保持することができる。
【００３２】
表１の第２のケースまたはシナリオでは、クロック・サイクルＮ中に、クロック・ゲーティング回路３０５（Ａ１）がラッチＡ１（３１０）をクロック・ゲーティングし、クロック・ゲーティング回路３０５（Ｂ１）がラッチＢ１（３２０）をクロック・ゲーティングする場合、次のクロック・サイクルＮ＋１で、クロック・ゲーティング回路３０５（Ａ２）および３０５（Ｂ２）は、それぞれ、ラッチＡ２（３５０）およびラッチＢ２（３６０）をクロック・ゲーティングする可能性がある。これは、クロック・ゲーティングされたラッチＡ１およびＢ１の状態または値が、ダウンストリーム・ラッチＡ２およびＢ２の見地から、クロック・サイクルＮ＋１に対して「関与なし」（ＤＮＣ）であるためである。
【００３３】
表１の第３のケースまたはシナリオでは、ラッチＢ２（３６０）の値がクロック・サイクルＮ＋１で変更されない場合、クロック・ゲーティング回路３０５（Ｂ１）は、クロック・サイクルＮでラッチＢ１（３２０）をクロック・ゲーティングする可能性がある。これは、クロック・サイクルＮでのラッチＢ１の出力が、クロック・サイクルＮ＋１でのラッチＢ２の出力値に影響を与えないためである。同様に、表１の第４のケースまたはシナリオでは、ラッチＡ２（３５０）の値がクロック・サイクルＮ＋１で変更されない場合、クロック・ゲーティング回路３０５（Ａ１）は、クロック・サイクルＮでラッチＡ１（３１０）をクロック・ゲーティングする可能性がある。これは、クロック・サイクルＮでのラッチＡ１の出力が、クロック・サイクルＮ＋１でのラッチＡ２の出力値に影響を与えないためである。
【００３４】
表１の第５のケースは、ラッチＡ２（３５０）およびラッチＢ２（３６０）の両方が、クロック・サイクルＮ＋１での論理状態または出力値を変更しないか、あるいは、ラッチＡ２およびＢ２の両方がクロック・ゲーティングを示すというシナリオを示す。言い換えれば、クロック・ゲーティング回路３０５（Ａ２）およびクロック・ゲーティング回路３０５（Ｂ２）は、それぞれ、クロック・サイクルＮ＋１中にラッチＡ２およびＢ２をクロック・ゲーティングする。このシナリオでは、クロック・サイクルＮ中のラッチＡ１およびＢ１の両方の出力が、クロック・サイクルＮ＋１におけるラッチＡ２およびラッチＢ２に影響を与えないことを示すため、ラッチＡ１およびＢ１の両方が、クロック・サイクルＮにおけるクロック・ゲーティングの潜在的候補である。クロック・ゲーティング機会を認識するために、図１のラッチ論理を通るアップストリームおよびダウンストリームの両方を調べる機能によって、このパイプライン回路設計における大幅な電力削減を可能にする。たとえば図３で、ラッチＡ２およびＢ２のダウンストリーム状態を、クロック・サイクルＮ中のアップストリーム・ラッチＡ１およびＢ１に関するものと評価することで、クロック・ゲーティング機会を評価するためのデータが提供される。
【００３５】
電子回路設計では、設計者は、特定の論理回路をネット・リストとして表すことができる。パイプライン電子回路３００などの論理回路のケースでは、設計者は、手操作またはコンピュータの支援によって、電子回路３００の属性および接続を記述したネット・リスト３７５を生成する。ネット・リスト３７５は、電子回路３００のパイプラインの関数論理およびパイプライン・ステージを表す、接続および論理関数のリストである。設計者またはその他の者は、従来のネット・リスト生成技法を採用してネット・リスト３７５を生成することができる。ネット・リスト３７５は、パイプライン電子回路３００を記述するネット・リスト・データを含む。このネット・リスト・データは、図３に示されるようにシミュレータ３８０への入力である。シミュレータ３８０は、ネット・リスト３７５のネット・リスト・データを使用して、パイプライン電子回路３００の様々なステージおよびコンポーネントの動作を代表するソフトウェア・シミュレーション・モデル３８２を生成する。パイプライン電子回路３００のシミュレーション・モデル３８２は、パイプライン電子回路３００の各ステージの、各相互接続のノードおよび機能論理コンポーネントまたは回路のソフトウェア・モデルを表す。シミュレータ３８０は、クロック信号入力、データ信号入力、入力データ・バス、およびパイプライン電子回路３００の他の入力信号を含む、ソフトウェア内の各入力ノードをシミュレートすることができる。シミュレーション・モデル３８２は、パイプライン電子回路３００のクロック・サイクルあたりの各ノードに関するブール式のシミュレーションおよび分析のためのツールを提供する。シミュレータ３８０はシミュレーション・プログラム３８５を含む。一実施形態では、シミュレーション・プログラム３８５は、トポグラフィ（topography）・プログラム３９２、最適化プログラム３９４、および作業負荷シミュレーション・プログラムを含む。シミュレータ３８０は、パイプライン電子回路３００のシミュレーション・サポートのための他のプログラム（図示せず）を含むことができる。
【００３６】
シミュレータ３８０は、トポグラフィ・プログラム３９２を実行し、パイプライン電子回路１００におけるクロック・ゲーティング機会意思決定プロセスで使用するために含める、物理パラメータを提供する。トポグラフィ・プログラム３９２は、この意思決定プロセスでトポグラフィ・データを採用することができる。トポグラフィ・データは、接続トレース幅、相互接続のトレース長さ、論理回路機能の離散的トランジスタの物理的近接、およびパイプライン電子回路３００の他の有用な回路設計パラメータを、含むことができる。シミュレータ３８０は、シミュレーション・モデル３８２の複雑さを低減させるため、および、回路３００内のクロック・ゲーティング機会の識別をさらに支援するために、最適化プログラム３９４を実行することができる。最適化プログラム３９４は、ラッチおよび論理関数の組み合わせがクロック・ゲーティング機会の検出または回路設計の機能に影響を与えない場合、こうした組み合わせによって、シミュレーション・モデル３８２の複雑さを低減させる。たとえば最適化プログラム３９４は、複数のラッチをシミュレーションのみのために単一ラッチに組み合わせるかまたはグループ化することが可能であり、こうしたラッチ・グループは、同じソースからクロックおよびデータ信号を受信する。
【００３７】
上記図３に示されるようなパイプライン電子回路にソフトウェア・シミュレーション・プログラム３８５を適用すること、およびそこに表１のクロック・ゲーティング・シナリオを適用することによって、システム・シミュレータ３８０は、回路３００内でクロック・ゲーティング機会のより正確かつ包括的な表現を展開することができる。図３および表１に例示されたクロック・ゲーティング機会を識別するための上記方法は、複雑なパイプライン設計に適切である。パイプライン電子回路３００のラッチ論理の図示されていない追加のステージを考慮に入れることによって、シミュレータ３８０がより多くのデータ・ノードを利用することができる。より多くのデータ・ノードは、シミュレーション・プログラム３８５の実行中に追加の読み取りデータをシミュレータ３８０に提供する。また、パイプライン回路の各ステージにおいてＮ＋２、Ｎ＋３などのようなより多くのクロック・サイクルを考慮に入れることによっても、シミュレータ３８０がより多くのデータを利用することができる。利用可能なより多くのデータを備えたシミュレータ３８０は、表１の代表的なクロック・ゲーティング・シナリオなどの本明細書の教示を使用することにより、より正確かつ現実的なクロック・ゲーティング機会を突き止めることができる。
【００３８】
手操作で実行された場合、上記の例でクロック・ゲーティングの機会を見つけることは、退屈な時間のかかるタスクである。そのため図３は、表１のシナリオに従って、パイプライン電子回路３００ならびに作業負荷環境の両方をシミュレーションするための、シミュレータ３８０を含む。一実施形態では、シミュレータ３８０は、レジスタ転送レベル（ＲＴＬ）言語を使用してパイプライン電子回路３００のシミュレーション・モデル３８２を生成する。ＲＴＬは、デジタル電子回路を定義するための高水準記述言語である。ＲＴＬモデルは、ラッチおよびブール論理式のソフトウェア集合として電子回路を記述する。モデル上で真の作業負荷を実行すること、すなわち実際の代表的データをシミュレーション・モデル３８２の入力ノードに入力することによって、作業負荷シミュレーション・プログラム３９６は、シミュレータ３８０内の各ノードで実際の回路結果を読み取る。シミュレーション・モデル３８２のステージごとに各ノードの結果を分析することによって、作業負荷シミュレーション・プログラム３９６は、表１のシナリオと整合したクロック・ゲーティング機会の集合を生成する。シミュレータ３８０は、クロック・ゲーティング機会の結果を分析し、表１のそれなどのシナリオおよび他の基準ごとにデータを編成することができる。シミュレータ３８０は、分析用にこのデータをエンド・ユーザまたは設計者に提示することができる。これらの結果は、電子回路の再設計または今後の設計に有用な可能性がある。
【００３９】
クロック・ゲーティングのオンまたはオフを切り替える機能は、パイプライン電子回路３００におけるクロック・ゲーティング論理の有用な機能を示す。エンド・ユーザは、パイプライン電子回路の論理機能に影響を与えることなく、クロック・ゲーティング論理全体の使用不可化を希望する場合がある。クロック・ゲーティング回路の使用不可化は、クロック・ゲーティングが提供する電力節約と同時に、回路の電力消費を増加させる効果がある。クロック・ゲーティング論理の使用不可化は、クロック・ゲーティングの影響なしに、パイプライン電子回路３００をテストするメカニズムを提供する。パイプライン電子回路３００は、ＣＧＥ信号をそれぞれのパイプライン・ステージに提供する、マスタ・クロック・ゲーティング使用可能化（ＣＧＥ）回路３０８を含む。クロック・ゲーティング使用可能化（ＣＧＥ）回路３０８は、ＳＴＡＧＥ  １のクロック・ゲーティング回路３０５（Ａ１）、３０５（Ｂ１）、および３０５（Ｍ１）と結合し、それらにクロック・ゲーティング使用可能化信号を提供する。クロック・ゲーティング使用可能化ＣＧＥ信号は、パイプライン電子回路３００を通じてクロック・ゲーティングを使用可能にするために１つの論理状態を示すこと、および回路３００を通じてクロック・ゲーティングを使用不可にするために反対の論理状態を示すことが可能である。ＣＧＥ回路３０８は、ＳＴＡＧＥ  ２のクロック・ゲーティング回路３０５（Ａ２）、３０５（Ｂ２）、および３０５（Ｎ２）と結合し、それらにクロック・ゲーティング使用可能化信号を提供する。図３は、複数のステージおよび複数のラッチおよび組み合わせ論理を含む、代表的なパイプライン電子回路３００を示す。パイプライン電子回路３００は、より大きく複雑な回路の一部などの、多くの形を取ることが可能である。たとえば、パイプライン電子回路３００は、デスクトップ・コンピュータ、ノートブック・コンピュータ、サーバ、あるいは、他のフォーム・ファクタ・コンピュータまたはデータ処理システム内の、プロセッサの形を取ることができる。パイプライン電子回路は、ゲーム・デバイス、携帯情報端末（ＰＤＡ）、通信デバイス、または、パイプライン・システム・アーキテクチャを含む任意の他のデバイスなどの、他のフォーム・ファクタを取ることができる。
【００４０】
図４は、開示されたクロック・ゲーティング機会プロセスの一実施形態に関する、設計および動作方法を示す流れ図である。プロセス流れは、開始ブロック４０５から始まる。回路設計者は、パイプライン電子回路設計ブロック４１０に従って、複数のパイプライン・ステージを含むパイプライン電子回路を設計する。設計者は、ブロック４１２に従って、論理回路、接続、ノード、および、他のパイプライン電子回路を記述する情報を含む、複数のパイプライン・ステージを記述するネット・リストを生成するために、従来の技法を使用することができる。たとえば設計者は、こうしたネット・リストを、時間のかかる手動プロセスによって、またはネット・リスト生成ツールを備えたコンピュータ支援によって、生成することができる。一実施形態では、シミュレータ３８０は、レジスタ転送レベル（ＲＴＬ）言語プログラミングを使用することによって、シミュレーション・モデル３８２を生成する。より具体的に言えば、シミュレータ３８０は、ネット・リストを、ラッチおよび、パイプライン電子回路３００に対応してこれを表す相互接続のブール表現可能な論理関数の、ソフトウェア・シミュレーションに変換する。シミュレータ３８０は、シミュレーション・モデル展開ブロック４１５に従って、ネット・リストからシミュレーション・モデル３８２を展開する。シミュレータ３８０は、ブロック４２０に従って、特定のパイプライン電子回路３００に関するトポグラフィ・データを展開するために、トポグラフィ・プログラム３９２などのシミュレーション・プログラム３８５を実行する。トポグラフィの結果は、以下のクロック・ゲーティング機会を識別するための最終意思決定基準の一部として使用するために、シミュレータ３８０内に残留する。シミュレータ３８０は、ブロック４２５に従って、シミュレータ３８０が分析するデータの量を削減するために、最適化プログラム３９４などのシミュレーション・プログラム３８５も実行する。一実施形態では、現行のシミュレーション・モデル３８２を最適化することで、図４に示されたすべての後続のシミュレータ３８０のプロセスに関して、ソフトウェア・シミュレーション・モデル３８２に対する強化機能を生成する。
【００４１】
シミュレータ３８０は、ブロック４３０に従って、実世界作業負荷のデジタル１および０のデータを備えた、作業負荷シミュレーション・プログラム３９６などのシミュレーション・プログラム３８５も実行する。パイプライン電子回路３００シミュレーションを通じて実作業負荷をシミュレーションすることによって、より現実的な結果、すなわちパイプライン電子回路３００の観察可能クロック・ゲーティング機会が、シミュレータ３８０によって観察可能である。シミュレータ３８０は、ブロック４３５に従って、表１に示されたケースなどの条件付イベントに関して内部ノードを探査することによって、これらのクロック・ゲーティング機会を読み取る。表１のケース１〜５は、それぞれ、クロック・ゲーティング機会がパイプライン電子回路３００内に存在することをシミュレータ３８０が識別できる条件を表す。たとえば、作業負荷シミュレーション・プログラム３９６を実行するシミュレータ３８０は、ＳＴＡＧＥ  １内のラッチＡ１またはラッチＡ１およびＢ１のグループを、表１のケース１〜５の下でクロック・ゲーティング機会を示すものとして識別する。シミュレータ３８０は、ラッチＡ１または、ＳＴＡＧＥ  １内のラッチＭ１の任意のグループ組み合わせを、表１のケース１〜５のうちの１つの下でクロック・ゲーティング機会を示すものとして識別することができる。クロック・ゲーティング機会は次の動作に進み、ここでシミュレータ３８０は、クロック・ゲーティング機会ケース発見の意思決定ブロック４４０に従って、クロック・ゲーティング機会を示すケース１〜５のうちの１つをプロセスが発見したかどうかを検証する。シミュレータ３８０が、パイプライン・ステージ内の特定のコンポーネントが、表１のケース１〜５のうちの１つに対応するクロック・ゲーティング機会を示すことを発見した場合、「ＣＡＳＥ（Ｓ）  ＦＯＵＮＤ」が得られるため、プロセス流れはケース重み付けブロック４４５へと進む。シミュレータ３８０は、ブロック４４５に従って、現時点で発見された、クロック・ゲーティング機会を示す各ケースに重みを印加する。ケースの重み付けによって、どのクロック・ゲーティング機会が他より多くの電力節約を与えるかを決定するための方法が提供される。電力節約の多いクロック・ゲーティング機会が、電力節約の可能性が少ないクロック・ゲーティング機会よりも、高位にランク付けされる。以下で考察する決定基準が、各特定ケースが受け取る特定の重みを決定する。
【００４２】
ケース重み付けは、特定カテゴリのクロック・ゲーティング機会が、他のクロック・ゲーティング機会よりも多くの回路設計改良のための機会を示す、開示された方法の一態様である。たとえば、シミュレータ３８０がクロック・ゲーティング機会のソースとして検出する、クロック・ゲーティングされたラッチ・タイプは、シミュレータ３８０が「関与なし」（ＤＮＣ）タイプのクロック・ゲーティング機会として検出するラッチよりも、価値が高い。この価値付けすなわち重み付けの理由は、クロック・ゲーティングされたラッチ・タイプは高度に予測可能であり、クロック・ゲーティング回路は常時存在するためである。ラッチが「関与なし」ＤＮＣタイプのクロック・ゲーティング機会を示すケースでは、クロック・ゲーティング機会は、他のクロック・サイクルではクロック・ゲーティング機会を示さない可能性がある。すなわち、クロック・サイクルＮ＋１、Ｎ＋２、等々は、非ＤＮＣクロック・ゲーティング機会を示す可能性がある。シミュレータ３８０は、以下の表２に示されるように、特定の重み値を各クロック・ゲーティング機会タイプに割り当てる。
【表２】
2010537293.tif 000004
【００４３】
上記表２に示されるように、カテゴリ「Ａ」は、高い重み付けすなわち「Ｈ」値を示す、特定ステージ内の共通クロック・ゲーティング機会を示す複数のラッチを表す。クロック・ゲーティング機会を示す特定ステージ内のラッチ・グループは、同じ機会を示す単一ラッチよりも大きなケース重みを有する。複数ラッチのグループは、同量のクロック・ゲーティング機会を備えながら、より高い電力消費削減の可能性を表す。重み付けの他の例は、アップストリームまたはダウンストリームのクロック・ゲーティング機会のシミュレータ３８０分析である。クロック・ゲーティング機会が、シミュレーション・プログラム３８５のクロック・ゲーティング・ケース・データからダウンストリーム方向に常駐する場合、表２のカテゴリ「Ｂ」に示されるように、ケース重みは大きく、このケースでは重み付けが高を示す「Ｈ」である。たとえばシミュレータ３８０は、特定のクロック・ゲーティング機会が他のクロック・ゲーティング機会のダウンストリーム方向にある場合、特定のクロック・ゲーティング機会に、他のクロック・ゲーティング機会よりも大きな重みを与える。これは、ダウンストリームのクロック・ゲーティング機会の方が予測しやすいためである。
【００４４】
関与なし（ＤＮＣ）クロック・ゲーティング機会に関して表２に示されるようなカテゴリ「Ｃ」の例は、「Ｍ」すなわち中程度の重み付け値を表す。シミュレータ３８０が決定するラッチは、関与なし状態を示すラッチが、上記表２の高位すなわち「Ｈ」値の格付けよりも機会値の少ない、クロック・ゲーティング機会とすることができる。値の重み付けの他の例が、最低のケース重み値「Ｌ」すなわち低を備える、変更なしラッチとして、カテゴリ「Ｄ」に示されている。シミュレータ３８０は、クロック・サイクルＮからクロック・サイクルＮ＋１へと状態変化を示さない、というよりむしろラッチ状態が変化しない、ラッチを検出する。重み値「Ｌ」すなわち低を有するアップストリームのクロック・ゲーティング機会として、さらに他の例がカテゴリ「Ｅ」として表２に示される。シミュレータ３８０が、現在のシミュレーション状態またはクロック・サイクルＮから見てアップストリームであるとして検出するクロック・ゲーティング機会は、表２の値のうちで最低のケース重み付け機会を表す。作業負荷シミュレーション・プログラム３９６を実行しているシミュレータ３８０が重み付け動作を完了すると、シミュレータ３８０は、ブロック４５０に従って、クロック・ゲーティング機会を重みによってログ記録する。
【００４５】
クロック・ゲーティング機会のログが完了するか、またはクロック・ゲーティング機会ケース発見の意思決定ブロック４４０が偽の結果を与えた場合、シミュレータ前進ブロック４５５に従って、シミュレータ３８０は次のクロック・サイクルに進む。シミュレータ３８０が１クロック・サイクルずつ、すなわちクロック・サイクルＮからクロック・サイクルＮ＋１へ、またその次へと前進すると、作業負荷シミュレータ・プログラム３９６は、クロック・ゲーティングに関する機会をコンパイルする。シミュレータ３８０がクロック・サイクルを数多く前進すればするほど、作業負荷シミュレータ・プログラム３９６は、パイプライン電子回路３００設計に関するクロック・ゲーティング機会を数多くログ記録することになる。特定のラッチに関するクロック・ゲーティング機会は、最初から最後まで図４のシミュレーション・プロセスからの全シミュレーション・データの組み合わせである。シミュレータ３８０は、１つのクロック・サイクルＮのラッチＡ１に関する特定のクロック・ゲーティング機会を発見することができる。しかしながら、設計者は、クロック・ゲーティング回路を設計する前に、全クロック・ゲーティング・データを検査する。すべてのクロック・ゲーティング機会と、ラッチとラッチ・グループとの間の相互接続論理との累積が、シミュレータ３８０の最終設計ガイドライン出力を構成する。
【００４６】
クロック・ゲーティング機会は、拡張的作業負荷シミュレーション・プログラム３９６を実行した後、より完全となり、より大きな値となる。たとえば、作業負荷シミュレーション・プログラム３９６は、作業負荷シミュレーション・プログラム３９６において初期にクロック・ゲーティング機会を示す、ラッチＡ１の出力データなどの、最下位データ・ビットを検出することができる。作業負荷シミュレーション・プログラム３９６は、ラッチＡ１のデータ出力に対するいかなる変更も検出せずに、シミュレーションの多くのクロック・サイクルを通過し、潜在的なクロック・ゲーティング機会を表１のケース１などのＤＮＣケースとしてログ記録することができる。多数のシミュレーション・クロック・サイクル後、ラッチＡ１のデータ出力はクロック・ゲーティングに良好な機会を表すことができる。しかしながら、ラッチＡ１は低位のデータ・ビットを表すため、最終的に作業負荷シミュレーション・プログラム中に、ビットが変更され、シミュレーション全体にわたってクロック・ゲーティングの候補資格に乏しい可能性がある。シミュレーションが初期に停止した場合、ビットはクロック・ゲーティング可能として現れる。しかしながら、作業負荷シミュレーション・プログラム３９６が多数のクロック・サイクルに対して実行された場合、ビットはトグル可能であり、そのラッチＡ１はもはやクロック・ゲーティングの候補ではない。シミュレーション・プログラム３８５が完了しない場合、意思決定ブロック４６０の結果は偽となり、シミュレータ３８０は、再度ブロック４３５に従って、条件に関して内部ノードを探査するために戻る。しかしながら、意思決定ブロック４６０の結果が肯定結果である場合、シミュレーションは完了し、シミュレータ３８０は、現在の設計に対する設計改良点として考慮するために、クロック・ゲーティング機会のすべての結果をログ記録する。シミュレーション動作は、終了ブロック４７０に従って完了する。
【００４７】
図５は、設計改良プロセスを表す流れ図である。流れは開始ブロック５１０から始まる。回路設計者は、ブロック５２０に従って、従来の回路設計の実践を使用して、パイプライン電子回路３００の初期または予備のバージョンを設計する。ブロック５２０の初期または予備の電子回路設計が完了した後、シミュレータ３８０は、ブロック５３０に従って、本明細書で教示されるように、パイプライン電子回路３００の予備バージョンのシミュレーションを完了するために、トポグラフィ、最適化、および作業負荷のシミュレーション・プログラム３８５を実行する。シミュレータ３８０プロセスの結果は、ケースによる、重みによる、ラッチによる、またはラッチのグループ化による、あるいは、クロック・ゲーティングを通じた設計変更機会への有用な入力を表す任意の他の基準による、データの編成とすることが可能な、クロック・ゲーティング機会のログである。シミュレーション・プロセスは、ブロック５４０に従って、クロック・ゲーティング機会のシミュレーション結果をログ記録する。回路設計者は、ブロック５５０に従って、クロック・ゲーティング実施のための最良の機会を識別するために、シミュレータ３８０の全結果を評価する。すべての結果を組み合わせること、およびクロック・ゲーティングから恩恵を得ることが可能なラッチまたはラッチ・グループを識別することによって、設計者は、パイプライン電子回路３００の設計を改良するために、離散的クロック・ゲーティング回路を使用して、初期または予備のパイプライン電子回路設計を修正することができる。したがって設計者は、ブロック５６０に従って、シミュレーション・プロセスの結果として生じる識別されたクロック・ゲーティング機会を利用することによって、修正されたパイプライン電子回路設計を生成することができる。したがって、修正されたパイプライン電子回路は、識別されたクロック・ゲーティング機会に対処するクロック・ゲーティング回路を介した電力消費削減を達成することができる。一例として、設計者は、シミュレーションの識別されたクロック・ゲーティング機会の結果を使用する、パイプライン電子回路３００のＳＴＡＧＥ  １の場合、クロック・ゲーティング回路３０５（Ａ１）、３０５（Ｂ１）、から３０５（Ｍ１）までなどの、クロック・ゲーティング回路を生成することができる。クロック・ゲーティング回路は、ケースの表１に従った任意のケースの組み合わせを表す。設計者は、パイプライン電子回路３００のＳＴＡＧＥ  ２の場合、クロック・ゲーティング回路３０５（Ａ２）、３０５（Ｂ２）、から３０５（Ｎ２）までなどの、クロック・ゲーティング回路を生成することができる。改良プロセスは、終了ブロック５７０に従った完了する。このようにして、設計者は、パイプライン電子回路３００の改良または修正された最終バージョンを提供する。
【００４８】
図６は、プロセッサ６０５を採用する代表的な情報処理システム（ＩＨＳ）６００の簡略化されたブロック図を示す。一実施形態では、プロセッサ６０５はパイプライン電子回路３００を含む。ＩＨＳ  ６００は、プロセッサ６０５をメモリ・コントローラ６１５およびビデオ・グラフィクス・コントローラ６２０に結合する、バス６１０をさらに含む。より具体的に言えば、図に示されるように、システム・メモリ・バス６３０はシステム・メモリ６３５と結合する。実際には、バス６１０は、たとえばメモリ・バスおよびＩ／Ｏバスなどの複数のバスを含むことができる。ディスプレイ６４０は、ビデオ・グラフィクス・コントローラ６２０と結合する。ハード・ディスク・ドライブ、ＣＤドライブ、ＤＶＤドライブ、または他の不揮発性ストレージなどの、不揮発性ストレージ６４５は、ＩＨＳ  ６００に永続的な情報のストレージを提供するために、バス６１０と結合する。キーボードおよびマウス・ポインティング・デバイスなどのＩ／Ｏデバイス６５０は、Ｉ／Ｏバス６５５およびＩ／Ｏコントローラ６６０を介してバス６１０と結合する。ＵＳＢ、ＩＥＥＥ  １３９４バス、ＡＴＡ、ＳＡＴＡ、ＰＣＩ、ＰＣＩＥ、および他のバスなどの、１つまたは複数の拡張バス６６５は、周辺装置およびデバイスのＩＨＳ  ６００への接続を容易にするために、バス６１０と結合する。
【００４９】
ネットワーク・インターフェース・アダプタ６７０は、ＩＨＳ  ６００を有線または無線でネットワークおよび他の情報処理システムに接続するために、バス６１０と結合する。図６は、プロセッサ６０５内でパイプライン電子回路３００を利用する１つのＩＨＳを示すが、ＩＨＳは他の形を取ることが可能である。たとえばＩＨＳ  ６００は、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、あるいは他のフォーム・ファクタ・コンピュータまたはデータ処理システムの形を取ることができる。ＩＨＳ  ６００は、ゲーム・デバイス、携帯情報端末（ＰＤＡ）、携帯電話デバイス、通信デバイス、あるいはプロセッサおよびメモリを含む他のデバイスなどの、他のフォーム・ファクタを取ることができる。
【００５０】
上記は、クロック・ゲーティング機会を識別することによって、パイプラインのステージにおける電力節約を実行可能にする、パイプライン電子回路および設計方法を開示するものである。一実施形態では、シミュレーション結果は、パイプライン電子回路の設計において設計者を支援し、シミュレーションが識別するクロック・ゲーティング機会位置で、パイプラインのステージの間にクロック・ゲーティング回路を組み込むことによって、電力節約を達成することができる。
【００５１】
当業者であれば、本発明の本説明に鑑みて、本発明の修正および代替の実施形態が明らかとなろう。したがって本説明は、本発明を実施する方法を当業者に教示し、単なる例示としてのみ解釈されるものと意図される。図示および説明された本発明の形が、諸実施形態を構成する。当業者であれば、諸部分の形状、サイズ、および配置構成において様々な変更が実施可能である。たとえば当業者であれば、本明細書に図示および説明された諸要素を等価の諸要素と交換することができる。さらに当業者であれば、本発明の説明から恩恵を受けた後に、本発明の範囲を逸脱することなく、本発明のある一定の機能を他の機能の使用とは独立に使用することができる。
【図１】
2010537293.tif 000005
【図２】
2010537293.tif 000006
【図３】
2010537293.tif 000007
【図４】
2010537293.tif 000008
【図５】
2010537293.tif 000009
【図６】
2010537293.tif 000010
【国際調査報告】
2010537293.tif 000011
2010537293.tif 000012