예를 들어 (a -> b -> c) -> (a -> b -> c) -> ...와 같이 주기적으로 반복되는 명령의 사슬이 주어지면 ...실행 처리량을 최대화하기위한 최소한의 종속성 체인은 무엇입니까?
-> (a0-> b0->- (a0-> b0-> C0) :
이 아웃 오브 오더 실행의 혜택을 짧은 몇 가지 독립적 인 하위 종속 사슬로 분할 할 수 있다고 가정하면 C0) -> ...
- (A1-> B1-> C1) -> (A1-> B1-> C1) -> ...
아웃 오브 오더 엔진 각 일정 지시하다 대기 시간과 상호 처리량이있는 해당 CPU 장치로 전송하십시오.
실행 처리량을 최대화하는 하위 종속성 체인의 최적 수는 무엇입니까?
Agner 's manual Optimizing subroutines in assembly language, 12.15 절에 따르면 : "CPU가 할 일이 전혀없는 경우 누적 기의 최적 수는 의존성 체인에서 가장 중요한 명령어의 대기 시간을 해당 명령어의 상호 처리량으로 나눈 값입니다." "가장 중요한 명령"은 무엇을 의미합니까? 이런 종류의 문제를 다루는 다른 기술 문서가 있습니까?
덕분에 매우 – DMH
@DMH 감사 :이 꽤 잘 이론을 설명 생각했다. 당신은 일련의 지시 명령에 대한 대기 시간 대 처리량의 비율을 계산하고, 그 처리량 대신 대기 시간 병목 현상을 비행해야 그것의 매수입니다. 이는 길이에 따라 수동으로 인터리빙하는 것을 의미 할 수도 있고 그렇지 않을 수도 있습니다 (짧은 루프가 전달 된 종속성을 줄이기 위해 다중 누적기를 사용하는 것처럼) –