(57)【特許請求の範囲】
【請求項１】
パイプラインのためのクロックゲーティングシステムであって、
前記パイプラインにクロック信号を渡す、または前記パイプラインへのクロック信号をゲーティングするように構成されるクロックゲーティングデバイスと、
前記パイプラインの入力における入力パケットの数をトラックすることと、前記パイプラインの出力における出力パケットの数をトラックすることと、前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記クロック信号を渡すかゲーティングするかを決定することと、前記クロック信号を渡すという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じることと、前記クロック信号をゲーティングするという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じることと、を行うように構成されるクロックコントローラと、
を備え、
前記クロックコントローラが、前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じ、前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるように構成される、クロックゲーティングシステム。
【請求項２】
前記クロックコントローラが、
第１のカウンタと、
前記パイプラインの前記入力において前記入力パケットを検出し、前記検出された入力パケットの各々について前記第１のカウンタのカウント値をインクリメントするように構成される第１の制御デバイスと、ここにおいて、前記第１のカウンタの前記カウント値は前記入力パケットの前記数を示す、
第２のカウンタと、
前記パイプラインの前記出力において前記出力パケットを検出し、前記検出された出力パケットの各々について前記第２のカウンタのカウント値をインクリメントするように構成される第２の制御デバイスと、ここにおいて、前記第２のカウンタの前記カウント値は前記出力パケットの前記数を示す、
を備える、請求項１に記載のクロックゲーティングシステム。
【請求項３】
前記クロックコントローラが、
前記第１のカウンタの前記カウント値を前記第２のカウンタの前記カウント値と比較し、前記比較に基づいてフラグを生成するように構成される比較デバイスと、ここにおいて、前記フラグは、前記パイプラインが空であるかどうかを示す、
前記フラグが、前記パイプラインが空であると示さない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じ、前記フラグが、前記パイプラインが空であると示す場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じるように構成されるクロック制御デバイスと、
をさらに備える、請求項２に記載のクロックゲーティングシステム。
【請求項４】
前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致する場合、前記フラグは、前記パイプラインが空であることを示す、請求項３に記載のクロックゲーティングシステム。
【請求項５】
前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致しない場合、前記フラグは、前記パイプラインが空であることを示さない、請求項４に記載のクロックゲーティングシステム。
【請求項６】
前記第１の制御デバイスが、前記入力パケットのデリミタを検出することによって、前記入力パケットの各々を検出するように構成される、請求項２に記載のクロックゲーティングシステム。
【請求項７】
前記第２の制御デバイスが、前記出力パケットのデリミタを検出することによって、前記出力パケットの各々を検出するように構成される、請求項６に記載のクロックゲーティングシステム。
【請求項８】
前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じた後に、前記クロックコントローラが、次の入力パケットについて前記パイプラインの前記入力をモニタし、前記次の入力パケットを検出すると、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるようにさらに構成される、請求項１に記載のクロックゲーティングシステム。
【請求項９】
クロックゲーティングのための方法であって、
パイプラインの入力における入力パケットの数をトラックすることと、
前記パイプラインの出力における出力パケットの数をトラックすることと、
前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記パイプラインへのクロック信号をゲーティングするか、前記パイプラインにクロック信号を渡すかを決定することと、
前記クロック信号を渡すという決定がされた場合、前記クロック信号を前記パイプラインに渡すことと、
前記クロック信号をゲーティングするという決定がされた場合、前記クロック信号をゲーティングすることと、
を備え、
前記クロック信号をゲーティングするか渡すかを決定することが、
前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロック信号をゲーティングすると決定することと、
前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロック信号を渡すと決定することと、
を備える、方法。
【請求項１０】
前記入力パケットの前記数をトラックすることが、前記入力パケットの各々について第１のカウンタのカウント値をインクリメントすることを備え、前記出力パケットの前記数をトラックすることが、前記出力パケットの各々について第２のカウンタのカウント値をインクリメントすることを備える、請求項９に記載の方法。
【請求項１１】
前記第１のカウンタの前記カウント値をインクリメントすることが、
前記入力パケットのデリミタを検出することによって、前記パイプラインの前記入力において前記入力パケットの各々を検出することと、
前記検出された入力パケットの各々について前記第１のカウンタの前記カウント値をインクリメントすることと、
を含む、請求項１０に記載の方法。
【請求項１２】
前記第２のカウンタの前記カウント値をインクリメントすることが、
前記出力パケットのデリミタを検出することによって、前記パイプラインの前記出力において前記出力パケットの各々を検出することと、
前記検出された出力パケットの各々について前記第２のカウンタの前記カウント値をインクリメントすることと、
を含む、請求項１０に記載の方法。
【請求項１３】
前記クロック信号をゲーティングするか渡すかを決定することが、
前記第１のカウンタの前記カウント値を前記第２のカウンタの前記カウント値と比較することと、
前記比較に基づいて、前記クロック信号をゲーティングするか渡すかを決定することと、
を備え、
前記クロック信号をゲーティングするか渡すかを決定することが、前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致する場合、前記クロック信号をゲーティングすると決定することを備え、
前記クロック信号をゲーティングするか渡すかを決定することが、前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致しない場合、前記クロック信号を渡すと決定することを備える、請求項１０に記載の方法。
【請求項１４】
前記クロック信号をゲーティングした後に、次の入力パケットについて前記パイプラインの前記入力をモニタすることと、
前記次の入力パケットを検出すると、前記クロック信号を渡すことと、
をさらに備える、請求項９に記載の方法。
【請求項１５】
前記パイプラインが画像処理パイプラインである、請求項１に記載のクロックゲーティングシステムまたは請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照]
[0001]  本願は、米国特許商標庁に２０１６年１２月１３日付で出願された仮出願第６２／４３３，５４７号、および米国特許商標庁に２０１７年８月１日付で出願された非仮出願第１５／６６６，１０７号に対する優先権およびその利益を主張し、これらの全内容は、参照によってここに組み込まれる。
［技術分野]
[0002]  本開示の態様は、クロックゲーティング（clock gating）に関し、より具体的には、クロックゲーティングイネーブル（clock gating enable generation）の生成に関する。
【背景技術】
【０００２】
[0003]  モバイルデバイスにおいて電力消費を低減することは、モバイルデバイスのバッテリ寿命を延長するために重要である。モバイルデバイスにおけるチップ（ダイ）の電力消費に著しく寄与するものは、動的電力(dynamic power)であり、それは、チップ上のトランジスタのスイッチングに起因するものである。この点について、チップ上の動的電力消費を低減するための様々な電力低減スキームが開発されている。１つのスキームは、回路が使用されていない（例えば、データを処理していない）とき、チップ上の回路（例えば、パイプライン）へのクロック信号をゲーティングすることを含む。回路へのクロック信号をゲーティングすることにより、回路中のトランジスタがスイッチングすることが阻止され、それにより動的電力が低減される。
【発明の概要】
【０００３】
[0004]  以下は、１つまたは複数の実施形態の簡略化された概要を、そのような実施形態の基本的な理解を提供するために提示する。この概要は、すべての考慮された実施形態の広範な概観ではなく、そして、すべての実施形態の主要または重要な要素を特定するようにも、任意のまたはすべての実施形態の適用範囲を詳細に叙述するようにも意図されていない。その唯一の目的は、後に提示されるより詳細な説明への前置きとして、簡略化された形式で、１つまたは複数の実施形態のうちのいくつかの概念を提示することである。
【０００４】
[0005]  １つの態様は、パイプラインのためのクロックゲーティングシステムに関する。クロックゲーティングシステムは、パイプラインへのクロック信号をゲーティングするか、またはパイプラインにクロック信号を渡すように構成されるクロックゲーティングデバイスと、クロックコントローラとを含む。クロックコントローラは、パイプラインの入力における入力パケットの数をトラック（track）することと、パイプラインの出力における出力パケットの数をトラックすることと、入力パケットの数および出力パケットの数に基づいて、クロック信号をゲーティングするか渡すかを決定することと、クロック信号を渡すという決定がされた場合、クロックゲーティングデバイスに、クロック信号を渡すように命じることと、クロック信号をゲーティングするという決定がされた場合、クロックゲーティングデバイスに、クロック信号をゲーティングするように命じることと、を行うように構成される。
【０００５】
[0006]  第２の態様は、クロックゲーティングのための方法に関する。方法は、パイプラインの入力における入力パケットの数をトラックすることと、パイプラインの出力における出力パケットの数をトラックすることと、入力パケットの数および出力パケットの数に基づいて、パイプラインへのクロック信号をゲーティングするか、パイプラインにクロック信号を渡すかを決定することと、を含む。方法はまた、クロック信号を渡すという決定がされた場合、クロック信号をパイプラインに渡すことと、クロック信号をゲーティングするという決定がされた場合、クロック信号をゲーティングすることと、を含む。
【０００６】
[0007]  前述の目的および関連する目的を達成するために、１つまたは複数の実施形態は、以下に十分に説明され、かつ特許請求の範囲において具体的に示される特徴を含む。以下の説明および添付の図面は、１つまたは複数の実施形態のある特定の例示的な態様を詳細に記載する。しかしながら、これらの態様は、様々な実施形態の原理が用いられ得る様々な方法のうちのほんのいくつかを示しているのであって、説明された実施形態は、すべてのそのような態様およびそれらの同等物を含むように意図されている。
【図面の簡単な説明】
【０００７】
【図１】[0008]  図１は、画像処理パイプラインの例を示す。
【図２Ａ】[0009]  図２Ａは、有限ステートマシンを含むクロックゲーティングシステムの例を示す。
【図２Ｂ】[0010]  図２Ｂは、図２Ａにおける有限ステートマシンについての例示的な状態図を示す。
【図３】[0011]  図３は、パイプラインの各ステージにおいて、レディ信号（a ready signal）および／または有効データについてチェックするように構成される、クロックゲーティングシステムの例を示す。
【図４】[0012]  図４は、本開示の態様によるクロックゲーティングシステムの例を示す。
【図５】[0013]  図５は、本開示のある特定の態様によるクロックコントローラの例示的なインプリメンテーションを示す。
【図６】[0014]  図６は、本開示のある特定の態様による、図５におけるクロックコントローラが、クロックコントローラの動作を時間調整するためのクロック信号を受け取る例を示す。
【図７】[0015]  図７は、異なるクロックゲーティング方法および異なるパイプライン深度についてのチップエリアの例を示す表である。
【図８】[0016]  図８は、本開示のある特定の態様による、クロックゲーティングシステム中で使用され得るクロックゲーティングセル（ＣＧＣ）の例を示す。
【図９】[0017]  図９は、本開示のある特定の態様による、クロックゲーティングのための方法を例示するフローチャートである。
【詳細な説明】
【０００８】
[0018]  添付図面に関連して以下に記載される詳細な説明は、様々な構成の説明として意図されており、ここに説明される概念が実施され得るのはこれらの構成においてのみであることを表すようには意図されていない。詳細な説明は、様々な概念の徹底した理解を提供することを目的として特定の詳細を含む。しかしながら、これらの概念がこれらの特定の詳細なしに実施され得ることは、当業者に明らかであろう。いくつかの事例では、そのような概念を曖昧にすることを避けるために、周知の構造およびコンポーネントは、ブロック図の形式で示される。
【０００９】
[0019]  システムは、データソースからのデータを処理し、処理されたデータをデータシンクに出力するように構成されるパイプラインを含み得る。パイプラインは、データを（例えば、連続的に）処理する複数のパイプラインステージ（処理ユニットまたは要素とも呼ばれる）を含む。パイプラインは、例えば、カメラセンサまたはメモリのような画像データソースからの画像データを処理するために使用され得る。
【００１０】
[0020]  この点について、図１は、画像処理パイプライン１１０（画像信号処理（ＩＳＰ）モジュールとも呼ばれる）の例を示す。画像処理パイプライン１１０は、データソース１０５（例えば、カメラセンサ、メモリ等）からデータ（例えば、画像データ）を受け取る。画像処理パイプライン１１０は、受け取られたデータを処理し、処理されたデータ（例えば、処理された画像データ）を、データシンク１１５（例えば、ディスプレイプロセッサ、セントラルプロセシングユニット（ＣＰＵ）、メモリ等）に出力する。画像処理パイプライン１１０は、データを処理するための複数のパイプラインステージを含む。画像処理は、ノイズフィルタリング、色補正、トーンマッピング、デモザイキング等のうちの１つまたは複数を含み得る。
【００１１】
[0021]  画像処理パイプライン１１０は、画像処理パイプライン１１０の動作を時間調整するためのクロック信号（「ｃｌｋ」と表される）を受け取る。クロック信号ｃｌｋは、画像処理パイプライン１１０がデータを処理するために必要である。しかしながら、処理される必要のあるデータが画像処理パイプライン１１０中に存在しない、ある特定の時間期間（例えば、フレーム間の）が存在する。これらの時間期間の間、電力を節約するため、画像処理パイプライン１１０へのクロック信号ｃｌｋをゲーティング（ディセーブル）することが望ましい。クロック信号ｃｌｋをゲーティングすることにより、処理される必要のあるデータがパイプライン１１０中に存在しないときに画像処理パイプライン１１０中のトランジスタがスイッチすることを阻止することで、動的電力消費が低減される。
【００１２】
[0022]  図２Ａは、１つのアプローチによるクロックゲーティングの例を示す。このアプローチでは、クロックゲーティングシステム２１５は、クロックイネーブル有限ステートマシン（ＦＳＭ）２２０と、クロックゲーティングデバイス２２５とを含む。クロックゲーティングデバイス２２５は、以下にさらに説明されるように、ＦＳＭ２２０の制御下で、画像処理パイプライン２１０へのクロック信号ｃｌｋを選択的にゲーティングするように構成される。
【００１３】
[0023]  この例では、画像処理パイプライン２１０は、データソース（図２Ａには示されていない）から有効データ（例えば、ピクセルデータ）をフレーム単位で受け取り、ここにおいて各フレームは有効データの複数のラインを含む。図２Ａでは、データソースから画像処理パイプライン２１０によって受け取られる有効データは、「ｒｘ＿ｖｌｄ」と表され、画像処理パイプライン２１０によってデータシンク（図２Ａには示されていない）に出力される有効データは、「ｔｘ＿ｖｌｄ」と表される。
【００１４】
[0024]  この例では、画像処理パイプライン２１０は、データソースから受取制御信号（「ｒｘ＿ｃｔｒｌ」と表される）を受け取り、データシンクに伝送制御信号（「ｔｘ＿ｃｔｒｌ」と表される）を出力する。受取制御信号ｒｘ＿ｃｔｒｌは、到来フレーム（incoming frame）の始まり（「ｒｘｓｏｆ」と表される）、到来フレームの終わり（「ｒｘｅｏｆ」と表される）、到来ラインの始まり（「ｒｘｓｏｌ」と表される）、および到来ラインの終わり（「ｒｘｅｏｌ」と表される）を示すマーカを含む。伝送制御信号ｔｘ＿ｃｔｒｌは、送出フレーム（outgoing frame）の始まり（「ｔｘｓｏｆ」と表される）、送出フレームの終わり（「ｔｘｅｏｆ」と表される）、送出ラインの始まり（「ｔｘｓｏｌ」と表される）、および送出ラインの終わり（「ｔｘｅｏｌ」と表される）を示すマーカを含む。
【００１５】
[0025]  動作中、ＦＳＭ２２０は、受取制御信号ｒｘ＿ｃｔｒｌおよび伝送制御信号ｔｘ＿ｃｔｒｌを受け取り、受け取られた制御信号に基づいて、クロックゲーティングデバイス２２５に、クロック信号ｃｌｋをゲーティング（ディセーブル）するように命じるか、クロック信号ｃｌｋを渡す（イネーブルする）ように命じるかを決定する。例えば、ＦＳＭ２２０は、隣接したフレーム間に有効データが存在しないと仮定して、クロックゲーティングデバイス２２５に、送出フレームの終わり（ｔｘｅｏｆ）と次の到来フレームの始まり（ｒｘｓｏｆ）との間、クロック信号ｃｌｋをゲーティング（ディセーブル）するように命じ得る。ＦＳＭ２２０はまた、隣接したライン間に有効データが存在しないと仮定して、クロックゲーティングデバイス２２５に、送出ラインの終わり（ｔｘｅｏｌ）と次の到来ラインの始まり（ｒｘｓｏ１）との間、クロック信号ｃｌｋをゲーティング（ディセーブル）するように命じし得る。したがって、ＦＳＭ２２０は、電力消費を低減するために、フレーム内の隣接したライン間および隣接したフレーム間で、クロック信号ｃｌｋをゲーティング（ディセーブル）し得る。図２Ｂは、クロック信号ｃｌｋがアイドル状態においてゲーティングされる、ある特定の態様によるＦＳＭ２２０についての例示的なステートマシン図を示す。
【００１６】
[0026]  このアプローチの欠点は、アクティブライン内に１つまたは複数のバブルが存在するとき、ＦＳＭ２２０がクロック信号ｃｌｋをゲーティング（ディセーブル）しない点であり、ここにおいてバブルは有効データの無いギャップである。したがって、このアプローチは、有効データがパイプライン２１０に存在しないある特定の時間期間の間、クロック信号ｃｌｋをゲーティング（ディセーブル）する機会を逃し、それにより電力を無駄にする。
【００１７】
[0027]  図３は、別のアプローチによるクロックゲーティングの例を示す。このアプローチでは、画像処理パイプライン３１０は、データソース（図３には示されていない）から有効データｒｘ＿ｖｌｄを受け取り、有効データｔｘ＿ｖｌｄをデータシンク（図３には示されていない）に出力する。加えて、画像処理パイプライン３１０は、画像処理パイプライン３１０がデータソースから有効データを受け取る用意があることをデータソースに示すための受取レディ信号（「ｒｘ＿ｒｄｙ」と表される）をデータソースに出力する。画像処理パイプライン３１０はまた、データシンクが画像処理パイプライン３１０から有効データを受け取る用意があることを示す伝送レディ信号（「ｔｘ＿ｒｄｙ」と表される）をデータシンクから受け取る。
【００１８】
[0028]  この例では、画像処理パイプライン３１０は、画像処理パイプライン３１０中の異なるポイントにおける有効データ（例えば、ピクセルデータ）をラッチするためのラッチ３１５−１〜３１５−３と、異なるパイプラインステージにおける有効データを処理するように構成される処理ユニット３２０−１〜３２０−３（例えば、組合せ論理）とを含む。画像処理パイプライン３１０はまた、受取レディ信号ｒｘ＿ｒｄｙを生成するための論理３２５−１〜３２５−３を含む。例えば、論理３２５−１〜３２５−３は、有効データについてラッチをチェックし、かつ伝送レディ信号ｔｘ＿ｒｄｙをチェックして、パイプライン３１０がデータソースからさらなる有効データを受け取る用意があるかどうかを決定し得る。例えば、論理３２５−１〜３２５−３は、ラッチがフル（full）であり、かつ伝送レディ信号ｔｘ＿ｒｄｙがアサートされない場合、受取レディ信号ｒｘ＿ｒｄｙをデアサートし得る。このケースでは、パイプライン３１０はフル（full）であり、かつさらなる有効データのための余地をパイプライン３１０に作るためにデータシンクに有効データを出力（伝送）することができない可能性がある。ラッチ３１５−１〜３１５−３、処理ユニット３２０−１〜３２０−３、および／または論理３２５−１〜３２５−３は、クロック信号ｃｌｋ（図３には示されていない）を使用して時間調整され得る。
【００１９】
[0029]  この例では、クロックゲーティングシステムは、パイプライン３１０中に有効データが存在するかどうかをチェックするクロックゲーティング制御論理３３０（図３ではＯＲゲートとして表される）を含む。クロックゲーティング制御論理３３０は、レディ信号および／または有効データについて複数のパイプラインステージのうちの各々のものをチェックすることによって、これを行う。クロックゲーティング制御論理３３０がパイプライン状態のうちの少なくとも１つにおいてレディ信号および／または有効データを検出する場合には、クロックゲーティング制御論理３３０は、画像処理パイプライン３１０へのクロック信号ｃｌｋをイネーブルする（渡す）。クロックゲーティング制御論理３３０がレディ信号および／または有効データを検出しない場合には、クロックゲーティング制御論理３３０は、クロック信号ｃｌｋをディセーブル（ゲーティング）する。
【００２０】
[0030]  図２Ａを参照して上で説明された前述のクロックゲーティングアプローチとは異なり、このアプローチは、アクティブライン内のバブル（有効データの無いギャップ）の間、クロック信号クロックｃｌｋをゲーティング（ディセーブル）することができる。これは、このアプローチが、パイプライン３１０中に有効データが存在しないときにクロック信号クロックｃｌｋをゲーティング（ディセーブル）するからである。しかしながら、このアプローチは、パイプライン深度が深いとき、クロック周波数が高いとき等に、時間調整に関連した問題を潜在的に引き起こす可能性がある。これは、パイプライン深度（パイプラインステージの数）が増すにつれてクロックゲーティング制御論理３３０へのファンイン（すなわち、入力の数）が増加するからである。ファンインの増加により、クロックゲーティング制御論理３３０中の伝搬遅延が増加し、これにより、特に高周波数で、クロックゲーティング制御論理３３０が適切な動作のためのある特定の時間調整要件を満たすことがより難しくなる。その結果、このアプローチを使用したパイプライン３１０をスケールアップすることは難しい。
【００２１】
[0031]  図４は、本開示のある特定の態様によるクロックゲーティングシステム４１５を示す。クロックゲーティングシステム４１５は、クロックコントローラ４２０とクロックゲーティングデバイス４２５とを含む。クロックゲーティングデバイス４２５は、以下にさらに説明されるように、クロックコントローラ４２０の制御下で、画像処理パイプライン４１０へのクロック信号ｃｌｋを選択的にゲーティングするように構成される。
【００２２】
[0032]  動作中、画像処理パイプライン４１０は、データソースから有効データ（例えば、ピクセルデータ）をパケット単位で受け取り、有効データ（例えば、ピクセルデータ）をデータシンクにパケット単位で出力する。各パケットは、Ｎビットの有効データ（例えば、８〜１４ビット）を含み得る。クロックコントローラ４２０は、画像処理パイプライン４１０の入力における入力パケットの数（画像処理パイプライン４１０によって受け取られるパケットの数）をトラックする。クロックコントローラ４２０はまた、画像処理パイプライン４１０の出力における出力パケットの数（画像処理パイプライン４１０によって出力されるパケットの数）をトラックする。一例では、クロックコントローラ４２０は、受取レディ信号ｒｘ＿ｒｄｙがアサートされるとき、入力パケットの数をトラックし、伝送レディ信号ｔｘ＿ｒｄｙがアサートされるとき、出力パケットの数をトラックする。別の例では、クロックコントローラ４２０は、それぞれ、受取レディ信号ｒｘ＿ｒｄｙおよび伝送レディ信号ｔｘ＿ｒｄｙとは無関係に、入力パケットの数をトラックする、および出力パケットの数をトラックする。
【００２３】
[0033]  クロックコントローラ４２０は次いで、画像処理パイプライン４１０が空である（パイプライン４１０中に有効データが無い）かどうかを決定するために、入力パケットの数を出力パケットの数と比較する。例えば、クロックコントローラ４２０は、入力パケットの数と出力パケットの数とが一致するとき、パイプライン４１０が空であると決定し、入力パケットの数の数と出力パケットの数とが一致しないとき、パイプライン４１０が空でないと決定し得る。
【００２４】
[0034]  パイプライン４１０が空であるとクロックコントローラ４２０が決定する場合には、クロックコントローラ４２０は、電力を節約するために、クロックゲーティングデバイス４２５に、パイプライン４１０へのクロック信号ｃｌｋをゲーティング（ディセーブル）するように命じ得る。一例では、パイプライン４１０が空であると決定した後、クロックコントローラ４２０はまた、パイプライン４１０の入力において有効データの到来パケットが存在するかどうかをチェックし得る。クロックコントローラ４２０が有効データの到来パケットを検出しない場合には、クロックコントローラ４２０は、クロックゲーティングデバイス４２５に、パイプライン４１０へのクロック信号ｃｌｋをゲーティング（ディセーブル）するように命じ得る。
【００２５】
[0035]  パイプライン４１０が空でないとクロックコントローラ４２０が決定する場合には、クロックコントローラ４２０は、クロック信号ｃｌｋをイネーブルされた（ゲーティングされていない）ままにし得る。
【００２６】
[0036]  パイプライン４１０へのクロック信号ｃｌｋがゲーティング（ディセーブル）された後、クロックコントローラ４２０は、有効データの入力パケットについてパイプライン４１０の入力をモニタし得る。クロックコントローラ４２０が入力パケットを検出する場合には、クロックコントローラ４２０は、クロック信号ｃｌｋをイネーブルして（渡して）、パイプライン４１０が入力パケットの処理を開始することができるようにする。クロックコントローラ４２０が入力パケットを検出しない場合には、クロックコントローラ４２０は、クロック信号ｃｌｋをディセーブルされた（ゲーティングされた）ままにする。一例では、クロックコントローラ４２０は、受取レディｒｘ＿ｒｄｙがアサートされるとき、入力パケットについてパイプライン４１０の入力をモニタする。この例では、パイプライン４１０は、クロック信号ｃｌｋがゲーティングされるとき、受取レディ信号ｒｘ＿ｒｄｙを保持する。別の例では、クロックコントローラ４２０は、受取レディ信号ｒｘ＿ｒｄｙとは無関係に、入力パケットについてパイプライン４１０の入力をモニタする。
【００２７】
[0037]  クロックコントローラ４２０は、クロックコントローラ４２０が、アクティブライン内のバブルの間、クロック信号ｃｌｋをゲーティングすることができるという点で、図２Ａを参照して上で説明された第１のクロックゲーティングアプローチに対して有利である。これは、パイプライン４１０がバブルの間に空になるとき、クロックコントローラ４２０がクロック信号ｃｌｋをゲーティングするからである。
【００２８】
[0038]  さらに、クロックコントローラ４２０は、図３に示されたクロックゲーティング制御論理３３０と比較してクロックコントローラ４２０が少ないファンイン（入力の数）を有する点で、図３を参照して上で説明された第２のクロックゲーティングアプローチに対して有利である。これは、クロックコントローラ４２０が、レディ信号および／または有効データについてパイプライン４１０の各パイプラインステージをチェックする代わりに、パイプライン４１０の入力および出力をチェックするからである。その結果、クロックコントローラ４２０のファンインは、さらなるパイプラインステージが追加されても増加する必要がなく、それゆえにこのアプローチはより拡張可能（scalable）となる。このアプローチの比較的少ないファンインは、上で説明された第２のクロックゲーティングアプローチに関連する時間調整の問題を緩和する。
【００２９】
[0039]  図５は、本開示のある特定の態様によるクロックコントローラ４２０の例示的なインプリメンテーションを示す。この例では、クロックコントローラ４２０は、第１の制御デバイス５１０、第１のカウンタ５２０、第２の制御デバイス５１５、第２のカウンタ５２５、比較デバイス５４０、およびクロック制御デバイス５５０を含む。以下にさらに説明されるように、第１のカウンタ５２０は、入力パケットの数をカウントするように構成され、第２のカウンタ５１５は、出力パケットの数をカウントするように構成される。各カウンタは、最大カウンタ値に達したときに最低値に戻る（wraps around）ラップアラウンドカウンタであり得る。
【００３０】
[0040]  動作中、第１の制御デバイス５１０は、（例えば、受取レディ信号ｒｘ＿ｒｄｙがアサートされるとき）有効データの入力パケットについてパイプライン４１０の入力をモニタする。例えば、各到来パケットは、パケットインジケータ（例えば、デリミタ）によって示され得る。パケットインジケータは、パケットの始まりまたはパケットの終わりに位置し得る。この例では、第１の制御デバイス５１０は、それぞれのパケットインジケータを検出することによって、入力パケットを検出し得る。第１の制御デバイス５１０は、第１の制御デバイス５１０が入力パケットを検出するたびに、第１のカウンタ５２０のカウント値をインクリメントし得る。したがって、この例では、第１のカウンタ５２０は入力パケットの数をトラックする。
【００３１】
[0041]  第２の制御デバイス５１５は、（例えば、伝送レディ信号ｔｘ＿ｒｄｙがアサートされるとき）有効データの出力パケットについてパイプライン４１０の出力をモニタする。例えば、各送出パケットは、パケットインジケータ（例えば、デリミタ）によって示され得る。パケットインジケータは、パケットの始まりまたはパケットの終わりに位置し得る。この例では、第２の制御デバイス５１５は、それぞれのパケットインジケータを検出することによって、出力パケットを検出し得る。第２の制御デバイス５１５は、第２の制御デバイス５１５が出力パケットを検出するたびに、第２のカウンタ５２５のカウント値をインクリメントし得る。したがって、この例では、第２のカウンタ５２５は出力パケットの数をトラックする。
【００３２】
[0042]  比較デバイス５４０は、第１のカウンタ５２０のカウント値を第２のカウンタ５２５のカウント値と比較する。カウント値が一致する場合には、比較デバイス５４０は、パイプライン４１０が空であると決定する。カウント値が一致しない場合には、比較デバイス５４０は、パイプライン４１０が空でないと決定する。比較デバイス５４０は次いで、比較に基づいて、空フラグを生成し、ここにおいて空フラグは、パイプライン４１０が空であるかどうかを示す。例えば、空フラグは、パイプライン４１０が空であるという決定がされたときには第１の論理値（例えば、１）を、およびパイプライン４１０が空でないという決定がされたときには第２の論理値（例えば、０）を有し得る。
【００３３】
[0043]  クロック制御デバイス５５０は、比較デバイス５４０から空フラグを受け取るように構成される。空フラグが、パイプラインが空でないと示す場合には、クロック制御デバイス５５０は、クロック信号ｃｌｋをイネーブルされた（ゲーティングされていない）ままにし得る。このケースでは、クロックゲーティングデバイス４２５は、クロック信号ｃｌｋをパイプライン４１０に渡す。空フラグが、パイプラインが空であると示す場合には、クロック制御デバイス５５０は、クロックゲーティングデバイス４２５に、パイプライン４１０へのクロック信号ｃｌｋをゲーティング（ディセーブル）するように命じ得る。一例では、空フラグが、パイプラインが空であると示す場合には、クロック制御デバイス５５０はまた、パイプライン４１０の入力において有効データの到来パケットがあるかどうかをチェックし得る。クロック制御デバイス５５０が有効データの到来パケットを検出しない場合には、クロック制御デバイス５５０は、クロックゲーティングデバイス４２５に、パイプライン４１０へのクロック信号ｃｌｋをゲーティング（ディセーブル）するように命じ得る。この例では、クロック制御デバイス５５０は、それぞれのパケットインジケータ（例えば、デリミタ）を検出することによって、到来パケットを検出し得る。クロックゲーティングデバイス４２５がクロック信号ｃｌｋをゲーティング（ディセーブル）するとき、クロックゲーティングデバイス４２５は、クロック信号ｃｌｋの論理状態とは無関係に、パイプライン４１０に一定の論理状態（０または１）を出力する。
【００３４】
[0044]  パイプライン４１０へのクロック信号ｃｌｋがゲーティングされた（ディセーブルされた）後、クロック制御デバイス５５０は、有効データの入力パケットについてパイプライン４１０の入力をモニタし得る。クロック制御デバイス５５０が入力パケットを検出する場合には、クロック制御デバイス５５０は、クロック信号ｃｌｋをイネーブルする（渡す）。クロック制御デバイス５５０が入力パケットを検出しない場合には、クロック制御デバイス５５０は、クロック信号ｃｌｋをディセーブルされた（ゲーティングされた）ままにする。
【００３５】
[0045]  一例では、クロック制御デバイス５５０は、クロック信号ｃｌｋをイネーブルするために、クロックゲーティングデバイス４２５に第１の論理値（例えば、１）を出力し、クロック信号ｃｌｋをゲーティング（ディセーブル）するために、クロックゲーティングデバイス４２５に第２の論理値（例えば、０）を出力するように構成され得る。この例では、クロック制御デバイス５５０は、空フラグが、パイプラインが空でないと示すとき、第１の論理値を出力する。クロック制御デバイス５００は、空フラグが、パイプラインが空であると示すとき、第２の論理値を出力し得る。一例では、クロック制御デバイス５５０は、空フラグが、パイプライン４１０が空であると示し、かつパイプラインの入力において入力パケットが検出されないとき、第２の論理値を出力し得る。クロック信号ｃｌｋがゲーティングされた後、クロック制御デバイス５５０は、入力パケットについてパイプラインの入力をモニタし、入力パケットを検出した際に、クロック信号ｃｌｋを再イネーブルするために、それの出力を第２の論理値から第１の論理値に変え得る。
【００３６】
[0046]  クロックコントローラ４２０はまた、クロックコントローラ４２０の動作を時間調整するために、クロック信号ｃｌｋを受け取り得る。この点について、図６は、第１の制御デバイス５１０、第１のカウンタ５２０、第２の制御デバイス５１５、第２のカウンタ５２５、および比較デバイス５４０が、クロックゲーティングデバイス４２５の出力からクロック信号ｃｌｋを受け取る例を示す。したがって、この例では、パイプライン４２０へのクロック信号ｃｌｋがディセーブルされる（ゲーティングされる）とき、電力を節約するために、第１の制御デバイス５１０、第１のカウンタ５２０、第２の制御デバイス５１５、第２のカウンタ５２５、および比較デバイス５４０へのクロック信号ｃｌｋもまたゲーティングされる。第１のおよび第２のカウンタ５２０および５２５は、クロック信号ｃｌｋがゲーティングされるとき、それらの現在のカウント値を保持し得る。この例では、第１のおよび第２のカウンタ５２０および５２５の各々は、クロック信号ｃｌｋが再イネーブルされるとき、保持されたカウント値からカウントを再開し得る。代替的に、カウンタ５２０および５２５は、クロック信号ｃｌｋがゲーティングされるとき、リセットされ得る。この例では、第１のおよび第２のカウンタ５２０および５２５の各々は、クロック信号ｃｌｋが再イネーブルされるとき、リセットされたカウント値（例えば、０）からカウントを開始し得る。
【００３７】
[0047]  クロック制御デバイス５５０へのクロック信号ｃｌｋは、クロックゲーティングデバイス４２５をバイパスして、パイプライン４１０へのクロック信号ｃｌｋがゲーティングされるときに、クロック制御デバイス５５０へのクロック信号ｃｌｋがゲーティングされないようにし得る。この例では、クロック信号ｃｌｋは、パイプライン４１０の入力において入力パケットを検出するために使用されるクロック制御デバイス５５０の動作を時間調整し、入力パケットを検出した際に、パイプライン４１０へのクロック信号ｃｌｋをイネーブルする（渡す）ために使用され得る。別の例では、クロック制御デバイス５５０は、パイプライン４１０の入力において入力パケットが存在するときにクロック信号ｃｌｋをイネーブルするためにクロック信号ｃｌｋを必要としない、１つまたは複数の論理ゲートを含み得る。このケースでは、クロック信号ｃｌｋがクロックゲーティングデバイス４２５に提供される必要がない。
【００３８】
[0048]  クロックコントローラ４２０の様々なコンポーネントは、以下にさらに説明されるように、同期ＦＩＦＯ（first-in first-out）コントローラからのコンポーネントを使用してインプリメントされ得る。
【００３９】
[0049]  同期ＦＩＦＯコントローラは、ＦＩＦＯメモリへのデータの書き込み、およびＦＩＦＯメモリからのデータの読み出しを制御する。この点について、ＦＩＦＯコントローラは、書き込みカウンタ、読み出しカウンタ、および比較デバイスを含み得る。書き込みカウンタのカウント値は、データがＦＩＦＯメモリに入力されるときにインクリメントされ、および、データが書き込まれることになるＦＩＦＯメモリ中の位置（アドレス）を指定する書き込みポインタを生成するために使用される。読み出しカウンタのカウント値は、データがＦＩＦＯメモリから読み出されるときにインクリメントされ、および、データが読み出されることになるＦＩＦＯメモリ中の位置（アドレス）を指定する読み出しポインタを生成するために使用される。比較デバイスは、ＦＩＦＯメモリが空であるかどうかを決定するために書き込みポインタを読み出しポインタと比較し、比較に基づいて、ＦＩＦＯメモリが空であるかどうかを示す空フラグを出力する。例えば、比較デバイスは、書き込みポインタおよび読み出しポインタが一致するとき、ＦＩＦＯメモリが空であると決定し得る。
【００４０】
[0050]  一例では、クロックコントローラ４２０の第１のカウンタ５２０、第２のカウンタ５２５、および比較デバイス５４０は、ＦＩＦＯコントローラからの書き込みカウンタ、読み出しカウンタ、および比較デバイスを使用してインプリメントされ得る。この例では、パイプライン４１０は、パイプライン４１０が空であるかどうかを決定する目的で、ＦＩＦＯメモリとして扱われる。これにより、クロックコントローラ４２０のための空フラグを生成するために、ＦＩＦＯコントローラのための空フラグを生成するために使用されるＦＩＦＯコントローラのコンポーネント（例えば、書き込みカウンタ、読み出しカウンタ、および比較デバイス）を、クロックコントローラ４２０が再使用することが可能となる。
【００４１】
[0051]  上記の例では、パイプライン４１０は、パイプライン４１０が空であるかどうかを決定する目的で、ＦＩＦＯメモリとして扱われるが、パイプラインは、他の点ではＦＩＦＯメモリとは異なることに留意されたい。例えば、パイプライン４１０はデータを処理し、一方ＦＩＦＯメモリは単純にデータを記憶する（例えば、バッファする）。
【００４２】
[0052]  図７は、異なるパイプライン深度（すなわち、異なる数のパイプラインステージ）について説明された３つの異なるクロックゲーティング方法についてのチップエリアの例を示す表７００である。表７００中の最初の４行は、２、５０、１００および５００のパイプライン深度についての（図２Ａに示された）ＦＳＭアプローチについてのチップエリアの例を示す。表７００中の次の４行は、２、５０、１００および５００のパイプライン深度についての（図３に示された）ＯＲゲートアプローチについてのチップエリアの例を示す。表７００中の最後の４行は、２、５０、１００および５００のパイプライン深度についての（図４〜図６に示された）ＦＩＦＯアプローチについてのチップエリアの例を示す。
【００４３】
[0053]  図７に示されるように、ＦＳＭアプローチについてのチップエリアは、パイプライン深度が増すにつれて増加しない。対照的に、ＯＲゲートアプローチについてのチップエリアは、パイプライン深度の増加に伴っておおよそ線形に増加する。これは、追加的なパイプラインステージごとに追加的な入力がＯＲゲートに追加されるからである。パイプライン深度の増加によりＯＲゲートによって占有されるチップエリアの著しい増加が生じる可能性があるので、ＯＲゲートアプローチはあまり拡張可能でない。チップエリアの著しい増加は、チップ上の貴重なスペース（real estate）を占有するだけでなく、電力消費の著しい増加にも転換される。
【００４４】
[0054]  ＦＩＦＯアプローチについてのチップエリアは、パイプライン深度の増加に伴ってわずかに増加する。チップエリアの増加は、パイプライン深度が増加につれてより多くの数の到来および送出パケットをトラックするために必要とされる追加のビットに起因する。追加のビットは、パイプライン深度のｌｏｇ２（すなわち、底を２とする対数(base 2 logarithm）)でスケーリングされる。表７００に示されるように、ＦＩＦＯアプローチについてのチップエリアの増加は、ＯＲゲートアプローチに比べて著しく少ない。したがって、パイプライン深度が増加するときにＦＩＦＯアプローチが必要とするエリアおよび電力は、ＯＲゲートアプローチに比べて著しく少ない。
【００４５】
[0055]  図７に示される例では、ＦＩＦＯアプローチは、ＦＳＭアプローチに比べてより多くのチップエリアを使用（occupies）する。しかしながら、ＦＩＦＯアプローチは、アクティブラインにおけるバブルの間、クロック信号ｃｌｋをゲーティングすることができ、一方でＦＳＭアプローチは、上述したように、バブルの間、クロック信号ｃｌｋをゲーティングしない。したがって、ＦＩＦＯアプローチは、より頻繁にクロック信号をゲーティングする（すなわち、クロック信号をゲーティングする機会をより多く活用する）ことができ、よってクロックゲーティングによるより多くの電力の節約をもたらす。
【００４６】
[0056]  クロックゲーティングデバイス４２５は、当該技術分野において知られているいくつかのクロックゲーティングセル（ＣＧＣ）のうちのいずれのものを使用してもインプリメントされ得る。例えば、チップ（ダイ）についての標準的なセルライブラリは、典型的には１つまたは複数のＣＧＣを含む。この例では、クロックゲーティングデバイス４２５をインプリメントするために、セルライブラリ中のＣＧＣのうちの１つが選択され得る。
【００４７】
[0057]  この点について、図８は、クロックゲーティングデバイス４２５をインプリメントするために使用され得る例示的なクロックゲーティングセル（ＣＧＣ）８１０を示す。この例では、ＣＧＣ８１０は、ネガティブエッジトリガラッチ８２０とＡＮＤゲート８３０とを含む。ＣＧＣ８１０は、クロック制御デバイス５５０からゲート制御信号を受け取るゲート制御入力８１２と、クロック信号ｃｌｋを受け取るクロック入力８１４と、パイプライン４１０のクロック入力に結合された出力８１６とを有する。ラッチ８２０は、ゲート制御信号を受け取る制御入力８２２と、クロック信号ｃｌｋを受け取るクロック入力８２４と、出力８２６とを有する。ＡＮＤゲート８３０は、ラッチ８２０の出力８２６に結合された第１の入力８３２と、クロック信号ｃｌｋを受け取る第２の入力８３４と、ＣＧＣ８１０の出力８１６に結合された出力８３６とを有する。
【００４８】
[0058]  この例では、ＣＧＣ８１０は、クロック制御デバイス５５０からのゲート制御信号がｌｏｗ（論理０）であるとき、クロック信号ｃｌｋをゲーティングする。このケースでは、ＣＧＣ８１０は、クロック信号ｃｌｋの論理状態に関わらず、パイプライン４１０に論理０を出力する。ＣＧＣ８１０は、ゲート制御信号がｈｉｇｈ（論理１）であるとき、クロック信号ｃｌｋをパイプライン４１０に渡す。ゲート制御信号はまた、それが、パイプラインへのクロック信号ｃｌｋがイネーブルされるかどうかを制御するので、クロックイネーブル信号とも呼ばれ得る。
【００４９】
[0059]  動作中、ラッチ８２０は、クロック信号ｃｌｋの立ち下がりエッジにおけるゲート制御信号の論理値をラッチし、ゲート制御信号のラッチされた論理値をＡＮＤゲート８３０の第１の入力８３２に出力する。ゲート制御信号のラッチされた論理値が論理１である場合には、ＡＮＤゲート８３０は、クロック信号ｃｌｋをＣＧＣ８１０の出力８１６に渡す。ゲート制御信号のラッチされた論理値が論理０である場合には、ＡＮＤゲート８３０は、クロック信号ｃｌｋの論理状態に関わらず、論理０を出力し、それにより効率的にクロック信号ｃｌｋをゲーティングする。この例では、ラッチ８２０は、ＣＧＣ８１０の出力８１６においてグリッチを防ぐために使用される。図８に示されたＣＧＣ８１０は単なる例であり、クロックゲーティングデバイス４２５は、当該技術分野において知られている他のＣＧＣを使用してインプリメントされ得ることは認識されるべきである。
【００５０】
[0060]  図９は、本開示のある特定の態様によるクロックゲーティングのための方法９００を例示する。方法９００は、クロックコントローラ４２０およびクロックゲーティングデバイス４２５によって実施され得る。
【００５１】
[0061]  ステップ９１０において、パイプラインの入力における入力パケットの数がトラックされる。例えば、入力パケットの数は、入力パケットごとに第１のカウンタ（例えば、第１のカウンタ５２０）のカウント値をインクリメントすることによって、トラックされ得る。
【００５２】
[0062]  ステップ９２０において、パイプラインの出力における出力パケットの数がトラックされる。例えば、入力パケットの数は、出力パケットごとに第２のカウンタ（例えば、第２のカウンタ５２５）のカウント値をインクリメントすることによって、トラックされ得る。
【００５３】
[0063]  ステップ９３０において、入力パケットの数および出力パケットの数に基づいて、パイプラインへのクロック信号をゲーティングするか、パイプラインにクロック信号を渡すかの決定が成される。例えば、入力パケットの数と出力パケットの数とが一致する場合、クロック信号をゲーティングするという決定が成され得、入力パケットの数と出力パケットの数とが一致しない場合、クロック信号をパイプラインに渡すという決定が成され得る。
【００５４】
[0064]  ステップ９４０において、クロック信号を渡すという決定がされた場合、クロック信号はパイプラインに渡される。
【００５５】
[0065]  ステップ９５０において、クロック信号をゲーティングするという決定がされた場合、クロック信号はゲーティングされる。
【００５６】
[0066]  上で説明されたクロックコントローラ４２０は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他のプログラマブル論理デバイス、ディスクリートハードウェアコンポーネント（例えば、論理ゲート）、またはここに説明された機能を実施するように設計されたそれらの任意の組合せでインプリメントされ得る。プロセッサは、機能を実施するためのコードを備えるソフトウェアを実行することによって、ここに説明される機能を実施し得る。ソフトウェアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、光学ディスク、および／または磁気ディスクのようなコンピュータ読み取り可能な記憶媒体上に記憶され得る。
【００５７】
[0001]  本開示内では、「例示的な（exemplary）」という用語は、「例、事例、または例示としての役割を果たす」という意味で使用される。「例示的」であるとここで説明されたいずれのインプリメンテーションまたは態様も、必ずしも、本開示の他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「態様（aspects）」という用語は、本開示のすべての態様が、説明された特徴、利点または動作のモードを含むことを必要としない。
【００５８】
[0002]  本開示は、イメージ処理パイプラインの例を使用して上で説明されたが、本開示は、この例に限定されないことは認識されるべきである。本開示の実施形態は、他のタイプのパイプラインへのクロックシグナルをゲーティングするためにデータを処理する他のタイプのパイプラインに適用され得る。
【００５９】
[0003]  本開示の先の説明は、当業者が本開示を製造または使用することを可能にするために提供されている。本開示への様々な修正は、当業者にとって容易に明らかとなり、ここに定義された一般的な原理は、本開示の範囲または精神から逸脱することなく、他のバリエーションに適用され得る。したがって、本開示は、ここに説明された例に限定されるようには意図されておらず、ここに開示された原理および新規な特徴と一致する最も広い範囲を与えられるべきである。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]  パイプラインのためのクロックゲーティングシステムであって、
前記パイプラインにクロック信号を渡す、または前記パイプラインへのクロック信号をゲーティングするように構成されるクロックゲーティングデバイスと、
前記パイプラインの入力における入力パケットの数をトラックすることと、前記パイプラインの出力における出力パケットの数をトラックすることと、前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記クロック信号を渡すかゲーティングするかを決定することと、前記クロック信号を渡すという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じることと、前記クロック信号をゲーティングするという決定がされた場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じることと、を行うように構成されるクロックコントローラと、
を備える、クロックゲーティングシステム。
[Ｃ２]  前記クロックコントローラが、
第１のカウンタと、
前記パイプラインの前記入力において前記入力パケットを検出し、前記検出された入力パケットの各々について前記第１のカウンタのカウント値をインクリメントするように構成される第１の制御デバイスと、ここにおいて、前記第１のカウンタの前記カウント値は前記入力パケットの前記数を示す、
第２のカウンタと、
前記パイプラインの前記出力において前記出力パケットを検出し、前記検出された出力パケットの各々について前記第２のカウンタのカウント値をインクリメントするように構成される第２の制御デバイスと、ここにおいて、前記第２のカウンタの前記カウント値は前記出力パケットの前記数を示す、
を備える、Ｃ１に記載のクロックゲーティングシステム。
[Ｃ３]  前記クロックコントローラが、
前記第１のカウンタの前記カウント値を前記第２のカウンタの前記カウント値と比較し、前記比較に基づいてフラグを生成するように構成される比較デバイスと、ここにおいて、前記フラグは、前記パイプラインが空であるかどうかを示す、
前記フラグが、前記パイプラインが空であると示さない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じ、前記フラグが、前記パイプラインが空であると示す場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じるように構成されるクロック制御デバイスと、
をさらに備える、Ｃ２に記載のクロックゲーティングシステム。
[Ｃ４]  前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致する場合、前記フラグは、前記パイプラインが空であることを示す、Ｃ３に記載のクロックゲーティングシステム。
[Ｃ５]  前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致しない場合、フラグは、前記パイプラインが空であることを示さない、Ｃ４に記載のクロックゲーティングシステム。
[Ｃ６]  前記第１の制御デバイスが、前記入力パケットのデリミタを検出することによって、前記入力パケットの各々を検出するように構成される、Ｃ２に記載のクロックゲーティングシステム。
[Ｃ７]  前記第２の制御デバイスが、前記出力パケットのデリミタを検出することによって、前記出力パケットの各々を検出するように構成される、Ｃ６に記載のクロックゲーティングシステム。
[Ｃ８]  前記クロックコントローラが、前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じ、前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるように構成される、Ｃ１に記載のクロックゲーティングシステム。
[Ｃ９]  前記クロックゲーティングデバイスに、前記クロック信号をゲーティングするように命じた後に、前記クロックコントローラが、次の入力パケットについて前記パイプラインの前記入力をモニタし、前記次の入力パケットを検出すると、前記クロックゲーティングデバイスに、前記クロック信号を渡すように命じるようにさらに構成される、Ｃ８に記載のクロックゲーティングシステム。
[Ｃ１０]  前記パイプラインが画像処理パイプラインである、Ｃ１に記載のクロックゲーティングシステム。
[Ｃ１１]  クロックゲーティングのための方法であって、
パイプラインの入力における入力パケットの数をトラックすることと、
前記パイプラインの出力における出力パケットの数をトラックすることと、
前記入力パケットの前記数および前記出力パケットの前記数に基づいて、前記パイプラインへのクロック信号をゲーティングするか、前記パイプラインにクロック信号を渡すかを決定することと、
前記クロック信号を渡すという決定がされた場合、前記クロック信号を前記パイプラインに渡すことと、
前記クロック信号をゲーティングするという決定がされた場合、前記クロック信号をゲーティングすることと、
を備える、方法。
[Ｃ１２]  前記入力パケットの前記数をトラックすることが、前記入力パケットの各々について第１のカウンタのカウント値をインクリメントすることを備え、前記出力パケットの前記数をトラックすることが、前記出力パケットの各々について第２のカウンタのカウント値をインクリメントすることを備える、Ｃ１１に記載の方法。
[Ｃ１３]  前記第１のカウンタの前記カウント値をインクリメントすることが、
前記入力パケットのデリミタを検出することによって、前記パイプラインの前記入力において前記入力パケットの各々を検出することと、
前記検出された入力パケットの各々について前記第１のカウンタの前記カウント値をインクリメントすることと、
を含む、Ｃ１２に記載の方法。
[Ｃ１４]  前記第２のカウンタの前記カウント値をインクリメントすることが、
前記出力パケットのデリミタを検出することによって、前記パイプラインの前記出力において前記出力パケットの各々を検出することと、
前記検出された出力パケットの各々について前記第２のカウンタの前記カウント値をインクリメントすることと、
を含む、Ｃ１２に記載の方法。
[Ｃ１５]  前記クロック信号をゲーティングするか渡すかを決定することが、
前記第１のカウンタの前記カウント値を前記第２のカウンタの前記カウント値と比較することと、
前記比較に基づいて、前記クロック信号をゲーティングするか渡すかを決定することと、
を備える、Ｃ１２に記載の方法。
[Ｃ１６]  前記クロック信号をゲーティングするか渡すかを決定することが、前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致する場合、前記クロック信号をゲーティングすると決定することを備える、Ｃ１５に記載の方法。
[Ｃ１７]  前記クロック信号をゲーティングするか渡すかを決定することが、前記第１のカウンタの前記カウント値と前記第２のカウンタの前記カウント値とが一致しない場合、前記クロック信号を渡すと決定することを備える、Ｃ１６に記載の方法。
[Ｃ１８]  前記クロック信号をゲーティングするか渡すかを決定することが、
前記入力パケットの前記数が前記出力パケットの前記数に一致する場合、前記クロック信号をゲーティングすると決定することと、
前記入力パケットの前記数が前記出力パケットの前記数に一致しない場合、前記クロック信号を渡すと決定することと、
を備える、Ｃ１１に記載の方法。
[Ｃ１９]  前記クロック信号をゲーティングした後に、次の入力パケットについて前記パイプラインの前記入力をモニタすることと、
前記次の入力パケットを検出すると、前記クロック信号を渡すことと、
をさらに備える、Ｃ１９に記載の方法。
[Ｃ２０]  前記パイプラインが画像処理パイプラインである、Ｃ１１に記載の方法。
【図１】
0006746791.tif 000002
【図２Ａ】
0006746791.tif 000003
【図２Ｂ】
0006746791.tif 000004
【図３】
0006746791.tif 000005
【図４】
0006746791.tif 000006
【図５】
0006746791.tif 000007
【図６】
0006746791.tif 000008
【図７】
0006746791.tif 000009
【図８】
0006746791.tif 000010
【図９】
0006746791.tif 000011