WO2004059473A3 - Performing hardware scout threading in a system that supports simultaneous multithreading - Google Patents

Performing hardware scout threading in a system that supports simultaneous multithreading Download PDF

Info

Publication number
WO2004059473A3
WO2004059473A3 PCT/US2003/040598 US0340598W WO2004059473A3 WO 2004059473 A3 WO2004059473 A3 WO 2004059473A3 US 0340598 W US0340598 W US 0340598W WO 2004059473 A3 WO2004059473 A3 WO 2004059473A3
Authority
WO
WIPO (PCT)
Prior art keywords
processor
thread
memory reference
speculative execution
simultaneous multithreading
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.)
Ceased
Application number
PCT/US2003/040598
Other languages
French (fr)
Other versions
WO2004059473A2 (en
Inventor
Shailender Chaudhry
Marc Tremblay
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Priority to AU2003303438A priority Critical patent/AU2003303438A1/en
Priority to EP03808497A priority patent/EP1576480A2/en
Publication of WO2004059473A2 publication Critical patent/WO2004059473A2/en
Publication of WO2004059473A3 publication Critical patent/WO2004059473A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

One embodiment of the present invention provides a system that generates prefetches by speculatively executing code during stalls through a technique known as 'hardware scout threading.' The system starts by executing code within a processor. Upon encountering a stall, the system speculatively executes the code from the point of the stall, without committing results of the speculative execution to the architectural state of the processor. If the system encounters a memory reference during this speculative execution, the system determines if a target address for the memory reference can be resolved. If so, the system issues a prefetch for the memory reference to load a cache line for the memory reference into a cache within the processor. In a variation on this embodiment, the processor supports simultaneous multithreading (SMT), which enables multiple threads to execute concurrently through time-multiplexed interleaving in a single processor pipeline. In this variation, the non-speculative execution is carried out by a first thread and the speculative execution is carried out by a second thread, wherein the first thread and the second thread simultaneously execute on the processor.
PCT/US2003/040598 2002-12-24 2003-12-19 Performing hardware scout threading in a system that supports simultaneous multithreading Ceased WO2004059473A2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
AU2003303438A AU2003303438A1 (en) 2002-12-24 2003-12-19 Performing hardware scout threading in a system that supports simultaneous multithreading
EP03808497A EP1576480A2 (en) 2002-12-24 2003-12-19 Performing hardware scout threading in a system that supports simultaneous multithreading

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43649202P 2002-12-24 2002-12-24
US60/436,492 2002-12-24

Publications (2)

Publication Number Publication Date
WO2004059473A2 WO2004059473A2 (en) 2004-07-15
WO2004059473A3 true WO2004059473A3 (en) 2005-06-09

Family

ID=32682396

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/040598 Ceased WO2004059473A2 (en) 2002-12-24 2003-12-19 Performing hardware scout threading in a system that supports simultaneous multithreading

Country Status (5)

Country Link
US (1) US20040133767A1 (en)
EP (1) EP1576480A2 (en)
AU (1) AU2003303438A1 (en)
TW (1) TWI260540B (en)
WO (1) WO2004059473A2 (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US8166282B2 (en) * 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
WO2006120367A1 (en) * 2005-05-11 2006-11-16 Arm Limited A data processing apparatus and method employing multiple register sets
WO2006122990A2 (en) * 2005-05-19 2006-11-23 Intel Corporation Storage-deployment apparatus, system and method for multiple sets of speculative-type instructions
US20080016325A1 (en) * 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US7984272B2 (en) * 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
US7769987B2 (en) * 2007-06-27 2010-08-03 International Business Machines Corporation Single hot forward interconnect scheme for delayed execution pipelines
US8935489B2 (en) 2010-01-19 2015-01-13 Rambus Inc. Adaptively time-multiplexing memory references from multiple processor cores
US8601240B2 (en) * 2010-05-04 2013-12-03 Oracle International Corporation Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US8918626B2 (en) * 2011-11-10 2014-12-23 Oracle International Corporation Prefetching load data in lookahead mode and invalidating architectural registers instead of writing results for retiring instructions
US9697145B2 (en) 2015-06-12 2017-07-04 Apple Inc. Memory interface system
US11106494B2 (en) * 2018-09-28 2021-08-31 Intel Corporation Memory system architecture for multi-threaded processors
GB2580426B (en) * 2019-01-11 2021-06-30 Advanced Risc Mach Ltd Controlling use of data determined by a resolve-pending speculative operation
CN112052041B (en) * 2020-10-10 2022-03-11 乐鑫信息科技(上海)股份有限公司 Method for updating register

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020055964A1 (en) * 2000-04-19 2002-05-09 Chi-Keung Luk Software controlled pre-execution in a multithreaded processor
US20020116584A1 (en) * 2000-12-20 2002-08-22 Intel Corporation Runahead allocation protection (rap)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5393483A (en) * 1990-04-02 1995-02-28 General Electric Company High-temperature fatigue-resistant nickel based superalloy and thermomechanical process
US5395584A (en) * 1992-06-17 1995-03-07 Avco Corporation Nickel-base superalloy compositions
ATE218167T1 (en) * 1995-12-21 2002-06-15 Teledyne Ind NICKEL-CHROME-COBALT ALLOY WITH IMPROVED HIGH TEMPERATURE PROPERTIES
US5938863A (en) * 1996-12-17 1999-08-17 United Technologies Corporation Low cycle fatigue strength nickel base superalloys
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6175910B1 (en) * 1997-12-19 2001-01-16 International Business Machines Corportion Speculative instructions exection in VLIW processors
US6521175B1 (en) * 1998-02-09 2003-02-18 General Electric Co. Superalloy optimized for high-temperature performance in high-pressure turbine disks
US6468368B1 (en) * 2000-03-20 2002-10-22 Honeywell International, Inc. High strength powder metallurgy nickel base alloy
US6665776B2 (en) * 2001-01-04 2003-12-16 Hewlett-Packard Development Company L.P. Apparatus and method for speculative prefetching after data cache misses
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020055964A1 (en) * 2000-04-19 2002-05-09 Chi-Keung Luk Software controlled pre-execution in a multithreaded processor
US20020116584A1 (en) * 2000-12-20 2002-08-22 Intel Corporation Runahead allocation protection (rap)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DUNDAS J ET AL: "IMPROVING DATA CACHE PERFORMANCE BY PRE-EXECUTING INSTRUCTIONS UNDER A CACHE MISS", PROCEEDINGS OF THE 1997 INTERNATIONAL CONFERENCE ON SUPERCOMPUTING. VIENNA, JULY 7 - 11, 1997, PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON SUPERCOMPUTING, NEW YORK, ACM, US, vol. CONF. 11, 7 July 1997 (1997-07-07), pages 68 - 75, XP000755242, ISBN: 0-89791-902-5 *

Also Published As

Publication number Publication date
AU2003303438A1 (en) 2004-07-22
US20040133767A1 (en) 2004-07-08
TWI260540B (en) 2006-08-21
EP1576480A2 (en) 2005-09-21
AU2003303438A8 (en) 2004-07-22
WO2004059473A2 (en) 2004-07-15
TW200424931A (en) 2004-11-16

Similar Documents

Publication Publication Date Title
WO2004059472A3 (en) Method and apparatus for generating prefetches
US7730263B2 (en) Future execution prefetching technique and architecture
WO2004059473A3 (en) Performing hardware scout threading in a system that supports simultaneous multithreading
US9804854B2 (en) Branching to alternate code based on runahead determination
Collins et al. Pointer cache assisted prefetching
Akkary et al. A dynamic multithreading processor
US7404067B2 (en) Method and apparatus for efficient utilization for prescient instruction prefetch
US6928645B2 (en) Software-based speculative pre-computation and multithreading
US20110320787A1 (en) Indirect Branch Hint
US9740553B2 (en) Managing potentially invalid results during runahead
US20090138690A1 (en) Local and global branch prediction information storage
JP2008530713A (en) System and method for correcting branch misprediction
EP1416376A3 (en) Multi-threaded embedded processor having deterministic instruction memory
EP1576464A1 (en) In-order multithreading recycle and dispatch mechanism
US10049043B2 (en) Flushing control within a multi-threaded processor
US10628160B2 (en) Selective poisoning of data during runahead
Wang et al. Speculative Precomputation: Exploring the Use of Multithreading for Latency.
WO2003085520A3 (en) Time-multiplexed speculative multi-threading to support single-threaded applications
WO2005098615A3 (en) Using results of speculative branches to predict branches during non-speculative execution
WO2005093563A2 (en) Method and apparatus for dynamically adjusting the mode of an execute-ahead processor
US20060168432A1 (en) Branch prediction accuracy in a processor that supports speculative execution
TW201439900A (en) Instruction categorization for runahead operation
TW201439906A (en) Lazy runahead operation for a microprocessor
US7213134B2 (en) Using thread urgency in determining switch events in a temporal multithreaded processor unit
Tuck et al. Multithreaded value prediction

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2003808497

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2003808497

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP