로그-로그 플롯 & 포화
컴퓨팅 속도는 50년 동안 지수 성장 곡선을 따랐습니다. 로그-선형 플롯(로그 속도 대 선형 시간)에서 이것은 기울기 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 (열 및 광속 제약에 의해 제한된 단일 코어 프로세서에 대한 대략적인 추정치).
최대 통신 반경
프로세서의 클록 속도는 한 사이클 내에 통신할 수 있는 최대 반경을 결정합니다. 신호는 구리에서 약 2×10⁸ m/s로 이동합니다.
클록 주기 T(초 단위)에 대한 최대 단방향 통신 반경:
r_max = v × T / 2
(왕복을 위해 2로 나누기: 신호는 T 내에 나가고 돌아와야 함)
클록 속도가 증가하면 T가 감소하여 r_max가 줄어듭니다. 이 기하학적 제약은 부품들이 더 가까이 모이도록 강제하거나(칩 면적 감소), 오프칩 통신에 다중 사이클 지연을 허용해야 합니다.
영향력 구체
한 클록 사이클 내에 도달 가능한 모든 부품은 프로세서를 중심으로 반경 r_max의 구를 형성합니다. 부피: V = (4/3)π r_max³.
부품 밀도가 ρ(부품/m³)이면, 한 사이클 내에 도달 가능한 부품의 수: N = ρ × V = ρ × (4/3)π r_max³.
클록 속도가 증가함에 따라 r_max가 줄어들면 N은 세제곱으로 감소합니다. 2× 클록 속도 증가는 도달 가능한 부품 수를 (1/2)³ = 1/8로 줄입니다.
클록 사이클당 도달 가능한 부품
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)
As p → ∞: Speedup_max = 1 / (1−f)
직렬 분수 (1−f)는 얼마나 많은 프로세서를 추가하더라도 달성 가능한 속도 향상에 엄격한 상한선을 설정합니다.
기하학적 통찰: p의 함수로서의 속도 향상은 쌍곡선 곡선을 따릅니다. 점근선은 1/(1−f)입니다. f = 0.9일 때, 최대 속도 향상 = 10, 무한한 프로세서로도. f = 0.99일 때, 최대 속도 향상 = 100.
해밍의 암묵적인 교훈: 병렬 아키텍처에 대한 관심은 실제였지만, 그 성과는 작업 부하가 얼마나 병렬화 가능한지에 전적으로 의존했습니다. 이는 많은 병렬 컴퓨팅 낙관론자들이 무시한 사실이었습니다.
병렬 속도 향상 계산
과학적 시뮬레이션이 하나의 프로세서에서 1000초 동안 실행됩니다. 프로파일링 결과: 직렬 초기화 단계에서 200초(병렬화 불가); 병렬 계산 단계에서 800초.