CN104364771B - 修改来自较小特权状态的运行时间仪表控制 - Google Patents
修改来自较小特权状态的运行时间仪表控制 Download PDFInfo
- Publication number
- CN104364771B CN104364771B CN201380014675.5A CN201380014675A CN104364771B CN 104364771 B CN104364771 B CN 104364771B CN 201380014675 A CN201380014675 A CN 201380014675A CN 104364771 B CN104364771 B CN 104364771B
- Authority
- CN
- China
- Prior art keywords
- control
- run time
- time instrument
- instruction
- mric
- 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
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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例涉及在较小的特权状态下修改运行时间仪表控制(MRIC)。读取MRIC指令,该MRIC指令包括运行时间仪表控制块(RICCB)的地址。基于包含在MRIC指令中的地址读取RICCB。RICCB包括用于修改处理器的运行时间仪表控制的子集的值。运行时间仪表控制的子集包括运行时间仪表程序缓冲器(RIB)位置的运行时间仪表程序缓冲器当前地址(RCA)。该RIB保持在程序执行期间由处理器所确认的事件的运行仪表信息。RICCB的值被加载到运行时间仪表控制。基于被加载到运行时间仪表控制中的值,事件信息被提供给RIB。
Description
技术领域
本发明一般地涉及在计算环境内的处理,并且更具体地,涉及修改来自较小特权状态的运行时间仪表控制。
背景技术
计算机处理器使用日益复杂的分支预测和指令高速缓冲器逻辑执行程序或指令流。这些处理已被引入来提高指令吞吐量,并因此提高处理性能。引入用于改善性能的逻辑使其很难肯定地预测特定软件应用程序将如何在计算机处理器上执行。在软件开发过程中,经常存在的功能和性能之间的平衡。软件在起始于正在执行软件的底层硬件的一个或多个抽象级别处被执行。当硬件被虚拟化时,附加的抽象层被引入。由于引入性能增强逻辑和各种抽象层,很难透彻了解到在执行程序时在硬件级别处实际正在发生什么。如果没有这个信息,软件开发者使用更抽象的方法,诸如执行持续时间、存储器使用情况、线程的数量等,用于优化软件应用。。
发明内容
技术问题
当可以获得硬件具体信息时,其通常在事后被提供给开发者,并且其在高级别上以聚合方式提供,和/或点缀有其他散程序和操作***的活性,使其难以识别可能影响该软件应用的效率和准确度的问题。
问题解决方案
实施例包括一种用于修改来自较小特权状态的的运行时间仪表控制(MRIC)的方法、***以及计算机程序产品。取所述MRIC条指令。该MRIC指令包括运行时间仪表控制块(RICCB)的地址。该RICCB基于包括在该MRIC指令内的地址被取出。该RICCB包括用于修改处理器的运行时间仪表控制的子集的值。该运行时间仪表控制的子集包括运行时间仪表缓冲器(RIB)位置的运行时间仪表程序缓冲器当前地址(RCA)。所述RIB保存在程序执行期间由处理器识别的事件的运行时间仪表信息。所述RICCB的值被加载到运行时间仪表控制。基于被加载在运行时间仪表控制中的值,事件信息提供给所述RIB。
通过本发明的技术可实现附加特征和优点。本发明的其他实施例和各方面在本文中将被详细描述,并且被认为是所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,请参考说明书和附图。
附图说明
被认为是本发明的主题被特别指出并在说明书的结尾处的权利要求书中被清楚地要求保护。根据结合附图的以下详细描述可清楚本发明的前述和其它特征以及优点,其中,
图1A是示出实施例中的示例主计算机***的示意图;
图1B是示出实施例中的示例仿***计算机***的示意图;
图1C是示出实施例中的示例计算机***的示意图;
图2是示出在实施例中的示例性计算机网络的示意图;
图3是示出在实施例中的计算机***的元件的示意图;
图4A示出了在实施例中的计算机***的详细元件;
图4B示出了在实施例中的计算机***的详细元件;
图4C示出了在实施例中的计算机***的详细元件;
图5示出根据实施例的处理器的用于运行时间仪表的***的示意图;
图6示出了在实施例中的修改运行时间仪表控制(MRIC)指令;
图7示出了实施例中用于发起来自较小特权状态的程序的MRIC指令的处理流程;
图8示出了另一个实施例中用于发起来自较小特权状态程序的MRIC指令的处理流程;
图9示出了在实施例中的包括可由特权状态设定的控制的运行时间控制仪表控制块(RICCB)的一部分;
图10示出了在实施例中当半特权位(K)被设置为1时RICCB控制块的一部分;
图11示出了在实施例中当半特权位(K)被设置为0时RICCB控制块的一部分;
图12示出了根据实施例的报告群组;以及
图13示出了在实施例中计算机程序产品。
具体实施方式
本发明的实施例是一种,用于更新来自较小特权状态的运行时间仪表控制的子集的***、方法和计算机程序产品。
在一个实施例中,较小的特权(lesser-privileged)状态程序被允许基于当前的运行时间仪表控制的有效性、运行时间仪表控制的当前状态,以及基于表示较小特权状态配置被允许的标志(K),修改大多数或所有运行时间仪表控制。较小的特权状态的程序执行修改运行时间仪表控制(MRIC)指令来更新运行时间仪表控制。虽然基于运行时间仪表控制的许可设置所述MRIC指令允许更新大量的运行时间仪表控制,但是大部分运行时间仪表控制可以由较小特权状态程序使用MRIC指令来更新。
图1A示出了实施例中的主计算机***50的代表性组件。在计算机***中也可以采用组件的其它布置。代表性主计算机***50包括与主存储器(计算机存储器)2以及到存储设备11和用于与其它计算机或SAN和等通信的网络10的I/O接口进行通信的一个或多个处理器1。处理器1是符合具有架构的指令集和架构的功能的体系结构。处理器1可具有动态地址转换(DAT)3,用于将程序地址(虚拟地址)转换成存储器中的实际地址。DAT 3通常包括转换后备缓冲器(translation lookaside buffer(TLB))7,用于高速缓冲器一些转换,使得对计算机存储器2的块的后面的访问不需要地址转换的延迟。通常,高速缓冲器9用于计算机存储器2与处理器1之间。高速缓冲器9可以是分层的,具有可提供给多个CPU的大高速缓冲器以及在所述大容量高速缓冲器和每个CPU之间的更小更快的(较低级别的)高速缓冲器。在一些实施例中,低级别的高速缓冲器被划分,以提供单独的低级别的高速缓冲器用于取指令和数据的访问。在一个实施例中,由取指令单元4经由高速缓冲器9从计算机存储器2取出指令。该指令在指令解码单元6被解码并且(与一些实施例中其他的指令一起)被分派到指令执行单元8。通常,采用几个指令执行单元8,例如算术执行单元、浮点执行单元以及分支指令执行单元。指令是由指令执行单元8执行,根据需要访问来自指定的指令寄存器或计算机存储器2的操作数。如果操作数是从计算机存储器2存取(加载或存储)时,载荷存储单元5通常在正被执行的指令控制下处理访问。指令可以在硬件电路中或在内部微码(固件)、或者由两者的组合来执行。
在图1B提供了对仿***机***21的描述,其仿***机架构的主机***,诸如图1的主机***50。在仿***计算机***21中,主机处理器(CPU)1是仿***机处理器(或虚拟主机处理器)29,并且包括本机(native)处理器27,其具有与主计算机***50的主机处理器1不同的本地指令集架构。仿***计算机***21具有可访问本机处理器27的存储器(memory)22。在一个实施例中,存储器22被划分成计算机存储器2部分和仿真例程存储器23的部分。根据主计算机的体系结构,计算机存储器2可用于仿***计算机***21的程序。本机处理器27执行一个体系架构的结构化的指令集的本机指令,而不是所述仿真处理器29的本机指令(所述本机指令从仿真例程存储器23中得到),并且可以通过采用在序列与访问/解码例程中获得的一个或多个指令从计算机存储器2的程序访问用于执行的主机指令,所述序列与访问/解码例程可以解码被访问的主机指令以确定用于仿真被访问的主机指令的功能的本机指令的执行程序。为主计算机***50架构定义的其他设施(facility)可以通过结构化的设施例程,例如包括诸如作为通用寄存器的设施、控制寄存器、动态地址转换和输入/输出(I/O)子***支持以及处理器高速缓冲器,来仿真。仿真例程还可以利用在本机处理器27(如通用寄存器和虚拟地址的动态转换)可获得的功能,来提高仿真例程的性能。专用硬件和空载(off-load)引擎也可以被提供用于帮助本机处理器27模仿主计算机***50的功能。
在大型机中,架构的机器指令由程序编制器(programmer)借助编译器应用使用,程序编制器现在通常是“C”程序编制器。存储在存储介质中的这些指令可在z/架构体系IBM服务器被本地地(natively)执行,或者在执行其他架构体系的机器中执行。它们可以在现有和未来的IBM大型机服务器中和在IBM的其他机器(例如pSeries(R)服务器和xSeries(R)服务器)上被模仿。他们可以在各种使用由IBM(R)、Intel(R)、AMDTM、Sun Microsystem以及其他公司生产机器上的运行Linux的机器中被执行。除了在Z/Architecture(R)下在硬件上执行之外,与由Hercules、UMX、Fundamental Software公司(FSI)或Platform Solutions公司(PSI)使用的其中执行通常处于仿真模式的的仿真的机器一样,可是使用Linux。在仿真模式下,仿真软件是由本机处理器执行以便模仿仿真处理器的体系结构。
仿***计算机***21的一个或多个组件在“IBM(R)z/Architecture Principlesof Operation(IBM(R)的z/操作的结构原理)(公开号SA22-7932-08,第9版,2010年8月”有进一步描述,其在此通过引用将其全部并入本文中。IBM是美国纽约阿蒙克的国际商业机器公司的注册商标。此处使用的其他名称为国际商业机器公司或其他公司的注册商标,商标或产品名称。
本机处理器27通常执行存储在包括固件或本机操作***的仿真例程存储器23中的仿真软件,以便进行仿真处理器的模仿。所述仿真软件负责获取和执行所述仿真的处理器体系结构的指令。仿真软件维持仿真程序计数器以便跟踪指令的边界。仿真软件可以一次取一个或多个仿真机器指令并由本机处理器27所述一个或多个仿真机器指令转换成用于执行本机机器指令的相应群组。这些转换的指令可以被高速缓冲器使得更快的转换可以完成。仿真软件维护仿真处理器体系结构的体系结构规则,以确保用于仿真处理器编写的操作***和应用正确地进行操作。此外,仿真软件提供仿真处理器体系结构所识别的资源,包括但不限于:控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换函数、中断机制,上下文切换机制,计时(TOD)时钟以及到I/O子***的架构接口,使得设计来在仿真处理器29上运行的操作***或应用能够在具有仿真软件的本机处理器27上运行。
被仿真的特定指令被解码,并且子程序被调用以便执行单个指导的功能。在理解优选实施例的描述之后,模仿仿真处理器29的功能的仿真软件功能以例如“C”子程序或驱动程序或用于为本领域技术人员的技能范围内的特定硬件提供驱动程序的一些其它方法被实现。
在一个实施例中,本发明可以通过软件(有时称为许可内部代码、固件、微代码、毫码、微微码等,其中任何一个将与本发明一致)来实施。参照图1A,实施本发明的软件程序代码由也被称为主计算机***50的CPU(中央处理单元)1的处理器从诸如长期存储介质、CD-ROM驱动器磁带驱动器或硬盘驱动器的存储设备11中的存取。该软件程序代码可以实施在用于数据处理***中的任何各种的已知介质上,诸如软盘、硬盘驱动器或CD-ROM。该代码可分布在这样的介质,或者可以通过到其他***的用户所使用的其他计算机***的网络10从计算机***的计算机存储器2或存储器被分配给用户。
或者,程序代码可以实施在计算机存储器2中,并由处理器1使用处理器总线(未示出)访问。这样的程序代码包括操作***,其控制各种计算机组件和一个或多个应用程序的功能和相互作用。程序代码通常从诸如存储设备11的致密介质翻存(page)到计算机存储器2,其中它可用于所述处理器1的处理。用于在物理介质上实施存储器中的软件程序代码、和/或经由网络分发软件代码的技术和方法是众所周知的,这里不作进一步讨论。程序代码,在被创建并存储在有形介质(包括但不限于,电子存储模块(RAM)、闪存、光盘(CD)DVD光盘磁带等)上时,通常被称为“计算机程序产品”。计算机程序产品介质通常优选是在计算机***中可由处理电路读取用于由处理电路执行。
图1C示出了其中可以实施本发明的具有代表性的工作站或服务器的硬件***。图1C的***100包括代表性的基础计算机***101,诸如个人电脑、工作站或服务器,其包括可选的***设备。基础计算机***101包括一个或多个处理器106和用来根据已知技术连接和启用在所述一个或多个处理器106与基础计算机***101的其它组件之间的通信中的总线(未示出)。总线将处理器106连接到存储器105和长期存储器107,长期存储器107可以包括例如硬盘驱动器(包括例如任何磁介质、CD、DVD和闪存)或磁带驱动器。基础计算机***101还可以包括用户接口适配器,其通过总线将所述一个或多个处理器106连接到一个或多个接口设备,诸如键盘104、鼠标103、打印机/扫描仪110和/或其他接口设备,其可以是任何用户接口设备,诸如触摸屏、数字化输入板等。该总线还将一个或多个处理器经由显示适配器连接到显示装置102,诸如LCD屏幕或监视器。
基础计算机***101可以通过能够与网络109通信108的网络适配器的方式与其它计算机或计算机的网络进行通信。示例网络适配器为通信信道、令牌环、以太网或调制解调器。或者,基础计算机***101可使用无线接口,诸如蜂窝数字分组数据(CDPD)卡,进行通信。基础计算机***101可以用在局域网(LAN)或广域网(WAN)中与其它计算机相关联,或基础计算机***101可以是在与另一台计算机等的客户机/服务器布置中的客户机。
图2示出了其中可以实施本发明的数据处理网络200。数据处理网络200可包括多个单独的网络,诸如无线网络和有线网络,其中每一个可以包括多个独立的工作站201、202、203、204和/或图1C的基础计算机***101。另外,如本领域技术人员将理解的,可以包括一个或多个LAN,其中LAN可以包括多个连接到主机处理器的智能工作站。
程序代码111可以实施在所述存储器105中,并由处理器106使用处理器总线访问。这样编程代码包括操作***,其控制各种计算机组件和一个或多个应用程序112的功能和相互作用。程序代码通常从长期存储107翻存(page)到高速存储器105,在其中程序代码可用于所述处理器106的理由。用于在物理介质上实施存储器中的软件编程代码和/或经由网络分发软件代码的技术和方法是众所周知的,这里不作进一步讨论。创建并存储在有形介质(包括但不限于,电子存储模块(RAM)、闪存、光盘(CD)、DVD光盘、磁带等)上的程序代码通常被称为“计算机程序产品”。计算机程序产品介质通常优选是在计算机***中可由处理电路读取用于由处理电路执行。
对处理器而言最容易获得的高速缓冲器(通常比处理器的其他高速缓冲器更快且更小)是最低的(L1或级1)高速缓冲器并且主存储器(主存储器)是最高级别的高速缓冲器(如果有3个级别的话,则是L3)。最低级高速缓冲器通常分为保持待执行的机器指令的指令高速缓冲器(I-高速缓冲器)和保存数据操作数的数据高速缓冲器(D-高速缓冲器)。
仍然参照图2,网络还可以包括大型计算机或服务器,诸如网关计算机(客户机服务器)206或应用服务器(远程服务器)208,其可访问数据存储库,并且也可以从工作站205被直接访问。网关计算机206作为每个网络207的入口点。当将一个网络连接协议连接到另一个时需要网关。网关计算机206优选地可通过通信链路耦合到另一个网络(例如因特网207)。网关计算机206还可以使用的通信链路直接耦合到一个或多个工作站101、201、202、203以及204。网关计算机可以利用可从国际商业机器公司获得的IBM eServerTM zSeries(R)z9(R)S服务器来实现。
在一个实施例中,实施本发明的软件编程代码由基础计算机***101的处理器106从长期存储介质存取,长期存储介质诸如图1C的长期存储器107。1C。软件编程代码可实施在用于数据处理***的任何各种已知介质中,诸如软盘、硬盘驱动器或CD-ROM。该代码可分布在这样的介质上,或者可以通过到其他***的用户所使用的其他计算机***的网络从计算机***的计算机存储器或存储器被分配给用户210和211。
参照图3,描述了处理器106的示例性处理器实施例。高速缓冲存储器303中的一个或多个级别被用到缓冲存储器块以便提高处理器106的性能。高速缓冲器303是可能被使用的存储器数据的高速度缓冲保存高速缓冲器行。典型的高速缓冲器行是64、128或256字节的存储器数据。在一个实施例中,单独的高速缓冲器被用于高速缓存指令而不是用于高速缓冲器数据。高速缓冲器一致性(在存储器和高速缓冲器中行的拷贝的同步)通常是由本领域中公知的各种“监听(snoop)”算法提供。主存储装置,诸如处理器***的存储器105,通常被称为高速缓冲器。在具有4个级别的高速缓冲器的处理器***303中,存储器105有时被称为级别5(L5)的高速缓冲器,因为它通常是更快并且只保持可用于计算机***的非易失性存储器的一部分(DASD、磁带等)。存储器105“高速缓存(cache)”由操作***被翻存进出存储器105的数据的页面。
程序计数器(指令计数器)311跟踪要执行的当前指令的地址。在z/Architecture处理器中的程序计数器是64位,并可以截断为31或24位以支持先前的寻址局限。程序计数器典型地包括在计算机的PSW(程序状态字)中,以便其在上下文切换期间持续。因此,进程中的程序(具有程序计数器值)可例如由操作***(即,从程序环境到操作***环境的上下文切换)来中断。程序的PSW在程序不激活时维持程序计数器值,并且在操作***执行时使用操作***的程序计数器(在PSW中)。在一个实施例中,程序计数器增加等于当前指令的字节数的量。精简的指令集计算(RISC)指令通常固定长度,而复杂指令集计算(CISC)指令通常是可变长度。IBMz/Architecture的指令是具有长度为2、4、6字节的CISC指令。程序计数器311通过例如上下文切换操作或分支指令的分支选择操作来修改。在上下文切换操作中,当前程序计数器值与其他关于执行的程序的状态信息(例如条件码)一起存储在PSW(程序状态字)中,并且加载新的程序计数器值来指向要执行的新的程序模块的指令。通过将分支指令的结果加载入程序计数器311,执行分支选择操作以便允许程序进行判断或在程序中进行循环。
在一个实施例中,使用取指令单元305来代表处理器106提取指令。取指令单元305提取“下一顺序指令”、分支选择指令的目标指令、或上下文切换后的程序的第一指令。在一个实施例中,取指令单元305基于可能使用预取指令的概率使用预提取技术来推测性预取指令。例如,取指令单元305可提取16字节的指令,其包括下一顺序指令和附加的字节的另外顺序指令。
所提取的指令于是由处理器106来执行。在实施例中,提取的指令传输至取指令单元305的解码/分派单元306。解码/分派单元306解码该指令并将关于解码的指令的信息转发至适当的执行单元307、308和/或310。执行单元307从取指令单元305接收关于解码的算术指令的信息,并根据该指令的操作码(opcode)来对操作数执行算术操作。从存储器105、结构寄存器309或从被执行的指令的即时字段(immediate field)将操作数提供给执行单元307。在存储时,执行的结果可存储在存储器105、或结构寄存器309、或其他机器硬件(例如控制寄存器、PSW寄存器等)中。
处理器106典型地具有用于执行指令的功能的一个或多个执行单元307、308和310。参照图4A,执行单元307可利用接口逻辑407与结构寄存器309、解码/分派单元306、负载/存储单元310和其它处理器单元401通信。执行单元307可使用若干寄存器电路403、404和405以保持关于算术逻辑单元(ALU)402将操作的信息。ALU402执行诸如加、减、乘、除以及诸如与、或、异或(XOR)、旋转和移位的逻辑函数的算术操作。在一个实施例中,ALU402支持设计相关的专用操作。其他电路可提供其他结构功能408,例如包括条件码和恢复支持逻辑。典型地ALU操作的结果保持在输出寄存器电路406中,其可将该结果转发至各种其他处理功能。在其他实施例中,存在许多处理器单元的设置,本说明书仅旨在提供一个实施例的代表性理解。
例如,ADD指令将在具有算术和逻辑功能的执行单元307中执行,而浮点指令将在具有专用浮点性能的例如浮点执行单元(未示出)中执行。优选地,执行单元通过对操作数执行操作码定义函数对由指令识别的操作数进行操作。例如,可以通过执行单元307对由指令的寄存器字段识别的两个寄存器309中发现的操作数而执行ADD指令。
执行单元307执行对于两个操作数的算术加法,并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元307优选地使用算术逻辑单元(ALU)402,其能够执行诸如移位、旋转、与、或和异或的各种逻辑功能以及包括任意加、减、乘和除的各种算术功能。一些ALU 402被设计用于缩放操作,一些用于浮点。在一些实施例中,可取决于架构,数据是大尾(endian)(其中在最高字节地址处是最低有效字节)或小尾(endian)(在最低字节地址处是最高有效字节)。IBM z/Architecture是大尾。取决于架构,符号字段可以是符号和量级、1的补码或2的补码。因为2的补码中的负数值或正数值仅需要在ALU中进行加法,所以ALU 402不需要设计减法性能,因此2的补码数是有利的。数通常以速记来描述,其中12位字段定义4096字节块的地址,并通常描述为例如4K字节(千字节)块。
参照图4B,用于执行分支指令的分支指令信息通常发送到分支单元308,其在其他条件操作完成之前使用诸如分支历史表432的分支预测算法来预测该分支的结果。当前分支指令的目标在条件操作完成之前将被提取并被推测地执行。当条件操作完成时,推测执行的分支指令基于条件操作的条件以及推测的结果或完成或丢弃。如果条件码满足分支指令的分支要求,则典型的分支指令可以检测条件码和到目标地址的分支,可基于包括在寄存器字段发现的数的一些数或例如该指令的即时字段来计算目标地址。在一个实施例中,分支单元308可使用具有多个输入寄存器电路427、428和429以及输出寄存器电路430的ALU426。分支单元308可与例如通用寄存器309、解码派发单元306或其他电路425进行通信。
一组指令的执行可因为各种原因而中断,例如包括由操作***发起的上下文切换、导致上下文切换的程序异常或故障、导致上下文切换的I/O中断信号或多个程序(在多线程环境下)的多线程活动。在一个实施例中,上下文切换行为存储关于当前执行的程序的状态信息,然后加载关于调用的另一个程序的状态信息。状态信息可存储在例如硬件寄存器或存储器中。状态信息包括指向要执行的下一指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文切换活动可通过硬件电路、应用程序、操作***程序或固件代码(微码、微微码或许可的内部代码(LIC))单独或组合来执行。
处理器根据指令定义方法访问操作数。该指令可使用指令的一部分的值来提供即时操作数,可提供明确指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄存器字段。该指令可使用由作为操作数的操作码字段识别的隐含寄存器。该指令可使用操作数的存储器位置。操作数的存储器位置可由寄存器、即时字段、或寄存器和即时字段的组合来提供,如z/Architecture长位移设施所例示的那样,其中指令定义基址寄存器、变址寄存器和即时字段(位移字段),他们被加到一起以提供存储器中的操作数的地址。除非另有指定,则在此位置典型地意味着在主存储器(主存储设备)中的位置。
参考图4C,处理器使用加载/存储单元310访问存储器。该加载/存储器单元310可通过经由高速缓冲器/存储器接口获得存储器中的目标操作数的地址以及在架构寄存器309中或另一个存储器位置中加载操作数来执行加载操作,或可通过获得存储器中的目标操作数的地址以及将从架构寄存器309或另外的存储器位置中获得的数据存储在存储器中的目标操作数位置来执行存储操作。加载/存储单元310可以是推测的并可以相对于指令序列是无序的顺序访问存储器,然而,加载/存储单元310对顺序执行指令的程序维持显现。加载/存储单元310可与架构寄存器309、解码/分派单元306、高速缓存器/存储器接口303或其他元件455通信,并包括各种寄存器电路、ALU 458和控制逻辑463以计算存储地址并提供流水线(pipeline)以保持有序操作。一些操作可以是无序的,但是加载/存储单元提供正如在本领域已知的那样的使无序操作对于程序显现为一直在有序执行。
优选地,应用程序“看到”的地址经常称为虚拟地址。虚拟地址有时称为“逻辑地址”或“有效地址”。这些虚拟地址是虚拟的,因为其通过诸如图3的DAT 312的各种动态地址转换(DAT)312技术转换中的一个重定向到物理存储器位置,该技术包括但不限于,使用偏移值对虚拟地址加前缀、通过一个或多个转换表转换虚拟地址,该转换表优选地单独或组合包括至少一个段表和页面表,段表具有指向该页面表的入口。在z/Architecure中,提供转换的层级,其包括区域第一表格、区域第二表格、区域第三表格、段表和可选页面表。通常通过使用转换后备缓冲器(TLB)来改进地址转换的性能,该TLB包括将虚拟地址映射至关联的物理存储器位置的表项。当DAT 312使用转换表格转换虚拟地址时创建表项。于是之后使用虚拟地址可使用快速TLB的表项而非慢顺序转换表格访问。可由包括LRU(近来最少使用)的各种替代算法来管理TLB内容。
在处理器106是多处理器***中的处理器的情况下,每个处理器负责为了一致性而保持诸如I/O、高速缓存、TLB和存储器的共享的资源互锁。在一个实施例中,在维持缓存一致性中将使用“监听”技术。在监听环境中,每个缓存线可被标记为共享状态、专用状态、改变状态、无效状态等中的任一状态以便于共享。
图3的I/O单元304向处理器106提供附到***设备(例如包括盒带、盘、打印机、显示器和网络)的装置。I/O单元304经常由软件驱动器提供给计算机程序。在诸如来自IBM的z/Series的大型机中,信道适配器和开放***适配器是提供操作***和***设备之间的通信的大型机的I/O单元。
仪表数据是与处理器106的操作相关的数据。在一个实施例中,对仪表数据和其他***级度量的访问可以被限制或不可用。计算机处理器在特权状态(或管理状态)和较小的特权状态(或问题状态)下运作。在特权状态下,程序可通过特权操作访问所有的***资源(例如,访问所有控制寄存器和管理(supervisor)存储空间)。特权状态也被称为特权模式或管理员模式。在计算机处理器上执行的操作***可以在特权状态下工作。较小的特权状态为非特权状态,其中对***资源的访问受到限制。例如,在较小的特权状态运行的应用程序可能对控制寄存器的访问收到有限或不能访问对控制寄存器,并且只可以访问由操作***分配给应用程序的用户存储器空间。较小的特权状态通常被分配给在操作***的控制下执行的应用程序,并且非特权操作可以在较小的特权状态下进行。较小的特权状态也被称为问题状态、问题模式或用户模式。
对以较小的特权状态执行的程序不可写访问的一个这种受限制资源为程序状态字(PSW)。PSW可包含要执行的下一指令的程序计数器值、可由分支指令使用条件码字段、用于指示仪表是被启用还是被禁用的仪表控制字段、以及用于控制指令排序和确定计算机处理器的状态的其他信息,该状态包括分配给该程序的特权状态。在多线程处理环境中,多个程序共享或时间片、可用计算机处理器的能力。每个程序有上下文信息,该信息包括相关的PSW、,用于访问分配给该程序的主存储器的地址转换表中的原始地址、一组通用寄存器当前值、控制寄存器、浮点寄存器等。当前活动,或控制PSW,被称为当前PSW。其管辖当前正在执行的程序。计算机处理器具有中断能力,其允许计算机处理器响应于例外条件和外部刺激而上下文快速切换到另一个程序。当出现中断时,对于特定类别的中断,计算机处理器将当前PSW置于所分配的存储位置,该位置被称为旧PSW位置。计算机处理器从第二分配的存储位置读取新的PSW。这个新的上下文确定要执行的下一程序。在一个实施例中,这些存储单元被设在计算机处理器可访问的存储器位置。当计算机处理器已经完成对中断的处理时,处理中断的程序可以重新加载包括旧PSW的旧上下文,使其再次成为当前PSW,使得被中断的程序可以继续。
PSW的字段可以明确地(例如,当指令执行读取部分PSW位)或隐含地(例如,在取指令、取操作数、地址生成计算、地址生成源等时)被引用。通常进行的明确引用在执行时进行,而隐式引用通常指令执行(即,取指令、指令解码、执行时间以及完成时间)期间在流水线的不同阶段进行。PSW中的各个字段可以彼此独立地被引用或更新。
在一个实施例中,通过操纵上下文,操作***控制计算机的处理资源,包括由计算机处理器启用运行时间仪表。在操作***执行期间,由操作***执行的任何软件应用启用或禁用所述运行时间仪表。运行时间仪表的启用/禁用状态被保存为PSW中的与程序关联的上下文信息。
运行时间仪表(RI)设施可以结合在实现z/Architecture的型号上。当RI设施被安装和启用时,在程序执行过程中数据被收集到CPU内的一个或多个收集缓冲器,然后被报告给程序缓冲器。所存储的每个单元信息被称为一个报告群组。一个报告群组的内容包括多条记录,其内容表示在程序执行期间由CPU确认的事件。
当运行时间仪表设施安装在配置中时,PSW字段(RI位)启用运行时间仪表。运行时间仪表控制的有效性判定接通RI位的能力,但是,当RI为1时,CPU控制是有效的并且运行时间仪表被启用。运行时间仪表设施可以包括以下指令:负载运行时间仪表控制、修改运行时间仪表控制、运行时间仪表发射、运行时间仪表的下一个、运行时间仪表关闭、运行时间仪表开启、存储运行时间仪表控制以及测试运行时间仪表控制。
负载运行时间仪表控制(LRIC)指令对管辖运行时间仪表的运行时间仪表控制进行初始化。修改运行时间仪表控制(MRIC)指令修改最初由LRIC建立的所有运行时间仪表控制或运行时间仪表控制的子集。运行时间仪表发射(RIEMIT)指令通过将通用寄存器的值存储到收集缓冲器中来收集通用寄存器的值。
运行时间仪表的下一个(RINEXT)指令执行RINEXT后的下一个顺序指令(NSI)的定向采样。运行时间仪表关闭(RIOFF)指令禁用运行时间仪表。运行时间仪表开启(RION)指令启用运行时间仪表。存储运行时间仪表控制(STRIC)指令将运行时间仪表控制的当前值放置到指定存储位置。测试运行时间仪表控制(TRIC)指令检查运行时间仪表控制。如果有效,则设置控制改变指示灯的状态。
运行时间仪表设施包括用于使得测量警报外部中断待决的能力。由运行时间仪表收集并被报告给程序缓冲器的一些信息是依赖于型号,并因此没有定义。由运行时间仪表设施提供的采样和数据是用于性能特征的统计估计、基本上是准确的、并且可能不是可重复的。例如,不管采样模式如何,引发了例外或与某些***内部活动相关联的采样指令是否会导致报告群组的存储,以及如果被存储,包括在运行时间仪表的数据中的依赖型号的数据是否会受到影响,这是不可预测的。
收集缓冲器用于捕获一组记录,其内容报告在程序执行期间由处理器确认的事件。实例是:执行一个或多个所选取的分支、事项(transaction)执行中止事件、以及RIEMIT指令的操作数。RIEMIT指令的执行通过将通用寄存器的值存储到收集缓冲器来收集通用寄存器的值。附加数据可以被收集和/或存储在其它缓冲器,诸如指令-数据缓冲器。
报告受制于报告控制。当采样指令被识别时,每个报告控制开启对相应条件的检查。如果相应的条件存在,则形成并存储报告群组。没有开启报告控制或不存在用于已开启报告控制的相应条件,则不存储报告群组。关于样本指令所报告的数据从指令-数据缓冲器和其他依赖型号的源获得,并且随后用来创建该报告群组的一条或多条记录的内容,一条这样的记录就是一条指令记录。
可在报告群组存储中获取的记录类型包括:填充符、附加、开头、时间戳、指令、发射、TX中止、调用、返回以及转移。在收集缓冲器中有效记录的数量不足以填满当前报告-群组的尺寸的报告群组时,在报告群组中使用填充符记录。可在报告群组的附加部分使用附加记录。开头记录是第一个报告群组的第一个记录。时间戳记录被存储为除第一个报告群组之外的每个报告群组的记录0。在针对样本指令报告群组被存储为报告群组的最后一个记录时创建指令记录。发射记录由于RIEMIT的成功执行而被创建。事项(transaction-execution)-执行(TX)模式中止记录由隐含中止或执行事项中止指令而被创建。调用记录由于被归类为调用类型分支指令的分支指令的执行而被创建。个返回记录由于被归类为返回指令的返回型分支指令的执行而被创建。转移记录由于满足一定条件码规则的分支指令的执行被创建。
图5描述了用于可在实施中实现的处理器的运行时间仪表的***的示意图。在实施例中,***500包括中央处理单元(CPU),诸如图1的处理器106。在实施例中,处理器106是单一的处理器。在替代实施例中,处理器106是多核处理器的单一处理核。在一个实施例中,处理器106能够以不同的速度运行。
在一个实施例中,处理器106还包括寄存器510。寄存器510是硬件寄存器,其能够存储由处理器106使用的数据字。寄存器510包括一个或多个锁存器,其用于存储可由处理器106访问数据位。寄存器510可包括例如通用寄存器和控制寄存器。处理器106还包括与寄存器510通信的仪表模块506。该仪表模块506控制处理器106的仪表。该仪表模块506被配置为直接从处理器106收集仪表数据,诸如一个或多个所选取分支的执行路径、事务-执行中止事件、各种运行时间操作数、时间戳信息等等。仪表模块506从处理器106收集仪表数据,并在收集缓冲器508中存储该仪表数据。在一个实施例中,收集缓冲器508是循环(circular)缓冲器,其收集从该仪表模块506接收到的数据,并当所述循环缓冲器被填满时,其采用新数据覆写最老数据。
处理器106执行一个或多个操作***516和一个或多个应用518。所述一个或多个操作***516和一个或多个应用518存储在诸如硬盘驱动器、CD/ROM、闪存等的存储器520中,并且被加载到保留用于存储当前正在执行的操作***和/或应用的一个或多个有效片段的运行时间存储器504区域中的主存储器514,被调用页,其根据需要从所述存储520被加载到运行时间存储器504。在一个实施例中,每个操作***作为由管理程序(未示出)管理并且由处理器106执行的虚拟机来执行。
在一个实施例中,处理器106根据用于当前正在执行的操作***或应用主存储器514中的PSW数据512在寄存器510中加载PSW,并在例如寄存器510中设置一个或多个处理器的设置值。在一个实施例中,寄存器510中的PSW包括用于启用并控制仪表模块506的一个或多个位。
所述一个或多个应用518包括被编译为在具体操作***上执行的软件应用程序、在解释器(例如,JavaTM)上执行的解释代码、或者操作***支持线程(例如,进程管理、端口监督程序等)。所述一个或多个操作***516和/或所述一个或多个应用程序518的每一个可以执行指令以触发该仪表模块506来启动或停止所述收集仪表数据。
在一个实施例中,所述一个或多个应用程序518中的一个执行已确定为采样指令的指令,从而在完成样本指令的执行时创建采样点,并且然后使仪表模块506来将所述应用的所收集的数据从收集缓冲器508移动到该应用可以访问的主存储器514中的程序缓冲器522。主存储器514可以是现有技术中公知的任何可寻址存储器。在一个实施例中,主存储器514可以包括快速存取缓冲存储器,有时也被称为高速缓冲器。每个CPU可以具有相关的高速缓冲器。在另一个实施例中,主存储器514是动态随机存取存储器(DRAM)。在另一个实施例中,主存储器是存储设备,诸如计算机硬盘驱动器、或者可由应用访问的闪存。
运行时间仪表的功能是一个新的设施,其不仅可在实验室环境中使用,或用于离线分析,而且可在运行时间的程序中的有作用的(live)软件环境中使用,并受到程序控制。特权状态可以设置处理器106的控制,来管理运行时间仪表。所述运行时间仪表设施的灵活性通过提供用于改变来自较小的特权状态的大多数控制的能力而得以增强。较小的特权状态是最有可能从运行时间仪表获得好处的。较小的特权状态禁止改变某些设置,以便确保:(1)特权状态维持高于所有其运行的较小的特权状态程序的完整性和控制;(2)当操作***本身正在执行运行时间仪表时,较小特权状态可能或可能不执行运行时间仪表。如果管理者暂时禁用运行时间仪表,两者都可以执行运行时间仪表、节省其运行时间仪表的上下文、恢复较低特权状态程序的运行时间仪表上下文、然后采用重新启用的运行时间仪表启动较低特权状态程序。如果上下文变化不包括运行时间仪表控制的适当保存/恢复,在特权和较小特权状态两者中所收集的数据的冲突很可能是对运行时间仪表的数据的不可用的收集。
在一个实施例中,为了更好地支持较小特权状态程序,定义了修改运行时间指令(MRIC)指令。该MRIC指令是半特权指令,用于修改与运行时间仪表相关的某些处理器106控制,这些控制在寄存器510中是当前有效的。这些控制通过成功执行负载运行时间指令控制(LRIC)指令而在特权状态下被原始加载。
在下面详细说明用于与运行时间的仪表控制交互的MRIC指令的能力。如果MRIC指令的执行是成功的,则设在MRIC的执行成功完成时置由MRIC指令所指定的所有控制,否则,如果MRIC指令的执行不成功,那么没有控制受到影响。
图6描述了实施例中的MRIC指令。在一个实施例中,MRIC指令600包括:操作代码602和604(在特定情况下也称为“代码”或“分离操作码”)。操作码602和604识别到例如图5的处理器106的处理器的MRIC指令600。该MRIC指令600还包括根据基址寄存器字段606(B2)确定的操作数地址和被一起选取的一组位移字段608和610。基址寄存器加位移的内容之和表示运行时间仪表控制控制块(RICCB)的位置,它包括将由MRIC指令更新的运行时间仪表控制设置值。位移字段608和610表示从包含在由基址寄存器字段606所表示的基址寄存器的地址开始的位移,其和与RICCB排在一起。为清楚起见图6描绘了MRIC指令的实施例。本领域普通技术人员将理解到,在其它实施例中,该MRIC指令可以被不同地格式化和/或含有不同的操作数和操作码。
该MRIC指令600用于仅更新可由LRIC指令更新的控制的子集。由MRIC 600指令设置的控制限于已成功通过LRIC指令设置的控制的子集。运行时间仪表控制包括一些数字位,其控制MRIC指令的操作,包括用于更新各种运行时间仪表控制的能力。在一个实施例中,这些位被置于可仅由LRIC指令来设置的所有运行时间仪表控制的子集。
图7示出在实施例中发起来自较小的特权状态程序的MRIC指令的处理流程。在方框702中,MRIC指令由处理器读取。在方框704中,MRIC指令由处理器来执行。在方框706中,RICCB中的运行时间仪表控制值被加载到运行时间仪表控制。在方框708中,根据所加载的设置值,运行时间仪表控制提供信息给图5的程序缓冲器522。
图8描绘附加的实施例中发起来自从较小的特权状态程序的MRIC指令的处理流程。在一个实施例中,图8的处理流程由图1的仪表模块506执行。在块802,由较小的特权状态程序发出的MRIC条指令被读取。该MRIC指令包括操作码和操作数。该MRIC指令的操作数是包括将被用于更新运行时间仪表控制运行时间仪表控制值的RICCB。这些值包括,例如,用于管理运行时间仪表数据采样的细节的控制值、用于管理运行时间仪表数据收集的细节的控制值、用于管理报告到程序缓冲器的运行时间仪表数据的细节的控制值、在程序缓冲器的位置内的当前地址等等。
在框804处,确定是否允许执行MRIC。运行时间仪表S位(仅由LRIC控制)确定较低特权态程序是否允许执行MRIC指令。如果运行时间仪表S位被设置为1,则处理在框块806处继续。
在框806处,确定当前运行时间仪表控制的有效位(也称为V位)是否设置为1。有效位指示所述处理器中的一组运行时间仪表控制的有效性,因为它们是预先由LRIC指令集设置。如果当前的运行时间仪表控制是无效的(即先前LRIC指令是无效的),则在框818处MRIC指令的成功执行不会出现。在一个实施例中,MRIC指令的不成功执行不会改变先前设置并且运行时间控制保持在其先前值。有效位不能由MRIC指令更新。在框808处,MRIC指令所指向的RICCB被取出。
如果该有效位被设置为1(即运行时间仪表控制是有效的),则处理继续到框810。在框810中,如果k位是零(即,对运行时间仪表控制,在半特权状态下,较小的特权状态程序不执行),然后,在方框814中,无论是起始地址还是限制地址都不被更新,但允许由MRIC更新的所有其他控制都被更新。如果k位是1(即,对运行时间仪表控制,在半特权状态下,较小的特权状态程序执行),那么,在框812中,所有允许由MRIC更新的控制被更新,包括原始地址和限制地址。
图9描述了在实施例中包括可由特权状态设定的控制的运行时间控制仪表控制块(RICCB)的一部分。控制块部分900可以包括除了参照图9描述的那些值之外的附加值。对控制块部900的修改可以由LRIC指令来执行。
控制块部分包括有效位902(V位)。当有效位902是预先由LRIC指令设置时,有效位902表示处理器中的一组运行时间仪表控制的有效性。控制块还包括S位904,它是用来确定较小特权状态程序是否被允许执行该MRIC指令。K位906表示,针对运行时间仪表控制,诸如运行时间仪表控制的原始地址以及限制地址,较小的特权状态程序是否被允许在半特权状态下执行。H位908确定所述地址控制(即原始地址、限制地址、当前地址)是否是指主主虚拟地址空间或家庭(home)虚拟地址空间。0位910被忽略,并被视为0。
较小的特权状态的采样报告控制位912(Ps位)用于与较小的特权状态程序相结合。当在较小的特权状态且在运行时间仪表控制中的Ps位912为零时,运行时间仪表控制的报告控制在运行时间仪表被启用时被忽略,并因而不会导致将被存储的报告群组。当在较小的特权状态下且运行时间仪表控制中的Ps位912是一时,该报告控制根据其定义的功能被校验和使用。
管理程序(supervisor)-状态采样报告控制位914(Qs位)用于与管理状态程序结合使用。当在管理状态和运行时间仪表控制中的Qs位914为零时,运行时间仪表控制的报告控制在运行时间仪表被启用时被忽略,因此不会导致报告群组将被存储。当在管理态和运行时间仪表控制中的Qs位914为一时,则报告控制根据其定义的功能被检查和使用。
较小的特权状态收集缓冲器控制位916(Pc位)控制更新图5的收集缓冲器508。当在较低特权的状态和运行时间仪表控制中的Pc位916为零时,运行时间仪表控制的收集缓冲器控制在运行时间仪表被启用时被忽略,并且收集缓冲器508的更新被阻止。当在较小的特权状态,并运行时间仪表控制中的Pc位916是1时,收集缓冲器控制根据其定义的功能被检查和使用。
管理状态集合缓冲器控制位918(Qc位)控制更新收集缓冲器508。当在管理状态和运行时间仪表控制中的Qc位918是零,运行时间仪表控制的收集缓冲器控制在运行时间仪表被启用时被忽略,并且防止更新收集缓冲器508。当在管理态和运行时间仪表控制中的Qc位918是1时,则所指示的收集缓冲器控制是根据其定义的功能被检查和使用。
G位920是运行时间仪表暂停中断的待决控制,也称为暂停中断。
如果G位920为零,暂停中断未待决。
如果G位902为一,暂停中断待决。当程序缓冲器522中的第一个报告群组被写入时,G位920被设置为零。也就是说,当程序缓冲器的起始地址等于该程序缓冲器的限制地址时,G位920被设置为零。当试图存储程序缓冲器522的其他报告群组而不是第一个报告群组时,如果在运行时间仪表停止条件不存在,则G位920被设置为零,并且存储报告群组。当试图存储程序缓冲器522的其他报告群组而不是第一个报告群组时,如果在运行时间仪表停止条件确实存在,G位920被设置为1,并且不存储报告群组。
U位922是用于缓冲器充满中断和停止中断的启用控制。当U位922为零,中断请求的生成被禁用,并且如果待决,则保持待决。
L比特924是缓冲器充满中断的待决控制。当L位924是零,则缓冲器充满中断未待决。当L位924是一,则缓冲器充满中断正待决。
密钥字段926是一个4位无符号整数,其值被用作用于存储报告群组的存储保护字段。仅在存储密钥和用于存储访问的请求相关联的访问密钥相匹配时报告群组的存储被允许,并且在存储密钥的访问密钥匹配或当存储密钥的取回保护为零时提取被允许。存储密钥的四个访问控制位等于访问密钥或当访问密钥是零时密钥匹配。
图10描绘了在半特权模式(即,K比特为1)下允许MRIC执行时的RICCB控制块一部分。控制模块1000可以包括除了参照图10描述的值之外的附加值。在一个实施例中,MRIC指令操作数中的任何灰晕(grayed out)部分是不可由较小的特权状态程序访问的。当允许半特权模式时,原始地址(ROA)1002和限制地址1004采用MRIC指令由较小权限的状态程序设置。
在一个实施例中,当前地址字段(RCA)1006可能由MRIC指令更新。当前地址字段1006检查报告群组尺寸字段1044(RGS字段),并影响用于形成程序缓冲器的地址有效位位置的数目。64位运行时间仪表程序缓冲器当前地址是字0、字1的位的位置0到26-RGS、以及在右侧附加的RGS+5二进制零。这是将被存储在程序缓冲器522中的随后的报告群组的图5的程序缓冲器522的起始位置。报告群组是由仪表模块506创建的并且随后被存储在程序缓冲器522的信息的单元。在一个实施例中,当由所述当前地址字段1006指定的RGS字段1044不等于所述运行时间仪表控制的当前报告群组的尺寸(即在当前地址字段1006将改变RGS字段1044)时,那么在当前地址字段1006被设置为原始地址1002。
剩余的采样间隔计数字段1042(RSIC字段)可以使用MRIC指令由较低特权程序更新。该RSIC字段1042包括64位的无符号整数,其表示剩余的采样间隔计数。当运行时间仪表控制的RSIC字段1042的值为零或等于比例因子字段1040(SF字段)中的值并且运行时间仪表被启用时,那么下一个采样间隔为基于采样模式字段1008(M字段)和SF字段1040值的完整间隔。当RSIC字段1042非零且小于SF字段1040并且运行时间仪表被启用时,下一采样间隔为部分间隔。当RSIC字段1042是非零且大于SF字段1040的值并且运行时间仪表被启用时,下一个采样间隔为扩展间隔。当一展的时间隔到期时,则下一个时间隔基于SF字段1040的值。当RSIC字段1042设置为非零值时,它受制于同一依赖型号的最大限制,SF字段1040也是受制于该限制。当RSIC字段1042的初始值是零,采样模式将指定在LRIC和MRIC指令的执行期间RSIC字段1042是否被设定为SF字段1040中的值,或者其是否继续显示为零直到运行时间仪表被启用为止。
SF字段1040包含64位的无符号整数,其值是比例因子计数个单位。单位的尺寸根据采样模式字段1008(M字段)来确定。当RSIC字段1042中的值为零,则SF字段1040提供RSIC字段1042的初始值,该初始值被递减到零,在此时,当前指令被识别为采样指令,并且该间隔计数根据SF字段1040的值被刷新。SF字段1040的有效值的范围是从1到2 64-1。如果被指定为零,则假定为一的值。然而,每个型号可以具有SF字段1040的最小和最大值两者。最小值和最大值基于采样模式字段1008可以不同。如果指定小于最小值的值,则依赖型号的最小值被加载。如果指定大于最大值的值,则依赖型号的最大值被加载。
DC控制字段1036是4位无符号整数,其值指定了与数据读取或存储高速缓冲器未中关联的高速缓冲器延迟级别。也就是说,采样指令遇到了数据访问高速缓冲器未中。除非被其他运行时间仪表控制禁止,尝试存储表示采样指令的报告群组,其数据访问识别了在数值上大于或等于由DC控制字段1036的值指定的级别的高速缓冲器延迟级别处的未中。用于数据访问的高速缓冲器的结构和高速缓冲器延迟级别是依赖型号的。对于具有多个或长的操作数的指令而言,其是依赖型号的,如果有的话,操作数访问用于报告控制。依赖型号的行为可能会忽略DC控制字段1036的值,并因此不将其作为存储报告群组的理由。
IC字段1034是4位无符号整数,其值指定与取指令缓冲器未中相关联的高速缓冲器延迟级别。也就是说,采样指令的读取遇到取指令缓冲器未中。对于IC字段1034和DC控制字段1036两者,高速缓冲器延迟级别为高速缓冲器级别访问离观察处理器有多远的一种抽象。该延迟级别依赖于处理器和主存储器之间的嵌套高速缓冲器级别的数量以及这样的高速缓冲器级别如何在多个处理器之间共享的组合。较大的延迟级别通常对应于更费时访问。IC字段1034和DC控制字段1036中的值可以被认为是高速缓冲器延时级别的零原点标识(identification)。例如,零值对应的L1高速缓冲器(即,最靠近处理器的高速缓冲器)。因此,值1是高速缓冲器的下一层,其被称为L2高速缓冲器,或者在一些机器中甚至为L1.5高速缓冲器。值2-15指代附加高速缓冲器延迟层的逻辑级数(progression),直到达到主存储器为止,但不包括主存储器本身。一般情况下,高速缓冲器的结构不会深达15层。因此,IC字段1034和DC控制字段1036中的值15被解释为特殊情况,这意味着,不管高速缓冲器延迟级别如何,为了生成报告群组的存储,关于指令读取或数据访问的高速缓冲器未中分别没有被识别。除非其他运行时间仪表控制被禁止,尝试存储表示采样指令的报告群组,其取指令识别了在数值上大于或等于由DC字段1034的值指定的级别的高速缓冲器延迟级别处的未中。用于取指令的高速缓冲器的结构和高速缓冲器延迟级别是依赖型号的。依赖型号的行为可能会忽略DC字段1034的值,并因此不将其作为存储报告群组的理由。
高速缓冲器延迟级别超越报告控制位1032(F位)用于非分支指令和分支预测控制。当运行时间仪表控制中的F位1032为零时,运行时间仪表控制的超高速缓冲器报告控制(IC字段1034和DC控制字段1036)根据其定义的功能被检查和使用。运行时间仪表控制的分支预测控制(BPxn 1022、BPxt 1024、BPTI 1026以及BPni 1028位)根据其定义的功能被检查和使用。当F位1032为一时,除非被其他控制禁止,这些相同的控制被忽略并且报告群组被存储。
数据高速缓冲器未中控制位1030(D位)表示报道群组是否将被存储。如果D位1030是1,额外类型的记录可以或不可以被置于报告群组的额外部分,其包含关于相同指令的依赖型号数据
该MRIC指令包括分支预测(BP)报告控制(BPxn 1022、BPxt 1024、BPTI 1026和BPni 1028)。如果运行时间仪表控制中的BP报告控制位为0,则相应的条件不被检测。如果BP报告控制位为1并且相应的分支预测条件存在,则存储报告群组。
当BPxn位1022为一时,其启动分支预测信息的检查(check)。因此,如果采样分支被不正确地预测将被采取,但又没有被采取,则报告群组被存储。当BPxt位1024为一时,其启动所述分支预测信息的检验。因此,如果采样分支被不正确地预测为不被采取,但又被采取了,则报告群组被存储。
当BPti位1026为一时,其启动所述分支预测信息的检验。因此,如果采样分支被正确预测为将被采取并且被采用,但分支目标被不正确地预测,则报告群组被存储。
当BPni位1028为一时,其启动分支预测信息的检查。因此,如果采样分支被正确地预测为不采取,并且没有被采取,而分支目标被不正确预测,则报告群组被存储。
事务执行模式记录位1020(X位)的启用控制控制收集事务执行模式中止记录。当运行时间仪表控制中的X位1020是零,则事务执行模中止记录未被收集。当X位1020是1,则事务执行模式中止记录被收集和放置在图5的收集缓冲器508中。如果型号没有安装事务执行设施,则X位1020被忽略。
该RIEMIT指令控制位1018(E位)控制RIEMIT指令的执行。当运行时间仪表控制中的E位1018为零或被忽略以及在运行时间仪表被启用时被视为零时,RIEMIT执行空操作。当E位1018是一并且在其他情况下不是被忽视时,RIEMIT被启用以执行其定义的功能。
当J位1046为零时,其指明条件(BC)指令的分支是在其他类型的分支类别中,无论掩码值如何。如果J位1046是一,则指明掩码15的BC指令处于返回型分支类别。当BC指令指定掩码1-14,其不受J位1046的影响并且总是在其它类型的分支类别中。当在返回型分支类别中时,R位1016控制夹杂物(inclusion)进入图5的收集缓冲器508。当在其它类型的分支类别时,B位1048控制夹杂物进入收集缓冲器508。其他类型的分支类别也可以表示为转移型分支类别。
该指令地址码位1014(C位)控制调用类型分支的启用。如果运行时间仪表控制中的C位1014是一并且指令为调用类型分支,则收集缓冲器被更新。如果调用类型和返回型分支两者的型号依赖性检测被组合,则C位1014对这两个类型进行操作并且R位1016是无效的。
R位1016为返回类型分支的启用控制。如果运行时间仪表控制中R位1016为一并且该指令是返回型分支,则将收集缓冲器508被更新。B位1048是除了调用类型和返回型分支之外的分支的启用控制。如果运行时间仪表控制中的B位1048是一并且指令是由运行时间仪表识别的其他类型的分支,那么收集缓冲器508被更新。
如果最大地址超出位1012(MAE位)被设定为1,其表示一个或多个具有被设置为1的指令地址码(C字段)的报告群组已经被存储。一旦MAE 1012位被设置为1,运行时间仪表的继续执行并不将其设置回零。规定MAE位为0的LRIC指令或MRIC指令的执行将MAE位设置为零。
运行时间仪表下一步(RINEXT)控制位1010(N位)控制运行时间仪表下一个指令的启用,该下一指令控制采样指令的执行。当运行时间仪表控制中的N为1010是零或被忽略以及作为零处理时,RINEXT执行空操作。当N位1010位一并且在其他情况下被忽略时,RINEXT被启用执行其定义的功能。
采样模式字段1008(M域)为4位的无符号整数,其运行时间仪表控制中的值指定运行时间仪表控制的采样模式。
报告群组尺寸字段1044(RGS)是3位的无符号整数,其值指定的报告群组(RRG)的记录的数量。报告群组中的记录的数量可以在从包括开始/时间戳记录和指令最后一个记录的2条记录到高达256条记录之间变化。在一个实施例中,该上限可以是型号依赖性的。被置入报告群组的16个字节记录的数量是2 RGS+1。
主CPU能力抑制控制位1038(Y位)和次CPU能力抑制控制位1039(Z位)被统称为抑制控制。报告群组的抑制意味着不执行存储尝试。当配置中的所有CPU的CPU的性能一样时,抑制控制是无效的并且没有抑制发生。在一种配置中,如果CPU的CPU处理能力不同于另一CPU的能力,则抑制控制生效,并且至少一个CPU被称之为将在所述CPU能力或主CPU能力下运行,同时至少一个其它CPU被称之为在所述次CPU能力下运行。主和次CPU能力为不同运行速度。当Y位1038和Z位1039两者均为零,则抑制不会发生。当Y位1038是零而Z位1039是1时,如果CPU,例如,处理器106,运行在次级CPU能力下,则抑制发生。当Y位1038是一而Z位1039是零,如果CPU,比如处理器106,运行在主CPU能力下,则抑制发生。当Y位1038而Z位1039两者都为一,则抑制发生。
图10的上述字段和位都是字段的命名和放置的例子,并为清楚起见提供在此。应当理解的是,在其他实施例中可以仅仅使用这些字段的一个子集,字段可以是任何顺序或位置,和/或可以通过不同的名称来指代。
如先前所描述的,当运行时间仪表程序执行期间被启用,则在处理器106内运行时间仪表数据被收集在收集缓冲器508中。在一个实施例中,收集缓冲器508是用来保存所收集的最新记录的处理器106的内部缓冲器。当检测到采样触发点时,作为被写入到程序缓冲器522的报告群组的一部分,记录从收集缓冲器508复制到程序缓冲器522。在一个实施例中,记录以非破坏性的方式从收集缓冲器508中复制。
收集缓冲器508可以被称为“硬件收集缓冲器”,因为该收集缓冲器508位于处理器内并且和在实施例中被实现为寄存器对的阵列,用于存储给定事件的指令地址和事件元数据。事件的一个例子是所采取分支,寄存器对可为其保持该分支的指令地址,并且元数据可为其保持分支目标和关于该分支的历史行为的信息。在一个实施例中,随着事件在所述指令流中的发生,寄存器对被排序并被顺序地更新。计数器被保持以指示在所述阵列中的最近更新的条目的索引。在一个实施例中,收集缓冲器508是环形缓冲器,并且当收集缓冲器508充满时,下一个事件覆写在所述阵列中的第一条目,并且所述阵列的寄存器对的顺序更新重启随后事件。因此,假设有阵列CB[0]到CB[N-1]并且计数器i表示最近更新的索引,所捕获事件的跟踪将由序列CB[I]、CB[I-1]…CB[1]、CB[0]、CB[N-1]、CB[N-2]...CB[I+1]表示。在另一个实施例中,两个指针被使用:指向缓冲器中的最旧条目的头指针和指向缓冲器中的最新条目的尾部/当前指针。
表示在任何给定执行点处的处理器106的状态的事件被顺序捕获在活收集缓冲器508中。收集缓冲器508用来捕获一组记录,其内容报告在程序执行期间由处理器106确认的事件(例如,一个或多个所采取分支的执行、事务-执行中止的事件、RIEMIT指令的操作数等)。在一个实施例中,所确认的事件依赖于图10中所示的RICCB的内容。所示的收集缓冲器508的实施例中的条目包括事件指令地址和其他相关事件的元数据。事件的元数据的例子包括,但不限于:所采取的分支的指令地址和其包括有关分支的历史行为的某些信息的目标、RIEMIT指令的指令地址和相应的寄存器值、以及事务中止指令的地址和相应事务恢复输入点。
收集缓冲器508的实施例存储多达32个条目(即,关于32个事件的信息),其中每个指令地址由六十四个位(例如,位0:63)指定,而事件元数据由六十四个位(例如,位64:127)指定。收集缓冲器(RCB)的尺寸是因型号而异的,该尺寸代表了纪录的数量。
在一个实施例中,收集缓冲器508的字节长度是16字节的记录大小的倍数。收集缓冲器(RCB)的尺寸为大于或等于该型号的最大报告群组(RRG)的计数和不是从收集缓冲器(RNC)获得的报告群组中的记录的计数之间的差值的一些记录的个数。因此,在一个实施例中,收集缓冲器的尺寸被表示为:
RCB≥(RRG-RNC)
在一个实施例中,收集缓冲器508和指令-数据缓冲器(如果使用一个的话)的内容被清除(purge)或者以其他方式受以下事件的影响:(1)中断;(2)开启和关闭运行时间仪表设施的PSW位(例如,24位)从一变化到零:以及(3)当采样指令在运行时间仪表设施处于事务执行模式时被识别时(在这种情况下,在事务结束时收集数据缓冲器508和指令-数据缓冲器的进一步更新停止和恢复,此时,报告群组的存储暂停并且收集缓冲器508和指令-数据缓冲器被清除)。
在一个实施例中,诸如图1B中所示的仿***计算机***,使用的寄存器和/或存储器来实现收集缓冲器508。在本实施例中,如果存在的话,也可使用寄存器和/或存储器来实现可选的指令-数据缓冲器。
在实施例中,附加功能可以实现数据收集,并且可以被视为提供额外的数据收集点,而基本上不扰乱先前描述的常规指令计数或循环计数采样。这些措施包括执行RIEMIT指令,它通过将其存储到收集缓冲器508中来收集通用寄存器的值。此外,先前描述的运行时间仪表控制中的数据收集控制位可以被用于定制所收集的数据的类型(例如,E、C、R和B的控制位)。在这种方式中,所收集的数据类型是可编程的。
在一个实施例中,指令-数据缓冲器被实现以收集依赖模型的采样指令数据,其用于构造运行时间仪表指令记录。在指令被识别为采样指令时,指令-数据缓冲器从预期可用的指令中收集数据。在一个实施例中,指令-数据缓冲器是所述处理器中的硬件缓冲/存储位置,其中保存关于将成为作为采样点的触发的指令的信息,使得在退出过程中,它可以与来自收集数据缓冲器508的数据一起被写出。类似于收集缓冲器508,它包括指令地址以及与该指令相关联的元数据。指令中-数据缓冲器中的元数据通常是依赖于机器的,并且可以包括,但不限于:有关高速缓冲器未中的信息以及相关分支预测的信息。
按照实施例,收集的其他数据可能不是来自于收集缓冲器508以及不来自从指令-数据缓冲器。例子包括用于形成以下部分的数据:(1)报告群组的第一条记录:时间戳或开始记录;以及(2)附加类型的记录可以为每个报告群组创建,并因而没有被存储在收集缓冲器508中,这样的记录,如果存在的话,可以放置在报告群组的额外的或依赖机器的部分。这些记录在本文中称为“***信息记录”。
图11描绘了在MRIC不允许在半特权模式下执行时(即,K位为零)的RICCB控制块的一部分。控制块1100可以包括除了参考图11所描述的值之外的其它附加值。当半特权模式是不被允许时,原始地址部分1102和限制地址部分1104不被使用,并且当前值不由较小的特权状态程序修改。
在一个实施例中,所有运行时间仪表控制设置值的子集通过成功执行MRIC指令而由较小的特权状态程序更新。
当RICCB被读取时,可能会遇到一些错误。此外,如果MRIC指令中的RICCB的地址没有适当地对齐,那么就会遇到异常。同样,如果因为错误状态或时引用无效地址,MRIC指令中的地址是不可访问的,那么就会遇到异常。如果在MRIC指令的执行过程中,确定RICCB值以任何定义的方式(即他们内在地不一致)冲突,那么也会遇到异常。
在一个实施例中,一种特定-操作异常被识别用于如下任何理由:MRIC指令被发出并且运行时间仪表被启用;当前运行时间控制是无效的;和/或处理器处于LESER特权状态并且当前的运行时间仪表控制中的运行时间仪表停止位为零。
在一个实施例中,规范异常被识别为任何如下原因:MRIC的存储操作数在双字边界上没有对齐;所述处理器在管理状态或在当前运行时间仪表控制中的K位是一并且任何以下条件被确认:所指定的限制地址是小于所指定的原始地址、所指定的当前地址小于所指定的原始地址、以及所指定的当前地址大于一加上所指定的生成限制地址的和;以及所述处理器处于较小的特权状态,当前RI控制的k位是零并且任何以下条被确认:所指定的当前地址小于当前原始地址、所指定的当前地址大于一加上当前限制地址的总和、无效模式被指定。
在一个实施例中,为一个体系结构的特定处理器定义的MRIC指令可以由不同的体系结构的第二处理器执行。在一个实施例中,所述第二处理器识别基于软件的仿真例程,并使用基于软件的仿真例程执行MRIC指令。
图12示出在采样点存储在程序缓冲器522的报告群组1200的高级别例子。记录中的报告群组的尺寸由R RG表示,等于2(RGS+1),其中RGS作为指数,是报告群组的尺寸。从除了收集缓冲器508之外的位置复制的记录的依赖型号的数量(RNC)在报告群组中被使用时可以或可以不被非破坏性地复制。在图12的例子中,RRG=8、RGS=2、以及RNC=4。图12中所示的示例报告群组1200包括:头标部分1202、主体部分1204、额外记录部分1206以及页脚(footer)部分1208。
头标部分1202可以包括开始记录或时间戳记录以便保存状态、跟踪、和/或定时信息。
开始记录被存储用于存储在程序缓冲器中的第一报告群组的头标部分1202(也就是,当RCA 1006等于ROA 1002)。在一个实施例中,所述开始记录包括:“02”的记录类型字段、用于指示当前有多少报告群组存储在程序缓冲器中的多个报告群组(NRG)字段、用于指示报告群组的大小的RGS字段、用于指示该程序缓冲器522是否已满的停止(S)字段、用于指示运行时间仪表是否停止的暂停(H)字段、以及用于指示何时写入开始记录的计时(TOD)时钟字段。在一个实施例中,开始记录中的字段的至少一个子集源于RI控制块(例如,RICCB)。时间戳记录的实施例具有“03”记录类型并包含用于指示所述记录何时被存储的TOD时钟字段。在一个实施例中,时间戳记录被存储在用于除了第一报告群组以外的每个报告群组的头标部分1202。
报告群组的主体部分1204可以包括用于事件的各种记录和从收集缓冲器508采样的信息。事件和信息可以代表,例如,通过发送指令、事务-执行中止、调用、返回、分支、以及填充符所捕获的状态信息
在一个实施例中,在成功执行RIEMIT指令时,在收集缓冲器508中创建并存储发射记录。所述发送记录的实施例包括:用于指示当前PSW的指令地址位的位置如何被表示在所述发送记录的记录类型字段“10”、基于寻址模式(例如,64,31或24位)变化并且如果RIEMIT是执行类型指令的目标则包含RIEMIT指令的指令地址或执行类型指令的指令地址字段、用于存储来自由RIEMIT指令所指定的通用寄存器的数据的发送数据字段。
在一个实施例中,事务执行模式中止记录通过隐含中止或事务中止指令的执行被创建并且存储在收集缓冲器508中。中止记录的实施例包括:用于指示当前PSW的指令地址位的位置如何被表示在所述事务-执行中止记录的记录类型字段“11”、基于寻址模式(例如,64,31或24位)变化并且如果所被中止的指令是执行类型型指令的目标则包含所被中止的指令的指令地址或执行类型指令的指令地址字段、与所述中止相关的任何依赖型号的数据的字段。
在实施例中,调用记录在R2字段为非零时由执行调用类型分支指令创建,该指令诸如BRANCH AND SAVE(BASR)(分支并保存)(BASR)、BRANCH AND SAVE(BAS)、BRANCHRELATIVE AND SAVE LONG、BRANCH RELATIVE AND SAVE、BRANCH AND LINK(BALR)、BRANCHAND LINK(BAL)、以及BRANCH AND SAVE AND SET MODE。指令地址位的位置在调用记录中如何被表示的指令地址代码字段、基于寻址模式(例如,64,31或24位)变化并且如果所述分支指令是执行类型指令的目标则包含分支指令或执行类型指令的地址的指令地址字段、以及含有该分支目标地址的目标地址字段(也称为“被调用位置”)。
返回记录和转移记录可具与调用记录有相同的格式。在实施例中,返回记录有记录类型字段“13”,并通过在R2字段不为零且掩码为15时执行诸如BRANCH ON CONDITION(BCR)的返回类型分支指令而创建。对于返回记录,如果分支是执行类型指令的目标该指令地址字段包含分支指令或执行型指令的地址,并且目标地址字段包含返回位置。
在实施例中,传输记录有记录类型字段“14”,并通过执行返回类型分支指令被创建,所述指令诸如:a.在R2字段为非零和掩码范围为1-14时的BRANCH ON CONDITION(BCR)、b.J位为零或掩码范围为1-14时的BRANCH ON CONDITION(BC)、c.BRANCH ON COUNT(BCT,BCTR,BCTG,BCTGR)、d.BRANCH ON INDEX HIGH(BXH,BXHG)、e.BXLE,BXLEG)、f.BRANCH ONINDEX LOW OR EQUAL(BXLE,BXLEG)、g.BRANCH RELATIVE ON CONDITION(BRC)、h.BRANCHRELATIVE ON CONDITION LONG(BRCL)、i.BRANCH RELATIVE ON COUNT(BRCT,BRCTG)、j.BRANCH RELATIVE ON COUNT HIGH(BRCTH)、k.BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG)、l.BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE,BRXLG)、m.COMPARE ANDBRANCH(CRB,CGRB)、n.COMPARE AND BRANCH RELATIVE (CRJ,CGRJ)、o.COMPARE IMMEDIATEAND BRANCH(CIB,CGIB)、p.COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ)、q.COMPARE LOGICAL AND BRANCH(CLRB,CLGRB)、r.COMPARE LOGICAL AND BRANCHRELATIVE(CLRJ,CLGRJ)以及s.COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ,CLGIJ)。所述分支被采取时创建转移记录。对于转移记录,如果分支是执行型指令的目标则指令地址字段包含分支指令或执行型指令的地址,并且目标地址字段包含返回位置。
在收集缓冲器508中的有效记录的数量不足以填满当前RGS的报告群组时,在报告群组使用填充符记录。填充符记录的实施例包括记录类型字段“00”,以便指示该记录是填充符记录并且剩余字节未被定义。
当存在额外记录部1206时,额外记录部1206可以含有依赖型号的记录。在一个实施例中,额外记录的格式类似于填充符记录,不同之处在于记录类型被设置为“01”以便表明该记录是额外记录以及额外记录的剩余字节可以包含依赖型号的数据。
页脚部分1208可包括含有关于样本指令执行的信息的指令记录。在报告群组被存储用于样本指令时,指令记录被创建。指令结果的实施例包括:记录类型字段“04”、用于指示在指令记录中当前PSW的指令地址位的位置如何被表示的指令地址码字段、基于寻址模式(例如64、31或24位)而变化并在采样指令为执行型指令的目标的情况下包含采样指令或执行型指令的指令地址的指令地址字段、以及包含从IDB收集的任何依赖型号的数据的指令-数据缓冲器(IDB)字段。
如上所述,实施例可以以计算机实现的过程和用于实践那些过程的装置的形式来实施。实施例可包括计算机可读/可用介质1302上的具有包含指令的算机程序代码逻辑1304的如图13所示的计算机程序产品1300,其体现为作为制品的有形介质。用于计算机可读/可用介质1302的示例性制品可包括:软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪存驱动器或任何其它计算机可读存储介质,其中,当计算机程序代码逻辑1304被计算机装载时,计算机成为用于实施本发明的装置。实施例包括计算机程序代码逻辑1304,例如,无论是存储在存储介质中还是加载到计算机和/或由计算机执行,或通过某些传输介质传输,诸如通过电线或电缆、通过光纤、或经由电磁辐射,其中,当计算机程序代码逻辑1304被计算机载入和执行时,计算机成为用于实施本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑1304分段配置微处理器,以创建特定的逻辑电路。
技术效果和益处包括MRIC指令可由较小权限状态程序执行以便在在运行时间根据较小的特权状态修改运行时间仪表设置值。
本文所用的术语仅用于描述特定实施例的目的,并不意在限制本发明。本文所使用的单数形式“一”、“一个”和“该”也意图包括复数形式,除非上下文另有明确说明。这将进一步理解的是,术语“包括”和/或“包含”在本说明书中使用时指定所陈述的特征、整数、步骤、操作、元件的存在,但不排除存在或附加一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组。
下面权利要求书中所有手段或步骤加功能元素的相应的结构、材料、动作和等同物旨在包括特别要求保护的任何结构、材料或用于与其他要求保护的元件组合执行功能的行为。为了说明和描述目的已经呈现本发明的描述,但其并非意在以所公开的形式穷举或限制本发明。不脱离本发明的范围和精神的情况下,许多修改和变化形式对本领域普通技术人员而言将是显而易见。选择并描述该实施例是为了最好地解释本发明的原理和实际应用,以及使本领域的其他技术人员能够理解用于根据适于所想到的特定用途而具有各种修改形式的各种实施例的本发明。
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意类别的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
所述计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或其他设备上以便在计算机、其它可编程处理装置或其它设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或方框图方框或多个方框中指定的功能/动作的过程。
如上所述,实施例可以以计算机实现的过程和用于实践那些过程的装置形式的来实施。在实施例中,本发明可以以由一个或多个网络元件执行的计算机程序代码来实施。实施例包括计算机可用介质上的计算机程序产品,其具有包含指令的计算机程序代码逻辑,实现在作为制品的有形介质中。计算机可用介质的示例性制品可包括:软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪存驱动器或任何其它计算机可读存储介质,其中,当计算机程序代码逻辑被装入和由计算机执行时,计算机成为用于实施本发明的装置。实施例包括计算机程序代码逻辑,例如,是否存储在存储介质中、加载到和/或由计算机执行、或通过某些传输介质传输,诸如通过电线或电缆、通过光纤、或经由电磁辐射的方法,其中,当计算机程序代码逻辑被装入和被计算机执行时,计算机成为用于实施本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑段配置微处理器以创建特定的逻辑电路。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (16)
1.一种用于执行修改运行时间指令控制MRIC指令的计算机实现方法,所述MRIC指令在管理程序状态或较小特权状态下执行,所述MRIC指令仅用于设置运行时间仪表控制的子集,其中所有运行时间仪表控制由特权负荷运行时间仪表控制器LRIC指令加载,所述方法包括:
取MRIC指令,所述MRIC指令包括运行时间仪表控制块RICCB的地址;
由处理器取所述RICCB,所述RICCB包括用于修改所述处理器的运行时间仪表控制的子集的多个值,所述运行时间仪表控制的子集包括运行时间仪表程序缓冲器RIB位置的运行时间仪表缓冲器当前地址RCA,所述RIB用于保存在程序执行期间由处理器识别事件的运行时间仪表信息;
加载所述多个值到所述运行时间仪表控制;以及
使用所加载的多个值来将运行时间仪表事件信息提供给所述RIB。
2.根据权利要求1所述的方法,还包括:
导出用于所述RICCB的多个值中的至少一个的型号依赖有限值;和
将所述型号依赖有限值作为更新值加载到运行所述时间仪表控制。
3.根据权利要求2的方法,其中报告群组的尺寸可以使所述型号依赖有限值被加载,所述方法还包括:
基于具有第一值的所述运行时间仪表控制的第一预定字段,将当前地址设置为所述RICCB的起始地址的值;以及
基于具有第二值运行时间控制仪表的第一预定字段,将当前地址设置为指定的RICCB当前地址值的值。
4.根据权利要求1所述的方法,还包括基于以下任何一项或多项造成一种例外:
确定在所述MRIC指令中的地址没有与双字边界对齐;以及
确定所述RICCB未能从MRIC指令包含的地址中被取出。
5.根据权利要求1所述的方法,还包括:
确定所述RICCB中的一个或多个值是有效的,其中,该确定还包括以下任一项:
确定运行时间仪表的第二预定位,其表示来自较小特权状态的MRIC指令不被容许;
确定所述运行时间仪表控制是无效的;以及
确定运行时间仪表未启用。
6.根据权利要求1所述的方法,其中所述RICCB的多个值还包括以下一个或多个:
用于管理运行时间仪表数据采样的详细信息的控制:
用于管理运行时间仪表数据收集的详细信息的控制;
用于管理运行时间仪表数据报告到程序缓冲器的详细信息的控制;
用于管理指令高速缓冲器未中的控制;
用于管理指令高速缓冲器未中的检测的控制;
用于管理报告群组的尺寸的控制;
用于管理在其中存储下一个报告群组的输出程序缓冲器中的当前地址的控制;
用于管理关于呼叫类型、返回类型、以及传送型分支的数据的数据收集的控制;以及
用于管理是否被正确或不正确地预测以及是否被采取或不采取的分支的数据集合的控制。
7.根据权利要求1所述的方法,其中所述MRIC指令被定义用于第一计算机体系结构,并且取指令和解析由计算机体系结构中的第二处理器执行,由所述第二处理器进行的所述取指令和分析包括:
识别用于仿真所述MRIC指令在第一台计算机体系结构上的执行的软件例程;以及
采用所述软件例程执行所述MRIC指令。
8.根据权利要求1所述的方法,还包括:如果遇到错误,则所述运行时间仪表控制中没有值被更新。
9.一种用于执行修改来自管理程序状态或较小特权状态的运行时间指令控制MRIC指令的计算机***,所述MRIC指令用于仅设置运行时间仪表控制的子集,其中所有运行时间仪表控制由特权负荷运行时间仪表控制器LRIC指令加载,所述计算机***包括:
计算机处理器,包括运行时间仪表模块,所述运行时间仪表模块被配置为执行一种方法,该方法包括:
取MRIC指令,所述MRIC指令包括运行时间仪表控制块RICCB的地址;
由处理器取所述RICCB,所述RICCB包括用于修改所述处理器的运行时间仪表控制的子集的多个值,所述运行时间仪表控制的子集包括运行时间仪表程序缓冲器RIB位置的运行时间仪表缓冲器当前地址RCA,所述RIB用于保存在程序执行期间由处理器识别事件的运行时间仪表信息;
加载所述多个值到所述运行时间仪表控制;以及
使用所加载的多个值来将运行时间仪表事件信息提供给所述RIB。
10.根据权利要求9所述的***,还包括:
导出用于所述RICCB的多个值中的至少一个的型号依赖有限值;和
将所述型号依赖有限值作为更新值加载到运行所述时间仪表控制。
11.根据权利要求10所述的***,其中报告群组的尺寸可以使所述型号依赖有限值被加载,所述方法还包括:
基于具有第一值的所述运行时间仪表控制的第一预定字段,将当前地址设置为所述RICCB的起始地址的值;以及
基于具有第二值运行时间控制仪表的第一预定字段,将当前地址设置为指定的RICCB当前地址值的值。
12.根据权利要求9所述的***,还包括基于以下任何一项或多项造成一种例外:
确定在所述MRIC指令中的地址没有与双字边界对齐;以及
确定所述RICCB未能从MRIC指令包含的地址中被取出。
13.根据权利要求9所述的***,还包括:
确定所述RICCB中的一个或多个值是有效的,其中,该确定还包括以下任一项:
确定运行时间仪表的第二预定位,其表示来自较小特权状态的MRIC指令不被容许;
确定所述运行时间仪表控制是无效的;以及
确定运行时间仪表未启用。
14.根据权利要求9所述的***,其中所述RICCB的多个值还包括以下一个或多个:
用于管理运行时间仪表数据采样的详细信息的控制:
用于管理运行时间仪表数据收集的详细信息的控制;
用于管理运行时间仪表数据报告到程序缓冲器的详细信息的控制;
用于管理指令高速缓冲器未中的控制;
用于管理指令高速缓冲器未中的检测的控制;
用于管理报告群组的尺寸的控制;
用于管理在其中存储下一个报告群组的输出程序缓冲器中的当前地址的控制;
用于管理关于呼叫类型、返回类型、以及传送型分支的数据的数据收集的控制;以及
用于管理是否被正确或不正确地预测以及是否被采取或不采取的分支的数据集合的控制。
15.根据权利要求9所述的***,其中所述MRIC指令被定义用于第一计算机体系结构,并且取指令和解析由计算机体系结构中的第二处理器执行,由所述第二处理器进行的所述取指令和分析包括:
识别用于仿真所述MRIC指令在第一台计算机体系结构上的执行的软件例程;以及
采用所述软件例程执行所述MRIC指令。
16.根据权利要求9所述的***,其中,如果遇到错误,则所述运行时间仪表控制中没有值被更新。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/422,598 | 2012-03-16 | ||
US13/422,598 US9280447B2 (en) | 2012-03-16 | 2012-03-16 | Modifying run-time-instrumentation controls from a lesser-privileged state |
PCT/JP2013/001262 WO2013136703A1 (en) | 2012-03-16 | 2013-03-01 | Modifying run-time-instrumentation controls from a lesser-privileged state |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104364771A CN104364771A (zh) | 2015-02-18 |
CN104364771B true CN104364771B (zh) | 2017-04-26 |
Family
ID=49158804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380014675.5A Active CN104364771B (zh) | 2012-03-16 | 2013-03-01 | 修改来自较小特权状态的运行时间仪表控制 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9280447B2 (zh) |
EP (1) | EP2807562B1 (zh) |
JP (1) | JP6195571B2 (zh) |
CN (1) | CN104364771B (zh) |
BR (1) | BR112014022763B1 (zh) |
PL (1) | PL2807562T3 (zh) |
WO (1) | WO2013136703A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161243B (zh) * | 2015-04-10 | 2020-11-24 | 中兴通讯股份有限公司 | 一种状态上报控制方法和装置 |
EP3403177B1 (en) * | 2016-01-15 | 2022-09-14 | Google LLC | Managing delivery of code and dependent data using application containers |
US10169010B2 (en) * | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing |
US10169009B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs |
US9934009B2 (en) | 2016-06-01 | 2018-04-03 | International Business Machines Corporation | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US11269640B2 (en) | 2017-02-13 | 2022-03-08 | Qualcomm Incorporated | Speculative transitions among modes with different privilege levels in a block-based microarchitecture |
US11086759B2 (en) * | 2018-09-27 | 2021-08-10 | SeaLights Technologies LTD | System and method for probe injection for code coverage |
EP3798755A1 (de) * | 2019-09-27 | 2021-03-31 | Siemens Aktiengesellschaft | Vom maschinenhersteller parametrierbare numerische steuerung |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7181600B1 (en) * | 2001-08-02 | 2007-02-20 | Mips Technologies, Inc. | Read-only access to CPO registers |
CN101952806A (zh) * | 2007-12-18 | 2011-01-19 | 格罗方德半导体公司 | 用于设定运行于处理器上的程序软件之机制 |
Family Cites Families (138)
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 |
WO1996009584A2 (en) | 1994-09-19 | 1996-03-28 | 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 |
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 |
US6161196A (en) | 1998-06-19 | 2000-12-12 | Lucent Technologies Inc. | Fault tolerance via N-modular software redundancy using indirect instrumentation |
US6216237B1 (en) | 1998-06-19 | 2001-04-10 | Lucent Technologies Inc. | Distributed indirect software instrumentation |
US6145123A (en) | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US6158049A (en) | 1998-08-11 | 2000-12-05 | Compaq Computer Corporation | User transparent mechanism for profile feedback optimization |
US6243836B1 (en) | 1998-08-17 | 2001-06-05 | Lucent Technologies, Inc. | Apparatus and method for circular buffering on an on-chip discontinuity trace |
US6230313B1 (en) | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
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 |
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 |
AU2003211000A1 (en) | 2002-02-12 | 2003-09-04 | Sandpiper Software, Inc. | Ontology frame-based knowledge representation in the unified modeling language (uml) |
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 |
US8527958B2 (en) | 2005-05-16 | 2013-09-03 | Texas Instruments Incorporated | Profiling operating context and tracing program on a target processor |
US7886198B2 (en) | 2005-05-16 | 2011-02-08 | Texas Instruments Incorporated | Method and system of identifying overlays used by a program |
US7603589B2 (en) | 2005-05-16 | 2009-10-13 | Texas Instruments Incorporated | Method and system for debugging a software program |
US7886271B2 (en) | 2005-05-16 | 2011-02-08 | Texas Instruments Incorporated | Embedding event information in the timing stream |
US8694970B2 (en) | 2005-06-02 | 2014-04-08 | Seagate Technology Llc | Unified debug system with multiple user-configurable trace volumes and trace buffers |
US7716335B2 (en) | 2005-06-27 | 2010-05-11 | Oracle America, Inc. | System and method for automated workload characterization of an application server |
US7239980B2 (en) | 2005-08-30 | 2007-07-03 | International Business Machines Corporation | Method and apparatus for adaptive tracing with different processor frequencies |
US8301868B2 (en) | 2005-09-23 | 2012-10-30 | Intel Corporation | System to profile and optimize user software in a managed run-time environment |
US20070079294A1 (en) | 2005-09-30 | 2007-04-05 | Robert Knight | Profiling using a user-level control mechanism |
US20070079177A1 (en) | 2005-09-30 | 2007-04-05 | Charles Spirakis | Process monitoring and diagnosis apparatus, systems, and methods |
US20070143755A1 (en) | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
CN101021800A (zh) | 2006-02-16 | 2007-08-22 | Sap股份公司 | 虚拟机监控 |
GB0604991D0 (en) | 2006-03-11 | 2006-04-19 | Slam Games Ltd | Instrumentation for real-time performance profiling |
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 |
EP2033097A2 (en) | 2006-06-05 | 2009-03-11 | 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 |
US8645185B2 (en) | 2006-12-06 | 2014-02-04 | Telefonaktiebolaget L M Ericsson (Publ) | Load balanced profiling |
US7783867B2 (en) | 2007-02-01 | 2010-08-24 | International Business Machines Corporation | Controlling instruction execution in a processing environment |
US8041901B2 (en) | 2007-03-05 | 2011-10-18 | Freescale Semiconductor, Inc. | Performance monitoring device and method thereof |
US7743279B2 (en) | 2007-04-06 | 2010-06-22 | Apple Inc. | Program counter (PC) trace |
EP2150889A1 (en) | 2007-04-10 | 2010-02-10 | 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 |
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 | 삼성전자주식회사 | 인스트루먼테이션 실행 장치 및 방법 |
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 |
US8782612B2 (en) | 2010-05-11 | 2014-07-15 | Ca, Inc. | Failsafe mechanism for dynamic instrumentation of software using callbacks |
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 |
US9009663B2 (en) | 2010-06-01 | 2015-04-14 | Red Hat, Inc. | Cartridge-based package management |
GB2481385B (en) | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
US20120167057A1 (en) | 2010-12-22 | 2012-06-28 | Microsoft Corporation | Dynamic instrumentation of software code |
US9430275B2 (en) | 2011-06-03 | 2016-08-30 | Oracle International Corporation | Synchronization between concurrent notifier and waiter transactions using transaction condition variables |
US8707314B2 (en) | 2011-12-16 | 2014-04-22 | Advanced Micro Devices, Inc. | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations |
-
2012
- 2012-03-16 US US13/422,598 patent/US9280447B2/en active Active
-
2013
- 2013-03-01 BR BR112014022763-2A patent/BR112014022763B1/pt active IP Right Grant
- 2013-03-01 JP JP2014543380A patent/JP6195571B2/ja active Active
- 2013-03-01 CN CN201380014675.5A patent/CN104364771B/zh active Active
- 2013-03-01 PL PL13760606T patent/PL2807562T3/pl unknown
- 2013-03-01 EP EP13760606.7A patent/EP2807562B1/en active Active
- 2013-03-01 WO PCT/JP2013/001262 patent/WO2013136703A1/en active Application Filing
- 2013-03-11 US US13/792,283 patent/US9489285B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7181600B1 (en) * | 2001-08-02 | 2007-02-20 | Mips Technologies, Inc. | Read-only access to CPO registers |
CN101952806A (zh) * | 2007-12-18 | 2011-01-19 | 格罗方德半导体公司 | 用于设定运行于处理器上的程序软件之机制 |
Non-Patent Citations (1)
Title |
---|
Intel.IA-32 Intel® ArchitectureSoftware Developer’s Manual.《IA-32 Intel® ArchitectureSoftware Developer’s Manual》.2005,第2B卷第4-202,4-203,4-359,4-360页,第3卷第15-29,15-30,15-39 -15-43页. * |
Also Published As
Publication number | Publication date |
---|---|
US9489285B2 (en) | 2016-11-08 |
EP2807562A4 (en) | 2015-01-14 |
PL2807562T3 (pl) | 2017-11-30 |
JP2015514240A (ja) | 2015-05-18 |
US20130246744A1 (en) | 2013-09-19 |
US20130247014A1 (en) | 2013-09-19 |
BR112014022763A2 (pt) | 2020-10-27 |
US9280447B2 (en) | 2016-03-08 |
JP6195571B2 (ja) | 2017-09-13 |
CN104364771A (zh) | 2015-02-18 |
BR112014022763B1 (pt) | 2021-10-13 |
EP2807562A1 (en) | 2014-12-03 |
EP2807562B1 (en) | 2017-08-02 |
WO2013136703A1 (en) | 2013-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104364771B (zh) | 修改来自较小特权状态的运行时间仪表控制 | |
CN104364770B (zh) | 来自较小特权状态的运行时检测仪器的控制操作 | |
CN104364768B (zh) | 用于确定运行时间检测控制的状态的方法和*** | |
CN104169889B (zh) | 在事务执行模式中的运行时间检测采样的方法和*** | |
CN104205064B (zh) | 将程序事件记录事件向运行时间检测事件变换的***及方法 | |
CN104169888B (zh) | 用于实现运行时间检测定向采样的方法和*** | |
CN104364772B (zh) | 控制一计算环境中的事务执行的方法及*** | |
CN104350468B (zh) | 非事务储存指令 | |
CN104412232B (zh) | 事务处理方法、***、介质 | |
CN104380264B (zh) | 运行时间检测报告 | |
CN104704474B (zh) | 用于管理的运行时间的基于硬件的运行时间检测设施 | |
CN104364769B (zh) | 处理器特性的运行时间检测监控 | |
CN104350462B (zh) | 事务中止指令 | |
CN104335185B (zh) | 受限事务执行 | |
CN103514032B (zh) | 用于促进计算环境内的处理的方法和计算机*** | |
CN104335177B (zh) | 有选择地控制事务处理中的指令执行 | |
CN104335184B (zh) | 事务执行分支指示 | |
CN104350474B (zh) | 用于控制计算环境中的事务的执行的装置、***和方法 | |
CN104380246B (zh) | 用于管理计算环境中的中断的方法、***及介质 | |
CN104169886B (zh) | 通过地址的运行时间检测间接采样的方法和*** | |
CN104169887B (zh) | 通过指令操作码的运行时间检测间接采样的方法和*** | |
US9111034B2 (en) | Testing of run-time instrumentation | |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |