Amdahl's Law

gunjoong-kim·2023년 10월 17일
0

Amdahl's Law

시스템 일부의 성능을 향상시켰을 때 시스템 전체적으로 어느정도의 성능향상이 있을 수 있는지를 정의한 법칙

초기 컴퓨터과학에서의 선구자였던 Gene Amdahl이 제안한 간단하지만 매우 통찰력있는 관찰이다. 암달의 법칙을 통해서 우리는 시스템 일부의 성능을 향상시켰을 때 시스템 전체의 성능향상에 대해 가늠해 볼 수 있다.
main idea는 시스템 일부의 성능을 향상시켰을 때 전체 시스템 성능의 향상은 해당 부분의 비율과 얼마나 빨라졌는지에 달려있다는 것이다.
이전 시스템의 성능을 ToldT_{old}라고 하고 시스템중 α\alpha부분 만큼의 성능을 kk배 증가시켰다고 하자. 이때 전체적인 성능은 다음과 같다.

Tnew=(1  α)Told + (αTold)/kT_{new} = (1\ -\ \alpha)T_{old}\ +\ (\alpha T_{old})/k

이것으로부터 우리는 성능향상을 S = Told/TnewS\ =\ T_{old}/T_{new} 로 나타내면 다음과 같다.

S=1(1  α) + α/kS = \frac{1}{(1\ -\ \alpha)\ +\ \alpha/k}

예를 들어 60퍼센트 부분의 성능을 3배 향상시켰다고 할 때 우리가 얻을 수 있는 성능향상은 1.67x 이다. 이 수식을 통해서 우리는 두가지 insight를 얻을 수 있다.

1. 전체 시스템의 성능을 향상시키고자 한다면 very large fraction 즉 시스템에서 매우 큰 부분을 차지하는 곳의 성능을 향상시켜야 한다. aa가 매우 작다면 아무리 kk를 무한대에 가깝에 성능향상 시켜도 영향을 많이 미치지 못한다.

  • 작은 부분의 성능향상은 큰 효과를 불러일으키지 못한다.

2. kk를 무한대로 놓았을 때, 즉 일부분의 성능향상을 무한대로 보았을 때 얻을 수 있는 성능향상은 11  α\frac{1}{1\ -\ \alpha} 이다. 일부분을 아무리 성능향상을 시켜도 일정 수준 이상의 성능향상을 기대할 수 없다.

  • 즉 위의 예에서 60퍼센트 성능 향상시 얻을 수 있는 최대 성능향상은 2.5x이다.

CPU Core

CPU의 코어를 무한대로 두었을 때, 성능향상은 무한대로 갈 수 있을까? 이를 암달의 법칙과 함께 살펴보자.

CPU 코어를 많이 넣음으로서 얻을 수 있는 성능향상은 해당 부분의 병렬화가 가능할 때이다. 따라서 암달의 법칙을 적용할 때 α\alpha가 병렬화가 가능한 비율이 되고 kk는 코어의 개수가 된다.
위의 암달의 법칙의 적용에 따라 코어를 아무리 늘려도 병렬화의 범위가 제한되어 있으면 성능향상에 제한이 있을 수 밖에 없고 만약 모든 부분을 병렬화 한다고 해도 코어의 개수배만큼의 성능향상만 이룰 수 있다. 이를 그래프로 나타내면 아래와 같다.

0개의 댓글