JP6746791B2 - クロックゲーティングイネーブルの生成 - Google Patents

クロックゲーティングイネーブルの生成 Download PDF

Info

Publication number
JP6746791B2
JP6746791B2 JP2019531294A JP2019531294A JP6746791B2 JP 6746791 B2 JP6746791 B2 JP 6746791B2 JP 2019531294 A JP2019531294 A JP 2019531294A JP 2019531294 A JP2019531294 A JP 2019531294A JP 6746791 B2 JP6746791 B2 JP 6746791B2
Authority
JP
Japan
Prior art keywords
clock
pipeline
clock signal
packets
counter
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
JP2019531294A
Other languages
English (en)
Other versions
JP2020513628A5 (ja
JP2020513628A (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2020513628A publication Critical patent/JP2020513628A/ja
Publication of JP2020513628A5 publication Critical patent/JP2020513628A5/ja
Application granted granted Critical
Publication of JP6746791B2 publication Critical patent/JP6746791B2/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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/04Clock gating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • 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)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Image Processing (AREA)
  • Information Transfer Systems (AREA)
  • Power Sources (AREA)

Description

[関連出願の相互参照]
[0001] 本願は、米国特許商標庁に2016年12月13日付で出願された仮出願第62/433,547号、および米国特許商標庁に2017年8月1日付で出願された非仮出願第15/666,107号に対する優先権およびその利益を主張し、これらの全内容は、参照によってここに組み込まれる。
[技術分野]
[0002] 本開示の態様は、クロックゲーティング(clock gating)に関し、より具体的には、クロックゲーティングイネーブル(clock gating enable generation)の生成に関する。
[0003] モバイルデバイスにおいて電力消費を低減することは、モバイルデバイスのバッテリ寿命を延長するために重要である。モバイルデバイスにおけるチップ(ダイ)の電力消費に著しく寄与するものは、動的電力(dynamic power)であり、それは、チップ上のトランジスタのスイッチングに起因するものである。この点について、チップ上の動的電力消費を低減するための様々な電力低減スキームが開発されている。1つのスキームは、回路が使用されていない(例えば、データを処理していない)とき、チップ上の回路(例えば、パイプライン)へのクロック信号をゲーティングすることを含む。回路へのクロック信号をゲーティングすることにより、回路中のトランジスタがスイッチングすることが阻止され、それにより動的電力が低減される。
[0004] 以下は、1つまたは複数の実施形態の簡略化された概要を、そのような実施形態の基本的な理解を提供するために提示する。この概要は、すべての考慮された実施形態の広範な概観ではなく、そして、すべての実施形態の主要または重要な要素を特定するようにも、任意のまたはすべての実施形態の適用範囲を詳細に叙述するようにも意図されていない。その唯一の目的は、後に提示されるより詳細な説明への前置きとして、簡略化された形式で、1つまたは複数の実施形態のうちのいくつかの概念を提示することである。
[0005] 1つの態様は、パイプラインのためのクロックゲーティングシステムに関する。クロックゲーティングシステムは、パイプラインへのクロック信号をゲーティングするか、またはパイプラインにクロック信号を渡すように構成されるクロックゲーティングデバイスと、クロックコントローラとを含む。クロックコントローラは、パイプラインの入力における入力パケットの数をトラック(track)することと、パイプラインの出力における出力パケットの数をトラックすることと、入力パケットの数および出力パケットの数に基づいて、クロック信号をゲーティングするか渡すかを決定することと、クロック信号を渡すという決定がされた場合、クロックゲーティングデバイスに、クロック信号を渡すように命じることと、クロック信号をゲーティングするという決定がされた場合、クロックゲーティングデバイスに、クロック信号をゲーティングするように命じることと、を行うように構成される。
[0006] 第2の態様は、クロックゲーティングのための方法に関する。方法は、パイプラインの入力における入力パケットの数をトラックすることと、パイプラインの出力における出力パケットの数をトラックすることと、入力パケットの数および出力パケットの数に基づいて、パイプラインへのクロック信号をゲーティングするか、パイプラインにクロック信号を渡すかを決定することと、を含む。方法はまた、クロック信号を渡すという決定がされた場合、クロック信号をパイプラインに渡すことと、クロック信号をゲーティングするという決定がされた場合、クロック信号をゲーティングすることと、を含む。
[0007] 前述の目的および関連する目的を達成するために、1つまたは複数の実施形態は、以下に十分に説明され、かつ特許請求の範囲において具体的に示される特徴を含む。以下の説明および添付の図面は、1つまたは複数の実施形態のある特定の例示的な態様を詳細に記載する。しかしながら、これらの態様は、様々な実施形態の原理が用いられ得る様々な方法のうちのほんのいくつかを示しているのであって、説明された実施形態は、すべてのそのような態様およびそれらの同等物を含むように意図されている。
[0008] 図1は、画像処理パイプラインの例を示す。 [0009] 図2Aは、有限ステートマシンを含むクロックゲーティングシステムの例を示す。 [0010] 図2Bは、図2Aにおける有限ステートマシンについての例示的な状態図を示す。 [0011] 図3は、パイプラインの各ステージにおいて、レディ信号(a ready signal)および/または有効データについてチェックするように構成される、クロックゲーティングシステムの例を示す。 [0012] 図4は、本開示の態様によるクロックゲーティングシステムの例を示す。 [0013] 図5は、本開示のある特定の態様によるクロックコントローラの例示的なインプリメンテーションを示す。 [0014] 図6は、本開示のある特定の態様による、図5におけるクロックコントローラが、クロックコントローラの動作を時間調整するためのクロック信号を受け取る例を示す。 [0015] 図7は、異なるクロックゲーティング方法および異なるパイプライン深度についてのチップエリアの例を示す表である。 [0016] 図8は、本開示のある特定の態様による、クロックゲーティングシステム中で使用され得るクロックゲーティングセル(CGC)の例を示す。 [0017] 図9は、本開示のある特定の態様による、クロックゲーティングのための方法を例示するフローチャートである。
詳細な説明
[0018] 添付図面に関連して以下に記載される詳細な説明は、様々な構成の説明として意図されており、ここに説明される概念が実施され得るのはこれらの構成においてのみであることを表すようには意図されていない。詳細な説明は、様々な概念の徹底した理解を提供することを目的として特定の詳細を含む。しかしながら、これらの概念がこれらの特定の詳細なしに実施され得ることは、当業者に明らかであろう。いくつかの事例では、そのような概念を曖昧にすることを避けるために、周知の構造およびコンポーネントは、ブロック図の形式で示される。
[0019] システムは、データソースからのデータを処理し、処理されたデータをデータシンクに出力するように構成されるパイプラインを含み得る。パイプラインは、データを(例えば、連続的に)処理する複数のパイプラインステージ(処理ユニットまたは要素とも呼ばれる)を含む。パイプラインは、例えば、カメラセンサまたはメモリのような画像データソースからの画像データを処理するために使用され得る。
[0020] この点について、図1は、画像処理パイプライン110(画像信号処理(ISP)モジュールとも呼ばれる)の例を示す。画像処理パイプライン110は、データソース105(例えば、カメラセンサ、メモリ等)からデータ(例えば、画像データ)を受け取る。画像処理パイプライン110は、受け取られたデータを処理し、処理されたデータ(例えば、処理された画像データ)を、データシンク115(例えば、ディスプレイプロセッサ、セントラルプロセシングユニット(CPU)、メモリ等)に出力する。画像処理パイプライン110は、データを処理するための複数のパイプラインステージを含む。画像処理は、ノイズフィルタリング、色補正、トーンマッピング、デモザイキング等のうちの1つまたは複数を含み得る。
[0021] 画像処理パイプライン110は、画像処理パイプライン110の動作を時間調整するためのクロック信号(「clk」と表される)を受け取る。クロック信号clkは、画像処理パイプライン110がデータを処理するために必要である。しかしながら、処理される必要のあるデータが画像処理パイプライン110中に存在しない、ある特定の時間期間(例えば、フレーム間の)が存在する。これらの時間期間の間、電力を節約するため、画像処理パイプライン110へのクロック信号clkをゲーティング(ディセーブル)することが望ましい。クロック信号clkをゲーティングすることにより、処理される必要のあるデータがパイプライン110中に存在しないときに画像処理パイプライン110中のトランジスタがスイッチすることを阻止することで、動的電力消費が低減される。
[0022] 図2Aは、1つのアプローチによるクロックゲーティングの例を示す。このアプローチでは、クロックゲーティングシステム215は、クロックイネーブル有限ステートマシン(FSM)220と、クロックゲーティングデバイス225とを含む。クロックゲーティングデバイス225は、以下にさらに説明されるように、FSM220の制御下で、画像処理パイプライン210へのクロック信号clkを選択的にゲーティングするように構成される。
[0023] この例では、画像処理パイプライン210は、データソース(図2Aには示されていない)から有効データ(例えば、ピクセルデータ)をフレーム単位で受け取り、ここにおいて各フレームは有効データの複数のラインを含む。図2Aでは、データソースから画像処理パイプライン210によって受け取られる有効データは、「rx_vld」と表され、画像処理パイプライン210によってデータシンク(図2Aには示されていない)に出力される有効データは、「tx_vld」と表される。
[0024] この例では、画像処理パイプライン210は、データソースから受取制御信号(「rx_ctrl」と表される)を受け取り、データシンクに伝送制御信号(「tx_ctrl」と表される)を出力する。受取制御信号rx_ctrlは、到来フレーム(incoming frame)の始まり(「rxsof」と表される)、到来フレームの終わり(「rxeof」と表される)、到来ラインの始まり(「rxsol」と表される)、および到来ラインの終わり(「rxeol」と表される)を示すマーカを含む。伝送制御信号tx_ctrlは、送出フレーム(outgoing frame)の始まり(「txsof」と表される)、送出フレームの終わり(「txeof」と表される)、送出ラインの始まり(「txsol」と表される)、および送出ラインの終わり(「txeol」と表される)を示すマーカを含む。
[0025] 動作中、FSM220は、受取制御信号rx_ctrlおよび伝送制御信号tx_ctrlを受け取り、受け取られた制御信号に基づいて、クロックゲーティングデバイス225に、クロック信号clkをゲーティング(ディセーブル)するように命じるか、クロック信号clkを渡す(イネーブルする)ように命じるかを決定する。例えば、FSM220は、隣接したフレーム間に有効データが存在しないと仮定して、クロックゲーティングデバイス225に、送出フレームの終わり(txeof)と次の到来フレームの始まり(rxsof)との間、クロック信号clkをゲーティング(ディセーブル)するように命じ得る。FSM220はまた、隣接したライン間に有効データが存在しないと仮定して、クロックゲーティングデバイス225に、送出ラインの終わり(txeol)と次の到来ラインの始まり(rxso1)との間、クロック信号clkをゲーティング(ディセーブル)するように命じし得る。したがって、FSM220は、電力消費を低減するために、フレーム内の隣接したライン間および隣接したフレーム間で、クロック信号clkをゲーティング(ディセーブル)し得る。図2Bは、クロック信号clkがアイドル状態においてゲーティングされる、ある特定の態様によるFSM220についての例示的なステートマシン図を示す。
[0026] このアプローチの欠点は、アクティブライン内に1つまたは複数のバブルが存在するとき、FSM220がクロック信号clkをゲーティング(ディセーブル)しない点であり、ここにおいてバブルは有効データの無いギャップである。したがって、このアプローチは、有効データがパイプライン210に存在しないある特定の時間期間の間、クロック信号clkをゲーティング(ディセーブル)する機会を逃し、それにより電力を無駄にする。
[0027] 図3は、別のアプローチによるクロックゲーティングの例を示す。このアプローチでは、画像処理パイプライン310は、データソース(図3には示されていない)から有効データrx_vldを受け取り、有効データtx_vldをデータシンク(図3には示されていない)に出力する。加えて、画像処理パイプライン310は、画像処理パイプライン310がデータソースから有効データを受け取る用意があることをデータソースに示すための受取レディ信号(「rx_rdy」と表される)をデータソースに出力する。画像処理パイプライン310はまた、データシンクが画像処理パイプライン310から有効データを受け取る用意があることを示す伝送レディ信号(「tx_rdy」と表される)をデータシンクから受け取る。
[0028] この例では、画像処理パイプライン310は、画像処理パイプライン310中の異なるポイントにおける有効データ(例えば、ピクセルデータ)をラッチするためのラッチ315−1〜315−3と、異なるパイプラインステージにおける有効データを処理するように構成される処理ユニット320−1〜320−3(例えば、組合せ論理)とを含む。画像処理パイプライン310はまた、受取レディ信号rx_rdyを生成するための論理325−1〜325−3を含む。例えば、論理325−1〜325−3は、有効データについてラッチをチェックし、かつ伝送レディ信号tx_rdyをチェックして、パイプライン310がデータソースからさらなる有効データを受け取る用意があるかどうかを決定し得る。例えば、論理325−1〜325−3は、ラッチがフル(full)であり、かつ伝送レディ信号tx_rdyがアサートされない場合、受取レディ信号rx_rdyをデアサートし得る。このケースでは、パイプライン310はフル(full)であり、かつさらなる有効データのための余地をパイプライン310に作るためにデータシンクに有効データを出力(伝送)することができない可能性がある。ラッチ315−1〜315−3、処理ユニット320−1〜320−3、および/または論理325−1〜325−3は、クロック信号clk(図3には示されていない)を使用して時間調整され得る。
[0029] この例では、クロックゲーティングシステムは、パイプライン310中に有効データが存在するかどうかをチェックするクロックゲーティング制御論理330(図3ではORゲートとして表される)を含む。クロックゲーティング制御論理330は、レディ信号および/または有効データについて複数のパイプラインステージのうちの各々のものをチェックすることによって、これを行う。クロックゲーティング制御論理330がパイプライン状態のうちの少なくとも1つにおいてレディ信号および/または有効データを検出する場合には、クロックゲーティング制御論理330は、画像処理パイプライン310へのクロック信号clkをイネーブルする(渡す)。クロックゲーティング制御論理330がレディ信号および/または有効データを検出しない場合には、クロックゲーティング制御論理330は、クロック信号clkをディセーブル(ゲーティング)する。
[0030] 図2Aを参照して上で説明された前述のクロックゲーティングアプローチとは異なり、このアプローチは、アクティブライン内のバブル(有効データの無いギャップ)の間、クロック信号クロックclkをゲーティング(ディセーブル)することができる。これは、このアプローチが、パイプライン310中に有効データが存在しないときにクロック信号クロックclkをゲーティング(ディセーブル)するからである。しかしながら、このアプローチは、パイプライン深度が深いとき、クロック周波数が高いとき等に、時間調整に関連した問題を潜在的に引き起こす可能性がある。これは、パイプライン深度(パイプラインステージの数)が増すにつれてクロックゲーティング制御論理330へのファンイン(すなわち、入力の数)が増加するからである。ファンインの増加により、クロックゲーティング制御論理330中の伝搬遅延が増加し、これにより、特に高周波数で、クロックゲーティング制御論理330が適切な動作のためのある特定の時間調整要件を満たすことがより難しくなる。その結果、このアプローチを使用したパイプライン310をスケールアップすることは難しい。
[0031] 図4は、本開示のある特定の態様によるクロックゲーティングシステム415を示す。クロックゲーティングシステム415は、クロックコントローラ420とクロックゲーティングデバイス425とを含む。クロックゲーティングデバイス425は、以下にさらに説明されるように、クロックコントローラ420の制御下で、画像処理パイプライン410へのクロック信号clkを選択的にゲーティングするように構成される。
[0032] 動作中、画像処理パイプライン410は、データソースから有効データ(例えば、ピクセルデータ)をパケット単位で受け取り、有効データ(例えば、ピクセルデータ)をデータシンクにパケット単位で出力する。各パケットは、Nビットの有効データ(例えば、8〜14ビット)を含み得る。クロックコントローラ420は、画像処理パイプライン410の入力における入力パケットの数(画像処理パイプライン410によって受け取られるパケットの数)をトラックする。クロックコントローラ420はまた、画像処理パイプライン410の出力における出力パケットの数(画像処理パイプライン410によって出力されるパケットの数)をトラックする。一例では、クロックコントローラ420は、受取レディ信号rx_rdyがアサートされるとき、入力パケットの数をトラックし、伝送レディ信号tx_rdyがアサートされるとき、出力パケットの数をトラックする。別の例では、クロックコントローラ420は、それぞれ、受取レディ信号rx_rdyおよび伝送レディ信号tx_rdyとは無関係に、入力パケットの数をトラックする、および出力パケットの数をトラックする。
[0033] クロックコントローラ420は次いで、画像処理パイプライン410が空である(パイプライン410中に有効データが無い)かどうかを決定するために、入力パケットの数を出力パケットの数と比較する。例えば、クロックコントローラ420は、入力パケットの数と出力パケットの数とが一致するとき、パイプライン410が空であると決定し、入力パケットの数の数と出力パケットの数とが一致しないとき、パイプライン410が空でないと決定し得る。
[0034] パイプライン410が空であるとクロックコントローラ420が決定する場合には、クロックコントローラ420は、電力を節約するために、クロックゲーティングデバイス425に、パイプライン410へのクロック信号clkをゲーティング(ディセーブル)するように命じ得る。一例では、パイプライン410が空であると決定した後、クロックコントローラ420はまた、パイプライン410の入力において有効データの到来パケットが存在するかどうかをチェックし得る。クロックコントローラ420が有効データの到来パケットを検出しない場合には、クロックコントローラ420は、クロックゲーティングデバイス425に、パイプライン410へのクロック信号clkをゲーティング(ディセーブル)するように命じ得る。
[0035] パイプライン410が空でないとクロックコントローラ420が決定する場合には、クロックコントローラ420は、クロック信号clkをイネーブルされた(ゲーティングされていない)ままにし得る。
[0036] パイプライン410へのクロック信号clkがゲーティング(ディセーブル)された後、クロックコントローラ420は、有効データの入力パケットについてパイプライン410の入力をモニタし得る。クロックコントローラ420が入力パケットを検出する場合には、クロックコントローラ420は、クロック信号clkをイネーブルして(渡して)、パイプライン410が入力パケットの処理を開始することができるようにする。クロックコントローラ420が入力パケットを検出しない場合には、クロックコントローラ420は、クロック信号clkをディセーブルされた(ゲーティングされた)ままにする。一例では、クロックコントローラ420は、受取レディrx_rdyがアサートされるとき、入力パケットについてパイプライン410の入力をモニタする。この例では、パイプライン410は、クロック信号clkがゲーティングされるとき、受取レディ信号rx_rdyを保持する。別の例では、クロックコントローラ420は、受取レディ信号rx_rdyとは無関係に、入力パケットについてパイプライン410の入力をモニタする。
[0037] クロックコントローラ420は、クロックコントローラ420が、アクティブライン内のバブルの間、クロック信号clkをゲーティングすることができるという点で、図2Aを参照して上で説明された第1のクロックゲーティングアプローチに対して有利である。これは、パイプライン410がバブルの間に空になるとき、クロックコントローラ420がクロック信号clkをゲーティングするからである。
[0038] さらに、クロックコントローラ420は、図3に示されたクロックゲーティング制御論理330と比較してクロックコントローラ420が少ないファンイン(入力の数)を有する点で、図3を参照して上で説明された第2のクロックゲーティングアプローチに対して有利である。これは、クロックコントローラ420が、レディ信号および/または有効データについてパイプライン410の各パイプラインステージをチェックする代わりに、パイプライン410の入力および出力をチェックするからである。その結果、クロックコントローラ420のファンインは、さらなるパイプラインステージが追加されても増加する必要がなく、それゆえにこのアプローチはより拡張可能(scalable)となる。このアプローチの比較的少ないファンインは、上で説明された第2のクロックゲーティングアプローチに関連する時間調整の問題を緩和する。
[0039] 図5は、本開示のある特定の態様によるクロックコントローラ420の例示的なインプリメンテーションを示す。この例では、クロックコントローラ420は、第1の制御デバイス510、第1のカウンタ520、第2の制御デバイス515、第2のカウンタ525、比較デバイス540、およびクロック制御デバイス550を含む。以下にさらに説明されるように、第1のカウンタ520は、入力パケットの数をカウントするように構成され、第2のカウンタ515は、出力パケットの数をカウントするように構成される。各カウンタは、最大カウンタ値に達したときに最低値に戻る(wraps around)ラップアラウンドカウンタであり得る。
[0040] 動作中、第1の制御デバイス510は、(例えば、受取レディ信号rx_rdyがアサートされるとき)有効データの入力パケットについてパイプライン410の入力をモニタする。例えば、各到来パケットは、パケットインジケータ(例えば、デリミタ)によって示され得る。パケットインジケータは、パケットの始まりまたはパケットの終わりに位置し得る。この例では、第1の制御デバイス510は、それぞれのパケットインジケータを検出することによって、入力パケットを検出し得る。第1の制御デバイス510は、第1の制御デバイス510が入力パケットを検出するたびに、第1のカウンタ520のカウント値をインクリメントし得る。したがって、この例では、第1のカウンタ520は入力パケットの数をトラックする。
[0041] 第2の制御デバイス515は、(例えば、伝送レディ信号tx_rdyがアサートされるとき)有効データの出力パケットについてパイプライン410の出力をモニタする。例えば、各送出パケットは、パケットインジケータ(例えば、デリミタ)によって示され得る。パケットインジケータは、パケットの始まりまたはパケットの終わりに位置し得る。この例では、第2の制御デバイス515は、それぞれのパケットインジケータを検出することによって、出力パケットを検出し得る。第2の制御デバイス515は、第2の制御デバイス515が出力パケットを検出するたびに、第2のカウンタ525のカウント値をインクリメントし得る。したがって、この例では、第2のカウンタ525は出力パケットの数をトラックする。
[0042] 比較デバイス540は、第1のカウンタ520のカウント値を第2のカウンタ525のカウント値と比較する。カウント値が一致する場合には、比較デバイス540は、パイプライン410が空であると決定する。カウント値が一致しない場合には、比較デバイス540は、パイプライン410が空でないと決定する。比較デバイス540は次いで、比較に基づいて、空フラグを生成し、ここにおいて空フラグは、パイプライン410が空であるかどうかを示す。例えば、空フラグは、パイプライン410が空であるという決定がされたときには第1の論理値(例えば、1)を、およびパイプライン410が空でないという決定がされたときには第2の論理値(例えば、0)を有し得る。
[0043] クロック制御デバイス550は、比較デバイス540から空フラグを受け取るように構成される。空フラグが、パイプラインが空でないと示す場合には、クロック制御デバイス550は、クロック信号clkをイネーブルされた(ゲーティングされていない)ままにし得る。このケースでは、クロックゲーティングデバイス425は、クロック信号clkをパイプライン410に渡す。空フラグが、パイプラインが空であると示す場合には、クロック制御デバイス550は、クロックゲーティングデバイス425に、パイプライン410へのクロック信号clkをゲーティング(ディセーブル)するように命じ得る。一例では、空フラグが、パイプラインが空であると示す場合には、クロック制御デバイス550はまた、パイプライン410の入力において有効データの到来パケットがあるかどうかをチェックし得る。クロック制御デバイス550が有効データの到来パケットを検出しない場合には、クロック制御デバイス550は、クロックゲーティングデバイス425に、パイプライン410へのクロック信号clkをゲーティング(ディセーブル)するように命じ得る。この例では、クロック制御デバイス550は、それぞれのパケットインジケータ(例えば、デリミタ)を検出することによって、到来パケットを検出し得る。クロックゲーティングデバイス425がクロック信号clkをゲーティング(ディセーブル)するとき、クロックゲーティングデバイス425は、クロック信号clkの論理状態とは無関係に、パイプライン410に一定の論理状態(0または1)を出力する。
[0044] パイプライン410へのクロック信号clkがゲーティングされた(ディセーブルされた)後、クロック制御デバイス550は、有効データの入力パケットについてパイプライン410の入力をモニタし得る。クロック制御デバイス550が入力パケットを検出する場合には、クロック制御デバイス550は、クロック信号clkをイネーブルする(渡す)。クロック制御デバイス550が入力パケットを検出しない場合には、クロック制御デバイス550は、クロック信号clkをディセーブルされた(ゲーティングされた)ままにする。
[0045] 一例では、クロック制御デバイス550は、クロック信号clkをイネーブルするために、クロックゲーティングデバイス425に第1の論理値(例えば、1)を出力し、クロック信号clkをゲーティング(ディセーブル)するために、クロックゲーティングデバイス425に第2の論理値(例えば、0)を出力するように構成され得る。この例では、クロック制御デバイス550は、空フラグが、パイプラインが空でないと示すとき、第1の論理値を出力する。クロック制御デバイス500は、空フラグが、パイプラインが空であると示すとき、第2の論理値を出力し得る。一例では、クロック制御デバイス550は、空フラグが、パイプライン410が空であると示し、かつパイプラインの入力において入力パケットが検出されないとき、第2の論理値を出力し得る。クロック信号clkがゲーティングされた後、クロック制御デバイス550は、入力パケットについてパイプラインの入力をモニタし、入力パケットを検出した際に、クロック信号clkを再イネーブルするために、それの出力を第2の論理値から第1の論理値に変え得る。
[0046] クロックコントローラ420はまた、クロックコントローラ420の動作を時間調整するために、クロック信号clkを受け取り得る。この点について、図6は、第1の制御デバイス510、第1のカウンタ520、第2の制御デバイス515、第2のカウンタ525、および比較デバイス540が、クロックゲーティングデバイス425の出力からクロック信号clkを受け取る例を示す。したがって、この例では、パイプライン420へのクロック信号clkがディセーブルされる(ゲーティングされる)とき、電力を節約するために、第1の制御デバイス510、第1のカウンタ520、第2の制御デバイス515、第2のカウンタ525、および比較デバイス540へのクロック信号clkもまたゲーティングされる。第1のおよび第2のカウンタ520および525は、クロック信号clkがゲーティングされるとき、それらの現在のカウント値を保持し得る。この例では、第1のおよび第2のカウンタ520および525の各々は、クロック信号clkが再イネーブルされるとき、保持されたカウント値からカウントを再開し得る。代替的に、カウンタ520および525は、クロック信号clkがゲーティングされるとき、リセットされ得る。この例では、第1のおよび第2のカウンタ520および525の各々は、クロック信号clkが再イネーブルされるとき、リセットされたカウント値(例えば、0)からカウントを開始し得る。
[0047] クロック制御デバイス550へのクロック信号clkは、クロックゲーティングデバイス425をバイパスして、パイプライン410へのクロック信号clkがゲーティングされるときに、クロック制御デバイス550へのクロック信号clkがゲーティングされないようにし得る。この例では、クロック信号clkは、パイプライン410の入力において入力パケットを検出するために使用されるクロック制御デバイス550の動作を時間調整し、入力パケットを検出した際に、パイプライン410へのクロック信号clkをイネーブルする(渡す)ために使用され得る。別の例では、クロック制御デバイス550は、パイプライン410の入力において入力パケットが存在するときにクロック信号clkをイネーブルするためにクロック信号clkを必要としない、1つまたは複数の論理ゲートを含み得る。このケースでは、クロック信号clkがクロックゲーティングデバイス425に提供される必要がない。
[0048] クロックコントローラ420の様々なコンポーネントは、以下にさらに説明されるように、同期FIFO(first-in first-out)コントローラからのコンポーネントを使用してインプリメントされ得る。
[0049] 同期FIFOコントローラは、FIFOメモリへのデータの書き込み、およびFIFOメモリからのデータの読み出しを制御する。この点について、FIFOコントローラは、書き込みカウンタ、読み出しカウンタ、および比較デバイスを含み得る。書き込みカウンタのカウント値は、データがFIFOメモリに入力されるときにインクリメントされ、および、データが書き込まれることになるFIFOメモリ中の位置(アドレス)を指定する書き込みポインタを生成するために使用される。読み出しカウンタのカウント値は、データがFIFOメモリから読み出されるときにインクリメントされ、および、データが読み出されることになるFIFOメモリ中の位置(アドレス)を指定する読み出しポインタを生成するために使用される。比較デバイスは、FIFOメモリが空であるかどうかを決定するために書き込みポインタを読み出しポインタと比較し、比較に基づいて、FIFOメモリが空であるかどうかを示す空フラグを出力する。例えば、比較デバイスは、書き込みポインタおよび読み出しポインタが一致するとき、FIFOメモリが空であると決定し得る。
[0050] 一例では、クロックコントローラ420の第1のカウンタ520、第2のカウンタ525、および比較デバイス540は、FIFOコントローラからの書き込みカウンタ、読み出しカウンタ、および比較デバイスを使用してインプリメントされ得る。この例では、パイプライン410は、パイプライン410が空であるかどうかを決定する目的で、FIFOメモリとして扱われる。これにより、クロックコントローラ420のための空フラグを生成するために、FIFOコントローラのための空フラグを生成するために使用されるFIFOコントローラのコンポーネント(例えば、書き込みカウンタ、読み出しカウンタ、および比較デバイス)を、クロックコントローラ420が再使用することが可能となる。
[0051] 上記の例では、パイプライン410は、パイプライン410が空であるかどうかを決定する目的で、FIFOメモリとして扱われるが、パイプラインは、他の点ではFIFOメモリとは異なることに留意されたい。例えば、パイプライン410はデータを処理し、一方FIFOメモリは単純にデータを記憶する(例えば、バッファする)。
[0052] 図7は、異なるパイプライン深度(すなわち、異なる数のパイプラインステージ)について説明された3つの異なるクロックゲーティング方法についてのチップエリアの例を示す表700である。表700中の最初の4行は、2、50、100および500のパイプライン深度についての(図2Aに示された)FSMアプローチについてのチップエリアの例を示す。表700中の次の4行は、2、50、100および500のパイプライン深度についての(図3に示された)ORゲートアプローチについてのチップエリアの例を示す。表700中の最後の4行は、2、50、100および500のパイプライン深度についての(図4〜図6に示された)FIFOアプローチについてのチップエリアの例を示す。
[0053] 図7に示されるように、FSMアプローチについてのチップエリアは、パイプライン深度が増すにつれて増加しない。対照的に、ORゲートアプローチについてのチップエリアは、パイプライン深度の増加に伴っておおよそ線形に増加する。これは、追加的なパイプラインステージごとに追加的な入力がORゲートに追加されるからである。パイプライン深度の増加によりORゲートによって占有されるチップエリアの著しい増加が生じる可能性があるので、ORゲートアプローチはあまり拡張可能でない。チップエリアの著しい増加は、チップ上の貴重なスペース(real estate)を占有するだけでなく、電力消費の著しい増加にも転換される。
[0054] FIFOアプローチについてのチップエリアは、パイプライン深度の増加に伴ってわずかに増加する。チップエリアの増加は、パイプライン深度が増加につれてより多くの数の到来および送出パケットをトラックするために必要とされる追加のビットに起因する。追加のビットは、パイプライン深度のlog2(すなわち、底を2とする対数(base 2 logarithm))でスケーリングされる。表700に示されるように、FIFOアプローチについてのチップエリアの増加は、ORゲートアプローチに比べて著しく少ない。したがって、パイプライン深度が増加するときにFIFOアプローチが必要とするエリアおよび電力は、ORゲートアプローチに比べて著しく少ない。
[0055] 図7に示される例では、FIFOアプローチは、FSMアプローチに比べてより多くのチップエリアを使用(occupies)する。しかしながら、FIFOアプローチは、アクティブラインにおけるバブルの間、クロック信号clkをゲーティングすることができ、一方でFSMアプローチは、上述したように、バブルの間、クロック信号clkをゲーティングしない。したがって、FIFOアプローチは、より頻繁にクロック信号をゲーティングする(すなわち、クロック信号をゲーティングする機会をより多く活用する)ことができ、よってクロックゲーティングによるより多くの電力の節約をもたらす。
[0056] クロックゲーティングデバイス425は、当該技術分野において知られているいくつかのクロックゲーティングセル(CGC)のうちのいずれのものを使用してもインプリメントされ得る。例えば、チップ(ダイ)についての標準的なセルライブラリは、典型的には1つまたは複数のCGCを含む。この例では、クロックゲーティングデバイス425をインプリメントするために、セルライブラリ中のCGCのうちの1つが選択され得る。
[0057] この点について、図8は、クロックゲーティングデバイス425をインプリメントするために使用され得る例示的なクロックゲーティングセル(CGC)810を示す。この例では、CGC810は、ネガティブエッジトリガラッチ820とANDゲート830とを含む。CGC810は、クロック制御デバイス550からゲート制御信号を受け取るゲート制御入力812と、クロック信号clkを受け取るクロック入力814と、パイプライン410のクロック入力に結合された出力816とを有する。ラッチ820は、ゲート制御信号を受け取る制御入力822と、クロック信号clkを受け取るクロック入力824と、出力826とを有する。ANDゲート830は、ラッチ820の出力826に結合された第1の入力832と、クロック信号clkを受け取る第2の入力834と、CGC810の出力816に結合された出力836とを有する。
[0058] この例では、CGC810は、クロック制御デバイス550からのゲート制御信号がlow(論理0)であるとき、クロック信号clkをゲーティングする。このケースでは、CGC810は、クロック信号clkの論理状態に関わらず、パイプライン410に論理0を出力する。CGC810は、ゲート制御信号がhigh(論理1)であるとき、クロック信号clkをパイプライン410に渡す。ゲート制御信号はまた、それが、パイプラインへのクロック信号clkがイネーブルされるかどうかを制御するので、クロックイネーブル信号とも呼ばれ得る。
[0059] 動作中、ラッチ820は、クロック信号clkの立ち下がりエッジにおけるゲート制御信号の論理値をラッチし、ゲート制御信号のラッチされた論理値をANDゲート830の第1の入力832に出力する。ゲート制御信号のラッチされた論理値が論理1である場合には、ANDゲート830は、クロック信号clkをCGC810の出力816に渡す。ゲート制御信号のラッチされた論理値が論理0である場合には、ANDゲート830は、クロック信号clkの論理状態に関わらず、論理0を出力し、それにより効率的にクロック信号clkをゲーティングする。この例では、ラッチ820は、CGC810の出力816においてグリッチを防ぐために使用される。図8に示されたCGC810は単なる例であり、クロックゲーティングデバイス425は、当該技術分野において知られている他のCGCを使用してインプリメントされ得ることは認識されるべきである。
[0060] 図9は、本開示のある特定の態様によるクロックゲーティングのための方法900を例示する。方法900は、クロックコントローラ420およびクロックゲーティングデバイス425によって実施され得る。
[0061] ステップ910において、パイプラインの入力における入力パケットの数がトラックされる。例えば、入力パケットの数は、入力パケットごとに第1のカウンタ(例えば、第1のカウンタ520)のカウント値をインクリメントすることによって、トラックされ得る。
[0062] ステップ920において、パイプラインの出力における出力パケットの数がトラックされる。例えば、入力パケットの数は、出力パケットごとに第2のカウンタ(例えば、第2のカウンタ525)のカウント値をインクリメントすることによって、トラックされ得る。
[0063] ステップ930において、入力パケットの数および出力パケットの数に基づいて、パイプラインへのクロック信号をゲーティングするか、パイプラインにクロック信号を渡すかの決定が成される。例えば、入力パケットの数と出力パケットの数とが一致する場合、クロック信号をゲーティングするという決定が成され得、入力パケットの数と出力パケットの数とが一致しない場合、クロック信号をパイプラインに渡すという決定が成され得る。
[0064] ステップ940において、クロック信号を渡すという決定がされた場合、クロック信号はパイプラインに渡される。
[0065] ステップ950において、クロック信号をゲーティングするという決定がされた場合、クロック信号はゲーティングされる。
[0066] 上で説明されたクロックコントローラ420は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理デバイス、ディスクリートハードウェアコンポーネント(例えば、論理ゲート)、またはここに説明された機能を実施するように設計されたそれらの任意の組合せでインプリメントされ得る。プロセッサは、機能を実施するためのコードを備えるソフトウェアを実行することによって、ここに説明される機能を実施し得る。ソフトウェアは、RAM、ROM、EEPROM(登録商標)、光学ディスク、および/または磁気ディスクのようなコンピュータ読み取り可能な記憶媒体上に記憶され得る。
[0001] 本開示内では、「例示的な(exemplary)」という用語は、「例、事例、または例示としての役割を果たす」という意味で使用される。「例示的」であるとここで説明されたいずれのインプリメンテーションまたは態様も、必ずしも、本開示の他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「態様(aspects)」という用語は、本開示のすべての態様が、説明された特徴、利点または動作のモードを含むことを必要としない。
[0002] 本開示は、イメージ処理パイプラインの例を使用して上で説明されたが、本開示は、この例に限定されないことは認識されるべきである。本開示の実施形態は、他のタイプのパイプラインへのクロックシグナルをゲーティングするためにデータを処理する他のタイプのパイプラインに適用され得る。
[0003] 本開示の先の説明は、当業者が本開示を製造または使用することを可能にするために提供されている。本開示への様々な修正は、当業者にとって容易に明らかとなり、ここに定義された一般的な原理は、本開示の範囲または精神から逸脱することなく、他のバリエーションに適用され得る。したがって、本開示は、ここに説明された例に限定されるようには意図されておらず、ここに開示された原理および新規な特徴と一致する最も広い範囲を与えられるべきである。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] パイプラインのためのクロックゲーティングシステムであって、
前記パイプラインにクロック信号を渡す、または前記パイプラインへのクロック信号をゲーティングするように構成されるクロックゲーティングデバイスと、
前記パイプラインの入力における入力パケットの数をトラックすることと、前記パイプラインの出力における出力パケットの数をトラックすることと、前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記クロック信号を渡すかゲーティングするかを決定することと、前記クロック信号を渡すという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じることと、前記クロック信号をゲーティングするという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じることと、を行うように構成されるクロックコントローラと、
を備える、クロックゲーティングシステム。
[C2] 前記クロックコントローラが、
第1のカウンタと、
前記パイプラインの前記入力において前記入力パケットを検出し、前記検出された入力パケットの各々について前記第1のカウンタのカウント値をインクリメントするように構成される第1の制御デバイスと、ここにおいて、前記第1のカウンタの前記カウント値は前記入力パケットの前記数を示す、
第2のカウンタと、
前記パイプラインの前記出力において前記出力パケットを検出し、前記検出された出力パケットの各々について前記第2のカウンタのカウント値をインクリメントするように構成される第2の制御デバイスと、ここにおいて、前記第2のカウンタの前記カウント値は前記出力パケットの前記数を示す、
を備える、C1に記載のクロックゲーティングシステム。
[C3] 前記クロックコントローラが、
前記第1のカウンタの前記カウント値を前記第2のカウンタの前記カウント値と比較し、前記比較に基づいてフラグを生成するように構成される比較デバイスと、ここにおいて、前記フラグは、前記パイプラインが空であるかどうかを示す、
前記フラグが、前記パイプラインが空であると示さない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じ、前記フラグが、前記パイプラインが空であると示す場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じるように構成されるクロック制御デバイスと、
をさらに備える、C2に記載のクロックゲーティングシステム。
[C4] 前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致する場合、前記フラグは、前記パイプラインが空であることを示す、C3に記載のクロックゲーティングシステム。
[C5] 前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致しない場合、フラグは、前記パイプラインが空であることを示さない、C4に記載のクロックゲーティングシステム。
[C6] 前記第1の制御デバイスが、前記入力パケットのデリミタを検出することによって、前記入力パケットの各々を検出するように構成される、C2に記載のクロックゲーティングシステム。
[C7] 前記第2の制御デバイスが、前記出力パケットのデリミタを検出することによって、前記出力パケットの各々を検出するように構成される、C6に記載のクロックゲーティングシステム。
[C8] 前記クロックコントローラが、前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じ、前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるように構成される、C1に記載のクロックゲーティングシステム。
[C9] 前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じた後に、前記クロックコントローラが、次の入力パケットについて前記パイプラインの前記入力をモニタし、前記次の入力パケットを検出すると、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるようにさらに構成される、C8に記載のクロックゲーティングシステム。
[C10] 前記パイプラインが画像処理パイプラインである、C1に記載のクロックゲーティングシステム。
[C11] クロックゲーティングのための方法であって、
パイプラインの入力における入力パケットの数をトラックすることと、
前記パイプラインの出力における出力パケットの数をトラックすることと、
前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記パイプラインへのクロック信号をゲーティングするか、前記パイプラインにクロック信号を渡すかを決定することと、
前記クロック信号を渡すという決定がされた場合、前記クロック信号を前記パイプラインに渡すことと、
前記クロック信号をゲーティングするという決定がされた場合、前記クロック信号をゲーティングすることと、
を備える、方法。
[C12] 前記入力パケットの前記数をトラックすることが、前記入力パケットの各々について第1のカウンタのカウント値をインクリメントすることを備え、前記出力パケットの前記数をトラックすることが、前記出力パケットの各々について第2のカウンタのカウント値をインクリメントすることを備える、C11に記載の方法。
[C13] 前記第1のカウンタの前記カウント値をインクリメントすることが、
前記入力パケットのデリミタを検出することによって、前記パイプラインの前記入力において前記入力パケットの各々を検出することと、
前記検出された入力パケットの各々について前記第1のカウンタの前記カウント値をインクリメントすることと、
を含む、C12に記載の方法。
[C14] 前記第2のカウンタの前記カウント値をインクリメントすることが、
前記出力パケットのデリミタを検出することによって、前記パイプラインの前記出力において前記出力パケットの各々を検出することと、
前記検出された出力パケットの各々について前記第2のカウンタの前記カウント値をインクリメントすることと、
を含む、C12に記載の方法。
[C15] 前記クロック信号をゲーティングするか渡すかを決定することが、
前記第1のカウンタの前記カウント値を前記第2のカウンタの前記カウント値と比較することと、
前記比較に基づいて、前記クロック信号をゲーティングするか渡すかを決定することと、
を備える、C12に記載の方法。
[C16] 前記クロック信号をゲーティングするか渡すかを決定することが、前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致する場合、前記クロック信号をゲーティングすると決定することを備える、C15に記載の方法。
[C17] 前記クロック信号をゲーティングするか渡すかを決定することが、前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致しない場合、前記クロック信号を渡すと決定することを備える、C16に記載の方法。
[C18] 前記クロック信号をゲーティングするか渡すかを決定することが、
前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロック信号をゲーティングすると決定することと、
前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロック信号を渡すと決定することと、
を備える、C11に記載の方法。
[C19] 前記クロック信号をゲーティングした後に、次の入力パケットについて前記パイプラインの前記入力をモニタすることと、
前記次の入力パケットを検出すると、前記クロック信号を渡すことと、
をさらに備える、C19に記載の方法。
[C20] 前記パイプラインが画像処理パイプラインである、C11に記載の方法。

Claims (15)

  1. パイプラインのためのクロックゲーティングシステムであって、
    前記パイプラインにクロック信号を渡す、または前記パイプラインへのクロック信号をゲーティングするように構成されるクロックゲーティングデバイスと、
    前記パイプラインの入力における入力パケットの数をトラックすることと、前記パイプラインの出力における出力パケットの数をトラックすることと、前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記クロック信号を渡すかゲーティングするかを決定することと、前記クロック信号を渡すという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じることと、前記クロック信号をゲーティングするという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じることと、を行うように構成されるクロックコントローラと、
    を備え
    前記クロックコントローラが、前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じ、前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるように構成される、クロックゲーティングシステム。
  2. 前記クロックコントローラが、
    第1のカウンタと、
    前記パイプラインの前記入力において前記入力パケットを検出し、前記検出された入力パケットの各々について前記第1のカウンタのカウント値をインクリメントするように構成される第1の制御デバイスと、ここにおいて、前記第1のカウンタの前記カウント値は前記入力パケットの前記数を示す、
    第2のカウンタと、
    前記パイプラインの前記出力において前記出力パケットを検出し、前記検出された出力パケットの各々について前記第2のカウンタのカウント値をインクリメントするように構成される第2の制御デバイスと、ここにおいて、前記第2のカウンタの前記カウント値は前記出力パケットの前記数を示す、
    を備える、請求項1に記載のクロックゲーティングシステム。
  3. 前記クロックコントローラが、
    前記第1のカウンタの前記カウント値を前記第2のカウンタの前記カウント値と比較し、前記比較に基づいてフラグを生成するように構成される比較デバイスと、ここにおいて、前記フラグは、前記パイプラインが空であるかどうかを示す、
    前記フラグが、前記パイプラインが空であると示さない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じ、前記フラグが、前記パイプラインが空であると示す場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じるように構成されるクロック制御デバイスと、
    をさらに備える、請求項2に記載のクロックゲーティングシステム。
  4. 前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致する場合、前記フラグは、前記パイプラインが空であることを示す、請求項3に記載のクロックゲーティングシステム。
  5. 前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致しない場合、前記フラグは、前記パイプラインが空であることを示さない、請求項4に記載のクロックゲーティングシステム。
  6. 前記第1の制御デバイスが、前記入力パケットのデリミタを検出することによって、前記入力パケットの各々を検出するように構成される、請求項2に記載のクロックゲーティングシステム。
  7. 前記第2の制御デバイスが、前記出力パケットのデリミタを検出することによって、前記出力パケットの各々を検出するように構成される、請求項6に記載のクロックゲーティングシステム。
  8. 前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じた後に、前記クロックコントローラが、次の入力パケットについて前記パイプラインの前記入力をモニタし、前記次の入力パケットを検出すると、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるようにさらに構成される、請求項に記載のクロックゲーティングシステム。
  9. クロックゲーティングのための方法であって、
    パイプラインの入力における入力パケットの数をトラックすることと、
    前記パイプラインの出力における出力パケットの数をトラックすることと、
    前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記パイプラインへのクロック信号をゲーティングするか、前記パイプラインにクロック信号を渡すかを決定することと、
    前記クロック信号を渡すという決定がされた場合、前記クロック信号を前記パイプラインに渡すことと、
    前記クロック信号をゲーティングするという決定がされた場合、前記クロック信号をゲーティングすることと、
    を備え
    前記クロック信号をゲーティングするか渡すかを決定することが、
    前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロック信号をゲーティングすると決定することと、
    前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロック信号を渡すと決定することと、
    を備える、方法。
  10. 前記入力パケットの前記数をトラックすることが、前記入力パケットの各々について第1のカウンタのカウント値をインクリメントすることを備え、前記出力パケットの前記数をトラックすることが、前記出力パケットの各々について第2のカウンタのカウント値をインクリメントすることを備える、請求項に記載の方法。
  11. 前記第1のカウンタの前記カウント値をインクリメントすることが、
    前記入力パケットのデリミタを検出することによって、前記パイプラインの前記入力において前記入力パケットの各々を検出することと、
    前記検出された入力パケットの各々について前記第1のカウンタの前記カウント値をインクリメントすることと、
    を含む、請求項10に記載の方法。
  12. 前記第2のカウンタの前記カウント値をインクリメントすることが、
    前記出力パケットのデリミタを検出することによって、前記パイプラインの前記出力において前記出力パケットの各々を検出することと、
    前記検出された出力パケットの各々について前記第2のカウンタの前記カウント値をインクリメントすることと、
    を含む、請求項10に記載の方法。
  13. 前記クロック信号をゲーティングするか渡すかを決定することが、
    前記第1のカウンタの前記カウント値を前記第2のカウンタの前記カウント値と比較することと、
    前記比較に基づいて、前記クロック信号をゲーティングするか渡すかを決定することと、
    を備え
    前記クロック信号をゲーティングするか渡すかを決定することが、前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致する場合、前記クロック信号をゲーティングすると決定することを備え、
    前記クロック信号をゲーティングするか渡すかを決定することが、前記第1のカウンタの前記カウント値と前記第2のカウンタの前記カウント値とが一致しない場合、前記クロック信号を渡すと決定することを備える、請求項10に記載の方法。
  14. 前記クロック信号をゲーティングした後に、次の入力パケットについて前記パイプラインの前記入力をモニタすることと、
    前記次の入力パケットを検出すると、前記クロック信号を渡すことと、
    をさらに備える、請求項に記載の方法。
  15. 前記パイプラインが画像処理パイプラインである、請求項1に記載のクロックゲーティングシステムまたは請求項に記載の方法。
JP2019531294A 2016-12-13 2017-11-27 クロックゲーティングイネーブルの生成 Active JP6746791B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662433547P 2016-12-13 2016-12-13
US62/433,547 2016-12-13
US15/666,107 2017-08-01
US15/666,107 US10761559B2 (en) 2016-12-13 2017-08-01 Clock gating enable generation
PCT/US2017/063306 WO2018111526A1 (en) 2016-12-13 2017-11-27 Clock gating enable generation

Publications (3)

Publication Number Publication Date
JP2020513628A JP2020513628A (ja) 2020-05-14
JP2020513628A5 JP2020513628A5 (ja) 2020-06-25
JP6746791B2 true JP6746791B2 (ja) 2020-08-26

Family

ID=62489120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019531294A Active JP6746791B2 (ja) 2016-12-13 2017-11-27 クロックゲーティングイネーブルの生成

Country Status (11)

Country Link
US (1) US10761559B2 (ja)
EP (1) EP3555726B1 (ja)
JP (1) JP6746791B2 (ja)
KR (1) KR102143089B1 (ja)
CN (1) CN110073311B (ja)
AU (1) AU2017377949B2 (ja)
BR (1) BR112019010936A2 (ja)
ES (1) ES2801598T3 (ja)
HU (1) HUE050331T2 (ja)
TW (1) TWI722258B (ja)
WO (1) WO2018111526A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11114057B2 (en) * 2018-08-28 2021-09-07 Samsung Display Co., Ltd. Smart gate display logic
US11099602B2 (en) * 2019-04-30 2021-08-24 International Business Machines Corporation Fault-tolerant clock gating
CN112462845B (zh) * 2020-11-25 2024-06-18 海光信息技术股份有限公司 数据传输时钟控制电路、方法和处理器
US12081214B2 (en) 2021-12-07 2024-09-03 Mediatek Inc. Clock gating cells

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636074B2 (en) 2002-01-22 2003-10-21 Sun Microsystems, Inc. Clock gating to reduce power consumption of control and status registers
JP2004078581A (ja) 2002-08-19 2004-03-11 Nec Corp 通信データ処理回路
JP2004274099A (ja) 2003-03-05 2004-09-30 Nec Corp パケット処理回路
TWI253556B (en) * 2003-06-11 2006-04-21 Faraday Tech Corp Pipeline-based circuit with a postponed clock-gating mechanism for reducing power consumption and related driving method thereof
US6822481B1 (en) * 2003-06-12 2004-11-23 Agilent Technologies, Inc. Method and apparatus for clock gating clock trees to reduce power dissipation
US7594200B2 (en) * 2005-12-19 2009-09-22 International Business Machines Corporation Method for finding multi-cycle clock gating
US7949887B2 (en) * 2006-11-01 2011-05-24 Intel Corporation Independent power control of processing cores
US7797561B1 (en) * 2006-12-21 2010-09-14 Nvidia Corporation Automatic functional block level clock-gating
US7802118B1 (en) * 2006-12-21 2010-09-21 Nvidia Corporation Functional block level clock-gating within a graphics processor
US8073669B2 (en) * 2007-08-21 2011-12-06 International Business Machines Corporation Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design
US7861192B2 (en) * 2007-12-13 2010-12-28 Globalfoundries Inc. Technique to implement clock-gating using a common enable for a plurality of storage cells
JP5007703B2 (ja) 2008-05-19 2012-08-22 日本電気株式会社 パケット処理装置、パケット制御方法及びパケット制御プログラム
WO2010080176A1 (en) * 2009-01-12 2010-07-15 Rambus Inc. Mesochronous signaling system with multiple power modes
JP2011061457A (ja) * 2009-09-09 2011-03-24 Elpida Memory Inc クロック生成回路及びこれを備える半導体装置並びにデータ処理システム
US9557795B1 (en) 2009-09-23 2017-01-31 Xilinx, Inc. Multiprocessor system with performance control based on input and output data rates
US20110202788A1 (en) 2010-02-12 2011-08-18 Blue Wonder Communications Gmbh Method and device for clock gate controlling
US8533648B2 (en) * 2010-05-13 2013-09-10 Oracle International Corporation Automatic clock-gating propagation technique
US9444440B2 (en) * 2011-06-30 2016-09-13 Stmicroelectronics International N.V. Transition detector
JP2013125436A (ja) 2011-12-15 2013-06-24 Panasonic Corp 画像処理回路および半導体集積回路
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US20140225655A1 (en) * 2013-02-14 2014-08-14 Qualcomm Incorporated Clock-gated synchronizer
WO2015047422A1 (en) * 2013-09-30 2015-04-02 Intel Corporation Early wake-warn for clock gating control
GR20130100707A (el) * 2013-12-23 2015-07-31 Arm Limited, Μεταφραση διευθυνσης σε μια συσκευη επεξεργασιας δεδομενων
US9154130B2 (en) * 2014-01-14 2015-10-06 Analog Devices, Inc. Four-state input detection circuitry
US10204532B2 (en) * 2015-09-25 2019-02-12 Intel Corporation Multiple input cryptographic engine

Also Published As

Publication number Publication date
US20180164846A1 (en) 2018-06-14
KR20190094364A (ko) 2019-08-13
TW201826710A (zh) 2018-07-16
EP3555726A1 (en) 2019-10-23
HUE050331T2 (hu) 2020-11-30
AU2017377949A1 (en) 2019-05-16
ES2801598T3 (es) 2021-01-11
CN110073311B (zh) 2023-03-24
WO2018111526A1 (en) 2018-06-21
KR102143089B1 (ko) 2020-08-10
JP2020513628A (ja) 2020-05-14
US10761559B2 (en) 2020-09-01
BR112019010936A2 (pt) 2019-10-01
EP3555726B1 (en) 2020-04-22
TWI722258B (zh) 2021-03-21
AU2017377949B2 (en) 2021-08-19
CN110073311A (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
JP6746791B2 (ja) クロックゲーティングイネーブルの生成
CN105320490B (zh) 用于异步fifo电路的方法和设备
US8812878B2 (en) Limiting false wakeups of computing device components coupled via links
US9367499B2 (en) System on chip for enhancing quality of service and method of controlling the same
US8291133B2 (en) Skip based control logic for first in first out buffer
US11181941B2 (en) Using a stuttered clock signal to reduce self-induced voltage noise
WO1999041670A1 (en) System for dynamically changing draining priority of a receive fifo
US20110106991A1 (en) Bus system and bus control method
US7152167B2 (en) Apparatus and method for data bus power control
US8631265B2 (en) Synchronization circuit that facilitates multiple parallel reads and writes
KR20230121629A (ko) 감소된 전력 소비로 증가된 데이터 전송 인터페이스주파수를 지원하는 데이터 파이프라인 회로 및 관련 방법
US10270434B2 (en) Power saving with dynamic pulse insertion
US12019565B2 (en) Advanced initialization bus (AIB)
US20210223815A1 (en) First-In First-Out Buffer with Lookahead Performance Booster
US7916575B2 (en) Configurable latching for asynchronous memories
US20240320165A1 (en) Advanced initialization bus (aib)
JP2005321933A (ja) データ入出力装置およびデータ入出力方法
US6597628B1 (en) Auto-disable receive control for DDR receive strobes
US20080126666A1 (en) Method to save bus switching power and reduce noise in an engineered bus
KR20070014257A (ko) 디바이스 간 고속 데이터 전송 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200513

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200513

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200513

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200701

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: 20200707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200805

R150 Certificate of patent or registration of utility model

Ref document number: 6746791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250