多线程计算机系统中的闲置时间累积的制作方法

文档序号:17880821发布日期:2019-06-13 10:35阅读:162来源:国知局
多线程计算机系统中的闲置时间累积的制作方法

本发明一般地涉及支持多个线程的计算机系统,并且更具体地说,涉及多线程计算机系统中的闲置时间累积。

当计算机系统的处理器速度在过去数十年内增加时,可存取此类计算机系统的存储器所藉以的速度未成比例增加。因此,处理器的周期时间愈快,等待数据自存储器中取回的延迟愈明显。藉由各种级别的缓存且在最新处理器中藉由多线程(MT)减轻此类延迟的影响。

MT允许处理器的各种核心资源由多个指令流(称为线程)共享。核心资源可包括执行单元、高速缓存、转换后备缓冲器(TLB)及其类似者,其可一般统称为核心。在由高速缓存未命中所产生的延时或一个线程中的其他延迟期间,一个或多个其他线程可利用核心资源,因此增加核心资源的利用率。在超标量处理器同时多线程(SMT)实施中,多个线程可同时由一个或多个核心的核心资源来服务。

在现代硬件平台中,MT通常以对在MT硬件上运行的操作系统(OS)透明的方式实施。此特性的一个方面为OS不需要修改以利用MT硬件。然而,相对于OS的透明MT操作可导致响应时间、容量供应、容量规划及计费的高可变性。此可变性可出现是因为OS不感知其任务是否具有核心的独占性控制,或其任务是否作为共享核心的线程执行。借助设计,当在核心在使用中时存在高平均线程密度时,可获得具MT能力的硬件上的存储器密集工作负荷的最高容量。额外容量可归因于由MT提供的增加的高速缓存利用。如果OS不一致地维持所利用核心的高平均线程密度,则由MT提供的额外总吞吐量容量将不可用。举例而言,如果当存在低计算利用率时硬件每核心执行单一MT线程且当存在高计算利用率时以高线程密度执行,则其可非常难以判定多少总MT计算容量可用于工作负荷。MT线程利用的此硬件可变性可以以类似于先前关于容量所描述的方式导致事务响应时间及计费两者的可变性。



技术实现要素:

各实施例包括一种用于多线程计算机系统中的闲置时间累积的系统、方法和计算机程序产品。根据一个方面,一种计算机系统包括配置,其具有在逻辑分区中的能在单线程(ST)模式及多线程(MT)模式之间配置的多个核心(core)和操作系统(OS)映像。所述MT模式同时支持在每个核心的共享资源上的多个线程。所述计算机系统还包括多线程工具,其被配置为执行一种方法,所述方法包括在所述多个核心中的启动核心上执行查询指令。所述执行包括由所述OS映像获得指示所述逻辑分区中的所述核心的当前最大线程标识符的最大线程标识值。所述启动核心还获得所述核心中的每一者的多线程闲置时间值,所述多线程闲置时间值指示以所述MT模式在所述核心中的每一者上启用的所有线程的累积闲置时间量。

根据另一个方面,提供一种用于计算机系统中的闲置时间累积的计算机实施的方法。所述计算机系统包括配置,所述配置具有在逻辑分区中的能在ST模式及MT模式之间配置的多个核心和OS映像。所述MT模式同时支持在每个核心的共享资源上的多个线程。所述方法包括在所述多个核心中的启动核心上执行查询指令。所述执行包括由所述OS映像获得指示所述逻辑分区中的所述核心的当前最大线程标识符的最大线程标识值。所述启动核心还获得所述核心中的每一者的多线程闲置时间值,所述多线程闲置时间值指示以所述MT模式在所述核心中的每一者上启用的所有线程的累积闲置时间量。

另一方面包括一种用于计算机系统中的闲置时间累积的计算机程序产品。所述计算机系统包括配置,所述配置具有在逻辑分区中的能在ST模式及MT模式之间配置的多个核心和OS映像。所述MT模式同时支持在每个核心的共享资源上的多个线程。所述计算机程序产品包括具有程序指令的计算机可读存储介质,其中所述计算机可读存储介质并非信号。所述程序指令能由处理电路读取以使所述处理电路执行一种方法,所述方法包括在所述多个核心中的启动核心上执行查询指令。所述执行包括由所述OS映像获得指示所述逻辑分区中的所述核心的当前最大线程标识符的最大线程标识值。所述启动核心还获得所述核心中的每一者的多线程闲置时间值,所述多线程闲置时间值指示以所述MT模式在所述核心中的每一者上启用的所有线程的累积闲置时间量。

附图说明

当本说明书完结时在权利要求中特定地指出且清楚地要求保护被视为实施例的主题。实施例的前述及其他特征及优点自结合附图而进行的以下详细描述显而易见,在附图中:

图1A描绘可根据一个实施例实施的计算环境;

图1B描绘可根据一个实施例实施的计算环境;

图2描绘可根据一个实施例实施的核心的处理电路;

图3描绘可根据一个实施例实施的计算环境;

图4描绘可根据一个实施例实施的计算环境中的系统管理程序(hypervisor)上下文保持的一个实例;

图5描绘根据一个实施例的用于多线程的动态启用的过程流;

图6A描绘根据一个实施例的CPU地址扩展过程的一个实例;

图6B描绘根据一个实施例的CPU地址缩短过程的一个实例;

图7描绘根据一个实施例的用于设定多线程命令(order)的过程流;

图8描绘根据一个实施例的捕获和利用累积闲置时间的配置的一个实例;

图9描绘根据一个实施例的用于闲置时间累积和机会量化的过程流;以及

图10描绘根据一个实施例的计算机可读介质。

具体实施方式

例示性实施例提供支持单线程和多线程操作模式的计算机系统中的多线程(MT)操作。本文中描述的系统使软件能够通过要求操作系统(OS,也称为OS映像)显式地“加入宣告(opt in)”以利用多线程硬件而减轻硬件可变性。当OS理解执行环境的MT性质时,OS具有显式地管理每处理器核心线程密度的能力(对于其最好能力,给定工作负载分派模式)。OS具有如下选项:即使当较少地利用计算资源时仍维持高线程密度,由此减轻在其他MT实施上看到的总技术容量的许多可变性。作为维持高线程密度的直接结果,事务响应时间及计费方面两者可更一致。当具有始终高的每处理器核心线程密度时,能够增大多线程值。例示性实施例使能理解由于针对给定混合工作负载仅运行每个处理器核心一个线程而导致的错过机会量。关于系统(其中许多OS映像共享单个计算机系统,例如中央处理复合体(CPC))中多线程特性利用率的知识可以使系统操作员能够量化系统是否将受益于重新配置或其它更新。

例示性实施例提供支持单线程和多线程操作模式的计算机系统中的多线程操作。如本文所使用,逻辑线程是指单一指令流及其相关联状态。亦即,在架构级别处,每一逻辑线程表示独立中央处理单元(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为具有不同于IPL CPU的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,New York)提供的z/Architecture。z/Architecture描述于2012年8月的题为“z/Architecture Principles 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中展示为被指派给LPAR2 180。LPAR3190展示由分区采用的两种不同类型的核心102的一个实例,其中在此实例中核心4 140允许多个线程可操作,但核心5 150不允许多个线程可操作。在图1A的实例中,LPAR1 170提供用于OS 171以及程序172、173、174及175的处理资源。LPAR2 180提供用于OS 181以及程序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)的客体开发环境。每一客体OS 311、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。某些操作和枚举在ST模式下适用于CPU,但在MT模式下适用于核心。术语CPU/核心通常用于指适当地在ST或MT模式下经受这些操作或枚举的实体。因此,总CPU/核心计数可指示配置中的通用CPU(不论在被配置、待用或保留状态下)或包括通用CPU的核心的总数。被配置CPU/核心计数可指示在被配置状态下(亦即,在配置及准备执行程序中)的通用CPU或包括通用CPU的核心的数目。待用CPU/核心计数指示在待用状态下(亦即,不可用于执行程序直至置于被配置状态下)的通用CPU或包括通用CPU的核心的数目。保留CPU/核心计数指示在保留状态下(亦即,不可用于执行程序且不能置于被配置状态下)的通用CPU或包括通用CPU的核心的数目。

图8描绘根据一个实施例的捕获和利用累积闲置时间的配置850的一个实例。为了表征系统性能和标识通过增加多线程特性利用率而提高系统性能的机会,各实施例可以支持访问系统性能信息的查询指令。查询指令的一个实例是DIAGNOSE(诊断)指令,其存储有关物理和逻辑CPU/核心利用率(即,有关ST模式下的CPU或MT模式下的核心的利用率)的信息。在一个实施例中,DIAGNOSE指令可以包括多个参数以便定义要返回的信息块的类型(例如常规信息块或扩展信息块),以及块大小信息和位置。在图8的实例中,在MT模式下操作的配置850包括一对核心800A和800B,其中配置850可以是逻辑分区(LPAR)并且核心800A和800B可以是逻辑核心。核心800A和800B的每一个包括一对线程,即线程0和线程1。配置850的存储器801可以包括OS映像820,其定义要执行的指令序列。OS映像820可以表示单独程序的集合或单个程序。

在图8的实例中,OS映像820包括诸如DIAGNOSE指令之类的查询指令821,其可以在作为启动核心的核心800A的线程1上执行(830)。可以在系统管理程序级别(例如,在图1A和1B的LPAR系统管理程序163中)、毫码级别(例如,在图1A和1B的毫码162中)和物理硬件级别(例如,图2的计数器/计时器250和/或图8的计数器825)包括对执行查询指令821的支持。查询指令821可以指定用于存储系统性能信息的位置832,所述信息包括定义时基性能的多个值(例如,作为扩展时间信息(ETI)块836的一部分)。ETI块836可以包括关于配置850以及系统中的其它配置的性能信息。例如,参考图1A和1B,从OS 171、181或191之一执行的查询指令可以导致ETI块,该ETI块汇总跨所有配置(例如计算机系统100的LPAR 170、180和190)的性能。

在图8的实例中,ETI块836包括ETI块标头840和一个或多个扩展分区时间信息(EPTI)块834A-834N(统称834),其中系统的每个分区或配置可以包括单独EPTI块834。例如,参考图1A和1B的计算机系统100,可以定义三个EPTI块,每个LPAR一个EPTI块。在图8的实例中,如果配置850是系统中定义的唯一配置(即,逻辑分区),则仅需要一个EPTI块834,例如EPTI块834A。每个EPTI块834可以包括扩展分区(EP)标头802和一个或多个扩展CPU/核心信息(ECI)块810A-810M(统称810)。EP标头802可以在配置/分区或OS映像级别定义值,而ECI块810A-810M在核心级别定义值。

在图8的实例中,ETI块标头840包括多个逻辑分区(Npar)842,针对它们提供系统性能信息。在报告机器配置中,ETI块标头840还可以包括多个物理CPU/核心(PhysCPU)844。ETI块标头840还可以包括其它值,例如时间值、状态值、标识符、指针/偏移等。

EP标头802可以包括多个值,例如可以与LPAR关联的分区编号(PN)标识符804,以及可以标识与分区关联的多个逻辑CPU/核心的CPU计数806。EP标头802还可以包括被报告分区的程序指定最大线程标识(MTID)808,例如由SIGNAL PROCESSOR(信号处理器)SIGP设定MT命令设定。MTID 808可以用于判定启用了ST模式(例如,MTID为0)还是MT模式(例如,MTID大于0)。EP标头802还可以包括其它值,例如配置状态值、状态值、标识符、指针/偏移等。

ECI块810A-810M的每一者可以包括总分派时间812、MT闲置时间814、CPU地址816和其它值。总分派时间812可以指示核心被分派(例如,其中将物理CPU/核心分配给逻辑CPU/核心)的累积时间。当定义了对应的逻辑CPU/核心时,可能不重设总分派时间812。当针对报告配置(即,逻辑分区)启用MT模式时,MT闲置时间814的内容是在MT模式下所分派的核心上的所有CPU(即,线程)的累积线程闲置时间量。MT闲置时间814可以包括核心的单独分派的CPU处于以下任何一种状态的时间:启用等待状态或无效状态(例如,停止状态、检查停止状态、停用等待状态,或者在程序中断循环中)。在一个实施例中,机器可以通过检测和考虑无效状态或进出启用等待状态的变化来基于每个线程维护该闲置时间值。系统管理程序(例如,在图1A和1B的LPAR系统管理程序163中)然后可以累积每个核心的累积闲置时间量,并且响应于查询指令821将该累积信息提供给OS映像820。MT闲置时间814仅当MTID 808为非0(即,处于MT模式)时才有效,并且MT闲置时间814不考虑未分派的核心的任何时间。CPU地址816可以标识被报告的CPU或核心的逻辑CPU地址或逻辑核心标识符。可以包括在ECI块810中的其它信息的实例包括各种时间值、权重、状态值等。

在获得ETI块836中的值之后,OS映像820可以在822、823和824执行多个计算。MTID 808提供粗粒度数据,因为它描述整个逻辑分区是否利用MT。MT闲置时间814是细粒度的,因为它定义在OS映像动态启用MT之后,系统管理程序分派的核心中的CPU(线程)闲置的时间量。总分派时间812描述由系统管理程序针对对应逻辑分区分派给定核心的时间量。

例如,为了确定用于MT能力增长的错过机会量,可以执行各种机会值计算。考虑包括每个核心两个线程的系统,如图8的实例中示出,如果针对系统上表示的所有逻辑分区,所有核心分派时间执行每个核心两个线程,则可以获得完整MT值。因此,跨配置的所有核心的总核心分派时间乘以计算机系统硬件的每个核心支持的最大线程数目变成机会比(opportunity ratio)分母。机会比分子可以指定所分派的核心未以每个核心两个线程运行的时间量,如下所示。

对于未动态启用MT(即,MTID 808等于0)的逻辑分区中的OS映像,分子可以是由该逻辑分区消耗的核心的总分派时间812之和(MT停用错过机会值822)。这定义这些分派的核心的错过机会量—在该逻辑分区的每个核心分派间隔内,(两个线程中的)一个线程实际上闲置。对于动态启用MT(即,MTID 808不等于0)的逻辑分区中的OS映像,分子可以是由该逻辑分区消耗的核心的MT闲置时间814之和(MT启用错过机会值823)。这可以表示针对逻辑分区的能力增长的MT瞬时错过机会。机会比824可以被计算为所有所述逻辑分区的MT停用错过机会值822与MT启用错过机会值823的组合÷(所有所述逻辑分区的总分派时间812×计算机系统硬件的每个核心支持的最大线程数目)。每个核心支持的最大线程数目可以被定义为与特定计算机系统模型关联的常数值,并且不需要与MTID 808一致。在图1A和1B中的实例中,每个核心支持的最大线程数目是4,而在图8中,每个核心支持的最大线程数目是2。在其中每个核心支持的最大线程数目是2的实例中,机会比824可以被定义为所有逻辑分区的MT停用错过机会值822或MT启用错过机会值823之和÷(由该逻辑分区消耗的所有核心的总分派时间812之和×2)。

机会比824可以指示间隔内组合工作负载的错过机会的百分比。如果硬件仅支持每个核心两个线程,则接近50%的结果将说明由于MT利用而导致仅最小能力增长是可能的,并且0%的结果将说明跨系统中的所有逻辑分区具有完全的MT利用。这可以用于鼓励跨逻辑分区增加MT利用,或者推断MT可能对系统产生的潜在高速缓存影响。

图9描绘根据一个实施例的用于闲置时间累积和机会量化的过程流900。在方框902,在多个核心的启动核心上执行查询指令,例如图8的核心800A上的查询指令821。查询指令可以指定用于存储最大线程标识值、多线程闲置时间值以及总分派时间的位置,例如用于图8的ETI块836的位置832。在方框904,OS映像(例如图8的OS映像820)可以获得指示逻辑分区中的核心的当前最大线程标识符的最大线程标识值(例如,MTID 808)。给定逻辑分区的MTID 808可以变化,具体取决于当发出查询指令时(例如,当逻辑分区处于ST模式或MT模式时)的相对计时。启动核心还可以获得每个核心的多线程闲置时间值(例如,MT闲置时间814),其指示以MT模式在每个核心上启用的所有线程的累积闲置时间量。启动核心还可以获得每个核心的总分派时间(例如,总分派时间812)作为每个核心被分派的累积时间。在方框906,可以使用最大线程标识值判定逻辑分区是处于ST模式还是MT模式。在方框908,基于判定逻辑分区处于MT模式,可以将MT启用错过机会值(例如图8的MT启用错过机会值823)确定为逻辑分区中的所有核心的多线程闲置时间值之和。在方框910,基于判定逻辑分区处于ST模式,可以将MT停用错过机会值(例如图8的MT停用错过机会值822)确定为逻辑分区中的所有核心的总分派时间之和×(计算机系统硬件的每个核心支持的最大线程数目-1)。

如前所述,一种系统可以包括具有逻辑分区的多个配置,每个逻辑分区具有OS映像和一个或多个核心。因此,方框902中的查询指令执行可以获得:每个逻辑分区的最大线程标识值、每个逻辑分区中的每个核心的多线程闲置时间值,以及每个逻辑分区中的每个核心的总分派时间。可以针对每个逻辑分区重复包括方框904、906、908和910的序列911,从而分别跨所有MT启用和MT停用逻辑分区,累积MT启用和MT停用错过机会值。在方框912,将机会比(例如图8的机会比824)计算为所有逻辑分区的总MT停用错过机会值与总MT启用错过机会值的组合÷(所有逻辑分区的总分派时间×计算机系统硬件的每个核心支持的最大线程数目)。

技术效果和益处包括提供支持单线程操作模式和多线程操作模式两者的计算机系统中的闲置时间累积。

各实施例包括一种用于多线程计算机系统中的闲置时间累积的系统、方法和计算机程序产品。根据一个方面,一种计算机系统包括配置,其具有在逻辑分区中的能在单线程(ST)模式及多线程(MT)模式之间配置的多个核心和操作系统(OS)映像。所述MT模式同时支持在每个核心的共享资源上的多个线程。所述计算机系统还包括多线程工具,其被配置为执行一种方法,所述方法包括在所述多个核心中的启动核心上执行查询指令。所述执行包括由所述OS映像获得指示所述逻辑分区中的所述核心的当前最大线程标识符的最大线程标识值。所述启动核心还获得所述核心中的每一者的多线程闲置时间值,所述多线程闲置时间值指示以所述MT模式在所述核心中的每一者上启用的所有线程的累积闲置时间量。

根据另一个方面,提供一种用于计算机系统中的闲置时间累积的计算机实施的方法。所述计算机系统包括配置,所述配置具有在逻辑分区中的能在ST模式及MT模式之间配置的多个核心和OS映像。所述MT模式同时支持在每个核心的共享资源上的多个线程。所述方法包括在所述多个核心中的启动核心上执行查询指令。所述执行包括由所述OS映像获得指示所述逻辑分区中的所述核心的当前最大线程标识符的最大线程标识值。所述启动核心还获得所述核心中的每一者的多线程闲置时间值,所述多线程闲置时间值指示以所述MT模式在所述核心中的每一者上启用的所有线程的累积闲置时间量。

另一方面包括一种用于计算机系统中的闲置时间累积的计算机程序产品。所述计算机系统包括配置,所述配置具有在逻辑分区中的能在ST模式及MT模式之间配置的多个核心和OS映像。所述MT模式同时支持在每个核心的共享资源上的多个线程。所述计算机程序产品包括具有程序指令的计算机可读存储介质,其中所述计算机可读存储介质并非信号。所述程序指令能由处理电路读取以使所述处理电路执行一种方法,所述方法包括在所述多个核心中的启动核心上执行查询指令。所述执行包括由所述OS映像获得指示所述逻辑分区中的所述核心的当前最大线程标识符的最大线程标识值。所述启动核心还获得所述核心中的每一者的多线程闲置时间值,所述多线程闲置时间值指示以所述MT模式在所述核心中的每一者上启用的所有线程的累积闲置时间量。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括由所述启动核心获得所述核心中的每一者的总分派时间作为所述核心中的每一者被分派的累积时间。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述查询指令指定用于存储所述最大线程标识值、所述多线程闲置时间值以及所述总分派时间的位置。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括基于判定所述逻辑分区处于所述ST模式,将MT停用错过机会值确定为所述逻辑分区中的所有所述核心的所述总分派时间之和×(所述计算机系统的硬件的每个核心所支持的最大线程数目-1)。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括基于确定所述逻辑分区处于所述MT模式,将MT启用错过机会值确定为所述逻辑分区中的所有所述核心的所述多线程闲置时间值之和。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述最大线程标识值用于判定所述逻辑分区是处于所述ST模式还是所述MT模式。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括具有逻辑分区的多个配置,每个逻辑分区包括OS映像和一个或多个核心。所述查询指令获得:所述逻辑分区中的每一者的所述最大线程标识值、所述逻辑分区中的每一者内的所述核心中的每一者的所述多线程闲置时间值、以及所述逻辑分区中的每一者内的所述核心中的每一者的所述总分派时间。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述多线程工具被进一步配置为将机会比计算为所有所述逻辑分区的所述MT停用错过机会值与所述MT启用错过机会值的组合÷(所有所述逻辑分区的所述总分派时间×所述计算机系统硬件的每个核心支持的最大线程数目)。

除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括通过检测和考虑无效状态或等待状态的启用变化,基于每个线程维护所述多线程闲置时间。系统管理程序可以累积每个核心的所述累积闲置时间量。可以将所累积的累积闲置时间量提供给所述OS映像。

本文中所用的术语,仅仅是为了描述特定的实施例,而不意图限定本发明。本文中所用的单数形式的“一”和“该”,旨在也包括复数形式,除非上下文中明确地另行指出。还要知道,“包含”和/或“包括”在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。

以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对一个或多个实施例的描述其目的在于示意和描述,并非是穷尽性的,也并非是要将本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,显然可以作出许多修改和变型而不偏离本发明的精神和范围。对实施例的选择和描述,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施例。

本发明的各种实施例的描述已为达成说明的目的而呈现,但不意欲为穷尽性的或限于所揭示的实施例。在不脱离所描述实施例的范围及精神的情况下,许多修改及变化对于本领域技术人员将显而易见。本文中所使用的术语被选择以最好地解释实施例的原理、实际应用或对市场中找到的技术的技术改进,或使其他本领域技术人员能够理解本文所揭示的实施例。

现参看图10,总体上展示根据一个实施例的包括计算机可读存储介质1002及程序指令1004的计算机程序产品1000。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1