어떤 종류의 분기 예측이 더 중요합니까?


11

분기 예측에는 두 가지 유형의 상태가 있음을 관찰했습니다.

  1. 수퍼 스칼라 실행에서 분기 예측이 매우 중요하며 주로 페치 지연보다는 실행 지연에 있습니다.

  2. 명령어 파이프 라인에서 명령어는 실제로 나중에 실행되지 않기 때문에 페치가 더 문제가됩니다.

이 중 어느 것이 매우 중요합니까 (현재 요즘의 CPU에서 어떤 것이 중요한가)? 둘 다 똑같이 중요하거나 두 번째 것이 더 중요한 경우 왜 우리는 두 개의 파이프 라인을 가지고 있지 않습니까 (아마도 절반 길이) 분기에 따라 그중 하나를 선택한 다음 다시 인구를 시작하십시오. 처음?


1
상황에 따라 둘 다 중요할까요?
Raphael

답변:


6

어떤 사례가 널리 퍼져 있는지 모르겠지만 이중 파이프 라인 제안에 대한 몇 가지 의견을 제시하고자합니다.

우선, 두 배의 에너지를 소비하고 활동하는 동안 두 배의 열을 생성하는 와이어를 두 배로해야합니다. 반면에 필요하지는 않지만 완전히 쓸모가 없습니다. 따라서 현대 프로세서에서는 드물게 리소스를 잘 사용하지 못한다고 주장 할 수 있습니다.

좀 더 근본적으로, 확률에 따라 하나의 브랜치를 선호하지 않는 한, 어떤 버전을 작성해야하는지 어떻게 알 수 있습니까? 그렇지 않으면 다른 프로세서가 결정을 기다려야 할 수도 있으므로 아무 것도 저장하지 않을 수 있습니다. 그중 하나를 고수하면 롤백 확률과 비용이 본질적으로 같습니다.

C=c+p(cr+c)cpcr2c2c+pcrCpcrpt+p(tr+t)tt+ptrp


내가 아는 한, 인텔은 "지점의 양쪽에 대한 지침 읽기"및 "지점의 양쪽에 대한 지침 실행"을 시도하여 중단했습니다. 아무것도 얻지 못했거나 비용과 복잡성이 너무 높아서 동일한 비용으로 다른 방식으로 더 많은 이익을 얻을 수 있기 때문입니다.
gnasher729

@ gnasher729 그리고 그것은 아마도 우리가 이와 같은 기능과 관련된 보안 결함에 대해 배우기 전에 있었습니까?
Raphael

2

어떤 의미에서, 브랜치 예측의 효과는 페치되지 않은 명령이 실행될 수 없기 때문에 명령 페치에서 더 중요하다.

지점의 두 경로를 모두 실행하는 것과 관련하여이를 간절한 실행이라고하며 다소 실질적으로 연구되었습니다. Augustus K. Uht와 Vijay Sindagi의 "Disjoint Eager Execution : 최적의 추론 실행"(1995)은 가치가 있습니다.

빠른 실행에는 몇 가지 문제가 있습니다. 깊은 추측의 경우 추적해야하는 경로 수가 기하 급수적으로 증가 할 수 있습니다 (각 분기 분기 경로에는 분기가 발생할 수 있음). 분기 예측도 종종 매우 정확하고 (> 90 % 정확) 항상 두 경로를 모두 실행하는 것은 낭비입니다. 빠른 실행은 또한 쓸모없는 내용으로 캐시를 "오염"시킬 수 있습니다. (위에 언급 된 논문 은 이러한 문제 중 일부를 피하기 위해 지능적으로 제한적인 열망 실행을 제안 했습니다.) 대체 경로를 가져 오기 위해 열망을 제한적으로 가져 오면 짧은 ​​파이프 라인에서 잘못된 예측 복구 지연을 줄이는 데 다소 매력적일 수 있습니다.

제안 된 또 다른 접근법은 "해먹"브랜치 (명령 흐름의 주요 경로에 연결되는 짧은 포워드 브랜치)를 동적으로 제시하는 것입니다. Artur Klauser 등의 "비 선언 명령어 집합 아키텍처에 대한 동적 해먹 예측"(1998)은이 아이디어에 대한 가치가 있습니다. (Hyeoon Kim et al.의 "Wish Branches : 조건부 분기와 적응 적응 실행을위한 조건부 결합"은 해먹의 예측을 용이하게하고이 예측 방법을 예측하기 어려운 루프 분기로 확장하는 ISA 분기에 추가 할 것을 제안합니다.)


정말 좋은 답변입니다! 감사합니다. :-)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.