암달의 법칙

Amdahl's law
Amdahl의 법칙에 따라 프로그램을 실행하는 프로세서 수에 따라 프로그램 실행 지연 시간이 이론적으로 빨라집니다.속도 향상은 프로그램의 시리얼 부분에 의해 제한됩니다.예를 들어 프로그램의 95%를 병렬화할 수 있다면 병렬 컴퓨팅을 사용한 이론상 최대 속도 향상은 20배가 될 것입니다.

컴퓨터 아키텍처에서 Amdahl의 법칙(또는 Amdahl의 주장[1])은 리소스가 개선된 시스템에서 기대할 수 있는 고정 워크로드에서의 작업 실행 지연 시간을 이론적으로 단축하는 공식입니다.구체적으로는 "시스템의 단일 부분을 최적화함으로써 얻을 수 있는 전체적인 성능 향상은 개선된 부품이 실제로 사용되는 시간의 비율에 의해 제한된다"[2][page needed]고 명시되어 있습니다.컴퓨터 과학자 Gene Amdahl이름을 따서 1967년 AFIPS 스프링 조인트 컴퓨터 컨퍼런스에서 발표되었습니다.

Amdahl의 법칙은 병렬 컴퓨팅에서 여러 프로세서를 사용할 때 이론적으로 속도를 예측하기 위해 자주 사용됩니다.예를 들어, 하나의 스레드를 사용하여 프로그램을 완료하는 데 20시간이 필요하지만 프로그램의 1시간 부분은 병렬화할 수 없으므로 나머지 19시간(p = 0.95)의 실행 시간만 병렬화할 수 있으며, 이 프로그램의 병렬 실행에 할당되는 스레드 수에 관계없이 최소 실행 시간은 다음과 같습니다.1시간 미만이어서는 안 된다.따라서 이론적인 속도 향상은 단일 스레드 성능(1 - )의 최대 20배displaystyle }}=로 제한됩니다.

정의.

Amdahl의 법칙은 다음과 같은 방법으로 [3]공식화할 수 있습니다.

어디에

  • Slatency 전체 작업 수행의 이론적 속도 향상이다.
  • s는 시스템 자원의 개선으로 이익을 얻는 태스크 부분의 속도 향상이다.
  • p는 리소스 개선을 통해 이익을 얻는 부품이 원래 점유한 실행 시간의 비율입니다.

더 나아가,

는 전체 작업의 이론적 실행 속도가 시스템 자원의 개선과 함께 증가하며, 개선의 규모에 관계없이 이론적인 속도 향상은 항상 개선의 혜택을 받을 수 없는 작업의 일부에 의해 제한된다는 것을 보여줍니다.

Amdahl의 법칙은 문제 크기가 수정된 경우에만 적용됩니다.실제로 더 많은 컴퓨팅 리소스를 사용할 수 있게 되면 더 큰 문제(더 큰 데이터 세트)에 사용되는 경향이 있으며 병렬 가능한 부분에 소요되는 시간이 기본적으로 직렬 작업보다 훨씬 더 빨리 증가하는 경우가 많습니다.이 경우, Gustafson의 법칙은 병렬 [4]성능에 대해 덜 비관적이고 더 현실적인 평가를 제공합니다.

파생

처음과 유사한 시스템에 비해 리소스가 개선된 시스템에 의해 실행되는 태스크는 두 부분으로 나눌 수 있습니다.

  • 시스템 자원 개선의 혜택을 받지 못하는 부분
  • 시스템 자원의 개선으로 이익을 얻는 부분.

예를 들어 파일을 처리하는 컴퓨터 프로그램이 있습니다. 이 프로그램의 일부는 디스크의 디렉토리를 스캔하여 메모리에 파일 목록을 만들 수 있습니다.그 후, 프로그램의 다른 부분은, 각 파일을 처리를 위해서 다른 스레드에 건네준다.디렉터리를 검사하고 파일 목록을 생성하는 부분은 병렬 시스템에서 속도를 높일 수 없지만 파일을 처리하는 부분은 속도를 높일 수 있습니다.

시스템 자원 개선 전 작업 수행 시간은 T T로 나타내며, 자원 개선으로 혜택을 받지 못하는 부분의 실행 시간과 혜택을 받는 부분의 실행 시간을 포함한다.자원 개선으로 이익을 얻을 수 있는 태스크 실행 시간의 비율은p\로 표시됩니다.따라서 부품에서 혜택을 받지 못하는 부품은입니다. 그 다음:

자원 개선 후 요소 {\ s에 의해 가속화되는 자원 개선으로 이익을 얻는 부분의 실행이다.따라서 효익이 없는 부분의 실행시간은 그대로 유지되지만 효익이 있는 부분은 다음과 같이 된다.

자원 개선 후 전체 작업의 이론적 실행 T(s) \ T ( )는 다음과 같습니다.

Amdahl의 법칙에 따라 고정 에서 작업 전체의 실행 지연 시간이론적으로 빨라집니다W \ W\ W。이러한 값은 다음과 같습니다.

병렬 프로그램

실행 시간의 30%가 속도 업의 대상인 경우 p는 0.3이 되고, 개선으로 인해 영향을 받는 부품의 속도가 2배가 되면 s는 2가 됩니다.Amdahl의 법칙에 따르면 개선 적용의 전반적인 속도는 다음과 같습니다.

예를 들어 연속된 4개의 부분으로 분할된 직렬 작업이 주어졌다고 가정합니다. 이 작업의 실행 시간의 백분율은 각각 p1 = 0.11, p2 = 0.18, p3 = 0.23, p4 = 0.48입니다.그러면 첫 번째 부분은 속도가 빨라지지 않으므로 s1 = 1인 반면 두 번째 부분은 5배 빨라지므로 s2 = 5, 세 번째 부분은 20배 빨라지므로 s3 = 20, 네 번째 부분은 1.6배 빨라지므로 s4 = 1.6이다.Amdahl의 법칙을 사용함으로써 전체적인 속도 향상은

4부(실행시간의 48%)를 1.6배만 가속해도 2부, 3부 각각 5배, 20배 가속은 전체 속도 상승에 큰 영향을 미치지 않는 점에 유의하십시오.

시리얼 프로그램

태스크에 두 개의 독립부분, A와 B가 있다고 가정합니다.파트 B는 전체 계산 시간의 약 25%를 소비합니다.열심히 일하면 이 부분을 5배 빠르게 만들 수 있지만, 전체 계산의 시간을 조금 줄일 수 있습니다.반면 부품 A의 성능을 2배 향상시키려면 작업량을 줄일 필요가 있습니다.이렇게 하면 부품 B의 속도 상승이 비율 면에서 더 커지더라도 부품 B를 최적화하는 것보다 훨씬 더 빨리 계산할 수 있습니다(대 2배).

예를 들어, T = 3s B T = 1sA부분 A와 B의 직렬 프로그램을 사용할 경우,

  • 부품 B가 5배 더 빨리 실행되도록 만든 경우, 즉 s = 5와 p = TB/(TA + TB) = 0.25입니다.
  • 부품 A가 2배 더 빨리 실행되도록 만든 경우, 즉 s = 2 p = TA/(TA + TB) = 0.75입니다.

따라서 부품 A를 2배 빠르게 실행하는 것이 부품 B를 5배 빠르게 실행하는 것보다 좋습니다.속도 향상률은 다음과 같이 계산할 수 있습니다.

  • 부품 A를 2배 개선하면 전체 프로그램 속도가 1.60배 증가하여 원래 계산보다 37.5% 빨라집니다.
  • 그러나 부품 B를 5배 개선하면 더 많은 노력이 필요할 것으로 생각되므로 전체 속도 향상 계수는 1.25에 불과하므로 20% 더 빨라집니다.

병렬 프로그램의 순차적 부분 최적화

병렬 불가능한 부품이 O O 계수만큼 되어 있는 경우,

Amdahl의 법칙에 따라 병렬로 인한 속도 상승은 다음과 같이 주어진다.

s { s이면 S 시간(, ) {)=1. 즉, 비호환성 부품이 최적화되고 나서 실행 시간에 대해 속도 향상을 측정합니다.

s { s = \ 인 경우,

- .4{4 O O=2} s { s인 경우:

병렬 프로그램의 순차적인 부분을 병렬화할 수 있는 부분으로 변환

다음으로 병렬화 불가능한 부분을 O { O로 줄이고 병렬화 가능한 부분을 그에 따라 증가시키는 경우를 고려한다.그리고나서

Amdahl의 법칙에 따라 병렬로 인한 속도 상승은 다음과 같이 주어진다.

위의 도출은 실행 시간 대 속도 향상 트레이드오프에 [5]대한 Jakob Jenkov의 분석과 일치합니다.

수익 체감의 법칙과의 관계

Amdahl의 법칙은 종종 수익 체감의 법칙과 결합되지만 Amdahl의 법칙을 적용하는 특별한 경우만이 수익 체감의 법칙을 보여줍니다.개선해야 할 것을 최적으로(달성된 속도 향상 측면에서) 선택하면 개선될수록 단조롭게 감소하는 것을 볼 수 있다.그러나 차선의 성분을 개선하고 더 최적의 성분을 개선하기 위해 이동한 후 비최적적으로 선택하면 수익률이 증가할 수 있습니다.일부 개선은 다른 개선보다 어렵거나 개발 시간이 더 오래 걸리는 점을 고려할 때 이러한 의미에서 "최적이 아닌" 순서로 시스템을 개선하는 것이 합리적이라는 점에 유의하십시오.

Amdahl의 법칙은 사용 가능한 프로세서를 모두 사용하는 고정 크기 계산을 실행하는 머신에 프로세서를 추가함으로써 얻을 수 있는 수익의 종류를 고려하는 경우 수익 감소의 법칙을 나타냅니다.시스템에 새로운 프로세서를 추가할 때마다 이전 프로세서보다 사용 가능한 전력이 줄어듭니다.프로세서의 수를 2배로 늘릴 때마다 총 throughput이 제한치 1/(1 - p)에 가까워지기 때문에 속도 향상 비율은 감소합니다.

이 분석에서는 메모리 대역폭 및 I/O 대역폭과 같은 기타 잠재적인 병목 현상을 무시합니다.이러한 리소스가 프로세서 수에 따라 확장되지 않는 경우 프로세서를 추가하는 것만으로 수익률이 더 낮아집니다.

Amdahl의 법칙이 시사하는 바는 시리얼 부분과 병렬 부분을 모두 갖춘 실제 애플리케이션을 고속화하기 위해서는 [6]이종 컴퓨팅 기술이 필요하다는 것입니다.일반적인 형태의 이질성이라고 불리는 이질성의 보다 일반적인 표현에 기초한 새로운 속도 향상 및 에너지 소비 모델이 있으며, 이 모델은 광범위한 이질적인 다핵심 아키텍처를 지원합니다.이러한 모델링 방법은 시스템 전력 효율과 성능 범위를 예측하는 것을 목표로 하며 하드웨어 및 시스템 소프트웨어 [7][8]수준에서 연구개발을 촉진합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Rodgers, David P. (June 1985). "Improvements in multiprocessor system design". ACM SIGARCH Computer Architecture News. New York, NY, USA: ACM. 13 (3): 225–231 [p. 226]. doi:10.1145/327070.327215. ISBN 0-8186-0634-7. ISSN 0163-5964. S2CID 7083878.
  2. ^ Reddy, Martin (2011). API Design for C++. Burlington, Massachusetts: Morgan Kaufmann Publishers. doi:10.1016/C2010-0-65832-9. ISBN 978-0-12-385003-4. LCCN 2010039601. OCLC 666246330.
  3. ^ Bryant, Randal E.; David, O'Hallaron (2016), Computer Systems: A Programmer's Perspective (3 ed.), Pearson Education, p. 58, ISBN 978-1-488-67207-1
  4. ^ McCool, Michael; Reinders, James; Robison, Arch (2013). Structured Parallel Programming: Patterns for Efficient Computation. Elsevier. p. 61. ISBN 978-0-12-415993-8.
  5. ^ "Amdahl's Law".
  6. ^ Hill, Mark D.; Marty, Michael R. (2008). "Amdahl's Law in the Multicore Era". Computer. 41 (7): 33–38. doi:10.1109/MC.2008.209.
  7. ^ Rafiev, Ashur; Al-Hayanni, Mohammed A. N.; Xia, Fei; Shafik, Rishad; Romanovsky, Alexander; Yakovlev, Alex (2018-07-01). "Speedup and Power Scaling Models for Heterogeneous Many-Core Systems". IEEE Transactions on Multi-Scale Computing Systems. 4 (3): 436–449. doi:10.1109/TMSCS.2018.2791531. ISSN 2332-7766.
  8. ^ Al‐hayanni, Mohammed A. Noaman; Xia, Fei; Rafiev, Ashur; Romanovsky, Alexander; Shafik, Rishad; Yakovlev, Alex (July 2020). "Amdahl's law in the context of heterogeneous many‐core systems – a survey". IET Computers & Digital Techniques. 14 (4): 133–148. doi:10.1049/iet-cdt.2018.5220. ISSN 1751-8601.

추가 정보

외부 링크