KR100270003B1 - 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법 - Google Patents

향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법 Download PDF

Info

Publication number
KR100270003B1
KR100270003B1 KR1019970004030A KR19970004030A KR100270003B1 KR 100270003 B1 KR100270003 B1 KR 100270003B1 KR 1019970004030 A KR1019970004030 A KR 1019970004030A KR 19970004030 A KR19970004030 A KR 19970004030A KR 100270003 B1 KR100270003 B1 KR 100270003B1
Authority
KR
South Korea
Prior art keywords
branch
prediction
instruction
instructions
branch prediction
Prior art date
Application number
KR1019970004030A
Other languages
English (en)
Other versions
KR970071251A (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 KR970071251A publication Critical patent/KR970071251A/ko
Application granted granted Critical
Publication of KR100270003B1 publication Critical patent/KR100270003B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Eye Examination Apparatus (AREA)
  • Image Processing (AREA)

Abstract

선택된 분기 예측 기법을 이용하여 분기 인스트럭션을 사변적으로 실행하는 프로세서 및 방법이 개시된다. 프로세서는 분기 인스트럭션을 실행하기 위한 분기 처리 유닛을 포함하는, 인스트럭션을 실행하기 위한 하나 이상의 실행 유닛을 구비한다. 분기 처리 유닛은 다수의 분기 예측 기법중 하나를 선택하기 위한 선택 로직과, 선택된 분기 예측 기법을 사용하여 조건부 분기 인스트럭션의 결정을 예측하기 위한 분기 예측 유닛을 포함한다. 분기 처리 유닛은 또한 예측에 근거하여 조건부 분기 인스트럭션을 사변적으로 실행하기 위한 실행 설비를 구비한다. 상기 예측의 결과에 근거하여, 선택 로직은 분기 예측의 정확도가 향상되도록 후속적인 조건부 분기 인스트럭션을 예측하기 위해 분기 예측 기법을 선택한다. 한 실시예에서, 복수의 분기 예측 기법은 정적 분기 예측 및 동적 분기 예측을 포함한다.

Description

향상된 분기 예측 기법을 사용하는 프로세서 및 그 실행 방법
본 발명은 전반적으로 데이타 처리를 위한 방법 및 시스템에 관한 것으로, 특히, 분기 인스트럭션(branch instructions)을 실행하기 위한 프로세서 및 방법에 관한 것이다. 보다 구체적으로, 본 발명은 복수의 분기 예측 기법중 선택된 하나의 기법을 이용하여 조건부 분기 인스트럭션을 사변적으로(speculatively) 실행하기 위한 프로세서 및 방법에 관한 것이다.
현재 기술 수준의 슈퍼스칼라 프로세서는 전형적으로 인스트럭션을 저장하기 위한 인스트럭션 캐쉬(an instruction cache)와, 이 인스트럭션 캐쉬로부터 실행을 위해 인출된 인스트럭션을 일시적으로 저장하기 위한 인스트럭션 버퍼(an instruction buffer)와, 순차적인 인스트럭션을 실행하기 위한 하나 이상의 실행 유닛(one or more execution units)과, 분기 인스트럭션을 실행하기 위한 분기 처리 유닛(a branch processing unit;BPU)과, 인스트럭션 버퍼로부터 특정의 실행 유닛으로 순차적인 인스트럭션을 디스패치하기 위한 디스패치 유닛(a dispatch unit)과, 실행은 종료(finished)되었으나 완료(completed)되지 않은 순차 인스트럭션을 일시적으로 저장하기 위한 완료 버퍼(a completion buffer)를 포함한다.
슈퍼스칼러 프로세서의 분기 처리 유닛에 의해 실행되는 분기 인스트럭션은 조건부 분기 인스트럭션 또는 무조건부 분기 인스트럭션으로서 분류될 수 있다. 무조건부 분기 인스트럭션은 다른 인스트럭션을 실행하므로써 공급되는 조건에 관계없이 순차적인 경로로부터 지정된 목표 실행 경로로 프로그램 실행 흐름을 바꾸는 분기 인스트럭션이다. 따라서, 무조건부 분기 인스트럭션에 의해 지정된 분기는 항상 취해진다(taken). 이와 달리, 조건부 분기 인스트럭션은 다른 인스트럭션의 실행에 의해 공급되는 조건에 따라 프로그램 흐름중에 지정된 분기가 취해질 수도 있고 취해지지 않을 수도 있는 분기 인스트럭션이다. 조건부 분기 인스트럭션은, 분기가 의존하는 조건이 조건부 분기 인스트럭션이 분기 처리 유닛에 의해 평가(evaluate)될 때에 이용가능한지의 여부에 따라 결정형(resolved) 또는 미결정형(unresolved)으로서 또한 분류될 수 있다. 결정형 조건부 분기 인스트럭션이 의존하는 조건은 실행에 앞서 알려지므로, 결정형 조건부 분기 인스트럭션은 전형적으로 실행될 수 있으며, 목표 실행 경로내의 인스트럭션은 순차적인 인스트럭션의 실행시 전형적으로 거의 또는 전혀 지연되지 않고 인출될 수 있다. 한편, 미결정형 조건부 분기는 순차적인 인스트럭션의 인출이 분기가 의존하는 조건이 이용가능하게 될 때까지 또는 분기가 결정될 때까지 지연될 경우, 중요한 성능의 저해를 가져올 수 있다.
그러므로 성능을 향상시키기 위해 몇몇 프로세서는 지정된 분기가 취해질 것인지 아닌지의 여부를 예측하므로써 미결정형 분기 인스트럭션을 사변적으로(speculatively) 실행한다. 예측 결과를 이용함으로써 인출기(fetcher)는 분기의 결정 이전에 사변적인 실행 경로내의 인스트럭션을 인출할 수 있으므로, 분기가 올바르게 예측된 것으로 결정되는 경우 실행 파이프라인중에서의 지연을 방지할 수 있다.
분기 예측 설비를 구비한 프로세서는 전형적으로 정적 또는 동적 분기 예측 기법을 이용한다. 정적 분기 예측의 가장 간단한 구현예중 하나는 모든 후향 분기(backward-going branches)는 취해지고 모든 전향 분기(forward-going branches)는 취해지지 않는 것으로 가정하는 것이다. 정적 분기 예측의 다른 구현예에서는, 프로그램내의 각 분기 인스트럭션이 Y비트와 연관되며, 이 Y비트는 분기가 취해질 것으로 예측되어야 하는지의 여부를 분기 처리 유닛에게 표시하기 위한 프로그램 컴파일러의 프로화일 동작에 따라 세트된다. 따라서, 컴파일러는, 컴파일링하는 동안 프로그램으로부터 수집된 정보에 기초하여, 각 분기가 사변적으로 실행될 경우 취해질 것으로 또는 취해지지 않을 것으로 예측되어야 할지의 여부를 지시한다. 정적 분기 예측에서 이용되는 소프트웨어 기반 접근법과 달리, 동적 분기 예측은 특정 분기 인스트럭션의 결정을 분기 히스토리 테이블(Branch History Table;BHT)에 기록하여 후속적인 분기를 예측하기 위해 이 테이블에 저장된 이전의 결정값을 이용한다.
정적 분기 예측이나 동적 분기 예측의 정확도는, 정적 예측의 경우 평균 60%∼70%이고, 동적 예측의 경우 평균 90%∼97%로 꽤 높지만, 단일의 분기 예측 기법만을 사용하게 되면, 특정의 인스트럭션 시나리오가 발생할 경우 심각한 성능 저해를 초래할 수 있다. 예를 들면, 전향 분기는 취해지지 않고 후향 분기는 취해지는 것으로 예측하는 정적 예측 기법을 사용하면, 전향 분기만이 항상 취해지는 인스트럭션 시퀀스에 대해 100% 오류예측(misprediction)을 초래하게 된다. 이러한 특정 형태의 코드 시퀀스는 동적 분기 예측에 이상적이지만, 정적 분기 예측은 다른 코드 시퀀스에 대해 동적 분기 에측에 비해 우수하다. 예를 들면, 교번하는 계수 인덱스(alternating count indices)를 이용하는 루프내에 포함된 분기는 동적 분기 예측을 이용하는 경우 100%를, 정적 분기 예측을 이용하는 경우 50%를 오류예측하게 된다. 불규칙 코드에 기인한 동적 분기 예측에 있어서의 문제점외에, 프로세서의 콜드 스타트 이후에는 분기 히스토리를 이용할 수 없으므로 동적 분기 예측을 사용하게 되면 형편없는 예측 정확도를 초래할 수 있다. 마찬가지로, 동적 분기 예측을 이용하는 프로세서는, 프로세서가 분기 인스트럭션 에일리어싱(aliasing)에 영향받기 쉽게 단지 작은 분기 히스토리 테이블을 유지할 경우 나쁜 예측 정확도를 가질 수 있다.
각 형태의 분기 예측에 내재한 단점을 극복하기 위해 몇몇 프로세서는 모드 비트(a mode bit)를 제공하며, 분기 처리 유닛은 이 모드 비트의 상태에 따라 정적 또는 동적 분기 예측 메카니즘을 이용하게 된다. 그러나 이러한 프로세서도 분기 처리 유닛이 분기 인스트럭션의 특정 사례에 대해 어느 분기 예측 기법이 이용되어야 할지를 지능적으로 선택하도록 하지는 못한다. 결과적으로, 복수의 분기 예측 기법중 하나를 지능적으로 선택할 수 있는, 조건부 분기 인스트럭션을 사변적으로 실행하기 위한 프로세서 및 방법이 요구된다.
그러므로 본 발명의 첫번째 목적은 데이타 처리를 위한 개선된 방법 및 시스템을 제공하는 것이다.
본 발명의 다른 목적은 분기 인스트럭션을 실행하기 위한 개선된 프로세서 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 복수의 분기 예측 기법중 선택된 하나를 이용하여 조건부 분기 인스트럭션을 사변적으로 실행하기 위한 개선된 프로세서 및 방법을 제공하는 것이다.
이상의 본 발명의 목적은 이후 설명되는 바와 같이 성취된다. 선택된 분기 예측 기법을 이용하여 분기 인스트럭션을 사변적으로 실행하는 프로세서 및 방법이 개시된다. 이 프로세서는 분기 인스트럭션을 실행하기 위한 분기 인스트럭션 유닛을 포함하는, 인스트럭션을 실행하기 위한 하나 이상의 실행 유닛을 구비한다. 분기 처리 유닛은 복수의 분기 예측 기법중 하나를 선택하는 선택 로직과 선택된 분기 예측 기법을 이용하여 조건부 분기 인스트럭션의 결정을 예측하는 분기 예측 유닛을 포함한다. 분기 처리 유닛은 또한 이러한 예측에 기초하여 조건부 분기 인스트럭션을 사변적으로 실행하기 위한 실행 설비를 포함한다. 예측 결과에 기초하여, 선택 로직은 후속하는 조건부 분기 인스트럭션을 예측하는 분기 예측 기법을 선택하므로써 분기 예측 정확도가 향상된다. 일실시예에서, 이들 복수의 분기 예측 기법은 정적 분기 예측 및 동적 분기 예측을 포함한다.
이상의 목적은 물론 예시적인 실시예의 부가적인 목적, 특징 및 장점은 이후 상세히 기재된 설명에서 자명하게 된다.
도 1은 분기 처리 유닛을 포함하는 프로세서의 예시적인 실시예의 블럭도
도 2는 도 1내에 예시된 분기 처리 유닛의 보다 상세한 블럭도
도 3은 도 2에 도시된 분기 처리 유닛의 분기 히스토리 테이블의 대표적인 도시예
도 4는 사변적으로 실행된 조건부 분기 인스트럭션의 결과를 예측하는데 이용되는 분기 예측 기법을 선택하기 위해 도 2에 도시된 분기 처리 유닛에 의해 이용되는 방법의 상태도
도 5는 도 1에 도시된 예시적인 실시예에 따라 분기 인스트럭션을 실행하기 위한 방법을 예시하는 흐름도
*도면의 주요부분에 대한 부호의 설명
19 : 인스트럭션 큐 66 : 선택 로직
64 : 분기 결정부 68 : 분기 히스토리 테이블
도 1을 참조하면, 전반적으로 참조부호(10)로 표시된 프로세서의 예시적인 실시예의 블럭도가 도시되며, 이 프로세서는 본 명세서에 첨부된 특허 청구 범위내에 기재된 본 발명에 따라 정보를 처리한다. 도시된 실시예에서, 프로세서(10)는 단일의 집적 회로 슈퍼스칼러 마이크로프로세서로 이루어진다. 따라서, 이후 설명되는 바와 같이, 프로세서(10)는 다양한 실행 유닛, 레지스터, 버퍼, 메모리, 다른 기능 유닛을 포함하며, 이들은 모두 집적 회로로 형성된다. 프로세서(10)는 IBM 마이크로일렉트로닉사로부터 입수가능한 것으로서 축소 인스트럭션 세트 컴퓨터처리(reduced instruction set computing;RISC) 기법에 따라 동작하는 PowerPCTM 계열 마이크로프로세서중 하나로 이루어지는 것이 바람직하지만, 당분야에 숙련된 자라면 다른 적절한 프로세서가 이용될 수 있음을 알 것이다. 도 1에 도시된 바와 같이, 프로세서(10)는 내부의 버스 인터페이스 유닛(bus interface unit;BIU)(12)을 통해 시스템 버스(11)에 접속된다. 버스 인터페이스 유닛(12)은 프로세서(10)와 시스템 버스(11)에 결합된 주 메모리(도시되지 않음)와 같은 다른 장치들간의 정보 전송을 제어한다. 프로세서(10), 시스템 버스(11) 및 시스템 버스(11)에 결합된 다른 장치들은 함께 데이타 처리 시스템을 형성한다.
버스 인터페이스 유닛(12)은 프로세서(10)내의 인스트럭션 캐쉬(14) 및 데이타 캐쉬(16)에 접속된다. 이들 인스트럭션 캐쉬(14) 및 데이타 캐쉬(16)와 같은 고속 캐쉬는 이전에 주 메모리로부터 이들 캐쉬(14,16)로 전송된 데이타 또는 인스트럭션 서브세트에 대해 프로세서(10)가 비교적 빠른 시간에 액세스할 수 있도록 함으로써 데이타 처리 시스템의 동작 속도를 향상시킨다. 인스트럭션 캐쉬(14)는 또한 순차 인출기(sequential fetcher)(17)에 결합되며, 이 순차 인출기는 각 사이클동안 인스트럭션 캐쉬로부터 실행용 인스트럭션을 인출한다. 순차 인출기(17)는 인스트럭션 캐쉬(14)로부터 인출된 인스트럭션을 분기 처리 유닛(18) 및 인스트럭션 큐(instruction queue)(19)로 전송하며, 이들은 인스트럭션을 디코드하여 이 인스트럭션이 분기 인스트럭션인지 또는 순차 인스트럭션인지를 판단한다. 분기 인스트럭션은 실행을 위해 분기 처리 유닛(18)에 의해 유지되고 인스트럭션 큐(19)로부터 삭제되며, 순차 인스트럭션은 분기 처리 유닛(18)으로부터 삭제되고 인스트럭션 큐(19)내에 저장되어 이후 프로세서(10)내의 다른 실행 회로에 의해 실행된다.
도시된 예시적인 실시예에서, 분기 처리 유닛(18)에 부가하여 프로세서(10)의 실행 회로는, 고정 소수점 유닛(fixed-point unit;FXU)(22), 로드/저장 유닛(load/store unit;LSU)(28), 부동 소수점 유닛(floating-point unit;FPU)(30)을 포함하는 복수의 순차 인스트럭션용 실행 유닛을 포함한다. 본 컴퓨터 분야에 숙련된 자에게는 잘 알려진 바와 같이, 각 실행 유닛(22, 28, 30)은 전형적으로 각 프로세서 사이클동안 특정 형태의 순차 인스트럭션으로 이루어진 하나 이상의 인스트럭션을 실행한다. 예를 들면, 고정 소수점 유닛(22)은 지정된 범용 레지스터(general purpose registers;GPRs)(32) 또는 GPR 재명명 버퍼(rename buffers)(33)로부터 수신된 소스 오퍼랜드(source operands)를 이용하여 가산(addition), 감산(subtraction), 앤드 논리 연산 (ANDing), 오아 논리 연산(ORing) 및 배차적 오아 논리 연산(XORing)과 같은 고정 소수점의 수리 및 논리 연산을 수행한다. 고정 소수점 인스트럭션 실행 후, 고정 소수점 유닛(22)은 GPR 재명명 버퍼(33)로 이 인스트럭션의 결과 데이타를 출력하며, GPR 재명명 버퍼는 자신의 결과 데이타를 하나 이상의 범용 레지스터(32)로 전송하므로써 인스트럭션이 완료될 때까지 이들 결과 데이타를 일시적으로 저장한다. 반대로, 부동 소수점 유닛(30)은 전형적으로 부동 소수점 레지스터(floating-point registers;FPRs)(36) 또는 FPR 재명명 버퍼(37)로부터 수신된 소스 오퍼랜드에 대해 부동 소수점 승산 및 제산과 같은 단일 정밀도 및 2배 정밀도의 부동 소수점 산술 및 논리 연산을 수행한다. 부동 소수점 유닛(30)은 부동 소수점 인스트럭션의 실행 결과 얻어진 데이타를 선택된 FPR 재명명 버퍼(36)로 출력하며, FPR 재명명 버퍼(37)는 자신의 결과 데이타를 FPR 재명명 버퍼(37)로부터 선택된 부동 소수점 레지스터(36)로 전송하므로써 인스트럭션이 완료될 때까지 이 결과 데이타를 일시적으로 저장한다. 명칭이 암시하는 바와 같이, 로드/스토어 유닛(28)은 통상 메모리(즉, 데이타 캐쉬(16) 또는 주 메모리중 어느 하나)로부터 선택된 범용 레지스터(32) 또는 부동 소수점 레지스터(36)로 데이타를 로드하거나, 범용 레지스터(32), GPR 재명명 버퍼(33), 부동 소수점 레지스터(36) 또는 FPR 재명명 버퍼(37)중 선택된 하나로부터의 데이타를 메모리에 저장하는 부동 소수점 및 고정 소수점 인스트럭션을 실행한다.
프로세서(10)는 자신의 슈퍼스칼러 아키텍쳐의 성능을 더욱 향상시키기 위해 인스트럭션의 파이프라이닝(pipelining) 실행 및 순서외의 실행(out-of-order execution of instructions)을 모두 이용한다. 따라서, 인스트럭션들은 데이타 종속성(data dependancy)이 준수되는 한 임의의 순서로 고정 소수점 유닛(22), 로드/저장 유닛(28) 및 부동 소수점 유닛(30)에 의해 기회주의적으로 실행될 수 있다. 또한, 인스트럭션들은 파이프라인 단계 시퀀스에서 고정 소수점 유닛(22), 로드/저장 유닛(28) 및 부동 소수점 유닛(30) 각각에 의해 처리된다. 다수의 고성능 프로세서에서 전형적인 바와 같이, 각 인스트럭션은 다섯 개의 상이한 파이프라인 단계, 즉, 인출, 디코드/디스패치, 실행, 종료 및 완료 단계로 처리된다.
인출 단계 동안, 순차 인출기(17)는 인스트럭션 캐쉬(14)로부터의 하나 이상의 메모리 어드레스와 연관된 하나 이상의 인스트럭션을 검색(retrieve)한다. 앞서 언급된 바와 같이, 인스트럭션 캐쉬(14)로부터 인출된 순차 인스트럭션은 순차 인출기(17)에 의해 인스트럭션 큐(19)내에 저장되며, 분기 인스트럭션은 순차 인스트럭션 스트림(sequential instruction stream)으로부터 삭제(폴드 아웃(fold out))된다. 이후 도 2를 참조하여 설명되는 바와 같이, 분기 인스트럭션은 분기 처리 유닛(18)에 의해 실행되며, 분기 처리 유닛(18)은 복수의 분기 예측 기법중 선택된 하나의 기법을 이용하여 미결정형 조건부 분기 인스트럭션을 사변적으로 실행할 수 있게 하는 신규의 분기 예측 메카니즘(a novel branch prediction mechanism)을 포함한다.
디코드/디스패치 단계 동안, 디스패치 유닛(20)은 인스트럭션 큐(19)로부터의 하나 이상의 인스트럭션을 디코드하여 실행 유닛(22, 28, 30)으로 디스패치한다. 이 디코드/디스패치 단계 동안, 디스패치 유닛(20)은 또한 각각의 디스패치된 인스트럭션의 결과 데이타에 대해 GPR 재명명 버퍼(33) 또는 FPR 재명명 버퍼(37)내의 재명명 버퍼를 할당한다. 도시된 예시적인 실시예에 따르면, 디스패치 유닛(20)에 의해 디스패치된 인스트럭션은 또한 완료 유닛(40)내의 완료 버퍼(a completion buffer)로 전달된다. 프로세서(10)는 고유의 인스트럭션 식별자(unique instruction identifiers)를 이용하여 순서외의 실행동안 디스패치된 인스트럭션의 프로그램 순서를 추적한다.
실행 단계 동안, 실행 유닛(22, 28, 30)은 지정된 연산에 대한 오퍼랜드 및 실행 자원(execution resources)이 이용가능하게 됨에 따라 기회주의적으로 디스패치 유닛(20)으로부터 수신된 순차 인스트럭션을 실행한다. 이들 각 실행 유닛(22, 28, 30)은 오퍼랜드 또는 실행 자원이 이용가능하게 될 때까지 이 실행 유닛에 디스패치된 인스트럭션을 저장하는 예약 스테이션(a reservation station)을 구비하는 것이 바람직하다. 인스트럭션의 실행이 종료된 후, 실행 유닛(22, 28, 30)은 인스트럭션 유형에 따라 GPR 재명명 버퍼(33) 또는 FPR 재명명 버퍼(37)중 어느 하나에 인스트럭션의 결과 데이타를 저장한다. 그리고 나서, 실행 유닛(22, 28, 30)은 완료 유닛(40)의 완료 버퍼내에 저장된 어느 인스트럭션이 실행 종료되었는지를 완료 유닛(40)에 통지한다. 마지막으로, 인스트럭션은 GPR 재명명 버퍼(33) 및 FPR 재명명 버퍼(37)로부터 인스트럭션의 결과 데이타를 범용 레지스터(32) 및 부동 소수점 레지스터(36)로 제각기 전송하므로써 프로그램순으로 완료 유닛(40)에 의해 완료된다.
도 2 및 도 5를 참조하면, 프로세서(10)의 분기 처리 유닛(18)에 대한 더욱 상세한 블럭도 및 이 분기 처리 유닛(18)내에서 실행되는 분기 인스트럭션을 설명하는 흐름도가 도시된다. 먼저 도 5를 참조하면, 프로세스는 블럭(200)에서 시작한 후 블럭(202) 및 블럭(204)으로 진행한다. 블럭(202) 및 블럭(204)에서, 순차 인출기(17)는 인스트럭션 캐쉬(14)로부터 다음 순차 인스트럭션 세트를 검색하며, 인출된 인스트럭션을 분기 처리 유닛(18) 및 인스트럭션 큐(19)로 전송한다. 도 2에 도시된 바와 같이, 분기 처리 유닛(18)은 순차 인출기(17)로부터 매 사이클마다 최고 두 개의 인스트럭션을 수신하며, 이들 인스트럭션을 인스트럭션 레지스터(instruction register;IRs)(50, 52)내에 저장한다. 인스트럭션 레지스터(50, 52)내에 인출된 인스트럭션을 저장하는 것에 의해 분기 디코더(54)에 의한 인스트럭션의 디코딩이 동작개시되며, 이것은 도 5의 블럭(206)에서 수행된다.
계속해서 도 5를 참조하면, 블럭(208)에서 인스트럭션 레지스터(50, 52)중 하나의 레지스터내에 저장된 인스트럭션이 비분기 인스트럭션인 것으로 판단되면, 블럭(210)에서 이 인스트럭션은 단순히 폐기된다. 그 후, 프로세스는 블럭(210)으로부터 블럭(270)으로 진행하며, 여기서 폐기된 인스트럭션의 처리는 종료한다. 한편, 블럭(208)에서 인스트럭션 레지스터(50, 52)중 하나의 레지스터에 저장된 인스트럭션이 분기 인스트럭션으로 판단되면, 블럭(220)에서 이 인스트럭션이 조건부 분기 인스트럭션인지의 여부가 다시 판단된다. 무조건부 분기 인스트럭션이면 간단히 분기 선택 유닛(56)으로 진행하여 목표 인스트럭션의 유효 어드레스(effective address;EA)를 산출한다. 블럭(222)에 도시된 바와 같이, 그 후 분기 선택 유닛(56)은 이 유효 어드레스를 인스트럭션 캐쉬(14)로 전송하여 목표 어드레스의 순차 인스트럭션의 인출을 개시한다.
블럭(220)으로 되돌아가서, 인출된 인스트럭션이 조건부 분기 인스트럭션이라고 분기 디코드 유닛(54)에 의해 판단되면, 프로세스는 블럭(230)으로 진행하여, 분기가 의존하는 조건 레지스터(condition register;CR) 필드(field)가 현재 진행중인 인스트럭션, 즉, 인출되었지만 완료되지 않은 인스트럭션의 목표인지의 여부가 판단된다. 블럭(230)에 도시된 판단을 하기 위해 분기 선택 유닛(56)으로 인스트럭션이 보내지며, 분기 선택 유닛(56)은 분기가 의존하는 CR 필드의 표시(an indication)를 탐색 로직(58, 60)으로 전송한다. 분기 선택 유닛(56)으로부터 수신된 CR 필드 식별자를 이용하여, 탐색 로직(58)은 인스트럭션 큐(19)내의 인스트럭션을 조사하므로써 분기가 의존하는 CR 필드가 인스트럭션 큐(19)내의 하나 이상의 인스트럭션의 목표인지를 판단한다. 이와 동시에 탐색 로직(60)에 의해 관심의 대상이 되는 CR 필드가, 디스패치되었지만 완료되지 않은 완료 유닛(40)의 완료 버퍼(62)내에 포함된 인스트럭션의 목표인지의 여부도 판단된다. 이 CR 필드가 진행중인 어떤 인스트럭션의 목표도 아닌 경우 분기 인스트럭션은 이미 결정되었으며, 이 분기가 의존하는 CR 필드는 CR의 과거 상태(history)를 저장하는 미도시된 CR 특수 목적용 레지스터(special purpose register;SPR)내에 위치된다. 이와 같이 하여, 프로세스는 블럭(230)으로부터 블럭(232)으로 진행하며, 블럭(232)에서 분기 결정 유닛(64)은 CR SPR내의 관심있는 CR 필드를 조사하여 가능한 경우 조건부 분기를 결정한다. 그리고 나서, 이 분기의 결과는 분기 선택 유닛(56)에 공급된다. 그 후, 블럭(222)에 도시된 바와 같이, 분기 선택 유닛(56)은 목표 인스트럭션의 유효 어드레스를 산출하여 이 유효 어드레스를 인스트럭션 캐쉬(14)로 전송한다.
이제 블럭(230)을 참조하면, 탐색 로직(58, 60)에 의해 관심의 대상이 되는 CR 필드가 현재 진행중인 인스트럭션의 목표라고 판단되면, 프로세스는 블럭(240)으로 진행하여, 이 인스트럭션에 의해 공급된 CR 비트가 이용가능한지의 여부가 탐색 로직(60)에 의해 판단된다. 인스트럭션에 의해 공급된 CR 비트는, 해당 인스트럭션이 수행을 종료하고 인스트럭션의 실행에 의해 생성된 CR 비트가 완료 버퍼(62)내에 저장될 경우 사용가능하다. CR 비트가 이용가능한 경우, 프로세스는 블럭(240)에서 블럭(242)으로 진행하며, 여기에서 해당 분기를 결정하기 위해 이 인스트럭션과 연관된 CR 비트가 검사된다. 또한, 분기 결정 유닛(64)은 조건부 분기 인스트럭션의 결정을 분기 선택 회로(56)로 공급하며, 분기 선택 회로(56)는 블록(222)에 도시된 바와 같이, 다음의 인출될 인스트럭션의 유효 어드레스를 계산하고 이것을 인스트럭션 캐쉬(14)에 전송한다.
블럭(240)을 다시 참조하면, CR 비트가 아직 이용가능하지 않은 경우(즉, 인스트럭션이 디스패치되지 않았거나 아직 실행 종료되지 않은 경우), 프로세스는 블럭(250-260)으로 진행하여 미결정형 조건부 분기 인스트럭션을 사변적으로 실행한다. 따라서, 분기 결정 유닛(64)은 CR 비트가 이용가능하지 않음을 선택 로직(66)에 통지함으로써, 인스트럭션이 예측에 의해 사변적으로 실행되어야 함을 표시한다. 다음으로, 블럭(250)에서 도시된 바와 같이, 선택 로직(66)은 분기 예측 기법을 선택한다. 도 3 및 4를 참조하여 상세히 설명되는 바와 같이 본 예시적인 실시예의 주요한 특징에 따라, 선택 로직(66)은 과거 예측 결과에 기초하여 분기 예측 기법을 선택하며, 이들 과거 예측 결과는 분기 히스토리 테이블(branch history table;BHT)(68)내에 저장된다. 따라서, 복수의 분기 예측 모드를 지원하는 종래의 프로세서와는 달리, 도 1에 도시된 본 예시적인 실시예는 이전의 예측 결과에 기초하여 지능적이고 동적으로 최상의 분기 예측 기법을 선택한다. 선택된 분기 예측 기법을 이용하여, 분기 결정 유닛(64)은 분기를 취해지거나 취해지지 않을 것으로 예측하며, 이 예측을 블럭(252)에 도시된 바와 같이 분기 선택 유닛(56)에 알린다. 그 후, 블럭(254)에 도시된 바와 같이, 분기 선택 유닛(56)은 목표 인스트럭션의 유효 어드레스를 산출하여 인스트럭션 캐쉬(14)로 전송한다.
도 5에 도시된 프로세스는 블럭(254)으로부터 블럭(256)으로 진행하며, 블럭(256)에서는 결정된 조건부 분기 인스트럭션이 올바르게 예측된 것이었는지의 여부가 판단된다. 즉, 블럭(256)에서, 분기 결정 유닛(64)에 의한 판단이 행해지며, 분기 결정 유닛(64)은 연관된 인스트럭션의 종료 후 분기가 의존하는 CR 비트를 탐색 로직(60)으로부터 수신한다. 분기 결정 유닛(64)에 의한 판단 결과 분기가 오류예측된 것이면, 프로세스는 블럭(258)으로 진행하며, 여기서 분기 결정 유닛(64)은 인스트럭션을 인스트럭션 큐(19) 및 실행 유닛(22, 28, 30)으로부터 오류예측된 분기 인스트럭션의 사변적 실행 경로내의 인스트럭션을 삭제한다. 그리고 나서, 프로세스는 블럭(260)으로 진행한다. 당 분야에 숙련된 자라면 두 레벨 이상의 사변적 실행을 허용하는 프로세서 구현의 경우 모든 사변적 인스트럭션이 삭제될 필요는 없고, 단지 분기의 오류예측에 응답하여 인출된 인스트럭션만이 삭제될 필요가 있음을 이해할 것이다. 블럭(256)으로 돌아가서, 분기가 올바르게 예측된 것으로 판단되면, 프로세스는 이에 응답하여 블럭(256)으로부터 블럭(260)으로 진행한다. 블럭(260)에서 선택 로직(66)은, 필요한 경우, 조건부 분기 인스트럭션의 후속적인 사변적 실행을 위해 적절한 분기 예측 기법이 선택될 것을 보장하기 위해 분기 히스토리 테이블(68)을 갱신한다. 그 후, 프로세스는 블럭(270)에서 종료한다.
도 3을 참조하면, 분기 처리 유닛(18)의 분기 히스토리 테이블(68)이 도시된다. 도시된 바와 같이, 분기 히스토리 테이블(68)은 인덱스(82)를 이용하여 제각기 액세스되는 256개의 엔트리(80)를 포함하는 테이블로 이루어진다. 도시된 실시예에서, 각 인덱스(82)는 분기 인스트럭션 어드레스의 8개의 최소 유효 비트(least significant bit)로 이루어진다. 따라서, 예를 들면, 00h로 끝나는 어드레스를 갖는 인스트럭션의 분기 히스토리는 제 1 엔트리(80)내에 저장되고, 01h로 끝나는 어드레스를 갖는 분기 인스트럭션은 제 2 엔트리에 저장되는 등으로 저장된다. 도시된 바와 같이, 각 엔트리(80)는 3개의 비트를 포함하며, 이들은 함께 후속적인 조건부 분기 인스트럭션에 대해 7개의 가능한 상태(8번째 가능한 상태는 사용되지 않음)중 하나를 지정한다. 종래의 분기 히스토리 테이블의 경우처럼, 분기 히스토리 테이블(68)의 엔트리내에 저장된 예측 상태는 이 분기 인스트럭션에 대한 후속적인 실행을 더욱 정확히 예측하기 위해 연관된 분기가 취해지거나 취해지지 않았다는 결과에 따라 갱신된다.
도 4를 참조하면, 분기 예측 기법을 선택하는데 이용되는 상태 머신(a state machine)의 예시적인 실시예가 도시된다. 상태 머신(88)은 4개의 동적 예측 상태(90∼96)와 3개의 정적 예측 상태(98∼102)를 포함하는 7개의 상태로 이루어진다. 표시된 바와 같이, 각각의 예측 상태(90∼102)는 분기 히스토리 테이블(68)내 각 엔트리(80)의 7개의 가능한 세트중 하나에 대응한다.
먼저 정적 예측 상태(100)를 참조하면, 예측될 분기 인스트럭션이 "000"으로 세트된 분기 히스토리 테이블(68)의 엔트리(80)에 매핑되는 경우, 분기가 취해져야 하는지의 여부를 예측하는데 정적 분기 예측이 이용된다. 분기가 취해지는 것으로 결정된 경우, 정적 예측 상태(102)에 도시된 바와 같이, 분기 히스토리 테이블(68)내의 엔트리(80)가 "001"로 갱신된다. 상태 머신(88)은 분기가 올바르게 예측되었는지의 여부에 관계없이, 분기가 취해질 것이라는 결정에 응답하여 정적 예측 상태(100)로부터 정적 예측 상태(102)로 진행한다. 다음으로 조건부 분기 인스트럭션이 예측될 때 정적 예측 상태(102)에 의해 지정된 바와 같이 정적 분기 예측이 다시 이용된다. 이 분기가 또한 취해질 것으로 결정되면, 분기 히스토리 테이블(68)내의 엔트리(80)는 "010"으로 갱신되어 동적 예측 상태(90)로 도시된 바와 같이 다음 예측에 대해 동적 분기 예측이 이용될 것임을 표시한다.
그 후, 후속적인 분기 예측이 취해질 것으로 결정되는 한 상태 머신(88)은 동적 예측 상태(90)로 유지된다. 그러나 분기가 취해지지 않는다는 결정에 응답하여 상태 머신(88)은 동적 예측 상태(90)로부터 동적 예측 상태(92)로 진행하고 분기 히스토리 테이블(68)내의 엔트리(80)는 "011"로 갱신된다. 엔트리(80)가 동적 예측 상태(92)에 대응하는 "011"로 세트되면, 엔트리(80)에 매핑되는 분기 인스트럭션은 다시 취해질 것으로서 예측된다. 이와 같이 분기가 취해진다는(즉, 올바르게 예측되었다)결정에 응답하여, 상태 머신(88)은 이미 설명된 동적 예측 상태(90)로 복귀한다. 그러나 분기가 취해지지 않는다는 결정에 응답하여, 상태 머신(88)은 동적 예측 상태(92)로부터 정적 예측 상태(100)로 복귀한다.
정적 예측 상태(100)를 다시 참조하면, 분기 인스트럭션이 취해지지 않는 것으로 결정되면, 상태 머신(88)은 정적 예측 상태(100)로부터 정적 예측 상태(98)로 진행하고, 엔트리(80)는 "111"로 갱신된다. 다음에 발생하는 분기 인스트럭션이 취해지는 것으로 결정된 경우, 상태 머신(88)은 정적 예측 상태(98)로부터 앞서 설명된 정적 예측 상태(100)로 복귀한다. 한편, 분기 인스트럭션이 취해지지 않는 것으로 결정되면, 상태 머신(88)은 정적 예측 상태(98)로부터 동적 예측 상태(96)로 진행하고 엔트리(80)는 "110"으로 갱신된다.
상태 머신(88)이 동적 분기 예측 상태(96)에 있고 이에 따라 엔트리(80)가 "110"으로 세트된 동안, 조건부 분기는 취해지지 않을 것으로 예측된다. 예측된 조건부 분기가 취해지지 않는 것으로 결정된 경우, 상태 머신(88)은 동적 예측 상태(96)로 유지된다. 이와는 달리, 예측된 조건부 분기가 취해지는 것으로 결정된 경우, 상태 머신(88)은 동적 예측 상태(94)로 진행하며, 이에 따라 분기 히스토리 테이블이 "101"로 세트된다. 다시, 상태 머신(88)이 동적 예측 상태(94)에 있을 때 조건부 분기는 취해지지 않는 것으로 예측된다. 동적 예측 상태(94)에서 취해지지 않는 것으로 예측된 분기가 취해지지 않는 것으로 결정되면, 상태 머신(88)은 이미 설명된 동적 예측 상태(96)로 복귀한다. 그러나 분기가 취해지는 것으로 결정되면, 프로세스는 또한 이미 설명된 정적 예측 상태(100)로 복귀한다.
도 4와 관련한 이상의 설명으로부터 알 수 있는 바와 같이, 상태 머신(88)이 정적 예측 상태(98∼102)중 어느 한 상태에 있는 동안 분기 결정의 방향은 예측 메카니즘의 다음 상태를 결정한다. 분기가 연속적으로 두번 취해지거나 취해지지 않는 것으로서 결정된 후에는 동적 분기 예측 기법이 이용된다. 마찬가지로, 상태 머신(88)이 동적 예측 상태(90 또는 92)중 어느 한 상태에 있는 경우, 두 개의 연속적인 분기 오류예측 후 정적 분기 예측을 이용하여 분기가 예측된다. 도 4는 상태 머신(88)의 예시적인 실시예를 도시하였지만, 당분야에 숙련된 자라면 분기 히스토리에 기초하여 분기 예측 기법이 지능적으로 선택될 수 있는 다른 상태 머신이 구현될 수 있음을 알 것이다. 또한, 당분야에 숙련된 자라면 복수 형태의 정적 및 동적 예측이 이용될 수도 있음을 알 것이다. 예를 들면, 분기 처리 유닛(18)은 지정된 분기가 전향 또는 후향 분기인지의 여부에 기초하여 분기 인스트럭션의 결과를 예측하는 간단한 정적 분기 예측 기법을 구현할 수 있으며, 이와는 달리, 프로그램 컴파일 동안 학습된 정보에 기초하여 분기 인스트럭션을 예측하는 더욱 복잡한 정적 분기 예측 기법이 이용될 수 있다.
이상 예시적인 실시예가 특별히 도시되고 설명되었지만, 당분야에 숙련된 자에 의해 예시적인 실시예의 사상 및 범주로부터 벗어나지 않고 형식 및 세부사항에 다양한 변경이 가능함을 이해할 것이다.
따라서, 본 발명에 의해 선택된 분기 예측 기법을 이용하여 분기 인스트럭션을 사변적으로 실행하는 프로세서 및 방법이 개시된다. 이 프로세서는 분기 인스트럭션을 실행하기 위한 분기 인스트럭션 유닛을 포함하는, 인스트럭션을 실행하기 위한 하나 이상의 실행 유닛을 구비한다. 분기 처리 유닛은 복수의 분기 예측 기법중 하나를 선택하는 선택 로직과, 선택된 분기 예측 기법을 이용하여 조건부 분기 인스트럭션의 결정을 예측하는 분기 예측 유닛을 포함한다. 분기 처리 유닛은 또한 이러한 예측에 기초하여 조건부 분기 인스트럭션을 사변적으로 실행하기 위한 실행 설비를 포함한다. 예측 결과에 기초하여, 선택 로직은 후속하는 조건부 분기 인스트럭션을 예측하는 분기 예측 기법을 선택하므로써 분기 예측 정확도가 향상된다. 일실시예에서, 이들 복수의 분기 예측 기법은 정적 분기 예측 및 동적 분기 예측을 포함한다.

Claims (21)

  1. 프로세서에 있어서,
    인스트럭션을 실행하기 위한 하나 이상의 실행 유닛(execution unit)을 포함하고, 상기 하나 이상의 실행 유닛은 분기 인스트럭션을 실행하기 위한 분기 처리 유닛(branch processing unit)을 포함하며, 상기 분기 처리 유닛은,
    ① 다수의 분기 예측 기법 중 하나를 선택하기 위한 선택 로직(selection logic)과,
    ② 상기 선택된 분기 예측 기법을 사용하여 조건부 분기 인스트럭션의 결정(resolution)을 예측하는 분기 예측 유닛(branch prediction unit)과,
    ③ 상기 예측에 따라 상기 분기 인스트럭션을 사변적으로(speculatively) 실행하기 위한 수단을 포함하며,
    상기 선택 로직은 상기 예측의 결과에 따라, 후속적인 조건부 분기 인스트럭션의 결정을 예측하기 위한 분기 예측 기법을 선택하는 프로세서.
  2. 제 1 항에 있어서,
    상기 다수의 분기 예측 기법은 동적 분기 예측(dynamic branch prediction)을 포함하는 프로세서.
  3. 제 2 항에 있어서,
    동적 분기 예측이 사용된 경우, 상기 조건부 분기 인스트럭션이 취해질 것으로 예측되어야 할지 취해지지 않을 것으로 예측되어야 할지에 대한 지정신호(indication)를 저장하는 분기 히스토리 테이블(branch history table)을 더 포함하는 프로세서.
  4. 제 3 항에 있어서,
    상기 다수의 분기 예측 기법은 정적 분기 예측(static branch prediction)을 포함하는 프로세서.
  5. 제 4 항에 있어서,
    상기 선택 로직은,
    동적 분기 예측의 사용시 조건부 분기 인스트럭션의 제 1 선택된 수의 오류예측(incorrect prediction)에 응답하여, 정적 분기 예측을 선택하는 수단과,
    모두 취해지거나 모두 취해지지 않는 것으로 정적으로 예측된 분기 인스트럭션의 제 2 선택된 수의 결정에 따라, 동적 분기 예측을 선택하는 수단을 포함하는 프로세서.
  6. 제 1 항에 있어서,
    상기 프로세서는 인스트럭션을 저장하기 위한 연관된 메모리(associated memory)를 구비하고, 인출기(fetcher)를 더 구비하며,
    상기 인출기는 상기 예측에 의해 지정된 사변적 실행 경로(speculative execution path) 내에서 실행하기 위해 하나 이상의 인스트럭션을 메모리로부터 인출하는 프로세서.
  7. 제 6 항에 있어서,
    상기 조건부 분기 인스트럭션이 오류예측되었다는 결정에 응답하여, 상기 사변적 실행 경로 내의 상기 인스트럭션을 삭제하는 수단을 더 포함하는 프로세서.
  8. 데이타 처리 시스템에 있어서,
    ① 버스(a bus)와,
    ② 상기 버스에 접속되어, 실행될 인스트럭션을 저장하는 메모리(a memory)와,
    ③ 상기 버스를 통해 상기 메모리에 접속되어, 상기 메모리로부터 인스트럭션을 인출하기 위한 인출기(a fetcher)와,
    ④ 인출된 인스트럭션을 실행하기 위한 하나 이상의 실행 유닛―상기 하나 이상의 실행 유닛은 분기 인스트럭션을 실행하기 위한 분기 처리 유닛을 포함하며, 상기 분기 처리 유닛은,
    ⓐ 다수의 분기 예측 기법 중 하나를 선택하는 선택 로직과,
    ⓑ 상기 선택된 분기 예측 기법을 사용하여 조건부 분기 인스트럭션의 결정을 예측하기 위한 분기 예측 유닛과,
    ⓒ 상기 예측에 따라 상기 분기 인스트럭션을 사변적으로 실행하기 위한 수단을 더 구비함―을 포함하며,
    상기 예측의 결과에 기초하여, 상기 선택 로직은 분기 예측 정확도(branch prediction accuracy)가 향상되도록 후속적인 조건부 분기 인스트럭션의 결정을 예측하는 분기 예측 기법을 선택하는 데이타 처리 시스템.
  9. 제 8 항에 있어서,
    상기 다수의 분기 예측 기법은 동적 분기 예측을 포함하는 데이타 처리 시스템.
  10. 제 9 항에 있어서,
    동적 분기 예측이 사용된 경우 상기 조건부 분기 인스트럭션이 취해질 것으로 예측되어야 할지 취해지지 않을 것으로 예측되어야 할지에 대한 지정신호를 저장하는 분기 히스토리 테이블을 더 포함하는 데이타 처리 시스템.
  11. 제 10 항에 있어서,
    상기 다수의 분기 예측 기법은 정적 분기 예측을 포함하는 데이타 처리 시스템.
  12. 제 11 항에 있어서,
    상기 선택 로직은,
    동적 분기 예측의 사용시 조건부 분기 인스트럭션의 제 1 선택된 수의 오류예측에 응답하여, 정적 분기 예측을 선택하는 수단과,
    모두 취해지거나 모두 취해지지 않는 것으로 정적으로 예측된 분기 인스트럭션의 제 2 선택된 수의 결정에 따라, 동적 분기 예측을 선택하는 수단을 포함하는 데이타 처리 시스템.
  13. 제 8 항에 있어서,
    상기 인출기는 상기 예측에 의해 지정된 사변적인 실행 경로상에서 실행을 위해 하나 이상의 인스트럭션을 상기 메모리로부터 인출하는 데이타 처리 시스템.
  14. 제 13 항에 있어서,
    상기 조건부 인스트럭션이 오류예측되었다는 결정에 응답하여, 상기 사변적 실행 경로 내의 상기 인스트럭션을 삭제하는 수단을 더 포함하는 데이타 처리 시스템.
  15. 프로세서 내에서 조건부 분기 인스트럭션을 사변적으로 실행하기 위한 방법에 있어서,
    ① 조건부 분기 인스트럭션의 결정을 예측하기 위해 다수의 분기 예측 기법중 하나를 선택하는 단계와,
    ② 상기 선택된 분기 예측 기법을 사용하여, 상기 조건부 분기 인스트럭션의 결정을 취해질 것으로 혹은 취해지지 않을 것으로 예측하는 단계와,
    ③ 상기 결정에 따라, 상기 조건부 분기 인스트럭션을 사변적으로 실행하는 단계와,
    ④ 이후에, 상기 조건부 분기 인스트럭션이 취해질 것으로 혹은 취해지지 않을 것으로 결정하는 단계와,
    ⑤ 상기 분기 인스트럭션의 상기 결정에 응답하여, 분기 예측 정확도가 향상되도록 후속적인 조건부 분기 인스트럭션의 결정을 예측하기 위한 분기 인스트럭션 기법을 선택하기 위해 상기 예측의 결과를 이용하는 단계를 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
  16. 제 15 항에 있어서,
    상기 다수의 분기 예측 기법은 동적 분기 예측을 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
  17. 제 16 항에 있어서,
    동적 분기 예측의 사용시 상기 후속적인 조건부 분기 인스트럭션이 취해질 것으로 예측되어야 할지 취해지지 않을 것으로 예측되어야 할지에 대한 지정 신호를 지장하는 단계를 더 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
  18. 제 17 항에 있어서,
    상기 다수의 분기 예측 기법은 정적 분기 예측을 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
  19. 제 18 항에 있어서,
    상기 다수의 분기 예측 기법중 하나를 선택하는 단계는,
    동적 분기 예측의 사용시 조건부 분기 인스트럭션의 제 1 선택된 수의 오류예측에 응답하여, 정적 분기 예측을 선택하는 단계와,
    모두 취해지거나 모두 취해지지 않는 것으로 정적으로 예측된 분기 인스트럭션의 제 2 선택된 수의 결정에 따라, 동적 분기 예측을 선택하는 단계를 더 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
  20. 제 15 항에 있어서,
    상기 방법은 상기 예측에 의해 지정된 사변적 실행 경로 내에서 실행을 위해 하나 이상의 인스트럭션을 인출하는 단계를 더 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
  21. 제 20 항에 있어서,
    상기 방법은 상기 조건부 분기 인스트럭션이 오류예측되었다는 결정에 응답하여, 상기 사변적 실행 경로 내의 상기 인스트럭션을 삭제하는 단계를 더 포함하는 조건부 분기 인스트럭션의 사변적 실행 방법.
KR1019970004030A 1996-04-29 1997-02-12 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법 KR100270003B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/639,577 US5752014A (en) 1996-04-29 1996-04-29 Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US08/639,577 1996-04-29

Publications (2)

Publication Number Publication Date
KR970071251A KR970071251A (ko) 1997-11-07
KR100270003B1 true KR100270003B1 (ko) 2000-10-16

Family

ID=24564688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970004030A KR100270003B1 (ko) 1996-04-29 1997-02-12 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법

Country Status (7)

Country Link
US (1) US5752014A (ko)
EP (1) EP0805390B1 (ko)
JP (1) JP3397081B2 (ko)
KR (1) KR100270003B1 (ko)
AT (1) ATE233414T1 (ko)
DE (1) DE69719235T2 (ko)
TW (1) TW344060B (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151672A (en) * 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6115809A (en) * 1998-04-30 2000-09-05 Hewlett-Packard Company Compiling strong and weak branching behavior instruction blocks to separate caches for dynamic and static prediction
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US6247146B1 (en) * 1998-08-17 2001-06-12 Advanced Micro Devices, Inc. Method for verifying branch trace history buffer information
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
JP3565314B2 (ja) 1998-12-17 2004-09-15 富士通株式会社 分岐命令実行制御装置
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
JP2001243070A (ja) * 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法
US6678820B1 (en) 2000-03-30 2004-01-13 International Business Machines Corporation Processor and method for separately predicting conditional branches dependent on lock acquisition
US6766442B1 (en) 2000-03-30 2004-07-20 International Business Machines Corporation Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value
US6658558B1 (en) * 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
US6859875B1 (en) * 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US7404070B1 (en) * 2000-11-28 2008-07-22 Hewlett-Packard Development Company, L.P. Branch prediction combining static and dynamic prediction techniques
US8719837B2 (en) * 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US8212823B2 (en) * 2005-09-28 2012-07-03 Synopsys, Inc. Systems and methods for accelerating sub-pixel interpolation in video processing applications
TW200739419A (en) * 2006-04-07 2007-10-16 Univ Feng Chia Prediction mechanism of a program backward jump instruction
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
US7617387B2 (en) * 2006-09-27 2009-11-10 Qualcomm Incorporated Methods and system for resolving simultaneous predicted branch instructions
US7707396B2 (en) * 2006-11-17 2010-04-27 International Business Machines Corporation Data processing system, processor and method of data processing having improved branch target address cache
CN102902519B (zh) * 2007-09-11 2016-03-16 夏寿民 一种基于动态系统实现复合断言计算的方法
US8136103B2 (en) * 2008-03-28 2012-03-13 International Business Machines Corporation Combining static and dynamic compilation to remove delinquent loads
US8122223B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on memory region prior requestor tag information
US8127106B2 (en) 2008-04-18 2012-02-28 International Business Machines Corporation Access speculation predictor with predictions based on a domain indicator of a cache line
US8131974B2 (en) 2008-04-18 2012-03-06 International Business Machines Corporation Access speculation predictor implemented via idle command processing resources
US8122222B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on a scope predictor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9274795B2 (en) * 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
JP2013058135A (ja) * 2011-09-09 2013-03-28 Ritsumeikan 分岐予測器及びプロセッサ
US9032191B2 (en) * 2012-01-23 2015-05-12 International Business Machines Corporation Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels
US9384002B2 (en) 2012-11-16 2016-07-05 International Business Machines Corporation Speculative finish of instruction execution in a processor core
US9542290B1 (en) 2016-01-29 2017-01-10 International Business Machines Corporation Replicating test case data into a cache with non-naturally aligned data boundaries
US10169180B2 (en) 2016-05-11 2019-01-01 International Business Machines Corporation Replicating test code and test data into a cache with non-naturally aligned data boundaries
US10055320B2 (en) 2016-07-12 2018-08-21 International Business Machines Corporation Replicating test case data into a cache and cache inhibited memory
US10223225B2 (en) 2016-11-07 2019-03-05 International Business Machines Corporation Testing speculative instruction execution with test cases placed in memory segments with non-naturally aligned data boundaries
US10261878B2 (en) 2017-03-14 2019-04-16 International Business Machines Corporation Stress testing a processor memory with a link stack
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US11163577B2 (en) 2018-11-26 2021-11-02 International Business Machines Corporation Selectively supporting static branch prediction settings only in association with processor-designated types of instructions
CN113868899B (zh) * 2021-12-03 2022-03-04 苏州浪潮智能科技有限公司 一种分支指令处理方法、系统、设备及计算机存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
TW261676B (ko) * 1993-11-02 1995-11-01 Motorola Inc
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
JPH08241198A (ja) * 1995-03-06 1996-09-17 Fujitsu Ltd 分岐命令処理方法
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor

Also Published As

Publication number Publication date
KR970071251A (ko) 1997-11-07
US5752014A (en) 1998-05-12
DE69719235D1 (de) 2003-04-03
EP0805390B1 (en) 2003-02-26
ATE233414T1 (de) 2003-03-15
DE69719235T2 (de) 2003-10-30
EP0805390A1 (en) 1997-11-05
JPH10133873A (ja) 1998-05-22
TW344060B (en) 1998-11-01
JP3397081B2 (ja) 2003-04-14

Similar Documents

Publication Publication Date Title
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
JP3093684B2 (ja) 命令ループを投機的に実行するプロセッサ及び方法
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5901307A (en) Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
KR100225244B1 (ko) 프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템
US6065115A (en) Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
US6279105B1 (en) Pipelined two-cycle branch target address cache
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
EP0605872B1 (en) Method and system for supporting speculative execution of instructions
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
JPH0863356A (ja) 分岐予測装置
US6338133B1 (en) Measured, allocation of speculative branch instructions to processor execution units
KR19990029287A (ko) 데이터 처리 시스템 에뮬레이션 모드에서의 간접 무조건 브랜치
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US5644779A (en) Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US6971000B1 (en) Use of software hint for branch prediction in the absence of hint bit in the branch instruction
KR19990029288A (ko) 데이터 처리 시스템에서 에뮬레이션 동안의 브랜치 처리 방법 및 시스템
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
KR20010077997A (ko) 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법
US6604191B1 (en) Method and apparatus for accelerating instruction fetching for a processor

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee