跟踪多线程计算机系统中的利用率的方法和系统转让专利

申请号 : CN201580015830.4

文献号 : CN106104487B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·D·布拉德伯里D·W·施密特D·V·罗萨J·巴尔蒂克G·M·金

申请人 : 国际商业机器公司

摘要 :

各实施例涉及跟踪多线程(MT)计算机系统中的利用率。根据一个方面,一种计算机系统包括具有核心的配置,所述核心被配置为在MT下操作,所述MT支持所述核心的共享资源上的多个线程。所述核心被配置为执行一种方法,所述方法包括重设多个利用率计数器。所述利用率计数器包括多组计数器。在所述核心上的每个时钟周期内,从所述多组计数器中选择一组计数器。所述选择基于所述核心上的当前活动线程数目。此外,在每个时钟周期内,基于所述核心的所述多个线程处的一个或多个执行事件的聚合,递增所选择的一组计数器中的计数器。将所述利用率计数器的值提供给软件程序。

权利要求 :

1.一种用于跟踪包括核心的配置中的利用率的计算机实施的方法,所述核心被配置为在多线程MT模式下操作,所述MT模式支持所述核心的共享资源上的多个线程,所述方法包括:重设多个利用率计数器,所述利用率计数器包括多组计数器,包括第一组计数器和第二组计数器,每组计数器对应于不同数量的当前活动线程并且每组计数器和其它组计数器彼此非重叠;

针对所述核心上的每个时钟周期执行:

从所述多组计数器中选择一组计数器,所述选择基于所述核心上的当前活动线程数目而不是基于多个线程中哪些特定线程当前活动,其中,基于当前活动的多个线程中的一个,选择第一组计数器,并且基于当前活动的多个线程中的两个来选择第二组计数器;以及递增所选择的一组计数器中的计数器,所述递增基于所述核心的所述多个线程处的一个或多个执行事件的聚合;以及将所述利用率计数器的值提供给软件程序。

2.如权利要求1所述的方法,其中所述执行事件包括时钟周期,并且所选择的一组计数器中的所述计数器被递增1。

3.如权利要求2所述的方法,其中所述执行事件进一步包括指令完成,并且基于在所述时钟周期期间的所有所述当前活动线程上的指令完成数目而递增所选择的一组计数器中的另一个计数器。

4.如权利要求2所述的方法,其中所述执行事件进一步包括高速缓存未命中,并且基于在所述时钟周期期间的所有所述当前活动线程上的高速缓存未命中数目而递增所选择的一组计数器中的另一个计数器。

5.如权利要求2所述的方法,其中所述执行事件进一步包括分支误预测,并且基于在所述时钟周期期间的所有所述当前活动线程上的分支误预测数目而递增所选择的一组计数器中的另一个计数器。

6.如权利要求2所述的方法,其中当线程有效并且未处于等待状态时,该线程当前活动。

7.如权利要求1所述的方法,其中所述软件程序是操作系统或系统管理程序。

8.一种用于跟踪包括核心的配置中的利用率的计算机实施的系统,其包括适于执行根据任一上述方法权利要求的方法的所有步骤的装置。

9.一种包括指令的计算机程序的存储介质,当在计算机系统上执行所述计算机程序时,所述指令用于执行根据任一上述方法权利要求的方法的所有步骤。

说明书 :

跟踪多线程计算机系统中的利用率的方法和系统

背景技术

[0001] 本发明一般地涉及支持多个线程的计算机系统,并且更具体地说,涉及用于跟踪多线程计算机系统中的利用率的硬件计数器。
[0002] 当计算机系统的处理器速度在过去数十年内增加时,可存取此类计算机系统的存储器所藉以的速度未成比例增加。因此,处理器的周期时间愈快,等待数据自存储器中取回的延迟愈明显。藉由各种级别的缓存且在最新处理器中藉由多线程(MT)减轻此类延迟的影响。
[0003] MT允许处理器的各种核心资源由多个指令流(称为线程)共享。核心资源可包括指令执行单元、高速缓存、转换后备缓冲器(TLB)及其类似者,其可一般统称为核心。在由高速缓存未命中所产生的延时或一个线程中的其他延迟期间,一个或多个其他线程可利用核心资源,因此增加核心资源的利用率。在超标量处理器同时多线程(SMT)实施中,多个线程可同时由一个或多个核心的核心资源来服务。
[0004] 在现代硬件平台中,MT通常以对在MT硬件上运行的操作系统(OS)透明的方式实施。此特性的一个方面为OS不需要修改以利用MT硬件。然而,相对于OS的透明MT操作可导致响应时间、容量供应、容量规划及计费的高可变性。此可变性可出现是因为OS不感知其任务是否具有核心的独占性控制,或其任务是否作为共享核心的线程执行。借助设计,当在核心在使用中时存在高平均线程密度时,可获得具MT能力的硬件上的存储器密集工作负荷的最高容量。额外容量可归因于由MT提供的增加的高速缓存利用。如果OS不一致地维持所利用核心的高平均线程密度,则由MT提供的额外总吞吐量容量将不可用。举例而言,如果当存在低计算利用率时硬件每核心执行单一MT线程且当存在高计算利用率时以高线程密度执行,则其可非常难以判定多少总MT计算容量可用于工作负荷。MT线程利用的此硬件可变性可以以类似于先前关于容量所描述的方式导致事务响应时间及计费两者的可变性。

发明内容

[0005] 本发明提供一种用于跟踪多线程(MT)计算机系统中的利用率的方法、系统和计算机程序,如要求保护的那样。

附图说明

[0006] 当本说明书完结时在权利要求中特定地指出且清楚地要求保护被视为实施例的主题。实施例的前述及其他特征及优点自结合附图而进行的以下详细描述显而易见,在附图中:
[0007] 图1A描绘可根据一个实施例实施的计算环境;
[0008] 图1B描绘可根据一个实施例实施的计算环境;
[0009] 图2描绘可根据一个实施例实施的核心(core)的处理电路;
[0010] 图3描绘可根据一个实施例实施的计算环境;
[0011] 图4描绘可根据一个实施例实施的计算环境中的系统管理程序(hypervisor)上下文保持的一个实例;
[0012] 图5描绘根据一个实施例的用于多线程的动态启用的过程流;
[0013] 图6A描绘根据一个实施例的CPU地址扩展过程的一个实例;
[0014] 图6B描绘根据一个实施例的CPU地址缩短过程的一个实例;
[0015] 图7描绘根据一个实施例的用于设定多线程命令(order)的过程流;
[0016] 图8描绘根据一个实施例的可被实现为跟踪利用率的核心的处理电路的一个实例;
[0017] 图9描绘根据一个实施例的捕获利用率计数器的配置的一个实例;
[0018] 图10描绘根据一个实施例的跟踪利用率的过程流;以及
[0019] 图11描绘根据一个实施例的计算机可读介质。

具体实施方式

[0020] 本文中描述的示例性实施例提供计算机系统中的多线程(MT)操作的性能监视,该计算机系统支持单线程(ST)和MT操作模式。本文中描述的系统使软件能够通过要求OS显式地“加入宣告(opt in)”以利用MT硬件而减轻硬件可变性。当OS理解执行环境的MT性质时,OS具有显式地管理每处理器核心(core)线程密度的能力(对于其最好能力,给定工作负载分派模式)。OS具有如下选项:即使当较少地利用计算资源时仍维持高线程密度,由此减轻在其他MT实施上看到的总技术容量的许多可变性。作为维持高线程密度的直接结果,事务响应时间及计费方面两者可更一致。当具有始终高的每处理器核心线程密度时,能够增大多线程值。
[0021] 根据各实施例,为了确定任何错过的容量增长机会,为OS控制程序提供以下能力:查询机器以便获得执行的指令数目以及特定核心在核心上的一个线程、两个线程等等直到所有线程上运行花费的周期。在各实施例中,提供硬件计数器以便在各种线程密度(例如,一个线程、两个线程等)下而不是基于个体线程或CPU来对核心中的事件进行计数(例如,执行的指令数目和时钟周期数目)。递增的硬件计数器能够基于核心中的活动线程数目而改变。
[0022] 软件能够从计数器获得信息,并且使用计数器信息确定何时错过在核心的另一个线程上执行更多工作的机会。从该信息,软件还能够确定单个线程使用的核心资源的百分比,并且使用该信息进行软件退款。通过从系统中的核心聚合所有信息,OS可进行容量规划,例如计算总容量、已使用容量和空闲容量。
[0023] 如本文所使用,逻辑线程是指单一指令流及其相关联状态。亦即,在架构级别处,每一逻辑线程表示独立中央处理单元(CPU)或处理器。在硬件级别处,当分派线程时,线程为与客体状态的维持组合的与逻辑线程相关联的指令流的执行。因此,本文中可互换地使用术语“线程”与“CPU”。
[0024] 在一个例示性实施例中,CPU含有用于指令执行、中断动作、时序功能、初始程序加载及其他机器相关功能的定序及处理工具。CPU定义可映射至多种基础物理实施的逻辑功能。CPU在执行指令时可处理固定长度的二进制整数及浮点数(例如,二进制、十进制及十六进制)、可变长度的十进制整数,及固定或可变长度的逻辑信息。处理可为并行或串行的。处理元素的宽度、移位路径的多重性及执行不同类型算术中的同时性程度可在不影响逻辑结果的情况下在CPU的一个模型与另一模型之间不同。
[0025] CPU执行的指令可包括多个指令类别,诸如通用、十进制、浮点支持(FPS)、二进制浮点(BFP)、十进制浮点(DFP)、十六进制浮点(HFP)、控制及I/O指令。通用指令可用于执行二进制整数算术运算及逻辑、分支及其他非算术运算。十进制指令对十进制格式的数据进行运算。BFP、DFP及HFP指令分别对BFP、DFP及HFP格式的数据进行运算,同时FPS指令独立于格式对浮点数据进行运算或自一种格式转换至另一种格式。特权控制指令及I/O指令可在CPU在监督状态下时被执行,且半特权控制指令可在经历适当授权机制的情况下在问题状态下执行。
[0026] CPU提供可用于程序但在主存储装置中不具有可寻址表示的寄存器。寄存器可包括(例如)当前程序状态字组(PSW)、通用寄存器、浮点寄存器及浮点控制寄存器、向量寄存器、控制寄存器、存取寄存器、前缀寄存器、当天时间(TOD)可编程寄存器及用于时钟比较器及CPU定时器的寄存器。此寄存器集合可被称为CPU的架构式寄存器上下文。在配置中的每一CPU可提供对TOD时钟的存取,TOD时钟可由配置中的所有CPU共享。指令操作码可判定哪一类型的寄存器将用于操作。
[0027] 每一CPU可具有指示其是否提供全套功能及工具(例如,通用CPU),或是否预期处理特定类型的工作负荷(例如,特殊CPU)的类型属性。主要CPU为通用CPU或具有与在最后初始程序加载(IPL)操作之后开始的CPU(IPLCPU)相同类型的CPU。次要CPU为具有不同于IPL CPU的CPU类型的除通用CPU以外的任何CPU。
[0028] 多线程工具可用于实施支持架构的计算机系统上。多线程工具提供对于多线程的支持以启用共享核心的一组线程(其亦可被称为CPU)。当多线程工具被启用时,核心内的CPU可共享诸如执行单元或高速缓存的某些硬件资源。当核心中的一个CPU等待硬件资源时(通常,在等待存储器存取时),核心中的其他CPU可利用核心中的共享资源而非使其保持闲置。当已安装及启用多线程工具时,线程与为核心的成员的CPU同义。当多线程工具未被安装或工具被安装但未被启用时,核心包括单一CPU或线程。
[0029] 当多线程工具被安装时,其可通过执行设定多线程信号处理器(SIGP)命令而被启用。在一个例示性实施例中,当多线程工具被启用时,在配置中的CPU的数目增加一倍数,该倍数的值由程序指定最大线程标识(PSMTID)确定。核心中的CPU的数目可比PSMTID多1。对应于此倍数的数个CPU被分组至核心中。配置中的相同CPU类型的每一核心具有相同数目个CPU。核心内的每一CPU为相同CPU类型;然而,基于模型及CPU类型,核心内的一些CPU可能不可操作。
[0030] 在一个例示性实施例中,控制程序(诸如,操作系统(OS))显式地启用多线程以便其可由OS管理的配置使用。备选地,系统管理程序可启用多线程,且系统管理程序的客体及其应用可明显受益。应用程序通常不感知多线程是否已被启用。当多线程被启用时,配置中的所有CPU的CPU地址被调整以包括在地址的最左侧位中的核心标识(或核心ID)及在地址的最右侧位中的线程标识(线程ID或TID)。核心ID亦可被称为核心地址值,且TID可被称为线程地址值。核心内的CPU可共享诸如执行单元或较低级别高速缓存的某些硬件工具,因此核心的一个CPU内的执行可影响核心中的其他CPU的性能。
[0031] 为了管理与在单线程与多线程模式之间动态切换配置的一个或多个核心相关联的改变,包括数个支持特征。为维持与不支持多线程的程序的兼容性,单线程模式可为在重设或去激活后的缺省模式。例示性实施例包括用于在自多线程模式转变至单线程模式之后保留来自多线程模式的线程上下文、传送所述线程上下文及恢复所述线程上下文以支持线程上下文的分析及/或恢复的特性。
[0032] 可由例示性实施例实施的计算环境可(例如)基于国际商业机器公司(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。计算环境可包括(例如)具有具一个或多个核心(例如,处理器核心)的一个或多个分区(例如,逻辑分区)的处理器复合体,及如本文中进一步描述的一个或多个级别的系统管理程序。
[0033] 图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不可操作。此外在核心4 140中,线程141和142可操作而线程143和144不可操作,并且在核心5 150中,线程151可操作而线程152、153和154不可操作。
[0034] 图1A亦描绘计算机系统100的系统存储器160,其中系统存储器160的各部分被分成逻辑分区1(LPAR1)170、LPAR2 180及LPAR3 190。LPAR 170、180、190表示可执行操作系统(诸如,Linux或 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提供用于OS171以及程序172、173、174及175的处理资源。LPAR2 180提供用于OS181以及程序182、183及184的处理资源。LPAR4 190提供用于OS191以及程序192及193的处理资源。
[0035] 在LPAR中执行的操作系统的控制下,程序在核心的线程上执行。在一个例示性实施例中,个体线程有时仅执行一个程序;然而,被设计为可重入的程序可在多个线程或核心上同时执行。举例而言,LPAR1 170的OS171的程序172可在核心1 110中的线程111及113上及核心2 120的线程121及124中执行。取决于OS的控制,不同程序可根据分派规则及服务质量协议被分派在相同或不同线程上。
[0036] 各种级别固件亦驻留在系统存储器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。
[0037] 图1B展示与图1A相同的计算系统100,除在图1B的计算环境中核心4 140现被指派给LPAR3 190而非LPAR2 180以外。亦注意不同于线程143及144不可操作的图1A,在图1B中,当在核心4 140上分派LPAR3190时所有四个线程141至144可操作。LPAR在核心102上的分派及解除分派为动态的,且在其他时间其他LPAR(未图示)可在同一核心102上操作。
[0038] 现转向图2,大体展示根据一个实施例的用于实施处理核心(诸如,图1A及图1B中的核心102中的一者)的处理电路200的方块图。处理电路200为可同时在MT环境中支持一个或多个线程的处理电路的一个实例。图2中所展示的处理电路200包括可将处理电路200耦合至其他处理器及外围设备的系统控制器接口单元202。系统控制器接口单元202亦可将Dcache 204(其读取及存储数据值)、Icache 208(其读取程序指令)及高速缓存接口单元206连接至外部存储器、处理器及其他外围设备。
[0039] Icache 208可结合指令取回单元(IFU)210提供指令流的加载,所述指令取回单元预先取回指令且可包括推测性加载及分支预测能力。可将所取回指令提供至指令解码单元(IDU)212以便解码成指令处理数据。
[0040] IDU 212可将指令提供至发出单元214,所述发出单元可控制指令至各种执行单元(诸如,用于执行一般运算的一个或多个定点单元(FXU)216及用于执行浮点运算的一个或多个浮点单元(FPU)218)的发出。FPU 218可包括二进制浮点单元(BFU)220、十进制浮点单元(DFU)222或任何其他浮点单元。发出单元214亦可经由一个或多个LSU管线耦合至一个或多个加载/存储单元(LSU)228。多个LSU管线被视为用于执行加载及存储以及用于分支的地址产生的执行单元。LSU 228及IFU 210两者可利用转换后备缓冲器(TLB)230以提供用于操作数及指令地址的缓冲转换。
[0041] FXU 216及FPU 218耦合至各种资源,诸如通用寄存器(GPR)224及浮点寄存器(FPR)226。GPR 224及FPR 226通过LSU 228提供用于自Dcache 204加载及存储的数据值的数据值存储。
[0042] 处理电路200亦可包括计数器及/或定时器250以支持基于系统时间的产生及诊断动作。举例而言,计数器及/或定时器250以及各种诊断及量测工具可用于支持当天时间。
[0043] 现转向图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可包括(例如)Linux或IBMz/OS、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支持代码,因为它们可以透明地受益于MT。在图3中示出的实施例中,在核心3 
130中,线程131和132可操作而线程133和134不可操作。此外在核心4 140中,线程141和142可操作而线程143和144不可操作,并且在核心5 150中,线程151可操作而线程152、153和
154不可操作。
[0044] 现转向图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。
[0045] 尽管数个结构被描绘在图4的实例中,但应理解,额外结构可由LPAR系统管理程序163及计算机系统100中的其他位置支持以管理多线程。举例而言,支持图3的虚拟机310、
320、330的多线程的结构可由图3的第二级别系统管理程序300保留。
[0046] 现转向图5,描绘根据一个实施例的用于多线程的动态启用的过程流500。在块502处,主要线程在单线程(ST)模式中执行。在块504处,在ST模式中取回多线程(MT)模式设定指令。在执行如在505处共同地描绘的此指令时,在块506处获得从由MT模式设定指令指定的位置请求的线程的数目。当发出设定MT模式指令时可由参数寄存器指定位置。MT模式设定指令可为包括设定MT命令及与所请求线程的数目相关联的程序指定最大线程id(PSMTID)的信号处理器(SIGP)指令。参看图7在本文中进一步描述与SIGP指令的设定MT命令相关联的过程的一个实例。
[0047] 继续过程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。
[0048] 当激活加载正常、加载与转储、加载清除或加载清除清单引导密钥时CPU可进入加载状态。如果通道命令(command)字(CCW)型初始程序加载操作成功地完成,则CPU自加载状态改变至操作状态。
[0049] CPU重设可用于在信息损毁量最少的情况下清除设备检查指示及任何由此产生的CPU状态的不可预测性。详言之,在保留CPU状态以用于分析或重新继续操作时,CPU重设可用于清除检查条件。如果CPU重设由加载正常或加载与转储密钥的激活引起,则(a)CPU重设可将架构模式设定成缺省模式,且(b)如果安装及启用多线程工具,则停用多线程。当CPU重设设定缺省模式时,其可保存当前PSW,使得可恢复PSW。
[0050] 初始CPU重设提供CPU重设连同当前PSW、CPU定时器、时钟比较器及其他寄存器(诸如:中断事件地址、所捕获的PSW、控制、浮点控制、前缀及TOD可编程寄存器)的初始化的功能。如果初始CPU重设由加载正常或加载与转储密钥的激活引起,则其可将架构模式设定为缺省模式。如果在初始CPU重设由加载正常或加载与转储密钥的激活所引起时多线程被启用,则初始CPU重设功能可针对核心的最低编号CPU而执行,且CPU重设针对核心中的所有其他CPU而执行。清除重设引起初始CPU重设及子系统重设被执行,且另外,除TOD时钟以外,清除或初始化配置中的所有CPU中的所有存储位置及寄存器。清除不影响外部存储装置,诸如由控制程序使用以保存不可寻址页面的内容的直接存取存储器件。
[0051] CPU通电重设引起初始CPU重设被执行且将通用寄存器、存取寄存器、控制寄存器及浮点寄存器的内容清除至0/具有有效检查块码的缺省值。应理解,状态的清除或初始化无需为0值但在已清除状态下可缺省为非0值。如果CPU通电重设建立配置,则其可将架构模式设定成缺省模式;否则,其可将架构模式设定成已在配置中的CPU的模式。可手动地发起CPU重设、初始CPU重设、子系统重设及清除重设。
[0052] 在例示性实施例中,每一CPU具有被指派的编号,称为其CPU地址。CPU地址独特地识别配置内的一个CPU。CPU通过在SIGP指令的CPU地址字段中指定此地址而被指定。用信号通知故障警报、紧急信号或外部调用的CPU可在中断情况下由在CPU地址字段中存储此地址而识别。CPU地址由配置定义程序指派且通常并不由于重配置改变而改变。程序可通过使用存储CPU地址指令而确定CPU的地址。存储CPU地址指令亦可用于识别CPU地址,借助该CPU地址在多处理配置中识别CPU。
[0053] 当启用多线程时,CPU地址可包括与核心内的CPU的标识串接的核心标识(核心ID)。核心内的CPU标识为线程标识(线程ID或TID)。在配置内,所有核心提供相同数目个CPU;然而,取决于模型及CPU类型,核心中的一些CPU可能不可操作。
[0054] 基于由信号处理器设定多线程命令使用的参数寄存器的PSMTID,固定数目个位表示线程标识。此位数目被称为TID宽度。
[0055] 在启用多线程之前,核心ID可由CPU地址的最右侧位形成。核心ID左移TID宽度个位,从而在多线程可用之后产生CPU地址的最左侧位。线程ID具有相同TID宽度数目个位,且在多线程被启用之后占据CPU地址的最右侧位。可在连续数目范围中指派线程ID。表1例示PSMTID的实例关系,TID宽度及CPU地址位包括核心标识及线程标识。
[0056]
[0057]
[0058] 表1-实例地址位映射
[0059] 在图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的值识别及处理次要线程。
[0060] 当在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地址。
[0061] 当重设功能停用多线程时,(a)使线程ID为0的CPU的CPU地址向右移位在启用期间使用的相同TID宽度数目个位,(b)0在地址左侧被插入TID宽度数目个位中,且(c)所述CPU地址恢复至其原始非多线程格式(亦即,标准格式地址)。当启用多线程时在具有非0线程ID的核心中的所有CPU在停用多线程时不再为可操作的。
[0062] 当不启用多线程时,CPU地址保持由配置定义过程指派的值而不变。在此状况下,线程标识不存在。
[0063] 数个信号处理器命令可将包括(例如)以下各者的命令提供至CPU:开始、停止、重新开始、停止及存储状态、初始CPU重设、CPU重设、在地址处的存储状态、设定架构、感测运行状态、设定多线程、在地址处的存储额外状态及其类似者。初始CPU重设或CPU重设可由信号处理器指令发起且不影响架构模式或其他CPU不停用多线程,且不引起I/O重设。
[0064] 设定架构命令指定配置中的所有CPU待设定为的架构模式。架构差异可包括不同寻址模式、寄存器定义及由CPU支持的指令。在架构模式改变后,可将寄存器的选择位字段设定成缺省状态(例如,置0),清除配置中的所有CPU的存取寄存器转换后备缓冲器(ALB)及转换后备缓冲器(TLB),且可在配置中的所有CPU上执行序列化及检查点同步功能。
[0065] 感测运行状态命令可指示被寻址的CPU是否正在运行。在ST模式中,可返回指示符作为运行/非运行状态。在MT模式中,指示符可用于识别被寻址CPU为成员的核心的任何CPU是正在运行,还是被寻址CPU为成员的核心的所有CPU未正在运行。
[0066] 设定MT命令启用多线程工具。参数寄存器的位位置可含有待提供于配置中的PSMTID。PSMTID可被定义为比可待在每一核心中寻址的CPU的数目小1。举例而言,所指明位位置中的值3指示待提供最多四个线程。当配置中的所有CPU被视为待寻址时,可忽略SIGP指令的CPU地址寄存器的内容。如果接受,则在SIGP指令的执行期间由所有CPU完成设定MT命令。参看图7,描绘用于SIGP设定MT命令702的过程700。可提供错误指示且基于判定由以下各者中的一者或多者发出SIGP设定MT命令702而防止MT模式的启用:无效命令、不正确状态及无效参数,如本文中关于图7的过程700进一步描述的。
[0067] 如果在块704处多线程工具未安装或CPU并未在有效架构模式中启用(708),则不接受设定MT命令且可分别在块706或710处返回无效命令指示。如果在块712处在配置中的其他CPU不在停止或检查停止状态下,或如果在块716处所述配置已被启用以用于多线程,则不接受设定MT命令且可分别在块714或718处返回不正确状态指示。
[0068] 如果在块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置于停止状态还是检查停止状态下可能是不可预测的。
[0069] 线程上下文亦可被称为架构式寄存器上下文。在启用多线程之前每一CPU的架构式寄存器上下文(亦即,PSW、CPU定时器、时钟比较器、通用寄存器、浮点寄存器及浮点控制寄存器、向量寄存器、控制寄存器、存取寄存器、前缀寄存器及TOD可编程寄存器等的内容)在启用多线程之后变为每一相应核心的具有TID 0的CPU的架构式寄存器上下文。类似地,当由于加载正常或加载与转储密钥的激活而停用多线程时,具MT能力的配置的每一核心的具有TID 0的CPU的架构式寄存器上下文变为每一相应CPU的架构式寄存器上下文。
[0070] 当由于加载正常或加载与转储密钥操作的激活而停用多线程工具时,可保留具有非0线程标识的所有CPU的架构式寄存器上下文。如果在无介入清除重设的情况下随后重新启用多线程工具,则恢复具有非0线程标识的所有CPU的架构式寄存器上下文。
[0071] 当在已由加载正常或加载与转储密钥的激活停用之后重新启用多线程时,如果参数寄存器的位中的PSMTID的值不同于前述启用中使用的值,则具有非0线程ID的所有CPU的架构式寄存器上下文可为不可预测的。
[0072] 存储系统信息指令可用于将关于配置的一个或多个组件的信息存储至系统信息块(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的核心的数目。
[0073] 现在转到图8,总体展示根据一个实施例的用于实现硬件计数器以便提供MT利用率信息的处理电路800的框图。在一个实施例中,图8中示出的处理电路800包括在图2中示出的处理电路200中。处理电路800包括利用率计数器802、核心时钟806、控制信号804、PSW 810、以及线程有效性屏蔽(TVM)808。在其中物理核心包括四个线程的一个实施例中,当一个线程活动时,分配第一组计数器802以对完成的指令和时钟周期计数,当两个线程活动时,分配第二组计数器802以对完成的指令和时钟周期计数,当三个线程活动时,分配第三组计数器802以对完成的指令和时钟周期计数,并且当四个线程活动时,分配第四组计数器
802以对完成的指令和时钟周期计数。
[0074] 当线程有效并且未处于等待状态(例如,等待中断和/或未取回指令)时,该线程活动。因此,活动线程可以是取回指令。例如可以基于线程有效性屏蔽(TVM)808的内容确定线程的有效性,TVM 808可以作为有关当前在核心上执行的逻辑线程的状态信息的一部分提供。在一个实施例中,TVM 808针对每个线程包括一位,该位指示特定线程有效还是无效,并且可以被缓存在核心110上的硬件中。还可以基于一个或多个信号确定线程的有效性,这些信号包含从系统管理软件(例如,系统管理程序、BIOS)接收的线程有效性信息。
[0075] 在一个实施例中,线程的PSW 810可以用于判定线程当前是否处于等待状态。通常,中断将导致处于等待状态的线程变得活动。备选地,在另一个实施例中,可以使用其它内部处理器状态信息确定何时线程活动。图2中示出的核心时钟806(其由计数器802用于对时钟周期进行计数)可以由处理电路200使用的系统时钟实现或者从该系统时钟导出。图8中还示出控制信号804,其可以用于判定何时指令完成。备选地,可以使用来自发出单元(例如,图2中的发出单元214)或指令取回单元(例如,图2中的指令取回单元210)的信息向计数器802指示完成的指令数目。
[0076] 图9描绘根据一个实施例的捕获利用率计数器的配置的一个实例。在图9的实例中,配置950包括一对核心900A和900B。核心900A和900B中的每一者包括利用率计数器902和四个线程,即线程0、线程1、线程2和线程3。此外,利用率计数器902可以被分为不同计数器组以便实现每个可能活动线程计数(在该实例中为1、2、3、4)。图9中示出的利用率计数器902包括:组1-MT1CC,其用于当四个线程中的一个活动时,对时钟周期数目进行计数,以及MT1IC,其用于当四个线程中的一个活动时,对完成的指令数目进行计数;组2–MT2CC,其用于当四个线程中的两个活动时,对时钟周期数目进行计数,以及MT2IC,其用于当四个线程中的两个活动时,对完成的指令数目进行计数;组3–MT3CC,其用于当四个线程中的三个活动时,对时钟周期数目进行计数,以及MT3IC,其用于当四个线程中的三个活动时,对完成的指令数目进行计数;以及组4–MT4CC,其用于当所有四个线程活动时,对时钟周期数目进行计数,以及MT4IC,其用于当所有四个线程活动时,对完成的指令数目进行计数。
[0077] 在一个实施例中,当在核心900A上启用MT(例如经由完成所接受的设定多线程信号处理器(SIGP)命令)时,在核心900A上激活利用率计数器902。同样,当在核心900B上启用MT时,可以在核心900B上激活利用率计数器902。在一个实施例中,通过导致在核心900A上禁用MT的任何操作,在核心900A上禁用利用率计数器902。同样,当在核心900B上禁用MT时,可以在核心900B上禁用利用率计数器902。在一个实施例中,在核心上禁用MT之后,当核心在ST模式下操作时,MT1CC和MT1IC组成的计数器组的计数可继续递增。
[0078] 在一个实施例中,例如由操作系统或系统管理程序执行的软件指令可以读取利用率计数器的内容。
[0079] 现在转到图10,总体展示根据一个实施例的用于核心上的MT利用率计数的过程流。在方框1002激活核心的利用率计数器。利用率计数器的激活可以包括重设计数器。在一个实施例中,每个时钟周期执行一次图10中示出的从方框1004到方框1026的处理。图10中示出的处理可用于基于核心的多个线程处的一个或多个执行事件的聚合而递增一个或多个利用率计数器。
[0080] 在方框1004判定(例如,基于TVM的内容和/或PSW)是否仅一个线程活动。如果一个线程活动,则处理在方框1006继续,其中使MT1CC计数器递增1,如果核心具有一个活动线程,则MT1CC计数器对时钟周期数目进行计数。在方框1008判定(例如,基于控制信号的值)指令(多个)是否完成。如果指令完成,则执行方框1010以递增MT1IC计数器,当一个线程活动时,MT1IC计数器对核心完成的指令数目进行计数。然后在下一个时钟周期中处理在方框1004继续。如果指令未完成,如在方框1008判定的那样,则在下一个时钟周期中处理在方框
1004继续。
[0081] 如果在方框1004判定多个线程活动(隐含,因为仅一个线程未活动),则过程在方框1012继续,其中判定是否仅两个线程活动。如果两个线程活动,则处理在方框1014继续,其中使MT2CC计数器递增1,如果核心具有两个活动线程,则MT2CC计数器对时钟周期数目进行计数。在方框1016判定指令是否完成。如果指令(多个)在两个线程的任何一个上完成,则执行方框1018以递增MT2IC计数器,当两个线程活动时,MT2IC计数器对核心完成的指令数目进行计数。在一个实施例中,如果指令在两个线程上完成,则使MT2IC计数器递增2。然后在下一个时钟周期中处理在方框1004继续。如果指令未完成,如在方框1016判定的那样,则在下一个时钟周期中处理在方框1004继续。
[0082] 针对核心中的每个线程继续类似处理。在方框1020,如果判定仅“N”个线程活动,则处理在方框1022继续,否则可以报告错误条件。在方框1022,使MTNCC计数器递增1,如果核心具有N个活动线程,则MTNCC计数器对时钟周期数目进行计数。在方框1024判定指令是否完成。如果指令(多个)在N个线程的任何一个上完成,则执行方框1026以递增MTNIC计数器,当N个线程活动时,MTNIC计数器对由核心完成的指令数目进行计数。然后在下一个时钟周期中处理在方框1004继续。如果指令未完成,如在方框1024判定的那样,则在下一个时钟周期中处理在方框1004继续。
[0083] 以这种方式,跟踪指令完成(如果为执行事件,则跟踪类型),并且跨多个核心聚合结果。如在此使用的,执行事件指核心的线程上可以被跟踪的任何事件,例如但不限于时钟周期、指令完成、高速缓存未命中、以及分支误预测。
[0084] 技术效果和益处包括在支持单线程操作模式和多线程操作模式两者的计算机系统中收集核心的利用率信息的能力。
[0085] 各实施例包括一种用于跟踪多线程(MT)计算机系统中的利用率的方法、系统和计算机程序产品。根据一个方面,一种计算机系统包括具有核心的配置,所述核心被配置为在MT下操作,所述MT支持所述核心的共享资源上的多个线程。所述核心被配置为执行一种方法,所述方法包括重设多个利用率计数器。所述利用率计数器包括多组计数器。在所述核心上的每个时钟周期内,从所述多组计数器中选择一组计数器。所述选择基于所述核心上的当前活动线程数目。此外,在每个时钟周期内,基于所述核心的所述多个线程处的一个或多个执行事件的聚合,递增所选择的一组计数器中的计数器。将所述利用率计数器的值提供给软件程序。
[0086] 根据另一个方面,提供一种用于跟踪配置中的利用率的计算机实现的方法。所述配置包括核心,所述核心被配置为在多线程(MT)模式下操作。所述MT模式支持所述核心的共享资源上的多个线程。所述方法包括重设多个利用率计数器。所述利用率计数器包括多组计数器。在所述核心上的每个时钟周期内,从所述多组计数器中选择一组计数器。所述选择基于所述核心上的当前活动线程数目。此外,在每个时钟周期内,基于所述核心的所述多个线程处的一个或多个执行事件的聚合,递增所选择的一组计数器中的计数器。将所述利用率计数器的值提供给软件程序。
[0087] 另一方面是一种用于跟踪配置中的利用率的计算机程序产品。所述配置包括核心,所述核心被配置为在多线程(MT)模式下操作。所述MT模式支持所述核心的共享资源上的多个线程。所述计算机程序产品包括具有程序指令的计算机可读存储介质,其中计算机可读存储介质并非信号,所述程序指令可由处理电路读取以使所述处理电路执行一种方法。所述方法包括重设多个利用率计数器。所述利用率计数器包括多组计数器。在所述核心上的每个时钟周期内,从所述多组计数器中选择一组计数器。所述选择基于所述核心上的当前活动线程数目。此外,在每个时钟周期内,基于所述核心的所述多个线程处的一个或多个执行事件的聚合,递增所选择的一组计数器中的计数器。将所述利用率计数器的值提供给软件程序。
[0088] 除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述执行事件包括时钟周期,并且所选择的一组计数器中的所述计数器被递增1。
[0089] 除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述执行事件进一步包括指令完成,并且基于在所述时钟周期期间的所有所述当前活动线程上的指令完成数目而递增所选择的一组计数器中的另一个计数器。
[0090] 除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述执行事件进一步包括高速缓存未命中,并且基于在所述时钟周期期间的所有所述当前活动线程上的高速缓存未命中数目而递增所选择的一组计数器中的另一个计数器。
[0091] 除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述执行事件进一步包括分支误预测,并且基于在所述时钟周期期间的所有所述当前活动线程上的分支误预测数目而递增所选择的一组计数器中的另一个计数器。
[0092] 除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中当线程有效并且未处于等待状态时,该线程当前活动。
[0093] 除了上文所描述的特征中的一者或多者以外,或作为替代例,其他实施例亦可包括其中所述软件程序是操作系统或系统管理程序。
[0094] 本文中所用的术语,仅仅是为了描述特定的实施例,而不意图限定本发明。本文中所用的单数形式的“一”和“该”,旨在也包括复数形式,除非上下文中明确地另行指出。还要知道,“包含”和/或“包括”在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。
[0095] 以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对一个或多个实施例的描述其目的在于示意和描述,并非是穷尽性的,也并非是要将本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,显然可以作出许多修改和变型而不偏离本发明的精神和范围。对实施例的选择和描述,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施例。
[0096] 本发明的各种实施例的描述已为达成说明的目的而呈现,但不意欲为穷尽性的或限于所揭示的实施例。在不脱离所描述实施例的范围及精神的情况下,许多修改及变化对于本领域技术人员将显而易见。本文中所使用的术语被选择以最好地解释实施例的原理、实际应用或对市场中找到的技术的技术改进,或使其他本领域技术人员能够理解本文所揭示的实施例。
[0097] 现参看图11,总体上展示根据一个实施例的包括计算机可读存储介质1102及程序指令1104的计算机程序产品1100。
[0098] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0099] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0100] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0101] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0102] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0103] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0104] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0105] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。