KR20070108209A - 명령 프리페치 메카니즘 - Google Patents

명령 프리페치 메카니즘 Download PDF

Info

Publication number
KR20070108209A
KR20070108209A KR1020077019940A KR20077019940A KR20070108209A KR 20070108209 A KR20070108209 A KR 20070108209A KR 1020077019940 A KR1020077019940 A KR 1020077019940A KR 20077019940 A KR20077019940 A KR 20077019940A KR 20070108209 A KR20070108209 A KR 20070108209A
Authority
KR
South Korea
Prior art keywords
prediction
branch
instruction
weighted
weakly
Prior art date
Application number
KR1020077019940A
Other languages
English (en)
Other versions
KR100944139B1 (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 KR20070108209A publication Critical patent/KR20070108209A/ko
Application granted granted Critical
Publication of KR100944139B1 publication Critical patent/KR100944139B1/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/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
    • 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

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)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세서는 가중된 분기 예측 값을 생성하는 조건 분기 명령 예측 메카니즘을 포함한다. 강하게 가중된 예측보다 덜 정확한 경향이 있는 약하게 가중된 예측에 대해, 캐시를 추론적으로 파일링하고 후속적으로 플러시하는 것과 관련된 전력은 명령 프리페치를 중단함으로써 절약된다. 명령 페치는, 파이프라인에서 분기 조건이 평가되고 실제 다음 어드레스가 알려진 경우에 계속된다. 또한, 프리페치는 캐시의 외부에서 계속할 수도 있다. 잘못 예측된 분기에 기초하여 프리페치된 명령으로 양호한 캐시를 교체하는 것을 방지하기 위해, 프리페치는 캐시 미스의 경우에 약하게 가중된 예측에 응답하여 중단될 수도 있다.
프리페치, 분기 예측, 캐시

Description

명령 프리페치 메카니즘{INSTRUCTION PREFETCH MECHANISM}
배경
본 발명은 일반적으로 프로세서 분야에 관한 것이고, 상세하게는 프로세서 명령을 프리페치하는 (prefetch) 전력-효율적인 방법에 관한 것이다.
휴대용 전자 디바이스는 광범위하게 다양한 유기적 (organizational), 계산적 (computational), 통신 및 엔터테인먼트 서비스를 제공한다. 이들 디바이스는 대중성과 정교함 모두에 있어서 증가를 계속한다. 휴대용 디바이스 진화에서 2 개의 끊임없는 트렌드는 증가된 기능성과 감소된 사이즈이다. 증가된 기능성은 특히 더 고속의 더욱 강력한 프로세서에서 증가된 계산 능력을 요구한다.
더 신속한 프로세서를 요구하는 진보된 형태 및 기능성을 제공하는 것 뿐만 아니라, 휴대용 전자 디바이스 자체는 사이즈 및 무게에 있어서 축소를 계속한다. 이 트랜드의 주요한 영향은 프로세서 및 디바이스 내의 다른 전자 장비에 전력을 제공하는데 사용되는 배터리의 사이즈의 감소이다. 배터리 기술에서의 향상은 이 문제를 부분적으로 해결하였지만, 배터리 사이즈의 감소는 여전히 모든 전자 디바이스 전자 장비, 특히 그들에 내장된 프로세서에 엄격한 전력 버젯 (budget) 을 부과한다.
따라서, 성능 향상 및/또는 전력 소모 감소의 프로세서 개선은 대부분의 휴대용 전자 디바이스와 같은 다수의 애플리케이션에 바람직하다. 대부분의 현대 식 프로세서는, 각각 복수의 실행 단계를 갖는 순차적 명령이 실행시 오버랩되는 파이프라인 아키텍처를 사용한다. 최대 성능을 위해, 명령은 파이프라인을 통해 연속적으로 흘러야 한다. 명령이 파이프라인으로부터 플러시되고 (flush) 후속하여 재시작하는 임의의 경우는 성능과 전력 소모 모두에 악영향을 미친다.
모든 실제 프로그램은 조건 분기 명령 (conditional branch instructions) 을 포함하고, 이들의 실제 분기 동작은 명령이 파이프 라인에서 심도있게 평가되기까지는 미지이다. 대부분의 현대식 프로세서는 몇몇 형태의 분기 예측을 사용하고, 이에 의해 조건 분기 명령의 분기 동작은 파이프라인에서 조기에 예측되고, 프로세서는 분기 예측에 기초하여 명령을 추론적으로 페치하고 (프리페치하고) 실행한다. 실제 분기 동작이 결정된 경우, 분기가 잘못 예측되면, 추론적으로 페치된 명령은 파이프라인으로부터 플러시되어야 하고, 수정된 다음 어드레스로부터 새로운 명령이 페치된다. 잘못된 분기 예측에 응답하여 명령을 프리페치하는 것은 프로세서 성능 및 전력 소모에 악영향을 미친다.
공지된 분기 예측 기술은 정적 및 동적 예측을 모두 포함한다. 일부 분기 명령의 유망한 행동은 프로그래머 및/또는 컴파일러에 의해 정적으로 예측될 수 있다. 일 예는 에러 검사 루틴 (error checking routine) 이다. 대부분의 코드는 적절히 실행되고, 에러는 거의 없다. 따라서, "에러있는 분기" 기능을 구현하는 분기 명령은 대부분의 시간동안 "비채택 (not taken)" 으로 평가할 것이다. 이러한 명령은 정적 분기 예측 비트를 옵코드 (opcode) 에 포함하고, 가장 유망한 분기 조건의 출력을 아는 프로그래머 또는 컴파일러에 의해 설정된다. 다른 분기 명령은 그들의 런 타임 속성 (run-time attribute) 에 기초하여 정적으로 예측될 수도 있다. 예를 들어, 루프 종료 평가와 같은 네거티브 변위 (displacement) (즉, 코드에서 분기 "역방향") 를 갖는 분기가 일반적으로 채택되고, 포지티브 변위 (코드에서 분기 "순방향") 를 갖는 분기는 거의 채택되지 않는다. 따라서, 전자는 정적으로 예측된 "채택" 이고 후자는 "비채택" 일 수도 있다.
동적 예측은 일반적으로 예측되고 있는 분기 명령 및/또는 동일한 코드의 다른 분기 명령의 분기 평가 히스토리 (및 일부의 경우에 분기 예측 정확성 히스토리) 에 기초한다. 실제 코드의 광범위한 분석은, 최근의 과거 분기 평가 패턴이 미래 분기 명령 평가의 양호한 표시자일 수도 있음을 나타낸다. 간단한 분기-히스토리 분기 예측기의 일 예로서, 각각 조건 분기 명령의 어드레스 비트에 의해 인덱스된 복수의 1 비트 플래그가 유지될 수도 있다. 각각의 플래그는, 분기가 "채택" 을 평가하는 경우 세팅되고, "비채택" 을 평가하는 경우 리셋된다. 그 후, 분기 예측은 단순히 관련 플래그의 값이 될 수도 있다. 일부 분기 명령에 대해, 이 예측기는 정확한 예측을 산출할 수도 있다.
분기 예측 정확성을 최대화하는 것과 밀접하게 관련된 설계 타겟은 잘못된 분기 예측의 악영향의 최소화이다. 동적 분기 예측기로서 1 비트 플래그와 함께 전술한 "에러있는 분기" 조건을 고려한다. 보통, 분기가 채택되지 않은 경우, 관련 플래그는 0 을 유지하고, 명령의 미래 실행에 대해 "비채택" 을 예측한다. 에러가 발생하는 경우, 분기는 잘못 예측되고 잘못된 명령이 파이프라인으 로 프리페치된다. 프로세서는 공지된 분기 예측 오류의 복구 방법에 따라, 잘못된 분기 예측 (성능을 희생시키고 전력을 소모함) 으로부터 복구되고, 플래그는 "채택" 분기를 반영하도록 세팅된다. 그러나, 분기 명령의 다음 실행은 여전히 "비채택" 일 가능성이 크다. 이러한 경우에, 단일 비트 분기 평가 히스토리는 각각의 변칙적인 (anomalous) 분기 평가에 대해, 하나는 변칙적임에 대한 것이고 다른 하나는 분기 명령의 다음의 후속 실행에 대한 것인 2 개의 잘못된 예측을 유발한다.
잘못 예측된 분기 평가의 악영향을 최소화하는 하나의 공지 기술은 강한 예측 또는 약한 예측의 개념 - 즉, 신뢰성 인자 (confidence factor) 에 의해 가중된 (예를 들어, 강하게 또는 약하게 예측된) 예측 (즉, 채택 또는 비채택) 의 도입이다. 그 간단한 예는 메모리 액세스 명령 어드레스에 의해 인덱스된 2 비트 포화 카운터 테이블을 포함하는 이중모드 (bimodal) 분기 예측기이다. 각각의 카운터는 4 개의 상태중 하나를 가정하고, 각각은 다음과 같이 가중된 예측값을 할당받는다.
11 - 강하게 예측된 채택
10 - 약하게 예측된 채택
01 - 약하게 예측된 비채택
00 - 강하게 예측된 비채택
카운터는 대응 분기 명령이 "채택" 을 평가하는 경우마다 증가하고, 명령이 "비채택" 을 평가하는 경우마다 감소한다. 이 증가/감소는, 증가가 0b11 에서 정지하고, 감소가 0b00 에서 정지하는 경우 "포화 (saturating)" 된다. 그 결과, 분기 예측은 출력 (채택 또는 비채택) 뿐만 아니라 예측의 강도 또는 신뢰성을 나타내는 가중 인자를 포함한다.
전술한 "에러있는 분기" 와 같은 분기 명령은 단일 비트 플래그 예측기에서와 같이 2 번 잘못 예측되지는 않고 포화 카운터로 1 번만 잘못 예측될 것이다. 제 1 분기 예측은 예측기를 "강하게 예측된 비채택" 으로부터 "약하게 예측된 비채택" 으로 이동시킨다. 실제 예측은 이중모드이고 MSB 에 의해 표현된다. 따라서, 다음 분기 명령의 발생은 여전히 "비채택" 으로 예측될 것이고, 이는 정확할 것이다.
이중 모드 포화 카운터는 임의의 사이즈일 수도 있다. 예를 들어, 3 비트 카운터는 다음과 같이 예측 신뢰성 강도를 할당받을 수도 있다.
111 - 상당히 강하게 예측된 채택
110 - 강하게 예측된 채택
101 - 예측된 채택
100 - 온건히 예측된 채택
011 - 온건히 예측된 비채택
010 - 예측된 비채택
001 - 강하게 예측된 비채택
000 - 상당히 강하게 예측된 비채택
물론, 라벨은 참조용 단어이고, 카운터의 이진 값은 분기 예측 신뢰성의 강 도를 결정하여, 범위의 어느 한 종단에서는 더 큰 신뢰성을 가지고, 범위의 중간쪽은 더 낮은 신뢰성을 가진다.
포화 카운터는 이 분야에 공지된 바와 같이, 분기 평가뿐만 아니라 예측 정확성을 추적할 수도 있다. 포화 카운터의 출력은 "일치" 또는 "불일치" 의 가중된 값일 수도 있고, 출력은 정적 예측과 조합되어 가중 예측이 된다. 일반적으로, 광범위한 분기 예측 방법의 어레이가 이 분야에 공지되었고, 이는 예측기가 예측기와 독립적으로, 분기를 전혀 예측하지 않고, 2 개 이상의 예측들 중 하나의 예측을 선택하는데 사용되는 방법을 포함한다. 본 명세서 전체에 참조로서 포함된 Scott McFarling's 1993 paper, "Combining Branch Predictors," Digital Western Research Laboratory Technical Note TN-36 을 참조한다.
예측에서의 신뢰성 측정의 도입은, 시간에 따라 실제 분기 동작을 추적함으로써 분기 예측 정확성을 개선하고, 실제 예측은 MSB 에 의해 표현된 이중 모드이다. 종래 기술 분야에서, 분기는 "채택" 또는 "비채택" 으로 예측되고, 프리페치는 분기 명령에 대한 분기 타겟 어드레스 또는 다음 후속 어드레스인 예측된 다음 어드레스로부터 진행한다. 즉, 예측의 가중 또는 그 강도는 고려되지 않는다.
요약
일 실시형태에서, 분기 예측의 가중 또는 강도는, 프로세서가 조건 분기 명령에 후속하는 명령을 프리페치하는지 여부를 결정한다. 명령은 강하게 가중된 분기 예측에 대해 프리페치된다. 약하게 가중된 예측의 경우, 프리페치를 중단 하고, 파이프라인에서 분기 조건이 평가되는 것을 대기함으로써, 프로세서 자원 및 전력이 보존된다. 약하게 가중된 분기 예측이 강하게 가중된 분기 예측보다 덜 정확할 수도 있기 때문에, 약하게 가중된 예측에 응답한 프리페치는 잘못된 예측 및 후속 파이프라인 플러시의 가능성이 상당히 크다. 약하게 가중된 예측은 프리페치를 완전히 중단할 수도 있고, 또는 캐시 미스 (cache miss) 인 경우에만 프리페치를 중단할 수도 있다.
일 실시형태는, 복수의 가중된 분기 예측 값들 중 하나를 생성하는 분기 예측 메카니즘을 갖는 프로세서에서의 명령 프리페치의 방법에 관한 것이다. 강하게 가중된 예측에 대해서는, 예측된 다음 어드레스에서 시작하는 명령이 프리페치된다. 약하게 가중된 예측에 대해서는, 분기 예측이 평가될 때까지 명령 프리페치가 중단된다.
또 다른 실시형태는 프로세서에 관한 것이다. 프로세서는 명령 실행 파이프라인, 및 조건 분기 명령의 평가를 예측하고 가중된 분기 예측 값을 출력하도록 동작하는 분기 예측 메카니즘을 포함한다. 프로세서는, 분기 예측 메카니즘으로부터 강하게 가중된 예측에 응답하여 예측된 다음 어드레스로부터 페치 명령을 추론적으로 페치하여 파이프라인으로 그 명령을 로딩하고, 분기 예측 메카니즘으로부터 약하게 가중된 예측에 응답하여 명령 프리페치를 중단하도록 동작하는 명령 프리페치 메카니즘을 추가적으로 포함한다.
또 다른 실시형태는 파이프라인 프로세서에서 잘못 예측된 분기상에서의 캐시 라인 교체를 방지하는 방법에 관한 것이다. 조건 분기 명령의 평가는 예측 및 그 예측의 정확성의 신뢰도를 나타내는 가중된 값으로 예측한다. 캐시 메모리는 조건 분기 명령에 후속하는 예측된 다음 어드레스에 대해 추론적으로 액세스된다. 액세스가 캐시에서 미스되고 예측 값이 낮은 정확성의 신뢰성을 나타내는 경우, 미스에 응답한 캐시 라인 교체는 중단된다.
도면의 간단한 설명
도 1 은 프로세서의 기능 블록도이다.
도 2 는 전력-효율적인 명령 프리페치 방법의 흐름도이다.
도 3 은 전력-효율적인 캐시 관리 방법의 흐름도이다.
상세한 설명
도 1 은 프로세서 (10) 의 기능 블록도를 나타낸다. 프로세서 (10) 는 제어 로직 (14) 에 따라 명령 실행 파이프라인 (12) 에서 명령을 실행한다. 일부 실시형태에서, 파이프라인 (12) 은 복수의 병렬 파이프라인을 가진 슈퍼스칼라 (superscalar) 설계일 수도 있다. 파이프라인 (12) 은 파이프 단계에서 조직된 다양한 레지스터 또는 래치 (latch; 16) 및 하나 이상의 산술 논리 연산 장치 (ALU; 18) 를 포함한다. 범용 레지스터 (GPR) 파일 (20) 은 메모리 계층 중 최상위를 포함하는 레지스터를 제공한다.
파이프라인 (12) 은 명령 캐시 (I-캐시; 22) 로부터 명령을 페치하고, 메모리 어드레스 번역 및 허용이 명령측 변환 색인 버퍼 (Instruction-side Translation Lookaside Buffer; ITLB, 24) 에 의해 관리된다. 조건 분기 명령이 파이프라인 (12) 에서 먼저 디코딩되는 경우, 분기 예측 메카니즘 (23) 은 분기 동작을 예측하고, 명령 프리페치 유닛 (25) 에 예측을 제공한다. 명령 프리페치 유닛 (25) 은 명령 캐시 (22) 로부터, "채택된" 분기 예측에 대한 파이프라인 (12) 에서 계산된 분기 타겟 어드레스로부터, 또는 "비채택" 으로 예측된 분기에 대한 다음의 순차적인 어드레스로부터 추론적으로 명령을 페치한다. 둘 중 하나의 경우에, 프리페치된 명령은 추론적인 실행을 위해 파이프라인 (12) 으로 로딩된다.
데이터는 데이터 캐시 (D-캐시; 26) 로부터 액세스되고, 메모리 어드레스 번역 및 허용이 주요 변환 색인 버퍼 (TLB; 28) 에 의해 관리된다. 다양한 실시형태에서, ITLB 는 TLB 의 일부의 카피를 포함할 수도 있다. 또한, ITBL 와 TLB 는 통합될 수도 있다. 유사하게, 프로세서 (10) 의 다양한 실시형태에서, I-캐시 (22) 및 D-캐시 (26) 는 통합되거나, 단일화될 수도 있다. I-캐시 (22) 및/또는 D-캐시 (26) 에서의 미스는 메모리 인터페이스 (30) 의 제어하에서 주요 (오프 칩 (off-chip)) 메모리 (32) 로의 액세스를 야기한다.
프로세서 (10) 는 다양한 주변 디바이스 (36) 로의 액세스를 제어하는 입/출력 (I/O) 인터페이스 (34) 를 포함할 수도 있다. 당업자는 프로세서 (10) 의 수많은 변형이 가능함을 인식할 것이다. 예를 들어, 프로세서 (10) 는 I 및 D 캐시 (22, 26) 모두 또는 이들 중 하나에 대해 제 2 레벨 (L-2) 캐시를 포함할 수도 있다. 부가적으로, 프로세서 (10) 에 도시된 기능 블록 중 하나 이상은 특정 실시형태로부터 생략될 수도 있다.
전술한 바와 같이, 분기 예측 방법 및 알고리즘의 광범위한 다양성은 이 분 야에 공지됐다. 다양한 분기 예측기에 내재하는 구조 또는 방법론에 관계없이, 강하게 가중된 예측이 약하게 가중된 예측보다 더 정확하다는 것은 직관적으로 명백하고, 통계적으로 증명될 수도 있다. 즉, 포화 카운터의 더욱 포화된 값은 카운터의 가중 범위의 중앙쪽으로의 값보다 더 정확하게 분기 동작을 예측한다. 중앙값은 최근 평가 히스토리가 유입중인 분기 명령을 나타내고, 포화된 값은 일관된 최근 평가 히스토리를 갖는 분기 명령을 나타낸다.
강하게 가중된 분기 명령과 약하게 가중된 분기 명령 사이에서 정확성의 차이는, 강하게 예측된 분기 명령에 대한 명령만을 프리페치함으로써 파이프라인 프로세서 (10) 에서 전력을 보전하도록 사용될 수도 있다. 예시적인 분기 예측 방법이 도 2 를 참조하여 설명된다. 조건 분기 명령이 파이프라인 (12) 에서 검출된다 (블록 40). 이것은 보통 디코딩된 파이프 단계에서 발생하지만, 일부 실시형태에서 명령은 I-캐시 (22) 에 로딩되기 전에 미리 디코딩될 수도 있고, 파이프라인 제어 로직 (14) 은 명령 페치 즉시 조건 분기 명령을 인식할 수도 있다. 명령이 조건 분기로 검출되는 한, 평가 (예를 들어, "채택" 또는 "비채택") 가 예측되고, 예측은 가중된 값을 갖는다 (블록 42). 가중된 예측은, 예를 들어, 분기 예측 메카니즘 (23) 에 의해 제공된다. 분기 명령의 가중이 평가되고 (블록 44), 강하게 가중된 예측의 경우에, 명령은 I-캐시 (22) 로부터 프리페치되고 파이프라인 (12) 에서 추론적으로 실행된다 (블록 46). 약하게 가중된 예측의 경우에, 명령 프리페치 유닛 (25) 은 어떠한 명령도 프리페치하지 않는다 (블록 48). 또한, 프리페치 유닛 (25) 은 관련 조건 분기 명령이 파이프라인 (12) 에 서 평가되고, 그 실제 분기 동작이 알려지기까지 프리페치를 중단한다. 이 때, 명령 페치는 알려진 적당한 다음 어드레스로부터 계속한다.
사실상, 이 방법은, 예측에 제 3 의 상태 또는 명령을 추가함으로써 종래의 이중모드 분기 예측 (즉, "채택" 또는 "비채택") 을 변형하여, 채택된 분기를 예측하고 프리페치하거나, 비채택된 분기를 예측하고 프리페치하거나, 또는 실제 분기 조건 평가를 대기한다. 약하게 예측된 분기 타겟으로부터 명령을 프리페치하지 않음으로써, 프로세서 (10) 는, (강하게 예측된 분기 출력에 비해) 예측이 잘못되고 프리페치된 명령을 플러시해야할 가능성이 큰 경우, 명령을 프리페치하고 그들의 추론적인 실행을 시작하는데 필요한 전력을 낭비하지 않는다.
강하게 예측된 분기의 경우에, 본 발명의 방법은 프로세서 성능에 영향을 미치지 않아, 프리페치가 발생하고 분기 정확성은 이 분야에 주지된 바와 같이 성능에 영향을 미칠 것이다. 약하게 예측된 분기의 경우에, 프리페치가 중단되고, 프로세서 성능에 대한 영향은 예측의 정확성 및 관련된 잠재적 다음 어드레스 - 즉, 분기 타겟 어드레스 또는 다음 순차 어드레스 - 가 I-캐시 (22) 에 상주하는지 여부에 의존한다. 성능의 영향은 아래의 표 1 에 요약된다.
표 1 : 프로세서 성능에 대한 영향
I-캐시에서 예측된 어드레스 히트 I-캐시에서 예측된 어드레스 미스
정확한 약한 예측 디코딩/예측과 분기 평가 사이의 파이프 단계 수만큼 파이프라인을 스톨 (stall) 디코딩/예측과 분기 평가 사이의 파이프 단계 수만큼 파이프라인을 스톨
잘못된 약한 예측 파이프라인을 플러시하고 잘못 예측으로부터 복구할 필요를 방지 파이프라인을 플러시하고 잘못 예측으로부터 복구할 필요를 방지하고, I-캐시내의 양호한 데이터를 불필요한 명령으로 교체함을 방지.
약하게 가중된 분기 예측이 정확한 경우, 명령 프리페치를 중단하는 것은 파 이프라인에서 스톨을 도입함으로써 성능을 감소시킨다. 명령 실행은 분기 명령 디코딩 및 분기 예측과 결과적인 분기 조건 평가 사이의 파이프 단계 수만큼 (프리페치 했던 것에 비해) 스톨될 것이다. 이러한 경우에, 동일한 명령이 결국 페치되고 실행될 것이기 때문에, 전력 절약은 없을 것이다.
그러나, 약하게 가중된 분기 예측이 잘못된 경우에, 본 발명의 프리페치 중단 방법은 전력을 절약하고, 프로세서 성능을 개선할 수도 있다. 예측 어드레스가 I-캐시 (22) 에 상주하는 경우, 프로세서 (10) 는 정확한 약하게 가중된 분기 예측과 동일한 경우와 같은 스톨을 발생시킨다. 그러나, 제어기 (14) 는 파이프라인 (12) 을 플러시하고 다른 잘못된 예측 복구 동작을 할 필요가 없다. 잘못 예측된 분기가 복구에 대한 예외를 요구하는 경우, 중단되었던 명령 프리페치는 프리페치를 넘어 프로세서 성능에서 상당한 증가를 나타낸다.
약하게 가중된 분기 예측이 잘못되고 예측된 어드레스가 I-캐시 (22) 에 상주하지 않는 경우, 본 발명의 프리페치 중단 방법은 전력을 절약하고 프로세서 성능을 상당히 개선한다. 이러한 경우에, 프리페치 동작은 I-캐시 (22) 에서 잘못 예측되고, 메모리 액세스 및 캐시 라인 교체를 유발한다. 외부 메모리에의 액세스는 느리고 전력을 소모하며, 성능 및 전력 관리 모두에 악영향을 미친다. 그러나, 더욱 안 좋은 것은, 동작은 전체 캐시 라인을 프로세서 (10) 가 실행할 필요가 없는 명령으로 교체한다는 것이다. 이것은 교체된 명령이 다시 페치되는 경우, 후속 캐시가 미스될 것이고, 또 다른 외부 메모리 액세스의 전력 소모 및 지연을 요구한다.
본 발명의 일 실시형태에서, 명령 프리페치는 약하게 가중된 분기 예측에 응답하여 완전히 중단되지는 않고, 도 3 을 참조하여 설명하는 바와 같이, 프리페치가 I-캐시 (22) 에서 미스되는 경우에만 중단된다. 전술한 바와 같이, 조건 분기 명령이 검출되고 (블록 40), 그것의 평가가 예측된다 (블록 42). 예측이 강하게 가중된 경우, 명령은 예측된 다음 어드레스로부터 프리페치된다 (블록 46). 프리페치가 약하게 가중된 경우, 명령 프리페치 유닛 (25) 은 I-캐시 (22) 에 액세스하여 예측된 다음 어드레스가 거기에 상주하는지 여부를 결정한다 (블록 50). 예측된 어드레스가 I-캐시 (22) 에서 히트하는 경우, 프리페치가 계속된다 (블록 52). 프리페치 동작이 I-캐시 (22) 에서 미스된 경우, 프리페치 동작은 종결되고, 프리페치는 분기 조건이 파이프라인 (12) 에서 평가될 때까지 중단된다 (블록 54). 이 실시형태에서는, 정확한 약하게 가중된 분기 예측의 경우에서의 스톨이 방지되면서, 잘못된 약하게 가중된 분기 예측에 대한 캐시 라인 교체에 의해 발생하는 상당한 성능 품질 저하가 방지된다.
약하게 가중된 분기 예측이 명령 프리페치를 완전히 중단하는지 또는 I-캐시 미스의 경우에만 프리페치를 중단하는지 여부에 관계없이, 임의의 주어진 구현에서, 무엇이 "약한" 또는 "강한" 예측 가중을 구성하는지 정의되어야 한다. 전력 절약이 동일하고 일부 성능 품질 저하가 허용될 수 있는 애플리케이션에서, 강하게 가중된 예측은 포화 카운터의 가장 포화된 값만을 포함할 수도 있다. 즉, 하드웨어 관점에서, 모든 카운터 비트가 일치하는 경우, 예측은 강하게 가중되고 프리페치가 인에이블되고, 임의의 카운터 비트가 일치하지 않는 경우, 예측은 약하 게 가중된 것으로 고려될 수도 있고, 프리페치가 전체적으로 또는 조건적으로 디스에이블될 수도 있다.
전력 절약이 덜 중요하고 그리고/또는 성능이 더 중요한 경우, 더 유연한 접근 방법은 강하게 가중된 것에서 포화 레벨에서의 카운터 값뿐만 아니라 근처의 카운터 값을 포함할 수도 있다. 하나의 비한정적 예로서, 카운터 값의 최상위 및 바닥 25% 는 강하게 가중된 것으로 고려될 수도 있고, 중간 50% 는 약하게 가중된 것으로 고려될 수도 있다. 이진 카운터에 대해, 이 분포의 하드웨어 관점은 2 개의 최상위 비트가 일치하는 경우, 예측 값은 강하게 가중된다는 것이다. 또한, 상위 및 하위의 1/3 은 강하게 가중된 것으로 고려될 수도 있고, 중간의 1/3 은 약하게 가중된 것으로 고려될 수도 있다. 강하게 가중된 예측과 약하게 가중된 예측 사이의 구분은 특정 애플리케이션에 따라 적당할 수도 있는, 다양한 방법으로 규정될 수도 있음을 당업자는 용이하게 인식할 것이다.
본 명세서에 사용된 바와 같은, 약한 및 강한 이라는 단어와 이들의 파생어는 참조용이다. 특히, 그것들은 분기 예측 및 그 분기의 정확성의 신뢰도를 나타내는 가중된 출력을 생성하는 임의의 분기 예측기를 말하고, 여기서 강하게 예측된 것은 높은 신뢰성을 나타내는 출력을 말하고 약하게 가중된 것은 낮은 신뢰성을 나타내는 출력을 말한다. 약하게 가중된 분기 예측에 응답하여 명령 프리페치 및/또는 추론적인 명령 실행을 완전히 또는 조건적으로 중단하는 임의의 프로세서 (10) 는 본 발명의 범위내이다.
본 발명은 본 명세서에서 특정 형태, 양태 및 실시형태에 관해 설명되었지 만, 다수의 수정, 변경 및 다른 실시형태가 본 발명의 넓은 범위 내에서 가능하고, 모든 수정, 변경 및 실시형태는 본 발명의 범위내로 간주됨이 명백하다. 따라서, 본 발명은 예시적이고 제한적이지 않은 모든 양태로 해석되어야 하고, 첨부된 청구항의 의미 및 균등범위내에 속하는 변경은 청구범위에 포함되도록 의도된다.

Claims (18)

  1. 조건 분기 명령에 대한 복수의 가중된 분기 예측값 중 하나를 생성하는 분기 예측 메카니즘을 갖는 프로세서에서의 명령 프리페치 방법으로서,
    강하게 가중된 예측에 대해, 예측된 다음 어드레스에서 시작하는 명령을 프리페치하는 단계; 및
    약하게 가중된 예측에 대해, 분기 조건이 평가될 때까지 명령 프리페치를 중단하는 단계를 포함하는, 명령 프리페치 방법.
  2. 제 1 항에 있어서,
    상기 분기 예측 메카니즘은 하나 이상의 포화 카운터를 포함하는, 명령 프리페치 방법.
  3. 제 2 항에 있어서,
    상기 가중된 분기 예측 값을 생성하기 위해, 상기 포화 카운터의 출력과 하나 이상의 정적 예측을 조합하는 단계를 더 포함하는, 명령 프리페치 방법.
  4. 제 2 항에 있어서,
    상기 포화 카운터는 n 개의 비트를 포함하고,
    강하게 가중된 예측을 모든 n 개의 비트가 일치하는 것으로서 정의하는 단 계; 및
    약하게 가중된 예측을 임의의 비트가 일치하지 않는 것으로서 정의하는 단계를 더 포함하는, 명령 프리페치 방법.
  5. 제 2 항에 있어서,
    상기 포화 카운터는 2 개 이상의 비트를 포함하고,
    강하게 가중된 예측을 2 개의 최상위 비트가 일치하는 것으로서 정의하는 단계; 및
    약하게 가중된 예측을 상기 2 개의 최상위 비트가 일치하지 않는 것으로서 정의하는 단계를 더 포함하는, 명령 프리페치 방법.
  6. 제 2 항에 있어서,
    상기 포화 카운터는 n 비트 이진 카운터를 포함하고,
    강하게 가중된 예측을 N 보다 작거나 같고 (2n-1)-N 보다 크거나 같은 카운터 값으로서 정의하는 단계; 및
    약하게 가중된 예측을 N 보다 크고 (2n-1)-N 보다 작은 카운터 값으로서 정의하는 단계를 더 포함하며,
    상기 N 은 (2n/2)-2 이하의 음이 아닌 정수인, 명령 프리페치 방법.
  7. 제 1 항에 있어서,
    상기 분기 조건이 평가될 때까지 명령 프리페치를 중단하는 단계는,
    상기 프로세서 외부의 메모리로부터 명령 프리페치를 중단하는 단계를 포함하는, 명령 프리페치 방법.
  8. 명령 실행 파이프라인;
    조건 분기 명령의 평가를 예측하고 가중된 분기 예측 값을 출력하도록 동작하는 분기 예측 메카니즘; 및
    상기 분기 예측 메카니즘으로부터 강하게 가중된 예측에 응답하여 예측된 다음 어드레스로부터 명령을 추론적으로 프리페치하여 상기 파이프라인에 상기 명령을 로딩하고, 상기 분기 예측 메카니즘으로부터 약하게 가중된 예측에 응답하여 명령 프리페치를 중단하도록 동작하는 명령 프리페치 메카니즘을 포함하는, 프로세서.
  9. 제 8 항에 있어서,
    상기 분기 예측 메카니즘은 하나 이상의 포화 카운터를 포함하는, 프로세서.
  10. 제 9 항에 있어서,
    상기 분기 예측 메카니즘은 상기 포화 카운터의 출력과 하나 이상의 정적 예측을 조합하는, 프로세서.
  11. 제 9 항에 있어서,
    상기 포화 카운터는 n 개의 비트를 포함하고,
    모든 n 개의 비트가 일치하는 경우, 상기 예측은 강하게 가중되고, 임의의 비트가 불일치하는 경우, 상기 예측은 약하게 가중되는, 프로세서.
  12. 제 9 항에 있어서,
    상기 포화 카운터는 2 개 이상의 비트를 포함하고,
    2 개의 최상위 비트가 일치하는 경우, 상기 예측은 강하게 가중되고, 상기 2 개의 최상위 비트가 일치하는 않는 경우, 상기 예측은 약하게 가중되는, 프로세서.
  13. 제 8 항에 있어서,
    상기 명령 프리페치 메카니즘은, 예측된 분기 타겟 어드레스가 명령을 저장하는 캐시 메모리에서 미스된 경우에만, 약하게 가중된 예측에 응답하여 명령 프리페치를 중단하는, 프로세서.
  14. 파이프라인 프로세서에서 잘못 예측된 분기상에서 캐시 라인 교체를 방지하는 방법으로서,
    예측 및 그 예측의 정확성의 신뢰도를 나타내는 가중된 값으로 조건 분기 명령의 평가를 예측하는 단계;
    상기 조건 분기 명령에 후속하는 예측된 다음 어드레스에 대한 캐시 메모리에 추론적으로 액세스하는 단계: 및
    상기 액세스가 상기 캐시에서 미스되고 예측 값이 낮은 정확성의 신뢰성을 나타내는 경우, 상기 미스에 응답하여 캐시 라인 교체를 중단하는 단계를 포함하는, 캐시 라인 교체 방지 방법.
  15. 제 14 항에 있어서,
    상기 파이프라인에서 상기 조건 분기 명령을 평가하는 단계; 및
    상기 조건 분기 명령에 후속하는 평가된 다음 어드레스에 대한 상기 캐시 메모리에 후속적으로 액세스하는 단계를 더 포함하는, 캐시 라인 교체 방지 방법.
  16. 제 14 항에 있어서,
    상기 예측 및 그 예측의 정확성의 신뢰도를 나타내는 가중된 값으로 조건 분기 명령의 평가를 예측하는 단계는,
    상기 조건 분기 명령이 채택을 평가하는 경우, 포화 카운터를 증가시키고, 상기 조건 분기 명령이 비채택을 평가하는 경우, 상기 포화 카운터를 감소시키는 단계를 포함하는, 캐시 라인 교체 방지 방법.
  17. 프로세서에서의 명령 프리페치의 방법으로서,
    각각의 조건 분기 명령에 대해, 강한 채택으로부터 약한 채택 또는 비채택, 강한 비채택까지의 범위의 등급형 분기 예측 값을 결정하는 단계; 및
    상기 결정된 등급형 예측 값에 기초하여 명령을 조건적으로 프리페치하는 단계를 포함하는, 명령 프리페치 방법.
  18. 제 17 항에 있어서,
    상기 결정된 등급형 예측이 강한 채택 또는 강한 비채택인 경우, 예측된 다음 어드레스에서 명령을 프리페치하고,
    상기 등급형 예측 값이 약한 채택 또는 약한 비채택인 경우, 분기 조건이 파이프라인에서 평가될 때까지 명령 페치를 지연시키는, 명령 프리페치 방법.
KR1020077019940A 2005-02-03 2006-02-03 명령 프리페치 메카니즘 KR100944139B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/050,932 US7587580B2 (en) 2005-02-03 2005-02-03 Power efficient instruction prefetch mechanism
US11/050,932 2005-02-03

Publications (2)

Publication Number Publication Date
KR20070108209A true KR20070108209A (ko) 2007-11-08
KR100944139B1 KR100944139B1 (ko) 2010-02-24

Family

ID=36480912

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077019940A KR100944139B1 (ko) 2005-02-03 2006-02-03 명령 프리페치 메카니즘

Country Status (9)

Country Link
US (2) US7587580B2 (ko)
EP (2) EP1851621B1 (ko)
JP (2) JP5059623B2 (ko)
KR (1) KR100944139B1 (ko)
CN (1) CN100547542C (ko)
CA (1) CA2596865A1 (ko)
IL (1) IL184986A0 (ko)
RU (1) RU2375745C2 (ko)
WO (1) WO2006084288A2 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7516304B2 (en) 2005-03-10 2009-04-07 International Business Machines Corporation Parsing-enhancement facility
US20060230236A1 (en) * 2005-04-08 2006-10-12 Sun Microsystems, Inc. Method and apparatus for precognitive fetching
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US8566568B2 (en) * 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
WO2008029450A1 (fr) * 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US8027218B2 (en) 2006-10-13 2011-09-27 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US7787324B2 (en) * 2006-10-13 2010-08-31 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US7627742B2 (en) * 2007-04-10 2009-12-01 International Business Machines Corporation Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
JP5195228B2 (ja) * 2008-09-26 2013-05-08 富士通株式会社 処理プログラム、処理装置及び処理方法
JP5387819B2 (ja) * 2008-12-26 2014-01-15 日本電気株式会社 分岐予測の信頼度見積もり回路及びその方法
JP2011028540A (ja) * 2009-07-27 2011-02-10 Renesas Electronics Corp 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
CN101887400B (zh) * 2010-06-24 2015-08-12 中兴通讯股份有限公司 缓存对象老化的方法和装置
US9122486B2 (en) * 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
US9836304B2 (en) * 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
RU2475822C1 (ru) * 2011-12-08 2013-02-20 Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Подсистема памяти ядра микропроцессора
US9811341B2 (en) * 2011-12-29 2017-11-07 Intel Corporation Managed instruction cache prefetching
EP2816466B1 (en) * 2012-02-14 2019-01-16 Renesas Electronics Corporation Data processing device
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9116686B2 (en) * 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9304932B2 (en) * 2012-12-20 2016-04-05 Qualcomm Incorporated Instruction cache having a multi-bit way prediction mask
GB2513043B (en) * 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US9519586B2 (en) * 2013-01-21 2016-12-13 Qualcomm Incorporated Methods and apparatus to reduce cache pollution caused by data prefetching
WO2014143042A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Path profiling using hardware and software combination
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
GB2515076B (en) * 2013-06-13 2020-07-15 Advanced Risc Mach Ltd A data processing apparatus and method for handling retrieval of instructions from an instruction cache
JP6287650B2 (ja) * 2014-07-10 2018-03-07 富士通株式会社 シミュレーション方法、シミュレーションプログラム
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
US10474462B2 (en) 2016-02-29 2019-11-12 Qualcomm Incorporated Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
GB2548871B (en) * 2016-03-31 2019-02-06 Advanced Risc Mach Ltd Instruction prefetching
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10657057B2 (en) * 2018-04-04 2020-05-19 Nxp B.V. Secure speculative instruction execution in a data processing system
US10901743B2 (en) 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
US10489305B1 (en) * 2018-08-14 2019-11-26 Texas Instruments Incorporated Prefetch kill and revival in an instruction cache
CN110688160B (zh) * 2019-09-04 2021-11-19 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
US11288209B2 (en) * 2019-09-20 2022-03-29 Arm Limited Controlling cache entry replacement based on usefulness of cache entry
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
US11579884B2 (en) 2020-06-26 2023-02-14 Advanced Micro Devices, Inc. Instruction address translation and caching for primary and alternate branch prediction paths
US11567776B2 (en) * 2020-11-03 2023-01-31 Centaur Technology, Inc. Branch density detection for prefetcher
CN114116016B (zh) * 2022-01-27 2022-04-22 广东省新一代通信与网络创新研究院 基于处理器的指令预取方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666666A (en) * 1995-06-07 1997-09-16 Chaffen; Barry Neckwear
US5721864A (en) * 1995-09-18 1998-02-24 International Business Machines Corporation Prefetching instructions between caches
US5740417A (en) 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
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
US5930159A (en) 1996-10-17 1999-07-27 Samsung Electronics Co., Ltd Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6134633A (en) 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
JP4111645B2 (ja) * 1999-11-30 2008-07-02 富士通株式会社 キャッシュミスした後のメモリバスアクセス制御方式
KR20010051885A (ko) 1999-11-24 2001-06-25 메리 이. 보울러 피복시 박리 강도가 개선된 폴리이미드 조성물
US6681322B1 (en) * 1999-11-26 2004-01-20 Hewlett-Packard Development Company L.P. Method and apparatus for emulating an instruction set extension in a digital computer system
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
RU2189623C2 (ru) 2000-06-27 2002-09-20 Тюрин Сергей Феофентович Система для программного управления технологическим оборудованием
US6766441B2 (en) 2001-01-19 2004-07-20 International Business Machines Corporation Prefetching instructions in mis-predicted path for low confidence branches
RU2238584C2 (ru) 2002-07-31 2004-10-20 Муратшин Борис Фрилевич Способ организации персистентной кэш памяти для многозадачных, в том числе симметричных многопроцессорных компьютерных систем и устройство для его осуществления
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US20070186050A1 (en) 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US8341383B2 (en) * 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences
US8874884B2 (en) * 2011-11-04 2014-10-28 Qualcomm Incorporated Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold

Also Published As

Publication number Publication date
EP2431868A2 (en) 2012-03-21
CN101147127A (zh) 2008-03-19
CN100547542C (zh) 2009-10-07
JP5059623B2 (ja) 2012-10-24
EP2431868B1 (en) 2018-10-03
WO2006084288A2 (en) 2006-08-10
EP2431868A3 (en) 2013-01-02
US20090210663A1 (en) 2009-08-20
EP1851621B1 (en) 2013-04-03
US7587580B2 (en) 2009-09-08
RU2375745C2 (ru) 2009-12-10
JP2008529191A (ja) 2008-07-31
JP5335946B2 (ja) 2013-11-06
WO2006084288A3 (en) 2007-01-11
US20060174090A1 (en) 2006-08-03
JP2012150824A (ja) 2012-08-09
RU2007132861A (ru) 2009-03-10
KR100944139B1 (ko) 2010-02-24
EP1851621A2 (en) 2007-11-07
US8661229B2 (en) 2014-02-25
IL184986A0 (en) 2007-12-03
CA2596865A1 (en) 2006-08-10

Similar Documents

Publication Publication Date Title
KR100944139B1 (ko) 명령 프리페치 메카니즘
KR101074621B1 (ko) 프로액티브 브랜치 타겟 어드레스 캐시 관리를 위한 방법들 및 장치
KR100973951B1 (ko) 오정렬 메모리 액세스 예측
EP1851620B1 (en) Suppressing update of a branch history register by loop-ending branches
CA2587915C (en) Pre-decode error handling via branch correction
US9122486B2 (en) Bimodal branch predictor encoded in a branch instruction
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: 20130130

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee