RU2007132861A - Энергоэффективный механизм упреждающей выборки инструкций - Google Patents

Энергоэффективный механизм упреждающей выборки инструкций Download PDF

Info

Publication number
RU2007132861A
RU2007132861A RU2007132861/09A RU2007132861A RU2007132861A RU 2007132861 A RU2007132861 A RU 2007132861A RU 2007132861/09 A RU2007132861/09 A RU 2007132861/09A RU 2007132861 A RU2007132861 A RU 2007132861A RU 2007132861 A RU2007132861 A RU 2007132861A
Authority
RU
Russia
Prior art keywords
prediction
weighted
instruction
counter
bits
Prior art date
Application number
RU2007132861/09A
Other languages
English (en)
Other versions
RU2375745C2 (ru
Inventor
Томас Эндрю САРТОРИУС (US)
Томас Эндрю САРТОРИУС
Виктор Роберт АУГСБУРГ (US)
Виктор Роберт АУГСБУРГ
Джеймс Норрис ДИФФЕНДЕРФЕР (US)
Джеймс Норрис ДИФФЕНДЕРФЕР
Джеффри Тодд БРИДЖЕС (US)
Джеффри Тодд БРИДЖЕС
Майкл Скотт МАКИЛВЕЙН (US)
Майкл Скотт МАКИЛВЕЙН
Родни Уэйн СМИТ (US)
Родни Уэйн СМИТ
Original Assignee
Квэлкомм Инкорпорейтед (US)
Квэлкомм Инкорпорейтед
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Квэлкомм Инкорпорейтед (US), Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед (US)
Publication of RU2007132861A publication Critical patent/RU2007132861A/ru
Application granted granted Critical
Publication of RU2375745C2 publication Critical patent/RU2375745C2/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

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)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Claims (18)

1. Способ упреждающей выборки инструкций в процессоре с механизмом предсказания переходов, который генерирует одно из множества взвешенных значений предсказания переходов для инструкции условного перехода, содержащий этапы, на которых для сильно взвешенных предсказаний выполняют упреждающую выборку инструкций, начиная с предсказанного следующего адреса; для слабо взвешенных предсказаний останавливают упреждающую выборку инструкций до тех пор, пока условие перехода не будет оценено.
2. Способ по п.1, в котором механизм предсказания переходов включает в себя, по меньшей мере, один счетчик с насыщением.
3. Способ по п.2, содержащий также этап, на котором комбинируют вывод упомянутого счетчика с насыщением и, по меньшей мере, одно статическое предсказание, чтобы произвести упомянутые взвешенные значения предсказания перехода.
4. Способ по п.2, в котором счетчик с насыщением содержит n битов, и способ также содержит этапы, на которых определяют сильно взвешенные предсказания, а именно те, в которых все n битов находятся в соответствии, и определяют слабо взвешенные предсказания, а именно те, в которых какие-либо биты не находятся в соответствии.
5. Способ по п.2, в котором счетчик с насыщением содержит больше двух битов, и способ также содержит этапы, на которых определяют сильно взвешенные предсказания, а именно те, в которых два самых старших бита находятся в соответствии, и определяют слабо взвешенные предсказания, а именно те, в которых два самых старших бита не находятся в соответствии.
6. Способ по п.2, в котором счетчик с насыщением содержит бинарный счетчик из n битов, и способ также содержит этапы, на которых определяют сильно взвешенные предсказания, а именно те значения счетчика, которые меньше или равны N и больше или равны (2n-1)-N; и определяют слабо взвешенные предсказания, а именно те значения счетчика, которые больше чем N и меньше чем (2n-1)-N; где N представляет собой неотрицательное целое число, которое меньше или равно (2n/2)-2.
7. Способ по п.1, в котором остановка упреждающей выборки до тех пор, пока условие перехода не оценивается, содержит остановку упреждающей выборки инструкций из памяти, устроенной вне процессора.
8. Процессор, содержащий конвейер выполнения инструкций; механизм предсказания переходов, действующий, чтобы предсказывать оценку инструкций условного перехода и выводить взвешенное значение предсказания перехода; и механизм упреждающей выборки инструкций, действующий, чтобы спекулятивно выбирать инструкции из предсказанного следующего адреса и загружать их в конвейер в ответ на сильно взвешенное предсказание от механизма предсказания переходов, и чтобы останавливать упреждающую выборку инструкций в ответ на слабо взвешенное предсказание от механизма предсказания переходов.
9. Процессор по п.8, в котором механизм предсказания переходов включает в себя, по меньшей мере, один счетчик с насыщением.
10. Процессор по п.9, в котором механизм предсказания переходов комбинирует вывод счетчика с насыщением и, по меньшей мере, одно статическое предсказание.
11. Процессор по п.9, в котором счетчик с насыщением содержит n битов и, если все n битов находятся в соответствии, то предсказание взвешивается сильно, и если какие-либо биты не находятся в соответствии, то предсказание взвешивается слабо.
12. Процессор по п.9, в котором счетчик с насыщением содержит больше двух битов и, если два самых старших бита находятся в соответствии, то предсказание взвешивается сильно, и если два самых старших бита не находятся в соответствии, то предсказание взвешивается слабо.
13. Процессор по п.8, в котором механизм упреждающей выборки инструкций останавливает упреждающую выборку инструкций в ответ на слабо взвешенное предсказание только, если предсказанный целевой адрес перехода отсутствует в кэш-памяти, хранящей инструкции.
14. Способ предотвращения замещения строки кэша при неправильно предсказанных переходах в конвейерном процессоре, содержащий этапы, на которых предсказывают оценку инструкции условного перехода посредством взвешенного значения, указывающего предсказание и степень уверенности в точности этого предсказания; вслед за инструкцией условного перехода спекулятивно выполняют доступ в кэш-память для предсказанного следующего адреса; и если доступ в кэш неуспешен и упомянутое значение предсказания указывает низкую уверенность в точности, то отменяют замещение строки кэша в ответ на неуспешный доступ.
15. Способ по п.14, содержащий также этап, на котором оценивают инструкцию условного перехода в конвейере, и последовательно выполняют доступ в кэш-память для оцененного следующего адреса, вслед за инструкцией условного перехода.
16. Способ по п.14, в котором предсказывание оценки инструкции условного перехода посредством взвешенного значения, указывающего предсказание и степень уверенности в точности этого предсказания, содержит приращение счетчика с насыщением, когда инструкция условного перехода оценивается совершенной, и убавление счетчика с насыщением, когда инструкция условного перехода оценивается несовершенной.
17. Способ упреждающей выборки инструкций в процессоре, содержащий этап, на котором для каждой инструкции условного перехода определяют классифицированное значение предсказания перехода, варьирующее от сильно совершенного до слабо совершенного или несовершенного и до сильно несовершенного, и выполняют условную упреждающую выборку инструкций на основании определенного классифицированного значения предсказания.
18. Способ по п.17, в котором если определенное классифицированное предсказание является сильно совершенным или сильно несовершенным, то выполняют упреждающую выборку инструкций по предсказанному следующему адресу, при этом, если классифицированное значение предсказания является слабо совершенным или слабо несовершенным, то откладывают выборку инструкций до тех пор, пока условие перехода не будет оценено в конвейере.
RU2007132861/09A 2005-02-03 2006-02-03 Энергоэффективный механизм упреждающей выборки инструкций RU2375745C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/050,932 US7587580B2 (en) 2005-02-03 2005-02-03 Power efficient instruction prefetch mechanism
US11/050,932 2005-02-03

Publications (2)

Publication Number Publication Date
RU2007132861A true RU2007132861A (ru) 2009-03-10
RU2375745C2 RU2375745C2 (ru) 2009-12-10

Family

ID=36480912

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2007132861/09A RU2375745C2 (ru) 2005-02-03 2006-02-03 Энергоэффективный механизм упреждающей выборки инструкций

Country Status (9)

Country Link
US (2) US7587580B2 (ru)
EP (2) EP1851621B1 (ru)
JP (2) JP5059623B2 (ru)
KR (1) KR100944139B1 (ru)
CN (1) CN100547542C (ru)
CA (1) CA2596865A1 (ru)
IL (1) IL184986A0 (ru)
RU (1) RU2375745C2 (ru)
WO (1) WO2006084288A2 (ru)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7516304B2 (en) 2005-03-10 2009-04-07 International Business Machines Corporation Parsing-enhancement facility
US20060230236A1 (en) * 2005-04-08 2006-10-12 Sun Microsystems, Inc. Method and apparatus for precognitive fetching
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US8566568B2 (en) * 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
WO2008029450A1 (fr) * 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US8027218B2 (en) 2006-10-13 2011-09-27 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US7787324B2 (en) * 2006-10-13 2010-08-31 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US7627742B2 (en) * 2007-04-10 2009-12-01 International Business Machines Corporation Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
JP5195228B2 (ja) * 2008-09-26 2013-05-08 富士通株式会社 処理プログラム、処理装置及び処理方法
JP5387819B2 (ja) * 2008-12-26 2014-01-15 日本電気株式会社 分岐予測の信頼度見積もり回路及びその方法
JP2011028540A (ja) * 2009-07-27 2011-02-10 Renesas Electronics Corp 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
CN101887400B (zh) * 2010-06-24 2015-08-12 中兴通讯股份有限公司 缓存对象老化的方法和装置
US9122486B2 (en) * 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
US9836304B2 (en) * 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
RU2475822C1 (ru) * 2011-12-08 2013-02-20 Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Подсистема памяти ядра микропроцессора
US9811341B2 (en) * 2011-12-29 2017-11-07 Intel Corporation Managed instruction cache prefetching
EP2816466B1 (en) * 2012-02-14 2019-01-16 Renesas Electronics Corporation Data processing device
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
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
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9304932B2 (en) * 2012-12-20 2016-04-05 Qualcomm Incorporated Instruction cache having a multi-bit way prediction mask
GB2513043B (en) * 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US9519586B2 (en) * 2013-01-21 2016-12-13 Qualcomm Incorporated Methods and apparatus to reduce cache pollution caused by data prefetching
WO2014143042A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Path profiling using hardware and software combination
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
GB2515076B (en) * 2013-06-13 2020-07-15 Advanced Risc Mach Ltd A data processing apparatus and method for handling retrieval of instructions from an instruction cache
JP6287650B2 (ja) * 2014-07-10 2018-03-07 富士通株式会社 シミュレーション方法、シミュレーションプログラム
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
US10474462B2 (en) 2016-02-29 2019-11-12 Qualcomm Incorporated Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
GB2548871B (en) * 2016-03-31 2019-02-06 Advanced Risc Mach Ltd Instruction prefetching
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10657057B2 (en) * 2018-04-04 2020-05-19 Nxp B.V. Secure speculative instruction execution in a data processing system
US10901743B2 (en) 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
US10489305B1 (en) * 2018-08-14 2019-11-26 Texas Instruments Incorporated Prefetch kill and revival in an instruction cache
CN110688160B (zh) * 2019-09-04 2021-11-19 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
US11288209B2 (en) * 2019-09-20 2022-03-29 Arm Limited Controlling cache entry replacement based on usefulness of cache entry
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
US11579884B2 (en) 2020-06-26 2023-02-14 Advanced Micro Devices, Inc. Instruction address translation and caching for primary and alternate branch prediction paths
US11567776B2 (en) * 2020-11-03 2023-01-31 Centaur Technology, Inc. Branch density detection for prefetcher
CN114116016B (zh) * 2022-01-27 2022-04-22 广东省新一代通信与网络创新研究院 基于处理器的指令预取方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666666A (en) * 1995-06-07 1997-09-16 Chaffen; Barry Neckwear
US5721864A (en) * 1995-09-18 1998-02-24 International Business Machines Corporation Prefetching instructions between caches
US5740417A (en) 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5930159A (en) 1996-10-17 1999-07-27 Samsung Electronics Co., Ltd Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6134633A (en) 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
JP4111645B2 (ja) * 1999-11-30 2008-07-02 富士通株式会社 キャッシュミスした後のメモリバスアクセス制御方式
KR20010051885A (ko) 1999-11-24 2001-06-25 메리 이. 보울러 피복시 박리 강도가 개선된 폴리이미드 조성물
US6681322B1 (en) * 1999-11-26 2004-01-20 Hewlett-Packard Development Company L.P. Method and apparatus for emulating an instruction set extension in a digital computer system
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
RU2189623C2 (ru) 2000-06-27 2002-09-20 Тюрин Сергей Феофентович Система для программного управления технологическим оборудованием
US6766441B2 (en) 2001-01-19 2004-07-20 International Business Machines Corporation Prefetching instructions in mis-predicted path for low confidence branches
RU2238584C2 (ru) 2002-07-31 2004-10-20 Муратшин Борис Фрилевич Способ организации персистентной кэш памяти для многозадачных, в том числе симметричных многопроцессорных компьютерных систем и устройство для его осуществления
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US20070186050A1 (en) 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US8341383B2 (en) * 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences
US8874884B2 (en) * 2011-11-04 2014-10-28 Qualcomm Incorporated Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold

Also Published As

Publication number Publication date
EP2431868A2 (en) 2012-03-21
CN101147127A (zh) 2008-03-19
CN100547542C (zh) 2009-10-07
JP5059623B2 (ja) 2012-10-24
EP2431868B1 (en) 2018-10-03
WO2006084288A2 (en) 2006-08-10
EP2431868A3 (en) 2013-01-02
US20090210663A1 (en) 2009-08-20
EP1851621B1 (en) 2013-04-03
US7587580B2 (en) 2009-09-08
RU2375745C2 (ru) 2009-12-10
JP2008529191A (ja) 2008-07-31
JP5335946B2 (ja) 2013-11-06
WO2006084288A3 (en) 2007-01-11
US20060174090A1 (en) 2006-08-03
KR20070108209A (ko) 2007-11-08
JP2012150824A (ja) 2012-08-09
KR100944139B1 (ko) 2010-02-24
EP1851621A2 (en) 2007-11-07
US8661229B2 (en) 2014-02-25
IL184986A0 (en) 2007-12-03
CA2596865A1 (en) 2006-08-10

Similar Documents

Publication Publication Date Title
RU2007132861A (ru) Энергоэффективный механизм упреждающей выборки инструкций
JP6796468B2 (ja) 分岐予測器
US7237098B2 (en) Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7278012B2 (en) Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
RU2447486C2 (ru) Представление переходов цикла в регистре предыстории переходов с помощью множества бит
US8612944B2 (en) Code evaluation for in-order processing
US20080288753A1 (en) Methods and Apparatus for Emulating the Branch Prediction Behavior of an Explicit Subroutine Call
US20070234014A1 (en) Processor apparatus for executing instructions with local slack prediction of instructions and processing method therefor
RU2009109242A (ru) Способ и устройство для выполнения инструкций процессора на основе динамически изменяемой задержки
JP5579694B2 (ja) 復帰スタックを管理する方法および装置
US20090063831A1 (en) Branch predictor for branches with asymmetric penalties
KR20160065145A (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
KR20190039290A (ko) 분기 타깃 버퍼 압축
US8751776B2 (en) Method for predicting branch target address based on previous prediction
US20060212680A1 (en) Methods and apparatus for dynamic prediction by software
CN112925632B (zh) 处理方法及装置、处理器、电子设备及存储介质
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US10353817B2 (en) Cache miss thread balancing
CN112740175A (zh) 基于加载路径历史的分支预测
US20050091479A1 (en) Branch predictor, system and method of branch prediction
US20130007424A1 (en) Cascading indirect branch instructions
US8266414B2 (en) Method for executing an instruction loop and a device having instruction loop execution capabilities
CN111124494B (zh) 一种cpu中加速无条件跳转的方法及电路
US10990403B1 (en) Predicting an outcome of an instruction following a flush
US8898426B2 (en) Target buffer address region tracking

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190204