体系 › スケーリングと電力
·無料·11分で読めます

ダークシリコンとは — 置けるのに、同時に光らせられない

チップに置けるトランジスタは増え続けるのに、同時に動かせる割合は世代ごとに下がる——これがダークシリコンです。なぜそうなるのかを電力密度の一行から導き、2011年のISCA論文が出した予測値(22nmで21%、8nmで50%超)を原典の数字で確認し、そこから専用回路の時代が来た筋道までを、途中の計算を自分で追える形で辿ります。

要点

  • ダークシリコンとは、熱の制約からチップ上の全トランジスタを同時に動かせない状態である。
  • Dennardスケーリングは寸法と電圧を同じ比率で縮めれば電力密度が変わらない関係で、2005年ごろに電圧が下げられなくなり崩れた。
  • 電圧が下がらない底には、室温で約60 mV/decade(25°Cで約59.2 mV)という熱由来の下限がある。
  • 2011年の予測では、固定サイズのチップで22nmでは21%、8nmでは50%超を電源オフにする必要がある。
  • 2011年の予測では、2024年までの平均高速化は7.9倍で、世代ごとに性能2倍の目標から約24倍の開きがある。
対象textタスクhardware

買った部屋の半分に、電気が来ていない

引っ越した部屋にコンセントが20個あるとします。ところがブレーカーは「同時に使えるのは合計1500Wまで」。ドライヤーと電子レンジと暖房を一度に回すと落ちる。コンセントの数は増やせても、同時に使える合計は別に決まっているからです。

いまのチップがこれです。トランジスタは置ける数が増え続けているのに、同時に全部を動かすと熱で壊れる。だから設計者は、はじめから「動かさない領域」を前提に設計します。この、置いてあるのに常に暗いままの領域をダークシリコンと呼びます。

一言でいえば——熱の制約から、チップ上の全トランジスタを同時に動かせない状態。これが定義です。

指数が2本あって、片方だけが伸びた

なぜこうなったのか。話は2本の曲線に尽きます。

この2本が同じ速さで伸びていた時代がありました。支えていたのがDennardスケーリングです。1974年のDennardらの論文が示したのは、寸法と電圧を同時に同じ比率で縮めれば、単位面積あたりの消費電力(電力密度)が変わらない、という関係でした。面積あたりの発熱が変わらないなら、トランジスタが増えても熱の問題は増えません。だから微細化は「速くなって、しかも熱は据え置き」という、ほとんど無料の改善として効きました。

FIG 1片方だけが指数で立ち上がると、差は世代を追うごとに開く。置けるトランジスタ数(伸びる側)と冷やせる熱量(寝ている側)の関係がこれで、両者の差がそのまま「動かせない領域」になる

この関係が2005年ごろに崩れます。理由は電圧が下げられなくなったことです。

電圧が下がらなくなった理由 — 約60 mV/decade の壁

CMOS回路が状態を切り替えるときに払う電力は、動的電力の式

Pdyn=αCV2fP_{\text{dyn}} = \alpha C V^2 f

に従います(α\alpha は切り替わる割合、CC は容量、VV は電源電圧、ff は周波数)。VV だけが2乗で入っているので、電圧を下げるのが最も効きます。Dennardスケーリングが効いたのも、寸法と一緒に VV を下げられたからです。

ところが電圧を下げるには、トランジスタの「閾値電圧」も一緒に下げる必要があります。そしてここに物理の壁があります。MOSFETをオフ側へ動かすとき、電流が1桁(10分の1)減るのに必要な電圧の幅には下限があり、室温では

kTqln⁡10  =  1.380649×10−23×298.151.602×10−19×2.3026  ≈  59.2 mV\frac{kT}{q}\ln 10 \;=\; \frac{1.380649\times10^{-23}\times298.15}{1.602\times10^{-19}}\times 2.3026 \;\approx\; 59.2\ \text{mV}

より小さくできません(25°C で計算。27°C なら約59.6 mV)。約60 mV/decade と呼ばれるこの値は、回路の作り方ではなく熱そのものから来る下限です。

閾値電圧を下げすぎると、オフのはずのトランジスタから漏れる電流(リーク電流)が指数関数的に増えます。動いていない回路が電気を食い始めるので、下げ幅には実用上の底があります。結果、2000年代半ばに電源電圧の低下は1V付近で足踏みし、電力密度は上昇に転じました。

終わったのはDennardスケーリングであって、ムーアの法則そのものではありません。ここを混同すると議論が噛み合わなくなります。トランジスタは増え続けた。増えたぶんの電力を払えなくなっただけです。

原典の数字 — 2011年の予測では「22nmで21%、8nmで50%超」

ダークシリコンという言葉を定量的な予測として広めたのは、2011年のISCAで発表された Esmaeilzadeh らの論文です。150機種を超えるプロセッサの実測からパレート最適な曲線を作り、デバイス側のスケーリング予測と組み合わせて、5世代先までの性能上限を見積もりました。要旨にはこう書かれています。

Even at 22 nm (just one year from now), 21% of a fixed-size chip must be powered off, and at 8 nm, this number grows to more than 50%. Through 2024, only 7.9× average speedup is possible across commonly used parallel workloads, leaving a nearly 24-fold gap from a target of doubled performance per generation.

つまり——固定サイズのチップで、22nmでは21%、8nmでは50%超を電源オフにしなければならない。2024年までに得られる平均の高速化は7.9倍で、「世代ごとに性能2倍」という目標からは約24倍の開きがある、という見積りです。

ここは正確に扱う必要があります。これは2011年時点のモデルによる予測値で、その後の実測値ではありません。論文自身が「ITRS予測」と「より保守的なデバイス予測」の2通りを並べて幅を示しています。引用するときは「2011年の予測では」と付けるのが誠実です。

それでも、この予測が示した方向は当たりました。「全部を同時に光らせられない」を前提にした設計が主流になったからです。

予算が足りないときの3つの逃げ道

同時に動かせないなら、設計としては次のどれかを選ぶことになります。

  1. 落としておく(ダークシリコンをそのまま受け入れる)。使わない領域は電源を切る
  2. 落とす代わりに遅くする。電圧と周波数を負荷に応じて下げる制御がDVFSです。全部を動かすが、全部を全速では動かさない
  3. 同じ電力でより多くの仕事をする回路に替える。ここが本題です

3つめが、ダークシリコンが「専用回路が有利になる理由」と言われる所以です。汎用CPUは、どんな命令が来ても処理できるように多くの回路を抱えます。対して、行列積だけを回す回路は、同じ演算あたりで動かす回路がはるかに少ない。電力予算が制約になった瞬間、面積を余らせてでも電力効率の高い専用回路を置く方が勝ちます。面積はもともと余っているのですから。

GPUがAIの計算を担い、推論の性能が「秒あたり演算数」ではなく「ワットあたり演算数」で語られ、低精度演算(BF16・FP8・INT8)が当たり前になったのは、すべてこの一点から説明できます。低精度が効くのは、扱うビット数が減ればスイッチする回路も減り、動的電力の式の CC が小さくなるからです。

混同しやすい3つ

① 不良品を切り離した領域ではありません。 製造上の欠陥を避けて一部を無効化するのは冗長化・リペアの話で、歩留まりの問題です。ダークシリコンは正常に作れた回路を電力の都合で止める話なので、原因がまったく違います。

② 「無駄なトランジスタ」ではありません。 暗い領域は、別の機能の専用回路を置く場所として使われます。動画のエンコーダ、暗号、行列積、信号処理——用途ごとの回路を並べておき、そのときに必要なものだけ光らせる。使う瞬間には最も効率の良い回路が用意されている状態で、面積を効率に交換していると読むのが正しい理解です。

③ クロックが上がらない話と同じではありません。 両方ともDennardスケーリングの終わりから来ていますが、クロックの頭打ちは「1つの回路を速く動かせない」、ダークシリコンは「多くの回路を同時に動かせない」です。前者への答がマルチコア化で、後者への答が専用回路化でした。

自分で確かめる

ダークシリコンは概念ですが、手元で感触をつかむ計算はできます。

# 面積は2倍になったが、電力予算は据え置き。同時に動かせる割合はどうなるか
def lit_fraction(area_ratio, power_budget_ratio=1.0, perf_per_watt_gain=1.0):
    """area_ratio: 置けるトランジスタの倍率(世代比)
       power_budget_ratio: 冷やせる熱量の倍率(ふつう 1.0 = 据え置き)
       perf_per_watt_gain: 同じ仕事を何分の1の電力でできるようになったか"""
    return min(1.0, power_budget_ratio * perf_per_watt_gain / area_ratio)

for gen, area in enumerate([1, 2, 4, 8], start=0):
    # 電力効率が 1.3 倍ずつ改善しても、面積が 2 倍ずつ増えると追いつかない
    print(gen, area, round(lit_fraction(area, 1.0, 1.3 ** gen), 3))

出てくるのは「光らせられる割合が世代ごとに下がる」という形です。電力効率の改善率を面積の増加率より大きくすれば割合は戻るので、この不等式のどちら側を動かすかが設計の争点だと分かります。値は例示で、実機の数字ではありません。

現場ではこう使う

まとめ

電力の式の導出と、熱抵抗を使って「ワットを温度に換算する」ところまで踏み込むなら電力の物理 — なぜ電圧を下げると劇的に効くのかへ。予算の配り方を数字で決める側は電力バジェットで読むチップ設計 — リークと発熱の物理、微細化の何が終わって何が続いているのかはムーアの法則の実際、専用回路側の設計はアクセラレータ設計が続きです。

出典

運営: TechAthletes · 編集方針 · 出典の付け方 · 訂正の記録

コメント

コメントにはログインが必要です