개요

병렬 컴퓨팅에서 멀티 프로세서를 사용할 때 프로그램의 성능향상은 프로그램의 순차적인 부분에 의해 제한된다. 예를 들면, 프로그램의 95%가 병렬화 할 수 있다면 이론적인 최대 성능 향상은 아무리 많은 프로세서를 사용하더라도 최대 20배로 제한된다.

암달의 법칙(Amdahl's law)은 암달의 저주로도 불리며 컴퓨터 시스템의 일부를 개선할 때 전체적으로 얼마만큼의 최대 성능 향상이 있는지 계산하는 데 사용된다.

암달의 법칙에 따르면, 어떤 시스템을 개선하여 전체 작업중 P의 부분에서 S배의 성능이 향상되었을 때 전체 시스템에서 최대 성능 향상은 다음과 같다.

[math]\frac{1}{(1-P) + \frac{P}{S}}[/math]
(개선 후 실행시간 = 개선에 의해 영향을 받는 실행 시간 / 성능 향상 비율 + 영향을 받지 않는 실행 시간)

예를 들어서 어떤 작업의 40%에 해당하는 부분의 속도를 2배로 늘릴 수 있다면, P는 0.4이고 S는 2이고 최대 성능 향상은

[math]\frac{1}{(1-0.4) + \frac{0.4}{2}} = 1.25[/math]

가 된다.

즉 어떠한 프로그램도 절대 완벽히 병렬화 할 수 없으면, 그 프로그램의 성능 향상은 병렬화 정도에 비하여 상당히 제약되게 된다. 거의 대다수의 프로그램들이 순차적 실행을 필요로 하는 과정이 있음으로 암달의 법칙을 적용하면 코어를 개수를 무작정 늘리는 방식으로는 성능의 향상에 한계가 있음을 알 수 있다.