CN104169888B - 用于实现运行时间检测定向采样的方法和系统 - Google Patents

用于实现运行时间检测定向采样的方法和系统 Download PDF

Info

Publication number
CN104169888B
CN104169888B CN201380014606.4A CN201380014606A CN104169888B CN 104169888 B CN104169888 B CN 104169888B CN 201380014606 A CN201380014606 A CN 201380014606A CN 104169888 B CN104169888 B CN 104169888B
Authority
CN
China
Prior art keywords
instruction
time detecting
sampling
rinext
nsi
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.)
Active
Application number
CN201380014606.4A
Other languages
English (en)
Other versions
CN104169888A (zh
Inventor
小查尔斯.W.盖尼
M.米特兰
岑中龙
K.A.斯图德利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104169888A publication Critical patent/CN104169888A/zh
Application granted granted Critical
Publication of CN104169888B publication Critical patent/CN104169888B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control

Abstract

本发明实施例涉及实现运行时间检测定向采样。本发明的一个方面包括一种用于实现运行时间检测定向采样。该方法包括从指令流中取出运行时间检测下一个(RINEXT)指令。该指令流包括程序顺序中的后面跟随有下一个顺序指令(NSI)的所述RINEXT指令。该方法还包括由处理器执行RINEXT指令。该执行包括确定当前运行时间检测状态是否能够设定用于在程序执行过程报告运行时间检测信息的采样点。基于能够设置采样点的当前运行时间检测状态,使得所述NSI作为用于导致运行时间检测事件的采样指令。基于执行NSI采样指令,使得运行时间检测事件将运行时间检测信息作为报告群组记录到运行时间检测程序缓冲器。

Description

用于实现运行时间检测定向采样的方法和系统
技术领域
本发明一般地涉及在计算环境内的处理,并且更具体地,涉及利用运行时间检测定向采样所收集事件。
背景技术
计算机处理器使用日益复杂的分支预测和指令高速缓冲器逻辑执行事务。这些处理已被引入来提高指令吞吐量,并因此提高处理性能。引入用于改善性能的逻辑使其很难肯定地预测特定软件应用程序将如何在计算机处理器上执行。在软件开发过程中,经常存在的功能和性能之间的平衡。软件在起始于正在执行软件的底层硬件的一个或多个抽象级别处被执行。当硬件被虚拟化时,附加的抽象层被引入。由于引入性能增强逻辑和各种抽象层,很难透彻了解到在执行程序时在硬件级别处实际正在发生什么。如果没有这个信息,软件开发者使用更抽象的方法,诸如执行持续时间、存储器使用情况、线程的数量等,用于优化软件应用。
发明内容
技术问题
当可以获得硬件具体信息时,其通常在事后被提供给开发者,并且其在高级别上以聚合方式提供,和/或点缀有其他散程序和操作系统的活性,使其难以识别可能影响该软件应用的效率和准确度的问题。
问题解决方案
实施例包括一种用于运行时间检测定向采样的方法、系统以及计算机程序产品。计算机程序产品包括有形存储介质,可由处理电路读取并和存储用于由所述处理电路执行以便用于执行一种方法的指令。该方法还包括从指令流中取出运行时间检测下一个(RINEXT)指令。该指令流包括程序顺序中的后面跟随有下一个顺序指令(NSI)的所述RINEXT指令。该方法还包括由处理器执行RINEXT指令。该执行包括确定当前运行时间检测状态是否能够 设定用于在程序执行过程报告运行时间检测信息的采样点。基于能够设置采样点的当前运行时间检测状态,使得所述NSI作为用于导致运行时间检测事件的采样指令。基于执行NSI采样指令,运行时间检测事件使得将运行时间检测信息作为报告群组记录到运行时间检测程序缓冲器。
用于实现运行时间检测定向采样计算机实现方法包括从指令流中取出运行时间检测下一个(RINEXT)指令。该指令流包括程序顺序中的后面跟随有下一个顺序指令(NSI)的所述RINEXT指令。该方法还包括由处理器执行RINEXT指令。该执行包括确定当前运行时间检测状态是否能够设定用于在程序执行过程报告运行时间检测信息的采样点。基于能够设置采样点的当前运行时间检测状态,使得所述NSI作为用于导致运行时间检测事件的采样指令。基于执行NSI采样指令,运行时间检测事件使得将运行时间检测信息作为报告群组记录到运行时间检测程序缓冲器。
用于实现运行时间检测定向采样的系统包括存储器和具有运行时间检测模块的处理器。该运行时间检测模块被配置为执行一种方法。该方法包括从指令流中取出运行时间检测下一个(RINEXT)指令。该指令流包括程序顺序中的后面跟随有下一个顺序指令(NSI)的所述RINEXT指令。该方法还包括由处理器执行RINEXT指令。该执行包括确定当前运行时间检测状态是否能够设定用于在程序执行过程报告运行时间检测信息的采样点。基于能够设置采样点的当前运行时间检测状态,使得所述NSI作为用于导致运行时间检测事件的采样指令。基于执行NSI采样指令,使得运行时间检测事件将运行时间检测信息作为报告群组记录到所述存储器中的运行时间检测程序缓冲器。
通过本发明的技术可实现附加特征和优点。本发明的其他实施例和各方面在本文中将被详细描述,并且被认为是所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,请参考说明书和附图。
被认为是本发明的主题被特别指出并在说明书的结尾处的权利要求书中被清楚地要求保护。根据结合附图的以下详细描述可清楚本发明的前述和其它特征以及优点,其中,
附图说明
图1A是示出实施例中的示例主计算机系统的示意图;
图1B是示出实施例中的示例仿真主计算机系统的示意图;
图1C是示出实施例中的示例计算机系统的示意图;
图2是示出在实施例中的示例性计算机网络的示意图;
图3是示出在实施例中的计算机系统的元件的示意图;
图4A示出了在实施例中的计算机系统的详细元件;
图4B示出了在实施例中的计算机系统的详细元件;
图4C示出了在实施例中的计算机系统的详细元件;
图5示出根据实施例的处理器的用于运行时间检测的系统的示意图;
图6描绘了实施例中包括在特权状态下可设置的控制的运行时间检测控制块(RICCB)的一部分;
图7描绘了在实施例中当半特权位(K)被设置为1时RICCB控制块的一部分;
图8示出了根据实施例的报告群组;
图9描绘了根据实施例用于实现运行时间检测定向采样的处理流程;
图10示出了根据实施例的计算机程序产品。
具体实施方式
本发明的实施例能够使用运行时间检测定向采样所收集的时间。运行时间检测是一种设施,其不仅可在实验室环境中使用,或用于离线分析,而且在处理器(CPU)上的程序控制下在承勋运行时间期间可用于客户环境。被提取并被执行来运行程序的指令序列可以被称为指令流。为了增强数据收集灵活性,可以基于可配置间隔来收集事件。可以由程序配置的CPU控制管理运行时间检测。运行时间检测通常报告关于规则采样基础的事件,不过,可以通过使用运行时间检测下一个(RINEXT)指令来定向被检测的(instrumented)指令流中的附加的感兴趣点。规则采样间隔通过指令计数或周期计数来确定。在随后及性分析时,在所述被检测的指令流中的具体信息会非常有用。在检测化运行期间能够创建与被检测的指令流中的具体指令相关联的附加定向采样点,能够显著增加用于后分析可获得的关键信息的数量。
运行时间检测下一个(RINEXT)指令被定义为使得被检测话的程序来指明在下一个顺序指令(NSI)的执行完成时的采样点。除了规则间隔采样,该定向采样容许将报告额外非常聚焦的采样点。在规则采样进行时,使用 RINEXT可被视为被检测的指令流的高精度探测。RINEXT的每次执行确定NSI采样点并因此导致报告收集的检测数据,其逐渐导至采样点。根据被检测的程序来确定在特定指令处布置采样点的重要性是什么。每个采样点,无论是规则间隔采样还是根据RINEXT的执行确定的定向采样点,都告知存储多个记录报告群组,其包括来自收集缓冲器的进来收集的数据以及与在采样点处的指令的执行相关的数据。
图1A示出了实施例中的主计算机系统50的代表性组件。在计算机系统中也可以采用组件的其它布置。代表性主计算机系统50包括与主存储器(计算机存储器)2以及到存储设备11和用于与其它计算机或SAN和等通信的网络10的I/O接口进行通信的一个或多个处理器1。处理器1是符合具有架构的指令集和架构的功能的体系结构。处理器1可具有动态地址转换(DAT)3,用于将程序地址(虚拟地址)转换成存储器中的实际地址。DAT 3通常包括转换后备缓冲器(translation lookaside buffer(TLB))7,用于高速缓冲器一些转换,使得对计算机存储器2的块的后面的访问不需要地址转换的延迟。通常,高速缓冲器9用于计算机存储器2与处理器1之间。高速缓冲器9可以是分层的,具有可提供给多个CPU的大高速缓冲器以及在所述大容量高速缓冲器和每个CPU之间的更小更快的(较低级别的)高速缓冲器。在一些实施例中,低级别的高速缓冲器被划分,以提供单独的低级别的高速缓冲器用于取指令和数据的访问。在一个实施例中,由取指令单元4经由高速缓冲器9从计算机存储器2取出指令。该指令在指令解码单元6被解码并且(与一些实施例中其他的指令一起)被分派到指令执行单元8。通常,采用几个指令执行单元8,例如算术执行单元、浮点执行单元以及分支指令执行单元。指令是由指令执行单元8执行,根据需要访问来自指定的指令寄存器或计算机存储器2的操作数。如果操作数是从计算机存储器2存取(加载或存储)时,载荷存储单元5通常在正被执行的指令控制下处理访问。指令可以在硬件电路中或在内部微码(固件)、或者由两者的组合来执行。
在图1B提供了对仿真主机系统21的描述,其仿真主机架构的主机系统,诸如图1的主机系统50。在仿真主计算机系统21中,主机处理器(CPU)1是仿真主机处理器(或虚拟主机处理器)29,并且包括本机(native)处理器27,其具有与主计算机系统50的主机处理器1不同的本地指令集架构。仿真主计算机系统21具有可访问本机处理器27的存储器(memory)22。在一个 实施例中,存储器22被划分成计算机存储器2部分和仿真例程存储器23的部分。根据主计算机的体系结构,计算机存储器2可用于仿真主计算机系统21的程序。本机处理器27执行一个体系架构的结构化的指令集的本机指令,而不是所述仿真处理器29的本机指令(所述本机指令从仿真例程存储器23中得到),并且可以通过采用在序列与访问/解码例程中获得的一个或多个指令从计算机存储器2的程序访问用于执行的主机指令,所述序列与访问/解码例程可以解码被访问的主机指令以确定用于仿真被访问的主机指令的功能的本机指令的执行程序。为主计算机系统50架构定义的其他设施(facility)可以通过结构化的设施例程,例如包括诸如作为通用寄存器的设施、控制寄存器、动态地址转换和输入/输出(I/O)子系统支持以及处理器高速缓冲器,来仿真。仿真例程还可以利用在本机处理器27(如通用寄存器和虚拟地址的动态转换)可获得的功能,来提高仿真例程的性能。专用硬件和空载(off-load)引擎也可以被提供用于帮助本机处理器27模仿主计算机系统50的功能。
在大型机中,架构的机器指令由程序编制器(programmer)借助编译器应用使用,程序编制器现在通常是“C”程序编制器。存储在存储介质中的这些指令可在z/架构体系IBM服务器被本地地(natively)执行,或者在执行其他架构体系的机器中执行。它们可以在现有和未来的IBM大型机服务器中和在IBM的其他机器(例如pSeries(R)服务器和xSeries(R)服务器)上被模仿。他们可以在各种使用由IBM(R)、Intel(R)、AMDTM、Sun Microsystem以及其他公司生产机器上的运行Linux的机器中被执行。除了在Z/Architecture(R)下在硬件上执行之外,与由Hercules、UMX、Fundamental Software公司(FSI)或Platform Solutions公司(PSI)使用的其中执行通常处于仿真模式的的仿真的机器一样,可是使用Linux。在仿真模式下,仿真软件是由本机处理器执行以便模仿仿真处理器的体系结构。
仿真主计算机系统21的一个或多个组件在“IBM(R)z/Architecture Principlesof Operation(IBM(R)的z/操作的结构原理)(公开号SA22-7832-08,第9版,2010年8月”有进一步描述,其在此通过引用将其全部并入本文中。IBM是美国纽约阿蒙克的国际商业机器公司的注册商标。此处使用的其他名称为国际商业机器公司或其他公司的注册商标,商标或产品名称。
本机处理器27通常执行存储在包括固件或本机操作系统的仿真例程存 储器23中的仿真软件,以便进行仿真处理器的模仿。所述仿真软件负责获取和执行所述仿真的处理器体系结构的指令。仿真软件维持仿真程序计数器以便跟踪指令的边界。仿真软件可以一次取一个或多个仿真机器指令并由本机处理器27所述一个或多个仿真机器指令转换成用于执行本机机器指令的相应群组。这些转换的指令可以被高速缓冲器使得更快的转换可以完成。仿真软件维护仿真处理器体系结构的体系结构规则,以确保用于仿真处理器编写的操作系统和应用正确地进行操作。此外,仿真软件提供仿真处理器体系结构所识别的资源,包括但不限于:控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换函数、中断机制,上下文切换机制,计时(TOD)时钟以及到I/O子系统的架构接口,使得设计来在仿真处理器29上运行的操作系统或应用能够在具有仿真软件的本机处理器27上运行。
被仿真的特定指令被解码,并且子程序被调用以便执行单个指导的功能。在理解优选实施例的描述之后,模仿仿真处理器29的功能的仿真软件功能以例如“C”子程序或驱动程序或用于为本领域技术人员的技能范围内的特定硬件提供驱动程序的一些其它方法被实现。
在一个实施例中,本发明可以通过软件(有时称为许可内部代码、固件、微代码、毫码、微微码等,其中任何一个将与本发明一致)来实施。参照图1A,实施本发明的软件程序代码由也被称为主计算机系统50的CPU(中央处理单元)1的处理器从诸如长期存储介质、CD-ROM驱动器磁带驱动器或硬盘驱动器的存储设备11中的存取。该软件程序代码可以实施在用于数据处理系统中的任何各种的已知介质上,诸如软盘、硬盘驱动器或CD-ROM。该代码可分布在这样的介质,或者可以通过到其他系统的用户所使用的其他计算机系统的网络10从计算机系统的计算机存储器2或存储器被分配给用户。
或者,程序代码可以实施在计算机存储器2中,并由处理器1使用处理器总线(未示出)访问。这样的程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和相互作用。程序代码通常从诸如存储设备11的致密介质翻存(page)到计算机存储器2,其中它可用于所述处理器1的处理。用于在物理介质上实施存储器中的软件程序代码、和/或经由网络分发软件代码的技术和方法是众所周知的,这里不作进一步讨论。程序代码,在被创建并存储在有形介质(包括但不限于,电子存储模块(RAM)、闪存、光盘(CD)DVD光盘磁带等)上时,通常被称为“计算机程序产品”。计算 机程序产品介质通常优选是在计算机系统中可由处理电路读取用于由处理电路执行。
图1C示出了其中可以实施本发明的具有代表性的工作站或服务器的硬件系统。图1C的系统100包括代表性的基础计算机系统101,诸如个人电脑、工作站或服务器,其包括可选的外围设备。基础计算机系统101包括一个或多个处理器106和用来根据已知技术连接和启用在所述一个或多个处理器106与基础计算机系统101的其它组件之间的通信中的总线(未示出)。总线将处理器106连接到存储器105和长期存储器107,长期存储器107可以包括例如硬盘驱动器(包括例如任何磁介质、CD、DVD和闪存)或磁带驱动器。基础计算机系统101还可以包括用户接口适配器,其通过总线将所述一个或多个处理器106连接到一个或多个接口设备,诸如键盘104、鼠标103、打印机/扫描仪110和/或其他接口设备,其可以是任何用户接口设备,诸如触摸屏、数字化输入板等。该总线还将一个或多个处理器经由显示适配器连接到显示装置102,诸如LCD屏幕或监视器。
基础计算机系统101可以通过能够与网络109通信108的网络适配器的方式与其它计算机或计算机的网络进行通信。示例网络适配器为通信信道、令牌环、以太网或调制解调器。或者,基础计算机系统101可使用无线接口,诸如蜂窝数字分组数据(CDPD)卡,进行通信。基础计算机系统101可以用在局域网(LAN)或广域网(WAN)中与其它计算机相关联,或基础计算机系统101可以是在与另一台计算机等的客户机/服务器布置中的客户机。
图2示出了其中可以实施本发明的数据处理网络200。数据处理网络200可包括多个单独的网络,诸如无线网络和有线网络,其中每一个可以包括多个独立的工作站201、202、203、204和/或图1C的基础计算机系统101。另外,如本领域技术人员将理解的,可以包括一个或多个LAN,其中LAN可以包括多个连接到主机处理器的智能工作站。
程序代码111可以实施在所述存储器105中,并由处理器106使用处理器总线访问。这样编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序112的功能和相互作用。程序代码通常从长期存储107翻存(page)到高速存储器105,在其中程序代码可用于所述处理器106的理由。用于在物理介质上实施存储器中的软件编程代码和/或经由网络分发软件代码的技术和方法是众所周知的,这里不作进一步讨论。创建并存储在有形介质(包括但不限于,电子存储模块(RAM)、闪存、光盘(CD)、DVD光盘、磁带等)上的程序代码通常被称为“计算机程序产品”。计算机程序产品介质通常优选是在计算机系统中可由处理电路读取用于由处理电路执行。
对处理器而言最容易获得的高速缓冲器(通常比处理器的其他高速缓冲器更快且更小)是最低的(L1或级1)高速缓冲器并且主存储器(主存储器)是最高级别的高速缓冲器(如果有3个级别的话,则是L3)。最低级高速缓冲器通常分为保持待执行的机器指令的指令高速缓冲器(I-高速缓冲器)和保存数据操作数的数据高速缓冲器(D-高速缓冲器)。
仍然参照图2,网络还可以包括大型计算机或服务器,诸如网关计算机(客户机服务器)206或应用服务器(远程服务器)208,其可访问数据存储库,并且也可以从工作站205被直接访问。网关计算机206作为每个网络207的入口点。当将一个网络连接协议连接到另一个时需要网关。网关计算机206优选地可通过通信链路耦合到另一个网络(例如因特网207)。网关计算机206还可以使用的通信链路直接耦合到一个或多个工作站101、201、202、203以及204。网关计算机可以利用可从国际商业机器公司获得的IBM eServerTM zSeries(R)z9(R)S服务器来实现。
在一个实施例中,实施本发明的软件编程代码由基础计算机系统101的处理器106从长期存储介质存取,长期存储介质诸如图1C的长期存储器107。1C。软件编程代码可实施在用于数据处理系统的任何各种已知介质中,诸如软盘、硬盘驱动器或CD-ROM。该代码可分布在这样的介质上,或者可以通过到其他系统的用户所使用的其他计算机系统的网络从计算机系统的计算机存储器或存储器被分配给用户210和211。
参照图3,描述了处理器106的示例性处理器实施例。高速缓冲存储器303中的一个或多个级别被用到缓冲存储器块以便提高处理器106的性能。高速缓冲器303是可能被使用的存储器数据的高速度缓冲保存高速缓冲器行。典型的高速缓冲器行是64、128或256字节的存储器数据。在一个实施例中,单独的高速缓冲器被用于高速缓存指令而不是用于高速缓冲器数据。高速缓冲器一致性(在存储器和高速缓冲器中行的拷贝的同步)通常是由本领域中公知的各种“监听(snoop)”算法提供。主存储装置,诸如处理器系统的存储器105,通常被称为高速缓冲器。在具有4个级别的高速缓冲器的处理器系统303中,存储器105有时被称为级别5(L5)的高速缓冲器,因 为它通常是更快并且只保持可用于计算机系统的非易失性存储器的一部分(DASD、磁带等)。存储器105“高速缓存(cache)”由操作系统被翻存进出存储器105的数据的页面。
程序计数器(指令计数器)311跟踪要执行的当前指令的地址。在z/Architecture处理器中的程序计数器是64位,并可以截断为31或24位以支持先前的寻址局限。程序计数器典型地包括在计算机的PSW(程序状态字)中,以便其在上下文切换期间持续。因此,进程中的程序(具有程序计数器值)可例如由操作系统(即,从程序环境到操作系统环境的上下文切换)来中断。程序的PSW在程序不激活时维持程序计数器值,并且在操作系统执行时使用操作系统的程序计数器(在PSW中)。在一个实施例中,程序计数器增加等于当前指令的字节数的量。精简的指令集计算(RISC)指令通常固定长度,而复杂指令集计算(CISC)指令通常是可变长度。IBMz/Architecture的指令是具有长度为2、4、6字节的CISC指令。程序计数器311通过例如上下文切换操作或分支指令的分支选择操作来修改。在上下文切换操作中,当前程序计数器值与其他关于执行的程序的状态信息(例如条件码)一起存储在PSW(程序状态字)中,并且加载新的程序计数器值来指向要执行的新的程序模块的指令。通过将分支指令的结果加载入程序计数器311,执行分支选择操作以便允许程序进行判断或在程序中进行循环。
在一个实施例中,使用取指令单元305来代表处理器106提取指令。取指令单元305提取“下一顺序指令”、分支选择指令的目标指令、或上下文切换后的程序的第一指令。在一个实施例中,取指令单元305基于可能使用预取指令的概率使用预提取技术来推测性预取指令。例如,取指令单元305可提取16字节的指令,其包括下一顺序指令和附加的字节的另外顺序指令。
所提取的指令于是由处理器106来执行。在实施例中,提取的指令传输至取指令单元305的解码/分派单元306。解码/分派单元306解码该指令并将关于解码的指令的信息转发至适当的执行单元307、308和/或310。执行单元307从取指令单元305接收关于解码的算术指令的信息,并根据该指令的操作码(opcode)来对操作数执行算术操作。从存储器105、结构寄存器309或从被执行的指令的即时字段(immediate field)将操作数提供给执行单元307。在存储时,执行的结果可存储在存储器105、或结构寄存器309、或其他机器硬件(例如控制寄存器、PSW寄存器等)中。
处理器106典型地具有用于执行指令的功能的一个或多个执行单元307、308和310。参照图4A,执行单元307可利用接口逻辑407与结构寄存器309、解码/分派单元306、负载/存储单元310和其它处理器单元401通信。执行单元307可使用若干寄存器电路403、404和405以保持关于算术逻辑单元(ALU)402将操作的信息。ALU402执行诸如加、减、乘、除以及诸如与、或、异或(XOR)、旋转和移位的逻辑函数的算术操作。在一个实施例中,ALU支持设计相关的专用操作。其他电路可提供其他结构功能408,例如包括条件码和恢复支持逻辑。典型地ALU操作的结果保持在输出寄存器电路406中,其可将该结果转发至各种其他处理功能。在其他实施例中,存在许多处理器单元的设置,本说明书仅旨在提供一个实施例的代表性理解。
例如,ADD指令将在具有算术和逻辑功能的执行单元307中执行,而浮点指令将在具有专用浮点性能的例如浮点执行单元(未示出)中执行。优选地,执行单元通过对操作数执行操作码定义函数对由指令识别的操作数进行操作。例如,可以通过执行单元307对由指令的寄存器字段识别的两个寄存器309中发现的操作数而执行ADD指令。
执行单元307执行对于两个操作数的算术加法,并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元307优选地使用算术逻辑单元(ALU)402,其能够执行诸如移位、旋转、与、或和异或的各种逻辑功能以及包括任意加、减、乘和除的各种算术功能。一些ALU 402被设计用于缩放操作,一些用于浮点。在一些实施例中,可取决于架构,数据是大尾(endian)(其中在最高字节地址处是最低有效字节)或小尾(endian)(在最低字节地址处是最高有效字节)。IBM z/Architecture是大尾。取决于架构,符号字段可以是符号和量级、1的补码或2的补码。因为2的补码中的负数值或正数值仅需要在ALU中进行加法,所以ALU 402不需要设计减法性能,因此2的补码数是有利的。数通常以速记来描述,其中12位字段定义4096字节块的地址,并通常描述为例如4K字节(千字节)块。
参照图4B,用于执行分支指令的分支指令信息通常发送到分支单元308,其在其他条件操作完成之前使用诸如分支历史表432的分支预测算法来预测该分支的结果。当前分支指令的目标在条件操作完成之前将被提取并被推测地执行。当条件操作完成时,推测执行的分支指令基于条件操作的条件以及 推测的结果或完成或丢弃。如果条件码满足分支指令的分支要求,则典型的分支指令可以检测条件码和到目标地址的分支,可基于包括在寄存器字段发现的数的一些数或例如该指令的即时字段来计算目标地址。在一个实施例中,分支单元308可使用具有多个输入寄存器电路427、428和429以及输出寄存器电路430的ALU 426。分支单元308可与例如通用寄存器309、解码派发单元306或其他电路425进行通信。
一组指令的执行可因为各种原因而中断,例如包括由操作系统发起的上下文切换、导致上下文切换的程序异常或故障、导致上下文切换的I/O中断信号或多个程序(在多线程环境下)的多线程活动。在一个实施例中,上下文切换行为存储关于当前执行的程序的状态信息,然后加载关于调用的另一个程序的状态信息。状态信息可存储在例如硬件寄存器或存储器中。状态信息包括指向要执行的下一指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文切换活动可通过硬件电路、应用程序、操作系统程序或固件代码(微码、微微码或许可的内部代码(LIC))单独或组合来执行。
处理器根据指令定义方法访问操作数。该指令可使用指令的一部分的值来提供即时操作数,可提供明确指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄存器字段。该指令可使用由作为操作数的操作码字段识别的隐含寄存器。该指令可使用操作数的存储器位置。操作数的存储器位置可由寄存器、即时字段、或寄存器和即时字段的组合来提供,如z/Architecture长位移设施所例示的那样,其中指令定义基址寄存器、变址寄存器和即时字段(位移字段),他们被加到一起以提供存储器中的操作数的地址。除非另有指定,则在此位置典型地意味着在主存储器(主存储设备)中的位置。
参考图4C,处理器使用加载/存储单元310访问存储器。该加载/存储器单元310可通过经由高速缓冲器/存储器接口获得存储器中的目标操作数的地址以及在架构寄存器309中或另一个存储器位置中加载操作数来执行加载操作,或可通过获得存储器中的目标操作数的地址以及将从架构寄存器309或另外的存储器位置中获得的数据存储在存储器中的目标操作数位置来执行存储操作。加载/存储单元310可以是推测的并可以相对于指令序列是无序的顺序访问存储器,然而,加载/存储单元310对顺序执行指令的程序维持显现。加载/存储单元310可与架构寄存器309、解码/分派单元306、高速缓存器/存储器接口303或其他元件455通信,并包括各种寄存器电路、ALU 458和控 制逻辑463以计算存储地址并提供流水线(pipeline)以保持有序操作。一些操作可以是无序的,但是加载/存储单元提供正如在本领域已知的那样的使无序操作对于程序显现为一直在有序执行。
优选地,应用程序“看到”的地址经常称为虚拟地址。虚拟地址有时称为“逻辑地址”或“有效地址”。这些虚拟地址是虚拟的,因为其通过诸如图3的DAT 312的各种动态地址转换(DAT)312技术转换中的一个重定向到物理存储器位置,该技术包括但不限于,使用偏移值对虚拟地址加前缀、通过一个或多个转换表转换虚拟地址,该转换表优选地单独或组合包括至少一个段表和页面表,段表具有指向该页面表的入口。在z/Architecure中,提供转换的层级,其包括区域第一表格、区域第二表格、区域第三表格、段表和可选页面表。通常通过使用转换后备缓冲器(TLB)来改进地址转换的性能,该TLB包括将虚拟地址映射至关联的物理存储器位置的表项。当DAT 312使用转换表格转换虚拟地址时创建表项。于是之后使用虚拟地址可使用快速TLB的表项而非慢顺序转换表格访问。可由包括LRU(近来最少使用)的各种替代算法来管理TLB内容。
在处理器106是多处理器系统中的处理器的情况下,每个处理器负责为了一致性而保持诸如I/O、高速缓存、TLB和存储器的共享的资源互锁。在一个实施例中,在维持缓存一致性中将使用“监听”技术。在监听环境中,每个缓存线可被标记为共享状态、专用状态、改变状态、无效状态等中的任一状态以便于共享。
图3的I/O单元304向处理器106提供附到外围设备(例如包括盒带、盘、打印机、显示器和网络)的装置。I/O单元304经常由软件驱动器提供给计算机程序。在诸如来自IBM的z/Series的大型机中,信道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型机的I/O单元。
检测数据是与处理器106的操作相关的数据。在一个实施例中,对检测数据和其他系统级度量的访问可以被限制或不可用。计算机处理器在特权状态(或管理状态)和较小的特权状态(或问题状态)下运作。在特权状态下,程序可通过特权操作访问所有的系统资源(例如,访问所有控制寄存器和管理(supervisor)存储空间)。特权状态也被称为特权模式或管理员模式。在计算机处理器上执行的操作系统可以在特权状态下工作。较小的特权状态为非特权状态,其中对系统资源的访问受到限制。例如,在较小的特权状态运行 的应用程序可能对控制寄存器的访问收到有限或不能访问对控制寄存器,并且只可以访问由操作系统分配给应用程序的用户存储器空间。较小的特权状态通常被分配给在操作系统的控制下执行的应用程序,并且非特权操作可以在较小的特权状态下进行。较小的特权状态也被称为问题状态、问题模式或用户模式。
对以较小的特权状态执行的程序不可写访问的一个这种受限制资源为程序状态字(PSW)。PSW可包含要执行的下一指令的程序计数器值、可由分支指令使用条件码字段、用于指示检测是被启用还是被禁用的检测控制字段、以及用于控制指令排序和确定计算机处理器的状态的其他信息,该状态包括分配给该程序的特权状态。在多线程处理环境中,多个程序共享或时间片、可用计算机处理器的能力。每个程序有上下文信息,该信息包括相关的PSW、,用于访问分配给该程序的主存储器的地址转换表中的原始地址、一组通用寄存器当前值、控制寄存器、浮点寄存器等。当前活动,或控制PSW,被称为当前PSW。其管辖当前正在执行的程序。计算机处理器具有中断能力,其允许计算机处理器响应于例外条件和外部刺激而上下文快速切换到另一个程序。当出现中断时,对于特定类别的中断,计算机处理器将当前PSW置于所分配的存储位置,该位置被称为旧PSW位置。计算机处理器从第二分配的存储位置读取新的PSW。这个新的上下文确定要执行的下一程序。在一个实施例中,这些存储单元被设在计算机处理器可访问的存储器位置。当计算机处理器已经完成对中断的处理时,处理中断的程序可以重新加载包括旧PSW的旧上下文,使其再次成为当前PSW,使得被中断的程序可以继续。
PSW的字段可以明确地(例如,当指令执行读取部分PSW位)或隐含地(例如,在取指令、取操作数、地址生成计算、地址生成源等时)被引用。通常进行的明确引用在执行时进行,而隐式引用通常指令执行(即,取指令、指令解码、执行时间以及完成时间)期间在流水线的不同阶段进行。PSW中的各个字段可以彼此独立地被引用或更新。
在一个实施例中,通过操纵上下文,操作系统控制计算机的处理资源,包括由计算机处理器启用运行时间检测。在操作系统执行期间,由操作系统执行的任何软件应用启用或禁用所述运行时间检测。运行时间检测的启用/禁用状态被保存为PSW中的与程序关联的上下文信息。
运行时间检测(RI)设施可以结合在实现z/Architecture的型号上。当RI 设施被安装和启用时,在程序执行过程中数据被收集到CPU内的一个或多个收集缓冲器,然后被报告给程序缓冲器。所存储的每个单元信息被称为一个报告群组。一个报告群组的内容包括多条记录,其内容表示在程序执行期间由CPU确认的事件。
当运行时间检测设施安装在配置中时,PSW字段(RI位)启用运行时间检测。运行时间检测控制的有效性判定接通RI位的能力,但是,当RI为1时,CPU控制是有效的并且运行时间检测被启用。运行时间检测设施可以包括以下指令:负载运行时间检测控制、修改运行时间检测控制、运行时间检测发射、运行时间检测的下一个、运行时间检测关闭、运行时间检测开启、存储运行时间检测控制以及测试运行时间检测控制。
负载运行时间检测控制(LRIC)指令对管辖运行时间检测的运行时间检测控制进行初始化。修改运行时间检测控制(MRIC)指令修改最初由LRIC建立的所有运行时间检测控制或运行时间检测控制的子集。运行时间检测发射(RIEMIT)指令通过将通用寄存器的值存储到收集缓冲器中来收集通用寄存器的值。运行时间检测的下一个(RINEXT)指令执行RINEXT后的下一个顺序指令(NSI)的定向采样。运行时间检测关闭(RIOFF)指令禁用运行时间检测。运行时间检测开启(RION)指令启用运行时间检测。存储运行时间检测控制(STRIC)指令将运行时间检测控制的当前值放置到指定存储位置。测试运行时间检测控制(TRIC)指令检查运行时间检测控制。如果有效,则设置控制改变指示灯的状态。
运行时间检测设施包括用于使得测量警报外部中断待决的能力。由运行时间检测收集并被报告给程序缓冲器的一些信息是依赖于型号,并因此没有定义。由运行时间检测设施提供的采样和数据是用于性能特征的统计估计、基本上是准确的、并且可能不是可重复的。例如,不管采样模式如何,引发了例外或与某些系统内部活动相关联的采样指令是否会导致报告群组的存储,以及如果被存储,包括在运行时间检测的数据中的依赖型号的数据是否会受到影响,这是不可预测的。
收集缓冲器用于捕获一组记录,其内容报告在程序执行期间由处理器确认的事件。实例是:执行一个或多个所选取的分支、事项(transaction)执行中止事件、取指令高速缓冲器未命中、数据提取或存储缓冲器未命中、以及RIEMIT指令的操作数。RIEMIT指令的执行通过将通用寄存器的值存储到收 集缓冲器来收集通用寄存器的值。附加数据可以被收集和/或存储在其它缓冲器,诸如指令-数据缓冲器。
报告受制于报告控制。当采样指令被识别时,每个报告控制开启对相应条件的检查。如果相应的条件存在,则形成并存储报告群组。没有开启报告控制或不存在用于已开启报告控制的相应条件,则不存储报告群组。关于采样指令所报告的数据从指令-数据缓冲器和其他依赖型号的源获得,并且随后用来创建该报告群组的一条或多条记录的内容,一条这样的记录就是一条指令记录。
可在报告群组存储中获取的记录类型包括:填充符、附加、开头、时间戳、指令、发射、TX中止、调用、返回以及转移。在收集缓冲器中有效记录的数量不足以填满当前报告-群组的尺寸的报告群组时,在报告群组中使用填充符记录。可在报告群组的附加部分使用附加记录。开头记录是第一个报告群组的第一个记录。时间戳记录被存储为除第一个报告群组之外的每个报告群组的记录0。在针对采样指令报告群组被存储为报告群组的最后一个记录时创建指令记录。发射记录由于RIEMIT的成功执行而被创建。事务(transaction-execution)-执行(TX)模式中止记录由隐含中止或执行事项中止指令而被创建。调用记录由于被归类为调用类型分支指令的分支指令的执行而被创建。返回记录由于被归类为返回指令的返回型分支指令的执行而被创建。转移记录由于满足一定条件码规则的分支指令的执行被创建。
图5描述了用于可在实施中实现的处理器的运行时间检测的系统的示意图。在实施例中,系统500包括中央处理单元(CPU),诸如图1的处理器106。在实施例中,处理器106是单一的处理器。在替代实施例中,处理器106是多核处理器的单一处理核。在一个实施例中,处理器106能够以不同的速度运行。
在一个实施例中,处理器106还包括寄存器510。寄存器510是硬件寄存器,其能够存储由处理器106使用的数据字。寄存器510包括一个或多个锁存器,其用于存储可由处理器106访问数据位。寄存器510可包括例如通用寄存器和控制寄存器。处理器106还包括与寄存器510通信的检测模块506。该检测模块506是控制处理器106的检测的处理电路。该检测模块506被配置为直接从处理器106收集检测数据,诸如一个或多个所选取分支的执行路径、事务-执行中止事件、各种运行时间操作数、时间戳信息等等。检测模块 506从处理器106收集检测数据,并在收集缓冲器508中存储该检测数据。在一个实施例中,收集缓冲器508是循环(circular)缓冲器,其收集从该检测模块506接收到的数据,并当所述循环缓冲器被填满时,其采用新数据覆写最老数据。
处理器106执行一个或多个操作系统516和一个或多个应用518。所述一个或多个操作系统516和一个或多个应用518存储在诸如硬盘驱动器、CD/ROM、闪存等的存储器520中,并且被加载到保留用于存储当前正在执行的操作系统和/或应用的一个或多个有效片段的运行时间存储器504区域中的主存储器514,被调用页,其根据需要从所述存储520被加载到运行时间存储器504。在一个实施例中,每个操作系统作为由管理程序(未示出)管理并且由处理器106执行的虚拟机来执行。
在一个实施例中,处理器106根据用于当前正在执行的操作系统或应用主存储器514中的PSW数据512在寄存器510中加载PSW 512,并在例如寄存器510中设置一个或多个处理器的设置值。在一个实施例中,寄存器510中的PSW包括用于启用并控制检测模块506的一个或多个位。
所述一个或多个应用518包括被编译为在具体操作系统上执行的软件应用程序、在解释器(例如,JavaTM)上执行的解释代码、或者操作系统支持线程(例如,进程管理、端口监督程序等)。所述一个或多个操作系统516和/或所述一个或多个应用程序518的每一个可以执行指令以触发该检测模块506来启动或停止所述收集检测数据。
在一个实施例中,所述一个或多个应用程序518中的一个执行已确定为采样指令的指令,从而在完成采样指令的执行时创建采样点,并且然后使检测模块506来将所述应用的所收集的数据从收集缓冲器508移动到该应用可以访问的主存储器514中的程序缓冲器522。主存储器514可以是现有技术中公知的任何可寻址存储器。在一个实施例中,主存储器514可以包括快速存取缓冲存储器,有时也被称为高速缓冲器。每个CPU可以具有相关的高速缓冲器。在另一个实施例中,主存储器514是动态随机存取存储器(DRAM)。在另一个实施例中,主存储器是存储设备,诸如计算机硬盘驱动器、或者可由应用访问的闪存。
为了配置运行时间检测控制,处理器106指示负载运行时间检测控制(LRIC)指令。除了在此进一步所描述的具体LRIC字段之外,可以理解到, 可以定义附加字段来支持其他功能。LRIC指令可以用于加载和初始配置运行时间检测,并且受到图5的检测模块支持。在实施例中,检测模块506,也被称之为运行时间检测模块506,实现运行时间检测控制并报告控制。运行时间检测控制的当前状态可以使用所述存储运行时间控制(STRIC)指令从图5的几存取510从存储到主存储器514中。可加载为LRIC指令的操作数控制块的各种字段的定义也在此被用作指代运行时间检测控制的对应值的状态。
图6描述了在实施例中包括可由特权状态设定的控制的运行时间控制检测控制块(RICCB)的一部分。控制块部分600可以包括除了参照图6描述的那些值之外的附加值。对控制块部600的修改可以由LRIC指令来执行。
控制块部分包括有效位602(V位)。当有效位602是预先由LRIC指令设置时,有效位602表示处理器中的一组运行时间检测控制的有效性。
控制块还包括S位604,它是用来确定较小特权状态程序是否被允许执行该MRIC指令。K位606表示,针对运行时间检测控制,诸如运行时间检测控制的原始地址以及限制地址,较小的特权状态程序是否被允许在半特权状态下执行。H位608确定所述地址控制(即原始地址、限制地址、当前地址)是否是指主虚拟地址空间或家庭(home)虚拟地址空间。0位610被忽略,并被视为0。
较小的特权状态的采样报告控制位612(Ps位)用于与较小的特权状态程序相结合。当在较小的特权状态且在运行时间检测控制中的Ps位612为零时,运行时间检测控制的报告控制在运行时间检测被启用时被忽略,并因而不会导致将被存储的报告群组。当在较小的特权状态下且运行时间检测控制中的Ps位612是一时,该报告控制根据其定义的功能被校验和使用。
管理程序(supervisor)-状态采样报告控制位614(Qs位)用于与管理状态程序结合使用。当在管理状态和运行时间检测控制中的Qs位614为零时,运行时间检测控制的报告控制在运行时间检测被启用时被忽略,因此不会导致报告群组将被存储。当在管理态和运行时间检测控制中的Qs位614为一时,则报告控制根据其定义的功能被检查和使用。
较小的特权状态收集缓冲器控制位616(Pc位)控制更新图5的收集缓冲器508。当在较低特权的状态和运行时间检测控制中的Pc位616为零时,运行时间检测控制的收集缓冲器控制在运行时间检测被启用时被忽略,并且 收集缓冲器508的更新被阻止。当在较小的特权状态,并运行时间检测控制中的Pc位616是1时,收集缓冲器控制根据其定义的功能被检查和使用。
管理状态收集缓冲器控制位618(Qc位)控制更新收集缓冲器508。当在管理状态和运行时间检测控制中的Qc位618是零,运行时间检测控制的收集缓冲器控制在运行时间检测被启用时被忽略,并且防止更新收集缓冲器508。当在管理态和运行时间检测控制中的Qc位618是1时,则所指示的收集缓冲器控制是根据其定义的功能被检查和使用。
G位620是运行时间检测暂停中断的待决控制,也称为暂停中断。如果G位620为零,暂停中断未待决。如果G位602为一,暂停中断待决。当程序缓冲器522中的第一个报告群组被写入时,G位620被设置为零。也就是说,当运行时间检测程序缓冲器的起始地址(ROA)702等于图7的运行时间检测程序缓冲器的当前地址(RCA)706时,G位620被设置为零。当试图存储程序缓冲器522的其他报告群组而不是第一个报告群组时,如果在运行时间检测停止条件不存在,则G位620被设置为零,并且存储报告群组。当试图存储程序缓冲器522的其他报告群组而不是第一个报告群组时,如果在运行时间检测停止条件确实存在,G位620被设置为1,并且不存储报告群组。
U位622是用于缓冲器充满中断和停止中断的启用控制。当U位622为零,中断请求的生成被禁用,并且如果待决,则保持待决。
L比特624是缓冲器充满中断的待决控制。当L位624是零,则缓冲器充满中断未待决。当L位624是一,则缓冲器充满中断正待决。
密钥字段626是一个4位无符号整数,其值被用作用于存储报告群组的存储保护字段。仅在存储密钥和用于存储访问的请求相关联的访问密钥相匹配时报告群组的存储被允许,并且在存储密钥的访问密钥匹配或当存储密钥的取回保护为零时提取被允许。存储密钥的四个访问控制位等于访问密钥或当访问密钥是零时密钥匹配。
图7描绘了在半特权模式(即,K比特为1)下允许MRIC执行时的RICCB控制块一部分。控制模块700也可以是用于运行时间检测控制的初始化的LRIC指令的操作数。该控制模块700可以包括除了参照图7描述的值之外的附加值。在一个实施例中,在其他情况先没有被指定的MRIC指令操作数的部分是不可由较小的特权状态程序访问的。当允许半特权模式时,运行时间 检测程序缓冲器原始地址(ROA)702和运行时间检测程序缓冲器限制地址704采用MRIC指令由较小权限的状态程序设置。所述ROA 702是图5的程序缓冲器522的第一字节的位置。所述RLA 704表示程序缓冲器522的最后字节的位置。
在一个实施例中,运行时间检测程序缓冲器当前地址(RCA)706可由MRIC指令更新。RCA 706是将被存储的下一个报告群组的程序缓冲器522中的位置。RCA 706检查报告群组尺寸字段744(RGS字段),并影响用于形成程序缓冲器522的地址有效位位置的数目。64位RCA 706是字0、字1的位的位置0到26-RGS、以及在右侧附加的RGS+5二进制零。这是将被存储在程序缓冲器522中的随后的报告群组的图5的程序缓冲器522的起始位置。报告群组是由检测模块506创建的并且随后被存储在程序缓冲器522的信息的单元。在一个实施例中,当由所述RCA 706所指定的RGS字段744不等于所述运行时间检测控制的当前报告群组的尺寸(即RCA 706将改变RGS字段744)时,那么RCA 706被设置为ROA 702。
剩余的采样间隔计数字段742(RSIC字段)可以使用MRIC指令由较低特权程序更新。该RSIC字段742包括64位的无符号整数,其表示剩余的采样间隔计数。当运行时间检测控制的RSIC字段742的值为零或等于比例因子字段740(SF字段)中的值并且运行时间检测被启用时,那么下一个采样间隔为基于采样模式字段708(M字段)和SF字段740值的完整间隔。当RSIC字段742非零且小于SF字段740并且运行时间检测被启用时,下一采样间隔为部分间隔。当RSIC字段742是非零且大于SF字段740的值并且运行时间检测被启用时,下一个采样间隔为扩展间隔。当一展的时间隔到期时,则下一个时间隔基于SF字段740的值。当RSIC字段742设置为非零值时,它受制于同一依赖型号的最大限制,SF字段740也是受制于该限制。当RSIC字段742的初始值是零,采样模式将指定在LRIC和MRIC指令的执行期间RSIC字段742是否被设定为SF字段740中的值,或者其是否继续显示为零直到运行时间检测被启用为止。
SF字段740包含64位的无符号整数,其值是比例因子计数个单位。单位的尺寸根据模式字段708(M字段)来确定。当RSIC字段742中的值为零,则SF字段740提供RSIC字段742的初始值,该初始值被递减到零,在此时,当前指令被识别为采样指令,并且该间隔计数根据SF字段740的值被刷新。 SF字段740的有效值的范围是从1到2 64-1。如果被指定为零,则假定为一的值。然而,每个型号可以具有SF字段740的最小和最大值两者。最小值和最大值基于采样模式字段708可以不同。如果指定小于最小值的值,则依赖型号的最小值被加载。如果指定大于最大值的值,则依赖型号的最大值被加载。
DC控制字段736是4位无符号整数,其值指定了与数据读取或存储高速缓冲器未中关联的高速缓冲器延迟级别。也就是说,采样指令遇到了数据访问高速缓冲器未中。除非被其他运行时间检测控制禁止,尝试存储表示采样指令的报告群组,其数据访问识别了在数值上大于或等于由DC控制字段736的值指定的级别的高速缓冲器延迟级别处的未中。用于数据访问的高速缓冲器的结构和高速缓冲器延迟级别是依赖型号的。对于具有多个或长的操作数的指令而言,其是依赖型号的,如果有的话,操作数访问用于报告控制。依赖型号的行为可能会忽略DC控制字段736的值,并因此不将其作为存储报告群组的理由。
IC字段734是4位无符号整数,其值指定与取指令缓冲器未中相关联的高速缓冲器延迟级别。也就是说,采样指令的读取遇到取指令缓冲器未中。对于IC字段734和DC控制字段736两者,高速缓冲器延迟级别为高速缓冲器级别访问离观察处理器有多远的一种抽象。该延迟级别依赖于处理器和主存储器之间的嵌套高速缓冲器级别的数量以及这样的高速缓冲器级别如何在多个处理器之间共享的组合。较大的延迟级别通常对应于更费时访问。IC字段734和DC控制字段736中的值可以被认为是高速缓冲器延时级别的零原点标识(identification)。例如,零值对应的L1高速缓冲器(即,最靠近处理器的高速缓冲器)。因此,值1是高速缓冲器的下一层,其被称为L2高速缓冲器,或者在一些机器中甚至为L1.5高速缓冲器。值2-15指代附加高速缓冲器延迟层的逻辑级数(progression),直到达到主存储器为止,但不包括主存储器本身。一般情况下,高速缓冲器的结构不会深达15层。因此,IC字段734和DC控制字段736中的值15被解释为特殊情况,这意味着,不管高速缓冲器延迟级别如何,为了生成报告群组的存储,关于指令读取或数据访问的高速缓冲器未中分别没有被识别。除非其他运行时间检测控制被禁止,尝试存储表示采样指令的报告群组,其取指令识别了在数值上大于或等于由DC字段734的值指定的级别的高速缓冲器延迟级别处的未中。用于取指令的高 速缓冲器的结构和高速缓冲器延迟级别是依赖型号的。依赖型号的行为可能会忽略DC字段734的值,并因此不将其作为存储报告群组的理由。
高速缓冲器延迟级别超越报告控制位732(F位)用于非分支指令和分支预测控制。当运行时间检测控制中的F位732为零时,运行时间检测控制的超高速缓冲器报告控制(IC字段734和DC控制字段736)根据其定义的功能被检查和使用。运行时间检测控制的分支预测控制(BPxn 722、BPxt 724、BPti 726以及BPni 728位)根据其定义的功能被检查和使用。当F位732为一时,除非被其他控制禁止,这些相同的控制被忽略并且报告群组被存储。
数据高速缓冲器未中控制位730(D位)表示报道群组是否将被存储。如果D位730是1,额外类型的记录可以或不可以被置于报告群组的额外部分,其包含关于相同指令的依赖型号数据
该MRIC指令包括分支预测(BP)报告控制(BPxn 722、BPxt 724、BPTI 726和BPni728)。如果运行时间检测控制中的BP报告控制位为0,则相应的条件不被检测。如果BP报告控制位为1并且相应的分支预测条件存在,则存储报告群组。
当BPxn位722为一时,其启动分支预测信息的检查(check)。因此,如果采样分支被不正确地预测将被采取,但又没有被采取,则报告群组被存储。当BPxt位724为一时,其启动所述分支预测信息的检验。因此,如果采样分支被不正确地预测为不被采取,但又被采取了,则报告群组被存储。
当BPti位726为一时,其启动所述分支预测信息的检验。因此,如果采样分支被正确预测为将被采取并且被采用,但分支目标被不正确地预测,则报告群组被存储。
当BPni位728为一时,其启动分支预测信息的检查。因此,如果采样分支被正确地预测为不采取,并且没有被采取,而分支目标被不正确预测,则报告群组被存储。
事务执行模式记录位720(X位)的启用控制控制收集事务执行模式中止记录。当运行时间检测控制中的X位720是零,则事务执行模中止记录未被收集。当X位720是1,则事务执行模式中止记录被收集和放置在图5的收集缓冲器508中。如果型号没有安装事务执行设施,则X位720被忽略。
该RIEMIT指令控制位718(E位)控制RIEMIT指令的执行。当运行时间检测控制中的E位718为零或被忽略以及在运行时间检测被启用时被视为 零时,RIEMIT执行空操作。当E位718是一并且在其他情况下不是被忽视时,RIEMIT被启用以执行其定义的功能。
当J位746为零时,其指明条件(BC)指令的分支是在其他类型的分支类别中,无论掩码值如何。如果J位746是一,则指明掩码15的BC指令处于返回型分支类别。当BC指令指定掩码1-14,其不受J位746的影响并且总是在其它类型的分支类别中。当在返回型分支类别中时,R位716控制夹杂物(inclusion)进入图5的收集缓冲器508。当在其它类型的分支类别时,B位748控制夹杂物进入收集缓冲器508。其他类型的分支类别也可以表示为转移型分支类别。
该指令地址码位714(C位)控制调用类型分支的启用。如果运行时间检测控制中的C位714是一并且指令为调用类型分支,则收集缓冲器被更新。如果调用类型和返回型分支两者的型号依赖性检测被组合,则C位714对这两个类型进行操作并且R位716是无效的。
R位716为返回类型分支的启用控制。如果运行时间检测控制中R位716为一并且该指令是返回型分支,则将收集缓冲器508被更新。
B位748是除了调用类型和返回型分支之外的分支的启用控制。如果运行时间检测控制中的B位748是一并且指令是由运行时间检测识别的其他类型的分支,那么收集缓冲器508被更新。
如果最大地址超出位712(MAE位)被设定为1,其表示一个或多个具有被设置为1的指令地址码(C字段)的报告群组已经被存储。一旦MAE 712位被设置为1,运行时间检测的继续执行并不将其设置回零。规定MAE位为0的LRIC指令或MRIC指令的执行将MAE位设置为零。
运行时间检测下一步(RINEXT)控制位710(N位)控制运行时间检测下一个指令的启用,该下一指令控制采样指令的执行。当运行时间检测控制中的N为710是零或被忽略以及作为零处理时,RINEXT执行空操作。当N位710位一并且在其他情况下被忽略时,RINEXT被启用执行其定义的功能。
模式字段708(M字段)为4位的无符号整数,其运行时间检测控制中的值指定运行时间检测控制的采样模式。受到支持的采样模式可以包括基于计数CPU周期的采样、计数指令、或被引导到响应于诸如RINEXT的采样指令而进行采样。
报告群组尺寸字段744(RGS)是3位的无符号整数,其值指定的报告群 组(RRG)的记录的数量。报告群组中的记录的数量可以在从包括开始/时间戳记录和指令最后一个记录的2条记录到高达256条记录之间变化。在一个实施例中,该上限可以是型号依赖性的。被置入报告群组的16个字节记录的数量是2(RGS+1)
主CPU能力抑制控制位738(Y位)和次CPU能力抑制控制位739(Z位)被统称为抑制控制。报告群组的抑制意味着不执行存储尝试。当配置中的所有CPU的CPU的性能一样时,抑制控制是无效的并且没有抑制发生。在一种配置中,如果CPU的CPU处理能力不同于另一CPU的能力,则抑制控制生效,并且至少一个CPU被称之为将在所述CPU能力或主CPU能力下运行,同时至少一个其它CPU被称之为在所述次CPU能力下运行。主和次CPU能力为不同运行速度。当Y位738和Z位739两者均为零,则抑制不会发生。当Y位738是零而Z位739是1时,如果CPU,例如,处理器106,运行在次级CPU能力下,则抑制发生。当Y位738是一而Z位739是零,如果CPU,比如处理器106,运行在主CPU能力下,则抑制发生。当Y位738而Z位739两者都为一,则抑制发生。
图7的上述字段和位都是字段的命名和放置的例子,并为清楚起见提供在此。应当理解的是,在其他实施例中可以仅仅使用这些字段的一个子集,字段可以是任何顺序或位置,和/或可以通过不同的名称来指代。
当运行时间检测被安装和启用时,一定数量的事件和数据可以捕获在收集缓冲器508中。收集缓冲器508被用于在程序执行期间捕获一组记录,其内容报告了处理器106识别的事件。实例是:一个或多个所采取的分支的执行、事务-执行中止事件、高速缓存器未命中、以及运行时间检测发出指令的操作数。IC和DC控制字段的734和736设置级别,在该级别处,该程序会对有兴趣采取一些正确动作来改善执行或数据的预取行为。RIEMIT指令的执行通过存储通用寄存器的值来将它收集到收集缓冲器508。附加数据可以被收集和/或存储在其它缓冲器中,诸如指令数据缓冲器(IDB)(未示出),其被用于收集依赖信号的采样指令数据,以便构造运行时间检测指令记录。
基于抽样报告收集的运行时间检测信息。来自指令流的指令被采样。被采样的指令被称为采样指令。在运行时间检测被启用时,用于确定采样指令的多种模式被定义如下:在循环计数模式中,计数是在SF 740或RSIC 742中被指定的CPU周期的数量,任何一个都可以用来提供当前时间间隔的计数。 响应于与采样模式相关联的事件,调整计数。例如,该计数可以在处理器106处于运行状态进行递减。当计数递减到阈值时,诸如零,当前指令被识别为采样指令,并且计数被重新初始化为SF 740的值,并采用下一循环开始递减。当采样指令的执行完成时,如果合适的话,执行报告。
在指令计数模式中,计数在SF 740或RSIC 742中被指定,任何一个都可以用来提供当前时间间隔的计数。对于由单个操作单元构成的指令,当事件被用于调节计数时,该计数在指令完成时递减。当计数递减到阈值时,诸如零,该指令为采样指令。对于由多个操作单元构成的指令,计数可能会以下述方式之一递减:
a.对于可中断指令,到部分完成的所有操作单元代表用于计数递减的一个计数单位。
b.对于可中断指令,操作各单位,从最近部分完成到最终完成的所有操作单元代表用于计数递减的一个计数单位。
c.对于在执行由指令的参数指定的处理的CPU确定的子部分之后完成的指令,该完成代表用于计数递减的一个计数单位。
d.对于在执行不再上述a-c类别中的多个操作单元之后完成的指令,最后一个操作单元的完成代表用于计数递减的一个计数单位。
当对于指令的任何计数单位,计数递减到零时,指令是采样指令。当达到阈值时,例如零,则计数被重新初始化为SF 740的值,并如上述a-d所述的那样开始倒计时。在计数模式下的所有情况下,如果合适的话,在采样指令的最后操作单元结束后,进行报告。
在定向采样模式下,在N位710为一并且RINEXT指令被成功执行时进行定向采样。采样指令为RINEXT指令之后的下一个顺序指令(NSI)。如果下一个顺序指令是执行型指令,采样指令是执行型指令的目标指令。当处于循环计数或指令计数模式时进行定向采样。结合定向抽样及其任何结果行动,计数采样继续,并且在其他情况下不受影响,除了如果根据计数采样确定的采样指令由定向采样所确定的相同指令时不存储两个报告群组之外。
不管采样模式如何,当采样指令通过执行RINEXT指令被识别时,存储报告群组。然而,运行时间检测控制Y 738、Z 739、Qs 614和Ps 612继续有效。
循环计数和指令计数采样每个确定受制于基于内部系统事件和异常情况 的适当时间间隔。当运行时间检测从禁用过渡到启用时,倒计时开始。依赖于可插入RINEXT和NSI的完成之间的任何事件,定向采样受制于较小的变化量。值得注意的是,中断会导致那些被认为是NSI将不再是NSI。
不管模式如何,采样识别采样指令。一旦采样指令被识别,当采样指令的执行完成和报告开始时,收集停止。随后应用管辖报告的各种报告控制。当使得报告群组的存储待决时,收集恢复。
如果不是在事务-执行模式下,则在采样指令的执行完成时报告群组为待决。当处于事务-执行模式时,则在采样指令的执行完成时,报告群组的存储被延迟直到所述事务结束为止并随后成为待决。当报告群组的存储被推迟或待决时,如果任何下述中断被识别,其可以被清除,所述中断为:1)程序中断、2)紧急机器检验中断、3)重启中断、以及4)管理调用中断。
任何待决I/O、外部以及可抑制的机器检验中断保持未决,直到报告群组已经被存储或运行时间检测控制确定报告群组将不被存储位置。
每个模式可以或不可以允许不同组的报告控制。当采样模式是指令计数或循环计数但定向采样也被使用时,有可能由多个采样方法来识别同一采样指令。当这种情况发生并且将被使用的报告控制根据采样模式而不同时,应用与定向抽样相关联的报告控制。
由于可能发生的异步和未经请求的系统事件,意味着采样特定指令的间隔的精确测定通常是不可行的。相反,RINEXT指令可用于更紧密地指定采样指令。
当处于周期计数模式或指令计数模式时,RINEXT指令可以以过近的接近度被发送到根据指令计数或循环计数采用识别的采样指令。相关联的报告群组的内容就像采样指令被识别为RINEXT指令的NSI而不是像应用采样指令的循环计数或指令计数。
当下列例外条件的任一项或多项被满足时,RINEXT的执行可以执行:
1.运行时间检测控制是无效的。
2.在该问题状态下,运行时间检测控制的Ps 612是0,其表示问题状态报告是不允许的。
3.在管理状态下,当前运行时间检测控制的Qs 614是0,其表示管理状态报告是不允许的。
4.如果当前运行时间检测控制的N-位710是0,表示该RINEXT指 令本身是不允许的。
5.存储被抑制。
6.当前PSW中的字段表示运行时间检测被禁用。
7.依赖信号的阈值将被超过。在一段时间内RINEXT已经被发出的次数已经超过了依赖信号的限制。
8.存在程序缓冲器已满条件。
9.存在运行时间检测停止条件。
10.下一个顺序指令是开始解释执行指令。
11.下一个顺序指令是管理调用指令。
如先前所描述的,当运行时间检测程序执行期间被启用,则在处理器106内运行时间检测数据被收集在收集缓冲器508中。在一个实施例中,收集缓冲器508是用来保存所收集的最新记录的处理器106的内部缓冲器。当检测到采样触发点时,作为被写入到程序缓冲器522的报告群组的一部分,记录从收集缓冲器508复制到程序缓冲器522。在一个实施例中,记录以非破坏性的方式从收集缓冲器508中复制。
收集缓冲器508可以被称为“硬件收集缓冲器”,因为该收集缓冲器508位于处理器内并且和在实施例中被实现为寄存器对的阵列,用于存储给定事件的指令地址和事件元数据。事件的一个例子是所采取分支,寄存器对可为其保持该分支的指令地址,并且元数据可为其保持分支目标和关于该分支的历史行为的信息。在一个实施例中,随着事件在所述指令流中的发生,寄存器对被排序并被顺序地更新。计数器被保持以指示在所述阵列中的最近更新的条目的索引。在一个实施例中,收集缓冲器508是环形缓冲器,并且当收集缓冲器508充满时,下一个事件覆写在所述阵列中的第一条目,并且所述阵列的寄存器对的顺序更新重启随后事件。因此,假设有阵列CB[0]到CB[N-1]并且计数器i表示最近更新的索引,所捕获事件的跟踪将由序列CB[I]、CB[I-1]…CB[1]、CB[0]、CB[N-1]、CB[N-2]...CB[I+1]表示。在另一个实施例中,两个指针被使用:指向缓冲器中的最旧条目的头指针和指向缓冲器中的最新条目的尾部/当前指针。
表示在任何给定执行点处的处理器106的状态的事件被顺序捕获在活收集缓冲器508中。收集缓冲器508用来捕获一组记录,其内容报告在程序执行期间由处理器106确认的事件(例如,一个或多个所采取分支的执行、事 务-执行中止的事件、RIEMIT指令的操作数等)。在一个实施例中,所确认的事件依赖于图7中所示的RICCB的内容。所示的收集缓冲器508的实施例中的条目包括事件指令地址和其他相关事件的元数据。事件的元数据的例子包括,但不限于:所采取的分支的指令地址和其包括有关分支的历史行为的某些信息的目标、RIEMIT指令的指令地址和相应的寄存器值、以及事务中止指令的地址和相应事务恢复输入点。
收集缓冲器508的实施例存储多达32个条目(即,关于32个事件的信息),其中每个指令地址由六十四个位(例如,位0:63)指定,而事件元数据由六十四个位(例如,位64:127)指定。收集缓冲器(RCB)的尺寸是因型号而异的,该尺寸代表了纪录的数量。在实施例中,收集缓冲器508的字节长度是16字节的记录大小的倍数。在一个实施例中,收集缓冲器(RCB)的尺寸为大于或等于该型号的最大报告群组(RRG)的计数和不是从收集缓冲器(RNC)获得的报告群组中的记录的计数之间的差值的一些记录的个数。因此,在一个实施例中,收集缓冲器的尺寸被表示为:
RCB≥(RRG-RNC)
在一个实施例中,收集缓冲器508和指令-数据缓冲器(如果使用一个的话)的内容被清除(purge)或者以其他方式受以下事件的影响:(1)中断;(2)开启和关闭运行时间检测设施的PSW位(例如,24位)从一变化到零:以及(3)当采样指令在运行时间检测设施处于事务执行模式时被识别时(在这种情况下,在事务结束时收集数据缓冲器508和指令-数据缓冲器的进一步更新停止和恢复,此时,报告群组的存储暂停并且收集缓冲器508和指令-数据缓冲器被清除)。
在一个实施例中,诸如图1B中所示的仿真主计算机系统,使用的寄存器和/或存储器来实现收集缓冲器508。在本实施例中,如果存在的话,也可使用寄存器和/或存储器来实现可选的指令-数据缓冲器。
在实施例中,附加功能可以实现数据收集,并且可以被视为提供额外的数据收集点,而基本上不扰乱先前描述的常规指令计数或循环计数采样。这些措施包括执行RIEMIT指令,它通过将其存储到收集缓冲器508中来收集通用寄存器的值。此外,先前描述的运行时间检测控制中的数据收集控制位可以被用于定制所收集的数据的类型(例如,E、C、R和B的控制位)。在这种方式中,所收集的数据类型是可编程的。
在一个实施例中,指令-数据缓冲器被实现以收集依赖模型的采样指令数据,其用于构造运行时间检测指令记录。在指令被识别为采样指令时,指令-数据缓冲器从预期可用的指令中收集数据。在一个实施例中,指令-数据缓冲器是所述处理器中的硬件缓冲/存储位置,其中保存关于将成为作为采样点的触发的指令的信息,使得在退出过程中,它可以与来自收集数据缓冲器508的数据一起被写出。类似于收集缓冲器508,它包括指令地址以及与该指令相关联的元数据。指令中-数据缓冲器中的元数据通常是依赖于机器的,并且可以包括,但不限于:有关高速缓冲器未中的信息以及相关分支预测的信息。
按照实施例,收集的其他数据可能不是来自于收集缓冲器508以及不来自从指令-数据缓冲器。例子包括用于形成以下部分的数据:(1)报告群组的第一条记录:时间戳或开始记录;以及(2)附加类型的记录可以为每个报告群组创建,并因而没有被存储在收集缓冲器508中,这样的记录,如果存在的话,可以放置在报告群组的额外的或依赖机器的部分。这些记录在本文中称为“系统信息记录”。
图8示出在采样点存储在程序缓冲器522的报告群组800的高级别例子。记录中的报告群组的尺寸由RRG表示,等于2(RGS+1),其中RGS作为指数,是报告群组的尺寸。从除了收集缓冲器508之外的位置复制的记录的依赖型号的数量(RNC)在报告群组中被使用时可以或可以不被非破坏性地复制。在图8的例子中,RRG=8、RGS=2、以及RNC=4。图8中所示的示例报告群组800包括:头标部分802、主体部分804、额外记录部分806以及页脚(footer)部分808。
头标部分802可以包括开始记录或时间戳记录以便保存状态、跟踪、和/或定时信息。开始记录被存储用于存储在程序缓冲器中的第一报告群组的头标部分802(也就是,当RCA 706等于ROA 702)。在一个实施例中,所述开始记录包括:“02”的记录类型字段、用于指示当前有多少报告群组存储在程序缓冲器中的多个报告群组(NRG)字段、用于指示报告群组的大小的RGS字段、用于指示该程序缓冲器522是否已满的停止(S)字段、用于指示运行时间检测是否停止的暂停(H)字段、以及用于指示何时写入开始记录的计时(TOD)时钟字段。在一个实施例中,开始记录中的字段的至少一个子集源于RI控制块(例如,RICCB)。时间戳记录的实施例具有“03”记录类型并包含用于指示所述记录何时被存储的TOD时钟字段。在一个实施例中,时 间戳记录被存储在用于除了第一报告群组以外的每个报告群组的头标部分802。
报告群组的主体部分804可以包括用于事件的各种记录和从收集缓冲器508采样的信息。事件和信息可以代表,例如,通过发送指令、事务-执行中止、调用、返回、分支、以及填充符所捕获的状态信息
在一个实施例中,在成功执行RIEMIT指令时,在收集缓冲器508中创建并存储发射记录。所述发送记录的实施例包括:用于指示当前PSW的指令地址位的位置如何被表示在所述发送记录的记录类型字段“10”、基于寻址模式(例如,64,31或24位)变化并且如果RIEMIT是执行类型指令的目标则包含RIEMIT指令的指令地址或执行类型指令的指令地址字段、用于存储来自由RIEMIT指令所指定的通用寄存器的数据的发送数据字段。
在一个实施例中,事务执行模式中止记录通过隐含中止或事务中止指令的执行被创建并且存储在收集缓冲器508中。中止记录的实施例包括:用于指示当前PSW的指令地址位的位置如何被表示在所述事务-执行中止记录的记录类型字段“11”、基于寻址模式(例如,64,31或24位)变化并且如果所被中止的指令是执行类型型指令的目标则包含所被中止的指令的指令地址或执行类型指令的指令地址字段、与所述中止相关的任何依赖型号的数据的字段。
在实施例中,调用记录在R2字段为非零时由执行调用类型分支指令创建,该指令诸如BRANCH AND SAVE(BASR)(分支并保存)(BASR)、BRANCH AND SAVE(BAS)、BRANCHRELATIVE AND SAVE LONG、BRANCH RELATIVE AND SAVE、BRANCH AND LINK(BALR)、BRANCHAND LINK(BAL)、以及BRANCH AND SAVE AND SET MODE。指令地址位的位置在调用记录中如何被表示的指令地址代码字段、基于寻址模式(例如,64,31或24位)变化并且如果所述分支指令是执行类型指令的目标则包含分支指令或执行类型指令的地址的指令地址字段、以及含有该分支目标地址的目标地址字段(也称为“被调用位置”)。
返回记录和转移记录可具与调用记录有相同的格式。在实施例中,返回记录有记录类型字段“13”,并通过在R2字段不为零且掩码为15时执行诸如BRANCH ON CONDITION(BCR)的返回类型分支指令而创建。对于返回记录,如果分支是执行类型指令的目标该指令地址字段包含分支指令或执行型 指令的地址,并且目标地址字段包含返回位置。
在实施例中,传输记录有记录类型字段“14”,并通过执行返回类型分支指令被创建,所述指令诸如:a.在R2字段为非零和掩码范围为1-14时的BRANCH ON CONDITION(BCR)、b.J位为零或掩码范围为1-14时的BRANCH ON CONDITION(BC)、c.BRANCH ON COUNT(BCT,BCTR,BCTG,BCTGR)、d.BRANCH ON INDEX HIGH(BXH,BXHG)、e.BXLE,BXLEG)、f.BRANCH ONINDEX LOW OR EQUAL(BXLE,BXLEG)、g.BRANCH RELATIVE ON CONDITION(BRC)、h.BRANCHRELATIVE ON CONDITION LONG(BRCL)、i.BRANCH RELATIVE ON COUNT(BRCT,BRCTG)、j.BRANCH RELATIVE ON COUNT HIGH(BRCTH)、k.BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG)、l.BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE,BRXLG)、m.COMPARE ANDBRANCH(CRB,CGRB)、n.COMPARE AND BRANCH RELATIVE(CRJ,CGRJ)、o.COMPARE IMMEDIATEAND BRANCH(CIB,CGIB)、p.COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ)、q.COMPARE LOGICAL AND BRANCH(CLRB,CLGRB)、r.COMPARE LOGICAL AND BRANCHRELATIVE(CLRJ,CLGRJ)以及s.COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ,CLGIJ)。所述分支被采取时创建转移记录。对于转移记录,如果分支是执行型指令的目标则指令地址字段包含分支指令或执行型指令的地址,并且目标地址字段包含返回位置。
在收集缓冲器508中的有效记录的数量不足以填满当前RGS的报告群组时,在报告群组使用填充符记录。填充符记录的实施例包括记录类型字段“00”,以便指示该记录是填充符记录并且剩余字节未被定义。
当存在额外记录部806时,额外记录部806可以含有依赖型号的记录。在一个实施例中,额外记录的格式类似于填充符记录,不同之处在于记录类型被设置为“01”以便表明该记录是额外记录以及额外记录的剩余字节可以包含依赖型号的数据。
页脚部分808可包括含有关于采样指令执行的信息的指令记录。在报告群组被存储用于采样指令时,指令记录被创建。指令结果的实施例包括:记录类型字段“04”、用于指示在指令记录中当前PSW的指令地址位的位置如 何被表示的指令地址码字段、基于寻址模式(例如64、31或24位)而变化并在采样指令为执行型指令的目标的情况下包含采样指令或执行型指令的指令地址的指令地址字段、以及包含从IDB收集的任何依赖型号的数据的指令-数据缓冲器(IDB)字段。
图9描绘了实现运行时间检测定向采样的流程900。处理流程900可以由处理器106来实现。可替代地,处理流程900由图1B的仿真处理器29来实现。为了便于说明,该处理流程900在此参考处理器106来描述。
最初,图5的运行时间检测模块506和寄存器510可以被配置为支持使用LRIC指令的定向采样来加载如前所述的图6和图7的控制模块600和700。一旦运行时间检测控件被配置和启用,诸如事件和数据的信息可以被收集在收集缓冲区508。周期性地或按照定向,采样指令达到,其触发将报告群组存储到到程序缓冲器522中,程序缓冲器522也被称为运行时间检测程序缓冲器522。
在方框902中,处理器106从指令流中获取RINEXT指令。该指令流可以是问题状态程序或来自运行时间存储器504的管理状态程序。指令流包括按照程序顺序后面跟着NSI的RINEXT指令。该RINEXT指令可以基于指令操作码来识别。在一个实施例中,RINEXT指令是32位的,具有在位0-7的十六进制的“AA”和在位12-15的“0”。
在方框904中,处理器106执行RINEXT指令。在方框906中,RINEXT指令的执行包括确确定当前运行时间检测状态是否能够设定用于在程序执行过程报告运行时间检测信息的采样点;为了运行时间检测状态能够设置采样点,各种条件必须得到满足,诸如运行时间检测必须在与当前执行的指令流相关联的PSW中被启用。此外,状态具体报告必须启用(Ps612、Qs 614),采样模式M-字段708必须指示有效采样模式,N位710必须被启用,抑制控制应指明非抑制,运行时间检测控制应处于有效配置,RINEXT指令的接近度的信号依赖限制必须满足,不应该存在程序缓冲区已满的情况,不应该存在运行时间检测停止的情况,以及下一个顺序指令不应该是受限制的指令。
在方框908,如果当前运行时间检测状态未被启用来设置采样点,则RINEXT指令被当作空操作处理。否则,如果当前运行时间检测状态被启用以设置采样点,则在方框910处,NSI作为采样指令,用于导致运行时间检测事件。
在方框912中,基于执行NSI,运行时间检测事件导致记录的将运行时间检测信息作为报告群组记录到运行时间检测程序缓冲器522中。来自系统信息和来自收集缓冲器508的记录的组合可以被合并以将报告群组,诸如图8的报告群组,存储到运行时间检测程序缓冲器522。
如先前所述,RINEXT指令可以被插入用于其它采样模式的采样指令之间。使用LRIC指令加载控制块部700,采样模式可以被设置为周期计数模式和指令计数模式之一,而当前运行时间检测状态被启用以基于执行NSI设置采样点。计数被配置为建立与采样模式相关联的采样间隔。响应于与采样方式有的事件关,调整计数,如在每个CPU周期或指令完成时递减。响应于所述计数达到一个阈值,例如零,该指令流中的指令被识别为采样指令。响应于采样指令的完成,为报告群组生成收集在处理器106的收集缓冲器508中的信息的记录。如果为循环计数模式或指令计数模式设置运行时间检测控制时遇到RINEXT指令并且N-位710是零,则RINEXT指令被当作空操作。然而,如果N位710被设置,则处理器106可以在周期计数模式或指令计数模式中执行RINEXT指令。因此,一个或多个RINEXT指令可以基于循环计数模式或指令计数模式在完成采样指令的连续实例之间由处理器106执行。这能够进行正规间隔采样和被检测的指令流的定向采样两者。在某些情况下,基于间隔的采样模式和定向采样模式都可以将相同指令识别为采样指令。当处理器106基于将指令识别为采样指令的NSI和采样模式确定指令流中的指令是采样指令时,只有单一的报告群组被存储到运行时间检测程序缓冲器522,尽管相同指令被有效地识别两次。
如上所述,实施例可以以计算机实现的过程和用于实践那些过程的装置的形式来实施。实施例可包括计算机可读/可用介质1002上的具有包含指令的算机程序代码逻辑1004的如图10所示的计算机程序产品1000,其体现为作为制品的有形介质。用于计算机可读/可用介质1002的示例性制品可包括:软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪存驱动器或任何其它计算机可读存储介质,其中,当计算机程序代码逻辑1004被计算机装载时,计算机成为用于实施本发明的装置。实施例包括计算机程序代码逻辑1004,例如,无论是存储在存储介质中还是加载到计算机和/或由计算机执行,或通过某些传输介质传输,诸如通过电线或电缆、通过光纤、或经由电磁辐射,其中,当计算机程序代码逻辑1004被计算机载入和执行时,计算机成为用于 实施本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑1004分段配置微处理器,以创建特定的逻辑电路。
技术效果和益处包括使用运行时间检测定向采样所捕获的事件。对在处理器中所架构的RINEXT指令的支持使得被检测的程序能够在下一个顺序指令完成时指定采样点。这提供在基于周期计数和指令计数的采样上提供了更精确采样。由于在定向采样没有被启用时RINEXT显示为空操作指令,因此在程序中包括RINEXT指令能够在不需要重新编译程序的情况下使得定向采样被选择性地启用。对RINEXT指令的支持还可以使用仿真例程被包含在仿真或许你处理器中。
本文所用的术语仅用于描述特定实施例的目的,并不意在限制本发明。本文所使用的单数形式“一”、“一个”和“该”也意图包括复数形式,除非上下文另有明确说明。这将进一步理解的是,术语“包括”和/或“包含”在本说明书中使用时指定所陈述的特征、整数、步骤、操作、元件的存在,但不排除存在或附加一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组。
下面权利要求书中所有手段或步骤加功能元素的相应的结构、材料、动作和等同物旨在包括特别要求保护的任何结构、材料或用于与其他要求保护的元件组合执行功能的行为。为了说明和描述目的已经呈现本发明的描述,但其并非意在以所公开的形式穷举或限制本发明。不脱离本发明的范围和精神的情况下,许多修改和变化形式对本领域普通技术人员而言将是显而易见。选择并描述该实施例是为了最好地解释本发明的原理和实际应用,以及使本领域的其他技术人员能够理解用于根据适于所想到的特定用途而具有各种修改形式的各种实施例的本发明。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以 是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意类别的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或 其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
所述计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或其他设备上以便在计算机、其它可编程处理装置或其它设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或方框图方框或多个方框中指定的功能/动作的过程。
如上所述,实施例可以以计算机实现的过程和用于实践那些过程的装置形式的来实施。在实施例中,本发明可以以由一个或多个网络元件执行的计算机程序代码来实施。实施例包括计算机可用介质上的计算机程序产品,其具有包含指令的计算机程序代码逻辑,实现在作为制品的有形介质中。计算机可用介质的示例性制品可包括:软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪存驱动器或任何其它计算机可读存储介质,其中,当计算机程序代码逻辑被装入和由计算机执行时,计算机成为用于实施本发明的装置。实施例包括计算机程序代码逻辑,例如,是否存储在存储介质中、加载到和/或由计算机执行、或通过某些传输介质传输,诸如通过电线或电缆、通过光纤、或经由电磁辐射的方法,其中,当计算机程序代码逻辑被装入和被计算机执行时,计算机成为用于实施本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑段配置微处理器以创建特定的逻辑电路。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框 的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (13)

1.一种用于实现运行时间检测定向采样的方法,该方法包括:
从指令流中取出运行时间检测下一个RINEXT指令,该指令流包括程序顺序中的后面跟随有下一个顺序指令NSI的所述RINEXT指令;以及
由处理器执行RINEXT指令,该执行包括:
确定当前运行时间检测状态是否能够设定用于在程序执行过程报告运行时间检测信息的采样指令上的采样点;
基于能够设置采样点的当前运行时间检测状态,使得所述NSI作为用于导致运行时间检测事件的NSI采样指令,所述NSI采样指令触发将包括导致NSI采样指令数据的运行时间检测信息记录到运行时间检测程序缓冲器;以及
基于执行NSI采样指令,使得运行时间检测事件将运行时间检测信息作为报告群组记录到运行时间检测程序缓冲器。
2.如权利要求1所述的方法,还包括:
基于未能设置采样点的当前运行时间检测状态,将该RINEXT指令处理为空操作指令。
3.如权利要求1所述的方法,还包括:
将采样模式设置为循环计数模式和指令计数模式之一,而当前运行时间检测状态被启用以便基于执行NSI而设置采样点;以及
基于将指令识别为采样指令的NSI和采样方式两者,确定指令流中的指令是为采样指令,其中当NSI和采样方式两者将该指令识别为采样指令时,只有单一的报告群组被存储在运行时间检测程序缓冲器中。
4.如权利要求1所述的方法,还包括:
响应于负载运行时间检测控制LRIC指令配置运行时间检测控制,该LRIC指令建立采样模式和RINEXT控制。
5.根据权利要求4所述的方法,其中LRIC指令还建立运行时间检测程序缓冲器当前地址,用于存储在采样点收集的信息的记录、运行时间检测程序缓冲器起始地址,运行时间检测程序缓冲器限制地址、问题状态采样报告控制、管理状态采样报告控制、比例因子以及剩余采样间隔计数。
6.如权利要求1所述的方法,其中所述当前运行时间检测状态基于以下任一一项不被启用:
a.运行时间检测未被启用;
b.处于问题状态以及问题状态报告未被允许;
c.处于管理状态以及管理状态报告未被允许;
d.基于运行时间检测控制的设置,RINEXT指令的执行未被允许;以及e.根据依赖型号的限制,RINEXT指令已经以过近的接近度被发送到前RINEXT指令。
7.如权利要求1所述的方法,其中,所述处理器为指令集体系结构的仿真处理器,其在另一个指令集体系结构的在主机处理器上被模仿,并且RINEXT指令的执行通过被配置为模仿RINEXT指令的执行的一个或多个仿真软件例程来执行。
8.一种用于实现运行时间检测定向采样的系统,所述系统包括:
存储器;以及
包括运行时间检测模块的处理器,该运行时间检测模块被配置为执行一种方法,该方法包括:
从指令流中取出运行时间检测下一个RINEXT指令,该指令流包括程序顺序中的后面跟随有下一个顺序指令NSI的所述RINEXT指令;以及
由处理器执行RINEXT指令,该执行包括:
确定当前运行时间检测状态是否能够设定用于在程序执行过程报告运行时间检测信息的采样指令上的采样点;
基于能够设置采样点的当前运行时间检测状态,使得所述NSI作为用于导致运行时间检测事件的NSI采样指令,所述NSI采样指令触发将包括导致NSI采样指令数据的运行时间检测信息记录到运行时间检测程序缓冲器;以及
基于执行NSI采样指令,使得运行时间检测事件将运行时间检测信息作为报告群组记录到所述存储器中的运行时间检测程序缓冲器。
9.如权利要求8所述的系统,还包括系统:
基于未能设置采样点的当前运行时间检测状态,将该RINEXT指令处理为空操作指令。
10.如权利要求8所述的系统,还包括:
将采样模式设置为循环计数模式和指令计数模式之一,而当前运行时间检测状态被启用以便基于执行NSI而设置采样点;以及
基于将指令识别为采样指令的NSI和采样方式两者,确定指令流中的指令是为采样指令,其中当NSI和采样方式两者将该指令识别为采样指令时,只有单一的报告群组被存储在运行时间检测程序缓冲器中。
11.如权利要求10所述的系统,还包括:
响应于负载运行时间检测控制LRIC指令配置运行时间检测控制,该LRIC指令建立采样模式和RINEXT控制。
12.如权利要求11所述的系统,其中LRIC指令还建立运行时间检测程序缓冲器当前地址,用于存储在采样点收集的信息的记录、运行时间检测程序缓冲器起始地址,运行时间检测程序缓冲器限制地址、问题状态采样报告控制、管理状态采样报告控制、比例因子以及剩余采样间隔计数。
13.如权利要求8所述的系统,其中,其中所述当前运行时间检测状态基于以下任一一项不被启用:
a.运行时间检测未被启用;
b.处于问题状态以及问题状态报告未被允许;
c.处于管理状态以及管理状态报告未被允许;
d.基于运行时间检测控制的设置,RINEXT指令的执行未被允许;以及
e.根据依赖型号的限制,RINEXT指令已经以过近的接近度被发送到前RINEXT指令。
CN201380014606.4A 2012-03-16 2013-03-01 用于实现运行时间检测定向采样的方法和系统 Active CN104169888B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/422,532 US9465716B2 (en) 2012-03-16 2012-03-16 Run-time instrumentation directed sampling
US13/422,532 2012-03-16
PCT/JP2013/001267 WO2013136705A1 (en) 2012-03-16 2013-03-01 Run-time instrumentation directed sampling

Publications (2)

Publication Number Publication Date
CN104169888A CN104169888A (zh) 2014-11-26
CN104169888B true CN104169888B (zh) 2016-11-16

Family

ID=49158801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380014606.4A Active CN104169888B (zh) 2012-03-16 2013-03-01 用于实现运行时间检测定向采样的方法和系统

Country Status (15)

Country Link
US (2) US9465716B2 (zh)
EP (1) EP2825961B1 (zh)
JP (1) JP6153533B2 (zh)
KR (1) KR101572404B1 (zh)
CN (1) CN104169888B (zh)
AU (1) AU2013233831B2 (zh)
CA (1) CA2866809C (zh)
IL (1) IL235094A (zh)
NO (1) NO2754961T3 (zh)
RU (1) RU2585982C2 (zh)
SG (1) SG11201404860VA (zh)
SI (1) SI2825961T1 (zh)
TW (1) TWI534613B (zh)
WO (1) WO2013136705A1 (zh)
ZA (1) ZA201406609B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804951B2 (en) * 2014-10-08 2017-10-31 Signalfx, Inc. Quantization of data streams of instrumented software
US9804830B2 (en) * 2014-12-19 2017-10-31 Signalfx, Inc. Anomaly detection using a data stream processing language for analyzing instrumented software
US10394692B2 (en) 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
WO2017028908A1 (en) 2015-08-18 2017-02-23 Telefonaktiebolaget Lm Ericsson (Publ) Method for observing software execution, debug host and debug target
GB2551574B (en) * 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
GB2551747B (en) * 2016-06-29 2019-04-10 Advanced Risc Mach Ltd Diagnostic data capture
US10282327B2 (en) * 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
RU2756186C2 (ru) * 2018-02-06 2021-09-28 Акционерное общество "Лаборатория Касперского" Система и способ категоризации .NET приложений
CN113383541B (zh) * 2019-02-02 2024-02-20 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区访问方法
CN113508597B (zh) 2019-03-01 2023-11-21 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于方向的预测
MX2022000110A (es) 2019-07-10 2022-02-10 Beijing Bytedance Network Tech Co Ltd Identificacion de muestras para la copia intra-bloque en codificacion de video.
TWI790506B (zh) * 2020-11-25 2023-01-21 凌通科技股份有限公司 開發介面系統與在開發介面進行大量資料傳輸方法

Family Cites Families (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821178A (en) 1986-08-15 1989-04-11 International Business Machines Corporation Internal performance monitoring by event sampling
JPS6421546A (en) 1987-07-16 1989-01-24 Nec Corp Device for collecting program execution history
JPH03217949A (ja) 1990-01-23 1991-09-25 Hitachi Ltd 計算機システム
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
US5341500A (en) 1991-04-02 1994-08-23 Motorola, Inc. Data processor with combined static and dynamic masking of operand for breakpoint operation
JP2505950B2 (ja) 1991-05-13 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション ハ―ドウェア支援ブレ―クポイント・システム
US5491793A (en) 1992-07-31 1996-02-13 Fujitsu Limited Debug support in a processor chip
JPH07281930A (ja) 1994-04-08 1995-10-27 Nec Corp 情報処理装置動作測定解析システム
EP0689141A3 (en) 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
US5555432A (en) 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
EP0729609A1 (en) 1994-09-19 1996-09-04 Koninklijke Philips Electronics N.V. A microcontroller system for performing operations of multiple microcontrollers
US5675817A (en) 1994-12-05 1997-10-07 Motorola, Inc. Language translating pager and method therefor
US5553293A (en) 1994-12-09 1996-09-03 International Business Machines Corporation Interprocessor interrupt processing system
US5964893A (en) 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
US5737516A (en) 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
US5675768A (en) 1996-02-01 1997-10-07 Unisys Corporation Store software instrumentation package instruction
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5796939A (en) 1997-03-10 1998-08-18 Digital Equipment Corporation High frequency sampling of processor performance counters
US6631518B1 (en) 1997-03-19 2003-10-07 International Business Machines Corporation Generating and utilizing organized profile information
US5960198A (en) 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6154818A (en) 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6163840A (en) 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6077312A (en) 1998-05-06 2000-06-20 International Business Machines Corporation Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US6161196A (en) 1998-06-19 2000-12-12 Lucent Technologies Inc. Fault tolerance via N-modular software redundancy using indirect instrumentation
US6216237B1 (en) 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6158049A (en) 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6243836B1 (en) 1998-08-17 2001-06-05 Lucent Technologies, Inc. Apparatus and method for circular buffering on an on-chip discontinuity trace
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US20020046305A1 (en) 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US6378125B1 (en) 1999-02-22 2002-04-23 International Business Machines Corporation Debugger thread identification points
US7137105B2 (en) 1999-05-12 2006-11-14 Wind River Systems, Inc. Dynamic software code instrumentation method and system
US6321329B1 (en) 1999-05-19 2001-11-20 Arm Limited Executing debug instructions
US6519766B1 (en) 1999-06-15 2003-02-11 Isogon Corporation Computer program profiler
JP2001051874A (ja) 1999-08-12 2001-02-23 Hitachi Ltd マイクロコンピュータ
US7406603B1 (en) * 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6539500B1 (en) 1999-10-28 2003-03-25 International Business Machines Corporation System and method for tracing
US6574727B1 (en) 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6634020B1 (en) 2000-03-24 2003-10-14 International Business Machines Corporation Uninitialized memory watch
US7735072B1 (en) 2000-08-11 2010-06-08 International Business Machines Corporation Method and apparatus for profiling computer program execution
US7103877B1 (en) 2000-11-01 2006-09-05 International Business Machines Corporation System and method for characterizing program behavior by sampling at selected program points
US6961927B1 (en) 2000-11-27 2005-11-01 Microsoft Corporation Lossless, context-free compression system and method
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US6769054B1 (en) 2001-02-26 2004-07-27 Emc Corporation System and method for preparation of workload data for replaying in a data storage environment
JP2002252163A (ja) 2001-02-27 2002-09-06 Toshiba Corp 画像表示装置の製造方法および製造装置
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
JP2002342114A (ja) 2001-05-21 2002-11-29 Fujitsu Ltd トレースデータ採取可能なプロセッサ
US7047521B2 (en) 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US20030005423A1 (en) 2001-06-28 2003-01-02 Dong-Yuan Chen Hardware assisted dynamic optimization of program execution
US7181600B1 (en) 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7080289B2 (en) 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
GB0125628D0 (en) 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
US7281242B2 (en) 2002-01-18 2007-10-09 Bea Systems, Inc. Flexible and extensible Java bytecode instrumentation system
US7134115B2 (en) 2002-02-07 2006-11-07 Matsushita Electric Industrial Co., Ltd. Apparatus, method, and program for breakpoint setting
US6877114B2 (en) 2002-02-14 2005-04-05 Delphi Technologies, Inc. On-chip instrumentation
US7107585B2 (en) 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
US8141052B2 (en) 2003-05-09 2012-03-20 Microsoft Corporation Instrumenting software for enhanced diagnosability
US7185320B2 (en) 2003-06-27 2007-02-27 Hewlett-Packard Development Company, L.P. System and method for processing breakpoint events in a child process generated by a parent process
US7152186B2 (en) 2003-08-04 2006-12-19 Arm Limited Cross-triggering of processing devices
US20050120337A1 (en) 2003-12-01 2005-06-02 Serrano Mauricio J. Memory trace buffer
US7500152B2 (en) 2003-12-05 2009-03-03 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
US7206916B2 (en) 2004-03-08 2007-04-17 Sun Microsystems, Inc. Partial address compares stored in translation lookaside buffer
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US20090150890A1 (en) 2007-12-10 2009-06-11 Yourst Matt T Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US20060184832A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Method and apparatus for achieving high cycle/trace compression depth by adding width
US9152531B2 (en) * 2005-02-18 2015-10-06 Green Hills Sofware, Inc. Post-compile instrumentation of object code for generating execution trace data
US7478219B2 (en) 2005-04-14 2009-01-13 International Business Machines Corporation Retrieving event data for logical partitions
US7650595B2 (en) 2005-04-29 2010-01-19 Microsoft Corporation Sound transaction-based reduction without cycle detection
US7661094B2 (en) 2005-05-10 2010-02-09 Alcatel-Lucent Usa Inc. Real-time software diagnostic tracing
US7886198B2 (en) 2005-05-16 2011-02-08 Texas Instruments Incorporated Method and system of identifying overlays used by a program
US7603589B2 (en) 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program
US8527958B2 (en) 2005-05-16 2013-09-03 Texas Instruments Incorporated Profiling operating context and tracing program on a target processor
US7886271B2 (en) 2005-05-16 2011-02-08 Texas Instruments Incorporated Embedding event information in the timing stream
US8694970B2 (en) 2005-06-02 2014-04-08 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US7716335B2 (en) 2005-06-27 2010-05-11 Oracle America, Inc. System and method for automated workload characterization of an application server
US7239980B2 (en) 2005-08-30 2007-07-03 International Business Machines Corporation Method and apparatus for adaptive tracing with different processor frequencies
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070079177A1 (en) 2005-09-30 2007-04-05 Charles Spirakis Process monitoring and diagnosis apparatus, systems, and methods
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
CN101021800A (zh) 2006-02-16 2007-08-22 Sap股份公司 虚拟机监控
GB0604991D0 (en) 2006-03-11 2006-04-19 Slam Games Ltd Instrumentation for real-time performance profiling
US20070261032A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for hardware assisted profiling of code
US7814466B2 (en) 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US20070260849A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for executing instrumentation code using a target processor
US8245199B2 (en) * 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US8141058B2 (en) 2006-06-05 2012-03-20 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8307346B2 (en) 2006-06-09 2012-11-06 Oracle America, Inc. Atomic groups for debugging
RU58744U1 (ru) * 2006-06-20 2006-11-27 Федеральное государственное унитарное предприятие "Научно-исследовательский институт "Восход" Система актуализации персональных данных кандидатов и депутатов в интегрированной базе данных избирательной системы
US7895569B2 (en) 2006-08-30 2011-02-22 Research In Motion Limited System and method for implementing software breakpoints in an interpreter
CN100401267C (zh) 2006-09-01 2008-07-09 上海大学 微处理器的片上动态跟踪方法
CN100547562C (zh) 2006-10-18 2009-10-07 国际商业机器公司 自动生成可再现运行时问题的单元测试用例的方法和系统
US7992136B2 (en) 2006-10-18 2011-08-02 International Business Machines Corporation Method and apparatus for automatic application profiling
US8627335B2 (en) 2006-11-13 2014-01-07 Oracle America, Inc. Method and apparatus for data space profiling of applications across a network
US8645185B2 (en) 2006-12-06 2014-02-04 Telefonaktiebolaget L M Ericsson (Publ) Load balanced profiling
US7783867B2 (en) 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US8041901B2 (en) 2007-03-05 2011-10-18 Freescale Semiconductor, Inc. Performance monitoring device and method thereof
US7743279B2 (en) 2007-04-06 2010-06-22 Apple Inc. Program counter (PC) trace
WO2008122746A1 (en) 2007-04-10 2008-10-16 Cambridge Consultants Limited Data processing apparatus
US20090037887A1 (en) 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8453121B2 (en) 2007-10-25 2013-05-28 International Business Machines Corporation Managing the tracing of the execution of a computer program
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8141053B2 (en) 2008-01-04 2012-03-20 International Business Machines Corporation Call stack sampling using a virtual machine
US8090933B2 (en) 2008-02-12 2012-01-03 International Business Machines Corporation Methods computer program products and systems for unifying program event recording for branches and stores in the same dataflow
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US8312253B2 (en) * 2008-02-22 2012-11-13 Freescale Semiconductor, Inc. Data processor device having trace capabilities and method
US7904460B2 (en) 2008-04-23 2011-03-08 Microsoft Corporation Determining computer information from processor properties
US8572577B2 (en) 2008-06-20 2013-10-29 International Business Machines Corporation Monitoring changes to data within a critical section of a threaded program
GB2461716A (en) 2008-07-09 2010-01-13 Advanced Risc Mach Ltd Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events.
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8307345B2 (en) 2008-11-04 2012-11-06 Ca, Inc. Intelligent engine for dynamic and rule based instrumentation of software
US8478948B2 (en) 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
JP5326708B2 (ja) 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8694962B2 (en) 2009-04-30 2014-04-08 International Business Machines Corporation Aspect-oriented parallel programming language extensions
JP5411587B2 (ja) * 2009-06-09 2014-02-12 トヨタ自動車株式会社 マルチスレッド実行装置、マルチスレッド実行方法
US8650562B2 (en) 2009-06-12 2014-02-11 International Business Machines Corporation Method and apparatus for scalable monitoring of virtual machine environments combining base virtual machine and single monitoring agent for measuring common characteristics and individual virtual machines measuring individualized characteristics
US8347001B2 (en) 2010-01-08 2013-01-01 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
KR20110070468A (ko) 2009-12-18 2011-06-24 삼성전자주식회사 인스트루먼테이션 실행 장치 및 방법
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US8453124B2 (en) 2009-12-23 2013-05-28 International Business Machines Corporation Collecting computer processor instrumentation data
US8782612B2 (en) 2010-05-11 2014-07-15 Ca, Inc. Failsafe mechanism for dynamic instrumentation of software using callbacks
US8566800B2 (en) 2010-05-11 2013-10-22 Ca, Inc. Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation
US8473925B2 (en) 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
US9009663B2 (en) 2010-06-01 2015-04-14 Red Hat, Inc. Cartridge-based package management
GB2481385B (en) 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
US20120167057A1 (en) 2010-12-22 2012-06-28 Microsoft Corporation Dynamic instrumentation of software code
US9430275B2 (en) 2011-06-03 2016-08-30 Oracle International Corporation Synchronization between concurrent notifier and waiter transactions using transaction condition variables
US8707314B2 (en) 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations

Also Published As

Publication number Publication date
AU2013233831A1 (en) 2014-09-11
JP2015510153A (ja) 2015-04-02
CN104169888A (zh) 2014-11-26
RU2585982C2 (ru) 2016-06-10
US9367313B2 (en) 2016-06-14
WO2013136705A1 (en) 2013-09-19
KR101572404B1 (ko) 2015-11-26
SI2825961T1 (en) 2018-03-30
US20130246746A1 (en) 2013-09-19
EP2825961B1 (en) 2017-11-08
TWI534613B (zh) 2016-05-21
TW201403313A (zh) 2014-01-16
IL235094A (en) 2017-07-31
SG11201404860VA (en) 2014-09-26
EP2825961A1 (en) 2015-01-21
ZA201406609B (en) 2016-05-25
EP2825961A4 (en) 2015-05-06
NO2754961T3 (zh) 2018-02-10
JP6153533B2 (ja) 2017-06-28
CA2866809A1 (en) 2013-09-19
US20130246741A1 (en) 2013-09-19
KR20140104981A (ko) 2014-08-29
AU2013233831B2 (en) 2016-05-12
US9465716B2 (en) 2016-10-11
RU2014118861A (ru) 2015-11-20
CA2866809C (en) 2020-04-14

Similar Documents

Publication Publication Date Title
CN104364770B (zh) 来自较小特权状态的运行时检测仪器的控制操作
CN104169888B (zh) 用于实现运行时间检测定向采样的方法和系统
CN104364768B (zh) 用于确定运行时间检测控制的状态的方法和系统
CN104169889B (zh) 在事务执行模式中的运行时间检测采样的方法和系统
CN104364771B (zh) 修改来自较小特权状态的运行时间仪表控制
CN104205064B (zh) 将程序事件记录事件向运行时间检测事件变换的系统及方法
CN104380264B (zh) 运行时间检测报告
CN104364769B (zh) 处理器特性的运行时间检测监控
CN104704474B (zh) 用于管理的运行时间的基于硬件的运行时间检测设施
CN104350468B (zh) 非事务储存指令
CN109313567A (zh) 虚拟化精确的基于事件的采样
CN104169887B (zh) 通过指令操作码的运行时间检测间接采样的方法和系统
CN104169886B (zh) 通过地址的运行时间检测间接采样的方法和系统
CN103562864B (zh) 执行开始操作员消息命令
CN103597462B (zh) 发送操作员消息命令到耦合设施
CN104380265B (zh) 运行时间检测控制发出指令

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant