電力バジェットで読むチップ設計 — リークと発熱の物理
チップの設計は「何を置けるか」ではなく「同時に何を光らせられるか」で決まります。動的電力とリーク電力という2つの支出、温度でリークが膨らむ正帰還、ワットを温度に換算する熱抵抗、そして予算を空間・時間・仕事あたりで配る手口までを、電力バジェットという1枚の家計簿として読み解きます。
ブレーカが先に決まっている家
チップ設計を、電気の契約が決まっている家に例えてみます。部屋(面積)はいくらでも増築できるのに、ブレーカの容量(冷却できる熱量)は据え置きです。エアコンと電子レンジと乾燥機を全部同時に回せば落ちる。だから住人は「何を置くか」ではなく「何を同時に動かすか」を考えることになります。
現代のチップはまさにこの状態にあります。トランジスタは微細化のたびに増えますが、そこから逃がせる熱はパッケージと冷却系でほぼ決まっていて、世代が進んでも大きくは伸びません。設計の主語が面積からワットに移った、というのがこの20年でいちばん大きな変化です。
だから設計者は最初に1枚の家計簿を書きます。使える総ワット数を決め、それをコアに、キャッシュに、メモリインターフェースに、I/Oに配る。この家計簿を電力バジェットと呼びます。この記事は、その家計簿の読み方の話です。
支出は2種類ある — 従量課金と基本料金
チップが出す熱は、性質の違う2つの支出に分かれます。
つまり、電気代の請求は「回路が切り替わった回数ぶんの従量課金」と「電源が入っているだけで取られる基本料金」の足し算だ、ということです。 は1クロックあたりに実際に切り替わる回路の割合、 は駆動する容量、 は電源電圧、 はクロック周波数、 はOFFのはずのトランジスタから漏れる電流です。
第1項がなぜ になるのか、なぜ電圧だけが2乗で効くのかは電力の物理で導出しています。ここで重要なのは第2項のほうです。リーク電力は仕事をしていなくても発生します。 アイドル中のチップが温かいのはこのためで、しかもこの基本料金はトランジスタの数に比例して積み上がります。数十億個が同時に、静かに漏れているわけです。
家計簿として見ると、この2つは扱いがまったく違います。従量課金は「使わなければ減る」ので、無駄な演算を止めれば効きます。基本料金は使用量と無関係なので、電源そのものを切るしか減らす手がありません。
基本料金は、温度で勝手に膨らむ
やっかいなのは、リークが定数ではないことです。OFFのトランジスタを漏れる電流(サブスレッショルド電流)は、おおよそ次の形をしています。
つまり、漏れの量は「しきい値電圧が熱の勢いに対してどれだけ高いか」で指数的に決まる、ということです。 はトランジスタが開き始める電圧(しきい値電圧)、 は熱電圧と呼ばれる量で室温では約26 mV、 は1より少し大きい係数です。
ここで は絶対温度です。温度が上がると熱電圧 が大きくなり、指数の中の分数の絶対値が小さくなる。つまり温度が上がるだけで漏れが増えます。 さらに 自体も温度が上がると下がる方向に動くので、2つの効果が同じ向きに重なります。
漏れる経路はここだけではありません。ゲート絶縁膜が薄くなると、ゲートからチャネルへ直接トンネルする電流も無視できなくなります(こちらは高誘電率材料の導入で大きく抑えられました)。ただし、温度で膨らむのは主にサブスレッショルド側です。
指数関数なので、増え方は直感を裏切ります。設計の議論では「10℃前後の上昇でリークがおよそ倍」という粗い目安が使われますが、正確な係数はプロセスと動作点によって変わります。大事なのは倍率の値ではなく形です。動的電力は電圧や周波数に対して素直な多項式で増えるのに対し、リークは温度と に対して指数で増える。少し余裕があるうちは無視できて、ある点から急に家計を食い潰します。
コメント
コメントにはログインが必要です