KR920020314A - 브랜치 예측 테이블을 사용하는 브랜치 예측 방법 및 장치 - Google Patents
브랜치 예측 테이블을 사용하는 브랜치 예측 방법 및 장치 Download PDFInfo
- Publication number
- KR920020314A KR920020314A KR1019920005633A KR920005633A KR920020314A KR 920020314 A KR920020314 A KR 920020314A KR 1019920005633 A KR1019920005633 A KR 1019920005633A KR 920005633 A KR920005633 A KR 920005633A KR 920020314 A KR920020314 A KR 920020314A
- Authority
- KR
- South Korea
- Prior art keywords
- branch
- instruction
- instructions
- currently
- prediction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 32
- 238000012545 processing Methods 0.000 claims 16
- 230000003111 delayed effect Effects 0.000 claims 3
- 210000004392 genitalia Anatomy 0.000 claims 1
- 238000012805 post-processing Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 2
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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or 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 or 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
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
내용 없음
Description
본 내용은 요부공개 건이므로 전문내용을 수록하지 않았음
제1도는 본 발명에 따른 브랜치 예측 장치의 제1실시예를 도시한 블록도,
제2도는 명령 폐취시에 제1도의 브랜치 예측 장치의 수행을 도시한 순서도,
제6도는 제4도의 장치에 있어서 그 수행을 설명하기 위한 처리 흐름도.
Claims (40)
- 명령어들의 그룹을 동시에 실행하기 위한 프로세서 수단과; 예측 브랜치 명령을 가진 명령어 그룹을 지시하는 브랜치 어드레스, 상기 예측 부랜치 명령의 브랜치 타켓 어드레스, 및 상기 브랜치 어드레스에 의해 지시된 상기 명령어 그룹에서 성기 예측 브랜치 명령의 위치를 지시하는 명령 위치를 각기 포함하는 엔트리들을 기록하기 위한 브랜치 예측 테이블 수단과; 상기 프로세서 수단에 의해 동시에 실행될 명령어 그룹을 폐취하기 위해, 후속처리 시간내에 현재 폐취된 명령어 그룹에 대한 예측 브랜치 명령의 브랜치 타겟 어드레스에 의해 지시된 명령어 그룹을 폐취하고, 상기 폐취된 명령어 그룹에 대한 상기 예측 브랜치 명령이 상기 현재 폐취된 명령어 그룹의 어드레스와 일치하는 브랜치 어드레스를 갖는 상기 브랜치 예측 테이블 수단내 엔트리에 기록되는 명령 폐취 수단과; 상기 예측 브랜치 명령이 상기 현재 폐취돈 명령어 그룹에 실제 실행시에 실제로 인카운터 되었을때 상기 현재 폐취된 명령 그룹에 대한 상기 예측 브랜치 명령을 올바르게 판정하기 위한 예측 판정 수단과; 상기 예측 판정 수단이 상기 예측 브랜치 명령을 올바르게 판정하기 않았을때, 후속 처리시간에서 상기 명령 폐취 수단에 의해 쳬취되는 명령어들의 현재 폐취된 그룹에 대해 상기 예측 브랜치 명령의 상기 브랜치 타겟 어드레스에 의해 지시된 명령어 그룹을 무효로 하기 위한 예측 명령 무효 수단을 구비하는 것을 특징으로 하는 브랜치 예측 장치.
- 제1항에 있어서, 상기 예측 판정 수단은 현재 폐취된 명령어 그룹의 에드레스와 일치하는 브랜치 어드레스를 갖는 상기 브랜치 예측 테이블 수단의 엔트리에 기록된 상기 명령 위치와, 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 실제 브랜치 명령의 실제 명령 위치를 비교하기 위한 비교기 수단을 포함하는 것을 특징으로 하는 장치.
- 제2항에 있어서, 상기 브랜치 예측 테이블 수단에 상기 엔트리를 재기록하기 위한 테이블 기록 수단을 추가로 구비하는 것을 특징으로 하는 장치.
- 제3항에 있어서, 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 상기 실제 브랜치 명령의 상기 실제 명령 위치가 상기 현재 폐취된 명령어 그룹에 대한 상기 예측 브랜치 명령의 상기 명령 위치와는 상이하고 상기 실제 브랜치 명령이 실제로 받아들여지지 않았을때, 다른 브랜치 명령이 상기 실제 브랜치 명령후 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터되지 않고 상기 테이블 기록 수단이 상기 현재 폐취된 명령어 그룹의 모든 실행이 완료될때까지 상기 브랜치 예측 테이블 수단내 상기 엔트리들을 기록하지 않는 것을 특징으로 하는 장치.
- 제3항에 있어서, 상기 테이블 기록 수단은 또한 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 상기 실제 브랜치 예측이 상기 브랜치 예측 테이블 수단에 기록되지 않았을때, 상기 현재 폐취된 명령어 그룹에 대한 실제 브랜치 명령을 기록하는 새로운 엔트리를 상기 브랜치 예측 테이블 수단에 기록하는 것을 특징으로 하는 장치.
- 제1항에 있어서, 상기 현재 폐취된 명령어 그룹의 실제 실행전에 상기 현재 폐취된 명령어 그룹에 대한 상기 예측 브랜치 명령의 명령 위치뒤에 위치되는 현재 폐취된 명령어 그룹에서 명령들을 무효로하기 위한 현재 무효수단을 추가로 구비하는 것을 특징으로 하는 장치.
- 제6항에 있어서, 상기 명령 폐취 수단은 상기 현재 폐취된 명령어 그룹의 실제 실행후에 인카운터된 모든 브랜치 명령들이 실제로 받아들여지지 않고, 상기 현재 폐취된 명령어 그룹의 실행시에 인카운터되는 브랜치 명령이 없는 경우에, 후속 처리 시간에서 상기 현재 명령 무효 수단에 의해 무효로된 명령들을 폐취하는 것을 특징으로 하는 장치.
- 제6항에 있어서, 상기 명령 폐취 수단에 의해 폐취된 명령어 그룹은 상기 현재 폐취된 명령어 그룹에 대해 상기 예측 브랜치 명령의 명령 위치뒤에 위치되었을때도 상기 현재 명령 무효 수단에 의해 무효로 될수없는 지연명령을 포함하고, 상기 지연 명령들중 하나는 실제로 브랜치 명령이며, 상기 명령 폐취 수단은 후속 처리 시간에서 실제의 브랜치 명령인 상기 지연 명령들중 하나의 뒤에 위치되는 현재 폐취된 명령어 그룹의 모든 명령과 실제 브랜치 명령인 상기 지연 명령들중 하나를 폐취하는 것을 특징으로 하는 장치.
- 제1항에 있어서, 상기 명령 폐취 수단은 상기 현재 폐취된 명령어 그룹의 어드레스와 일치하는 브랜치 어드레스를 갖는 상기 브랜치 예측 테이블 수단내 엔트리에 기록되는 상기 현재 폐취된 명령어 그룹에 대한 예측 브랜치 명령이 있고, 상기 현재 폐취된 명령어 그룹에 대한 상기 예측 브랜치 명령의 브랜치 타겟 어드레스의 의해 지시된 명령어 그룹이 상기 현재 페취된 명령어 그룹에 대한 상기 예측 브랜치 명령의 브랜치 타겟 어드레스의 명령 위치에 앞선 브랜치 어드레스의 명령위치를 갖는 상기 브랜치 예측 테이블 수단내 다른 엔트리에 기록된 다른 예측 브랜치 명령을 포함하지 않는 경우를 제외하고는, 명령의 어드레스에 따라 순차적으로 명령어 그룹을 폐취하는 것을 특징으로 하는 장치.
- 제1항에 있어서, 상기 브랜치 예측 테이블 수단은 연관 메모리를 구비하는 것을 특징으로 하는 장치.
- 명령들을 실행하기 위한 프로세서 수단과; 엔트리들을 기록하기 위한 연관 메모리로 형성되며, 상기 각 엔트리가 예측 브랜치 명령을 가진 동시에 실행될 명령들을 브랜치 어드레서, 상기 예측 브랜치 명령의 브랜치 타겟 어드레스 및 상기 연관 메모리내 각 엔트리의 위치를 지시하는 엔트리 어드레스를 포함하는 브랜치 예측 테이블 수단과; 상기 프로세서 수단에 의해 동시에 실행될 명령들을 폐취하기 위해, 후속 처리시간에서 현재 폐취된 명령들에 대한 예측 브랜치 명령의 브랜치 타겟 어드레스에 의해 지시된 명령들을 폐취하고, 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령이 상기 현재 폐취된 명령들의 어드레스와 일치하는 브랜치 어드레스를 갖는 상기 브랜치 예측 테이블 수단내 엔트리에 기록되는 명령 폐취 수단과; 상기 예측 브랜치 명령이 상기 현재 폐취된 명령들의 실제 실행시에 실제로 인카운터되었을때 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 올바르게 판정하기 위한 예측 판정 수단과; 상기 예측 판정 수단이 상기 예측 브랜치 명령을 올바르게 판정하지 않았을때, 후속 처리시간에서 상기 명령 폐취 수단에 의해 폐취되는 현재 폐취된 명령들에 대해 상기 예측 브랜치 명령의 브랜치 타겟 어드레스에 의해 지시된 명령들을 무효로하기 위한 예측 명령 무효 수단과; 상기 현재 폐취된 명령들에 대해 예측 브랜치 명령을 기록하는 엔트리의 엔트리 어드레스를 사용함으로써, 상기 예측 판정 수단이 상기 예측 브랜치 명령들을 올바르게 판정하지 않았을때 상기 브랜치 예측 테이블 수단내에 상기 현재 폐취된 명령들에 대한 상기 예측 브랜치 명령을 기록하는 엔트리를 재기록하기 위한 테이블 기록 수단을 구비하는 것을 특징으로 하는 브랜치 예측 장치.
- 제11항에 있어서, 상기 테이블 기록 수단은 상기 현재 폐취된 명령들의 실제 실행시에 인카운터된 실제 브랜치 예측이 상기 브랜치 예측 테이블 수단내에 기록되지 않았을때 상기 브랜치 예측 테이블 수단내에 상기 현재 폐취된 명령들에 대한 실제 브랜치 명령을 기록하는 새로운 엔트리를 기록하고, 상기 테이블 기록 수단이 상기 브랜치 예측 테이블 수단에서 현재 사용되지 않은 새로운 엔트리 어드레스를 사용함으로써 상기 새로운 엔트리를 기록하는 것을 특징으로 하는 장치.
- 제11항에 있어서, 상기 현재 페취된 명령들에 대한 상기 예측 브랜치 명령을 기록하는 엔트리의 엔트리 어드레스를 공급하기 위해, 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 기록하는 엔트리의 재기록이 상기 테이블 기록 수단에 의해 수행될때까지 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 기록하는 엔트리의 엔트리 어드레스를 적재하는 수단을 추가로 구비하는 것을 특징으로 하는 장치.
- 제11항에 있어서, 상기 테이블 기록 수단은 상기 현재 폐취된 명령들의 실제 실행시에 인카운터된 실제 브랜치 명령이 상기 테이블 기록 수단에 의해 기록이 수행되는 동일한 처리 시간에서 폐취되고 있는 동안은 상기 예측 판정 수단이 상기 예측 브랜치 명령을 올바르게 판정하지 않았을때에도 상기 브랜치 예측 테이블 수단내에 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 기록하는 엔트리를 재기록하지 않는 것을 특징으로 하는 장치.
- 제11항에 있어서, 상기 브랜치 예측 테이블내 각 엔트리는 상기 브랜치 예측 테이블 수단내 상기 각 엔트리의 유효성을 지시하는 유효 비트를 추가로 포함하는 것을 특징으로 하는 장치.
- 제15항에 있어서, 상기 브랜치 예측 테이블 수단내 각 엔트리의 상기 유효 비트는 상기 각 엔트리의 예측 브랜치 명령이 상기 예측 브랜치 명령의 실행시에 실제로 받아들여지지 않았을때 상기각 엔트리를 무효로 지시하는 것을 특징으로하는 장치.
- 제15항에 있어서, 상기 명령 폐취 수단에 의해 폐취될 명령들을 적재하기 위한 캐쉬 메모리 수단을 추가로 구비하며, 상기 브랜치 예측 테이블 수단내 각 엔트리의 상기 유효 비트는 상기 각 엔트리의 브랜치 어드레스와 일치하는 어드레스를 가진 명령이 상기 캐쉬 메모리 수단내에 존재하지 않을때 상기 각 엔트리를 무효로 지시하는 것을 특징으로 하는 장치.
- 제15항에 있어서, 상기 테이블 기록 수단은 상기 현재 폐취된 명령들의 실제 실행시에 인카운터된 실제 브랜치 에측이 상기 브랜치 예측 테이블 수단내에 기록되지 않았을때 상기 브랜치 예측 테이블 수단내에 상기 현재 폐취된 명령들에 대한 실제 브랜치 명령을 기록하는 새로운 엔트리를 기록하며, 상기 테이블 기록 수단이 무효로된 상기 엔트리를 지시하는 무효 비트를 가진 엔트리를 위해 기록함으로써 새로운 엔트리를 기록하는 것을 특징으로 하는 장치.
- 제11항에 있어서, 상기 플로세서 수단은 명령어 그룹을 동시에 실행하며, 상기 명령 폐취 수단은 각 처리 시간에 명령어 그룹을 폐취하고, 상기 브랜치 예측 테이블 수단내 각 엔트리는 상기 브랜치 어드레스에 의해 지시된 명령어 그룹에서 예측 브랜치 명령의 위치를 지시하는 명령 위치를 또한 포함하는 것을 특징으로 하는 장치.
- 제19항에 있어서, 상기 명령 폐취 수단은 상기 현재 폐취된 명령들의 어드레스와 일치하는 브랜치 어드레스를 가진 상기 브랜치 예측 테이블 수단내 엔트리에 기록되는 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령이 있으며, 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령의 브랜치 타겟 어드레스에 의해 지시된 명령들이 현재 폐취된 명령들에 예측 브랜치 명령의 브랜치 타겟 어드레스에 앞선 브랜치 어드레스를 가진 상기 브랜치 예측 테이블 수단내 다른 엔트리에 기록된 다른 예측 브랜치 명령을 포함하지 않는 경우를 제외하고는 명령들의 어드레스에 따라 순차적으로 명령을 폐취하는 것을 특징으로 하는 장치.
- 명령어들의 그룹을 동시에 실행할 수 있는 프로세서에 대한 브랜치 예측 방법에 있어서, 예측 브랜치 명령을 갖는 명령어 그룹을 지시하는 브랜치 어드레스, 상기 예측 브랜치 명령의 브랜치 어드레스, 및 상기 브랜치 어드레스에 의해 지시된 명령어 그룹에서 예측 브랜치 명령의 위치를 지시하는 명령 위치를 각기 포함하는 엔트리를 기록하기 위해 브랜치 예측 테이블을 제공하는 단계와; 현재 폐취된 명령어 그룹에 대한 예측 브랜치 명령이 상기 현재 폐취된 명령어 그룹의 어드레스와 일치하는 브랜치 어드레스를 가진 상기 브랜치 예측 테이블 수단내 엔트리에 기록되어 있으며, 후속 처리시간에서 현재 폐취된 명령어 그룹에 대한 예측 브랜치 명령의 브랜치 타켓 어드레스에 의해 지시되는 상기 프로세서에 의해 동시에 실행될 명령어 그룹을 폐취하는 단계와; 상기 프로세서에 의해 동시에 폐취하는 상기 단게에서 폐취된 명령어 그룹을 실제로 실행하는 단계와; 상기 예측 브랜치 명령이 상기 실제 실행 단계에서 현재 폐취된 명령어 그룹의 실제 실행시에 실제로 인카운터될때 상기 폐취된 명령어 그룹에 대한 예측 브랜치 명령을 올바르게 판정하는 단계와; 상기 예측 브랜치 명령이 상기 판정 단계에서 올바르게 판정되지 않았을 때, 상기 후곡 처리시간에 상기 폐취 단계에서 폐취되는 현재 폐취된 명령어 그룹에 대하여 상기 예측 브랜치 명령의 브랜치 타켓 어드레스에 의해 지시된 명령어 그룹을 무효로 하는 단계를 포함하는 것을 특징으로 하는 브랜치 예측 방법.
- 제21항에 있어서, 상기 판정 단계에서, 현재 폐취된 명령어 그룹의 어드레스와 일치하는 브랜치 어드레스를 가진 상기 브랜치 예측 테이블의 엔트리에 기록된 상기 명령 위치가 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 실제 브랜치 명령의 실제 명령 위치와 비교되는 것을 특징으로 하는 방법.
- 제22항에 있어서, 상기 브랜치 예측 테이블내에 엔트리들을 재기록하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
- 제23항에 있어서, 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 실제 브랜치 명령의 상기 실제 명령 위치가 상기 현재 폐취된 명령어 그룹에 대한 예측 브랜치 명령의 상기 명령 위치와는 상이하며, 상기 실제 브랜치 명령이 실제로 받아들여지지 않았을때, 다른 브랜치 명령이 상기 실제 브랜치 명령후 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터되지 않고 상기 현재 폐취된 명령어 그룹의 모든 실행이 완료될때까지 상기 재기록 단계에서의 상기 브랜치 예측 테이블내 엔트리들의 재기록을 수행하지 않는 것을 특징으로 하는 방법.
- 제23항에 있어서, 상기 재기록 단계에서, 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 상기 실제 브랜치 예측이 상기 브랜치 예측 테이블내에 기록되지 않았을때 상기 현재 폐취된 명령어 그룹에 대한 실제 브랜치 명령을 재기록하는 새로운 엔트리가 상기 브랜치 예측 테이블내에 기록되는 것을 특징으로 하는 방법.
- 제21항에 있어서, 상기 현재 폐취된 명령어 그룹의 실제 실행전에 상기 현재 폐취된 명령어 그룹에 대한 예측 브랜치 명령의 명령 위치뒤에 위치되는 현재 폐취된 명령어 그룹에서 명령들을 일시적으로 무효로 하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
- 제26항에 있어서, 상기 폐취 단계에서, 상기 현재 폐취된 명령어 그룹의 실제 실행시에 인카운터된 브랜치 명령 모두가 실제로 받아들여지지 않았고, 상기 현재 폐취된 명령어 그룹의 실행시에 인카운터되는 브랜치 명령이 없는 경우에, 상기 일시적 무효 단계에서 무효로된 명령들이 후속의 처리 시간에서 폐취되는 것을 특징으로 하는 방법.
- 제26항에 있어서, 상기 폐취 단게에서 폐취된 명령어 그룹은 상기 현재 폐취된 명령어 그룹에 대해 예측 명령의 명령 위치뒤에 위치되었을때도 상기 일시적 무효 단계에서 무효로 될 수 없는 지연 명령을 포함하며, 상기 지연 명령들중 하나는 실제의 브랜치 명령이며, 실제 브랜치 명령인 상기 지연 명령들중 하나와 실제 브랜치 명령인 상기지연 명령들중 한 명령뒤에 위치된 현재 폐취 명령어 그룹의 모든 명령들이 후속 처리 시간에 상기 폐취 단계에서 폐취되는 것을 특징으로 하는 방법.
- 제21항에 있어서, 상기 폐취 단계에서, 상기 현재 폐취된 명령어 그룹의 어드레스와 일치하는 브랜치 어드레스를 가진 상기 브랜치 예측 테이블내 엔트리에 기록되는 현재 폐취된 명령어 그룹에 대한 예측 브랜칭 명령이 있으며, 상기 현재 폐취된 명령어 그룹에 대한 상기 예측 브랜치 명령의 브랜치 타켓 어드레스에 의해 지시된 명령어 그룹에 상기 현재 폐취된 명령어 그룹에 대한 상기 예측 그룹에 대한 상기 브랜치 명령의 브랜치 타겟 어드레의 명령 위치에 앞선 브랜치 어드레스의 명령 위치를 가진 상기 브랜치 예측 테이블내 다른 엔트리에 기록된 다른 예측 브랜치 명령을 포함하지 않는 경우를 제외하고는, 명령의 어드레스에 따라 상기 명령어 그룹이 순차적으로 폐취되는 것을 특징으로 하는 방법.
- 제21항에 있어서, 상기 브랜치 에측 테이블은 연관 메모리에 의해 형성되는 것을 특징으로 하는 방법.
- 에측 브랜치 명령을 가진 동시에 실행될 명령들을 지시하는 브랜치 어드레스와, 상기 예측 브랜치 명령의 브랜이 타켓 어드레스와, 각 엔트리의 위치를 지시하는 엔트리 어드레스를 각기 포함하는 엔트리들을 기록하기 위해 연관 메모리에 의해 형성된 브랜치 예측 테이블을 제공하는 단계와; 상기 현재 폐취된 명령에 대한 상기 예측 브랜치 명령이 상기 현재 폐취된 명령의 어드레스와 일치하는 브랜치 어드레스를 갖는 상기 브랜치 예측 테이블내 엔트리에 기록되며, 후속 처리 시간에 현재 폐취된 명령에 대한 예측 브랜치 명령의 브랜체 타겟 어드레스에 의해 지시되는 프로세서에 의해 동시에 실행될 명령들을 폐취하는 단계와; 상기 프로세서에 의해 상기 폐취단계에서 동시에 폐취된 명령들을 실제로 실행하는 단계와; 상기 예측 브랜치 명령이 상기 실제 실행 단계에서 현재 폐취된 명령들의 실제 실행시에 실제로 인카운터될때 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 옳은 것으로 판정하는 단계와; 상기 판정 단계에서 상기 예측 브랜치 명령이 옳은 것으로 판정되지 않았을때, 후속 처리 시간에 상기 폐취 단계에서 페취되는 현재 폐취된 명령들에 대한 예측 브랜치 명령의 브랜치 타겟 어드레스에 의해 지시된 명령들을 무효로 하는 단계와; 상기 현재 폐취된 명령들에 대해 예측 브랜치 명령을 기록하는 엔트리의 엔트리 어드레스를 사용하므로써, 상기 예측 브랜치 명령이 상기 판정 단계에서 옳은 것으로 판정되지 않을때 상기 브랜치 예측 테이블내 현재 폐취된 명령들에 대한 예측 브랜치 명령을 기록하는 엔트리를 재기록하는 단계를 포함하는 것을 특징으로 하는 브랜치 예측 방법.
- 제31항에 있어서, 상기 재기록 단계에서, 상기 브랜치 예측 테이블에서 현재 사용되지 않은 새로운 에트리 어드레스를 사용함으로써, 현재 폐취된 명령들의 실제 실행시에 인카운터될 실제 브랜치 예측이 상기 브랜치 예측 테이블내에 기록되지 않았을때 상기 현재 폐취된 명령들에 대한 실제 브랜치 명령을 기록하는 새로운 엔트리가 상기 브랜치 예측 테이블내에 기록되는 것을 특징으로 하는 방법.
- 제31항에 있어서, 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 기록하는 엔트리의 재기록이 상기 재기록 단계에서 수행될때까지, 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령을 기록하는 엔트리의 엔트리 어드레스를 적재하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
- 제31항에 있어서, 상기 재기록 단계에서, 상기 현재 폐취된 명령들의 실제 실행시에 인카운터된 실제 브랜치 명령이 상기 지기록 단계에서의 기록이 수행되는 동일한 처리 시간에서 폐취되는 동안은 상기 예측 브랜치 명령이 상기 판정 단계에서 옳은 것으로 판정되지 않았을때도 상기 브랜치 예측 테이블내에 상기 현재 폐취된 명령들에 대한 상기 예측 브랜치 명령을 기록하는 엔트리의 재기록이 금지되는 것을 특징으로 하는 방법.
- 제31항에 있어서, 상기 브랜치 에측 테이블내의 각 엔트리는 상기 브랜치 예측 테이블내 각 엔트리의 유효성을 지시하는 유효 비트를 추가로 포함하는 것을 특징으로 하는 방법.
- 제35항에 있어서, 상기 브랜치 예측 테이블내 각 엔트리의 상기 유효 비트는 상기 각 엔트리의 상기 예측 브랜치 명령이 상기 예측 브랜치 명령의 실행시에 실제로 받아들여지지 않았을때 상기 각 엔트리를 무효로 지시하는 것을 특징으로 하는 방법.
- 제35항에 있어서, 상기 브랜치 예측 테이블 내 각 엔트리의 상기 유효 비트는 상기 각 엔트리의 브랜치 어드레스와 일치하는 어드레스를 가진 명령이 상기 폐취 단게에서 폐취될 명령들을 적재하는 캐쉬 메모리내에 존재하지 않을때 상기 각 엔트리를 무효로 지시하는 것을 특징으로 하는 방법.
- 제35항에 있어서, 상기 재기록 단계에서, 상기 현재 폐취된 명령들의 실제 실행시에 인카운터된 실제 브랜치 예측 테이블내에 기록되어 있지 않을때, 상기 엔트리가 무효임을 지시하는 상기 무효 비트를 갖는 엔트리를 위에 기록함으로써 상기 현재 폐취된 명령들에 대한 실제 브랜치 명령을 기록하는 새로운 엔트리가 상기 브랜치 에측 테이블내에 기록되는 것을 특징으로 하는 방법.
- 제31항에 있어서, 상기 실제 실행 단계에서, 상기 프로세서는 명령어 그룹을 동시에 실행하고, 상기 폐취단계에서 상기 명령어 그룹은 각 처리 시간에 폐취되며, 상기 브랜치 예측 테이블내 각 엔트리는 상기 브랜치 어드레스에 의해 지시된 명령어 그룹에서 상기 예측 브랜치 명령의 위치를 지시하는 명령 위치를 또한 포함하는 것을 특징으로 하는 방법.
- 제39항에 있어서, 상기 폐취 단계에서, 상기 현재 폐취된 명령들의 어드레스와 일치하는 브랜치 어드레스를 갖는 상기 브랜치 예측 테이블내 엔트리에 기록되는 현재 폐취 명령들에 대한 예측 브랜치 명령이 있으며 상기 현재 폐취된 명령들에 대한 예측 브랜치 명령이 브랜치 타겟 어드레스에 의해 지시된 명령들이 상기 현재 폐취된 명령들에 대한 상기 예측 브랜치 명령의 브랜치 예측 테이블내 다른 엔트리에 기록된 다른 예측 브랜치 명령을 포함하지 않는 경우를 제외하고는, 상기 명령이 명령의 어드레스에 따라 순차적으로 폐취되는 것을 특징으로 하는 방법.※ 참고사항 : 최초출원 내용에 의하여 공개하는 것임.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7332991 | 1991-04-05 | ||
JP91-073329 | 1991-04-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR920020314A true KR920020314A (ko) | 1992-11-21 |
KR950012119B1 KR950012119B1 (ko) | 1995-10-14 |
Family
ID=13515022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019920005633A KR950012119B1 (ko) | 1991-04-05 | 1992-04-04 | 브랜치 예측 테이블을 사용하는 브랜치 예측 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5414822A (ko) |
KR (1) | KR950012119B1 (ko) |
DE (1) | DE4211222B4 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100498425B1 (ko) * | 1998-02-04 | 2005-09-08 | 삼성전자주식회사 | 분기 예측 장치 |
KR101493019B1 (ko) * | 2008-09-05 | 2015-02-12 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 희소 및 조밀 예측 캐쉬들을 갖는 하이브리드 브랜치 예측 장치 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623614A (en) * | 1993-09-17 | 1997-04-22 | Advanced Micro Devices, Inc. | Branch prediction cache with multiple entries for returns having multiple callers |
US5604909A (en) * | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
ES2138051T3 (es) * | 1994-01-03 | 2000-01-01 | Intel Corp | Metodo y aparato para la realizacion de un sistema de resolucion de bifurcaciones en cuatro etapas en un procesador informatico. |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
TW253946B (en) * | 1994-02-04 | 1995-08-11 | Ibm | Data processor with branch prediction and method of operation |
JP3590427B2 (ja) * | 1994-08-30 | 2004-11-17 | 株式会社ルネサステクノロジ | 先行読出機能付命令キャッシュメモリ |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
JP3494736B2 (ja) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
US6151090A (en) * | 1995-05-31 | 2000-11-21 | Casio Computer Co., Ltd. | LCD using liquid crystal of ferroelectric and/or antiferroelectric phase having pretilt angle of 1 degree or less |
US6112019A (en) * | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
GB9521977D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Cache memory |
GB9521978D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Computer instruction supply |
US5734881A (en) * | 1995-12-15 | 1998-03-31 | Cyrix Corporation | Detecting short branches in a prefetch buffer using target location information in a branch target cache |
US5742805A (en) * | 1996-02-15 | 1998-04-21 | Fujitsu Ltd. | Method and apparatus for a single history register based branch predictor in a superscalar microprocessor |
US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
AU3666697A (en) * | 1996-08-20 | 1998-03-06 | Idea Corporation | A method for identifying hard-to-predict branches to enhance processor performance |
US5758143A (en) * | 1996-10-07 | 1998-05-26 | International Business Machines Corporation | Method for updating a branch history table in a processor which resolves multiple branches in a single cycle |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
US6088793A (en) * | 1996-12-30 | 2000-07-11 | Intel Corporation | Method and apparatus for branch execution on a multiple-instruction-set-architecture 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 |
US6237077B1 (en) * | 1997-10-13 | 2001-05-22 | Idea Corporation | Instruction template for efficient processing clustered branch instructions |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
US6240510B1 (en) | 1998-08-06 | 2001-05-29 | Intel Corporation | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions |
US6304960B1 (en) | 1998-08-06 | 2001-10-16 | Intel Corporation | Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions |
US6230260B1 (en) | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
US6957327B1 (en) * | 1998-12-31 | 2005-10-18 | Stmicroelectronics, Inc. | Block-based branch target buffer |
US6976157B1 (en) * | 1999-11-04 | 2005-12-13 | International Business Machines Corporation | Circuits, systems and methods for performing branch predictions by selectively accessing bimodal and fetch-based history tables |
DE60141807D1 (de) | 2000-02-28 | 2010-05-27 | Nxp Bv | Datenprozessor mit meherern befehlen umfassende befehlswörtern |
CN1265286C (zh) * | 2001-06-29 | 2006-07-19 | 皇家菲利浦电子有限公司 | 预测间接分支目标地址的方法、装置和编译器 |
JP3798998B2 (ja) * | 2002-06-28 | 2006-07-19 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
US7426631B2 (en) * | 2005-02-02 | 2008-09-16 | International Business Machines Corporation | Methods and systems for storing branch information in an address table of a processor |
EP1990713B1 (en) * | 2006-02-28 | 2013-04-10 | Fujitsu Ltd. | Branch predicting device for computer |
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US20080040591A1 (en) * | 2006-08-11 | 2008-02-14 | Moyer William C | Method for determining branch target buffer (btb) allocation for branch instructions |
US20080040590A1 (en) * | 2006-08-11 | 2008-02-14 | Lea Hwang Lee | Selective branch target buffer (btb) allocaiton |
US7877586B2 (en) * | 2008-02-01 | 2011-01-25 | International Business Machines Corporation | Branch target address cache selectively applying a delayed hit |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
-
1992
- 1992-04-03 DE DE4211222A patent/DE4211222B4/de not_active Expired - Fee Related
- 1992-04-03 US US07/863,181 patent/US5414822A/en not_active Expired - Lifetime
- 1992-04-04 KR KR1019920005633A patent/KR950012119B1/ko not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100498425B1 (ko) * | 1998-02-04 | 2005-09-08 | 삼성전자주식회사 | 분기 예측 장치 |
KR101493019B1 (ko) * | 2008-09-05 | 2015-02-12 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 희소 및 조밀 예측 캐쉬들을 갖는 하이브리드 브랜치 예측 장치 |
Also Published As
Publication number | Publication date |
---|---|
US5414822A (en) | 1995-05-09 |
KR950012119B1 (ko) | 1995-10-14 |
DE4211222B4 (de) | 2009-05-28 |
DE4211222A1 (de) | 1992-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR920020314A (ko) | 브랜치 예측 테이블을 사용하는 브랜치 예측 방법 및 장치 | |
US10956163B2 (en) | Processor support for hardware transactional memory | |
EP0118828B1 (en) | Instruction fetch apparatus and method of operating same | |
US5603004A (en) | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system | |
JP3587591B2 (ja) | キャッシュ・ミスを制御する方法およびその計算機システム | |
US5845103A (en) | Computer with dynamic instruction reuse | |
US5210831A (en) | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations | |
US9892051B1 (en) | Method and apparatus for use of a preload instruction to improve efficiency of cache | |
US8984264B2 (en) | Precise data return handling in speculative processors | |
WO2019193314A1 (en) | An apparatus and method for controlling allocation of data into a cache storage | |
JP3184552B2 (ja) | 並列処理システムにおけるプロセッサのデータキャッシュ同期方法、及び、この方法を実現する並列処理システム | |
WO2002054230A2 (en) | System and method for prefetching data into a cache based on miss distance | |
US8601240B2 (en) | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution | |
US5412786A (en) | Data pre-fetch control device | |
US6381691B1 (en) | Method and apparatus for reordering memory operations along multiple execution paths in a processor | |
US6581138B2 (en) | Branch-prediction driven instruction prefetch | |
KR880011674A (ko) | 캐쉬 메모리 장치 | |
US20080162907A1 (en) | Structure for self prefetching l2 cache mechanism for instruction lines | |
US10169233B2 (en) | Translation lookaside buffer purging with concurrent cache updates | |
US7664942B1 (en) | Recovering a subordinate strand from a branch misprediction using state information from a primary strand | |
US11379152B2 (en) | Epoch-based determination of completion of barrier termination command | |
US8645670B2 (en) | Specialized store queue and buffer design for silent store implementation | |
CN114450668A (zh) | 电路和方法 | |
JP2534662B2 (ja) | 命令キヤツシユ制御方法 | |
JP2542565B2 (ja) | 分岐予測制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
G160 | Decision to publish patent application | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20110920 Year of fee payment: 17 |
|
EXPY | Expiration of term |