KR20090017687A - 슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시 - Google Patents

슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시 Download PDF

Info

Publication number
KR20090017687A
KR20090017687A KR1020097000082A KR20097000082A KR20090017687A KR 20090017687 A KR20090017687 A KR 20090017687A KR 1020097000082 A KR1020097000082 A KR 1020097000082A KR 20097000082 A KR20097000082 A KR 20097000082A KR 20090017687 A KR20090017687 A KR 20090017687A
Authority
KR
South Korea
Prior art keywords
instruction
branch
block
btac
instructions
Prior art date
Application number
KR1020097000082A
Other languages
English (en)
Other versions
KR101016541B1 (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 KR20090017687A publication Critical patent/KR20090017687A/ko
Application granted granted Critical
Publication of KR101016541B1 publication Critical patent/KR101016541B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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

슬라이딩-윈도우 블록-기반 브랜치 타깃 어드레스 캐시(BTAC)는 다수의 엔트리들을 포함하며, 각각의 엔트리는 선택된 것으로 평가된 적어도 하나의 브랜치 명령어를 포함하는 명령어들의 블록과 연관되고 블록의 제 1 명령어의 어드레스와 연관된 태그를 가진다. 블록들은 각각 I-캐시와 같은 메모리로부터 페치된 명령어들의 그룹에 대응한다. 브랜치 명령어가 2개 이상의 페치 그룹들에 포함되는 경우에, 브랜치 명령어는 또한 BTAC 엔트리들과 연관된 2개 이상의 명령어 블록들에 포함된다. 슬라이딩-윈도우 블록-기반 BTAC는 선택된 브랜치 명령어들중 적어도 하나를 각각 포함하는 여러 명령어 블록들과 연관된 BTAC 엔트리들을 저장함으로서 각각의 BTAC 엔트리에 다수의 BTA 저장 공간을 제공하지 않고 동일한 명령어 블록에 포함되는 2개 이상의 선택된 브랜치 명령어들의 브랜치 타깃 어드레스(BTA)를 저장한다.

Description

슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시{SLIDING-WINDOW, BLOCK-BASED BRANCH TARGET ADDRESS CACHE}
본 발명은 일반적으로 프로세서 분야, 특히 슬라이딩 윈도우 조직을 가진 블록-기반 브랜치 타깃 어드레스 캐시에 관한 것이다.
마이크로프로세서들은 다양한 애플리케이션들에서 계산 작업들을 수행한다. 프로세서 성능을 개선하는 것, 즉 강화된 소프트웨어를 통해 고속 연산을 실현하고 및/또는 기능을 향상시킴으로서 제품을 개선하는 것은 영원한 설계 목표이다. 휴대용 전자장치들과 같은 많은 임베디드(embedded) 애플리케이션들에서, 전력을 보존하고 칩 크기를 감소시키는 것 또한 프로세서 설계 및 구현시 중요한 목표이다.
대부분의 최근 프로세서들은 다수의 실행 단계들을 각각 가진 순차 명령어들이 실행시 병렬 처리되는 파이프라인 아키텍처를 사용한다. 순차 명령어 스트림에서 명령어들간에 병렬성(parallelism)을 이용하는 이러한 능력은 프로세서의 성능을 개선하는데 상당히 기여하였다. 이상적인 조건들하에서 그리고 하나의 사이클에서 각각의 파이프 스테이지를 완료하는 프로세서에서, 파이프라인을 필링(filling)하는 짧은 초기 프로세스후에, 명령어는 사이클마다 실행을 완료할 수 있다.
이러한 이상적인 조건들은 명령어들간의 데이터 종속성들(dependency)(데이터 위험들(data hazard)), 브랜치들과 같은 제어 종속성들(제어 위험들), 프로세서 자원 할당 충돌들(구조적 위험들), 인터럽트들, 캐시 미스들(miss) 등을 포함하는 다양한 요인들로 인하여 실제로 실현되지 못한다. 프로세서 설계의 주요 목표는 이들 위험들을 방지하고 파이프라인을 최대로(full) 유지하는 것이다.
모든 현실 세계 프로그램들은 비조건부 또는 조건부 브랜치 명령어들을 포함할 수 있는 브랜치 명령어들을 포함한다. 브랜치 명령어들의 실제 브랜칭 동작은 종종 명령어가 파이프라인에서 오래(deep) 평가될때까지 알려지지 않는다. 이는 프로세서가 브랜치 명령어 이후에 페치할 명령어들이 어느 명령어들인지를 알지 못하고 브랜치 명령어가 평가될때까지 이러한 사항을 알지 못하기 때문에 파이프라인을 스톨링하는 제어 위험(hazard)를 유발한다. 대부분의 최근 프로세서들은 다양한 형식의 브랜치 예측을 사용하며, 이에 따라 조건부 브랜치 명령어들 및 브랜치 타깃 어드레스들의 브랜칭 동작은 파이프라인에서 초기에 예측되며 프로세서는 브랜치 예측에 기초하여 명령어들을 순이론적으로 페치 및 실행하여 파이프라인을 최대로 유지한다. 만일 예측이 정확하면, 성능은 최대화되며 전력 소비는 최소화된다. 브랜치 명령어가 실제로 평가될때, 만일 브랜치가 오예측(mispredict)되면, 순이론적으로 페치된 명령어들은 파이프라인으로부터 플러시(flush)되어야 하며, 새로운 명령어들은 정확한 브랜치 타깃 어드레스로부터 페칭된다. 오예측된 브랜치들은 프로세서 성능 및 전력 소비에 악영향을 미친다.
브랜치 예측에 대한 두가지 요소, 즉 조건 평가 및 브랜치 타깃 어드레스가 존재한다. 조건 평가(물론, 단지 조건부 브랜치 명령어들에 관계 있는 평가)는 2진 결정(binary decision)이며, 즉 브랜치는 다른 코드 시퀀스로 점프하는 실행을 야기하도록 선택되거나 또는 선택되지 않으며, 이 경우에 프로세서는 조건부 브랜치 명령어 후에 다음 순차 명령어를 실행한다. 브랜치 타깃 어드레스(BTA)는 선택된 것으로 평가한 조건부 브랜치 명령어 또는 비조건부 브랜치 명령어에 대한 브랜치들을 제어하는 어드레스이다. 일부 공통 브랜치 명령어들은 명령어 op-코드의 BTA를 포함하거나 또는 BTA가 용이하게 평가될 수 있도록 하는 오프셋(offset)을 포함한다. 다른 브랜치 명령어들에 있어서, BTA는 파이프라인에서 오래동안 계산되지 않으며 따라서 예측되어야 한다.
BTA 예측의 하나의 공지된 기술은 브랜치 타깃 어드레스 캐시(BTAC)를 이용한다. 공지된 BTAC는 브랜치 명령어 어드레스(BIA)에 의하여 인덱싱된 완전 연관 캐시(fully associative cache)이며, 각각의 데이터 위치(또는 캐시 "라인")는 단일 BTA를 포함한다. 브랜치 명령어가 선택된 파이프라인에서 평가되고 브랜치 명령어의 실제 BTA가 계산될때, BIA 및 BTA는 (기록-백 파이프라인 스테이지(write-back pipeline stage)동안) BTAC에 기록된다. 새로운 명령어들을 페치할때, BTAC는 명령어 캐시(또는 I-캐시)와 병렬로 액세스된다. 만일 명령어 어드레스가 BTAC에서 히트(hit)하면, 프로세서는 명령어가 브랜치 명령어가라는 것을 알고(이것은 I-캐시로부터 페치된 명령어가 디코딩되기전에 이루어지며), 브랜치 명령어의 이전 실행의 실제 BTA인 예측된 BTA가 제공된다. 만일 브랜치 예측 회로가 선택될 브랜치를 예측하면, 명령어 페칭은 예측된 BTA에서 시작된다. 만일 브랜치가 선택되지 않은 것으로 예측되면, 명령어 페칭은 순차적으로 계속된다.
용어 BTAC가 또한 BIA와 포화 카운터를 연관시키는 캐시를 나타내기 위하여 당업계에서 사용되어 단지 조건 평가 예측(즉, 선택되거나 또는 비선택되는지)만을 제공한다는 것에 유의해야 한다. 이는 여기에서 사용되는 용어의 의미가 아니다.
고성능 프로세서들은 I-캐시로부터 하나 이상의 명령어를 동시에 페치할 수 있다. 예컨대 4개의 명령어들을 포함할 수 있는 전체 캐시 라인은 명령어 페치 버퍼내로 페치될 수 있으며, 명령어 페치 버퍼는 이들 명령어들을 파이프라인으로 순차적으로 공급한다. 본 발명의 양수인에게 양도되고 여기에 참조로 통합되는 미국특허 출원번호 제11/089,072호는 각각의 캐시 라인에 2개 이상의 BTA들을 저장하고 BTA들이 BTAC 히트시에 예측된 BTA로서 선택되는지를 결정하기 위하여 브랜치 예측 오프셋 테이블(BPOT)을 인덱싱하는 BTAC를 개시하고 있다. BPOT는 다수의 BTA들을 병렬로 액세스하는데 필요한 다수의 판독 포트들을 가진 BTAC의 고비용 하드웨어 구조를 방지한다.
"블록-기반 브랜치 타깃 어드레스 캐시"라는 명칭을 가지고, 본 발명의 양수인에게 양도되며 여기에 참조로 통합되는 특허 출원번호 제----호는 다수의 엔트리들을 저장하는 블록-기반 BTAC를 개시하고 있으며, 각각의 엔트리는 명령어들의 블록과 연관되며, 블록의 명령어들중 하나 이상의 명령어는 선택된 것으로 평가된 브랜치 명령어이다. BTAC 엔트리는 연관된 블록내의 명령어가 선택된 브랜치 명령어 및 선택된 브랜치의 BTA이라는 지시자를 포함한다. BTAC 엔트리들은 블록의 모든 명령어들에 공통인 어드레스 비트들에 의하여(즉, 블록내의 명령어를 선택하는 하 위 어드레스 비트들을 절단함으로서) 인덱싱된다. 따라서, 블록 크기 및 상대 블록 경계들은 고정된다.
각각의 블록이 단지 하나의 선택된 브랜치 명령어를 포함하는 블록-기반 BTAC는 만족스럽게 작동한다. 블록내의 2개 이상의 브랜치 명령어들이 선택된 것으로 평가될때, 하나의 브랜치 명령어의 BTA를 저장하고 다른 브랜치 명령어의 BTA들을 저장하지 않는 결정이 이루어져야 하며, 따라서 다른 브랜치가 선택된 것으로 평가될때 성능 및 전력 저하가 유발된다. 다수의 BTA들은 각각의 BTAC 엔트리에 저장될 수 있으나, 이는 명령어 블록들이 BTAC 엔트리의 BTA 저장 위치들만큼 많은 선택된 브랜치 명령어들을 포함하지 않는 통상의 경우에 귀중한 실리콘 영역을 낭비한다.
여기에서 제시된 하나 이상의 실시예들에 따르면, 슬라이딩-윈도우, 블록-기반 BTAC는 다수의 엔트리들을 포함하며, 각각의 엔트리는 선택된 것으로 평가되고 블록의 제 1 명령어의 어드레스에 의하여 인덱싱되는 적어도 하나의 브랜치 명령어를 포함한다. 블록 크기는 고정되나(그리고 명령어 페치 그룹들의 크기에 대응하나), 블록 경계들은 고정되지 않으며, 명령어 블록들은 중첩될 수 있다. 따라서, 브랜치 명령어는 BTAC 엔트리들에 의하여 표현된 2개 이상의 명령어 블록들에 포함될 수 있다. 일부의 경우에, 이는, 모든 BTAC 엔트리의 BTA 저장 용량을 증가시킴으로서 메모리를 낭비하지 않고, 새로운 블록들을 한정하고 연관된 BTAC 엔트리들을 생성함으로서 슬라이딩-윈도우 블록-기반 BTAC가 단일 명령어 블록내에 포함되는 2개 이상의 선택된 브랜치 명령어들의 BTA들을 저장하도록 한다.
일 실시예는 프로세서에서 브랜치 명령어들을 예측하는 방법에 관한 것이다. 선택된 것으로 평가된 적어도 하나의 브랜치 명령어를 포함하는 2개 이상의 명령어들의 블록과 연관된 엔트리는 브랜치 타깃 어드레스 캐시(BTAC)에 저장되며, BTAC 엔트리는 블록의 제 1 명령어의 어드레스와 연관된 태그를 가진다. 명령어를 페치할때, BTAC는 하나 이상의 블록의 명령어가 조건부 브랜치 명령어인지를 결정하기 위하여 액세스된다.
다른 실시예는 프로세서에 관한 것이다. 프로세서는 다수의 엔트리들을 저장한 브랜치 타깃 어드레스 캐시(BTAC)를 포함하며, 각각의 엔트리는 선택된 것으로 평가된 적어도 하나의 브랜치 명령어를 포함하는 2개 이상의 명령어들의 블록과 연관되며, BTAC 엔트리는 블록의 제 1 명령어의 어드레스와 연관된 태그를 가진다. 프로세서는 또한 명령어들의 그룹을 페치할때 명령어 어드레스를 사용하여 BTAC를 인덱싱하도록 동작하는 명령어 실행 파이프라인을 포함한다.
도 1는 프로세서의 일 실시예를 도시한 기능 블록도이다.
도 2는 브랜치 타깃 어드레스 캐시 및 부수 회로들의 일 실시예를 도시한 기능 블록도이다.
도 1은 프로세서(10)의 기능 블록도이다. 프로세서(10)는 제어 로직(11)에 따라 명령어 실행 파이프라인(12)에서 명령어들을 실행한다. 일부 실시예들에서, 파이프라인(12)은 다수의 병렬 파이프라인들을 가진 수퍼스칼라 설계일 수 있다. 파이프라인(12)은 파이프 스테이지들로 편성된 다양한 레지스터들 또는 래치들(16) 및 하나 이상의 산술 로직 유닛들(ALU)(18)을 포함한다. 범용 레지스터(GPR) 파일(20)은 메모리 계층의 상부를 포함하는 레지스터들을 제공한다.
파이프라인(12)은 명령어 캐시(I-캐시)(22)로부터 명령어들을 페치하며, 메모리 어드레스 번역 및 허가들은 명령어-사이드 번역 룩어사이드 버퍼(ITLB: Instruction-side Translation Lookaside Buffer)(24)에 의하여 관리된다. 이와 동시에, 파이프라인(12)은 슬라이딩-윈도우 블록-기반 브랜치 타깃 어드레스 캐시(BTAC)(25)에 명령어 어드레스를 제공한다. 만일 명령어 어드레스가 BTAC(25)에서 히트(hit)하면, 슬라이딩-윈도우 블록-기반 BTAC(25)는 예측된 BTA로부터 명령어들을 페치하는 것을 즉시 시작하기 위하여 I-캐시(22)에 브랜치 타깃 어드레스(BTA)를 제공한다. 슬라이딩-윈도우 블록-기반 BTAC(25)의 구조 및 동작은 이하에서 더 상세히 설명된다.
데이터는 데이터 캐시(D-캐시)(26)로부터 액세스되며, 메모리 어드레스 번역 및 허가들은 메인 번역 룩어사이드 버퍼(TLB: Translation Lookaside Buffer)(28)에 의하여 관리된다. 다양한 실시예들에서, ITLB는 TLB의 부분의 복사본(copy)를 포함할 수 있다. 선택적으로, ITLB 및 TLB는 집적될 수 있다. 유사하게, 프로세서(10)의 다양한 실시예들에서, I-캐시(22) 및 D-캐시(26)는 집적되거나 또는 단일화될 수 있다. I-캐시(22) 및/또는 D-캐시(26)의 미스(miss)들은 메모리 인터페이스(30)의 제어하에서 주(오프-칩(off-chip)) 메모리(32)에 대한 액세스를 유발한 다.
프로세서(10)는 다양한 주변장치들(36, 38)에 대한 액세스를 제어하는 입력/출력(I/O) 인터페이스(34)를 포함할 수 있다. 당업자는 프로세서(10)의 다수의 변형이 가능하다는 것을 인식할 것이다. 예컨대, 프로세서(10)는 I 및 D 캐시들(22, 26)중 하나 또는 둘다에 대한 제 2레벨(L2) 캐시를 포함할 수 있다. 더욱이, 프로세서(10)내에 도시된 기능 블록들중 하나 이상은 특정 실시예로부터 생략될 수 있다.
브랜치 명령어들은 대부분의 코드가 공통적이다. 일부 추정에 의하여, 5개의 명령어들중 하나는 브랜치일 수 있다. 따라서, 초기 브랜치 검출, 브랜치 평가 예측(조건부 브랜치 명령어들에 대하여) 및 예측된 BTA로부터 명령어들을 페치하는 것은 프로세서 성능에 중요할 수 있다. 대부분의 최근 프로세서들은 각각의 캐시 라인에 다수의 명령어들을 저장하는 I-캐시(22)를 포함한다. 명령어들은 "페치 그룹들"중 I-캐시로부터 페치된다. 페치 그룹은 캐시 라인의 일부, 전체 캐시 라인 또는 하나 이상의 캐시 라인을 포함할 수 있다.
예로서, 비록 이러한 예가 단지 예시적일지라도 4개의 명령어들의 I-캐시(22) 라인 크기와 프로세서의 페치 그룹이 매칭된다는 것을 가정한다. 공지된 BTAC를 액세스하여 모든 4개의 명령어 어드레스들을 병렬로 탐색하려면, 4개의 어드레스 비교 입력 포트들, 4개의 BTA 출력 포트들, 및 하나 이상의 명령어 어드레스가 BTAC에서 히트하는 경우에 BTA를 선택하는 다중화기 및 제어 로직이 필요하다.
하나 이상의 실시예들에 따르면, 슬라이딩-윈도우 블록-기반 BTAC(25)는 다수의 엔트리들을 포함하며, 각각의 엔트리는 명령어들의 블록의 선택된 브랜치 명령어과 연관된 브랜치 정보를 저장한다. 명령어 블록은 페치 그룹에 대응하며, BTAC 엔트리는 블록의 제 1 명령어의 어드레스와 연관된 태그를 포함한다. 태그는 또한 I-캐시로부터 페치 그룹을 페치하기 위하여 사용된다. 일부 실시예들에서, 태그는 페치 그룹의 제 1 명령어일 수 있다. 여기에서 사용된 바와같이, "명령어 블록" 및 "페치 그룹"은 동의어이다. 각각의 BTAC 엔트리는 블록의 적어도 하나의 명령어가 선택된 것으로 평가되는(BTAC(25)의 히트(hit)에 의하여 지시되는) 브랜치 명령어라는 사실을 지시하고, 블록의 명령어가 선택된 브랜치 및 이의 BTA인지에 관한 지시자를 포함한다.
도 2는 슬라이딩-윈도우, 블록-기반 BTAC(25), I-캐시(22), 파이프라인(12) 및 브랜치 예측 논리회로(15)(예컨대 제어 로직(11)의 부분을 포함할 수 있는)를 도시한 기능 블록도이다. 이러한 예에서, 명령어들(A-L)은 I-캐시(22)의 3개의 라인들에 상주한다. 설명을 명확하게 하기 위하여, 본 예에서 프로세서 페치 그룹은 비록 이것이 본 발명을 제한하지 않을지라도 캐시 라인이다. 코드 세그먼트의 명령어들 및 대응하는 블록들(200A-200C)은 회로도의 좌측에 리스트된다. 비록 블록들이 순서대로 라벨링되었을지라도, 블록들은 그들이 라벨링되는 순서대로 페치된다고 해석되지 않아야 한다. 아마도, 예시적인 코드 세그먼트의 브랜칭 성질로 인하여, 블록들이 페치되는 순서는 블록(200A), 이 다음에 배치된 블록(200C) 및 이 다음에 배치된 블록(200B)이다.
도 2의 슬라이딩-윈도우 블록 기반 BTAC(25)의 각각의 엔트리는 3개의 컴포넌트, 즉 연관된 명령어 블록의 제 1 명령어(또한 I-캐시를 액세스하기 위하여 사용되는 명령어인)의 어드레스를 포함하는 태그 필드, 블록내의 명령어들중 어느 명령어가 선택된 브랜치인지를 지시하는 브랜치 지시자, 및 브랜치 명령어가 선택된 것으로 마지막으로 평가될때 브랜치 명령어의 실제 BTA를 포함한다.
도 2의 예에서, 명령어들 A, B, C, 및 D를 포함하는 I-캐시(22)의 제 1라인(또는 페치 그룹)은 페치되어 실행된다. 이들 명령어중, 명령어들 B 및 C는 브랜치 명령어들이다. 명령어 B는 실행되어 선택된 것으로 평가되며, 브랜치 타깃 어드레스 BTAB는 계산된다. BTAC 엔트리는 명령어 블록 ABCD와 관련하여 생성된다. BTAC 엔트리(도 2에 도시된 제 1 엔트리)는 명령어 A의 어드레스와 연관된 태그로서 블록의 제 2 명령어가 선택된 브랜치이라는 지시자(어드레스 01) 및 BTAB를 가진다. 다른 실시예에서, 브랜치 지시자는 명령어가 선택된 브랜치라는 디코딩된 지시자, 예컨대 0100를 포함할 수 있다.
이러한 예에서, 명령어 B는 코드의 다른 섹션(본 발명과 관련되지 않은 특정 섹션들)의 프로시저(procedure)로 브랜치를 야기한다. 실행을 완료할때, 또 다른 코드는 실행시 타깃 BTAC로 선택된 것으로 평가된 명령어 C로 다시 브랜칭된다. 고정된 명령어 블록 경계들을 가진 공지된 블록-기반 BTAC에서, BTAC는 BTAC 엔트리에서 BTAB를 대체해야 하거나, 또는 BTAB는 유지되어야 하며, BTAC는 명령어 C가 블 록(200A)과 고정적으로 연관되기 때문에 무시되어야 한다.
그러나, 슬라이딩-윈도우 블록-기반 BTAC(25)의 유동 명령어 블록 경계들을 이용하면, 프로시저로부터 명령어 C로 리턴할때 I-캐시로부터 페치된 페치 그룹에 대응하는 새로운 명령어 블록이 한정된다. 새로운 블록은 명령어들 C, D, E 및 F를 포함하며, 따라서 명령어 블록 ABCD과 부분적으로 중첩된다. 대응하는 BTAC 엔트리가 슬라이딩-윈도우 블록-기반 BTAC(25)에서 생성된다. 새로운 BTAC 엔트리(도 2에 도시된 제 2 엔트리)의 태그는 블록의 제 1 명령어(또한, I-캐시를 액세스하기 위하여 사용된 명령어인), 즉 명령어 C의 어드레스와 연관된다. 브랜치 지시자는 00의 값, 즉 블록에서 제 1 명령어의 어드레스를 가지며, 이는 명령어 C가 블록 CDEF에서 선택된 브랜치 명령어가라는 것을 지시한다. 최종적으로, 블록 CDEF와 연관된 BTAC 엔트리는 BTAC, 즉 브랜치 명령어 C의 타깃 어드레스를 포함한다. 이러한 방식에서, 슬라이딩-윈도우 블록-기반 BTAC(25)는 모든 BTAC 엔트리가 2개 이상의 BTA들에 대한 저장 공간을 포함하는 것을 요구하지 않고 블록 ABCD에서 선택된 브랜치 명령어들 둘다에 대한 BTA들을 저장할 수 있다.
게다가, 슬라이딩-윈도우 블록-기반 BTAC(25)의 제 2 엔트리는 I-캐시로부터 그것의 페치전에 선택된 코드 경로에 브랜치 명령어 C의 동작을 제한한다. 즉, 프로시저로부터 리턴하는 동안 코드가 명령어 C로 브랜칭될때 브랜치 명령어 C가 선택된 것으로 평가되기 때문에, 상기 프로시저로부터 명령어 C로의 다음 리턴은 또한 선택된 것으로 평가할 것이다. 역으로, 명령어 C가 순차적으로 실행될때(즉, 만일 브랜치 명령어 B가 선택되지 않은 것으로 평가되고 중간 프로시저가 실행되지 않으면), 명령어 C는 선택되지 않은 것으로 평가할 수 있다.
제 3 BTAC 엔트리는 명령어 I와 함께 시작하는 페치 그룹에 대응하는, I, J, K 및 L을 포함하는 명령어들의 블록에 대응한다. 제 3 BTAC 엔트리의 태그는 블록의 제 1 명령어의 어드레스와 연관되며, 이 어드레스는 I-캐치가 페치 그룹 IJKL을 페치할때 액세스되는 어드레스이다. 이러한 그룹에서, 명령어들 J 및 L은 브랜치 명령어들이다. 이러한 예에서, 선택된 것으로 평가되며, 브랜치 지시자는 블록의 제 2 명령어를 어드레싱하며, 명령어 J의 BTAJ는 BTAC 엔트리에 저장된다.
물론, 도 2에 도시된 블록 편성 및 BTAC 엔트리들은 단지 예시적인 것이며, 본 발명은 이러한 구현에 제한되지 않는다. 특히, 페치 그룹은 I-캐시 라인의 크기와 정렬될 필요가 없다. 일반적으로, 페치 그룹은 예컨대 I-캐시 라인의 임의의 위치에 있을 수 있는 타깃으로 브랜칭하는 브랜치 명령어의 경우에 I-캐시 라인내의 임의의 위치에서 시작할 수 있다. 대응하는 슬라이딩-윈도우 블록-기반 BTAC(25) 엔트리의 태그는 페치 그룹에서 제 1 명령어의 어드레스와 연관될 것이다. 따라서, 동일한 페치 그룹이 I-캐시로부터 다시 페치될때, 슬라이딩-윈도우 블록-기반 BTAC(25)의 동시 액세스는 선택된 것으로 이전에 평가된 명령어 블록내의 브랜치 명령어를 지시하는 엔트리를 검색할 것이다.
파이프라인(12)의 디코드/페치 로직(13)은 I-캐시(22)로부터 다음 명령어 페치 그룹을 페치하는 명령어 어드레스를 생성하도록 구성된다. 동작시에, 명령어 어드레스는 슬라이딩-윈도우 블록-기반 BTAC(25)의 태그 필드와 동시에 비교된다. 만일 명령어 어드레스가 BTAC(25)의 태그와 매칭되면, 히트 지시자 및 대응하는 브랜치 지시자는 블록의 명령어가 선택된 브랜치 명령어인지를 지시하기 위하여 디코드/페치 로직(13)에 제공된다. 이 지시자는 또한 브랜치 예측 로직(15)에 제공된다. 동시에, 대응하는 엔트리의 BTA는 BTA로부터 명령어들의 직접 순이론적 페칭(immediate speculative fetching)을 고려하여 하여 브랜치가 선택된 것으로 예측되는 경우에 파이프라인을 최대로 유지하기 위하여 I-캐시(22)에 제공된다.
명령어들은 디코드 로직(13)에서 디코딩된다. 브랜치 명령어가 검출될때(페치 그룹 어드레스가 슬라이딩-윈도우 블록-기반 BTAC(25)에서 히트는지의 여부가 검출될때), 페치 그룹 정보는 파이프라인(12)에서 유지된다. 이러한 정보는 예컨대 브랜치 명령어 어드레스(BIA)로부터 페치 그룹의 제 1 명령어의 어드레스까지의 부정적 오프셋을 포함할 수 있다. 이러한 정보는 브랜치 명령어의 BTA가 페치 그룹의 제 1 명령어의 어드레스, 즉 I-캐시가 액세스되는 어드레스를 태그로서 가진 새로운 BTAC 엔트리에 저장되도록 브랜치 명령어가 선택된 것으로 평가될 가능성에 대비하여 유지된다.
조건부 브랜치 명령어들은 파이프라인(12)의 실행 스테이지의 로직(14)에서 평가된다. 실행 로직(14)은 선택된 것으로 평가되는 비조건부 브랜치 명령어들 및 조건부 브랜치 명령어들의 BTA를 부가적으로 계산하고 제공한다. 만일 예측된 브랜치 평가가 부정확하고 및/또는 캐싱된 BTA가 계산된 BTA와 매칭되지 않으면, 파이프라인(12)은 파이프라인으로부터 순이론적 명령어들을 플러싱하는 단계, 저장을 재할당하는 단계, 자원들을 계산하는 단계 등을 포함할 수 있는 오예측된 브랜치 복원단계를 수행해야 한다.
실제 브랜치 평가는 실제 브랜치 동작에 관한 예측 로직을 업데이트하기 위하여 실행 로직(14)에 의하여 브랜치 예측 로직(15)에 제공된다. 브랜치 예측 로직(15)은 그것의 예측 테이블들(브랜치 히스토리(history) 레지스터, 브랜치 예측 테이블, 포화 카운터들 등과 같은)을 업데이트하며, 부가적으로 슬라이딩-윈도우 블록-기반 BTAC(25)을 업데이트한다. 기존 BTAC 엔트리들에 대하여, 이는 다른 실제 BTA가 계산되는 경우에 캐싱된 BTA를 업데이트하는 단계를 포함할 수 있거나, 또는 대응하는 블록의 다른 브랜치 명령어가 선택된 것으로 평가되고 기존의 캐싱된 BTA를 교체하기 위한 결정이 이루어지면 브랜치 지시자 및 BTA를 업데이트하는 단계를 포함할 수 있다.
만일 브랜치 명령어가 선택된 것으로 평가되고 페치 그룹 정보가 슬라이딩-윈도우 블록-기반 BTAC(25)의 임의의 태그로부터 고유한 그룹 페치 어드레스를 지시하면, 브랜치 예측 로직(15)은 새로운 BTAC 엔트리를 생성한다. 새로운 BTAC 엔트리는 브랜치 명령어가 페치되는 페치 그룹의 제 1 명령어과 함께 시작하는 명령어들의 블록에 대응하며, 따라서 새로운 BTAC 엔트리의 태그는 제 1 명령어의 어드레스와 연관된다. 이러한 방식에서, 브랜치 명령어는 슬라이딩-윈도우 블록-기반 BTAC(25)의 대응 엔트리들을 가진 2개 이상의 명령어 블록들에 포함될 수 있다. 이러한 특징의 하나의 중요한 장점은 제 1 블록의 제 1 브랜치 명령어의 BTA가 제 1 BTAC 엔트리에 저장될 수 있고 또한 제 1 블록에 있고 I-캐시에 대한 개별 액세 스에 의한 제 2 페치 그룹의 일부분인 제 2 브랜치 명령어의 BTA가 제 2 BTAC 엔트리(제 2 명령어 블록을 한정하는)에 저장될 수 있다는 점이다. 따라서, 슬라이딩-윈도우 블록-기반 BTAC(25)는 모든 BTAC 엔트리의 다수의 BTA들에 메모리를 제공함으로서 귀중한 실리콘 영역을 낭비하지 않고 양 BTA들을 저장할 수 있다.
여기에서 사용된 바와같이, 일반적으로, 브랜치 명령어는 조건부 또는 비조건부 브랜치 명령어를 지칭할 수 있다. 여기에서 사용된 바와같이, "선택된 브랜치", "선택된 브랜치 명령어" 또는 "선택된 것으로 평가된 브랜치 명령어"는 순차 명령어 실행 흐름을 비순차 어드레스로 전환함으로서 평가된(즉, 선택되지 않은 것에 대조적으로 선택된) 비조건부 브랜치 명령어 또는 조건부 브랜치 명령어를 지칭한다.
비록 본 발명이 본 발명의 특정 특징들, 양상들 및 실시예들과 관련하여 여기에서 제시되었을지라도, 다수의 변형들, 수정들 및 다른 실시예들이 본 발명의 범위내에서 가능하며 따라서 모든 변형들, 수정들 및 실시예들이 본 발명의 범위내에 있는 것으로 간주된다는 것이 명백할 것이다. 따라서, 본 실시예들은 모든 양상들에서 예시적인 것으로 해석되어야 하며, 첨부된 청구범위 및 이의 균등 범위내에 포함되는 모든 변화들은 본 발명의 범위내에 있는 것으로 간주된다.

Claims (11)

  1. 프로세서에서 브랜치 명령어들을 예측하는 방법으로서,
    브랜치 타깃 어드레스 캐시(BTAC)에 엔트리(entry)를 저장하는 단계 ― 상기 BTAC 엔트리는 선택된 것으로 평가된 적어도 하나의 브랜치 명령어를 포함하는 2개 이상의 명령어들의 블록과 연관되며, 상기 블록의 제 1 명령어의 어드레스와 연관된 태그(tag)를 가짐 ―; 및
    명령어들의 그룹을 페치(fetch)할때, 대응하는 블록의 명령어가 선택된 브랜치 명령어인지를 결정하기 위하여 상기 BTAC를 액세스하는 단계를 포함하는, 브랜치 명령어 예측 방법.
  2. 제 1항에 있어서, 상기 각각의 BTAC 엔트리는 상기 연관된 블록내의 명령어가 선택된 브랜치 명령어인지에 관한 지시자(indicator)를 포함하는, 브랜치 명령어 예측 방법.
  3. 제 1항에 있어서, 상기 연관된 블록내의 선택된 브랜치 명령어의 브랜치 타깃 어드레스(BTA)를 각각의 BTAC 엔트리에 저장하는 단계를 더 포함하는, 브랜치 명령어 예측 방법.
  4. 제 3항에 있어서, 상기 BTAC를 액세스한후에, 상기 BTA로부터 명령어들을 페 치하는 단계를 더 포함하는, 브랜치 명령어 예측 방법.
  5. 제 1항에 있어서, 적어도 하나의 BTAC 엔트리에 대하여, 상기 블록의 제 1 명령어는 명령어 캐시 라인의 제 1 명령어인, 브랜치 명령어 예측 방법.
  6. 제 1항에 있어서, 적어도 하나의 BTAC 엔트리에 대하여, 상기 블록의 제 1 명령어의 어드레스는 브랜치 명령어의 브랜치 타깃 어드레스인, 브랜치 명령어 예측 방법.
  7. 제 3항에 있어서, 제 1 BTAC 엔트리는 제 1 및 제 2 선택된 브랜치 명령어들을 포함하는 제 1 명령어 블록과 연관되며, 상기 BTAC 엔트리는 상기 제 1 브랜치 명령어의 BTA를 저장하는, 브랜치 명령어 예측 방법.
  8. 제 7항에 있어서, 상기 제 2 선택된 브랜치 명령어를 포함하는 제 2 명령어 블록과 연관된 제 2 BTAC 엔트리는 상기 제 2 브랜치 명령어의 BTA를 저장하는, 브랜치 명령어 예측 방법.
  9. 다수의 엔트리들을 저장하는 브랜치 타깃 어드레스 캐시(BTAC) ― 상기 각각의 엔트리는 선택된 것으로 평가된 적어도 하나의 브랜치 명령어를 포함하는 2개 이상의 명령어들의 블록과 연관되며, 상기 BTAC 엔트리는 상기 블록의 제 1 명령어 의 어드레스와 연관된 태그(tag)를 가짐 ―; 및
    명령어들의 그룹을 페치할때, 명령어 어드레스를 사용하여 상기 BTAC를 인덱싱하도록 동작하는 명령어 실행 파이프라인을 포함하는, 프로세서.
  10. 제 9항에 있어서, 상기 각각의 BTAC 엔트리는 상기 연관된 블록내의 명령어가 선택된 브랜치 명령어들인지에 관한 지시자를 포함하는, 프로세서.
  11. 제 9항에 있어서, 각각의 BTAC 엔트리는 상기 연관된 블록내의 선택된 브랜치 명령어의 브랜치 타깃 어드레스(BTA)를 포함하는, 프로세서.
KR1020097000082A 2006-06-05 2007-05-31 슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시 KR101016541B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/422,186 2006-06-05
US11/422,186 US7827392B2 (en) 2006-06-05 2006-06-05 Sliding-window, block-based branch target address cache

Publications (2)

Publication Number Publication Date
KR20090017687A true KR20090017687A (ko) 2009-02-18
KR101016541B1 KR101016541B1 (ko) 2011-02-24

Family

ID=38654617

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000082A KR101016541B1 (ko) 2006-06-05 2007-05-31 슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시

Country Status (7)

Country Link
US (1) US7827392B2 (ko)
EP (1) EP2024820B1 (ko)
JP (2) JP5231403B2 (ko)
KR (1) KR101016541B1 (ko)
CN (2) CN103019652B (ko)
AT (1) ATE535862T1 (ko)
WO (1) WO2007143508A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US8407187B2 (en) 2010-06-16 2013-03-26 Microsoft Corporation Validating files using a sliding window to access and correlate records in an arbitrarily large dataset
US9201658B2 (en) * 2012-09-24 2015-12-01 Apple Inc. Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US9639471B2 (en) 2012-11-27 2017-05-02 Nvidia Corporation Prefetching according to attributes of access requests
US9262328B2 (en) * 2012-11-27 2016-02-16 Nvidia Corporation Using cache hit information to manage prefetches
US9563562B2 (en) 2012-11-27 2017-02-07 Nvidia Corporation Page crossing prefetches
GB2501582B (en) 2013-02-11 2014-12-24 Imagination Tech Ltd Speculative load issue
US9489204B2 (en) * 2013-03-15 2016-11-08 Qualcomm Incorporated Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process
US10747540B2 (en) * 2016-11-01 2020-08-18 Oracle International Corporation Hybrid lookahead branch target cache
US20190004805A1 (en) * 2017-06-28 2019-01-03 Qualcomm Incorporated Multi-tagged branch prediction table
US11915004B2 (en) * 2021-12-20 2024-02-27 Arm Limited Control flow prediction

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5530825A (en) * 1994-04-15 1996-06-25 Motorola, Inc. Data processor with branch target address cache and method of operation
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5918044A (en) * 1996-10-31 1999-06-29 International Business Machines Corporation Apparatus and method for instruction fetching using a multi-port instruction cache directory
JPH10133874A (ja) * 1996-11-01 1998-05-22 Mitsubishi Electric Corp スーパスカラプロセッサ用分岐予測機構
DE69727773T2 (de) * 1996-12-10 2004-12-30 Texas Instruments Inc., Dallas Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a microprocessor
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
EP1150213B1 (en) * 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data processing system and method
WO2002008895A1 (en) * 2000-07-21 2002-01-31 Koninklijke Philips Electronics N.V. Data processor with branch target buffer
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
US7707397B2 (en) 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US6877083B2 (en) * 2001-10-16 2005-04-05 International Business Machines Corporation Address mapping mechanism for behavioral memory enablement within a data processing system
US6675279B2 (en) * 2001-10-16 2004-01-06 International Business Machines Corporation Behavioral memory enabled fetch prediction mechanism within a data processing system
US6792521B2 (en) * 2001-10-16 2004-09-14 International Business Machines Corporation Behavioral memory mechanism for a data processing system
JP3738842B2 (ja) * 2002-06-04 2006-01-25 富士通株式会社 遅延分岐機能を備えた情報処理装置
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US7174444B2 (en) * 2003-03-31 2007-02-06 Intel Corporation Preventing a read of a next sequential chunk in branch prediction of a subject chunk
US7124287B2 (en) * 2003-05-12 2006-10-17 International Business Machines Corporation Dynamically adaptive associativity of a branch target buffer (BTB)
US20040250054A1 (en) * 2003-06-09 2004-12-09 Stark Jared W. Line prediction using return prediction information
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
JP2006048132A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 分岐予測装置、分岐予測装置の制御方法、情報処理装置
US7328332B2 (en) * 2004-08-30 2008-02-05 Texas Instruments Incorporated Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7447882B2 (en) * 2005-04-20 2008-11-04 Arm Limited Context switching within a data processing system having a branch prediction mechanism
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US20080040576A1 (en) * 2006-08-09 2008-02-14 Brian Michael Stempel Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set
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
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation

Also Published As

Publication number Publication date
US20070283134A1 (en) 2007-12-06
EP2024820A2 (en) 2009-02-18
CN103019652A (zh) 2013-04-03
CN103019652B (zh) 2015-04-29
EP2024820B1 (en) 2011-11-30
JP2009540439A (ja) 2009-11-19
CN101460922A (zh) 2009-06-17
WO2007143508A3 (en) 2008-01-31
CN101460922B (zh) 2013-01-02
ATE535862T1 (de) 2011-12-15
JP5231403B2 (ja) 2013-07-10
JP2013080497A (ja) 2013-05-02
JP5734945B2 (ja) 2015-06-17
WO2007143508A2 (en) 2007-12-13
KR101016541B1 (ko) 2011-02-24
US7827392B2 (en) 2010-11-02

Similar Documents

Publication Publication Date Title
KR101016541B1 (ko) 슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시
US20070266228A1 (en) Block-based branch target address cache
KR101074621B1 (ko) 프로액티브 브랜치 타겟 어드레스 캐시 관리를 위한 방법들 및 장치
KR100930199B1 (ko) 루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제
US20060218385A1 (en) Branch target address cache storing two or more branch target addresses per index
KR101048258B1 (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
CA2659310C (en) Methods and apparatus for reducing lookups in a branch target address cache

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee