KR100310581B1 - 분기목표버퍼의추측기록메카니즘 - Google Patents

분기목표버퍼의추측기록메카니즘 Download PDF

Info

Publication number
KR100310581B1
KR100310581B1 KR1019950705082A KR19950705082A KR100310581B1 KR 100310581 B1 KR100310581 B1 KR 100310581B1 KR 1019950705082 A KR1019950705082 A KR 1019950705082A KR 19950705082 A KR19950705082 A KR 19950705082A KR 100310581 B1 KR100310581 B1 KR 100310581B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
prediction
branch prediction
guess
Prior art date
Application number
KR1019950705082A
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 피터 엔. 데트킨
Priority claimed from PCT/US1994/003897 external-priority patent/WO1994027210A1/en
Application granted granted Critical
Publication of KR100310581B1 publication Critical patent/KR100310581B1/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
    • 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/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

본 발명은 분기목표버퍼내에 각 분기명령에 대한 추측기록(25)과 실제기록(22)을 유지하고 있는 분기예측메카니즘에 관한 것이다.
상기 실제분기기록(22)은 발생된, 완전하게 분석된 분기명령에 대한 분기기록을 포함하고 있다.
추측분기기록(25)은 그 분기에 대한 실제기록(22)과 최근의 분기예측에 관한 "기록"을 포함하고 있다.
추측분기기록(25)이 어떠한 최근의 예측을 포함하고 있으면, 추측비트(24)는 세트된다. 추측비트(24)가 세트되어 있으면, 이는 분기에 관한 추측기록(25)이 존재함을 의미한다. 그러므로, 추측비트(24)가 세트되어 있으면, 분기예측하는데 추측기록(25)이 사용되어진다. 그 분기에 대해서 예측이 잘못되면, 상기 추측비트(24)는 클리어되는데 이는 추측기록(25)이 부정확한 분기기록을 포함하고 있기 때문이다.

Description

분기목표버퍼의 추측기록메카니즘
본 발명은 마이크로프로세서의 분기예측메카니즘에 관한 것이다. 특히 짧은 루프내에 있는 분기명령을 위해 분기기록을 즉시 이용할 수 있도록, 분기예측이 행해졌을 때 "추측 기록(history)"을 저장해 두는 분기예측 메카니즘에 관한 것이다.
(기술배경)
대체로, 초기의 마이크로프로세서는 명령어를 한번에 하나썩 처리하였다.
이때 각 명령어는 명령어 인출단계, 명령어해독단계, 수행단계, 및 결과재기록단계의 연속된 4개의 단계로 처리되었다. 이러한 마이크로프로세서내에서는 별개의 전용논리블럭들이 서로 다른 처리단계를 수행하였다. 상기 각 논리블럭은 앞단의 모든 논리블럭이 그들의 동작을 완료할때까지 대기하였다가 자신의 동작을 개시한다.
효율개선을 위해, 마이크로프로세서 설계자들은 상기 인출단계, 해독단계, 수행단계 및 재기록단계의 동작을 중첩시켰으며, 그 결과 상기 마이크로프로세서는 여러 명령어를 동시에 처리할 수 있게 되었다.
동작시, 상기 인출단계, 해독단계, 수행단계, 및 재기록단계는 별개의 명령어를 동시에 수행한다. 각 클럭 틱(tick)에서, 각 처리단계의 결과가 다음의 처리단계로 보내진다. 인출단계, 해독단계, 수행단계, 및 재기록단계를 중첩시키는 기술을 이용하는 마이크로프로세서는 "파이프라인" 마이크로프로세서라고 불린다.
파이프라인 마이크로프로세서가 효율적으로 동작할 수 있도록, 그 파이프라인의 헤드에 있는 명령어 인출유닛은 파이프라인에 명령어를 연속적으로 제공하여야 한다.
그러나, 명령어 스트림내의 조건분기 명령에 의해서 파이프라인의 헤드에 있는 상기 명령어 인출유닛은 조건이 분석될때까지 올바른 명령어를 인출하지 못하게 된다.
상기 조건은 다음의 파이프라인이 진행할때까지 분석되지 않게 되므로 상기 명령어 인출유닛은 올바른 명령어를 인출하지 못하게 된다.
이 문제를 극복하기 위해서, 다수의 파이프라인 마이크로프로세서는 분기명령의 결과를 예측해서 이 분기예측에 따라 다음의 명령어를 인출하는 분기예측메카니즘을 이용하고 있다. 가령, 예흐와 패트는 정확도가 높은 2레벨분기예측 메카니즘을 소개하였다(트세위 예흐와 얄레 엔. 패트 공저의 2레벨적응형 분기예측, 제24회 마이크로 아키텍쳐에 관한 ACM/IEEE 국제심포지움 및 워크삽, 1991. 11., 페이지 51∼61 참조).
분기예측 메카니즘이 분기를 잘못 예측하면, 인출되어서는 안되는 명령어가 명령파이프라인 처리되게 된다.
상기 예흐와 패트가 공개한 2레벨분기예측 메카니즘과 같은 대부분의 분기예측 메카니즘은 동작중에 분기결과기록이 다이내믹하게 유지된다. 그리고 저장된 분기기록에 기초하여 분기예측을 한다.
디프 파이프라인 프로세서에서 짧은 루프를 수행할때, 명령파이프라인내에서 동시에 동일한 분기명령이 여러번 발생할 수 있다. 이러한 상황에서는 먼저 발생된 분기가 분석되지 않은 상태이다. 그러므로, 분기예측 메카니즘은 먼저 발생된 분기에 관한 기록을 이용할 수 없게 된다. 나중에 발생된 분기명령처리시 파이프라인에 먼저 제공된 분기명령에 관한 분기기록을 이용할 수 없으므로, 나중에 발생한 분기명령에 대한 분기예측은 예전의 오래된 기록을 이용하여 이루어진다.
그러므로, 디프파이프라인 프로세서에 있어서, 분기기록에 기초해서 예측을 하는 분기예측메카니즘은 종종 짧은 루프의 분기를 잘못 예측하는 경우가 있다.
(발명의 요약)
그러므로, 본 발명의 목적은 명령파이프라인내에 항상 존재하는 "추측분기기록"에 기초해서 예측을 하는 분기예측 메카니즘을 제공함에 있다. 상기 추측분기기록은 그 분기에 대한 이전의 분기기록과 최근의 분기예측으로 이루어져 있다.
이 목적과 기타 다른 목적은 소정의 분기목표버퍼내에 각 분기명령에 대한 추측기록과 실제기록을 유지하고 있는 본 발명의 분기예측 메카니즘에 의해서 달성된다.
상기 실제 분기기록은 발생된, 완전하게 분석된 분기명령에 관한 분기기록을 포함하고 있다.
상기 추측분기기록은 분기에 대한 실제기록과 최근의 분기예측에 관한 "기록"을 포함하고있다. 이 추측분기기록이 어뗘한 최근예측이라도 포함하고 있으면, 추측비트가 세트된다. 추측비트가 세트되어 있으면, 어느 분기에 관한 추측기록이 존재함을 의미한다. 그러므로, 추측비트가 세트되어 있으면, 분기예측을 하는데 추측기록이 이용된다.
그 분기에 대하여 잘못예측이 되면 상기 추측비트는 클리어되는데, 이는 상기 추측기록이 부정확한 분기기록을 포함하고 있기 때문이다.
본 발명의 목적, 특징, 및 장점은 다음의 상세한 설명을 참조하면 당업자에게 명백해진다.
(표기법 및 용어정의)
후속되는 상세한 설명은 주로 컴퓨터 메모리내에 있는 데이타 비트의 연산에 대한 디스플레이 이미지, 알고리즘 및 심벌표현을 통해 제공된다. 이러한 알고리즘 설명과 표현은 다른 당업자에게 작업내용이 가장 효율적으로 전달될 수 있도록 데이터 처리분야의 당업자가 이용하는 수단이다.
여기서 뿐만 아니라 일반적으로 알고리즘은 원하는 결과를 가져오는 스텝들로 이루어진 일관성 있는 시퀀스로 인식되어 왔다. 이러한 스텝들은 물리량의 물리적 처리를 요구하는 것들이다. 반드시 그런 것은 아니지만, 흔히 이러한 양들은 저장, 전달, 조합, 비교, 선택, 수정 및 그밖의 처리가 가능한 전기적 또는 자기적 신호의 형태를 취하고 있다. 때때로, 관례상의 주된 이유로 해서, 상기 신호들을 비트, 수치, 요소, 심벌, 문자, 이미지, 용어, 숫자 등으로서 언급하면 편리하다는 것은 기지의 사실이다. 그러나, 이러한 용어뿐만 아니라 이와 유사한 용어 모두는 적절한 물리량과 관련되어 있으며, 이는 단지 상기 물리량에 대한 편리한 호칭에 지나지 않음을 명심해야 한다.
본 발명에서의 동작들은 조작자인 사람과 더불어 수행되는 기계적 동작이다.
이러한 본 발명의 동작을 수행하는 유용한 기계는 범용 디지탈컴퓨터나 다른 유사한 디바이스를 포함하고 있다.
모든 경우에 있어서, 컴퓨터를 동작시키는 방법과 계산방법 자체와의 차이점을 명심해야 한다. 본 발명은 컴퓨터를 동작시키고 또 다른 원하는 물리적 신호를 발생시키기 위해 전기적 또는 다른 물리적 신호를 처리하는 방법 스텝에 관한 것이다.
또, 본 발명은 이들 동작을 수행하는 장치에 관한 것이다.
이 장치는 원하는 목적에 맞는 특수한 구성을 가지든지, 컴퓨터에 저장되어 있는 컴퓨터 프로그램에 의해 선택동작 또는 재구성되는 범용컴퓨터로 구성되게 된다. 여기서 제시되는 알고리즘은 어떠한 특수컴퓨터나 기타장치와 본질적으로 관련된 것은 아니다.
특히, 각종 범용기계가 여기서 지시하는 프로그램과 더불어 사용가능하고, 그리고 필요한 방법스탭을 수행하는, 보다 특수한 장치를 구성하는데에 더욱 편리한 것으로 밝혀졌다.
이러한 각종 기계에 있어서 요구되는 구조는 후술된다. 본 발명의 기능을 수행할 수 있는 기계는 다른 컴퓨터시스템 제조자뿐만 아니라 본 발명의 양수인인 인텔 코퍼레이션에서 제조된 것을 포함한다.
(발명의 구체적인 기술)
추측분기기록에 기초해서 분기예측을 하는 분기예측 메카니즘이 공개된다.
설명을 위한 다음의 기술내용에서는 본 발명을 철저하게 이해할 수 있도록 특수한 용어에 대해서 설명한다. 그러나, 본 발명의 실시를 위해서는 특별한 설명이 요구되지 않음이 당업자에게는 명백하다. 다른 예에서는 본 발명이 쓸데없이 불명료하게 되지 않도록 이미 잘 알려진 회로들이나 디바이스들에 대해서는 블록도의 형태로 도시하였다.
(디프파이프라인 프로세서에서의 분기예측)
디프파이프라인 프로세서에서, 인출단계, 해독단계 및 수행단계와 같은 파이프라인 프로세서의 주요단계는 여러 서브단계로 나뉘어 파이프라인 처리가 되게 된다. 이로 인해 명령 파이프라인이 길어진다. 예를 들면, 제1도에는 디프파이프라인 프로세서에서의 일련의 파이프라인 단계가 예시되어 있다.
이 제1도의 명령파이프라인에는 11개의 파이프라인단계가 있다.
제1도의 명령파이프라인의 헤드에는 2개의 명령어 서브인출단계(인출 1 및 인출 2)가 위치하고 있다.
이 두 명령어 서브인출단계에서는 명령파이프라인을 위해 새로운 명령어들을 연속적으로 인출한다. 명령어 스트림내의 무조건 분기명령에 의해서 상기 서브인출단계에서는 연속된 명령어를 간단히 인출할 수 없다. 더구나, 상기 명령어 스트림내의 조건분기명령에 의해서 상기 서브인출단계에서는 기설정 경로를 따라 명령어를 간단히 인출할 수 없게 된다. 그러므로, 상기 명령어 서브인출단계에서는 프로그램이 진행하는 곳을 정확하게 알지 못한채 다음의 명령어를 인출하게 된다.
다음 명령어를 인출하기 위해서, 명령파이프라인의 헤드에 있든 서브인출단계가 분기예측 메카니즘에 의해 수행된다.
이 분기예측 메카니즘은 분기명령이 명령스트립내의 어느 곳에 존재하는지와 이 분기명령의 결과를 예측한다.
다음에, 명령어 인출유닛이 상기 분기예측 메카너즘에 의해서 예측된 명령어 스트럼을 인출한다.
대부분의 분기예측 메카니즘은 이전에 발생된 분기명령의 결과에 기초해서 어떤 분기명령의 결과를 예측한다. 분기명령을 분석할 때마다, 상기 분기예측 메카니즘은 소정의 분기기록 버퍼내에 분기결과를 저장해 둔다. 후속하는 분기명령 발생시, 분기예측 메카니즘은 저장해 둔 분기기록에 기초해서 분기예측을 한다.
위의 분기예측 메카니즘을 이용하면 분기예측 속도를 상당히 높일 수 있다 가령, 예흐 및 패트의 2레벨 적웅형 분기예측 메카니즘의 경우, 97% 이상의 정확도를 가진 예측속도가 달성된다(트세 위 예흐와 얄레 엔. 패트 공저의 2레벨적응형 분기예측, 제24회 마이크로 아키텍쳐에 관한 ACM/IEEE 국제심포지움 및 워크삽, 1991 11., 페이지 50 참조).
디프 파이프라인 프로세서에 의해서 분기예측과정이 복잡해질 수 있다. 특히 디프 파이프라인 프로세서에서, 분기예측을 하는데 분기기록을 이용하는 분기예측 메카니즘은 종종 짧은 프로그램루프에 있는 분기명령을 잘못 예측하는 경우가 있다.
제1도, 제2a도 및 제2b도를 참조하여 이 문제점을 설명한다.
제2a도를 참조하면, 이 도면에는 의사어셈블리 언어로 작성된 짬은 프로그램이 리스트되어 있다.
제2a도의 프로그램은 매우 팜은 루프로 되어 있다 이 프로그램의 제 1라인은 제 1레지스터(R1)에 절대간 3을 로드하는 로드명령어로 이루어져 있다.
이 프로그램의 제 2라인은 상기 제 1레지스터(Rl)의 값을 제 2레지스터(R2)의 값에 더하는 명령어를 포함하고 있다.
다음에 상기 제 1레지스터(Rl)의 값은 상기 프로그램의 제 3라인에서 1만큼 감소된다.
상기 프로그램의 제 4라인에서 상기 프로그램은 제로플래그가 세트되어 있지 않으면 자신의 제 2라인으로 다시 분기된다. 이와 같이 , 제 1레지스터(R1)의 값이 아직 제로가 아니면, 상기 프로그램은 제 2라인으로 다시 순환된다. 마지막으로 프로그램의 제 5라인에서 상기 제 2레지스터(R2)의 값이 메모리에 저장된다.
제 1레지스터(Rl)에는 상기 절대값 3이 로드되므로, R1감소명령 다음에 위치한 "제로가 아니면 분기" 명령은 제 2라인으로 두번째 순환하게 된다. 그러나, 루프의 세번째 순환시, 제 1레지스터(R1)는 1만큼 감소되어 제로로 된다. 그러므로 프로그램이 "제로가 아니면 분기" 명령에 3번째 도달할때, 프로그램은 제 2레지스터 값을 메모리에 저장하는 프로그램의 제 5라인에 도달한다.
이와 같이 제 4라인의 분기명령에 의해서 분기, 분기, 미분기(TTN)의 분기기록이 생성되게 된다. 상기 프로그램이 재수행되면, 제 1레지스터(R1)에는 언제나 절대값 3이 로드되므로, 상기와 같은 분기는 상기 패턴을 항상 반복하게 되며, 이에 따라 프로그램의 제 4라인에 위치한 상기 분기명령에 의해 분기기록 "TTNTTNTTNTTN…"이 생성되게 된다.
정확한 분기예측 메카니즘은 상기 반복되는 분기패턴을 인식하고 이 인식한 반복되는 분기패턴을 이용하여 다음의 분기예측을 할 수 있다. 예를 들어, 예흐 및 패트가 공개한 2레벨 적응형 분기예측 메카니즘이 이상적으로 구현되면, 이 분기예측 메카니즘은 상기 패턴을 인식한 다음에, 이후에 발생되는 분기명령의 결과를 언제나 정확하게 예측하게 된다. 그러나 상기 분기예측 메카니즘이 디프 파이프라인을 가진 실제의 프로세서로 구현될때에는 문제가 생길 소지가 있다.
제2b도에는 제2a도의 프로그램의 명령을 프로세서로 수행할때 제1도의 명령파이프라인의 명령파이프라인 단계들의 내용이 예시되어 있다. 이 제2b도의 명령흐름에서는 명령이 하나씩 인출되고 또 파이프라인 수단이 존재하지 않는 것으로 가정하였다.
또, 상기 명령흐름에서는 분기예측 메카니즘이 상기 프로그램의 제 4라인에 존재하는 분기 명령에 의해선 "TTNTTNTTN …"의 분기기록을 생성한 것으로 가정하였는데, 이때 여기서 T는 분기를, N은 미분기를 나타내고, 그리고 가장우측에 있는 문자가 가장 최근에 발생한 분기 명령의 결과를 나타낸다.
제2b도에 예시되어 있는 제 1플럭사이클, 즉 클럭사이클(N)에서, 로드명령이 먼저 인출된다. 클럭사이클(H+1)에서, 로드명령은 서브인출단계 2로 이동하고 그리고 제 1서브인출단계에서는 프로그램의 제 2라인으로부터 Add명령어를 인출한다.
상기 프로세서는 를럭사이클(N+3) 이 종료될때까지 메모리로부터 명령을 명령파이프라인으로 순차적으로 로드시킨다.
클럭사이클(N+3)의 종료시에, 제 1서브인출단계에서는 다음의 명령을 로드하기 위해 분기 예측을 하여야 한다.
상기 분기의 분기기록 패턴은 "TTNTTNTTN …"을 포함하고 있으므로, 서브인출단계에서는 분기를 하여야 하는 것으로(정확하게) 예측하게 된다. 그래서 클럭사이클(N+4)에서, 명령어 인출유닛은 프로그램의 제 2라인으로 되돌아가서 Add명령어를 인출한다.
다시, 프로세서는 클럭사이클(N+6)이 종료될때까지 메모리로부터 명령어를 인출하기 위해서 명령파이프라인으로 진행한다.
클럭사이클(N+6)의 종료시에, 제 7서브인출단계에서는 다음 명령어의 인출을 위해서 분기 명령의 결과를 다시 예측하여야 한다. 클럭사이클(N+6)의 종료시에, 상기 첫번째 발생한 분기명령은 제 4파이프단계, 즉 해독 1에 도달해 있게 된다.
이와 같이 상기 첫번째 발생한 분기명령은 아직 완전히 분석된 상태가 아니다.
이것은 분기명령이 완전하게 분석될때까지 분기기록이 갱신될 수 없으므로 분기기록은 여전히 "TTNTTNTTN …"을 포함하고 있음을 의미한다.
서브인출 단계에서는 예전의 오래된 기록 "TTNTTNTTN …"을 이용해서 분기를 해야하는지를(정확하게) 다시 예측한다. 분기예측 메카니즘은 반복패턴중의 미분기가 취해진 후에, 취해진 제 1분기를 실제로 예측하였으므로 운이 좋은 것이다.
그래서, 클럭사이클(N+7)에서 명령어 인출유닛은 Add명령어를 인출하기 위해 제 2라인으로 다시 되돌아간다. 프로세서는 클럭사이클(N+9)이 종료될때까지, 다시 한번, 메모리로부터 명령어를 연속적으로 인출하여 명령파이프라인에 제공한다.
클럭사이클(N+9)의 종료시, 제 1서브인출단계에서는 다음의 명령어를 인출하기 위해서 분기명령의 결과를 다시 한번 예측하여야 한다. 클럭사이클(H+9)의 종료시, 첫번째 발생한 분기명령은 제 7파이프라인단계(스케줄링)에 도달해 있고 그리고 두 번째 발생한 분기명령은 제 4파이프단계(해독 1)에 도달해 있는 상태이다. 이와 같이, 클럭사이플(N+9)의 종료시에는 첫번째 발생한 분기명령과 두번째 발생한 분기명령중 어느 것도 완전하게 분석되지 않은 상태이다 이것은 분기기록이 여전히 "TTNTTNTTN …"을 포함하고 있음을 의미한다. 그러므로, 분기예측 메카니즘은 분기해야 하는 것으로 다시 예측하게 된다. 그러나, 이번에는 예측결과가 결국 부정확한 것으로 판명되기 때문에 앞서의 운은 끝나게 된다.
클릭사이클(N+10)에서, 명령어 인출유닛은 Add명령을 인출하기 위해서 다시 제 2라인으로 되돌아 간다. 결과적으로 프로세서가 예측이 잘못되었음을 알게될 때, Add명령과 다음의 명령어들이 파이프라인으로부터 제거될 필요가 있게 된다.
위와 같은 예에서 발생되는 문제점은 프로그램의 루프가 너무 짧아 분기기록이 필요한 만큼 신속하게 갱신되지 않는다는 것이다. 그러므로, 분기예측 메카니즘은 분기패턴을 반복하면서 동기를 유지할 수 없게 된다. 특히, 먼저 발생된 분기들의 결과는 이용불가능한데, 이는 분기명령이 아직 완전하게 분석되지 않은 단계에서 상기 먼저 발생된 분기가 여전히 명령파이프라인내에 존재하기 때문이다.
따라서, 분기명령의 결과를 보다 정확하게 예측하기 위해서는 여전히 파이프라인내에 존재하는 먼저 발생된 분기명령의 기록이 즉시 이용가능한 상태로 있어야 한다.
그러나, 분기명령의 결과가 완전하게 분석되지 알은 상태이므로, 디프 파이프라인 프로세서의 중간에 분기명령의 "실제" 분기기록을 제공할 수 없게 된다.
이 문제점을 극복하기 위하여, 본 발명에서 수행된 각 분기예측이 정확하다는 가정하에 각 분기의 "추측기록"을 저장해 둔다 분기예측의 정확도가 충분히 높으면, 이 기술에 의해 디프 파이프라인 프로세서내의 팝은 루프의 분기에 대한 분기예측의 정확도가 향상된다.
(추측 기록필드를 가진 분기목표버퍼)
제3도에는 추측기록이 저장되어 있는 분기 예측메카니즘의 분기목표버퍼 엔트리가 예시되어 있다. 이 제3도의 분기목표버퍼 엔트리의 맨 처음의 3개 필드에는 상기 분기예측메카니즘에 의해 이용되는 분기명령에 관한 정보가 저장되어 있다. 상기 분기목표버퍼 엔트리의 맨처음의 3개 필드에는 꼬리표주소 필드(21)이다. 이 꼬리표주소필드(21)에는 메모리내에서 분기명령이 있는 장소를 나타내는 주소가 저장되어 있다. 실제기록필드(22)에는 발생된, 완전하게 분석된 특정한 분기에 관한 분기기록이 저장되어 있다.
사전에 계산된 예측필드(23)에는 상기 실제기록필드(22)에 저장된 분기기록정보에 기초해서 다음번에 발생될 분기에 관한 분기예측이 저장되어 있다. 제3도의 사전에 계산된 추측예측필드(26)에 저장된 것은 실제분기기록필드(22)에 기초를 둔, 실제로 취해진 또는 취하지 않은 분기예측이다. 사전에 계산된 예측필드(23)는 분기예측을 하는데 걸리는 시간을 2사이클에서 1사이클로 줄이기 위해서 실제기록필드가 갱신될때마다 계산된다.
제3도의 분기목표버퍼엔트리에 있는 다음의 3개 필드에는 분기목표버퍼에 있는 각 분기에 관한 추측기록을 유지하고 이용하는데 필요한 정보가 포함되어 있다.
추측비트(24)는 본 발명의 분기예측메카니즘이 이런 특정한 분기목표버퍼엔트리를 이용하여 분기예측을 할때에 세트된다.
분기예측이 될때마다, 분기예측메카니즘은 추측기록필드(25)와 사전에 계산된 예측필드(23)를 갱신시킨다.
추측기록필드(25)는 갱신되어 분기예측 결과를 포함하게 된다. 사전에 계산된 추측예측(26)에는 상기 추측기록필드(25)에 저장되어 있는 추측분기기록에 기초한, 다음번에 발생되는 분기에 관한 분기예측이 저장되어 있다.
제3도의 분기목표버퍼엔트리의 나머지 필드에는 분기목표버퍼에서 흔히 이용되는 정보가 저장된다.
복귀비트필드(27)는 분기명령이 "서브루틴으로부터의 복귀" 명령일때 세트된다.
복귀비트필드(27)가 세트되어 있으면 분기예측 메카니즘은 복귀주소를 예측하는 데에만 사용되는 복귀스택버퍼(RSB)에서 값을 꺼낸다 분기예측 메카니즘이 분기를 취해야 하는 것으로 예측하게 되면, 목표주소필드(28)에는 명령어 인출유닛이 명령어를 인출하는 주소가 저정된다.
(분기목표버퍼의 추측기록필드를 갱신하기)
제4도에는 본 발명의 분기목표버퍼의 추측기록필드를 갱신하는 방법이 예시되어 있다.
추측기록을 갱신하는 과정은 제4도에 스텝(101)으로 나타낸 바와 같이 분기의 기록을 기초로 분기예측 메카니즘이 분기예측을 할때마다 개시된다.
본 발명에서는 분기기록을 기초로 하면 어떠한 종류의 분기예측 메카니즘이라도 사용가능하다. 그러므로 여기에서는 분기예측 과정에 대해서 정확하게 설명하지 않는다.
바람직한 실시 예에서는, 예흐 및 패트의 2레벨적응형 분기예측방법을 변경해서 사용한다. 스텝(102)에서 , 분기명령에 관한 추측기록이 존재하는지를 알아보기 위해 추측비트(24)의 상태를 테스트한다.
추측비트(24)가 세트되어 있지 않으면 이것은 추측기록필드(25)의 정보가 이전의 오래된 것이거나 전혀 설정된 적이 없음을 의미한다. 추측비트(24)가 세트되어 있지 않으면, 상기 방법은 스텝(103)으로 이동하고, 이에 추측비트(24)가 세트되어 이제 분기목표버퍼 엔트리에 추측기록이 포함되어 있음을 나타내게 된다. 다음에, 스텝(104)에서, 실제기록필드(22)가 추측기록필드(25)에 복사되어 추측기록을 위한 시작점이 제공되게 된다.
마침내, 스텝(104)에서는 사전에 계산된 예측(23)이 추측기록필드(25)에 시프트되어 "추측기록"의 제 1비트를 제공하게 되는데, 이는 결국에는 잘못된 것으로 판명되는 예측에 불과 하기 때문이다.
스텝(102)을 다시 참조하면, 여기서 추측비트(24)가 세트되어 있으면, 이는 이전의 분기 예측이 이 분기목표버퍼 엔트리를 위해 이루어졌고, 또 추측기록필드(25)가 그러한 이전의 예측에 관한 기록을 포함하고 있음을 의미한다. 그러므로, 추측비트(24)가 세트되어 있으면 갱신과정이 스텝(105)으로 진행되어 사전에 계산된 추측예측비트(26)가 추측기록필드(25)로 시프트되며, 이에 따라 추측기록필드(25)에 "추측기록"의 또다른 비트가 추가된다.
추측기록필드(25)가 갱신된 후에는, 상기 추측기록필드(25)에 있는 새로운 추측기록을 사용하여 상기 사전에 계산된 추측비트(26)를 다시 계산하여야 한다.
스텝(106)에서는 시스템은 분기가 조건분기인지 아니면 무조건 분기인지를 체크한다.
상기 분기가 무조건분기이면, 사전에 계산된 추측예측비트(26)가 스텝(108)에서 세트되는데, 이는 언제나 분기가 취해지기 때문이다.
분기가 무조건 분기이면, 분기예측 메카니즘은 새롭게 갱신된 기록필드(25)에 기초해서 분기예측을 계산한다.
다음에 새로운 분기예측은 스텝(107)에서 설명되는 바와 같이, 사전에 계산 예측추측비트필드(26)내에 놓여진다.
(분기목표버퍼의 실제기록필드를 갱신하기)
분기예측을 한후, 분기명령은 명령파이프라인을 따라 이동한다. 명령파이프라인의 끝근처에서는 예측이 행해진 분기명령은 사실상 완전하게 분석된 상태로 된다.
분기명령이 완전히 분석되면, 분기예측은 이 분석된 실제분기명령의 결과에 대해 검증된다.
분기예측이 부정확하면 프로세서는 정상적으로 동작한다.
그러나, 분기예측이 잘못되었으면 상기 프로세서는 잘못 예측된 분기의 다음에 위치하고 있는 명령파이프라인의 모든 명령을 클리어시켜야 하는데, 이는 명령어 인출유닛이 이들 명령을 로드시키지 말아야 하기 때문이다.
더구나, 분기가 잘못예측되면 분기목표버퍼의 추측기록은 잘못된 것이다.
그러므로, 분기에 관한 추측기록을 다른 추가적 분기예측을 하는데 사용하지 말아야 한다. 잘못된 예측의 검출후에 더 이상의 예측을 막기 위해서, 분기목표버퍼의 추측비트(24)는 제 3도에 예시된 바와 같이 클리어 된다.
제5도에는 분기명령이 결과적으로 완전하게 분석되었을 때에 수행되는 스텝이 예시되어 있다. 제5도의 스텝(301)에서, 분기명령은 완전하게 분석되며, 이에 따라 최종적으로 취해진 또는 취해지지 않은 분기결과가 제공된다.
다음에, 스텝(302)에서, 상기 분석된 분기결과는 실제기록필드(22)로 시프트된다.
스텝(303)에서, 분기의 종류가 검사된다. 분기가 무조건 분기이면 사전에 인출된 예측비트(23)가 스텝(305)에서 나타낸 바와 같이 세트된다. 분기가 무조건 분기이면, 분기예측 메카니즘은 스텝(304) 에 나타낸 바와 같이, 실제기록필드(22)의 실제기록을 이용하여 분기예측을 계산하고 이 예측을 사전에 계산된 예측비트(23)에 놓아둔다. 마지막으로 스텝(306)에서 상기 분기에 대한 분기예측이 분석된 실제분기결과와 비교된다.
분기예측이 정확하면, 갱신은 완료되고 프로세서는 정상적으로 동작한다. 그러나 예측이 정확하면 추측비트(24)는 추측기록필드(25)의 부정확한 추측기록을 이용하여 더이상의 예측이 진행되지 않도록 클리어 된다.
(추측기록필드에 기초해서 분기예측하기)
제6도에는 추측기록필드를 가지고 있는 분기목표버퍼에 기초해서 분기예측 메카니즘이 분기예측을 하기 위해 어떻게 추측기록정보를 이용하는지가 예시되어 있다. 제 1스텝, 즉 스텝(201)에서는 분기목표버퍼 엔트리가 존재하는지를 알아내기 위해 분기목표버퍼를 탐색한다. 분기목표버퍼엔트리가 없으면, 분기예측을 하는데 분기목표버퍼를 이용할 수없게 된다. 그러므로, 분기예측 메카니즘은 스텝(203)의 정적분기예측(static branch prediction)을 하여야 한다.
분기목표버퍼가 히트되면, 분기예측 메카니즘은 스텝(204)에서 적합한 분기목표버퍼엔트리에 있는 복귀비트(27)의 상태를 체크한다. 이 복귀비트(27)가 세트되어 있으면, 이는 분기명령이 "서브루틴으로부터의 복귀" 분기명령임을 의미하므로, 분기예측 메카니즘은 스텝(205)의 복귀주소를 예측하는 데에만 사용되는 복귀스택버퍼로부터 예측을 하게 된다.
복귀비트(27)가 세트되어 있지 않으면, 분기예측 메카니즘은 스텝(206) 에서 분기목표버퍼 엔트리에 있는 추측비트(24)의 상태를 체크한다. 이 테스트로 인해, 분기예측 메카니즘이 사전에 계산된 추측예측비트(26)나 사전에 계산된 통상적인 예측비트(23)를 사용해야 하는지가 결정되게 된다.
추측비트(24)가 세트되어 있으면, 사전에 계산된 추측예측비트(26)는 스텝(210)에 나타낸바와 같이 분기예측을 선택하는데 사용되어진다. 사전에 계산된 추측예측비트(26)가 세트되어 있으면, 분기예측 메카니즘은 스텝(212)에 나타낸 바와 같이 목표주소로 점프해야하는 것으로 예측하게 되며; 그렇지 않으면 분기예측 메카니즘은 스텝(211)으로 진행해야 하는 것으로 예측하게 된다.
추측비트(24)가 세트되어 있지 않으면, 보통의 추측예측비트(23)는 스텝(207)에서와 같이 분기예측을 선택하는데 사용되어진다. 추측예측비트(23)가 세트되어 있으면, 분기예측 메카니즘은 스텝(208)에 나타낸 바와 같이 목표주소로 점프해야 하는 것으로 예측하게 되며; 그렇지 않으면 분기예측 메카니즘은 스텝(209)으로 진행해야 하는 것으로 예측하게 된다.
분기예측을 한후, 명령어 인출유닛은 예측된 명령어 스트림을 따라 명령어를 인출하게 된다. 또, 분기예측 메카니즘은 스텝(213)과 같이 추측기록필드를 갱신하기 위해 새로운 분기예측을 사용한다.
제7도에는 제2a도의 프로그램이 추측기록을 이용하는 프로세서내에서 동작될때의 제1도의 명령파이프라인의 명령파이프라인 단계의 내용이 예시되어 있다.
제7도의 명령흐름에서는 명령어는 하나씩 인출되고, 그리고 파이프라인이 존재하지 않으면, 또 분기예측 메카니즘이 프로그램의 제 5라인에 있는 분기명령에 의해서 "TTNTTNTTN …" 분기기록을 생성한다고 가정한다.
맨처음의 4개 클럭사이클(N∼N+3)의 경우, 프로세서는 제 7도에 나타낸 바와같이 명령어를 명령파이프라인에 연속적으로 로드시킨다. 그러나, 클럭사이클(N+3) 의 종료시에제 1서브인출단계에서는 다음 명령어의 로드를 위해 분기예측을 하여야 한다. 상기 분기의 분기기록패턴은 "TTNTTNTTN …"을 포함하고 있으므로, 서브인출단계에서는 분기하여야 하는 것으로(정확하게) 예측한다. 이때, 분기엔트리의 추측비트는 세트될 것이고, "분기해야한다" 는 예측은 추측기록내부로 시프트되어질 것이다.
따라서, 추측기록은 "TTNTTNTTNT…"를 포함하게 될 것이다. 분기예측 메카니즘이 분기되어야 하는 것으로 예측하였으므로, 명령인출유닛은 클럭사이클(N+4)에서 프로그램의 제 2라인으로 복귀하여 Add명령어를 인출한다.
다음에, 프로세서는 클럭사이클(N+6)의 종료시까지 메모리르부터 명령파이프라인으로 명령어를 연속적으로 인출하게 된다.
클럭사이클(N+6)의 종료시, 제 1서브인출단계에서는 다음의 명령어를 인출할 수 있도록 분기명령의 결과를 다시 예측하여야 한다. 클럭사이클(N+6)의 종료시, 첫 번째 발생된 분기명령은 제 4파이프라인(해독 1)에 도달한다. 이와 같이 첫 번째 발생된 분기명령은 아직 완전히 분석되지 않았으므로, 분기기록은 갱신되지 않은 상태이다. 그러나, 추측기록은 예측된 분기를 사용하여 갱신되었으므로, 이제 추측분기기록은 "TTNTTNTTNT…"를 포함하고 있게 된다. 추측비트가 세트되어 있으므로, 서브인출단계에서 분기예측 메카니즘은 "TTNTTNTTNT…", 즉 분기를 취해야 하는 것으로 예측하는 추측기록을 이용한다.
그래서 클럭사이클(N+7) 에서 명령어 인출유닛은 Add명령어를 인출하기 위해서 제 2라인으로 다시 되돌아간다. 다음에 프로세서는 계속 진행하여 클럭사이클(N+9)이 종료될때까지 메모리에서 명령어를 순차로 인출하여 명령파이프라인에 제공한다.
클럭사이클(N+9)의 종료시에 다음의 명령어를 인출하기 위해 제 1서브인출 단계에서는 분기명령의 결과를 다시 한번 예측하여야 한다. 클럭사이클(N+9)의 종료시에, 첫번째 발생한 분기명령은 제 7파이프단계(스케줄)에 도달해 있고 그리고 두번째 발생된 분기명령은제 4파이프단계(해독 1)에 도달해 있는 상태이다. 이와 같이 클럭사이클(N+9)의 종료시에는 첫번째 발생된 분기명령과 두번째 발생된 분기명령중에서 어느 것도 완전하게 분석되지 않은 상태이다. 이것은 분기기록이 여전히 "TTNTTNTTN …"을 포함하고 있음을 의미한다. 그러나, 추측분기기록은 "TTNTTNTTNTT …"을 포함하고 있다. 추측비트가 세트되어 있으므로, 분기예측 메카니즘은 분기를 취하지 않아야 하는 것으로(정확하게) 예측을 하게 된다.
그래서 클럭사이클(N+10)에서, 명령어 인출유닛은 분기명령의 다음에 위치한 저장 명령어를 인출한다. 제7도의 명령어 도표로부터 알 수 있는 바와같이, 추측기록을 이용하는 본 발명의 분기예측 메카니즘은 짧은 루프에 있는 분기의 결과를 정확하게 예측하게 된다.
제8도에는 전형적인 컴퓨터 시스템에 사용되어진 본 발명이 예시되어 있다.
이 본 발명은 프로세서에 내장되어 있는 분기예측장치로 이루어져 있다. 이 분기예측장치는 캐시메모리나 메인메모리로부터 상기 프로세서에 적합한 명령어를 인출하는데 사용되어진다.
이제까지, 추측기록을 저장하는 분기목표버퍼를 가지고 있는 분기예측 메카니즘에 대해서 설명해왔다. 추측기록은 디프 파이프라인을 가진 프로세서에서 수행되는 짧은 루프에 있어서의 분기예측에 대한 정확도를 향상시킨다. 그리고, 본 발명의 범위를 벗어나지 않고 본 발명의 수단 및 구성요소의 배열을 당업자가 변경하거나 수정하는 것이 가능하도록 의도되었다.
제1도는 명령어처리를 위한 디프 파이프라인(deep pipeline)의 블럭도,
제2a도는 짧은 루프를 가진 간단한 의사어셈블리어 프로그램,
제2b도는 한번에 1개 명령어를 인출하고 또 추측기록(speculative history)을 이용하지 않는 시스템에서 제1도의 디프명령 파이프라인 처리되는 제2a도의 프로그램의 명령어도표,
제3도는 추측기록을 이용하는 분기예측메카니즘의 분기목표버퍼(Branch Target Buffer) 엔트리의 블럭도,
제4도는 분기예측을 할때에 분기목표버퍼의 추측기록필드를 갱신하는데 필요한 스텝을 나타내는 흐름도,
제5도는 프로세서에 의해서 분기가 완전하게 분석될때에 분기목표버퍼의 적절한 필드를 갱신하는데 필요한 스텝을 나타내는 흐름도,
제6도는 분기목표버퍼의 추측기록필드에 기초해서 분기예측을 하는데 필요한 스텝을 나타내는 흐름도,
제7도는 추측기록에 기초해서 예측을 하는 시스템에서 제1도의 디프명령 파이프라인 처리되는 제2a도의 프로그램의 명령어도표,
제8도는 본 발명의 기술이 채용된 컴퓨터시스템의 블럭도.

Claims (5)

  1. 메모리에 연결된 컴퓨터 프로세서에서, 인출할 프로세서 명령어의 스트림을 예측하기 위한 분기예측 장치에 있어서, 상기 분기 예측 장치는,
    분기예측 엔트리의 각각이 연관된 분기명령어를 상기 프로세서 명령어의 스트림에 갖고있는, N개의 분기예측 엔트리로 이루어 진 분기 목표 버퍼; 와
    추측 비트가 클리어되었을 때 실제 분기 기록 필드를 사용하여 분기예측을 행하고, 상기 추측 비트가 세트되었을 때 추측 분기 기록 필드를 사용하여 분기예측을 행하는 동적분기예측 회로를 포함하고;
    상기 N개의 분기예측 엔트리의 각각은,
    상기 연관된 분기 명령어의 마지막 K번 발생에 대한 최종 분석된 분기결과를 저장하는 상기 실제 분기 기록 필드;
    상기 분기 예측 장치가 상기 연관된 분기 명령어를 위한 분기예측을 행할 때 상기 분기예측 장치가 설정하는 상기 추측비트;
    상기 연관된 분기 명령어의 최근 발생에 대한 분기예측을 포함하는 추측 분기 기록의 K비트를 저장하는 상기 추측분기 기록 필드; 및
    예측된 상기 연관된 분기 명령어가 취해졌을 때 상기 컴퓨터 프로세서가 인출해야 할 장소를 식별하는 목표 주소로 이루어지는 목표 주소 필드를 포함하는 것을 특징으로 하는 분기 예측 장치.
  2. 메모리에 연결된 컴퓨터 프로세서에서, 인출할 프로세서 명령어의 스트림을 예측하기 위한 분기예측 장치에 있어서, 상기 분기 예측 장치는,
    분기예측 엔트리의 각각이 연관된 분기명령어를 상기 프로세서 명령어의 스트림에 갖고 있는, N개의 분기예측 엔트리로 이루어 진 분기 목표 버퍼수단; 과
    추측 비트가 클리어되었을 때 실제 분기 기록 수단을 사용하여 분기예측을 행하고, 그렇지 않으면 상기 추측 비트가 세트되었을 때 추측 분기 기록 수단을 사용하여 분기예측을 행하는 동적 분기예측 수단을 포함하고;
    상기 N개의 분기예측 엔트리의 각각은,
    상기 연관된 분기 명령어의 마지막 K번 발생에 대한 최종 분석된 분기결과를 저장하는 상기 실제 분기 기록 수단;
    상기 분기 예측 장치가 상기 연관된 분기 명령어를 위한 분기예측을 행할 때 상기 분기예측 장치가 설정하는 상기 추측비트 수단;
    상기 연관된 분기 명령어의 최근 발생에 대한 분기예측을 포함하는 추측 분기 기록의 K비트를 저장하는 상기 추측 분기 기록 수단; 및
    예측된 상기 연관된 분기 명령어가 취해졌을 때 상기 컴퓨터 프로세서가 인출해야 할 장소를 식별하는 목표 주소 수단으로 이루어지는 것을 특징으로 하는 분기 예측 장치.
  3. 시스템 버스;
    상기 시스템 버스에 연결된 주 메모리; 및
    컴퓨터 프로세서를 포함하고,
    상기 컴퓨터 프로세서는,
    인출할 프로세서 명령어의 스트림을 예측하고, 분기예측 엔트리의 각각이 상기 프로세서 명령어의 스트림에 연관된 분기명령어를 갖고 있는, N개의 분기예측 엔트리로 이루어진 분기 목표 버퍼; 및
    추측 비트가 클리어되었을 때 실제 분기 기록 회로를 사용하여 분기예측을 행하고, 상기 추측 비트가 세트되었을 때 추측 분기 기록 회로를 사용하여 분기예측을 행하는 동적 분기예측 회로를 포함하고,
    상기 N개의 분기예측 엔트리의 각각은,
    상기 연관된 분기 명령어의 마지막 K번 발생에 대한 최종 분석된 분기결과를 저장하는 상기 실제 분기 기록 필드;
    상기 연관된 분기 명령어를 위한 분기예측이 행해졌을 때 셋트되는 상기 추측비트;
    상기 연관된 분기 명령어의 최근 발생에 대한 분기예측을 포함하는 추측분기 기록의 K비트를 저장하는 상기 추측분기 기록 필드; 및
    예측된 상기 연관된 분기 명령어가 취해졌을 때 상기 컴퓨터 프로세서가 인출해야 할 장소를 식별하는 목표 주소로 이루어지는 것을 특징으로 하는 컴퓨터 시스템.
  4. 시스템 버스;
    상기 시스템 버스에 연결된 주 메모리; 및
    컴퓨터 프로세서를 포함하고,
    상기 컴퓨터 프로세서는,
    분기예측 엔트리의 각각이 상기 프로세서 명령어의 스트림에 연관된 분기명령어를 갖고 있는, N개의 분기예측 엔트리로 이루어 진 분기 목표 버퍼; 및
    추측 비트가 클리어되었을 때 실제 분기 기록 수단을 사용하여 분기예측을 행하고, 상기 추측 비트가 세트되었을 때 추측 분기 기록 수단을 사용하여 분기예측을 행하는 동적 분기예측 수단을 포함하고,
    상기 N개의 분기예측 엔트리의 각각은,
    상기 연관된 분기 명령어의 마지막 K번 발생에 대한 최종 분석된 분기결과를 저장하는 상기 실제 분기 기록 수단;
    상기 연관된 분기 명령어를 위한 분기예측이 행해졌을 때 셋트되는 추측비트 수단;
    상기 연관된 분기 명령어의 최근 발생에 대한 분기예측을 포함하는 추측분기 기록의 K비트를 저장하는 상기 추측 분기 기록 수단; 및
    상기 연관된 분기 명령어가 취해졌을 때 상기 컴퓨터 프로세서가 인출해야 할 장소를 식별하는 목표 주소 수단으로 이루어지는 것을 특징으로 하는 컴퓨터 시스템.
  5. 메모리에 연결되고 N개 분기예측 엔트리로 이루어지는 분기 목표 버퍼를 갖는 컴퓨터 프로세서에서, 인출할 프로세서 명령어의 스트림을 예측하는 방법에 있어서,
    상기 분기 목표 버퍼내에 있는, 각각이 연관된 분기 명령어를 갖는 상기 N개 분기예측 엔트리중의 하나에 분기 목표 주소를 저장하는 단계;
    상기 연관된 분기 명령어의 최근 K 발생에 대해 완전히 분석된 분기 결과로 이루어지는 실제 분기 기록을 상기 분기 목표 버퍼의 상기 N개 분기 예측 엔트리의 각각에 저장하는 단계;
    상기 연관된 분기 명령어의 최근 발생에 대한 분기 에측을 포함하는 추측 분기 기록을 상기 분기 목표 버퍼의 상기 N개 분기 예측 엔트리의 각각에 저장하는 단계;
    추측 비트를 상기 분기 목표 버퍼의 상기 N개 분기 예측 엔트리의 각각에 저장하는 단계;
    분기 예측 회로가 상기 연관된 분기 명령어에 대한 분기예측을 행할 때 상기 추측 비트를 설정하는 단계; 및
    상기 추측 비트가 클리어되었을 때 상기 실제 분기 기록을 사용하여 분기 명령어 결과를 예측하고, 그렇지 않으면 상기 추측 비트가 셋트되어있을 때 상기 추측 분기 기록을 사용하여 분기 명령어 결과를 예측하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1019950705082A 1993-05-14 1994-04-08 분기목표버퍼의추측기록메카니즘 KR100310581B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US6201293A 1993-05-14 1993-05-14
US08/062012 1993-05-14
PCT/US1994/003897 WO1994027210A1 (en) 1993-05-14 1994-04-08 Speculative history mechanism in a branch target buffer

Publications (1)

Publication Number Publication Date
KR100310581B1 true KR100310581B1 (ko) 2001-12-17

Family

ID=22039646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950705082A KR100310581B1 (ko) 1993-05-14 1994-04-08 분기목표버퍼의추측기록메카니즘

Country Status (4)

Country Link
US (1) US5584001A (ko)
JP (1) JPH09500989A (ko)
KR (1) KR100310581B1 (ko)
SE (1) SE515698C2 (ko)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5918046A (en) * 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3569014B2 (ja) * 1994-11-25 2004-09-22 富士通株式会社 マルチコンテキストをサポートするプロセッサおよび処理方法
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5740417A (en) * 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5909573A (en) * 1996-03-28 1999-06-01 Intel Corporation Method of branch prediction using loop counters
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5901307A (en) * 1996-07-22 1999-05-04 International Business Machines Corporation Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
JPH1091441A (ja) * 1996-09-13 1998-04-10 Sanyo Electric Co Ltd プログラム実行方法およびその方法を利用した装置
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5857098A (en) * 1997-06-24 1999-01-05 Samsung Electronics Co., Ltd. Branch instruction prediction apparatus
US5941985A (en) * 1997-06-24 1999-08-24 Sun Microsystems, Inc. Branch instruction prediction method
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units
US6493821B1 (en) 1998-06-09 2002-12-10 Intel Corporation Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US6189091B1 (en) * 1998-12-02 2001-02-13 Ip First, L.L.C. Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
JP3513038B2 (ja) * 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6484256B1 (en) * 1999-08-09 2002-11-19 International Business Machines Corporation Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
JP2003525493A (ja) * 2000-02-28 2003-08-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マルチコマンド命令語を有するデータプロセッサ
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US6857060B2 (en) 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions
US6954849B2 (en) * 2002-02-21 2005-10-11 Intel Corporation Method and system to use and maintain a return buffer
US6950925B1 (en) * 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US7337271B2 (en) * 2003-12-01 2008-02-26 International Business Machines Corporation Context look ahead storage structures
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US8612731B2 (en) 2009-11-06 2013-12-17 International Business Machines Corporation Branch target buffer for emulation environments
US8533422B2 (en) 2010-09-30 2013-09-10 Intel Corporation Instruction prefetching using cache line history
US9122486B2 (en) 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
WO2012093489A1 (ja) 2011-01-07 2012-07-12 富士通株式会社 演算処理装置および分岐予測方法
US20130283023A1 (en) * 2012-04-18 2013-10-24 Qualcomm Incorporated Bimodal Compare Predictor Encoded In Each Compare Instruction
US10127044B2 (en) * 2013-10-25 2018-11-13 Advanced Micro Devices, Inc. Bandwidth increase in branch prediction unit and level 1 instruction cache
US10754781B2 (en) 2017-02-27 2020-08-25 International Business Machines Corporation Heuristic method to control fetching of metadata from a cache hierarchy
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US11698789B2 (en) * 2020-10-12 2023-07-11 Microsoft Technology Licensing, Llc Restoring speculative history used for making speculative predictions for instructions processed in a processor employing control independence techniques

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930005769B1 (ko) * 1989-10-16 1993-06-24 가부시끼가이샤 도시바 분기 제어회로

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JP2722523B2 (ja) * 1988-09-21 1998-03-04 日本電気株式会社 命令先取り装置
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930005769B1 (ko) * 1989-10-16 1993-06-24 가부시끼가이샤 도시바 분기 제어회로

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE Publication, Shien_Tai et al., 73-83페이지(1992.10) *

Also Published As

Publication number Publication date
SE9503951L (sv) 1995-12-29
SE9503951D0 (sv) 1995-11-08
JPH09500989A (ja) 1997-01-28
US5584001A (en) 1996-12-10
SE515698C2 (sv) 2001-09-24

Similar Documents

Publication Publication Date Title
KR100310581B1 (ko) 분기목표버퍼의추측기록메카니즘
KR100234648B1 (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
US6898699B2 (en) Return address stack including speculative return address buffer with back pointers
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
JP5198879B2 (ja) ループ末尾に置かれた分岐により分岐履歴レジスタの更新を抑制すること
US6263427B1 (en) Branch prediction mechanism
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US5276882A (en) Subroutine return through branch history table
US6247122B1 (en) Method and apparatus for performing branch prediction combining static and dynamic branch predictors
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JP2004533695A (ja) 分岐目標を予測する方法、プロセッサ、及びコンパイラ
JPH05143336A (ja) デジタル・コンピユータ及び分岐命令実行方法
KR20010074978A (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
JPH1069385A (ja) 命令ループを推論的に実行するプロセッサ及び方法
JPH0628184A (ja) ブランチ予測方法及びブランチプロセッサ
US5761490A (en) Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US20040044884A1 (en) Evaluation of condition codes in a data processing apparatus
EP3166015A1 (en) Fetch ahead branch target buffer
US5822577A (en) Context oriented branch history table
KR100276138B1 (ko) 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서
US8521999B2 (en) Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US5926634A (en) Limited run branch prediction
US7130991B1 (en) Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme
GB2291513A (en) Speculative history field in a branch target buffer.

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: 20100907

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee