WO2003058434A1 - Suspending execution of a thread in a multi-threaded - Google Patents

Suspending execution of a thread in a multi-threaded Download PDF

Info

Publication number
WO2003058434A1
WO2003058434A1 PCT/US2002/039790 US0239790W WO03058434A1 WO 2003058434 A1 WO2003058434 A1 WO 2003058434A1 US 0239790 W US0239790 W US 0239790W WO 03058434 A1 WO03058434 A1 WO 03058434A1
Authority
WO
WIPO (PCT)
Prior art keywords
thread
processor
resources
instruction
selected amount
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/US2002/039790
Other languages
English (en)
French (fr)
Inventor
Deborah Marr
Scott Rodgers
David Hill
Shivnandan Kaushik
James Crossland
David Koufaty
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to HK05107419.3A priority Critical patent/HK1075109B/xx
Priority to JP2003558678A priority patent/JP2005514698A/ja
Priority to AU2002364559A priority patent/AU2002364559A1/en
Priority to KR1020047010393A priority patent/KR100617417B1/ko
Priority to DE10297597T priority patent/DE10297597T5/de
Publication of WO2003058434A1 publication Critical patent/WO2003058434A1/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread 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
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating

Definitions

  • the present disclosure pertains to the field of processors. More particularly, the
  • present disclosure pertains to multi-threaded processors and techniques for temporarily suspending the processing of one thread in a multi-threaded processor.
  • a multi-threaded processor is capable of processing multiple different instruction
  • a primary motivating factor driving execution of multiple instruction streams within a single processor is the resulting improvement in processor utilization.
  • Highly parallel architectures have developed over the years, but it is often difficult to extract sufficient parallelism from a single stream of instructions to utilize the multiple execution units.
  • Simultaneous multi-threading processors allow multiple 25 instruction streams to execute concurrently in the different execution resources in an attempt to better utilize those resources. Multi-threading can be particularly advantageous for programs that encounter high latency delays or which often wait for events to occur. When one thread is waiting for a high latency task to complete or for a particular event, a different thread may be processed.
  • Figure 1 illustrates one embodiment of a multi-threaded processor having logic to suspend a thread in response to an instruction and to relinquish resources associated with that thread.
  • Figure 2 is a flow diagram illustrating operation of the multi-threaded processor of
  • Figure 1 illustrates various options for specifying an amount of time a multithreading processor may be suspended.
  • Figure 3b illustrates a flow diagram in which the suspended state may be exited by either the elapse of a selected amount of time or the occurrence of an event.
  • Figure 4 illustrates resource patititioning, sharing, and duplication according to one embodiment.
  • Figure 5 illustrates various design representations or formats for simulation, emulation, and fabrication of a design using the disclosed techniques.
  • the disclosed techniques may allow a programmer to implement a suspend mechanism in one thread while letting other threads harness processing resources. Thus, partitions previously dedicated to the suspended thread may be relinquished while the
  • Figure 1 illustrates one embodiment of a multi-threaded processor 100 having suspend logic 110 to allow a thread to be suspended in response to an instruction.
  • a "processor” may be formed as a single integrated circuit in some embodiments. In other 15 embodiments, multiple integrated circuits may together form a processor, and in yet other embodiments, hardware and software routines (e.g., binary translation routines) may together form the processor.
  • the suspend logic may be microcode, various forms of control logic, or other implementation of the described functionality, possibly including translation, software, etc.
  • the processor 100 is coupled to a memory 195 to allow the processor to retrieve instructions from the memory 195 and to execute these instructions.
  • the memory and the processor may be coupled in a point-to-point fashion, via bus bridges, via a memory controller or via other known or otherwise available techniques.
  • the memory 195 stores various program threads, including a first thread 196 and a second thread 198.
  • the first 25 thread 196 includes a SUSPEND instruction.
  • a bus/memory controller 120 provides instructions for execution to a front end 130.
  • the front end 130 directs the retrieval of instructions from various threads according to instruction pointers 170. Instruction pointer logic is replicated to support multiple threads.
  • the front end 130 feeds instructions into thread 5 partitionable resources 140 for further processing.
  • the thread partitionable resources 140 include logically separated partitions dedicated to particular threads when multiple threads are active within the processor 100. In one embodiment, each separate partition only contains instructions from the thread to which that portion is dedicated.
  • the thread partitionable resources 140 may include, for example, instruction queues. When in a 10 single thread mode, the partitions of the thread partitionable resources 140 may be combined to form a single large partition dedicated to the one thread.
  • the processor 100 also includes replicated state 180.
  • the replicated state 180 includes state variables sufficient to maintain context for a logical processor. With replicated state 180, multiple threads can execute without competition for state variable 15 storage. Additionally, register allocation logic may be replicated for each thread. The replicated state-related logic operates with the appropriate resource partitions to prepare incoming instructions for execution.
  • the thread partitionable resources 140 pass instructions along to shared resources
  • the shared resources 150 operate on instructions without regard to their origin.
  • scheduler and execution units may be thread-unaware shared resources.
  • the partitionable resources 140 may feed instructions from multiple threads to the shared resources 150 by alternating between the threads in a fair manner that provides continued progress on each active thread.
  • the shared resources may execute the provided instructions on the appropriate state without concern for the thread mix.
  • the shared resources 150 may be followed by another set of thread partitionable resources 160.
  • the thread partitionable resources 160 may include retirement resources such as a re-order buffer and the like. Accordingly, the thread partitionable resources 160 may ensure that execution of instructions from each thread concludes properly and that the appropriate state for that thread is appropriately updated.
  • the processor 100 of Figure 1 includes the suspend logic 110.
  • the suspend logic 110 may be programmable to provide a particular duration for which the thread is to be suspended or to provide a fixed delay.
  • the suspend 10 logic 110 includes pipeline flush logic 112 and partition/anneal logic 114.
  • the instruction set of the processor 100 includes a SUSPEND opcode (instruction) to cause thread suspension.
  • the SUSPEND opcode is received as a part of the sequence of instructions of a 15 first thread (Tl).
  • Thread Tl execution is suspended as indicated in block 210.
  • the thread suspend logic 110 includes pipeline flush logic 112, which drains the processor pipeline in order to clear all instructions as indicated in block 220.
  • partition/anneal logic 114 causes any partitioned resources associated exclusively with thread Tl to be relinquished for use by other threads as 20 indicated in block 230. These relinquished resources are annealed to form a set of larger resources for the remaining active threads to utilize.
  • processor resources may continue to be utilized, substantially without interference from
  • the processor may relinquish some or all of the partitions of partitionable resources 140 and 160 that were dedicated to Tl.
  • different permutations of the SUSPEND opcode or settings associated therewith may indicate which resources to relinquish, if any. For example, when a programmer
  • the thread may be suspended, but maintain most resource partitions. Throughput is still enhanced because the shared resources may be used exclusively by other threads during the thread suspension period. When a longer wait is anticipated, relinquishing all partitions associated with the suspended thread allows other threads to have additional resources, potentially increasing the throughput of the other
  • a test is performed to determine if the suspend state should be exited.
  • the thread may
  • a processor 300 may include a delay time (Dl) specified by a routine of microcode 310.
  • a timer or counter 312 may implement the delay and signal the microcode when the specified amount of time has elapsed.
  • one or more fuses 330 may be used to specify a delay (D2), or a register 340
  • a delay (D3) may store a delay (D3).
  • a delay (D4) may be specified by a register or storage location such as a configuration register in a bridge or memory controller 302 which is coupled to the processor.
  • a delay (D5) may also be specified by the basic input/output system (BIOS) 322.
  • the delay (D6) could be stored in a memory 304 which is coupled to the memory controller 302.
  • the processor 300 may retrieve the delay value as 5 an implicit or explicit operand to the SUSPEND opcode as it is executed by an execution unit 320. Other known or otherwise available or convenient techniques of specifying a value may be used to specify the delay as well. [0026] Referring back to Figure 2, if the delay time has not elapsed, then the timer, counter, or other delay-measuring mechanism used continues to track the delay, and the
  • thread Tl 10 thread remains suspended, as indicated by the return to block 240. If the delay time has elapsed, then thread Tl resumption begins in block 250. As indicated in block 250, the pipeline is flushed, to free resources for thread Tl. In block 260, resources are re- partitioned such that thread Tl has portions of the thread-partitionable resources with which to perform operations. Finally, thread Tl re-starts execution, as indicated in block
  • Figures 1 and 2 provide techniques to allow a thread to be suspended by a program for a particular duration.
  • other events also cause Tl to be resumed.
  • an interrupt may cause Tl to resume.
  • 3b illustrates a flow diagram for one embodiment that allows other events to cause the
  • 25 state-breaking events are detected in blocks 370 and 375.
  • block 370 tests whether any (and in some embodiments which) events are enabled to break the suspend state. If no events are enabled to break the suspend state, then the process returns to block
  • thread Tl is resumed, as indicated in block 380. Otherwise, the processor remains with thread Tl in the suspended state, and the process returns to block 365.
  • Figure 4 illustrates the partitioning, duplication, and sharing of resources according to one embodiment. Partitioned resources may be partitioned and annealed (fused back
  • duplicated resources include instruction pointer logic in the instruction fetch portion of the pipeline, register renaming logic in the rename portion of the pipeline, state variables (not shown, but referenced in various stages in the pipeline), and an interrupt controller (not shown, generally asynchronous to pipeline).
  • Shared resources in the embodiment of Figure 4 include schedulers in the schedule stage of the pipeline, a pool of registers in the register read and write portions of the pipeline, execution resources in the execute portion of the pipeline. Additionally, a trace cache and an LI data cache may be shared resources populated according to memory accesses without regard to thread context. In other embodiments, consideration of thread context
  • Partitioned resources in the embodiment of Figure 4 include two queues in queuing stages of the pipeline, a re-order buffer in a retirement stage of the pipeline, and a store buffer. Thread selection multiplexing logic alternates between the various duplicated and partitioned resources to provide reasonable access to both threads.
  • the partitionable resources may not be strictly partitioned, but rather may allow some instructions to cross partitions or may allow partitions to vary in size depending on the thread being executed in that partition or the total number of threads being executed. Additionally, different mixes of resources may be designated as shared, duplicated, and partitioned resources.
  • Figure 5 illustrates various design representations or formats for simulation, emulation, and fabrication of a design using the disclosed techniques.
  • Data representing a design may represent the design in a number of manners.
  • the hardware may be represented using a hardware description language or another functional description language which essentially provides a computerized model of how the designed hardware is expected to perform.
  • the hardware model 1110 may be stored in a storage medium 1100 such as a computer memory so that the model may be simulated using simulation software 1120 that applies a particular test suite 1130 to the hardware model 1110 to determine if it indeed functions as intended.
  • the simulation software is not recorded, captured, or contained in the medium.
  • a circuit level model with logic and/or transistor gates may be produced at some stages of the design process.
  • This model may be similarly simulated, sometimes by dedicated hardware simulators that form the model using programmable logic. This type of simulation, taken a degree further, may be an emulation technique.
  • re-configurable hardware is another embodiment that may involve a machine readable medium storing a model employing the disclosed techniques.
  • the data representing the hardware model may be the data specifying the presence or absence of various features on different mask layers for masks used to produce the integrated circuit.
  • this data representing the integrated circuit embodies the techniques disclosed in that the circuitry or logic in the data can be simulated or fabricated to perform these techniques.
  • the data may be stored in any form of a computer readable medium.
  • An optical or electrical wave 1160 modulated or otherwise generated to transmit such information, a memory 1150, or a magnetic or optical storage 1140 such as a disc may be the medium.
  • the set of bits describing the design or the particular part of the design are an article that may be sold in and of itself or used by others for further design or fabrication. Thus, techniques for suspending execution of a thread in a multi-threaded processor are disclosed.

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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
PCT/US2002/039790 2001-12-31 2002-12-11 Suspending execution of a thread in a multi-threaded Ceased WO2003058434A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
HK05107419.3A HK1075109B (en) 2001-12-31 2002-12-11 A processor and a method of suspending a thread
JP2003558678A JP2005514698A (ja) 2001-12-31 2002-12-11 マルチスレッドプロセッサのスレッドの実行のサスペンド処理
AU2002364559A AU2002364559A1 (en) 2001-12-31 2002-12-11 Suspending execution of a thread in a multi-threaded
KR1020047010393A KR100617417B1 (ko) 2001-12-31 2002-12-11 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법
DE10297597T DE10297597T5 (de) 2001-12-31 2002-12-11 Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/039,777 2001-12-31
US10/039,777 US20030126416A1 (en) 2001-12-31 2001-12-31 Suspending execution of a thread in a multi-threaded processor

Publications (1)

Publication Number Publication Date
WO2003058434A1 true WO2003058434A1 (en) 2003-07-17

Family

ID=21907295

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/039790 Ceased WO2003058434A1 (en) 2001-12-31 2002-12-11 Suspending execution of a thread in a multi-threaded

Country Status (8)

Country Link
US (1) US20030126416A1 (https=)
JP (1) JP2005514698A (https=)
KR (1) KR100617417B1 (https=)
CN (1) CN1287272C (https=)
AU (1) AU2002364559A1 (https=)
DE (1) DE10297597T5 (https=)
TW (1) TW200403588A (https=)
WO (1) WO2003058434A1 (https=)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1716482A2 (en) * 2004-02-04 2006-11-02 Intel Corporation Sharing idled processor execution resources
KR100745477B1 (ko) 2003-04-24 2007-08-02 인터내셔널 비지네스 머신즈 코포레이션 단일 스레드와 동시 멀티스레드 모드간의 멀티스레드프로세서의 동적 스위칭
US8407714B2 (en) 2007-06-20 2013-03-26 Fujitsu Limited Arithmetic device for processing one or more threads
US10740126B2 (en) 2013-03-15 2020-08-11 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US11163720B2 (en) 2006-04-12 2021-11-02 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US11204769B2 (en) 2011-03-25 2021-12-21 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US11656875B2 (en) 2013-03-15 2023-05-23 Intel Corporation Method and system for instruction block to execution unit grouping

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
JP4740851B2 (ja) * 2003-08-28 2011-08-03 ミップス テクノロジーズ インコーポレイテッド 仮想プロセッサリソースの動的構成のための機構体
US7376954B2 (en) 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7594089B2 (en) 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US8533716B2 (en) 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
WO2006120367A1 (en) * 2005-05-11 2006-11-16 Arm Limited A data processing apparatus and method employing multiple register sets
US8032737B2 (en) * 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
WO2008078329A2 (en) 2006-12-27 2008-07-03 More It Resources Ltd. Method and system for transaction resource control
US7975272B2 (en) * 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
US20080162858A1 (en) * 2007-01-03 2008-07-03 Freescale Semiconductor, Inc. Hardware-based memory initialization with software support
US8725975B2 (en) * 2007-01-03 2014-05-13 Freescale Semiconductor, Inc. Progressive memory initialization with waitpoints
US20080244242A1 (en) * 2007-04-02 2008-10-02 Abernathy Christopher M Using a Register File as Either a Rename Buffer or an Architected Register File
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
WO2008155794A1 (ja) 2007-06-19 2008-12-24 Fujitsu Limited 情報処理装置
US20090100249A1 (en) * 2007-10-10 2009-04-16 Eichenberger Alexandre E Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
US8131983B2 (en) * 2008-04-28 2012-03-06 International Business Machines Corporation Method, apparatus and article of manufacture for timeout waits on locks
US20120166777A1 (en) * 2010-12-22 2012-06-28 Advanced Micro Devices, Inc. Method and apparatus for switching threads
US8578394B2 (en) * 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
CN103389911B (zh) * 2012-05-07 2016-08-03 启碁科技股份有限公司 节省系统资源的方法及运用其方法的操作系统
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) * 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
CN103345422B (zh) * 2013-07-02 2019-01-29 厦门雅迅网络股份有限公司 一种基于Linux的多线程硬实时控制方法
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US9515901B2 (en) 2013-10-18 2016-12-06 AppDynamics, Inc. Automatic asynchronous handoff identification
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
CN107430527B (zh) * 2015-05-14 2021-01-29 株式会社日立制作所 具有服务器存储系统的计算机系统
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
WO2018165952A1 (zh) * 2017-03-16 2018-09-20 深圳大趋智能科技有限公司 iOS线程恢复的方法及装置
TWI647619B (zh) * 2017-08-29 2019-01-11 智微科技股份有限公司 用來於一電子裝置中進行硬體資源管理之方法以及對應的電子裝置
CN109471673B (zh) * 2017-09-07 2022-02-01 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置
US10481915B2 (en) * 2017-09-20 2019-11-19 International Business Machines Corporation Split store data queue design for an out-of-order processor
GB2569098B (en) * 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor
GB201717303D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0827071A2 (en) * 1996-08-27 1998-03-04 Matsushita Electric Industrial Co., Ltd. Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
WO1998043193A2 (en) * 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
JP3678759B2 (ja) * 1992-07-21 2005-08-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込を発生するための装置および割込を発生するための方法
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
SG65097A1 (en) * 1998-12-28 2001-08-21 Compaq Computer Corp Break event generation during transitions between modes of operation in a computer system
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
US7168076B2 (en) * 2001-07-13 2007-01-23 Sun Microsystems, Inc. Facilitating efficient join operations between a head thread and a speculative thread

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0827071A2 (en) * 1996-08-27 1998-03-04 Matsushita Electric Industrial Co., Ltd. Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
WO1998043193A2 (en) * 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MENDELSON A ET AL: "DESIGN ALTERNATIVES OF MULTITHREADED ARCHITECTURE", INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, PLENUM PRESS, NEW YORK, US, vol. 27, no. 3, June 1999 (1999-06-01), pages 161 - 193, XP000849200, ISSN: 0885-7458 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100745477B1 (ko) 2003-04-24 2007-08-02 인터내셔널 비지네스 머신즈 코포레이션 단일 스레드와 동시 멀티스레드 모드간의 멀티스레드프로세서의 동적 스위칭
EP1716482A2 (en) * 2004-02-04 2006-11-02 Intel Corporation Sharing idled processor execution resources
JP2007520825A (ja) * 2004-02-04 2007-07-26 インテル・コーポレーション 待機状態にあるプロセッサ実行リソースの共有
JP2012104140A (ja) * 2004-02-04 2012-05-31 Intel Corp 待機状態にあるプロセッサ実行リソースの共有
EP3048527A1 (en) * 2004-02-04 2016-07-27 Intel Corporation Sharing idled processor execution resources
US11163720B2 (en) 2006-04-12 2021-11-02 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8407714B2 (en) 2007-06-20 2013-03-26 Fujitsu Limited Arithmetic device for processing one or more threads
US11204769B2 (en) 2011-03-25 2021-12-21 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US10740126B2 (en) 2013-03-15 2020-08-11 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US11656875B2 (en) 2013-03-15 2023-05-23 Intel Corporation Method and system for instruction block to execution unit grouping

Also Published As

Publication number Publication date
TW200403588A (en) 2004-03-01
AU2002364559A1 (en) 2003-07-24
DE10297597T5 (de) 2005-01-05
HK1075109A1 (en) 2005-12-02
CN1608246A (zh) 2005-04-20
CN1287272C (zh) 2006-11-29
KR20040069352A (ko) 2004-08-05
KR100617417B1 (ko) 2006-08-30
JP2005514698A (ja) 2005-05-19
US20030126416A1 (en) 2003-07-03

Similar Documents

Publication Publication Date Title
US20030126416A1 (en) Suspending execution of a thread in a multi-threaded processor
US7363474B2 (en) Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7213093B2 (en) Queued locks using monitor-memory wait
US5974523A (en) Mechanism for efficiently overlapping multiple operand types in a microprocessor
US7610473B2 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
US20040215945A1 (en) Method for changing a thread priority in a simultaneous multithread processor
US20040210742A1 (en) Method and circuit for modifying pipeline length in a simultaneous multithread processor
WO2001040935A1 (en) Method and apparatus for constructing a pre-scheduled instruction cache
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
EP3433724B1 (en) Processing vector instructions
US20040006682A1 (en) Processor and instruction control method
Scheck et al. Co-Exploration of RISC-V Processor Microarchitectures and FreeRTOS Extensions for Lower Context-Switch Latency
HK1075109B (en) A processor and a method of suspending a thread
JP2001142702A (ja) パイプラインプロセッサにおける制御空間への高速アクセスメカニズム
GB2441903A (en) Resuming control of resources by a processor on exiting a sleep mode and disabling an associated monitor.

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE 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 NO NZ OM PH PL PT RO RU SD SE SG SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): 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 IE IT LU MC NL PT 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: 20028261585

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2003558678

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020047010393

Country of ref document: KR

RET De translation (de og part 6b)

Ref document number: 10297597

Country of ref document: DE

Date of ref document: 20050105

Kind code of ref document: P

WWE Wipo information: entry into national phase

Ref document number: 10297597

Country of ref document: DE

122 Ep: pct application non-entry in european phase
REG Reference to national code

Ref country code: DE

Ref legal event code: 8607