KR101829369B1 - 오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들 - Google Patents

오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들 Download PDF

Info

Publication number
KR101829369B1
KR101829369B1 KR1020167025917A KR20167025917A KR101829369B1 KR 101829369 B1 KR101829369 B1 KR 101829369B1 KR 1020167025917 A KR1020167025917 A KR 1020167025917A KR 20167025917 A KR20167025917 A KR 20167025917A KR 101829369 B1 KR101829369 B1 KR 101829369B1
Authority
KR
South Korea
Prior art keywords
branch
branch prediction
prediction
history
speculative
Prior art date
Application number
KR1020167025917A
Other languages
English (en)
Other versions
KR20160135726A (ko
Inventor
라미 모함매드 알 셰이크
라구람 다모다란
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20160135726A publication Critical patent/KR20160135726A/ko
Application granted granted Critical
Publication of KR101829369B1 publication Critical patent/KR101829369B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들, 및 컴퓨터-판독가능한 매체들이 개시된다. 하나의 실시예에서, 제 1 분기 예측기 및 제 2 분기 예측기를 포함하는 분기 예측 회로가 제공된다. 제 1 분기 예측기는 조건적 분기 명령에 대한 제 1 분기 예측을 생성하고, 제 1 분기 예측은 제 1 분기 예측 이력에 저장된다. 제 1 분기 예측은 또한, 제 2 분기 예측 이력으로 추론적으로 포워딩된다. 후속적으로, 제 2 분기 예측기는 추론적으로 포워딩된 제 1 분기 예측을 포함하는 제 2 분기 예측 이력에 기초하여 제 2 분기 예측을 생성한다. 제 2 분기 예측기가 자신의 분기 예측이 추론적으로 포워딩된 제 1 분기 예측에 기초하도록 하는 것을 가능하게 함으로써, 제 2 분기 예측기의 정확도가 개선될 수 있다.

Description

오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들{SPECULATIVE HISTORY FORWARDING IN OVERRIDING BRANCH PREDICTORS, AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA}
[0001] 본 개시 내용의 기술은 일반적으로 컴퓨터 시스템들에서의 분기 예측에 관한 것이다.
[0002] 명령 파이프라이닝(pipelining)은 프로세서에 의해 실행되는 컴퓨터 명령들의 스루풋이 각각의 명령의 핸들링을 일련의 단계들로 분할함으로써 증가될 수 있는 프로세싱 기법이다. 이 단계들은 다수의 스테이지들로 구성되는 실행 파이프라인에서 실행된다. 실행 파이프라인에서의 모든 스테이지들이 명령들을 동시에 프로세싱할 수 있으면, 최적의 프로세서 성능이 달성될 수 있다. 그러나, 실행 파이프라인에서의 명령들의 동시 실행은 조건적 분기 명령들의 존재에 의해 방해될 수 있다. 조건적 분기 명령들이 실행되는 경우 조건적 분기 명령들은 평가되는 조건들에 기초하여 프로그램의 흐름을 재지시할 수 있다. 결과적으로, 프로세서는 조건적 분기 명령이 실행할 때까지 추가 명령들의 인출을 스톨링(stall)하여야 하여서, 감소된 프로세서 성능 및 증가된 전력 소비를 초래한다.
[0003] 프로세서 성능을 최대화하기 위한 하나의 접근법은 분기 예측 회로를 활용하여 조건적 분기 명령이 취해질 것인지 여부를 예측하는 것을 포함한다. 조건적 분기 명령이 취해질 것인지에 대한 예측은 이전 조건적 분기 명령들의 분기 예측 이력에 기초할 수 있다. 그 다음, 예측된 분기에 대응하는 명령들은 인출되고, 프로세서에 의해 추론적으로 실행될 수 있다. 오예측된(mispredicted) 분기의 경우, 잘못 예측된 분기에 대응하는 인출된 명령들이 실행 파이프라인으로부터 플러싱(flush)되고 취해진 분기에 대응하는 명령들이 인출되는 동안, 프로세서는 지연을 발생시킬 수 있다. 따라서, 정확한 분기 예측기는 분기 오예측들의 (감소되는 프로세서 성능 및 불필요한 전력 소비 둘 다에 관한) 페널티들을 최소화하도록 요구된다.
[0004] 종래의 분기 예측기들의 정확도는 일반적으로, 분기 예측을 생성하는데 요구되는 다수의 프로세서 클럭 사이클들에 대응할 수 있다. 예를 들어, 비교적 단순한 분기 예측기는 분기 예측을 제공하기 위해서 단지 단일한 프로세서 클럭 사이클을 요구할 수 있지만, 결과적 분기 예측은 덜 정확할 수 있다. 반대로, 더 복잡한 분기 예측기는 더 높은 정확도를 제공할 수 있지만, 멀티-사이클 레이턴시를 겪을 수 있다(즉, 분기 예측을 생성하기 위해서 다수의 프로세서 클럭 사이클들을 요구할 수 있음).
[0005] 정확도와 속도 사이의 트레이드오프를 완화하기 위해서, "오버라이딩하는(overriding) 분기 예측기"는 더 느리고 더 정확한 제 2 분기 예측기와 함께 더 빠르고 덜 정확한 제 1 분기 예측기를 이용할 수 있다. 이 두 분기 예측기들은 각각의 조건적 분기 명령에 대한 예측들을 제공하며, 여기서, 제 2 분기 예측기는 제 1 분기 예측기보다 늦게 수 프로세서 클럭 사이클들로 자신의 예측을 제공한다. 프로세서는 초기에, 제 1 분기 예측기의 분기 예측에 기초하여 명령들을 인출한다. 제 2 분기 예측기의 분기 예측이 생성되는 경우, 프로세서는 그것을 제 1 분기 예측과 비교한다. 예측들이 상이하면, 제 2 예측은 제 1 분기 예측기에 대한 분기 예측 이력에 제 1 예측을 중복 기재(overwrite)하는데 사용되고, 적절한 명령들은 제 2 분기 예측에 기초하여 재인출된다. 명령들의 재인출이 성능 페널티를 발생시킬 수 있음에도 불구하고, 프로세서는 여전히, 명령들이 재인출 전에 실행 스테이지에 도달할 때까지 기다림으로써 발생되는 페널티와 비교하여 네트 성능 개선을 달성한다. 이것은 특히, 명령 인출과 명령 실행 사이의 다수의 파이프라인 스테이지들을 가지는 프로세서들의 경우이다.
[0006] 그러나, 오버라이딩하는 분기 예측기의 제 2 분기 예측기의 멀티-사이클 레이턴시로 인하여, 제 2 분기 예측기는 자신의 분기 예측들이 "오래된(stale)"(즉, 가장 최근에 당면된 조건적 분기 명령들에 대한 분기 예측들을 포함하지 않는) 분기 예측 이력을 기초로 하도록 하여야 한다. 결과적으로, 제 2 분기 예측기의 정확도 및 성능은 최적의 정확도 및 성능보다 낮을 수 있다.
[0007] 본 개시 내용의 실시예들은 오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩을 제공한다. 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들이 또한 개시된다. 이와 관련하여, 하나의 실시예에서, 제 1 분기 예측기 및 제 2 분기 예측기를 포함하는 분기 예측 회로가 제공된다. 제 1 분기 예측기는 조건적 분기 명령에 대한 제 1 분기 예측을 생성하고, 제 1 분기 예측은 제 1 분기 예측 이력에 저장된다. 제 1 분기 예측은 또한, 제 2 분기 예측 이력으로 추론적으로 포워딩된다. 후속적으로, 제 2 분기 예측기는 추론적으로 포워딩된 제 1 분기 예측을 포함하는 제 2 분기 예측 이력에 기초하여 제 2 분기 예측을 생성한다. 제 2 분기 예측기가 자신의 분기 예측이 추론적으로 포워딩된 제 1 분기 예측을 기초로 하는 것을 가능하게 함으로써, 제 2 분기 예측기의 정확도가 개선될 수 있다.
[0008] 또 다른 실시예에서, 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로가 제공된다. 분기 예측 회로는 제 1 분기 예측기, 포워딩 회로 및 제 2 분기 예측기를 포함한다. 제 1 분기 예측기는 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하고, 그리고 조건적 분기 명령에 대한 제 1 분기 예측에 기초하여 제 1 분기 예측 이력 레지스터를 업데이트하도록 구성된다. 포워딩 회로는 조건적 분기 명령에 대한 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력 레지스터로 포워딩하도록 구성된다. 제 2 분기 예측기는 제 2 분기 예측 이력 레지스터가 추론적 예측을 포함하는 것에 기초하여 명령 큐에서의 조건적 분기 명령의 제 2 분기 예측을 예측하도록 구성된다. 이 방식으로, 제 2 분기 예측기의 정확도는 분기 예측들이 추론적으로 포워딩된 분기 예측을 기초로 하도록 함으로써 개선될 수 있다.
[0009] 또 다른 실시예에서, 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로가 제공된다. 분기 예측 회로는 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하고, 그리고 조건적 분기 명령에 대한 제 1 분기 예측에 기초하여 제 1 분기 예측 이력 레지스터를 업데이트하기 위한 제 1 분기 예측기 수단을 포함한다. 분기 예측 회로는 조건적 분기 명령에 대한 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력 레지스터로 포워딩하기 위한 포워딩 수단을 더 포함한다. 분기 예측 회로는 또한, 제 2 분기 예측 이력 레지스터가 추론적 예측을 포함하는 것에 기초하여 명령 큐에서의 조건적 분기 명령의 제 2 분기 예측을 예측하기 위한 제 2 분기 예측기 수단을 포함한다.
[0010] 또 다른 실시예에서, 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법이 제공된다. 방법은 제 1 분기 예측 이력에 기초하여 제 1 분기 예측기에 의해 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하는 단계를 포함한다. 방법은 조건적 분기 명령에 대한 제 1 분기 예측에 기초하여 제 1 분기 예측 이력을 업데이트하는 단계를 더 포함한다. 방법은 또한, 조건적 분기 명령에 대한 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력으로 포워딩하는 단계를 포함한다. 방법은 추가적으로, 제 2 분기 예측 이력이 추론적 예측을 포함하는 것에 기초하여 제 2 분기 예측기에 의해 명령 큐에서의 조건적 분기 명령의 제 2 분기 예측을 예측하는 단계를 포함한다.
[0011] 또 다른 실시예에서, 프로세서로 하여금 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법을 구현하게 하기 위한 컴퓨터 실행가능한 명령들을 저장하는 비-일시적 컴퓨터 판독가능한 매체가 제공된다. 컴퓨터 실행가능한 명령들에 의해 구현되는 방법은 제 1 분기 예측 이력에 기초하여 제 1 분기 예측기에 의해 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하는 단계를 포함한다. 컴퓨터 실행가능한 명령들에 의해 구현되는 방법은 조건적 분기 명령에 대한 제 1 분기 예측에 기초하여 제 1 분기 예측 이력을 업데이트하는 단계를 더 포함한다. 컴퓨터 실행가능한 명령들에 의해 구현되는 방법은 또한, 조건적 분기 명령에 대한 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력으로 포워딩하는 단계를 포함한다. 컴퓨터 실행가능한 명령들에 의해 구현되는 방법은 추가적으로, 제 2 분기 예측 이력이 추론적 예측을 포함하는 것에 기초하여 제 2 분기 예측기에 의해 명령 큐에서의 조건적 분기 명령의 제 2 분기 예측을 예측하는 단계를 포함한다.
[0012] 도 1은 더 빠르지만 덜 정확한 제 1 분기 예측기 및 더 느리지만 더 정확한 제 2 분기 예측기를 제공하는 분기 예측 회로를 포함하고, 추론적 이력 포워딩을 수행하도록 구성되는 예시적 프로세서의 블록도이다.
[0013] 도 2는 추론적 이력 포워딩 없이 오버라이딩하는 분기 예측기들을 사용하는 예시적인 조건적 분기 명령들의 프로세싱을 예시하는 타이밍도이다.
[0014] 도 3은 분기 예측 정확도를 개선하기 위해서 예시적인 조건적 분기 명령들의 프로세싱 동안 도 1의 분기 예측 회로에 의한 추론적 이력 포워딩의 사용을 예시하는 타이밍도이다.
[0015] 도 4는 추론적 이력 포워딩을 수행하기 위한 예시적 동작들의 흐름도이다.
[0016] 도 5는 다수의 분기 예측 이력들을 저장하기 위한 예시적 단일 이력 레지스터를 예시하는 도면이다.
[0017] 도 6은 도 1의 분기 예측 회로를 포함할 수 있는 예시적 프로세서-기반 시스템의 블록도이다.
[0018] 이제 도시된 도면들을 참조하여, 본 개시 내용의 몇몇 예시적 실시예들이 설명된다. "예시적"이라는 단어는 본원에서 "예, 예시 또는 예증으로서 제공되는"의 의미로 사용된다. "예시적"으로서 본원에서 설명되는 임의의 실시예가 반드시 다른 실시예들보다 선호되거나 또는 유리한 것으로 해석되는 것은 아니다.
[0019] 본 개시 내용의 실시예들은 오버라이딩하는 분기 예측기들에서 추론적 이력 포워딩을 제공한다. 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들이 또한 개시된다. 이와 관련하여, 하나의 실시예에서, 제 1 분기 예측기 및 제 2 분기 예측기를 포함하는 분기 예측 회로가 제공된다. 제 1 분기 예측기는 조건적 분기 명령에 대한 제 1 분기 예측을 생성하고, 제 1 분기 예측은 제 1 분기 예측 이력에 저장된다. 제 1 분기 예측은 또한, 제 2 분기 예측 이력으로 추론적으로 포워딩된다. 후속적으로, 제 2 분기 예측기는 추론적으로 포워딩된 제 1 분기 예측을 포함하는 제 2 분기 예측 이력에 기초하여 제 2 분기 예측을 생성한다. 제 2 분기 예측기가 자신의 분기 예측이 추론적으로 포워딩된 제 1 분기 예측을 기초로 하도록 하는 것을 가능하게 함으로써, 제 2 분기 예측기의 정확도가 개선될 수 있다.
[0020] 또 다른 실시예에서, 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로가 제공된다. 분기 예측 회로는 제 1 분기 예측기, 포워딩 회로 및 제 2 분기 예측기를 포함한다. 제 1 분기 예측기는 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하고, 그리고 조건적 분기 명령에 대한 제 1 분기 예측에 기초하여 제 1 분기 예측 이력 레지스터를 업데이트하도록 구성된다. 포워딩 회로는 조건적 분기 명령에 대한 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력 레지스터로 포워딩하도록 구성된다. 제 2 분기 예측기는 제 2 분기 예측 이력 레지스터가 추론적 예측을 포함하는 것에 기초하여 명령 큐에서의 조건적 분기 명령의 제 2 분기 예측을 예측하도록 구성된다. 이 방식으로, 제 2 분기 예측기의 정확도는 분기 예측들이 추론적으로 포워딩된 분기 예측을 기초로 하도록 함으로써 개선될 수 있다.
[0021] 이와 관련하여, 도 1은 예시적 프로세서(10)의 블록도이다. 프로세서(10)는 본원에서 개시되는 바와 같이, 예측 정확도를 개선하기 위해서 추론적 이력 포워딩을 제공하도록 구성되는 분기 예측 회로(12)를 포함한다. "추론적 이력 포워딩"은, 레이턴시 이슈들에 기인하여 달리 자신의 분기 예측들이 오래된 분기 예측 이력을 기초로 하도록 할 제 2 분기 예측기에 대한 분기 예측 이력을 보충하기 위해서 제 1 분기 예측기에 의해 생성되는 분기 예측들을 활용하기 위한 동작들을 지칭한다. 도 1의 프로세서(10)의 예시적인 추론적 이력 포워딩 특징들을 논의하기 전에, 도 1의 간략한 도입이 제공된다. 다음으로, 추론적 이력 포워딩을 사용하지 않는 분기 예측의 예가 추론적 이력 포워딩을 사용하지 않는 분기 예측에 대한 도 2의 예시에 대해 논의된다. 그 다음, 분기 예측 정확도를 개선하기 위한 도 1의 분기 예측 회로(12)에 의한 추론적 이력 포워딩의 사용이 도 3에서 설명된다.
[0022] 이와 관련하여, 도 1에서, 프로세서(10)는, 다른 엘리먼트들 중에서 알려진 디지털 로직 엘리먼트들, 반도체 회로들, 프로세싱 코어들 및/또는 메모리 구조들 중 임의의 하나, 또는 이들의 결합들을 포함할 수 있다. 본원에서 설명되는 실시예들은 엘리먼트들의 임의의 특정 배열에 제한되지 않고, 개시되는 기법들은 반도체 다이들 또는 패키지들에 대한 다양한 구조들 및 레이아웃들로 쉽게 확장될 수 있다. 프로세서(10)는 입력/출력 회로들(14), 명령 캐시(16) 및 데이터 캐시(18)를 포함한다. 프로세서(10)는 프론트-엔드 회로(22), 실행 유닛(24) 및 완료 유닛(26)을 포함하는 실행 파이프라인(20)을 더 포함한다. 프로세서(10)는 추가적으로, 링크 스택(28), 및 하나 또는 그 초과의 GPR(general purpose registers)(32), 프로그램 카운터(34) 및 링크 레지스터(36)를 포함하는 레지스터들(30)을 포함한다. ARM® ARM7™ 아키텍처를 이용하는 것들과 같은 일부 실시예들에서, 링크 레지스터(36)는 도 1에 도시되는 바와 같은 GPR들(32) 중 하나이다. 대안적으로, IBM® PowerPC® 아키텍처를 활용하는 것들과 같은 일부 실시예들은 링크 레지스터(36)가 GPR들(32)(도시되지 않음)과 분리됨을 제공할 수 있다.
[0023] 예시적 동작에서, 실행 파이프라인(20)의 프론트-엔드 회로(22)는 명령 캐시(16)로부터 명령들(도시되지 않음)을 인출하고, 명령 캐시(16)는 일부 실시예들에서, 비-제한적 예로서 칩 레벨 1(L1) 캐시 상에 있다. 인출된 명령들은 프론트-엔드 회로(22)에 의해 디코딩되며, 실행 유닛(24)으로 발행된다. 실행 유닛(24)은 발행된 명령들을 실행하고, 완료 유닛(26)은 실행된 명령들을 폐기(retire)한다. 일부 실시예들에서, 완료 유닛(26)은 레지스터들(30) 중 하나 또는 그 초과에 실행 결과들을 저장하는 라이트-백(write-back) 메커니즘을 포함할 수 있다. 실행 유닛(24) 및/또는 완료 유닛(26)은 각각 하나 또는 그 초과의 순차적 파이프라인 스테이지들을 포함할 수 있다는 것이 이해될 것이다. 명령들이 하나 초과의 그룹들에서 인출 및/또는 디코딩될 수 있다는 것이 추가로 이해될 것이다.
[0024] 성능을 개선하기 위해서, 프로세서(10)는 분기 예측(이제 설명되는 예시적 동작)을 이용할 수 있다. 프론트-엔드 회로(22)는 하나 또는 그 초과의 인출/디코드 파이프라인 스테이지들(38)을 포함하고, 이들은 다수의 명령들이 동시에 인출 및 디코딩되는 것을 가능하게 한다. 실행 유닛(24)으로의 발송 때까지 인출된 명령들을 유지하기 위한 명령 큐(40)는 인출/디코드 파이프라인 스테이지들(38) 중 하나 또는 그 초과의 것에 통신가능하게 커플링된다. 명령 큐(40)는 또한, 명령 큐(40)에서 당면되는 조건적 분기 명령들에 대한 분기 예측들(도시되지 않음)을 생성하도록 구성되는 분기 예측 회로(12)에 통신가능하게 커플링된다. 도 1의 예에서, 분기 예측 회로(12)는 제 1 분기 예측기(42), 제 2 분기 예측기(44) 및 포워딩 회로(45)를 포함한다. 일부 실시예들에서, 제 1 분기 예측기(42)는 제 2 분기 예측기(44)보다 낮은 레이턴시로 동작하도록 구성될 수 있다. 예를 들어, 제 1 분기 예측기(42)는 단지 단일 프로세서 클럭 사이클의 레이턴시를 가지는 분기 예측을 생성할 수 있는 반면, 제 2 분기 예측기(44)는 더 정확한 분기 예측을 생성하기 위해서 다수의 프로세서 클럭 사이클들(즉, 멀티-사이클 레이턴시)을 요구할 수 있다. 이러한 실시예들에서, 제 1 분기 예측기(42)는 전형적으로, 제 2 분기 예측기(44)보다 낮은 정확도로 동작한다. 따라서, 제 1 분기 예측기(42)의 실시예들은 더 빠르지만 덜 정확할 수 있는 반면, 제 2 분기 예측기(44)의 실시예들은 더 느리지만(즉, 멀티-사이클 레이턴시를 겪을 수 있음) 더 정확할 수 있다. 분기 예측 회로(12)의 포워딩 회로(45)는 아래에서 더 상세하게 논의되는 바와 같이, 추론적 이력 포워딩에 대한 동작들을 수행하도록 구성된다.
[0025] 제 1 분기 예측기(42) 및 제 2 분기 예측기(44)에 의해 생성되는 하나 또는 그 초과의 분기 예측들은 레지스터들(30)의 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48) 각각에 저장될 수 있다. 일부 실시예들에서, 제 1 분기 예측 이력 레지스터(46) 및/또는 제 2 분기 예측 이력 레지스터(48)는 레지스터들(30)의 GPR들(32) 사이에 포함될 수 있거나, 또는 레지스터들(30)로부터 개별적으로 구현될 수 있다. 일부 실시예들은 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48)가 단일 이력 레지스터(도시되지 않음)를 사용하여 구현될 수 있음을 제공할 수 있고, 여기서, 제 1 및 제 2 포인터들(도시되지 않음)은 각각, 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48) 각각에 대응하는 가장 최근의 엔트리를 표시한다. 이 실시예는 아래의 도 5에 대해 더 상세하게 논의된다.
[0026] 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48)는 분기 예측에 유용하도록 당해 기술 분야에 알려진 임의의 타입의 이력 데이터를 저장하도록 구성될 수 있다는 것이 이해될 것이다. 비-제한적 예들로서, 이력 데이터는 로컬(local) 이력, 글로벌(global) 이력 및/또는 경로 이력을 포함할 수 있다. 로컬 이력은 특정 조건적 분기 명령(들)에 대한 분기 예측들을 포함하는 분기 예측 이력을 포함할 수 있는 반면, 글로벌 이력은 모든 조건적 분기 명령들에 대한 분기 예측들을 포함하는 공유된 분기 예측 이력을 포함할 수 있다. 경로 이력은 분기 타겟과 같은 데이터, 특정 분기가 취해지는지 아닌지에 대한 결정 및/또는 조건적 분기 명령으로 유도하는 경로의 컨텍스트를 포함하는 분기 예측 이력을 포함할 수 있다.
[0027] 도 1의 예에서, 프로세서(10)의 분기 예측 회로(12)는 오버라이딩하는 분기 예측기로서 동작한다. 따라서, 조건적 분기 명령이 명령 큐(40)에서 당면되는 경우, 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다는 분기 예측을 결정하기 위한 동작들을 시작한다. 제 1 분기 예측기(42)는 제 1 분기 예측 이력 레지스터(46)에 저장되는 제 1 분기 예측(도시되지 않음)을 생성한다. 프로세서(10)는 분기 예측에 대응하는 명령들을 추론적으로 인출 및 실행하도록 진행한다. 제 2 분기 예측기(44)는 제 2 분기 예측기(44)의 추가 레이턴시에 따라, 다수의 프로세서 클럭 사이클들 이후에 두 번째로 더 정확한 분기 예측(도시되지 않음)을 생성한다. 제 2 분기 예측은 제 2 분기 예측 이력 레지스터(48)에 저장된다. 그 다음, 제 2 분기 예측은 제 1 분기 예측과 비교된다. 미스매치가 존재하면, 제 2 분기 예측은 제 1 분기 예측을 오버라이딩함으로써 제 1 분기 예측 이력 레지스터(46)를 업데이트하는데 사용된다. 제 2 분기 예측이 제 1 분기 예측보다 더 정확한 것으로 가정될 수 있기 때문에, 제 1 분기 예측기(42)의 정확도는 제 1 분기 예측 이력 레지스터(46)를 제 2 분기 예측으로 업데이트함으로써 개선될 수 있다. 그 다음, 프로세서(10)는 제 2 분기 예측에 대응하는 명령들을 재인출한다.
[0028] 제 2 분기 예측기(44)는 제 1 분기 예측기(42)보다 높은 정확도를 달성할 수 있지만, 추론적 이력 포워딩의 부재 시, 제 2 분기 예측기(44)는 여전히, 자신의 멀티-사이클 레이턴시가 제 2 분기 예측 이력 레지스터(48)에 대해 가지는 효과에 기인하여 최적의 정확도를 달성하지 않을 수 있다. 특히, 제 2 분기 예측기(44)의 멀티-사이클 레이턴시로 인하여, 제 2 분기 예측 이력 레지스터(48)는 제 2 분기 예측기(44)가 새로운 분기 예측을 생성할 때 가장 최근에 당면된 조건적 분기 명령들에 대한 분기 예측들이 부족할 수 있다. 결과적으로, 제 2 분기 예측기(44)는 자신의 분기 예측들이 오래된 분기 예측 이력을 기초로 하도록 하여야 하고, 이는 차선의 정확도 레벨을 초래할 수 있다.
[0029] 추론적 이력 포워딩의 부재 시 멀티-사이클 레이턴시의 효과를 예시하기 위해서, 도 2가 제공된다. 도 2는 추론적 이력 포워딩 없이 예시적인 조건적 분기 명령들(54(0)-54(3))을 프로세싱하는 것으로부터 발생하는 제 1 분기 예측 이력(50) 및 제 2 분기 예측 이력(52)의 컨텐츠들을 예시하는 타이밍도이다. 도 2의 타이밍도의 열들은 이 예에서 F0, F1, F2, 및 F3으로 지칭되는 실행 파이프라인 스테이지들을 표현한다. 타이밍도의 행들은 프로세서 클럭 사이클들 0-3을 표현하며, 각각의 프로세서 클럭 사이클 동안 실행 파이프라인 스테이지들의 컨텐츠들을 예시한다. 각각의 행은 또한, 대응하는 프로세서 클럭 사이클 동안 제 1 분기 예측 이력(50) 및 제 2 분기 예측 이력(52)의 컨텐츠들을 도시한다. 제 1 분기 예측 이력(50)이 도 1의 제 1 분기 예측기(42)와 같은 더 빠르고 덜 정확한 분기 예측기와 연관된다는 것이 이해될 것이다. 마찬가지로, 제 2 분기 예측 이력(52)은 도 1의 제 2 분기 예측기(44)와 같은 더 느리고 더 정확한 분기 예측기에 대응한다. 예시를 목적으로, 제 1 분기 예측 이력(50)과 연관된 제 1 분기 예측기(42)는 하나의 프로세서 클럭 사이클의 레이턴시(56)를 가지는 반면, 제 2 분기 예측 이력(52)과 연관된 제 2 분기 예측기(44)는 3개의 프로세서 클럭 사이클들의 멀티-사이클 레이턴시(58)를 가진다고 가정된다. 제 1 분기 예측 이력(50) 및 제 2 분기 예측 이력(52)이 도 1의 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48) 각각에 저장되는 컨텐츠들을 표현할 수 있다는 것이 추가로 이해될 것이다.
[0030] 도 2를 참조하면, 프로세싱은 프로세서 클럭 사이클 0으로 시작된다. 이때, 조건적 분기 명령(54(0))(분기 명령 A로 지칭됨)은 실행 파이프라인 스테이지 F0으로 진입한다. 프로세서 클럭 사이클 0 동안, 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다는 분기 명령 A에 대한 분기 예측들(도시되지 않음)의 생성을 시작한다. 이때, 제 1 분기 예측 이력(50) 및 제 2 분기 예측 이력(52)은 둘 다 엠티(empty) 상태이다.
[0031] 프로세서 클럭 사이클 1에서, 제 1 분기 예측기(42)는 분기 명령 A에 대한 분기 예측(60(0))의 자신의 생성을 완료한다. 제 1 분기 예측 이력(50)은 분기 명령 A에 대한 분기 예측(60(0))을 포함하도록 업데이트된다. 그러나, 제 2 분기 예측기(44)는 아직 분기 명령 A에 대한 예측을 생성하지 않았다. 따라서, 제 2 분기 예측 이력(52)은 여전히 엠티 상태이다. 분기 명령 A는 실행 파이프라인 스테이지 F1로 진행하는 한편, 조건적 분기 명령(54(1))(분기 명령 B)은 실행 파이프라인 스테이지 F0으로 진입한다. 이때, 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다는 분기 명령 B에 대한 분기 예측들(도시되지 않음)의 생성을 시작한다. 제 1 분기 예측 이력(50)이 분기 명령 A에 대한 분기 예측(60(0))을 포함하기 때문에, 제 1 분기 예측기(42)는 분기 명령 B에 대한 예측의 생성 시 더 이른 분기 예측의 이익을 가진다. 제 2 분기 예측(44)은 여전히, 자신의 분기 예측들이 기초로 하는 어떠한 분기 예측 이력도 가지지 않는다.
[0032] 프로세서 클럭 사이클 2에서, 제 1 분기 예측기(42)는, 현재 제 1 분기 예측 이력(50)에 저장되는 분기 명령 B에 대한 분기 예측(60(1))을 생성한다. 제 2 분기 예측 이력(52)은, 제 2 분기 예측기(44)가 여전히 분기 명령들 A 및 B 중 어느 하나에 대한 분기 예측의 생성을 완료하지 않았으므로, 엠티 상태로 남아 있다. 분기 명령들 A 및 B가 실행 파이프라인 스테이지 F2 및 F1로 각각 진행할 때, 조건적 분기 명령(54(2))(분기 명령 C)은 실행 파이프라인 스테이지 F0으로 진입한다. 제 1 분기 예측기(42) 및 제 2 분기 예측기(44)는 분기 명령 C에 대한 분기 예측들(도시되지 않음)의 생성을 시작한다. 제 1 분기 예측기(42)는 자신의 분기 예측을 생성할 때 분기 명령들 A 및 B 각각에 대한 분기 예측들(60(0) 및 60(1))의 이익을 가지는 반면, 제 2 분기 예측기(44)는 이익을 가지지 않는다.
[0033] 프로세서 클럭 사이클 3에서, 분기 명령들 A, B 및 C는 실행 파이프라인 스테이지들 F3, F2 및 F1 각각으로 진행하고, 조건적 분기 명령(54(3))(분기 명령 D)은 실행 파이프라인 스테이지 F0으로 진입한다. 이때까지, 제 1 분기 예측기(42)는 현재 제 1 분기 예측 이력(50)에 저장되는 분기 명령 C에 대한 분기 예측(60(2))을 생성한다. 따라서, 제 1 분기 예측기(42)가 분기 명령 D에 대한 분기 예측(도시되지 않음)의 생성을 시작할 때, 제 1 분기 예측기(42)는 그 분기 예측이 분기 명령들 A, B 및 C 각각에 대한 이전 분기 예측들(60(0), 60(1) 및 60(2))을 기초로 하도록 할 수 있다. 프로세서 클럭 사이클 3에서, 제 2 분기 예측기(44)는 최종적으로 분기 명령 A에 대한 분기 예측(62)의 생성을 완료한다. 결과적으로, 제 2 분기 예측 이력(52)은 분기 명령 A에 대한 분기 예측(62)을 포함하도록 업데이트된다. 분기 예측(62)은 프로세서 클럭 사이클 1에서 제 1 분기 예측 이력(50)에 저장된 분기 예측(60(0))과 비교된다. 분기 예측(62)이 분기 예측(60(0))과 상이하면, 제 1 분기 예측 이력(50)은 오버라이딩된다(즉, 분기 예측(62)으로 업데이트됨). 제 1 분기 예측 이력(50)을 오버라이딩함으로써, 제 1 분기 예측기(42)의 정확도가 개선될 수 있다. 그러나, 제 2 분기 예측기(44)가 분기 명령 D에 대한 분기 예측(도시되지 않음)의 생성을 시작할 때, 제 2 분기 예측기(44)는 여전히 단지, 자신이 분기 예측이 기초로 하는 분기 명령 A에 대한 이전 분기 예측(62)을 가진다는 점이 주목된다.
[0034] 도 2에 설명되는 제 2 분기 예측기(44)에 대한 멀티-사이클 레이턴시의 효과들을 완화하기 위해서, 분기 예측 회로(12)의 포워딩 회로(45)는 도 1의 프로세서(10)에서 제공된다. 포워딩 회로(45)는 제 2 분기 예측기(44)의 정확도를 개선하기 위해서 제 2 분기 예측기(44)에 의해 사용되는 분기 예측 이력을 보충하기 위하여 추론적 이력 포워딩을 제공하도록 구성된다. 이와 관련하여, 도 3은 포워딩 회로(45)에 의해 제공되는 추론적 이력 포워딩을 사용하여 예시적인 조건적 분기 명령들(68(0)-68(3))을 프로세싱하는 것으로부터 발생하는 제 1 분기 예측 이력(64) 및 제 2 분기 예측 이력(66)의 컨텐츠들을 예시하도록 제공된다.
[0035] 이와 관련하여, 도 2에서와 같이, 도 3의 타이밍도의 열들은 실행 파이프라인 스테이지들 F0, F1, F2 및 F3을 표현하는 한편, 타이밍도의 행들은 프로세서 클럭 사이클들 0-3 동안 제 1 분기 예측 이력(64) 및 제 2 분기 예측 이력(66)의 컨텐츠들을 예시한다. 이 예에서, 제 1 분기 예측 이력(64)은 도 1의 더 빠르고 덜 정확한 제 1 분기 예측기(42)에 대응하는 한편, 제 2 분기 예측 이력(66)은 도 1의 더 느리고 더 정확한 제 2 분기 예측기(44)에 대응한다. 예시를 목적으로, 제 1 분기 예측기(42)는 하나의 프로세서 클럭 사이클의 레이턴시(70)를 가지는 반면, 제 2 분기 예측기(44)는 3개의 프로세서 클럭 사이클들의 멀티-사이클 레이턴시(72)를 가진다고 가정된다. 제 1 분기 예측 이력(64) 및 제 2 분기 예측 이력(66)이 도 1의 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48) 각각에 저장되는 컨텐츠들을 표현할 수 있다는 것이 추가로 이해될 것이다.
[0036] 프로세서 클럭 사이클 0에서, 프로세싱은 조건적 분기 명령(68(0))(분기 명령 A로 지칭됨)은 실행 파이프라인 스테이지 F0으로 진입하는 것으로 시작된다. 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다는 분기 명령 A에 대한 분기 예측들의 생성을 시작한다. 프로세서 사이클 0 동안, 제 1 분기 예측 이력(64) 및 제 2 분기 예측 이력(66)은 둘 다 엠티 상태이다.
[0037] 프로세서 클럭 사이클 1 동안, 분기 명령 A에 대한 분기 예측(74(0))은 제 1 분기 예측기(42)에 의해 생성되며, 제 1 분기 예측 이력(64)에 저장된다. 이때, 분기 예측 회로(12)의 포워딩 회로(45)는 또한, 추론적 예측(76(0))으로서 분기 명령 A에 대한 제 1 분기 예측기(42)에 의해 생성되는 분기 예측(74(0))을 제 2 분기 예측 이력(66)으로 포워딩한다. 분기 명령 A는 실행 파이프라인 스테이지 F1로 진행하는 한편, 조건적 분기 명령(68(1))(분기 명령 B)은 실행 파이프라인 스테이지 F0으로 진입한다. 이때, 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다는 분기 명령 B에 대한 분기 예측들의 생성을 시작한다. 제 1 분기 예측 이력(64)이 분기 명령 A에 대한 분기 예측(74(0))을 포함하기 때문에, 제 1 분기 예측기(42)는 분기 명령 B에 대한 예측의 생성 시 더 이른 분기 예측의 이익을 가진다. 추가적으로, 제 2 분기 예측 이력(66)이 현재 분기 명령 A에 대한 추론적 예측(76(0))을 포함하기 때문에, 제 2 분기 예측기(44)는 현재 분기 명령 B에 대한 자신의 다음 분기 예측이 추론적 예측(76(0))을 기초로 하도록 할 수 있다. 이것은 분기 예측이 오래된 분기 예측 이력을 기초로 하는 것과 비교하여 분기 명령 B에 대한 제 2 분기 예측기(44)에 의해 생성되는 더 정확한 분기 예측을 초래할 수 있다.
[0038] 프로세싱은 프로세서 클럭 사이클 2에서 유사한 방식으로 계속된다. 여기서, 제 1 분기 예측기(42)는 분기 명령 B에 대한 분기 예측(74(1))의 자신의 생성을 완료하고, 제 1 분기 예측 이력(64)은 분기 예측(74(1))을 저장하도록 업데이트된다. 분기 예측(74(1))은 또한, 추론적 예측(76(1))으로서 제 2 분기 예측 이력(66)으로 포워딩 회로(45)에 의해 포워딩된다. 분기 명령들 A 및 B가 실행 파이프라인 스테이지들 F2 및 F1로 각각 진행할 때, 조건적 분기 명령(68(2))(분기 명령 C)은 실행 파이프라인 스테이지 F0으로 진입한다. 제 1 분기 예측기(42) 및 제 2 분기 예측기(44)는 분기 명령 C에 대한 분기 예측들의 생성을 시작하고, 여기서, 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다가 제 1 분기 예측기(42)에 의한 분기 명령들 A 및 B에 대한 더 이른 분기 예측들의 이익을 가진다.
[0039] 프로세서 클럭 사이클 3에서, 분기 명령들 A, B 및 C는 실행 파이프라인 스테이지들 F3, F2 및 F1 각각으로 진행하고, 조건적 분기 명령(68(3))(분기 명령 D)은 실행 파이프라인 스테이지 F0으로 진입한다. 이때, 제 1 분기 예측기(42)는, 현재 제 1 분기 예측 이력(64)에 저장되고 추론적 예측(76(2))으로서 제 2 분기 예측 이력(66)으로 포워딩되는 분기 명령 C에 대한 분기 예측(74(2))을 생성한다. 따라서, 제 1 분기 예측기(42)가 분기 명령 D에 대한 분기 예측(도시되지 않음)의 생성을 시작할 때, 제 1 분기 예측기(42)는 그 분기 예측이 분기 명령들 A, B 및 C 각각에 대한 이전 분기 예측들(74(0), 74(1) 및 74(2))을 기초로 하도록 한다. 프로세서 클럭 사이클 3 동안, 제 2 분기 예측기(44)는 최종적으로 분기 명령 A에 대한 분기 예측(78)의 생성을 완료한다. 분기 예측(78)은 프로세서 클럭 사이클 1에서 제 2 분기 예측 이력(66)으로 포워딩된 추론적 예측(76(0))과 비교된다. 분기 예측(78)이 추론적 예측(76(0))과 상이하면, 제 2 분기 예측 이력(66)은 도 3에 도시되는 바와 같이 오버라이딩된다(즉, 분기 예측(78)으로 업데이트됨). 제 1 분기 예측 이력(64)에서의 분기 예측(74(0))은 또한, 분기 예측(78)에 기초하여 오버라이딩될 수 있다. 그 다음, 제 2 분기 예측기(44)는 제 2 분기 예측 이력(66)의 컨텐츠들에 기초하여 분기 명령 D에 대한 분기 예측(도시되지 않음)을 생성하는 것으로 진행한다.
[0040] 도 4는, 위에서, 예로서, 도 1의 프로세서(10)에서 설명된 추론적 이력 포워딩을 수행하기 위한 예시적 동작들의 흐름도이다. 명료함을 위해서, 도 1 및 도 3의 엘리먼트들은 도 4의 설명시 참조된다. 도 4에서, 동작들은 분기 예측 회로(12)의 제 1 분기 예측기(42)가 제 1 분기 예측 이력(64)에 기초하여, 명령 큐(40)에서의 조건적 분기 명령(68)의 제 1 분기 예측(74)을 예측하는 것(블록(80))으로 시작된다. 제 1 분기 예측 이력(64)은 도 1의 제 1 분기 예측 이력 레지스터(46)의 컨텐츠들에 대응한다.
[0041] 계속 도 4를 참조하면, 분기 예측 회로(12)는 다음으로, 조건적 분기 명령(68)에 대한 제 1 분기 예측(74)에 기초하여 제 1 분기 예측 이력(64)을 업데이트한다(블록(82)). 그 다음, 분기 예측 회로(12)의 포워딩 회로(45)는 추론적 예측(76)으로서 조건적 분기 명령(68)에 대한 제 1 분기 예측(74)을 제 2 분기 예측 이력(66)으로 포워딩한다(블록(84)). 그 다음, 제 2 분기 예측기(44)는 추론적 예측(76)을 포함하는 제 2 분기 예측 이력(66)에 기초하여, 명령 큐(40)에서의 조건적 분기 명령(68)의 제 2 분기 예측(78)을 예측한다(블록(86)). 이러한 방식으로, 제 1 분기 예측기(42)에 의해 원래 생성되는 추론적 예측(76)은 오래된 분기 예측 이력을 사용하는 분기 예측들의 생성과 비교하여 자신의 정확도를 개선하기 위해서 제 2 분기 예측기(44)에 이용가능해진다.
[0042] 일부 실시예들에서, 추가 선택 단계들은 도 1의 분기 예측 회로(12)에 의해 수행될 수 있다. 분기 예측 회로(12)는 제 2 분기 예측(78)을 추론적 예측(76)과 비교할 수 있다(블록(88)). 비교에 기초하여, 분기 예측 회로(12)는 제 2 분기 예측(78)이 추론적 예측(76)과 상이한지 여부를 결정할 수 있다(블록(90)). 그렇지 않으면, 추론적 예측(76)이 정확한 것으로 가정된다(블록(92)). 블록(90)에서 분기 예측 회로(12)가 제 2 분기 예측(78)이 추론적 예측(76)과 상이함을 결정하면, 분기 예측 회로(12)는 제 2 분기 예측(78)에 기초하여 제 1 분기 예측 이력(64)에서 제 1 분기 예측(74)을 그리고 제 2 분기 예측 이력(66)에서 추론적 예측(76)을 업데이트함으로써 추론적 예측(76)을 오버라이딩한다(블록(94)).
[0043] 위에서 기술된 바와 같이, 일부 실시예들에서, 제 1 분기 예측 이력 레지스터(46) 및 제 2 분기 예측 이력 레지스터(48)는 단일 이력 레지스터로서 구현될 수 있다. 이와 관련하여, 도 5는 다수의 분기 예측 이력들을 저장하기 위한 예시적 단일 이력 레지스터(96)를 예시한다. 단일 이력 레지스터(96)는 도 1의 레지스터들(30) 중 하나로서 구현될 수 있거나 또는 별개의 구조들로서 구현될 수 있다.
[0044] 도 5에서 보여지는 바와 같이, 단일 이력 레지스터(96)는 도 1의 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다에 의해 생성되는 분기 예측들을 저장한다. 2개의 포인터들(98 및 100)은 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 각각에 의해 단일 이력 레지스터(96)에 저장되는 가장 최근의 분기 예측을 표시한다. 초기화 시, 포인터들(98 및 100) 둘 다는 단일 이력 레지스터(96) 내의 동일한 위치를 포인팅한다. 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 각각이 분기 예측들을 생성할 때, 각각의 포인터(98, 100)에 포인팅되는 위치는 가장 최근의 분기 예측으로 업데이트되고, 포인터들(98, 100)은 전진한다. 제 1 분기 예측기(42)가 제 2 분기 예측기(44)보다 낮은 레이턴시를 가지기 때문에, 제 1 분기 예측기(42)에 대응하는 포인터(98)는 레이턴시의 차에 대응하는 다수의 위치들을 전진할 것이다. 일단 제 2 분기 예측기(44)가 자신의 분기 예측들의 생성을 시작하면, 포인터들(98 및 100)은 락스텝 방식(lockstep)으로 이동한다.
[0045] 제 1 분기 예측기(42) 및 제 2 분기 예측기(44) 둘 다는 단일 이력 레지스터(96)에 저장되는 분기 예측 이력(도시되지 않음)에 액세스하도록 구성된다. 제 2 분기 예측기(44)의 관점에서, 포인터(100)와 포인터(98) 사이의 분기 예측들은 추론적 예측들이다. 제 2 분기 예측기(44)가 분기 예측들을 생성할 때, 제 2 분기 예측기(44)는, 제 1 분기 예측기(42)에 의해 생성되는 임의의 추론적 오예측들을 오버라이딩하는데 필요함에 따라, 포인터(100)에 의해 포인팅되는 위치에서 분기 예측을 업데이트할 수 있다.
[0046] 본원에 개시되는 실시예들에 따른 분기 예측 회로(12)는 임의의 프로세서-기반 디바이스에서 제공되거나 또는 이들로 통합될 수 있다. 예들은, 제한없이, 셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어 및 휴대용 디지털 비디오 플레이어를 포함한다.
[0047] 이와 관련하여, 도 6은 도 1에 예시되는 분기 예측 회로(12)를 이용할 수 있는 프로세서-기반 시스템(102)의 예를 예시한다. 이 예에서, 프로세서-기반 시스템(102)은 하나 또는 그 초과의 CPU(central processing unit)들(104)을 포함하고, 이들 각각은 도 1의 BPC(branch prediction circuit)(12)를 포함할 수 있는 하나 또는 그 초과의 프로세서들(106)을 포함한다. CPU(들)(104)는 일시적으로 저장되는 데이터로의 신속한 액세스를 위해서 프로세서(들)(106)에 커플링되는 캐시 메모리(108)를 가질 수 있다. CPU(들)(104)는 시스템 버스(110)에 커플링되며, 프로세서-기반 시스템(102)에 포함되는 마스터 및 슬래이브 디바이스들을 상호커플링할 수 있다. 잘 알려진 바와 같이, CPU(들)(104)는 시스템 버스(110) 상에서 어드레스, 제어 및 데이터 정보를 교환함으로써 그러한 다른 디바이스들과 통신한다. 예를 들어, CPU(들)(104)는 버스 트랜잭션 요청들을 메모리 유닛들(114(0)-114(N))을 제공하는 메모리 시스템(112)으로 통신할 수 있다.
[0048] 다른 마스터 및 슬래이브 디바이스들은 시스템 버스(110)에 연결될 수 있다. 도 6에 예시되는 바와 같이, 이 디바이스들은 예들로서, 메모리 제어기(116), 하나 또는 그 초과의 입력 디바이스들(118), 하나 또는 그 초과의 출력 디바이스들(120), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(122) 및 하나 또는 그 초과의 디스플레이 제어기들(124)을 포함할 수 있다. 입력 디바이스(들)(118)는 입력 키들, 스위치들, 음성 프로세서들 등을 포함하는(그러나, 이들에 제한되는 것은 아님) 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(120)는 오디오, 비디오, 다른 시각적 표시자들 등을 포함하는(그러나, 이들에 제한되는 것은 아님) 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(122)는 네트워크(126)로 그리고 네트워크(126)로부터의 데이터의 교환을 허용하도록 구성되는 임의의 디바이스들일 수 있다. 네트워크(126)는 유선 또는 무선 네트워크, 사설 또는 공공 네트워크, LAN(local area network), WLAN(wide local area network) 및 인터넷을 포함하는(그러나, 이들에 제한되는 것은 아님) 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들)(122)는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다.
[0049] CPU(들)(104)는 또한, 하나 또는 그 초과의 디스플레이들(128)로 전송되는 정보를 제어하기 위해서 시스템 버스(110) 상에서 디스플레이 제어기(들)(124)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(124)는 디스플레이(들)(128)에 적합한 포맷으로 디스플레이될 정보를 프로세싱하는 하나 또는 그 초과의 비디오 프로세서들(130)을 통해 디스플레이될 정보를 디스플레이(들)(128)에 전송한다. 디스플레이(들)(128)는 CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이 등을 포함하는(그러나, 이들에 제한되는 것은 아님) 임의의 타입의 디스플레이를 포함할 수 있다.
[0050] 당업자들은, 본원에서 개시되는 실시예들과 관련하여 설명되는 다양한 예시적 로직 블록들, 모듈들, 회로들 및 알고리즘들은 전자 하드웨어, 메모리 또는 또 다른 컴퓨터 판독가능한 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 이 둘의 결합들로서 구현될 수 있다는 것을 추가로 인식할 것이다. 본원에서 설명되는 마스터 디바이스들 및 슬래이브 디바이스들은 예들로서, 임의의 회로, 하드웨어 컴포넌트, IC(integrated circuit), 또는 IC 칩에서 이용될 수 있다. 본원에서 개시되는 메모리는 임의의 타입 및 크기의 메모리일 수 있으며, 임의의 타입의 원하는 정보를 저장하도록 구성될 수 있다. 이러한 상호교환가능성을 명백하게 예시하기 위해서, 다양한 예시적 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 일반적으로 그들의 기능에 관하여 위에서 설명되었다. 이러한 기능이 어떻게 구현되는지는 전체 시스템 상에 부과되는 특정 애플리케이션, 설계 선택들 및/또는 설계 제약들에 의존한다. 당업자들은 각각의 특정 애플리케이션에 대해 다양한 방식들로 설명되는 기능을 구현할 수 있지만, 이러한 구현 판정들은 본 개시 내용의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
[0051] 본원에서 개시되는 실시예들과 관련하여 설명되는 다양한 예시적 로직 블록들, 모듈들 및 회로들이 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그래머블 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명되는 기능들을 수행하도록 설계되는 이들의 임의의 결합으로 구현되거나 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 결합, 예를 들어, DSP 및 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0052] 본원에서 개시되는 실시예들은 하드웨어 및 하드웨어에 저장된 명령들로 구현될 수 있으며, 예를 들어, RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 탈착식(removable) 디스크, CD-ROM, 또는 당해 기술 분야에 알려진 임의의 다른 형태의 컴퓨터 판독가능한 매체에 상주할 수 있다. 예시적 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC는 원격국에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격국, 기지국 또는 서버에서 별개의 컴포넌트들로서 상주할 수 있다.
[0053] 또한, 본원에서의 예시적 실시예들 중 임의의 것에서 설명되는 동작가능한 단계들이 예들 및 논의를 제공하기 위해서 설명된다는 점이 주목된다. 설명되는 동작들은 예시되는 시퀀스들 외의 많은 상이한 시퀀스들에서 수행될 수 있다. 게다가, 단일의 동작가능한 단계들에서 설명되는 동작들은 실제로 다수의 상이한 단계들에서 수행될 수 있다. 추가적으로, 예시적 실시예들에서 논의되는 하나 또는 그 초과의 동작가능한 단계들이 결합될 수 있다. 흐름도들에서 예시되는 동작가능한 단계들은 당업자에게 쉽게 명백할 바와 같이 많은 상이한 수정들의 대상이 될 수 있다는 것이 이해될 것이다. 당업자들은 또한, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 기술 및 기법을 사용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.
[0054] 본 개시 내용의 이전 설명은 임의의 당업자가 본 개시 내용을 실시하거나 또는 사용하는 것을 가능하게 하도록 제공된다. 본 개시 내용에 대한 다양한 수정들은 당업자들에게 쉽게 명백할 것이고, 본원에서 정의된 일반적 원리들은 본 개시 내용의 사상 또는 범위를 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 따라서, 본 개시 내용은 본원에서 설명되는 예들 및 설계들에 제한되는 것으로 의도되는 것이 아니라, 본원에서 개시되는 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따를 것이다.

Claims (20)

  1. 프로세서에서 인출(fetch)된 명령들의 분기(branch) 예측을 수행하기 위한 분기 예측 회로로서,
    명령 큐(queue)에서의 조건적 분기 명령의 제 1 분기 예측을 예측하고; 그리고
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측에 기초하여 제 1 분기 예측 이력 레지스터(register)를 업데이트하도록 구성되는 제 1 분기 예측기;
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측을 추론적 예측(speculative prediction)으로서 제 2 분기 예측 이력 레지스터로 포워딩(forwarding)하도록 구성되는 포워딩 회로; 및
    상기 제 2 분기 예측 이력 레지스터가 상기 추론적 예측을 포함하는 것에 기초하여 상기 명령 큐에서의 상기 조건적 분기 명령의 제 2 분기 예측을 예측하도록 구성되는 제 2 분기 예측기를 포함하고,
    상기 분기 예측 회로는,
    상기 제 2 분기 예측을 상기 추론적 예측과 비교하고; 그리고
    상기 추론적 예측과 상이한 상기 제 2 분기 예측에 대한 응답으로, 상기 제 2 분기 예측에 기초하여 상기 제 1 분기 예측 이력 레지스터에서의 상기 제 1 분기 예측 및 상기 제 2 분기 예측 이력 레지스터에서의 상기 추론적 예측을 업데이트함으로써 상기 추론적 예측을 오버라이딩(overriding)하도록 추가로 구성되고,
    업데이트된 제 2 분기 예측 이력 레지스터는, 상기 업데이트된 추론적 예측 및 다른 조건적 분기 명령에 대한 다른 추론적 예측을 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 분기 예측기는 제 1 레이턴시(latency) 및 제 1 정확도로 동작하도록 구성되고,
    상기 제 2 분기 예측기는 상기 제 1 레이턴시보다 높은 제 2 레이턴시 및 상기 제 1 정확도보다 높은 제 2 정확도로 동작하도록 구성되는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  4. 제 1 항에 있어서,
    상기 제 1 분기 예측 이력 레지스터는 제 1 글로벌(global) 이력, 제 1 로컬(local) 이력 또는 제 1 경로 이력, 또는 이들의 결합을 포함하고,
    상기 제 2 분기 예측 이력 레지스터는 제 2 글로벌 이력, 제 2 로컬 이력, 또는 제 2 경로 이력, 또는 이들의 결합을 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  5. 제 1 항에 있어서,
    상기 제 1 분기 예측 이력 레지스터 및 상기 제 2 분기 예측 이력 레지스터를 포함하는 단일 이력 레지스터를 더 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  6. 제 5 항에 있어서,
    상기 단일 이력 레지스터는,
    상기 제 1 분기 예측 이력 레지스터에서의 가장 최근 분기 예측을 표시하는 제 1 포인터; 및
    상기 제 2 분기 예측 이력 레지스터에서의 가장 최근 분기 예측을 표시하는 제 2 포인터를 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  7. 제 1 항에 있어서,
    상기 분기 예측 회로는, 집적 회로로 통합되는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  8. 제 1 항에 있어서,
    상기 분기 예측 회로는, 셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어 및 휴대용 디지털 비디오 플레이어로 구성되는 그룹으로부터 선택되는 디바이스로 통합되는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  9. 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로로서,
    명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하는 것, 및 상기 조건적 분기 명령에 대한 상기 제 1 분기 예측에 기초하여 제 1 분기 예측 이력 레지스터를 업데이트하는 것을 위한 제 1 분기 예측기 수단;
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력 레지스터로 포워딩하기 위한 포워딩 수단; 및
    상기 제 2 분기 예측 이력 레지스터가 상기 추론적 예측을 포함하는 것에 기초하여 상기 명령 큐에서의 상기 조건적 분기 명령의 제 2 분기 예측을 예측하기 위한 제 2 분기 예측기 수단을 포함하고,
    상기 분기 예측 회로는,
    상기 제 2 분기 예측을 상기 추론적 예측과 비교하기 위한 수단; 및
    상기 추론적 예측과 상이한 상기 제 2 분기 예측에 대한 응답으로, 상기 제 2 분기 예측에 기초하여 상기 제 1 분기 예측 이력 레지스터에서의 상기 제 1 분기 예측 및 상기 제 2 분기 예측 이력 레지스터에서의 상기 추론적 예측을 업데이트함으로써 상기 추론적 예측을 오버라이딩하기 위한 수단을 더 포함하고,
    업데이트된 제 2 분기 예측 이력 레지스터는, 상기 업데이트된 추론적 예측 및 다른 조건적 분기 명령에 대한 다른 추론적 예측을 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 분기 예측 회로.
  10. 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법으로서,
    상기 방법은 분기 예측 회로에 의해 수행되고, 상기 방법은,
    제 1 분기 예측 이력에 기초하여 제 1 분기 예측기에 의해 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하는 단계;
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측에 기초하여 상기 제 1 분기 예측 이력을 업데이트하는 단계;
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력으로 포워딩하는 단계;
    상기 제 2 분기 예측 이력이 상기 추론적 예측을 포함하는 것에 기초하여 제 2 분기 예측기에 의해 상기 명령 큐에서의 상기 조건적 분기 명령의 제 2 분기 예측을 예측하는 단계;
    상기 제 2 분기 예측을 상기 추론적 예측과 비교하는 단계; 및
    상기 추론적 예측과 상이한 상기 제 2 분기 예측에 대한 응답으로, 상기 제 2 분기 예측에 기초하여 상기 제 1 분기 예측 이력에서의 상기 제 1 분기 예측 및 상기 제 2 분기 예측 이력에서의 상기 추론적 예측을 업데이트함으로써 상기 추론적 예측을 오버라이딩하는 단계를 포함하고,
    업데이트된 제 2 분기 예측 이력은, 상기 업데이트된 추론적 예측 및 다른 조건적 분기 명령에 대한 다른 추론적 예측을 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법.
  11. 삭제
  12. 제 10 항에 있어서,
    상기 제 1 분기 예측기는 제 1 레이턴시 및 제 1 정확도로 동작하고,
    상기 제 2 분기 예측기는 상기 제 1 레이턴시보다 높은 제 2 레이턴시 및 상기 제 1 정확도보다 높은 제 2 정확도로 동작하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법.
  13. 제 10 항에 있어서,
    상기 제 1 분기 예측 이력은 제 1 글로벌(global) 이력, 제 1 로컬(local) 이력 또는 제 1 경로 이력, 또는 이들의 결합을 포함하고,
    상기 제 2 분기 예측 이력은 제 2 글로벌 이력, 제 2 로컬 이력, 또는 제 2 경로 이력, 또는 이들의 결합을 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법.
  14. 제 10 항에 있어서,
    단일 이력 레지스터에 상기 제 1 분기 예측 이력 및 상기 제 2 분기 예측 이력을 저장하는 단계를 더 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법.
  15. 제 14 항에 있어서,
    제 1 포인터에 의해 상기 단일 이력 레지스터에서의 상기 제 1 분기 예측 이력에서의 가장 최근 분기 예측을 표시하는 단계; 및
    제 2 포인터에 의해 상기 단일 이력 레지스터에서의 상기 제 2 분기 예측 이력에서의 가장 최근 분기 예측을 표시하는 단계를 더 포함하는,
    프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법.
  16. 프로세서로 하여금 상기 프로세서에서 인출된 명령들의 분기 예측을 수행하기 위한 방법을 구현하도록 하는 컴퓨터 실행가능한 명령들을 저장한 비-일시적 컴퓨터 판독가능한 저장 매체로서,
    상기 방법은,
    제 1 분기 예측 이력에 기초하여 제 1 분기 예측기에 의해 명령 큐에서의 조건적 분기 명령의 제 1 분기 예측을 예측하는 단계;
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측에 기초하여 상기 제 1 분기 예측 이력을 업데이트하는 단계;
    상기 조건적 분기 명령에 대한 상기 제 1 분기 예측을 추론적 예측으로서 제 2 분기 예측 이력으로 포워딩하는 단계;
    상기 제 2 분기 예측 이력이 상기 추론적 예측을 포함하는 것에 기초하여 제 2 분기 예측기에 의해 상기 명령 큐에서의 상기 조건적 분기 명령의 제 2 분기 예측을 예측하는 단계;
    상기 제 2 분기 예측을 상기 추론적 예측과 비교하는 단계; 및
    상기 추론적 예측과 상이한 상기 제 2 분기 예측에 대한 응답으로, 상기 제 2 분기 예측에 기초하여 상기 제 1 분기 예측 이력에서의 상기 제 1 분기 예측 및 상기 제 2 분기 예측 이력에서의 상기 추론적 예측을 업데이트함으로써 상기 추론적 예측을 오버라이딩하는 단계를 포함하고,
    업데이트된 제 2 분기 예측 이력은, 상기 업데이트된 추론적 예측 및 다른 조건적 분기 명령에 대한 다른 추론적 예측을 포함하는,
    비-일시적 컴퓨터 판독가능한 저장 매체.
  17. 삭제
  18. 제 16 항에 있어서,
    상기 제 1 분기 예측기는 제 1 레이턴시 및 제 1 정확도로 동작하고,
    상기 제 2 분기 예측기는 상기 제 1 레이턴시보다 높은 제 2 레이턴시 및 상기 제 1 정확도보다 높은 제 2 정확도로 동작하는, 상기 방법을 상기 프로세서로 하여금 구현하게 하기 위한 컴퓨터 실행가능한 명령들을 저장한,
    비-일시적 컴퓨터 판독가능한 저장 매체.
  19. 제 16 항에 있어서,
    단일 이력 레지스터에 상기 제 1 분기 예측 이력 및 상기 제 2 분기 예측 이력을 저장하는 단계를 더 포함하는, 상기 방법을 상기 프로세서로 하여금 구현하게 하기 위한 컴퓨터 실행가능한 명령들을 저장한,
    비-일시적 컴퓨터 판독가능한 저장 매체.
  20. 제 19 항에 있어서,
    제 1 포인터에 의해 상기 단일 이력 레지스터에서의 상기 제 1 분기 예측 이력에서의 가장 최근 분기 예측을 표시하는 단계; 및
    제 2 포인터에 의해 상기 단일 이력 레지스터에서의 상기 제 2 분기 예측 이력에서의 가장 최근 분기 예측을 표시하는 단계를 더 포함하는, 상기 방법을 상기 프로세서로 하여금 구현하게 하기 위한 컴퓨터 실행가능한 명령들을 저장한,
    비-일시적 컴퓨터 판독가능한 저장 매체.

KR1020167025917A 2014-03-24 2015-03-23 오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들 KR101829369B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/223,091 US9582285B2 (en) 2014-03-24 2014-03-24 Speculative history forwarding in overriding branch predictors, and related circuits, methods, and computer-readable media
US14/223,091 2014-03-24
PCT/US2015/021997 WO2015148372A1 (en) 2014-03-24 2015-03-23 Speculative history forwarding in overriding branch predictors, and related circuits, methods, and computer-readable media

Publications (2)

Publication Number Publication Date
KR20160135726A KR20160135726A (ko) 2016-11-28
KR101829369B1 true KR101829369B1 (ko) 2018-02-19

Family

ID=52829348

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167025917A KR101829369B1 (ko) 2014-03-24 2015-03-23 오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들

Country Status (8)

Country Link
US (1) US9582285B2 (ko)
EP (1) EP3123305A1 (ko)
JP (1) JP6370918B2 (ko)
KR (1) KR101829369B1 (ko)
CN (1) CN106104466B (ko)
CA (1) CA2939834C (ko)
TW (1) TWI588739B (ko)
WO (1) WO2015148372A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995447B2 (en) * 2020-10-15 2024-05-28 Centaur Technology, Inc. Quick predictor override and update by a BTAC
JP2022094507A (ja) 2020-12-15 2022-06-27 富士通株式会社 演算処理回路及び演算処理方法
US11868773B2 (en) 2022-01-06 2024-01-09 International Business Machines Corporation Inferring future value for speculative branch resolution in a microprocessor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036837A1 (en) * 2004-08-13 2006-02-16 Stark Jared W Prophet/critic hybrid predictor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374349B2 (en) 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6134654A (en) 1998-09-16 2000-10-17 Sun Microsystems, Inc. Bi-level branch target prediction scheme with fetch address prediction
KR100317240B1 (ko) * 1999-10-21 2001-12-22 윤종용 분기 예측 정확도 히스토리를 이용한 분기 예측기
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7836288B2 (en) 2004-09-14 2010-11-16 Arm Limited Branch prediction mechanism including a branch prediction memory and a branch prediction cache
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US7707398B2 (en) 2007-11-13 2010-04-27 Applied Micro Circuits Corporation System and method for speculative global history prediction updating
US8832418B2 (en) * 2009-08-28 2014-09-09 Via Technologies, Inc. Efficient branch target address cache entry replacement
US8788797B2 (en) 2010-12-22 2014-07-22 Advanced Micro Devices, Inc. Combined level 1 and level 2 branch predictor
JPWO2012127666A1 (ja) * 2011-03-23 2014-07-24 富士通株式会社 演算処理装置、情報処理装置及び演算処理方法
US9201654B2 (en) 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US8959320B2 (en) 2011-12-07 2015-02-17 Apple Inc. Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036837A1 (en) * 2004-08-13 2006-02-16 Stark Jared W Prophet/critic hybrid predictor

Also Published As

Publication number Publication date
US20150268958A1 (en) 2015-09-24
CN106104466B (zh) 2019-05-28
JP6370918B2 (ja) 2018-08-08
CA2939834C (en) 2019-09-17
JP2017509995A (ja) 2017-04-06
TW201602907A (zh) 2016-01-16
TWI588739B (zh) 2017-06-21
KR20160135726A (ko) 2016-11-28
WO2015148372A1 (en) 2015-10-01
US9582285B2 (en) 2017-02-28
CA2939834A1 (en) 2015-10-01
CN106104466A (zh) 2016-11-09
EP3123305A1 (en) 2017-02-01

Similar Documents

Publication Publication Date Title
US10255074B2 (en) Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt
KR20180127379A (ko) 프로세서-기반 시스템들 내의 로드 경로 이력에 기반한 어드레스 예측 테이블들을 사용하는 로드 어드레스 예측들의 제공
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
KR101705211B1 (ko) 분기 예측 테이블 스왑 명령(들)에 응답하여 분기 방향 히스토리(들)를 스왑하는 것, 및 관련 시스템들 및 방법들
US10223118B2 (en) Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor
KR101829369B1 (ko) 오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들
CN111886581A (zh) 高性能微处理器中的准确早期分支预测
JP6271572B2 (ja) 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体
US20180081690A1 (en) Performing distributed branch prediction using fused processor cores in processor-based systems
US20160170770A1 (en) Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
WO2016014239A1 (en) ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US10635446B2 (en) Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
US20160077836A1 (en) Predicting literal load values using a literal load prediction table, and related circuits, methods, and computer-readable media
EP3335111B1 (en) Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
US20190294443A1 (en) Providing early pipeline optimization of conditional instructions in processor-based systems

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant