オンチップクロック分配とスキュー(H木・メッシュ)
なぜGHz級のクロックをチップ全域へ揃えて配るのが難しいのかが原理から分かります。H木・メッシュ・スパインの方式比較、挿入遅延・スキュー・ジッタの定義、クロックゲーティングとCTSまで体系的に押さえられます。
- 1.クロック分配網は数億個のフリップフロップへ同じエッジを届ける役目で、設計指標は挿入遅延(root から葉までの遅延)・スキュー(葉どうしの到達時刻差)・ジッタ(同じ点の周期ゆらぎ)の3つに分かれます。
- 2.H木は対称分岐で経路長を揃え低スキューにできる代わりに局所ばらつきに弱く、メッシュは葉を金属網で短絡してスキューを潰す代わりに消費電力と面積が大きいトレードオフがあります。
- 3.CTS(クロックツリー合成)はバッファ挿入と配線でスキューと挿入遅延を最適化する自動化工程で、未使用回路のクロックを止めるクロックゲーティングが消費電力の大半を占めるクロック網の電力を削ります。
なぜクロックを「配る」ことが難題なのか
同期式デジタル回路は、全フリップフロップが同じクロックエッジで一斉に状態を更新することで成り立ちます。理想は、チップ上のどのフリップフロップにも まったく同じ瞬間に同じエッジ が届くこと。ところが現実のクロック信号は、発振源(root)から数億個の葉(フリップフロップのクロック端子)まで、長大な配線とバッファの連なりを通って伝わります。GHz級では周期が1ナノ秒を切り、配線遅延(/semiconductor/interconnect-rc-delay/)のわずかな差が周期の無視できない割合を占めます。クロックを正確に配ることそのものが、先端設計の中心課題になっているのです。
クロックは全フリップフロップに分岐するため、扇出し(fanout)が桁違いに大きく、配線総長も電力消費も突出します。先端SoCではダイナミック消費電力の30〜50%がクロック網に集中することも珍しくありません。「配り方」が性能だけでなく電力も左右します。
3つの指標 ── 挿入遅延・スキュー・ジッタ
クロック網の良し悪しは、混同されがちな3つの指標で測ります。
挿入遅延(insertion delay / latency)
: root から特定の葉までの伝搬遅延(絶対値)
: 大きいほど OCV(オンチップばらつき)の影響を受けやすい
クロックスキュー(skew)
: 同一エッジが「異なる2つの葉」に届く時刻の差
: skew = latency(葉A) − latency(葉B)
: 空間的なばらつき。タイミング収束を直接左右する
クロックジッタ(jitter)
: 「同じ点」でエッジが理想周期から前後する時間ゆらぎ
: サイクルごとに変動する時間軸の揺れ(PLL雑音・電源変動など)
スキューが空間(点と点の差)の指標なのに対し、ジッタは時間(同じ点の周期ごとの揺れ)の指標である点が決定的な違いです。両者はタイミング検証で別々に扱われます。
送信FFから受信FFへデータが流れるとき、受信側クロックが遅れる方向のスキューはセットアップ余裕を増やしホールド余裕を減らします。逆向きのスキューはホールド余裕を増やしセットアップを圧迫します。スキューはセットアップ/ホールド両方の制約に符号付きで効くため、ゼロスキューが常に最適とは限りません(意図的なスキューでパスを救う有用スキューという技法もあります)。詳しくは/semiconductor/static-timing-analysis/。
H木 ── 対称分岐で経路長を揃える
低スキューの王道が H木(H-tree) です。中央の root から左右対称に分岐し、各分岐点でさらにH字を再帰的に描いて、全葉までの 経路長を物理的に等しく します。経路長が等しければ理想的には全葉の挿入遅延が一致し、設計上のスキューはゼロに近づきます。
H木の考え方(再帰的な対称分岐)
┌───────┐ root から各葉まで
┌──┤ ├──┐ 配線長が等しくなるよう
│ └───────┘ │ H字を入れ子に繰り返す
┌─┴─┐ ┌─┴─┐
葉 葉 葉 葉 → 経路長一致 → 設計スキュー≈0
H木の強みは構造的にスキューを抑えられること。弱みは、経路が等しくても 実際の遅延は等しくならない 点にあります。各枝のバッファやトランジスタには製造ばらつきがあり、温度・電源電圧もチップ内で一様ではありません。これらの局所ばらつき(OCV)が経路ごとに違う遅延を生み、対称構造でもスキューが残ります。また葉の分布が不均一なレイアウトには綺麗なH字を当てはめにくく、規則的な配置(メモリやFPGA、データパス)に向きます。
メッシュ(グリッド) ── 葉を短絡してばらつきを平均化
H木のばらつき残留を力技で潰すのが クロックメッシュ(mesh / grid) です。チップ上層に格子状の太い金属網を張り、多数のバッファでこの網を駆動して、全フリップフロップを網の最寄り点に接続します。網は 電気的に短絡された一枚の導体 に近いため、局所的な遅延差が網全体で平均化され、スキューが大きく圧縮されます。
メッシュの代償は資源消費です。常時充放電される広大な金属網と多数の駆動バッファが、面積と電力を大量に食います。配線容量が巨大なためクロック電力も増え、解析も難しくなります。それでも最高クロックのCPU/GPUコアでは、わずかなスキューが直接周波数上限を決めるため、電力を払ってでもメッシュが選ばれます。実際にはコア内をメッシュ、コアへ届けるまでをH木とする ハイブリッド が一般的です。
スパイン ── 中間的な折衷
クロックスパイン(spine) は、太い幹線(スパイン)を1本ないし数本通し、そこから各領域へ枝(リブ)を伸ばす方式です。H木ほど対称性に縛られず、メッシュほど資源を食わない中間解で、不均一なレイアウトにも適応しやすい。スキュー性能はH木とメッシュの中間に位置づけられます。
| 方式 | スキュー | 電力・面積 | 向くケース |
|---|---|---|---|
| H木 | 低(設計上ほぼ0) | 中 | 規則配置・メモリ/FPGA |
| メッシュ | 最低(ばらつき平均化) | 大 | 最高速CPU/GPUコア |
| スパイン | 中 | 中〜小 | 不均一レイアウト・SoC全体 |
| ハイブリッド | 低 | 中〜大 | コア内メッシュ+全体H木 |
CTS ── クロックツリー合成の自動化
実チップではこれらの構造を手で引くのは非現実的で、CTS(Clock Tree Synthesis、クロックツリー合成) がツールで自動生成します。CTSは配置後のフリップフロップ群を入力に、バッファ/インバータを階層的に挿入し配線を引いて、目標スキューと目標挿入遅延を満たす木を構築します。代表的な制約と手順は次の通りです。
CTS の主要な最適化目標と手段
目標: skew ≤ 制約値 かつ insertion delay 最小化
各葉の遷移時間(slew)と容量制約を満たす
手段:
1. クロックバッファ/インバータの挿入で枝の駆動力を確保
2. 経路長・バッファ段数を揃えてスキューを縮める
3. 必要に応じてダミー負荷や迂回配線で遅延を意図的に調整
4. 有用スキューでセットアップ/ホールド違反パスを救済
CTSの後にスキューを織り込んだ静的タイミング解析を回し、セットアップ/ホールド制約を検証します。クロック網の遅延ばらつきは検証の悲観度(pessimism)に直結するため、OCVのモデル化とCTSの品質がそのまま動作周波数の上限を決めます。
挿入遅延を小さくするとOCVの絶対量が減り有利な一方、深い木では段数削減が難しく、無理に縮めると駆動バッファが巨大化して電力と面積を圧迫します。さらにクロック配線はエレクトロマイグレーションの観点でも大電流密度になりやすく、配線寿命の制約と衝突します(/semiconductor/electromigration-beol-limits/)。挿入遅延・スキュー・電力・信頼性の四者は同時には最適化できません。
クロックゲーティング ── 止めることで電力を削る
クロック網はチップ最大の電力源の一つです(/semiconductor/power-wall/)。動作していないブロックにもクロックが届き続ければ、フリップフロップとクロック網が無駄に充放電を繰り返します。これを断つのが クロックゲーティング です。
クロックゲーティングの原理
enable 信号で枝のクロックを ON/OFF
enable=0 のとき下流のクロックを停止
→ フリップフロップは値を保持したまま遷移を停止
→ そのブロックのダイナミック電力が消える
ラッチベースのゲートセルでイネーブルをクロックに同期させ
グリッチ(不要なパルス)の混入を防ぐ
ゲーティングは枝ごとに階層的に入れられ、稼働率の低いブロックほど効果が大きい。フリップフロップは値を保持するためデータは失われません。CTSはこのゲート(ICG、Integrated Clock Gating cell)を木の途中に組み込んで合成します。クロックの電力削減はゲーティングがほぼ唯一の大玉であり、低消費電力設計の中核手法です。
まとめ
- クロック分配は数億個の葉へ同じエッジを届ける問題で、指標は 挿入遅延(root から葉まで)・スキュー(葉どうしの到達時刻差・空間)・ジッタ(同点の周期ゆらぎ・時間)の3つに分かれる。
- H木 は対称分岐で経路長を揃え設計スキューをほぼ0にできるが局所ばらつき(OCV)に弱く、メッシュ は金属網で葉を短絡しスキューを最小化する代わりに電力・面積が大きい。スパイン は中間解で、実機ではハイブリッドが定石。
- CTS はバッファ挿入と配線でスキューと挿入遅延を自動最適化する工程で、その品質がそのまま動作周波数の上限を決める。挿入遅延・スキュー・電力・信頼性は同時最適化できないトレードオフにある。
- クロックゲーティング は未使用ブロックのクロックを止めて巨大なクロック電力を削る、低消費電力設計の中核手法である。
半導体 Article
オンチップクロック分配とスキュー(H木・メッシュ)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
半導体
比較で見る軸
難易度: advanced / カテゴリ: 半導体 / タグ数: 6
導入後に効く点
H木は対称分岐で経路長を揃え低スキューにできる代わりに局所ばらつきに弱く、メッシュは葉を金属網で短絡してスキューを潰す代わりに消費電力と面積が大きいトレードオフがあります。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- 半導体
- タグ数
- 6
判断チェックリスト
- 自社の用途が「半導体 / クロック分配」に近いか確認する。
- 強みである「クロック分配網は数億個のフリップフロップへ同じエッジを届ける役目で、設計指標は挿入遅延(root から葉までの遅延)・スキュー(葉どうしの到達時刻差)・ジッタ(同じ点の周期ゆらぎ)の3つに分かれます。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。