2014-06-10 3 views
3

분기 예측 논리는 얼마나 끈적합니까? 코드가 명령어 캐시에서 제거되는 경우 통계는 그대로 유지됩니까?복잡한 코드 및 분기 예측 자

코드가 복잡하거나 일괄 처리를하지 않으면 분기 예측이 여전히 도움이 될까요?

은의이 프로세서마다 다르다 분기 예측의 상품 인텔 서버 하드웨어보다 새로운 2011 년

+2

Intel이 알고리즘/하드웨어를 조정할 때마다 프로세서마다 달라질 수 있습니다. 스테핑에서 스테핑까지 다양합니다. 또한 분기 예측기 성능이 전체 프로세서 성능의 큰 부분이기 때문에 인텔이 해당 분기 예측 자의 세부 사항을 밝히지 않을 것이라고 확신합니다. – awksp

+1

명령어 캐시는 명령어 캐시와 관련이 없어야합니다.가지와 그 역사를 저장하는 "캐시"가 있습니다. 그래서 그것은 여러 가지 가지를 추적 할 수 있습니다 (수천?). 너가 저것을 범람 시키면 않는 한 아마 아무 문제점도 있지 않을 것이다. – Mysticial

+0

관련없는 태그로 질문에 태그를 추가하지 마십시오. 이 질문은 인텔 프로세서 내부에 대한 것입니다. Java와는 아무런 관련이 없습니다. –

답변

6

정확한 동작을 가정 해 봅시다. 그러나 거의 모든 중요하지 않은 분기 예측자는 프로그램에서 분기의 내역이 필요합니다.

이 기록은 분기 기록 버퍼에 기록됩니다.

이들은 여러 가지 맛이 있습니다. 가장 일반적으로 공부 두 사람은 다음과 같습니다

  • 지역의 역사 - 각 지점의 역사를 추적합니다.
  • 전체 내역 - 모든 지점의 결합 된 기록을 추적합니다.

현대 프로세서는 다른 용도로 여러 개의 버퍼를 갖습니다. 모든 경우에서 버퍼의 크기는 제한적입니다. 그래서 그들이 방에서 떨어지면, 뭔가은 퇴거해야합니다.

Intel 또는 AMD 모두 분기 예측 자에 대한 세부 정보를 제공하지 않습니다. 그러나 두 회사의 현재 프로세서가 그들의 역사와 함께 수천 개의 지점을 추적 할 수 있다고 믿어집니다.


지점으로 돌아 가면 분기 예측기에서 사용하는 데이터가 히스토리 버퍼에있는 한 "고정"됩니다. 코드가 작고 버퍼 오버런을 발생시키지 않을 정도로 잘 동작하는 경우 예측기의 성능이 가장 좋습니다.

  • 대부분의 계산이 소량의 코드에서 소비되는 경우 로컬 히스토리 버퍼는 일반적으로 히트되는 모든 분기를 추적 할 수 있습니다.
  • 계산이 온통 끝나면 분기 예측기가 추적 할 분기가 너무 많아서 성능이 저하됩니다. 명령 및 UOP 캐시는 분기 예측기 무관하지만, 동일한 효과를 나타낼 것이라는

참고. 따라서 테스트 케이스를 구성하려고 할 때 분기 예측자를 선택하여 그 동작을 연구하는 것이 어려울 수 있습니다.

지역성이있는 경우 성능면에서 이점이 있습니다.

+0

또한 가장 일반적인 분기 기록 버퍼가 설계된 방식으로 단일 분기에는 발생한 기록 컨텍스트를 기반으로 여러 항목이있을 수 있으므로 예측기가 오버플로되는 시나리오를 달성하는 것은 너무 드물거나 어렵지 않습니다. instruction/uop 캐시는 스트레스를받지 않습니다 - 단지 복잡한 패턴을 가진 작은 코드 풋 프린트를 사용하거나 패턴을 전혀 사용하지 마십시오. – Leeor