mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-09-09 10:16:44

암달의 법칙


[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 || 수학( 해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학( 환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학( 형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU( 그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/ C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시( SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로( 보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{ 컴파일러( 어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩( 유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도( 최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리( 기계 번역 · 음성인식) · 버전 ( 버전 관리 시스템 · Git · GitHub)

''' 이론 컴퓨터 과학
{{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"'''
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#a36> 이론
기본 대상 수학기초론{ 수리논리학( 논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학( 그래프 이론) · 수치해석학 · 확률론 통계학 · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버
오토마타 이론 FSM · 푸시다운 · 튜링 머신( 폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어
계산 복잡도 이론 점근 표기법 · 튜링 기계^ 고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임( 그리디 알고리즘, 동적 계획법)
정보이론 데이터 압축( 무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
프로그래밍 언어이론 프로그래밍 언어( 함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타 프로그래밍 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론
주요 알고리즘 및 자료구조
기초 정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현 배열^ 벡터^ · 리스트^ 연결 리스트^ · 셋(set)^ 레드-블랙 트리, B-트리^ · 우선순위 큐^, 피보나치 힙^
수학적 최적화 조합 최적화 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
볼록 최적화 내부점 방법 · 경사하강법
선형계획법 심플렉스법
계산 수론 및 암호학 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시( MD5 · 암호화폐 · 사전 공격( 레인보우 테이블) · SHA) · 양자 암호
대칭키 암호화 방식 블록 암호 알고리즘( AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
공개키 암호화 방식 공개키 암호 알고리즘( 타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
계산기하학 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론 탐색^ BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제 대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 }}}}}}}}}



1. 개요2. 설명3. 구스타프슨의 법칙4. 초선형적 성능향상 (Superlinear speedup)5. 관련 문서

1. 개요

Amdahl's law

암달의 법칙(Amdahl's law)은 암달의 저주로도 불리며 컴퓨터 시스템의 일부를 개선할 때 전체적으로 얼마만큼의 최대 성능 향상이 있는지 계산하는 데 사용된다. 진 암달의 이름에서 따왔다. 론(theory)만 많은 컴퓨터과학 분야에서 몇 안 되는 법칙(Law)이다.[1]

2. 설명

어떤 작업의 시간 효율을 개선할 때, 전체 작업시간에 대해 P만큼의 작업시간을 차지하는 작업의 효율을 S만큼 향상시켰다 가정하자. 그렇다면 전체 작업 효율은 다음과 같이 향상된다.
[math( \displaystyle \frac{1}{(1-P)+\frac{P}{S}} )]

가령, 전체 작업 시간 중에서 10%를 차지하는 작업의 속도를 2배 증가시켰다면, 전체 작업 속도는 약 1.05배로 증가한다.
[math( \displaystyle \frac{1}{(1-0.1)+\frac{0.1}{2}} = \frac{1}{0.95} \fallingdotseq 1.0526 )]

병목현상을 설명하는 이론이기도 하다. 가령 전체의 40% 부분의 성능이 2배로 향상되었을 때, 전체 성능은 1.25배 증가한다. 하지만 그 향상폭이 무한히 높아져도 전체 성능의 증가폭은 1.666..배를 넘지 못한다. 속도향상의 결과에는 0이라는 시간 하한선이 있지만 나머지 60% 부분의 소요시간은 독립적이기 때문이다. 이는 CPU나 GPU 중 하나가 다른 하나에 비해 과도하게 세대나 급이 차이가 날 때 체감할 수 있다. 이어달리기에 비유하면 '병목' 의 역할을 이해하기 쉽다. 두 사람이 구간을 나눠 달려야 한다는 규칙이 존재하는 한, 한명이 혼자 아무리 빠르게 달려도 결국 나머지 한 명과 교대하여 그의 시간기록과 합쳐야 한다고 생각해 보자.

다음과 같은 의미를 지닌다. 첫째로, 전체 작업의 효율을 최대한 증가시키고 싶다면 그 중에 가장 비중이 큰 작업부터 초점을 맞추는 것이 좋다. 둘째로, 일부 작업들이 더 이상 개선의 여지가 없을 경우 전체 작업이 최대 어느정도의 개선 효율을 보일 수 있는지에 대해 예측이 가능하다.

2010년도의 개인 사용자가 가장 쉽게 이 법칙을 느낄 수 있는 것은 바로 컴퓨터의 업그레이드이며, 그 중에서도 SSD가 가장 체감이 크다. 보조 기억 장치의 처리 시간은 네트워크를 제외한 다른 자원에 비해서 자릿수가 다른 수준으로 느리다. 그렇기 때문에 일정 수준 이상의 시스템에선 사용자 응답 시간의 대부분을 저장 장치 속도가 결정하는데, 이를 HDD에서 SSD로 바꿔주는 것으로 CPU나 메모리 업그레이드와는 차원이 다른 성능 향상을 체감할 수 있다. 또한 업그레이드한 부품이 이전 부품보다 벤치마크 점수나 단순 초당 연산력은 몇 배 수준으로 증가했더라도 실제 게임을 돌렸을 때 프레임 증가폭은 그보다 한참 떨어지는데, 그 이유를 설명해주는 법칙이기도 하다.[2]

파일:external/upload.wikimedia.org/500px-AmdahlsLaw.svg.png
병렬 컴퓨팅을 할 경우, 일부 병렬화 가능한 작업들은 사실상 계산에 참여하는 컴퓨터의 개수에 비례해서 속도가 늘어난다. 이러한 경우 암달의 법칙에 의해서 전체 수행시간의 개선 효과는 병렬화가 불가능한 작업들의 비중에 크게 영향을 받게 된다. 즉, 아무리 컴퓨터의 개수가 늘어나더라도 위의 그림에서 보는 것처럼 속도의 한계는 정해져있다는 것.

위에서 서술했듯이, 이 법칙에 의해서 수행 속도 증가폭의 한계가 정해져버리기 때문에, 이 법칙을 암달의 저주라고 부르기도 한다. 엄밀히 말해 암달은 현실에서 생기는 현상을 "내가 분석해보니 수식으로 표현하면 이렇다"고 이론으로 정립했을 뿐이지 암달이 컴퓨터 공학에 제약을 건 것은 아니기 때문에 저주라는 별칭은 억울하겠지만 (…)

3. 구스타프슨의 법칙

Gustafson's law

암달의 법칙과는 다르다. 암달의 법칙이 실행 시간의 감소에 초점을 두었다면 구스타프슨의 법칙은 동일한 시간 동안의 작업분량에 초점을 두었다.
즉, 암달의 법칙은 latency에, 구스타프슨의 법칙은 throughput에 기준을 두었다고 보면 된다.
아래와 같은 수식으로 표현된다.
[math( \displaystyle S(P)=P - a(P - 1) )]
여기에서 [math(P)]는 프로세서의 개수, [math(a)]는 병렬화되지 않는 부분의 비율, [math(S(P))]는 이론상 성능 향상 비율이다. 여기에서의 성능 향상은 같은 시간 동안 처리하는 데이터량의 비율이다.

파일:external/upload.wikimedia.org/Gustafson.png

가령 병렬화되지 않는 부분이 전체 프로세스의 50%이고 CPU를 128개 투입한다면 성능 향상은 [math(128 - 0.5 * (128 - 1) = 64.5)]이다. 즉 같은 시간 동안 128개의 CPU를 활용해서 64.5배의 데이터를 처리할 수 있게 된다.

4. 초선형적 성능향상 (Superlinear speedup)

암달의 법칙은 이론적이고 자명한 법칙인 만큼, 현실에 적용될 때에는 실제 연산장치가 이론적으로 완벽하지 않음에 의한 예외가 발생하기도 한다. 이 중에서 유명한 것 중 하나가 N개로 병렬 연산을 했을 때 N배를 뛰어넘는 성능 향상을 얻게 되는 초선형적 성능 향상이다.

기본적으로 이 현상은 이상적인 순차 계산 성능 에 비해 병렬처리로 N배 이상의 성능을 얻는 것이 아닌, 현실적으로 획득할 수 있었던 순차 계산 성능 에 비해 병렬처리를 도입할 때 병렬화 갯수 이상의 효과를 얻는 것을 의미한다. 따라서, 이러한 현상은 매우 제한적으로 발생하며 원한다고 얻을 수 있는 것도 아니다.

초선형적 성능 향상의 흔한 원인은 다음과 같다.

5. 관련 문서



[1] 무어의 법칙 같은 건 자연 법칙이 아니라 고든 무어의 경험에 의한 관찰에 불과하다. [2] 물론 각 부품이 컴퓨터의 성능에서 정확히 몇 퍼센트의 비중을 차지하는지 딱 떨어뜨려 계산할 수도 없고, 게임의 프레임은 단순히 컴퓨터의 연산력 뿐만 아니라 그 게임이 컴퓨터에서도 어떤 부품의 성능에 주로 의존하는지, 해당 부품에 대한 최적화가 어떤지 등 복합적인 요인이 작용하기 때문에 암달의 법칙으로 실제 프레임 증가폭을 정확히 예측하기는 어렵다. 그냥 연산력 증가폭과 프레임 향상폭의 괴리가 왜 생기는지를 설명하는 정도라고만 보면 된다. [3] 초선형 성능 향상의 가장 대표적인 예