多线程处理器在单线程与并发多线程模式之间的动态切换的制作方法

文档序号:6380625阅读:297来源:国知局
专利名称:多线程处理器在单线程与并发多线程模式之间的动态切换的制作方法
技术领域
本发明涉及计算机与计算机软件,具体地说,涉及多线程处理器及其在单线程与并发(simultaneous)多线程运行模式之间的切换。
背景技术
由于当今社会越来越依赖于计算机,所以计算机技术必须在许多方面发展以满足增长的需求。一个具体的重要研究与开发课题是并行性,即并行地执行多个任务。
已经开发了许多计算机软机与硬件技术以促进增长的并行处理。从软件的观点看,已经开发了多线程操作系统与内核,其使计算机程序能够以多个“线程”并发执行,从而在实质上可以在同时执行多个任务。一般线程表示程序的独立执行路径。例如,对于电子商务计算机应用,可能将不同的线程分配给不同的顾客,从而在独立的线程中处理每一顾客的特有电子商务交易。
从软件的观点看,某些计算机实现了逻辑分区的观念,其中允许一单一的物理计算机实质上如同多个独立“虚拟”计算机(称为逻辑分区)一样运行,在该物理计算机中的各种资源(例如,处理器、内存、输入/输出设备)在各个逻辑分区中分配。每一逻辑分区执行独立的操作系统,并且从用户以及运行在该逻辑分区上的软件应用的角度看,每一逻辑分区都如同完全独立的计算机一样运行。
从硬件的观点看,计算机越来越依赖于多微处理器以提供更高的工作负荷能力。此外,已经开发的一些微处理器支持并行执行多线程的能力,从而有效地提供了与通过使用多微处理器一样所能达到的许多性能上的改善。例如,一种形式的多线程处理器支持并发地或同时地执行在硬件中的多个线程,这种功能常被称为并行多线程(SMT)。
在SMT处理器中,在该处理器中定义多个硬件线程,其中每一线程都能够执行分配给该线程的特定任务。配置适当数量的执行单元(诸如算术逻辑单元、定点数单元、加载存储单元、浮点数单元等等)以并发执行来自多个线程的指令。一般地,大部分通用寄存器(GPR)与表示体系状态(architectedstate)的专用寄存器(SPR)都为该处理器中每一硬件线程所复制。然而,其他片上资源(诸如某些SPR、片上高速缓存、地址切换缓存器)以及其他非体系资源一般在多个线程之间共享,所希望的结果是当一个或更多个硬件线程阻塞在长延迟事件时(例如在高速缓存未命中时等待),其他线程能够继续行进并且使用某些芯片资源。
对于许多工作负荷来说,SMT提高了计算机系统的总体性能(即总体吞吐量)。然而,此改善经常是以单一任务的周转时间为代价的,这是因为在SMT处理器上运行的每一任务都被要求与在同一处理器上并发运行的其他任务共享某些片上资源。例如,在其他硬件线程上运行的任务的高速缓存访问模式可能对特定任务的性能具有不利影响,而最终结果是对于每一单个任务的更长的而且经常无法预测的周转时间。但是,已经发现在某些应用中(例如科学与工程应用),对迅速且可预测的单个任务周转时间的需求可能超过对高速系统吞吐总量的需求。在这些情况下,多线程实际上可能阻碍了系统性能。
某些多线程处理器设计也支持以单线程模式执行的能力,由此实质上废止SMT并使任务能够以更加可预测的周转时间运行。然而,对这种功能的支持要求通过系统重启,或初始程序加载(LPL),以在单线程与多线程模式之间切换。然而,由于对许多高性能计算机系统的可用性要求,系统重启是非常不受欢迎的,并且对许多顾客来说常常是无法接受的。
另外,即使当需要以SMT模式运行处理器时,由于该处理器中各个硬件线程对共享资源的消耗,仍然可能引起效率不足。例如,即使当硬件线程执行空闲循环时,即没有执行有用的活动时,该硬件线程仍然在消耗着共享资源,由此从其他活动线程夺走资源,而这些活动线程可能本来能够使用这些资源的。结果,由于未执行该系统有用工作的线程对资源的此类消耗,可能引起次优性能。
人们非常希望促进这一能力对在多线程处理器中执行的硬件线程所消耗的资源,提供更多的控制;具体地,减少由于在多线程处理器中此类线程的一个或更多个之间的资源低效率分配而可能发生的效率不足。

发明内容
为处理与现有技术有关的这些以及其他问题,本发明提供了一种装置、程序产品与方法,该装置、程序产品与方法使用多线程处理器,在多个硬件线程之中,该处理器具有至少一个硬件线程能够响应于控制电路地被选择性地激活(activate)与灭活(deactivate)。另外,该控制电路还提供能力以控制非活动线程在该线程在被灭活后如何被激活,一般是通过为该线程指明重新激活条件。
通过提供控制电路,可以实现许多有用的性能改善,其中该控制电路能够控制硬件线程为活动或非活动,以及控制如何激活非活动线程。例如,根据本发明的某些实施例通过控制是否能够响应于中断地重新激活线程来支持控制如何激活非活动线程的能力。使非活动线程能够响应于中断地被激活使(例如)线程能够有效地被拿(taken)“下线(offline)”,而没有什么系统耗费,由此允许该线程所消耗的所有处理器资源可以由其他线程所使用,但仍然允许通过中断迅速高效地重新激活该被灭活线程以恢复运行。这样一来,就可能(例如)允许释放由在空闲循环中执行的线程所消耗的共享资源,以备其他线程使用,但仍然允许较迅速地重新激活该线程(以及重新获取共享资源),并且没有什么系统耗费。
相反,废止线程被响应于中断地激活的能力可以支持以下能力将共享资源释放较长时间,以利于多线程处理器中仍然为活动的任意线程的更高效的运行。另外,由于提供了防止通过中断来重新激活的保护,所以常常可以不用要求系统重启地激活或灭活线程。这样一来,即使在硬件线程长时间灭活的情况下,也很少甚至不会降低系统可用性。
表现本发明特征的这些以及其他优点与特征在权利要求书中列出,该权利要求书构成此文的另一部分。然而,为更好地理解本发明以及通过其使用所达到的优点与目的,应该参照附图以及伴随的描述文字,其中描述了本发明的示范性实施例。


图1为依据本发明的逻辑分区计算机中主要硬件组件的方框图。
图2为图1所参照的多线程处理器中所使用的共享与专用资源的方框图。
图3的流程图示出了由图1的逻辑分区计算机所执行的切换到单线程模式的例程程序流程,以将多线程处理器切换到单线程模式。
图4的流程图示出了由图1的逻辑分区计算机所执行的切换到并发多线程模式的例程程序流程,以根据本发明的方法,将多线程处理器切换到并发多线程模式。
图5的流程图示出了由图1的逻辑分区计算机所执行的逻辑处理器空闲循环的例程程序流程。
图6的流程图示出了由非逻辑分区计算机所执行的切换到单线程模式的例程程序流程,以根据本发明的方法,将多线程处理器切换到单线程模式。
图7的流程图示出了非逻辑分区计算机所执行的切换到并发多线程模式的例程程序流程,以根据本发明的方法,将多线程处理器切换到并发多线程模式。
图8的流程图示出了非逻辑分区计算机所执行的逻辑处理器空闲循环的例程程序流程。
具体实施例方式
此后所描述的实施例支持多线程处理器中所选择的硬件线程的动态激活与灭活,以及选择性地控制非活动硬件线程一旦被灭活后如何被激活。
依据本发明的多线程计算机一般为并行多线程处理器,但可替换地,也可能使用其他形式的多线程处理器。另外,在依据本发明的多线程处理器中可以支持几乎任意数目的硬件线程,而且可以用此处所描述的方法选择性地激活任意数目的此类硬件线程。例如,在所示实施例中,公开的并行多线程处理器(SMT)包括两个硬件线程,其中一个线程能够被选择性地灭活,以将该处理器在SMT与单线程(ST)模式之间切换。
对在灭活后如何激活非活动硬件线程的控制一般基于为特定线程或处理器所指定的重新激活条件,并且可以根据本发明的多种方法进行变化。例如,在所示实施例中,重新激活条件可能基于选择性使能响应于中断(诸如处理器间中断(IPI),I/O中断,定时器或递减器中断等等)的线程激活。然而,应该理解可替换地可以使用限制线程被激活的能力的其他控制。
现在转到附图,其中几个图中的相同的数字表示相同的部件,图1为依据本发明的逻辑分区计算机中主要硬件组件的方框图。计算机10一般表示(例如)大量多用户计算机(诸如网络服务器、中档计算机、大型机等等)中的任意一种(例如IBM eServer计算机)。然而,应该理解本发明可以实现于其他计算机与数据处理系统中,例如在单用户计算机(诸如工作站、台式机、便携机等等)或其他可编程电子设备(例如具备嵌入式控制器等等)。另外,本发明可以结合非逻辑分区的多线程计算机使用。
计算机10一般包括一个或更多个处理器12,其借助总线16与存储器14相连。每一处理器12可以实现为单线程处理器,或者实现为多线程处理器,例如处理器12a,其显示具备多个硬件线程18。大体来讲,多线程处理器18中的每一硬件线程18都被位于该计算机中的软件当作独立的处理器来对待。在这方面,为此公开的目的,将把单线程处理器考虑为具备单一硬件线程,即单一独立的执行单位。然而应该理解,基于软件的多线程或多任务可以结合单线程与多线程处理器使用,以进一步支持该计算机中多个任务的并行性能。
另外,也如图1所示,处理器12的一个或多个(例如12b)可以实现为服务处理器,其被用来运行专门的固件代码以管理系统初始程序加载(IPL),以及监视、诊断与配置系统硬件。一般地,计算机10将包括一个服务处理器与多个系统处理器,其被用来执行位于该计算机内的操作系统与应用,然而,本发明并不局限于该特定实现。在某些实现中,服务处理器可能以不同于通过总线16的方式连接到该计算机中的各个其他硬件组件。
存储器14可以包括一或更多级的存储器设备,例如基于DRAM的主存储器,以及一或多级数据、指令和/或组合高速缓存,其中某些高速缓存或者服务于单个处理器或者服务于多个处理器,如从现有技术所知。另外,存储器14通过总线20连接到多种外部设备,例如一个或更多网络适配器22(用于该计算机与(多个)网络24相连接),一个或更多存储控制器26(用于该计算机与一个或更多存储设备28相连接),以及一个或更多工作站控制器30(用于借助多个工作站适配器与一个或更多终端或工作站32相连接)。
图1还详细示出了在计算机10上实现逻辑分区计算环境时所使用的主要软件组件与资源,包括多个逻辑分区24,其由分区管理器或超级管理器36管理。如从现有技术所知,可以支持任意数目的逻辑分区,而且当从该计算机上增加或移除逻辑分区时,任意时间位于该计算机内的逻辑分区的数目可以动态改变。
在所示基于IBM eServer的实现中,分区管理器2包括两层程序代码。此处第一层被称为不可分派部分28,在计算机10的固件中或者许可内部代码(LIC)实现,其被用来提供到各种硬件组件的低级接口,同时将高层(例如操作系统)与硬件访问的细节隔离。该固件也可以与诸如服务处理器12b的服务处理器通信。不可分派部分38为计算机10提供许多低级分区管理功能,例如页表管理等等。不可分派部分38还没有任务的概念,并且主要通过来自软件高层的函数调用访问。
分区管理器36的第二层程序代码此处被称为可分派部分40。与没有任务的概念、运行时关闭重定位和主要通过来自软件高层的函数调用访问的不可分派部分38相比,可分派部分40具有任务的概念(如同所有操作系统一样),并且运行时打开重定位。一般地,可分派部分以大致与分区相同的方式执行,只是它向用户隐藏。一般地,可分派部分管理较高级的分区管理操作,诸如生成与删除分区,并发I/O维护,分配处理器、存储器以及其他硬件资源给各个分区34等等。
一般地,静态地和/或动态地向每一逻辑分区34分配计算机10中可用资源的一部分。例如,可以向每一分区分配一个或更多处理器12和/或一个或更多硬件线程18,以及可用存储器空间的一部分。逻辑分区可以共享诸如处理器的特定硬件资源,从而给定处理器由多于一个逻辑分区所使用。可替换地,可以将硬件资源一次只分配给一个逻辑分区。
一般地,以从现有技术所知的方法,将其他资源(例如海量存储器,备份存储器、用户输入、网络连接及其I/O适配器)分配给一个或多个逻辑分区。可以以多种方法分配资源,例如对于多个逻辑分区共享同一总线上的资源,以逐总线为依据,或者以逐资源为依据。某些资源甚至可以一次被分配给多个逻辑分区。
每一逻辑分区34使用操作系统42,该操作系统42以与非逻辑分区计算机的操作系统相同的方式,控制该逻辑分区的基本操作。例如,每一操作系统42可以使用OS/400操作系统实现,该操作系统可以从国际商用机器公司得到。
每一逻辑分区34在分离的或独立的存储器空间中执行,由此从在每一这些逻辑分区上运行的用户应用44的角度看,每一逻辑分区的反应方式都大致等同于独立的非分区计算机。这样一来,为在分区环境中使用,用户应用一般不需要任何特殊的配置。
由于逻辑分区34作为独立的虚拟计算机的性质,所以可能希望支持分区间通信,以使逻辑分区能够相互通信,有如这些逻辑分区位于独立的物理计算机上一样。这样一来,在某些实现中,可能希望在不可分派部分38支持虚拟局域网(LAN),以使逻辑分区34中能够通过诸如以太网协议的网络协议进行相互通信。根据本发明,也可以支持支持分区间通信的其他方法。
应该理解,根据本发明,可以使用其他逻辑分区环境。例如,不同于使用与所有分区34独立的可分派部分40,可替换地,可分派部分的功能可以融入一个或更多逻辑分区之中。
一般地,被执行以实现本发明实施例的例程此处被称为“计算机程序代码”或简称为“程序代码”,而不管这些例程被实现为操作系统的部分,或者特定应用、组件、程序、对象、模块或指令序列甚至其子集。程序代码一般包括一或多条指令,这些指令在不同的时间位于计算机的各种存储器与存储设备内,而且这些指令当用计算机中的一个或更多处理器所读取并执行时,使该计算机执行实现本发明各个方面的步骤或元素所需的步骤。另外,虽然已经而且此后将在功能完备的计算机与计算机系统的背景下描述本发明,但本领域的技术人员应该理解本发明的各种实施例能够作为程序产品以各种形式分发,而且不管用来实际承载该分发的信号承载介质的具体类型,都可以同样方式应用本发明。信号承载介质的例子包括但不局限于可记录盘片、硬盘驱动器、磁带、光盘(例如CD-ROM、DVD等等)等等,以及传输类型介质,诸如数字与模拟通信链接。
另外,此后描述的各种程序可以基于它们在本发明的特定实施例中所实现的应用来标识。然而,应该理解以下任何特定的程序术语只是为了方便而使用,因此本发明不应该只局限于这些术语所标识和/或暗示的具体应用。另外,由于计算机程序一般可以用无限种方式组织为例程、子程序、方法、模块、对象等等,并且程序功能可以用各种方式在一般计算机内驻留的各种软件层次(例如操作系统、函数库、API、应用、applet等等)之间分配,所以应该理解本发明并不局限于此处所描述的特定组织与程序功能分配。
本领域的技术人员应该理解图1中所示的示范性实施例不是用来限定本发明的。本领域的技术人员应该理解可以在不脱离该基本范围的前提下使用可替换的硬件和/或软件环境。
如上所述,可以使用所示实施例处理使用多线程处理器的系统中可能发生的多种问题。一个此类问题的发生是以下的结果当在多线程环境中执行时,单个任务的更缓慢的、不确定的周转时间。已经知道当希望单一任务的周转时间可靠并且迅速时,可能希望切换多线程处理器的模式以废止一个或多个线程,例如通过运行该处理器于单线程(ST)模式。另外,常常希望发生模式切换时不需要重启系统。另外还知道希望能够类似地使能从单线程模式到多线程(例如并行多线程(SMT))模式的切换,也不需要重启系统。
可以处理的另一问题为多线程处理器中,由不执行系统的有效工作的硬件线程所消耗的共享资源。如下所述,对于操作系统,硬件线程一般如同独立的逻辑处理器。这样一来,当线程运行于操作系统的空闲循环,而且没有做任何有用工作时,该线程正在消耗该处理器的某些共享资源,并且影响该处理器上其他线程的性能。因此希望使操作系统能够在该线程空闲时将处理器切换到单线程模式,并且当该逻辑处理器有工作时,或者当该逻辑处理器被要求服务中断时,将该处理器返回SMT模式。然而,已经知道对于操作系统,将处理器置于单线程模式可能有如该处理器下线。从操作系统的角度来看,将逻辑处理器拿下线一般为代价昂贵的操作。另外,将逻辑处理器拿下线以及当需要工作时将其放上线的消耗,可能使当该线程进入空闲循环时将其废止毫无益处。希望提供一种机制,使操作系统能够在单线程与SMT模式之间转换而没有什么消耗,使线程没有执行有用工作的短时间段能够触发线程的灭活,以释放共享资源供其他线程使用。
因此,在所示实施例中,希望提供一种能力,以将多线程处理器在单线程与SMT模式之间切换,而不需要系统重启或其他对计算机可用性的限制。另外,希望支持一种能力,以将处理器放入单线程模式,从而提高活动线程的性能,做这些时非活动线程对操作系统的其他部分如同在线一样。
为处理这些问题,所示实施例支持全处理器(per-processor)寄存器,此处称为“控制”或“CTRL”寄存器,其控制该处理器运行于单线程或多线程模式。另外,还提供了另一全处理器寄存器,以控制如何复活非活动线程,例如通过外部中断(诸如定时器或递减器中断、处理器间中断、I/O中断等等)。后一个寄存器在所示实施例中称为硬件实现依赖(HID)寄存器,此寄存器存储为特定线程所指定的重新激活条件。如下所述,当废止中断时,复活线程一般只能通过该系统中另一活动线程的显式动作。
使用上述机制,如果操作系统认为应该将处理器长时间地运行于单线程模式,则该操作系统可能选择该处理器上的一个或更多线程以使其非活动。然后,该操作系统可以将相应于这些目标线程的逻辑处理器拿下线。作为将逻辑处理器拿下线的部分,操作系统可能通过HID寄存器的适当控制(例如指定由此废止中断的复活条件),确保该线程不会被外部中断源所中断。然后该线程可能进入死亡模式,由此复活该线程只能通过该处理器上活动线程的显式操作。在这样的模式下,在硬件与软件中都不为死亡线程保持状态。然后该线程能够通过向CTRL寄存器写入适当位将自己变为非活动。
为处理当相应于线程的逻辑处理器进入空闲循环时的上述其他问题,操作系统可以通过写入CTRL寄存器使该线程非活动。另外,操作系统可以设置HID寄存器,使复活条件指定该线程可以通过外部中断复活,例如I/O中断、处理器间中断、定时器中断等等。然后,该线程可能被置入“休眠”模式,其中由软件保持状态,但硬件从该休眠线程拿走所有资源并将这些资源分配给一个或更多活动线程。当触发中断时,该线程则可以被复活,并且相应逻辑处理器被返回其空闲循环,以确定作为所触发的中断的结果,其是否有任何工作可做。例如,如果递减器或定时器I/O中断未决,则可能复活线程以使相应逻辑处理器能够确定作为该中断的结果,是否需要任何工作。另外,如果另一处理器希望一任务可以被相应于非活动线程的逻辑处理器所执行,则该另一处理器可以通过向该非活动线程发送处理器间中断来复活该非活动线程,以使该逻辑处理器进入其空闲循环来检查其他工作。另外,如果需要,系统中的另一线程可以显式地复活该线程,如同对死亡线程一样。
现在转到图2,其示出了在逻辑分区计算机10(图1)中的一个本发明的具体实现。具体地,图2示出了示范性多线程处理器50,包括一对硬件线程52,标记为线程T0与T1,其被配置来共享标记在54的多个共享资源。每一线程具有许多专用资源,例如一组通用寄存器(GPR)56与专用寄存器(SPR)58。另外,每一线程可以共享各种共享资源54,包括(例如)诸如数据高速缓存和/或指令高速缓存的片上高速缓存器60。另外,线程T0与T1可以共享各种SPR 62以及存储队列64、有效实际地址转换(ERAT)表66、地址转换高速缓冲器(TLB)68等等。可以以这里描述的方式在多线程之间共享其他类型的资源。
另外,在多线程处理器50中还设有控制电路70,包括CTRL寄存器72与HID寄存器74,该控制电路被用来选择性地激活或灭活线程T0与T1的一个或全部。具体地,每一线程在每一寄存器72、74中都分配有至少一个字段,以分别指定(1)该线程为活动或非活动,以及(2)该线程是否可以响应于中断地再次被激活。应该理解可以使用不同的数据结构来替换寄存器72、74。例如,寄存器72、74中的各种信息可以结合到一个寄存器中。另外应该理解,根据本发明,也可以在线程T0与T1之间共享不同的共享资源54。此外,应该理解,在给定多线程处理器上可以支持任意数目的线程,并且响应于控制电路70,可以选择性地激活或灭活这些线程中的一部分或全部。
控制电路70也可以被配置来在线程T0与T1之间分配共享资源,以及保存或抛弃在每一硬件线程中保持的特定状态信息,或者(如果需要)启动这些状态信息的存储与检索。另外,控制电路70可以被配置以选择性地激活或灭活线程而不要求系统重启。有关具有此处所描述的特征的多线程处理器的一个适当的实现的进一步细节可以在以下美国专利申请中找到“METHOD AND LOGICAL APPARATUS FOR MANAGING THREADEXECUTION IN A SIMULTANEOUS MULTI-THREADED(SMT)PROCESSOR”(律师卷号为AUS920030217US1);“METHOD AND LOGICALAPPARATUS FOR MANAGING RESOURCE REDISTRIBUTION IN ASIMULTANEOUS MULTI-THREADED(SMT)PROCESSOR(律师卷号为AUS920030267US1);以及“METHOD AND LOGICAL APPARTUS FORRENAME RE GIS TRER REALLOCATION IN A SIMULTANEOUSMULTI-THREADED(SMT)PROCESSOR(律师卷号为AUS920030229US1)。所有这些申请同此文在同一日期提交,并且与本发明的受让人相同,此后包含其内容作为参考。
如上所述,计算机10(图1)被配置为逻辑分区计算机。因此在该计算机中,有多个操作系统在多个逻辑分区中执行。这样一来,该计算机中的分区管理器被配置来控制分区将其处理器运行于ST或SMT模式。希望在该分区管理器中保持该控制以确保该计算机的分区完整性。这样一来,只要该计算机处于能够运行多个分区的模式下,上述的CTRL与HID寄存器一般只能由分区管理器写入。
为支持此处所述的功能,分区管理器提供服务给每一分区以使这些分区能够控制每一处理器的ST/SMT模式。只要分区希望将逻辑处理器拿下线,就可以在操作系统希望变为非活动的线程上访问服务,此处称为H_STOP_SELF服务。另外,为了将逻辑分区在被拿下线后带上线,分区可以对分区管理器启动H_START_LOGICAL_PROCESSOR调用,以通过复活该死亡线程来将该逻辑处理器带回上线。
当分区希望将线程变为休眠时,例如响应于逻辑处理器进入空闲循环,分区管理器支持H_CEDE调用,分区管理器使用该调用以将分区变为休眠,使该线程可以被任意多类型的中断中的一个所复活。还希望允许分区通过启动H_PROD调用复活休眠线程。应该理解,这些调用也可以为共享存储器分区所使用,以及只依赖于专用处理器的分区所使用。
例如,图3示出了到ST模式的切换例程100,其可被用来将与特定分区相关联的多线程处理器切换单线程模式。例程100开始于方框102,从操作系统的角度看,分区将与变为非活动的线程相关联的逻辑处理器拿下线。接着,在方框104,该变为非活动的线程调用分区管理器以停止该线程,例如使用上述的H_STOP_SELF。接着,在方框106,该变为非活动的线程(作为上述调用的结果,该线程现在分区管理器中执行)设置HID寄存器以防止中断引起该线程的复活。接着,在方框108,该变为非活动的线程(仍在分区管理器中执行)设置CTRL寄存器以灭活该线程。根据这些操作,该多线程处理器中的控制电路灭活该线程,引起到单线程模式的处理器切换。
为将上述处理器切换回SMT模式,可以执行例程120。例程120开始于方框120,在同一分区中的活动线程调用分区管理器以启动先前非活动线程,例如,使用上述的START_LOGICAL_PROCESSER调用。接着,如方框124中所示,该活动线程(在分区管理器中执行)写入CTRL寄存器以复活该非活动线程。通过做这些,此处理器上的控制电路将复活该非活动线程。接着,如方框126中通过一独立栏示出,在分区管理器中该先前非活动线程苏醒,具体地,是在位于分区管理器的重置处理器程序代码中。接着,在方框128中,该被恢复线程(现在分区管理器中执行)将控制返回给拥有该线程的分区,然后如方框130中所示,该分区将该逻辑处理器带回上线(online)。然后完成例程120。
现在转到图5,只要执行于分区的逻辑处理器进入空闲状态,就可以执行逻辑处理器空闲循环例程140。例程140可以将与逻辑处理器相关联的多线程处理器暂时切换到单线程模式,以释放所有共享资源,供该处理器中其他活动线程消耗。
例程140开始于方框142,变为非活动的线程(现在分区中执行)调用分区管理器以放弃该线程。接着,在方框144,该变为非活动的线程(作为该调用的结果,现在分区管理器中执行)保存分区状态。接着,在方框146,该变为非活动的线程(还是在分区管理器中执行)设置HID寄存器以使能中断引起该线程的复活。然后,在方框148,该变为非活动的线程(仍然在分区管理器中执行)设置CTRL寄存器以灭活该线程。然后,作为设置该寄存器的结果,该多线程处理器中的控制电路将该处理器切换到单线程模式,由此有效地灭活该线程。然后该线程保持非活动,直到或者由另一个活动线程通过写入CTRL寄存器以显式地复活(与上述结合图4所描述的方法类似),或者可替换地,响应于中断接收。
例如,如方框152中所示,作为接收中断152的结果,作为到单线程模式切换的结果而已经被灭活的线程在分区管理器中在重置处理器处苏醒。接着,如方框154中所示,该线程(仍然在分区管理器中执行)恢复分区状态并且将控制交给分区。接着,如方框156中所示,复活该逻辑处理器的空闲循环,以处理所接收的中断。然后完成例程140并且恢复该逻辑处理器的处理。
应该理解,本发明的原理也可以应用到与逻辑分区计算机不同的计算机中。例如图6-8示出与图4-6相应的例程,但是在非逻辑分区计算机中使用。例如,图6示出了到ST模式的切换例程160,其可由操作系统执行,以将多线程处理器切换ST模式。例程160开始于方框162,将与变为非活动的线程相关联的逻辑处理器置入下线状态。接着,在方框164,该变为非活动的线程设置HID寄存器以防止中断引起该线程的复活。接着,在方框166,该变为非活动的线程设置控制寄存器以灭活该线程,由此该处理器中的控制电路灭活该线程,如上所述。然后完成例程160。
接着,如图7中所示,响应于由在该计算机中的另一活动线程写入CTRL寄存器(方框182),到SMT模式的切换例程180可以复活非活跃线程。作为写入CTRL寄存器的结果(由图7中的一独立栏表示),该先前被灭活的线程在操作系统中在重置处理器处苏醒(方框184)。苏醒后,该线程将该逻辑处理器带回上线(方框186)。该逻辑处理器上线后,执行恢复常规方式,并且完成例程180。
图8示出逻辑处理器空闲循环例程200,开始于方框202,变为非活动的线程设置HID寄存器以使能中断引起该线程的复活。然后,如方框148中所示,该变为非活动的线程设置CTRL寄存器以灭活该线程,由此向该多线程处理器上的控制电路发送信号表示该线程应该被灭活。
在将来的某点,响应于中断接收208,该线程可以被重新激活,如方框206所示。接收中断后,该线程在操作系统中在重置处理器处苏醒。接着,如方框210中所示,复活该空闲循环,以处理所接收的中断。然后,执行恢复常规方式,并且完成例程200。
这样一来,可以看出根据本发明的实施例支持在多线程处理器中选择性地动态地激活与灭活硬件线程的能力,并且常常不需要系统重启。对本领域的技术人员来讲,显然对此处所模式的实施例可以有各种修改,同时具备本公开的优点。因此,本发明蕴涵于权利要求之中。
权利要求
1.一种用于控制位于逻辑分区计算机中的多线程处理器的方法,其中该逻辑分区处理器支持多个硬件线程的执行,其中该逻辑分区计算机包含分区管理器与多个分区,其中该多个硬件线程中的第一硬件线程被分配给位于该多个分区中的第一分区中的逻辑处理器,该方法包括与在第一分区中将该逻辑处理器拿下线相关联,灭活该第一硬件线程,同时响应于中断声明禁止该第一硬件线程的重新激活;以及响应于该逻辑处理器进入空闲循环,灭活该第一硬件线程,同时响应于中断声明允许该第一硬件线程的重新激活。
2.一种装置,包括多线程处理器,其支持多个硬件线程的执行,以及控制电路,其被配置以选择性地激活与灭活由该多线程处理器所执行的该多个硬件线程中的第一硬件线程,该控制电路进一步被配置以控制该第一硬件线程在被灭活后如何被激活。
3.如权利要求2所述的装置,其中该控制电路包括至少一个寄存器。
4.如权利要求2所述的装置,其中该至少一个寄存器包括第一与第二寄存器,该第一寄存器指定该第一硬件线程为活动或非活动,并且该第二寄存器指定该第一硬件线程能否响应于所选择事件地被重新激活。
5.如权利要求2所述的装置,其中该控制电路配置以通过控制该第一硬件线程能否响应于中断声明地被激活,来控制该第一硬件线程在被灭活后如何被激活。
6.如权利要求5所述的装置,其中该中断为以下的至少一个外部中断、处理器间中断、输入/输出中断以及定时器中断。
7.如权利要求5所述的装置,进一步包括多个分区与控制该多个分区的分区管理器,其中该第一硬件线程被分配该多个分区中至少一个,并且该分区管理器被配置以指导该控制电路以选择性地激活与灭活该第一硬件线程,并且控制该第一硬件线程能否响应于中断声明地被激活。
8.如权利要求5所述的装置,其中该第一硬件线程与在该多个分区中的一个中执行的逻辑处理器相关联,并且与分区将该逻辑处理器拿下线相关联,该分区管理器被配置以指导该控制电路以灭活该第一硬件线程,并且响应于中断声明禁止该第一硬件线程的重新激活。
9.如权利要求8所述的装置,其中与分区将该逻辑处理器带回上线相关联,为该分区管理器执行程序代码的第二硬件线程被配置以指导该控制电路以重新激活该第一硬件线程。
10.如权利要求7所述的装置,其中该第一硬件线程与在该多个分区中的一个中执行的逻辑处理器相关联,并且与分区检测到该逻辑处理器正在空闲循环中执行相关联,该分区管理器被配置以指导该控制电路以灭活该第一硬件线程,并且响应于中断声明允许该第一硬件线程的重新激活。
11.如权利要求10所述的装置,其中该控制电路配置以响应于中断声明地激活该第一硬件线程,并且该逻辑处理器被配置以处理所接收的中断。
12.如权利要求11所述的装置,其中该分区管理器被进一步配置以相应于该逻辑处理器进入空闲循环,保存与该逻辑处理器相关联的分区的状态,并且响应于中断声明恢复与该逻辑处理器相关联的分区的状态。
13.一种用于控制支持多个硬件线程的执行的多线程处理器的方法,该方法包括为由该多线程处理器所执行的多个硬件线程中的第一硬件线程指定重新激活条件,该重新激活条件确定该第一硬件线程在被灭活后如何被激活;灭活该第一硬件线程;以及基于为第一硬件线程所指定的重新激活条件,选择性地重新激活该第一硬件线程。
14.如权利要求13所述的方法,其中该多线程处理器包括控制电路,该控制电路被配置以选择性地激活与灭活该第一硬件线程,该控制电路被进一步配置以基于该重新激活条件重新激活该第一硬件线程。
15.如权利要求13所述的方法,其中该控制电路包括至少一个寄存器。
16.如权利要求15所述的方法,其中该至少一个寄存器包括第一与第二寄存器,该第一寄存器指定该第一硬件线程为活动或非活动,并且该第二寄存器指定该重新激活条件。
17.如权利要求13所述的方法,其中该重新激活条件指定该第一硬件线程能否响应于中断声明地被激活。
18.如权利要求17所述的方法,其中该中断为以下的至少一个外部中断、处理器间中断、输入/输出中断以及定时器中断。
19.如权利要求17所述的方法,其中该多线程处理器被安装在计算机中,该计算机包括分区管理器与多个分区,该分区管理器控制该多个分区,其中指定重新激活条件以及灭活该第一硬件线程由该分区管理器进行。
20.如权利要求19所述的方法,其中该第一硬件线程与在该多个分区中的一个内所执行的逻辑处理器相关联,并且与分区将该逻辑处理器拿下线相关联,该分区管理器被配置以指定重新激活条件,该重新激活条件响应于中断声明禁止该第一硬件线程的重新激活。
21.如权利要求20所述的方法,进一步包括,与分区将该逻辑处理器带回上线相关联,使用为该分区管理器执行程序代码的第二硬件线程,重新激活该第一硬件线程。
22.如权利要求19所述的方法,其中该第一硬件线程与在该多个分区中的一个内所执行的逻辑处理器相关联,该方法进一步包括检测分区的逻辑处理器正在空闲循环中执行,并且响应于此,指定重新激活条件,该条件响应于中断声明允许该第一硬件线程的重新激活。
23.如权利要求22所述的方法,其中基于为第一硬件线程所指定的重新激活条件,选择性地重新激活该第一硬件线程包括响应于中断声明,重新激活该第一硬件线程,其中该逻辑处理器被配置以处理所接收的中断。
24.如权利要求23所述的方法,进一步包括相应于该逻辑处理器进入空闲循环,保存与该逻辑处理器相关联的分区的状态,并且响应于中断声明,恢复与该逻辑处理器相关联的分区的状态。
25.如权利要求17所述的方法,其中该多线程处理器被安装在计算机中,该计算机包括操作系统,其中该第一硬件线程与逻辑处理器相关联,并且指定该重新激活条件以及灭活该第一硬件线程由该操作系统进行。
26.如权利要求25所述的方法,其中与该逻辑处理器被拿下线相关联,该操作系统被配置以指定重新激活条件,该重新激活条件响应于中断声明禁止该第一硬件线程的重新激活。
27.如权利要求25所述的方法,其中与该逻辑处理器进入空闲循环相关联,该操作系统被配置以指定重新激活条件,该重新激活条件响应于中断声明允许该第一硬件线程的重新激活。
28.一种程序产品,包括程序代码,其被配置以通过以下方法控制支持多个硬件线程的执行的多线程处理器为由该多线程处理器所执行的多个硬件线程中的第一硬件线程指定重新激活条件;灭活该第一硬件线程;以及基于为第一硬件线程所指定的重新激活条件,选择性地重新激活该第一硬件线程,其中该重新激活条件确定该第一硬件线程在被灭活后如何被激活,以及承载该程序代码的信号承载介质。
29.如权利要求28所述的程序产品,其中该信号承载介质包括以下至少一个可记录介质与传送介质。
全文摘要
一种装置、程序产品与方法,使用具有多个硬件线程中的至少一个硬件线程的多线程处理器,该线程能够响应于控制电路地被激活与灭活。该控制电路还提供控制非活动线程在该线程被灭活后如何被激活的能力,例如,通过使能或废止响应于中断的重新激活。
文档编号G06F9/38GK1540508SQ20041000288
公开日2004年10月27日 申请日期2004年1月20日 优先权日2003年4月24日
发明者威廉·J·阿姆斯特朗, 布鲁斯·G·米利, 纳尔什·内亚, 巴拉拉姆·辛哈罗伊, G 米利, 内亚, 姆 辛哈罗伊, 威廉 J 阿姆斯特朗 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1