
뇌가 정하는 관계의 한계, 던바의 수(Dunbar’s Number)

산 너머엔 비가 줄어든다, 비그늘 효과(Rain Shadow Effect)
프로세서와 코어를 두 배, 네 배로 늘리면 프로그램도 그만큼 빨리 끝날 것이라고 기대하기 쉽습니다. 그런데 실제로 돌려 보면 체감 속도는 기대보다 훨씬 작게 오르는 경우가 많습니다. 병렬로 나눌 수 없는 구간이 전체 속도를 붙잡는다는 통찰, 바로 ‘암달의 법칙(Amdahl’s Law)’입니다.
암달의 법칙이란 쉽게 말해 ‘어떤 작업의 일부만 개선하거나 병렬로 돌릴 때, 전체 가속비는 손대지 못한 직렬 구간에 의해 상한이 정해진다’는 설명입니다. 컴퓨터 과학자 진 암달(Gene Amdahl)이 1967년 AFIPS 춘계 합동 컴퓨터 학회에서 발표한 논문 「대규모 계산 능력을 얻기 위한 단일 프로세서 접근의 타당성(Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities)」에서 이 논의를 펼쳤습니다.
본 자료에서는 암달의 법칙이 말하는 가속비의 의미부터 직렬 비율이 상한을 가르는 방식, 요리·조립 라인 같은 일상 비유와 멀티코어 현실, 그리고 구스타프슨의 법칙과의 차이와 쓰는 법까지 차례로 살펴보겠습니다.
암달의 법칙이 말하는 병렬의 한계
가속비와 직렬 구간의 뜻

암달의 법칙은 원래 ‘시스템 일부를 개선했을 때 전체 성능이 얼마나 오르는가’를 다루는 일반 원리이며, 오늘날에는 병렬 컴퓨팅의 이론적 가속비를 예측하는 데 가장 자주 쓰입니다. 핵심은 작업 전체를 한 번에 늘리는 것이 아니라, 병렬로 나눌 수 있는 부분과 반드시 순서대로 해야 하는 부분을 나누어 보는 데 있습니다.
전체 실행 시간 중 병렬로 나눌 수 있는 비율을 p, 프로세서(또는 코어) 수를 N이라 하면, 이론적 가속비는 1을 ((1-p) + p/N)으로 나눈 값이 됩니다. 같은 말을 직렬 비율 s로 쓰면, 가속비는 1을 (s + (1-s)/N)으로 나눈 값입니다. N이 커질수록 병렬 구간의 영향은 줄어들지만, 직렬 구간 s는 그대로 남습니다. 프로세서를 무한히 늘려도 가속비는 1/s를 넘지 못합니다.
- 가속비(Speedup): 개선 전 실행 시간을 개선 후 실행 시간으로 나눈 값입니다.
- 직렬 비율(Serial Fraction): 한꺼번에 나눌 수 없어 순서대로 처리해야 하는 시간 비율입니다.
- 병렬 비율(Parallel Fraction): 여러 프로세서에 나누어 동시에 돌릴 수 있는 시간 비율입니다.
왜 코어를 늘려도 체감이 작을까

공식만 보면 추상적으로 느껴질 수 있어, 흔히 거론되는 상한을 떠올려 보면 직관이 생깁니다. 작업의 절반만 병렬로 나눌 수 있다면, 코어를 아무리 늘려도 전체 가속비는 최대 두 배에 머뭅니다. 병렬로 나눌 수 있는 비율이 95퍼센트여도, 이론상 상한은 스무 배입니다. 남은 5퍼센트의 직렬 구간이 전체 속도를 붙잡기 때문입니다.
(1) 수확 체감이 빨리 온다
같은 비율의 직렬 구간이 있으면, 코어를 2개에서 4개, 8개로 늘릴 때의 이득은 갈수록 작아집니다. 이미 병렬 구간이 짧아진 뒤에는 직렬 구간이 병목이 됩니다.
(2) 통신과 동기화도 직렬에 가깝다
실제로 코어를 나누면 결과를 모으고, 잠금을 걸고, 메모리를 맞추는 시간이 생깁니다. 이 비용은 공식의 ‘완벽한 병렬’ 가정 밖에 있어, 체감 가속비는 이론값보다 더 낮아지기 쉽습니다.
(3) 한 줄짜리 병목이 전체를 가른다
파일 읽기, 초기화, 최종 합산처럼 짧은 직렬 코드라도 비율이 작지 않으면 상한을 크게 깎습니다. 멀티코어 CPU와 GPU 가속을 설계할 때 ‘어디를 병렬화할지’보다 ‘어디에 직렬이 남는지’를 먼저 묻는 이유가 여기에 있습니다.
요리와 조립 라인으로 보는 일상 비유

암달의 법칙은 컴퓨터 밖에서도 같은 구조로 나타납니다. 손님 열 명을 위한 저녁을 준비하는 상황을 떠올려 보겠습니다. 야채 썰기와 볶기는 도우미를 늘리면 빨라지지만, 오븐에 굽는 시간은 사람이 많아도 줄어들지 않습니다. 오븐이 직렬 구간이면, 손을 아무리 늘려도 전체 저녁 준비 시간은 그 구간에 묶입니다.
공장 조립 라인도 비슷합니다. 여러 스테이션에서 동시에 부품을 맞춰도, 최종 검사나 포장이 한 줄로만 진행되면 그 줄의 처리량이 전체 속도를 정합니다. 회의에서도 자료 조사는 나눠 할 수 있지만, 결정을 내리는 한 번의 합의는 한꺼번에 진행하기 어렵습니다.
일상에서 짚어 볼 점
- 병목(Bottleneck): 가장 느린 직렬 구간이 전체 흐름을 지배합니다.
- 나눌 수 있는 일(Parallel Work): 독립적으로 동시에 진행할 수 있는 부분입니다.
- 맞춰 보는 일(Coordination): 결과를 모으고 순서를 맞추는 비용도 체감 속도를 깎습니다.
구스타프슨의 법칙과 함께 보는 법

암달의 법칙은 ‘문제 크기를 고정한 채’ 프로세서를 늘릴 때의 상한을 보여 줍니다. 반면 존 구스타프슨(John Gustafson)이 1988년 전후로 정리한 구스타프슨의 법칙(Gustafson’s Law)은, 프로세서가 늘어나면 문제 자체도 키워 같은 시간에 더 큰 일을 하는 관점입니다. 고정된 숙제를 빨리 끝내는 이야기와, 더 정밀한 시뮬레이션을 같은 마감 안에 돌리는 이야기는 질문이 다릅니다.
(1) 고정 크기 문제에는 암달이 날카롭다
같은 데이터·같은 해상도로 ‘더 빨리’가 목표일 때는 직렬 비율을 줄이는 일이 핵심입니다. 알고리즘을 바꾸고, I/O를 줄이고, 불필요한 동기화를 빼는 설계가 여기에 해당합니다.
(2) 규모를 키울 때는 구스타프슨이 힘이 된다
기상·과학 계산처럼 격자나 샘플을 늘릴 수 있는 문제에서는, 코어가 늘수록 병렬로 소화하는 일의 양이 함께 커져 실질적인 이득이 커질 수 있습니다.
(3) 둘을 대립시키지 않기
어느 한쪽이 틀린 공식이라기보다, ‘무엇을 고정하고 무엇을 키울지’에 대한 다른 시나리오입니다. 제품을 만들 때는 목표가 지연 단축인지 처리량·규모 확대인지부터 고른 뒤, 맞는 렌즈를 쓰면 됩니다.
코어 수 광고만 보고 기대치를 키우기보다, 우리 작업에서 직렬로 남는 구간이 어디인지 먼저 재어 보는 태도가 중요합니다. 병렬화의 성패는 코어를 몇 개 샀느냐보다, 나눌 수 없는 시간을 얼마나 줄였느냐에 더 가깝습니다.
암달의 법칙은 병렬로 나눌 수 있는 부분만 개선해도 전체 가속비는 직렬 구간의 비율에 의해 상한이 정해진다는 원리입니다. 코어를 늘리는 일보다, 병목이 되는 직렬 구간을 찾아 줄이는 일이 성능의 천장에 더 직접적으로 닿습니다.
프로세서 수보다 먼저 나눌 수 없는 시간을 재어 보는 것, 그것이 암달의 법칙을 실무에서 쓰는 지혜의 첫걸음입니다.





