KR20090042303A - 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 - Google Patents
가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 Download PDFInfo
- Publication number
- KR20090042303A KR20090042303A KR1020097004883A KR20097004883A KR20090042303A KR 20090042303 A KR20090042303 A KR 20090042303A KR 1020097004883 A KR1020097004883 A KR 1020097004883A KR 20097004883 A KR20097004883 A KR 20097004883A KR 20090042303 A KR20090042303 A KR 20090042303A
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- branch
- instructions
- btac
- branch instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000011010 flushing procedure Methods 0.000 claims abstract 3
- 238000011156 evaluation Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000014616 translation Effects 0.000 description 4
- 230000002411 adverse Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 238000011871 bio-impedance analysis Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Abstract
각 명령의 길이가 최소 명령 길이 입도의 배수가 되는 가변 길이 명령 세트에서, 취해진 브랜치 명령의 최종 입도(즉, 종료부)에 대한 표시가 브랜치 타겟 어드레스 캐시(BTAC)에 저장된다. 후에 BTAC에서 히트하는 브랜치 명령은 취해지는 것으로 예측되며, 이전에 패치된 명령들은 이러한 브랜치 명령의 표시된 종료부를 바로 지나쳐서 시작하는 파이프라인으로부터 플러쉬된다. 이러한 기술은 BTAC에서 브랜치 명령 길이를 저장할 필요성을 방지함으로써 BTAC 공간을 절약하고, (브랜치 명령의 길이에 기반하여) 플러쉬를 개시할 장소를 계산하는 필요성을 제거함으로써 성능을 개선한다.
Description
본 발명은 일반적으로 가변-길이 명령 세트 프로세서 분야에 관한 것으로서, 특히 취해진 브랜치 명령의 최종 입도(granularity)에 대한 표시자를 저장하는 브랜치 타겟 어드레스 캐시에 대한 것이다.
마이크로프로세서들은 다양한 애플리케이션들에서 계산 작업을 수행한다. 개선된 소프트웨어를 통한 기능성 증가 및/또는 고속 동작을 실현함으로써 제품 성능 개선을 유도하기 위한 프로세서 성능 개선은 설계자의 영원한 목적이다. 많은 임베디드 애플리케이션들에서(예를 들면, 휴대용 전자 장치) 전력 보존 및 칩 사이즈 감소 역시 프로세서 설계 및 구현시에 중요한 목적이다.
최근의 프로세서들은 파이프라인화된 구조를 채용하며, 파이프라인화된 구조의 경우, 각각 다수의 명령 단계들을 갖는 순차적인 명령들은 실행시에 오버랩된다. 순차적인 명령 스트림의 명령들 사이에서 병렬처리(parallelism)를 이용하는 능력은 개선된 프로세서 성능에 크게 기여한다. 이상적인 조건 하에서 그리고 한 사이클에서 각 파이프 단계를 완성하는 프로세서에서, 파이프라인을 채우는 잠깐의 초기 처리 후에, 일 명령은 매 사이클에서 실행을 완성할 수 있다.
이러한 이상적인 조건들은 명령들 사이의 데이터 의존성(데이터 해저드), 브랜치들과 같은 제어 의존성(제어 해저드), 프로세서 자원 할당 충돌(구조적 해저드), 중단, 캐시 미스, 등과 같은 다양한 요인들로 인해서 실제로는 실현되지 않는다. 프로세서 설계의 주요한 목표는 이러한 해저드를 회피하고, 파이프라인을 "풀(full)" 상태로 유지하는 것이다.
모든 실제 프로그램들은 무조건부 또는 조건부 브랜치 명령들을 포함하는 브랜치 명령들을 포함한다. 브랜치 명령들의 실제 브랜칭 동작(behavior)은 그 명령이 파이프라인에서 충분히 평가되기까지는 종종 알려지지 않는다. 이는 파이프라인을 중단시키는 제어 해저드를 생성하는데, 왜냐하면 프로세서는 브랜치 명령 후에 어떤 명령을 패치 할지를 알지 못하고, 브랜치 명령이 평가될 때까지 알 수 없기 때문이다. 최근 프로세서들은 다양한 형태의 브랜치 예측들을 채택하고, 이를 통해 조건부 브랜치 명령들의 브랜칭 동작 및 브랜치 타겟 어드레스들이 파이프라인에서 조기에 예측되고, 프로세서는 브랜치 예측에 기반하여 명령들을 추측적으로 패치 및 실행하며, 따라서 파이프라인을 풀 상태로 유지한다. 예측이 정확하다면, 성능은 최대화되고 전력 소비는 최소화된다. 브랜치 명령들이 실제로 평가될 때, 브랜치가 잘못 예측되었다면, 추측적으로 패치된 명령들은 파이프라인에서 플러쉬(flush) 되어야 하고, 새로운 명령들이 정확한 브랜치 타겟 어드레스로부터 패치된다. 잘못 예측된 브랜치들은 프로세서 성능 및 전력 소비 관점에서 악 영향을 초래한다.
브랜치 예측에 대한 2개의 컴포넌트들이 존재한다; 조건 평가 및 브랜치 타겟 어드레스. 조건 평가(조건부 브랜치 명령들에만 관련됨)는 2진 결정이며; 하나의 경우는, 브랜치가 취해져서 실행이 상이한 코드 시퀀스로 점프하도록 하며, 다른 하나의 경우는 브랜치가 취해지지 않아서 조건부 브랜치 명령 후에 다음 순차 명령을 프로세서가 실행하도록 하는 것이다. 브랜치 타겟 어드레스(BTA)는 취해진 것으로 평가되는 무조건부 브랜치 명령 또는 조건부 브랜치 명령에 대한 브랜치들을 제어하는 어드레스이다. 일부 브랜치 명령들은 명령 옵(op)-코드에서 BTA를 포함하거나, BTA가 용이하게 계산될 수 있는 오프셋을 포함한다. 다른 브랜치 명령들에 있어서, BTA는 파이프라인에서 깊숙이 까지 계산되지 않고, 따라서 예측되어야 한다.
BTA 예측의 하나의 알려진 기술은 브랜치 타겟 어드레스 캐시(BTAC)를 이용한다. 종래기술로 알려진 BTAC는 브랜치 명령 어드레스(BIA)에 의해 인덱스되는 캐시이며, 여기서 각 데이터 위치(또는 캐시 "라인")는 BTA를 포함한다. 브랜치 명령이 파이프라인에서 취해진 것으로 평가되면, 브랜치 명령의 실제 BTA가 계산되고, BIA가 BTAC의 컨텐트 주소 지정 가능한 메모리(CAM) 구조에 기록되고, BTA는 (예를 들어, 후기입(write-back) 파이프라인 스테이지 동안) BTAC의 관련된 RAM 위치에 기록된다. 새로운 명령들을 패치할 때, BTAC의 CAM은 명령 캐시와 병렬로 액세스된다. 명령 어드레스가 BTAC에서 히트(hit)하면, 프로세서는 (디코딩되는 명령 캐시로부터 패치되는 명령에 앞서) 그 명령이 브랜치 명령임을 인지하게 되고, 브랜치 명령의 이전 실행의 실제 BTA인, BTAC의 RAM으로부터 예측된 BTA가 제공된 다. 브랜치 예측 회로가 그 브랜치가 취해질 것이라고 예측하면, 추측적인 명령 패칭이 예측된 BTA에서 시작된다. 브랜치가 취해지지 않는다고 예측되면, 명령 패칭은 순차적으로 계속된다.
BTAC는 당업계에서 포화(saturation) 카운터를 BIA와 관련시켜, 조건 평가 예측만을 제공하는(즉, 취해지거나, 취해지지 않음) 캐시를 표시하기 위해서 사용됨에 유의하라. 이는 본 명세서에서 사용되는 용어와는 그 의미가 다르다.
고성능 프로세서는 명령 캐시로부터 한 번에 둘 이상의 명령들을 그룹들로(여기서, 패치 그룹으로 지칭됨) 패치할 수 있다. 패치 그룹은 명령 캐시 라인과 상관(correlate)될 수 있지만, 반드시 그런 것은 아니다. 예를 들어, 4개의 명령들로 이뤄진 패치 그룹이 이들을 파이프라인으로 순차적으로 제공하는 명령 패치 버퍼 내로 패치될 수 있다.
본 출원의 양도인에게 양도되고 본 명세서에서 참조되는 미국 출원 번호 11/383,527 "블록-기반 브랜치 타겟 어드레스 캐시"는 다수의 엔트리들을 저장하는 블록-기반 BTAC를 제시하며, 여기서 각 엔트리는 명령들 블록과 관련되고, 이러한 블록의 하나 이상의 명령들은 취해진 것으로 평가된 브랜치 명령이다. BTAC 엔트리는 관련된 블록 내에서 어떤 명령이 취해진 브랜치 명령인지에 대한 표시자 및 취해진 브랜치의 BTA를 포함한다. BTAC 엔트리들은 (블록 내의 명령들을 선택하는 저-차수 어드레스 비트들을 절단(truncate)함으로써) 블록의 모든 명령들에 공통인 어드레스 비트들에 의해 인덱스된다. 따라서, 블록 사이즈 및 상대적인 블록 경계들은 고정된다.
본 출원의 양도인에게 양도되고 본 명세서에서 참조되는 미국 출원 번호 11/422,186 " 슬라이딩 윈도우, 블록-기반 브랜치 타겟 어드레스 캐시"는 각 BTAC 엔트리가 패치 그룹과 관련되고, 패치 그룹의 제1 명령의 어드레스에 의해 인덱스되는, 블록-기반 BTAC를 제시한다. 패치 그룹들은 상이한 방식으로 형성될 수 있기 때문에(예를 들면, 브랜치 타겟에서 시작함), 각 BTAC 엔트리에 의해 나타내지는 명령들 그룹은 고정되지 않는다. 각 BTAC 엔트리는 패치 그룹 내의 어떤 명령이 취해진 브랜치 명령인지에 대한 표시자 및 취해진 브랜치의 BTA를 포함한다.
브랜치 명령이 BTAC에서 히트하고 취해진 것으로 예측되면, 이미 패치된(예를 들어, 동일한 패치 그룹의 일부인) 브랜치 명령 후의 순차 명령들은 파이프라인으로부터 플러쉬되고, BTAC로부터 검색된 BTA에서 시작하는 명령들은 브랜치 명령 후에 파이프라인으로 추측적으로 패치된다. 상술한 바와 같이, BTAC 엔트리들이 하나의 브랜치 명령보다 많은 브랜치 명령과 관련되는 경우, 블록 또는 그룹 내의 어떤 명령이 취해진 명령인지에 대한 일부 표시자가 각 BTAC 엔트리의 일부로서 저장되며, 따라서 이러한 브랜치 명령 후의 명령들은 플러쉬될 수 있다. 모든 명령들이 동일한 길이를 갖는 명령 세트들의 경우, 브랜치 명령의 시작에 대한 표시자의 저장만으로 충분하다; 명령들은 그 브랜치 명령의 어드레스 후의 다음 명령 어드레스 시작부에서 플러쉬된다.
그러나 가변 길이 명령 세트의 경우, 브랜치 명령 후의 제1 명령 어드레스가 계산될 수 있도록, 브랜치 명령 자신의 길이에 대한 일부 표시자가 저장되어야 한다. 이는 BTAC의 저장 공간을 낭비하고, 또한 플러쉬 위치를 결정하는데 계산을 필요로 하며, 따라서 사이클 시간을 제한함으로써 성능에 악 영향을 미치게 된다.
일 실시예에 따르면, 가변-길이 명령 세트에서, 취해진 브랜치 명령의 종료에 대한 표시가 브랜치 타겟 어드레스 캐시(BTAC)에 저장된다. 제한되지 않는 일 예로서, ARM 명령 세트 구조의 일부 버젼들은 32 비트 ARM 모드 브랜치 명령들 및 16비트 섬(Thumb) 모드 명령들을 포함한다. 이러한 경우, 본 발명에 따르면, 취해진 브랜치 명령의 마지막 하프워드(halfword)(예를 들면, 16비트)에 대한 표시가 각각의 BTAC 엔트리에 저장된다. 이는 16비트 브랜치 명령에 대한 브랜치 명령 어드레스(BIA) 및 32비트 브랜치 명령에 대한 마지막 하프워드에 대응한다. 어떤 경우이던지, BTAC에서 히트하는 브랜치 명령이 취해진 것으로 예측되면, 이전에 패치된 명령들은 명령 길이에 관계없이 표시된 하프워드를 지나쳐서 바로 시작하는 파이프라인으로부터 플러쉬될 수 있다.
일 실시예는 가변 길이 명령 세트로부터 명령들을 실행하는 방법에 관련되며, 여기서 각 명령의 길이는 최소 명령 길이 입도의 배수이다. 취해진 것으로 평가되는 브랜치 명령의 브랜치 타겟 어드레스는 브랜치 타겟 어드레스 캐시에 저장된다. 브랜치 명령의 최종 입도에 대한 어드레스 표시자는 브랜치 타겟 어드레스와 함께 저장된다. 브랜치 타겟 어드레스 캐시에서 뒤이은 히트시에, 히트 브랜치 명령의 최종 입도를 지나쳐서 패치된 모든 명령들은 플러쉬된다.
또 다른 실시예는 가변 길이 명령 세트로부터 명령들을 실행하는 프로세서에 관련되며, 여기서 각 명령의 길이는 최소 명령 길이 입도의 배수이다. 프로세서는 다수의 명령들을 저장하는 명령 캐시, 및 이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자 및 브랜치 타겟 어드레스를 저장하는 브랜치 타겟 어드레스 캐시를 포함한다. 프로세서는 또한 현재 브랜치 명령이 취해진 것으로 평가될 것인지 취해지지 않은 것으로 평가될 것인지 예측하는 브랜치 예측 유닛 및 명령들을 실행하는 명령 실행 파이프라인을 포함한다. 프로세서는 또한 현재 명령 어드레스를 사용하여 브랜치 타겟 어드레스 캐시 및 명령 캐시에 동시에 액세스하고, 이전에 평가된 브랜치 명령의 최종 입도에 대한 표시자 및 취해진 브랜치 예측에 응답하여 브랜치 명령 후에 패치된 모든 명령들의 파이프라인을 플러쉬하도록 동작하는 하나 이상의 제어 회로들을 포함한다.
또 다른 실시예는 다수의 엔트리들을 포함하는 브랜치 타겟 어드레스 캐시에 관련되며, 각 엔트리는 태그에 의해 인덱스되며 이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자 및 브랜치 타겟 어드레스를 저장한다.
도1은 프로세서의 기능적인 블록 다이아그램이다.
도2는 프로세서의 패치 스테이지에 대한 기능적인 블록 다이아그램이다.
도3은 BTAC의 기능적인 블록 다이아그램이다.
도4는 명령 실행을 기술하는 레지스터 컨텐츠들의 사이클 다이아그램 및 3개의 프로세서 명령들을 보여주는 도이다.
도1은 프로세서(10)의 기능적인 블록 다이아그램이다. 프로세서(10)는 명령 유닛(12) 및 하나 이상의 실행 유닛(14)을 포함한다. 명령 유닛(12)은 실행 유닛(14)에 대한 중앙집중식 명령 흐름 제어를 제공한다. 명령 유닛(12)은 명령 캐시(16)로부터 명령들을 패치하고, 여기서 메모리 어드레스 해석 및 허용은 명령측 변환 참조 버퍼(TLB)에 의해 관리된다.
실행 유닛(14)은 명령 유닛(12)에 의해 전달되는 명령들을 실행한다. 실행 유닛(14)은 범용 레지스터(GPR)(20)에 대한 판독 및 기록을 수행하고, 데이터 캐시(24)로부터의 데이터에 액세스하며, 여기서 메모리 어드레스 해석 및 허용들은 주 변환 참조 버퍼(TLB)(24)에 의해 관리된다. 다양한 실시예들에서, ITLB(18)는 TLB(24)의 일부에 대한 카피를 포함할 수 있다. 대안적으로, ITLB(18) 및 TLB(24)는 통합될 수도 있다. 유사하게, 프로세서(10)의 다양한 실시예들에서, 명령 캐시(16) 및 데이터 캐시(22)는 통합되거나, 또는 통일될 수 있다. 명령 캐시(16) 및/또는 데이터 캐시(22)에서의 미스(miss)는 제2 레벨, 또는 L2 캐시(26)로의 액세스를 초래한다. L2 캐시(26)에서의 미스는 메모리 인터페이스(30)의 제어하에 주(오프-칩) 메모리(28)로의 액세스를 야기한다.
명령 유닛(12)은 프로세서(10) 파이프라인의 패치(32) 및 디코딩 스테이지(36)들을 포함한다. 패치 스테이지(32)는 요구되는 명령들이 명령 캐시(16) 또는 L2 캐시(26)에 각각 존재하지 않는 경우, L2 캐시(26) 및/또는 메모리(28) 액세스를 포함할 수 있는 명령들을 검색(retrieve)하기 위해서 명령 캐시(16) 액세스들을 수행한다. 디코딩 스테이지(28)는 검색된 명령들을 디코딩한다. 명령 유닛(12)은 또한 디코딩 스테이지(28)에 의해 디코딩된 명령들을 저장하기 위한 명령 큐(38) 및 큐잉된 명령들을 적절한 실행 유닛으로 디스패치하기 위한 명령 디스패치 유닛(40)을 더 포함한다.
브랜치 예측 유닛(BPU)(42)은 조건부 브랜치 명령들의 실행 동작을 예측한다. 패치 스테이지(32)의 명령 어드레스들은 명령 캐시(16)로부터의 명령 패치들과 병렬적으로 브랜치 타겟 어드레스 캐시(BTAC)(44) 및 브랜치 히스토리 테이블(BHT)(46)에 액세스한다. BTAC(44)에서의 히트는 이전에 취해진 것으로 평가된 브랜치 명령을 표시하고, BTAC(44)는 브랜치 명령의 최종 실행의 브랜치 타겟 어드레스(BTA)를 제공한다. BHT(46)는 해결된 브랜치 명령들에 대응하는 브랜치 예측 기록들을 유지하고, 이러한 기록들은 알려진 브랜치들이 이전에 취해진 것으로 평가되었는지 아니면 취해지지 않은 것으로 평가되었는지를 표시한다. BHT(46)는 예를 들어 브랜치 명령의 이전 평가들에 기반하여, 브랜치가 취해질 것인지 아니면 취해지지 않을 것인지에 대한 약한 예측 내지 강한 예측을 제공하는 포화(saturation) 카운터들을 포함한다. BPU(42)는 BTAC(44)로부터 히트/미스 정보 및 BHT(46)로부터의 브랜치 히스토리 정보를 평가하여 브랜치 예측을 형성한다(formulate).
도2는 명령 유닛(12)의 패치 스테이지(32) 및 브랜치 예측 회로들을 보다 상세히 보여주는 블록 다이아그램이다. 도2의 점선은 기능적인 액세스 관계를 보여주며, 반드시 직접 연결됨을 의미하지는 않음에 유의하라. 패치 스테이지(32)는 다양한 소스들로부터 명령 어드레스들을 선택하는 캐시 액세스 조정 논리부(48)를 포함한다. 사이클당 하나의 명령이 본 예에서 3개의 스테이지들(패치 1 스테이 지(50), 패치 2 스테이지(52), 및 패치 3 스테이지(54))을 포함하는 명령 패치 파이프라인으로 론칭된다.
캐시 액세스 조정 논리부(48)는 다양한 소스들로부터 패치 파이프라인 내로 론칭하기 위해서 명령 어드레스들을 선택한다. 여기서 특정 관련성(relevance)의 2개의 명령 어드레스 소스들은 패치 1 파이프라인 스테이지(50)의 출력 상에서 동작하는 증분기(56)에 의해 생성되는 다음 순차(sequential) 명령, 명령 블록, 또는 명령 패치 그룹 어드레스 및 BPU(42)로부터의 브랜치 예측들에 응답하여 추측적으로 패치되는 비-순차 브랜치 타겟 어드레스들을 포함한다. 다른 명령 어드레스 소스들은 실행 핸들러(handler), 중단(interrupt) 벡터 어드레스 등을 포함한다.
패치 1 스테이지(50) 및 패치 2 스테이지(52)는 명령 캐시(16), BTAC(44), 및 BHT(46)에 대한 동시적이고, 병렬적인 2-스테이지 액세스들을 수행한다. 특히, 패치 1 스테이지(50)의 명령 어드레스는 제1 캐시 액세스 사이클 동안 명령 캐시(16) 및 BTAC(44)에 액세스하여, (명령 캐시(16)에서의 히트 또는 미스를 통해) 그 어드레스와 관련된 명령들이 명령 캐시(16)에 존재하는지 여부를 확인하고, (BTAC(44)에서의 히트 또는 미스를 통해) 알려진 브랜치 명령이 그 명령 어드레스와 관련되는지 여부를 확인한다. 이어서, 제2 캐시 사이클에서, 명령 어드레스는 패치 2 스테이지(52)로 이동하고, 명령 어드레스가 각각의 캐시(16,44)에서 히트하는 경우, 명령들이 명령 캐시(16)로부터 제공되며, 및/또는 브랜치 타겟 어드레스(BTA)가 BTAC(44)로부터 제공된다.
명령 어드레스가 명령 캐시(16)에서 미스이면, 패치 3 스테이지(54)로 진행 하여 L2 캐시(26) 액세스를 론칭한다. 당업자는 명령 캐시(16) 및 BTAC(44)의 액세스 타이밍 등에 따라 도2에 제시된 실시예 보다 많거나 적은 수의 패치 레지스터 스테이지들을 패치 파이프라인이 포함할 수 있음을 잘 이해할 수 있을 것이다.
BTAC(44)의 일 실시예에 대한 기능적인 블록 다이아그램이 도3에서 제시된다. BTAC(44)는 CAM 구조(60) 및 RAM 구조(62)를 포함한다. 전형적인 엔트리에서, CAM 구조(60)는 상태 정보(64), 어드레스 태그(66), 및 유효 비트(68)를 포함한다. 상술한 바와 같이, 그리고 본 명세서에 참조되는 상기 출원 명세서에 제시된 바와 같이, 일 실시예의 태그(66)는 단일 브랜치 명령 어드레스(BIA)를 포함한다. 여기서 블록-기반 BTAC(44)로 지칭되는, 다른 실시예에서, 태그(66)는 명령들 그룹 또는 블록의 공통 어드레스 비트들을 포함한다(즉, 최하위 비트는 절단됨). 슬라이딩 윈도우 BTAC(44)로 지칭되는, 또 다른 실시예에서, 태그(66)는 명령 패치 그룹에서 제1 명령에 대한 어드레스를 포함한다.
그러나, BTAC(44)는 구조화되고(structured), 태그(66)는 취해진 것으로 이전에 평가된 브랜치 명령에 대응하며, 히트(또는 패치 1 스테이지(54)의 어드레스와 태그(66) 사이의 매칭)는 블록 또는 패치 그룹의 명령이 브랜치 명령임을 표시한다. CAM(60)에서의 히트에 응답하여, 대응하는 히트 비트(70)가 동일한 BTAC(44) 엔트리의 RAM 구조(62)에서 설정된다. 일부 실시예들에서, 히트 비트(70)는 넌-클록(non-clocked), 단조(monotonic) 저장 장치(예를 들면, 제로-캐쳐(catcher), 1-캐쳐, 또는 잼 래치)를 포함한다. 캐시 디자인은 본 발명과 관련이 없으며, 따라서 상세히 설명되지 않는다.
제2 캐시 액세스 사이클 동안, 히트 비트(70)에 의해 식별되는 BTAC(44) 엔트리로부터의 데이터가 RAM 구조(62)로부터 판독된다. 이러한 데이터는 브랜치 타겟 어드레스(BTA)(72)를 포함하며, 브랜치 명령과 관련된 추가적인 정보를 포함할 수 있고, 여기서 링크 스택 비트(74)는 명령이 링크 스택 사용자인지 여부를 표시하며, 및/또는 무조건부 비트(76)는 무조건부 브랜치 명령을 표시한다. 다른 데이터가 특정 애플리케이션의 필요에 따라 BTAC(44)의 RAM(62)에 저장될 수 있다.
관련된 브랜치 명령의 최종 입도를 표시하는 위치 비트들(78)이 또한 BTAC(44) 엔트리에 저장된다. 각 태그(66)가 단지 하나의 BIA에만 관련되는 BTAC(44)의 경우, 위치 비트(78)는 예를 들면 BIA로부터의 오프셋에 의해 브랜치 명령의 종료부를 식별한다. 이러한 경우, 위치 비트(78)는 본질적으로 브랜치 명령 길이를 식별한다. 태그(66)가 둘 이상의 명령에 관련되는 블록-기반 또는 슬라이딩 윈도우 BTAC(44)의 경우, 위치 비트(78)는 BTA(72)와 관련되는 취해진 브랜치 명령의 최종 입도의 명령 블록 또는 패치 그룹 내의 위치를 식별한다. 즉, 위치 비트(78)는 명령 블록 또는 패치 그룹 내의 브랜치 명령의 종료부 위치를 식별한다.
도4는 3개의 명령들을 포함하는 예시적인 코드 스니핏(snippet)을 보여주며, 상기 3개의 명령들 중 하나는 이전에 취해진 것으로 평가된 32비트 조건부 브랜치 명령이다. 이러한 예에서, 패치 파이프라인 레지스터 각각은 4개의 하프워드들을 유지한다. 도4는 또한 명령들이 명령 캐시(16)로부터 패치될 때, 이러한 레지스터들 각각에서의 명령 어드레스들을 보여준다. 제1 사이클에서, 패치 1 스테이 지(50)는 명령 어드레스 0800,0802,0804, 및 0806을 보유한다. 어드레스 0800은 슬라이딩 윈도우 BTAC(44)의 경우 명령 캐시(16) 및 BTAC(44)로 인가된다; 블록 기반 BTAC(44)의 경우, 적어도 2개의 최하위 비트들이 BTAC(44) 룩-업에 앞서 절단된다. 제1 사이클 종료시에, BTAC(44)는 히트를 보고하고, 이는 브랜치 명령이 그 블록 또는 그룹 내에 존재하고, 브랜치 명령이 이전에 취해진 것으로 평가되었음을 표시한다. 제2 사이클 동안, BTA(본 예에서, 어드레스 B) 및 위치 비트(78)가 BTAC(44)로부터 검색된다. 한편, 어드레스 0800-0806은 패치 2 스테이지(52) 내로 드롭되고, 다음 순차 어드레스들 0808-080E가 패치 1 스테이지(50)로 (증분기(56)를 통해) 로딩된다.
명령 캐시(16) 및 BTAC(44) 룩-업들과 병행하여, BHT(46)가 액세스되어, 관련된 브랜치 명령의 과거 브랜치 평가 동작을 브랜치 예측 유닛(BPU)(42)으로 제공한다. BTAC(44) 및 BHT(46)로부터 검색된 정보에 기반하여, BPU(42)는 현재 명령 어드레스와 관련된 브랜치 명령이 취해진 것으로 평가될지 아니면, 취해지지 않는 것으로 평가될지를 예측한다. 브랜치 명령이 취해지지 않을 것으로 BPU(42)가 예측하면, 순차 어드레스들(예를 들면, 0808-080E)이 패치 스테이지(32)를 통해 진행되어, 0808에 의한 명령 캐시(16) 및 BTAC(44) 액세스들을 초래한다. 다른 한편으로, 브랜치 명령이 취해질 것이라고 BPU(42)가 예측하면, 그 브랜치 명령을 뒤따르는 모든 명령 어드레스들은 명령 캐시(16) 및 BTAC(44)의 다음 액세스를 위해 대신 사용되는 BTAC(44)로부터 검색된 BTA, 및 패치 파이프라인 레지스터들(50,52)로부터 플러쉬되어야 한다.
위치 비트들은 일반적으로 브랜치 명령 시작부의 블록 또는 그룹 내의 위치를 표시한다(예를 들어, 4'b0010)(레지스터에서 우측에서 좌측으로 어드레스 증분을 가정함). 그러나, 브랜치 명령의 시작부는 명령이 종료하는 위치를 뒤이어 계산하는데에만 사용되고, 이는 명령 길이(예를 들면, 16 또는 32 비트)에 대한 정보를 필요로 한다. 또한, 이러한 계산은 추가적인 논리 레벨들을 필요로 하며, 따라서 사이클 시간을 증가시키고 성능에 악 영향을 준다. 일 실시예에 따르면, 위치 비트(78)는 블록 또는 그룹 내의 브랜치 명령의 최종 명령 길이 입도를 표시한다. 현재 예에서, 위치 비트(78)는 최종 하프워드의 블록 또는 그룹 내의 위치를 표시한다(예를 들어, 4'b0100). 이는 브랜치 명령 길에 대한 정보를 저장할 필요성을 없애주고, 파이프라인으로부터 어떤 명령 어드레스를 플러쉬할 것인지를 결정하기 위한 계산을 방지한다.
도4를 다시 참조하면, (BPU(42)로부터 취해진 브랜치 예측에 응답하여) 제3 사이클에서, 패치 3 스테이지(54)는 명령 어드레스 0800-0804를 포함한다. 어드레스 0804는 위치 비트(78)의 값 4'b0100에 의해 브랜치 명령의 종료부로서 식별되었다. 어드레스 0806의 명령은 패치 3 스테이지(54)로부터 플러쉬되고, 어드레스들 0808-080E는 패치 2 스테이지(52)로부터 플러쉬되며, 사이클 2에서 BTAC(44)로부터 검색된 B의 BTA는 그 위치로부터의 명령들을 추측적으로 패치하기 위해서 패치 1 스테이지(50)로 로딩된다.
상술한 바와 같이, BHT(46)는 명령 캐시(16) 및 BTAC(44)와 병렬적으로 액세스된다. 일 실시예에서, BHT(46)는 각각이 브랜치 명령과 관련되는 2-비트 포화 카운터들 어레이를 포함할 수 있다. 일 실시예에서, 카운터는 브랜치 명령이 취해진 것으로 평가될 때마다 증분(increment)되며, 브랜치 명령이 취해지지 않은 것으로 평가될 때, 감분(decrement)된다. 그리고 나서, 카운터 값들은 (단지 최상위 비트만을 고려함으로써) 예측 및 예측의 신뢰도 또는 강도를 다음과 같이 표시한다.
11 - 취해진 것으로 강력하게 예측됨
10 - 취해진 것으로 약하게 예측됨
01 - 취해지지 않은 것으로 약하게 예측됨
00 - 취해지지 않은 것으로 강력하게 예측됨
BHT(46)는 BTAC(44)가 히트를 표시하여 그 명령을 이전에 취해진 것으로 평가된 브랜치 명령으로 식별하는 경우, 브랜치 명령 어드레스(BIA)(예를 들면, 패치 1 스테이지(50)의 명령 어드레스)의 일부로서 인덱스될 수 있다. BHT(46)의 사용 효율을 개선하고 정확도를 개선하기 위해서 부분적인 BIA가 BHT(46)로의 인덱스에 앞서 최근 글로벌 브랜치 평가 히스토리(gselect 또는 gshare)와 논리적으로 결합될 수 있다.
BHT(46) 설계에서의 하나의 문제점은 가변 길이 명령들 세트들로부터 비롯되고, 여기서 브랜치 명령들은 상이한 길이들을 가질 수 있다. 하나의 알려진 해법은 가장 큰 명령 길이에 기반하여 BHT(46)의 크기를 평가하지만, 이를 가장 작은 명령 길이에 기반하여 어드레스하는 것이다. 이러한 해법은 어드레싱이 브랜치 명령의 시작부에 기반하는 경우, 테이블의 상당 부분을 빈 상태로 만들거나, 또는 중 복 엔트리들이 보다 긴 브랜치 명령들과 관련된다. 브랜치 명령 종료부와 관련된 정보로 BHT(46)를 인덱싱함으로써, BHT(46) 효율성이 개선된다. 브랜치 명령 길이에 관계없이, 단지 하나의 BHT(46) 엔트리만 액세스된다.
여기서 사용되는 바와 같이, 가변 길이 명령 세트의 입도 또는 그래눌레(granule)는 명령 길이들이 다른 수 있는 최소량이며, 이는 일반적으로 최소 명령 길이이다. 본 발명이 특정한 특징, 양상 및 실시예로 기술되었지만, 본 발명은 이러한 것들로 제한되지 않으며, 다양한 변형이 가능함을 당업자는 잘 이해할 수 있을 것이다. 따라서, 본 발명의 실시예들은 단지 일 예일 뿐이며, 본 발명이 이러한 실시예로 제한되는 것으로 이해되어서는 안 된다.
Claims (19)
- 가변-길이 명령 세트로부터의 명령들을 실행하는 방법으로서, 여기서 상기 각 명령의 길이는 최소 명령 길이 입도(granularity)의 배수이며, 상기 방법은취해진(taken) 것으로 평가된 브랜치 명령의 브랜치 타겟 어드레스(BTA)를 브랜치 타겟 어드레스 캐시(BTAC)에 저장하는 단계;상기 BTA와 함께 상기 브랜치 명령의 최종 입도에 대한 표시자를 저장하는 단계; 및상기 BTAC에서 뒤이은 히트(hit)시에, 상기 히트 브랜치 명령의 최종 입도를 지나쳐서 패치되는 모든 명령들을 플러쉬(flush)하는 단계를 포함하는, 명령 실행 방법.
- 제1항에 있어서,상기 브랜치 명령은 패치 그룹에서 패치되었으며, 상기 BTA를 담고 있는 상기 BTAC 엔트리는 상기 패치 그룹의 제1 명령 어드레스에 의해 인덱스(index)되는, 명령 실행 방법.
- 제2항에 있어서,상기 브랜치 명령의 최종 입도에 대한 표시자는 상기 패치 그룹 내의 브랜치 명령의 최종 입도의 종료부(end)의 상대적인 위치를 표시하는, 명령 실행 방법.
- 제1항에 있어서,상기 브랜치 명령은 명령들의 블록과 관련되며, 상기 BTA를 담고 있는 BTAC 엔트리는 상기 블록의 모든 명령들의 공통 어드레스 비트들에 의해 인데스되는, 명령 실행 방법.
- 제4항에 있어서,상기 브랜치 명령의 최종 입도에 대한 표시자는 상기 명령들의 블록 내의 상기 브랜치 명령의 최종 입도의 종료부의 상대적인 위치를 표시하는, 명령 실행 방법.
- 제1항에 있어서,상기 BTAC에서의 뒤이은 히트시에, 상기 히트 브랜치 명령의 최종 입도에 대한 표시자에 적어도 부분적으로 기반하여 브랜치 히스토리 테이블(BHT)에 액세스하는 단계를 더 포함하는, 명령 실행 방법.
- 제1항에 있어서,상기 히트 브랜치 명령의 최종 입도를 지나쳐서 패치된 모든 명령들을 플러쉬한 후에, 상기 BTA에서 시작하는 명령들을 패치하는 단계를 더 포함하는, 명령 실행 방법.
- 가변 길이 명령 세트로부터의 명령들을 실행하는 프로세서로서, 상기 각 명령의 길이는 최소 명령 길이 입도의 배수이며, 상기 프로세서는다수의 명령들을 저장하는 명령 캐시;이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자와 브랜치 타겟 어드레스(BTA)를 저장하는 브랜치 타겟 어드레스 캐시(BTAC);현재 브랜치 명령이 취해진 것으로 평가될지 아니면 취해지지 않은 것으로 평가될지를 예측하는 브랜치 예측 유닛(BPU);명령들을 실행하는 명령 실행 파이프라인; 및현재 명령 어드레스를 사용하여 명령 캐시 및 BTAC에 동시에 액세스하고, 이전에 평가된 브랜치 명령의 최종 입도에 대한 표시자 및 취해진 브랜치 예측에 응답하여 브랜치 명령 후에 패치되는 모든 명령들의 파이프라인을 플러쉬하도록 동작하는 하나 이상의 제어 회로들을 포함하는, 프로세서.
- 제8항에 있어서,상기 BTAC는 이전에 취해진 것으로 평가된 브랜치 명령을 포함하는 패치 그룹의 제1 명령 어드레스에 의해 인덱스되는 슬라이딩-윈도우 BTAC인, 프로세서.
- 제9항에 있어서,이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자는 패 치 그룹 내의 브랜치 명령의 최종 입도의 상대적인 위치를 표시하는, 프로세서.
- 제8항에 있어서,상기 BTAC는 이전에 취해진 것으로 평가된 브랜치 명령을 포함하는 명령들 블록의 모든 명령들의 공통 어드레스 비트들에 의해 인데스되는 블록-기반 BTAC인, 프로세서.
- 제11항에 있어서,이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자는 명령들 블록 내의 브랜치 명령의 최종 입도의 상대적인 위치를 표시하는, 프로세서.
- 제8항에 있어서,이전 브랜치 평가 정보를 저장하는 브랜치 히스토리 테이블(BHT)을 더 포함하며, 상기 BHT는 이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자에 의해 적어도 부분적으로 인덱스되는, 프로세서.
- 제13항에 있어서,상기 브랜치 예측은 상기 BHT의 출력에 적어도 부분적으로 기반하는, 프로세서.
- 복수의 엔트리들을 포함하는 브랜치 타겟 어드레스 캐시(BTAC)로서,상기 각 엔트리는 태그에 의해 인덱스되며,상기 BTAC는 브랜치 타겟 어드레스(BTA) 및 이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자를 저장하는, 브랜치 타겟 어드레스 캐시.
- 제15항에 있어서,상기 태그는 이전에 취해진 것으로 평가된 브랜치 명령을 포함하는 패치 그룹의 제1 명령 어드레스를 포함하는, 브랜치 타겟 어드레스 캐시.
- 제16항에 있어서,이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자는 패치 그룹 내의 브랜치 명령의 최종 입도의 상대적인 위치를 표시하는, 브랜치 타겟 어드레스 캐시.
- 제15항에 있어서,상기 태그는 이전에 취해진 것으로 평가된 브랜치 명령을 포함하는 명령들 블록의 명령들의 공통 어드레스 비트들을 포함하는, 브랜치 타겟 어드레스 캐시.
- 제18항에 있어서,이전에 취해진 것으로 평가된 브랜치 명령의 최종 입도에 대한 표시자는 명 령들 블록 내의 브랜치 명령의 최종 입도의 상대적인 위치를 표시하는, 브랜치 타겟 어드레스 캐시.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/463,370 | 2006-08-09 | ||
US11/463,370 US20080040576A1 (en) | 2006-08-09 | 2006-08-09 | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set |
PCT/US2007/075363 WO2008021828A2 (en) | 2006-08-09 | 2007-08-07 | Associate cached branch information with the last granularity of branch instruction in variable length instruction set |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090042303A true KR20090042303A (ko) | 2009-04-29 |
KR101048258B1 KR101048258B1 (ko) | 2011-07-08 |
Family
ID=39052217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020097004883A KR101048258B1 (ko) | 2006-08-09 | 2007-08-07 | 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20080040576A1 (ko) |
EP (1) | EP2100220A2 (ko) |
JP (1) | JP2010501913A (ko) |
KR (1) | KR101048258B1 (ko) |
CN (1) | CN101681258A (ko) |
TW (1) | TW200818007A (ko) |
WO (1) | WO2008021828A2 (ko) |
Families Citing this family (9)
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 |
CN105893270A (zh) * | 2008-09-12 | 2016-08-24 | 瑞萨电子株式会社 | 数据处理装置及半导体集成电路装置 |
US9122486B2 (en) | 2010-11-08 | 2015-09-01 | Qualcomm Incorporated | Bimodal branch predictor encoded in a branch instruction |
US20140019722A1 (en) | 2011-03-31 | 2014-01-16 | Renesas Electronics Corporation | Processor and instruction processing method of processor |
EP2799997B1 (en) * | 2011-12-26 | 2020-01-22 | Renesas Electronics Corporation | Data processing device |
US9411590B2 (en) | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
US10001993B2 (en) | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
WO2016016726A2 (en) * | 2014-07-30 | 2016-02-04 | Linear Algebra Technologies Limited | Vector processor |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4860197A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Branch cache system with instruction boundary determination independent of parcel boundary |
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 |
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 |
US6886093B2 (en) | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
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 |
US7437543B2 (en) * | 2005-04-19 | 2008-10-14 | International Business Machines Corporation | Reducing the fetch time of target instructions of a predicted taken branch instruction |
-
2006
- 2006-08-09 US US11/463,370 patent/US20080040576A1/en not_active Abandoned
-
2007
- 2007-08-07 CN CN200780029359A patent/CN101681258A/zh active Pending
- 2007-08-07 WO PCT/US2007/075363 patent/WO2008021828A2/en active Application Filing
- 2007-08-07 JP JP2009523958A patent/JP2010501913A/ja active Pending
- 2007-08-07 KR KR1020097004883A patent/KR101048258B1/ko not_active IP Right Cessation
- 2007-08-07 EP EP07813844A patent/EP2100220A2/en not_active Withdrawn
- 2007-08-09 TW TW096129418A patent/TW200818007A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR101048258B1 (ko) | 2011-07-08 |
WO2008021828A3 (en) | 2009-10-22 |
US20080040576A1 (en) | 2008-02-14 |
TW200818007A (en) | 2008-04-16 |
CN101681258A (zh) | 2010-03-24 |
WO2008021828A2 (en) | 2008-02-21 |
JP2010501913A (ja) | 2010-01-21 |
EP2100220A2 (en) | 2009-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101059335B1 (ko) | 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법 | |
US7437537B2 (en) | Methods and apparatus for predicting unaligned memory access | |
KR101081662B1 (ko) | 비순차적 명령 어드레스들을 프리패치하기 위한 방법 및 장치 | |
KR101493019B1 (ko) | 희소 및 조밀 예측 캐쉬들을 갖는 하이브리드 브랜치 예측 장치 | |
US6609194B1 (en) | Apparatus for performing branch target address calculation based on branch type | |
KR101048258B1 (ko) | 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 | |
US20060218385A1 (en) | Branch target address cache storing two or more branch target addresses per index | |
US9367471B2 (en) | Fetch width predictor | |
US20070266228A1 (en) | Block-based branch target address cache | |
EP2024820B1 (en) | Sliding-window, block-based branch target address cache | |
JP2015007995A (ja) | ループ終結分岐により分岐履歴レジスタの更新を抑制すること | |
JP2011100466A5 (ko) | ||
JP2008532142A5 (ko) | ||
US8171240B1 (en) | Misalignment predictor |
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 | ||
LAPS | Lapse due to unpaid annual fee |