KR100930199B1 - 루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제 - Google Patents

루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제 Download PDF

Info

Publication number
KR100930199B1
KR100930199B1 KR1020077021427A KR20077021427A KR100930199B1 KR 100930199 B1 KR100930199 B1 KR 100930199B1 KR 1020077021427 A KR1020077021427 A KR 1020077021427A KR 20077021427 A KR20077021427 A KR 20077021427A KR 100930199 B1 KR100930199 B1 KR 100930199B1
Authority
KR
South Korea
Prior art keywords
branch
branch instruction
loop
instruction
bhr
Prior art date
Application number
KR1020077021427A
Other languages
English (en)
Other versions
KR20070105365A (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 KR20070105365A publication Critical patent/KR20070105365A/ko
Application granted granted Critical
Publication of KR100930199B1 publication Critical patent/KR100930199B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Molds, Cores, And Manufacturing Methods Thereof (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

코드 루프들을 종료하는 조건부 브랜치 명령들이 검출되며, 브랜치 히스토리 레지스터(BHR)는 루프-종료 브랜치 평가들을 저장하기 위하여 업데이트되는 것이 방지된다. 이는 루프 반복들을 실행하는 브랜치가 BHR로부터 다른 브랜치 평가 히스토리들을 대체하는 것을 방지한다. 루프-종료 브랜치는 특정 타입의 브랜치 명령을 사용하거나 또는 루프-종료 브랜치 명령의 op 코드에 지시자 비트들을 삽입하는 컴파일러에 의하여 정적으로 검출될 수 있다. 루프-종료 브랜치 명령은 임의의 역방향 브랜치로서 동적으로 검출될 수 있거나, 또는 BHR을 업데이트할때 마지막 하나 또는 다수의 브랜치 명령들의 PC를 저장하고 마지막 브랜치 PC(LBPC) 레지스터(들)에 대하여 브랜치 명령의 PC를 검사함으로서 동적으로 검출될 수 있다. 만일 브랜치 PC가 매칭되면, BHR의 업데이트는 억제된다. BHR 외부로 루프 반복 브랜치들을 유지하면 브랜치 예측 트레이닝 시간 및 정확성이 개선된다.

Description

루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의 업데이트 억제{SUPPRESSING UPDATE OF A BRANCH HISTORY REGISTER BY LOOP―ENDING BRANCHES}
본 발명은 일반적으로 프로세서 분야, 특히 루프-종료 브랜치 명령에 의하여 브랜치 히스토리 레지스터의 업데이트를 억제함으로써 브랜치 예측을 개선하기 위한 방법에 관한 것이다.
마이크로프로세서들은 다양한 응용 분야에서 계산 기능들을 수행한다. 개선된 프로세서 성능은 소프트웨어를 변경하여 동작 속도 및/또는 기능을 향상시키는데 있어서 항상 바람직하다. 휴대용 전자장치들과 같은 많은 내장형 응용들에 있어서, 전력을 보존하는 것은 프로세서 설계 및 구현에 있어서 중요한 목표이다.
많은 현대의 프로세서는 파이프라인 구조를 사용하며, 이 파이프라인 구조에서는 다수의 실행 단계들을 각각 가진 명령들이 실행시 중첩된다. 성능을 개선시키기 위하여 명령들은 파이프라인을 통해 연속적으로 흘러야 한다. 명령들이 파이프라인에서 스톨링(stall)하게 하는 임의의 상황은 성능에 악영향을 미칠 수 있다. 만일 명령들이 파이프라인으로부터 플러시(flush)된 다음에 재페치(re-fetch)되면, 성능 뿐만아니라 전력 소비 모두가 손상을 입는다.
대부분의 프로그램들은 조건부 브랜치 명령들을 포함하며, 이러한 조건부 브랜치 명령들의 실제 브랜칭 동작은 명령이 파이프라인에서 깊게(deep) 평가될때까지 알려지지 않는다. 브랜치 명령의 실제 평가시에 대기를 유발하는 스톨(stall)을 방지하기 위하여, 현대의 프로세서들은 임의의 형태의 브랜치 예측을 사용할 수 있으며, 이에 따라 조건부 브랜치 명령들의 브랜칭 동작은 파이프라인에서 초기에 예측된다. 예측된 브랜치 평가에 기초하여, 프로세서는 추론적으로(speculatively) 페치하며(프리페치(prefetch)하며), 예측된 어드레스, 즉 브랜치 타겟 어드레스(브랜치가 테이큰(taken)인 것으로 예측되는 경우) 또는 브랜치 명령후 다음 순차 어드레스(브랜치가 비 테이큰(not taken)인 것으로 예측되는 경우)중 하나로부터의 명령들을 실행한다. 실제 브랜치 동작이 결정될때, 만일 브랜치가 오예측(mispredict)되면, 추론적으로 페치된 명령들은 파이프라인으로부터 플러시되어야 하며, 정확한 다음 어드레스로부터 새로운 명령들이 페치된다. 에러 브랜치 예측에 응답하여 명령들을 프리페치하는 것은 프로세서 성능 및 전력 소비에 악영향을 미칠 수 있다. 결과적으로, 브랜치 예측의 정확성을 개선하는 것은 중요한 목표이다.
공지된 브랜치 예측 기술들은 정적 및 동적 예측을 포함한다. 일부 브랜치 명령들중 가능한 동작은 프로그래머 및/또는 컴파일러에 의하여 정적으로 예측될 수 있다. 브랜치 예측의 일례는 에러 검사 루틴이다. 일반적으로, 코드는 적절하게 실행되며, 에러들은 드물게 발생한다. 그러므로, "브랜치 온 에러(branch on error)" 기능을 실행하는 브랜치 명령은 높은 시간 비율(high percentage of the time)로 "비-테이큰(not taken)"을 평가할 것이다. 이러한 명령은 브랜치 조건의 가장 가능성 있는 결과의 지식을 사용하여 프로그래머 또는 컴파일러에 의하여 세팅된, op 코드의 정적 브랜치 예측 비트를 포함할 수 있다.
동적 예측은 일반적으로 예측된 브랜치 명령 및/또는 동일한 코드의 다른 브랜치 명령들의 브랜치 평가 히스토리(및 일부의 경우에 브랜치 예측 정확성 히스토리)에 기초한다. 실제 코드의 확대 분석은 최근 과거 브랜치 평가 패턴들이 미래의 브랜치 명령들의 평가에 대한 양호한 표시자일 수 있다는 것을 표시한다.
도 1에 도시된 동적 브랜치 예측의 하나의 공지된 형태는 과거 n개의 브랜치 평가들을 저장하기 위하여 브랜치 히스토리 레지스터(BHR)(100)를 이용한다. 단순한 구현에서, BHR(30)은 시프트 레지스터를 포함한다. 가장 최근의 브랜치 평가 결과는 내부로 시프트되며(예컨대, 1은 테이큰인 브랜치를 표시하며, 0은 비-테이큰인 브랜치를 표시한다), 레지스터의 가장 오래된 과거 평가는 교체된다. 프로세서는 각각의 브랜치 명령에 대한 로컬 BHR(100)을 유지할 수 있다. 선택적으로(또는 부가적으로), BHR(100)은 종종 글로벌(global) BHR 또는 GHR로서 공지된 모든 조건부 브랜치 명령들의 최근 과거 평가를 포함할 수 있다. 여기에서 사용된 바와같이, BHR은 로컬 및 글로벌 브랜치 히스토리 레지스터들을 지칭한다.
도 1에 도시된 바와같이, BHR(100)은 로컬 또는 글로벌일 수 있는 브랜치 예측자 테이블(BPT)(102)을 인덱싱할 수 있다. BHR(100)은 BPT(102)를 직접 인덱싱할 수 있거나 또는 BPT 인덱스 로직(104)의 브랜치 명령의 프로그램 카운터(PC)와 같은 다른 정보와 결합될 수 있다. BPT 인덱스 로직(104)에 대한 다른 입력들이 부가적으로 이용될 수 있다. BPT 인덱스 로직(104)은 입력들(보통, gselect로서 공지됨)을 연쇄시키며(concatenate), 입력들(gshare)을 XOR 연산하며, 해시 함수를 실행하며, 또는 다양한 방식으로 입력들을 결합 또는 변환할 수 있다.
일례로서, BPT(102)는 다수의 포화 카운터들을 포함할 수 있으며, 이의 MSB들은 바이모달(bimodal) 브랜치 예측자들로서 사용된다. 예컨대, 각각의 테이블 엔트리는 4개의 상태중 한 상태를 추정하는 2-비트 카운터를 포함할 수 있으며, 4개의 상태의 각각에는 다음과 같은 가중된 예측값이 할당된다.
11-강하게 예측된 테이큰(taken)
10-약하게 예측된 테이큰
01-약하게 예측된 비-테이큰
00-강하게 예측된 비-테이큰
카운터는 대응하는 브랜치 명령이 "테이큰"을 평가할때마다 증가하며, 명령이 "비-테이큰"을 평가할때마다 감소한다. 카운터의 MSB는 바이모달 브랜치 예측자이며, 즉 카운터의 MSB는 하위 예측의 가중치 또는 강도와 무관하게 브랜치가 테이큰인지 또는 비-테이큰인지를 예측할 것이다. 포화 카운터는 드문(infrequent) 브랜치 평가의 예측 에러를 감소시킨다. 한 방향(way)을 일정하게 평가하는 브랜치는 카운터를 포화시킬 것이다. 다른 방향의 드문 평가는 바이모달 예측값(bimodal prediction value)이 아니라 카운터 값(예측의 강도(strength of the prediction))을 변경시킬 것이다. 따라서, 드문 평가는 단지 두번이 아니라 한번 오예측할 것이다. 포화 카운터들의 테이블은 단지 예시적이며, 일반적으로 BHT는 다양한 브랜치 예측 메커니즘들을 포함하는 테이블을 인덱싱할 수 있다.
BPT(102)에서 사용되는 브랜치 예측 메커니즘과 무관하게, BHR(100)(즉, 단독으로 또는 브랜치 명령 PC과 같은 다른 정보와 조합하여)는 브랜치 예측들을 획득하기 위하여 BPT(102)를 인덱싱한다. BHR(100)에 이전 브랜치 평가들을 저장하고 브랜치 예측시 이 평가들을 사용함으로써, 예측된 브랜치 명령은 과거 브랜치 동작, 즉 로컬 BHR(100)의 경우에 그 자신의 과거 동작 및 글로벌 BHR(100)의 경우에 다른 브랜치 명령들의 동작과 상관된다. 이러한 상관은 적어도 높은 반복 코드의 경우에 브랜치 예측들을 정확하게 하는 것이 주요 목적일 수 있다.
도 1이 BHR(100)에 저장된 브랜치 평가들, 즉 실행 파이프라인 스테이지와 같은 파이프라인에서만 깊게 알려질 수 있는 조건부 브랜치 명령의 실제 평가를 도시한다는 것에 유의해야 한다. 이것이 궁극적인 결과인 반면에, 실제로 많은 고성능 프로세서들은 BPT(102)로부터의 예측된 브랜치 평가를 BHR(100)에 저장하며, 예측이 에러인 것으로 판명되는 경우에 오예측 복원 동작의 부분으로서 이후에 BHR(100)을 교정한다. 도면들은 명확화를 위하여 이러한 구현 특징을 반영하지 않는다.
BHR(100)를 사용하는 브랜치 예측자의 효율성을 감소시킬 수 있는 공통 코드 구조는 루프이다. 루프는 루프를 통과할때마다 증가되는 인덱스 변수가 루프 종료 값에 도달하였는지의 여부와 같은 루프-종료 조건을 테스트하는 조건부 브랜치 명령으로 끝난다. 만약 그렇치 않으면, 실행 브랜치들은 다른 반복을 위하여 루프의 시작으로 되돌아가며 다른 루프-종료 조건부 브랜치 평가가 수행될 것이다. n-비트 BHR(100)과 관련하여, 루프들에 관한 3가지 관심있는 경우가 존재하며, 즉 루프가 실행되지 않으며, 루프가 m번 반복을 통해 실행되며(여기서, m<n), 루프는 m번 실행된다(여기서 m>=n).
만일 루프가 실행되지 않으면, 루프의 시작부에서의 순방향 브랜치는 루프 몸체 전반에 걸쳐 분기하며, 이에 따라 하나의 테이큰 브랜치 평가가 수행된다. 이는 BHR(100)의 과거 브랜치 평가 히스토리가 단지 하나의 브랜치 평가에 의하여 교체되기 때문에 BHR(100)에 최소의 영향을 미친다(사실상, 예측의 정확성은 이러한 브랜치의 평가와의 상관에 의하여 개선된다).
루프가 m번 반복들을 통해 실행되면(여기서 m>=n), 루프-종료 브랜치 명령의 "테이큰" 역방향 브랜치들은 BHR(100)을 포화시킨다. 즉, 루프의 끝에서, n-비트 BHR은 루프 반복들로부터 발생하는 테이큰 평가들의 긴 시리즈(series)에 대응하며 루프가 종료될때 단일 비-테이큰 평가로 끝나는, 정확하게 n-1개의 1들 및 이 다음의 단일 0를 포함할 것이다. 이는 (로컬 또는 글로벌 BHR(100)에 대하여) 이전 브랜치 평가들과의 모든 상관들이 손실되기 때문에 BHR(100)의 효율성을 손상시킨다. 이러한 경우에, BHR(100)은 이전 브랜치 평가들과 브랜치 명령의 상관을 반영한 브랜치 명령을 포함하는 엔트리보다 오히려 (BPT 인덱스 로직(104)에 대한 다른 입력들에 따라) 주어진 브랜치 명령에 대한 동일한 BPT(102) 엔트리에 매핑될 것이다.
부가적으로, 포화된 BHR(100)은 BPT(102)의 에일리어싱(aliasing)을 증가시킬 수 있다. 즉, 많은 반복들을 가진 루프들후의 모든 브랜치 명령들은 BHR(100)이 BPT(102)를 직접 인덱싱하는 경우에 동일한 BPT(102) 엔트리에 매핑될 것이다. BHR(100)이 다른 정보와 결합되는 경우에 조차, 에일리어싱의 기회가 증가된다. 이는 루프후의 브랜치 명령 뿐만아니라 BPT(102)의 엔트리에 에일리어싱하는 모든 브랜치 명령들에 대한 예측의 정확성에 악영향을 미친다.
만일 루프가 m번 반복들을 통해 실행되면(여기서, m<n), BHR(100)은 포화되지 않으며, 임의의 동일한 이전 브랜치 히스토리가 유지된다. 그러나, 이전 브랜치 평가 히스토리를 나타내는 비트들은 m 비트 위치들 만큼 변위된다. 특히, m이 변화하는 경우에, 이는 브랜치 예측에 대하여 두가지 해로운 현상들을 가진다. 첫째, 브랜치 명령은 이전 브랜치 평가들과의 동일한 상관을 포착하기 위하여 BPT(102)의 많은 수의 엔트리들에 매핑될 것이며, 이는 BHR(30)에 영향을 미치는 루프-종료 브랜치없이 요구되는 동일한 수의 브랜치 명령들에 대하여 동일한 정확성을 지원하기 위하여 큰 BPT(102)를 요구한다. 둘째, BPT(102)의 브랜치 예측자들은 "트레인(train)"에 대하여 더 길게 점유할 것이며, 이에 따라 BPT(102)가 정확한 브랜치 예측들을 제공하기 시작하기전에 실행되어야 하는 코드량이 증가된다.
예로서, 8-비트 BHR(100) 및 브랜치 명령들 A-H를 가진 코드 세그먼트 및 이 다음의 루프와 그 다음의 브랜치 명령 X를 고려하라. 브랜치 X는 브랜치들 G 및 H의 평가 히스토리와 강하게 상관된다. 중간(intervening) 루프의 다양한 반복들은 X를 예측하는 시간에 이하의 테이블 1에 제시된 BHR 결과들을 생성할 것이다.
Figure 112009044298314-pct00006
테이블 1: 다양한 수의 루프 반복후 BHR(100) 콘텐츠들
이러한 예에서, 예측된 브랜치 명령 X 및 브랜치 G 및 H의 이전 평가간의 적절한 상관은 각각의 경우에 BHR(100)에 제공된다. 그러나, 이는 BHR(100)에서 다른 위치에 있으며, 결과적으로 각각의 경우는 상이한 BPT(102) 엔트리에 매핑될 것이다. 이는 BPT(102) 공간을 낭비하며, 브랜치 예측 트레이닝(training) 시간을 증가시키며, BPT(102)의 에일리어싱의 기회들을 증가시키며, 이들 모두는 예측의 정확성을 감소시킨다.
하나 이상의 실시예들에 있어서, BHR에 루프-종료 브랜치 명령 평가들을 저장하는 해로운 현상들은 루프-종료 브랜치 명령들을 식별하고 루프-종료 명령들에 응답하여 BHR의 업데이트를 억제함으로써 개선된다. 루프-종료 명령들은 다양한 방식으로 식별된다.
일 실시예에 있어서, 브랜치 예측 방법은 브랜치 명령의 특성에 응답하여 브랜치 명령의 실행시에 BHR의 업데이트를 억제하는 단계를 선택적으로 포함한다.
다른 실시예에 있어서, 프로세서는 조건부 브랜치 명령들의 평가를 예측하도록 동작하는 브랜치 예측자, 및 브랜치 예측자로부터의 예측에 기초하여 명령들을 추론적으로 페치하여 실행하도록 동작하는 명령 실행 파이프라인을 포함한다. 프로세서는 또한 조건부 브랜치 명령들의 평가를 저장하도록 동작하는 BHR, 및 브랜치 명령의 특성에 응답하여 조건부 브랜치 명령의 평가를 저장하는 것을 억제하도록 동작하는 제어 회로를 포함한다.
또 다른 실시예에 있어서, 프로그램 코드에 응답하여 명령들을 생성하도록 동작하는 컴파일러 또는 어셈블러는 코드 루프들을 종료하는 조건부 브랜치 명령들을 표시하도록 동작하는 루프-종료 브랜치 명령 마킹(marking) 함수를 포함한다.
도 2은 종래의 브랜치 예측자 회로의 기능적 블록도.
도 2는 프로세서의 기능적 블록도.
도 3은 브랜치 명령을 실행하는 방법을 기술한 흐름도.
도 4는 하나 이상의 마지막 브랜치 PC 레지스터들을 포함하는 브랜치 예측자를 도시한 기능적 블록도.
도 2은 프로세서(10)의 기능적 블록도를 도시한다. 프로세서(10)는 제어 로직(14)에 따라 명령 실행 파이프라인(12)에서 명령들을 실행한다. 일부 실시예들에 있어서, 파이프라인(12)은 다수의 병렬 파이프라인들을 가진 수퍼스칼라 설계(superscalar design)일 수 있다. 파이프라인(12)은 파이프 스테이지들로 구성된 다양한 레지스터들 또는 래치들(16) 및 하나 이상의 산술 로직 연산장치들(ALU)(18)을 포함한다. 범용 레지스터(GPR) 파일(20)은 메모리 계층의 상부를 포함하는 레지스터들을 제공한다.
파이프라인(12)은 명령 캐시(I-캐시)(22)로부터 명령들을 페치하며, 메모리 어드레스 변환 및 접근허가(permission)는 명령-측 변환 참조 버퍼(ITLB:Instruction-side Translation Lookaside Buffer)(24)에 의하여 관리된다. 조건부 브랜치 명령들이 파이프라인(12)에서 초기에 디코딩될때, 브랜치 예측자(26)는 브랜치 동작을 예측하며, 명령 프리페치 유닛(28)에 예측을 제공한다. 명령 프리페치 유닛(28)은 "테이큰" 브랜치 예측들을 위하여 파이프라인(12)에서 계산된 브랜치 타겟 어드레스에서 또는 "비-테이큰"인 것으로 예측된 브랜치에 대한 다음 순차 어드레스에서 명령 캐시(22)로부터 명령들을 추론적으로 페치한다. 둘중 어떤 경우라도, 프리페치된 명령들은 추론적 실행을 위하여 파이프라인(12)에 로드된다.
브랜치 예측자(26)는 브랜치 히스토리 레지스터(BHR)(30), 브랜치 예측자 테이블(BPT)(32), BPT 인덱스 로직(34) 및 BHR 업데이트 로직(36)을 포함한다. 브랜치 예측자(26)는 이하에서 더 상세히 기술되는 하나 이상의 마지막 브랜치 PC 레지스터들(38)을 부가적으로 포함할 수 있다.
데이터는 데이터 캐시(D-캐시)(40)로부터 액세스되며, 메모리 어드레스 변환 및 접근 허가들은 주 변환 참조 버퍼(TLB: Translation Lookaside Buffer)(42)에 의하여 관리된다. 다양한 실시예들에 있어서, ITLB(24)는 TLB(42)의 부분의 복사본(copy)을 포함할 수 있다. 대안적으로, ITLB(24) 및 TLB(42)는 통합될 수 있다. 유사하게, 프로세서(10)의 다양한 실시예들에 있어서, I-캐시(22) 및 D-캐시(40)는 통합되거나 또는 단일화될 수 있다. I-캐시(22) 및/또는 D-캐시(40)의 미스들(miss)은 메모리 인터페이스(46)의 제어하에서 주(오프-칩) 메모리(44)에 대한 액세스를 야기한다.
프로세서(10)는 다양한 주변장치들(50)에 대한 액세스를 제어하는 입력/출력(I/O) 인터페이스(46)를 포함할 수 있다. 당업자는 프로세서(10)의 다양한 변형들이 가능하다는 것을 인식할 것이다. 예컨대, 프로세서(10)는 I 및 D 캐시들(22, 40)중 하나 또는 둘다에 대한 제 2레벨(L2) 캐시를 포함할 수 있다. 또한, 프로세서(10)에 도시된 기능 블록들중 하나 이상은 특정 실시예에서 생략될 수 있다.
하나 이상의 실시예들에 따르면, 브랜치 예측 정확성은 루프-종료 브랜치들이 브랜치 예측자(26)의 하나 이상의 BHR들(30)에 오류를 일으키지 않도록 함으로써 개선된다. 이러한 프로세스는 도 3의 흐름도로서 도시된다. 조건부 브랜치 명령은 디코딩된다(블록 52). 브랜치가 루프-종료 브랜치인지에 대한 결정이 이루어진다(블록 54). 만일 그렇치 않으면, BHR(30)은 브랜치 평가, 즉 브랜치 명령이 "테이큰" 또는 "비-테이큰"으로서 평가되는지의 여부를 기록하기 위하여 업데이트된다(56). 그 다음에, 브랜치 타겟 어드레스 또는 다음 순차 어드레스에서 실행이 계속된다(블록 58). 만일 브랜치가 루프-종료 브랜치이면, 루프-종료 브랜치 명령의 브랜치 평가를 기록하기 위한 BHR(30)의 업데이팅은 억제된다(블록 54로부터 블록 58로의 경로에 의하여 표시된 바와같이). 이러한 방식으로, 루프 반복 브랜치들은 관련 브랜치 평가 히스토리를 교체함으로써 BHR(30)의 콘텐츠들을 오염시키지 않는다. 루프-종료 브랜치 명령으로서 브랜치 명령을 식별하는 질의(블록 54)는 다양한 방식으로 수행될 수 있다.
루프의 끝에서 부터 루프의 시작부로 역방향으로 분기함으로써 루프들이 반복된다. 일 실시예에 따르면, 브랜치 명령 어드레스보다 작은 브랜치 타겟 어드레스를 가진 모든 조건부 브랜치 명령 또는 PC, 즉 역방향 브랜치는 루프-종료 브랜치 명령인 것으로 추정되며 BHR(30)의 업데이트를 막는다. 이러한 실시예는 단순화의 장점을 제공한다. 브랜치 명령 PC는 브랜치 명령이 BHR(30) 업데이트 시간에 파이프라인에서 실제로 평가될때 브랜치 타겟 어드레스(BTA)와 비교된다. 만일 BTA<PC이면, BHR(30)은 업데이트되지 않는다. 이러한 실시예는 브랜치 타겟 어드레스가 결정될때 어드레스 비교를 요구하는 단점을 가지며, 또한 루프-종료 브랜치들이 아닌 일부 역방향 브랜치들이 BHR(30)에 기록된 그들의 평가들을 가지지 않는다는 단점을 가진다.
루프-종료 브랜치를 검출하기 위한 다른 방식은 동일한 브랜치 명령의 반복된 실행을 인지(recognize)하는 것이다. 도 4에 도시된 일 실시예에 있어서, 마지막 브랜치 PC(LBPC) 레지스터(38)는 평가가 BHR(30)에 저장되는 마지막 브랜치 명령의 PC를 저장한다. 단순한 루프의 경우에, 만일 브랜치 명령의 PC가 LBPC(38)와 매칭되면, 즉 브랜치 명령이 평가된 마지막 브랜치 명령이면, 브랜치 명령은 루프-종료 브랜치 명령인 것으로 추정되며, BHR(30)의 추가 업데이트가 억제된다. 도 1을 참조로하여 앞서 논의된 바와같이, 도 4가 BHR 업데이트 로직(36)의 실제 브랜치 평가와 비교되는 LBPC(38)의 콘텐츠들을 도시하는 반면에, 임의의 주어진 구현에서 LBPC(38)는 예측된 브랜치 평가와 비교될 수 있으며, BHR(30)는 오예측의 경우에 교정된다. 이러한 실시예는 BHR(30)로부터 단지 하나의 이전 브랜치 평가를 교체하는, 루프의 제 1반복만을 저장한다. 이러한 실시예는 컴파일러 지원을 필요로 하지 않으며, 브랜치의 방향은 BHR(30) 업데이트 시간에 결정될 필요가 없다.
루프는 하나 이상의 네스트형(nest) 루프들을 포함하거나 또는 루프내의 다른 브랜치들을 포함할 수 있다. 이러한 경우에, 내부 루프에 의한 BHR(30)의 포화는 LBPC 방식에 의하여 억제될 수 있으나, 외부 루프-종료 브랜치들은 계속해서 BHR(30)에 저장될 것이다. 일 실시예에서는 두개 이상의 LBPC 레지스터들(38)이 제공될 수 있으며, 연속적으로 평가된 브랜치 명령들의 PC들은 대응 LBPC 레지스터들(LBPC0, LBPC1, ...,LBPCM)(38)에 저장된다. BHR(30)의 업데이팅은 브랜치 명령의 PC가 LBPCN 레지스터들(38)의 일부와 매칭되는 경우에 억제될 수 있다.
루프-종료 브랜치 명령들은 컴파일러 또는 어셈블러에 의하여 정적으로 마크(mark)될 수 있다. 일 실시예에 있어서 컴파일러는 루프-종료 브랜치들, 예컨대 "BRLP"를 위해서만 사용되는 특정 타입의 브랜치 명령을 생성한다. BRLP 명령은 인지되며, BHR(30)은 BRLP 명령이 실행 파이프 스테이지에서 평가될때 결코 업데이트되지 않는다. 다른 실시예에 있어서, 컴파일러 또는 어셈블러는 예컨대 op 코드에 하나 이상의 미리 정해진 비트들을 세팅함으로써 브랜치 명령에 루프-종료 브랜치 표시자를 삽입할 수 있다. 루프-종료 브랜치 비트들이 검출되며, BHR(30)의 업데이트는 브랜치 명령이 실행 파이프 스테이지에서 실행될때 억제된다. 루프-종료 브랜치들의 정적 식별은 루프-종료 식별 기능을 컴파일러 또는 어셈블러에 이동시킴으로써 하드웨어 및 계산의 복잡성을 감소시킨다.
조건부 브랜치 명령은 예컨대 브랜치 명령 어드레스 또는 PC, 명령 타입, 및 op 코드에서 표시자 비트들의 존재를 포함하는 많은 특성들을 가진다. 여기에서 사용된 바와같이, 브랜치 동작의 특성들, 및/또는 브랜치와 관련한 프로그램의 특성들은 브랜치 명령의 특성들로 고려된다. 예컨대, 브랜치 명령 PC가 하나 이상의 LBPC 레지스터들(38)의 콘텐츠들과 매칭되는지의 여부 그리고 브랜치 타겟 어드레스가 브랜치 명령 PC와 관련하여 순방향 또는 역방향으로 이동되는지의 여부는 브랜치 명령의 특성들이다.
비록 본 발명이 본 발명의 특정 특징들, 양상들 및 실시예들과 관련하여 기술되었을지라도, 다수의 변형, 수정 및 다른 실시예들이 본 발명의 범위내에서 가능하며 따라서 모든 변형들, 수정들 및 실시예들이 본 발명의 범위내에 있는 것으로 간주된다는 것이 명백할 것이다. 따라서, 본 발명의 실시예들은 예시적으로 해석되어야 하며 첨부된 청구범위의 의미 및 균등 범위내의 모든 변화들은 본 발명내에 포함된다.

Claims (22)

  1. 브랜치 명령이 루프-종료(loop-ending) 브랜치 명령이라는 결정 단계에 응답하여, 상기 브랜치 명령의 실행시에 브랜치 히스토리 레지스터(BHR:Branch History Register)의 업데이트를 선택적으로 억제(suppress)하는 단계를 포함하는, 브랜치 명령 방법.
  2. 제 1항에 있어서, 상기 결정 단계는 임의의 역방향(backward) 브랜치가 루프-종료 브랜치라는 것을 추정하는 단계를 포함하는, 브랜치 명령 방법
  3. 제 1항에 있어서, 상기 결정 단계는 동일한 브랜치 명령의 반복된 실행을 인지(recognize)하는 단계를 포함하는, 브랜치 명령 방법
  4. 제 1항에 있어서, 상기 브랜치 명령의 PC는 상기 BHR을 업데이트하는 마지막 브랜치 명령의 PC를 저장하는 마지막 브랜치 PC(LBPC) 레지스터의 콘텐츠들과 매칭되는, 브랜치 명령 방법
  5. 제 4항에 있어서, 상기 브랜치 명령의 PC는 상기 BHR을 업데이트하는 다수의 마지막 브랜치 명령의 PC들을 저장하는 다수의 LBPC 레지스터들중 일부 레지스터의 콘텐츠들과 매칭되는, 브랜치 명령 방법
  6. 제 1항에 있어서, 상기 결정 단계는 상기 브랜치 명령이 브랜치들을 종료시키기 위하여 컴파일러에 의하여 생성된 고유 브랜치 명령인 것을 결정하는 단계를 포함하는, 브랜치 명령 방법
  7. 제 1항에 있어서, 상기 결정 단계는 상기 브랜치 명령이 루프-종료 브랜치 명령이라는 것을 표시하는 하나 이상의 비트들을 상기 브랜치 명령이 포함한다는 것을 결정하는 단계를 포함하는, 브랜치 명령 방법
  8. 조건부 브랜치 명령들의 평가를 예측하도록 동작하는 브랜치 예측자(branch predictor);
    상기 브랜치 예측자로부터의 예측에 기초하여 명령들을 추론적으로(speculatively) 페치하여 실행하도록 동작하는 명령 실행 파이프라인;
    상기 조건부 브랜치 명령들의 평가를 저장하도록 동작하는 브랜치 히스토리 레지스터(BHR); 및
    상기 브랜치 명령이 루프-종료 브랜치 명령이라는 결정에 응답하여 조건부 브랜치 명령의 평가를 저장하는 것을 억제하도록 동작하는 제어 회로를 포함하는, 프로세서.
  9. 제 8항에 있어서, 상기 BHR을 업데이트하는 브랜치 명령의 PC를 저장하도록 동작하는 마지막 브랜치 PC(LBPC) 레지스터를 더 포함하며;
    상기 제어 회로는 상기 브랜치 명령의 PC가 상기 LBPC 레지스터의 콘텐츠들과 매칭되는 경우에 조건부 브랜치 명령의 평가를 저장하는 것을 억제하도록 동작 하는, 프로세서.
  10. 제 9항에 있어서, 상기 BHR을 업데이트하는 다수의 브랜치 명령의 PC들을 저장하도록 동작하는 다수의 LBPC 레지스터들을 더 포함하며;
    상기 제어회로는 상기 브랜치 명령의 PC가 임의의 LBPC 레지스터의 콘텐츠들과 매칭되는 경우에 조건부 브랜치 명령의 평가를 저장하는 것을 억제하도록 동작하는, 프로세서.
  11. 제 8항에 있어서, 상기 제어회로는 상기 브랜치 명령이 루프-종료 명령이라는 표시자를 포함하는 경우에 조건부 브랜치 명령의 평가를 저장하는 것을 억제하도록 동작하는, 프로세서.
  12. 제 11항에 있어서, 상기 브랜치 명령이 루프-종료 명령이라는 표시자는 명령 타입(type)인, 프로세서.
  13. 제 8항에 있어서, 상기 제어 회로는 브랜치 명령 타겟 어드레스가 상기 브랜치 명령 PC보다 작은 경우에 조건부 브랜치 명령의 평가를 저장하는 것을 억제하도록 동작하는, 프로세서.
  14. 프로그램 코드에 응답하여 명령들을 생성하고 생성된 명령들에 응답하여 브랜치 히스토리 레지스터(BHR: Branch History Register)의 업데이트를 억제하도록 구성된 프로세서를 포함하며, 상기 프로그램 코드는 코드 루프들을 종료하는 조건부 브랜치 명령들을 표시하도록 동작하는 루프-종료 브랜치 명령 마킹(marking) 함수를 포함하는, 장치.
  15. 제 14항에 있어서, 상기 루프-종료 브랜치 명령 마킹 함수는 각각의 루프를 종료하기 위한 고유 타입의 브랜치 명령을 생성하도록 동작하는, 장치.
  16. 제 14항에 있어서, 상기 루프-종료 브랜치 명령 마킹 함수는 루프를 종료하는 각각의 조건부 브랜치 명령에 루프-종료 표시자를 삽입하도록 동작하는, 장치.
  17. 제 16항에 있어서, 상기 루프-종료 표시자는 조건부 브랜치 명령 op 코드에 미리 결정된 파일로 삽입된 하나 이상의 비트들을 포함하는, 장치.
  18. 이전의 조건부 브랜치 명령들의 평가들을 저장하는 브랜치 히스토리 레지스터(BHR)를 사용하는 브랜치 예측 방법으로서,
    루프-종료 브랜치를 검출하는 단계; 및
    검출된 루프-종료 브랜치에 응답하여, 연관된 브랜치 명령의 평가를 저장하는 상기 BHR의 업데이트를 억제하는 단계를 포함하는, 브랜치 예측 방법.
  19. 제 18항에 있어서, 상기 루프-종료 브랜치 검출 단계는 상기 BHR을 업데이트하기 위하여 마지막 브랜치 명령의 PC를 저장하는 마지막 브랜치 PC(LBPC) 레지스터의 콘텐츠 및 상기 연관된 브랜치 명령의 PC간의 매치(match)를 검출하는 단계를 포함하는, 브랜치 예측 방법.
  20. 제 18항에 있어서, 상기 루프-종료 브랜치 검출 단계는 상기 BHR을 업데이트하기 위하여 다수의 마지막 브랜치 명령의 PC들을 저장하는 다수의 LBPC 레지스터들중 임의의 레지스터의 콘텐츠들 및 상기 연관된 브랜치 명령의 PC간의 매치(match)를 검출하는 단계를 포함하는, 브랜치 예측 방법.
  21. 제 18항에 있어서, 상기 루프-종료 브랜치 검출 단계는 브랜치들을 종료하기 위하여 컴파일러에 의하여 생성된 고유 브랜치 명령을 디코딩하는 단계를 포함하는, 브랜치 예측 방법.
  22. 제 18항에 있어서, 상기 루프-종료 브랜치 검출 단계는 루프-종료 브랜치 명령이라는 것을 표시하는 연관된 브랜치 명령 op 코드의 하나 이상의 비트들을 검출하는 단계를 포함하는, 브랜치 예측 방법.
KR1020077021427A 2005-02-24 2006-02-24 루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제 KR100930199B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/066,508 US20060190710A1 (en) 2005-02-24 2005-02-24 Suppressing update of a branch history register by loop-ending branches
US11/066,508 2005-02-24
PCT/US2006/006531 WO2006091778A2 (en) 2005-02-24 2006-02-24 Suppressing update of a branch history register by loop-ending branches

Publications (2)

Publication Number Publication Date
KR20070105365A KR20070105365A (ko) 2007-10-30
KR100930199B1 true KR100930199B1 (ko) 2009-12-07

Family

ID=36577533

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077021427A KR100930199B1 (ko) 2005-02-24 2006-02-24 루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제

Country Status (11)

Country Link
US (1) US20060190710A1 (ko)
EP (2) EP1851620B1 (ko)
JP (3) JP5198879B2 (ko)
KR (1) KR100930199B1 (ko)
CN (2) CN101160561B (ko)
AT (1) ATE483198T1 (ko)
DE (1) DE602006017174D1 (ko)
ES (1) ES2351163T3 (ko)
IL (1) IL185362A0 (ko)
MX (1) MX2007010386A (ko)
WO (1) WO2006091778A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
JP4393317B2 (ja) * 2004-09-06 2010-01-06 富士通マイクロエレクトロニクス株式会社 メモリ制御回路
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US8904155B2 (en) * 2006-03-17 2014-12-02 Qualcomm Incorporated Representing loop branches in a branch history register with multiple bits
US7962724B1 (en) * 2007-09-28 2011-06-14 Oracle America, Inc. Branch loop performance enhancement
US7956552B2 (en) * 2008-03-18 2011-06-07 International Business Machiness Corporation Apparatus, system, and method for device group identification
US20090327674A1 (en) * 2008-06-27 2009-12-31 Qualcomm Incorporated Loop Control System and Method
JP5423156B2 (ja) * 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
CN101807145B (zh) * 2010-04-16 2012-12-26 浙江大学 栈式分支预测器的硬件实现方法
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
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
US9304776B2 (en) 2012-01-31 2016-04-05 Oracle International Corporation System and method for mitigating the impact of branch misprediction when exiting spin loops
US9268569B2 (en) 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9858077B2 (en) 2012-06-05 2018-01-02 Qualcomm Incorporated Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US20140156978A1 (en) * 2012-11-30 2014-06-05 Muawya M. Al-Otoom Detecting and Filtering Biased Branches in Global Branch History
US10503538B2 (en) * 2014-06-02 2019-12-10 International Business Machines Corporation Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed
US10289414B2 (en) 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
US10261826B2 (en) 2014-06-02 2019-04-16 International Business Machines Corporation Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made
US10235172B2 (en) 2014-06-02 2019-03-19 International Business Machines Corporation Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions
US10635446B2 (en) * 2015-09-24 2020-04-28 Qualcomm Incorporated Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
US9639370B1 (en) * 2015-12-15 2017-05-02 International Business Machines Corporation Software instructed dynamic branch history pattern adjustment
GB2548603B (en) * 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
US20180349144A1 (en) * 2017-06-06 2018-12-06 Intel Corporation Method and apparatus for branch prediction utilizing primary and secondary branch predictors
US10613867B1 (en) 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
CN111177663B (zh) * 2019-12-20 2023-03-14 青岛海尔科技有限公司 编译器的代码混淆改进方法及装置、存储介质、电子装置
US11941403B2 (en) * 2020-06-19 2024-03-26 Arm Limited Selective prediction based on correlation between a given instruction and a subset of a set of monitored instructions ordinarily used to generate predictions for that given instruction
US11113067B1 (en) * 2020-11-17 2021-09-07 Centaur Technology, Inc. Speculative branch pattern update
CN112988234A (zh) * 2021-02-06 2021-06-18 江南大学 一种面向不稳定控制流循环体的分支指令辅助预测器
US11868779B2 (en) * 2021-09-09 2024-01-09 International Business Machines Corporation Updating metadata prediction tables using a reprediction pipeline
US11928474B2 (en) * 2022-06-03 2024-03-12 Microsoft Technology Licensing, Llc Selectively updating branch predictors for loops executed from loop buffers in a processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175827A (en) * 1987-01-22 1992-12-29 Nec Corporation Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table
US5511178A (en) * 1993-02-12 1996-04-23 Hitachi, Ltd. Cache control system equipped with a loop lock indicator for indicating the presence and/or absence of an instruction in a feedback loop section
US6253373B1 (en) * 1997-10-07 2001-06-26 Hewlett-Packard Company Tracking loop entry and exit points in a compiler

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS635442A (ja) * 1986-06-26 1988-01-11 Matsushita Electric Ind Co Ltd プログラムル−プ検出記憶装置
JP2555664B2 (ja) * 1987-01-22 1996-11-20 日本電気株式会社 分岐ヒストリテーブル書込制御方式
JPH0715662B2 (ja) * 1987-07-14 1995-02-22 日本電気株式会社 命令の先取りを行なう情報処理装置
EP0623874A1 (en) * 1993-05-03 1994-11-09 International Business Machines Corporation Method for improving the performance of processors executing instructions in a loop
US5404473A (en) * 1994-03-01 1995-04-04 Intel Corporation Apparatus and method for handling string operations in a pipelined processor
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
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
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US6427206B1 (en) * 1999-05-03 2002-07-30 Intel Corporation Optimized branch predictions for strongly predicted compiler branches
JP2001166948A (ja) * 1999-12-07 2001-06-22 Nec Corp プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
JP4243463B2 (ja) * 2002-08-19 2009-03-25 株式会社半導体理工学研究センター 命令スケジューリングのシミュレーション方法とシミュレーションシステム
US7290089B2 (en) * 2002-10-15 2007-10-30 Stmicroelectronics, Inc. Executing cache instructions in an increased latency mode
JP3893463B2 (ja) * 2003-04-23 2007-03-14 国立大学法人九州工業大学 キャッシュメモリ、及びキャッシュメモリの電力削減方法
US20050102659A1 (en) * 2003-11-06 2005-05-12 Singh Ravi P. Methods and apparatus for setting up hardware loops in a deeply pipelined processor
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175827A (en) * 1987-01-22 1992-12-29 Nec Corporation Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table
US5511178A (en) * 1993-02-12 1996-04-23 Hitachi, Ltd. Cache control system equipped with a loop lock indicator for indicating the presence and/or absence of an instruction in a feedback loop section
US6253373B1 (en) * 1997-10-07 2001-06-26 Hewlett-Packard Company Tracking loop entry and exit points in a compiler

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Improving branch prediction accuracy by reducing pattern history table interference"

Also Published As

Publication number Publication date
CN101160561A (zh) 2008-04-09
JP2011100466A (ja) 2011-05-19
ATE483198T1 (de) 2010-10-15
KR20070105365A (ko) 2007-10-30
MX2007010386A (es) 2007-10-18
CN101160561B (zh) 2013-10-16
DE602006017174D1 (de) 2010-11-11
CN103488463B (zh) 2016-11-09
EP2270651A1 (en) 2011-01-05
EP1851620B1 (en) 2010-09-29
JP2015007995A (ja) 2015-01-15
WO2006091778A3 (en) 2007-07-05
CN103488463A (zh) 2014-01-01
IL185362A0 (en) 2008-02-09
ES2351163T3 (es) 2011-02-01
JP2008532142A (ja) 2008-08-14
JP5198879B2 (ja) 2013-05-15
US20060190710A1 (en) 2006-08-24
WO2006091778A2 (en) 2006-08-31
EP1851620A2 (en) 2007-11-07

Similar Documents

Publication Publication Date Title
KR100930199B1 (ko) 루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제
EP2479662B1 (en) Representing loop branches in a branch history register with multiple bits
KR101074621B1 (ko) 프로액티브 브랜치 타겟 어드레스 캐시 관리를 위한 방법들 및 장치
JP2008532142A5 (ko)
JP5335946B2 (ja) 電力的に効率的な命令プリフェッチ機構
JP2011100466A5 (ko)
KR101016541B1 (ko) 슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
US20070266228A1 (en) Block-based branch target address cache
JP2009530754A5 (ko)
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141030

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee