CN102411512A - 对多个辅助硬件线程进行可缩放状态跟踪的方法和系统 - Google Patents

对多个辅助硬件线程进行可缩放状态跟踪的方法和系统 Download PDF

Info

Publication number
CN102411512A
CN102411512A CN2011102885152A CN201110288515A CN102411512A CN 102411512 A CN102411512 A CN 102411512A CN 2011102885152 A CN2011102885152 A CN 2011102885152A CN 201110288515 A CN201110288515 A CN 201110288515A CN 102411512 A CN102411512 A CN 102411512A
Authority
CN
China
Prior art keywords
hardware thread
thread
ancillary
ancillary hardware
instruction
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
CN2011102885152A
Other languages
English (en)
Other versions
CN102411512B (zh
Inventor
R·L·阿恩特
G·R·弗雷泽
R·P·霍尔
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 CN102411512A publication Critical patent/CN102411512A/zh
Application granted granted Critical
Publication of CN102411512B publication Critical patent/CN102411512B/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/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; 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, 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
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution

Abstract

本发明的实施方式涉及对多个辅助硬件线程进行可缩放状态跟踪的方法和系统。其中处理器包括发起硬件线程,该发起硬件线程发起第一辅助硬件线程以执行第一代码段。接下来,发起硬件线程响应于发起第一辅助硬件线程而设置辅助线程执行指示符。所设置的辅助线程执行指示符指示辅助硬件线程是否正在执行。第二辅助硬件线程发起和开始执行第二代码段。接着,发起硬件线程检测辅助线程执行指示符中的改变,该改变表示第一辅助硬件线程和第二辅助硬件线程两者终止。照这样,发起硬件线程响应于这两个辅助硬件线程终止而评估辅助硬件线程结果。

Description

对多个辅助硬件线程进行可缩放状态跟踪的方法和系统
技术领域
本公开涉及在没有管理程序(hypervisor)介入的情况下跟踪辅助硬件线程状态。更特别地,本公开涉及利用辅助线程状态寄存器来跟踪辅助硬件线程活动的发起硬件线程。
背景技术
当今的计算机系统通常包括执行独立指令流的多线程处理器。在硬件线程上执行的软件程序可以从监控程序(supervisor program)(例如管理程序)请求对另一硬件线程的控制。例如,软件程序可以向用于另一硬件线程的监控程序发送请求以便让该另一个硬件线程执行代码段(例如子例程)。监控程序检查硬件线程可用性,并且如果可用则向软件程序指派该另一个硬件线程。接着,软件程序利用该另一个硬件线程来执行代码段。在很多情况下,软件程序利用该另一个硬件线程持续有限时间。照这样,当该另一个硬件线程完成代码执行时,监控程序从软件程序释放该另一个硬件线程的资源。
发明内容
处理器包括发起硬件线程,该发起硬件线程发起第一辅助硬件线程以执行第一代码段。接下来,发起硬件线程响应于发起第一辅助硬件线程而设置辅助线程执行指示符。所设置的辅助线程执行指示符指示辅助硬件线程是否正在执行。第二辅助硬件线程发起和开始执行第二代码段。接着,发起硬件线程检测辅助线程执行指示符中的改变,该改变表示第一辅助硬件线程和第二辅助硬件线程两者终止。照这样,发起硬件线程响应于这两个辅助硬件线程终止而评估辅助硬件线程结果。
由于前文是概要,因而不得已包含简化、概括以及对细节的省略;因此,本领域技术人员将意识到该概要仅是说明性的,而并非旨在以任何方式进行限制。本公开的其他方面、创造性特征以及优点(其仅仅由权利要求书限定)在以下阐明的非限制性详细描述中将变得明显。
附图说明
通过参考附图,可以更好地理解本公开,并且本公开的大量对象、特征和优点对于本领域技术人员而言将变得明显,其中:
图1是示出在多线程处理器上发起辅助硬件线程的处理器的软件程序的示例性示图;
图2是示出辅助线程状态寄存器(ATSR)的示例性示图;
图3A是示出由软件程序利用来管理辅助硬件线程状态的软件状态存储区的示例性示图;
图3B是示出由发起硬件线程利用来管理辅助硬件线程状态的硬件状态存储区的示例性示图;
图4是示出在发起硬件线程调用辅助硬件线程时采取的步骤的示例性流程图;
图5是示出在辅助硬件线程执行软件代码时采取的步骤的示例性流程图;
图6是示出分支和发起轻型(BAIL)指令的示例性示图;
图7是示出分支和发起重型(BAIH)指令的示例性示图;
图8是示出停止辅助线程(SAT)指令的示例性示图;
图9是示出由发起硬件线程在分支和发起指令期间向辅助线程寄存器复制的寄存器值的示例性示图;
图10是示出在执行分支条件if辅助线程执行(BCE)指令时所采取的步骤的示例性流程图;
图11是示出在执行条件寄存器设置if辅助线程执行(CRSE)指令时所采取的步骤的示例性流程图;
图12是示出分支条件if辅助线程执行(BCE)指令的示例性示图;
图13是示出条件寄存器设置if辅助线程执行(CRSE)指令的示例性示图;
图14是示出调用多个辅助硬件线程的发起硬件线程的示例性示图;
图15是示出调用辅助硬件线程的发起硬件线程(该辅助硬件线程接着调用其他辅助硬件线程)的示例性示图;
图16是示出在不同处理器上调用辅助硬件线程的发起硬件线程的示例性示图;以及
图17是其中可以实现在此描述的方法的信息处理系统的框图示例。
具体实施方式
在以下描述和附图中,阐明了某些特定细节以便提供对本公开各种实施方式的透彻理解。然而,在以下公开中并不阐明通常与计算和软件技术相关联的特定公知细节,以避免不必要地使得本公开的各种实施方式变得模糊。此外,本领域普通技术人员将理解,他们可以在没有以下描述的细节中的一个或多个的情况下实践本公开的其他实施方式。最后,尽管参考了以下公开中的步骤和序列来描述各种方法,但这种描述是为了提供对本公开的实施方式的清楚的实现,并且不应当将这些步骤和步骤的序列视为是实践本公开所必需的。而是,下文旨在提供对本公开的示例的详细描述,并且不应当被视为是对本公开本身的限制。相反地,任何数目的变型均可以落入本公开的范围内,本公开的范围由说明书所附的权利要求书限定。
如本领域技术人员将意识到的,本公开的方面可以体现为系统、方法或者计算机程序产品。相应地,本公开的方面可以采取完全硬件实施方式、完全软件实施方式(包括固件、驻留软件、微代码等)或者组合了软件和硬件方面的实施方式的形式,在此可以将其统称为“电路”、“模块”或者“系统”。另外,本公开的方面可以采取计算机程序产品的形式,该计算机程序产品体现在具有体现在其上的计算机可读程序代码的一个或多个计算机可读介质中。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以例如是但不限于电子的、磁的、光的、电磁的、红外的或半导体的系统、装置或设备,或者前述各项的任何合适的组合。计算机可读存储介质的更多特定示例(非穷举列表)将包括以下各项:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩光盘只读存储器(CD-ROM)、光存储设备、磁存储设备,或者前述各项的任何合适的组合。在本文献的上下文中,计算机可读存储介质可以是可以包含或存储用于由指令执行系统、装置或者设备使用的或者结合指令执行系统、装置或者设备而使用的程序的任何有形介质。
计算机可读信号介质可以包括所传播的其中(例如在基带中或者作为载波的一部分)体现有计算机可读程序代码的数据信号。此类所传播的信号可以采取各种形式中的任何种类,包括但不限于电磁的、光学的或者其任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质的并且能够传递、传播或者传输用于由指令执行系统、装置或者设备使用的或者结合指令执行系统、装置或者设备而使用的程序的任何计算机可读介质。
可以使用任何适当的介质来传送体现在计算机可读介质上的程序代码,这些介质包括但不限于无线的、有线的、光纤电缆、RF等,或者前述各项的任何合适的组合。
用于执行针对本公开的方面的操作的计算机程序代码可以采用一种或多种编程语言的任何组合来编写,这些编程语言包括诸如Java、Smalltalk、C++等面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规的过程编程语言。程序代码可以作为独立软件包完全在用户的计算机上执行、部分地在用户的计算机上执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如使用因特网服务提供商、通过因特网)。
下文参考根据本公开的实施方式的方法、装置(系统)以及计算机程序产品的流程图图示和/或框图来描述本公开的方面。应当理解,流程图图示和/或框图的每个块以及流程图图示和/或框图中的块的组合可以通过计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或者其他可编程数据处理装置的处理器以产生机器,从而使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个块中所指定的功能/动作的装置。还可以将这些计算机程序指令存储在计算机可读介质中,该计算机可读介质能够引导计算机、其他可编程数据处理装置或者其他设备以特定方式运转,从而使得存储在计算机可读介质中的指令产生制造品,该制造品包括实现在流程图和/或框图的一个或多个块中所指定的功能/动作的指令。
还可以将这些计算机程序指令加载到计算机、其他可编程数据处理装置或者其他设备上,以使得在计算机、其他可编程装置或者其他设备上执行一系列操作性步骤以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个块中所指定的功能/动作的过程。
以下详细描述将总体上遵循如以上阐明的公开的概要,根据需要进一步说明和扩展对本公开的各种方面和实施方式的限定。
图1是示出在不利用管理程序的情况下在多线程处理器上发起辅助硬件线程的处理器的软件程序的示例性示图。当软件程序110开始执行时,处理器100向软件程序110指派发起硬件线程120。由于软件程序110对发起硬件线程120执行指令115,因此指令115之一是“分支和发起指令”,其指示发起硬件线程120检查另一硬件线程是否可用,诸如用于执行软件程序110的指令(指令145)的子集。
本公开描述了两种类型的分支和发起指令,其是分支和发起轻型(BAIL)指令以及分支和发起重型(BAIH)指令。正如在此所讨论的那样,BAIL指令和BAIH指令之间的差异是当辅助硬件线程开始执行时,BAIH指令确保所有发起硬件线程存储操作对辅助硬件线程来说是可见的。照这样,当软件程序要求存储器同步时,该软件程序可以利用BAIH指令而不是BAIL指令。相反,当软件程序不要求存储器同步时,该软件程序可以利用BAIL指令而不是BAIH指令,这是因为BAIL指令不保证存储器同步并且从而执行得更快。如本领域技术人员能够意识到的那样,可以获得其他类型的分支和发起指令以指示发起硬件线程来发起辅助硬件线程。
当发起硬件线程120执行分支和发起指令时,发起硬件线程120检查硬件状态存储125以确定另一硬件线程是否可用。例如,处理器100可以包括硬件线程库,并且硬件状态存储125包括指示哪个硬件线程可用的信息(参见图3B和对应的文本以便了解进一步的细节)。当辅助硬件线程可用时,发起硬件线程120调用辅助硬件线程150,并且将寄存器值从发起线程寄存器140复制到辅助线程寄存器170。在一个实施方式中,发起硬件线程120从发起线程寄存器140复制到辅助线程寄存器170的寄存器值取决于分支和发起指令的类型以及指令参数值(参见图6-图7以及对应的文本以便了解进一步的细节)。在一个实施方式中,发起硬件线程120和辅助硬件线程150各自具有用于执行指令的专用执行单元。
发起硬件线程120通过对辅助线程状态寄存器(ATSR)130包括的辅助线程有效(ATV)位进行设置,向软件程序110通知辅助硬件线程150可用(参见图2、图4以及对应的文本以便了解进一步的细节)。发起硬件线程120还向辅助硬件线程150指派辅助线程号(ATN)值,发起硬件线程120将该ATN值存储在硬件状态存储125中,并且软件程序110将该ATN值存储在软件状态存储115中,以跟踪辅助硬件线程150的状态。
一旦辅助硬件线程150发起,软件程序110就对辅助硬件线程150执行指令145。辅助硬件线程150继续执行指令145直到例如辅助硬件线程150发生如下情况为止:1)完成代码执行;2)执行停止辅助线程(SAT)指令;3)发起硬件线程120执行SAT指令并且终止辅助硬件线程150;或者4)处理器100终止辅助硬件线程150(参见图5、图8以及对应的文本以便了解进一步的细节)。当辅助硬件线程150停止执行时,辅助硬件线程150在发起硬件线程120的辅助线程状态寄存器130中存储信息,诸如终止指示符和地址信息(参见图2、图8以及对应的文本以便了解进一步的细节)。
在一个实施方式中,软件程序110请求多个辅助硬件线程执行不同代码段。在这一实施方式中,最后一个停止执行的辅助硬件线程在辅助线程状态寄存器130中写入终止指示符和地址信息(参见图5、图14以及对应的文本以便了解进一步的细节)。
在另一实施方式中,辅助硬件线程150可以调用后续的辅助硬件线程。在这一实施方式中,辅助硬件线程150变为后续的辅助硬件线程的“发起硬件线程”,并且使用辅助线程状态寄存器160来存储关于后续辅助硬件线程的信息(参见图15以及对应的文本以便了解进一步的细节)。在这一实施方式中,当发起线程执行指令以终止辅助硬件线程150时,辅助硬件线程150自动地终止后续的辅助硬件线程。
在又一实施方式中,软件程序110可能希望检查辅助硬件线程150的特定状态,以便确定辅助硬件线程150是否仍然正在执行。在这一实施方式中,软件程序110对发起线程120执行“辅助线程检查”指令,诸如分支条件if辅助线程执行(BCE)指令或条件寄存器设置if辅助线程执行(CRSE)指令。在这一实施方式中,软件程序110从软件状态存储115获取对应于辅助硬件线程150的辅助线程号(ATN)并且将该ATN存储在通用寄存器中。接着,软件程序110在由发起硬件线程120所执行的BCE指令中包括通用寄存器号。发起硬件线程120从通用寄存器获取ATN并且访问硬件状态存储125以检查辅助硬件线程150的状态。接着,发起硬件线程120根据辅助硬件线程150的状态进行分支(或者设置条件位)(参见图10-图13以及对应的文本以便了解进一步的细节)。
图2是示出辅助线程状态寄存器(ATSR)的示例性示图。诸如发起硬件线程120之类的发起硬件线程使用ATSR 130来跟踪整体辅助硬件线程状态。ATSR 130包括用于存储此类跟踪信息的字段210-260。
辅助线程号(ATN)字段210包括对应于最近发起的辅助硬件线程的编号。例如,如果发起硬件线程120按顺序发起辅助硬件线程1、2和3,则ATN字段包括编号“3”。照这样,ATSR 130是平台可缩放的,这是因为ATSR 130不对特定发起硬件线程可以发起的辅助硬件线程的数量施加限制(除ATN字段210的位数量限制以外)。
辅助线程号有效(ATV)位220包括指示ATN字段210的有效性的位。软件程序检查该位以确定所请求的辅助硬件线程是否实际发起(参见图4以及对应的文本以便了解进一步的细节)。
ATSR 130包括辅助线程执行指示符,在一个实施方式中,该辅助线程执行指示符是辅助线程执行(ATE)位230,其表明当前是否有任何辅助硬件线程正在执行。软件程序可以利用单一读取操作来检查ATE位230并且标识是否所有辅助硬件线程都完成了执行(参见图4、图5以及对应的文本以便了解进一步的细节)。
在一个实施方式中,栏240-260包括仅在ATE位230指示没有辅助硬件线程正在执行时才有效的信息。辅助线程状态(ATS)字段240包括指示最后一个辅助硬件线程的终止的根据(例如辅助线程执行了SAT指令,发起线程执行了SAT指令,遇到错误,处理器预先清空了资源等)的终止指示符。
SAT参数(SATP)字段250包括当最后一个正在执行的辅助硬件线程执行SAT指令时该辅助硬件线程传递给发起硬件线程的参数。例如,SAT参数可以指示辅助硬件线程是否成功地完成了它的任务(代码执行)。最后,下一指令(NI)字段260包括跟随辅助硬件线程所执行的最后一个指令的指令的地址。
图3A是示出由软件程序利用来管理辅助硬件线程状态的软件状态存储区的示例性示图。如可以看到的,软件状态存储115包括用于当前正在执行的辅助硬件线程的辅助线程号(ATN)值(栏300)和对应的起始地址(栏310)的列表。在一个实施方式中,起始地址是BAIL/BAIH指令针对辅助硬件线程指定的用以开始执行代码的地址(参见图6、图7以及对应的文本以便了解进一步的细节)。在又一实施方式中,软件状态存储115可以不包括起始地址,而是存储用于对应的任务的符号式名称,并且在这一实施方式中,软件状态存储115具有将符号式名称与代码段相关联的不同的表。软件状态存储115可以存储在易失性存储器或非易失性存储器区(诸如计算机硬盘驱动器)上。
图3B是示出由硬件线程利用来管理辅助硬件线程状态的硬件状态存储区的示例性示图。类似于以上讨论的软件状态存储115,硬件状态存储125包括ATN值(栏320)、针对辅助硬件线程的对应硬件线程号(栏330)以及每个辅助硬件线程的状态(栏340)的列表。在一个实施方式中,栏330中的对应线程号可以与栏320中的辅助线程号相同。正如本领域技术人员能够意识到的那样,硬件状态存储125可以是存储信息的矢量,从而使得该矢量中的每个条目指示特定硬件线程的状态。
图4是示出在发起硬件线程调用辅助硬件线程时所采取的步骤的示例性流程图。软件程序处理开始于400处,随后软件程序在步骤405处执行分支和发起轻型(BAIL)或分支和发起重型(BAIH)指令。在一个实施方式中,BAIL与BAIH指令之间的差异在于发起硬件线程所执行的存储器同步的量(参见图9以及对应的文本以便了解进一步的细节)。
执行软件程序的发起硬件线程处理开始于450处,随后发起硬件线程访问硬件状态存储125,并且检查是否有不同的硬件线程(辅助硬件线程)可用。硬件状态存储125包括关于处理器的硬件线程可用性的信息(参见图3B以及对应的文本以便了解进一步的细节)。
发起硬件线程确定另一硬件线程是否可用于用作辅助硬件线程(判定460)。如果辅助硬件线程不可用,则判定460分支到“否”分支462,随后发起硬件线程在辅助线程状态寄存器(ATSR)ATV位220中将辅助线程号有效位设置为“0”(步骤465)。接着,由于辅助硬件线程不可用,因此发起硬件线程在步骤440处执行目标为辅助硬件线程的任务,并且处理在445处结束。
另一方面,如果辅助硬件线程可用,则判定460分支到“是”分支465,随后发起硬件线程在步骤470处将辅助线程值(ATV)位设置为“1”。接下来,发起硬件线程生成辅助线程号(ATN)(例如对计数器或随机数生成器增值),并且在硬件状态存储125中存储辅助线程号,以及对被指派为辅助硬件线程的线程的指示(例如另一号码或与ATN相同的号码)。发起硬件线程还在ATSR辅助线程号字段210中存储ATN值(步骤475)。
在步骤480处,发起硬件线程标识要从它的寄存器复制到辅助硬件线程寄存器的特定寄存器值。发起硬件线程基于BAIL/BAIH指令的参数来选择寄存器值。在步骤485处,发起硬件线程将标识的寄存器值从发起线程寄存器140复制到辅助线程寄存器170。
返回参考软件程序,软件程序在步骤410处检查ATSR ATV位220,以确定所请求的辅助硬件线程是否发起(判定415)。如果辅助硬件线程没有发起(例如ATV位=0),则软件程序执行具有如以上讨论的目标为辅助硬件线程的发起线程的任务(步骤440),并且处理在445处结束。
另一方面,如果所请求的辅助硬件线程发起了,则判定415分支到“是”分支418;随后,在一个实施方式中,软件程序可以从ATSR ATN字段210获取辅助线程号,并且将所获取的ATN值存储在软件状态存储115中。在另一实施方式中,软件程序可以不跟踪发起辅助硬件线程(诸如当辅助硬件线程的任务是仅仅将数据预取到高速缓存中时),以便改进发起硬件线程的整体性能。软件状态存储115包括用于跟踪软件程序所调用的辅助硬件线程的信息(参见图3A以及对应的文本以便了解进一步的细节)。接着,软件程序使用所发起的辅助硬件线程来执行指令(预定的处理块490,参见图5以及对应的文本以便了解进一步的细节)。
当辅助硬件线程终止(由于完成代码执行或者被迫终止)时,辅助硬件线程将ATSR辅助线程执行(ATE)位230清零(clear)。在一个实施方式中,软件程序在等待辅助硬件线程完成的同时执行其他任务(步骤425)。在另一实施方式中,软件程序可以请求多个辅助硬件线程执行该软件程序的各种区段。在这一实施方式中,最后一个完成的辅助硬件线程对ATSR ATE位230清零(参见图5以及对应的文本以便了解进一步的细节)。
在一个实施方式中,当辅助硬件线程完成时,软件程序可以在步骤430处检查辅助硬件线程的结果,诸如将这些结果用于后续计算。软件程序和发起硬件线程分别在435和495处结束。在一个实施方式中,在发起硬件线程上执行的软件程序可以前进以执行其他任务,诸如发起附加辅助硬件线程。
图5是示出在辅助硬件线程执行指令时所采取的步骤的示例性流程图。辅助硬件线程处理开始于500处,随后辅助硬件线程访问存储在辅助线程寄存器170中的寄存器值,并且在步骤505处执行软件程序110的指令。
在指令执行期间,辅助硬件线程确定是否响应于完成指令执行或者接收到终止执行的指示而终止执行(判定510)。在一个实施方式中,辅助硬件线程可以完成指令执行或者执行停止辅助线程(SAT)指令,其指示辅助硬件线程终止指令执行(参见图8以及对应的文本以便了解进一步的细节)。在另一实施方式中,发起硬件线程可以执行SAT指令,并且接着终止辅助硬件线程。在又一实施方式中,控制发起硬件线程和辅助硬件线程的处理器可以终止辅助硬件线程以便辅助硬件线程执行其他更高优先级的程序,或者以便回收辅助硬件线程的资源。
如果辅助硬件线程应当继续执行指令,则判定510分支到“否”分支517,其循环返回以继续执行指令。这一循环继续,直到辅助硬件线程终止为止,此时判定510分支到“是”分支514。
在步骤520处,辅助硬件线程将在硬件状态存储125中的它的状态从“正在执行”改变为“终止”。接下来,辅助硬件线程检查其他辅助硬件线程的状态(步骤525)以便确定其他辅助硬件线程是否仍然正在执行(判定530)。如果其他辅助硬件线程仍然正在执行,则判定530分支到“是”分支532,随后辅助硬件线程在步骤560处释放它的资源,并且辅助硬件线程处理在570处结束。在一个实施方式中,在辅助硬件线程终止之后,处理器(例如处理器100)可以更新发起硬件线程的ATSR位。
另一方面,如果没有其他辅助硬件线程正在执行,则判定530分支到“否”分支534,随后辅助硬件线程在步骤540处在ATSR辅助线程状态(ATS)字段240中存储终止指示符(例如辅助线程执行了SAT指令,发起线程执行了SAT指令,遇到错误,处理器预先清空了资源等)。辅助硬件线程在步骤545处在ATSR SATP字段250中存储SAT参数。例如,如果ATS字段指示由于辅助硬件线程执行了SAT指令因此该辅助硬件线程终止,则SATP字段250可以包括指示辅助硬件线程是否成功地完成了它的任务的参数。
在步骤550处,辅助硬件线程在ATSR NI字段260中存储对应于紧接着辅助线程所执行的最后一个指令的下一指令的地址。最后,辅助硬件线程在步骤555处对ATSR ATE字段230中的辅助线程执行指示符清零,从而向软件程序110指示每个辅助硬件线程都已经停止执行(参见图4以及对应的文本以便了解进一步的细节)。辅助硬件线程在560处释放它的资源并且在570处结束。
在一个实施方式中,在步骤555之前,处理器可以确保由辅助硬件线程执行的所有存储对发起硬件线程来说是可见的。在这一实施方式中,通过确保辅助硬件线程的所有存储对发起硬件线程来说是可见的,发起硬件线程可以读取存储在存储器中的辅助硬件线程的结果(参见图4以及对应的文本以便了解进一步的细节)。
图6是示出分支和发起轻型(BAIL)指令的示例性示图。BAIL指令600使得软件程序100能够在不需要管理程序介入、并且不会不利地影响管理程序操作或其他正在执行的程序情况下,从多线程处理器高效地请求辅助硬件线程。
BAIL指令600包括op代码字段(位0-5)以及扩展的op代码字段(位21-30),当硬件线程执行时,这些代码字段指示硬件线程检查辅助硬件线程是否可用。如果可用,则发起硬件线程将特定寄存器值(诸如基址寄存器组(通用寄存器、特许控制寄存器等))连同基于复制位“6”的其他寄存器值(浮点、矢量单元等),从发起硬件线程的寄存器复制到辅助硬件线程的寄存器(参见图9以及对应的文本以便了解进一步的细节)。一旦复制了,辅助硬件线程就开始执行对应于位于BAIL指令600的位7-20中的目标地址的代码。正如本领域技术人员能够意识到的那样,BAIL指令600可以包括更多或更少的位和/或不同于图6中所示的而被划分。
图7是示出分支和发起重型(BAIH)指令的示例性示图。BAIH指令700类似于图6中示出的BAIL指令。然而,与BAIL指令相比,BAIH指令还可以执行存储器同步步骤。
BAIH指令包括op代码字段(位0-5)以及扩展的op代码字段(位21-30),当硬件线程执行时,这些字段指示硬件线程检查辅助硬件线程是否可用。如果可用,则发起硬件线程复制特定寄存器值(诸如基址寄存器组(通用寄存器、特许控制寄存器等))以及基于复制位“6”的其他寄存器(浮点、矢量单元等)(参见图9以及对应的文本以便了解进一步的细节)。
一旦发起硬件线程将寄存器值复制到辅助硬件线程寄存器,辅助硬件线程就开始执行对应于位于BAIH指令600的位7-20中的目标地址的代码。正如本领域技术人员能够意识到的那样,BAIH指令可以包括更多或更少的位和/或以不同于图7所示方式而被划分。
图8是示出停止辅助线程(SAT)指令的示例性示图。随着辅助硬件线程执行,辅助硬件线程(或发起硬件线程)可以执行SAT指令,该SAT指令指示辅助硬件线程停止执行。当发起线程执行SAT指令800时,该发起线程指示辅助硬件线程停止执行(终止)。当辅助硬件线程执行SAT指令800时,该辅助线程停止其自身的执行。
SAT指令800包括op代码字段(位0-5)以及扩展的op代码字段(位21-30),当发起硬件线程执行时,这些字段通知发起硬件线程指示一个或多个辅助硬件线程停止执行。SAT指令800还包括终止位20,当由发起硬件线程执行时,终止位20指示发起硬件线程终止所有激活的辅助硬件线程或者终止特定的辅助硬件线程。当位20表示终止特定辅助硬件线程时,位6-10包括源寄存器(RS)位置(例如通用寄存器位置),该源寄存器位置包括对应于要终止的辅助硬件线程的辅助线程号(ATN)。
在另一实施方式中,当辅助硬件线程执行SAT指令800时,该辅助硬件线程可以使用位20来向它的发起硬件线程传递回SAT参数。例如,辅助硬件线程可以在其完成代码执行时在位20中存储“1”,并且可以在其未能完成代码执行时在位20中存储“0”。在这一实施方式中,辅助硬件线程在其执行SAT指令800时忽略位6-10。
在又一实施方式中,SAT指令800可以不具有RS字段(位6-10)。在这一实施方式中,发起硬件线程终止其发起的所有激活的辅助硬件线程,而不考虑位20的值如何(例如忽略位20)。
图9是示出在BAIL和BAIH指令期间发起硬件线程从发起线程寄存器复制到辅助线程寄存器的寄存器值的示例性示图。图9示出了:在这些指令期间,发起硬件线程复制基址寄存器值(例如通用寄存器、条件寄存器以及对大多数计算任务来说必要的其他寄存器)。
在一个实施方式中,发起硬件线程将地址转换寄存器值从发起硬件线程寄存器140复制到辅助硬件线程寄存器170(例如用于将有效或虚拟地址变换为实际地址的寄存器值)。在另一实施方式中,发起硬件线程和辅助硬件线程可以共享相同的地址转换寄存器,或者可以预设辅助硬件线程的转换寄存器。在这一实施方式中,软件程序可以将发起硬件线程配置为使得该发起硬件线程不复制地址转换寄存器值。
基于BAIL/BAIH指令的复制位,发起硬件线程还可以将一组依赖于实现的寄存器值、从发起硬件线程寄存器140复制到辅助硬件线程寄存器170(参见图6以及对应的文本以便了解进一步的细节)。在一个实施方式中,该组依赖于实现的寄存器包括矢量寄存器、浮点寄存器以及与辅助硬件线程偶尔要求的专门的计算任务相关联的其他寄存器组。
在一个实施方式中,为了从先前的计算移除任何残留值,发起硬件线程可以对辅助硬件线程寄存器170中的不包括从发起硬件线程寄存器140复制的寄存器值的寄存器清零。
虽然BAIL和BAIH指令可以执行一组相同的寄存器复制,但在一个实施方式中,其指令在发起硬件线程的存储器同步方面不同。例如,在处理器不按顺序执行存储器“存储”的情况下,并不保证由一个指令执行的存储器存储在接下来的指令执行之前完成。因此,在这一示例中,如果紧接着存储操作的指令发起辅助硬件线程,则不存在在辅助线程发起之前完成存储操作的保证。如果存储操作未完成,则存储操作值在不确定的时间内对辅助线程来说可能不可见。照这样,当辅助硬件线程要求访问所存储的信息以便执行其任务时就会出现问题。
BAIH指令减轻了这一问题,这是因为BAIH指令确保了由发起线程执行的存储在辅助硬件线程发起之前已经完成到足以提供辅助硬件线程可见性,从而允许辅助硬件线程读取存储器位置并且相应地执行任务。当软件程序不要求存储器同步时,由于BAIL指令的执行速度(这是因为其不保证存储器同步),该软件程序可以利用BAIL指令。
在一个实施方式中,BAIL和BAIH指令具有很多变型。例如,对于并未乱序执行存储操作的处理器,处理器可以不利用BAIH指令,但某些实施方式可能利用一种形式的BAIL指令,该BAIL指令相对于BAIH指令复制更大的一组寄存器。在另一示例中,不保证按顺序的存储的实现可以将BAIH指令配置为使得发起硬件线程根据特定应用的需要而复制比BAIL指令更多的寄存器。
图10是示出在执行分支条件if辅助线程执行(BCE)指令时所采取的步骤的示例性流程图。当软件程序要求特定辅助硬件线程的状态时可能出现状况。在这些状况中,软件程序可以对发起硬件线程执行条件转移指令,其基于特定辅助硬件线程是否仍然正在执行而进行分支。
BCE软件程序执行开始于1000处,随后软件程序从软件状态存储115获取对应于特定辅助线程的辅助线程号(ATN)值(步骤1005)。在步骤1010处,软件程序在特定通用寄存器(例如寄存器“4”)中存储ATN值,并且在另一通用寄存器(例如寄存器“5”)中存储目标地址,其标识了当辅助硬件线程仍然正在执行时发起硬件线程要执行的代码中的位置(下面将讨论)。接下来,软件程序对发起硬件线程执行分支条件if辅助线程执行(BCE)指令,该指令包括ATN值和目标地址的通用寄存器位置(步骤1015)。
发起硬件线程执行开始于1040处,随后发起硬件线程从BCE指令提取通用寄存器号,并且从通用寄存器获取ATN以及目标地址(步骤1050)。接下来在步骤1060处,发起硬件线程检查硬件状态存储125中的对应的辅助硬件线程的状态。
发起硬件线程基于步骤1060处的状态来确定辅助硬件线程是否仍然正在执行(判定1070)。如果辅助硬件线程仍然正在执行,则判定1070分支到“是”分支1072,随后发起硬件线程分支到在步骤1050中获取的目标地址(步骤1080)。另一方面,如果辅助硬件线程终止了,则判定1070分支到“否”分支1078,随后发起硬件线程继续在下一指令处执行(步骤1090)。
软件程序基于发起硬件线程是否分支来确定特定辅助硬件线程是否仍然正在执行(判定1020)。如果发起硬件线程出现分支,则判定1020分支到“是”分支1022,随后软件程序在步骤1024处根据辅助硬件线程仍然正在执行来执行任务,诸如继续对与给予辅助线程的任务无关的任务进行工作。另一方面,如果发起硬件线程没有出现分支,则判定1020分支到“否”分支1026,随后软件程序根据辅助硬件线程终止来执行任务(步骤1028)。例如,软件程序可以检查共享存储器位置以确定辅助硬件线程是否成功地完成了它的操作,并且相应地执行附加任务(例如开始另一辅助线程、执行其他工作等)。软件程序和发起硬件线程处理分别在1030和1095处结束。
图11是示出在执行条件寄存器设置if辅助线程执行(CRSE)指令时所采取的步骤的示例性流程图。该CRSE指令类似于在图10中讨论的BCE指令,只不过发起线程基于特定辅助硬件线程的状态设置条件位而不是分支到目标地址。
CRSE软件程序执行开始于1100处,随后软件程序从软件状态存储115获取对应于特定辅助线程的辅助线程号(ATN)值(步骤1105)。在步骤1110处,软件程序在特定的通用寄存器(GPR)中存储ATN值以及条件寄存器位位置。条件寄存器位位置对应于发起硬件寄存器基于辅助硬件线程的状态而设置的条件寄存器位(下面将讨论)。接下来,软件程序在CRSE指令中包括GPR寄存器位置并且使用发起硬件线程来执行CRSE指令(1115)。
发起硬件线程执行开始于1140处,随后发起硬件线程从CRSE指令提取通用寄存器号,并且从对应于所提取的通用寄存器号的通用寄存器获取ATN以及条件寄存器位位置(步骤1150)。接下来,发起硬件线程在步骤1160处检查硬件状态存储125中的所获取的ATN的对应的辅助硬件线程的状态。
发起硬件线程基于步骤1160处的状态来确定辅助硬件线程是否仍然正在执行(判定1170)。如果辅助硬件线程仍然正在执行,则判定1170分支到“是”分支1072,随后发起硬件线程在步骤1180处设置条件寄存器位,该位对应于以上讨论的所获取的条件寄存器位位置。另一方面,如果辅助硬件线程终止了,则判定1170分支到“否”分支1078,随后发起硬件线程将条件寄存器位1185设置为“0”(步骤1090)。
软件程序通过检查条件寄存器位1185来确定特定辅助硬件线程是否仍然正在执行,并且在步骤1120处相应地执行任务。软件程序和发起硬件线程处理分别在1130和1195处结束。
图12是示出分支条件if辅助线程执行(BCE)指令的示例性示图。BCE指令1200使得软件程序能够确定特定辅助硬件线程是否仍然正在执行代码,这是通过在发起硬件线程确定辅助硬件线程正在执行时指示发起硬件线程分支到目标地址来实现的。
BCE指令1200包括op代码字段(位0-5)以及扩展的op代码字段(位16-20),当硬件线程执行时,这些字段指示“发起”硬件线程检查辅助硬件线程是否正在执行。BCE指令1200包括位11-15,这些位标识了包括供辅助硬件线程检查的辅助线程号(ATN)的通用寄存器。如果辅助硬件线程仍然正在执行,则发起硬件线程分支到包括在由位6-10标识的通用寄存器中的目标地址(参见图10以及对应的文本以便了解进一步的细节)。正如本领域技术人员能够意识到的那样,BCE指令1200可以包括更多或更少的位和/或以不同于图12所示方式而被地划分。
图13是示出条件寄存器设置if辅助线程执行(CRSE)指令的示例性示图。CRSE指令1300使得软件程序能够确定特定辅助硬件线程是否仍然正在执行代码,这是通过在发起硬件线程确定辅助硬件线程正在执行时指示发起硬件线程设置条件寄存器位来实现的。
CRSE指令1300包括op代码字段(位0-5)以及扩展的op代码字段(位16-20),当硬件线程执行时,这些字段指示“发起”硬件线程检查辅助硬件线程是否正在执行。BCE指令1200包括位11-15,这些位标识了包括供辅助硬件线程检查的辅助线程号(ATN)的通用寄存器。位6-10指定了如下通用寄存器,该通用寄存器包括当辅助硬件线程正在执行时发起硬件寄存器设置的条件寄存器位位置(参见图11以及对应的文本以便了解进一步的细节)。正如本领域技术人员能够意识到的那样,处理器将条件寄存器位用于各种类型的分支指令,或者用于指示状态,诸如算术运算溢出。正如本领域技术人员还能够意识到的那样,BCE指令1200可以包括更多或更少的位和/或以不同于图13所示方式而被划分。
图14是示出调用多个辅助硬件线程的发起硬件线程的示例性示图。当软件程序1410开始时,处理器100向软件程序1410指派发起硬件线程1420。软件程序1410包括在此描述的多个分支和发起指令(例如BAIL和/或BAIH指令),诸如用于执行特定任务的不同的代码段。接着,发起硬件线程1420检查硬件线程可用性、发起辅助硬件线程1450-1470并且向每个辅助硬件线程指派特定的辅助线程号(ATN)。发起硬件线程1420在硬件状态存储1440中存储ATN并且软件程序1410在软件状态存储1415中存储ATN以用于跟踪目的。
发起硬件线程1420包括ATSR 1430,该ATSR 1430存储关于最近发起的辅助硬件线程的信息(例如辅助硬件线程1470的ATN)。接着,辅助硬件线程1450-1470中最后一个停止执行的辅助硬件线程在ATSR 1430中存储信息(参见图2、图5以及对应的文本以便了解进一步的细节)。
图15是示出调用辅助硬件线程的发起硬件线程(该辅助硬件线程接着调用其他辅助硬件线程)的示例性示图。当软件程序1510开始时,处理器1500向软件程序1510指派发起硬件线程1520。软件程序1510包括在此描述的例如可以捆绑在软件代码内的多个分支和发起指令。
发起硬件线程1520执行分支和发起指令之一,这引起发起硬件线程1520调用辅助硬件线程1550。发起硬件线程1520在硬件状态存储1540中存储用于辅助硬件线程1550的对应的ATN,并且软件程序1510在软件状态存储1515中存储ATN,正如在此所讨论的那样。
辅助硬件线程1550开始执行,并且执行两个分支和发起指令。接着,辅助硬件线程1550发起辅助硬件线程1580-1590,并且相应地在硬件状态存储1570中存储对应的ATN。软件程序1510还在软件状态存储1515中存储ATN,正如在此所讨论的那样。
此外,辅助硬件线程1550使用ATSR 1560来跟踪辅助硬件线程1580-1590。照这样,ATSR 1560包括关于最近发起的辅助硬件线程的信息(例如辅助硬件线程1590的ATN)。接着,辅助硬件线程1580-1590中最后一个停止执行的辅助硬件线程在ATSR 1560中存储信息(参见图2、图5以及对应的文本以便了解进一步的细节)。
图16是示出调用不同处理器上的辅助硬件线程的发起硬件线程的示例性示图。图16类似于图15,只不过辅助硬件线程在与执行发起硬件线程的发起处理器不同的处理器上执行。
当软件程序1610开始时,处理器1600向软件程序1610指派发起硬件线程1620。软件程序1610包括在此描述的例如可以捆绑在软件代码内的多个分支和发起指令。
发起硬件线程1620执行分支和发起指令之一,这引起发起硬件线程调用处理器1650上的辅助硬件线程1650,并且在硬件状态存储1640中存储对应的ATN。软件程序1610还在软件状态存储1615中存储ATN。
辅助硬件线程1660开始执行,并且执行两个分支和发起指令。接着,辅助硬件线程1660发起辅助硬件线程1690-1695,并且相应地在硬件状态存储1680中存储对应的ATN。软件程序1610还在软件状态存储1615中存储ATN,正如在此所讨论的那样。
辅助硬件线程1660使用ATSR 1670来跟踪辅助硬件线程1690-1695。照这样,ATSR 1670包括关于最近发起的辅助硬件线程的信息(例如辅助硬件线程1695的ATN)。接着,辅助硬件线程1690-1695中最后一个停止执行的辅助硬件线程在ATSR 1670中存储信息(参见图2、图5以及对应的文本以便了解进一步的细节)。
图17图示了信息处理系统1700,其是能够执行在此描述的计算操作的计算机系统的简化示例。信息处理系统1700包括耦合到处理器接口总线1712的一个或多个处理器1710。处理器接口总线1712将处理器1710连接到存储器控制器,该存储器控制器连接到系统存储器1720,并且为处理器1710提供访问系统存储器的手段。图形控制器1725也连接到存储器控制器。在一个实施方式中,快速PCI总线1718将存储器控制器连接到图形控制器1725。图形控制器1725连接到显示设备1730,诸如计算机监视器。
存储器控制器1715和I/O控制器1735使用总线1719彼此连接。在一个实施方式中,该总线是沿存储器控制器1715与I/O控制器1735之间的每个方向、以高速传递数据的直接媒体接口(DMI)总线。又被称为I/O控制器集线器(ICH)I/O控制器1735是如下芯片,该芯片一般地实现以比由存储器控制器提供的能力更慢的速度操作的能力。I/O控制器1735通常提供用于连接各种组件的各种总线。这些总线包括例如PCI和快速PCI总线、ISA总线、系统管理总线(SMBus或SMB)和/或低管脚计数(LPC)总线。LPC总线通常连接窄带设备,诸如引导ROM 1796和“既有(legacy)”I/O设备(使用“超级I/O”芯片)。“既有”I/O设备(1798)可以包括例如串行和并行端口、键盘、鼠标和/或软盘控制器。LPC总线还将I/O控制器1735连接到可信平台模块(TPM)1795。通常包括在I/O控制器1735中的其他组件包括直接存储器存取(DMA)控制器、可编程中断控制器(PIC)以及存储设备控制器,该存储设备控制器使用总线1784将I/O控制器1735连接到非易失性存储器设备1785(诸如硬盘驱动器)。
Express卡(ExpressCard)1755是将可热插拔的设备连接到信息处理系统的插槽。Express卡1755支持快速PCI和USB连接两者,因为其使用通用串行总线(USB)和快速PCI总线两者而连接到I/O控制器1735。I/O控制器1735包括USB控制器1740,该USB控制器1740向连接到USB的设备提供USB连接。这些设备包括网络摄像头(摄像头)1750、红外(IR)接收器1748、键盘和跟踪板1744以及提供无线个人区域网络(PAN)的蓝牙设备1746。USB控制器1740还提供到其他各种各样的USB连接的设备1742的连接,这些设备诸如鼠标、可移动非易失性存储设备1745、调制解调器、网卡、ISDN连接器、传真、打印机、USB集线器以及很多其他类型的USB连接的设备。尽管可移动非易失性存储设备1745被示出为USB连接的设备,但可移动非易失性存储设备1745可以使用不同的接口(诸如Firewire接口等)来连接。
无线局域网(LAN)设备1775经由PCI或快速PCI总线1772连接到I/O控制器1735。LAN设备1775通常实现全部使用相同的协议在信息处理系统1700与另一计算机系统或设备之间无线地进行通信的空中调制技术的IEEE 802.11标准之一。光存储设备1790使用串行ATA(SATA)总线1788连接到I/O控制器1735。串行ATA适配器和设备在高速串行链路之上进行通信。串行ATA总线还将I/O控制器1735连接到其他形式的存储设备,诸如硬盘驱动器。音频电路1760,诸如声卡,经由总线1758连接到I/O控制器1735。音频电路1760还提供如下功能,诸如音频线路输入和光数字音频输入端口1762、光数字输出和头戴式耳机插孔1764、内部扬声器1766以及内部麦克风1768。以太网控制器1770使用诸如PCI或快速PCI总线之类的总线连接到I/O控制器1735。以太网控制器1770将信息处理系统1700连接到计算机网络,诸如局域网(LAN)、因特网以及其他公共的和专用的计算机网络。
尽管图17示出了一个信息处理系统,但信息处理系统可以采取很多形式。例如,信息处理系统可以采取台式机、服务器、便携机、膝上型计算机、笔记本或者其他形式因素的计算机或数据处理系统的形式。此外,信息处理系统可以采取其他形状因数,诸如个人数字助理(PDA)、游戏设备、ATM机、携带式电话设备、通信设备或者包括处理器和存储器的其他设备的形式。
附图中的流程图和框图图示了根据本公开的各种实施方式的系统、方法以及计算机程序产品的可能的实现的架构、功能和操作。考虑到这一点,流程图或框图中的每个块可以代表模块、区段或者部分代码,其包括用于实现所指定的逻辑功能的一个或多个可执行指令。还应当注意,在某些备选实现中,块中所示的功能可能不以附图中所示的顺序发生。例如,依赖于所涉及的功能,连续示出的两个块实际上可以基本上并发地执行,或者块有时可以按照相反的顺序执行。还应当注意,框图和/或流程图图示的每个块以及框图和/或流程图图示的块的组合可以通过执行所指定的功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现。
尽管已经示出和描述了本公开的特定实施方式,但对本领域技术人员来说将显然的是,基于此处的教示,在不脱离本公开及其更广泛的方面的情况下,可以进行改变和修改。因此,所附权利要求书旨在在它们的范围内涵盖在本公开的真实精神和范围内的所有此类改变和修改。另外,应当理解,本公开仅仅由所附权利要求书限定。本领域技术人员将理解,如果预期特定数量的所引入的权利要求元素,则此类预期将明确地记载在权利要求书中,而在没有此类记载的情况下,并不存在此类限制。对于非限制性示例,为了有助于理解,所附权利要求书包含对引导性短语“至少一个”和“一个或多个”的使用以引入权利要求元素。然而,对此类短语的使用不应当解释为暗示由“一种”或“一个”引入权利要求元素将包含此类所引入的权利要求元素的任何特定权利要求限制为仅包含一个此类元素的公开,即使当同一权利要求包括引导性短语“一个或多个”或“至少一个”以及诸如“一种”或“一个”之类时也是如此;这也适用于定冠词在权利要求书中的使用。

Claims (20)

1.一种机器实现的方法,包括:
由发起硬件线程发起第一辅助硬件线程,其中所述第一辅助硬件线程执行第一代码段;
设置辅助线程执行指示符,指示一个或多个执行辅助硬件线程;
发起第二辅助硬件线程,其中所述第二辅助硬件线程执行第二代码段;
标识所述辅助线程执行指示符中的改变,所述改变表示所述第一辅助硬件线程和所述第二辅助硬件线程两者终止;以及
响应于标识所述辅助线程执行指示符中的所述改变,处理辅助硬件线程结果。
2.根据权利要求1的方法,其中调用所述发起硬件线程以发起所述第一辅助硬件线程的软件程序通过对所述辅助线程执行指示符执行单一读取操作,确定所述第一辅助硬件线程和所述第二辅助硬件线程两者停止执行。
3.根据权利要求1的方法,其中辅助线程状态寄存器包括所述辅助线程执行指示符,所述方法还包括:
完成对所述第一辅助硬件线程的执行;
由第一硬件线程响应于所述第一硬件线程检测到第二硬件线程仍然正在执行,确定不改变所述辅助硬件线程位;
在完成所述第一辅助硬件线程之后,完成对所述第二辅助硬件线程的执行;
由所述第二硬件线程响应于所述第二硬件线程检测到所述第一硬件线程并非正在执行,确定改变所述辅助硬件线程位;以及
由所述第二辅助硬件线程在包括在所述辅助线程状态寄存器中的辅助线程状态字段中存储终止指示符,其中所述终止指示符指示用于所述第二辅助硬件线程终止的根据。
4.根据权利要求3的方法,其中响应于所述第二硬件线程检测到所述第一硬件线程并非正在执行,所述方法还包括:
由所述第二辅助硬件线程在包括在所述辅助线程状态寄存器中的停止辅助线程状态字段中存储停止辅助线程参数值,其中所述停止辅助线程参数值表明所述第二辅助硬件线程是否成功地完成执行所述第二代码段。
5.根据权利要求1的方法,其中所述第一代码段和所述第二代码段包括在软件程序中,所述方法还包括:
由所述发起硬件线程执行包括在所述软件程序中的分支条件if辅助线程执行BCE指令,所述执行还包括:
从所述BCE指令提取多个通用寄存器号,其中所述多个通用寄存器号标识多个通用寄存器,所述多个通用寄存器包括辅助处理器号和目标地址;
从所述多个通用寄存器获取所述辅助处理器号和所述目标地址;
响应于确定所获取的辅助处理器号对应于所述第一辅助硬件线程,确定所述第一辅助硬件线程是否正在执行;
响应于确定所述第一辅助硬件线程正在执行,分支到所述目标地址;以及
响应于确定所述第一硬件线程并非正在执行,执行在所述BCE指令之后的下一指令。
6.根据权利要求1的方法,其中
所述发起硬件线程包括第一执行单元;并且
所述第一辅助硬件线程包括不同于所述第一执行单元的第二执行单元。
7.根据权利要求1的方法,其中所述第一代码段和所述第二代码段包括在软件程序中,所述方法还包括:
由所述发起硬件线程执行包括在软件程序中的条件寄存器设置if辅助线程执行CRSE指令,所述执行还包括:
从所述CRSE指令提取多个通用寄存器号,其中所述多个通用寄存器号标识多个通用寄存器,所述多个通用寄存器包括辅助处理器号和条件寄存器位号;
从所述多个通用寄存器获取所述辅助处理器号和所述条件寄存器位号;
响应于确定所获取的辅助处理器号对应于所述第一辅助硬件线程,确定所述第一辅助硬件线程是否正在执行;
响应于确定所述第一辅助硬件线程正在执行,在条件寄存器中设置对应于所获取的条件位寄存器号的条件位;以及
响应于确定所述第一辅助硬件线程并非正在执行,将所述条件寄存器中的对应于所获取的条件位寄存器号的条件位清零。
8.根据权利要求7的方法,还包括:
由所述软件程序检测设置了所述条件位;以及
响应于检测到设置了所述条件位,执行软件代码。
9.根据权利要求1的方法,其中所述第一辅助硬件线程调用所述第二辅助硬件线程。
10.根据权利要求1的方法,其中所述发起硬件线程调用所述第二辅助硬件线程。
11.一种信息处理系统,包括:
一个或多个处理器;
耦合到所述处理器中的至少一个的存储器;
存储在所述存储器中、并且由所述处理器中的至少一个执行以便执行以下动作的一组指令:
由包括在所述处理器之一中的发起硬件线程发起包括在所述处理器之一中的第一辅助硬件线程,其中所述第一辅助硬件线程执行第一代码段;
设置辅助线程执行指示符,指示一个或多个执行辅助硬件线程;
发起包括在所述处理器之一中的第二辅助硬件线程,其中所述第二辅助硬件线程执行第二代码段;
标识所述辅助线程执行指示符中的改变,所述改变表示所述第一辅助硬件线程和所述第二辅助硬件线程两者终止;以及
响应于标识所述辅助线程执行指示符中的所述改变,处理辅助硬件线程结果。
12.根据权利要求11的信息处理系统,其中所述一组指令通过对所述辅助线程执行指示符执行单一读取操作,确定所述第一辅助硬件线程和所述第二辅助硬件线程两者停止执行。
13.根据权利要求11的信息处理系统,其中辅助线程状态寄存器包括所述辅助线程执行指示符,所述一组指令执行动作:
完成对所述第一辅助硬件线程的执行;
由所述第一硬件线程响应于所述第一硬件线程检测到所述第二硬件线程仍然正在执行,确定不改变所述辅助硬件线程位;
在完成所述第一辅助硬件线程之后,完成对所述第二辅助硬件线程的执行;
由所述第二硬件线程响应于所述第二硬件线程检测到所述第一硬件线程并非正在执行,确定改变所述辅助硬件线程位;以及
由所述第二辅助硬件线程在包括在所述辅助线程状态寄存器中的辅助线程状态字段中存储终止指示符,其中所述终止指示符指示用于所述第二辅助硬件线程终止的根据。
14.根据权利要求13的信息处理系统,其中响应于所述第二硬件线程检测到所述第一硬件线程并非正在执行,所述一组指令执行动作:
由所述第二辅助硬件线程在包括在所述辅助线程状态寄存器中的停止辅助线程状态字段中存储停止辅助线程参数值,其中所述停止辅助线程参数值指示所述第二辅助硬件线程是否成功地完成了执行所述第二代码段。
15.根据权利要求11的信息处理系统,其中所述第一代码段和所述第二代码段包括在所述一组指令中,并且其中所述一组指令执行动作:
由所述发起硬件线程执行包括在所述一组指令中的分支条件if辅助线程执行BCE指令,所述执行还包括:
从所述BCE指令提取多个通用寄存器号,其中所述多个通用寄存器号标识多个通用寄存器,所述多个通用寄存器包括辅助处理器号和目标地址;
从所述多个通用寄存器获取所述辅助处理器号和所述目标地址;
响应于确定所获取的辅助处理器号对应于所述第一辅助硬件线程,而确定所述第一辅助硬件线程是否正在执行;
响应于确定所述第一辅助硬件线程正在执行,分支到所述目标地址;以及
响应于确定所述第一硬件线程并非正在执行,执行在所述BCE指令之后的下一指令。
16.根据权利要求15的信息处理系统,其中所述一组指令执行动作:
由所述一组指令检测所述发起硬件线程分支到所述目标地址;以及
响应于检测到所述发起硬件线程分支到所述目标地址,执行软件代码。
17.根据权利要求11的信息处理系统,其中所述第一代码段和所述第二代码段包括在所述一组指令中,其中所述一组指令执行动作:
由所述发起硬件线程执行包括在所述一组指令中的条件寄存器设置if辅助线程执行CRSE指令,所述执行还包括:
从所述CRSE指令提取多个通用寄存器号,其中所述多个通用寄存器号标识多个通用寄存器,所述多个通用寄存器包括辅助处理器号和条件寄存器位号;
从所述多个通用寄存器获取所述辅助处理器号和所述条件寄存器位号;
响应于确定所获取的辅助处理器号对应于所述第一辅助硬件线程,确定所述第一辅助硬件线程是否正在执行;
响应于确定所述第一辅助硬件线程正在执行,在条件寄存器中设置对应于所获取的条件位寄存器号的条件位;以及
响应于确定所述第一辅助硬件线程不正在执行,将所述条件寄存器中的对应于所获取的条件位寄存器号的条件位清零。
18.根据权利要求17的信息处理系统,其中所述一组指令执行动作:
检测设置了所述条件位;以及
响应于检测到设置了所述条件位而执行软件代码。
19.一种处理器,包括:
发起硬件线程;
由所述发起硬件线程发起的第一辅助硬件线程,所述第一辅助硬件线程执行第一代码段;
由所述发起硬件线程响应于发起所述第一辅助硬件线程而配置的辅助线程执行指示符;
由所述发起硬件线程发起的第二辅助硬件线程,所述第二辅助硬件线程执行第二代码段;以及
其中所述发起硬件线程检测所述辅助线程执行指示符中的改变,所述改变表示所述第一辅助硬件线程和所述第二辅助硬件线程两者终止。
20.根据权利要求20的处理器,其中软件程序通过对所述辅助线程执行指示符执行单一读取操作,确定所述第一辅助硬件线程和所述第二辅助硬件线程两者停止执行。
CN201110288515.2A 2010-09-20 2011-09-19 对多个辅助硬件线程进行可缩放状态跟踪的方法和系统 Active CN102411512B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/886,149 US8713290B2 (en) 2010-09-20 2010-09-20 Scaleable status tracking of multiple assist hardware threads
US12/886,149 2010-09-20

Publications (2)

Publication Number Publication Date
CN102411512A true CN102411512A (zh) 2012-04-11
CN102411512B CN102411512B (zh) 2015-04-08

Family

ID=45818793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110288515.2A Active CN102411512B (zh) 2010-09-20 2011-09-19 对多个辅助硬件线程进行可缩放状态跟踪的方法和系统

Country Status (3)

Country Link
US (2) US8713290B2 (zh)
JP (1) JP5710434B2 (zh)
CN (1) CN102411512B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015024433A1 (zh) * 2013-08-22 2015-02-26 华为技术有限公司 线程运行方法及装置
CN110121702A (zh) * 2017-10-20 2019-08-13 图核有限公司 结合多线程处理器中多个线程的状态

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793474B2 (en) 2010-09-20 2014-07-29 International Business Machines Corporation Obtaining and releasing hardware threads without hypervisor involvement
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US11080064B2 (en) 2014-10-28 2021-08-03 International Business Machines Corporation Instructions controlling access to shared registers of a multi-threaded processor
US9575802B2 (en) 2014-10-28 2017-02-21 International Business Machines Corporation Controlling execution of threads in a multi-threaded processor
US10031753B2 (en) * 2015-05-22 2018-07-24 Nxp Usa, Inc. Computer systems and methods for executing contexts with autonomous functional units
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
CN106528049B (zh) * 2016-11-17 2019-06-11 上海兆芯集成电路有限公司 在多存储体条件分支预测器中用于更新事件的随机数产生
GB2569269B (en) * 2017-10-20 2020-07-15 Graphcore Ltd Synchronization in a multi-tile processing arrangement
US11921843B2 (en) * 2021-09-26 2024-03-05 Ceremorphic, Inc. Multi-threaded secure processor with control flow attack detection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247676A (en) * 1989-06-29 1993-09-21 Digital Equipment Corporation RPC based computer system using transparent callback and associated method
US20020013861A1 (en) * 1999-12-28 2002-01-31 Intel Corporation Method and apparatus for low overhead multithreaded communication in a parallel processing environment
US20070271565A1 (en) * 2006-05-18 2007-11-22 Sun Microsystems, Inc. Anticipatory helper thread based code execution
CN101477458A (zh) * 2008-12-15 2009-07-08 浙江大学 基于处理器和fpga混合架构的硬件线程执行方法

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233599B1 (en) 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US5978857A (en) 1997-07-22 1999-11-02 Winnov, Inc. Multimedia driver having reduced system dependence using polling process to signal helper thread for input/output
US6105055A (en) 1998-03-13 2000-08-15 Siemens Corporate Research, Inc. Method and apparatus for asynchronous multimedia collaboration
US6438671B1 (en) 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6629237B2 (en) 2000-09-01 2003-09-30 Intel Corporation Solving parallel problems employing hardware multi-threading in a parallel processing environment
US6742146B2 (en) 2001-02-14 2004-05-25 Emc Corporation Techniques for providing data within a data storage system
US6928645B2 (en) 2001-03-30 2005-08-09 Intel Corporation Software-based speculative pre-computation and multithreading
CA2346762A1 (en) 2001-05-07 2002-11-07 Ibm Canada Limited-Ibm Canada Limitee Compiler generation of instruction sequences for unresolved storage devices
US20020199179A1 (en) 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7398518B2 (en) * 2002-12-17 2008-07-08 Intel Corporation Method and apparatus for measuring thread wait time
US7849465B2 (en) 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
US7587584B2 (en) 2003-02-19 2009-09-08 Intel Corporation Mechanism to exploit synchronization overhead to improve multithreaded performance
US7321965B2 (en) 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7404067B2 (en) 2003-09-08 2008-07-22 Intel Corporation Method and apparatus for efficient utilization for prescient instruction prefetch
US20050071438A1 (en) 2003-09-30 2005-03-31 Shih-Wei Liao Methods and apparatuses for compiler-creating helper threads for multi-threading
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
US7631307B2 (en) 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US7676655B2 (en) 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US20060080661A1 (en) 2004-10-07 2006-04-13 International Business Machines Corporation System and method for hiding memory latency
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8230422B2 (en) 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US20070055852A1 (en) 2005-09-06 2007-03-08 Alcatel Processing operation management systems and methods
WO2007043130A1 (ja) * 2005-10-03 2007-04-19 Fujitsu Limited 描画装置、半導体集積回路装置及び描画方法
US8209690B2 (en) * 2006-01-19 2012-06-26 University Of Maryland System and method for thread handling in multithreaded parallel computing of nested threads
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US20080046689A1 (en) * 2006-08-21 2008-02-21 Tien-Fu Chen Method and apparatus for cooperative multithreading
US8261046B2 (en) 2006-10-27 2012-09-04 Intel Corporation Access of register files of other threads using synchronization
US8296775B2 (en) 2007-01-31 2012-10-23 Microsoft Corporation Efficient context switching of virtual processors by managing physical register states in a virtualized environment
US8214808B2 (en) 2007-05-07 2012-07-03 International Business Machines Corporation System and method for speculative thread assist in a heterogeneous processing environment
US7779234B2 (en) 2007-10-23 2010-08-17 International Business Machines Corporation System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US8775778B2 (en) 2008-02-01 2014-07-08 International Business Machines Corporation Use of a helper thread to asynchronously compute incoming data
US20100162247A1 (en) 2008-12-19 2010-06-24 Adam Welc Methods and systems for transactional nested parallelism
US8423750B2 (en) 2010-05-12 2013-04-16 International Business Machines Corporation Hardware assist thread for increasing code parallelism
US8667253B2 (en) 2010-08-04 2014-03-04 International Business Machines Corporation Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247676A (en) * 1989-06-29 1993-09-21 Digital Equipment Corporation RPC based computer system using transparent callback and associated method
US20020013861A1 (en) * 1999-12-28 2002-01-31 Intel Corporation Method and apparatus for low overhead multithreaded communication in a parallel processing environment
US20070271565A1 (en) * 2006-05-18 2007-11-22 Sun Microsystems, Inc. Anticipatory helper thread based code execution
CN101477458A (zh) * 2008-12-15 2009-07-08 浙江大学 基于处理器和fpga混合架构的硬件线程执行方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015024433A1 (zh) * 2013-08-22 2015-02-26 华为技术有限公司 线程运行方法及装置
CN104424027A (zh) * 2013-08-22 2015-03-18 华为技术有限公司 线程运行方法及装置
CN104424027B (zh) * 2013-08-22 2018-07-13 华为技术有限公司 线程运行方法及装置
CN110121702A (zh) * 2017-10-20 2019-08-13 图核有限公司 结合多线程处理器中多个线程的状态
TWI703496B (zh) * 2017-10-20 2020-09-01 英商葛夫科有限公司 處理器及其操作之方法,以及電腦程式產品
US11113060B2 (en) 2017-10-20 2021-09-07 Graphcore Limited Combining states of multiple threads in a multi threaded processor
CN110121702B (zh) * 2017-10-20 2023-07-21 图核有限公司 处理器、操作处理器的方法及可读存储介质

Also Published As

Publication number Publication date
US20130139168A1 (en) 2013-05-30
US8719554B2 (en) 2014-05-06
JP2012064215A (ja) 2012-03-29
US20120072707A1 (en) 2012-03-22
CN102411512B (zh) 2015-04-08
US8713290B2 (en) 2014-04-29
JP5710434B2 (ja) 2015-04-30

Similar Documents

Publication Publication Date Title
CN102411512A (zh) 对多个辅助硬件线程进行可缩放状态跟踪的方法和系统
CN103154885A (zh) 在没有管理程序介入的情况下获得和释放硬件线程
US11157303B2 (en) Detecting bus locking conditions and avoiding bus locks
GB2513532A (en) Distributed transaction routing
US9971662B2 (en) Compare point detection in multi-threaded computing environments
CN102822802A (zh) 多核处理器系统、控制程序以及控制方法
US20180203724A1 (en) Fast task dispatching using a dispatching processor
US8429322B2 (en) Hotplug removal of a device in a virtual machine system
US10318343B2 (en) Migration methods and apparatuses for migrating virtual machine including locally stored and shared data
US8935516B2 (en) Enabling portions of programs to be executed on system z integrated information processor (zIIP) without requiring programs to be entirely restructured
US10209912B2 (en) Pre-allocating save areas of a memory
US9697039B2 (en) Efficient coordination across distributed computing systems
US8694989B1 (en) Virtual installation environment
US8719638B2 (en) Assist thread analysis and debug mechanism
US10908902B2 (en) Distance based branch prediction and detection of potential call and potential return instructions
US20180150319A1 (en) Template-based methodology for validating hardware features
US9715432B2 (en) Memory fault suppression via re-execution and hardware FSM
US8682855B2 (en) Methods, systems, and physical computer storage media for backing up a database

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