암달의 법칙
암달의 법칙은 "병렬화할 수 없는 부분이 시스템 전체의 최대 성능 향상을 결정한다". 8명이 힘을 합쳐 방을 청소해도, 한 사람만 열 수 있는 문의 열쇠를 찾는 데 30분이 걸린다면 전체 작업은 절대 30분보다 빨라지지 않는다.
유래
1967년, IBM System/360의 수석 설계자였던 진 암달은 봄철 공동컴퓨터콘퍼런스(AFIPS)에서 단 세 쪽짜리 논문 「대규모 컴퓨팅 능력 달성을 위한 단일 프로세서 접근법의 타당성」을 발표했다. 당시 학계는 프로세서를 무한히 늘리면 계산 속도도 무한히 빨라진다는 낙관론이 지배적이었다. 암달은 반박했다 — 어떤 작업이든 순서대로 처리해야만 하는 부분(순차 구간)이 있고, 프로세서를 아무리 늘려도 이 부분만큼은 조금도 빨라지지 않는다. 전체 속도 향상의 상한선은 병렬화된 부분이 아니라, 병렬화할 수 없는 그 작은 조각이 정한다.
의미
8명이 힘을 합쳐 방을 청소해도, 한 사람만 열 수 있는 문의 열쇠를 찾는 데 30분이 걸린다면 전체 작업은 절대 30분보다 빨라지지 않는다. 이것이 암달의 법칙이 말하는 전부다. 프로세서 코어를 100개로 늘려도 프로그램의 5%가 순차 처리를 요구한다면, 이론상 최대 속도 향상은 20배를 넘지 못한다. 하드웨어 투자만으로는 병목을 없앨 수 없다는 이 발견은 이후 멀티코어·클라우드 설계 전체의 기본 전제가 됐다.
교훈 — 동양 고전과 만나다
「주역」 대과괘(大過卦) 단전(彖傳): "棟橈, 本末弱也" — 대들보가 휘어지는 것은 뿌리(本)와 끝(末)이 약하기 때문이다. 가운데 기둥을 아무리 굵고 튼튼하게 세워도, 그것을 지탱하는 양 끝이 약하면 대들보 전체가 휜다. 3,000년 전 「주역」의 이 통찰은 암달의 법칙과 정확히 겹친다 — 시스템의 한계는 가장 강한 부분이 아니라 가장 약한 부분이 정한다.
"弱(약)"은 굽은 활(弓) 두 개에 터럭 같은 선(彡彡)을 더한 모습 — 힘을 받지 못하고 휘어지는 활처럼 무르고 약하다는 뜻이다. 암달의 법칙에서 弱은 병렬화되지 않는 순차 구간을 가리킨다. 아무리 강(強)한 부분을 늘려도 弱한 부분이 전체를 붙잡는다 — 「주역」의 대들보가 휘는 것과 같은 이치.