CN1191524C - 预取指令的执行方法和设备 - Google Patents
预取指令的执行方法和设备 Download PDFInfo
- Publication number
- CN1191524C CN1191524C CNB001352830A CN00135283A CN1191524C CN 1191524 C CN1191524 C CN 1191524C CN B001352830 A CNB001352830 A CN B001352830A CN 00135283 A CN00135283 A CN 00135283A CN 1191524 C CN1191524 C CN 1191524C
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- prediction
- branch history
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 76
- 230000015572 biosynthetic process Effects 0.000 claims description 83
- 238000000034 method Methods 0.000 claims description 44
- 230000009471 action Effects 0.000 claims description 39
- 239000000872 buffer Substances 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 17
- 230000000295 complement effect Effects 0.000 claims description 3
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 230000005465 channeling Effects 0.000 claims description 2
- 230000004069 differentiation Effects 0.000 claims description 2
- 230000002596 correlated effect Effects 0.000 claims 2
- 238000009825 accumulation Methods 0.000 claims 1
- 238000005755 formation reaction Methods 0.000 description 81
- 230000008878 coupling Effects 0.000 description 20
- 238000010168 coupling process Methods 0.000 description 20
- 238000005859 coupling reaction Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000004087 circulation Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 102000004357 Transferases Human genes 0.000 description 2
- 108090000992 Transferases Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000005284 excitation Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000502561 Acacia irrorata Species 0.000 description 1
- 241001647769 Mirza Species 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000454 anti-cipatory effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000013277 forecasting method Methods 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims (20)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/458,883 | 1999-12-10 | ||
US09/458,883 US7441110B1 (en) | 1999-12-10 | 1999-12-10 | Prefetching using future branch path information derived from branch prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1300006A CN1300006A (zh) | 2001-06-20 |
CN1191524C true CN1191524C (zh) | 2005-03-02 |
Family
ID=23822471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001352830A Expired - Fee Related CN1191524C (zh) | 1999-12-10 | 2000-12-08 | 预取指令的执行方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7441110B1 (zh) |
CN (1) | CN1191524C (zh) |
HK (1) | HK1035243A1 (zh) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204675A1 (en) * | 2002-04-29 | 2003-10-30 | Dover Lance W. | Method and system to retrieve information from a storage device |
US7099999B2 (en) * | 2003-09-30 | 2006-08-29 | International Business Machines Corporation | Apparatus and method for pre-fetching data to cached memory using persistent historical page table data |
US7617499B2 (en) | 2003-12-18 | 2009-11-10 | International Business Machines Corporation | Context switch instruction prefetching in multithreaded computer |
US7493621B2 (en) | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data prefetching in multithreaded computer |
US7254693B2 (en) * | 2004-12-02 | 2007-08-07 | International Business Machines Corporation | Selectively prohibiting speculative execution of conditional branch type based on instruction bit |
US20060179277A1 (en) * | 2005-02-04 | 2006-08-10 | Flachs Brian K | System and method for instruction line buffer holding a branch target buffer |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US20080088619A1 (en) * | 2006-10-17 | 2008-04-17 | Robert Allen Shearer | Branch Prediction for Acceleration Data Structure Traversal |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US7783869B2 (en) * | 2006-12-19 | 2010-08-24 | Arm Limited | Accessing branch predictions ahead of instruction fetching |
US8266381B2 (en) | 2008-02-01 | 2012-09-11 | International Business Machines Corporation | Varying an amount of data retrieved from memory based upon an instruction hint |
US8250307B2 (en) | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Sourcing differing amounts of prefetch data in response to data prefetch requests |
US8443176B2 (en) * | 2008-02-25 | 2013-05-14 | International Business Machines Corporation | Method, system, and computer program product for reducing cache memory pollution |
US8131982B2 (en) * | 2008-06-13 | 2012-03-06 | International Business Machines Corporation | Branch prediction instructions having mask values involving unloading and loading branch history data |
US20100017244A1 (en) * | 2008-07-16 | 2010-01-21 | International Business Machines Corporation | Method for organizing processes |
US7873816B2 (en) | 2008-11-20 | 2011-01-18 | International Business Machines Corporation | Pre-loading context states by inactive hardware thread in advance of context switch |
US8176254B2 (en) * | 2009-04-16 | 2012-05-08 | International Business Machines Corporation | Specifying an access hint for prefetching limited use data in a cache hierarchy |
US10338923B2 (en) * | 2009-05-05 | 2019-07-02 | International Business Machines Corporation | Branch prediction path wrong guess instruction |
US8904156B2 (en) * | 2009-10-14 | 2014-12-02 | Oracle America, Inc. | Perceptron-based branch prediction mechanism for predicting conditional branch instructions on a multithreaded processor |
EP2517100B1 (en) * | 2009-12-25 | 2018-09-26 | Shanghai Xinhao Micro-Electronics Co. Ltd. | High-performance cache system and method |
US8521999B2 (en) * | 2010-03-11 | 2013-08-27 | International Business Machines Corporation | Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history |
CN101882155B (zh) * | 2010-06-22 | 2012-07-25 | 北京北大众志微系统科技有限责任公司 | 一种文件预测准确度的统计方法及装置 |
KR101685247B1 (ko) * | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US8949579B2 (en) | 2010-10-04 | 2015-02-03 | International Business Machines Corporation | Ineffective prefetch determination and latency optimization |
KR20120036210A (ko) * | 2010-10-07 | 2012-04-17 | 삼성전자주식회사 | 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법 |
US8869113B2 (en) * | 2011-01-20 | 2014-10-21 | Fujitsu Limited | Software architecture for validating C++ programs using symbolic execution |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
TWI603198B (zh) | 2011-05-20 | 2017-10-21 | 英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
WO2012162189A1 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
US8850266B2 (en) | 2011-06-14 | 2014-09-30 | International Business Machines Corporation | Effective validation of execution units within a processor |
CN102841865B (zh) * | 2011-06-24 | 2016-02-10 | 上海芯豪微电子有限公司 | 高性能缓存系统和方法 |
TWI636362B (zh) * | 2011-06-24 | 2018-09-21 | 林正浩 | 高性能快取方法和裝置 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
WO2013101121A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Managed instruction cache prefetching |
US9146739B2 (en) * | 2012-06-14 | 2015-09-29 | International Business Machines Corporation | Branch prediction preloading |
US9104532B2 (en) * | 2012-12-14 | 2015-08-11 | International Business Machines Corporation | Sequential location accesses in an active memory device |
US8930760B2 (en) | 2012-12-17 | 2015-01-06 | International Business Machines Corporation | Validating cache coherency protocol within a processor |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
CN104050092B (zh) * | 2013-03-15 | 2018-05-01 | 上海芯豪微电子有限公司 | 一种数据缓存系统及方法 |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
KR102126671B1 (ko) * | 2014-03-13 | 2020-06-25 | 현대모비스 주식회사 | 히스토리 큐를 이용한 통신 에러 복구 장치 및 그 방법 |
US10209992B2 (en) * | 2014-04-25 | 2019-02-19 | Avago Technologies International Sales Pte. Limited | System and method for branch prediction using two branch history tables and presetting a global branch history register |
US9811464B2 (en) * | 2014-12-11 | 2017-11-07 | Intel Corporation | Apparatus and method for considering spatial locality in loading data elements for execution |
JP6457836B2 (ja) * | 2015-02-26 | 2019-01-23 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
US20160283243A1 (en) * | 2015-03-28 | 2016-09-29 | Yong-Kyu Jung | Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system |
US10223090B2 (en) * | 2015-10-23 | 2019-03-05 | Yong-Kyu Jung | Branch look-ahead system apparatus and method for branch look-ahead microprocessors |
US10296463B2 (en) * | 2016-01-07 | 2019-05-21 | Samsung Electronics Co., Ltd. | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
US10908902B2 (en) * | 2016-05-26 | 2021-02-02 | International Business Machines Corporation | Distance based branch prediction and detection of potential call and potential return instructions |
CN110022158B (zh) * | 2018-01-09 | 2021-04-09 | 华为技术有限公司 | 一种译码方法及装置 |
US11106466B2 (en) | 2018-06-18 | 2021-08-31 | International Business Machines Corporation | Decoupling of conditional branches |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
FR3098622A1 (fr) * | 2019-07-12 | 2021-01-15 | Stmicroelectronics (Grenoble 2) Sas | Procede de gestion d’instructions d’un programme contenues dans une memoire programme et circuit integre correspondant |
CN114116016B (zh) * | 2022-01-27 | 2022-04-22 | 广东省新一代通信与网络创新研究院 | 基于处理器的指令预取方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860017A (en) * | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
US5854934A (en) | 1996-08-23 | 1998-12-29 | Hewlett-Packard Company | Optimizing compiler having data cache prefetch spreading |
US6212603B1 (en) * | 1998-04-09 | 2001-04-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory |
-
1999
- 1999-12-10 US US09/458,883 patent/US7441110B1/en not_active Expired - Fee Related
-
2000
- 2000-12-08 CN CNB001352830A patent/CN1191524C/zh not_active Expired - Fee Related
-
2001
- 2001-08-21 HK HK01105871A patent/HK1035243A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1300006A (zh) | 2001-06-20 |
US7441110B1 (en) | 2008-10-21 |
HK1035243A1 (en) | 2001-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1191524C (zh) | 预取指令的执行方法和设备 | |
CN1123826C (zh) | 预取由转移历史引导的指令/数据的方法和装置 | |
US6697932B1 (en) | System and method for early resolution of low confidence branches and safe data cache accesses | |
EP2204741B1 (en) | Processor and method for using an instruction hint to prevent hardware prefetch from using certain memory accesses in prefetch calculations | |
US9875106B2 (en) | Computer processor employing instruction block exit prediction | |
CN1308826C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
CN1308825C (zh) | 用于在smt处理器中进行cpi负载平衡的系统和方法 | |
US20180165206A1 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
US6611910B2 (en) | Method for processing branch operations | |
CN101937331B (zh) | 用于自适应处理远程原子执行的方法、设备和系统 | |
CN1147794C (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
US6269438B1 (en) | Method for identifying hard-to-predict branches to enhance processor performance | |
CN1287311A (zh) | 一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 | |
KR101804908B1 (ko) | 캐시 점유도 결정 및 명령어 스케줄링을 위한 방법 및 장치 | |
US7707391B2 (en) | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors | |
US7035997B1 (en) | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors | |
EP0927394B1 (en) | A cache line branch prediction scheme that shares among sets of a set associative cache | |
US7243219B2 (en) | Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction | |
JP2000215056A (ja) | 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理 | |
CN1625733A (zh) | 将装载操作的猜测结果与寄存器值相连接的系统与方法 | |
CN1846200A (zh) | 在处理器中用于减少功耗的微变换检测缓冲器及微标记符 | |
JP2008530712A (ja) | 復帰スタックを管理する方法および装置 | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
Dubey et al. | Branch strategies: Modeling and optimization | |
US20060200615A1 (en) | Systems and methods for adaptively mapping an instruction cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: INTEL CORP . Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION Effective date: 20140522 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20140522 Address after: American California Patentee after: Intel Corporation Address before: American New York Patentee before: International Business Machines Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050302 Termination date: 20141208 |
|
EXPY | Termination of patent right or utility model |