CN106133689A - 多线程计算机***中的线程上下文恢复 - Google Patents
多线程计算机***中的线程上下文恢复 Download PDFInfo
- Publication number
- CN106133689A CN106133689A CN201580015798.XA CN201580015798A CN106133689A CN 106133689 A CN106133689 A CN 106133689A CN 201580015798 A CN201580015798 A CN 201580015798A CN 106133689 A CN106133689 A CN 106133689A
- Authority
- CN
- China
- Prior art keywords
- thread
- pattern
- program
- core
- configuration
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 89
- 230000008569 process Effects 0.000 claims description 43
- 238000004590 computer program Methods 0.000 claims description 19
- 230000008447 perception Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 7
- 238000003860 storage Methods 0.000 description 39
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 21
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 21
- 230000006870 function Effects 0.000 description 15
- 230000015654 memory Effects 0.000 description 15
- 102100029716 DnaJ homolog subfamily A member 3, mitochondrial Human genes 0.000 description 14
- 101000866012 Homo sapiens DnaJ homolog subfamily A member 3, mitochondrial Proteins 0.000 description 14
- 101001112162 Homo sapiens Kinetochore protein NDC80 homolog Proteins 0.000 description 11
- 102100023890 Kinetochore protein NDC80 homolog Human genes 0.000 description 11
- 230000004044 response Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 101001038001 Homo sapiens Lysophosphatidic acid receptor 2 Proteins 0.000 description 9
- 102100040387 Lysophosphatidic acid receptor 2 Human genes 0.000 description 9
- 101001038006 Homo sapiens Lysophosphatidic acid receptor 3 Proteins 0.000 description 7
- 102100040388 Lysophosphatidic acid receptor 3 Human genes 0.000 description 7
- 230000004913 activation Effects 0.000 description 7
- 230000000717 retained effect Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 241000208340 Araliaceae Species 0.000 description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 235000008434 ginseng Nutrition 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- TVEXGJYMHHTVKP-UHFFFAOYSA-N 6-oxabicyclo[3.2.1]oct-3-en-7-one Chemical compound C1C2C(=O)OC1C=CC2 TVEXGJYMHHTVKP-UHFFFAOYSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 101001038043 Homo sapiens Lysophosphatidic acid receptor 4 Proteins 0.000 description 1
- 102100040405 Lysophosphatidic acid receptor 4 Human genes 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
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)
- Hardware Redundancy (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
一种多线程计算机***包括配置,所述配置具有能在单线程(ST)模式与多线程(MT)模式之间配置的核心。所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。多线程工具被配置为控制对所述配置的利用以执行一种方法,所述方法包括基于自MT模式至ST模式的切换来停用一个或多个次要线程。使次要线程的线程上下文不可用于程序。基于指示MT的最后设定程序指定最大线程id,通过以下操作获得所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述线程上下文。
Description
技术领域
本发明一般地涉及一种支持多个线程的计算机***,且更具体言之,涉及多线程计算机***中的线程上下文恢复。
背景技术
当计算机***的处理器速度在过去数十年内增加时,可存取此类计算机***的存储器所藉以的速度未成比例增加。因此,处理器的周期时间愈快,等待数据自存储器中取回的延迟愈明显。藉由各种级别的缓存且在最新处理器中藉由多线程(MT)减轻此类延迟的影响。
MT允许处理器的各种核心资源由多个指令流(称为线程)共享。核心资源可包括执行单元、高速缓存、转换后备缓冲器(TLB)及其类似者,其可一般统称为核心。在由高速缓存未命中所产生的延时或一个线程中的其他延迟期间,一个或多个其他线程可利用核心资源,因此增加核心资源的利用率。在超标量处理器同时多线程(SMT)实施中,多个线程可同时由一个或多个核心的核心资源来服务。
在现代硬件平台中,MT通常以对在MT硬件上运行的操作***(OS)透明的方式实施。此特性的一个方面为OS不需要修改以利用MT硬件。然而,相对于OS的透明MT操作可导致响应时间、容量供应、容量规划及计费的高可变性。此可变性可出现是因为OS不感知其任务是否具有核心的独占性控制,或其任务是否作为共享核心的线程执行。借助设计,当在核心在使用中时存在高平均线程密度时,可获得具MT能力的硬件上的存储器密集工作负荷的最高容量。额外容量可归因于由MT提供的增加的高速缓存利用。如果OS不一致地维持所利用核心的高平均线程密度,则由MT提供的额外总吞吐量容量将不可用。举例而言,如果当存在低计算利用率时硬件每核心执行单一MT线程且当存在高计算利用率时以高线程密度执行,则其可非常难以判定多少总MT计算容量可用于工作负荷。MT线程利用的此硬件可变性可以以类似于先前关于容量所描述的方式导致事务响应时间及计费两者的可变性。
发明内容
各实施例包括一种用于多线程计算机***中的线程上下文恢复的***、方法及计算机程序产品。一个方面为一种配置,所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心(core)。所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。多线程工具被配置为控制对所述配置的利用以执行一种方法,所述方法包括基于自MT模式至ST模式的切换来停用一个或多个次要线程。使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序。在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id。基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
根据另一方面,提供一种用于配置中的线程上下文恢复的计算机实施的方法。所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,其中所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。所述方法包括基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程。使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序。在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id。基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
另一方面包括一种用于配置中的线程上下文恢复的计算机程序产品。所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。所述计算机程序产品包括具有程序指令的计算机可读存储介质,其中所述计算机可读存储介质并非信号。所述程序指令能由处理电路读取以使所述处理电路执行一种方法。所述方法包括基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程。使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序。在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id。基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
附图说明
当本说明书完结时在权利要求中特定地指出且清楚地要求保护被视为实施例的主题。实施例的前述及其他特征及优点自结合附图而进行的以下详细描述显而易见,在附图中:
图1A描绘可根据一个实施例实施的计算环境;
图1B描绘可根据一个实施例实施的计算环境;
图2描绘可根据一个实施例实施的核心的处理电路;
图3描绘可根据一个实施例实施的计算环境;
图4描绘可根据一个实施例实施的计算环境中的***管理程序(hypervisor)上下文保持的一个实例;
图5描绘根据一个实施例的用于多线程的动态启用的过程流;
图6A描绘根据一个实施例的CPU地址扩展过程的一个实例;
图6B描绘根据一个实施例的CPU地址缩短过程的一个实例;
图7描绘根据一个实施例的用于设定多线程命令(order)的过程流;
图8描绘根据一个实施例的存储多线程能力信息的一个实例;
图9描绘根据一个实施例的用于确定多线程能力的过程流;
图10描绘根据一个实施例的各种线程上下文位置的一个实例;
图11描绘根据一个实施例的多线程寄存器保留的一个实例;
图12描绘根据一个实施例的用于多线程寄存器保留的过程流;
图13描绘根据一个实施例的多线程寄存器恢复的一个实例;
图14描绘根据一个实施例的用于多线程寄存器恢复的过程流;及
图15描绘根据一个实施例的计算机可读介质。
具体实施方式
例示性实施例提供支持单线程及多线程操作模式的计算机***中的多线程操作。如本文所使用,逻辑线程是指单一指令流及其相关联状态。亦即,在架构级别处,每一逻辑线程表示独立中央处理单元(CPU)或处理器。在硬件级别处,当分派线程时,线程为与客体状态的维持组合的与逻辑线程相关联的指令流的执行。因此,本文中可互换地使用术语“线程”与“CPU”。
在一个例示性实施例中,CPU含有用于指令执行、中断动作、时序功能、初始程序加载及其他机器相关功能的定序及处理工具。CPU定义可映射至多种基础物理实施的逻辑功能。CPU在执行指令时可处理固定长度的二进制整数及浮点数(例如,二进制、十进制及十六进制)、可变长度的十进制整数,及固定或可变长度的逻辑信息。处理可为并行或串行的。处理元素的宽度、移位路径的多重性及执行不同类型算术中的同时性程度可在不影响逻辑结果的情况下在CPU的一个模型与另一模型之间不同。
CPU执行的指令可包括多个指令类别,诸如通用、十进制、浮点支持(FPS)、二进制浮点(BFP)、十进制浮点(DFP)、十六进制浮点(HFP)、控制及I/O指令。通用指令可用于执行二进制整数算术运算及逻辑、分支及其他非算术运算。十进制指令对十进制格式的数据进行运算。BFP、DFP及HFP指令分别对BFP、DFP及HFP格式的数据进行运算,同时FPS指令独立于格式对浮点数据进行运算或自一种格式转换至另一种格式。特权控制指令及I/O指令可在CPU在监督状态下时被执行,且半特权控制指令可在经历适当授权机制的情况下在问题状态下执行。
CPU提供可用于程序但在主存储装置中不具有可寻址表示的寄存器。寄存器可包括(例如)当前程序状态字组(PSW)、通用寄存器、浮点寄存器及浮点控制寄存器、向量寄存器、控制寄存器、存取寄存器、前缀寄存器、当天时间(TOD)可编程寄存器及用于时钟比较器及CPU定时器的寄存器。此寄存器集合可被称为CPU的架构式寄存器上下文。在配置中的每一CPU可提供对TOD时钟的存取,TOD时钟可由配置中的所有CPU共享。指令操作码可判定哪一类型的寄存器将用于操作。
每一CPU可具有指示其是否提供全套功能及工具(例如,通用CPU),或是否预期处理特定类型的工作负荷(例如,特殊CPU)的类型属性。主要CPU为通用CPU或具有与在最后初始程序加载(IPL)操作之后开始的CPU(IPL CPU)相同类型的CPU。次要CPU为具有不同于IPLCPU的CPU类型的除通用CPU以外的任何CPU。
多线程工具可用于实施支持架构的计算机***上。多线程工具提供对于多线程的支持以启用共享核心的一组线程(其亦可被称为CPU)。当多线程工具被启用时,核心内的CPU可共享诸如执行单元或高速缓存的某些硬件资源。当核心中的一个CPU等待硬件资源时(通常,在等待存储器存取时),核心中的其他CPU可利用核心中的共享资源而非使其保持闲置。当已安装及启用多线程工具时,线程与为核心的成员的CPU同义。当多线程工具未被安装或工具被安装但未被启用时,核心包括单一CPU或线程。
当多线程工具被安装时,其可通过执行设定多线程信号处理器(SIGP)命令而被启用。在一个例示性实施例中,当多线程工具被启用时,在配置中的CPU的数目增加一倍数,该倍数的值由程序指定最大线程标识(PSMTID)确定。核心中的CPU的数目可比PSMTID多1。对应于此倍数的数个CPU被分组至核心中。配置中的相同CPU类型的每一核心可具有相同数目个CPU。核心内的每一CPU为相同CPU类型;然而,基于模型及CPU类型,核心内的一些CPU可能不可操作。
在一个例示性实施例中,控制程序(诸如,操作***(OS))显式地启用多线程以便其可由OS管理的配置使用。备选地,***管理程序可启用多线程,且***管理程序的客体及其应用可明显受益。应用程序通常不感知多线程是否已被启用。当多线程被启用时,配置中的所有CPU的CPU地址被调整以包括在地址的最左侧位中的核心标识(或核心ID)及在地址的最右侧位中的线程标识(线程ID或TID)。核心ID亦可被称为核心地址值,且TID可被称为线程地址值。核心内的CPU可共享诸如执行单元或较低级别高速缓存的某些硬件工具,因此核心的一个CPU内的执行可影响核心中的其他CPU的性能。
为了管理与在单线程与多线程模式之间动态切换配置的一个或多个核心相关联的改变,包括数个支持特征。为维持与不支持多线程的程序的兼容性,单线程模式可为在重设或去激活后的缺省模式。例示性实施例包括用于在自多线程模式转变至单线程模式之后保留来自多线程模式的线程上下文、传送所述线程上下文及恢复所述线程上下文以支持线程上下文的分析及/或恢复的特性。
可由例示性实施例实施的计算环境可(例如)基于国际商业机器公司(Armonk,NewYork)提供的z/Architecture。z/Architecture描述于2012年8月的题为“z/ArchitecturePrinciples of Operation”的公开(IBM公开第SA22-7832-09号)中,该公开以全文引用的方式并入本文中。在一个实例中,基于z/Architecture的计算环境包括由国际商业机器公司(Armonk,New York)提供的eServer zSeries。计算环境可包括(例如)具有具一个或多个核心(例如,处理器核心)的一个或多个分区(例如,逻辑分区)的处理器复合体,及如本文中进一步描述的一个或多个级别的***管理程序。
图1A展示作为支持多线程(MT)的计算环境的一个实例的计算机***100。在图1A的实例中,计算机***100包括多个处理器核心102、输入/输出(I/O)子***104及***存储器160。I/O子***104可提供对本领域公知的I/O设备的存取。处理器核心102(本文中亦简称为“核心”)可包括具有支持元件的处理电路。在图1A的实例中,五个核心102被描绘为核心1 110、核心2 120、核心3 130、核心4 140及核心5 150;然而,亦涵盖较大或较少数目个核心102。MT工具103可为核心102中的每一者的硬件组件。在此实例中,核心102中的每一者能够支持至多四个线程。举例而言,核心1 110可支持线程111、112、113及114。核心2 120可支持线程121、122、123及124。核心3 130可支持线程131、132、133及134。核心4 140可支持线程141、142、143及144。核心5 150可支持线程151、152、153及154。应注意,并非每一核心102的所有四个线程均可在任何瞬时可操作。举例而言,在核心3 130中,线程131及132可在线程133及134被允许可操作(以阴影描绘)时可操作。
图1A亦描绘计算机***100的***存储器160,其中***存储器160的各部分被分成逻辑分区1(LPAR1)170、LPAR2 180及LPAR3 190。LPAR 170、180、190表示可执行操作***(诸如,LinuxTM或z/OSTM、z/VM或zTPF操作***)的虚拟化计算***(亦称为配置)。图1A亦展示核心102至LPAR 170、180、190的分派。在此说明中,核心1 110及核心2120专用于由LPAR1 170使用。核心3 130专用于由LPAR2 180使用,且核心5 150专用于由LPAR3 190使用。核心4 140可在LPAR2 180与LPAR3 190之间共享,但在图1A中展示为被指派给LPAR2180。LPAR3 190展示由分区采用的两种不同类型的核心102的一个实例,其中在此实例中核心4 140允许多个线程可操作,但核心5 150不允许多个线程可操作。在图1A的实例中,LPAR1 170提供用于OS 171以及程序172、173、174及175的处理资源。LPAR2 180提供用于OS181以及程序182、183及184的处理资源。LPAR4 190提供用于OS 191以及程序192及193的处理资源。
在LPAR中执行的操作***的控制下,程序在核心的线程上执行。在一个例示性实施例中,个体线程有时仅执行一个程序;然而,被设计为可重入的程序可在多个线程或核心上同时执行。举例而言,LPAR1 170的OS 171的程序172可在核心1 110中的线程111及113上及核心2 120的线程121及124中执行。取决于OS的控制,不同程序可根据分派规则及服务质量协议被分派在相同或不同线程上。
各种级别固件亦驻留在***存储器160中,包括(例如)毫码162及LPAR***管理程序163。毫码162可体现为固件以支持较低级别***功能。LPAR***管理程序163可为(例如)许可内部代码,诸如IBM Processor-Resource/System ManagerTM(PR/SMTM)。LPAR***管理程序163可建立LPAR 170、180、190且可管理在核心102上的分派。当MT工具103安装在计算机***100中时,毫码162及LPAR***管理程序163亦分别含有MT工具支持代码164及165。MT工具支持代码164及165可视为MT工具103的一部分,因为支持MT的逻辑可散布在毫码162、LPAR***管理程序163及核心102之间。尽管未描绘,但OS 171、181、191中的每一者亦可包括MT工具支持代码以在其相应LPAR 170、180、190中启用及利用MT。
图1B展示与图1A相同的计算***100,除在图1B的计算环境中核心4 140现被指派给LPAR3 190而非LPAR2 180以外。亦注意不同于线程143及144不可操作的图1A,在图1B中,当在核心4 140上分派LPAR3 190时所有四个线程141至144当前可操作。LPAR在核心102上的分派及解除分派为动态的,且在其他时间其他LPAR(未图示)可在同一核心102上操作。
现转向图2,大体展示根据一个实施例的用于实施处理核心(诸如,图1A及图1B中的核心102中的一者)的处理电路200的方块图。处理电路200为可同时在MT环境中支持一个或多个线程的处理电路的一个实例。图2中所展示的处理电路200包括可将处理电路200耦合至其他处理器及***设备的***控制器接口单元202。***控制器接口单元202亦可将Dcache 204(其读取及存储数据值)、Icache 208(其读取程序指令)及高速缓存接口单元206连接至外部存储器、处理器及其他***设备。
Icache 208可结合指令取回单元(IFU)210提供指令流的加载,所述指令取回单元预先取回指令且可包括推测性加载及分支预测能力。可将所取回指令提供至指令解码单元(IDU)212以便解码成指令处理数据。
IDU 212可将指令提供至发出单元214,所述发出单元可控制指令至各种执行单元(诸如,用于执行一般运算的一个或多个定点单元(FXU)216及用于执行浮点运算的一个或多个浮点单元(FPU)218)的发出。FPU 218可包括二进制浮点单元(BFU)220、十进制浮点单元(DFU)222或任何其他浮点单元。发出单元214亦可经由一个或多个LSU管线耦合至一个或多个加载/存储单元(LSU)228。多个LSU管线被视为用于执行加载及存储以及用于分支的地址产生的执行单元。LSU 228及IFU 210两者可利用转换后备缓冲器(TLB)230以提供用于操作数及指令地址的缓冲转换。
FXU 216及FPU 218耦合至各种资源,诸如通用寄存器(GPR)224及浮点寄存器(FPR)226。GPR 224及FPR 226通过LSU 228提供用于自Dcache 204加载及存储的数据值的数据值存储。
处理电路200亦可包括计数器及/或定时器250以支持基于***时间的产生及诊断动作。举例而言,计数器及/或定时器250以及各种诊断及量测工具可用于支持当天时间。
现转向图3,描绘类似于图1A的计算环境,除在图3中第二级别***管理程序300是在计算机***100的LPAR2 180中执行以外。第二级别***管理程序300(例如,IBM z/VM操作***)包括MT支持代码301,其类似于由LPAR(第一级别)***管理程序163提供的MT支持代码165。第二级别***管理程序300提供对客体操作***311、321及331分别操作所在的多个虚拟机310、320及330(亦称为配置)的支持。客体操作***311、321及331可包括(例如)LinuxTM或z/OSTM、z/VM或z/TPF OS,或可包括诸如IBM交谈式监视器***(CMS)的客体开发环境。每一客体OS311、321及331可以或可以不启用多线程,在此状况下第二级别***管理程序300可负责使用可用于第二级别***管理程序300操作所在的LPAR2 180的物理处理资源(核心130、140及线程131至134、141至144)分派客体OS 311、321、331及相关联程序312、313、322、323、332及333。各种虚拟机310、320、330的程序312、313、322、323、332、333可在可用于相应客体OS 311、321及331的线程131至134、141至144上执行。客体OS 311、321及331无需包括MT支持代码,这是因为如果第二级别***管理程序300利用多线程,则客体OS可明显受益于MT。
现转向图4,描绘可根据一个实施例实施的计算环境中的***管理程序上下文保持的一个实例。在图4的实例中,数个支持结构被描绘于图1A及图1B的LPAR***管理程序163内。举例而言,结构410可支持图1A的LPAR1 170,包括存储用于当前在如图1A中所展示的物理线程111、112、113、114、121、122、123、124上执行的逻辑线程411、412、413、414、421、422、423、424的架构式寄存器上下文(亦即,线程上下文)的状态描述及卫星(satellite)块。在分派这些逻辑线程时,物理线程保持线程的当前架构式寄存器上下文。架构式寄存器上下文在逻辑线程不再被分派时将被保持在状态描述及卫星块中。结构430可支持图1A的LPAR2 180,包括存储用于当前在如图1A中所展示的物理线程131、132、141、142上执行的逻辑线程431、432、441、442的架构式寄存器上下文的状态描述及卫星块。结构450可支持图1A的LPAR3 190,包括存储用于当前在如图1A中所展示的物理线程151上执行的逻辑线程的架构式寄存器上下文的状态描述及卫星块451。结构450亦包括存储用于当前未在物理处理器(如以阴影所展示)上分派的逻辑线程的架构式寄存器上下文的状态描述及卫星块461、462、463及464。亦可藉由LPAR***管理程序163保留支持未在物理核心上分派的LPAR的其他结构,诸如包括用于逻辑线程的状态描述及卫星结构471、472、473及474的LPAR A(图1A中未描绘)的结构470。其他结构实例包括支持包括用于逻辑线程的状态描述及卫星结构481及482的未经分派LPAR B(图1A中未描绘)的结构480以及用于逻辑线程的状态描述及卫星结构485的未经分派LPAR C(图1A中未描绘)的结构484。
尽管数个结构被描绘在图4的实例中,但应理解,额外结构可由LPAR***管理程序163及计算机***100中的其他位置支持以管理多线程。举例而言,支持图3的虚拟机310、320、330的多线程的结构可由图3的第二级别***管理程序300保留。
现转向图5,描绘根据一个实施例的用于多线程的动态启用的过程流500。在块502处,主要线程在单线程(ST)模式中执行。在块504处,在ST模式中取回多线程(MT)模式设定指令。在执行如在505处共同地描绘的此指令时,在块506处获得从由MT模式设定指令指定的位置请求的线程的数目。当发出设定MT模式指令时可由参数寄存器指定位置。MT模式设定指令可为包括设定MT命令及与所请求线程的数目相关联的程序指定最大线程id(PSMTID)的信号处理器(SIGP)指令。参看图7在本文中进一步描述与SIGP指令的设定MT命令相关联的过程的一个实例。
继续过程500,在块508处,执行关于所请求线程的数目是否指示多个线程的判定。举例而言,多个线程可藉由大于1的值指示。在0值指示单个线程的实施例中,1或大于1的值可指示多个线程。基于判定所请求线程的数目不指示多个线程,在块510处核心保持在ST模式中,设定MT模式指令的执行完成,且控制返回至块502。基于判定所请求线程的数目指示多个线程,在块512处启用MT模式,且设定MT模式指令的执行完成。在块514处,执行包括主要线程及一个或多个次要线程的多个线程。在块516处,如果不存在重设或去激活,则过程500循环回至块514;否则,在块518处,基于恢复至ST模式的配置的重设或去激活而停用MT模式。作为停用MT模式的一部分,线程(PSMTID)的数目被保留用于非清除重设或被置0用于清除重设。过程500返回至块502。
当激活加载正常、加载与转储、加载清除或加载清除清单引导密钥时CPU可进入加载状态。如果通道命令(command)字(CCW)型初始程序加载操作成功地完成,则CPU自加载状态改变至操作状态。
CPU重设可用于在信息损毁量最少的情况下清除设备检查指示及任何由此产生的CPU状态的不可预测性。详言之,在保留CPU状态以用于分析或重新继续操作时,CPU重设可用于清除检查条件。如果CPU重设由加载正常或加载与转储密钥的激活引起,则(a)CPU重设可将架构模式设定成缺省模式,且(b)如果安装及启用多线程工具,则停用多线程。当CPU重设设定缺省模式时,其可保存当前PSW,使得可恢复PSW。
初始CPU重设提供CPU重设连同当前PSW、CPU定时器、时钟比较器及其他寄存器(诸如:中断事件地址、所捕获的PSW、控制、浮点控制、前缀及TOD可编程寄存器)的初始化的功能。如果初始CPU重设由加载正常或加载与转储密钥的激活引起,则其可将架构模式设定为缺省模式。如果在初始CPU重设由加载正常或加载与转储密钥的激活所引起时多线程被启用,则初始CPU重设功能可针对核心的最低编号CPU而执行,且CPU重设针对核心中的所有其他CPU而执行。清除重设引起初始CPU重设及子***重设被执行,且另外,除TOD时钟以外,清除或初始化配置中的所有CPU中的所有存储位置及寄存器。清除不影响外部存储装置,诸如由控制程序使用以保存不可寻址页面的内容的直接存取存储器件。
CPU通电重设引起初始CPU重设被执行且将通用寄存器、存取寄存器、控制寄存器及浮点寄存器的内容清除至0/具有有效检查块码的缺省值。应理解,状态的清除或初始化无需为0值但在已清除状态下可缺省为非0值。如果CPU通电重设建立配置,则其可将架构模式设定成缺省模式;否则,其可将架构模式设定成已在配置中的CPU的模式。可手动地发起CPU重设、初始CPU重设、子***重设及清除重设。
在例示性实施例中,每一CPU具有被指派的编号,称为其CPU地址。CPU地址独特地识别配置内的一个CPU。CPU通过在SIGP指令的CPU地址字段中指定此地址而被指定。用信号通知故障警报、紧急信号或外部调用的CPU可在中断情况下由在CPU地址字段中存储此地址而识别。CPU地址由配置定义程序指派且通常并不由于重配置改变而改变。程序可通过使用存储CPU地址指令而确定CPU的地址。存储CPU地址指令亦可用于识别CPU地址,借助该CPU地址在多处理配置中识别CPU。
当启用多线程时,CPU地址可包括与核心内的CPU的标识串接的核心标识(核心ID)。核心内的CPU标识为线程标识(线程ID或TID)。在配置内,所有核心提供相同数目个CPU;然而,取决于模型及CPU类型,核心中的一些CPU可能不可操作。
基于由信号处理器设定多线程命令使用的参数寄存器的PSMTID,固定数目个位表示线程标识。此位数目被称为TID宽度。
在启用多线程之前,核心ID可由CPU地址的最右侧位形成。核心ID左移TID宽度个位,从而在多线程可用之后产生CPU地址的最左侧位。线程ID具有相同TID宽度数目个位,且在多线程被启用之后占据CPU地址的最右侧位。可在连续数目范围中指派线程ID。表1例示PSMTID的实例关系,TID宽度及CPU地址位包括核心标识及线程标识。
表1-实例地址位映射
在图6A中将地址扩展描绘为根据一个实施例的CPU地址扩展过程600A的一个实例。在块602处,可使用核心地址值604作为数个CPU地址位在ST模式中存取主要线程。箭头606指示自ST模式切换至MT模式。在块608处,可使用扩展后的地址值610在MT模式中存取主要线程或一个或多个次要线程。扩展后的地址值610包括被移位为移位后的核心地址值612且与线程地址值614串接的核心地址值604。移位后的核心地址值612为核心识别符(核心ID),且线程地址值614为线程识别符(TID)。移位后的核心地址值612可基于所请求的最大线程识别符(例如,PSMTID)而移位一定量。线程地址值614中的TID位的数目可基于如上文表1中所展示的PSMTID而确定。线程地址值614可串接至移位后的核心地址值612的低阶位以形成扩展后的地址值610。全0的线程地址值614将指明主要线程,且大于0的值识别及处理次要线程。
当在MT模式与ST模式之间切换时,核心地址值604(ST模式)或扩展后的地址值610(MT模式)被选择以在相应ST模式或MT模式中用作CPU地址。核心地址值604为用于ST模式中的标准格式地址的一个实例,且核心基于停用MT模式而自MT模式恢复至ST模式。在一个例示性实施例中,仅主要线程(亦即,非次要线程)可基于停用MT模式而存取。图6B描绘根据一个实施例的CPU地址缩短过程600B的一个实例。图6B的箭头616说明自块608的MT模式切换回至块602的ST模式。自MT模式至ST模式的恢复可包括将扩展后的地址值610向右移位及去除线程地址值614以从移位后的核心地址值612形成包括核心地址值604(核心ID)的标准格式地址作为CPU地址。
当重设功能停用多线程时,(a)使线程ID为0的CPU的CPU地址向右移位在启用期间使用的相同TID宽度数目个位,(b)0在地址左侧被***TID宽度数目个位中,且(c)所述CPU地址恢复至其原始非多线程格式(亦即,标准格式地址)。当启用多线程时在具有非0线程ID的核心中的所有CPU在停用多线程时不再为可操作的。
当不启用多线程时,CPU地址保持由配置定义过程指派的值而不变。在此状况下,线程标识不存在。
数个信号处理器命令可将包括(例如)以下各者的命令提供至CPU:开始、停止、重新开始、停止及存储状态、初始CPU重设、CPU重设、在地址处的存储状态、设定架构、感测运行状态、设定多线程、在地址处的存储额外状态及其类似者。初始CPU重设或CPU重设可由信号处理器指令发起且不影响架构模式或其他CPU不停用多线程,且不引起I/O重设。
设定架构命令指定配置中的所有CPU待设定为的架构模式。架构差异可包括不同寻址模式、寄存器定义及由CPU支持的指令。在架构模式改变后,可将寄存器的选择位字段设定成缺省状态(例如,置0),清除配置中的所有CPU的存取寄存器转换后备缓冲器(ALB)及转换后备缓冲器(TLB),且可在配置中的所有CPU上执行序列化及检查点同步功能。
感测运行状态命令可指示被寻址的CPU是否正在运行。在ST模式中,可返回指示符作为运行/非运行状态。在MT模式中,指示符可用于识别被寻址CPU为成员的核心的任何CPU是正在运行,还是被寻址CPU为成员的核心的所有CPU未正在运行。
设定MT命令启用多线程工具。参数寄存器的位位置可含有待提供于配置中的PSMTID。PSMTID可被定义为比可待在每一核心中寻址的CPU的数目小1。举例而言,所指明位位置中的值3指示待提供最多四个线程。当配置中的所有CPU被视为待寻址时,可忽略SIGP指令的CPU地址寄存器的内容。如果接受,则在SIGP指令的执行期间由所有CPU完成设定MT命令。参看图7,描绘用于SIGP设定MT命令702的过程700。可提供错误指示且基于判定由以下各者中的一者或多者发出SIGP设定MT命令702而防止MT模式的启用:无效命令、不正确状态及无效参数,如本文中关于图7的过程700进一步描述的。
如果在块704处多线程工具未安装或CPU并未在有效架构模式中启用(708),则不接受设定MT命令且可分别在块706或710处返回无效命令指示。如果在块712处在配置中的其他CPU不在停止或检查停止状态下,或如果在块716处所述配置已被启用以用于多线程,则不接受设定MT命令且可分别在块714或718处返回不正确状态指示。
如果在块720处PSMTID为无效的,则不接受设定MT命令且在块722处可返回无效参数指示。当在块724处PSMTID为0时,配置未被启用以用于多线程,保持处于ST模式中,且在块728处提供任何状态作为条件代码。在一个例示性实施例中,当PSMTID有效且非0时,在块726处,配置被启用以用于多线程,导致CPU地址扩展,配置中的所有CPU的ALB及TLB已清除其内容,且在配置中的所有CPU上执行序列化及检查点同步功能。可在块728处在条件代码中提供状态。在成功完成后,除执行设定MT命令的CPU以外的所有CPU保持在停止或检查停止状态下。然而,如果在启用多线程之前CPU在检查停止状态下,则同一核心中具有非0线程ID的CPU置于停止状态还是检查停止状态下可能是不可预测的。
线程上下文亦可被称为架构式寄存器上下文。在启用多线程之前每一CPU的架构式寄存器上下文(亦即,PSW、CPU定时器、时钟比较器、通用寄存器、浮点寄存器及浮点控制寄存器、向量寄存器、控制寄存器、存取寄存器、前缀寄存器及TOD可编程寄存器等的内容)在启用多线程之后变为每一相应核心的具有TID 0的CPU的架构式寄存器上下文。类似地,当由于加载正常或加载与转储密钥的激活而停用多线程时,具MT能力的配置的每一核心的具有TID 0的CPU的架构式寄存器上下文变为每一相应CPU的架构式寄存器上下文。
当由于加载正常或加载与转储密钥操作的激活而停用多线程工具时,可保留具有非0线程标识的所有CPU的架构式寄存器上下文。如果在无介入清除重设的情况下随后重新启用多线程工具,则恢复具有非0线程标识的所有CPU的架构式寄存器上下文。
当在已由加载正常或加载与转储密钥的激活停用之后重新启用多线程时,如果参数寄存器的位中的PSMTID的值不同于前述启用中使用的值,则具有非0线程ID的所有CPU的架构式寄存器上下文可为不可预测的。
存储***信息指令可用于将关于配置的一个或多个组件的信息存储至***信息块(SYSIB)中。SYSIB可包括MT安装字段、MT通用字段、总CPU/核心计数、被配置CPU/核心计数、待用CPU/核心计数、保留CPU/核心计数及其他字段。MT安装字段可指示是否安装多线程工具且亦可指示用于第一核心类型(例如,特殊核心类型)的最高支持TID。MT通用字段可指示用于第二核心类型(例如,通用核心类型)的最高支持TID。MT通用字段中的最高支持TID可限于小于或等于MT安装字段中的最高支持TID。总CPU/核心计数可指示配置中的通用CPU(不论在被配置、待用或保留状态下)或包括通用CPU的核心的总数。被配置CPU/核心计数可指示在被配置状态下(亦即,在配置及准备执行程序中)的通用CPU或包括通用CPU的核心的数目。待用CPU/核心计数指示在待用状态下(亦即,不可用于执行程序直至置于被配置状态下)的通用CPU或包括通用CPU的核心的数目。保留CPU/核心计数指示在保留状态下(亦即,不可用于执行程序且不能置于被配置状态下)的通用CPU或包括通用CPU的核心的数目。
图8描绘根据一个实施例的存储多线程能力信息的一个实例。在线程(诸如,核心800A的线程1)中执行的程序可自配置850的诸如LPAR的存储器801取回存储***信息(STSI)指令830。STSI指令的执行可导致***信息块(SYSIB)802的存储(832)。在图8的实例中,SYSIB 802包括指示配置850是否支持多线程的MT安装识别符804。SYSIB 802亦包括可作为用于特殊核心的每核心最大TID 806及用于通用核心的最大TID 808提供的核心800A/800B的最高支持线程的最大线程识别符。SYSIB 802亦可包括当前程序指定最大线程识别符(PSMTID)809。当前PSMTID 809反映如由程序在配置850中启用的多线程模式。如果STSI指令830在基本机器级别处执行,则可不定义当前PSMTID 809。
在线程(诸如核心800B的线程2)中执行的程序亦可自配置850的存储器801取回服务调用(SERVC)指令834,其中指令指定读取***控制程序信息(读取SCP信息,或RSCPI)命令。RSCPI命令的执行可引起服务调用控制块(SCCB)810存储(836)于存储器801中。在一个例示性实施例中,通过RSCPI命令的执行而存储的SCCB 810提供可不可用于SYSIB 802中的类似及额外信息。在图8的实例中,SCCB 810包括指示核心800B是否支持多线程的MT安装识别符812。SCCB 810亦包括可被提供为用于特殊核心的每核心最大TID 814及用于通用核心的最大TID 816的核心800B的最高支持线程的最大线程识别符。SCCB 810的812至816的值等于可在SYSIB 802中可存取的值804至808。另外,SCCB 810可包括核心800B的最高支持线程的最后设定程序指定最大线程识别符,其亦被称为最后设定程序指定最大线程识别符(PSMTID)818。SCCB 810亦可包括作为PSMTID支持屏蔽820的关于设定MT命令可接受的PSMTID值的屏蔽。当小于由每核心最大TID 814定义的数目为所期望的时,PSMTID支持屏蔽820可用以识别所支持CPU/线程。
应理解,核心800A及800B包括未在此实例中描绘的其他方面。此外,SYSIB 802及SCCB 810可包括超出在图8的实例中描绘的那些值的额外值。
图9描绘根据一个实施例的用于确定多线程能力的过程流900。在块902处,核心执行取回多线程能力信息(RMTCI)指令,其可(例如)为SERVC指令或STSI指令中的任一者。在块904处,获得识别配置的多线程能力的线程识别信息。在块906处,存储所获得的线程识别信息。在块908处,基于所获得的线程识别信息判定配置先前是否已使多线程被启用。
如先前所描述,SERVC指令被配置为将线程识别信息存储在存储器中的响应块(例如,图8的SCCB 810)中,且STSI指令被配置为将线程识别信息存储在存储器中的SYSIB(例如,图8的SYSIB 802)中。所获得的线程信息可包括指示核心是否支持多线程的MT安装识别符(例如,图8的MT安装识别符804或812)。所获得的线程信息亦可包括核心的最高支持线程的最大线程识别符(例如,图8的最大TID值806、808、814或816)。所获得的线程信息可包括当前程序指定最大线程识别符(例如,图8的当前PSMTID 809)及最后设定程序指定最大线程识别符(例如,图8的PSMTID 818)。响应块可包括指示个体地支持的特定线程识别符的位掩码(例如,图8的PSMTID支持屏蔽820)。配置先前已使MT被启用的判定可基于最后设定程序指定最大线程识别符中的非0值(例如,最后设定PSMTID>0)。在一个例示性实施例中,配置支持多个核心类型。
在例示性实施例中,寄存器及诸如程序计数器值的值(其可包括于寄存器中或单独地管理)被捕获为线程上下文。当在MT模式中发生地址扩展时,额外线程上下文变为可存取。如先前参看图6所描述,针对配置中的每一核心形成CPU地址。CPU地址可由存储CPU地址指令检验,所述指令出现在其他结构中且用于各种SIGP命令中。当MT未被启用时,此寻址方案保持不变。当MT被启用时,CPU地址经历扩展程序。如先前所描述,CPU地址的非MT启用部分可向左移位足够的位以容纳TID。举例而言,如果操作***发出具有PSMTID值1的SIGP设定MT命令,则CPU地址将向左移位1位;如果PSMTID为2或3,则CPU地址将向左移位2位,如果PSMTID为4至7,则CPU地址将向左移位3位,等等。
当随后停用多线程(由于由加载正常操作引起的清除重设或CPU重设)时,CPU地址缩短发生。具MT能力的CPU地址可向右移位用于启用MT的SIGP设定MT命令中的相同数目个PSMTID位,且地址的线程ID部分消失。可在MT模式期间存取的线程上下文可驻留在一个或多个位置中,诸如图10中描绘的实例。在图10的实例中,配置1000包括核心1002且可包括其他核心(未描绘)。存储器1006可包括作为配置1000的一部分的配置存储器1005及与配置1000分离的主机/固件存储器1007。主机/固件存储器1007可包括由主机维护的状态描述块1008,其可存储用于线程(例如,图10中的线程n)的线程上下文1010。卫星块1012可被锚定至作为主机/固件存储器1007的一部分的存储器1006中的状态描述块1008,其中卫星块1012可包括作为线程上下文1010的替代或结合线程上下文1010的线程上下文1014。每一线程可具有对应状态描述块1008及(可选地)卫星块1012,其中可存储线程上下文1010或线程上下文1014。作为另一替代例,硬件上下文寄存器1016可用于将线程上下文1018存储在(例如)核心1002中。线程上下文1010、1014及1018的实例可组合地或单独地用作存储选项。可在实施例中使用替代存储选项。与在何处维护线程上下文无关,在地址缩短后,线程上下文可不再直接可存取,但可由转储程序而保留以用于存取。
当MT被停用时,CPU地址缩短过程使核心的线程1至n不再可寻址;类似地,包括架构式寄存器的线程上下文不再为程序可见。如果MT由于由非清除加载操作产生的CPU重设而停用,则保留线程1至n的寄存器上下文;如果配置返回至MT模式,则可随后检验这些数据。用于每一客体线程的寄存器上下文可由主机维护于如图10中所描绘的线程状态描述块1008中(或如在向量寄存器的状况下,维护于锚定在状态描述中的卫星块1012中)。
MT停用期间的线程1至n的上下文的保持为用于在OS失败之后待转储的线程的状态的诊断特性。在OS失败之后,操作者可选择运行独立转储(SADMP)程序以在失败时捕获***的存储器及线程上下文。然而,加载SADMP程序可引起配置恢复至启用ST模式的缺省架构模式,因此停用MT。但因为SADMP由非清除加载操作加载,所以保留每一核心的线程1至n的寄存器上下文。SADMP可通过查验SERVC读取SCP信息命令的响应块的结果而判定MT是否在被转储的配置中被启用。此数目可随后用作至SIGP设定MT命令的输入以在与前述相同的级别处重新启用MT。
图11描绘根据一个实施例的多线程寄存器保留的一个实例。诸如图11的计算机***1100的***可包括多个配置1102及1104。在图11的实例中,配置1102包括核心1106及核心1108,且配置1104包括核心1110及核心1112。配置1102及1104中的每一者可在不同时间独立地在ST模式与MT模式之间切换。计算机***1100的配置1102及1104中的每一者可配置有不同数目个最大线程ID以在配置1102及1104中的每一者处支持同时启用的不同数目个线程。在图11的实例中,核心1106及1108均支持最多两个线程,同时配置1102在MT模式1114下,而核心1110及1112均支持最多四个线程,同时配置1104在MT模式1116下。
当在配置1102中启用MT模式1114时,TID 0及TID 1两者可存取为单独线程上下文,诸如线程上下文1115的单独实例。在时间1118处,可通过配置1102的加载正常操作或非清除重设而停用MT模式1114,其将核心1106及1108切换至ST模式1120中。归因于如先前所描述的地址缩短,可在ST模式1120下存取TID0寄存器;然而,可在MT模式1114下存取的TID1寄存器被保留但不再可存取。举例而言,TID1寄存器可体现为图10的线程上下文1010、1014或1018,其中在切换至ST模式1120后借助地址扩展可用的地址在地址缩短之后不再可存取。
在配置1104使MT模式1116被启用时,TID0、TID1、TID2及TID3寄存器可存取为独立线程上下文,诸如图10的线程上下文1010、1014或1018的单独实例。在此实例中,TID0表示主要线程且TID1至TID3表示针对核心1110及核心1112中的每一者单独地维护的次要线程。在时间1122处,可针对配置1104借助清除重设而停用MT模式1116,其将核心1110及1112两者切换至ST模式1124中。在时间1122处的清除重设可清除所有寄存器TID0、TID1、TID2及TID3。归因于如先前所描述的地址缩短,可在ST模式1124下存取TID0寄存器;然而,可在MT模式1116下存取的TID1、TID2及TID3寄存器被保留于已清除状态下但不再可存取。如图11中所描绘,可在不同时间1118及1122处在每一配置1102及1104上以区域化至每一配置1102及1104的效果独立地执行操作。因此,配置1102可在ST模式1120下而配置1104在MT模式1116下,且ST/MT模式无需针对计算机***1100的所有配置而对准。
图12描绘根据一个实施例的用于多线程寄存器保留的过程流1200。在块1202处,基于由MT模式中的核心判定待在核心中停用MT,执行自MT模式至ST模式的切换。MT模式的主要线程可被维护为ST模式的仅有线程。使包括次要线程的程序可存取寄存器值及程序计数器值的一个或多个线程上下文不可由应用程序存取。在块1204处,基于切换,判定操作类型(例如,清除对非清除)以清除程序可存取寄存器值抑或保留程序可存取寄存器值。在块1206处,基于非清除操作,判定保留程序可存取寄存器值。在块1208处,基于清除操作,判定清除程序可存取寄存器。
如先前所描述,线程上下文的程序可存取寄存器值及程序计数器值可包括程序通用寄存器、浮点寄存器、控制寄存器、存取寄存器、前缀寄存器及TOD可编程寄存器。控制寄存器可包括浮点控制寄存器、运行时插装控件、CPU测量控件及其类似者。可包括于线程上下文中的寄存器的其他实例包括程序状态字(例如,包括程序计数器/指令地址、条件代码及用以控制指令定序及判定CPU状态的其他信息)、向量寄存器、CPU定时器、时钟比较器、中断事件地址寄存器及本领域公知的其他寄存器。如先前所描述,PSMTID基于引起启用MT的最后成功地执行的信号处理器指令而设定。基于切换至MT模式,基于对应次要线程被重新启用而使程序可存取寄存器值不可由应用程序存取。举例而言,在图11中自ST模式1120切换回至MT模式1114允许TID1寄存器被存取,且TID1可被重新启用。线程上下文可被维护在以下各者中的任一者中:状态描述块、锚定至存储器中的状态描述块的卫星块,或上下文寄存器,诸如图10的线程上下文1010、1014或1018。
主要线程上下文可包括主要线程的程序可存取寄存器值及程序计数器值,例如,用于图11的配置1104的TID0及TID0寄存器,其中主要线程上下文在ST模式1124及MT模式1116两者下可由应用程序存取。次要线程上下文可包括次要线程的程序可存取寄存器值及程序计数器值,例如,用于图11的配置1104的TID1至TID3及TID1至TID3寄存器。
图13描绘根据一个实施例的多线程寄存器恢复的一个实例。图13的实例包括具有单一配置1302的计算机***1300。配置1302包括核心1304、核心1306及核心1308。在此实例中,核心1304至1308中的每一者包括最多四个线程(TID0、TID1、TID2及TID3)。在MT模式1310下,TID0至TID3的所有线程上下文可用于核心1304至1308中。在时间1312处,可通过配置1302的加载正常操作或非清除重设而停用MT模式1310,其将核心1304至1308切换至ST模式1314中。在ST模式1314下,TID0寄存器保持可存取,且TID1至TID3寄存器不可存取的但针对核心1304至1308中的每一者保留。在时间1316处,可通过SIGP设定MT命令的执行而重新启用MT以进入被重新继续的MT模式1318。在被重新继续的MT模式1318下,针对核心1304至1308中的每一者恢复对TID1至TID3寄存器的线程上下文的存取。此通过转储程序(诸如,独立转储程序1320)实现对所有线程寄存器(包括TID1至TID3寄存器)的检验以保存线程上下文信息以供分析。
图14描绘如可由独立转储(SADMP)程序(诸如,图13的独立转储程序1320)使用以在操作***失败之后捕获线程的架构式寄存器上下文的根据一个实施例的用于多线程寄存器恢复的过程流1400。在块1405处,经由非清除加载操作(例如,加载正常或加载与转储)加载SADMP程序。非清除加载操作隐含地引起配置恢复至ST模式,诸如用于图13的配置1302的ST模式1314。SADMP程序可接着在块1410处通过使用STSI或SERVC指令查询MT工具是否可用于配置中。如果已安装MT,则在块1415处SADMP程序查询针对配置设定的最后设定程序指定最大线程标识(PSMTID)。如果先前从未针对配置设定MT,则最后设定PSMTID值将为0。SADMP程序可在最后设定PSMTID无论为何值(即使其为0)的情况下在块1420处接着执行指令以重新启用多线程。如果在块1410处查询揭露未安装MT,则不尝试在块1415处查询最后设定PSMTID值或在块1420处重新启用MT。
SADMP程序尝试用信号通知配置中的每一其他CPU(线程)将其架构式寄存器上下文保存在存储器中的预定义位置中。如果在加载SADMP之前先前未启用MT,则CPU地址为正常的非扩展格式。如果先前启用MT,则CPU地址为包括核心ID及线程ID的扩展格式。SADMP在块1425处以为0的CPU地址(N)开始,且在块1430处判定CPU地址是否表示执行SADMP所在的CPU。如果是,则跳过该CPU/线程,且在块1450处将N递增至下一值。如果N不同于当前CPU地址,则在块1435处用信号通知该CPU/线程(例如)通过SIGP在地址处存储状态命令或SIGP停止及存储状态命令的执行将其架构式寄存器上下文存储在存储器中。如果配置包括向量工具,则在SIGP在地址处存储额外状态命令亦可被执行以存储CPU/线程的向量寄存器的内容。在块1440处作出关于块1435的发信号是否成功的判定。如果成功,则在块1445处SADMP程序可将CPU/线程的寄存器上下文存储在磁带或磁盘上的转储文件中,且在块1450处处理通过递增N而继续。如果块1435的发信号如由块1440判定为未成功(例如,如果线程不可操作),则其被跳过,且在块1450处处理通过递增N而继续。在块1450处使发信号时所使用的CPU地址(N)的值递增,且在块1455处作出关于N现是否大于用于配置的最高可能CPU地址的判定。如果N不大于用于配置的最高可能CPU地址,则在块1430处处理通过判定N是否表示执行SADMP程序所借助的当前CPU/线程而继续。如果N大于用于配置的最高可能CPU地址,则在块1460处已完成架构式寄存器上下文恢复及转储。
尽管针对配置的一个核心而描述图14,但应理解,图14的过程流1400可延伸以跨越包括多个核心的配置的所有核心遍历最大CPU地址而运行。可在配置中进行额外调节以支持并不支持MT的OS或感知MT但不采用MT的程序的转储。举例而言,可在加载不支持配置中的MT的OS之前执行清除重设以防止MT感知独立转储程序尝试自配置转储任何次要线程。作为另一实例,感知MT但不采用MT的程序可在执行用于配置的独立转储程序之前发出具有为0的对应最大线程id的设定MT命令。
技术效果及益处包括支持单线程操作模式及多线程操作模式两者的多线程计算机***中的线程上下文恢复。在多线程模式期间使用的线程上下文在单线程模式期间可被保存但保持不可存取,且线程上下文在重新继续多线程模式后恢复(例如)以供独立转储程序使用以搜集关于软件或硬件失败的诊断信息。
本文中描述的***使软件能够通过要求OS显式地“加入宣告(opt in)”以利用MT硬件而减轻硬件可变性。当OS理解执行环境的MT性质时,OS具有显式地管理每核心线程密度的能力(对于其最好能力,给定工作负载分派模式)。OS具有如下选项:即使当较少地利用计算资源时仍维持高线程密度,由此减轻在其他MT实施上看到的总技术容量的许多可变性。作为维持高线程密度的直接结果,事务响应时间及计费方面两者可更一致。
各实施例包括一种用于多线程计算机***中的线程上下文恢复的***、方法及计算机程序产品。一个方面为一种配置,所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心。所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。多线程工具被配置为控制对所述配置的利用以执行一种方法,所述方法包括基于自MT模式至ST模式的切换来停用一个或多个次要线程。使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序。在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id。基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
根据另一方面,提供一种用于配置中的线程上下文恢复的计算机实施的方法。所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,其中所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。所述方法包括基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程。使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序。在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id。基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
另一方面包括一种用于配置中的线程上下文恢复的计算机程序产品。所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程。所述计算机程序产品包括具有程序指令的计算机可读存储介质,其中所述计算机可读存储介质并非信号。所述程序指令能由处理电路读取以使所述处理电路执行一种方法。所述方法包括基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程。使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序。在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id。基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:a)执行设定MT指令以重新继续所述MT模式;及b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括其中自所述MT模式至所述ST模式的所述切换基于非清除重设操作,且用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括其中当发出设定MT命令以重新继续所述MT模式时,所述独立转储程序指定所述最后程序指定最大线程id作为程序指定最大线程id。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括其中在加载不支持所述配置中的MT的操作***之前执行清除重设以防止MT感知独立转储程序尝试自所述配置转储任何次要线程。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括其中感知MT但不采用MT的程序在执行用于所述配置的独立转储程序之前发出具有为0的对应最大线程id的设定MT命令。
除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例可包括其中保留所述最后程序指定最大线程id,直至发生所述配置的清除重设或去激活。
本文中所用的术语,仅仅是为了描述特定的实施例,而不意图限定本发明。本文中所用的单数形式的“一”和“该”,旨在也包括复数形式,除非上下文中明确地另行指出。还要知道,“包含”和/或“包括”在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。
以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对一个或多个实施例的描述其目的在于示意和描述,并非是穷尽性的,也并非是要将本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,显然可以作出许多修改和变型而不偏离本发明的精神和范围。对实施例的选择和描述,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施例。
本发明的各种实施例的描述已为达成说明的目的而呈现,但不意欲为穷尽性的或限于所揭示的实施例。在不脱离所描述实施例的范围及精神的情况下,许多修改及变化对于本领域技术人员将显而易见。本文中所使用的术语被选择以最好地解释实施例的原理、实际应用或对市场中找到的技术的技术改进,或使其他本领域技术人员能够理解本文所揭示的实施例。
现参看图15,总体上展示根据一个实施例的包括计算机可读存储介质1502及程序指令1504的计算机程序产品1500。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
权利要求书(按照条约第19条的修改)
1.一种计算机***,包括:
配置,其包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程;及
多线程工具,其被配置为控制对所述配置的利用以执行一种方法,所述方法包括:
基于响应于所述配置的重设或去激活而自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程,其中使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序;
当在所述ST模式中执行时查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id,所述配置的所述最后设定程序指定最大线程id指示在所述切换之后是否可存取所述一个或多个次要线程的所述线程上下文;及
基于所述最后设定程序指定最大线程id指示在所述切换之后可存取所述一个或多个次要线程的所述线程上下文,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:
a)执行设定MT指令以重新继续所述MT模式;及
b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
2.如权利要求1所述的计算机***,其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
3.如权利要求1所述的计算机***,进一步包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
4.如权利要求1所述的计算机***,其中自所述MT模式至所述ST模式的所述切换是响应于非清除重设操作,且进一步其中用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
5.如权利要求4所述的计算机***,其中当发出设定MT命令以重新继续所述MT模式时,所述独立转储程序指定所述最后程序指定最大线程id作为程序指定最大线程id。
6.如权利要求1所述的计算机***,其中在加载不支持所述配置中的MT的操作***之前执行清除重设以防止MT感知独立转储程序尝试自所述配置转储任何次要线程。
7.如权利要求1所述的计算机***,其中感知MT但不采用MT的程序在执行用于所述配置的独立转储程序之前发出具有为0的对应最大线程id的设定MT命令。
8.如权利要求1所述的计算机***,其中保留所述最后程序指定最大线程id,直至发生所述配置的清除重设或去激活。
9.一种用于配置中的线程上下文恢复的计算机实施的方法,所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程,所述方法包括:
基于响应于所述配置的重设或去激活而自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程,其中使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序;
当在所述ST模式中执行时查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id,所述配置的所述最后设定程序指定最大线程id指示在所述切换之后是否可存取所述一个或多个次要线程的所述线程上下文;及
基于所述最后设定程序指定最大线程id指示在所述切换之后可存取所述一个或多个次要线程的所述线程上下文,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:
a)执行设定MT指令以重新继续所述MT模式;及
b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
10.如权利要求9所述的方法,其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
11.如权利要求9所述的方法,进一步包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
12.如权利要求9所述的方法,其中自所述MT模式至所述ST模式的所述切换是响应于非清除重设操作,且进一步其中用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
13.如权利要求12所述的方法,其中当发出设定MT命令以重新继续所述MT模式时,所述独立转储程序指定所述最后程序指定最大线程id作为程序指定最大线程id。
14.如权利要求9所述的方法,其中在加载不支持所述配置中的MT的操作***之前执行清除重设以防止MT感知独立转储程序尝试自所述配置转储任何次要线程。
15.如权利要求9所述的方法,其中感知MT但不采用MT的程序在执行用于所述配置的独立转储程序之前发出具有为0的对应最大线程id的设定MT命令。
16.一种用于配置中的线程上下文恢复的计算机程序产品,所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程,所述计算机程序产品包括:
具有程序指令的计算机可读存储介质,其中所述计算机可读存储介质并非信号,所述程序指令能由处理电路读取以使所述处理电路执行一种方法,所述方法包括:
基于响应于所述配置的重设或去激活而自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程,其中使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序;
当在所述ST模式中执行时查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id,所述配置的所述最后设定程序指定最大线程id指示在所述切换之后是否可存取所述一个或多个次要线程的所述线程上下文;及
基于所述最后设定程序指定最大线程id指示在所述切换之后可存取所述一个或多个次要线程的所述线程上下文,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:
a)执行设定MT指令以重新继续所述MT模式;及
b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
17.如权利要求16所述的计算机程序产品,其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
18.如权利要求16所述的计算机程序产品,进一步包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
19.如权利要求16所述的计算机程序产品,其中自所述MT模式至所述ST模式的所述切换是响应于非清除重设操作,且进一步其中用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
20.如权利要求16所述的计算机程序产品,其中保留所述最后程序指定最大线程id,直至发生所述配置的清除重设或去激活。
Claims (20)
1.一种计算机***,包括:
配置,其包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程;及
多线程工具,其被配置为控制对所述配置的利用以执行一种方法,所述方法包括:
基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程,其中使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序;
在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id;及
基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:
a)执行设定MT指令以重新继续所述MT模式;及
b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
2.如权利要求1所述的计算机***,其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
3.如权利要求1所述的计算机***,进一步包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
4.如权利要求1所述的计算机***,其中自所述MT模式至所述ST模式的所述切换基于非清除重设操作,且进一步其中用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
5.如权利要求4所述的计算机***,其中当发出设定MT命令以重新继续所述MT模式时,所述独立转储程序指定所述最后程序指定最大线程id作为程序指定最大线程id。
6.如权利要求1所述的计算机***,其中在加载不支持所述配置中的MT的操作***之前执行清除重设以防止MT感知独立转储程序尝试自所述配置转储任何次要线程。
7.如权利要求1所述的计算机***,其中感知MT但不采用MT的程序在执行用于所述配置的独立转储程序之前发出具有为0的对应最大线程id的设定MT命令。
8.如权利要求1所述的计算机***,其中保留所述最后程序指定最大线程id,直至发生所述配置的清除重设或去激活。
9.一种用于配置中的线程上下文恢复的计算机实施的方法,所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程,所述方法包括:
基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程,其中使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序;
在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id;及
基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:
a)执行设定MT指令以重新继续所述MT模式;及
b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
10.如权利要求9所述的方法,其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
11.如权利要求9所述的方法,进一步包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
12.如权利要求9所述的方法,其中自所述MT模式至所述ST模式的所述切换基于非清除重设操作,且进一步其中用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
13.如权利要求12所述的方法,其中当发出设定MT命令以重新继续所述MT模式时,所述独立转储程序指定所述最后程序指定最大线程id作为程序指定最大线程id。
14.如权利要求9所述的方法,其中在加载不支持所述配置中的MT的操作***之前执行清除重设以防止MT感知独立转储程序尝试自所述配置转储任何次要线程。
15.如权利要求9所述的方法,其中感知MT但不采用MT的程序在执行用于所述配置的独立转储程序之前发出具有为0的对应最大线程id的设定MT命令。
16.一种用于配置中的线程上下文恢复的计算机程序产品,所述配置包括能在单线程(ST)模式与多线程(MT)模式之间配置的核心,所述ST模式处理主要线程,且所述MT模式处理所述主要线程及所述核心的共享资源上的一个或多个次要线程,所述计算机程序产品包括:
具有程序指令的计算机可读存储介质,其中所述计算机可读存储介质并非信号,所述程序指令能由处理电路读取以使所述处理电路执行一种方法,所述方法包括:
基于自所述MT模式至所述ST模式的切换,停用所述一个或多个次要线程,其中使所述一个或多个次要线程的包括程序可存取寄存器值及程序计数器值的线程上下文不可用于程序;
在所述ST模式中查询最后指定最大MT级别以确定所述配置的最后设定程序指定最大线程id;及
基于所述最后设定程序指定最大线程id指示MT,通过执行包括以下操作的a)及b)获得所述一个或多个次要线程的所述线程上下文:
a)执行设定MT指令以重新继续所述MT模式;及
b)基于处于被重新继续的MT模式中,存取所述一个或多个次要线程的所述线程上下文。
17.如权利要求16所述的计算机程序产品,其中所述设定MT指令为包括设定MT命令及指示MT的程序指定最大线程id的信号处理器指令。
18.如权利要求16所述的计算机程序产品,进一步包括基于至所述ST模式的切换而保存所述一个或多个次要线程的所述线程上下文。
19.如权利要求16所述的计算机程序产品,其中自所述MT模式至所述ST模式的所述切换基于非清除重设操作,且进一步其中用于重新继续所述MT模式的所述设定MT指令的执行及所述一个或多个次要线程的所述线程上下文的存取由独立转储程序执行。
20.如权利要求16所述的计算机程序产品,其中保留所述最后程序指定最大线程id,直至发生所述配置的清除重设或去激活。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/226,911 US9417876B2 (en) | 2014-03-27 | 2014-03-27 | Thread context restoration in a multithreading computer system |
US14/226,911 | 2014-03-27 | ||
PCT/EP2015/055444 WO2015144477A1 (en) | 2014-03-27 | 2015-03-16 | Thread context restoration in a multithreading computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106133689A true CN106133689A (zh) | 2016-11-16 |
CN106133689B CN106133689B (zh) | 2019-03-22 |
Family
ID=52727100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580015798.XA Active CN106133689B (zh) | 2014-03-27 | 2015-03-16 | 多线程计算机***中的线程上下文恢复 |
Country Status (13)
Country | Link |
---|---|
US (2) | US9417876B2 (zh) |
EP (1) | EP3123323A1 (zh) |
JP (1) | JP6509246B2 (zh) |
KR (1) | KR101868725B1 (zh) |
CN (1) | CN106133689B (zh) |
AU (1) | AU2015238663B2 (zh) |
CA (1) | CA2940988C (zh) |
IL (1) | IL247887B (zh) |
RU (1) | RU2670909C9 (zh) |
SG (1) | SG11201606094TA (zh) |
TW (1) | TWI614681B (zh) |
WO (1) | WO2015144477A1 (zh) |
ZA (1) | ZA201605466B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298922A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US10552212B2 (en) | 2016-11-28 | 2020-02-04 | Arm Limited | Data processing |
US10671426B2 (en) * | 2016-11-28 | 2020-06-02 | Arm Limited | Data processing |
US10423446B2 (en) | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
CN108347623B (zh) * | 2017-01-23 | 2021-05-25 | 北京新唐思创教育科技有限公司 | 在线直播内容的生成方法、装置及在线直播*** |
GB2564144B (en) * | 2017-07-05 | 2020-01-08 | Advanced Risc Mach Ltd | Context data management |
JP7381189B2 (ja) | 2017-11-09 | 2023-11-15 | ニプロ株式会社 | 弁付き針組立体 |
EP3776243A1 (en) * | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN111919202A (zh) * | 2018-03-31 | 2020-11-10 | 美光科技公司 | 多线程自调度可重新配置计算架构的执行控制 |
RU199929U1 (ru) * | 2019-12-31 | 2020-09-29 | Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный университет геодезии и картографии» | Устройство для обработки потоков пространственно-временных данных в режиме реального времени |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215932A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor |
CN101506774A (zh) * | 2006-08-29 | 2009-08-12 | 高通股份有限公司 | 相依指令线程调度 |
US20130191832A1 (en) * | 2012-01-19 | 2013-07-25 | International Business Machines Corporation | Management of threads within a computing environment |
CN103488546A (zh) * | 2013-01-29 | 2014-01-01 | 中国人民解放军理工大学 | 一种支持多级别数据和数据库在线并发备份与恢复方法 |
Family Cites Families (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5684993A (en) | 1993-01-04 | 1997-11-04 | Microsoft Corporation | Segregation of thread-specific information from shared task information |
US5613114A (en) | 1994-04-15 | 1997-03-18 | Apple Computer, Inc | System and method for custom context switching |
US5799188A (en) | 1995-12-15 | 1998-08-25 | International Business Machines Corporation | System and method for managing variable weight thread contexts in a multithreaded computer system |
US6061711A (en) * | 1996-08-19 | 2000-05-09 | Samsung Electronics, Inc. | Efficient context saving and restoring in a multi-tasking computing system environment |
US6418460B1 (en) | 1997-02-18 | 2002-07-09 | Silicon Graphics, Inc. | System and method for finding preempted threads in a multi-threaded application |
US5872963A (en) | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6104700A (en) * | 1997-08-29 | 2000-08-15 | Extreme Networks | Policy based quality of service |
US6487578B2 (en) | 1997-09-29 | 2002-11-26 | Intel Corporation | Dynamic feedback costing to enable adaptive control of resource utilization |
US6272625B1 (en) | 1997-10-08 | 2001-08-07 | Oak Technology, Inc. | Apparatus and method for processing events in a digital versatile disc (DVD) system using system threads and separate dormant/awake counter threads and clock driven semaphores |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6061710A (en) | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US6401155B1 (en) | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
US6542991B1 (en) | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
US6519265B1 (en) * | 1999-05-28 | 2003-02-11 | Sony Corporation | System and method for context switching in an electronic network |
US6542921B1 (en) | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US7318090B1 (en) * | 1999-10-20 | 2008-01-08 | Sony Corporation | Method for utilizing concurrent context switching to support isochronous processes |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
AU2597401A (en) | 1999-12-22 | 2001-07-03 | Ubicom, Inc. | System and method for instruction level multithreading in an embedded processor using zero-time context switching |
US6981180B1 (en) * | 2000-03-16 | 2005-12-27 | Akamai Technologies, Inc. | Method and apparatus for testing request-response service using live connection traffic |
US6757811B1 (en) | 2000-04-19 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Slack fetch to improve performance in a simultaneous and redundantly threaded processor |
US6792525B2 (en) | 2000-04-19 | 2004-09-14 | Hewlett-Packard Development Company, L.P. | Input replicator for interrupts in a simultaneous and redundantly threaded processor |
US6658654B1 (en) | 2000-07-06 | 2003-12-02 | International Business Machines Corporation | Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment |
US7073173B1 (en) | 2000-12-04 | 2006-07-04 | Microsoft Corporation | Code and thread differential addressing via multiplex page maps |
EP1256877A1 (en) * | 2001-05-10 | 2002-11-13 | Hewlett-Packard Company, A Delaware Corporation | Manufacture of computer systems |
TW200825907A (en) * | 2001-06-19 | 2008-06-16 | Intel Corp | Method of assigning thread priority in a multi-threaded processor, multi-threaded processor, computer system and storage medium |
US6954846B2 (en) | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
US8024735B2 (en) | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
US7185338B2 (en) | 2002-10-15 | 2007-02-27 | Sun Microsystems, Inc. | Processor with speculative multithreading and hardware to support multithreading software |
US9138644B2 (en) * | 2002-12-10 | 2015-09-22 | Sony Computer Entertainment America Llc | System and method for accelerated machine switching |
US7533012B2 (en) | 2002-12-13 | 2009-05-12 | Sun Microsystems, Inc. | Multi-user web simulator |
US7822950B1 (en) | 2003-01-22 | 2010-10-26 | Ubicom, Inc. | Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls |
US20040154010A1 (en) | 2003-01-31 | 2004-08-05 | Pedro Marcuello | Control-quasi-independent-points guided speculative multithreading |
US7496915B2 (en) | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
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 |
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 |
US7360062B2 (en) | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
EP1658563B1 (en) * | 2003-08-28 | 2013-06-05 | MIPS Technologies, Inc. | Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US20050071422A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | Method, system, and computer program product for an automation tool adapter for use with multiple different automation tools |
US7493621B2 (en) | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data prefetching in multithreaded computer |
US7210073B1 (en) * | 2003-12-31 | 2007-04-24 | Precise Software Solutions Ltd. | Workflows for performance management methodology |
US20050183065A1 (en) | 2004-02-13 | 2005-08-18 | Wolczko Mario I. | Performance counters in a multi-threaded processor |
US7426731B2 (en) * | 2004-03-22 | 2008-09-16 | Hewlett-Packard Development Company, L.P. | Determining processor usage by a thread |
US20050251649A1 (en) | 2004-04-23 | 2005-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for address map optimization on a multi-scalar extension |
US7216223B2 (en) | 2004-04-30 | 2007-05-08 | Hewlett-Packard Development Company, L.P. | Configuring multi-thread status |
US7607141B2 (en) | 2004-05-03 | 2009-10-20 | Microsoft Corporation | Systems and methods for support of various processing capabilities |
US7418582B1 (en) | 2004-05-13 | 2008-08-26 | Sun Microsystems, Inc. | Versatile register file design for a multi-threaded processor utilizing different modes and register windows |
US7519796B1 (en) | 2004-06-30 | 2009-04-14 | Sun Microsystems, Inc. | Efficient utilization of a store buffer using counters |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
US7676791B2 (en) * | 2004-07-09 | 2010-03-09 | Microsoft Corporation | Implementation of concurrent programs in object-oriented languages |
US7565659B2 (en) | 2004-07-15 | 2009-07-21 | International Business Machines Corporation | Light weight context switching |
JP4956891B2 (ja) | 2004-07-26 | 2012-06-20 | 富士通株式会社 | 演算処理装置,情報処理装置および演算処理装置の制御方法 |
JP4504132B2 (ja) | 2004-07-30 | 2010-07-14 | 富士通株式会社 | 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法 |
US7707578B1 (en) | 2004-12-16 | 2010-04-27 | Vmware, Inc. | Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system |
US8621458B2 (en) | 2004-12-21 | 2013-12-31 | Microsoft Corporation | Systems and methods for exposing processor topology for virtual machines |
US8015566B2 (en) * | 2005-01-13 | 2011-09-06 | Lenovo (Singapore) Pte. Ltd. | Attributing energy consumption to individual code threads in a data processing system |
US7317907B2 (en) * | 2005-01-31 | 2008-01-08 | Research In Motion Limited | Synchronizing server and device data using device data schema |
US7490230B2 (en) | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US20060242389A1 (en) | 2005-04-21 | 2006-10-26 | International Business Machines Corporation | Job level control of simultaneous multi-threading functionality in a processor |
US7765550B2 (en) * | 2005-05-26 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region |
US8010969B2 (en) | 2005-06-13 | 2011-08-30 | Intel Corporation | Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers |
US7308565B2 (en) * | 2005-06-15 | 2007-12-11 | Seiko Epson Corporation | Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions |
JP4963018B2 (ja) | 2005-08-15 | 2012-06-27 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法およびスケジューリング装置 |
US8171268B2 (en) * | 2005-09-19 | 2012-05-01 | Intel Corporation | Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors |
US8402224B2 (en) * | 2005-09-20 | 2013-03-19 | Vmware, Inc. | Thread-shared software code caches |
RU2312388C2 (ru) * | 2005-09-22 | 2007-12-10 | Андрей Игоревич Ефимов | Способ организации многопроцессорной эвм |
US8275942B2 (en) | 2005-12-22 | 2012-09-25 | Intel Corporation | Performance prioritization in multi-threaded processors |
US9323578B2 (en) | 2006-01-19 | 2016-04-26 | International Business Machines Corporation | Analyzing wait states in a data processing system |
US7577826B2 (en) | 2006-01-30 | 2009-08-18 | Sony Computer Entertainment Inc. | Stall prediction thread management |
US8271994B2 (en) * | 2006-02-11 | 2012-09-18 | International Business Machines Corporation | Reduced data transfer during processor context switching |
CN100571167C (zh) | 2006-02-24 | 2009-12-16 | 国际商业机器公司 | Web服务业务流程的单元测试的方法和设备 |
JP2007317171A (ja) * | 2006-04-27 | 2007-12-06 | Matsushita Electric Ind Co Ltd | マルチスレッド計算機システム、マルチスレッド実行制御方法 |
US8041929B2 (en) | 2006-06-16 | 2011-10-18 | Cisco Technology, Inc. | Techniques for hardware-assisted multi-threaded processing |
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 |
US7634642B2 (en) | 2006-07-06 | 2009-12-15 | International Business Machines Corporation | Mechanism to save and restore cache and translation trace for fast context switch |
US8839271B2 (en) | 2006-10-11 | 2014-09-16 | International Business Machines Corporation | Call stack sampling to obtain information for analyzing idle states in a data processing system |
US7698540B2 (en) | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US8117478B2 (en) | 2006-12-29 | 2012-02-14 | Intel Corporation | Optimizing power usage by processor cores based on architectural events |
US7584346B1 (en) | 2007-01-25 | 2009-09-01 | Sun Microsystems, Inc. | Method and apparatus for supporting different modes of multi-threaded speculative execution |
US8156496B2 (en) * | 2007-01-31 | 2012-04-10 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US9195462B2 (en) | 2007-04-11 | 2015-11-24 | Freescale Semiconductor, Inc. | Techniques for tracing processes in a multi-threaded processor |
CN101042640A (zh) | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种带有位扩充和位压缩单元的数字信号处理器 |
US20080270658A1 (en) | 2007-04-27 | 2008-10-30 | Matsushita Electric Industrial Co., Ltd. | Processor system, bus controlling method, and semiconductor device |
EP2423808B1 (en) | 2007-06-20 | 2014-05-14 | Fujitsu Limited | Arithmetic device |
US8762692B2 (en) * | 2007-09-27 | 2014-06-24 | Intel Corporation | Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode |
WO2009076654A1 (en) | 2007-12-12 | 2009-06-18 | University Of Washington | Deterministic multiprocessing |
US8544006B2 (en) | 2007-12-19 | 2013-09-24 | International Business Machines Corporation | Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict |
CN101216725B (zh) | 2008-01-04 | 2011-04-27 | 东南大学 | 利用堆栈深度进行多线程预测的动态功耗控制方法 |
US7734900B2 (en) | 2008-01-11 | 2010-06-08 | International Business Machines Corporation | Computer configuration virtual topology discovery and instruction therefore |
US7559061B1 (en) | 2008-03-16 | 2009-07-07 | International Business Machines Corporation | Simultaneous multi-threading control monitor |
US8117602B2 (en) * | 2008-04-01 | 2012-02-14 | Kaspersky Lab, Zao | Method and system for monitoring execution performance of software program product |
US8495662B2 (en) | 2008-08-11 | 2013-07-23 | Hewlett-Packard Development Company, L.P. | System and method for improving run-time performance of applications with multithreaded and single threaded routines |
US8656145B2 (en) * | 2008-09-19 | 2014-02-18 | Qualcomm Incorporated | Methods and systems for allocating interrupts in a multithreaded processor |
US8209437B2 (en) | 2008-09-25 | 2012-06-26 | Rockliffe Systems, Inc. | Personal information management data synchronization |
US7873816B2 (en) | 2008-11-20 | 2011-01-18 | International Business Machines Corporation | Pre-loading context states by inactive hardware thread in advance of context switch |
US20100135179A1 (en) | 2008-11-28 | 2010-06-03 | International Business Machines Corporation | Communication device |
US8402464B2 (en) | 2008-12-01 | 2013-03-19 | Oracle America, Inc. | System and method for managing contention in transactional memory using global execution data |
US8572581B2 (en) | 2009-03-26 | 2013-10-29 | Microsoft Corporation | Measurement and reporting of performance event rates |
US8346509B2 (en) | 2009-04-08 | 2013-01-01 | Intel Corporation | Context switch sampling |
US8949582B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Changing a flow identifier of a packet in a multi-thread, multi-flow network processor |
GB2469822B (en) | 2009-04-28 | 2011-04-20 | Imagination Tech Ltd | Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor |
US9672132B2 (en) | 2009-11-19 | 2017-06-06 | Qualcomm Incorporated | Methods and apparatus for measuring performance of a multi-thread processor |
US8612978B2 (en) | 2009-12-10 | 2013-12-17 | Oracle America, Inc. | Code execution utilizing single or multiple threads |
US8615644B2 (en) | 2010-02-19 | 2013-12-24 | International Business Machines Corporation | Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition |
US8381216B2 (en) | 2010-03-05 | 2013-02-19 | Microsoft Corporation | Dynamic thread pool management |
US20110283286A1 (en) | 2010-05-11 | 2011-11-17 | Dell Products L.P. | Methods and systems for dynamically adjusting performance states of a processor |
CN103109279B (zh) | 2010-06-22 | 2016-08-31 | 富士通株式会社 | 多核处理器***,控制程序以及控制方法 |
US8392473B2 (en) * | 2010-09-07 | 2013-03-05 | Microgen Aptitude Limited | Fast hierarchical enrichment |
US8677361B2 (en) | 2010-09-30 | 2014-03-18 | International Business Machines Corporation | Scheduling threads based on an actual power consumption and a predicted new power consumption |
US8656408B2 (en) | 2010-09-30 | 2014-02-18 | International Business Machines Corporations | Scheduling threads in a processor based on instruction type power consumption |
US8418177B2 (en) | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
US8601193B2 (en) | 2010-10-08 | 2013-12-03 | International Business Machines Corporation | Performance monitor design for instruction profiling using shared counters |
US8489787B2 (en) | 2010-10-12 | 2013-07-16 | International Business Machines Corporation | Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors |
US20120137295A1 (en) | 2010-11-30 | 2012-05-31 | Alcatel-Lucent Canada Inc. | Method for displaying cpu utilization in a multi-processing system |
WO2012108058A1 (ja) | 2011-02-10 | 2012-08-16 | 富士通株式会社 | スケジューリング方法、設計支援方法、およびシステム |
US9213551B2 (en) | 2011-03-11 | 2015-12-15 | Oracle International Corporation | Return address prediction in multithreaded processors |
US9330430B2 (en) | 2011-03-21 | 2016-05-03 | Apple Inc. | Fast queries in a multithreaded queue of a graphics system |
US9015449B2 (en) | 2011-03-27 | 2015-04-21 | International Business Machines Corporation | Region-weighted accounting of multi-threaded processor core according to dispatch state |
GB2489708B (en) | 2011-04-05 | 2020-04-15 | Advanced Risc Mach Ltd | Thread selection for multithreaded processing |
US8695010B2 (en) | 2011-10-03 | 2014-04-08 | International Business Machines Corporation | Privilege level aware processor hardware resource management facility |
CA2759365A1 (en) | 2011-11-24 | 2013-05-24 | Ibm Canada Limited - Ibm Canada Limitee | Identification of thread progress information |
US9075610B2 (en) | 2011-12-15 | 2015-07-07 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation |
US9720744B2 (en) | 2011-12-28 | 2017-08-01 | Intel Corporation | Performance monitoring of shared processing resources |
US9069598B2 (en) | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
CN102566974B (zh) | 2012-01-14 | 2014-03-26 | 哈尔滨工程大学 | 基于同时多线程的取指控制方法 |
US8751830B2 (en) | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US8966232B2 (en) | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US20130283280A1 (en) | 2012-04-20 | 2013-10-24 | Qualcomm Incorporated | Method to reduce multi-threaded processor power consumption |
US9075735B2 (en) | 2012-06-21 | 2015-07-07 | Breakingpoint Systems, Inc. | Systems and methods for efficient memory access |
US9208044B2 (en) | 2012-06-25 | 2015-12-08 | Infosys Limited | Methods for simulating message-oriented services and devices thereof |
US9529719B2 (en) | 2012-08-05 | 2016-12-27 | Advanced Micro Devices, Inc. | Dynamic multithreaded cache allocation |
US8984313B2 (en) | 2012-08-31 | 2015-03-17 | Intel Corporation | Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
CN103488684B (zh) | 2013-08-23 | 2016-12-28 | 国家电网公司 | 基于缓存数据多线程处理的电力可靠性指标快速计算方法 |
US9218185B2 (en) * | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
-
2014
- 2014-03-27 US US14/226,911 patent/US9417876B2/en active Active
-
2015
- 2015-03-16 RU RU2016127444A patent/RU2670909C9/ru active
- 2015-03-16 SG SG11201606094TA patent/SG11201606094TA/en unknown
- 2015-03-16 CN CN201580015798.XA patent/CN106133689B/zh active Active
- 2015-03-16 JP JP2016557118A patent/JP6509246B2/ja active Active
- 2015-03-16 CA CA2940988A patent/CA2940988C/en active Active
- 2015-03-16 EP EP15711699.7A patent/EP3123323A1/en not_active Ceased
- 2015-03-16 WO PCT/EP2015/055444 patent/WO2015144477A1/en active Application Filing
- 2015-03-16 AU AU2015238663A patent/AU2015238663B2/en active Active
- 2015-03-16 KR KR1020167023371A patent/KR101868725B1/ko active IP Right Grant
- 2015-03-25 TW TW104109602A patent/TWI614681B/zh active
- 2015-08-06 US US14/819,633 patent/US9454372B2/en active Active
-
2016
- 2016-08-05 ZA ZA2016/05466A patent/ZA201605466B/en unknown
- 2016-09-18 IL IL24788716A patent/IL247887B/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215932A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor |
CN101506774A (zh) * | 2006-08-29 | 2009-08-12 | 高通股份有限公司 | 相依指令线程调度 |
US20130191832A1 (en) * | 2012-01-19 | 2013-07-25 | International Business Machines Corporation | Management of threads within a computing environment |
CN103488546A (zh) * | 2013-01-29 | 2014-01-01 | 中国人民解放军理工大学 | 一种支持多级别数据和数据库在线并发备份与恢复方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298922A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
US11416287B2 (en) | 2018-08-30 | 2022-08-16 | Apollo Intelligent Driving Technology (Beijing) Co., Ltd. | Method for processing parallel tasks in unmanned vehicle system, and unmanned vehicle system |
Also Published As
Publication number | Publication date |
---|---|
CA2940988C (en) | 2022-08-16 |
KR20160113681A (ko) | 2016-09-30 |
US9417876B2 (en) | 2016-08-16 |
RU2670909C9 (ru) | 2018-12-12 |
CA2940988A1 (en) | 2015-10-01 |
TWI614681B (zh) | 2018-02-11 |
TW201610841A (zh) | 2016-03-16 |
SG11201606094TA (en) | 2016-08-30 |
CN106133689B (zh) | 2019-03-22 |
IL247887A0 (en) | 2016-11-30 |
ZA201605466B (en) | 2017-08-30 |
AU2015238663A1 (en) | 2016-08-11 |
RU2016127444A3 (zh) | 2018-04-28 |
JP6509246B2 (ja) | 2019-05-08 |
AU2015238663B2 (en) | 2017-05-25 |
RU2016127444A (ru) | 2018-04-28 |
IL247887B (en) | 2019-10-31 |
EP3123323A1 (en) | 2017-02-01 |
RU2670909C2 (ru) | 2018-10-25 |
WO2015144477A1 (en) | 2015-10-01 |
KR101868725B1 (ko) | 2018-07-17 |
US20150277920A1 (en) | 2015-10-01 |
JP2017513112A (ja) | 2017-05-25 |
US9454372B2 (en) | 2016-09-27 |
US20150339121A1 (en) | 2015-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106233254A (zh) | 多线程计算机***中的地址扩展及缩短 | |
CN106133694A (zh) | 多线程的动态启用 | |
CN106133690A (zh) | 多线程计算机***中的线程上下文保留 | |
CN106133689A (zh) | 多线程计算机***中的线程上下文恢复 | |
CN106104479B (zh) | 多线程计算机***中的闲置时间累积 | |
CN106104487B (zh) | 跟踪多线程计算机***中的利用率的方法和*** | |
TWI598818B (zh) | 用於管理電腦中多執行緒之控制區之系統、方法及電腦程式產品 | |
TWI614680B (zh) | 用於分派電腦中多執行緒之開始虛擬執行指令 | |
CN106170768A (zh) | 在计算机中分派多个线程 | |
CN106133692A (zh) | 退出计算机中的多个线程 | |
CN106462390B (zh) | 用于多线程能力信息取回的方法和*** | |
ES2699995T3 (es) | Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |