対数-対数プロットと飽和
コンピューティング速度は50年間、指数関数的成長曲線をたどった。対数線形プロット(対数速度 vs 線形時間)では、傾きb = 年間の桁数における成長率を持つ直線として現れる。
物理的限界は水平の上限を課す:分子サイズ、光速、熱制約によって決まる最大速度S_max。指数関数がS_maxに近づくにつれ、成長は遅くなる。
ロジスティック飽和
上限のある成長の一般的なモデル:
S(t) = S_max / (1 + e^(−r(t − t₀)))
これは技術に適用されたロジスティック方程式。初期(t << t₀):S(t) ≈ S_max × e^(r(t−t₀)) — 純粋な指数関数。上限近く(t >> t₀):S(t) → S_max に漸近する。
幾何学的には:対数線形座標での直線が上限付近で曲がり、線形-線形座標で見るとS字形を作る。
成長はいつ飽和するか?
シングルプロセッサの速度が1940年の10⁰ ops/secから10^(0.09t)で成長するとする。物理的上限:S_max = 10^(12) ops/sec(シングルコアプロセッサの粗い推定値、熱制約と光速制約による)。
最大通信半径
プロセッサのクロック速度は、1サイクルで通信できる最大半径を決定する。銅線内の信号伝達速度は約2×10⁸ m/s。
クロック周期T(秒)に対して、最大片道通信半径:
r_max = v × T / 2
(往復のために2で割る:信号はT内に往復しなければならない)
クロック速度が上がるとTが小さくなり、r_maxが縮小する。この幾何学的制約により、コンポーネントは近くに集まるか(チップ面積の削減)、オフチップ通信に複数サイクルの遅延を受け入れるかのどちらかになる。
影響範囲球
1クロックサイクル内に到達できるすべてのコンポーネントは、プロセッサを中心とした半径r_maxの球を形成する。体積:V = (4/3)π r_max³。
コンポーネント密度をρ(個/m³)とすると、1サイクルで到達できるコンポーネント数:N = ρ × V = ρ × (4/3)π r_max³。
クロック速度の増加でr_maxが縮小すると、Nは3乗で縮小する — クロック速度が2倍になると、到達可能なコンポーネント数は(1/2)³ = 1/8に減少する。
1クロックサイクルで到達可能なコンポーネント
1993年代のワークステーションは100 MHz(T = 10 ns)で動作する。信号速度 = 2×10⁸ m/s。回路基板上のコンポーネント密度 ≈ 10⁸ 個/m³(チップ、抵抗、コンデンサを含む粗い推定)。
現代のGPUは2 GHz(T = 0.5 ns)で動作する。
並列高速化の限界
シングルプロセッサの速度は物理的上限に近づいている。業界の対応:並列アーキテクチャ。アムダールの法則は並列処理で達成可能な高速化を定量化する。
アムダールの法則
プログラムの一部fが並列化でき、一部(1−f)がシリアルで実行しなければならないとする。p個のプロセッサで:
Speedup(p) = 1 / ((1−f) + f/p)
p → ∞ のとき:Speedup_max = 1 / (1−f)
シリアル部分(1−f)は、プロセッサをいくら追加しても達成可能な高速化に固定の上限を設ける。
幾何学的洞察:pの関数としての高速化は双曲線に従う。漸近線は1/(1−f)。f = 0.9の場合、無限のプロセッサでも最大高速化 = 10。f = 0.99の場合、最大高速化 = 100。
ハミングの暗黙の教訓:並列アーキテクチャへの関心は本物だったが、その成果はワークロードがどれだけ並列化できるかに完全に依存していた — 並列コンピューティングの楽観論者の多くが無視した事実。
並列高速化の計算
科学シミュレーションが1台のプロセッサで1000秒かかる。プロファイリング結果:シリアル初期化フェーズ(並列化不可)200秒;並列計算フェーズ800秒。