CN104205064A - 将程序事件记录事件向运行时间检测事件的变换 - Google Patents
将程序事件记录事件向运行时间检测事件的变换 Download PDFInfo
- Publication number
- CN104205064A CN104205064A CN201380014698.6A CN201380014698A CN104205064A CN 104205064 A CN104205064 A CN 104205064A CN 201380014698 A CN201380014698 A CN 201380014698A CN 104205064 A CN104205064 A CN 104205064A
- Authority
- CN
- China
- Prior art keywords
- instruction
- per
- event
- working time
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的实施例涉及将程序事件记录事件变换为运行时间检测事件。本发明的一个方面包括一种用于将程序事件记录事件变换为运行时间检测事件的方法。所述方法包括:启用用于收集在处理器上执行的指令流的检测信息的运行时间检测。所述方法也包括:通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联。所述方法进一步包括:基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
Description
技术领域
本发明大体而言涉及计算环境内的处理,更具体地,涉及将程序事件记录事件向运行时间检测事件的变换。
背景技术
计算机处理器使用日益复杂的分支预测及指令高速缓存逻辑来执行程序或者指令流。这些程序已被引入以增加指令吞吐量,且因此增加处理性能。用于改进性能的逻辑的引入使得难以肯定地预测特定软件应用程序将如何在计算机处理器上执行。在软件开发过程期间,常常存在功能性与性能之间的平衡。软件在基于执行软件的底层硬件的一个或多个抽象层级处执行。当将硬件虚拟化时,额外抽象层被引入。随着性能增强逻辑及各种抽象层(layer)的引入,将难以透彻地理解当程序正在执行时在硬件层级(level)实际发生的事。在不具此信息的情况下,软件开发者将更抽象的方法(诸如,执行持续时间、存储器使用率、线程的数目等)用于最佳化软件应用程序。
发明内容
技术问题
当硬件特定信息可用时,该信息通常是在事后被提供给开发者,且该信息是以聚集地、在高层级、和/或穿插着其他程序及操作系统的活动的方式提供,从而难以识别可能影响软件应用程序的效率及准确度的问题。
对于问题的解决方案
实施例包括用于将程序事件记录事件变换为运行时间检测事件的方法、系统和计算机程序产品。所述计算机程序产品包括由处理电路可读并且存储由所述处理电路执行来执行一种方法的指令的有形存储介质。所述方法包括:启用用于收集在处理器上执行的指令流的检测信息的运行时间检测。所述方法也包括:通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联。所述方法进一步包括:基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
所述方法包括:启用用于收集在处理器上执行的指令流的检测信息的运行时间检测。所述方法也包括:通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联。所述方法进一步包括:基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
用于将程序事件记录事件变换为运行时间检测事件的所述系统包括收集缓冲器和具有运行时间检测模块的处理器。所述运行时间检测模块被配置为执行一种方法。所述方法包括:启用用于收集在处理器上执行的指令流的检测信息的运行时间检测。所述方法也包括:通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联。所述方法进一步包括:基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
额外特征及优点是经由本发明的技术来实现。本发明的其他实施例及方面将在本文中予以详细描述且被视为所主张发明的一部分。为了更好地理解本发明的优点及特征,参看描述及附图。
附图说明
在说明书结尾处的权利要求中特定指出且清楚地主张了被视为本发明的主题。将根据结合随附图进行的以下详细描述显而易见本发明的前述及其他特征及优点,其中:
图1A为描绘实施例中的示例主机计算机系统的图;
图1B为描绘实施例中的示例模拟主机计算机系统的图;
图1C为描绘实施例中的示例计算机系统的图;
图2为描绘实施例中的示例计算机网络的图;
图3为描绘实施例中的计算机系统的元件的图;
图4A描绘实施例中的计算机系统的详细元件;
图4B描绘实施例中的计算机系统的详细元件;
图4C描绘实施例中的计算机系统的详细元件;
图5描绘根据实施例的用于处理器的运行时间检测的系统的示意图;
图6描绘实施例中的包括可由特权状态设置的控制的运行时间检测控制块(RICCB)的一部分。
图7描绘实施例中的当半特权位(K)经设置为1时的RICCB控制块的一部分;
图8描绘根据实施例的程序事件记录控制寄存器;
图9描绘根据实施例的报告群组;
图10描绘根据实施例的用于将程序事件记录事件变换为运行时间检测事件的处理流;
图11图示根据实施例的计算机程序产品。
具体实施方式
本发明的一个实施例启用将程序事件记录(PER)事件变换为运行时间检测事件。PER的目的是帮助调试程序。PER允许向在较低特权或用户程序中的各种事件警告较多特权或控制程序,该各种事件例如是;成功分支事件、指令取基本事件;指令取无效事件;存储改变事件;以及,使用真实地址存储事件。PER事件的通知可以具有PER中断条件,该条件继而触发PER或程序中断。程序中断从较低特权的程序去除PER事件的了解。因此,获得定制程序调试信息通常是不可能的,或至少受制于控制程序的优先级和实现时间表。
运行时间检测是能够不仅用在实验室中或仅用于离线分析,而且能够在处理器(CPU)上在程序控制下在程序运行时间期间用在客户环境中的设施。因此,或者较高特权的控制/管理程序或者较低特权的用户程序可以直接地利用运行时间检测。被获取和执行来运行程序的指令序列被称为指令流。为了增强数据收集灵活性,可以基于可配置间隔来收集事件。能够被程序设置的CPU控制管理运行时间检测。运行时间检测通常在定期采样的基础上报告事件。通过指令计数或循环计数来确定固定采样间隔。可以通过使用运行时间检测下一个(RINEXT)指令来引导在检测的指令流中的另外的兴趣点。PER事件的检测提供了响应于所检测的PER事件来建立采样点的另一种手段。当执行随后的分析时,在检测的指令流中的特定信息可以很有益。每一个采样点导致包括从收集缓冲器近来收集的数据以及与在采样点处的指令的执行相关联的数据的多记录报告群组的存储。
在一个实施例中,当在运行时间检测中启用PER事件报告时,通过使得运行时间检测的处理器来检测PER事件。可以将PER事件检测为PER中断条件,该PER中断条件被截取和呈现为PER记录以在运行时间检测收集缓冲器中被收集。这防止了PER中断条件被控制中断,并且将指令流的执行保持不被中断。这也允许较低特权的程序利用PER特征本身,而不是依赖于较高特权的控制程序来代表较低特权的程序管理PER。
图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/Architecture IBM服务器中执行,或替代地在执行其他架构的机器中执行。可在现有及未来的IBM大型计算机服务器中及在IBM的其他机器(例如,服务器及服务器)上模拟指令。可于在广泛多种机器(使用由AMDTM、Sun Microsystems及其他公司制造的硬件)上执行Linux的机器中执行指令。除了在下在该硬件上执行之外,也可使用Linux以及由Hercules、UMX、Fundamental Software,Inc.(FSI)或Platform Solutions,Inc.(PSI)提供的使用模拟的机器,其中执行通常在模拟模式下。在模拟模式下,模拟软件是由原生处理器执行以模拟模拟处理器的架构。
模拟主机计算机系统21的组件中的一个或多个将在“z/Architecture Principles 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的网络适配器而与其他计算机或计算机网络通信。示例网络适配器为通信频道、令牌环(tokenring)、乙太网络或调制解调器。替代地,基本计算机系统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 displacementfacility)举例说明的寄存器与立即字段的组合提供,在该z/Architecture长位移设施中指令定义基寄存器、索引寄存器及立即字段(位移字段),其被加在一起以提供操作数在存储器中的位置。本文中的位置暗示在主存储器(主存储器)中的位置,除非另有指示。
参看图4C,处理器使用载入/存储单元310来存取存储器。载入/存储单元310可通过经由高速缓冲存储器/存储器接口获得目标操作数在存储器中的地址及将该操作数载入架构化寄存器309或另一存储器位置中来执行载入操作,或可通过获得目标操作数在存储器中的地址及将从架构化寄存器309或另一存储器位置获得的数据存储在存储器中的目标操作数字置中来执行存储操作。载入/存储单元310可为推测性的且可以相对于指令序列而言无序的序列存取存储器;然而,载入/存储单元310对程序维持指令是有序地执行的表像。载入/存储单元310可与架构化寄存器309、解码/分派单元306、高速缓冲存储器/存储器接口或其他元件455通信,且包含各种寄存器电路、ALU 458及控制逻辑463以计算存储地址且提供管线排序以保持运算有序。一些运算可能无序,但载入/存储单元提供如本领域公知的用以使无序的运算对程序表现为已有序地执行的功能性。
优选地,应用程序“看见”的地址常常被称为虚拟地址。虚拟地址有时被称为“逻辑地址”及“有效地址”。这些虚拟地址是虚拟的,因为虚拟地址是通过多种DAT技术中的一个(诸如图3的DAT 312)重定向至实体存储器位置,DAT技术包括(但不限于)将偏移值(offset value)作为虚拟地址的首码、经由一个或多个转译表转译虚拟地址,转译表至少单独地或组合地包括段表及页表,优选地,段表具有指向页表的输入项。在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指示较低特权状态程序是否被准许在半特权状态中关于运行时间检测控制(诸如运行时间检测控制的原始地址及极限地址)进行执行。K位606可以授权在问题状态下发出的MRIC指令接合其他控制以修改其他值,诸如与PER控制(未描述)相关联的控制寄存器。H位608确定地址控制(即,原始地址、极限地址及当前地址)是否参考主要虚拟地址空间(primary virtual address space)或主虚拟地址空间(home virtual addressspace)。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指令更新。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的值为零或等于缩放因子(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及BPni 728)。如果运行时间检测控制中的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字段)的一个或多个报告群组。一旦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时,发生抑制。
P比特752是用于运行时间检测的PER控制。当P比特752是1时,另外的运行时间检测PER控制是运行的。当P比特752是0时,忽略另外的运行时间检测PER控制。STRIC指令的执行存储运行时间检测PER控制的当前值。
PI比特754是PER事件立即采样控制。当P比特752为1上,PI比特754有意义。当PI比特754有意义并且是1时,也将引起PER事件的指令识别为采样指令。即,存储其指令类型记录识别引起PER事件的指令的报告群组。当PI比特754有益于并且为0时,引起PER事件的指令也不是采样点。与PI比特754的值无关,将PER类型记录置于收集缓冲器508内。
PK比特756是问题状态PER控制寄存器修改许可控制。当P比特752是1时,PK比特756有意义。当PK比特756有意义并且是1时,允许问题状态程序改变用于表示如参考图8进一步所述的PER控制寄存器CR9、CR10和CR11的RI控制。即,可以使用MRIC指令来改变运行时间检测PER控制。当PK比特756有意义并且是0时,不允许问题状态程序改变用于表示PER控制寄存器CR9、CR10和CR11的运行时间检测控制。PK比特756是具有特权的比特,并且可以在LRIC指令的执行期间被置位。
图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的完成之间的任何事件而定,导向取样经受较少量的可变性。PER事件采样取决于PER事件的频率,可能经历更大的可变性。
与模式无关,取样识别样本指令。一旦样本指令经识别,收集便在该样本指令的执行完成时停止,且开始报告。接着应用管理报告的各种报告控制。在使报告群组的存储在搁置中时,收集继续。
在样本指令的执行完成时,报告群组的存储变为在搁置中。如果报告群组的存储被延后或在搁置中时,如果识别出以下中断中的任一个,则报告群组可被清除:1)程序中断;2)紧急机器检查中断;3)重新启动中断;及4)监督调用中断。
任何搁置中的I/O、外部及可抑制的机器检查中断保持搁置,直至报告群组已被存储或运行时间检测控制确定报告群将不被存储。
每一模式可或可不允许报告控制的不同集合。当取样模式为指令计数或循环计数,但导向取样也被使用时,可能通过多个取样方法来识别出相同样本指令。当此情况发生,且待使用的报告控制根据取样模式而不同时,应用与导向取样相关联的报告控制。类似地,相同采样指令还可以接合其他采样方法由PER事件识别,导致识别共同采样指令时单个报告群组的存储。
如先前所描述,在收集缓冲器508中,当在程序执行期间启用运行时间检测时,运行时间检测数据是收集于处理器106内。在实施例中,收集缓冲器508为处理器106的内部缓冲器,其用以存储(save)所收集的最近记录。当检测到采样触发点时,将记录从收集缓冲器508复制至程序缓冲器522中以作为将写入至程序缓冲器522的报告群组的部分。在实施例中,以非破坏性方式从收集缓冲器复制记录。
收集缓冲器508可被称为“硬件收集缓冲器”,因为收集缓冲器508位于处理器中,且在实施例中经实施为用于存储给定事件的指令地址及事件后设数据的寄存器对的阵列。事件的示例为采纳分支,针对该采纳分支,寄存器对可保存该分支的指令地址,且该后设数据可保存分支的目标以及关于分支的历史行为的信息。在实施例中,寄存器对经排序,且随着事件出现于指令流中而被顺序地更新。维持计数器以指示阵列中的最近经更新输入项的索引。在实施例中,收集缓冲器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的实施例中的输入项包括事件指令地址及其他相关的事件后设数据。事件后设数据的示例包括(但不限于):采纳分支的指令地址及该分支的目标(包括关于分支的历史行为的某一信息);RIEMIT指令的指令地址及各别寄存器值;及事务中止指令的地址及各别事务复原进入点。
收集缓冲器508的实施例存储多达32个输入项(即,关于32个事件的信息),其中由64个位(例如,位0:63)指定每一指令地址且由64个位(例如,位64:127)指定事件后设数据。收集缓冲器的大小(RCB)为依赖模型计数,其表示记录的数目。在实施例中,收集缓冲器508的字节大小为16字节记录大小的倍数。在收集缓冲器(RCB)的大小为大于或等于模型的最大报告群组的计数(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描述了根据一个实施例的程序事件记录(PER)控制寄存器800。当P是1时,用于设置度量的PER控制寄存器CR9、CR10和CR11的运行时间检测(RI)PER控制。可以只有PK比特756是1才由MRIC指令在问题状态中设置PER控制寄存器CR9-CR11。PK比特756可以用于作为一种形式的复用重新映射控制块700的字段。例如,当置位K比特606并且PK比特756清空时,MRIC指令可以设置在字段ROA 702和RLA 704中的值,以配置程序缓冲器522。当置位K比特606并且置位PK比特756时,随后的MRIC指令可以重新映射否则对于RCA 706、ROA 702和RLA 704保留的字段的一个或多个,以配置PER控制寄存器CR9-CR11。替代地,除了对于RCA 706、ROA 702和RLA 704保留的那些之外的字段可以被复用以配置PER控制寄存器CR9-CR11。作为另一种替代,控制块700的大小可以被扩展或重新配置以允许配置PER控制寄存器CR9-CR11,而不重新映射否则对于RCA 706、ROA 702和RLA 704保留的字段。作为另一个示例,在主存储器514中的位置可以被指配以存储PER控制寄存器数据的拷贝。
PER功能通常可以被图5的PER模块528管理。PER模块528支持多个PER事件的识别和报告。可以使用可以在图5的寄存器510中驻留的PER控制寄存器CR9、CR10和CR11来配置PER事件模块528。在图5的检测模块506中的RI PER模块526可以用于使用RI PER控制来配置PER控制寄存器CR9、CR10和CR11。RI PER模块526也可以检测PER事件。可以通过监控PER中断条件来直接地或间接地检测PER事件。RI PER模块526可以基于检测到PER事件而截取由PER模块528产生的PER中断条件。截取PER中断条件防止处理器106被与PER中断条件相关联的PER中断中断。
用于设置PER控制寄存器CR9的RI PER控制是16比特掩码,其对应于CR9的比特位置32-47。CR9包括PER事件掩码(EM)802。在EM 802中的CR9的比特32-34和36指定识别了哪些类型的PER事件。当安装PER-3设施时,也使用在EM 802中的CR9的比特39。在一个实施例中,将在EM 802中的CR9的比特指配如下:
比特32:成功分支事件。
比特33:指令取事件。
比特34:存储改变事件。
比特36:使用真实地址存储事件(比特34必须也是1)。
比特39:指令取无效事件(比特33也必须是1)
CR9的比特32-34和比特36当为1时指定对应的类型的事件将被识别为PER事件。然而,仅当比特34也是1时,比特36也对于该目的有效。当比特34是1时,识别存储改变事件。当比特34和36是1时,识别存储改变事件和使用真实地址存储事件。当比特是0时,不识别对应的类型的事件。当比特34是0时,不识别存储改变事件和使用真实地址存储事件。
当未安装PER-3设施时,忽略CR9的比特39。当CR9的比特33也是1时,比特39有效。当比特33是1,并且安装PER-3设施,并且比特39是1时,识别出PER指令取无效事件。当比特33是1并且比特39是0(未安装PER-3设施)时,识别出PER指令取基本事件。当比特33是0时,既未识别出PER指令取基本事件,也未识别出PER指令取无效事件。
分支地址控制(B比特)804是CR9的比特40。B比特804当是1时指定仅对于到在指定存储区域内的位置的分支出现成功地分支事件。当B比特804是0时,出现成功的分支事件,而与分支目标地址无关。
存储改变空间控制(S比特)806是CR9的比特42。S比特806当为1时指定作为对于仅在指定地址空间内的指定存储区域的引用的结果出现存储改变事件。地址空间被指定为1,对于其而言,存储改变事件通过用于将参考转换为地址空间的地址空间控制元素中的存储改变事件比特而出现。当DAT未生效时,忽略S比特806。当DAT未生效或S比特806是0时,存储改变事件不限于仅对于特定地址空间出现。
与PER开始地址808一致地,用于设置PER控制寄存器CR10的RI PER控制是64比特地址。CR10的比特0-63是可以是在主存储器514中的位置的指定存储区域的开始的地址。
与PER结束地址810一致地,用于设置PER控制寄存器CR11的RI PER控制是64比特地址。CR11的比特0-63是可以是在主存储器514中的位置的指定存储区域的结束的地址。
两种类型的PER事件——指令取和存储改变?包含在存储器中的区域的指定。成功分支事件可以包含该指定。该存储区域在由在CR10中的开始地址808指定的位置出开始,并且延伸到并且包括由在CR11中的结束地址808指定的位置。指令取事件每当从指定区域获取指令的第一字节或执行类型指令的目标的第一字节时出现指令取事件。当通过使用被限定为逻辑或虚拟地址的操作数地址来对于指定区域进行存储访问时,出现存储改变事件。
当启用运行时间检测并且P比特752是1时,可以阻挡否则将修改诸如加载控制指令的CR9、CR10和CR11的状态的指令,以在运行时间检测PER活动的同时防止寄存器修改。
图9描述了在采样点处被存储到程序缓冲器522的报告群组900的高级示例。在记录中的报告群组的大小被表示为RRG,等于2(RGS+1),其中,RGS是作为指数的报告群组大小。当在报告群组中使用时,可以或可以不非破坏性地复制从除了收集缓冲器508之外的位置复制的模型相关的数量的记录(RNC)。在图9的示例中,RRG=8,RGS=2,并且RNC=4。在图9中所示的示例报告群组900包括报头区段902、主体区段904、额外记录区段906和脚注区段908。
报头区段902可以包括开始记录或时间标记记录,用于存储状态、跟踪和/或定时信息。对于在程序缓冲器中存储的第一报告群组在报头区段902中存储开始记录(即,当RCA 706等于ROA 702时)。在一个实施例中,开始记录包括:记录类型字段“02”;报告群组数量(NRG)字段,用于指示在程序缓冲器中当前存储了多少报告群组;RGS字段,用于指示报告群组的大小;停止(S)字段,用于指示程序缓冲器522是否满了;暂停(H)字段,用于指示是否暂停了运行时间检测;以及,日时(TOD)时钟时间段,用于指示何时写入开始记录。在一个实施例中,在开始记录中的字段的至少一个子集出自RI控制块(例如,RICCB)。时间标记记录的一个实施例具有记录类型“03”,并且包括用于指示何时存储记录的TOD时钟字段。在一个实施例中,对于除了第一报告群组之外的每一个报告群组在报头区段902中存储时间标记记录。
报告群组的主体区段904可以包括从收集缓冲器508采样的事件和信息的多种记录。事件和信息可以表示例如由发射指令捕获的状态信息、事务执行异常终止、PER事件、调用、返回、分支和填充。
在一个实施例中,在成功地执行RIEMIT指令时,在收集缓冲器508中建立和存储发送记录。发送记录的一个实施例包括:记录类型字段“10”;指令地址码字段,用于指示在发送记录中如何表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,64、31或24比特)来变化,并且如果RIEMIT是执行类型指令的目标则包含RIEMIT指令或执行类型指令的指令地址,以及,发送数据字段,用于存储来自由RIEMIT指令指定的一般寄存器的数据。
在一个实施例中,通过隐含的异常终止或通过事务异常终止指令的执行来建立和在收集缓冲器508中存储事务执行模式异常终止记录。异常终止记录的一个实施例包括:记录类型字段“11”、指令地址码字段,用于指示如何在事务执行异常终止记录中表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,64、31或24比特)来变化,并且如果异常终止指令是执行类型指令的目标则包含异常终止指令或执行类型指令的指令地址,以及,用于与异常终止相关联的任何模型相关数据的字段。
在一个实施例中,通过检测与在处理器106上执行的指令流相关联的PER事件来检测PER事件记录。RI PER类型记录的一个实施例包括否则可用在正常的PER程序中断中获得的PER事件的证明。可以作为报告群组900的一部分存储的PER事件记录可以包括:8比特PER代码、2比特PER地址空间控制元素(ASCE)标识符、4比特PER访问标识符(PAID)、指令字段(ILC)的2比特PER长度和64比特PER地址。PER事件代码可以将PER事件识别为下述部分之一:成功分支、指令取、存储改变、使用真实地址存储和指令取无效。PER ASCE ID识别用于转换引起PER事件的参考的地址空间控制元素。对于PER指令无效事件,PER ILC是0。对于PER基本事件,PER ILC指示由PER事件地址指定的指令的长度,除了当用于由加载PSW指令、加载PSW扩展指令、程序划分指令或管理调用指令引发的PSW的同时指定例外设置0的ILC时之外。PER地址字段包含用于获取负责被识别的一个或多个PER事件的指令的指令地址。
在一个实施例中,通过调用类型分支指令来建立调用记录,该调用类型分支指令例如是:当R2字段非零时的BRANCH AND SAVE(分支和存储)(BASR);BRANCH AND SAVE(分支和存储)(BAS);BRANCH RELATIVEAND SAVE LONG;BRANCH RELATIVE AND SAVE;当R2字段是非零时的BRANCH AND LINK(BALR);BRANCH AND LINK(BAL);以及,当R2字段是非零时的BRANCH AND SAVE AND SET MODE。调用记录的一个实施例包括:记录类型字段“12”、指令地址码字段,用于指示如何在调用记录中表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,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.BRANCH ON INDEX LOW OR EQUAL(BXLE,BXLEG);f.BRANCHRELATIVE ON CONDITION(BRC);g.BRANCH RELATIVE ONCONDITIONLONG(BRCL);h.BRANCH RELATIVE ON COUNT(BRCT,BRCTG);i.BRANCH RELATIVE ON COUNT HIGH(BRCTH);j.BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG);k.BRANCHRELATIVE ON INDEX LOW OREQUAL(BRXLE,BRXLG);l.COMPAREAND BRANCH(CRB,CGRB);m.COMPARE AND BRANCH RELATIVE(CRJ,CGRJ);n.COMPARE IMMEDIATE AND BRANCH(CIB,CGIB);o.COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ);p.COMPARE LOGICAL AND BRANCH(CLRB,CLGRB);q.COMPARELOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);r.COMPARELOGICAL IMMEDIATE ANDBRANCH(CLIB,CLGIB);及s.COMPARELOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ,CLGIJ)。传送记录是在分支经采纳时创建。对于传送记录,指令地址字段含有分支指令或执行类型指令(如果分支为执行类型指令的目标)的地址,且目标地址字段含有返回位置。
当在收集缓冲器508中的有效记录的数量不足以填充当前RGS的报告群组时,在报告群组中使用填充记录。填充记录的一个实施例包括用于指示记录是填充记录的记录类型字段“00”,并且未定义剩余的字节。
额外记录区段906当存在时可以包含模型相关的记录。在一个实施例中,额外记录的格式类似于填充记录,除了记录类型被设置为“01”以指示记录是额外记录,并且额外记录的剩余字节可以包含模型相关数据。
脚注区段908可以包括包含关于采样指令的执行的信息的指令记录。当对于采样指令存储报告群组时,建立指令记录。指令记录的一个实施例包括:记录类型字段“04”、指令地址码字段,用于指示如何在指令记录中表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,64、31或24比特)来变化,并且如果采样指令是执行类型指令的目标则包含采样指令或执行类型指令的指令地址,以及,指令数据缓冲器(IDB)字段,其包含从IDB收集的任何模型相关数据。
图10描述了用于实现将程序事件记录事件条件变换为运行时间检测事件的处理流1000。处理流1000可以被处理器106实现。处理流1000可以替代地被图1B的模拟处理器29实现。为了容易说明,在此相对于处理器106来描述处理流1000。
初始,图5的运行时间检测模块506和寄存器510可以被配置来使用如上所述用于加载图6和7的控制块600和700的LRIC指令来支持PER。与PI比特754、PK比特756、K比特606和PER控制寄存器CR9、CR10和CR11相结合的P比特752可以被配置为支持运行时间检测PER。
在块1002处,启用运行时间检测以收集在处理器106上运行的指令流的检测信息。该指令流可以是来自运行时间存储器504的程序状态程序或管理状态程序。在一个实施例中,改变在PSW数据512中的值并且向寄存器510加载PSW数据512启用运行时间检测。一旦配置和启用了运行时间检测控制,则可以在收集缓冲器中收集诸如事件的信息和包括PER事件的数据。到达采样指令或处理点,其触发向也被称为运行时间检测程序缓冲器522的程序缓冲器522内的报告群组的存储。
在块1004处,为了收集PER事件,处理器106检测与在处理器106上执行的指令流相关联的PER事件。在块1006处,可以通过下述方式来检测PER事件:截取与PER事件相关联的PER中断条件,使得在处理器106上执行的指令流不被与PER中断条件相关联的PER中断中断。
在块1008处,处理器106基于检测到PER事件来作为运行时间检测事件向收集缓冲器508写入PER事件记录。PER事件记录识别所检测的PER事件。PER事件记录被格式化为运行时间检测事件类型记录,以作为诸如报告群组900的报告群组的一部分存储。
一个或多个报告群组被从所收集的运行时间检测事件收集,并且被存储到运行时间检测程序缓冲器522。来自系统信息和来自收集缓冲器508的记录的群组合可以被合并以向运行时间检测程序缓冲器522存储诸如图9的报告群组900的报告群组。如果与P比特752相结合地将PI比特754置位,则当向程序缓冲器522存储报告群组时,报告群组可以包括PER事件记录和用于将引起PER事件的指令识别为采样指令的指令类型记录。
如上所述,实施例可以计算机实施程序及用于实践那些程序的装置的形式体现。实施例可包括在计算机可读/可用介质1102上的如图11中所描绘的计算机程序产品1100,该计算机可读/可用介质1102具有含有作为制品体现于有形介质中的指令的计算机程序代码逻辑1104。计算机可读/可用介质1102的示例性制品可包括软盘、CD-ROM、硬驱动器、通用串行总线(USB)闪速驱动器或任何其他计算机可读存储介质,其中,当计算机程序代码逻辑1104被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。实施例包括计算机程序代码逻辑1104,该计算机程序代码逻辑(例如)存储在存储介质中、经载入至计算机中和/或由计算机执行,或经由某一传输介质(诸如,经由电布线或缆线、经由光纤或经由电磁辐射)进行传输,其中,当计算机程序代码逻辑1104被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。当实施于通用微处理器上时,计算机程序代码逻辑1104的多个段配置该微处理器以创建特定逻辑电路。
技术效果和益处包括将程序事件记录事件变换为运行时间检测事件。在检测到PER事件时,作为一种类型的运行时间检测事件收集PER事件。可以通过截取可以否则中断在检测的指令流上执行的处理器的PER中断条件来检测PER事件。这使得PER事件数据可用于较低特权的程序,该较低特权的程序不直接访问PER事件数据。使用运行时间检测来收集PER事件也允许近来执行的程序继续运行,而不被PER中断中断。也可以在使用模拟例程的模拟或虚拟处理器中包括对于将程序事件记录事件变换为运行时间检测事件的支持。
本文中所使用的术语仅用于描述特定实施例的目的且不欲限制本发明。如本文中所使用,除非上下文另有清晰指示,否则单数形式“一”及“该”意欲也包括复数形式。将进一步理解,术语“包含”在用于本说明书中时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下权利要求中的所有构件或步骤加功能元件的相应结构、材料、动作及等效物意欲包括用于连同如具体所主张的其他所主张元件一起执行功能的任何结构、材料或动作。已出于说明及描述目的呈现了本发明的描述,但该描述不欲为详尽的或限于呈所揭示的形式的本发明。在不脱离本发明的范畴及精神的情况下,许多修改及变化对于一般本领域普通技术人员将显而易见。选择并描述实施例以便最佳地解释本发明的原理及实际应用,且使其他一般本领域普通技术人员能够理解本发明的各种实施例,实施例具有适合于所设想的特定用途的各种修改。
如本领域普通技术人员将了解,本发明的方面可体现为系统、方法或计算机程序产品。相应地,本发明的方面可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件方面与硬件方面的实施例的形式,实施例在本文中都可通称为“电路”、“模块”或“系统”。此外,本发明的方面可采用体现于一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读程序代码。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可为(例如,但不限于)电子、磁性、光学、电磁、红外线或半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读存储介质的更特定示例(非详尽清单)将包括以下各者:具有一或多条导线的电连接件、携带型计算机磁片、硬碟、随机存取存储器(RAM)、唯读存储器(ROM)、可抹除可程序化唯读存储器(EPROM或闪速存储器)、光纤、携带型致密盘唯读存储器(CD-ROM)、光学存储器件、磁性存储器件或前述各者的任何合适组合。在本文件的上下文中,计算机可读存储介质可为可含有或存储供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件使用的程序的任何有形介质。
计算机可读信号介质可包括传播的数据信号,该传播的数据信号具有体现于其中(例如,在基频中或作为载波的部分)的计算机可读程序代码。此传播信号可采用多种形式中的任一个,包括(但不限于)电磁、光学或其任何合适组合。计算机可读信号介质可为并非计算机可读存储介质且可传达、传播或输送供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件使用的程序的任何计算机可读介质。
可使用任何适当介质来传输体现于计算机可读介质上的程序代码,适当介质包括(但不限于)无线、有线、光纤缆线、RF等或前述各者的任何合适组合。
可以一或多种程序设计语言的任何组合来撰写用于执行本发明的方面的操作的计算机程序代码,该一或多种程序设计语言包括物件导向式程序设计语言(诸如,Java、Smalltalk、C++或其类似者)及习知程序性程序设计语言(诸如,“C”程序设计语言或类似程序设计语言)。程序代码可完全在用户的计算机上执行,部分地在用户的计算机上执行,作为独立套装软件而执行,部分地在用户的计算机上执行且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在完全在远程计算机或服务器上执行的情形中,远程计算机可经由任何类型的网络(包括局域网(LAN)或广域网络(WAN))连接至用户的计算机,或可连接至外部计算机(例如,使用因特网服务提供者,经由因特网)。
上文中参考根据本发明的实施例的方法、装置(系统)及计算机程序产品的流程图说明和/或示意图来描述本发明的方面。将理解,可通过计算机程序指令来实施流程图说明和/或方块图中的每一块及流程图说明和/或方块图中的块的组合。可将这些计算机程序指令提供至通用计算机、专用计算机或其他可程序化数据处理装置的处理器以产生一机器,以使得经由该计算机或其他可程序化数据处理装置的处理器执行的指令产生用于实施该或流程图和/或方块图块中所指定的功能/动作的构件。
也可将这些计算机程序指令存储在计算机可读介质中,其可指导计算机、其他可程序化数据处理装置或其他器件以特定方式发挥作用,使得存储在该计算机可读介质中的指令产生一制品,该制品包括实施该或流程图和/或方块图块中所指定的功能/动作的指令。
也可将计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器件上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生计算机实施的程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施该或流程图和/或方块图块中所指定的功能/动作的程序。
如上所述,实施例可以计算机实施的程序及用于实践那些程序的装置的形式体现。在多个实施例中,本发明系体现于由一个或多个网络元件执行的计算机程序代码中。实施例包括在计算机可用介质上的计算机程序产品,该计算机可用介质具有含有体现于作为制品的有形介质中的指令的计算机程序代码逻辑。计算机可用介质的示例性制品可包括软碟、CD-ROM、硬驱动器、通用流总线(USB)随身碟或任何其他计算机可读存储介质,其中,当计算机程序代码逻辑被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。实施例包括计算机程序代码逻辑,该计算机程序代码逻辑(例如)存储在存储介质中、载入至计算机中和/或由计算机执行,或经由某一传输介质(诸如,经由电布线或缆线、经由光纤或经由电磁辐射)进行传输,其中,当计算机程序代码逻辑被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。当实施于一通用微处理器上时,计算机程序代码逻辑的多个段配置该微处理器以创建特定逻辑电路。
图中的流程图及方块图说明根据本发明的各种实施例的系统、方法及计算机程序产品的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一块可表示程序代码的模块、段或部分,其包含用于实施指定逻辑功能的一个或多个可执行指令。也应注意,在一些替代实施中,块中所提到的功能可不以诸图中所提到的次序发生。举例而言,视所涉及的功能性而定,连续展示的两个块实际上可实质上同时执行,或块有时可以相反次序执行。也应注意,可通过执行指定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实施方块图和/或流程图说明的每一块及方块图和/或流程图说明中的块的组合。
Claims (20)
1.一种用于将程序事件记录事件变换为运行时间检测事件的计算机程序产品,所述计算机程序产品包括:
由处理电路可读并且存储由所述处理电路执行来执行一种方法的指令的有形存储介质,所述方法包括:
启用用于收集在处理器上执行的指令流的检测信息的运行时间检测;
通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联;并且
基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
2.根据权利要求1所述的计算机程序产品,其在,检测所述PER事件进一步包括:
截取与所述PER事件相关联的PER中断条件,使得与所述PER中断条件相关联的PER中断不中断在所述处理器上执行的所述指令流。
3.根据权利要求1所述的计算机程序产品,进一步包括:
基于执行负载运行时间检测控制(LRIC)指令来配置运行时间检测控制,所述LRIC指令启用运行时间检测PER控制。
4.根据权利要求3所述的计算机程序产品,进一步包括:
基于执行所述LRIC指令来置位K比特,以授予用于从较低特权的程序配置运行时间检测控制值的修改运行时间检测控制(MRIC)指令的执行的许可;并且
基于执行所述LRIC指令来置位PK比特,以授予当启用所述运行时间检测PER控制并且设置所述K比特时用于从较低特权的程序配置PER控制寄存器的MRIC指令的执行的许可。
5.根据权利要求4所述的计算机程序产品,其中,所述MRIC指令更新控制块,所述控制块包括运行时间检测程序缓冲器当前地址(RCA)字段、运行时间检测程序缓冲器原始地址(ROA)字段和运行时间检测程序缓冲器极限地址(RLA)字段,并且所述计算机程序产品进一步包括:
置位在所述ROA字段和所述RLA字段中的地址值,以基于所述执行的MRIC指令来配置运行时间检测程序缓冲器,其中,所述PK比特是清空的,并且所述K比特被置位;并且
重新映射所述RCA字段、所述ROA字段和所述RLA字段的一个或多个,以基于所执行的随后的MRIC指令来配置所述PER控制寄存器,其中,所述PS比特被置位,并且所述K比特被置位。
6.根据权利要求3所述的计算机程序产品,进一步包括:
基于执行所述LRIC指令来将PI比特置位,以当启用所述运行时间检测PER控制时识别作为采样指令的引起所述PER事件的指令;并且
向运行时间检测程序缓冲器存储报告群组,所述报告群组包括所述PER事件记录和用于将引起所述PER事件的指令识别为所述采样指令的指令类型记录。
7.根据权利要求1所述的计算机程序产品,其中,所述PER事件记录包括:
PER代码,用于识别所述PER事件,其中,所述PER事件是下述部分之一:成功的分支、指令取、存储-修改、存储、使用真实地址存储和指令取无效;
PER地址空间控制元素识别,用于转换引起所述PER事件的参考;
PER访问识别;
指令字段的PER长度;以及
PER地址,其包含用于获取负责所述PER事件的指令的指令地址。
8.一种计算机实现的方法,用于将程序事件记录事件变换为运行时间检测事件,所述方法包括:
启用用于收集在处理器上执行的指令流的检测信息的运行时间检测;
通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联;并且
基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
9.根据权利要求8所述的方法,其在,检测所述PER事件进一步包括:
截取与所述PER事件相关联的PER中断条件,使得与所述PER中断条件相关联的PER中断不中断在所述处理器上执行的所述指令流。
10.根据权利要求8所述的方法,进一步包括:
基于执行负载运行时间检测控制(LRIC)指令来配置运行时间检测控制,所述LRIC指令启用运行时间检测PER控制。
11.根据权利要求10所述的方法,进一步包括:
基于执行所述LRIC指令来置位K比特,以授予用于从较低特权的程序配置运行时间检测控制值的修改运行时间检测控制(MRIC)指令的执行的许可;并且
基于执行所述LRIC指令来置位PK比特,以授予当启用所述运行时间检测PER控制并且设置所述K比特时用于从较低特权的程序配置PER控制寄存器的MRIC指令的执行的许可。
12.根据权利要求11所述的方法,其中,所述MRIC指令更新控制块,所述控制块包括运行时间检测程序缓冲器当前地址(RCA)字段、运行时间检测程序缓冲器原始地址(ROA)字段和运行时间检测程序缓冲器极限地址(RLA)字段,并且所述方法进一步包括:
置位在所述ROA字段和所述RLA字段中的地址值,以基于所述执行的MRIC指令来配置运行时间检测程序缓冲器,其中,所述PK比特是清空的,并且所述K比特被置位;并且
重新映射所述RCA字段、所述ROA字段和所述RLA字段的一个或多个,以基于所执行的随后的MRIC指令来配置所述PER控制寄存器,其中,所述PS比特被置位,并且所述K比特被置位。
13.根据权利要求10所述的方法,进一步包括:
基于执行所述LRIC指令来将PI比特置位,以当启用所述运行时间检测PER控制时识别作为采样指令的引起所述PER事件的指令;并且
向运行时间检测程序缓冲器存储报告群组,所述报告群组包括所述PER事件记录和用于将引起所述PER事件的指令识别为所述采样指令的指令类型记录。
14.根据权利要求8所述的方法,其中,所述PER事件记录包括:
PER代码,用于识别所述PER事件,其中,所述PER事件是下述部分之一:成功的分支、指令取、存储-修改、存储、使用真实地址存储和指令取无效;
PER地址空间控制元素识别,用于转换引起所述PER事件的参考;
PER访问识别;
指令字段的PER长度;以及
PER地址,其包含用于获取负责所述PER事件的指令的指令地址。
15.一种用于将程序事件记录事件变换为运行时间检测事件的系统,所述系统包括:
收集缓冲器;以及
处理器,其包括运行时间检测模块,所述运行时间检测模块被配置为执行一种方法,所述方法包括:
启用用于收集在处理器上执行的指令流的检测信息的运行时间检测;
通过所述处理器检测程序事件记录(PER)事件,所述PER事件与在所述处理器上执行的所述指令流相关联;并且
基于检测到所述PER事件来作为运行时间检测事件向收集缓冲器写入PER事件记录,所述PER事件记录识别所述PER事件。
16.根据权利要求15所述的系统,其在,检测所述PER事件进一步包括:
截取与所述PER事件相关联的PER中断条件,使得与所述PER中断条件相关联的PER中断不中断在所述处理器上执行的所述指令流。
17.根据权利要求15所述的系统,进一步包括:
基于执行负载运行时间检测控制(LRIC)指令来配置运行时间检测控制,所述LRIC指令启用运行时间检测PER控制。
18.根据权利要求17所述的系统,进一步包括:
基于执行所述LRIC指令来置位K比特,以授予用于从较低特权的程序配置运行时间检测控制值的修改运行时间检测控制(MRIC)指令的执行的许可;并且
基于执行所述LRIC指令来置位PK比特,以授予当启用所述运行时间检测PER控制并且设置所述K比特时用于从较低特权的程序配置PER控制寄存器的MRIC指令的执行的许可。
19.根据权利要求17所述的系统,进一步包括:
基于执行所述LRIC指令来将PI比特置位,以当启用所述运行时间检测PER控制时识别作为采样指令的引起所述PER事件的指令;并且
向运行时间检测程序缓冲器存储报告群组,所述报告群组包括所述PER事件记录和用于将引起所述PER事件的指令识别为所述采样指令的指令类型记录。
20.根据权利要求15所述的系统,其中,所述PER事件记录包括:
PER代码,用于识别所述PER事件,其中,所述PER事件是下述部分之一:成功的分支、指令取、存储-修改、存储、使用真实地址存储和指令取无效;
PER地址空间控制元素识别,用于转换引起所述PER事件的参考;
PER访问识别;
指令字段的PER长度;以及
PER地址,其包含用于获取负责所述PER事件的指令的指令地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/422,596 US9442824B2 (en) | 2012-03-16 | 2012-03-16 | Transformation of a program-event-recording event into a run-time instrumentation event |
US13/422,596 | 2012-03-16 | ||
PCT/JP2013/001412 WO2013136726A1 (en) | 2012-03-16 | 2013-03-06 | Transformation of a program-event-recording event into a run-time instrumentation event |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104205064A true CN104205064A (zh) | 2014-12-10 |
CN104205064B CN104205064B (zh) | 2016-12-14 |
Family
ID=49158905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380014698.6A Active CN104205064B (zh) | 2012-03-16 | 2013-03-06 | 将程序事件记录事件向运行时间检测事件变换的系统及方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9442824B2 (zh) |
EP (1) | EP2825965B1 (zh) |
JP (1) | JP6095682B2 (zh) |
CN (1) | CN104205064B (zh) |
WO (1) | WO2013136726A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933665A (zh) * | 2017-03-09 | 2017-07-07 | 中国科学技术大学 | 预测mpi程序运行时间的方法 |
CN108463808A (zh) * | 2015-11-16 | 2018-08-28 | Arm有限公司 | 事件触发的可编程预取器 |
CN111506384A (zh) * | 2019-01-31 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 模拟运算方法和模拟器 |
CN111581124A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 可缩短内文交换时间的方法及其半导体装置 |
CN112507180A (zh) * | 2020-12-11 | 2021-03-16 | 浙江中控技术股份有限公司 | 模拟机时间的转换方法、装置、电子设备及存储介质 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8726225B2 (en) * | 2011-08-01 | 2014-05-13 | Vmware, Inc. | Testing of a software system using instrumentation at a logging module |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9804951B2 (en) * | 2014-10-08 | 2017-10-31 | Signalfx, Inc. | Quantization of data streams of instrumented software |
US9691123B2 (en) * | 2014-12-15 | 2017-06-27 | Intel Corporation | Instrumentation of graphics instructions |
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 |
US10466974B2 (en) * | 2015-04-14 | 2019-11-05 | Microsoft Technology Licensing, Llc | Independent expression animations |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
KR102300347B1 (ko) * | 2017-08-07 | 2021-09-10 | 한국전자통신연구원 | 멀티코어 임베디드 시스템에 대한 연속 프로파일링 장치 및 그 방법 |
US11416749B2 (en) | 2018-12-11 | 2022-08-16 | Amazon Technologies, Inc. | Execution synchronization and tracking |
US10838631B2 (en) | 2019-02-25 | 2020-11-17 | International Business Machines Corporation | Detection of alteration of storage keys used to protect memory |
US11782816B2 (en) | 2019-03-19 | 2023-10-10 | Jens C. Jenkins | Input/output location transformations when emulating non-traced code with a recorded execution of traced code |
US11281560B2 (en) * | 2019-03-19 | 2022-03-22 | Microsoft Technology Licensing, Llc | Input/output data transformations when emulating non-traced code with a recorded execution of traced code |
US10949332B2 (en) | 2019-08-14 | 2021-03-16 | Microsoft Technology Licensing, Llc | Data race analysis based on altering function internal loads during time-travel debugging |
CN113329034B (zh) * | 2021-06-25 | 2021-12-07 | 广州华资软件技术有限公司 | 基于人工智能的大数据业务优化方法、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005423A1 (en) * | 2001-06-28 | 2003-01-02 | Dong-Yuan Chen | Hardware assisted dynamic optimization of program execution |
US20080189529A1 (en) * | 2007-02-01 | 2008-08-07 | International Business Machines Corporation | Controlling instruction execution in a processing environment |
CN101278265A (zh) * | 2005-09-30 | 2008-10-01 | 英特尔公司 | 使用用户级控制机制进行剖析 |
CN101952806A (zh) * | 2007-12-18 | 2011-01-19 | 格罗方德半导体公司 | 用于设定运行于处理器上的程序软件之机制 |
Family Cites Families (139)
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 |
JP3318121B2 (ja) * | 1994-08-04 | 2002-08-26 | 富士通株式会社 | 仮想計算機システム |
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 |
JPH09265407A (ja) * | 1996-03-29 | 1997-10-07 | Hitachi Ltd | 仮想プロセッサシステムのプログラム走行制御方法 |
JPH09282196A (ja) * | 1996-04-18 | 1997-10-31 | Hitachi Ltd | 複合論理プロセッサシステムのプログラム走行制御方式 |
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 |
US5960198A (en) | 1997-03-19 | 1999-09-28 | International Business Machines Corporation | Software profiler with runtime control to enable and disable instrumented executable |
US6631518B1 (en) | 1997-03-19 | 2003-10-07 | International Business Machines Corporation | Generating and utilizing organized profile information |
US6094729A (en) | 1997-04-08 | 2000-07-25 | Advanced Micro Devices, Inc. | Debug interface including a compact trace record storage |
US5978902A (en) | 1997-04-08 | 1999-11-02 | Advanced Micro Devices, Inc. | Debug interface including operating system access of a serial/parallel debug port |
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 |
US6374367B1 (en) | 1997-11-26 | 2002-04-16 | Compaq Computer Corporation | Apparatus and method for monitoring a computer system to guide optimization |
US6163840A (en) | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
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 |
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 |
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 |
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 |
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 |
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 |
US8245199B2 (en) | 2006-05-05 | 2012-08-14 | International Business Machines Corporation | Selectively marking and executing instrumentation code |
US20070260849A1 (en) | 2006-05-05 | 2007-11-08 | Chen Wen-Tzer T | Method and apparatus for executing instrumentation code using a target processor |
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 |
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 |
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 |
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 |
US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
KR20110070468A (ko) | 2009-12-18 | 2011-06-24 | 삼성전자주식회사 | 인스트루먼테이션 실행 장치 및 방법 |
US8453124B2 (en) | 2009-12-23 | 2013-05-28 | International Business Machines Corporation | Collecting computer processor instrumentation data |
US8301849B2 (en) | 2009-12-23 | 2012-10-30 | Intel Corporation | Transactional memory in out-of-order processors with XABORT having immediate argument |
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 |
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 |
-
2012
- 2012-03-16 US US13/422,596 patent/US9442824B2/en active Active
-
2013
- 2013-03-05 US US13/784,872 patent/US9400736B2/en active Active
- 2013-03-06 JP JP2014543664A patent/JP6095682B2/ja active Active
- 2013-03-06 EP EP13762008.4A patent/EP2825965B1/en active Active
- 2013-03-06 WO PCT/JP2013/001412 patent/WO2013136726A1/en active Application Filing
- 2013-03-06 CN CN201380014698.6A patent/CN104205064B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005423A1 (en) * | 2001-06-28 | 2003-01-02 | Dong-Yuan Chen | Hardware assisted dynamic optimization of program execution |
CN101278265A (zh) * | 2005-09-30 | 2008-10-01 | 英特尔公司 | 使用用户级控制机制进行剖析 |
US20080189529A1 (en) * | 2007-02-01 | 2008-08-07 | International Business Machines Corporation | Controlling instruction execution in a processing environment |
CN101952806A (zh) * | 2007-12-18 | 2011-01-19 | 格罗方德半导体公司 | 用于设定运行于处理器上的程序软件之机制 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108463808A (zh) * | 2015-11-16 | 2018-08-28 | Arm有限公司 | 事件触发的可编程预取器 |
CN106933665A (zh) * | 2017-03-09 | 2017-07-07 | 中国科学技术大学 | 预测mpi程序运行时间的方法 |
CN106933665B (zh) * | 2017-03-09 | 2020-06-26 | 中国科学技术大学 | 预测mpi程序运行时间的方法 |
CN111506384A (zh) * | 2019-01-31 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 模拟运算方法和模拟器 |
CN111506384B (zh) * | 2019-01-31 | 2022-12-09 | 中科寒武纪科技股份有限公司 | 模拟运算方法和模拟器 |
CN111581124A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 可缩短内文交换时间的方法及其半导体装置 |
CN112507180A (zh) * | 2020-12-11 | 2021-03-16 | 浙江中控技术股份有限公司 | 模拟机时间的转换方法、装置、电子设备及存储介质 |
CN112507180B (zh) * | 2020-12-11 | 2022-07-05 | 浙江中控技术股份有限公司 | 模拟机时间的转换方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2015515654A (ja) | 2015-05-28 |
JP6095682B2 (ja) | 2017-03-15 |
WO2013136726A1 (en) | 2013-09-19 |
US9442824B2 (en) | 2016-09-13 |
EP2825965A1 (en) | 2015-01-21 |
EP2825965A4 (en) | 2015-04-15 |
EP2825965B1 (en) | 2023-01-18 |
CN104205064B (zh) | 2016-12-14 |
US20130247012A1 (en) | 2013-09-19 |
US20130247011A1 (en) | 2013-09-19 |
US9400736B2 (en) | 2016-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN104169889A (zh) | 在事务执行模式中的运行时间检测采样 | |
CN104364769B (zh) | 处理器特性的运行时间检测监控 | |
TWI551986B (zh) | 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統 | |
CN104704474B (zh) | 用于管理的运行时间的基于硬件的运行时间检测设施 | |
CN104364772B (zh) | 控制一计算环境中的事务执行的方法及系统 | |
CN104380264B (zh) | 运行时间检测报告 | |
CN104412232B (zh) | 事务处理方法、系统、介质 | |
TWI534613B (zh) | 用於執行階段檢測導向取樣的計算機程式產品、方法及系統 | |
CN104364778A (zh) | 在事务处理中保存/恢复选择的寄存器 | |
CN104335181A (zh) | 事务诊断区块 | |
CN104335184A (zh) | 事务执行分支指示 | |
CN104335185A (zh) | 受限事务执行 | |
CN104335177A (zh) | 有选择地控制事务处理中的指令执行 | |
CN104350468A (zh) | 非事务存储指令 | |
CN104169887A (zh) | 通过指令操作码的运行时间检测间接采样 | |
CN104350474A (zh) | 事务执行内的随机测试 | |
CN104350462A (zh) | 事务中止指令 | |
CN104335186A (zh) | 处理器辅助设施 | |
CN104364771A (zh) | 修改来自较小特权状态的运行时间仪表控制 | |
CN104380246A (zh) | 事务执行中的程序中断筛选 | |
CN104364768A (zh) | 确定运行时间仪表控制的状态 | |
CN104169886A (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 |