CN104364769B - 处理器特性的运行时间检测监控 - Google Patents

处理器特性的运行时间检测监控 Download PDF

Info

Publication number
CN104364769B
CN104364769B CN201380014657.7A CN201380014657A CN104364769B CN 104364769 B CN104364769 B CN 104364769B CN 201380014657 A CN201380014657 A CN 201380014657A CN 104364769 B CN104364769 B CN 104364769B
Authority
CN
China
Prior art keywords
processor
run time
instruction
time detection
report group
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
CN201380014657.7A
Other languages
English (en)
Other versions
CN104364769A (zh
Inventor
岑中龙
小查尔斯.W.盖尼
T.J.斯雷格
M.S.法雷尔
B.L.史密斯
M.M.米特兰
D.L.奥斯塞克
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 CN104364769A publication Critical patent/CN104364769A/zh
Application granted granted Critical
Publication of CN104364769B publication Critical patent/CN104364769B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/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
    • G06F11/348Circuit details, i.e. tracer hardware
    • 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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的实施例涉及使用运行时间检测监控处理器的处理器特性信息。本发明的一个方面包括在处理器上执行指令流,并且检测在所述处理器上的所述执行的指令流的运行时间检测样本点。基于所述运行时间检测样本点来在运行时间检测程序缓冲器中存储报告群组。所述报告群组包括与所述处理器相关联的处理器特性信息。

Description

处理器特性的运行时间检测监控
技术领域
本发明总体上涉及在计算环境内的处理,并且更具体地涉及在使用运行时间检测的同时监控处理器特性。
背景技术
计算机处理器使用日益复杂的分支预测及指令高速缓存逻辑来执行事务(transaction)。这些程序已被引入以增加指令吞吐量,且因此增加处理性能。用于改进性能的逻辑的引入使得难以肯定地预测特定软件应用程序将如何在计算机处理器上执行。在软件开发过程期间,常常存在功能性与性能之间的平衡。软件在基于执行软件的底层硬件的一个或多个抽象层级处执行。当将硬件虚拟化时,额外抽象层被引入。随着性能增强逻辑及各种抽象层(layer)的引入,将难以透彻地理解当程序正在执行时在硬件层级(level)实际发生的事。在不具此信息的情况下,软件开发者将更抽象的方法(诸如,执行持续时间、存储器使用率、线程的数目等)用于最佳化软件应用程序。
发明内容
技术问题
当硬件特定信息可用时,该信息通常是在事后被提供给开发者,且该信息是以聚集地、在高层级、和/或穿插着其他程序及操作系统的活动的方式提供,从而难以识别可能影响软件应用程序的效率及准确度的问题。
对于问题的解决方案
实施例包括用于使用运行时间检测来监控处理器的处理器特性信息的方法、系统和计算机程序产品。所述计算机程序产品包括有形存储介质,其能够被处理电路读取,并且存储用于由所述处理电路执行以执行一种方法的指令。所述方法包括:在处理器上执行指令流,并且检测在所述处理器上的所述执行的指令流的运行时间检测样本点。所述方法进一步包括:基于所述运行时间检测样本点来在运行时间检测程序缓冲器中存储报告群组,所述报告群组包括与所述处理器相关联的处理器特性信息。
用于使用运行时间检测来监控处理器的处理器特性信息的方法包括:在处理器上执行指令流。所述方法也包括:检测在所述处理器上的所述执行的指令流的运行时间检测样本点。所述方法进一步包括:基于所述运行时间检测样本点来在运行时间检测程序缓冲器中存储报告群组,所述报告群组包括与所述处理器相关联的处理器特性信息。
用于使用运行时间检测来监控处理器的处理器特性信息的系统包括:存储器和具有运行时间检测模块的处理器。所述运行时间检测模块被配置为执行一种方法,所述方法包括:在处理器上执行指令流,并且检测在所述处理器上的所述执行的指令流的运行时间检测样本点。所述方法进一步包括:基于所述运行时间检测样本点来在运行时间检测程序缓冲器中存储报告群组,所述报告群组包括与所述处理器相关联的处理器特性信息。
额外特征及优点是经由本发明的技术来实现。本发明的其他实施例及方面将在本文中予以详细描绘且被视为所主张发明的一部分。为了更好地理解本发明的优点及特征,参看描绘及附图。
在说明书结尾处的权利要求中特定指出且清楚地主张了被视为本发明的主题。将根据结合随附图进行的以下详细描绘显而易见本发明的前述及其他特征及优点。
附图说明
图1A为描绘实施例中的示例主机计算机系统的图;
图1B为描绘实施例中的示例模拟主机计算机系统的图;
图1C为描绘实施例中的示例计算机系统的图;
图2为描绘实施例中的示例计算机网络的图;
图3为描绘实施例中的计算机系统的元件的图;
图4A描绘实施例中的计算机系统的详细元件;
图4B描绘实施例中的计算机系统的详细元件;
图4C描绘实施例中的计算机系统的详细元件;
图5描绘根据实施例的用于处理器的运行时间检测的系统的示意图;
图6描绘实施例中的包括可由特权状态设置的控制的运行时间检测控制块(RICCB)的一部分。
图7描绘实施例中的当半特权位(K)经设置为1时的RICCB控制块的一部分;
图8描绘根据实施例的报告群组。
图9描绘根据实施例的开始记录。
图10描绘根据实施例的时间戳记录。
图11描绘根据实施例的用于使用运行时间检测来监控处理器特性改变的处理流。
图12描绘根据实施例的用于运行时间检测存储抑制查看的处理流。
图13图示根据实施例的计算机程序产品。
具体实施方式
本发明的一个实施例启用使用运行时间检测通过地址的事件的间接样本。运行时间检测是能够不仅用在实验室或用于离线分析而且用于在处理器(CPU)上在程序控制下的程序运行时间期间的客户环境中的设施。被获取和执行来运行程序的指令的序列可以被称为指令流。为了增强数据收集灵活性,。可以基于可配置间隔来收集事件。被程序可设置的CPU控制管理运行时间检测。运行时间检测通常在固定的样本基础上报告事件;然而,可以通过使用运行时间检测下一个(RINEXDT)指令来引导在检测的指令流中的另外的兴趣点。通过或者指令计数或循环计数来确定固定样本间隔。在检测的指令流中的具体信息可以当执行随后的分析时很有益。能够在仪表运行期间建立与在检测的指令流中的特定指令相关联的另外引导的样本点可以实质上增大可用于事后分析的关键信息的数目。
对于支持多个运行速度或在以不同速度运行的处理器之间的迁移的处理器会出现与检测数据的收集的并发症。例如,如果运行的软件程序动态地从较快处理器向以较低速度运行的较慢处理器迁移,则现有的样本率在每一个指令被有效地增大,并且可以导致错误的统计。例如,当监控高速缓存未中率时,每一个指令的对于存储器的高速缓存未中的数目可以看起来较不频繁或成本低,因为对于存储器的访问通常在时间上是常数,但是指令被完成得较慢。处理器运行速度的默认设置可以被称为主要CPU能力,而波长的处理器运行速度可以被称为次要CPU能力。对于相关的数据收集的另外的挑战可以包括使用多代的不同处理器来用于共同的程序、CPU配置和状态以及其他外部因素。可以基于CPU版本来识别处理器产生和支持的特征。其他模型相关的极限也可以在CPU之间改变,诸如最大报告群组存储大小。CPU能力设置、CPU版本和模型相关的极限被统称为CPU特性。从可以在处理器之间移位的程序或指令流执行的视点看,在执行同一程序或指令流的同时在CPU特性上的改变可以具有最小的影响或导致使得运行时间检测数据无效。
已经描绘了用于支持在处理器或虚拟机之间的程序迁移或重新定位的多种技术。例如,由Khatri等在2007年9月6日提交并且通过引用被并入在此的美国专利申请公布No.2009/0070760“VIRTUAL MACHINE(VM)MIGRATION BETWEEN PROCESSOR ARCHITECTURES(在处理器架构之间的虚拟机(VM)迁移)”讨论了模拟特定特征集以通过掩蔽CPUID寄存器的所选择比特来启用在机器的类似池中的VM迁移。由Lorenc等在2011年5月3日提交并且通过引用被并入在此的美国专利申请No.13/100,078“DYNAMIC VIRTUAL MACHINE DOMAINCONFIGURATION AND VIRTUAL MACHINE RELOCATION MANAGEMENT(动态虚拟机域配置和虚拟机重新定位管理)”讨论了动态重新定位。
图1A描绘实施例中的主机计算机系统50的代表性组件。组件的其他配置也可在计算机系统中使用。代表性主机计算机系统50包含与主存储器(计算机存储器)2通信的一个或多个处理器1以及至存储器件11及网络10的用于与其他计算机或SAN等通信的I/O接口。处理器1符合具有架构化指令集及架构化功能性的架构。处理器1可具有用于将程序地址(虚拟地址)变换为存储器中的真实地址的动态地址转译(DAT)3。DAT 3通常包括用于高速缓存转译的转译后备缓冲器(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,且包含原生处理器27,该原生处理器具有不同于主机计算机系统50的处理器1的原生指令集架构的原生指令集架构。模拟主机计算机系统21具有原生处理器27可存取的存储器22。在实施例中,存储器22经分割成计算机存储器2部分及模拟例程存储器23部分。计算机存储器2根据主机计算机架构而可供模拟主机计算机系统21的程序使用。原生处理器27执行不同于模拟处理器29的架构的架构的架构指令集的原生指令(原生指令获得自模拟例程存储器23),且可通过使用在可解码所存取的该主机指令的序列及存取/解码例程中获得的一个或多个指令而从计算机存储器2中的程序存取用于执行的主机指令,以确定用于模拟所存取的该主机指令的功能的原生指令执行例程。针对主机计算机系统50架构定义的其他设施可由架构化设施例程模拟,其他设施包括诸如(例如)通用寄存器、控制寄存器、动态地址转译及输入/输出(I/O)子系统支持及处理器高速缓冲存储器的设施。模拟例程也可利用原生处理器27中可用的功能(诸如通用寄存器及虚拟地址的动态转译)来改进模拟例程的性能。也可提供特殊硬件及卸载引擎以帮助原生处理器27模拟主机计算机系统50的功能。
在大型计算机中,程序设计师(通常,现今的“C”程序设计师)常常通过编译器应用程序来使用架构化机器指令。存储在存储介质中的这些指令可原生地在z/ArchitectureIBM服务器中执行,或替代地在执行其他架构的机器中执行。可在现有及未来的IBM大型计算机服务器中及在IBM的其他机器(例如,服务器及服务器)上模拟指令。可于在广泛多种机器(使用由AMDTM、Sun Microsystems及其他公司制造的硬件)上执行Linux的机器中执行指令。除了在下在该硬件上执行之外,也可使用Linux以及由Hercules、UMX、Fundamental Software,Inc.(FSI)或PlatformSolutions,Inc.(PSI)提供的使用模拟的机器,其中执行通常在模拟模式下。在模拟模式下,模拟软件是由原生处理器执行以模拟模拟处理器的架构。
模拟主机计算机系统21的组件中的一个或多个将在z/ArchitecturePrinciples of Operation”(公告第SA22-7832-08号,第9版,2010年8月)中予以进一步描绘,该公告特此以全文引用方式并入本文中。IBM为国际商业机器公司(Armonk,New York,USA)额注册商标。本文中所使用的其他名称可为国际商业机器公司或其他公司的注册商标、商标或产品名称。
原生处理器27通常执行存储在包含固件或原生操作系统的模拟例程存储器23中的模拟软件以执行对模拟处理器的模拟。该模拟软件负责提取并执行模拟处理器架构的指令。该模拟软件维持模拟程序计数器以追踪指令边界。该模拟软件一次可提取一个或多个模拟机器指令且将该一个或多个模拟机器指令转换成供原生处理器27执行的原生机器指令的相应群组。这些经转换指令可被高速缓存,以使得可实现较快速转换。该模拟软件维持模拟处理器架构的架构规则以便保证针对模拟处理器撰写的操作系统及应用程序正确地操作。此外,该模拟软件提供由模拟处理器架构识别的资源,包括(但不限于)控制寄存器、通用寄存器、浮点寄存器、包括(例如)段表及页表的动态地址转译功能、中断机制、上下文切换机制、当日时间(TOD)时钟及至I/O子系统的架构化接口,以使得经设计以在模拟处理器29上执行的操作系统或应用程序可在具有该模拟软件的原生处理器27上执行。
被模拟的特定指令经解码,且子例程被调用以执行个别指令的功能。模拟模拟处理器29的功能的模拟软件功能被以(例如)“C”子例程或驱动程序来实施,或以在理解优选实施例的描绘的后将在本领域普通技术人员的能力范围内的提供特定硬件的驱动程序的某一其他方法来实施。
在实施例中,本发明可由软件(有时被称为经授权内部码、固件、微代码、毫码(milli-code)、微微代码(pico-code)等,其中的任一个都符合本发明)实践。参看图1A,体现本发明的软件程序代码是由也被称为主机计算机系统50的CPU(中央处理单元)1的处理器从存储器件11(诸如长期存储介质、CD-ROM驱动器、带驱动器或硬驱动器)存取。软件程序代码可体现于供数据处理系统使用的多种已知介质(诸如磁盘、硬驱动器或CD-ROM)中的任一个上。程序代码可分布在这些介质上,或可从一个计算机系统的计算机存储器2或存储器经由网络10至其他计算机系统地分发给用户以供这些其他系统的用户使用。
替代地,程序代码可体现于计算机存储器2中,且由处理器1使用处理器总线(未图示)存取。此程序代码包括操作系统,该操作系统控制各种计算机组件和一个或多个应用程序的功能及交互。程序代码通常是从诸如存储器件11的致密介质分页至计算机存储器2,程序代码可在计算机存储器中供处理器1处理。用于将软件程序代码体现于存储器中、实体介质上和/或经由网络分发软件码的技术及方法是公知的且本文中将不予以进一步论述。程序代码在被产生且存储在有形介质(包括(但不限于)电子存储器模块(RAM)、闪速存储器、致密盘(CD)、DVD、磁带等)上时常常被称为“计算机程序产品”。计算机程序产品介质通常可由优选在计算机系统中的处理电路读取以供处理电路执行。
图1C说明本发明可于其中实践的代表性工作站或服务器硬件系统。图1C的系统100包含诸如个人计算机、工作站或服务器的代表性基本计算机系统101,其包括可选的外围设备。基本计算机系统101包括一个或多个处理器106及总线(未图示),该总线用以连接一个或多个处理器106与基本计算机系统101的其他组件及根据现有技术实现一个或多个处理器106与基本计算机系统101之间的通信。该总线将处理器106连接至存储器105及长期存储器107,长期存储器可包括(例如)硬驱动器(包括(例如)磁性介质、CD、DVD及闪速存储器中的任一个)或带驱动器。基本计算机系统101也可包括用户接口适配器,其经由该总线将一个或多个处理器106连接至一个或多个接口设备,诸如键盘104、鼠标103、打印机/扫描仪110和/或其他接口设备,其他接口设备可为任何用户接口设备(诸如触敏屏幕、数字化输入板等)。该总线也经由显示适配器将一个或多个处理器连接至显示器件102,诸如LCD屏幕或监视器。
基本计算机系统101可通过能够与网络109通信108的网络适配器而与其他计算机或计算机网络通信。示例网络适配器为通信频道、令牌环(token ring)、乙太网络或调制解调器。替代地,基本计算机系统101可使用无线接口(诸如蜂窝数字分组数据(CDPD)卡)进行通信。基本计算机系统101可与局域网(LAN)或广域网(WAN)中的这些其他计算机相关联,或基本计算机系统101可为具有另一计算机的客户端/服务器配置中的客户端等。
图2说明本发明可于其中实践的数据处理网络200。数据处理网络200可包括诸如无线网络及有线网络的多个个别网络,该多个个别网络中的每一个可包括多个个别工作站201、202、203、204和/或图1C的基本计算机系统101。另外,如本领域普通技术人员将了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能工作站。
程序设计码111可体现于存储器105中,且由处理器106使用处理器总线存取。此程序设计码包括操作系统,其控制各种计算机组件和一个或多个应用程序112的功能及交互。程序代码通常是从长期存储器107分页至高速存储器105,程序代码可在高速存储器中供处理器106进行处理。用于将软件程序设计码体现于存储器中、实体介质上和/或经由网络分发软件码的技术及方法是公知的且本文中将不予以进一步论述。程序代码在被产生且存储在有形介质(包括(但不限于)电子存储器模块(RAM)、闪速存储器、致密盘(CD)、DVD、磁带等)上时常常被称为“计算机程序产品”。计算机程序产品介质通常可由优选在计算机系统中的处理电路读取以供处理电路执行。
处理器最容易利用的高速缓冲存储器(通常比处理器的其他高速缓冲存储器快速且小)为最低(L1或层级一)高速缓冲存储器,且主存储器(主存储器)为最高层级高速缓冲存储器(L3,如果存在3个层级)。最低层级高速缓冲存储器常常被划分为保存待执行的机器指令的指令高速缓冲存储器(I高速缓冲存储器)及保存数据操作数的数据高速缓冲存储器(D高速缓冲存储器)。
仍参看图2,网络也可包括大型计算机或服务器,诸如可存取数据存储库也可从工作站205直接存取的网关计算机(客户端服务器)206或应用程序服务器(远程服务器)208。网关计算机206充当至每一网络207的进入点。网关在将一个网络连接协议连接至另一者时是必需的。网关计算机206可优选地借助于通信链路耦接至另一网络(例如,因特网207)。网关计算机206也可使用通信链路直接耦接至一个或多个工作站101、201、202、203及204。网关计算机可利用可从国际商业机器公司购得的IBM eServerTM 服务器来实施。
在实施例中,体现本发明的软件程序设计码是由基本计算机系统101的处理器106从长期存储介质(诸如图1C的长期存储器107)存取。软件程序设计码可体现于供数据处理系统使用的多种已知介质(诸如磁盘、硬驱动器或CD-ROM)中的任一个上。该码可分布在这些介质上,或可从一个计算机系统的存储器或存储器经由网络至其他计算机系统地分发给用户210及211以供这些其他系统的用户使用。
参看图3,描绘处理器106的示例性处理器实施例。将一个或多个层级的高速缓冲存储器303用以缓冲存储器块以便改进处理器106的性能。高速缓冲存储器303为保存可能被使用的存储器数据的高速缓存行的高速缓冲器。典型高速缓存行为64、128或256个字节的存储器数据。在实施例中,将单独的高速缓存用于高速缓存指令而非用于高速缓存数据。常常由本领域公知的各种“窥探”演算法来提供高速缓存一致性(存储器及高速缓冲存储器中的行的复本的同步)。诸如处理器系统的存储器105的主存储器常常被称为高速缓冲存储器。在具有4个层级的高速缓冲存储器303的处理器系统中,存储器105有时被称为层级5(L5)高速缓冲存储器,因为存储器105通常较快且仅保存可供计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。存储器105“高速缓存”由操作系统分页到存储器105内及外的数据页。
程序计数器(指令计数器)311追踪待执行的当前指令的地址。z/Architecture处理器中的程序计数器是64位的且可截断至31或24位以支持先前寻址极限。程序计数器通常体现于计算机的程序状态字(PSW)中,以使得程序计数器在上下文切换期间保持不变。因此,进行中的程序(具有程序计数器值)可被(例如)操作系统中断(即,当前上下文从程序环境切换至操作系统环境)。程序的PSW在程序不在作用中时维持程序计数器值,且在操作系统在执行中时使用操作系统的程序计数器(在PSW中)。在实施例中,程序计数器被递增等于当前指令的字节数目的量。精简指令集计算(RISC)指令通常具有固定长度,而复杂指令集计算(CISC)指令通常具有可变长度。IBM z/Architecture的指令为具有2、4或6个字节的长度的CISC指令。程序计数器311由(例如)上下文切换操作或分支指令的分支采纳操作来修改。在上下文切换操作中,当前程序计数器值是与关于执行中的程序的其他状态信息(诸如条件码)一起存储在PSW中,且载入指向待执行的新程序模块的指令的新程序代码计数器值。执行分支采纳操作以便通过将分支指令的结果载入至程序计数器311中而准许程序做出决策或在程序内循环。
在实施例中,指令提取单元305是用以代表处理器106提取指令。指令提取单元305提取“下一顺序指令”、分支采纳指令的目标指令或在上下文切换后程序的第一指令。在实施例中,指令提取单元305使用预提取技术而基于经预提取的指令可能被使用的可能性来推测性地预提取指令。举例而言,指令提取单元305可提取包括下一顺序指令的16个字节的指令及额外字节的其他顺序指令。
所提取指令接着由处理器106执行。在实施例中,该所提取指令被传递至指令提取单元305的解码/分派单元306。解码/分派单元306解码该指令且将关于该经解码指令的信息转递至适当执行单元307、308和/或310。执行单元307从指令提取单元305接收关于经解码算术指令的信息且将根据指令的操作码(运算码)对操作数执行算术运算。操作数是从存储器105、架构化寄存器309或从执行中的指令的立即字段提供至执行单元307。当存储时,执行的结果是存储在存储器105、架构化寄存器309或存储在其他机器硬件(诸如控制寄存器、PSW寄存器等)中。
处理器106通常具有用于执行指令的功能的一个或多个执行单元307、308及310。参看图4A,执行单元307可通过接口逻辑407而与架构化寄存器309、解码/分派单元306、载入/存储单元310及其他处理器单元401通信。执行单元307可使用若干寄存器电路403、404及405来保存信息,算术逻辑单元(ALU)402将对该信息进行操作。ALU 402执行诸如加减乘除的算术运算,以及诸如及(and)、或(or)、以及互斥或(xor)、旋转及移位的逻辑功能。在实施例中,ALU支持与设计依赖的特殊化运算。其他电路可提供包括(例如)条件码及复原支持逻辑的其他架构化设施408。通常,ALU运算的结果被保存在输出寄存器电路406中,该输出寄存器电路可将该结果转递至多种其他处理函数。在其他实施例中,存在处理器单元的许多配置,本描绘仅意欲提供对一个实施例的代表性理解。
ADD指令(例如)将在具有算术及逻辑功能性的执行单元307中执行,而浮点指令(例如)将在具有特殊化浮点能力的浮点执行单元(未图示)中执行。优选地,执行单元通过对由指令识别的操作数执行运算码定义的函数而对操作数进行运算。举例而言,可由执行单元307对在由指令的寄存器字段识别的两个架构化寄存器309中发现的操作数执行ADD指令。
执行单元307对两个操作数执行算术加法且将结果存储在第三操作数中,其中该第三操作数可为第三寄存器或该两个源寄存器中的一个。执行单元307优选利用算术逻辑单元(ALU)402,其能够执行诸如移位、旋转、与、或及XOR的多种逻辑函数,以及包括加减乘除中的任一个的多种代数函数。一些ALU 402是为了纯量运算而设计且一些ALU是为了浮点运算而设计。在实施例中,数据可视架构而为大端序(big endian)(其中最低有效字节在最高字节地址处)或小端序(little endian)(其中最低有效字节在最低字节地址处)。IBM z/Architecture为大端序。带正负号字段可具正负号及量值,其视架构而定为二进位反码或二进位补码。二进位补码是有利的,因为ALU不必设计减法能力,因为呈二进位补码的负值或正值在ALU内仅需要加法。数字通常以速记(shorthand)描绘,其中例如,12位的字段定义4,096字节块的地址且通常被描绘为4Kbyte(千字节)块。
参看图4B,用于执行分支指令的分支指令信息通常被发送至分支单元308,其在其他条件运算完成之前使用诸如分支历史表432的分支预测演算法来预测分支的结果。将在条件运算完成之前提取并推测地执行当前分支指令的目标。当条件运算完成时,将基于条件运算的条件及推测出的结果而完成或舍弃推测地执行的分支指令。典型分支指令可测试条件码且在条件码满足该分支指令的分支要求的情况下分支至目标地址,可(例如)基于包括在寄存器字段或指令的立即字段中发现的数字的若干数字来计算目标地址。在实施例中,分支单元308可使用具有多个输入寄存器电路427、428及429及输出寄存器电路430的ALU 426。分支单元308可与(例如)通用寄存器、解码/分派单元306或其他电路425通信。
可出于包括(例如)以下各者的多种原因而中断一组指令的执行:由操作系统起始的上下文切换,导致上下文切换的程序例外或错误,导致上下文切换的I/O中断信号,或多个程序的多线程活动(在多线程环境中)。在实施例中,上下文切换动作存储关于当前在执行中的程序的状态信息,且接着载入关于正被调用的另一程序的状态信息。状态信息可存储在(例如)硬件寄存器中或存储器中。状态信息包括指向待执行的下一指令的程序计数器值、条件码、存储器转译信息及架构化寄存器内容。上下文切换活动可由硬件电路、应用程序、操作系统程序或固件码(微代码、微微代码或经授权内部码(LIC))单独地或组合地实行。
处理器根据指令定义的方法来存取操作数。指令可使用指令的一部分的值提供立即操作数,可提供明确地指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄存器字段。指令可利用由运算码字段识别为操作数的多个隐含寄存器。指令可利用操作数的存储器位置。操作数的存储器位置可由寄存器、立即字段或如由z/Architecture长位移设施(long displacement facility)举例说明的寄存器与立即字段的组合提供,在该z/Architecture长位移设施中指令定义基寄存器、索引寄存器及立即字段(位移字段),其被加在一起以提供操作数在存储器中的位置。本文中的位置暗示在主存储器(主存储器)中的位置,除非另有指示。
参看图4C,处理器使用载入/存储单元310来存取存储器。载入/存储单元310可通过经由高速缓冲存储器/存储器接口获得目标操作数在存储器中的地址及将该操作数载入架构化寄存器309或另一存储器位置中来执行载入操作,或可通过获得目标操作数在存储器中的地址及将从架构化寄存器309或另一存储器位置获得的数据存储在存储器中的目标操作数字置中来执行存储操作。载入/存储单元310可为推测性的且可以相对于指令序列而言无序的序列存取存储器;然而,载入/存储单元310对程序维持指令是有序地执行的表像。载入/存储单元310可与架构化寄存器309、解码/分派单元306、高速缓冲存储器/存储器接口或其他元件455通信,且包含各种寄存器电路、ALU 458及控制逻辑463以计算存储地址且提供管线排序以保持运算有序。一些运算可能无序,但载入/存储单元提供如本领域公知的用以使无序的运算对程序表现为已有序地执行的功能性。
优选地,应用程序“看见”的地址常常被称为虚拟地址。虚拟地址有时被称为“逻辑地址”及“有效地址”。这些虚拟地址是虚拟的,因为虚拟地址是通过多种DAT技术中的一个(诸如图3的DAT 312)重定向至实体存储器位置,DAT技术包括(但不限于)将偏移值(offsetvalue)作为虚拟地址的首码、经由一个或多个转译表转译虚拟地址,转译表至少单独地或组合地包括段表及页表,优选地,段表具有指向页表的输入项。在z/Architecture中,提供转译的阶层,其包括区域第一表、区域第二表、区域第三表、段表及选用的页表。常常通过利用转译后备缓冲器(TLB)来改进地址转译的性能,该转译后备缓冲器包含将虚拟地址映射至相关联实体存储器位置的输入项。输入项是在DAT 312使用转译表转译虚拟地址时创建。于是,虚拟地址的后续使用可利用快速TLB的输入项而非缓慢的顺序转译表存取。可通过包括最近最少使用(LRU)演算法的多种替换演算法管理TLB内容。
在处理器106为多处理器系统的处理器的情况下,每一处理器有责任使经共用资源(诸如I/O、高速缓冲存储器、TLB及存储器)保持连锁以达成一致性。在实施例中,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每一高速缓存行可被标记为处于共用状态、排他状态、有变化状态、无效状态及类似状态中的任一个中以便促进共用。
图3的I/O单元304为处理器106提供了用于附接至外围设备(包括例如磁带、磁盘、打印机、显示器及网络)的构件。I/O单元304常常由软件驱动程序提供给计算机程序。在诸如来自IBM的z/Series的大型计算机中,频道适配器及开放式系统适配器为大型计算机的I/O单元,I/O单元提供操作系统与外围设备之间的通信。
检测数据为与处理器106的操作有关的数据。在实施例中,对检测数据及其他系统层级量度的存取可能受限制或不可用。计算机处理器在特权状态(或监督状态)及较低特权状态(或问题状态)下操作。在特权状态中,程序可经由特权操作对所有系统资源进行存取(例如,对所有控制寄存器及监督存储器空间进行存取)。特权状态也被称为特权模式或监督模式。在计算机处理器上执行的操作系统可在特权状态中操作。较低特权状态为对系统资源的存取受限制的非特权状态。举例而言,在较低特权状态中执行的应用程序可对控制寄存器具有有限存取权或无存取权,且仅可存取由操作系统指派给应用程序的用户存储器空间。较低特权状态通常被指派给在操作系统的控制下执行的应用程序,且不可在较低特权状态中执行特权操作。较低特权状态也被称为问题状态、问题模式或用户模式。
对于在较低特权状态中执行的程序而言不可进行写入存取的一个这种受限资源为程序状态字(PSW)。PSW可包含待执行的下一指令的程序计数器、可由分支指令使用的条件码字段、用于指示检测被启用或停用的检测控制字段,及用以控制指令排序且确定计算机处理器的状态(包括指派给程序的特权状态)的其他信息。在多线程处理环境中,多个程序共用可用计算机处理器能力或将可用计算机处理器能力按时间截块。程序中的每一个具有上下文信息(context information),其包括相关联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)指令检查该运行时间检测控制。在有效的情况下,设置控制经更改指示符的状态。
运行时间检测设施包括用于使测量警告外部中断搁置(pending)的能力。由运行时间检测收集且报告至程序缓冲器的信息的一些是依赖模型的,且因此未被定义。由运行时间检测设施提供的样本及数据是用于对性能特性的统计估计,且是实质上准确的,且可能不可重复。举例而言,不管取样模式如何,都不可预测:导致例外或与特定系统内部活动相关联的样本指令是否会导致报告群组的存储,以及如果报告群组经存储,包括在运行时间检测数据中的依赖模型数据是否会受影响。
收集缓冲器是用以捕获记录的集合,记录的内容报告在程序执行期间由处理器识别的事件。示例为:一个或多个采纳分支的执行;事务执行中止事件;指令提取高速缓存未命中;数据提取或存储高速缓存未命中;以及RIEMIT指令的操作数。RIEMIT指令的执行通过将通用寄存器的值存储至收集缓冲器中来收集该值。可在诸如指令数据缓冲器的其他缓冲器中收集和/或存储额外数据。
报告受报告控制控制。当样本指令经识别时,每一报告控制启用对相应条件的检查。如果相应条件存在,则形成且存储报告群组。当无报告控制经启用或经启用报告控制的相应条件不存在时,不存储报告群组。可从指令数据缓冲器及其他依赖模型源获取关于样本指令所报告的数据,且接着将其用以创建报告群组的一个或多个记录的内容,一个这种记录为指令记录。
可在报告群组存储器中捕获的记录类型包括:填充、额外、开始、时间戳、指令、发出、事务执行(TX)中止、调用、返回和传送。当收集缓冲器中的有效记录的数目不足以填满当前报告群组大小的报告群组时,在报告群组中使用填充记录(filler record)。可在报告群组的额外区段中使用额外记录。开始记录为第一报告群组的第一记录。时间戳记录经存储为除第一报告群组外的每一个报告群组的记录0。当针对样本指令存储报告群组时创建指令记录作为该报告群组的最后记录。发出记录是通过RIEMIT的成功执行而创建。事务执行(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为收集从检测模块506接收的数据的循环缓冲器,且当该循环缓冲器被填满时,该循环缓冲器用新数据覆写最旧数据。
处理器106执行一个或多个操作系统516和一个或多个应用程序518。一个或多个操作系统516和一个或多个应用程序518存储在存储器520(诸如硬驱动器、CD/ROM、闪速存储器等)中,且被载入至主存储器514中的为存储目前执行的操作系统和/或应用程序的一个或多个作用中片段、被调用页(其是按需要从存储器520载入至运行时间存储器504中)而保留的运行时间存储器504区域中。在实施例中,操作系统中的每一个作为由超管理器(未图示)管理且由处理器106执行的虚拟机来执行。
在实施例中,处理器106将来自主存储器514中的用于目前执行的操作系统或应用程序的PSW数据512的PSW 512载入寄存器510中且设置(例如)寄存器510中的一个或多个处理器设置。在实施例中,寄存器510中的PSW包括用于启用及控制检测模块506的一个或多个位。
一个或多个应用程序518包括经编译以在特定操作系统上执行的软件应用程序、在解译器上执行的经解译码(例如,Java)或操作系统支持线程(例如,进程管理、守护进程等)。一个或多个操作系统516和/或一个或多个应用程序518中的每一个可执行指令以触发检测模块506以使其开始或停止收集检测数据。
在实施例中,一个或多个应用程序518中的一个执行指令,该指令已被确定为样本指令,从而在该样本指令的执行完成时创建样本点,且接着使检测模块506将应用程序的所收集数据从收集缓冲器508移动至主存储器514中的可由应用程序存取的程序缓冲器522。主存储器514可为本领域已知的任何可寻址存储器。在实施例中,主存储器514可包括有时被称为高速缓冲存储器的快速存取缓冲存储器。每一CPU可具有相关联高速缓冲存储器。在额外实施例中,主存储器514为动态随机存取存储器(DRAM)。在又一实施例中,主存储器为存储器件,诸如可由应用程序存取的计算机硬驱动器或闪速存储器。
为了配置运行时间检测控制,处理器106支持载入运行时间检测控制(LRIC)指令。除本文予以进一步描绘的特定LRIC字段外,将理解,也可定义额外字段以支持其他功能性。LRIC指令可用以载入运行时间检测且最初配置运行时间检测,且是由图5的检测模块506支持。在实施例中,检测模块506(也被称为运行时间检测模块506)实施运行时间检测控制及报告控制。运行时间检测控制的当前状态可使用存储运行时间控制(STRIC)指令从图5的寄存器510存储至主存储器514中。可作为LRIC指令的操作数载入的控制块的各种字段的定义也在本文中用以指代运行时间检测控制的相应值的状态。
图6描绘实施例中的包括可由特权状态设置的控制的运行时间检测控制控制块(RICCB)的一部分。控制块部分600可包括除了参看图6所描绘的那些值之外的额外值。可由LRIC指令来执行对控制块部分600的修改。
该控制块部分包括有效性位602(V位)。有效性位602指示处理器中的运行时间检测控制的集合的有效性,因为控制是由LRIC指令先前设置。
该控制块也包括S位604,其用以确定是否允许较低特权状态程序执行MRIC指令。K位606指示较低特权状态程序是否被准许在半特权状态中关于运行时间检测控制(诸如运行时间检测控制的原始地址及极限地址)进行执行。H位608确定地址控制(即,原始地址、极限地址及当前地址)是否参考主要虚拟地址空间(primary virtual address space)或主虚拟地址空间(home virtual address space)。0位610被忽略且当作0对待。
较低特权状态样本报告控制位612(Ps位)是与较低特权状态程序结合使用。当在较低特权状态中且运行时间检测控制中的Ps位612为零时,在运行时间检测经启用时忽略运行时间检测控制的报告控制,且因此不导致存储报告群组。当在较低特权状态中且运行时间检测控制中的Ps位612为1时,检查报告控制且根据其经定义功能来加以使用。
监督状态样本报告控制位614(Qs位)是与监督状态程序结合使用。当在监督状态中且运行时间检测控制中的Qs位614为零时,在运行时间检测经启用时忽略运行时间检测控制的报告控制,且因此不导致存储报告群组。当在监督状态中且运行时间检测控制中的Qs位614为1时,检查报告控制且根据其经定义功能来加以使用。
较低特权状态收集缓冲器控制位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为1时,暂停中断在搁置中。当程序缓冲器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为1时,缓冲器满中断在搁置中。
密钥字段626为4位的无正负号的整数,其值被用作报告群组的存储的存储保护密钥。仅在存储密钥匹配与对存储器存取的请求相关联的存取密钥时才准许报告群组的存储,且在存储密钥匹配存取密钥时或在存储密钥的提取保护位为零时准许提取。在存储密钥的四个存取控制位等于存取密钥时或在存取密钥为零时,密钥匹配。
图7描绘当MRIC被准许以半特权模式(即,K位为1)执行时的RICCB控制块的一部分。控制块700也可为用于初始化运行时间检测控制的LRIC指令的操作数。控制块700可包括除了参看图7所描绘的那些值之外的额外值。在实施例中,MRIC指令操作数的未另外指明的多个区段不可由较低特权状态程序存取。当半特权模式被准许时,运行时间检测程序缓冲器原始地址(ROA)702及运行时间检测程序缓冲器极限地址(RLA)704是由较低特权状态程序用MRIC指令设置。ROA 702为图5的程序缓冲器522的第一字节的位置。RLA 704指示程序缓冲器522的最后一个字节的位置。
在实施例中,运行时间检测程序缓冲器当前地址(RCA)706可由MRIC指令更新。RCA706为待存储的下一个报告群组在程序缓冲器522中的位置。RCA 706检查报告群组大小字段744(RGS字段),且影响用以形成程序缓冲器522的地址的有效位位置的数目。64位的RCA706为字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的值为零或等于缩放因子(scaling factor)字段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至264-1的范围中。如果指定了零,则采用值一。然而,每一模型可具有SF字段740的最小值及最大值两者。最小值及最大值也可基于模式字段708而不同。如果指定了小于最小值的值,则依赖模型最小值被载入。如果指定了大于最大值的值,则依赖模型最大值被载入。
DC控制字段736为4位的无正负号的整数,其值指明与数据提取或存储高速缓存未命中相关联的高速缓存等待层级。即,样本指令遭遇数据存取高速缓存未命中。除非被另一运行时间检测控制禁止,否则尝试存储表示样本指令的报告群组,该样本指令的数据存取在数值上大于或等于由DC控制字段736的值指明的层级的高速缓存等待层级处经识别为未命中。用于数据存取的高速缓冲存储器结构及高速缓存等待层级是依赖模型的。对于具有多个操作数或长操作数的指令,其是依赖模型于哪一操作数存取(如果存在)是用于报告控制。依赖模型行为可忽略DC控制字段736的值,且因此不使用该值作为存储报告群组的原因。
IC字段734为4位的无正负号的整数,其值指明与指令提取高速缓存未命中相关联的高速缓存等待层级。即,样本指令的提取遭遇指令提取高速缓存未命中。对于IC字段734及DC控制字段736两者而言,高速缓存等待层级为特定高速缓存层级存取与进行观测的处理器的距离的抽象化。等待层级取决于处理器与主存储器之间的嵌套高速缓存层级的量与在多个处理器之间共用这些高速缓存层级的方式的组合。较大等待层级通常对应于消耗较多时间的存取。IC字段734及DC控制字段736中的值可被视为高速缓存等待层级的零原点识别。举例而言,值零对应于L1高速缓冲存储器(即,最接近处理器的高速缓冲存储器)。值一因此为下一层高速缓冲存储器,其可被称为L2高速缓冲存储器,或甚至L1.5高速缓冲存储器(在一些机器中)。值2-15指明额外高速缓存等待层的逻辑渐进,直至达到主存储器,但不包括主存储器本身。一般而言,高速缓冲存储器结构不会深达十五层。因此,IC字段734及DC控制字段736中的值15被解译为特殊情况,其分别且无关于高速缓存等待层级地意味:并未出于产生报告群组的存储的目的而识别出指令提取或数据存取的高速缓存未命中。除非被另一运行时间检测控制禁止,否则尝试存储表示样本指令的报告群组,该样本指令的提取被识别在数值上大于或等于由IC字段734的值指明的层级的高速缓存等待层级处未命中。用于指令提取的高速缓冲存储器结构及高速缓存等待层级是依赖模型的。依赖模型行为可忽略IC字段734的值,且因此不使用该值作为存储报告群组的原因。
高速缓存等待层级更动控制报告控制位732(F位)是用于非分支指令且用于分支预测控制。当运行时间检测控制中的F位732为零时,检查运行时间检测控制的高速缓存报告控制(IC字段734及DC控制字段736)且根据其经定义功能来加以使用。检查运行时间检测控制的分支预测控制(BPxn722、BPxt 724、BPti 726及BPni 728位)且根据其经定义功能来加以使用。当F位732为1时,这些相同控制被忽略且报告群组被存储,除非被另一控制禁止。
数据高速缓存未命中控制位730(D位)指示报告群组是否将被存储。如果D位730为1,则可或可不将额外类型记录置于报告群组的含有关于样本指令的依赖模型数据的额外区段中。
MRIC指令包括分支预测(BP)报告控制(BPxn 722、BPxt 724、BPti 726及BPni728)。如果运行时间检测控制中的BP报告控制位为零,则不检查相应条件。如果BP报告控制位为1且相应分支预测条件存在,则报告群组被存储。
BPxn位722在为1时启用对分支预测信息的检查。因此,如果样本分支被错误地预测为经采纳而实际上未被采纳,则报告群组被存储。
BPxt位724在为1时启用对分支预测信息的检查。因此,如果样本分支被错误地预测为未被采纳而实际上经采纳,则报告群组被存储。
BPti位726在为1时启用对分支预测信息的检查。因此,如果样本分支被正确地预测为经采纳且实际上被采纳,但分支目标被错误地预测,则报告群组被存储。
BPni位728在为1时启用对分支预测信息的检查。因此,如果样本分支被正确地预测为未被采纳且实际上未被采纳,且分支目标被错误地预测,则报告群组被存储。
事务执行模式记录位720(X位)的启用控制控制着对事务执行模式中止记录的收集。当运行时间检测控制中的X位720为零时,不收集事务执行模式中止记录。当X位720为1时,收集事务执行模式中止记录且将记录置于图5的收集缓冲器508中。如果模型未被安装有事务执行设施,则忽略X位720。
RIEMIT指令控制位718(E位)控制RIEMIT指令的执行。当在运行时间检测经启用时运行时间检测控制中的E位718为零或被忽略且当作零来对待时,RIEMIT执行无操作(no-operation)。当E位718为1且未被以其他方式忽略时,RIEMIT经启用以执行其经定义功能。
J位746在为零时指定:不管掩码值如何,条件分支(BC)指令在其他类型分支类别中。如果J位746为1,则指定掩码15的BC指令在返回类型分支类别中。当BC指令指定掩码1-14时,其不受J位746影响且始终在其他类型分支类别中。当在返回类型分支类别中时,R位716控制至图5的收集缓冲器508中的包括。当在其他类型分支类别中时,B位748控制至收集缓冲器508中的包括。其他类型分支类别也可被指示为传送类型分支类别。
指令地址码位714(C位)控制调用类型分支的启用。如果运行时间检测控制中的C位714为1且指令为调用类型分支,则收集缓冲器508被更新。如果对调用类型分支及返回类型分支两者的依赖模型检测被组合,则C位714对两个类型起作用,且R位716无效。
R位716为返回类型分支的启用控制。如果运行时间检测控制中的R位716为1且指令为返回类型分支,则收集缓冲器508被更新。
B位748为对除了调用类型分支及返回类型分支以外的分支的启用控制。如果运行时间检测控制中的B位748为1且指令为由运行时间检测识别的其他类型分支,则收集缓冲器508被更新。
最大地址已超出位712(MAE位)在经设置为1时指示已存储了具有经设置为1的C位714的一个或多个报告群组。一旦MAE位712经设置为1,继续运行时间检测的执行不会将该位设置回至零。将MAE位712指定为零的LRIC指令或MRIC指令的执行会将MAE位712设置为零。
运行时间检测下一个(RINEXT)控制位710(N位)控制着对运行时间检测下一个指令(其控制样本指令的执行)的启用。当运行时间检测控制中的N位710为零或被忽略且当作零来对待时,RINEXT执行无操作。当N位710为1且未被以其他方式忽略时,RINEXT被启用以执行其经定义功能。
模式字段708(M字段)为4位的无正负号的整数,其在运行时间检测控制中的值指定用于运行时间检测控制的取样模式。所支持的取样模式可包括基于对CPU循环进行计数、对指令进行计数的取样,或可回应于诸如RINEXT的样本指令而定向至样本。
报告群组大小字段744(RGS)为3位的无正负号的整数,其值指定报告群组的记录的数目(RRG)。报告群组中的记录的数目可从两个记录(包括开始/时间戳记录及指令最后记录)变化至多达256个记录。在实施例中,上限可为依赖模型的。置于报告群组中的16字节记录的数目为2(RGS+1)
主要CPU能力抑制控制位738(Y位)及次要CPU能力抑制控制位739(Z位)被共同称为抑制控制。对报告群组的存储的抑制意味着不执行存储尝试。当配置中的所有CPU的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为1且Z位739为零时,在CPU(例如,处理器106)以主要CPU能力操作的情况下发生抑制。当Y位738及Z位739均为1时,发生抑制。
图7的以上字段及位是字段的放置及命名的示例,且在本文中为清楚起见而提供。将理解,在其他实施例中,可仅使用字段的子集,字段可呈任何次序或在任何位置中,和/或可用不同名称来表示。
当运行时间检测经安装且启用时,可在收集缓冲器508中捕获许多事件及数据。收集缓冲器508被用以捕获记录的集合,记录的内容报告在程序执行期间由处理器106识别的事件。示例为:一个或多个采纳分支的执行,事务执行中止事件,高速缓存未命中,及运行时间检测发出指令的操作数。IC控制字段734及DC控制字段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中所描绘的倒数计数(count down)。在计数模式的所有情况下,在样本指令的最后一个操作单元完成之后发生报告(如果适当)。
在导向取样模式中,当N位710为1且RINEXT指令被成功执行时,导向取样发生。样本指令为RINEXT指令的后的下一顺序指令(NSI)。如果下一顺序指令为执行类型指令,则样本指令为该执行类型指令的目标指令。当处于循环计数或指令技术模式中时,可发生导向取样。计数取样结合导向取样及其所导致动作中的任一个继续且不另外受影响,以下情况除外:如果根据计数取样确定的样本指令与由导向取样确定的指令相同,则不存储两个报告群组。
不管取样模式如何,当样本指令是由RINEXT指令的执行识别时,存储报告群组。然而,运行时间检测控制Y 738、Z 739、Qs 614及Ps 612继续有效。
循环计数及指令计数取样各自基于内部系统事件及例外条件而确定会经受一定量的可变性的适当间隔。倒数计数(countdown)在运行时间检测从停用转变至启用时开始。视可插入于RINEXT与NSI的完成之间的任何事件而定,导向取样经受较少量的可变性。值得注意,中断可导致被视为NSI的指令不再为NSI。
与模式无关,取样识别样本指令。一旦样本指令经识别,收集便在该样本指令的执行完成时停止,且开始报告。接着应用管理报告的各种报告控制。在使报告群组的存储在搁置中时,收集继续。
当不在事务执行模式中时,在样本指令的执行完成时,报告群组的存储变为在搁置中。当在事务执行模式中时,在样本指令的执行完成时,报告群组的存储被延后,直至事务结束,且接着变为在搁置中。当报告群组的存储被延后或在搁置中时,如果识别出以下中断中的任一个,则报告群组可被清除:1)程序中断;2)紧急机器检查中断;3)重新启动中断;及4)监督调用中断。
任何搁置中的I/O、外部及可抑制的机器检查中断保持搁置,直至报告群组已被存储或运行时间检测控制确定报告群将不被存储。
每一模式可或可不允许报告控制的不同集合。当取样模式为指令计数或循环计数,但导向取样也被使用时,可能通过多个取样方法来识别出相同样本指令。当此情况发生,且待使用的报告控制根据取样模式而不同时,应用与导向取样相关联的报告控制。
如上所述,当在程序执行期间启用运行时间检测时,在收集缓冲器508中在处理器106内收集运行时间检测数据。在一个实施例中,收集缓冲器508是处理器106的内部缓冲器,其用于存储所收集的最新的记录。当检测到样本触发点时,将记录作为被写入到程序缓冲器522的报告群组的一部分从收集缓冲器508向程序缓冲器522复制。在一个实施例中,从收集缓冲器508以非破坏性的方式复制记录。
收集缓冲器508可被称为“硬件收集缓冲器”,因为收集缓冲器508位于处理器中,且在实施例中经实施为表示给定事件的指令地址802及事件后设数据804的寄存器对的阵列。在实施例中,指令数据缓冲器也由寄存器对的阵列来实施。事件的示例为采纳分支,针对该采纳分支,寄存器对可保存该分支的指令地址,且该后设数据可保存分支的目标以及关于分支的历史行为的信息。在实施例中,寄存器对经排序,且随着事件出现于指令流中而被顺序地更新。维持计数器以指示阵列中的最近经更新输入项的索引。在实施例中,收集缓冲器508为循环缓冲器,且当收集缓冲器508被填满时,下一事件覆写阵列中的第一输入项,且在发生后续事件时阵列的寄存器对的顺序更新重新开始。因而,假设阵列CB[0]至CB[N-l]及指示最新更新索引的计数器i,所捕获的事件的追踪可由序列CB[i]、CB[i-l]、……、CB[1]、CB[0]、CB[N-l]、CB[N-2]、……、CB[i+l]来表示。在另一实施例中,使用两个指针:指向缓冲器中的最旧输入项的头指针,及指向缓冲器中的最新输入项的尾/当前指针。
在收集缓冲器508中顺序地捕获表示处理器106在任何给定执行点处的状态的事件。将收集缓冲器508用以捕获记录的集合,记录的内容报告在程序执行期间由处理器106识别的事件(例如,一个或多个采纳分支的执行,事务执行中止事件,RIEMIT指令的操作数等)。在实施例中,经识别的事件视图7中所展示的RICCB的内容而定。所展示的收集缓冲器508的实施例中的输入项包括事件指令地址及其他相关的事件后设数据。事件后设数据804的示例包括(但不限于):采纳分支的指令地址及该分支的目标(包括关于分支的历史行为的某一信息);RIEMIT指令的指令地址及各别寄存器值;及事务中止指令的地址及各别事务复原进入点。
图8中所展示的收集缓冲器508的实施例能够存储多达32个输入项(即,关于32个事件的信息),其中由64个位(例如,位0:63)指定每一指令地址802且由64个位(例如,位64:127)指定事件后设数据804。收集缓冲器的大小(RCB)为依赖模型计数,其表示记录的数目。展示的收集缓冲器508的实施例中,收集缓冲器的字节大小为16字节记录大小的倍数。在实施例中,收集缓冲器的大小为大于或等于模型的最大报告群组的计数(RRG)与报告群组中的未从收集缓冲器获取的记录的计数(RNC)之间的差的记录数目。因此,在实施例中,收集缓冲器的大小经表示为:RCB≥(RRG-RNC)。
在实施例中,收集缓冲器508及指令数据缓冲器(如果使用指令数据缓冲器)的内容被清除或以其他方式受以下事件影响:(1)中断;(2)开启及关闭运行时间检测设施的PSW位(例如,位24)从1变至0;及(3)当运行时间检测设施处于事务执行模式中时识别出样本指令时(在此情况下,对收集数据缓冲器508及指令数据缓冲器的进一步更新停止且在事务结束时继续),此时,报告群组的存储在搁置中且收集缓冲器508及指令数据缓冲器被清除。
在诸如在图1B中所示的模拟主计算机系统的一个实施例中,使用寄存器和/或存储器来实现收集缓冲器508。在这个实施例中,也使用寄存器和/或存储器来实现如果存在的选用指令数据缓冲器。
在实施例中,额外能力可影响数据收集,且可看作提供额外数据收集点,而不实质上干扰先前所描绘的正常指令计数或循环计数取样。这些能力包括RIEMIT指令的执行,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和页脚区段808。
首标部分802可以包括开始记录或时间戳记录,用于存储状态、跟踪和/或定时信息。对于在程序缓冲器中存储的第一报告群组在首标部分802中存储开始记录(即,当RCA706等于ROA 702时)。在一个实施例中,开始记录包括:记录类型字段“02”;报告群组数目(NRG)字段,用于指示在程序缓冲器中当前存储了多少报告群组;RGS字段,用于指示报告群组的大小;停止(S)字段,用于指示程序缓冲器522是否满了;暂停(H)字段,用于指示是否暂停了运行时间检测;以及,日时(TOD)时钟时间段,用于指示何时写入开始记录。在一个实施例中,在开始记录中的字段的至少一个子集出自RI控制块(例如,RICCB)。时间戳记录的一个实施例具有记录类型“03”,并且包括用于指示何时存储记录的TOD时钟字段。
报告群组的主体部分804可以包括用于从收集缓冲器508样本的事件和信息的多种记录。事件和信息可以表示例如由发送指令捕获的状态信息、事务执行异常终止、调用、返回、分支和填充。
在一个实施例中,在成功地执行RIEMIT指令时,在收集缓冲器508中建立和存储发送记录。发送记录的一个实施例包括:记录类型字段“10”;指令地址码字段,用于指示在发送记录中如何表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,64、31或24比特)来变化,并且如果RIEMIT是执行类型指令的目标则包含RIEMIT指令或执行类型指令的指令地址,以及,发送数据字段,用于存储来自由RIEMIT指令指定的一般寄存器的数据。
在一个实施例中,通过隐含的异常终止或通过事务异常终止指令的执行来建立和在收集缓冲器508中存储事务执行模式异常终止记录。异常终止记录的一个实施例包括:记录类型字段“11”;指令地址码字段;指令地址字段,其根据编址模式来变化,并且如果异常终止指令是执行类型指令的目标则包含异常终止指令或执行类型指令的指令地址,以及,用于与异常终止相关联的任何模型相关数据的字段。
在一个实施例中,通过调用类型分支指令的执行来建立和存储调用记录,该调用类型分支指令例如是:当R2字段非零时的BRANCH AND SAVE(分支和存储)(BASR);BRANCHAND SAVE(分支和存储)(BAS);BRANCH RELATIVE AND SAVE LONG;BRANCH RELATIVE ANDSAVE;当R2字段是非零时的BRANCH AND LINK(BALR);BRANCH AND LINK(BAL);以及,当R2字段是非零时的BRANCH AND SAVE AND SET MODE。调用记录的一个实施例包括:记录类型字段“12”;指令地址码字段;指令地址字段,其根据编址模式来变化,并且如果分支指令是执行类型指令的目标则包含分支指令或执行类型指令的指令地址,以及,良好作为的字段,用于指示是否正确地预测了分支;以及,目标地址字段,其包含分支目标地址(也被称为“被调用位置”)。
返回记录和传送记录可以具有与调用记录相同的格式。在一个实施例中,返回记录具有记录类型字段“13”并且通过诸如当R2字段非零时的BRANCH ON CONDITION(BCR)的返回类型分支指令的执行而被建立。对于返回记录,如果分支是执行类型指令的目标,则指令地址字段包含分支指令或执行类型指令的地址,并且目标地址字段包含返回位置。
在实施例中,传送记录具有为“14”的记录类型字段且是通过诸如以下各者的返回类型分支指令的执行而创建:a.当R2字段为非零且掩码在1-14的范围中时,BRANCH ONCONDITION(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.BRANCH ON INDEX LOW OR EQUAL(BXLE,BXLEG);f.BRANCH RELATIVE ON CONDITION(BRC);g.BRANCH RELATIVE ON CONDITIONLONG(BRCL);h.BRANCH RELATIVE ON COUNT(BRCT,BRCTG);i.BRANCH RELATIVE ON COUNT HIGH(BRCTH);j.BRANCH RELATIVE ONINDEX HIGH(BRXH,BRXHG);k.BRANCH RELATIVE ON INDEX LOW OREQUAL(BRXLE,BRXLG);l.COMPARE AND BRANCH(CRB,CGRB);m.COMPARE AND BRANCH RELATIVE(CRJ,CGRJ);n.COMPARE IMMEDIATE AND BRANCH(CIB,CGIB);o.COMPARE IMMEDIATE AND BRANCHRELATIVE(CIJ,CGIJ);p.COMPARE LOGICAL AND BRANCH(CLRB,CLGRB);q.COMPARE LOGICALAND BRANCH RELATIVE(CLRJ,CLGRJ);r.COMPARE LOGICAL IMMEDIATE ANDBRANCH(CLIB,CLGIB);及s.COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ,CLGIJ)。传送记录是在分支经采纳时创建。对于传送记录,指令地址字段含有分支指令或执行类型指令(如果分支为执行类型指令的目标)的地址,且目标地址字段含有返回位置。
当收集缓冲器508中的有效记录的数目不足以填满具有当前RGS的报告群组时,在报告群组中使用填充记录。填充记录的实施例包括“00”的记录类型字段,其指示该记录为填充记录,且剩余字节是未定义的。
额外记录区段(在存在时)可含有依赖模型记录。在实施例中,除了记录类型经设置为“01”以指示该记录为额外记录且该额外记录的剩余字节含有依赖模型数据之外,额外记录的格式类似于填充记录。
页脚区段808可以包括包含关于样本指令的执行的信息的指令记录。当对于样本指令存储报告群组时,建立指令记录。指令记录的一个实施例包括:记录类型字段“04”、指令地址码字段,用于指示如何在指令记录中表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,64、31或24比特)来变化,并且如果样本指令是执行类型指令的目标则包含样本指令或执行类型指令的指令地址,以及,指令数据缓冲器(IDB)字段,其包含从IDB收集的任何模型相关数据。
图9描绘了当诸如报告群组800的报告群组被存储到程序缓冲器522并且ROA 702等于RCA 706时建立的开始记录900的示例。当在第一报告群组后的报告群组被存储到程序缓冲器522时更新开始记录900。开始记录是第一报告群组的第一记录。图9的示例开始记录900包括用于表示记录识别为开始记录的记录标识符902。报告群组的数目(NRG)904是自从LRIC或MRIC指令的最近成功执行起占用的报告群组空间的计数。版本906指示在运行时间检测设施上运行的CPU的功能的工程改变水平。也被称为CPU版本或处理器版本906的版本906可以在任何记录之间改变,虽然它一般被认为不频繁的事件。当在版本上的改变出现时,识别暂停条件,并且不存储包括改变的版本代码的、即将要存储的报告群组。
从运行时间检测控制RGS 744获取报告群组大小(RGS)908。RGS 908表示在程序缓冲器522中的所有报告群组的大小,该报告群组包括包含开始记录900的第一报告群组。当指令流被迁移到在接收机器上的处理器时,可以在接收机器上将RGS 908与上限作比较,以验证RGS 908不超过作为模型相关的极限的上限。如果超过上限,则出现暂停条件以防止超过向在接收机器上的程序缓冲器522分配的空间的界限。
当程序缓冲器满的条件存在时,运行时间检测停止(S比特)910被从0改变为1。S比特910指示已经因为识别到程序缓冲器满的条件导致运行时间检测。
能力(T字段)912当0时指示,报告群组表示在其主要CPU能力下运行的CPU上捕获的样本。当T字段912是1时,报告群组表示在其次要CPU能力下运行的CPU上捕获的样本。
当日时间时钟916可以是当原始存储包含开始记录900的报告群组时存储的当前当日时间时钟。处理器106可以具有一个或多个可用的时钟,从其可以确定和存储当日时间时钟916值。
暂停(H比特)914当为1时指示,已经因为除了缓冲器满的条件之外的原因导致暂停了运行时间检测。当识别运行时间检测暂停条件时,下面的步骤适用:
1.在开始记录900中的H比特914被设置为1。
2.通过将G比特620设置为1来使得运行时间检测暂停的中断待决。
运行时间检测暂停的中断保持待决,直到它被清除,。它通过下面的部分的任何一个而被清除:
-成功地执行将G比特620指定为0的LRIC指令。
-运行时间检测暂停中断的提供。
-CPU复位。
-如果加载等于ROA 702的RCA 706,则MRIC指令的成功执行隐含地
将G比特620设置为0。这也是运行时间检测暂停条件的清除。
在运行时间检测暂停条件存在的同时,下面的结果适用:
1.RINEXT的执行不执行操作。
2.RIEMIT的执行不执行操作。
3.是否出现间隔的另外的递减可以是模型相关的。如果它出现,则在被递减到0时它被重新初始化为SF 740也是模型相关的。如果间隔被递减为0,则不识别样本指令。
4.不存储另外的报告群组。
5.RCA 706不前进。
6.不影响其他运行时间检测指令的执行。
如果在LRIC的执行期间将G比特620作为1加载,则使得运行时间检测暂停的中断待决。当MRIC指定ROA 702等于RCA 706时,G比特620被隐含地设置为0。如果在运行时间检测控制中的U比特622是0,则禁止运行时间检测暂停中断。
在接收到运行时间检测暂停中断后,如果在重新启用运行时间检测之前未清除运行时间检测暂停条件,则当识别了下一个样本指令时再一次使得中断待决。当加载或修改运行时间检测控制时复位运行时间检测暂停条件,使得将重新建立开始记录。当在运行时间检测控制中的G比特620被从0改变为1时,H比特914被设置为1,并且RCA 706不前进。
除了用于指示暂停条件的G比特620的定义之外,选用地可获得允许软件建立其运行时间环境以触发软件中断。这被定义为U比特622。当G比特620和U比特622都是1时,然后提供运行时间检测外部警告中断。当在当前运行时间检测控制中的L比特624和U比特622都是1时,识别运行时间检测警告事件。当在当前运行时间检测控制中的G比特620和U比特622都是1时,识别运行时间检测警告事件。
图10描绘了时间戳记录1000的示例。当诸如报告群组800的报告群组被存储到程序缓冲器522并且ROA 702不等于RCA 706时,建立时间戳记录1000。时间戳记录1000被存储为除了第一报告群组的每一个报告群组的第一记录。
版本1006指示运行运行时间检测设施的CPU的功能的工程改变水平。也被称为CPU版本或处理器版本1006的版本1006是处理器版本的当前实例,并且如果程序或指令流已经诸如在图5的处理器106和106a之间的在处理器之间移位。图6的处理器106a表示支持运行时间检测的处理器106的另一个实例。处理器106a可以位于与作为系统500的一部分的处理器106物理上不同的机器中。因为版本的改变导致暂停,所以不在程序缓冲器522中记录与相对于版本906的版本1006的在值上的改变相关联的时间戳记录1000。
能力(T字段)1012当0时指示报告群组表示在其主要CPU能力下运行的CPU上捕捉的样本。当T字段912是1时,报告群组表示在其次要CPU能力下运行的CPU上捕获的样本。
当日时间时钟1016可以是当原始存储包含时间戳记录1000时存储的当前当日时间时钟。
图11描绘了用于使用运行时间检测来监控处理器的处理器特性信息的处理流1100。初始,图5的运行时间检测模块506和寄存器510可以被配置为使用LRIC指令来支持样本,以加载如上所述的图6和7的控制块600和700。抑制控制Y比特738和Z比特739也以被设置来基于一个或多个CPU能力来控制运行时间检测报告群组存储抑制。一旦配置和启用了运行时间检测控制,则可以在收集缓冲器508中收集诸如事件和数据的信息。或者周期地或者如所引导,达到触发报告群组向程序缓冲器522内的存储的样本指令,该程序缓冲器522也被称为运行时间检测程序缓冲器522。
在块1102处,处理器106执行可以是来自运行时间存储器504的问题状态程序或管理状态程序的指令流。
在块1104处,处理器106检测执行的处理器的运行时间检测样本点。在块1106处,运行时间检测样本点导致在运行时间检测程序缓冲器522中的报告群组的存储。记录的运行时间检测报告群组包括与处理器106相关联的处理器特性信息。来自系统信息和来自收集缓冲器508的记录的群组合可以被合并以向运行时间检测程序缓冲器522存储诸如图8的报告群组800的报告群组。在成功地在运行时间检测程序缓冲器522中存储报告群组后,在开始记录900的RGS字段908中递增所存储的报告群组的数目。
在块1108处,检测执行的处理器的随后运行时间运行时间检测样本点。随后的运行时间检测样本点可以在将指令流从原始处理器106向在不同的机器上的处理器106a迁移后可能出现,该不同的机器具有处理器106a,该处理器106a具有与不同处理器106不同的一个或多个处理器特性。可以通过系统信息块或其他手段来读取当前系统和处理器特性的值。
在块1110处,查看当前处理器特性信息,然后将随后的报告群组存储在运行时间检测程序缓冲器522中。参考当前的处理器特性信息可以包括确定当前CPU能力,其中,CPU能力是处理器运行速度的指示。查看当前处理器特性信息也或替代地可以包括查看当前处理器版本和一个或多个模型相关的极限。
在块1112处,执行确定是否在运行时间检测程序缓冲器522中存储随后的报告群组,抑制随后的报告群组在运行时间检测程序缓冲器522中的存储或暂停运行时间检测。多个条件可以触发抑制或暂停,如在此进一步所述。
在运行时间检测程序缓冲器522中存储随后的报告群组之前,可以如参考图12所述执行抑制查看1200。在块1202处,抑制查看开始。在块1204处,如果在诸如处理器106和106a的配置中的CPU没有不同的CPU能力,即,处理器106和106a以相同的速度运行,则在块1206处不出现抑制。否则,在块1208、1210、1212和1214中执行一系列查看。注意可以省略在块1208-1214中的查看之一,因为一旦已经执行了该四个查看的三个,则最后的查看是固有的。一旦已经确定CPU的CPU能力与另一个CPU的CPU能力不同,例如,处理器106和106a具有不同的CPU能力,则抑制控制生效。例如,处理器106可以在主要CPU能力下运行,而处理器106a在次要CPU能力下运行。主和次要CPU能力是不同的运行速度。
在块1208处,如果Y比特738和Z比特739都是0,则在块1206处抑制不出现。因此,即使处理器106和106a具有不同的CPU能力,随后的报告群组被存储到程序缓冲器522,而与运行时间检测是否在处理器106或106a上运行无关。T字段912和1012指示用于相关联的报告群组的CPU能力。
在块1210处,如果Y比特738是0并且Z比特739是1,则如果在块1216处诸如处理器106的CPU在次要CPU能力下运行,那么抑制出现。在该情况下,其中T字段912或10121的报告群组将不被存储到程序缓冲器522。然而,其中T字段912或1012是0的报告群组将被存储到程序缓冲器522。
在块1212处,如果Y比特738是1并且Z比特739是0,则如果在块1218处诸如处理器106的CPU在主要CPU能力下运行,那么抑制出现。在该情况下,其中T字段912或1012是0的报告群组将不被存储到程序缓冲器522。然而,其中T字段912或1012是1的报告群组将被存储到程序缓冲器522。
在块1214处,如果Y比特738和Z比特739都是1,则在块1220处抑制出现。在这个示例中,在Y比特738和Z比特739都是1的同时,不向程序缓冲器522存储报告群组。
返回到图11的块1110和1112的描绘,查看当前处理器特性信息也可以包括:确定当前处理器版本,并且将当前处理器版本与在报告群组中记录的处理器特性信息中的先前记录的处理器版本作比较。该先前记录的处理器版本基于何时建立报告群组的开始记录900。基于先前记录的处理器版本来设置在开始记录900中的版本字段906。可以基于检测到在先前记录的处理器版本和当前处理器版本之间在值上的改变而暂停运行时间检测。基于暂停的运行时间检测来设置在开始记录900中的H比特914。如果在处理器版本上没有改变,则基于当前处理器版本来设置在时间戳记录1000中的版本字段1006。
基于所检测到的在处理器版本上的改变而设置在运行时间检测控制中的暂停中断G比特620。基于所检测的在处理器版本上的改变而暂停在运行时间检测程序缓冲器522中的随后的报告群组的存储。可以读取运行时间检测控制的暂停中断启用控制U比特622。基于被启用的暂停中断启用控制U比特622和被设置的暂停中断G比特620而产生运行时间检测警告。
可以导致暂停运行时间检测的另一个事件与开始记录900的RGS字段908相关。基于确定指令流已经迁移到诸如处理器106a的第二处理器,可以从在RGS字段908中的报告群组的处理器特性信息读取报告群组大小。将该报告群组大小与第二处理器的上限作比较,并且,基于确定该报告群组大小超过第二处理器的上限而暂停运行时间检测。这防止了当报告群组大小大于可以在接收程序缓冲器522的迁移实例的处理器上支持的模型相关的极限时防止超出程序缓冲器522。可以将其他模型相关的极限的违反定义为不兼容的处理器特性,该不兼容的处理器特性当被检测到时导致运行时间检测的暂停。
如上所述,可以以计算机实现的处理和用于设施那些处理的设备的形式来体现实施例。一个实施例可以包括在计算机可读/可用介质1302上如图13中所述的计算机程序产品1300,该计算机可读/可用介质1302具有计算机程序代码逻辑1304,该计算机程序代码逻辑1304包含在作为制造品的有形介质中包含的指令。用于计算机可用介质1302的示例性制造品可以包括软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)快闪驱动器或任何其他计算机可读存储介质,其中,当向计算机内加载计算机程序代码逻辑1304并且其被计算机执行时,计算机变为用于实施本发明的设备。实施例包括计算机程序代码逻1304,例如,不论其是否被存储在存储介质中、被加载到计算机内和/或被计算机执行或者通过某种传输介质被发送,该通过某种传输介质例如是通过电子布线或电缆、通过光纤或经由电磁辐射,其中,当计算机程序代码逻辑1304被加载到计算机内并且被计算机执行时,计算机变为用于实施本发明的设备。当在通用微处理器上被实现时,计算机程序代码逻辑1304分段配置微处理器以建立特定逻辑电路。
技术效果和益处包括使用运行时间检测监控处理器的处理器特性信息。跟踪和记录诸如处理器速度、处理器版本和使用运行时间检测监控的处理器的模型相关的极限的处理器特性信息的值使得能够检测在结果产生的报告数据的分析中的可能不一致或错误。对于处理器特性信息的改变的检测可以触发行为,诸如报告的抑制、暂停运行时间检测和经由中断的通知。也可以在使用模拟例程的模拟或虚拟处理器中包括对于使用运行时间检测来监控处理器的处理器特性信息的支持。
本文中所使用的术语仅用于描述特定实施例的目的且不欲限制本发明。如本文中所使用,除非上下文另有清晰指示,否则单数形式“一”及“该”意欲也包括复数形式。将进一步理解,术语“包含”在用于本说明书中时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下权利要求中的所有构件或步骤加功能元件的相应结构、材料、动作及等效物意欲包括用于连同如具体所主张的其他所主张元件一起执行功能的任何结构、材料或动作。已出于说明及描述目的呈现了本发明的描述,但该描述不欲为详尽的或限于呈所揭示的形式的本发明。在不脱离本发明的范畴及精神的情况下,许多修改及变化对于一般本领域普通技术人员将显而易见。选择并描述实施例以便最佳地解释本发明的原理及实际应用,且使其他一般本领域普通技术人员能够理解本发明的各种实施例,实施例具有适合于所设想的特定用途的各种修改。
如本领域普通技术人员将了解,本发明的方面可体现为系统、方法或计算机程序产品。相应地,本发明的方面可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件方面与硬件方面的实施例的形式,实施例在本文中都可通称为“电路”、“模块”或“系统”。此外,本发明的方面可采用体现于一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读程序代码。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可为(例如,但不限于)电子、磁性、光学、电磁、红外线或半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读存储介质的更特定示例(非详尽清单)将包括以下各者:具有一或多条导线的电连接件、携带型计算机磁片、硬碟、随机存取存储器(RAM)、唯读存储器(ROM)、可抹除可程序化唯读存储器(EPROM或闪速存储器)、光纤、携带型致密盘唯读存储器(CD-ROM)、光学存储器件、磁性存储器件或前述各者的任何合适组合。在本文件的上下文中,计算机可读存储介质可为可含有或存储供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件使用的程序的任何有形介质。
计算机可读信号介质可包括传播的数据信号,该传播的数据信号具有体现于其中(例如,在基频中或作为载波的部分)的计算机可读程序代码。此传播信号可采用多种形式中的任一个,包括(但不限于)电磁、光学或其任何合适组合。计算机可读信号介质可为并非计算机可读存储介质且可传达、传播或输送供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件使用的程序的任何计算机可读介质。
可使用任何适当介质来传输体现于计算机可读介质上的程序代码,适当介质包括(但不限于)无线、有线、光纤缆线、RF等或前述各者的任何合适组合。
可以一或多种程序设计语言的任何组合来撰写用于执行本发明的方面的操作的计算机程序代码,该一或多种程序设计语言包括物件导向式程序设计语言(诸如,Java、Smalltalk、C++或其类似者)及习知程序性程序设计语言(诸如,“C”程序设计语言或类似程序设计语言)。程序代码可完全在用户的计算机上执行,部分地在用户的计算机上执行,作为独立套装软件而执行,部分地在用户的计算机上执行且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在完全在远程计算机或服务器上执行的情形中,远程计算机可经由任何类型的网络(包括局域网(LAN)或广域网络(WAN))连接至用户的计算机,或可连接至外部计算机(例如,使用因特网服务提供者,经由因特网)。
上文中参考根据本发明的实施例的方法、装置(系统)及计算机程序产品的流程图说明和/或示意图来描述本发明的方面。将理解,可通过计算机程序指令来实施流程图说明和/或方块图中的每一块及流程图说明和/或方块图中的块的组合。可将这些计算机程序指令提供至通用计算机、专用计算机或其他可程序化数据处理装置的处理器以产生一机器,以使得经由该计算机或其他可程序化数据处理装置的处理器执行的指令产生用于实施该或流程图和/或方块图块中所指定的功能/动作的构件。
也可将这些计算机程序指令存储在计算机可读介质中,其可指导计算机、其他可程序化数据处理装置或其他器件以特定方式发挥作用,使得存储在该计算机可读介质中的指令产生一制品,该制品包括实施该或流程图和/或方块图块中所指定的功能/动作的指令。
也可将计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器件上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生计算机实施的程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施该或流程图和/或方块图块中所指定的功能/动作的程序。
如上所述,实施例可以计算机实施的程序及用于实践那些程序的装置的形式体现。在多个实施例中,本发明系体现于由一个或多个网络元件执行的计算机程序代码中。实施例包括在计算机可用介质上的计算机程序产品,该计算机可用介质具有含有体现于作为制品的有形介质中的指令的计算机程序代码逻辑。计算机可用介质的示例性制品可包括软碟、CD-ROM、硬驱动器、通用流总线(USB)随身碟或任何其他计算机可读存储介质,其中,当计算机程序代码逻辑被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。实施例包括计算机程序代码逻辑,该计算机程序代码逻辑(例如)存储在存储介质中、载入至计算机中和/或由计算机执行,或经由某一传输介质(诸如,经由电布线或缆线、经由光纤或经由电磁辐射)进行传输,其中,当计算机程序代码逻辑被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。当实施于一通用微处理器上时,计算机程序代码逻辑的多个段配置该微处理器以创建特定逻辑电路。
图中的流程图及方块图说明根据本发明的各种实施例的系统、方法及计算机程序产品的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一块可表示程序代码的模块、段或部分,其包含用于实施指定逻辑功能的一个或多个可执行指令。也应注意,在一些替代实施中,块中所提到的功能可不以诸图中所提到的次序发生。举例而言,视所涉及的功能性而定,连续展示的两个块实际上可实质上同时执行,或块有时可以相反次序执行。也应注意,可通过执行指定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实施方块图和/或流程图说明的每一块及方块图和/或流程图说明中的块的组合。

Claims (18)

1.一种用于使用运行时间检测来监控处理器的处理器特性信息的方法,所述方法包括:
在处理器上执行指令流;
检测在所述处理器上的所述执行的指令流的运行时间检测样本点;
基于所述运行时间检测样本点来在运行时间检测程序缓冲器中存储报告群组,所述报告群组包括与所述处理器相关联的处理器特性信息;
检测所述执行的指令流的随后的运行时间检测样本点;
基于所述随后的运行时间检测样本点,在所述运行时间检测程序缓冲器中存储随后的报告群组之前,查看当前处理器特性信息;
确定在当前配置中的处理器是否被配置为使用公共CPU能力运行;并且
基于确定在所述当前配置中的所述处理器之间在CPU能力上存在差别:
读取运行时间检测控制的抑制控制;并且
基于用于指示要抑制用于具有对应的CPU能力的处理器的报告群组存储的所述抑制控制,抑制在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储。
2.根据权利要求1所述的方法,进一步包括:
基于所述当前处理器特性信息,确定是否执行下述部分之一:
在所述运行时间检测程序缓冲器中存储所述随后的报告群组;并且
暂停运行时间检测。
3.根据权利要求2所述的方法,其中,在所述运行时间检测程序缓冲器中存储所述随后的报告群组进一步包括:
基于所述当前的处理器特性信息,将当前CPU能力和当前处理器版本作为所述随后的报告群组的一部分存储。
4.根据权利要求1所述的方法,其中,所述抑制控制包括主要CPU能力抑制控制和次要CPU能力抑制控制,并且用于指示要抑制用于具有对应的CPU能力的处理器的报告群组存储的所述抑制控制进一步包括:
基于被设置的所述主要CPU能力抑制控制和用于指示所述处理器在主要CPU能力下运行的所述当前处理器特性信息,抑制在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储;并且
基于被设置的所述次要CPU能力抑制控制和用于指示所述处理器在所述次要CPU能力下运行的所述当前处理器特性信息,抑制在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储。
5.根据权利要求4所述的方法,其中,所述主要CPU能力和所述次要CPU能力代表不同的处理器运行速度。
6.根据权利要求2所述的方法,进一步包括:
确定当前处理器版本;
将所述当前处理器版本与在所述报告群组中记录的所述处理器特性信息中的先前记录的处理器版本作比较;并且
基于检测到在所述先前记录的处理器版本和所述当前处理器版本之间在值上的改变而暂停运行时间检测。
7.根据权利要求6所述的方法,进一步包括:
基于所检测的在处理器版本上的改变而设置在运行时间检测控制中的暂停的中断;并且
基于所述检测的在处理器版本上的改变而暂停在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储。
8.根据权利要求7所述的方法,进一步包括:
读取所述运行时间检测控制的暂停的中断启用控制;并且
基于被启用的所述暂停的中断启用控制和被设置的所述暂停的中断而生成运行时间检测警告。
9.根据权利要求1所述的方法,进一步包括:
确定所述指令流已经迁移到第二处理器;
从所述报告群组的所述处理器特性信息读取报告群组大小;
将所述报告群组大小与所述第二处理器的上限作比较;并且
基于确定所述报告群组大小超过所述第二处理器的所述上限来暂停运行时间检测。
10.一种用于使用运行时间检测来监控处理器的处理器特性信息的计算机系统,所述计算机系统包括:
存储器;以及
包括运行时间检测模块的处理器,所述运行时间检测模块被配置为执行一种方法,所述方法包括:
在处理器上执行指令流;
检测在所述处理器上的所述执行的指令流的运行时间检测样本点;
基于所述运行时间检测样本点来在运行时间检测程序缓冲器中存储报告群组,所述报告群组包括与所述处理器相关联的处理器特性信息;
检测所述执行的指令流的随后的运行时间检测样本点;
基于所述随后的运行时间检测样本点,在所述运行时间检测程序缓冲器中存储随后的报告群组之前,查看当前处理器特性信息;
确定在当前配置中的处理器是否被配置为使用公共CPU能力运行;并且
基于确定在所述当前配置中的所述处理器之间在CPU能力上存在差别:
读取运行时间检测控制的抑制控制;并且
基于用于指示要抑制用于具有对应的CPU能力的处理器的报告群组存储的所述抑制控制,抑制在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储。
11.根据权利要求10所述的计算机系统,进一步包括:
基于所述当前处理器特性信息,确定是否执行下述部分之一:
在所述运行时间检测程序缓冲器中存储所述随后的报告群组;并且
暂停运行时间检测。
12.根据权利要求11所述的计算机系统,其中,在所述运行时间检测程序缓冲器中存储所述随后的报告群组进一步包括:
基于所述当前的处理器特性信息,将当前CPU能力和当前处理器版本作为所述随后的报告群组的一部分存储。
13.根据权利要求10所述的计算机系统,其中,所述抑制控制包括主要CPU能力抑制控制和次要CPU能力抑制控制,并且用于指示要抑制用于具有对应的CPU能力的处理器的报告群组存储的所述抑制控制进一步包括:
基于被设置的所述主要CPU能力抑制控制和用于指示所述处理器在主要CPU能力下运行的所述当前处理器特性信息,抑制在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储;并且
基于被设置的所述次要CPU能力抑制控制和用于指示所述处理器在所述次要CPU能力下运行的所述当前处理器特性信息,抑制在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储。
14.根据权利要求13所述的计算机系统,其中,所述主要CPU能力和所述次要CPU能力代表不同的处理器运行速度。
15.根据权利要求11所述的计算机系统,进一步包括:
确定当前处理器版本;
将所述当前处理器版本与在所述报告群组中记录的所述处理器特性信息中的先前记录的处理器版本作比较;并且
基于检测到在所述先前记录的处理器版本和所述当前处理器版本之间在值上的改变而暂停运行时间检测。
16.根据权利要求15所述的计算机系统,进一步包括:
基于所检测的在处理器版本上的改变而设置在运行时间检测控制中的暂停的中断;并且
基于所述检测的在处理器版本上的改变而暂停在所述运行时间检测程序缓冲器中的所述随后的报告群组的存储。
17.根据权利要求16所述的计算机系统,进一步包括:
读取所述运行时间检测控制的暂停的中断启用控制;并且
基于被启用的所述暂停的中断启用控制和被设置的所述暂停的中断而传送层运行时间检测警告。
18.根据权利要求10所述的计算机系统,进一步包括:
确定所述指令流已经迁移到第二处理器;
从所述报告群组的所述处理器特性信息读取报告群组大小;
将所述报告群组大小与所述第二处理器的上限作比较;并且
基于确定所述报告群组大小超过所述第二处理器的所述上限来暂停运行时间检测。
CN201380014657.7A 2012-03-16 2013-02-22 处理器特性的运行时间检测监控 Active CN104364769B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/422,542 2012-03-16
US13/422,542 US9454462B2 (en) 2012-03-16 2012-03-16 Run-time instrumentation monitoring for processor characteristic changes
PCT/JP2013/001009 WO2013136679A1 (en) 2012-03-16 2013-02-22 Run-time instrumentation monitoring of processor characteristics

Publications (2)

Publication Number Publication Date
CN104364769A CN104364769A (zh) 2015-02-18
CN104364769B true CN104364769B (zh) 2017-02-22

Family

ID=49158814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380014657.7A Active CN104364769B (zh) 2012-03-16 2013-02-22 处理器特性的运行时间检测监控

Country Status (5)

Country Link
US (2) US9454462B2 (zh)
EP (1) EP2810167B1 (zh)
JP (1) JP6058012B2 (zh)
CN (1) CN104364769B (zh)
WO (1) WO2013136679A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9563599B2 (en) * 2013-11-04 2017-02-07 Lewis Rhodes Labs, Inc. Computing architecture for operating on sequential data
US9996387B2 (en) * 2013-11-04 2018-06-12 Lewis Rhodes Labs, Inc. Context switching for computing architecture operating on sequential data
US9442818B1 (en) 2014-01-21 2016-09-13 Dell Software Inc. System and method for dynamic data collection
US9519481B2 (en) 2014-06-27 2016-12-13 International Business Machines Corporation Branch synthetic generation across multiple microarchitecture generations
US9804951B2 (en) * 2014-10-08 2017-10-31 Signalfx, Inc. Quantization of data streams of instrumented software
US9760353B2 (en) * 2014-12-19 2017-09-12 Signalfx, Inc. Dynamically changing input data streams processed by data stream language programs
US10394692B2 (en) 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
US9524205B1 (en) * 2016-01-04 2016-12-20 International Business Machines Corporation Code fingerprint-based processor malfunction detection
US10496311B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
CN107274326A (zh) * 2017-07-23 2017-10-20 高华 检测与监督信息管理系统架构和程序设计的方法
US11803407B1 (en) * 2020-09-29 2023-10-31 Amazon Technologies, Inc. Emulation layer for overcoming incompatibilities in virtual machine instance migration

Family Cites Families (140)

* 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
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR 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
US6216237B1 (en) 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
US6161196A (en) 1998-06-19 2000-12-12 Lucent Technologies Inc. Fault tolerance via N-modular software redundancy using indirect 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
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
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
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 マイクロコンピュータ
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
US20030145309A1 (en) 2002-01-18 2003-07-31 Rajendra Inamdar Probe description language
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
US7720670B2 (en) 2005-05-16 2010-05-18 Texas Instruments Incorporated Saving resources by deducing the total prediction events
US7886198B2 (en) 2005-05-16 2011-02-08 Texas Instruments Incorporated Method and system of identifying overlays used by a program
US8527958B2 (en) 2005-05-16 2013-09-03 Texas Instruments Incorporated Profiling operating context and tracing program on a target processor
US7603589B2 (en) 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program
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
US7814466B2 (en) 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US20070261032A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for hardware assisted profiling of code
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
WO2007145903A2 (en) 2006-06-05 2007-12-21 Acumem Ab 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
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
WO2008069715A1 (en) 2006-12-06 2008-06-12 Telefonaktiebolaget Lm 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
US8473925B2 (en) 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
US8566800B2 (en) 2010-05-11 2013-10-22 Ca, Inc. Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation
US8782612B2 (en) 2010-05-11 2014-07-15 Ca, Inc. Failsafe mechanism for dynamic instrumentation of software using callbacks
US8966450B2 (en) 2010-06-01 2015-02-24 Red Hat, Inc. Facilitating the execution of web applications in the cloud
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
EP2810167A4 (en) 2015-02-25
CN104364769A (zh) 2015-02-18
US20130246769A1 (en) 2013-09-19
US9454462B2 (en) 2016-09-27
JP2015515652A (ja) 2015-05-28
US20130246771A1 (en) 2013-09-19
EP2810167A1 (en) 2014-12-10
US9459873B2 (en) 2016-10-04
EP2810167B1 (en) 2016-07-20
JP6058012B2 (ja) 2017-01-11
WO2013136679A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
CN104364769B (zh) 处理器特性的运行时间检测监控
CN104205064B (zh) 将程序事件记录事件向运行时间检测事件变换的系统及方法
CN104169889B (zh) 在事务执行模式中的运行时间检测采样的方法和系统
CN104704474B (zh) 用于管理的运行时间的基于硬件的运行时间检测设施
CN104380264B (zh) 运行时间检测报告
CN104364770B (zh) 来自较小特权状态的运行时检测仪器的控制操作
CN104169887B (zh) 通过指令操作码的运行时间检测间接采样的方法和系统
CN104169888B (zh) 用于实现运行时间检测定向采样的方法和系统
CN104364771B (zh) 修改来自较小特权状态的运行时间仪表控制
CN104412232B (zh) 事务处理方法、系统、介质
CN104364768B (zh) 用于确定运行时间检测控制的状态的方法和系统
CN104350468B (zh) 非事务储存指令
CN104335177B (zh) 有选择地控制事务处理中的指令执行
CN109313567A (zh) 虚拟化精确的基于事件的采样
CN104169886B (zh) 通过地址的运行时间检测间接采样的方法和系统
CN104364772A (zh) 事务环境内的程序事件记录
CN104335184A (zh) 事务执行分支指示
CN104350474A (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