CN1234069C - 实现高速时钟的两级线程状态多线程支持的方法和设备 - Google Patents

实现高速时钟的两级线程状态多线程支持的方法和设备 Download PDF

Info

Publication number
CN1234069C
CN1234069C CN03133047.9A CN03133047A CN1234069C CN 1234069 C CN1234069 C CN 1234069C CN 03133047 A CN03133047 A CN 03133047A CN 1234069 C CN1234069 C CN 1234069C
Authority
CN
China
Prior art keywords
thread
state
thread state
storer
active
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
Application number
CN03133047.9A
Other languages
English (en)
Other versions
CN1484144A (zh
Inventor
哈罗德·F·科斯曼
蒂莫西·J·马林斯
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1484144A publication Critical patent/CN1484144A/zh
Application granted granted Critical
Publication of CN1234069C publication Critical patent/CN1234069C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

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)
  • Executing Machine-Instructions (AREA)

Abstract

提供了一种方法和设备,用来实现高速时钟的两级线程状态多线程支持。第一级线程状态存储器存储了受限数量的可运行线程寄存器状态。受限数量小于一阈值。下一线程选择逻辑电路耦合在第一级线程状态存储器和当前执行的处理器状态之间,从受限数量的可运行线程寄存器状态中拾取下一在处理器中运行的线程。第二级线程状态存储器存储多于可运行线程寄存器状态受限数量的另一数量的线程状态。一可运行线程选择逻辑电路耦合在第一级线程状态存储器和第二级线程状态存储器之间。该可运行线程选择逻辑电路有选择地在第一级受限数量的可运行线程寄存器状态与第二级线程状态存储器之间交换线程状态。

Description

实现高速时钟的两级线程状态多线程支持的方法和设备
技术领域
本发明总体涉及数据处理领域,具体来说,涉及用来实现高速时钟的两级线程状态多线程支持的方法和设备。
背景技术
CPU内硬件效率的改善是通过把处理任务分割成可独立执行的指令序列,叫做线程。当CPU由于各种原因无法继续处理或执行其中某个线程时,CPU迅速地切换到并执行另一线程。多线程是一种改善电脑系统的整体速度或系统吞吐量的有效办法。
多线程设计技术已经成为使得处理器性能随时钟频率提高的重要手段。相比以往的处理器设计遇到的停顿状况、以致降低了性能,多线程却允许由单独的并列活动线程继续执行指令。然而,随着时钟频率继续增加,硬件里需要支持越来越多的线程、从而为处理器的执行提供持续可用的选项。
参考图1,示出了现有技术的多线程选择结构,其通常由100来表示。现有技术的多线程选择结构100是单级设计,包括完全互补的寄存器和其他状态描述硬件,用于硬件所支持的每一线程执行,如多个线程0~N寄存器状态102所示。线程0~N寄存器状态102提供了每一可运行线程0~N的状态的单独拷贝。现有技术的多线程选择结构100包括下一线程选择逻辑电路104,其耦合在多个线程0~N寄存器状态102与当前执行的处理器状态106之间,以选择下一线程状态102,此时设定特定线程运行于在空闲事件中发生改变的处理器。
随着时钟频率增加,机器里需要支持更多的线程,要求每一可运行线程0~N的状态的单独拷贝。随着时钟频率增加和线程数增加,被支持的线程数超出了某阀值界限,多线程选择结构100和选择逻辑电路104变得复杂。选择逻辑电路104从硬件支持的许多线程状态中运行下一所需线程状态102,该选择逻辑电路104变得复杂并影响了设计的峰值时钟率。
当前的设计者被迫选择两类降级之中的较轻者:①降低的时钟速度、以容纳大量线程执行必需的逻辑电路;或②受限或不够的线程状态、以在高速时钟的停顿状况期间支持指令执行。
需要一种机制,其允许一在硬件里支持大量线程、而不致影响时钟率的最佳状态。
发明内容
本发明的主要目的是提供一种方法和设备,用来实现高速时钟的两级线程状态多线程支持。本发明的其他重要目的是提供用来实现高速时钟的两级线程状态多线程支持,而基本没有负面效果、并克服了现有技术配置的许多弊病的方法和设备。
简要地说,提供了一种方法和设备,用来实现高速时钟的两级线程状态多线程支持。第一级线程状态存储器存储了受限数量的可运行线程寄存器状态。受限数量小于一阈值。下一线程选择逻辑电路耦合在第一级线程状态存储器与当前执行的处理器状态寄存器之间,从受限数量的寄存器状态中拾取下一个在处理器中执行的线程。第二级线程状态存储器存储比可运行线程寄存器状态受限数量更多的另一个数目的线程状态。一个可运行线程选择逻辑电路耦合在第一级线程状态存储器和第二级线程状态存储器之间,该线程选择逻辑电路有选择地在第一级线程状态存储器与第二级线程状态存储器之间交换线程状态。
依照发明特征,第一级线程状态存储器是高速逻辑电路,对于高速时钟率做了优化。可选项的第二级线程状态存储器是中速逻辑电路,低于高速时钟。第二级线程状态存储器存储了一些线程状态,其数量等于处理器性能峰值所需的所定数量的线程。仅在第二级线程状态存储器里呈现状态的线程不能使用处理器,但可供可运行线程选择逻辑电路快速选择,该可运行线程选择逻辑电路可用来在第一级线程状态存储器与第二级线程状态存储器之间交换线程状态。
附图说明
本发明及其上述和其他目的和优点,可以通过下面的优选实施例的详细说明来透彻理解,该优选实施例在附图里绘出,其中:
图1是现有技术的多线程选择结构的框图;
图2是依照优选实施例的两级线程选择结构的框图;
图3是流程图,示出了依照优选实施例的下一线程选择的示例操作;和
图4是流程图,示出了依照优选实施例的可运行线程选择逻辑电路的示例操作。
具体实施方式
下面参照附图说明,图2示出了优选实施例的多线程选择结构,其通常由附图标号200来表示。多线程选择结构200包括两级线程状态存储器,通常由202和204表示。第一级线程状态存储器202是高速逻辑电路,对于快速时钟率做了优化。第二级线程状态存储器204是可选择的中速逻辑电路,其操作的速度低于第一级线程状态存储器202的高速逻辑。
依照优选实施例的特征,多线程选择结构200支持硬件里的大量线程,而不影响时钟率。多线程选择结构200避免了当寄存器逻辑电路复制品的数量超出特定阈值时可能出现的时钟率受损。传统上,全部线程的执行皆在硬件里由相同组织和速度的逻辑电路来支持。然而,本发明的第一方面要求在第一级线程状态存储器202里这些寄存器逻辑电路复制品的数量限制在小于特定阈值量。这允许时钟率不受影响地增加。然而,简单地限制用于高速时钟的处理器的线程寄存器状态组可能造成性能失衡。形成不希望的停顿状况,且该状况无法克服,因为他们是因缺乏可供运行的线程而出现的。
克服这一失衡需要本发明的第二方面;在处理器的状态存储器的第二级线程状态存储器204里附加线程支持。第二级线程状态存储器204提供容量来保存需要硬件支持以达到峰值性能的全部,所有线程的状态信息。仅在第二级线程状态存储器204里呈现状态的线程不能使用处理器,但可供控制逻辑电路快速选择。该选择未必如同当从状态存储器的第一级线程状态存储器202中选择线程一样快,但是大大地快于执行保存/恢复至处理器的主内存的场景,其是一种加大状态容量的传统做法。保存于第二级线程状态存储器里的特定线程的状态信息可按需要与存入第一级线程状态存储器202的特定线程状态0~L交换。通常,这在当线程用罄了第一级线程状态存储器202、遇到处理器停顿状况时可能出现。
如图2所示,两级多线程选择结构200限制多个可运行线程0~L寄存器状态206的数量,该寄存器状态206用于第一级线程状态存储器202里多线程的处理器执行。多线程选择结构200包括下一线程选择逻辑电路208,其耦合在第一级可运行线程0~L寄存器状态206与当前执行的处理器状态210之间,以快速选择下一线程状态206,此时设定特定线程运行于在空闲事件中发生改变的处理器,其在空闲事件变化。这里实现的状态存储器的第一级202带来了高速时钟,但仅此一点而没有发明的其他方面,则可能限制设计的峰值性能。
在第二级线程状态存储器204中的第二线程存储部件212里为支持高速时钟的峰值性能所需线程总数设立了附加容量。这就克服了不这样做的峰值性能限制。不仅设有各线程的状态,还设有存储区域、以包含有用信息以确定从第二级线程状态存储器204中选择的下一线程,此时确定了与第一级寄存器状态存储器的交换是可运行线程选择逻辑电路214所需的。在处理器上仅执行来自第一级寄存器状态存储器206的线程,正如当前技术里所提供的。在处理器控制逻辑电路确定的适当时刻,可运行线程选择逻辑电路214要求线程状态在线程状态存储器的第一级线程状态存储器202与第二级线程状态存储器204之间交换。通常,这允许来自第二级线程状态存储器204的特定可运行线程、获得对在第一级寄存器空间的处理器设备的访问权限,同时保持随时重新调用停顿线程的状况、该停顿线程使用第一级资源206。
参照图3,示出了依照优选实施例的多线程选择结构200中的下一线程选择逻辑电路208的示例操作。如框300所示,下一线程选择逻辑电路208挑选优选线程作为在处理器上运行的下一线程。对于遇到的处理器停顿状况,执行校验,如决定框302所示。当遇到处理器停顿状况时,下一线程选择逻辑电路208把停顿的线程状态移至可运行线程状态寄存器206里的等待区域;从可运行线程状态寄存器206里挑选新线程,并激活处理器。接着操作返回决定框302、以校验遇到的处理器停顿状况。
参照图4,示出了依照优选实施例的可运行线程选择逻辑电路214的示例操作。首先,可运行线程选择逻辑电路214建立一组完全的线程、其可运行于处理器并提供第二线程存储部件212里的状态描述,如框400所示。接着,可运行线程选择逻辑电路214挑选受限数量L的线程以充入可运行线程状态206。对于遇到的处理器停顿状况,执行校验,如决定框406所示。当遇到处理器停顿状况时,可运行线程选择逻辑电路214评估全部线程的态势,如框408所示。接着,可运行线程选择逻辑电路214判定一组优选线程是否占据了可运行线程状态206,如框410所示。当一组优选线程占据了可运行线程状态206时,则操作返回框406、以校验遇到的处理器停顿状况。否则,当一组优选线程未占据可运行线程状态206时,则高速第一级202里的最差线程被代之以来自第二级204的可运行线程,如框412所示。接着操作返回框406、以校验遇到的处理器停顿状况。
尽管本发明是参照图示发明实施例的细节而说明的,但是这些细节并无意限制本发明的范围、本发明的范围由所附权利要求书所限定。

Claims (14)

1.用来实现高速时钟的两级线程状态多线程支持的设备,包括:
第一级线程状态存储器,用于存储受限数量的可运行线程寄存器状态;所述受限数量小于一阈值;
下一线程选择逻辑电路,耦合在所述第一级线程状态存储器与当前执行的处理器状态寄存器之间,用来从所述受限数量的可运行线程寄存器状态中拾取下一线程以运行于处理器;
第二级线程状态存储器,用来存储另一数量的线程状态;所述另一数量的线程状态多于所述受限数量的可运行线程寄存器状态;和
可运行线程选择逻辑电路,耦合在所述第一级线程状态存储器与所述第二级线程状态存储器之间,用来在所述第一级线程状态存储器与所述第二级线程状态存储器之间交换线程状态。
2.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述第一级线程状态存储器是高速逻辑电路,对于高速时钟做了优化。
3.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中在处理器上仅执行来自所述受限数量的可运行线程寄存器状态的线程。
4.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中用于存储所述另一数量的线程状态的所述第二级线程状态存储器是中速逻辑电路,所述中速低于高速时钟。
5.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述另一数量的线程状态等于设定数量的线程、以支持处理器峰值性能。
6.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述下一线程选择逻辑电路鉴别处理器停顿状况;把当前停顿的线程状态移至所述第一级线程状态存储器里的等待区域;从所述可运行线程寄存器状态里拾取下一线程,并在所述处理器上激活所述下一线程。
7.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述可运行线程选择逻辑电路建立可运行于所述处理器上的一组完全的线程并在所述第二线程状态存储器里提供状态描述。
8.如权利要求7所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述可运行线程选择逻辑电路拾取一组线程以充入所述受限数量的可运行线程寄存器状态。
9.如权利要求1所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述可运行线程选择逻辑电路鉴别处理器停顿状况;评估全部线程的势态;并校验一组优选线程以占据所述可运行线程寄存器状态。
10.如权利要求9所述的用来实现高速时钟的两级线程状态多线程支持的设备,其中所述可运行线程选择逻辑电路响应一组优选线程未占据可运行线程寄存器状态,用来自所述第二级线程状态存储器的线程来代替所述第一级线程状态存储器里的最差线程。
11.用来实现高速时钟的两级线程状态多线程支持的方法,包括以下步骤:
利用第一级线程状态存储器优选该高速时钟,以存储受限数量的可运行线程寄存器状态;
利用第二级线程状态存储器,以存储另一数量的线程状态的状态描述;所述另一数量的线程状态多于所述受限数量的可运行线程寄存器状态并等于运行于处理器设定数量的线程;
利用下一线程选择逻辑电路,仅从所述受限数量的可运行线程寄存器状态选择要在所述处理器上仅运行的下一线程;和
利用可运行线程选择逻辑电路,以有选择地在所述第一级线程状态存储器与所述第二级线程状态存储器之间交换线程状态。
12.如权利要求11所述的用来实现两级线程状态多线程支持的方法,其中选择下一线程在所述处理器上运行的步骤包括鉴别处理器停顿状况;把当前停顿的线程状态移至所述第一级线程状态存储器里的等待区域;从所述受限数量的可运行线程寄存器状态里拾取下一线程,并在所述处理器上激活所述下一线程。
13.如权利要求11所述的用来实现两级线程状态多线程支持的方法,其中有选择地在所述第一级线程状态存储器与所述第二级线程状态存储器之间交换线程状态的步骤包括鉴别处理器停顿状况;评估运行于所述处理器的全部线程的态势;并校验一组优选线程以占据所述可运行线程寄存器状态。
14.如权利要求13所述的用来实现两级线程状态多线程支持的方法,进一步包括以下步骤:响应一组优选线程未占据可运行线程寄存器状态,用来自所述第二级线程状态存储器的线程来代替所述第一级线程状态存储器里的最差线程。
CN03133047.9A 2002-09-19 2003-07-23 实现高速时钟的两级线程状态多线程支持的方法和设备 Expired - Fee Related CN1234069C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/246,937 2002-09-19
US10/246,937 US6965986B2 (en) 2002-09-19 2002-09-19 Method and apparatus for implementing two-tiered thread state multithreading support with high clock rate

Publications (2)

Publication Number Publication Date
CN1484144A CN1484144A (zh) 2004-03-24
CN1234069C true CN1234069C (zh) 2005-12-28

Family

ID=31992398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03133047.9A Expired - Fee Related CN1234069C (zh) 2002-09-19 2003-07-23 实现高速时钟的两级线程状态多线程支持的方法和设备

Country Status (4)

Country Link
US (1) US6965986B2 (zh)
JP (1) JP2004110796A (zh)
CN (1) CN1234069C (zh)
TW (1) TWI242157B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096470B2 (en) * 2002-09-19 2006-08-22 International Business Machines Corporation Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
US7890734B2 (en) 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7634774B2 (en) * 2004-09-13 2009-12-15 Integrated Device Technology, Inc. System and method of scheduling computing threads
US7827555B2 (en) * 2004-09-13 2010-11-02 Integrated Device Technology, Inc. Scheduler for a multiprocessing computing system
US7600101B2 (en) * 2005-01-13 2009-10-06 Hewlett-Packard Development Company, L.P. Multithreaded hardware systems and methods
US20070067502A1 (en) * 2005-09-22 2007-03-22 Silicon Integrated Systems Corp. Method for preventing long latency event
CN102436393B (zh) * 2006-08-24 2015-03-25 科尼龙硅公司 任务处理装置
US9342350B2 (en) * 2006-08-24 2016-05-17 Renesas Electronics Corporation System for selecting a task to be executed according to an output from a task control circuit
US9710054B2 (en) * 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
US20240095031A1 (en) * 2022-09-19 2024-03-21 Apple Inc. Thread Channel Deactivation based on Instruction Cache Misses

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19507413A1 (de) * 1994-05-06 1995-11-09 Bayer Ag Leitfähige Beschichtungen
JP3231571B2 (ja) * 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5771382A (en) * 1995-06-05 1998-06-23 International Business Machines Corporation System and method for synchronizing static variable initialization and reference under a multi-threaded computer environment
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
JP2000010800A (ja) * 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法

Also Published As

Publication number Publication date
CN1484144A (zh) 2004-03-24
US20040059896A1 (en) 2004-03-25
JP2004110796A (ja) 2004-04-08
TW200407779A (en) 2004-05-16
TWI242157B (en) 2005-10-21
US6965986B2 (en) 2005-11-15

Similar Documents

Publication Publication Date Title
US7418576B1 (en) Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
CN100428197C (zh) 双层多线程结构中为优化性能实现线程替换的方法和装置
US6311256B2 (en) Command insertion and reordering at the same storage controller
CN1234069C (zh) 实现高速时钟的两级线程状态多线程支持的方法和设备
US7302595B2 (en) Method and apparatus for dynamic power management in a processor system
CN1116639C (zh) 带任务切换的零开销计算机中断
US5603063A (en) Disk drive command queuing method using two memory devices for storing two types of commands separately first before queuing commands in the second memory device
CN1251668A (zh) 计算机高速缓存分窗
US20030046521A1 (en) Apparatus and method for switching threads in multi-threading processors`
US20060123423A1 (en) Borrowing threads as a form of load balancing in a multiprocessor data processing system
US9395995B2 (en) Retrieving instructions of a single branch, backwards short loop from a virtual loop buffer
JPH08272592A (ja) ソート方法並びにソート処理装置並びにデータ処理装置
CN1357124A (zh) 执行处理器语境切换和重调度的系统和方法
JPS62113234A (ja) レコ−ドセツト分類方法
US10175893B2 (en) Predictive scheduler for memory rank switching
JP4610322B2 (ja) 割込み処理制御の方法と装置
CN114610472A (zh) 异构计算中多进程管理方法及计算设备
CN1829971A (zh) 具有可编程优先级的中断结构且每个优先级与不同的寄存器组相关联的微控制器
CN1124546C (zh) 一种超标量处理器及在该超标量处理器中完成指令的方法
CN101561783B (zh) 一种Cache异步淘汰的方法和装置
US7093260B1 (en) Method, system, and program for saving a state of a task and executing the task by a processor in a multiprocessor system
CN1097783C (zh) 数据处理的系统和方法以及带有这类系统的通信系统
US11573824B2 (en) Data storage device and operating method thereof
CN116954721B (zh) 一种执行器多模态算子异步非阻塞分裂方法
EP4160423B1 (en) Memory device, memory device operating method, and electronic device including memory device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20051228

Termination date: 20120723