CN101097514A - 启用同时多线程(smt)的系统及其管理方法 - Google Patents

启用同时多线程(smt)的系统及其管理方法 Download PDF

Info

Publication number
CN101097514A
CN101097514A CNA2007101048544A CN200710104854A CN101097514A CN 101097514 A CN101097514 A CN 101097514A CN A2007101048544 A CNA2007101048544 A CN A2007101048544A CN 200710104854 A CN200710104854 A CN 200710104854A CN 101097514 A CN101097514 A CN 101097514A
Authority
CN
China
Prior art keywords
processor
monopolizing
hardware thread
working load
processor group
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.)
Granted
Application number
CNA2007101048544A
Other languages
English (en)
Other versions
CN100504763C (zh
Inventor
M·G·马尔
J·B·穆迪
S·E·沃里厄尔
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 CN101097514A publication Critical patent/CN101097514A/zh
Application granted granted Critical
Publication of CN100504763C publication Critical patent/CN100504763C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

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)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

提供了一种方法、系统和程序,用于管理混合型工作负荷在启用同时多线程(SMT)的系统中的执行。在一个实施例中,在具有各自被激活用于在每个处理器上交错执行多个硬件线程的多个处理器的、启用SMT的处理系统中,对于ST工作负荷,启用SMT的处理系统的内核帮助构造独占处理器组以便模拟用于处理ST工作负荷的任务的ST模式,其中ST工作负荷在单线程处理器上运行得更为高效。内核通过选择所述独占处理器组内每一处理器一个硬件线程用以处理ST工作负荷的任务中的不同的一个任务,同时要求独占组内每一处理器的其余硬件线程空闲,从而在独占处理器组上调度ST工作负荷。

Description

启用同时多线程(SMT)的系统及其管理方法
技术领域
本发明主要地涉及处理器和计算系统,并且具体地涉及同时多线程(SMT)处理器。另外,本发明涉及在启用SMT的系统中管理单线程(ST)工作负荷和SMT工作负荷的执行,而无需将该系统的处理器在ST模式与SMT模式之间切换。
背景技术
计算技术的进步要求改进在动态改变的负荷要求之下操作的计算机系统的性能特征。一种改进计算机系统性能的方法是通过使用多个处理器,这些处理器通过并行地执行一个计算机程序的多个部分或者多个不同的计算机程序来分担处理负荷。另一种改进计算机系统性能的方法是通过使多个硬件线程能够在每个处理器上执行,其中每个线程处理一个不同的工作负荷或者一个或者多个工作负荷的不同部分。在有多个硬件线程激活的处理系统中,操作系统可以支持同时多线程(SMT),其中多个线程在每个处理器上“同时地”运行。为了工作负荷跨多个线程而运行,操作系统为SMT模式下的每个处理器激活多个硬件线程。
然而,尽管实现SMT模式改善了一些类型的工作负荷的执行时间,但是有如下其他类型的工作负荷,针对这些工作负荷,每一处理器激活仅一个硬件线程将更为高效。例如,要求作业以相同速度通过每个处理器的高性能计算(HPC)工作负荷在仅一个硬件线程在每个处理器上激活时执行得更为高效。为了适应在仅一个硬件线程在每个处理器上激活时运行得更为高效的工作负荷,操作系统可以帮助将系统中的所有处理器从在SMT模式下运行切换到在单线程(ST)模式下运行。在ST模式下,在每个处理器上仅有一个硬件线程激活。因此,为了从SMT模式切换到ST模式,在处理器级去除每个处理器上除一个硬件线程之外的所有硬件线程。
基于对于工作负荷类型而言最为高效的模式而在SMT模式与ST模式之间操作切换的一个限制在于,每次模式切换对于在处理器级去除或者激活的每一硬件线程都要求动态的重新配置事件。动态的重新配置事件之所以耗费时间是因为硬件线程被操作系统表示为逻辑处理单元。因此,对每个硬件线程的去除或者激活都要求分别在硬件级、操作系统级和应用级的中断,以便实际地禁止在硬件级的硬件线程、将可用逻辑处理器动态地重新配置成每一物理处理器仅一个逻辑处理器、并且将所有内核扩展和应用适应成仅绑定到重新配置的逻辑处理器。在每个处理器上执行动态的重新配置事件随着处理器的数目增加而进一步受限。例如,如果每个动态的重新配置事件对于每一处理器需要三秒并且有64个处理器,则启用SMT的处理器从ST模式到SMT模式或者从SMT模式到ST模式的每次切换可能需要约3分钟。
基于对于工作负荷类型而言最为高效的模式而在SMT模式与ST模式之间操作系统切换的另一个限制在于,操作系统运行SMT模式或者ST模式下的系统中的所有处理器。由于该系统在一个模式或者另一模式下操作,所以当系统在SMT模式下启用时,即使处理器可能处于空闲,但是ST工作负荷将一直等到在SMT模式下处理的工作负荷完成并且操作系统从SMT模式切换到ST模式为止。
因此有鉴于上文所述,需要一种方法、系统和程序,该方法和系统和程序用于在启用SMT的系统上运行SMT工作负荷和ST工作负荷,而无需在模式之间切换,并具有可与在ST模式下运行ST工作负荷相当的性能。此外还需要一种方法、系统和程序,该方法、系统和程序用于在运行于SMT模式下的启用SMT的系统上并发地运行SMT工作负荷和ST工作负荷的混合型工作负荷。
发明内容
因此,本发明提供对启用SMT的处理系统的改进管理。具体而言,本发明提供一种方法、系统和程序,该方法、系统和程序用于管理混合型ST工作负荷和SMT工作负荷在启用SMT的系统中的执行,而无需将该系统的处理器在ST模式与SMT模式之间切换。
在一个实施例中,在启用SMT的处理系统中,对于ST工作负荷,启用SMT的处理系统的内核帮助构造独占处理器组用以处理ST工作负荷的任务,其中ST工作负荷在单线程处理器上运行得更为高效。内核通过选择所述独占处理器组内每一处理器一个硬件线程用以处理ST工作负荷的任务中的不同的一个任务,同时要求独占组内每一处理器的其余硬件线程空闲,从而在独占处理器组上调度ST工作负荷。因此,如同独占处理器组中每个处理器的每个所选择的一个硬件线程在ST模式下运行那样,在启用SMT的处理系统上执行ST工作负荷,而无需去激活独占处理器组内每一处理器的其余空闲硬件线程。
对于独占处理器组,内核命令处理器仅从本地运行队列中搜索任务而不在全局运行队列中搜索更多任务。内核然后将所有未绑定的任务从独占处理器组的本地运行队列排放到全局运行队列,并且完成所有绑定的工作,并且将独占处理器组中的每个硬件线程设置于空闲模式。内核将ST工作负荷的任务放置于独占处理器组中每一处理器的所选择的一个硬件线程的本地运行队列,并且阻止在独占处理器组的其余硬件线程上放置任务。
在一个例子中,将独占处理器组的每个硬件线程设置于空闲模式包括将每个硬件线程传递到对每个硬件线程的本地运行队列进行检查的空闲进程,并且在检测到空的本地运行队列时设置每个硬件线程为空闲并且将每个硬件线程让与给管理程序(hypervisor)。
在一个实施例中,管理程序在收到所让与的硬件线程时将该硬件线程设置于打盹(snooze)模式,其中在打盹模式下,硬件线程没有使用处理器资源,并且仅响应于特定中断而唤醒和返回到空闲进程。当内核调度独占处理器的硬件线程之一上的任务时,内核触发中断以唤醒每一处理器的所选择的一个硬件线程。然后,空闲进程检测到用于硬件线程的调度的任务,并且触发用于硬件线程的调度器来执行任务。比如当每一处理器的其余硬件线程被定时器中断定期地唤醒并且被传递给检测到每一处理器的其余硬件线程仍然没有任务要执行的空闲进程时,每一处理器的其余硬件线程继续保持于打盹模式,处于对处理器资源最小限度的使用内。
在另一实施例中,管理程序检测用于特定处理器的所有硬件线程何时空闲,并且自动地将空闲硬件线程返回到空闲进程而不是将每个硬件线程设置于打盹模式。通过将独占组中的硬件线程立即返回到空闲进程,空闲进程持续地检查将要放置于独占处理器组的硬件线程的本地运行队列上的任务,并且一旦ST工作负荷任务被调度就快速地开始执行这些任务。一旦管理程序检测到从空闲进程让与的一个硬件线程,但是由于ST任务正在处理中所以用于处理器的其他硬件线程不再设置为空闲,管理程序将其余硬件线程设置于打盹模式并且限制触发唤醒独占处理器组的其余硬件线程的中断的类型。
与管理ST工作负荷在启用SMT的处理系统上执行的同时,内核在未包含于独占组中的处理器上处理对在启用SMT的处理系统上的SMT工作负荷的管理。此外,当ST工作负荷完成时,释放独占处理器组中包含的处理器以供内核在处理对SMT工作负荷的管理时使用。
在构造独占处理器组时,内核可以创建每一物理处理器仅有一个逻辑处理器这样的逻辑处理器组,从而仅一个对应于逻辑处理器的硬件线程存在于处理器组中。
此外,内核帮助经由应用编程接口来构造独占处理器组。内核检测可用于包含在独占处理器组中的处理器的选择,并且将可用处理器的列表返回到应用层。此外,内核使得能够利用从返回的可用处理器列表之中指定的处理器来构造独占处理器组。此外,内核使得能够根据从应用层接收的命令来构造独占处理器组,该命令指示了ST工作负荷的任务数目,其中内核创建处理器数目与ST工作负荷的任务数目相匹配的独占处理器组。
附图说明
所附权利要求书阐述了被认为是本发明之特征的新颖特征。然而,通过连同附图一起阅读说明性的实施方式的下述详细描述,将更好地理解该发明本身、其优选使用方式、其他目的及其优点,其中:
图1是描绘了本发明可以在其中实施的多处理器计算机系统的一个实施例的框图;
图2是图示了用于运行SMT工作负荷和ST工作负荷的启用SMT的处理系统的一个例子的框图,其中ST工作负荷在模拟ST模式的处理器上运行,无需切换到ST模式却具有与如同工作负荷在切换到ST模式的处理器上运行那样可当的性能;
图3是描绘了启用SMT的处理系统的一个例子的框图,该处理系统具有用于帮助实现硬件线程打盹的软件层;
图4是图示了运行混合型工作负荷的启用SMT的系统的原理图;
图5是描绘了用于在启用SMT的系统中运行ST工作负荷的过程和程序的高级逻辑流程图;
图6是图示了用于在启用SMT的系统中使用管理程序功能来控制空闲硬件线程来模拟ST模式的过程和程序的高级逻辑流程图;
图7是描绘了用于组控制器为ST工作负荷自动地创建独占处理器组的过程和程序的高级逻辑流程图;
图8是图示了用于组API与应用层进行接口通信以便帮助为ST工作负荷创建处理器组的过程和程序的高级逻辑流程图;
图9是描绘了用于管理程序控制空闲硬件线程以便帮助进行ST模式的高效模拟的过程和程序的高级逻辑流程图。
具体实施方式
现在参照附图并且具体参照图1,描绘了本发明可以在其中实施的多处理器计算机系统的一个实施例。将理解到尽管图1描绘了系统的一个实施例,但是本发明可以在包括各种计算系统和电子设备的各种系统中执行。此外将理解到图1并不意味着结构性的限制而仅仅说明在多处理器计算系统中可以包含的组件类型。
如图所示,计算机系统100包括用于在计算机系统100内传送信息的总线116或者其他通信设备。总线116优选地包括通过桥和适配器来连接的并且在计算机系统100内由多个总线控制器来控制的低延迟路径和高延迟路径。
耦合到总线116的是多个处理器(比如处理器110a-110n)、海量存储设备接口117、输入/输出(I/O)接口130、主存储器120和通信接口132。将理解到在计算机系统100中替代的和附加的组件可以连接到总线116。
海量存储设备接口117用来将比如直接存取存储设备(DASD)118这样的海量存储设备连接到计算机系统100。将理解到多种类型的海量存储设备可以连接到计算机系统100并且在逻辑上视为单个数据存储逻辑盘或者多个数据存储逻辑盘。
处理器110a-110n可以是通用处理器,比如IMB的PowerPCTM处理器,这些处理器在正常操作过程中在操作系统122、中间件(未示出)、应用软件(未示出)和可从主存储器120、海量存储设备或者其他数据存储介质中获取的其他代码的控制之下处理数据。在一个实施例中,操作系统122包括多线程控制器128和其他控制器,其包含用于对每个处理器110a-110n的硬件线程的使用进行管理的机器可执行指令,这些指令在处理器110a-110n上执行时实现流程图中描绘的操作和这里描述的其他操作。可选地,本发明的步骤可以通过包含用于执行这些步骤的硬连接逻辑的专用硬件组件来执行、或者通过编程的计算机组件和定制硬件组件的任何组合来执行。
主存储器120优选地存储数据121和操作系统122。主存储器120可以包括如随机存取存储器(RAM)的动态存储设备和如只读存储器(ROM)的静态存储设备。数据121代表任何如下数据,该数据用作对计算机系统100中任何程序的输入或者来自计算机系统100中任何程序的输出。将理解到计算机系统100可以实施逻辑寻址,该寻址将系统的所有可用存储器组织成逻辑盘而不是个体存储器组件如主存储器120和DASD 118。因此,尽管数据121和操作系统122被描绘成驻留于主存储器120中,但是本领域技术人员将认识到这些组件不是必须同时包含于主存储器120中。也应当注意,术语“存储器”在这里用来一般性地指代计算机系统100的整个逻辑存储器,并且可以包括耦合到计算机系统100的其他计算机系统的逻辑存储器。
在一个实施例中,操作系统122包括为处理器110a-110n调整多线程特征的多线程控制器128。当在SMT模式下运行处理器110a-110n时,多线程控制器128在每个处理器110a-110n上激活多个硬件线程。此外,多线程控制器128在从处理器110a-110n之中选择的处理器上模拟ST模式,并且在所选处理器上运行被设计为在单线程处理器上运行得更为高效的工作负荷,而具有与如同所选处理器被重新配置到ST模式那样相似的性能效率,但是无需花费时间将每个处理器实际地重新配置成在ST模式下操作。
I/O接口130被用来将输入接口和输出接口连接到计算机系统100。输入接口的例子包括但不限于键盘、鼠标、触摸屏和麦克风。输出接口的例子包括但不限于显示器、扬声器和打印机。经由I/O接口130连接到计算机系统100的接口如显示器可以用来允许系统管理员和用户与计算机系统100通信。重要的是注意到尽管I/O接口130提供了一种用以与计算机系统100通信的方式,但是用户也可以经由通信接口132与计算机系统100通信,这一点将会进一步描述。
重要的是注意到本发明可以作为在机器可读介质上包含的计算机程序产品来提供,该机器可读介质上存储有用来对计算机系统100编程以执行根据本发明的过程的机器可执行指令。如这里所使用的术语“机器可读介质”包括任何参与向处理器110a-110n或者计算机系统100的其他组件提供指令以供执行的介质。这样的介质可以采用许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质的普通形式例如包括软盘、软磁盘、硬盘、磁带或者任何其他磁介质、光盘ROM(CD-ROM)或者任何其他光学介质、打孔卡或者任何其他具有孔图案的物理介质、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、闪存、任何其他存储器芯片或者盒或者计算机系统100可以从中读取并且适合于存储指令的任何其他介质。在本实施例中,非易失性介质的一个例子是被描绘成计算机系统100的内部组件的海量存储设备118,但是将理解到也可由外部设备来提供。易失性介质包括动态存储器如RAM。传输介质包括同轴电缆、铜线或者光纤,包括包含总线116的接线。传输介质也可以采用声波或者光波的形式,比如在射频或者红外线数据通信过程中生成的那些。
另外,本发明可以作为计算机程序产品来下载,其中可以经由通向耦合至总线116的通信接口132的网络链路134(例如调制解调器或者网络连接)作为在载波或者其他传播介质中具体化的数据信号将程序指令从比如服务器140这样的远程计算机传送到进行请求的计算机系统100直至操作系统122。通信接口132提供耦合到网络链路134的双向数据通信,该网络链路134可以连接到例如局域网(LAN)、广域网(WAN)或者直接地连接到因特网服务提供商(ISP)。具体而言,网络链路134可以提供到比如网络102这样的一个或者多个网络的有线和/或无线网络通信。网络102可以指代使用比如传输控制协议(TCP)和网际协议(IP)这样的协议来相互通信的网络和网关的全球集合。网络102使用携带数字数据流的电信号、电磁信号或者光学信号。将数字数据携带到计算机系统100和从计算机系统100携带数字数据的通过各种网络的信号以及网络链路134上和通过通信接口132的信号是传送信息的载波的示例性形式。另外,虽然没有示出,但是通信接口132可以包括软件比如设备驱动程序、硬件如适配器和其他实现通信的控制器。
本领域技术人员将意识到图1中所示硬件可以变化。另外,本领域技术人员将意识到所示例子并不意味着针对本发明有架构性的限制。
现在参照图2,描绘了如下框图,该框图图示了用于运行SMT工作负荷和ST工作负荷的启用SMT的处理系统的一个例子,其中ST工作负荷在这样的处理器上运行,这些处理器模拟ST模式而不切换到ST模式却具有与如同工作负荷在切换到ST模式的处理器上运行那样可当的性能。在启用SMT的处理系统中,从硬件观点来看,比如处理器200和220这样的每个处理器支持多个硬件线程,比如处理器200的硬件线程202和204以及处理器220的硬件线程222和224。在一个例子中,每个硬件线程代表处理器内的不同执行单元或者中央处理单元(CPU),其中处理器内的每个执行单元共享该处理器的资源,比如资源206和226,其中共享资源可以包括但不限于高速缓存、转换预览缓存器(TLB)、寄存器和控制器。
从内核角度来看,为了在处理器200和220上实现SMT模式,就必须激活每个处理器的硬件线程,比如处理器200的硬件线程202和204以及处理器220的硬件线程222和224。内核把激活的硬件线程视为逻辑处理器,该逻辑处理器在图中被表示为代表硬件线程202和204的逻辑处理器210和212以及代表硬件线程222和224的逻辑处理器230和232。例如,多线程控制器1 28激活每个硬件线程202、204、222和224并且将操作系统配置为在逻辑处理器210、212、230和232上处理工作负荷。
在正常操作过程中,用于每个硬件线程的调度器(比如硬件线程202和204的调度器208和209以及硬件线程222和224的调度器228和229)读取该硬件线程的本地运行队列以访问下一任务用于处理。例如,本地运行队列214和216分别地与硬件线程202和204相关联,而本地运行队列234和236分别地与硬件线程222和224相关联。如果本地运行队列为空,则调度器可以在全局运行队列250中搜索下一作业。如果在全局运行队列中没有作业或者如果为调度器设置了仅搜索本地运行队列的标志而本地运行队列为空,则处理器线程调用空闲进程。在一个实施例中,正如将要进一步描述的,空闲进程可以将空闲处理器让与给管理程序应用编程接口,其中管理程序提供对空闲硬件线程的附加控制。在一个例子中,在正常操作过程中,管理程序将空闲硬件线程设置为打盹。被设置为打盹的硬件线程不使用处理器资源而调度器也不使用处理器周期,但是硬件线程可以通过中断来唤醒。将理解到附加或者替代的应用编程接口或者进程可以控制空闲硬件线程。
此外,在正常操作过程中,组控制器260可以从处理器组中的全部处理器之中指定对处理器或者逻辑处理器的选择以便处理工作负荷的任务。每组处理器与队列264中的相应工作负荷相关联。在调度器262针对队列264中的每个工作负荷创建任务时,调度器262将工作负荷的每个任务施加到所选逻辑处理器的本地运行队列。例如,逻辑处理器组可以包括逻辑处理器212、222和224,而调度器262将工作负荷的任务施加到每个本地运行队列216、234和236。在另一例子中,组可以被指定为全局运行队列250,其中调度器262可以将工作负荷的任务分配到全局运行队列250,而这些任务然后在负荷上加以平衡并且从全局运行队列250分配到可用来接收任务的本地运行队列。将理解到内核可以实施多种类型的调度策略和选项。
当内核检测到比如从启用SMT的处理系统中的应用层传递的ST工作负荷280这样的ST工作负荷时,多线程控制器128控制对独占处理器组的选择,并且指引调度器262对ST工作负荷280在独占处理器组上的调度,其是根据策略270而进行,该策略270要求为每个处理器选择仅一个逻辑处理器用以接收ST工作负荷的每个任务。
首先,在控制对独占处理器组的选择时,组控制器260实现将对处理器的选择声明为独占。在一个实施例中,当处理器在独占组中被声明时,该处理器的两个硬件线程以及因此两个逻辑处理器都在独占列表268中被自动地声明为独占。在另一例子中,处理器的每个硬件线程可以分别地被声明为独占,然而为了模拟用于运行ST工作负荷的ST模式,处理器的两个硬件线程必须被声明为独占。
当硬件线程被声明为独占时,多线程控制器128将任何未绑定的等待任务从硬件线程的本地运行队列自动地排放到全局运行队列250。接着,当硬件线程被声明为独占时,通过位选择或者进程将用于该硬件线程的调度器设置为仅针对该硬件线程的本地运行队列来搜索和访问新任务。例如,如果硬件线程202和204被声明为独占,则调度器208和209将分别地仅在本地运行队列214和216中查找新任务。由于所有任务都从本地运行队列214和216中被排放,所以调度器208和209检测到硬件线程202和204空闲,而空闲进程可以将每个空闲硬件线程让与给管理程序。
其次,在控制ST工作负荷280在独占处理器组上的调度时,调度器262检测到与队列264中的工作负荷相关联的处理器组被声明为独占,并且在将该工作负荷的任务分配到该组中的处理器时实施ST策略270。在一个例子中,ST策略270要求调度器262从独占处理器组中动态地创建对于所表示的每一处理器有一个逻辑处理器这样的组、并且将用于该工作负荷的任务放置于新逻辑处理器组的本地运行队列上。
一旦调度器262根据ST策略270选择了逻辑处理器,调度器262将ST工作负荷280的任务放置于所选逻辑处理器的本地运行队列上。接着,如果所选逻辑处理器仍然被让与给管理程序,则调度器262触发中断以唤醒所选逻辑处理器的硬件线程。当每一处理器的一个硬件线程被唤醒时,用于每个处理器的调度器仍然被设置为仅从用于硬件线程的本地运行队列中选择任务。例如,如果独占组包括处理器200,则调度器262选择逻辑处理器210和212中的仅一个,比如逻辑处理器210。调度器262将任务放置于本地运行队列214上并且如由必要则发送中断以唤醒硬件线程202。调度器208检测到硬件线程202被唤醒并且仅从本地运行队列214中访问任务。在本地运行队列216上没有放置工作并且硬件线程204继续打盹,而处理器200被标记为独占并且硬件线程202处理ST工作负荷的任务。
因此,当处理器200或者任何其他处理器被标记为独占时,多线程控制器128控制那一处理器在模拟的ST模式下的操作而无需在硬件层对硬件线程的去激活以及在内核层和应用层对逻辑处理器的动态重新配置。另外有利地,多线程控制器128在可与通过在ST模式下运行ST工作负荷所实现的性能相当的性能级别来控制被标记为独占的处理器在模拟的ST模式下的操作,其中在该ST模式下除一个硬件线程之外的所有硬件线程在每个处理器上都被激活。
将理解到,当处理器不被标记为独占时,多线程控制器128控制那一处理器在SMT模式下的正常操作。例如,如果在分配给ST工作负荷280的独占组中包含处理器200,则ST工作负荷运行在处理器200的一个硬件线程上,而其他硬件线程维持于空闲状态;同时,从应用层传递的SMT工作负荷282由调度器262来调度并且在处理器220的两个硬件线程上运行。
从应用观点来看,用户或者应用可以通过一组应用编程接口(API)266将工作负荷规定为ST工作负荷并且规定独占处理器组。在一个例子中,用户通过组API 266对处理ST工作负荷所需要的处理器数目进行指定来定义独占处理器组,并且指引组API 266在独占组上将特定工作负荷作为ST工作负荷来运行。该工作负荷作为ST工作负荷被添加到队列264。组控制器260从API 266接收对于工作负荷的组规定,并且搜索和选择可用来包含于独占组中的所需处理器数目的处理器组。在另一例子中,该应用通过组API 266来请求可用来包含于独占组中的处理器的列表。API 266返回可用来包含于独占组中的处理器的列表。该应用然后在独占组中限定可用处理器的具体范围,并且指引API 266在独占组中限定的具体处理器上将特定工作负荷作为ST工作负荷来运行。在另一例子中,API 266可以运行工作负荷来检测工作负荷中包含的线程数目并且限定处理器数目与检测到的线程数目相等的用于运行工作负荷的独占处理器组。
在该实施例中,当处理器包含于独占组中时,该处理器包含于独占列表268中。当处理器包含于独占列表268中时,组控制器260可以阻止任何其他工作负荷将工作绑定到该处理器的任何逻辑处理器。例如,组API 266可以拒绝来自如下应用的组创建请求,该应用包含到如下处理器的特定逻辑处理器的具体绑定,该处理器在独占列表268中被标记为独占。此外,组API 266不会把独占列表268中所含的处理器包含作为可用于新组的处理器。将理解到独占列表268也可以实施队列或者其他管理工具以便帮助将处理器动态调度为独占或者非独占。
重要的是注意到,尽管结合了模拟ST模式来描述本发明,但是内核也可以控制将处理器切换到ST模式并且在运行于ST模式下的处理器上运行ST工作负荷。此外,重要的是注意到,尽管结合了运行于SMT模式下的每个处理器来描述本发明,但是内核也可以运行对ST模式下的处理器的选择。另外,尽管结合了启用SMT的处理器来描述本发明,但是内核所管理的对处理器的选择可以仅提供单线程选项。
现在参照图3,框图描绘了启用SMT的处理系统的一个例子,该处理系统具有用于帮助实现硬件线程打盹的软件层。在该例中,当硬件线程的调度器(比如硬件线程202的调度器208)检测到本地运行队列为空、并且调度器208被设置为仅在本地运行队列214中搜索任务时,调度器208调用空闲进程,比如空闲进程312。在所示实施例中,空闲进程312是由内核控制的函数,然而在可选实施中每个处理器或者硬件线程可以包含不同空闲进程或者空闲进程可以在另一应用层中与内核相分离地运行。
空闲进程312针对等待作业搜索硬件线程的本地运行队列,并且如果没有作业在等待则为硬件线程设置空闲位并且将硬件线程让与给管理程序300。例如,空闲进程312为硬件线程202设置空闲位302以及为硬件线程204设置空闲位304。尽管在该实施例中空闲位302和304示出在硬件层中,但是将理解到在可选实施例中空闲位可以在比如内核层这样的替代层中设置。
在一个例子中,当硬件线程的空闲位被设置时,管理程序300将硬件线程维持于打盹模式下。当在打盹模式下时,管理程序300阻止硬件线程使用调度周期或者控制任何处理器共享资源并且仅在收到中断时才唤醒硬件线程。因此,当硬件线程被设置于打盹模式下时,管理程序300等待来自内核的中断或者等待定时器中断,以及当检测到中断时,管理程序300将硬件线程返回到空闲进程312。空闲进程312检查所唤醒的硬件线程的本地运行队列中的任务,以及如果任务正在本地运行队列中等待,则空闲进程为唤醒的硬件线程重新设置空闲位并且触发调度器以在所唤醒的硬件线程上运行任务。如果空闲进程312没有检测到等待任务,则唤醒的硬件线程的空闲位保持设置并且硬件线程再次被让与给管理程序300。
因此在该例中,在管理程序300将空闲硬件线程维持于打盹模式下的一个实施例中,当调度器262将任务放置于硬件线程202和204之一上,并且处理器200被标记为独占时,调度器262将中断发送到管理程序300以触发管理程序300把对所选硬件线程的控制返回到空闲进程312。例如,调度器262可以将任务放置于本地硬件队列214上并且将中断发送到管理程序300以唤醒硬件线程202并且把对硬件线程的控制返回到空闲进程312。空闲进程312检测到本地硬件队列214上的任务并且调用调度器208来处理该任务。硬件线程204如管理程序300所控制的那样保持于打盹模式下,并且组控制器260防止其他应用将任务绑定到硬件线程202和204中的任一个(其中处理器200被标记为独占),从而硬件线程202在模拟的ST模式下运行。
有利地,根据一个实施例,为了在模拟的ST模式下更高效地管理硬件线程,管理程序300可以根据空闲策略310来提供附加功能。具体而言,为了更高效地实施模拟的ST模式,空闲策略310可以包括用于在两个硬件线程为空闲时、以及然后在一个硬件线程激活而一个线程保持空闲时控制硬件线程的指令。
首先,空闲策略310可以指引管理程序300在一个处理器的所有硬件线程都被设置为空闲时一旦管理程序300收到所让与的硬件线程就将硬件线程返回到空闲进程312。通过在一个处理器的两个硬件线程保持空闲时将硬件线程从管理程序300立即返回到空闲进程312,当处理器200被标记为独占并且调度器262将任务放置于硬件线程202和204之一的本地运行队列(比如硬件线程202的本地运行队列214)中时,更有可能的是空闲进程312将会已经从管理程序300收到硬件线程202、将在本地运行队列214中搜索新作业,因此空闲进程312将更高效地调用调度器208以运行任务。此外,如果在将任务放置于本地运行队列214上时调度器262检测到硬件线程202仍然让与给管理程序300,则调度器262可以将中断发送到管理程序300以立即唤醒硬件线程202。在一个例子中,空闲进程312可以在它将硬件线程让与给管理程序300时设置一个位而在硬件线程从管理程序300返回时去除该位的设置,从而调度器262可以高效地检测硬件线程当前是否让与给管理程序300。
其次,空闲策略310可以指引管理程序300一旦一个硬件线程不再被设置为空闲而其他硬件线程为空闲就将其余空闲硬件线程设置于仅可通过定时器中断和规定的内核中断来中断的打盹模式。通过在处理器被标记为独占时限制唤醒打盹硬件线程的中断类型,空闲线程就被更少次数地唤醒、更少次数地触发空闲进程和使用更少的处理器资源。具体而言,在一个例子中,当处理器200被声明为独占而调度器262将任务放置于本地运行队列214上时,在空闲进程312从管理程序300收到硬件线程202时,空闲进程312检测到等待任务,去除空闲位3 02的设置并且调用调度器208来处理任务。然而在该例中,空闲进程312将继续检测到在本地运行队列216中没有任务在等待并且把对硬件线程204的控制让与给管理程序300。根据策略310,当管理程序300检测到空闲位302和304均被设置、并且然后收到空闲位302不再设置的硬件线程204的控制时,管理程序300将硬件线程204设置于打盹模式,该打盹模式具有用于中断的有限触发。在一个例子中,空闲策略310允许定时器中断,比如定时器每10毫秒中断,该每10毫秒中断触发管理程序300以将硬件线程204返回到空闲进程312。
重要的是注意到,在模拟ST模式的过程中使用管理程序300来控制空闲硬件线程是多线程控制器128在处理器中模拟ST模式的一种方式。将理解到其他启用SMT的处理系统可以实施在系统各层之中的其他类型的功能以便将硬件线程设置于这样一个状态,在该状态中它没有使用处理器资源或者调度周期直至特定类型的中断被检测到为止。此外,将理解到,可以实施其他类型的空闲策略以最小化独占硬件线程检测到等待任务所花费的时间量,并且一旦独占硬件线程在处理任务就最小化其余硬件线程搜索等待任务的次数。
现在参照图4,原理图描绘了运行混合型工作负荷的启用SMT的系统。如图所示,启用SMT的系统400包括具有激活硬件线程410和412的处理器402、具有激活硬件线程414和416的处理器404、具有激活硬件线程418和420的处理器406和具有激活硬件线程422和424的处理器408。
队列264包括设置为在独占组432上运行的ST工作负荷430和设置为在非独占组436上运行的SMT工作负荷434。在该例中,独占组432包括与硬件线程410、412、414和416相对应的逻辑处理器LP1、LP2、LP3和LP4。非独占组436包括与硬件线程418、420、424和424相对应的逻辑处理器LP5、LP6、LP7和LP8。
在该例中,调度器262通过将SMT工作负荷434的任务放置于每个硬件线程418、420、422和424的本地运行队列上来把这些任务分配于LP5、LP6、LP7和LP8以便在硬件线程418、420、422和424上运行。在该例中,“R”指示了运行来自本地和全局运行队列的任务的硬件线程。具体而言,虽然没有示出,但是SMT工作负荷434的特定任务可以绑定到特定逻辑处理器,或者调度器262可以在所选逻辑处理器上平衡负荷。
此外,在该例中,组控制器260检测独占组432并且从用于硬件线程410、414、414和416的本地运行队列中排放任何任务。每个硬件线程410、412、414和416又如“I”所示那样被设置为空闲并且让与给管理程序。在一个例子中,管理程序将每个硬件线程维持于可通过内核中断和定时器中断来中断的打盹模式。在另一例子中,由于每个独占处理器的两个硬件线程为空闲,所以管理程序可以立即将硬件线程返回到空闲进程直至用于每个独占处理器的一个硬件线程不再空闲为止。
接着,调度器262将ST策略270应用于独占组432并且选择LP1和LP4来接收ST工作负荷430的任务。调度器262将ST工作负荷430的任务放置于硬件线程410和416的本地运行队列上并且触发硬件线程410和416从管理程序返回。如在标号444所示,硬件线程410和416从管理程序返回并且处理在它们的本地运行队列上的任务,如 “R”所示。硬件线程412和414被设置于打盹模式或者在打盹模式下继续,如“S”所示,直至ST工作负荷430完成并且调度器262触发硬件线程412和414唤醒为止。具体而言,一旦ST工作负荷430完成,调度器262就将处理器402和404从独占列表268中去除,从而处理器402和404可用于接收SMT工作负荷任务或者可用来包含于用于另一ST工作负荷的另一独占组中。
如图所示,启用SMT的系统400通过留出用于运行ST工作负荷的处理器的选择为独占、并且控制每个独占处理器的仅一个线程来运行和访问来自本地运行队列的任务,从而并发地运行ST工作负荷和SMT工作负荷的混合型工作负荷。将理解到虽然结合了在启用SMT的系统400中的所有处理器来描述该例,其中所有硬件线程都被激活用来在每个处理器上实现SMT,但是在其他例子中启用SMT的系统可以包括不启用SMT的而是仅运行单线程的处理器的选择,并且独占组可以包括ST处理器的单个硬件线程。
现在参照图5,高级逻辑流程图描绘了用于在启用SMT的系统中运行ST工作负荷的过程和程序。如图所示,该过程始于块500、随后进行到块502。块502描绘了对内核是否收到ST工作负荷的判断。ST工作负荷可以通过工作负荷请求中设置的位来指示、通过被标记为独占的用于工作负荷的指定处理器组来指示,或者通过如下其他指示来指示,该其他指示即为工作负荷在启用SMT的系统上应当在模拟的ST模式下运行。此外,用户或者应用可以经由组API与内核进行接口通信并且发送ST工作负荷请求。当检测到ST工作负荷时,该过程进行到块504。
块504描绘了将处理ST工作负荷每个任务所需数目的处理器设置为独占,其中用于独占处理器的本地运行队列被清空而独占处理器的硬件线程被设置为空闲。在一个例子中,分配给ST工作负荷的处理器组指示了所需处理器的数目,而在另一例子中,分配给ST工作负荷的处理器组规定了设置为独占的特定处理器。
接着,块506图示了根据ST策略来选择每个独占处理器有一个逻辑处理器这样的新组。随后,块508描绘了将ST工作负荷任务施加到所选逻辑处理器的本地运行队列并且触发所选逻辑处理器运行ST工作负荷任务。随后,块510图示了阻止把任何任务放置于独占处理器的未选逻辑处理器的本地运行队列上。接着,块512描绘了对ST工作负荷是否完成的判断。如果ST工作负荷完成,则该过程进行到块514。块514图示了将独占设置从所选处理器中去除,并且该过程结束。
现在参照图6,高级逻辑流程图图示了用于在启用SMT的系统中使用管理程序功能来控制空闲硬件线程来模拟ST模式的过程和程序。如图所示,该过程始于块600、随后进行到块602。块602描绘了对内核是否检测到独占处理器组的判断。如果内核检测到独占处理器组,则该过程进行到块604。块604图示了将独占组中每个硬件线程的调度器设置为仅访问本地运行队列。接着,块606描绘了排放独占处理器组中硬件线程的本地运行队列。随后,块608图示了选择独占组中每一处理器的一个逻辑处理器。接着,块610描绘了将任务施加到所选处理器的本地运行队列。随后,块612图示了如果每一独占处理器的所选线程当前没有从管理程序返回到空闲进程则将中断发送到管理程序以唤醒所选线程。接着,块614描绘对ST工作负荷是否完成的判断。如果ST工作负荷完成,则该过程进行到块616。块616描绘了去除将独占硬件线程的调度器设置为仅从本地运行队列中读取的标志。接着,块618图示了将中断发送到管理程序以唤醒每一独占处理器的未选线程。
现在参照图7,高级逻辑流程图描绘了用于组控制器为ST工作负荷自动地创建独占处理器组的过程和程序。如图所示,该过程始于块700、随后进行到块702。块702图示了对内核是否收到如下ST工作负荷的判断,该ST工作负荷具有按照所需独占处理器的数目来限定的处理器组。如果收到具有处理器组数目的ST工作负荷,则该过程进行到块704。块704描绘了搜索用以在独占组中规定的可用处理器。在搜索可用处理器时,组控制器可以将绑定任务从一个处理器重新分配到另一处理器以便释放足量处理器用以仅运行ST工作负荷任务。接着,块706图示了创建具有所需处理器数目的独占处理器组。随后,块708描绘了将独占组与工作负荷相联系,并且该过程结束。
现在参照图8,高级逻辑流程图图示了用于组API与应用层进行接口通信以便帮助为ST工作负荷创建处理器组的过程和程序。如图所示,该过程始于块800,随后进行到块802。块802描绘了对收到什么命令请求的判断。如果该命令请求是针对用于独占组的可用处理器,则该过程进行到块804。块804图示了触发组控制器来搜索用以包含在独占组中的可用处理器。接着,块806描绘了向进行请求的应用返回用以包含于独占组中的可用处理器的列表。
回到块802,如果该命令请求是为了创建独占处理器组,该组具有对所列举的处理器的选择,则该过程进行到块808。块808图示了检查处理器是否可用于独占组。如果处理器不可用,则该过程进行到描绘了将错误消息发送到应用的块810,并且该过程结束。如果处理器可用,则该过程进行到块812。块812描绘了返回关于组已创建的指示符,并且该过程结束。
回到块802,如果该命令请求是为了将工作负荷作为具有独占处理器组的ST工作负荷来处理,则该过程进行到块814。块814描绘了组API将具有与处理器组相联系的工作负荷请求传递到组控制器和调度器队列,其中指示了将工作负荷作为具有独占处理器组的ST工作负荷来处理,并且该过程结束。
现在参照图9,高级逻辑流程图描绘了用于管理程序控制空闲硬件线程以便帮助实现对ST模式的高效模拟的过程和程序。在该例中,该过程始于块900、随后进行到块902。块902描绘了对管理程序是否从空闲进程收到所让与的硬件线程的判断。如果管理程序从空闲进程收到所让与的硬件线程,则该过程进行到块904。块904描绘了对同一处理器的所有其他硬件线程是否为空闲的判断。如果同一处理器的所有其他处理器线程并非都空闲,则该过程进行到块912。块912描绘了将硬件线程设置于打盹模式。接着,块914描绘了对管理程序是否检测到用于硬件线程的可触发中断的判断。如果管理程序检测到用于硬件线程的可触发中断,则该过程进行到块916。块916描绘了将打盹的硬件线程返回到空闲进程,并且该过程结束。
回到块904,如果管理程序检测到同一处理器的所有其他硬件线程为空闲,则该过程进行到块906。块906描绘了将硬件线程立即返回到空闲进程。接着块908图示了对管理程序是否检测到再次让与给管理程序的同一硬件线程的判断。如果管理程序检测到让与给管理程序的同一硬件线程,则该过程进行到块910。块910描绘了对同一处理器的一个其他硬件线程是否不再空闲的判断。如果同一处理器的一个硬件线程不再空闲,则该过程进行到块912并且如前所述那样继续。如果同一处理器的两个硬件线程仍然空闲,则该过程返回到块906。
尽管已经结合优选实施例具体示出和描述了本发明,但是本领域技术人员将理解到可以在优选实施例中做出形式和细节上的各种变化而不脱离本发明的精神和范围。

Claims (17)

1.一种用于管理启用同时多线程(SMT)的处理系统的方法,所述处理系统包括多个处理器,其中每个处理器被激活用于同时执行多个硬件线程,所述方法包括:
帮助从所述多个处理器之中构造独占处理器组,以在所述启用SMT的处理系统中处理单线程(ST)工作负荷的多个任务;以及
通过选择所述独占处理器组内每一处理器仅一个硬件线程用以处理所述ST工作负荷的所述多个任务中的不同的一个任务,同时要求所述独占处理器组内每一处理器的其余硬件线程空闲,从而在所述独占处理器组上调度所述ST工作负荷,以便如同所述独占处理器组在ST模式下运行那样,在启用SMT的处理系统上执行所述ST工作负荷,而无需去激活所述独占处理器组内每一处理器的其余空闲硬件线程。
2.根据权利要求1所述的方法,还包括:
将用于所述独占处理器组的每个硬件线程的不同调度器设置为仅执行在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上的工作;
排放在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上等待的任何任务;
响应于将所述独占处理器组的每个所述硬件线程设置于不执行任何任务的空闲模式,将所述独占处理器组的每个所述硬件线程设置于打盹模式,其中只有中断才唤醒设置于打盹模式下的每个所述硬件线程以在相关联的本地运行队列中搜索等待任务;
将所述ST工作负荷的每个不同任务施加到所述独占处理器组内每一处理器的每个所述选择的一个硬件线程的不同本地运行队列;
发送中断以唤醒每一处理器的所述选择的一个硬件线程。
3.根据权利要求1所述的方法,还包括:
将用于所述独占处理器组的每个硬件线程的不同调度器设置为仅执行在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上的工作;
排放在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上等待的任何任务;
将所述独占处理器组的每个所述硬件线程传递到空闲进程,其中所述空闲进程搜索每个本地运行队列,并且当与所述独占处理器组的每个硬件线程相关联的每个本地运行队列保持为空时,将所述独占处理器组的每个所述硬件线程让与给管理程序,其中当与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列保持为空时,所述管理程序自动地将每个所述硬件线程返回到所述空闲进程;
将所述ST工作负荷的每个不同任务施加到所述独占处理器组内每一处理器的每个所述选择的一个硬件线程的不同本地运行队列;
发送中断以指引所述管理程序返回那些当前让与给所述管理程序的每一处理器的所选择的一个硬件线程;以及
响应于检测到让与给所述管理程序的所述其余硬件线程,将每个所述其余硬件线程设置于打盹模式,其中只有中断的特定选择才唤醒设置于打盹模式下的每个硬件线程以返回到所述空闲模式。
4.根据权利要求1所述的方法,还包括:
将所述ST工作负荷的每个不同任务施加到每一处理器的每个所选择的一个硬件线程的不同本地运行队列;以及
阻止在所述独占处理器组内每一处理器的所述其余空闲硬件线程的本地运行队列的其余选择上放置任何其他任务。
5.根据权利要求1所述的方法,还包括:
在其余非独占处理器的多个激活硬件线程上并发地执行SMT工作负荷。
6.根据权利要求1所述的方法,其中调度所述ST工作负荷还包括:
检测可用于包含在所述独占处理器组中的处理器的选择;以及
使所述ST工作负荷能够请求利用从所述处理器的选择之中指定的处理器来构造所述独占处理器组。
7.根据权利要求1所述的方法,其中帮助构造独占处理器组还包括:
接收具有如下请求的ST工作负荷,所述请求要求仅按照所述ST工作负荷的所述多个任务的所述数目来限定的所述独占处理器组;
检测可用于包含在所述独占处理器组中的处理器的选择;以及
触发如下命令,所述命令是为了利用从所述处理器的选择之中指定的处理器来创建所述独占处理器组,其中所述创建的独占处理器组的处理器数目与所述多个任务的所述数目相同;以及
将所述独占处理器组与所述ST工作负荷相联系。
8.根据权利要求1所述的方法,还包括:
在所述启用SMT的处理系统的内核层接收ST工作负荷和处理器的选择,所述处理器选择中的处理器经由与应用层的应用编程接口标记为独占。
9.一种启用SMT的处理系统,包括:
多个处理器,其中每个处理器被激活用于同时执行多个硬件线程;
存储器,用于存储用于控制将工作负荷施加到所述多个处理器的内核;
所述内核用于帮助从所述多个处理器之中构造独占处理器组,以处理单线程(ST)工作负荷的多个任务;以及
所述内核用于通过选择所述独占处理器组内每一处理器仅一个硬件线程用以处理所述ST工作负荷的所述多个任务中的不同的一个任务,同时要求所述独占处理器组内每一处理器的其余硬件线程空闲,从而在所述独占处理器组上调度所述ST工作负荷,以便如同所述独占处理器组在ST模式下运行那样,在为同时执行而实现的多线程处理系统上执行所述ST工作负荷,而无需去激活所述独占处理器组内每一处理器的其余空闲硬件线程。
10.根据权利要求9所述的系统,所述内核还包括:
用于将用于所述独占处理器组的每个硬件线程的不同调度器设置为仅执行在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上的工作的装置;
用于排放在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上等待的任何任务的装置;
用于响应于将所述独占处理器组的每个所述硬件线程设置于不执行任何任务的空闲模式而将所述独占处理器组的每个所述硬件线程设置于打盹模式的装置,其中只有中断才唤醒设置于打盹模式下的每个所述硬件线程以在相关联的本地运行队列中搜索等待任务;
用于将所述ST工作负荷的每个不同任务施加到所述独占处理器组内每一处理器的每个所述选择的一个硬件线程的不同本地运行队列的装置;
用于发送中断以唤醒每一处理器的所述选择的一个硬件线程的装置。
11.根据权利要求9所述的系统,所述内核还包括:
用于将用于所述独占处理器组的每个硬件线程的不同调度器设置为仅执行在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上的工作的装置;
用于排放在与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列上等待的任何任务的装置;
用于将所述独占处理器组的每个所述硬件线程传递到空闲进程的装置,其中所述空闲进程搜索每个本地运行队列,并且当与所述独占处理器组的每个硬件线程相关联的每个本地运行队列保持为空时,将所述独占处理器组的每个所述硬件线程让与给管理程序,其中当与所述独占处理器组的每个所述硬件线程相关联的每个本地运行队列保持为空时,所述管理程序自动地将每个所述硬件线程返回到所述空闲进程;
用于将所述ST工作负荷的每个不同任务施加到所述独占处理器组内每一处理器的每个所述选择的一个硬件线程的不同本地运行队列的装置;
用于发送中断以指引所述管理程序返回那些当前让与给所述管理程序的每一处理器的所选择的一个硬件线程的装置;以及
用于响应于检测到让与给所述管理程序的所述其余硬件线程而将每个所述其余硬件线程设置于打盹模式的装置,其中只有中断的特定选择才唤醒设置于打盹模式下的每个硬件线程以返回到所述空闲模式。
12.根据权利要求9所述的系统,所述内核还包括:
用于将所述ST工作负荷的每个不同任务施加到每一处理器的每个所选择的一个硬件线程的不同本地运行队列的装置;以及
用于阻止在所述独占处理器组内每一处理器的所述其余空闲硬件线程的本地运行队列的其余选择上放置任何其他任务的装置。
13.根据权利要求9所述的系统,所述内核还包括:
用于在其余非独占处理器的多个激活硬件线程上并发地执行SMT工作负荷的装置。
14.根据权利要求9所述的系统,其中所述用于调度所述ST工作负荷的内核还包括:
用于检测可用于包含在所述独占处理器组中的处理器的选择的装置;以及
用于使所述ST工作负荷能够请求利用从所述处理器的选择之中指定的处理器来构造所述独占处理器组的装置。
15.根据权利要求9所述的系统,其中所述用于帮助构造独占处理器组的内核还包括:
用于接收具有如下请求的ST工作负荷的装置,所述请求要求仅按照所述ST工作负荷的所述多个任务的所述数目来限定的所述独占处理器组;
用于检测可用于包含在所述独占处理器组中的处理器的选择的装置;以及
用于触发如下命令的装置,所述命令是为了利用从所述处理器的选择之中指定的处理器来创建所述独占处理器组,其中所述创建的独占处理器组的处理器数目与所述多个任务的所述数目相同;以及
用于将所述独占处理器组与所述ST工作负荷相联系的装置。
16.根据权利要求9所述的系统,所述内核还包括:
用于在所述启用SMT的处理系统的内核层接收ST工作负荷和处理器的选择的装置,所述处理器选择中的处理器经由与应用层的应用编程接口标记为独占。
17.一种用于管理启用同时多线程(SMT)的处理系统的程序,所述处理系统包括各自被激活用以同时执行多个硬件线程的多个处理器,所述程序具体化于计算机可读介质中,所述程序包括使计算机执行根据权利要求1至8中任一权利要求所述的步骤的计算机可执行指令。
CNB2007101048544A 2006-06-27 2007-05-22 启用同时多线程(smt)的系统及其管理方法 Active CN100504763C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/426,814 2006-06-27
US11/426,814 US8136111B2 (en) 2006-06-27 2006-06-27 Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system

Publications (2)

Publication Number Publication Date
CN101097514A true CN101097514A (zh) 2008-01-02
CN100504763C CN100504763C (zh) 2009-06-24

Family

ID=38874906

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101048544A Active CN100504763C (zh) 2006-06-27 2007-05-22 启用同时多线程(smt)的系统及其管理方法

Country Status (2)

Country Link
US (2) US8136111B2 (zh)
CN (1) CN100504763C (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101916296A (zh) * 2010-08-29 2010-12-15 武汉天喻信息产业股份有限公司 基于文件的海量数据处理方法
WO2011063574A1 (zh) * 2009-11-27 2011-06-03 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN101609417B (zh) * 2009-07-17 2012-07-04 西安电子科技大学 基于VxWorks操作系统的混合任务集调度方法
CN103136035A (zh) * 2011-11-30 2013-06-05 国际商业机器公司 用于混合线程模式的程序的线程管理的方法和装置
CN103778016A (zh) * 2012-10-17 2014-05-07 瑞萨电子株式会社 多线程处理器
WO2015035870A1 (zh) * 2013-09-13 2015-03-19 华为终端有限公司 多cpu调度方法及装置
CN106133690A (zh) * 2014-03-27 2016-11-16 国际商业机器公司 多线程计算机系统中的线程上下文保留
CN109522048A (zh) * 2017-09-18 2019-03-26 展讯通信(上海)有限公司 一种同步多线程中断验证方法及系统
CN113475041A (zh) * 2019-03-06 2021-10-01 罗伯特·博世有限公司 用于运行tsn通信系统的方法和设备

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8136111B2 (en) 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US7698540B2 (en) * 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US7852336B2 (en) * 2006-11-28 2010-12-14 International Business Machines Corporation Dynamic determination of optimal spatial index mapping to processor thread resources
US20080167127A1 (en) * 2007-01-05 2008-07-10 Microsoft Corporation Integration of Media on Gaming Consoles
US9003410B2 (en) * 2007-01-30 2015-04-07 Hewlett-Packard Development Company, L.P. Abstracting a multithreaded processor core to a single threaded processor core
US7904703B1 (en) * 2007-04-10 2011-03-08 Marvell International Ltd. Method and apparatus for idling and waking threads by a multithread processor
US8739162B2 (en) * 2007-04-27 2014-05-27 Hewlett-Packard Development Company, L.P. Accurate measurement of multithreaded processor core utilization and logical processor utilization
JPWO2008155849A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 演算処理装置、tlb制御方法、tlb制御プログラムおよび情報処理装置
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8452947B2 (en) 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8640141B2 (en) 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8788795B2 (en) 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8250396B2 (en) 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8880853B2 (en) 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8015379B2 (en) 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8386822B2 (en) 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8683483B2 (en) * 2008-03-25 2014-03-25 Oracle America, Inc. Resource utilization monitor
US8140830B2 (en) * 2008-05-22 2012-03-20 International Business Machines Corporation Structural power reduction in multithreaded processor
CN101782862B (zh) * 2009-01-16 2013-03-13 鸿富锦精密工业(深圳)有限公司 处理器分配控制系统及其控制方法
US8230201B2 (en) 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8145723B2 (en) 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8082315B2 (en) 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US8484648B2 (en) * 2009-10-19 2013-07-09 International Business Machines Corporation Hardware multi-threading co-scheduling for parallel processing systems
US9122538B2 (en) * 2010-02-22 2015-09-01 Virtustream, Inc. Methods and apparatus related to management of unit-based virtual resources within a data center environment
US20130061231A1 (en) * 2010-05-11 2013-03-07 Dong-Qing Zhang Configurable computing architecture
US8516492B2 (en) * 2010-06-11 2013-08-20 International Business Machines Corporation Soft partitions and load balancing
US20130103212A1 (en) * 2010-06-30 2013-04-25 Nokia Corporation Method and apparatus for providing context-based power consumption control
US9086883B2 (en) 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
US9208197B2 (en) 2011-10-21 2015-12-08 International Business Machines Corporation Dynamic SMT in parallel database systems
US8806504B2 (en) * 2012-05-23 2014-08-12 Red Hat, Inc. Leveraging performance of resource aggressive applications
US9146758B2 (en) * 2012-06-29 2015-09-29 Vmware, Inc. Simultaneous probing of multiple software modules of a computer system
US10089126B2 (en) 2013-03-21 2018-10-02 Vmware, Inc. Function exit instrumentation for tail-call optimized code
US9678816B2 (en) 2012-06-29 2017-06-13 Vmware, Inc. System and method for injecting faults into code for testing thereof
US8996853B2 (en) 2012-06-29 2015-03-31 Vmware, Inc. Probing the boot sequence of a computer system
US8930956B2 (en) * 2012-08-08 2015-01-06 International Business Machines Corporation Utilizing a kernel administration hardware thread of a multi-threaded, multi-core compute node of a parallel computer
US9201708B2 (en) 2013-08-20 2015-12-01 Synopsys, Inc. Direct memory interface access in a multi-thread safe system level modeling simulation
US9817771B2 (en) 2013-08-20 2017-11-14 Synopsys, Inc. Guarded memory access in a multi-thread safe system level modeling simulation
US9075666B2 (en) * 2013-08-20 2015-07-07 Synopsys, Inc. Deferred execution in a multi-thread safe system level modeling simulation
US9558035B2 (en) * 2013-12-18 2017-01-31 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
US9740857B2 (en) 2014-01-16 2017-08-22 Fireeye, Inc. Threat-aware microvisor
US9715411B2 (en) * 2014-02-05 2017-07-25 International Business Machines Corporation Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9600314B2 (en) * 2014-05-27 2017-03-21 Red Hat Israel, Ltd. Scheduler limited virtual device polling
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9445395B1 (en) * 2015-06-16 2016-09-13 Motorola Mobility Llc Suppressing alert messages based on microphone states of connected devices
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
US9753776B2 (en) * 2015-12-01 2017-09-05 International Business Machines Corporation Simultaneous multithreading resource sharing
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10191861B1 (en) 2016-09-06 2019-01-29 Fireeye, Inc. Technique for implementing memory views using a layered virtualization architecture
US10261767B2 (en) * 2016-09-15 2019-04-16 Talend, Inc. Data integration job conversion
US10241834B2 (en) 2016-11-29 2019-03-26 International Business Machines Corporation Bandwidth aware resource optimization
US10387207B2 (en) * 2016-12-06 2019-08-20 International Business Machines Corporation Data processing
CN108243233A (zh) * 2016-12-26 2018-07-03 深圳远征技术有限公司 一种提高Web应用性能的方法及客户端
US10416432B2 (en) * 2017-09-04 2019-09-17 International Business Machines Corporation Microlens adapter for mobile devices
JP6881116B2 (ja) * 2017-07-12 2021-06-02 富士通株式会社 情報処理装置、情報処理方法およびプログラム
US10713075B2 (en) * 2017-11-30 2020-07-14 International Business Machines Corporation Workload manager control of dynamic thread mode switch
US11782713B1 (en) 2019-08-27 2023-10-10 Amazon Technologies, Inc. Security vulnerability mitigation using address space co-execution
US11243589B1 (en) 2019-09-24 2022-02-08 Amazon Technologies, Inc. Remote power button actuation device for a pre-assembled computer system integrated into a server for a virtualization service
US11853771B1 (en) 2019-09-24 2023-12-26 Amazon Technologies, Inc. Offload card based virtualization of a pre-assembled computer system integrated into a server for a virtualization service
US11698816B2 (en) * 2020-08-31 2023-07-11 Hewlett Packard Enterprise Development Lp Lock-free work-stealing thread scheduler
US11977496B1 (en) 2022-09-29 2024-05-07 Amazon Technologies, Inc. Security vulnerability mitigation using hardware-supported context-dependent address space hiding
CN117539643B (zh) * 2024-01-09 2024-03-29 上海晨钦信息科技服务有限公司 信用卡清分清算平台、批量任务处理方法及服务器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509643B2 (en) 2003-03-24 2009-03-24 Sun Microsystems, Inc. Method and apparatus for supporting asymmetric multi-threading in a computer system
US7290261B2 (en) 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7155600B2 (en) * 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7350060B2 (en) 2003-04-24 2008-03-25 International Business Machines Corporation Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7197652B2 (en) 2003-12-22 2007-03-27 International Business Machines Corporation Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring
JP4211645B2 (ja) * 2004-03-16 2009-01-21 株式会社日立製作所 専用プロセッサの備わった計算機システム
US8789051B2 (en) * 2004-11-18 2014-07-22 Hamilton Sundstrand Corporation Operating system and architecture for embedded system
US8136111B2 (en) 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609417B (zh) * 2009-07-17 2012-07-04 西安电子科技大学 基于VxWorks操作系统的混合任务集调度方法
WO2011063574A1 (zh) * 2009-11-27 2011-06-03 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN101739242B (zh) * 2009-11-27 2013-07-31 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN101916296B (zh) * 2010-08-29 2012-12-19 武汉天喻信息产业股份有限公司 基于文件的海量数据处理方法
CN101916296A (zh) * 2010-08-29 2010-12-15 武汉天喻信息产业股份有限公司 基于文件的海量数据处理方法
CN103136035B (zh) * 2011-11-30 2015-11-25 国际商业机器公司 用于混合线程模式的程序的线程管理的方法和装置
CN103136035A (zh) * 2011-11-30 2013-06-05 国际商业机器公司 用于混合线程模式的程序的线程管理的方法和装置
CN103778016A (zh) * 2012-10-17 2014-05-07 瑞萨电子株式会社 多线程处理器
CN103778016B (zh) * 2012-10-17 2018-10-02 瑞萨电子株式会社 多线程处理器
WO2015035870A1 (zh) * 2013-09-13 2015-03-19 华为终端有限公司 多cpu调度方法及装置
CN106133690A (zh) * 2014-03-27 2016-11-16 国际商业机器公司 多线程计算机系统中的线程上下文保留
CN109522048A (zh) * 2017-09-18 2019-03-26 展讯通信(上海)有限公司 一种同步多线程中断验证方法及系统
CN109522048B (zh) * 2017-09-18 2023-05-23 展讯通信(上海)有限公司 一种同步多线程中断验证方法及系统
CN113475041A (zh) * 2019-03-06 2021-10-01 罗伯特·博世有限公司 用于运行tsn通信系统的方法和设备
CN113475041B (zh) * 2019-03-06 2024-04-05 罗伯特·博世有限公司 用于运行tsn通信系统的方法和设备

Also Published As

Publication number Publication date
US20120084778A1 (en) 2012-04-05
US20070300227A1 (en) 2007-12-27
CN100504763C (zh) 2009-06-24
US8327368B2 (en) 2012-12-04
US8136111B2 (en) 2012-03-13

Similar Documents

Publication Publication Date Title
CN100504763C (zh) 启用同时多线程(smt)的系统及其管理方法
CN100349147C (zh) 最低优先级中断的处理器功率状态的知晓分配的方法、系统和装置
CN101133391B (zh) 多线程微处理器中的二分化线程调度器
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US8539498B2 (en) Interprocess resource-based dynamic scheduling system and method
CN104838359B (zh) 等待时间敏感的软件中断和线程调度
US20130290974A1 (en) Workflow control of reservations and regular jobs using a flexible job scheduler
CN102027453B (zh) 用于在虚拟环境中优化中断处理的系统和方法
CN109983440A (zh) 数据处理
CN100570564C (zh) 将用户模式线程配置为接近禁止中断优先级的方法和系统
CN101566977B (zh) 处理器访问共享数据的方法、装置及系统
US20150143380A1 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
CN106062716B (zh) 在单任务系统中实现多任务的方法、装置及单任务系统
EP1963963A2 (en) Methods and apparatus for multi-core processing with dedicated thread management
CN108920267A (zh) 任务处理装置
CN102779075A (zh) 一种在多处理器核系统中进行调度的方法、装置及系统
CN101310257A (zh) 多处理器系统和用于使计算机执行多处理器系统的控制方法的程序
US7565659B2 (en) Light weight context switching
CN102077209A (zh) 受保护模式操作调度
MY122682A (en) System and method for performing context switching and rescheduling of a processor
CN102567090A (zh) 在计算机处理器中创建执行线程的方法和系统
CN110447012A (zh) 协作虚拟处理器调度
CN100538649C (zh) 用于分发分派窗内的未使用的处理器循环的方法和系统
US10996981B2 (en) Processor zero overhead task scheduling
CN100440153C (zh) 处理器

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