KR100411529B1 - 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 - Google Patents

제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 Download PDF

Info

Publication number
KR100411529B1
KR100411529B1 KR10-2001-7002916A KR20017002916A KR100411529B1 KR 100411529 B1 KR100411529 B1 KR 100411529B1 KR 20017002916 A KR20017002916 A KR 20017002916A KR 100411529 B1 KR100411529 B1 KR 100411529B1
Authority
KR
South Korea
Prior art keywords
branch
target address
bpt
prediction
processor
Prior art date
Application number
KR10-2001-7002916A
Other languages
English (en)
Other versions
KR20010074978A (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 KR20010074978A publication Critical patent/KR20010074978A/ko
Application granted granted Critical
Publication of KR100411529B1 publication Critical patent/KR100411529B1/ko

Links

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
    • 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, 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, 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

Abstract

분기 예측자가 기재되어 있다. 제1 분기 예측 테이블(100)은 명령어 포인터 생성기(11)에 연결되어, 태깅된 분기 예측 엔트리를 저장하고, 고속으로 분기 예측을 제공한다. 제2 분기 예측 테이블(102)은 또한 명령어 포인터 생성기(11)에 연결되어, 태깅되지 않은 분기 예측 엔트리를 저장하고, 보다 저속이긴 하지만, 훨씬 더 큰 작업 세트 분기에 대해 분기 예측을 제공한다.

Description

제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및 장치{A METHOD AND APPARATUS FOR BRANCH PREDICTION USING A SECOND LEVEL BRANCH PREDICTION TABLE}
진보된 프로세서는 고속으로 명령어를 실행하기 위해 파이브라인방식(pipelining) 기술을 채택하고 있다. 이러한 프로세서에서, 전체 머신은 몇몇의 하드웨어 캐스캐이드 단계(cascaded stage)로 구성된 다수의 파이프라인으로 구성된다. 명령어 처리는 일련의 연산들로 나누어지고, 각 연산들은 대응하는 파이프라인 단계("파이프 단계") 내의 하드웨어에 의해 수행된다. 일부 명령어로부터 독립된 연산은 상이한 파이프 단계에 의해 동시에 수행되어, 프로세서의 명령어 처리량을 증가시킨다. 파이프라인형 프로세서가 각 파이프 단계에 다수의 실행 자원을 포함하는 경우에는, 프로세서의 처리량이 1사이클 당 1명령어를 초과한다. 이 명령어 실행 능력을 완전히 이용하기 위해, 프로세서의 실행 자원은 올바른실행 경로로부터 충분한 명령어가 제공되어야 한다.
통상의 컴퓨터 시스템에서, IP(instruction pointer)는 프로세서를 프로그램 코드의 하나의 명령어로부터 후속 명령어로 이끈다. 하나의 명령어는 이 IP를 정규 프로그램 코드 순서에서의 후속 명령어로 이끌거나, 또는 프로그램 코드의 일부를 스킵하고, 비-순서적(non-sequential) 명령어로 실행을 재시작하도록 할 수 있다. 프로세서가 순서적으로 후속 명령어를 계속 실행하도록 하거나, 또는 상이한 비-순서적 명령어로 "분기(branch)"하도록 하는 명령어를 분기 명령어(branch instruction)라 부른다.
예를 들어, 워드 프로세서가 철자 확인(spell-checking)을 할 때, 소프트웨어 명령어는 각 단어가 바르게 철자 되었는지를 확인하도록 실행된다. 그 단어가 바르게 철자 되어 있는 한, 그 명령어는 순서적으로 실행된다. 그러나, 틀린 철자의 단어가 발견되면, 분기 명령어는 유저에게 틀린 철자의 단어에 대해 통지하는 서브루틴으로 분기하도록 IP를 지시한다.
분기 명령어는 파이프라인이 올바른 실행 경로로부터의 명령어로 채워지도록 유지해야 하는 중요한 문제를 가진다. 분기 명령어가 실행되어 분기 조건에 처했을 때, 프로세서의 제어 흐름은 새로운 코드 순서로 점프하고, 새로운 코드 순서로부터의 명령어가 파이프라인으로 전송된다. 명령어가 파이프라인의 전단에서 페치되는 것과 달리, 분기 실행은 통상적으로 파이프라인의 후단에서 발생한다. 만일, 명령어 페칭이 올바른 실행 경로를 결정하기 위해 분기 실행에 의존하면, 프로세서 파이프라인은, 분기 조건이 결정되기 전에 잘못된 실행 경로로부터의 명령어로 채워질 수 있다. 그리고 나서, 올바른 실행 경로로부터 명령어가 페치되는 동안에, 영향받은 파이프 단계 내의 자원을 유휴상태(idle)로 두면, 이들 명령어는 그 파이프라인으로부터 플러시(flush)될 것이다. 유휴상태의 파이프 단계는 올바른 실행 경로로부터의 명령어에 의해 채워질 때까지는, 아무 유용한 출력을 제공하지 못하기 때문에, 이것을 파이프라인 버블(bubble)이라 부른다.
현대의 프로세서는 파이프라인 버블의 수를 줄이기 위해 그들 파이프라인의 전단에 분기 예측 모듈을 포함한다. 분기 명령어가 파이프라인의 전단에 진입하는 경우, 분기 예측 모듈은 그 분기 명령어가 파이프라인의 후단에서 실행될 때 그것이 이루어질지(take)(또는 수행될지)를 예측한다. 만일, 분기가 이루어지는 것으로 예측되면(비-순서적 명령어 실행), 분기 예측 모듈은 명령어 페치 모듈로 분기 타깃 어드레스를 제공하여, IP 어드레스를 분기된 프로그램 코드의 제1 명령어를 포함하는 어드레스와 같도록 설정함으로써 IP를 재지시하게 된다. 분기된 코드의 이 제1 명령어를 포함한 어드레스를 "타깃 어드레스"라 부른다. 파이프라인의 전단에 또한 위치된 페치 모듈은 타깃 어드레스로부터 페칭 명령어를 시작한다. 만일, 다른 한편으로 분기 예측자가 명령어가 이루어지지 않는 것으로 예측하면(순서적 명령어 실행), 분기 예측자는 IP가 정상 프로그램 코드 순서에서 후속 명령어를 지시하도록 IP 어드레스를 증가시킨다. 분기 실행이 파이프라인의 후단에서 발생한 경우, 프로세서는 전단에서 만들어진 예측이 올바른 것임을 확인할 수 있다. 분기 예측의 정확성이 높아질수록, 파이프라인 버블 및 플러시가 덜 생길 것이다.
종래의 분기 예측 모듈은, 분기가 이루어질 것인지, 및 분기가 이루어질 때에 알맞은 타깃 어드레스와 같은 정보를 포함한 예측 엔트리를 저장하기 위해 분기 타깃 버퍼(BTB)를 사용한다. 이들 분기 예측 엔트리는 분기 명령어를 포함하는 IP 어드레스와 관련된다. 분기 예측 테이블에서 추적된 각각의 IP 어드레스에 대하여, 그와 관련된 분기 예측 엔트리는 그 분기가 이후에 이루어질 것인지의 여부를 예측하는데 유용한 역사적인 정보에 따른 IP 어드레스를 포함한다. 그러나, BTB 내의 명령어를 참조하고, 분기가 이루어질지를 결정하고, 수행 예측에 대해 페치 모듈로 타깃 어드레스를 제공하는 과정은 그 프로세서를 타깃 어드레스로 재조정시에 지연을 야기시킨다. 이 지연은 잘못된 실행 경로로부터의 명령어를 파이프라인으로 진입 및 전파하도록 한다. 이들 명령어는 예측 실행 경로 상에 이후의 과정을 추가하지 않기 때문에, 그것이 플러시될 때에 파이프라인 내에 "버블"을 생성한다. 보다 정확하고 완전한 분기 예측 알고리즘(보다 큰 분기 테이블을 이용한)은 완료하는데 보다 오래 걸리고, 재조정 과정에서 보다 큰 지연을 생성한다. 파이프라인을 재조정(resteering)하는데 요구되는 클럭 사이클의 수가 커질수록, 그 파이프라인에서 생성되는 버블의 수가 커진다. 이에 따라, 분기 예측 구조의 액세스 속도와, 이들 구조에서의 내용의 크기 및 정확성간에 트레이드오프(tradeoff)가 존재한다.
속도 및 비용의 이유로, 현대의 프로세서는 종종 사용된 BTB의 크기를 제한한다. 이것은, 특히 큰 작업부하(workload)에 대해, 분기 검출 및 예측의 정확성을 감소시킨다. 보다 작은 크기의 BTB가 주어진다면, 신규 분기 예측 엔트리는 이전(older) 분기 예측 엔트리를 덮어쓰기(overwrite)해야 한다. 만일, 덮어쓰기된 분기 예측 엔트리에 관련된 분기 명령어가 프로세서에 의해 이후에 재실행되면, 분기 예측자가 그 분기가 이루어져야 하는지의 여부를 결정하는데 필요한 역사적인 정보가 존재하지 않게 된다. 결과적으로, 분기 예측의 정확성이 감소되어, 프로세서 성능이 저하되게 된다. 소프트웨어 애플리케이션의 크기가 증가함에 따라, 그 애플리케이션에서의 분기 명령어의 수도 증가하고, 제한된 크기의 분기 예측 테이블이 심각한 문제가 된다. 따라서, 가장 빈번한 분기의 서브세트(높은 집약성(locality)을 가진)에 대해 낮은 대기시간(latency) 분기 예측을 양산하는 솔루션을 제공하고, 전체 작업 세트에 대해 의미있는 예측을 제공할 필요성이 존재한다.
본 발명은 컴퓨터 시스템에 관한 것으로, 특히 제1 및 제2 레벨 분기 예측 테이블(branch prediction table)을 이용하여 분기 예측을 수행하는 프로세서에 관한 것이다.
본 발명은 첨부한 도면의 구성으로 인해 제한되지 않고 예시적인 수단으로 도시되며, 여기서 동일한 참조부호는 유사한 구성요소를 가리킨다.
도1은 본 발명의 방법을 도시한 순서도.
도2는 본 발명의 실시예에 따른 분기 예측 파이프라인을 도시한 도면.
도3은 도2의 분기 예측자를 도시한 도면.
발명의 요약
분기 예측자(branch predictor)가 기재되어 있다. 제1 분기 예측 테이블은 IP 생성기에 연결되어, 분기 예측 엔트리를 저장한다. 제2 분기 예측 테이블은 또한 IP 생성기에 연결되어, 보다 많은 수의 분기 예측 엔트리를 저장한다.
본 발명의 실시예에 따라, 분기의 최고 집약성을 위한 고속(낮은 대기시간) 분기 예측 및 재조정의 장점과, 감소된 속도이긴 하지만 커다란 전체 작업 세트에 대해 전반적으로 높은 정확성의 분기 검출 및 예측을 결합하기 위해, 2레벨 분기 예측 구조가 사용되어 진다. 이것은 현저한 다이 크기의 증가없이 수행될 수 있다.
본 발명의 다른 특징 및 장점들은 첨부된 도면 및 이하의 상세한 설명으로부터 명확해질 것이다.
제1 레벨 및 제2 레벨 분기 예측 테이블을 가진 프로세서에 대한 분기 예측자가 기술되어 있다. 초기 명령어 포인터(IP) 어드레스는 IP 생성기에 의해 생성된다. 제1 레벨(L1) 분기 예측 테이블(BPT) 및 제2 레벨(L2) BPT는 초기 IP 어드레스에 연관된 분기 예측 엔트리를 검색한다. 본 발명의 일실시예에 있어서, L1 BPT는 연관형(associative)(즉, 완전 연관형 또는 다중-방식 세트 연관형(multi-way set associative)이고, L2 BPT는 직접-매핑형(direct-mapped)이다.
L1 BPT가 연관형이기 때문에, 분기 예측 엔트리는 태깅(tagging)되고, 분기 예측 정보에 따라 이 태그가 L1 BPT에 저장된다. 직접-매핑 L2 BPT에서의 분기 예측 엔트리는 태깅되지 않고, 단지 분기 예측 정보만이 L2 BPT에 저장된다. L1 BPT의 분기 예측 엔트리가 L2 BPT의 분기 예측 엔트리보다 크기 때문에, L2 BPT는 L1 BPT와 동일한 크기의 공간에 보다 많은 분기 예측 엔트리를 가질 수 있다. 따라서, L1 BPT가 L2 BPT보다 더 정확하고 빠르기는 하지만, L2 BPT는 L1 BPT에 대한"백업(back-up)"으로서 동작하여, 추가적인 분기 예측 정보가 프로세서 크기에서의 비교적 작은 증가에 대해 저장되도록 한다. 프로세서 내에 L1 BPT 및 L2 BPT 모두를 포함함으로써, 하드웨어 비용에서의 큰 증가없이 분기 예측의 정확성 및 전체 속도를 동시에 개선할 수 있다. 추가로, L2 BPT의 크기에서의 약간의 증가는 또한 큰 작업 세트를 가진 프로그램에서 분기의 벌크를 보유할 수 있는 전체 저장 능력을 강화할 수 있다.
만일, 초기 IP 어드레스에 연관된 분기 예측 엔트리가 L1 BPT에서 발견되면(L1 BPT에서의 "히트(hit)"라 부름), 그 엔트리에 연관된 분기 예측 정보는 그 분기가 이루어질지의 여부를 예측하는데 사용된다(즉, 후속 IP 어드레스를 예측함). 만일, 초기 IP 어드레스에 연관된 분기 예측 엔트리가 L1 BPT에서 발견되지 않으면(L1 BPT에서의 "미스(miss)"라 부름), 그 IP 어드레스에 연관된 명령어는 이것이 분기 명령어인지를 판단하기 위해 디코딩된다. 만일, 이것이 분기 명령어라면, L2 BPT로부터의 분기 예측 정보는 분기가 이루어지는지의 여부를 예측하는데 사용된다.
본 발명의 대안의 실시예에 있어서, 소프트웨어는 분기 예측에 도움을 주기 위해 프로세서로 힌트를 제공한다. 이 실시예에 있어서, 이들 힌트는, 분기가 이루어질지의 여부를 예측하기 위해, L2 BPT로부터의 분기 예측 정보를 사용할 것인지 또는 소프트웨어 자체에 인코딩된 분기 예측 정보를 사용할 것인지를 결정하는데 사용된다.
이와 같은 2레벨 분기 예측자 설계는, 서버 및 워크스테이션 상에서 실행되는 것과 같이 큰 애플리케이션을 실행하도록 과중되는 프로세서에 대해 특히 유용할 수 있다. 다양한 구성 및 구현예를 포함한 본 발명의 실시예의 보다 상세한 설명이 이하에서 제공된다.
도1은 본 발명의 방법을 도시한 순서도이다. 단계(205)에서, L1 및 L2 분기 예측 테이블이 초기 IP 어드레스에 연관된 분기 예측 엔트리에 대해 검색된다. L1 BPT는 태깅된 연관형 테이블이고, L2 BPT는 태깅되지 않은 직접-매핑 테이블이다. 일실시예에 있어서, L1 BPT는 L2 BPT보다 적은 분기 예측 엔트리를 저장하지만, L1 BPT는 L2 BPT보다 더 빠르고 보다 나은 분기 예측 정확성을 제공한다. L1 BPT가 보다 적은 분기 예측 엔트리를 저장하기 때문에, L1 BPT는 가장 최근에 사용되어 가까운 미래에 가장 다시 사용될 수 있는 분기 예측 엔트리만을 저장한다.
도1의 단계(210)에서는, 초기 IP 어드레스에 연관된 L1 BPT에 히트가 존재하는지의 여부가 판단된다. 만일, L1 BPT에서 히트가 존재하면, 단계(215)에서, 초기 IP 어드레스에 연관된 L1 BPT에서의 분기 예측 정보가, 그 분기가 수행(taken)(이루어지는 것으로) 예측되는지를 나타내는지의 여부가 다음에 판단된다. 만일, 그 분기가 수행되도록 예측되면, 단계(220)에서, 후속 IP 어드레스는 TAC 또는 RSB로부터의 어드레스로 재조정된다. 대신에, 그 분기가 미수행(not taken)으로 예측되면, 단계(225)에서 재조정 신호가 전송되지 않는다.
만일, L1 BPT에 히트가 존재하지 않으면(L1 BPT에서 미스), 도1의 단계(230)에서, 디코더가 초기 IP 어드레스에 연관된 명령어가 분기 명령어인지를 판단하기 위해 명령어의 적어도 일부분을 디코딩한다. 만일, 그 명령어가 분기 명령어인 것으로 판단되면, 단계(230)에서 디코더에 의해 그 명령어가 리턴인지의 여부뿐만 아니라 타깃 어드레스가 또한 디코딩된다. 분기 명령어에 의해 분기 예측자에 분기 예측 힌트가 제공되는 실시예에 있어서, 디코더는 또한 단계(230)에서 이 힌트 정보를 디코딩한다.
만일, 도1의 단계(235)에서, 그 명령어가 분기 명령어가 아닌 것으로 판단되면, 단계(240)에서, 재조정 신호가 전송되지 않는다. 만일, 명령어가 분기 명령어인 것으로 판단되면, 단계(250)에서, 그 분기 명령어에 연관된 힌트가 정적(static)인지의 여부가 다음으로 판단된다. 힌트가 구현되지 않은 본 발명의 대안의 실시예에 대해서는, 단계(250) 및 단계(260)가 생략되고, 만일, 그 명령어가 분기 명령어인 것으로 판단되면, 프로세스 순서는 단계(235) 내지 단계(255)를 스킵한다.
만일, 분기 명령어에 연관된 힌트가 정적이 아니라면(즉, 동적(dynamic)이라면), 도1의 단계(255)에서, 초기 IP 어드레스에 연관된 L2 BPT에서의 분기 예측 정보가 그 분기가 수행으로 예측되어야 한다는 것을 나타내는지의 여부를 다음에 판단한다. 만일, 그 분기가 수행으로 예측되면, 단계(265)에서, 후속 IP 어드레스가 재조정되어, TAC, RSB(만일, 그 명령어가 리턴 명령어인 것으로 판단된 경우)로부터의 어드레스, 또는 디코더에 의해 디코딩된 어드레스인 것으로 예측되게 된다. 대신에, 그 분기가 미수행으로 예측되면, 단계(240)에서, 재조정 신호가 전송되지 않는다.
만일, 그 분기 명령어에 연관된 힌트가 정적이라면, 도1의 단계(260)에서,그 힌트는 그 분기가 수행 또는 미수행으로 예측되도록 나타나는지를 다음에 판단한다. 그 분기가 수행으로 힌트되면, 프로세스 순서는 전술한 바와 같은 단계(265)로 진행된다. 대신에, 그 분기가 미수행으로 힌트되면, 그 프로세스 순서는 전술한 바와 같은 단계(240)로 진행된다.
본 발명의 실시예에 따르면, 도1의 단계(220) 또는 단계(225)에서 만들어진 분기 예측은 단계(240) 또는 단계(265)에서 만들어진 분기 예측보다 먼저 완료되는 것을 알 수 있다.
도2는 본 발명의 실시예에 따른 분기 예측 파이프라인을 도시하고 있다. 도2의 파이프라인에 따르면, IP 멀티플렉서(10)의 출력은 증분기(incrementer)(20), 제1 레벨(L1) 분기 예측자(21) 및 제2 레벨(L2) 분기 예측자(22)에 초기 IP 어드레스를 제공한다. 증분기(20)는 후속 IP 어드레스를 생성하기 위해 초기 IP 어드레스를 알맞게 증분시키고, 후속 IP 어드레스를 제1 파이프라인 단계 동안에 IP 멀티플렉서(10)의 입력으로 다시 제공한다. IP 증분기(20)는 초기 어드레스를 취하여, 소정의 양만큼 이것을 증분시킨다. 초기 IP 어드레스에 더해지는 소정의 양은, 실행되어질 프로그램 코드의 연속되는 명령어 또는 명령어의 그룹을 저장하는 2 연속 메모리 어드레스간의 차이다.
L1 분기 예측자(21)는 재조정 신호를 생성하여, 이 신호를 IP 제어기(11)에 대한 입력으로 제공한다. 이 신호는 후속 IP 어드레스가 초기 IP 어드레스에 연속되는지의 여부를 나타낸다. 만일, L1 분기 예측자(21)가 재조정 신호를 IP 제어기(11)로 전송한 경우, 이것은 후속 IP가 비-순서적이라는 것을 나타내고, 그후, L1 분기 예측자(21)는 후속 IP 어드레스를 제2 파이프라인 동안에 IP 멀티플렉서(10)의 입력으로 제공한다.
L2 분기 예측자(22)는 또한 재조정 신호를 생성하여, 이 신호를 IP 제어기(11)에 대한 다른 입력으로 제공한다. 이 신호는 유사하게 후속 IP 어드레스가 초기 IP 어드레스에 대해 연속적인지의 여부를 나타낸다. 만일, L2 분기 예측자(22)가 재조정 신호를 IP 제어기(11)로 전송한 경우, 이것은 후속 IP가 비-순서적이라는 것을 나타내고, 그 후, L2 분기 예측자(22)는 후속 IP 어드레스를 제3 파이프라인 동안에 IP 멀티플렉서(10)의 입력으로 제공한다.
그리고 나서, IP 제어기(11)는 L2 분기 예측자(22) 및 L1 분기 예측자(21)로부터의 신호에 기반하여, IP 멀티플렉서(10)의 3개의 입력 중 어느 것을 멀티플렉서의 출력으로 통과시킬지를 결정한다. L1 분기 예측자(21) 및 L2 분기 예측자(22)가 모두 재조정 신호를 전송한 경우, 증분기(20)로부터 증분된 IP 어드레스가 멀티플렉서(10)에서의 후속 IP 출력으로 선택된다. L1 분기 예측자(21)가 재조정 신호를 전송한 경우, L1 분기 예측자(21)의 출력으로부터의 IP 어드레스가 멀티플렉서(10)에서의 후속 IP 어드레스 출력으로 선택된다. L2 분기 예측자(22)가 재조정 신호를 전송한 경우, L2 분기 예측자(22)의 출력으로부터의 IP 어드레스가 멀티플렉서(10)에서의 후속 IP 어드레스 출력으로 선택된다.
여기서 사용된 "초기 IP 어드레스"라는 용어는 후속 IP 어드레스를 예측하기 위해 기준점으로 사용되는 IP 어드레스를 말한다는 것을 알 수 있다. "초기 IP 어드레스"는 특정 소프트웨어 애플리케이션의 프로그램 코드의 제1 라인에 연관된 IP어드레스에 한정되도록 의도된 것이 아니다. 초기 IP 어드레스는 애플리케이션의 프로그램 코드의 어떠한 라인에 연관된 IP 어드레스일 수 있다.
도3은 본 발명의 실시예에 따른 도2의 L1 분기 예측자(21) 및 L2 분기 예측자(22)를 도시하고 있다. 도3의 분기 예측자는, 분기 예측자가 분기 예측을 수행하는 프로세서로 동일한 반도체 기판 상에 전체적으로 포함될 수 있다. 다른 실시예에 대해서는, 하나 이상의 분기 예측자의 기능 블록이 분리된 반도체 기판 상에 위치된다. 예를 들면, 프로세서의 전체 크기를 감소시키기 위하여, L2 BPT(102)는 분리된 반도체 기판 상에 위치할 수 있다.
L1 BPT(100)는 어드레스 태그에 의해 참조된 분기 예측 엔트리를 포함하는 연관형 테이블이다. 각 어드레스 태그는 분기 명령어를 포함하는 IP 어드레스에 연관된다. L1 BPT(100)에서의 각 분기 예측 엔트리는, 그와 연관된 어드레스 태그에 추가로 분기 예측 정보를 포함한다. 이 분기 예측 정보는 그 분기가 이루어질 것인지의 여부를 예측하기 위해 분기 예측자에 의해 사용된다. L1 BPT(100)에 저장된 분기 예측 정보의 특정 타입은 분기 예측자에 의해 구현될 수 있는 다양한 타입의 분기 예측 알고리즘과 동등하며, 이 기술 분야에 통상의 지식을 가진 자에게는 이들 중 많은 것이 알려져 있다.
예를 들어, 본 발명의 일실시예에 따르면, 로컬 히스토리 예측 알고리즘(local history prediction algorithm)이 L1 BPT(100)와 결합하여 구현된다. 다른 실시예에 대하여, 글로벌 히스토리 분기 예측 알고리즘 또는 카운터 예측자(예로, 2비트 업-다운 카운터, 쌍봉(bimodal) 분기 예측자로 알려진)가 L1BPT(100)에서 구현된다. 대안의 실시예에서, L1 BPT(100)는 두개 이상의 분리된 분기 예측 테이블로 나누어져서, 각 테이블은 상이한 분기 예측 알고리즘을 구현하게 된다. 그리고 나서, 선택기 회로는 어떤 알고리즘이 특정 경우에 대해 가장 정확한 예측을 제공하는지를 판단하고, 알맞은 테이블을 선택한다.
본 발명의 일실시예에 있어서, 도3의 L1 BPT(100)는 다중-방식 세트 연관형이다. L1 BPT(100)에서 분기 예측 엔트리를 검색할 때의 속도를 향상시키기 위해, 테이블이 비교적 작게 유지되어, 2K 분기 예측 엔트리에 대해 약 512의 저장 용량을 가지게 된다.
초기 IP 어드레스는 도3의 L1 분기 예측자(21)에 대한 입력으로 제공된다. 이 초기 IP 어드레스는 L1 BPT(100) 및 타깃 어드레스 캐시(TAC)(101)를 검색하는데 사용된다. 만일, 어드레스가 L1 BPT에서 발견되면, 이것은 히트이고, 이 히트 신호는 히트/미스(H/M) 신호 라인(121)을 따라 AND 게이트(144)의 입력으로 전송된다. 만일, 어드레스가 L1 BPT(100)에서 발견되지 않으면, 이것은 미스이고, 미스 신호는 히트/미스(H/M) 신호 라인(121)을 따라 전송된다. L1 BPT(100)에 히트가 존재하고, L1 BPT(100)에서의 연관된 엔트리가 그 분기가 이루어진다는 것을 나타내는 경우, 이것은, T/N(taken/not taken) 신호 라인(122)을 따라 AND 게이트(144)의 다른 입력으로 전송되는 수행 신호(taken signal)로 나타난다. 만일, L1 BPT(100)에 히트가 존재하고, L1 BPT(100)에서의 연관된 엔트리는 그 분기가 이루어지지 않는다는 것을 나타내는 경우, 이것은 T/N 신호 라인(122)을 따라 전송되는 미수행(not taken) 신호로 나타난다. 만일, L1 BPT(100)에서 이루어지는 히트가 존재하고, L1 BPT는 또한 그 분기가 리턴임을 나타내는 경우, 이것은 R/NR(return/not return) 신호 라인(143)을 따라 멀티플렉서(106)의 제어 입력으로 전송되는 리턴 신호로 나타난다. 만일, L1 BPT(100)에서 이루어지는 히트가 존재하고, L1 BPT가 그 분기가 리턴이 아님을 나타내는 경우, 이것은 R/NR 신호 라인(143)을 따라 전송되는 비리턴(not return) 신호로 나타난다.
만일, 도3의 L1 BPT(100)에서 히트가 존재하고, L1 BPT가 그 분기가 이루어진다는 것을 나타내는 경우, AND 게이트(144)는 IP 제어기(11)로 재조정 신호를 출력한다. 만일, L1 BPT(100)에서 미스이거나, 또는 L1 BPT에서 이루어지지 않는 히트가 존재하는 경우, AND 게이트(144)는 재조정 신호를 출력하지 않는다. AND 게이트(144)가 재조정 신호를 출력하면, IP 어드레스가 또한 멀티플렉서(106)로부터 출력된다. 리턴/비리턴(R/NR) 신호 라인(143)은 멀티플렉서(106)의 출력을 결정한다. 만일, 신호 라인(143)이 분기가 리턴 명령어임을 나타내면, 멀티플렉서(106)의 입력에 연결된 리턴 스택 버퍼(RSB)(142)로부터 리턴 어드레스가 멀티플렉서(106)의 출력으로 전파되고, 다음에 IP 멀티플렉서(10)로 전파된다. 만일, 신호 라인(143)이 분기가 리턴 명령어가 아님을 나타내는 경우, 타깃 버스(123)를 통해 멀티플렉서(106)의 다른 입력에 연결된 TAC(101)로부터의 타깃 어드레스는 멀티플렉서(106)이 출력으로 전파되고, 다음에 IP 멀티플렉서(10)로 전파된다. 또한, 히트/미스 신호에 따라 TAC(101)에서 발견된 타깃 어드레스는 또한, 이하에 기재된 바와 같이, L2 분기 예측자(22)의 멀티플렉서(109)에 대한 입력으로 제공된다.
도3의 L2 BPT(102)는, 어드레스 태그없이 분기 예측 정보를 포함한 분기 예측 엔트리를 포함하는 직접-매핑 테이블이다. 이 분기 예측 정보는 분기가 이루어질 것인지의 여부를 예측하기 위해 분기 예측자에 의해 사용된다. L2 BPT(102)에 저장된 분기 예측 정보의 특정 타입은 분기 예측자에 의해 구현될 수 있는 다양한 타입의 분기 예측 알고리즘 중 어느 것과도 동등할 수 있으며, 이들 중 많은 것이 이 기술분야의 통상의 지식을 가진자에게 알려져 있다. 이들 분기 예측 알고리즘 중 일부는 L1 BPT(100)에 연결하여 전술되었다. L2 BPT(102)는, L1 BPT(100)에 의해 구현된 알고리즘 타입에 관계없이, 이들 알고리즘의 어떤 것, 또는 이들 알고리즘의 어떠한 조합을 구현할 수 있다.
도3의 L2 BPT(102)에서 구현된 분기 예측 알고리즘이 적은 양의 공간을 차지하는 것은, 특히 비용면에서 효과적이다. 따라서, 본 발명의 일실시예에 따르면, L2 BPT(102)는 그것의 분기 예측의 방법으로 2비트 카운터 알고리즘을 구현한다. 2비트 카운터 알고리즘은, 예를 들어, L1 BPT(100)에서 구현된 로컬 또는 글로벌 분기 예측 알고리즘만큼 정확하지 않지만, 2비트 카운터 알고리즘을 사용하는 분기 예측 테이블은 분기 예측 엔트리당 단지 2비트의 저장만을 필요로 한다. 로컬 또는 글로벌 분기 예측 알고리즘을 구현한 분기 예측 테이블은 분기 예측 엔트리당 2비트 이상의 저장을 필요로 할 수 있다. 태깅되지 않은 분기 예측 엔트리 및 2비트 카운터 알고리즘을 사용함으로써, L2 BPT(102)는, 거의 동일한 양의 공간에서 L1 BPT(100)보다 4배 내지 8배 이상의 분기 예측 엔트리를 저장할 수 있다. 이에 따라, 본 발명의 일실시예에 있어서, L2 BPT(102)는 8K 이상의 분기 예측 엔트리에 대해 약 2K 정도의 비교적 큰 저장 용량을 갖는다. L2 BPT가 태깅되지 않는 일실시예에 있어서, 연관된 정적 힌트(이하에서 보다 상세히 기술됨)를 가지지 않는 분기는 회수(retirement) 후에 L2 BPT 예측을 갱신할 수 있다.
초기 IP 어드레스에 연관된 분기 예측 엔트리에 저장된 분기 예측 정보는 도3의 L2 BPT(102)로부터 판독되어, 이 정보를 이용하여 수행 또는 미수행 분기 예측이 계산된다. 분기 예측에 따라, 수행 또는 미수행 신호가 T/NT 라인(126)을 따라 멀티플렉서(107)의 입력으로 전송된다. L2 BPT(102)가 직접-매핑되는 본 발명의 실시예에 있어서, 이 테이블에서 히트가 항상 존재한다. 이것은 이들 히트의 일부 비율이 상이한 IP 어드레스의 분기 예측 정보와 하나의 IP 어드레스가 연관될 수 있음을 의미한다. 이 문제를 피하기 위한 하나의 방법은 L2 BPT에 어드레스 태그를 저장하여, 이 태그와 입력되는 IP 어드레스의 태그를 비교하는 것이다. 그러나, L2 BPT(102)에 태그를 저장하지 않음으로써 감소된 테이블 크기의 비용 이익은, 태그를 저장함으로써 얻어지는 증가된 분기 예측 정확성보다 더 가치있는 것임을 알 수 있다.
입력 명령어 버퍼(103)는 도3의 IP 멀티플렉서(10)로부터의 초기 IP 어드레스를 이용하여 검색되고, 연관된 명령어가 명령어 디코더(104)로 제공된다. 본 발명의 일실시예에 있어서, 디코더(104)는 이 명령어가 분기 명령어인지의 여부를 판단하기 위해, 명령어를 부분적 또는 전체적으로 디코딩한다. 만일, 그렇다면, 디코더는 타깃 어드레스 및 명령어가 리턴인지의 여부를 추가적으로 판단한다. 명령어가 분기(또는 리턴)인지의 여부에 따라, 알맞은 신호가 B/NB 라인(129)을 통해 AND 게이트(108)의 입력으로 전송된다. 타깃 어드레스(130)는 디코더(104)로부터 멀티플렉서(109)의 입력으로 전송된다.
분기 예측 힌트가 명령어 안에 포함된 실시예에 있어서, 도3의 디코더(104)는 또한 그 분기 예측 힌트가 정적인지 또는 동적인지를 판단한다. 만일, 정적이라면, 디코더는 그 힌트가 이루어지는지의 여부를 판단한다. 정적 또는 동적인 힌트를 나타내는 신호는 S/D 힌트 라인(127)을 통해 멀티플렉서(107)의 제어 입력으로 제공된다. 수행 또는 미수행 힌트를 나타내는 신호는 T/NT 힌트 라인(128)을 통해 멀티플렉서(107)의 입력으로 제공된다. 정적 힌트는 분기 예측자에게, 연관된 분기 명령어가, 어떠한 분기 예측 정보에도 상관없이, 수행 또는 미수행(수행/미수행 힌트 값에 따라)으로 항상 예측되어야 함을 나타낸다. 동적 힌트는 분기 예측자에게, L2 BPT(102)에서 검색된 분기 예측 정보는, 분기가 수행되는지의 여부를 예측하는데 사용되어야 한다는 것을 나타낸다. 본 발명의 대안의 실시예에 있어서, 동적 힌트를 포함하는 명령어는 또한, 분기 명령어의 초기 실행 후에, 분기 예측으로 사용될 수행/미수행 힌트를 포함한다. 이후에, 분기 예측 테이블에 저장된 분기 예측 정보는 이 분기 명령어에 대한 다음의 분기 예측을 판단하는데 사용된다.
만일, S/D 힌트 라인(127)을 통해 도3의 멀티플렉서(107)의 제어 입력으로 제공된 신호가 그 신호가 동적임을 나타내는 경우, 멀티플렉서는 T/N 라인(126)을 통해 L2 BPT(102)로부터의 수행/미수행 신호를 그 출력으로 선택한다. 만일, 멀티플렉서(107)의 제어 입력으로 제공된 신호가 그 힌트가 정적임을 나타내는 경우에는, 멀티플렉서는 T/N 힌트 라인(128)을 통해 디코더(104)로부터의 수행/미수행 힌트 신호를 그 출력으로 선택한다. L2 BPT가 태깅되고, 그 힌트가 동적이며, L2 BPT에 미스가 존재하는 일실시예에 대해서는, 디코딩된 예측이 여전히 사용된다. 이 실시예에 있어서, L2 BPT(102)로부터의 H/M 라인(또는 그의 역)은 S/D 힌트 라인(127)(또는 그의 역)을 통해 앤딩(ANDing)(또는 낸딩(NANDing))될 수 있고, 그 출력은 멀티플렉서(107)의 제어 입력에 연결된다.
만일, 도3의 B/NB 라인(129)을 통해 AND 게이트(108)의 입력으로 제공된 신호는, IP 어드레스에 연관된 명령어가 분기 명령어임을 나타내고, 멀티플렉서(107)의 출력은, 그 분기가 이루어지는 것으로 나타나면, AND 게이트(108)는 재조정 신호를 AND 게이트(141)의 입력으로 출력한다. 그렇지 않으면, AND 게이트(108)는 재조정 신호를 출력하지 않는다. AND 게이트(141)의 다른 입력은 L1 BPT(100)로부터의 히트/미스 신호 라인(121)에 연결되는 인버팅 입력이다. AND 게이트(108)의 출력이 재조정을 나타내고, L1 BPT에 히트가 존재하는 경우, AND 게이트(141)는 재조정 신호가 IP 제어기(11)로 전송되지 않도록 동작한다. 이것은, L1 BPT(100)로부터의 선(early) 예측이 L2 BPT(102)로부터의 후(late) 예측보다 더 정확하게 검색될 수 있기 때문이다. 이에 따라, AND 게이트(108)의 출력이 재조정을 나타내고, L1 BPT(100)에서 미스가 존재함을 나타낼 때, AND 게이트(141)는 재조정 신호를 IP 제어기(11)로 출력한다.
도3의 멀티플렉서(109)는 R/NR 신호 라인(140)을 통한 명령어 디코더(104)로부터의 리턴/비리턴 신호, 및 H/M 신호 라인(150)을 통한 TAC(101) 히트/미스 신호에 의해 제어된다. 명령어 디코더(104)는 멀티플렉서(109)에 대한 알맞은 출력을 선택한다. 예를 들어, 만일, R/NR 신호 라인(140)이, 그 명령어가 리턴 명령어임을나타내는 경우, 멀티플렉서(109)에 대한 입력으로 연결된 리턴 스택 버퍼(RSB)(142)로부터의 리턴 어드레스(L1 분기 예측자(21)로 제공된 RSB 출력과 동일한)는 멀티플렉서(109)의 출력으로 전파되고, 그 다음에, IP 멀티플렉서(10)로 전파된다. 만일, 신호 라인(140)이, 그 분기가 리턴 명령어(수행 분기에 대해)가 아님을 나타내는 경우, H/M 신호 라인(150)에 의해 나타나는 바와 같이, TAC(101)에서 힌트가 존재한다면, TAC(101)로부터의 타깃 어드레스는 멀티플렉서(109)의 출력으로 전파된다. 그렇지 않으면, 디코더(104)에 의해 디코딩되고, 타깃 버스(130)를 통해 멀티플렉서(109)에 대한 다른 입력으로 제공된 타깃 어드레스는 멀티플렉서(109)의 출력으로 전파된다.
그리고 나서, 후속 IP 예측이 프로세서에 제공되고, 그 어드레스에 위치한 명령어가 프로세서에 의해 실행된다. 이 예측은 이후에 올바른지 또는 그렇지 않은지가 판단된다. 그후, 예측된 분기 명령어에 연관된 L1 BPT(100) 및 L2 BPT(102)에 저장된 분기 예측 정보는 다음에 그 분기 명령어가 실행될 때에 예측 정확성을 향상시키도록 갱신될 수 있다. 본 발명의 일실시예에 있어서, 분기 명령어에 연관된 IP 어드레스가 L1 BPT에서 미스되고, 그 분기 명령어가 정적 힌트를 제공하지 않는 경우, L1 BPT는 그 IP 어드레스에 연관된 분기 예측 엔트리를 포함하도록 갱신된다.
본 발명이 특정한 예시적 실시예를 참조하여 기재되었지만, 본 발명의 보다 넓은 사상 및 범위로부터 벗어나지 않는 한, 다양한 수정 및 변경이 이들 실시예에 대해 수행될 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미라기 보다는 예시적인 의미로 여겨져야 할 것이다.

Claims (44)

  1. 프로세서에 있어서,
    명령어 포인터(IP) 생성기에 연결되어, 다수의 제1 분기 예측 엔트리를 저장하기 위한 제1 분기 예측 테이블(BPT); 및
    상기 IP 생성기에 연결되어, 분기 수행 및 분기 미수행을 둘다 예측하기 위한 다수의 제2 분기 예측 엔트리를 저장하기 위한 제2 BPT
    를 포함하고,
    여기서, 상기 프로세서는 상기 다수의 제2 분기 예측 엔트리와 관련된 타깃 어드레스 정보를 위한 저장 공간을 포함하고 있지 않은
    프로세서.
  2. 제1항에 있어서,
    상기 제1 BPT는 태깅된(tagged) 분기 예측 엔트리를 저장하고, 상기 제2 BPT는 태깅되지 않은 분기 예측 엔트리를 저장하는
    프로세서.
  3. 제1항에 있어서,
    상기 제1 BPT에 연결되어, 상기 제1 BPT가 분기가 수행된다는 것을 나타내는 경우, 후속 IP 어드레스를 타깃 어드레스 캐시에 저장된 타깃 어드레스로서 예측하기 위한 회로
    를 더 포함하는 프로세서.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 제2 BPT에 연결되어, 상기 제2 BPT가 분기가 수행된다는 것을 나타내는 경우, 후속 IP 어드레스를 리턴 스택 버퍼에 저장된 타깃 어드레스로서 예측하기 위한 회로
    를 더 포함하는 프로세서.
  7. 제1항에 있어서
    상기 제2 BPT는 상기 제1 BPT의 분기 예측 엔트리 수의 두 배 또는 그 이상을 저장하기 위한 크기로 되어 있는
    프로세서.
  8. 제1항에 있어서,
    상기 제1 BPT는 제1 타입의 예측 알고리즘을 구현하고, 상기 제2 BPT는 상기 제1 타입의 예측 알고리즘과는 상이한 제2 타입의 예측 알고리즘을 구현하기 위한 것인
    프로세서.
  9. 명령어 포인터(IP) 생성기;
    상기 IP 생성기에 연결되고, 다수의 제1 어드레스에 연관된 다수의 제1 분기 예측 엔트리를 저장하고 있는 제1 레벨 분기 예측 테이블(BPT);
    상기 IP 생성기에 연결되고, 다수의 제2 어드레스에 연관된 다수의 제2 분기 예측 엔트리를 저장하고 있는 제2 레벨 BPT; 및
    타깃 어드레스 정보를 결정하기 위한 디코더
    를 포함하고,
    여기서, 상기 제2 레벨 BPT는 타깃 어드레스 정보를 저장하고 있지 않으며, 상기 다수의 제2 분기 예측 엔트리는 분기 수행 및 분기 미수행을 둘다 예측하기 위한 것인
    프로세서.
  10. 제9항에 있어서,
    상기 IP 생성기에 연결되고, 상기 다수의 제1 어드레스에 연관된 다수의 타깃 어드레스를 저장하고 있는 타깃 어드레스 캐시
    를 더 포함하는 프로세서.
  11. 제10항에 있어서,
    상기 제1 레벨 BPT에서 분기가 수행된다는 것을 나타내는 히트(hit)가 존재하는 경우, 상기 타깃 어드레스 캐시로부터의 타깃 어드레스를 그 출력으로서 선택하기 위한 회로
    를 더 포함하는 프로세서.
  12. 제9항에 있어서,
    상기 IP 생성기에 연결되고, 다수의 분기 힌트를 저장하고 있는 메모리 장소 내의 명령어 그룹
    을 더 포함하는 프로세서.
  13. 제12항에 있어서,
    상기 제2 레벨 BPT에서의 히트는 분기가 수행된다는 것을 나타내고 상기 메모리 장소 내의 연관된 힌트가 동적인 경우, 상기 메모리 장소로부터의 타깃 어드레스를 그 출력으로서 선택하기 위한 회로
    를 더 포함하는 프로세서.
  14. 제9항에 있어서,
    상기 다수의 제2 어드레스에는 상기 다수의 제1 어드레스에 존재하는 어드레스의 2배 내지 4배만큼의 어드레스가 존재하고, 상기 다수의 제2 어드레스는 상기 다수의 제1 어드레스를 포함하는
    프로세서.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 컴퓨터 시스템에 있어서,
    수행될 수도 있고 수행되지 않을 수도 있는 제1 및 제2 분기를 포함하는 프로그램 코드; 및
    프로세서
    를 포함하고,
    여기서, 상기 프로세서는,
    상기 제1 분기와 연관된 제1 분기 예측 에트리 및 제1 타깃 어드레스를 저장하기 위한 제1 분기 예측자;
    상기 제2 분기와 연관된 제2 타깃 어드레스를 제외하고 상기 제2 분기와 연관된 제2 분기 예측 엔트리를 저장하기 위한 제2 분기 예측자; 및
    상기 제2 타깃 어드레스를 결정하기 위한 명령어 디코더를 포함하는
    컴퓨터 시스템.
  26. 제25항에 있어서,
    상기 제1 분기 예측자는 상기 제1 분기 예측 엔트리 및 제1 타깃 어드레스를 저장하기 위한 제1 분기 예측 테이블을 포함하는
    컴퓨터 시스템.
  27. 제26항에 있어서,
    상기 제2 분기 예측자는 상기 제2 타깃 어드레스를 제외하고 상기 제2 분기 예측 엔트리를 저장하기 위한 제2 분기 예측 테이블을 포함하는
    컴퓨터 시스템.
  28. 제25항에 있어서,
    상기 프로세서는 상기 제1 타깃 어드레스를 저장하기 위한 타깃 어드레스 캐시를 더 포함하는
    컴퓨터 시스템.
  29. 제28항에 있어서,
    상기 타깃 어드레스 캐시는 상기 제2 타깃 어드레스를 제외시키는
    컴퓨터 시스템.
  30. 제25항에 있어서,
    상기 제2 분기 예측자는 상기 제1 분기 예측자 보다 2배 또는 그 이상의 분기 예측 엔트리의 수를 저장하기 위한 것인
    컴퓨터 시스템.
  31. 제25항에 있어서,
    상기 제1 분기 예측자는 제1 타입의 예측 알고리즘을 구현하고, 상기 제2 분기 예측자는 상기 제1 타입의 예측 알고리즘과는 상이한 제2 타입의 예측 알고리즘을 구현하기 위한 것인
    컴퓨터 시스템.
  32. 수행될 수도 있고 수행되지 않을 수도 있는 제1 분기와 연관된 제1 분기 예측 에트리 및 제1 타깃 어드레스를 저장하기 위한 제1 분기 예측자;
    수행될 수도 있고 수행되지 않을 수도 있는 제2 분기와 연관된 제2 타깃 어드레스를 제외하고 상기 제2 분기와 연관된 제2 분기 예측 엔트리를 저장하기 위한 제2 분기 예측자; 및
    상기 제2 타깃 어드레스를 결정하기 위한 명령어 디코더를 포함하는
    프로세서.
  33. 제32항에 있어서,
    상기 제2 타깃 어드레스를 제외하고 상기 제1 타깃 어드레스를 저장하기 위한 타깃 어드레스 캐시를 더 포함하는
    프로세서.
  34. 제33항에 있어서,
    상기 제1 및 제2 분기는 동일한 것인
    프로세서.
  35. 제32항에 있어서,
    상기 제2 분기가 상기 제1 분기인
    프로세서.
  36. 제32항에 있어서,
    상기 제2 분기 예측자는 상기 제1 분기 예측자 보다 2배 또는 그 이상의 분기 예측 엔트리의 수를 저장하기 위한 것인
    프로세서.
  37. 제32항에 있어서,
    상기 제1 분기 예측자는 제1 타입의 예측 알고리즘을 구현하고, 상기 제2 분기 예측자는 상기 제1 타입의 예측 알고리즘과는 상이한 제2 타입의 예측 알고리즘을 구현하기 위한 것인
    프로세서.
  38. 제1 분기 예측자를 통해, 제1 분기와 연관된 제1 분기 예측 에트리 및 제1 타깃 어드레스를 저장하는 단계;
    제2 분기 예측자를 통해, 제2 분기와 연관된 제2 타깃 어드레스를 제외하고 상기 제2 분기와 연관된 제2 분기 예측 엔트리를 저장하는 단계; 및
    명령어 디코더를 통해, 상기 제2 타깃 어드레스를 결정하는 단계
    를 포함하는 방법.
  39. 제38항에 있어서,
    상기 제1 분기 예측자는 상기 제1 분기 예측 엔트리 및 제1 타깃 어드레스를 저장하기 위한 제1 분기 예측 테이블을 포함하는
    방법.
  40. 제39항에 있어서,
    상기 제2 분기 예측자는 상기 제2 타깃 어드레스를 제외하고 상기 제2 분기 예측 엔트리를 저장하기 위한 제2 분기 예측 테이블을 포함하는
    방법.
  41. 제38항에 있어서,
    타깃 어드레스 캐시를 통해, 상기 제1 타깃 어드레스를 저장하는 단계
    를 더 포함하는 방법.
  42. 제41항에 있어서,
    상기 타깃 어드레스 캐시는 상기 제2 타깃 어드레스를 제외시키는
    방법.
  43. 제38항에 있어서,
    상기 제2 분기 예측자는 상기 제1 분기 예측자 보다 2배 또는 그 이상의 분기 예측 엔트리의 수를 저장하기 위한 것인
    방법.
  44. 제38항에 있어서,
    상기 제1 분기 예측자는 제1 타입의 예측 알고리즘을 구현하고, 상기 제2 분기 예측자는 상기 제1 타입의 예측 알고리즘과는 상이한 제2 타입의 예측 알고리즘을 구현하기 위한 것인
    방법.
KR10-2001-7002916A 1998-09-08 1999-08-26 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 KR100411529B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/149,885 US6553488B2 (en) 1998-09-08 1998-09-08 Method and apparatus for branch prediction using first and second level branch prediction tables
US09/149,885 1998-09-08

Publications (2)

Publication Number Publication Date
KR20010074978A KR20010074978A (ko) 2001-08-09
KR100411529B1 true KR100411529B1 (ko) 2003-12-18

Family

ID=22532208

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7002916A KR100411529B1 (ko) 1998-09-08 1999-08-26 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치

Country Status (8)

Country Link
US (1) US6553488B2 (ko)
KR (1) KR100411529B1 (ko)
CN (1) CN1302376C (ko)
AU (1) AU5699299A (ko)
DE (1) DE19983517B4 (ko)
GB (1) GB2357871B (ko)
TW (1) TW455810B (ko)
WO (1) WO2000014628A1 (ko)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546481B1 (en) * 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
US7343397B2 (en) * 2002-03-29 2008-03-11 Lucent Technologies Inc. Method and apparatus for performing predictive caching of DNS requests by correlating IP addresses
US6978361B2 (en) * 2002-09-20 2005-12-20 International Business Machines Corporation Effectively infinite branch prediction table mechanism
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
WO2005006184A2 (en) * 2003-07-09 2005-01-20 Koninklijke Philips Electronics N.V. Method and system for branch prediction
US20050015578A1 (en) * 2003-07-14 2005-01-20 Kimming So Two-bit branch prediction scheme using reduced memory size
JP2005149297A (ja) * 2003-11-18 2005-06-09 Renesas Technology Corp プロセッサおよびそのアセンブラ
US7243219B2 (en) * 2003-12-24 2007-07-10 Intel Corporation Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction
US20050149680A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Fast associativity collision array and cascaded priority select
US20050283593A1 (en) * 2004-06-18 2005-12-22 Vladimir Vasekin Loop end prediction
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7428632B2 (en) * 2004-09-14 2008-09-23 Arm Limited Branch prediction mechanism using a branch cache memory and an extended pattern cache
US7836288B2 (en) * 2004-09-14 2010-11-16 Arm Limited Branch prediction mechanism including a branch prediction memory and a branch prediction cache
DE102005001679B4 (de) * 2005-01-13 2008-11-13 Infineon Technologies Ag Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
US8181004B2 (en) 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US20070050608A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporatin Of The State Of Delaware Hardware-generated and historically-based execution optimization
US8214191B2 (en) 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US8516300B2 (en) 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US8255745B2 (en) 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8375247B2 (en) 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US7539852B2 (en) * 2005-08-29 2009-05-26 Searete, Llc Processor resource management
US20070288732A1 (en) * 2006-06-08 2007-12-13 Luick David A Hybrid Branch Prediction Scheme
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
US7472264B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Predicting a jump target based on a program counter and state information for a process
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
TW200816282A (en) * 2006-09-27 2008-04-01 Promos Technologies Inc Method for reducing stress between a conductive layer and a mask layer and use of the same
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US8909907B2 (en) * 2008-02-12 2014-12-09 International Business Machines Corporation Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US7890739B2 (en) * 2008-02-19 2011-02-15 Oracle America, Inc. Method and apparatus for recovering from branch misprediction
US9021240B2 (en) * 2008-02-22 2015-04-28 International Business Machines Corporation System and method for Controlling restarting of instruction fetching using speculative address computations
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
CN102306094B (zh) * 2011-08-16 2014-03-26 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
US8739186B2 (en) 2011-10-26 2014-05-27 Autodesk, Inc. Application level speculative processing
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
US9009734B2 (en) * 2012-03-06 2015-04-14 Autodesk, Inc. Application level speculative processing
US9262169B2 (en) 2012-06-11 2016-02-16 International Business Machines Corporation Branch prediction table install source tracking
US9235419B2 (en) * 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250909B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250912B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20150268961A1 (en) * 2014-03-21 2015-09-24 Samsung Electronics Co., Ltd. Decoupling l2 btb from l2 cache to accelerate search for miss after miss
US10241800B2 (en) * 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US10929136B2 (en) * 2018-04-11 2021-02-23 Futurewei Technologies, Inc. Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors
US10817299B2 (en) * 2018-09-07 2020-10-27 Arm Limited Handling multiple control flow instructions
CN111209044B (zh) * 2018-11-21 2022-11-25 展讯通信(上海)有限公司 指令压缩方法及装置
US11163573B2 (en) * 2019-02-13 2021-11-02 International Business Machines Corporation Hierarchical metadata predictor with periodic updates
US11614944B2 (en) * 2020-11-09 2023-03-28 Centaur Technology, Inc. Small branch predictor escape

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US5815700A (en) * 1995-12-22 1998-09-29 Intel Corporation Branch prediction table having pointers identifying other branches within common instruction cache lines
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a microprocessor
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
An analysis of correlation and predictability: what makes two-level branch predictors work, Evers, M.; Patel, S.J.; Chappell, R.S.; Patt, Y.N.; Computer Architecture, 1998. Proceedings. The 25th Annual International Symposium on , 27 June-1 July 1998 *

Also Published As

Publication number Publication date
GB2357871A (en) 2001-07-04
DE19983517T1 (de) 2002-07-11
US20010047467A1 (en) 2001-11-29
WO2000014628A1 (en) 2000-03-16
US6553488B2 (en) 2003-04-22
CN1328664A (zh) 2001-12-26
AU5699299A (en) 2000-03-27
DE19983517B4 (de) 2006-12-07
TW455810B (en) 2001-09-21
KR20010074978A (ko) 2001-08-09
GB2357871B (en) 2003-09-24
GB0105285D0 (en) 2001-04-18
CN1302376C (zh) 2007-02-28

Similar Documents

Publication Publication Date Title
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US4943908A (en) Multiple branch analyzer for prefetching cache lines
JP2810211B2 (ja) データプロセッサの命令処理システム
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US6263427B1 (en) Branch prediction mechanism
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US7493480B2 (en) Method and apparatus for prefetching branch history information
JP2531495B2 (ja) ス―パ―スカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム
US7609582B2 (en) Branch target buffer and method of use
US7237098B2 (en) Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US7516312B2 (en) Presbyopic branch target prefetch method and apparatus
US8943298B2 (en) Meta predictor restoration upon detecting misprediction
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5822577A (en) Context oriented branch history table
US7640422B2 (en) System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
JPH08320788A (ja) パイプライン方式プロセッサ
US20040225866A1 (en) Branch prediction in a data processing system
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
US9778934B2 (en) Power efficient pattern history table fetch in branch predictor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111201

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee