コンピュータアーキテクチャにおいて、クロックゲーティングは、多くの同期回路で使用される一般的な電力管理技術であり、回路またはその一部がアイドル状態のときにクロック信号を除去することで、動的電力消費(デジタル設計における電力消費の大きな原因)を低減します。クロックゲーティングは、クロックツリーの分配の一部を剪定することで電力を節約しますが、その代償として回路にロジックを追加する必要があります。
クロックプルーニングとは、回路の一部をオフにして、その中のフリップフロップが状態を切り替えないようにする技術です。状態切り替えは電力消費を伴うため、切り替えがない状態であれば、スイッチングによる電力消費が削減されます。この技術は、アイドル時間が長いシステムや、特定のモジュール内で予測可能な非アクティブ期間があるシステムに特に効果的です。
デジタル回路は、複数のメカニズムを通じて電力を消費しますが、これらは一般的に動的コンポーネントと静的コンポーネントに分類されます。以下の式は、CMOS回路における平均消費電力を表しています。
これらのコンポーネントは、デジタルシステムの全体的な電力プロファイルをまとめて決定し、それらの最適化は低電力設計にとって非常に重要です。[ 1 ]
これらのコンポーネントは、特に技術の微細化に伴い、現代の集積回路においてますます重要になってきており、漏洩電力と短絡電力は総電力予算のかなりの部分を占める可能性がある。[ 1 ]
クロックゲーティングは、デジタル回路の消費電力を削減するために用いられるいくつかの手法の一つです。特に、クロック信号における不要なスイッチング動作を低減することで、動的電力成分 P dynamic を低減します。動的電力は、以下の式で近似できます。
どこ:
クロックゲーティングは、使用していない回路の一部へのクロック信号をオフにすることでαを低減し、結果として全体の動的消費電力を削減します。これは、電源を完全に遮断し、複数の電力消費源を同時に削減するパワーゲーティング技術とは異なります。
クロックゲーティング技術は通常、特定のクロック領域を対象とすることで動作します。これらの技術を適用するには、回路内のレジスタ(またはフリップフロップ)を変更して、クロック分配ネットワークから切り離し、組み合わせ論理回路のブロックを効果的に分離できるようにする必要があります。

外部回路は、イネーブルドフリップフロップと呼ばれる技術を用いてクロック信号とアクティベーション信号を制御できるほか、従来型のクロックゲーティング方式を用いて内部で生成することもできる。

制御信号(CNTRL)が1に設定されると、クロックゲーティング回路はクロックを0または1のいずれかの固定論理レベルに保持することでクロックをオフにします。一般的な実装例としては、反転した制御信号によって制御されるCMOSパストランジスタを使用するものがあります。
クロックゲーティングロジックは、さまざまな方法で設計に追加できます。
クロックゲーティングの一般的な実装では、レベルセンシティブラッチ(またはフリップフロップ)を使用して、ゲーティングされたクロックのグリッチを防止します。イネーブル信号は、クロックが非アクティブフェーズにあるときのみ取得されるため、アクティブクロックの遷移中もゲーティング制御が安定します。これにより、シーケンシャル素子のスイッチング不良の原因となる、不要な短いパルス(グリッチ)の発生を回避できます。多くの集積回路クロックゲーティング(ICG)セルは、グリッチのないゲーティングクロックを提供するために、このラッチを内部に搭載しています。
一般的に、クロックゲーティングをより粗い粒度で適用すると、リソースオーバーヘッドが削減され、電力消費が削減されます。[ 2 ]
クロックゲーティングを改善するためのRTLの変更は、レジスタが保持する値が異なるため、設計の機能的な変更につながり、検証が必要となります。
シーケンシャルクロックゲーティングは、アップストリームとダウンストリームのシーケンシャル要素を通してイネーブル条件を伝播させるプロセスであり、追加のレジスタをクロックゲーティングできるようにします。[ 3 ]この技術は、クロックゲーティングを個々のフリップフロップを超えて拡張し、より大きな回路部分全体で電力節約を最適化します。
携帯電話、ウェアラブルデバイス、組み込みシステムなど、バッテリー駆動または超低消費電力アプリケーション向けに設計されたチップは、通常、複数のクロックゲーティング戦略を同時に実装します。手動クロックゲーティングでは、ソフトウェアドライバを使用して、さまざまなアイドルコントローラへのクロックを有効または無効にします。一方、自動クロックゲーティングでは、ハードウェアメカニズムを使用して、クロックが不要になったことを検出し、動的にオフにします。これらのアプローチは、多くの場合、同じイネーブルツリー内で連携して動作します。たとえば、内部バスまたはブリッジでは、自動ゲーティングが採用され、CPUまたはDMAエンジンによってアクセスされるまでクロックが無効のままになります。一方、そのバス上の周辺機器は、特定のボード設計で使用されていない場合は、永久的にゲーティングされる可能性があります。
クロックゲーティングは、面積削減にも利用できます。多くのレジスタが同じイネーブル信号を持っている場合、クロックツリーの上位レベルでクロックゲーティングを行うことで、必要な面積は統合クロックゲート1個分だけで済みますが、そのイネーブル信号を持つレジスタ1個あたり、2:1マルチプレクサ(通常、イネーブル信号の実装に使用される「フィードバックマルチプレクサ」)1個分の面積を節約できます。