Search
🤖

쿼드 코어는 싱글 코어보다 4배 빠를까?! 멀티코어 성능 구하기, 암달의 법칙Amdahl’s Law

작성일
2022/02/13
수정일
카테고리
운영체제
태그
Computer Science

암달의 법칙

Amdahl's law는 순차 실행(병렬이 아닌) 코드와 병렬 실행 코드를 가진 프로그램에서 CPU 코어 숫자를 늘렸을 때 얻을 수 있는 잠재적인 성능 이득을 구할 수 있는 공식이다. N개의 처리 코어를 가진 시스템에서 실행되는 프로그램 중, 반드시 순차적으로 수행되어야 하는 코드의 비율을 S라고 하면 다음과 같이 표현할 수 있다.
speedUp1s+(1s)NspeedUp \leq {1 \over s+ {(1-s) \over N}}
예컨데 75%는 병렬 수행이 가능한 코드, 25%는 순차 실행이 강제되는 코드라고 가정하자. 이 프로그램을 코어가 2개인 시스템에서 실행할 경우, 싱글 코어보다 1.6배의 속도 향상을 얻을 수 있다.
1.610.25+(10.25)21.6 \leq {1 \over 0.25+ {(1-0.25) \over 2}}
만약 2개의 코어를 추가하면(4개의 코어) 속도는 2.28배 빨라진다.
2.2857...10.25+(10.25)42.2857... \leq {1 \over 0.25+ {(1-0.25) \over 4}}
위 공식에서 시사하는 재미있는 점은 N(코어 개수)이 무한대에 가까워지면 속도가 1/S(순차실행코드의 비율)에 수렴한다는 것이다. 예컨데 프로그램의 40%가 순차 실행부분이면 코어를 천억개를 갖다 붙여도 2.0배 이상의 속도 향상은 얻을 수 없다. (그래서 암달의 저주라고 불리기도 한다.)
만약 성능 향상을 위해 병렬 프로그래밍을 고려하고 있다면, 코어 개수 == N배의 성능 향상이 아님을 기억하자!

레퍼런스

공룡책 10th 개정판, 180쪽