KR20200077401A - 분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법 - Google Patents

분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법 Download PDF

Info

Publication number
KR20200077401A
KR20200077401A KR1020190149080A KR20190149080A KR20200077401A KR 20200077401 A KR20200077401 A KR 20200077401A KR 1020190149080 A KR1020190149080 A KR 1020190149080A KR 20190149080 A KR20190149080 A KR 20190149080A KR 20200077401 A KR20200077401 A KR 20200077401A
Authority
KR
South Korea
Prior art keywords
prediction
mrb
branch
prediction failure
redirection
Prior art date
Application number
KR1020190149080A
Other languages
English (en)
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 KR20200077401A publication Critical patent/KR20200077401A/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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores

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

본 발명의 실시 예에 따른 예측 실패 복구 장치는 하나 이상의 명령 실행 유닛, 하나 이상의 분기 예측자 및 예측 실패 복구 유닛(Misprediction Recovery Unit, 이하 MRU)을 포함할 수 있다. MRU는 하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션 후에 이산 사이클 예측들을 제공할 수 있다. MRU는 예측된 분기들에 대한 예측 신뢰 정보를 생성하도록 구성되는 분기 신뢰 필터를 포함할 수 있다. MRU는 태그 컨텐츠-주소지정가능 메모리(tag content-addressable memory, 이하 태그 CAM)을 포함할 수 있다. 태그 CAM은 예측 실패 저-신뢰도 분기들을 저장하고, 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션을 탐색하고, 및 예측 실패 저-신뢰도 분기들과 관련된 분기 신뢰 필터로부터 예측 신뢰 정보를 획득할 수 있다. MRU는 태그 CAM에 존재하는 예측 실패 저-신뢰도 분기들에 대한 대체 경로를 저장하도록 구성되는 예측 실패 복구 버퍼(Mispredict Recovery Buffer, 이하 MRB)를 포함할 수 있다. 또한, 개시된 것은 명령 페치 파이프라인과 관련된 예측 실패로부터 복구하는 방법이다.

Description

분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법{MISPREDICT RECOVERY APPARATUS AND METHOD FOR BRANCH AND FETCH PIPELINES}
본 발명은 집적 회로에 관한 것으로, 좀 더 상세하게는 마이크로프로세서의분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법에 관한 것이다.
중앙 처리 장치(Central processing unit, 이하 CPU) 성능은 정확한 분기 예측에 매우 의존적이다. 프로세서들은 복잡한 분기 예측 유닛들을 사용하여 CPU 자원들을 보다 잘 이용하고, 성능을 개선하며, 낭비되는 전력을 감소시킨다. 이러한 예측자들은 매우 높은 정확도를 달성할 수 있지만, 전형적으로 그것들은 분기들을 예측하기 위해 다중 주기(사이클)를 사용하므로 “획득된(taken)” 분기들에 대한 패널티가 발생된다. 매우 높은 정확도의 예측자들을 사용하더라도, 분기들의 하위 집합들은 예측하기 어렵고, 자주 잘못 예측된다.
분기 예측 실패는 전체 파이프라인이 플러쉬되는 것을 요구하므로, 특히 깊은 파이프라인 프로세서들에서 매우 비싸다. 예측자는 예측 실패 후에 빈 파이프를 채우기 위해 따라잡아야 하므로 분기 예측자 지연(레이턴시)은 일반적으로 CPU의 병목 지역이 된다. 잘못 예측된 지연(또는 패널티)은 페치 파이프를 재지정하도록 강요되는 잘못 예측된 분기가 뒤이어 따르는 명령을 실행하는데 획득(소요)된 사이클들의 수로 이해될 수 있다. 이것은 분기 예측 파이프/지연 뿐만 아니라 성능을 저하시킬 수 있는 캐시 실패들(cache misses)과 같은 다른 이벤트들에도 의존한다.
분기 예측자들 자체는 구현이 다양하다. 그리고 일반적으로, 그것들의 정확도와 그것들의 지연은 트레이트 오프(trade-off) 관계에 있다. 분기 예측자가 분기를 획득된 것으로 예측하면 분기 예측자는 분기 및 페치 파이프가 새 주소에서 시작되도록 리디렉션(redirection)하므로, 다음 예측을 기다리는 손실 또는 높은 추론적인 페치 주기를 나타내는 획득된 버블 패널티(taken bubble penalty)가 발생할 수 있다. 이 패널티는 기계 내의 어느 곳에도 버블들을 덮기 위한 배압(back pressure)이 없는 경우에 나타난다. 예측 실패는 파이프라인을 플러쉬하므로, 예측 실패 직후의 시간 동안 기계를 획득된 버블 패널티들에 직접 노출시킨다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법을 제공하는 데 있다.
본 발명 일 실시 예는 예측 실패 복구 장치를 포함한다. 예측 실패 복구 장치는 하나 이상의 명령 실행 유닛을 포함할 수 있다. 예측 실패 복구 장치는 하나 이상의 분기 예측자를 포함할 수 있다. 예측 실패 복구 장치는 하나 이상의 명령 실행 유닛 및 하나 이상의 분기 예측자와 결합되고, 하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션(redirect) 후에 이산 사이클 예측들을 제공하도록 구성되는 예측 실패 복구 유닛(Misprediction Recovery Unit, 이하 MRU)을 포함할 수 있다. MRU는 하나 이상의 분기 예측자로부터의 정보 및 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션에 기초하여 예측된 분기들에 대한 예측 신뢰 정보를 생성하도록 구성되는 분기 신뢰 필터를 포함할 수 있다. MRU는 태그 컨텐츠-주소지정가능 메모리(tag content-addressable memory, 이하 태그 CAM)를 포함할 수 있다. 태그 CAM은 예측 실패 저-신뢰도 분기들을 저장하고, 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션을 탐색하고, 및 예측 실패 저-신뢰도 분기들과 관련된 분기 신뢰 필터로부터 예측 신뢰 정보를 획득하도록 구성될 수 있다. MRU는 태그 CAM에 존재하는 예측 실패 저-신뢰도 분기들에 대한 대체 경로를 저장하도록 구성되는 예측 실패 복구 버퍼(Mispredict Recovery Buffer, 이하 MRB)를 포함할 수 있다.
MRU는 태그 CAM 내에 존재하는 예측 실패 저-신뢰도 분기들에 대한 대체 경로를 저장하기 위해 구성될 수 있다. MRB는 예측 실패 리디렉션에 대해 응답하여 대체 경로를 이용하여 명령 페치 파이프라인을 구동할 수 있다. MRB는 명령들 자체를 저장하지 않고 대체 경로를 위한 명령 주소들을 저장할 수 있다.
실시 예들은 명령 페치 파이프라인과 관련된 예측 실패를 복구하기 위한 방법을 포함할 수 있다. 방법은 하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션을 수신하는 단계를 포함할 수 있다. 방법은 예측 실패 복구 유닛(Misprediction Recovery Unit, 이하 MRU)에 의해, 하나 이상의 명령 실행 유닛으로부터 수신된 예측 실패 리디렉션 이후에 이산 사이클 예측들을 제공하는 단계를 포함할 수 있다. 방법은 분기 신뢰 필터에 의해, 하나 이상의 분기 예측자로부터의 정보 및 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션에 기초하여 예측된 분기들에 대한 예측 신뢰 정보를 생성하는 단계를 포함할 수 있다. 방법은 태그 컨텐츠-주소지정가능 메모리(Tag Content-Addressable Memory, 이하 태그 CAM)에 의해, 예측 실패 저-신뢰도 분기들을 저장하는 단계를 포함할 수 있다. 방법은 태그 CAM에 의해, 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션을 탐색하는 단계를 포함할 수 있다. 방법은 태그 CAM에 의해, 예측 실패 저-신뢰도 분기들과 연관된 분기 신뢰 필터로부터 예측 신뢰 정보를 획득하는 단계를 포함할 수 있다. 방법은 예측 실패 복구 버퍼(MRB)에 의해, 태그 CAM 내에 존재하는 예측 실패 저-신뢰도 분기들에 대한 대체 경로를 저장하는 단계를 포함할 수 있다.
본 발명은 현재의 예측자 결과를 기다림 없이 이전에 예측된 높은 확률의 기본 블록들로부터 페치함으로써, 획득된 버블 페널티를 제거 할 수 있다. 본 발명은 예측하기 어려운 분기들과 높은 사후-예측 실패 정확도를 가진 커널들에 대한 지연을 즉각적으로 복구할 수 있고, 성능을 향상시킬 수 있다.
도 1은 여기에서 개시되는 실시 예들에 따른 예측 실패 복구 버퍼를 포함하는 예측 실패 복구 장치의 예시적인 블록도를 도시한다.
도 2는 여기에 개시된 실시 예들에 따른 태그 CAM의 구성의 예시적인 블록도를 도시한다.
도 3은 여기에 개시된 실시 예들에 따른 MRU를 포함하는 마이크로프로세서의 예시적인 블록도를 도시한다.
도 4는 본 명세서에 개시된 실시 예에 따라 예측 실패 복구 버퍼를 제어하는데 사용되는 예시적인 유한 상태 기계를 도시한다.
도 5는 본 명세서에 개시된 실시 예들에 따른 예측 실패 복구 버퍼에 대한 기록 상태의 예시적인 파형도를 도시한다.
도 6은 여기에 개시된 실시 예들에 따른 예측 실패 복구 버퍼(MRB)에 대한 리디렉션 상태의 예시적인 파형도를 도시한다.
도 7은 여기에서 개시된 실시 예들에 따른 MRB가 없는 경우와 MRB가 있는 경우의 비교를 보여주는 예시적인 파형도를 도시한다.
도 8a는 본 명세서에 개시된 실시 예들에 따라 부적절한 MRB 데이터를 갖는 리디렉션 상태의 예시적인 파형도를 도시한다.
도 8b는 여기에 개시된 실시 예들에 따른 정정 상태의 예시적인 파형도를 도시한다.
도 9는 여기에 개시된 실시 예들에 따른 마이크로프로세서를 포함하는 컴퓨팅 시스템의 예시적인 블록도이다.
본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
여기에서 제1, 제2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제1 버퍼는 제2 버퍼로 명명될 수 있다. 마찬가지로, 제2 버퍼는 제1 버퍼로 명명될 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 그리고/또는 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 그리고/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.
본 발명의 실시 예는 MRU(Mispredict Recovery Unit)를 갖는 예측 실패 복구 장치를 포함한다. MRU는 MRB(Mispredict Recovery Buffer), 태그 CAM(Tag Content-Addressable Memory)및 분기 예측 필터를 포함 할 수 있다. 매우 정확한 예측자를 사용하면, 분기들 중 상당 부분이 예측될 수 있다. 즉, 이것들 중 일부만이 종종 잘못 예측된다. 예측 실패 복구 장치는 임의의 적절한 예측자 신뢰 추정기를 사용하여 저-신뢰도 분기들을 식별한다. 그 다음에, 예측 실패 복구 장치는 빈번하게 보이는 저-신뢰도 분기들을 필터링하고, 예측 실패 직후에 가능성이 높은 예측을 기록 및 저장한다. 그 후, 예측 실패 복구 장치는 예측 실패 이후의 몇 사이클들 동안 분기를 구동하고 파이프 라인들을 페치할 수 있고, 현재의 예측자 결과를 기다림 없이 이전에 예측된 높은 확률의 기본 블록들로부터 페치함으로써, 획득된(taken) 버블 페널티를 제거 할 수 있다. 저-신뢰도의 예측 실패 분기 바로 다음의 예측 및 페치 대기 시간(지연, 레이턴시(latency))의 감소는 실제로 더 높은 대기 시간 예측자가 파이프 다운스트림을 따라 잡아 채우기 시작 하도록 한다. 따라서, 이것은 예측 실패되었지만 태그된(tagged) 저-신뢰도 분기에 바로 뒤이어 기본 블록들의 범위의 예측 및 페치를 강요한다. 이 구조는 각 저-신뢰도 분기의 가장 가능성이 높은 기본 블록 페치 경로를 제공하여, 주요 예측차가 올바른 경로를 페치하는 것을 따라 잡으면서도, 즉각적인 예측자 획득된 버블들(immediate predictor taken bubbles) 제거한다. 이러한 접근 방식의 중요한 이점은 예측하기 어려운 분기들과 높은 사후-예측 실패 정확도를 가진 커널들에 대한 즉각적인 지연 복구 및 성능 향상이다.
도 1은 여기에서 개시되는 실시 예들에 따른 예측 실패 복구 버퍼(105)를 포함하는 예측 실패 복구 장치(100)의 예시적인 블록도를 도시한다. 예측 실패 복구 장치(100)는 예측 실패 복구 버퍼(105, 이하 MRB)를 갖는 예측 실패 복구 유닛(150, 이하 MRU)을 포함 할 수 있다. MRU(150)는 태그 CAM(110)및 분기 신뢰 필터(115)를 더 포함 할 수 있다. MRB(105)는 선택기(120)와 통신 가능하도록 결합 될 수 있다. 예를 들어, 선택기(120)는 멀티플렉서일 수 있다. 또한, 예측 실패 복구 장치(100)는 유한 상태 기계(125, 이하 FSM(finite state machine))를 포함 할 수 있다. FSM(125)은 아래에서 더 상세히 설명되는 바와 같이 MRB(105), 태그 CAM(110) 및/또는 분기 신뢰 필터(115)의 다양한 양태들을 제어 할 수 있다. 예측 실패 복구 장치(100)는 하나 이상의 명령(어) 실행 유닛(130)및 하나 이상의 분기 예측자(135)를 더 포함 할 수 있다. 예측 실패 복구 장치(100)는 명령 페치 파이프 라인(170)을 더 포함 할 수 있다.
분기 신뢰 필터(115)는 하나 이상의 분기 예측자(135)로부터 수신 된 분기 예측 정보(155)뿐만 아니라 하나 이상의 명령 실행 유닛(130)으로부터 수신된 하나 이상의 리디렉션(160)에 기초하여 신뢰 추정 기술을 구현할 수 있다. 분기 신뢰 필터(115)는 예측 실패들 사이의 거리, 주어진 시간 간격 내에서의 정확한 예측들 대 잘못된 예측들, 예측자 신뢰 및 트레이닝 등과 같은 다양한 지표들(metrics)을 사용할 수 있다. 수집된 정보는 포괄적(global)이거나 특정 분기에 한정적일 수 있다. 분기 신뢰 필터(115)는 하나 이상의 분기 예측자(135)로부터의 정보(155)및 하나 이상의 명령 실행 유닛(130)으로부터의 리디렉션 정보(160)에 기초하여 예측된 분기들에 대한 예측 신뢰 정보(118)를 생성 및 저장할 수 있다.
태그 CAM(110)은 빈번하게 잘못 예측되는 저-신뢰도 분기들을 저장할 수 있다. 이것은 하나 이상의 실행 유닛들(130)로부터 오는 리디렉션(160)을 탐색하고, 하나 이상의 분기 예측자(135)로부터 이들 분기들에 대한 예측자 신뢰 추정자들(165)과 같은 신뢰 정보를 획득함으로써 수행된다. MRB(105)는 태그 CAM(110)내에 존재하는 저-신뢰도 분기들에 대한 하나 이상의 대체 경로들(180)을 저장할 수 있다. "대체 경로(alternate path)"라는 용어는 잘못 예측된 분기로부터 시작하는 예측 된 경로로부터 분기되는 경로를 지칭한다. 예측 실패되면, MRB(105)는 이 대체 경로(180)로 명령 페치 파이프 라인(170)을 구동한다. 다시 말하면, 예측 실패되면, 선택기(120)이후의 분기 스트림(175)은 MRB(105)에 의해 저장된 대체 경로(180)에 의해 구동 될 수 있다. 더 구체적으로, MRB(105)는 리디렉션 유효 신호(190)에 기초하여 선택기(120)에 의해 선택 될 수있는 MRB 분기(108)를 전송할 수 있다. MRB(105)는 또한 하나 이상의 분기 예측자(135)로부터 피드백을 수신하여 하나 이상의 분기 예측자(135)가 이러한 리디렉션들에 대한 MRB(105)에 동의하는지 확인할 수 있다. MRB(105)가 명령 페치 파이프 라인(170)을 구동하지 않는 경우, 일반적인 분기 스트림(185)은 선택기(120)를 통해 명령 페치 파이프 라인(170)으로 전달 될 수 있다. 선택기(120)는 MRB(105)에 의해 생성된 리디렉션 유효 신호(190)에 의해 제어될 수 있다. 하나 이상의 명령 실행 유닛(130)으로부터 수신 된 리디렉션(160)는 또한 195에 도시 된 바와 같이 분기 및/또는 페치 유닛들로 전달 될 수 있다.
도 2는 여기에 개시된 실시 예들에 따른 태그 CAM(110)의 구성의 예시적인 블록도(200)를 도시한다. 이제 도 1과 도 2를 참조한다.
태그 CAM(110)은 예측된 방향 및 분기 유형과 같은 관련 분기 정보(예를 들어, brInfo)와 함께 명령 분기 대상 주소들(예를 들어, IA 1, IA 2, IA N)을 저장할 수 있다. 태그 CAM(110)의 엔트리들은 명령 페치 파이프 라인(170)을 공급하는데 필요한 임의의 필요한 정보를 포함할 수 있다. 이것의 가장 기본적인 형태는 분기들에 대한 예측 및 명령 페치 파이프 라인(170)를 리디렉션하는데 사용될 수 있는 대응하는 타겟 IA(예를 들어, IA 1, IA 2, 내지 IA N)를 포함한다. 섹션들(220)은 태그 CAM(110)에 입력되어 저장 될 수 있다. MRB 분기 예측 기록들(210)는 MRB(105)에 저장 될 수 있다.
대체 경로 깊이(205)는 MRB 분기 예측 기록들(210)과 같은 기본 블록들의 일부분들에 의해 측정 될 수 있다. MRB 분기 예측 기록들(210)는 각각 분기의 타겟 또는 새로운 순차 캐시 라인으로 시작하고, 획득된 분기 또는 캐시 라인의 끝으로 끝나는 명령들의 스트림을 포함한다. MRB 분기 예측 기록들(210) 각각은 획득된 분기 또는 캐시 라인의 끝에서 종료하는 하나 이상의 명령 스트림들을 포함 할 수 있다. MRB 분기 예측 기록들(210)은 다음에 어떤 분기가 어디로 가야하는지 가장 예측 가능한 예측 경로를 제공한다.
원하는 경로 깊이(205)는 하나 이상의 분기 예측자(135)와 관련된 분기 파이프의 깊이 또는 지연 시간(레이턴시)에 의존한다. 하나 이상의 예측자(135)는 MRB(105)보다 평균적으로 더 정확하기 때문에, 하나 이상의 분기 예측자(135)는 충분한 개수의 명령들이 다운 스트림(즉, 분기 스트림(175))으로 전송 되자마자 인수할 수 있다. 태그 CAM(110)의 구성은 또한 버퍼 깊이(215), 또는 다시 말하자면, 태그 CAM(110) 내에서 추적 및 저장되는 저-신뢰도의 분기들의 개수를 고려한다.
MRB(105)에 의해 예측될 수 있는 최대 분기들의 개수는 경로 깊이(205)와 동일하다. 각각의 분기가 획득되거나 획득되지 않은 결과를 가질 수 있기 때문에, 각각이 깊이 경로(250)를 갖는 적어도 2개의 가능한 대체 경로들이 존재한다. 더 구체적으로, 순열의 수는 2^(경로 깊이(205))이다. 예를 들어, 깊이 '3'은 각 가지가 두가지 길로 가는 나무와 두가지 길 각각이 또한 두가지 길로 가는 것처럼, 8개의 가능한 경로들(즉, 분기들)을 갖는다. 일부 실시 예들에서, 트리 내의 하나의 분기만이 MRB(105)에 기록된다. 경로에 순차적인 라인들이 있을 때, 가능한 대체 경로들의 수는 이에 따라 감소한다. 그러나, MRB(105)는 가장 가능성 있는 경로를 저장하려고 노력한다. 보다 정확한 하나 이상의 분기 예측자(135)들은 훨씬 더 느린 속도로 그렇게 하지만, MRB(105)를 확인 및/또는 리디렉션할 수 있다. MRB(105)가 여전히 예측하는 동안 리디렉션이 발생하면, MRB(105)는 명령 페치 파이프 라인(170)의 구동을 중단할 수 있다. 하나 이상의 분기 예측자(135)에 의해 결정된 경로가 획득될 확률이 더 높을 때, MRB(105)에 저장된 하나 이상의 대체 경로들(180)은 업데이트될 수 있다. 따라서 MRB(105)는 미래의 리디렉션들을 최소화하기 위해 스스로 훈련할 수 있다.
본 명세서에 개시된 예시적인 실시 예는 빈번하게 예측 실패된 분기들을 식별하고, 부정확한 리디렉션 직후에 짧은 기간 동안 명령 페치 파이프 라인(170)에 이산 사이클 예측들(discrete cycle predictions)을 제공함으로써 분기 처리량을 증가시키고 획득된 버블 페널티를 숨길 수 있다. MRU(150)는 저-신뢰도 분기들을 식별하기 위해 하나 이상의 분기 예측자(135)로부터 직접 예측자 신뢰 추정자들(165)을 사용할 수 있다. MRU(150)는 빈번하게 보여지는 저-신뢰도 분기들을 식별할 수 있고, 예측 실패한 직후에 가능성이 높은 예측(즉, 하나 이상의 대체 경로들(180))을 기록하거나 저장할 수 있다. MRB(105)는 예측 실패 후 몇 사이클 동안 분기 스트림(175) 및/또는 명령 페치 파이프 라인(170)을 구동하고, 하나 이상의 분기 예측자(135)로부터의 현재 예측자 결과를 기다리지 않고 이미 예측된 고확률 기본 블록들을 페치하여, 획득된 버블 페널티를 제거할 수 있다.
MRB(105)가 분기 스트림(175)을 구동 할 수 있기 때문에, 일부 실시 예에서, 더 긴 지연 분기 예측자(135)는 경로 데이터(즉, MRB 분기들(108))에 입력으로서 공급될 수 있고, 따라서 명령들이 다운스트림 실행으로 해결되기 전에 예측 정정을 할 수 있다. 이것은 MRU(150)로부터의 후속적인 부적절한 예측들의 패널티를 감소시킨다.
MRB(105)는 기본 블록 분기 예측들만을 저장 및 구동 할 수 있고, 명령들 자체를 저장하지는 않는다. 명령 주소들에서 실제 명령들을 가져 오는데 비용이 많이 들지만, 이것은 큰 명령어 공간 범위(footprint coverage를 갖는 작고 간단한 구현을 가능하게 한다.
본 명세서에 개시된 예시적인 실시 예는 사후 예측 처리량을 증가시키지만, 예측 실패 레이턴시를 반드시 감소시킬 필요는 없다. 획득되지 않은 예측들은 MRB(105)에 기록될 필요가 없다. 또한, 항상-획득된 분기들은 다운 스트림에서 검증 될 필요가 없어서 주어진 사이클 동안 다중 획득되는 것이 허용된다.
태그 CAM(110)은 빈번하게 잘못 예측되는 분기들을 필터링하고 빈번하지 않은 분기들을 새로운 예측 실패들로 대체하기 위해 대체 정책을 사용할 수 있다. 가중치가 높은(즉, 예측 실패가 빈번하게 발생하는) 엔트리들을 갖는 분기들은 예측 실패가 계속되는 한 태그 CAM(110)에 남아있을 수 있지만, 가중치가 낮은(즉, 예측 실패가 빈번하게 발생하지 않는) 엔트리들은 시간이 지남에 따라 교체된다. 태그 CAM(110)에 히트(hit)하는 모든 리디렉션은 해당 가중치를 증가시킨다. 가중치가 포화되거나 태그 CAM(110)이 가득차면 빈번하게 액세스되지 않는 태그들을 식별 할 수 있도록 가중치는 축소(scale down)되거나 감소(decrement)될 수 있다.
도 3은 여기에 개시된 실시 예들에 따른 MRU(150)를 포함하는 마이크로프로세서(300)의 예시적인 블록도를 도시한다. 마이크로프로세서(300)는 ARM 프로세서, RISC 프로세서, x86 프로세서 등과 같은 임의의 적합한 프로세서 일 수 있다. 마이크로프로세서(300)는 본 명세서에 개시 된 바와 같은 FSM(125)을 포함 할 수 있다. 마이크로프로세서(300)는 본 명세서에 개시 된 바와 같이 MRU(150)를 포함 할 수 있다. MRU(150)는 여기에 설명 된 바와 같이 MRB(105)를 포함 할 수 있다.
도 4는 본 명세서에 개시된 실시 예에 따라 예측 실패 복구 버퍼(105)를 제어하는데 사용되는 예시적인 유한 상태 기계(125, FSM)를 도시한다. 이제 도 1 및 4를 참조한다.
유휴 상태(405)에서, FSM(125)은 유휴 상태이다. 기록 상태(410)에서, FSM(125)은 태그 CAM(110)에 새로운 엔트리를 생성하고 대응하는 대체 경로(180)를 MRB(105)에 저장한다. 정정 상태(415)에서, 하나 이상의 분기 예측자(135)로부터의 피드백에 기초하여, FSM(125)은 MRB(105)의 기존 대체 경로(180)를 보다 높은 확률의 대체 경로(180)로 대체한다. 리디렉션 상태(420)에서, FSM(125)은 명령 페치 파이프라인(170)을 리디렉션하기 위해 예측 실패에 대해 MRB(105)로부터의 판독(read)을 발행하고 데이터를 사용할 수 있다.
간략화를 위해, 기록 상태(410), 정정 상태(415)및 리디렉션 상태(420)로의 전환은 유휴 상태(405)로부터만 허용될 수 있다. 대안적인 실시 예에서, 유휴 상태(405)로 복귀하지 않고 상태들 사이에서 우선 순위를 정하기 위해 보다 복잡한 상태 기계가 사용될 수 있다.
특정 분기가 저-신뢰도 분기이고(AND), 예측 실패가 있고(AND), 태그 CAM(110)에 히트가 없는 3가지를 모두 만족할 경우, 430에서, FSM(125)은 유휴 상태(405)로부터 기록 상태(410)로 전환될 수 있다. FSM(125)은 특정 MRB 분기 예측 기록이 경로 깊이(예를 들어, 도 2의 205)보다 작을(LESS THAN) 경우, 기록 상태(410)에 남아 있을 수 있다. FMR(125)은 특정 MRB 분기 예측 기록이 경로 깊이(예를 들어, 도 2의 205)에 동일(EQUAL)하거나 또는(OR) 기록 정지 커맨드에 응답 할 경우 435에서 기록 상태(410)로부터 유휴 상태(405)로 다시 전환될 할 수 있다.
FSM(125)은 특정 분기가 저-신뢰도 분기이고(AND) MRB 예측 실패가 있고(AND) 태그 CAM(110)에 히트가 있을 때, 440에서, 유휴 상태(405)에서 정정 상태(415)로 전환될 수 있다. 특정 MRB 분기 예측 기록이 경로 깊이(예를 들어, 도 2의 205)보다 적은(LESS THAN) 경우, 정정 상태(415)를 유지할 수 있다. FMR(125)은 특정 MRB 분기 예측 기록이 경로 깊이(예를 들어, 도 2의 205)와 동일(EQUAL)하거나 또는(OR) 정정 정지 명령에 응답 할 때, 445에서 정정 상태(415)로부터 유휴 상태(405)로 다시 전환될 수 있다.
FSM(125)은 예측 실패가 있고(AND) 태그 CAM(110)에 히트가 있을 때, 450에서, 유휴 상태(405)로부터 리디렉션 상태(420)로 전환될 수 있다. FSM(125)은 특정 MRB 분기 예측 기록이 경로 깊이(예를 들어, 도 2의 205)보다 작고(LESS THAN), 그리고(AND) MRB 분기 예측 기록이 유효할 때, 리디렉션 상태(420)로 유지 될 수 있다. FSR(125)은 특정 MRB 분기 예측 기록이 경로 깊이(예를 들어, 도 2의 205)와 동일(EQUAL)하거나(OR) 파이프 플러시에 응답하여 또는(OR) MRB 예측 실패에 응답할 때, 455에서, 리디렉션 상태(420)로부터 유휴 상태(405)로 다시 전환될 수 있다.
도 5는 본 명세서에 개시된 실시 예들에 따른 예측 실패 복구 버퍼에 대한 기록 상태(예를 들어, 도 4의 410)의 예시적인 파형도(500)를 도시한다. 파형도(500)는 클록 신호(CLK), 예시적인 리디렉션 파형, 예시적인 플러시 파형, 예시 적인 예측되어 획득된 분기 파형, 예시적인 분기 IA 파형 및 예시적인 MRB 데이터 파형을 도시한다.
파형도(500)는 MRB(105)에 대한 기록 상태(410)에 있는 동안 신호들의 예시적인 타이밍 관계를 도시한다. 이 예시적인 파형도(500)는 식별된 저-신뢰도 예측 실패가 리디렉션된 후, MRU(150)가 MRB(105)에 데이터를 기록하는 것을 도시한다. 실제 경로 정정 이후의 각 항목은 높은 확률로 예측되어 획득된 분기이다. 특정한 저-신뢰도 분기가 잘못 예측되고, 특정한 저-신뢰도 분기가 태그 CAM(110)에 아직 존재하지 않는 경우, 특정한 저-신뢰도 분기는 MRB(105)에 기록되도록 선택 될 수 있다. 일부 실시 예에서, MRU(150)는 저-신뢰도 분기를 MRB(105)에 기록되도록 선택 할 수 있다. 대응하는 태그가 태그 CAM(110)에 저장되고 초기 교체 가중치가 할당된다. 후속 분기들은 MRB(105)에 대체 경로(180)로서 저장된다. 예시적인 타이밍 다이어그램(500)은 경로 깊이 “3”인 것으로 가정한다. 도 5에 도시 된 바와 같이, 505에서의 리디렉션(즉, 부적절한 예측)에 응답하여, 분기 IA 파형은 스트림 내에 산재 된 다수의 2개의 버블 페널티를 갖는 분기 명령 J, K 및 L을 나타낸다. MRB(105)는 510에서 MRB 데이터 기록을 시작하고 515, 520 및 525에서 계속된다.
도 6은 여기에 개시된 실시 예들에 따른 MRB(105)에 대한 리디렉션 상태(예를 들어, 도 4의 420)의 예시적인 파형도(600)를 도시한다. 이제, 도 1 및 6을 참조한다.
파형도(600)는 클록 신호(CLK), 예시적인 리디렉션 파형, 예시적인 플러시 파형, 예시적인 예측되어 획득된 분기 파형, 예시적인 MRB 판독 파형, 예시적인 MRB 데이터 파형 및 예시적인 페치 파형을 도시한다. 예측 실패하는 분기가 MRB(105)에서 히트 할 때(즉, 이전에 기록된 예측 실패 상황이 다시 발생한 것으로 검출 될 때), 대체 경로(180)가 MRB(105)로부터 판독되고 명령 페치 파이프 라인(170)상에서 구동된다. MRB(105)는 버블이 없는 분기 스트림(175)을 구동할 수 있고, 이전에 저장된 분기 정보를 사용하므로 동일한 사이클에서 다수의 분기들을 예측할 수 있다. 도 6에 도시 된 바와 같이, 605에서의 리디렉션에 응답하여, 페치 파형은 MRB1, MRB2 및 MRB3을 갖는 실제 경로를 따르며, 스트림 내에 산재된 버블 페널티들이 존재하지 않는다. 예측 실패 후 가장 중요한 동작은 버블없이 가능한 빨리 명령 페치 파이프 라인(170)을 공급하는 것이다. 따라서, 예시적인 파형도(600)는 고신뢰도 대안을 이미 기록한 후 저 신뢰도 예측 실패로부터 활성화 및 복구하는 MRU(150)를 도시한다.
도 7은 여기에서 개시된 실시 예들에 따른 MRB가 없는 경우와 MRB가 있는 경우의 비교를 보여주는 예시적인 파형도(700)를 도시한다. 이제, 도 1 및 7을 참조한다.
파형도(700)는 클록 신호(CLK), 예시적인 리디렉션 파형, 예시적인 플러시 파형, 예시적인 예측하여 획득된 분기 파형, 예시적인 노멀(normal) 분기 IA 파형, 예시적인 검증되어 획득된 분기 파형, 예시적인 MRB 판독 파형, 예시적인 MRB 데이터 파형, 및 예시적인 MRB 분기 IA 파형을 보여준다.
하나 이상의 분기 예측자(135)에 의해 구동되는 노멀 분기 IA 스트림과 MRB(105)에 의해 구동되는 MRB 분기 IA 스트림을 비교하는 것은 도 7에 도시 된 바와 같이, 노멀 분기 IA는 버블들이 산재 된 상태로 획득된 예측을 하게한다. 즉, 각 획득된 예측 사이에 산재된 2개의 버블 패널티들 갖는 명령 페치 파이프 라인(170)을 구동한다. 이는, 명령 페치 파이프 라인(170)이 플러싱 된 이후 모든 다운 스트림 유닛들이 유휴인 지점에서 6개의 여분의 버블들을 발생시킨다. 대조적으로, MRB 분기 IA 스트림은 이 예에서 6개의 버블들을 절약한다. 일부 실시 예들에서, 절약된 버블들의 개수는 6 보다 크거나 작을 수 있다. 파형은 노멀의 하나 이상의 분기 예측자(135)를 통한 예측 검증을 위한 2번의 사이클 지연을 포함한다. 검증 되고 획득된 분기 파형은 하나 이상의 노멀 분기 예측자(135)가 MRB(105)로부터의 대체 경로(180)와 일치하는지 여부를 나타내고, 하나 이상의 노멀 분기 예측자(135)가 일치하지 않는 경우, 하나 이상의 노멀 분기 예측자(135)는 상태가 정정되게 할 수 있다.
도 8a는 본 명세서에 개시된 실시 예들에 따라 부적절한 MRB 데이터를 갖는 리디렉션 상태의 예시적인 파형도를 도시한다. 도 8b는 여기에 개시된 실시 예들에 따른 정정 상태의 예시적인 파형도를 도시한다. 이제, 도 8A 및 8B를 참조한다.
도 8a 및 도 8b의 파형도(800 및 802)는 각각 클록 신호(CLK), 예시적인 리디렉션 파형, 예시적인 플러시 파형, 예시적인 예측되어 획득된 분기 파형, 예시적인 MRB 판독 파형, 예시적인 MRB 데이터 파형 및 예시적인 페치 파형을 도시한다. 파형도(802)는 파형도(800)의 연속이다.
하나 이상의 분기 예측자(135)는 MRB(105)가 명령 페치 파이프 라인(170)을 리디렉션한 예측이 정확한지 여부를 확인할 수 있다. 하나 이상의 분기 예측자(135)가 MRB(105) 동작들이 부정확하다고 결정하면, 하나 이상의 분기 예측자(135)는 명령 페치 파이프 라인(170)의 일부를 플러시하고 불일치점으로부터 다시 시작할 수 있다. MRB(105)가 가장 가능성이 높은 경로 또는 경로들을 저장하므로, 이것은 오직 시간의 작은 일부에서만 발생합니다. 하나 이상의 분기 예측자(135)가 다른 경로가 획득될 확률이 더 높다고 간주 할 때, MRB(105)는 FSM(125)의 정정 상태(예를 들어, 도 4의 415)동안 저장된 경로를 고정 할 수 있다.
이 예에서, 도 8a에서 도시 된 바와 같이, 페치 경로는 부적절한 MRB2 및 MRB3 엔트리들을 갖는다. 이들은 하나 이상의 분기 예측자(135)가 MRB(105)동작이 부정확하다고 또는 하나 이상의 분기 예측자(135)가 다른 경로들이 획득될 확률이 더 높다고 간주하는 것을 결정 했기 때문에 "부적절함(bad)"으로 간주 될 수 있다. 정정 상태(예를 들어, 도 4의 415)를 나타내는 도 8b에 도시된 바와 같이, 부적절한 MRB2 및 MRB3 엔트리는 적절한 MRB2 및 MRB3 엔트리로 대체된다. 하나 이상의 분기 예측자(135)가 일부 경우에서 MRB(105)에 저장된 것보다 더 정확하기 때문에 이들은 "적절함(good)"으로 간주 될 수 있다. 적절한 MRB2 및 MRB3 엔트리들은 도 8b에 도시된 바와 같이, 새로운 MRB2 및 MRB3 엔트리들로서 MRB(105)에 저장될 수 있다. 다시 말해서, MRB(105)는 업데이트된 분기 정보를 저장함으로써 미래의 리디렉션을 최소화하도록 스스로 트레이닝 할 수 있다.
도 9는 여기에 개시된 실시 예들에 따른 마이크로프로세서(300)를 포함하는 컴퓨팅 시스템(900)의 예시적인 블록도이다. 마이크로프로세서(300)는 본 명세서에서 설명 된 마이크로프로세서(300)와 동일 할 수 있고, 시스템 버스(905)에 전기적으로 연결될 수 있다. 컴퓨팅 시스템(900)은 또한 클록(910), 랜덤 액세스 메모리(RAM) 및/또는 플래시 메모리(915)를 포함 할 수 있고, 메모리 컨트롤러(945), 사용자 인터페이스(920), 기저 대역 칩셋과 같은 모뎀(925) 및/또는 자동화 테스트 장비(935, ATE)는 시스템 버스(905)에 전기적으로 연결될 수 있다.
컴퓨팅 시스템(900)이 모바일 장치인 경우, 컴퓨팅 시스템(900)에 전력을 공급하는 배터리(940)를 더 포함 할 수 있다. 도 9에 도시되는 않지만, 컴퓨팅 시스템(900)은 애플리케이션 칩셋, 카메라 이미지 프로세서(CIS), 모바일 DRAM 등을 더 포함 할 수 있다. 메모리 제어기(945) 및 플래시 메모리(915)는 데이터를 저장하기 위해 비휘발성 메모리를 사용하는 SSD(solid state drive/disk)를 구성 할 수 있다.
예시적인 실시 예에서, 컴퓨팅 시스템(900)은 컴퓨터, 휴대용 컴퓨터, 울트라 모바일 PC(UMPC), 워크 스테이션, 넷북, PDA, 웹 태블릿, 무선 전화, 휴대 전화, 스마트 폰, 전자 책, PMP(portable multimedia player), 디지털 카메라, 디지털 오디오 레코더/플레이어, 디지털 사진/비디오 레코더/플레이어, 휴대용 게임기, 내비게이션 시스템, 블랙 박스, 3차원 텔레비전, 무선 환경에서 정보를 송수신 할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치 중 하나, 텔레매틱스(telemetics) 네트워크를 구성하는 다양한 전자 장치 중 하나, RFID 또는 컴퓨팅 시스템을 구성하는 다양한 전자 장치 중 하나로 사용될 수 있다.
이전에 설명된 다양한 동작들은 다양한 하드웨어 및/또는 소프트웨어 구성 요소(들), 회로 및/또는 모듈(들)과 같은 동작을 수행 할 수 있는 임의의 적절한 수단에 의해 수행 될 수 있다.
본 발명의 측면은 예측 실패 복구 장치를 포함한다. 예측 실패 복구 장치는 하나 이상의 명령 실행 유닛을 포함 할 수 있다. 예측 실패 복구 장치는 하나 이상의 분기 예측자를 포함 할 수 있다. 예측 실패 복구 장치는 하나 이상의 명령 실행 유닛 및 하나 이상의 분기 예측자에 결합 된 하나 이상의 MRU(misprediction recovery unit)를 포함 할 수 있고, 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션 후 이산 사이클 예측을 제공하도록 구성된다.
MRU는 하나 이상의 분기 예측자로부터의 정보 및 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션에 기초하여 예측 된 분기들에 대한 예측 신뢰 정보를 생성하도록 구성된 분기 신뢰 필터를 포함 할 수 있다. MRU는 태그 CAM(content-addressable memory)을 포함 할 수 있다. 태그 CAM은 빈번하게 잘못 예측되는 저-신뢰도 분기를 저장하고, 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션을 탐색하고, 빈번하게 잘못 예측되는 저-신뢰도 분기들과 관련된 분기 신뢰도 필터로부터 예측 신뢰 정보를 획득 할 수 있다.
MRU는 태그 CAM에 존재하는 빈번하게 잘못 예측되는 낮은 신뢰도 분기들에 대한 대체 경로를 저장하도록 구성된 MRB를 더 포함 할 수 있다. MRB는 예측 실패 리디렉션에 응답하여 대체 경로를 갖는 명령 페치 파이프 라인을 구동 할 수 있다. MRB는 명령 자체를 저장하지 않고 대체 경로에 대한 명령 주소를 저장할 수 있다.
일부 실시 예들에서, 대체 경로는 빈번하게 잘못 예측되는 저-신뢰도 분기들 사이에서부터의 예측 실패 분기로부터 시작하는 예측 된 경로로부터 분기된다.
예측 실패 복구 장치는 명령 페치 파이프 라인을 더 포함 할 수 있다. 하나 이상의 명령어 실행 유닛들로부터의 예측 실패 리디렉션에 응답하여, MRB는 대체 경로로 명령어 페치 파이프 라인을 구동하도록 구성 될 수 있다. MRU는 버블 패널티 없이 MRB로부터 명령 페치 파이프 라인에 이산 사이클 예측을 제공하도록 구성 될 수 있다. MRB는 명령 자체를 저장하지 않고 대체 경로에 대한 명령 주소를 저장하도록 구성 될 수 있다. MRB는 예측 실패 리디렉션 직후에 대체 경로를 저장하도록 구성될 수 있다. MRB는 태그 CAM에 존재하는 빈번하게 예측 실패하는 저-신뢰도 분기들 사이에서부터의 빈번하게 예측 실패하는 저-신뢰도 분기와 관련된 복수의 대체 경로를 저장하도록 구성 될 수 있다. MRU는 적어도 MRB에 저장된 대체 경로에 기초하여 예측 실패 리디렉션 이후 불연속 사이클 예측을 제공하도록 구성 될 수 있다.
예측 실패 복구 장치는 하나 이상의 메인 분기 예측자를 더 포함 할 수 있다. 하나 이상의 분기 예측자는 대체 경로가 정확한지 여부를 결정하도록 구성 될 수 있다. 대체 경로가 정확하지 않다는 결정에 응답하여, 하나 이상의 분기 예측자는 명령 페치 파이프 라인으로 전송 된 불연속 사이클 예측을 정정하도록 구성 될 수 있다. MRU는 정정된 이산 사이클 예측을 저장하도록 구성 될 수 있다.
예측 실패 복구 장치는 MRU를 제어하고, 유휴 상태, 기록 상태, 리디렉션 상태 및 정정 상태 사이에서 전환하도록 구성된 유한 상태 기계(FSM)를 더 포함 할 수 있다. FSM은 적어도 예측 실패 리디렉션에 응답하여 유휴 상태에서 기록 상태로 전환하도록 구성 될 수 있다. FSM은 적어도 잘못된 예측 리디렉션 및 태그 CAM에서의 적중에 응답하여 유휴 상태에서 리디렉션 상태로 전환하도록 구성 될 수 있다.
예측 실패 리디렉션은 제 1 예측 실패 리디렉션이라고 지칭될 수 있다. FSM은 MRB와 관련된 적어도 제 2 예측 실패 리디렉션에 응답하여 유휴 상태에서 정정 상태로 전환하도록 구성 될 수 있다. FSM은 MRB와 관련된 적어도 제 2 예측 실패 리디렉션 및 태그 CAM에서의 히트에 응답하여 유휴 상태에서 정정 상태로 전환하도록 구성 될 수 있다.
실시 예는 명령 페치 파이프 라인과 관련된 예측 실패를 복구하는 방법을 포함한다. 상기 방법은 하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션을 수신하는 단계를 포함 할 수 있다. 이 방법은 하나 이상의 명령 실행 유닛으로부터 수신 된 예측 실패 리디렉션 이후에 MRU(misprediction recovery unit)에 의해 불연속 사이클 예측들을 제공하는 단계를 포함 할 수 있다. 상기 방법은 하나 이상의 분기 예측자로부터의 정보 및 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션에 기초하여 예측 된 분기들에 대한 예측 신뢰 정보를 분기 신뢰 필터에 의해 생성하는 단계를 포함 할 수 있다. 이 방법은 태그 CAM에 의해, 빈번하게 예측 실패하는 저-신뢰도 분기를 저장하는 단계를 포함 할 수 있다. 이 방법은 태그 CAM에 의해 하나 이상의 명령 실행 유닛으로부터의 잘못된 예측 리디렉션을 탐색하는 단계를 포함 할 수 있다. 이 방법은 태그 CAM에 의해, 빈번하게 잘못 예측되는 저-신뢰도 분기와 관련된 분기 신뢰 필터로부터 예측 신뢰 정보를 획득하는 단계를 포함 할 수 있다. 이 방법은 예측 실패 복구 버퍼(MRB)에 의해, 태그 CAM에 존재하는 빈번하게 예측 실패하는 저-신뢰도 분기들을 위한 대체 경로를 저장하는 단계를 포함 할 수 있다.
청구항의 방법은 MRB에 의해, 하나 이상의 명령 실행 유닛으로부터의 예측 실패 리디렉션에 응답하여 대체 경로를 갖는 명령 페치 파이프 라인을 구동하는 단계를 더 포함 할 수 있다. 청구항의 방법은 MRU에 의해, 버블 페널티 없이 MRB로부터 명령 페치 파이프 라인으로 이산 사이클 예측을 제공하는 단계를 더 포함 할 수 있다. 청구항의 방법은 MRB에 의해, 명령 자체를 저장하지 않고 대체 경로에 대한 명령 어드레스를 저장하는 단계를 더 포함 할 수 있다. 청구항의 방법은 MRB에 의해, 하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션 직후에 대체 경로를 저장하는 단계를 더 포함 할 수 있다.
청구항의 방법은 하나 이상의 분기 예측자에 의해, 대체 경로가 정확한지 여부를 결정하는 단계를 더 포함 할 수 있다. 청구항의 방법은 대체 경로가 정확하지 않다는 결정에 응답하여, 명령 페치 파이프 라인으로 전송 된 불연속 사이클 예측들을 하나 이상의 분기 예측자에 의해 정정하는 단계를 더 포함 할 수 있다. 청구항의 방법은 MRU에 의해, 정정 된 이산 사이클 예측을 저장하는 단계를 더 포함 할 수 있다.
청구항의 방법은 유한 상태 기계(FSM)에 의해 MRU를 제어하는 단계를 더 포함 할 수 있다. 청구항의 방법은 FSM에 의해, 유휴 상태, 기록 상태, 리디렉션 상태 및 정정 상태 사이에서 전환하는 단계를 더 포함 할 수 있다. 청구항의 방법은 FSM에 의해, 적어도 예측 실패 리디렉션에 응답하여 유휴 상태에서 기록 상태로 전환하는 단계를 더 포함 할 수 있다. 청구항의 방법은 태그 CAM에서의 적어도 예측 실패 리디렉션 및 히트에 응답하여 FSM에 의해 유휴 상태에서 리디렉션 상태로 전환하는 단계를 더 포함 할 수 있다. 일부 실시 예에서, 예측 실패 리디렉션은 제 1 예측 실패 리디렉션으로 지칭된다. 청구항의 방법은 MRB와 관련된 적어도 제 2 예측 실패 리디렉션에 응답하여 FSM에 의해 유휴 상태에서 정정 상태로 전환하는 단계를 더 포함 할 수 있다. 청구항의 방법은 MRB와 관련된 적어도 제 2 예측 실패 리디렉션 및 태그 CAM에서의 적중에 응답하여 FSM에 의해, 유휴 상태에서 정정 상태로 전환하는 단계를 더 포함 할 수 있다.
본 명세서에 개시된 실시 예와 관련하여 설명 된 방법 또는 알고리즘 및 기능의 블록들 또는 단계들은 하드웨어, 프로세서에 의해 실행중인 소프트웨어 모듈, 또는 이들의 조합으로 직접 구현 될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 실재하고, 비-일시적 컴퓨터 판독 가능 매체 상에 저장되거나, 하나 이상의 명령 또는 코드로서 전송될 수 있다. 소프트웨어 모듈은 RAM(random access memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD ROM, 또는 이 기술 분야에 알려진 임의의 다른 형태의 저장 매체 일 수 있다.
아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 기계 또는 기계들의 짧고 일반적인 설명을 제공하고자 한다. 기계 또는 기계들은 다른 기게로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 적어도 부분적으로 제어될 수 있다. 여기에서 사용되는 바와 같이, "기계"의 용어는 단일 기계, 가상 기계, 또는 함께 동작하는 통신 가능하게 연결된 기계들, 가상 기계들 또는 장치들의 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 기계들은 예로써 자동차, 기차, 택시 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC (Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 결합들을 통해서와 같이 하나 또는 그보다 많은 원격 기계들에 대한 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN (local area networks), WAN (wide area networks) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙련된 자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE 545.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.
본 발명의 기술적 사상의 실시 예들은, 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 연관된 데이터는, 예로써 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 저장 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송 신호들 등의 형태로 전달되고, 압축된 또는 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 지역적 그리고/또는 원격으로 저장될 수 있다.
도시된 실시 예들을 참조하여 설명된 본 발명의 기술적 사상의 원칙들을 가지면, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고 원하는 임의의 방법으로 조합될 수 있음이 이해될 것이다. 앞선 설명이 특정 실시 예들에 집중하였지만, 다른 구성들 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"이나 이와 유사한 것과 같은 표현들이 명세서에 사용되지만, 이러한 문구들은 일반적으로 실시 예의 가능성들을 언급하는 것을 말하며, 본 발명의 기술적 사상을 특정 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 여기에 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.
앞서 설명된 실시 예들은 본 발명의 기술적 사상을 그것들로 한정하는 것으로 해석되지 않는다. 적은 실시 예들만이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 설명들 및 장점들로부터 실질적으로 멀어지지 않으면서 이러한 실시 예들에 많은 수정들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의되는 바와 같이 본 발명의 기술적 사상의 범위 내에 포함되는 것으로 의도된다.
본 발명의 특징들 중 일부는 그래픽 처리 장치(GPU)에서 또는 프로세서 코어 내에서 그것들을 구현함으로써 가장 잘 달성될 수 있다. 다른 유형의 프로세서들 또는 주문형 집적 회로들(ASICs)은 본 명세서에 개시된 본 발명의 원리를 구현할 수있다. 본 발명의 개념은 스마트 폰, 태블릿, 노트북 컴퓨터 등과 같은 다양한 모바일 장치의 프로세서 및/또는 메모리 모듈, 또는 데스크탑 컴퓨터, 라우터 등과 같은 다양한 고정 장치(stationary device)에서 구현 될 수 있다.

Claims (20)

  1. 하나 이상의 명령 실행 유닛;
    하나 이상의 분기 예측자; 및
    상기 하나 이상의 명령 실행 유닛 및 상기 하나 이상의 분기 예측자와 결합되고, 상기 하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션 후에 이산 사이클 예측들을 제공하도록 구성되는 예측 실패 복구 유닛(Misprediction Recovery Unit, 이하 MRU)을 포함하되,
    상기 MRU는:
    상기 하나 이상의 분기 예측자로부터의 정보 및 상기 하나 이상의 명령 실행 유닛으로부터의 상기 예측 실패 리디렉션에 기초하여 예측된 분기들에 대한 예측 신뢰 정보를 생성하도록 구성되는 분기 신뢰 필터;
    예측 실패 저-신뢰도 분기들을 저장하고, 상기 하나 이상의 명령 실행 유닛으로부터의 상기 예측 실패 리디렉션을 탐색하고, 및 상기 예측 실패 저-신뢰도 분기들과 관련된 상기 분기 신뢰 필터로부터 상기 예측 신뢰 정보를 획득하도록 구성되는 태그 컨텐츠-주소지정가능 메모리(tag content-addressable memory, 이하 태그 CAM); 및
    상기 태그 CAM에 존재하는 상기 예측 실패 저-신뢰도 분기들에 대한 대체 경로를 저장하도록 구성되는 예측 실패 복구 버퍼(Mispredict Recovery Buffer, 이하 MRB)를 포함하는 예측 실패 복구 장치.
  2. 제 1 항에 있어서,
    상기 대체 경로는 상기 예측 실패 저-신뢰도 분기들 중 하나의 예측 실패 분기에서 시작하는 예측 경로로부터 갈라지는 예측 실패 복구 장치.
  3. 제 2 항에 있어서,
    상기 하나 이상의 명령 실행 유닛으로부터의 상기 예측 실패 리디렉션에 응답하여, 명령 페치 파이프라인을 더 포함하고,
    상기 MRB는 상기 대체 경로를 이용하여 상기 명령 페치 파이프 라인을 구동하도록 구성되는 예측 실패 복구 장치.
  4. 제 3 항에 있어서,
    상기 MRU는 버블 패널티들 없이 상기 MRB로부터 상기 명령 페치 파이프 라인으로 상기 이산 사이클 예측들을 제공하도록 구성되는 예측 실패 복구 장치.
  5. 제 1 항에 있어서,
    상기 MRB는 명령들을 자체를 저장하는 것 없이 상기 대체 경로를 위한 명령 주소들을 저장하도록 구성되는 예측 실패 복구 장치.
  6. 제 1 항에 있어서,
    상기 MRB는 상기 예측 실패 리디렉션 직후에 상기 대체 경로를 저장하도록 구성되는 예측 실패 복구 장치.
  7. 제 1 항에 있어서,
    상기 MRB는 상기 태그 CAM 내에 존재하는 상기 예측 실패 저-신뢰도 분기들 중 하나의 예측 실패 저-신뢰도 분기와 각각 관련된 대체 경로들을 저장하도록 구성되는 예측 실패 복구 장치.
  8. 제 1 항에 있어서,
    상기 MRU는 상기 MRB 내에 저장된 상기 대체 경로들에 기초하여 상기 예측 실패 리디렉션 후에 상기 이산 사이클 예측들을 제공하도록 구성되는 예측 실패 복구 장치.
  9. 제 1 항에 있어서,
    상기 대체 경로가 정확한지 여부를 판별하도록 구성되는 하나 이상의 분기 예측자를 더 포함하는 예측 실패 복구 장치.
  10. 제 9 항에 있어서,
    상기 하나 이상의 분기 예측자는 상기 대체 경로가 정확하지 않은 것으로 판별된 것에 응답하여, 상기 명령 페치 파이프라인으로 전송된 상기 이산 사이클 예측자들을 정정하도록 구성되는 예측 실패 복구 장치.
  11. 제 10 항에 있어서,
    상기 MRU는 상기 정정된 이산 사이클 예측자들을 저장하도록 구성되는 예측 실패 복구 장치.
  12. 제 1 항에 있어서,
    상기 MRU를 제어하고, 유휴 상태(idle state), 기록 상태(record state), 리디렉션 상태(redirection state) 및 정정 상태(correct sate) 사이에서 전환되도록 구성되는 유한 상태 기계(Finite State Machine, 이하 FSM)을 포함하는 예측 실패 복구 장치.
  13. 제 12 항에 있어서,
    상기 FSM은 상기 예측 실패 리디렉션에 응답하여 상기 유휴 상태에서 상기 기록 상태로 전환되도록 구성되는 예측 실패 복구 장치.
  14. 제 12 항에 있어서,
    상기 FSM은 상기 예측 실패 리디렉션 및 상기 태그 CAM 내의 히트(hit)에 응답하여, 상기 유휴 상태에서 상기 리디렉션 상태로 전환하도록 구성되는 예측 실패 복구 장치.
  15. 제 12 항에 있어서,
    상기 예측 실패 리디렉션은 제 1 예측 실패 리디렉션으로 언급되고,
    상기 FSM은 상기 MRB와 관련되는 제 2 예측 실패 리디렉션에 응답하여 상기 유휴 상태에서 상기 정정 상태로 전환되도록 구성되는 예측 실패 복구 장치.
  16. 제 15 항에 있어서,
    상기 FSM은 상기 MRB 및 상기 태그 CAM 내의 히트와 관련되는 상기 제 2 예측 실패 리디렉션에 응답하여 상기 유휴 상태에서 상기 정정 상태로 전환되도록 구성되는 예측 실패 복구 장치.
  17. 명령 페치 파이프라인과 관련된 예측 실패들을 복구하기 위한 방법에 있어서,
    상기 방법은:
    하나 이상의 명령 실행 유닛으로부터 예측 실패 리디렉션을 수신하는 단계;
    예측 실패 복구 유닛(Misprediction Recovery Unit, 이하 MRU)에 의해, 상기 하나 이상의 명령 실행 유닛으로부터 수신된 상기 예측 실패 리디렉션 이후에 이산 사이클 예측들을 제공하는 단계;
    분기 신뢰 필터에 의해, 하나 이상의 분기 예측자로부터의 정보 및 상기 하나 이상의 명령 실행 유닛으로부터의 상기 예측 실패 리디렉션에 기초하여 예측된 분기들에 대한 예측 신뢰 정보를 생성하는 단계;
    태그 컨텐츠-주소지정가능 메모리(Tag Content-Addressable Memory, 이하 태그 CAM)에 의해, 예측 실패 저-신뢰도 분기들을 저장하는 단계;
    상기 태그 CAM에 의해, 상기 하나 이상의 명령 실행 유닛으로부터의 상기 예측 실패 리디렉션을 탐색하는 단계;
    상기 태그 CAM에 의해, 상기 예측 실패 저-신뢰도 분기들과 연관된 상기 분기 신뢰 필터로부터 상기 예측 신뢰 정보를 획득하는 단계; 및
    예측 실패 복구 버퍼(Misprediction Recovery Buffer, 이하 MRB)에 의해, 상기 태그 CAM 내에 존재하는 상기 예측 실패 저-신뢰도 분기들에 대한 대체 경로를 저장하는 단계를 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 MRB에 의해, 상기 하나 이상의 명령 실행 유닛으로부터의 상기 예측 실패 리디렉션에 응답하여, 상기 대체 경로를 갖는 명령 페치 파이프라인을 구동하는 단계;
    상기 MRU에 의해, 버블 패널티들 없이 상기 이산 사이클 예측들을 상기 MRB로부터 상기 명령 페치 파이프라인들로 제공하는 단계;
    상기 MRB에 의해, 명령들 자체를 저장하는 것 없이 상기 대체 경로에 대한 명령 주소들을 저장하는 단계; 및
    상기 MRB에 의해, 상기 하나 이상의 명령 실행 유닛으로부터 상기 예측 실패 리디렉션 이후에 상기 대체 경로를 저장하는 단계를 더 포함하는 방법.
  19. 제 18 항에 있어서,
    상기 하나 이상의 분기 예측자에 의해 상기 대체 경로가 정확한지 여부를 판별하는 단계;
    상기 대체 경로가 정확하지 않다고 판별된 것에 응답하여, 상기 하나 이상의 분기 예측자에 의해, 상기 명령 페치 파이프라인으로 전송된 상기 이산 사이클 예측자들을 정정하는 단계; 및
    상기 MRU에 의해, 상기 정정된 이산 사이클 예측들을 저장하는 단계를 더 포함하는 방법.
  20. 제 17항에 있어서,
    유한 상태 기계(Finite State Machine, 이하 FSM)에 의해, 상기 MRU를 제어하는 단계;
    상기 FSM에 의해, 유효 상태, 기록 상태, 리디렉션 상태 및 정정 상태 사이에서 전환되는 단계;
    상기 FSM에 의해, 상기 예측 실패 리디렉션에 응답하여 상기 유효 상태에서 상기 기록 상태로 전환되는 단계;
    제 1 예측 실패 리디렉션으로 언급되는 상기 예측 실패 리디렉션 및 상기 태그 CAM 내의 히트에 응답하여 상기 유효 상태에서 상기 리디렉션 상태로 전환되는 단계;
    상기 FSM에 의해, 상기 MRB와 관련된 제 2 예측 실패 리디렉션에 응답하여 상기 유효 상태에서 상기 정정 상태로 전환되는 단계; 및
    상기 FSM에 의해, 상기 MRB 및 상기 태그 CAM 내의 히트와 관련된 상기 제 2 예측 실패 리디렉션에 응답하여 상기 유효 상태에서 상기 정정 상태로 전환되는 단계를 더 포함하는 방법.
KR1020190149080A 2018-12-20 2019-11-19 분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법 KR20200077401A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862783173P 2018-12-20 2018-12-20
US62/783,173 2018-12-20
US16/281,084 2019-02-20
US16/281,084 US10846097B2 (en) 2018-12-20 2019-02-20 Mispredict recovery apparatus and method for branch and fetch pipelines

Publications (1)

Publication Number Publication Date
KR20200077401A true KR20200077401A (ko) 2020-06-30

Family

ID=71098602

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190149080A KR20200077401A (ko) 2018-12-20 2019-11-19 분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법

Country Status (4)

Country Link
US (1) US10846097B2 (ko)
KR (1) KR20200077401A (ko)
CN (1) CN111352659B (ko)
TW (1) TWI827754B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990403B1 (en) * 2020-01-27 2021-04-27 Arm Limited Predicting an outcome of an instruction following a flush
US11334361B2 (en) 2020-03-02 2022-05-17 Arm Limited Shared pointer for local history records used by prediction circuitry
US11157284B1 (en) 2020-06-03 2021-10-26 Arm Limited Predicting an outcome of an instruction following a flush
US20220075624A1 (en) * 2020-09-04 2022-03-10 Advanced Micro Devices, Inc. Alternate path for branch prediction redirect
EP3989063B1 (en) * 2020-10-23 2023-08-30 INTEL Corporation High confidence multiple branch offset predictor
US11768688B1 (en) * 2022-06-02 2023-09-26 Microsoft Technology Licensing, Llc Methods and circuitry for efficient management of local branch history registers
US11983533B2 (en) 2022-06-28 2024-05-14 Arm Limited Control flow prediction using pointers

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5796998A (en) * 1996-11-21 1998-08-18 International Business Machines Corporation Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system
US6401196B1 (en) * 1998-06-19 2002-06-04 Motorola, Inc. Data processor system having branch control and method thereof
US6757816B1 (en) 1999-12-30 2004-06-29 Intel Corporation Fast branch misprediction recovery method and system
US7711932B2 (en) * 2003-12-02 2010-05-04 Intel Corporation Scalable rename map table recovery
US7363477B2 (en) * 2003-12-03 2008-04-22 Intel Corporation Method and apparatus to reduce misprediction penalty by exploiting exact convergence
WO2008077088A2 (en) * 2006-12-19 2008-06-26 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System and method for branch misprediction prediction using complementary branch predictors
US7685410B2 (en) * 2007-02-13 2010-03-23 Global Foundries Inc. Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US7779232B2 (en) * 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8255669B2 (en) * 2008-01-30 2012-08-28 International Business Machines Corporation Method and apparatus for thread priority control in a multi-threaded processor based upon branch issue information including branch confidence information
US20110320787A1 (en) * 2010-06-28 2011-12-29 Qualcomm Incorporated Indirect Branch Hint
EP2628072B1 (en) * 2010-10-12 2016-10-12 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
US9477478B2 (en) * 2012-05-16 2016-10-25 Qualcomm Incorporated Multi level indirect predictor using confidence counter and program counter address filter scheme
US9348599B2 (en) * 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
GB2511949B (en) * 2013-03-13 2015-10-14 Imagination Tech Ltd Indirect branch prediction
US9436476B2 (en) * 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures

Also Published As

Publication number Publication date
TWI827754B (zh) 2024-01-01
TW202026867A (zh) 2020-07-16
US10846097B2 (en) 2020-11-24
US20200201651A1 (en) 2020-06-25
CN111352659B (zh) 2024-04-02
CN111352659A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
KR20200077401A (ko) 분기 및 페치 파이프라인들을 위한 예측 실패 복구 장치 및 방법
JP6731048B2 (ja) 有用性追跡を用いた補助分岐予測
CN110069285B (zh) 一种检测分支预测的方法及处理器
US10402200B2 (en) High performance zero bubble conditional branch prediction using micro branch target buffer
CN109643346B (zh) 控制流完整性
CN100530081C (zh) 分支预测控制
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US10795683B2 (en) Predicting indirect branches using problem branch filtering and pattern cache
US10613869B2 (en) Branch target address provision
US20190354372A1 (en) Method for maintaining a branch prediction history table
JP2020501242A (ja) ストリーム長予測を使用する分岐予測器検索限定
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
CN107870780B (zh) 数据处理装置和方法
US9086888B2 (en) Using a plurality of tables for improving performance in predicting branches in processor instructions
US20040123075A1 (en) Extended loop prediction techniques
US20200396204A1 (en) Guided word association based domain name detection
US9652245B2 (en) Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
EP3646171A1 (en) Branch prediction for fixed direction branch instructions
US11561796B2 (en) Linked miss-to-miss instruction prefetcher
US10838731B2 (en) Branch prediction based on load-path history
US20200364055A1 (en) Efficient load value prediction
US9141566B2 (en) Method of accessing on-chip read only memory and computer system thereof
US20210278973A1 (en) Method of placing volume on closer storage from container
US11194575B2 (en) Instruction address based data prediction and prefetching
US20190121565A1 (en) Memory request scheduling to improve bank group utilization

Legal Events

Date Code Title Description
A201 Request for examination