3

컴퓨터 아키텍처에서 Amdahl의 법칙은 리소스가 개선 된 시스템에서 예상 할 수있는 고정 작업 부하에서 작업 실행의 이론적 인 속도 향상을 제공합니다. amdahl의 법칙은 얼마나 정확합니까?

Slatency

는 전체 작업의 실행의 지연 시간에 이론적 인 속도 향상이다;

는 시스템 자원의 개선으로 이익을 얻는 작업 부분의 실행 시간을 단축합니다.

p은 개선되기 전에 시스템의 리소스를 개선함으로써 이익을 얻는 부분에 관한 전체 작업의 실행 시간의 백분율입니다.

Slatency = 1/[(1-p) + (p/s)]

그것은 모든 이론이며, 그것이 적용 할 때 나를 생각했다. 그리고 CPU 성능을 예측하는 것이 얼마나 정확합니까?

답변

3

종종 프로그램의 일부분을 조정하려는 경우 마이크로 벤치 마크를 만들어 격리 된 상태로 테스트합니다.

전체 프로그램의 일부로 실행될 때 동작 방식이 항상 반영되는 것은 아닙니다. (예 : 단단한 루프가 아닌 튜닝중인 파트를 다른 작업으로 실행하는 경우)

예 : sin(x) 계산이 비싸고 룩업 테이블이 바뀌었다면 마이크로 벤치 마크에서 이길 수 있습니다. 작은 테이블은 중간에 다른 작업을하지 않고 연속적으로 호출 할 때 캐시에 남아 있기 때문에 마이크로 벤치 마크에서 이길 수 있습니다. 마찬가지로, 마이크로 벤치 마크는 브랜치 예측을 초기화하고 코드 캐시가 없기 때문에 성능을 측정합니다 (루프 언 롤링이 더 좋게 보일 수 있습니다).

그러나 이것은 단지 프로그램 전체의 일부로 함수에 대해 s의 추정치가 잘못되었음을 나타냅니다. Amdahl의 법칙은 정확하지 않습니다. 그것은 그것을 잘못 사용하는 경우 일뿐입니다.


그러나,이 질문에 대한 진정한 해답으로 이어질 않습니다

더 많은 캐시로 연결하는 방식으로 프로그램의 한 부분을 가속화 또는 TLB는 잘못된 분기 예측 등의 골대를 벗어났습니다 다른 프로그램의 일부가 Amdahl의 법을 위반합니다.

+0

감사합니다. 's'의 추정이 너무 까다 롭다는 것을 알지 못했습니다. 하지만 이치에 맞습니다. –

+2

Amdalh의 법칙은 단순한 수학적 관계에 불과합니다. 그런 의미에서 이것은 틀림이 없지만 가정하는 (또는 일반적으로 교과서 응용 프로그램에서 가정하는) 기본 성능 모델은 너무 간단합니다. 프로그램을 두 부분으로 균등하게 분할 할 수 있습니다. 일부는 "자원 개선"(이는 자원 감소가 될 수 있음)과 영향을받지 않는 다른 부분의 영향을받습니다. 현대 호스트와 같이 매우 복잡한 시스템에서는 보통 깨끗한 부분이 없습니다. 한 부분의 변경으로 인해 다른 부분에 임의의 노크 효과가 생길 수 있습니다. – BeeOnRope