KR20210025677A - 초기 리턴 예측을 갖는 분기 타겟 버퍼 - Google Patents
초기 리턴 예측을 갖는 분기 타겟 버퍼 Download PDFInfo
- Publication number
- KR20210025677A KR20210025677A KR1020217004753A KR20217004753A KR20210025677A KR 20210025677 A KR20210025677 A KR 20210025677A KR 1020217004753 A KR1020217004753 A KR 1020217004753A KR 20217004753 A KR20217004753 A KR 20217004753A KR 20210025677 A KR20210025677 A KR 20210025677A
- Authority
- KR
- South Korea
- Prior art keywords
- return
- branch
- instruction
- btb
- entry
- Prior art date
Links
- 230000004044 response Effects 0.000 claims abstract description 49
- 230000000977 initiatory effect Effects 0.000 claims abstract description 16
- 238000000034 method Methods 0.000 claims description 40
- 230000002401 inhibitory effect Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002730 additional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000007787 solid Substances 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
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Abstract
프로세서[100]는 복수의 엔트리들[111]을 갖는 분기 타겟 버퍼(BTB)[110]를 포함하며, 이에 의해 각 엔트리는 분기 인스트럭션으로 예측되는 연관 인스트럭션 포인터[101] 값에 대응한다. 각 BTB 엔트리는 분기 인스트럭션에 대한 예측 분기 타겟 어드레스를 저장하고, 예측 분기 타겟 어드레스와 연관된 인스트럭션 블록의 다음 분기가 리턴 인스트럭션으로 예측되는지 여부를 나타내는 정보를 더 저장한다. 다음 분기가 리턴 인스트럭션일 것으로 예측된다는 것을 나타내는 BTB에 응답하여, 프로세서는 예측 리턴 인스트럭션에 대한 리턴 어드레스를 저장하는 리턴 스택[115]에 대한 액세스를 시작한다. BTB에 저장된 리턴 예측에 응답하여 리턴 스택에 대한 액세스를 시작함으로써, 프로세서는 리턴 어드레스 식별 시 지연을 줄여 처리 효율성을 향상시킨다.
Description
처리 효율성을 높이기 위해, 프로세서는 하나 이상의 예측 처리 기술들을 사용할 수 있다. 예측 처리 기술의 한 가지 유형은 분기 예측으로 지칭되며, 이에 의해 프로세서는 분기 인스트럭션의 결과를 예측하여 처리 유닛이 분기 인스트럭션을 평가하기 전에 프로세서가 예측 분기를 따라 후속 인스트럭션들을 추론적으로 실행하기 시작할 수 있도록 한다. 처리 효율성을 더욱 향상시키기 위해, 프로세서는 분기 타겟 버퍼(BTB)라고 하는 분기 타겟 구조를 사용한다. BTB는 예측 분기들에 대한 어드레스 정보를 저장한다. 그러나, 종래 BTB 구조들은 다른 유형의 프로그램 분기들의 효율적 실행을 지원하지 않는다.
본 개시는 첨부된 도면들을 참조함으로써 더 잘 이해될 수 있으며, 그 많은 특징들 및 이점들이 당업자에게 명백해질 수 있다. 서로 다른 도면들에서 동일한 참조 부호들의 사용은 유사하거나 동일한 아이템들을 나타낸다.
도 1은 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따라 리턴 인스트럭션을 포함하는지 여부를 예측하기 위한 리턴 예측 정보를 포함하는 분기 타겟 버퍼(BTB)를 사용하는 프로세서의 블록도이다.
도 2는 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따른 리턴 인스트럭션을 포함함을 나타내는 BTB에 응답하여 리턴 어드레스 스택에 대한 액세스를 시작하는 도 1의 프로세서의 일 예를 나타내는 도면이다.
도 3은 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따른 리턴 인스트럭션을 포함함을 나타내는 BTB에 응답하여 리턴 어드레스 스택에 대한 액세스를 시작하는 프로세서의 방법의 흐름도이다.
도 1은 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따라 리턴 인스트럭션을 포함하는지 여부를 예측하기 위한 리턴 예측 정보를 포함하는 분기 타겟 버퍼(BTB)를 사용하는 프로세서의 블록도이다.
도 2는 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따른 리턴 인스트럭션을 포함함을 나타내는 BTB에 응답하여 리턴 어드레스 스택에 대한 액세스를 시작하는 도 1의 프로세서의 일 예를 나타내는 도면이다.
도 3은 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따른 리턴 인스트럭션을 포함함을 나타내는 BTB에 응답하여 리턴 어드레스 스택에 대한 액세스를 시작하는 프로세서의 방법의 흐름도이다.
도 1 내지 3은 프로세서에서 리턴 인스트럭션에 대한 리턴 어드레스를 식별 시 지연을 줄이는 기술들을 예시한다. 프로세서는 복수의 엔트리들을 갖는 분기 타겟 버퍼(BTB)를 포함하고, 이에 의해 각 엔트리는 분기 인스트럭션으로 예측되는 연관 인스트럭션 포인터 값에 대응한다. 각 BTB 엔트리는 분기 인스트럭션에 대한 예측 분기 타겟 어드레스를 저장하고, 예측 분기 타겟 어드레스와 연관된 인스트럭션 블록의 다음 분기가 리턴 인스트럭션으로 예측되는지 여부를 나타내는 정보를 더 저장한다. 다음 분기가 리턴 인스트럭션일 것으로 예측된다는 것을 나타내는 BTB에 응답하여, 프로세서는 예측 리턴 인스트럭션에 대한 리턴 어드레스를 저장하는 리턴 스택에 대한 액세스를 시작한다. BTB에 저장된 리턴 예측에 응답하여 리턴 스택에 대한 액세스를 시작함으로써, 프로세서는 리턴 어드레스 식별시 지연을 줄여 처리 효율성을 향상시킨다.
본원에 설명된 기술들과 달리, 종래 프로세서는 예측 리턴 정보를 저장하지 않는다. 따라서, 종래의 프로세서는 프로세서의 페치 단계가 현재 인스트럭션 포인터 값이 리턴 인스트럭션에 대응한다는 것을 식별할 때까지 리턴 스택에 대한 액세스를 시작하지 않는다. 리턴 스택으로부터 리턴 어드레스를 검색하는 것은 다수의 클록 사이클들을 필요로 하기 때문에, 프로세서에서 동작들이 지연될 수 있다. 본원에 설명된 기술들을 사용하여, 프로세서는 리턴 스택에 대한 액세스를 일찍 시작하여, 인스트럭션 포인터 값이 리턴 인스트럭션에 도달할 때 리턴 어드레스가 스택으로부터 검색되고 프로세서에 의해 사용하기에 가능할 수 있도록 한다. 따라서, 예측 리턴 정보 저장하는 것은 리턴 어드레스들에 대한 더 빠른 액세스를 지원하고 따라서 처리 효율성을 향상시킨다.
도 1은 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따라 리턴 인스트럭션을 포함하는지 여부를 예측하기 위한 리턴 예측 정보를 포함하는 분기 타겟 버퍼(BTB)를 사용하는 프로세서(100)를 예시한다. 프로세서는 전자 장치를 대신하여 지정된 태스크들을 수행하기 위해 일련의 인스트럭션들(예를 들어, 컴퓨터 프로그램들)을 실행한다. 일부 실시예들에서, 프로세서(100)는 데스크탑 또는 랩탑 컴퓨터, 서버, 게임 콘솔, 스마트 폰, 태블릿 등과 같은 다양한 전자 장치 중 하나에 통합된다.
인스트럭션들의 실행을 지원하기 위해, 프로세서(100)는 인스트럭션 페치 스테이지(102) 및 추가 파이프라인 스테이지들(104)을 갖는 인스트럭션 파이프라인을 포함한다. 추가 파이프라인 단계들(104)은 페치된 인스트럭션들을 동작 세트로 디코딩하는 단계들, 디코딩된 동작들을 실행하기 위한 실행 단계들, 및 실행된 인스트럭션들을 폐기하기 위한 폐기 단계를 포함한다. 일부 실시예들에서 프로세서(100)는 하나 이상의 메모리 컨트롤러들, 입력/출력 컨트롤러들, 메모리 구조들(예를 들어, 하나 이상의 캐시들) 등을 포함하는 인스트럭션들의 실행을 지원하기 위한 추가 모듈들을 포함한다는 것이 이해될 것이다. 추가로, 일부 실시예들에서 프로세서(100)는 추가 인스트럭션 파이프라인들을 포함한다는 것이 이해될 것이다. 예를 들어, 일부 실시예들에서, 프로세서(100)는 각 프로세서 코어가 인스트럭션 세트를 실행하기 위한 적어도 하나의 인스트럭션 파이프라인을 갖는 다수의 프로세서 코어들을 포함한다. 게다가, 일부 실시예들에서, 프로세서(100)는 그리기, 디스플레이 및 다른 그래픽 동작들과 관련된 동작들을 실행하기 위해 하나 이상의 그래픽 처리 장치들(GPU들)과 같은 특수 태스크들과 관련된 동작들을 실행하도록 특별히 설계된 추가 처리 유닛들을 포함한다.
도 1의 예시된 실시예를 참조하면, 인스트럭션 페치 스테이지(102)는 일반적으로 인스트럭션 포인터(101)에 기초하여 인스트럭션 캐시(103)로부터 인스트럭션들을 검색(페치)하도록 구성된다. 당업자에 의해 이해되는 바와 같이, 인스트럭션들 포인터(101)는 페치될 현재 인스트럭션을 나타내는 어드레스 값이고, 실행되는 인스트럭션들의 프로그램 흐름을 수정하는 동작들을 실행함으로써 수정될 수 있다. 예를 들어, 일부 실시예들에서, 분기 인스트럭션들은 예를 들어 분기 인스트럭션 또는 관련 인스트럭션에 의해 지정된 데이터의 평가에 기초하여 인스트럭션 포인터(101)를 수정한다.
분기 인스트럭션들의 효율적인 실행을 지원하기 위해, 프로세서(100)는 리턴 스택(115) 및 분기 타겟 버퍼(BTB)(110)를 포함한다. 리턴 스택(115)은 프로세서(100)에서 실행되는 리턴 인스트럭션들에 대한 리턴 어드레스들을 저장하는 스택 메모리 구조이다. 동작 시, 호출 유형인 분기 인스트럭션을 식별하는 것에 응답하여, 페치 스테이지(102)는 리턴 어드레스로서 지정된 인스트럭션 포인터 값을 생성한다. 일부 실시예들에서, 인스트럭션 페치 스테이지(102)는 인스트럭션 포인터(101)에 지정된 값을 추가함으로써 리턴 어드레스를 생성하며, 지정된 값은 인스트럭션 파이프라인에서 실행되는 인스트럭션들의 크기(예를 들어, 폭)에 대응한다. 인스트럭션 페치 스테이지는 리턴 스택(115)에 리턴 어드레스를 푸시한다. 리턴 인스트럭션의 경우, 페치 스테이지(102)는 본원에서 더 설명되는 바와 같이 리턴 스택(115)의 상단으로부터 리턴 어드레스를 검색(팝핑)하고 리턴 어드레스를 인스트럭션 포인터(101)의 값으로 저장함으로써 리턴 어드레스를 식별한다.
BTB(110)는 각 엔트리가 분기 인스트럭션과 연관된 상이한 인스트럭션 포인터 값에 대응하는 복수의 엔트리들(예를 들어, 엔트리(111))을 포함한다. 각 인스트럭션 사이클, 인스트럭션 페치 스테이지(102)는 인스트럭션 포인터(101)를 BTB(110)에 제공한다. 엔트리가 수신된 인스트럭션 포인터 값(BTB 히트로 지칭됨)에 대응한다는 것을 식별하는 것에 응답하여, BTB(110)는 식별된 엔트리의 BTA 필드(예를 들어, 엔트리(111)의 BTA 필드(112))로부터 분기 타겟 어드레스(BTA)를 검색하고 BTA를 인스트럭션 페치 스테이지(102)에 제공한다. 따라서, BTB(110)는 프로세서(100)가 분기 타겟 어드레스들을 신속하게 식별하는 효율적인 방법을 제공한다.
일부 실시예들에서, 프로세서는 새로운 엔트리들의 할당 및 BTA들의 수정을 포함하여 비추론적 및 추론적 둘 다로 BTB(110)의 엔트리들을 수정할 수 있다. 비추론적 업데이트들은 파이프라인 스테이지들(104)에 의해 실행된다. 예를 들어, 분기 인스트럭션으로서 인스트럭션을 식별하는 것에 응답하여, 디코드 스테이지는 분기 인스트럭션에 대한 인스트럭션 포인터 값을 BTB(110)에 제공한다. 이에 응답하여, BTB(110)는 수신된 인스트럭션 포인터 값에 대한 엔트리가 할당되도록 보장한다. 추가로, 실행 유닛은 분기 인스트럭션에 대해 계산된 BTA를 BTB(110)에 제공하고, 이는 해당 엔트리의 BTA 필드에 BTA를 저장한다.
분기 예측을 추가 지원하기 위해, 프로세서(100)는 조건 예측기(108)를 포함한다. 조건 예측기(108)는 프로세서(100)의 인스트럭션 파이프라인에서 실행되는 분기 인스트럭션들의 이력(분기 이력(09)으로 예시됨)을 모니터링하고, 하나 이상의 알려진 분기 예측 기술들에 따라 분기 이력(109)의 패턴들을 식별한다. 식별된 패턴들 및 각 분기의 실제 방향에 기초하여, 조건 예측기(108)는 각 분기 인스트럭션들이 수행되는지 수행되지 않는지 여부(때로는 분기 인스트럭션의 방향이라고 함)를 예측한다.
BTB(110)로 돌아가면, 저장된 BTA 외에도, 각 엔트리는 해당 BTA와 연관된 인스트럭션 블록의 다음 분기 인스트럭션이 리턴 인스트럭션으로 예측되는지 여부를 나타내는 리턴 예측 필드(예를 들어, 리턴 예측 필드(113))를 포함한다. 설명의 용이함을 위해, 이러한 시퀀스는 본원에서, 시퀀스를 시작하는 분기 인스트럭션이 분기-리턴 시퀀스의 "소스" 분기로 지칭되는, "분기-리턴" 시퀀스로 지칭된다. 이러한 시퀀스의 예는 다음과 같다:
JMP 어드레스 A
(소스 분기 인스트럭션)
LD X, 데이터1
(레지스터 X에 값을 로드)
ADD X, Y
(레지스터 X 및 레지스터 Y에 값들을 추가)
리턴
대조적으로, 다음은 리턴 인스트럭션이 주어진 분기 인스트럭션 다음에 오는 다음 분기 인스트럭션이 아닌 (따라서 분기-리턴 시퀀스가 아닌) 시퀀스의 예이다:
JMP 어드레스 A
(분기 인스트럭션)
LD X, 데이터1
(레지스터 X에 값을 로드)
ADD X, Y
(레지스터 X 및 레지스터 Y에 값들을 추가)
JMP 어드레스 B
(분기 인스트럭션-분기 리턴 시퀀스가 아님)
분기-리턴 시퀀스를 임계 횟수로 식별하는 것에 응답하여, BTB(110)는 예측 리턴을 나타내도록 리턴 예측 필드를 설정한다. 인스트럭션 페치 스테이지(102)로부터 인스트럭션 포인터 값을 수신하는 것에 응답하여, BTB(110)는 수신된 인스트럭션 포인터 값이 상기에 설명된 바와 같이 BTB 히트를 초래하는지를 결정한다. BTB 히트에 응답하여, BTB(110)는 BTB 히트를 야기한 엔트리의 BTA 필드에서 BTA를 인스트럭션 페치 스테이지(102)에 제공한다. 추가로, BTB(110)는 해당 리턴 예측 필드가 예측 리턴을 나타내는지를 결정한다. 그렇다면, BTB(110)는 리턴 스택(115)에서 팝 동작을 나타낸다. 따라서 리턴 어드레스는 예측 리턴 인스트럭션이 도달할 때 빠르게 액세스하는 데 이용할 수 있다.
프로그램 흐름의 다음 분기 인스트럭션이 리턴 인스트럭션이 아닌 경우, 파이프라인 스테이지들(104) 중 하나 이상은 BTB(110)에 잘못 예측된 리턴을 표시한다. 일부 실시예들에서, 잘못 예측된 리턴에 응답하여, BTB(110)는 분기 리턴 시퀀스의 소스 분기 인스트럭션에 해당하는 엔트리에 대한 리턴 예측 필드를 소거한다. 다른 실시예들에서, BTB(110)는 임계 횟수 번 발생하는 잘못 예측된 리턴에 응답하여 리턴 예측 필드를 소거한다.
일부 실시예들에서, 리턴 스택(115)에 대한 액세스를 시작하는 것 외에, 프로세서(100)는 예측 리턴에 응답하여 추가 조치들을 취한다. 예를 들어, 일부 실시예들에서, 예측 리턴에 응답하여, 프로세서(100)는 예측 리턴 인스트럭션 자체에 대한 BTB 히트를 초래할 것으로 예상되는 BTB(110)에 대한 후속 액세스를 억제한다. 이러한 액세스를 억제함으로써, 프로세서(100)는 전력 및 다른 시스템 리소스들을 보존한다.
도 2는 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따른 리턴 인스트럭션을 포함함을 나타내는 BTB(110)에 응답하여 리턴 어드레스 스택(115)에 대한 액세스를 시작하는 프로세서(100)의 일 예(200)를 나타내는 도면이다. 예(200)에서, 엔트리(111)는 엔트리(111)에 대응하는 분기 인스트럭션에 대한 BTA를 저장하기 위한 BTA 필드(112)를 포함한다. 추가로, 엔트리(111)의 리턴 예측 필드(113)는 분기 인스트럭션이 분기-리턴 시퀀스의 분기 소스로 예측된다는 것을 나타내는 값(도시된 예에서 "Y"로 표시됨)으로 설정된다. 즉, 리턴 예측 필드(113)는 엔트리(111)에 대응하는 분기 인스트럭션과 연관된 인스트럭션 블록의 다음 분기 인스트럭션이 리턴 인스트럭션으로 예측됨을 나타내는 상태에 있다. 설명의 용이함을 위해, 이 상태는 본원에 예측된 리턴을 나타내는 리턴 예측 필드로 지칭된다.
예(200)의 경우, 인스트럭션 페치 스테이지(102)는 인스트럭션 포인터(101)를 BTB(110)에 제공한다. 인스트럭션 포인터(101)의 제공은 엔트리(111)에서 BTB 히트를 초래한다. 즉, BTB (110)는 인스트럭션 포인터(101)에 대응하는 메모리 어드레스와 연관된 것으로 엔트리(111)를 식별한다. BTB 히트에 응답하여, BTB(110)는 BTA 필드(112)에 저장된 BTA를 인스트럭션 페치 스테이지(102)에 제공한다. 추가로, 예측된 리턴을 나타내는 리턴 예측 필드(113)에 응답하여, BTB(110)는 리턴 스택(115)에 대한 액세스를 시작하여 인스트럭션 페치 스테이지(102)에 제공하기 위해 스택의 상단에서 어드레스를 검색(팝핑)한다.
도 3은 분기 인스트럭션에 의해 타겟이 되는 인스트럭션 블록이 일부 실시예들에 따른 리턴 인스트럭션을 포함함을 나타내는 BTB에 응답하여 리턴 어드레스 스택에 대한 액세스를 시작하는 프로세서의 방법(300)의 흐름도이다. 블록(302)에서, BTB는 프로세서의 페치 단계로부터 인스트럭션 포인터 값을 수신한다. 블록(304)에서, BTB는 수신된 인스트럭션 포인터에 대응하는 엔트리를 식별한다. 블록(306)에서, BTB는 식별된 엔트리의 리턴 예측 필드가 예측 리턴을 나타내는지를 식별한다. 그렇지 않은 경우, 방법 흐름은 블록(310)으로 이동하고 BTB는 식별된 BTB 엔트리에서 BTA를 페치 단계에 제공한다.
블록(306)에서, BTB는 식별된 엔트리의 리턴 예측 필드가 예측 리턴을 나타낸다는 것을 식별하고, 방법 흐름은 블록(308)으로 이동하고 BTB는 리턴 스택의 상단으로부터 리턴 어드레스의 검색을 시작한다. 방법 흐름은 블록(310)으로 진행하고 BTB는 식별된 BTB 엔트리에서 BTA를 페치 단계로 제공한다.
본원에 개시된 바와 같이, 일부 실시예들에서, 방법은, 프로세서의 분기 타겟 버퍼(BTB)의 제1 엔트리에 기초하여, 제1 분기 리턴 인스트럭션의 예측을 식별하는 단계; 및 제1 분기 리턴 인스트럭션의 예측을 식별하는 것에 응답하여, 프로세서의 분기 리턴 어드레스에 대한 액세스를 시작하는 단계를 포함한다. 일 양태에서, 제1 엔트리는, 제1 분기 리턴 인스트럭션의 예측을 나타내는 제1 리턴 필드; 및 제1 예측 분기 어드레스를 나타내는 제1 분기 필드를 포함한다. 다른 양태에서, 제1 분기 리턴 인스트럭션의 예측은 제1 예측 분기 어드레스가 리턴 인스트럭션에 대응한다는 예측을 포함한다. 또 다른 양태에서, 방법은 제1 분기 리턴 인스트럭션이 리턴 인스트럭션이 잘못 예측되었다는 것을 식별하는 것에 응답하여 리턴 예측 없음을 나타내도록 제1 엔트리를 설정하는 단계를 포함한다.
일 양태에서, 방법은, 제1 엔트리가 리턴 인스트럭션의 예측을 나타낸다고 결정하는 것에 응답하여, BTB에 대한 후속 액세스를 억제하는 단계를 포함한다. 또 다른 양태에서, 방법은 BTB의 제2 엔트리에 기초하여, 제2 분기 리턴 인스트럭션의 예측을 식별하는 단계; 및 제2 분기 리턴 인스트럭션의 예측을 식별하는 것에 응답하여, 분기 리턴 어드레스 스택에 대한 액세스를 시작하는 단계를 포함한다.
본원에 개시된 바와 같이, 일부 실시예들에서, 방법은, 제1 프로그램 카운터 값에 기초하여 분기 타겟 버퍼(BTB)의 제1 엔트리에 액세스하는 단계; BTB의 제1 엔트리의 제1 분기 어드레스 필드에 기초하여 제1 인스트럭션 어드레스로 분기하는 단계; 및 제1 인스트럭션 어드레스가 리턴 인스트럭션에 대응함을 나타내는 BTB의 제1 엔트리의 제1 리턴 필드에 응답하여, 분기 리턴 어드레스 스택에 대한 액세스를 시작하는 단계를 포함한다. 일 양태에서, 방법은, 제1 인스트럭션 어드레스가 리턴 인스트럭션에 대응한다고 결정하는 것에 응답하여, 제1 리턴 필드에 리턴의 표시를 저장하는 단계를 포함한다. 또 따른 양태에서, 분기 리턴 어드레스들 스택에 대한 액세스를 시작하는 단계는 제1 인스트럭션 어드레스의 분기와 동시에 분기 리턴 어드레스 스택으로부터 인스트럭션 어드레스를 리턴하는 단계를 포함한다. 또 따른 양태에서, 방법은 제1 인스트럭션 어드레스가 리턴 인스트럭션에 대응함을 나타내는 제1 리턴 필드에 응답하여, BTB에 대한 후속 액세스를 억제하는 단계를 포함한다.
일 양태에서, 후속 액세스를 억제하는 단계는 예측 리턴 인스트럭션에서 BTB 히트로 이어질 것으로 예상되는 BTB에 대한 액세스를 억제하는 단계를 포함한다. 다른 양태에서, 방법은, 제2 프로그램 카운터 값에 기초하여 BTB의 제2 엔트리에 액세스하는 단계; BTB의 제1 엔트리의 제2 분기 어드레스 필드에 기초하여 제2 인스트럭션 어드레스로 분기하는 단계; 및 제2 인스트럭션 어드레스가 리턴 인스트럭션에 대응함을 나타내는 BTB의 제2 엔트리의 제2 리턴 필드에 응답하여, 분기 리턴 어드레스 스택에 대한 액세스를 시작하는 단계를 포함한다. 또 다른 양태에서, 방법은 리턴이 잘못 예측되었다고 식별하는 것에 응답하여 리턴 예측이 없음을 나타내도록 제1 엔트리를 설정하는 단계를 포함한다.
본원에 개시된 바와 같이, 일부 실시에들에서, 프로세서는, 제1 분기 리턴 인스트럭션의 예측을 식별하는 제1 엔트리를 포함하는 분기 타겟 버퍼(BTB); 분기 리턴 어드레스 스택; 및 제1 분기 리턴 인스트럭션의 예측을 나타내는 BTB의 제1 엔트리에 응답하여, 분기 리턴 어드레스 스택에 대한 액세스를 시작하도록 구성된 프로세서 코어를 포함한다. 일 양태에서, BTB의 제1 엔트리는, 제1 분기 리턴 인스트럭션의 예측을 나타내는 제1 리턴 필드; 및 제1 예측 분기 어드레스를 나타내는 제1 분기 필드를 포함한다. 다른 양태에서, 제1 분기 리턴 인스트럭션의 예측은 제1 예측 분기 어드레스가 리턴 인스트럭션에 대응한다는 예측을 포함한다.
일 양태에서, 프로세서 코어는 제1 분기 리턴 인스트럭션이 잘못 예측되었다고 식별하는 것에 응답하여 리턴 예측이 없음을 나타내도록 제1 엔트리를 설정하도록 구성된다. 다른 양태에서, 프로세서 코어는 제1 엔트리가 리턴 인스트럭션을 나타낸다고 결정하는 것에 응답하여, BTB에 대한 후속 액세스를 억제하도록 구성된다. 또 다른 양태에서, 프로세서 코어는 제1 엔트리는 리턴 인스트럭션을 나타낸다고 결정하는 것에 응답하여, 제1 분기 리턴 인스트럭션에 액세스하는 것으로 예상되는 BTB에 대한 후속 액세스를 억제하도록 구성된다. 또 다른 양태에서, BTB는 제2 분기 리턴 인스트럭션의 예측을 나타내는 제2 엔트리를 포함하고; 프로세서 코어는 제2 분기 리턴 인스트럭션의 예측을 식별하는 것에 응답하여, 분기 리턴 어드레스 스택에 대한 액세스를 시작하도록 구성된다.
컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템에 명령들 및/또는 데이터를 제공하기 위해 사용하는 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비-일시적 저장 매체, 또는 비-일시적 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체들은, 제한하는 것은 아닌, 광학 매체(예를 들어, 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루 레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비-휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로 전자 기계 시스템(MEMS) 기반 저장 매체를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템(예를 들어, 자기 하드 드라이브)에 고정 부착되거나, 컴퓨팅 시스템(예를 들어, 광 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리)에 제거 가능하게 부착되거나, 또는 유선 또는 무선 네트워크(예를 들어, 네트워크 액세스 가능 저장소(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
일부 실시예들에서, 상기에 설명된 기술들의 특정 양태들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 아니면 유형적으로(tangibly) 구현된 하나 이상의 실행 가능 명령 세트들을 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행 시 상술한 기술들 중 하나 이상의 측면들을 수행하도록 하나 이상의 프로세서를 조작하는 명령들 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 장치, 플래시 메모리와 같은 솔리드 스테이트 저장 장치, 캐시, 랜덤 액세스 메모리(RAM) 또는 기타 비-휘발성 메모리 장치 또는 장치들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령들은 소스 코드, 어셈블리어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 아니면 실행 가능한 기타 명령 포맷일 수 있다.
일반적인 설명에서 상술한 모든 활동들 또는 요소들이 필요한 것은 아니며, 특정 활동 또는 장치의 일부가 필요하지 않을 수 있으며, 설명된 것들 외에 하나 이상의 추가 활동들이 수행될 수 있거나, 또는 요소들이 포함될 수 있음에 유의한다. 또한, 활동들이 나열되는 순서가 반드시 수행되는 순서는 아니다. 또한, 개념들은 특정 실시예들을 참조하여 설명되었다. 그러나, 당업자는 이하의 청구 범위에 기재된 본 개시의 범위를 벗어나지 않고 다양한 수정들 및 변경들이 이루어질 수 있음을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미라기 보다는 예시적인 것으로 간주되어야 하며, 이러한 모든 수정들은 본 개시의 범위 내에 포함되는 것으로 의도된다.
이점들, 다른 장점들 및 문제들에 대한 해결책들이 특정 실시예들과 관련하여 상기에 설명되었다. 그러나, 이점들, 장점들, 문제에 대한 솔루션들 및 이점, 장점 또는 솔루션을 발생시키거나 더 두드러지게 만들 수 있는 임의의 특징(들)은 일부 또는 모든 청구항들의 중요하거나, 요구되거나 또는 필수 특징으로 해석되어서는 안된다. 게다가, 개시된 주제는 본원의 교시의 이점을 갖는 당업자에게 명백하게 다르지만 동등한 방식으로 수정 및 실시될 수 있으므로, 위에 개시된 특정 실시예들은 단지 예시일 뿐이다. 이하의 청구 범위에 기재된 것 이외에, 본원에 도시된 구성 또는 설계의 세부 사항들에 대한 제한은 없다. 따라서, 상기 개시된 특정 실시예들은 변경되거나 수정될 수 있으며, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것은 명백하다. 따라서, 본원에서 요구되는 보호는 아래의 청구 범위에 명시된 바와 같다.
Claims (20)
- 방법으로서,
프로세서[100]의 분기 타겟 버퍼(BTB)[110]의 제1 엔트리[111]에 기초하여, 제1 분기 리턴 인스트럭션의 예측을 식별하는 단계; 및
상기 제1 분기 리턴 인스트럭션의 상기 예측을 식별하는 것에 응답하여, 상기 프로세서의 분기 리턴 어드레스 스택[115]에 대한 액세스를 시작하는 단계를 포함하는, 방법. - 제1항에 있어서,
상기 제1 엔트리는,
상기 제1 분기 리턴 인스트럭션의 상기 예측을 나타내는 제1 리턴 필드[113]; 및
제1 예측 분기 어드레스를 나타내는 제1 분기 필드[112]를 포함하는, 방법. - 제2항에 있어서,
상기 제1 분기 리턴 인스트럭션의 상기 예측은 상기 제1 예측 분기 어드레스가 리턴 인스트럭션에 대응한다는 예측을 포함하는, 방법. - 제3항에 있어서,
상기 제1 분기 리턴 인스트럭션이 잘못 예측되었다고 식별하는 것에 응답하여 리턴 예측 없음을 나타내도록 상기 제1 엔트리를 설정하는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 제1 엔트리가 리턴 인스트럭션의 예측을 나타낸다고 결정하는 것에 응답하여, 상기 BTB에 대한 후속 액세스를 억제하는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 BTB의 제2 엔트리에 기초하여, 제2 분기 리턴 인스트럭션의 예측을 식별하는 단계; 및
상기 제2 분기 리턴 인스트럭션의 상기 예측을 식별하는 것에 응답하여, 상기 분기 리턴 어드레스 스택에 대한 액세스를 시작하는 단계를 더 포함하는, 방법. - 방법에 있어서,
제1 프로그램 카운터 값[101]에 기초하여 분기 타겟 버퍼(BTB)[110]의 제1 엔트리에 액세스하는 단계;
상기 BTB의 상기 제1 엔트리의 제1 분기 어드레스 필드[112]에 기초하여 제1 인스트럭션 어드레스로 분기하는 단계; 및
상기 제1 인스트럭션 어드레스가 리턴 인스트럭션에 대응함을 나타내는 상기 BTB의 상기 제1 엔트리의 제1 리턴 필드[113]에 응답하여, 분기 리턴 어드레스 스택[115]에 대한 액세스를 시작하는 단계를 포함하는, 방법. - 제7항에 있어서,
상기 제1 인스트럭션 어드레스가 상기 리턴 인스트럭션에 대응한다고 결정하는 것에 응답하여, 상기 제1 리턴 필드에 리턴의 표시를 저장하는 단계를 더 포함하는, 방법. - 제7항에 있어서,
상기 분기 리턴 어드레스 스택에 대한 액세스를 시작하는 단계는 상기 제1 인스트럭션 어드레스의 분기와 동시에 상기 분기 리턴 어드레스 스택으로부터 인스트럭션 어드레스를 리턴하는 단계를 포함하는, 방법. - 제7항에 있어서,
상기 제1 인스트럭션 어드레스가 상기 리턴 인스트럭션에 대응함을 나타내는 상기 제1 리턴 필드에 응답하여, 상기 BTB에 대한 후속 액세스를 억제하는 단계를 더 포함하는, 방법. - 제10항에 있어서,
상기 후속 액세스를 억제하는 단계는 예측 리턴 인스트럭션에서 BTB 히트로 이어질 것으로 예상되는 상기 BTB에 대한 액세스를 억제하는 단계를 포함하는, 방법. - 제7항에 있어서,
제2 프로그램 카운터 값에 기초하여 상기 BTB의 제2 엔트리에 액세스하는 단계;
상기 BTB의 상기 제1 엔트리의 제2 분기 어드레스 필드에 기초하여 제2 인스트럭션 어드레스로 분기하는 단계; 및
상기 제2 인스트럭션 어드레스가 리턴 인스트럭션에 대응함을 나타내는 상기 BTB의 상기 제2 엔트리의 제2 리턴 필드에 응답하여, 상기 분기 리턴 어드레스 스택에 대한 액세스를 시작하는 단계를 더 포함하는, 방법. - 제7항에 있어서,
상기 리턴이 잘못 예측되었다고 식별하는 것에 응답하여 리턴 예측 없음을 나타내도록 상기 제1 엔트리를 설정하는 단계를 더 포함하는, 방법. - 프로세서[100]에 있어서,
제1 분기 리턴 인스트럭션의 예측을 식별하는 제1 엔트리[111]를 포함하는 분기 타겟 버퍼(BTB)[110];
분기 리턴 어드레스 스택[115]; 및
상기 제1 분기 리턴 인스트럭션의 상기 예측을 나타내는 상기 BTB의 상기 제1 엔트리에 응답하여, 상기 분기 리턴 어드레스 스택에 대한 액세스를 시작하도록 구성된 프로세서 코어를 포함하는, 프로세서. - 제14항에 있어서, 상기 BTB의 상기 제1 엔트리는,
상기 제1 분기 리턴 인스트럭션의 상기 예측을 나타내는 제1 리턴 필드[113]; 및
제1 예측 분기 어드레스를 나타내는 제1 분기 필드[112]를 포함하는, 프로세서. - 제15항에 있어서,
상기 제1 분기 리턴 인스트럭션의 상기 예측은 상기 제1 예측 분기 어드레스가 리턴 인스트럭션에 대응한다는 예측을 포함하는, 프로세서. - 제15항에 있어서,
상기 프로세서 코어는,
상기 제1 분기 리턴 인스트럭션이 잘못 예측되었다고 식별하는 것에 응답하여 리턴 예측 없음을 나타내도록 상기 제1 엔트리를 설정하도록 구성되는, 프로세서. - 제14항에 있어서,
상기 프로세서 코어는,
상기 제1 엔트리가 리턴 인스트럭션을 나타낸다고 결정하는 것에 응답하여, 상기 BTB에 대한 후속 액세스를 억제하도록 구성되는, 프로세서. - 제14항에 있어서,
상기 프로세서 코어는,
상기 제1 엔트리가 리턴 인스트럭션을 나타낸다고 결정하는 것에 응답하여, 상기 제1 분기 리턴 인스트럭션에 액세스할 것으로 예상되는 상기 BTB에 대한 후속 액세스를 억제하도록 구성되는, 프로세서. - 제14항에 있어서,
상기 BTB는 제2 분기 리턴 인스트럭션의 예측을 나타내는 제2 엔트리를 포함하고;
상기 프로세서 코어는 상기 제2 분기 리턴 인스트럭션의 상기 예측을 식별하는 것에 응답하여, 상기 분기 리턴 어드레스 스택에 대한 액세스를 시작하도록 구성되는, 프로세서.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/043,293 US11055098B2 (en) | 2018-07-24 | 2018-07-24 | Branch target buffer with early return prediction |
US16/043,293 | 2018-07-24 | ||
PCT/US2019/042176 WO2020023263A1 (en) | 2018-07-24 | 2019-07-17 | Branch target buffer with early return prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210025677A true KR20210025677A (ko) | 2021-03-09 |
KR102571623B1 KR102571623B1 (ko) | 2023-08-29 |
Family
ID=69179546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217004753A KR102571623B1 (ko) | 2018-07-24 | 2019-07-17 | 초기 리턴 예측을 갖는 분기 타겟 버퍼 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11055098B2 (ko) |
EP (1) | EP3827338A4 (ko) |
JP (1) | JP7269318B2 (ko) |
KR (1) | KR102571623B1 (ko) |
CN (1) | CN112470122B (ko) |
WO (1) | WO2020023263A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663126B1 (en) * | 2022-02-23 | 2023-05-30 | International Business Machines Corporation | Return address table branch predictor |
CN116737240A (zh) * | 2022-03-02 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 分支预测方法、装置、处理器、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US20030120906A1 (en) * | 2001-12-21 | 2003-06-26 | Jourdan Stephan J. | Return address stack |
US20050076193A1 (en) * | 2003-09-08 | 2005-04-07 | Ip-First, Llc. | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US20140143494A1 (en) * | 2012-11-19 | 2014-05-22 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5964868A (en) * | 1996-05-15 | 1999-10-12 | Intel Corporation | Method and apparatus for implementing a speculative return stack buffer |
US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
US6957327B1 (en) * | 1998-12-31 | 2005-10-18 | Stmicroelectronics, Inc. | Block-based branch target buffer |
US6609194B1 (en) * | 1999-11-12 | 2003-08-19 | Ip-First, Llc | Apparatus for performing branch target address calculation based on branch type |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6973563B1 (en) | 2002-01-04 | 2005-12-06 | Advanced Micro Devices, Inc. | Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction |
US20040003213A1 (en) | 2002-06-28 | 2004-01-01 | Bockhaus John W. | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack |
US8341383B2 (en) * | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
US7882338B2 (en) * | 2008-02-20 | 2011-02-01 | International Business Machines Corporation | Method, system and computer program product for an implicit predicted return from a predicted subroutine |
US7913068B2 (en) * | 2008-02-21 | 2011-03-22 | International Business Machines Corporation | System and method for providing asynchronous dynamic millicode entry prediction |
US20120079255A1 (en) | 2010-09-25 | 2012-03-29 | Combs Jonathan D | Indirect branch prediction based on branch target buffer hysteresis |
US10338928B2 (en) | 2011-05-20 | 2019-07-02 | Oracle International Corporation | Utilizing a stack head register with a call return stack for each instruction fetch |
WO2013101152A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Embedded branch prediction unit |
US20140250289A1 (en) * | 2013-03-01 | 2014-09-04 | Mips Technologies, Inc. | Branch Target Buffer With Efficient Return Prediction Capability |
US11099849B2 (en) | 2016-09-01 | 2021-08-24 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
US20190235873A1 (en) * | 2018-01-30 | 2019-08-01 | Samsung Electronics Co., Ltd. | System and method of reducing computer processor power consumption using micro-btb verified edge feature |
GB201802815D0 (en) * | 2018-02-21 | 2018-04-04 | Univ Edinburgh | Branch target buffer arrangement for instruction prefetching |
GB2577051B (en) * | 2018-09-11 | 2021-03-03 | Advanced Risc Mach Ltd | Branch prediction using branch target buffer |
-
2018
- 2018-07-24 US US16/043,293 patent/US11055098B2/en active Active
-
2019
- 2019-07-17 CN CN201980049605.0A patent/CN112470122B/zh active Active
- 2019-07-17 KR KR1020217004753A patent/KR102571623B1/ko active IP Right Grant
- 2019-07-17 EP EP19841112.6A patent/EP3827338A4/en active Pending
- 2019-07-17 WO PCT/US2019/042176 patent/WO2020023263A1/en unknown
- 2019-07-17 JP JP2021503748A patent/JP7269318B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US20030120906A1 (en) * | 2001-12-21 | 2003-06-26 | Jourdan Stephan J. | Return address stack |
US20050076193A1 (en) * | 2003-09-08 | 2005-04-07 | Ip-First, Llc. | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US20140143494A1 (en) * | 2012-11-19 | 2014-05-22 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
Also Published As
Publication number | Publication date |
---|---|
EP3827338A4 (en) | 2022-04-27 |
KR102571623B1 (ko) | 2023-08-29 |
JP2021532471A (ja) | 2021-11-25 |
CN112470122A (zh) | 2021-03-09 |
US11055098B2 (en) | 2021-07-06 |
EP3827338A1 (en) | 2021-06-02 |
JP7269318B2 (ja) | 2023-05-08 |
US20200034151A1 (en) | 2020-01-30 |
WO2020023263A1 (en) | 2020-01-30 |
CN112470122B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11416256B2 (en) | Selectively performing ahead branch prediction based on types of branch instructions | |
US10353710B2 (en) | Techniques for predicting a target address of an indirect branch instruction | |
EP3803577A1 (en) | Storing incidental branch predictions to reduce latency of misprediction recovery | |
KR102571623B1 (ko) | 초기 리턴 예측을 갖는 분기 타겟 버퍼 | |
CN112925632B (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
US9639370B1 (en) | Software instructed dynamic branch history pattern adjustment | |
JP2022509171A (ja) | ループ終了予測器 | |
US11016771B2 (en) | Processor and instruction operation method | |
US11392383B2 (en) | Apparatus and method for prefetching data items | |
KR20230015993A (ko) | 병합된 분기 타겟 버퍼 엔트리 | |
CN114610388A (zh) | 一种指令跳转方法、处理器及电子设备 | |
US20220075624A1 (en) | Alternate path for branch prediction redirect | |
US11204771B2 (en) | Methods and apparatus for handling processor load instructions | |
JP2014059665A (ja) | マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |