KR20130097676A - 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제 - Google Patents
제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제 Download PDFInfo
- Publication number
- KR20130097676A KR20130097676A KR1020130019269A KR20130019269A KR20130097676A KR 20130097676 A KR20130097676 A KR 20130097676A KR 1020130019269 A KR1020130019269 A KR 1020130019269A KR 20130019269 A KR20130019269 A KR 20130019269A KR 20130097676 A KR20130097676 A KR 20130097676A
- Authority
- KR
- South Korea
- Prior art keywords
- vector
- instruction
- prediction
- predicate
- execution
- Prior art date
Links
- 230000001629 suppression Effects 0.000 title description 2
- 239000013598 vector Substances 0.000 claims abstract description 211
- 238000000034 method Methods 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 37
- 230000006399 behavior Effects 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 11
- 230000002401 inhibitory effect Effects 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000011010 flushing procedure Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims 7
- 238000010586 diagram Methods 0.000 description 15
- 238000005192 partition Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- OCKGFTQIICXDQW-ZEQRLZLVSA-N 5-[(1r)-1-hydroxy-2-[4-[(2r)-2-hydroxy-2-(4-methyl-1-oxo-3h-2-benzofuran-5-yl)ethyl]piperazin-1-yl]ethyl]-4-methyl-3h-2-benzofuran-1-one Chemical compound C1=C2C(=O)OCC2=C(C)C([C@@H](O)CN2CCN(CC2)C[C@H](O)C2=CC=C3C(=O)OCC3=C2C)=C1 OCKGFTQIICXDQW-ZEQRLZLVSA-N 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor 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
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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 or 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
도 2는 도 1에 도시된 프로세서의 실시예의 부가적인 상세를 예시하는 블록도이다.
도 3은 프로그램 코드 루프의 예시적인 병렬화(parallelization)를 예시하는 도면이다.
도 4a는 예 1에 도시된 루프의 스칼라 실행 동안 가변 상태들의 시퀀스를 예시하는 도면이다.
도 4b는 예 1의 루프의 매크로스칼라 벡터화 프로그램 코드를 위한 실행의 진행을 예시하는 도면이다.
도 5a 및 도 5b는 프로그램 소스 코드의 벡터화의 일 실시예를 예시하는 도면들이다.
도 6a는 비-추측 벡터화 프로그램 코드(non-speculative vectorized program code)의 일 실시예를 예시하는 도면이다.
도 6b는 추측 벡터화 프로그램 코드(speculative vectorized program code)의 다른 실시예를 예시하는 도면이다.
도 7은 프레디케이트된 브랜치 명령의 브랜치 예측실패 동안 도 2의 프로세서의 일 실시예의 동작을 도시하는 흐름도이다.
특정 실시예들이 도면들에 예시적으로 도시되고 본원에 상세하게 설명될 것이다. 그러나, 단일 실시예만이 특정 특징과 관련하여 설명되더라도, 도면들 및 상세한 설명은 개시된 특정 실시예들로 청구항들을 한정하도록 의도되지 않는다는 것을 이해해야 한다. 반대로, 이 개시의 이득을 갖는 이 기술분야의 통상의 기술자에게 명백한 모든 수정들, 등가물들 및 대안들을 커버하는 것이 의도된다. 본 개시에 제공된 특징들의 예들은 달리 서술되지 않는 한 제한이라기보다는 예시인 것으로 의도된다.
이 출원 전체에 걸쳐서 이용되는 바와 같이, 단어 "~할 수 있다(may)"는 의무적인 의미(즉, ~해야 한다(must)는 의미)라기보다는, 허용적인 의미(즉, ~할 가능성이 있다는 의미)로 이용된다. 유사하게, 단어들 "포함한다(include)", "포함하는(including)", 및 "포함한다(includes)"는 포함하지만 그것으로 한정되지 않음을 의미한다.
다양한 유닛들, 회로들, 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성되는" 것으로서 설명될 수 있다. 그러한 문맥들에서, "~하도록 구성되는"은 동작 동안 태스크 또는 태스크들을 수행하는 "회로를 갖는"을 일반적으로 의미하는 구조의 폭넓은 설명이다. 이와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on) 상태가 아닐 때에도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성되는"에 대응하는 구조를 형성하는 회로는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛들/회로들/컴포넌트들은 설명에서 편의상 태스크 또는 태스크들을 수행하는 것으로서 설명될 수 있다. 이러한 설명은 구절 "~하도록 구성되는"을 포함하는 것으로서 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성되는 유닛/회로/컴포넌트는 그 유닛/회로/컴포넌트에 대한 해석에, 35 U.S.C. §112, 6절을 적용하지 않도록 명백하게 의도된다.
본 개시의 범위는 본원에서 다뤄지는 문제들 중 임의의 것 또는 전부를 완화하든지 그렇지 않든지, (명시적으로 또는 암시적으로) 본원에 개시된 특징들 중 임의의 특징 또는 그의 결합, 또는 그의 임의의 일반화를 포함한다. 따라서, 특징들의 임의의 그러한 결합에 이 출원(또는 그것에 대해 우선권을 주장하는 출원)의 소송 동안 새로운 청구항들이 만들어질 수 있다. 특히, 첨부된 청구항들과 관련하여, 종속 청구항들로부터의 특징들은 독립 청구항들의 특징들과 결합될 수 있고, 각각의 독립 청구항들로부터의 특징들은 임의의 적절한 방식으로 결합될 수 있고, 단지 첨부된 청구항들에 열거된 특정 결합들로 결합되지 않을 수 있다.
Claims (13)
- 프로그램 명령 실행의 제어 흐름이 조건부 흐름 제어 명령의 실행에 응답하여 변경되지 않는다고 예측하는 예측(prediction)을 생성하는 단계 - 상기 조건부 흐름 제어 명령은, 프레디케이트 벡터(predicate vector)의 하나 이상의 요소들 각각이 널(null)이라는 결정에 응답하여 상기 제어 흐름을 변경함 -;
상기 예측이 올바르지 않다고 검출하는 단계; 및
상기 예측이 올바르지 않다고 검출하는 것에 응답하여, 예측실패 거동(misprediction behavior)을 금지하는 단계
를 포함하는 방법. - 제1항에 있어서, 상기 예측실패 거동을 금지하는 단계는, 상기 조건부 흐름 제어 명령의 예측실패한 경로 내에 있는 프로그램 명령들을 실행하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 예측실패 거동을 금지하는 단계는, 상기 조건부 흐름 제어 명령과 명령 타깃 사이의 프로그램 순서의 프로그램 명령들을, 프로세서의 실행 파이프라인으로부터 플러시(flush)하는 것을 금지하는 단계를 포함하는 방법.
- 제1항에 있어서, 하나 이상의 프레디케이트 요소들 각각은, 대응하는 벡터 요소가 특정 벡터 명령의 결과를 수신할 것인지, 또는 상기 특정 벡터 명령의 실행 동안 수정되지 않은 채로 유지될 것인지를 제어하는 방법.
- 제4항에 있어서, 상기 예측실패 거동을 금지하는 단계는, 상기 조건부 흐름 제어 명령에 의해 특정되는 조건-코드 플래그의 상태가 프레디케이트 생성 명령의 결과라는 결정을 수신하는 것에 또한 의존하는 방법.
- 제4항에 있어서, 상기 예측실패 거동을 금지하는 단계는, 상기 조건부 흐름 제어 명령과 상기 조건부 흐름 제어 명령의 명령 타깃 사이의 예측실패한 경로 내에 있는 프로그램 명령들이 상기 프레디케이트 벡터의 상기 프레디케이트 요소들에 의존한다는 결정을 수신하는 것에 또한 의존하는 방법.
- 제4항에 있어서, 상기 예측실패 거동을 금지하는 단계는, 상기 조건부 흐름 제어 명령과 상기 조건부 흐름 제어 명령의 명령 타깃 사이의 예측실패한 경로 내에 있는 프로그램 명령들이 상기 프레디케이트 벡터에 의한 제로화 프레디케이션(zeroing predication)으로부터 도출되는 프레디케이트 벡터에 의존한다는 결정을 수신하는 것에 또한 의존하는 방법.
- 벡터 프로그램 명령의 벡터 오퍼랜드(vector operand)의 상이한 요소들에 대해 동시에 동작하도록 구성되는 복수의 실행 파이프라인들을 포함하는 실행 유닛;
상기 실행 유닛에 결합되며, 흐름 제어 명령이 프로그램 명령 실행의 제어 흐름을 변경하지 않을 것이라는 예측을 생성하도록 구성되는 예측 유닛 - 상기 흐름 제어 명령은, 프레디케이트 벡터의 하나 이상의 요소들 각각이 널이라는 결정에 응답하여 상기 제어 흐름을 변경함 -; 및
상기 예측이 올바르지 않다고 검출하도록 구성되는 예측실패 검출 유닛
을 포함하고,
상기 예측실패 검출 유닛은, 상기 예측이 올바르지 않다고 검출하는 것에 응답하여 상기 실행 파이프라인들의 예측실패 거동을 금지하도록 또한 구성되는 프로세서. - 제8항에 있어서, 예측실패 거동을 금지하기 위해서, 상기 예측실패 검출 유닛은, 상기 실행 유닛이 상기 흐름 제어 명령의 예측실패한 경로 내에 있는 프로그램 명령들을 실행하게 하도록 구성되는 프로세서.
- 제8항에 있어서, 하나 이상의 프레디케이트 요소들 각각은, 대응하는 벡터 요소가 특정 벡터 명령의 결과를 수신할 것인지, 또는 상기 특정 벡터 명령의 실행 동안 수정되지 않은 채로 유지될 것인지를 제어하도록 구성되는 프로세서.
- 제10항에 있어서, 상기 예측실패 검출 유닛은, 상기 흐름 제어 명령에 의해 특정되는 조건-코드 플래그의 상태가 프레디케이트 생성 명령의 결과라는 결정을 수신하는 것에 응답하여 예측실패 거동을 금지하도록 또한 구성되는 프로세서.
- 제11항에 있어서, 상기 예측실패 검출 유닛은, 상기 흐름 제어 명령과 상기 흐름 제어 명령의 명령 타깃 사이의 예측실패한 경로 내에 있는 프로그램 명령들이 상기 프레디케이트 벡터의 상기 프레디케이트 요소들 또는 상기 프레디케이트 벡터에 의한 제로화 프레디케이션으로부터 도출되는 프레디케이트 벡터 중 어느 하나에 의존한다는 결정을 수신하는 것에 응답하여 예측실패 거동을 금지하도록 또한 구성되는 프로세서.
- 프로그램 명령들을 저장하도록 구성되는 메모리; 및
상기 메모리에 결합된 프로세서
를 포함하고,
상기 프로세서는,
벡터 프로그램 명령의 벡터 오퍼랜드의 상이한 요소들에 대해 동시에 동작하도록 구성되는 복수의 실행 파이프라인들을 포함하는 실행 유닛;
상기 실행 유닛에 결합되며, 흐름 제어 명령이 프로그램 명령 실행의 제어 흐름을 변경하지 않을 것이라는 예측을 생성하도록 구성되는 예측 유닛 - 상기 흐름 제어 명령은, 프레디케이트 벡터의 하나 이상의 요소들 각각이 널이라는 결정에 응답하여 상기 제어 흐름을 변경함 -; 및
상기 예측이 올바르지 않다고 검출하도록 구성되는 예측실패 검출 유닛
을 포함하고,
상기 예측실패 검출 유닛은, 상기 예측이 올바르지 않다고 검출하는 것에 응답하여 상기 실행 파이프라인들의 예측실패 거동을 금지하도록 구성되는 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/404,362 US9268569B2 (en) | 2012-02-24 | 2012-02-24 | Branch misprediction behavior suppression on zero predicate branch mispredict |
US13/404,362 | 2012-02-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130097676A true KR20130097676A (ko) | 2013-09-03 |
KR101417597B1 KR101417597B1 (ko) | 2014-07-09 |
Family
ID=47720430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130019269A KR101417597B1 (ko) | 2012-02-24 | 2013-02-22 | 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9268569B2 (ko) |
EP (1) | EP2631785A1 (ko) |
JP (1) | JP5612148B2 (ko) |
KR (1) | KR101417597B1 (ko) |
CN (1) | CN103353834B (ko) |
TW (1) | TW201349111A (ko) |
WO (1) | WO2013126228A2 (ko) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
US20140189330A1 (en) * | 2012-12-27 | 2014-07-03 | Ayal Zaks | Optional branches |
US9367314B2 (en) | 2013-03-15 | 2016-06-14 | Intel Corporation | Converting conditional short forward branches to computationally equivalent predicated instructions |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
GB2519108A (en) | 2013-10-09 | 2015-04-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling performance of speculative vector operations |
WO2015145190A1 (en) | 2014-03-27 | 2015-10-01 | Intel Corporation | Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements |
CN106030514B (zh) * | 2014-03-28 | 2022-09-13 | 英特尔公司 | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 |
US9519482B2 (en) * | 2014-06-20 | 2016-12-13 | Netronome Systems, Inc. | Efficient conditional instruction having companion load predicate bits instruction |
TWI566090B (zh) * | 2014-10-17 | 2017-01-11 | Insyde Software Corp | Debugging firmware / software to produce tracking systems and methods, recording media and computer program products |
GB2540942B (en) * | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | Contingent load suppression |
GB2548600B (en) * | 2016-03-23 | 2018-05-09 | Advanced Risc Mach Ltd | Vector predication instruction |
GB2558220B (en) | 2016-12-22 | 2019-05-15 | Advanced Risc Mach Ltd | Vector generating instruction |
US10503507B2 (en) | 2017-08-31 | 2019-12-10 | Nvidia Corporation | Inline data inspection for workload simplification |
US11645078B2 (en) | 2019-07-19 | 2023-05-09 | Intel Corporation | Detecting a dynamic control flow re-convergence point for conditional branches in hardware |
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
US11113067B1 (en) * | 2020-11-17 | 2021-09-07 | Centaur Technology, Inc. | Speculative branch pattern update |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5522053A (en) | 1988-02-23 | 1996-05-28 | Mitsubishi Denki Kabushiki Kaisha | Branch target and next instruction address calculation in a pipeline processor |
US5471593A (en) | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
JPH04137169A (ja) | 1990-09-28 | 1992-05-12 | Nec Corp | 情報処理装置 |
JPH04349570A (ja) * | 1991-05-28 | 1992-12-04 | Nec Corp | 情報処理装置 |
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
US5682493A (en) * | 1993-10-21 | 1997-10-28 | Sun Microsystems, Inc. | Scoreboard table for a counterflow pipeline processor with instruction packages and result packages |
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. |
US5809271A (en) * | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
US5687338A (en) * | 1994-03-01 | 1997-11-11 | Intel Corporation | Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor |
US5835951A (en) * | 1994-10-18 | 1998-11-10 | National Semiconductor | Branch processing unit with target cache read prioritization protocol for handling multiple hits |
US5732253A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches |
US5740416A (en) * | 1994-10-18 | 1998-04-14 | Cyrix Corporation | Branch processing unit with a far target cache accessed by indirection from the target cache |
US5692168A (en) * | 1994-10-18 | 1997-11-25 | Cyrix Corporation | Prefetch buffer using flow control bit to identify changes of flow within the code stream |
AU7550496A (en) * | 1995-10-06 | 1997-04-28 | Advanced Micro Devices Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US5799180A (en) | 1995-10-31 | 1998-08-25 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken |
US6282663B1 (en) | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6157998A (en) * | 1998-04-03 | 2000-12-05 | Motorola Inc. | Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers |
JP2000293373A (ja) * | 1999-04-12 | 2000-10-20 | Hitachi Ltd | 分岐予測装置 |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US20030135719A1 (en) | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for tracing instruction disposition information |
US7155598B2 (en) | 2002-04-02 | 2006-12-26 | Ip-First, Llc | Apparatus and method for conditional instruction execution |
JP3709933B2 (ja) | 2002-06-18 | 2005-10-26 | 日本電気株式会社 | 分岐予測による分岐命令高速化方法、およびプロセッサ |
US7159103B2 (en) | 2003-03-24 | 2007-01-02 | Infineon Technologies Ag | Zero-overhead loop operation in microprocessor having instruction buffer |
US20050097304A1 (en) * | 2003-10-30 | 2005-05-05 | International Business Machines Corporation | Pipeline recirculation for data misprediction in a fast-load data cache |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US7254700B2 (en) * | 2005-02-11 | 2007-08-07 | International Business Machines Corporation | Fencing off instruction buffer until re-circulation of rejected preceding and branch instructions to avoid mispredict flush |
US20060190710A1 (en) | 2005-02-24 | 2006-08-24 | Bohuslav Rychlik | Suppressing update of a branch history register by loop-ending branches |
US7734901B2 (en) | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US8266413B2 (en) | 2006-03-14 | 2012-09-11 | The Board Of Trustees Of The University Of Illinois | Processor architecture for multipass processing of instructions downstream of a stalled instruction |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
US7925868B2 (en) * | 2007-01-24 | 2011-04-12 | Arm Limited | Suppressing register renaming for conditional instructions predicted as not executed |
US7624254B2 (en) * | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
US8356159B2 (en) | 2008-08-15 | 2013-01-15 | Apple Inc. | Break, pre-break, and remaining instructions for processing vectors |
US8271832B2 (en) | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US8099586B2 (en) * | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
US8245017B2 (en) | 2009-02-12 | 2012-08-14 | Via Technologies, Inc. | Pipelined microprocessor with normal and fast conditional branch instructions |
US20100262813A1 (en) | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
JP5423156B2 (ja) * | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
US20110047357A1 (en) | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US8458684B2 (en) * | 2009-08-19 | 2013-06-04 | International Business Machines Corporation | Insertion of operation-and-indicate instructions for optimized SIMD code |
US8433885B2 (en) | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US8555040B2 (en) | 2010-05-24 | 2013-10-08 | Apple Inc. | Indirect branch target predictor that prevents speculation if mispredict is expected |
US9098295B2 (en) * | 2011-01-21 | 2015-08-04 | Apple Inc. | Predicting a result for an actual instruction when processing vector instructions |
US8862861B2 (en) * | 2011-05-13 | 2014-10-14 | Oracle International Corporation | Suppressing branch prediction information update by branch instructions in incorrect speculative execution path |
-
2012
- 2012-02-24 US US13/404,362 patent/US9268569B2/en active Active
-
2013
- 2013-02-11 WO PCT/US2013/025504 patent/WO2013126228A2/en active Application Filing
- 2013-02-20 EP EP13155929.6A patent/EP2631785A1/en not_active Ceased
- 2013-02-21 TW TW102106080A patent/TW201349111A/zh unknown
- 2013-02-22 JP JP2013049602A patent/JP5612148B2/ja active Active
- 2013-02-22 KR KR1020130019269A patent/KR101417597B1/ko active IP Right Grant
- 2013-02-22 CN CN201310175278.8A patent/CN103353834B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103353834A (zh) | 2013-10-16 |
CN103353834B (zh) | 2016-09-28 |
WO2013126228A3 (en) | 2015-06-18 |
US20130227251A1 (en) | 2013-08-29 |
EP2631785A1 (en) | 2013-08-28 |
JP2013175201A (ja) | 2013-09-05 |
TW201349111A (zh) | 2013-12-01 |
US9268569B2 (en) | 2016-02-23 |
KR101417597B1 (ko) | 2014-07-09 |
JP5612148B2 (ja) | 2014-10-22 |
WO2013126228A2 (en) | 2013-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101417597B1 (ko) | 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제 | |
KR101511837B1 (ko) | 벡터 분할 루프들의 성능 향상 | |
US8555037B2 (en) | Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture | |
US8793472B2 (en) | Vector index instruction for generating a result vector with incremental values based on a start value and an increment value | |
US9298456B2 (en) | Mechanism for performing speculative predicated instructions | |
US8447956B2 (en) | Running subtract and running divide instructions for processing vectors | |
US8850162B2 (en) | Macroscalar vector prefetch with streaming access detection | |
US9182959B2 (en) | Predicate count and segment count instructions for processing vectors | |
US20130007422A1 (en) | Processing vectors using wrapping add and subtract instructions in the macroscalar architecture | |
US9389860B2 (en) | Prediction optimizations for Macroscalar vector partitioning loops | |
US9317284B2 (en) | Vector hazard check instruction with reduced source operands | |
US20130024670A1 (en) | Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture | |
US20140359253A1 (en) | Increasing macroscalar instruction level parallelism | |
US20130318332A1 (en) | Branch misprediction behavior suppression using a branch optional instruction | |
US9390058B2 (en) | Dynamic attribute inference | |
US9335980B2 (en) | Processing vectors using wrapping propagate instructions in the macroscalar architecture | |
US20130024669A1 (en) | Processing vectors using wrapping shift instructions in the macroscalar architecture | |
US9335997B2 (en) | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture | |
US20130024671A1 (en) | Processing vectors using wrapping negation instructions in the macroscalar architecture | |
US8560815B2 (en) | Processing vectors using wrapping boolean instructions in the macroscalar architecture | |
US9342304B2 (en) | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20130222 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20140519 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20140701 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20140701 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20170616 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20170616 Start annual number: 4 End annual number: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190617 Year of fee payment: 6 |
|
PR1001 | Payment of annual fee |
Payment date: 20190617 Start annual number: 6 End annual number: 6 |
|
PR1001 | Payment of annual fee |
Payment date: 20200618 Start annual number: 7 End annual number: 7 |
|
PR1001 | Payment of annual fee |
Payment date: 20220615 Start annual number: 9 End annual number: 9 |
|
PR1001 | Payment of annual fee |
Payment date: 20240617 Start annual number: 11 End annual number: 11 |