1. Amdahl's Law concept
"전체 시스템 중 일부만 빠르게 개선한다고 해서, 전체 속도가 그만큼 빨라지는 것은 아니다. 개선하지 못한 부분(Serial Part)이 결국 발목을 잡는다."
Speedup=(1−f)+nf1
- f (Fraction): 전체 작업 중 속도를 높일 수 있는 부분의 비율 (예: 40% = 0.4)
- n (Enhancement Factor): 그 부분을 몇 배나 빠르게 만들었는지 (예: 코어 2개면 2배, 10배 개선이면 10)
- (1−f): 속도를 높일 수 없는 나머지 부분 (개선이 안 되는 부분)
아무리 n을 무한대로 키워서 특정 부분을 0초 만에 끝낸다 해도, 개선되지 않은 부분 (1−f)가 남아있기 때문에 전체 속도는 1−f1 이상 빨라질 수 없습니다.
- 분자의 1은 주파수가 1이라는 소리다
주파수를 조절할수 있을때 공식:
Speedup=(1−f)+nf주파수
Time=SpeedWork
시간 = 일의 양 ÷ 처리 속도
1.1 Design Alternatives
이 예제는 "자주 쓰이는 걸 개선하는 게 낫다(Make the common case fast)"는 원칙을 보여줍니다.
상황: 그래픽 앱에서 FP(부동소수점) 연산이 전체의 50%를 차지함. 그중에서도 FPSQRT(제곱근)는 전체의 20%를 차지함.
Option A: FPSQRT(20%)만 10배 빠르게 만들기
- f=0.2 (전체의 20% 해당)
- n=10 (10배 개선)
- SpeedupA=(1−0.2)+100.21=0.8+0.021=0.821≈1.22
Option B: 모든 FP 연산(50%)을 1.6배 빠르게 만들기
- f=0.5 (전체의 50% 해당)
- n=1.6 (겨우 1.6배 개선)
- SpeedupB=(1−0.5)+1.60.51=0.5+0.31251=0.81251≈1.23
10배나 빨라지는 기술(A)보다, 개선 폭은 작아도 더 많은 부분에 적용되는 기술(B)이 전체 성능엔 더 좋습니다.
1.2 Practice
Dual Pentium 문제 (시험 단골 유형)

[전제 조건 분석]
Hardware: "Dual Pentium" → 코어가 2개이므로 병렬화 시 속도 향상 계수 n=2입니다.
Resource Split:
- App 1: 전체 자원의 75% 사용
- App 2: 전체 자원의 25% 사용
(a)App 1만 단독 실행 시 Speedup은?
- 조건: App 1의 60%가 병렬화 가능 (f=0.6)
- 하드웨어: 듀얼 코어 (n=2)
- Speedup=(1−0.6)+20.61=0.4+0.31=0.71≈1.43
(b) App 2만 단독 실행 시 Speedup은?
- 조건: App 2의 95%가 병렬화 가능 (f=0.95)
- 하드웨어: 듀얼 코어 (n=2)
- Speedup=(1−0.95)+20.951=0.05+0.4751=0.5251≈1.90
(c) 전체 시스템 Speedup (App 1만 병렬화했을 때)
여기가 중요합니다. 전체 시스템 입장에서 f를 다시 구해야 합니다.
- 전체 시스템 관점에서의 f 구하기:
- App 1은 전체의 75%를 차지하고, 그중 60%가 빨라짐.
- 시스템 전체 f=0.75×0.60=0.45 (전체의 45%가 빨라질 수 있음)
- App 2는 건드리지 않음.
계산:
- f=0.45, n=2
- Speedup=(1−0.45)+20.451=0.55+0.2251=0.7751≈1.29
(d) 전체 시스템 Speedup (둘 다 병렬화했을 때)
이제 App 1과 App 2 모두 빨라집니다. 전체 시스템 입장에서 총 f를 합산해야 합니다.
전체 시스템 관점에서의 ftotal 구하기:
- App 1 기여분: 0.75×0.60=0.45
- App 2 기여분: 0.25×0.95=0.2375
- Total f = 0.45+0.2375=0.6875 (전체의 약 68.75%가 병렬화됨)
계산:
- f=0.6875, n=2
- Speedup=(1−0.6875)+20.68751
- =0.3125+0.343751=0.656251≈1.52
최종 요약 (문제 풀이 팁)
1. Isolation(단독) 문제: 해당 프로그램 내부의 f만 보면 됩니다. (a, b번 유형)
2. Overall(전체) 문제: 각 프로그램이 차지하는 비중(Resource %)을 곱해서 '전체 시스템의 f'를 새로 구해야 합니다. (c, d번 유형)
3.Dual Processor: 문제에서 n값을 숫자로 안 주고 "Dual"이라고 숨겨뒀으니, n=2임을 캐치하는 게 핵심입니다.