运行时间检测报告的制作方法

文档序号:6533325阅读:271来源:国知局
运行时间检测报告的制作方法
【专利摘要】本发明的实施例涉及运行时间检测报告。由处理器执行指令流。由该处理器捕获该执行中的指令流的运行时间检测信息。基于该捕获的运行时间检测信息来创建运行时间检测记录。检测在该处理器上的该执行中指令流的运行时间检测样本点。将报告群组存储在运行时间检测程序缓冲器中。该存储是基于该检测,并且该存储包括:确定该运行时间检测程序缓冲器的当前地址,该确定基于指令可存取的运行时间检测控制;并且基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该运行时间检测程序缓冲器中,该报告群组包括该创建的运行时间检测记录。
【专利说明】运行时间检测报告

【技术领域】
[0001] 本发明大体而言涉及计算环境内的处理,更具体地,涉及运行时间检测(run-time instrumentation)报告。

【背景技术】
[0002] 计算机处理器使用日益复杂的分支预测及指令高速缓存逻辑来执行事务 (transaction)。这些程序已被引入以增加指令吞吐量,且因此增加处理性能。用于改进性 能的逻辑的引入使得难以肯定地预测特定软件应用程序将如何在计算机处理器上执行。在 软件开发过程期间,常常存在功能性与性能之间的平衡。软件在基于执行软件的底层硬件 的一个或多个抽象层级处执行。当将硬件虚拟化时,额外抽象层被引入。随着性能增强逻辑 及各种抽象层(layer)的引入,将难以透彻地理解当程序正在执行时在硬件层级(level) 实际发生的事。在不具此信息的情况下,软件开发者将更抽象的方法(诸如,执行持续时 间、存储器使用率、线程的数目等)用于最佳化软件应用程序。


【发明内容】

[0003] 技术问题
[0004] 当硬件特定信息可用时,该信息通常是在事后被提供给开发者,且该信息是以聚 集地、在高层级、和/或穿插着其他程序及操作系统的活动的方式提供,从而难以识别可能 影响软件应用程序的效率及准确度的问题。
[0005] 对于问题的解决方案
[0006] 实施例包括用于运行时间检测报告的计算机程序产品、方法及系统。由处理器执 行指令流。由该处理器捕获该执行中的指令流的运行时间检测信息。基于该捕获的运行时 间检测信息来创建运行时间检测记录。检测在该处理器上的该执行中指令流的运行时间检 测样本点。将报告群组存储在运行时间检测程序缓冲器中。该存储是基于该检测且该存储 包括:确定该运行时间检测程序缓冲器的当前地址,该确定基于指令可存取的运行时间检 测控制;并且基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存 储至该运行时间检测程序缓冲器中,该报告群组包括该创建的运行时间检测记录。
[0007] 额外特征及优点是经由本发明的技术来实现。本发明的其他实施例及方面将在本 文中予以详细描述且被视为所主张发明的一部分。为了更好地理解本发明的优点及特征, 参看描述及附图。

【专利附图】

【附图说明】
[0008] 在说明书结尾处的权利要求中特定指出且清楚地主张了被视为本发明的主题。将 根据结合随附图进行的以下详细描述显而易见本发明的前述及其他特征及优点,其中:
[0009]图IA为描绘实施例中的示例主机计算机系统的图;
[0010]图IB为描绘实施例中的示例模拟主机计算机系统的图;
[0011] 图IC为描绘实施例中的示例计算机系统的图;
[0012] 图2为描绘实施例中的示例计算机网络的图;
[0013] 图3为描绘实施例中的计算机系统的元件的图;
[0014] 图4A描绘实施例中的计算机系统的详细元件;
[0015] 图4B描绘实施例中的计算机系统的详细元件;
[0016]图4C描绘实施例中的计算机系统的详细元件;
[0017] 图5描绘根据实施例的用于处理器的运行时间检测的系统的示意图;
[0018] 图6描绘实施例中的包括可由特权状态设置的控制的运行时间检测控制块 (RICCB)的一部分。
[0019] 图7描绘实施例中的当半特权位(K)经设置为1时的RICCB控制块的一部分;
[0020] 图8描绘根据实施例的收集缓冲器;
[0021] 图9描绘根据实施例的报告群组;
[0022] 图10描绘报告群组中的开始记录的实施例;
[0023] 图11描绘报告群组中的时间戳记录的实施例;
[0024] 图12描绘报告群组中的发出记录的实施例;
[0025] 图13描绘报告群组中的中止记录的实施例;
[0026] 图14描绘报告群组中的调用记录的实施例;
[0027] 图15描绘报告群组中的填充记录的实施例;
[0028] 图16描绘报告群组中的指令记录的实施例;
[0029] 图17描绘根据实施例的用于运行时间检测报告的处理;以及
[0030] 图18说明根据实施例的计算机程序产品。

【具体实施方式】
[0031] 本发明的实施例为用于受管理运行时间的基于硬件的运行时间检测设施。如本文 中所使用,术语"受管理运行时间"指代封装状态且管理用以执行程序或应用程序(例如, Java?l、l拟机或"JVM"、操作系统、中间件等)的资源的环境。该运行时间检测设施的实施 例使程序能够收集关于程序执行的信息,包括中央处理单元(CPU)数据。所收集信息允许 该程序获取关于程序的洞察(insights),该信息是收集自该程序。该运行时间检测设施的 实施例包括用于将事件(例如,采纳分支、寄存器值等)的序列收集于收集缓冲器中的硬件 设施。该收集缓冲器(或含有最近记录的收集缓冲器的子集)的内容是在发生可程序化集 合的样本触发事件时在应用程序的地址空间(例如,JVM的地址空间)中复制至程序缓冲 器中,这些事件诸如(但不限于):以指令的形式的软件指示词(softwaredirective)被 插入至指令流中;所执行指令的间隔完成,从上一样本过期时起的给定经过时间,和/或诸 如观察到数据或指令高速缓存未命中的给定硬件事件
[0032] 存储在每一样本点处的数据被存储为相关记录的集合(在本文中也被称为报告 群组)。报告群组经存储至程序缓冲器中,程序缓冲器的位置是根据与运行时间检测相关联 的控制而确定。因此,作为报告群组存储在程序缓冲器中的检测数据可供程序用于后分析 (或甚至用于在运行时间检测期间的积极分析)。
[0033] 动态编译器可利用运行时间信息(诸如,由本文中所描述的基于硬件的运行 时间检测设施收集的运行时间信息)来执行在线反馈导向的最佳化(onlinefeedback directedoptimization)。举例而言,关于重要执行路径、设置档值及优选分支方向的信息 可由动态编译器使用以执行特殊化版本码、引导内嵌(in-1ining)、对执行路径重新排序及 将分支拉直的最佳化。本文中所描述的实施例不限于由编译器使用,且可以诸如(但不限 于)用于引导其他受管理运行时间设施的多种方式使用。举例而言,数据高速缓存事件可 用以帮助废弃项目收集器程序作出关于协同定位多个物件或使多个物件彼此远离的决策 以获得优选数据局部性或避免假性共用问题。
[0034] 图IA描绘实施例中的主机计算机系统50的代表性组件。组件的其他配置也可在 计算机系统中使用。代表性主机计算机系统50包含与主存储器(计算机存储器)2通信的 一个或多个处理器1以及至存储器件11及网络10的用于与其他计算机或SAN等通信的1/ 0接口。处理器1符合具有架构化指令集及架构化功能性的架构。处理器1可具有用于将 程序地址(虚拟地址)变换为存储器中的真实地址的动态地址转译(DAT) 3。DAT3通常包 括用于高速缓存转译的转译后备缓冲器(TLB) 7,使得对计算机存储器2的块的稍后存取不 需要延迟地址转译。通常,高速缓冲存储器9是用于计算机存储器2与处理器1之间。高速 缓冲存储器9可为阶层式的,其具有可供一个以上CPU使用的大的高速缓冲存储器及介于 大的高速缓冲存储器与每一CPU之间的较小、较快速(较低层级)的高速缓冲存储器。在 一些实施例中,较低层级高速缓冲存储器经划分以为指令提取及数据存取提供单独的低层 级高速缓冲存储器。在实施例中,由指令提取单元4经由高速缓冲存储器9从计算机存储 器2提取指令。该指令在指令解码单元6中被解码且(在一些实施例中与其他指令一起) 被分派至指令执行单元8。通常,使用若干指令执行单元8,例如算术执行单元、浮点执行单 元及分支指令执行单元。该指令是由指令执行单元8执行,从而按需要从指令指定的寄存 器或计算机存储器2存取操作数。如果将从计算机存储器2存取(载入或存储)操作数, 则载入存储单元5通常在被执行的指令的控制下处置该存取。指令可在硬件电路中或以内 部微代码(固件)形式执行或通过两者的组合执行。
[0035] 在图IB中,提供模拟主机计算机系统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的功能。
[0036] 在大型计算机中,程序设计师(通常,现今的"C"程序设计师)常常通过编译器应 用程序来使用架构化机器指令。存储在存储介质中的这些指令可原生地在z/Architecture IBM服务器中执行,或替代地在执行其他架构的机器中执行。可在现有及未来的IBM大型 计算机服务器中及在IBM的其他机器(例如,pSeries?.服务器及xSeries?服务器)上模 拟指令。可于在广泛多种机器(使用由IBM?、Intel·?、AMD?、SunMicrosystems及其他 公司制造的硬件)上执行Linux的机器中执行指令。除了在Z/Architecture?T在该硬件 上执行之外,也可使用Linux以及由Hercules、UMX、FundamentalSoftware,Inc. (FSI)或 PlatformSolutions,Inc. (PSI)提供的使用模拟的机器,其中执行通常在模拟模式下。在 模拟模式下,模拟软件是由原生处理器执行以模拟模拟处理器的架构。
[0037] 模拟主机计算机系统21的组件中的一个或多个将在"IBM?z/Architecture PrinciplesofOperation"(公告第SA22-7832-08 号,第 9 版,2010 年 8 月)中予以进一 步描述,该公告特此以全文引用方式并入本文中。IBM为国际商业机器公司(Armonk,New York,USA)额注册商标。本文中所使用的其他名称可为国际商业机器公司或其他公司的注 册商标、商标或产品名称。
[0038] 原生处理器27通常执行存储在包含固件或原生操作系统的模拟例程存储器23中 的模拟软件以执行对模拟处理器的模拟。该模拟软件负责提取并执行模拟处理器架构的指 令。该模拟软件维持模拟程序计数器以追踪指令边界。该模拟软件一次可提取一个或多个 模拟机器指令且将该一个或多个模拟机器指令转换成供原生处理器27执行的原生机器指 令的相应群组。这些经转换指令可被高速缓存,以使得可实现较快速转换。该模拟软件维 持模拟处理器架构的架构规则以便保证针对模拟处理器撰写的操作系统及应用程序正确 地操作。此外,该模拟软件提供由模拟处理器架构识别的资源,包括(但不限于)控制寄存 器、通用寄存器、浮点寄存器、包括(例如)段表及页表的动态地址转译功能、中断机制、上 下文切换机制、当日时间(TOD)时钟及至1/0子系统的架构化接口,以使得经设计以在模拟 处理器29上执行的操作系统或应用程序可在具有该模拟软件的原生处理器27上执行。
[0039] 被模拟的特定指令经解码,且子例程被调用以执行个别指令的功能。模拟模拟处 理器29的功能的模拟软件功能被以(例如)"C"子例程或驱动程序来实施,或以在理解优 选实施例的描述的后将在本领域普通技术人员的能力范围内的提供特定硬件的驱动程序 的某一其他方法来实施。
[0040] 在实施例中,本发明可由软件(有时被称为经授权内部码、固件、微代码、毫码 (milli-code)、微微代码(pico-code)等,其中的任一个都符合本发明)实践。参看图1A,体 现本发明的软件程序代码是由也被称为主机计算机系统50的CPU(中央处理单元)1的处 理器从存储器件11(诸如长期存储介质、CD-ROM驱动器、带驱动器或硬驱动器)存取。软件 程序代码可体现于供数据处理系统使用的多种已知介质(诸如磁盘、硬驱动器或CD-ROM) 中的任一个上。程序代码可分布在这些介质上,或可从一个计算机系统的计算机存储器2 或存储器经由网络10至其他计算机系统地分发给用户以供这些其他系统的用户使用。
[0041] 替代地,程序代码可体现于计算机存储器2中,且由处理器1使用处理器总线(未 图示)存取。此程序代码包括操作系统,该操作系统控制各种计算机组件和一个或多个应 用程序的功能及交互。程序代码通常是从诸如存储器件11的致密介质分页至计算机存储 器2,程序代码可在计算机存储器中供处理器1处理。用于将软件程序代码体现于存储器 中、实体介质上和/或经由网络分发软件码的技术及方法是公知的且本文中将不予以进一 步论述。程序代码在被产生且存储在有形介质(包括(但不限于)电子存储器模块(RAM)、 闪速存储器、致密盘(CD)、DVD、磁带等)上时常常被称为"计算机程序产品"。计算机程序 产品介质通常可由优选在计算机系统中的处理电路读取以供处理电路执行。
[0042] 图IC说明本发明可于其中实践的代表性工作站或服务器硬件系统。图IC的系统 100包含诸如个人计算机、工作站或服务器的代表性基本计算机系统101,其包括可选的外 围设备。基本计算机系统101包括一个或多个处理器106及总线(未图示),该总线用以连 接一个或多个处理器106与基本计算机系统101的其他组件及根据现有技术实现一个或多 个处理器106与基本计算机系统101之间的通信。该总线将处理器106连接至存储器105 及长期存储器107,长期存储器可包括(例如)硬驱动器(包括(例如)磁性介质、CD、DVD 及闪速存储器中的任一个)或带驱动器。基本计算机系统101也可包括用户接口适配器,其 经由该总线将一个或多个处理器106连接至一个或多个接口设备,诸如键盘104、鼠标103、 打印机/扫描仪110和/或其他接口设备,其他接口设备可为任何用户接口设备(诸如触 敏屏幕、数字化输入板等)。该总线也经由显示适配器将一个或多个处理器连接至显示器件 102,诸如IXD屏幕或监视器。
[0043] 基本计算机系统101可通过能够与网络109通信108的网络适配器而与其他计算 机或计算机网络通信。示例网络适配器为通信频道、令牌环(tokenring)、乙太网络或调 制解调器。替代地,基本计算机系统101可使用无线接口(诸如蜂窝数字分组数据(⑶ro) 卡)进行通信。基本计算机系统101可与局域网(LAN)或广域网(WAN)中的这些其他计算 机相关联,或基本计算机系统101可为具有另一计算机的客户端/服务器配置中的客户端 等。
[0044] 图2说明本发明可于其中实践的数据处理网络200。数据处理网络200可包括诸 如无线网络及有线网络的多个个别网络,该多个个别网络中的每一个可包括多个个别工作 站201、202、203、204和/或图1(:的基本计算机系统101。另外,如本领域普通技术人员将 了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能工作站。
[0045] 程序设计码111可体现于存储器105中,且由处理器106使用处理器总线存取。此 程序设计码包括操作系统,其控制各种计算机组件和一个或多个应用程序112的功能及交 互。程序代码通常是从长期存储器107分页至高速存储器105,程序代码可在高速存储器中 供处理器106进行处理。用于将软件程序设计码体现于存储器中、实体介质上和/或经由 网络分发软件码的技术及方法是公知的且本文中将不予以进一步论述。程序代码在被产生 且存储在有形介质(包括(但不限于)电子存储器模块(RAM)、闪速存储器、致密盘(CD)、 DVD、磁带等)上时常常被称为"计算机程序产品"。计算机程序产品介质通常可由优选在计 算机系统中的处理电路读取以供处理电路执行。
[0046] 处理器最容易利用的高速缓冲存储器(通常比处理器的其他高速缓冲存储器快 速且小)为最低(LI或层级一)高速缓冲存储器,且主存储器(主存储器)为最高层级高 速缓冲存储器(L3,如果存在3个层级)。最低层级高速缓冲存储器常常被划分为保存待执 行的机器指令的指令高速缓冲存储器(I高速缓冲存储器)及保存数据操作数的数据高速 缓冲存储器(D高速缓冲存储器)。
[0047] 仍参看图2,网络也可包括大型计算机或服务器,诸如可存取数据存储库也可从 工作站205直接存取的网关计算机(客户端服务器)206或应用程序服务器(远程服务 器)208。网关计算机206充当至每一网络207的进入点。网关在将一个网络连接协议连接 至另一者时是必需的。网关计算机206可优选地借助于通信链路耦接至另一网络(例如, 因特网207)。网关计算机206也可使用通信链路直接耦接至一个或多个工作站101、201、 202、203及204。网关计算机可利用可从国际商业机器公司购得的IBMeServer?zSeries? 务器来实施。
[0048] 在实施例中,体现本发明的软件程序设计码是由基本计算机系统101的处理器 106从长期存储介质(诸如图IC的长期存储器107)存取。软件程序设计码可体现于供数 据处理系统使用的多种已知介质(诸如磁盘、硬驱动器或CD-ROM)中的任一个上。该码可 分布在这些介质上,或可从一个计算机系统的存储器或存储器经由网络至其他计算机系统 地分发给用户210及211以供这些其他系统的用户使用。
[0049] 参看图3,描绘处理器106的示例性处理器实施例。将一个或多个层级的高速缓冲 存储器303用以缓冲存储器块以便改进处理器106的性能。高速缓冲存储器303为保存可 能被使用的存储器数据的高速缓存行的高速缓冲器。典型高速缓存行为64、128或256个 字节的存储器数据。在实施例中,将单独的高速缓存用于高速缓存指令而非用于高速缓存 数据。常常由本领域公知的各种"窥探"演算法来提供高速缓存一致性(存储器及高速缓 冲存储器中的行的复本的同步)。诸如处理器系统的存储器105的主存储器常常被称为高 速缓冲存储器。在具有4个层级的高速缓冲存储器303的处理器系统中,存储器105有时 被称为层级5 (L5)高速缓冲存储器,因为存储器105通常较快且仅保存可供计算机系统使 用的非易失性存储器(DASD、磁带等)的一部分。存储器105 "高速缓存"由操作系统分页 到存储器105内及外的数据页。
[0050] 程序计数器(指令计数器)311追踪待执行的当前指令的地址。z/Architecture 处理器中的程序计数器是64位的且可截断至31或24位以支持先前寻址极限。程序计数 器通常体现于计算机的程序状态字(PSW)中,以使得程序计数器在上下文切换期间保持不 变。因此,进行中的程序(具有程序计数器值)可被(例如)操作系统中断(即,当前上下 文从程序环境切换至操作系统环境)。程序的PSW在程序不在作用中时维持程序计数器值, 且在操作系统在执行中时使用操作系统的程序计数器(在PSW中)。在实施例中,程序计数 器被递增等于当前指令的字节数目的量。精简指令集计算(RISC)指令通常具有固定长度, 而复杂指令集计算(CISC)指令通常具有可变长度。IBMz/Architecture的指令为具有2、 4或6个字节的长度的CISC指令。程序计数器311由(例如)上下文切换操作或分支指令 的分支采纳操作来修改。在上下文切换操作中,当前程序计数器值是与关于执行中的程序 的其他状态信息(诸如条件码)一起存储在PSW中,且载入指向待执行的新程序模块的指 令的新程序代码计数器值。执行分支采纳操作以便通过将分支指令的结果载入至程序计数 器311中而准许程序做出决策或在程序内循环。
[0051] 在实施例中,指令提取单元305是用以代表处理器106提取指令。指令提取单元 305提取"下一顺序指令"、分支采纳指令的目标指令或在上下文切换后程序的第一指令。在 实施例中,指令提取单元305使用预提取技术而基于经预提取的指令可能被使用的可能性 来推测性地预提取指令。举例而言,指令提取单元305可提取包括下一顺序指令的16个字 节的指令及额外字节的其他顺序指令。
[0052] 所提取指令接着由处理器106执行。在实施例中,该所提取指令被传递至指令提 取单元305的解码/分派单元306。解码/分派单元306解码该指令且将关于该经解码指 令的信息转递至适当执行单元307、308和/或310。执行单元307从指令提取单元305接 收关于经解码算术指令的信息且将根据指令的操作码(运算码)对操作数执行算术运算。 操作数是从存储器105、架构化寄存器309或从执行中的指令的立即字段提供至执行单元 307。当存储时,执行的结果是存储在存储器105、架构化寄存器309或存储在其他机器硬件 (诸如控制寄存器、PSW寄存器等)中。
[0053] 处理器106通常具有用于执行指令的功能的一个或多个执行单元307、308及310。 参看图4A,执行单元307可通过接口逻辑407而与架构化寄存器309、解码/分派单元306、 载入/存储单元310及其他处理器单元401通信。执行单元307可使用若干寄存器电路 403、404及405来保存信息,算术逻辑单元(ALU) 402将对该信息进行操作。ALU402执行 诸如加减乘除的算术运算,以及诸如及(and)、或(or)、以及互斥或(xor)、旋转及移位的逻 辑功能。在实施例中,ALU支持与设计依赖的特殊化运算。其他电路可提供包括(例如)条 件码及复原支持逻辑的其他架构化设施408。通常,ALU运算的结果被保存在输出寄存器电 路406中,该输出寄存器电路可将该结果转递至多种其他处理函数。在其他实施例中,存在 处理器单元的许多配置,本描述仅意欲提供对一个实施例的代表性理解。
[0054]ADD指令(例如)将在具有算术及逻辑功能性的执行单元307中执行,而浮点指 令(例如)将在具有特殊化浮点能力的浮点执行单元(未图示)中执行。优选地,执行单 元通过对由指令识别的操作数执行运算码定义的函数而对操作数进行运算。举例而言,可 由执行单元307对在由指令的寄存器字段识别的两个架构化寄存器309中发现的操作数执 行ADD指令。
[0055] 执行单元307对两个操作数执行算术加法且将结果存储在第三操作数中,其中该 第三操作数可为第三寄存器或该两个源寄存器中的一个。执行单元307优选利用算术逻辑 单元(ALU)402,其能够执行诸如移位、旋转、与、或及XOR的多种逻辑函数,以及包括加减乘 除中的任一个的多种代数函数。一些ALU402是为了纯量运算而设计且一些ALU是为了浮 点运算而设计。在实施例中,数据可视架构而为大端序(bigendian)(其中最低有效字节 在最高字节地址处)或小端序(littleendian)(其中最低有效字节在最低字节地址处)。 IBMz/Architecture为大端序。带正负号字段可具正负号及量值,其视架构而定为二进位 反码或二进位补码。二进位补码是有利的,因为ALU不必设计减法能力,因为呈二进位补码 的负值或正值在ALU内仅需要加法。数字通常以速记(shorthand)描述,其中例如,12位的 字段定义4, 096字节块的地址且通常被描述为4Kbyte(千字节)块。
[0056] 参看图4B,用于执行分支指令的分支指令信息通常被发送至分支单元308,其在 其他条件运算完成之前使用诸如分支历史表432的分支预测演算法来预测分支的结果。将 在条件运算完成之前提取并推测地执行当前分支指令的目标。当条件运算完成时,将基于 条件运算的条件及推测出的结果而完成或舍弃推测地执行的分支指令。典型分支指令可测 试条件码且在条件码满足该分支指令的分支要求的情况下分支至目标地址,可(例如)基 于包括在寄存器字段或指令的立即字段中发现的数字的若干数字来计算目标地址。在实施 例中,分支单元308可使用具有多个输入寄存器电路427、428及429及输出寄存器电路430 的ALU426。分支单元308可与(例如)通用寄存器、解码/分派单元306或其他电路425 通信。
[0057] 可出于包括(例如)以下各者的多种原因而中断一组指令的执行:由操作系统起 始的上下文切换,导致上下文切换的程序例外或错误,导致上下文切换的I/O中断信号,或 多个程序的多线程活动(在多线程环境中)。在实施例中,上下文切换动作存储关于当前在 执行中的程序的状态信息,且接着载入关于正被调用的另一程序的状态信息。状态信息可 存储在(例如)硬件寄存器中或存储器中。状态信息包括指向待执行的下一指令的程序计 数器值、条件码、存储器转译信息及架构化寄存器内容。上下文切换活动可由硬件电路、应 用程序、操作系统程序或固件码(微代码、微微代码或经授权内部码(LIC))单独地或组合 地实行。
[0058] 处理器根据指令定义的方法来存取操作数。指令可使用指令的一部分的值提供立 即操作数,可提供明确地指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个 寄存器字段。指令可利用由运算码字段识别为操作数的多个隐含寄存器。指令可利用操作 数的存储器位置。操作数的存储器位置可由寄存器、立即字段或如由z/Architecture长位 移设施(longdisplacementfacility)举例说明的寄存器与立即字段的组合提供,在该z/ Architecture长位移设施中指令定义基寄存器、索引寄存器及立即字段(位移字段),其被 加在一起以提供操作数在存储器中的位置。本文中的位置暗示在主存储器(主存储器)中 的位置,除非另有指示。
[0059] 参看图4C,处理器使用载入/存储单元310来存取存储器。载入/存储单元310 可通过经由高速缓冲存储器/存储器接口获得目标操作数在存储器中的地址及将该操作 数载入架构化寄存器309或另一存储器位置中来执行载入操作,或可通过获得目标操作数 在存储器中的地址及将从架构化寄存器309或另一存储器位置获得的数据存储在存储器 中的目标操作数字置中来执行存储操作。载入/存储单元310可为推测性的且可以相对于 指令序列而言无序的序列存取存储器;然而,载入/存储单元310对程序维持指令是有序地 执行的表像。载入/存储单元310可与架构化寄存器309、解码/分派单元306、高速缓冲存 储器/存储器接口或其他元件455通信,且包含各种寄存器电路、ALU458及控制逻辑463 以计算存储地址且提供管线排序以保持运算有序。一些运算可能无序,但载入/存储单元 提供如本领域公知的用以使无序的运算对程序表现为已有序地执行的功能性。
[0060] 优选地,应用程序"看见"的地址常常被称为虚拟地址。虚拟地址有时被称为"逻 辑地址"及"有效地址"。这些虚拟地址是虚拟的,因为虚拟地址是通过多种DAT技术中的一 个(诸如图3的DAT312)重定向至实体存储器位置,DAT技术包括(但不限于)将偏移值 (offsetvalue)作为虚拟地址的首码、经由一个或多个转译表转译虚拟地址,转译表至少 单独地或组合地包括段表及页表,优选地,段表具有指向页表的输入项。在z/Architecture 中,提供转译的阶层,其包括区域第一表、区域第二表、区域第三表、段表及选用的页表。常 常通过利用转译后备缓冲器(TLB)来改进地址转译的性能,该转译后备缓冲器包含将虚拟 地址映射至相关联实体存储器位置的输入项。输入项是在DAT312使用转译表转译虚拟地 址时创建。于是,虚拟地址的后续使用可利用快速TLB的输入项而非缓慢的顺序转译表存 取。可通过包括最近最少使用(LRU)演算法的多种替换演算法管理TLB内容。
[0061] 在处理器106为多处理器系统的处理器的情况下,每一处理器有责任使经共用资 源(诸如I/O、高速缓冲存储器、TLB及存储器)保持连锁以达成一致性。在实施例中,"窥 探"技术将被用于维持高速缓存一致性。在窥探环境中,每一高速缓存行可被标记为处于共 用状态、排他状态、有变化状态、无效状态及类似状态中的任一个中以便促进共用。
[0062] 图3的I/O单元304为处理器106提供了用于附接至外围设备(包括例如磁带、 磁盘、打印机、显示器及网络)的构件。I/O单元304常常由软件驱动程序提供给计算机程 序。在诸如来自IBM的z/Series的大型计算机中,频道适配器及开放式系统适配器为大型 计算机的I/O单元,I/O单元提供操作系统与外围设备之间的通信。
[0063] 检测数据为与处理器106的操作有关的数据。在实施例中,对检测数据及其他系 统层级量度的存取可能受限制或不可用。计算机处理器在特权状态(或监督状态)及较低 特权状态(或问题状态)下操作。在特权状态中,程序可经由特权操作对所有系统资源进 行存取(例如,对所有控制寄存器及监督存储器空间进行存取)。特权状态也被称为特权模 式或监督模式。在计算机处理器上执行的操作系统可在特权状态中操作。较低特权状态为 对系统资源的存取受限制的非特权状态。举例而言,在较低特权状态中执行的应用程序可 对控制寄存器具有有限存取权或无存取权,且仅可存取由操作系统指派给应用程序的用户 存储器空间。较低特权状态通常被指派给在操作系统的控制下执行的应用程序,且不可在 较低特权状态中执行特权操作。较低特权状态也被称为问题状态、问题模式或用户模式。 [0064]对于在较低特权状态中执行的程序而言不可进行写入存取的一个这种受限资源 为程序状态字(PSW)。PSW可包含待执行的下一指令的程序计数器、可由分支指令使用的条 件码字段、用于指示检测被启用或停用的检测控制字段,及用以控制指令排序且确定计算 机处理器的状态(包括指派给程序的特权状态)的其他信息。在多线程处理环境中,多个 程序共用可用计算机处理器能力或将可用计算机处理器能力按时间截块。程序中的每一个 具有上下文信息(contextinformation),其包括相关联PSW、用于存取指派给程序的主存 储器的地址转译表的原始地址、一组通用寄存器当前值、控制寄存器、浮点寄存器等。目前 在作用中或控制的PSW被称为当前PSW。PSW管理目前在执行中的程序。计算机处理器具 有中断能力,其准许计算机处理器回应于例外条件及外部刺激而迅速地上下文切换至另一 程序。当中断出现时,计算机处理器针对特定中断类别而将当前PSW置于经指派存储位置 (称为旧PSW位置)中。计算机处理器从第二经指派存储位置提取新PSW。此新上下文确 定了待执行的下一程序。在实施例中,这些存储位置位于计算机处理器可存取的存储器位 置中。当计算机处理器已完成处理该中断时,处置该中断的程序可重新载入包括旧PSW的 旧上下文,使旧PSW又变为当前PSW,使得被中断程序可继续。
[0065] 可以明确方式(例如,当指令执行读取PSW位的部分时)或隐含方式(例如,在指 令提取、操作数提取、地址产生计算、地址产生源等中)参考PSW的字段。明确参考通常在 运行时间执行,而隐含参考通常在指令执行期间在管线的不同阶段(即,指令提取、指令解 码、运行时间及完成时间)执行。可独立于彼此来参考或更新PSW中的个别字段。
[0066] 在实施例中,通过操纵上下文,操作系统控制计算机处理资源,包括由计算机处理 器启用运行时间检测。可在操作系统的执行期间以及由操作系统所执行的任何软件应用程 序启用或停用运行时间检测。运行时间检测的启用/停用状态经存储为与程序相关联的 PSW中的上下文信息。
[0067] 运行时间检测(RI)设施可并入实施z/Architecture的模型上。当RI设施经安 装且被启用时,在程序执行期间将数据收集至CPU内的一个或多个收集缓冲器中且接着将 其报告至程序缓冲器。所存储信息的每一单元被称为报告群组。报告群组的内容由多个记 录组成,记录的内容表示由CPU在程序执行期间识别的事件。
[0068] 当以一配置安装运行时间检测设施时,PSW字段(RI位)启用运行时间检测。该 运行时间检测控制的有效性确定了开启RI位的能力,但当RI为1时,CPU控制有效且运行 时间检测经启用。运行时间检测设施可包括以下指令:载入运行时间检测控制、修改运行时 间检测控制、运行时间检测发出、运行时间检测下一个、运行时间检测关闭、运行时间检测 开启、存储运行时间检测控制,及测试运行时间检测控制。
[0069] 载入运行时间检测控制(LRIC)指令初始化管理运行时间检测的运行时间检测控 制。修改运行时间检测控制(MRIC)指令修改最初由LRIC创建的运行时间检测控制的全 部或子集。运行时间检测发出(RIEMIT)指令通过将通用寄存器的值存储在收集缓冲器中 来收集该值。运行时间检测下一个(RINEXT)指令执行对在RINEXT之后的下一个顺序指令 (NSI)的导向取样。运行时间检测关闭(RIOFF)指令停用运行时间检测。运行时间检测开 启(RION)指令启用运行时间检测。存储运行时间检测控制(STRIC)指令将该运行时间检 测控制的当前值置于指定的存储位置中。测试运行时间检测控制(TRIC)指令检查该运行 时间检测控制。在有效的情况下,设置控制经更改指示符的状态。
[0070] 运行时间检测设施包括用于使测量警告外部中断搁置(pending)的能力。由运行 时间检测收集且报告至程序缓冲器的信息的一些是依赖模型的,且因此未被定义。由运行 时间检测设施提供的样本及数据是用于对性能特性的统计估计,且是实质上准确的,且可 能不可重复。举例而言,不管取样模式如何,都不可预测:导致例外或与特定系统内部活动 相关联的样本指令是否会导致报告群组的存储,以及如果报告群组经存储,包括在运行时 间检测数据中的依赖模型数据是否会受影响。
[0071] 收集缓冲器是用以捕获记录的集合,记录的内容报告在程序执行期间由处理器识 别的事件。示例为:一个或多个采纳分支的执行;事务执行中止事件;指令提取高速缓存未 命中;数据提取或存储高速缓存未命中;以及RIEMIT指令的操作数。RIEMIT指令的执行通 过将通用寄存器的值存储至收集缓冲器中来收集该值。可在诸如指令数据缓冲器的其他缓 冲器中收集和/或存储额外数据。
[0072] 报告受报告控制控制。当样本指令经识别时,每一报告控制启用对相应条件的检 查。如果相应条件存在,则形成且存储报告群组。当无报告控制经启用或经启用报告控制 的相应条件不存在时,不存储报告群组。可从指令数据缓冲器及其他依赖模型源获取关于 样本指令所报告的数据,且接着将其用以创建报告群组的一个或多个记录的内容,一个这 种记录为指令记录。
[0073] 可在报告群组存储器中捕获的记录类型包括:填充、额外、开始、时间戳、指令、发 出、事务执行(TX)中止、调用、返回和传送。当收集缓冲器中的有效记录的数目不足以填满 当前报告群组大小的报告群组时,在报告群组中使用填充记录(fillerrecord)。可在报告 群组的额外区段中使用额外记录。开始记录为第一报告群组的第一记录。时间戳记录经存 储为除第一报告群组外的每一个报告群组的记录〇。当针对样本指令存储报告群组时创建 指令记录作为该报告群组的最后记录。发出记录是通过RIEMIT的成功执行而创建。事务 执行(TX)模式中止记录是通过隐含中止创建或由事务中止指令的执行而创建。调用记录 是通过经分类为调用类型分支指令的分支指令的执行而创建。返回记录是通过经分类为返 回指令的返回类型分支指令的执行而创建。传送记录是通过满足特定条件码准则的分支指 令的执行而创建。
[0074] 图5描绘可实施于实施例中的用于处理器的运行时间检测的系统的示意图。在实 施例中,系统500包括中央处理单元(CPU),诸如图1的处理器106。在实施例中,处理器 106为单一处理器。在替代实施例中,处理器106为多核心处理器的单一处理核心。在实施 例中,处理器106能够以变化的速度操作。
[0075] 在实施例中,处理器106进一步包括寄存器510。寄存器510为能够存储数据的 字以供处理器106使用的硬件寄存器。寄存器510包括用于存储可由处理器106存取的数 据的位的一个或多个锁存器。寄存器510可包括(例如)多个通用寄存器和多个控制寄存 器。处理器106另外包括与寄存器510通信的检测模块506。检测模块506为控制处理器 106的检测的处理电路。检测模块506配置以直接从处理器106收集检测数据,诸如一个或 多个采纳分支的执行路径、事务执行中止事件、各种运行时间操作数、时间戳信息等。检测 模块506从处理器106收集检测数据,且将检测数据存储在收集缓冲器508中。在实施例 中,收集缓冲器508为收集从检测模块506接收的数据的循环缓冲器,且当该循环缓冲器被 填满时,该循环缓冲器用新数据覆写最旧数据。
[0076] 处理器106执行一个或多个操作系统516和一个或多个应用程序518。一个或多 个操作系统516和一个或多个应用程序518存储在存储器520 (诸如硬驱动器、CD/R0M、闪 速存储器等)中,且被载入至主存储器514中的为存储目前执行的操作系统和/或应用程 序的一个或多个作用中片段、被调用页(其是按需要从存储器520载入至运行时间存储器 504中)而保留的运行时间存储器504区域中。在实施例中,操作系统中的每一个作为由超 管理器(未图示)管理且由处理器106执行的虚拟机来执行。
[0077] 在实施例中,处理器106将来自主存储器514中的用于目前执行的操作系统或应 用程序的PSW数据512的PSW512载入寄存器510中且设置(例如)寄存器510中的一个 或多个处理器设置。在实施例中,寄存器510中的PSW包括用于启用及控制检测模块506 的一个或多个位。
[0078] -个或多个应用程序518包括经编译以在特定操作系统上执行的软件应用程序、 在解译器上执行的经解译码(例如,Java)或操作系统支持线程(例如,进程管理、守护进 程等)。一个或多个操作系统516和/或一个或多个应用程序518中的每一个可执行指令 以触发检测模块506以使其开始或停止收集检测数据。
[0079] 在实施例中,一个或多个应用程序518中的一个执行指令,该指令已被确定为样 本指令,从而在该样本指令的执行完成时创建样本点,且接着使检测模块506将应用程序 的所收集数据从收集缓冲器508移动至主存储器514中的可由应用程序存取的程序缓冲器 522。主存储器514可为本领域已知的任何可寻址存储器。在实施例中,主存储器514可包 括有时被称为高速缓冲存储器的快速存取缓冲存储器。每一CPU可具有相关联高速缓冲存 储器。在额外实施例中,主存储器514为动态随机存取存储器(DRAM)。在又一实施例中,主 存储器为存储器件,诸如可由应用程序存取的计算机硬驱动器或闪速存储器。
[0080] 为了配置运行时间检测控制,处理器106支持载入运行时间检测控制(LRIC)指 令。除本文予以进一步描述的特定LRIC字段外,将理解,也可定义额外字段以支持其他功 能性。LRIC指令可用以载入运行时间检测且最初配置运行时间检测,且是由图5的检测模 块506支持。在实施例中,检测模块506 (也被称为运行时间检测模块506)实施运行时间 检测控制及报告控制。运行时间检测控制的当前状态可使用存储运行时间控制(STRIC)指 令从图5的寄存器510存储至主存储器514中。可作为LRIC指令的操作数载入的控制块 的各种字段的定义也在本文中用以指代运行时间检测控制的相应值的状态。
[0081]图6描绘实施例中的包括可由特权状态设置的控制的运行时间检测控制控制块 (RICCB)的一部分。控制块部分600可包括除了参看图6所描述的那些值之外的额外值。 可由LRIC指令来执行对控制块部分600的修改。
[0082] 该控制块部分包括有效性位602 (V位)。有效性位602指示处理器中的运行时间 检测控制的集合的有效性,因为控制是由LRIC指令先前设置。
[0083] 该控制块也包括S位604,其用以确定是否允许较低特权状态程序执行MRIC指令。 K位606指示较低特权状态程序是否被准许在半特权状态中关于运行时间检测控制(诸如 运行时间检测控制的原始地址及极限地址)进行执行。H位608确定地址控制(S卩,原始地 址、极限地址及当前地址)是否参考主要虚拟地址空间(primaryvirtualaddressspace) 或主虚拟地址空间(homevirtualaddressspace)。0位610被忽略且当作0对待。
[0084] 较低特权状态样本报告控制位612 (Ps位)是与较低特权状态程序结合使用。当 在较低特权状态中且运行时间检测控制中的Ps位612为零时,在运行时间检测经启用时忽 略运行时间检测控制的报告控制,且因此不导致存储报告群组。当在较低特权状态中且运 行时间检测控制中的Ps位612为1时,检查报告控制且根据其经定义功能来加以使用。
[0085] 监督状态样本报告控制位614 (Qs位)是与监督状态程序结合使用。当在监督状 态中且运行时间检测控制中的Qs位614为零时,在运行时间检测经启用时忽略运行时间检 测控制的报告控制,且因此不导致存储报告群组。当在监督状态中且运行时间检测控制中 的Qs位614为1时,检查报告控制且根据其经定义功能来加以使用。
[0086] 较低特权状态收集缓冲器控制位616 (Pc位)控制着对图5的收集缓冲器508的 更新。当在较低特权状态中且运行时间检测控制中的Pc位616为零时,在运行时间检测经 启用时忽略运行时间检测控制的收集缓冲器控制,且收集缓冲器508的更新被阻止。当在 较低特权状态中且运行时间检测控制中的Pc位616为1时,检查收集缓冲器控制且根据其 经定义功能来加以使用。
[0087] 监督状态收集缓冲器控制位618 (Qc位)控制着对收集缓冲器508的更新。当在 监督状态中且运行时间检测控制中的Qc位618为零时,在运行时间检测经启用时忽略运行 时间检测控制的收集缓冲器控制,且收集缓冲器508的更新被阻止。当在监督状态中且运 行时间检测控制中的Qc位618为1时,检查经指示收集缓冲器控制且根据其经定义功能来 加以使用。
[0088]G位620为运行时间检测暂停中断(也被称为暂停中断)的搁置控制。当G位620 为零时,暂停中断不在搁置中。当G位602为1时,暂停中断在搁置中。当程序缓冲器522 中的第一报告群组被写入时,G位620被设置为零。即,当运行时间检测程序缓冲器原始地 址(R0A)702等于图7的运行时间检测程序缓冲器当前地址(RCA)706时,G位620被设置为 零。当尝试将除了第一报告群组之外的报告群组存储在程序缓冲器522中时,G位620在 运行时间检测暂停条件不存在的情况下经设置为零,且报告群组被存储。当尝试将除了第 一报告群组之外的报告群组存储在程序缓冲器522中时,G位620在运行时间检测暂停条 件存在的情况下经设置为1,且不存储报告群组。
[0089]U位622为用于缓冲器满中断及暂停中断的启用控制。当U位622为零时,中断请 求的产生被停用,且如果该产生在搁置中,则其保持搁置。
[0090]L位624为缓冲器满中断的搁置控制。当L位624为零时,缓冲器满中断不在搁置 中。当L位624为1时,缓冲器满中断在搁置中。
[0091] 密钥字段626为4位的无正负号的整数,其值被用作报告群组的存储的存储保护 密钥。仅在存储密钥匹配与对存储器存取的请求相关联的存取密钥时才准许报告群组的存 储,且在存储密钥匹配存取密钥时或在存储密钥的提取保护位为零时准许提取。在存储密 钥的四个存取控制位等于存取密钥时或在存取密钥为零时,密钥匹配。
[0092] 图7描绘当MRIC被准许以半特权模式(S卩,K位为1)执行时的RICCB控制块的 一部分。控制块700也可为用于初始化运行时间检测控制的LRIC指令的操作数。控制块 700可包括除了参看图7所描述的那些值之外的额外值。在实施例中,MRIC指令操作数的 未另外指明的多个区段不可由较低特权状态程序存取。当半特权模式被准许时,运行时间 检测程序缓冲器原始地址(ROA) 702及运行时间检测程序缓冲器极限地址(RLA) 704是由较 低特权状态程序用MRIC指令设置。ROA702为图5的程序缓冲器522的第一字节的位置。 RLA704指示程序缓冲器522的最后一个字节的位置。
[0093] 在实施例中,运行时间检测程序缓冲器当前地址(RCA) 706可由MRIC指令更新。 RCA706为待存储的下一个报告群组在程序缓冲器522中的位置。RCA706检查报告群组 大小字段744 (RGS字段),且影响用以形成程序缓冲器522的地址的有效位位置的数目。64 位的RCA706为字0、字1的位位置0至26-RGS和附加在右边的RGS+5二进位零。此为将 存储在程序缓冲器522中的后续报告群组在图5的程序缓冲器522中的开始位置。报告群 组为由检测模块506创建且随后存储在程序缓冲器522中的信息单元。在实施例中,当由 RCA706指定的RGS字段744不等于运行时间检测控制的当前报告群组大小(即,RCA706 会改变RGS字段744)时,则将RCA706设置为ROA702。
[0094] 剩余样本间隔计数字段742 (RSIC字段)可由较低特权程序使用MRIC指令更新。 RSIC字段742包括64位的无正负号的整数,其指示剩余样本间隔计数。当运行时间检测控 制中的RSIC字段742的值为零或等于缩放因子(scalingfactor)字段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中的值,或该字段是否继续展示为零,直至运 行时间检测经启用。
[0095]SF字段740含有64位的无正负号的整数,其值为单元的缩放因子计数。单元的尺 寸是根据模式字段708 (M字段)确定。当RSIC字段742中的值为零时,SF字段740提供 RSIC字段742的递减至零的初始值,在递减至零时,当前指令被识别为样本指令,且从SF字 段740值再新间隔计数。SF字段740的有效值在1至264-1的范围中。如果指定了零,则 采用值一。然而,每一模型可具有SF字段740的最小值及最大值两者。最小值及最大值也 可基于模式字段708而不同。如果指定了小于最小值的值,则依赖模型最小值被载入。如 果指定了大于最大值的值,则依赖模型最大值被载入。
[0096] DC控制字段736为4位的无正负号的整数,其值指明与数据提取或存储高速缓存 未命中相关联的高速缓存等待层级。即,样本指令遭遇数据存取高速缓存未命中。除非被 另一运行时间检测控制禁止,否则尝试存储表示样本指令的报告群组,该样本指令的数据 存取在数值上大于或等于由DC控制字段736的值指明的层级的高速缓存等待层级处经识 别为未命中。用于数据存取的高速缓冲存储器结构及高速缓存等待层级是依赖模型的。对 于具有多个操作数或长操作数的指令,其是依赖模型于哪一操作数存取(如果存在)是用 于报告控制。依赖模型行为可忽略DC控制字段736的值,且因此不使用该值作为存储报告 群组的原因。
[0097]IC字段734为4位的无正负号的整数,其值指明与指令提取高速缓存未命中相关 联的高速缓存等待层级。即,样本指令的提取遭遇指令提取高速缓存未命中。对于IC字段 734及DC控制字段736两者而言,高速缓存等待层级为特定高速缓存层级存取与进行观测 的处理器的距离的抽象化。等待层级取决于处理器与主存储器之间的嵌套高速缓存层级的 量与在多个处理器之间共用这些高速缓存层级的方式的组合。较大等待层级通常对应于消 耗较多时间的存取。IC字段734及DC控制字段736中的值可被视为高速缓存等待层级的 零原点识别。举例而言,值零对应于Ll高速缓冲存储器(即,最接近处理器的高速缓冲存 储器)。值一因此为下一层高速缓冲存储器,其可被称为L2高速缓冲存储器,或甚至LI. 5 高速缓冲存储器(在一些机器中)。值2-15指明额外高速缓存等待层的逻辑渐进,直至达 到主存储器,但不包括主存储器本身。一般而言,高速缓冲存储器结构不会深达十五层。因 此,IC字段734及DC控制字段736中的值15被解译为特殊情况,其分别且无关于高速缓 存等待层级地意味:并未出于产生报告群组的存储的目的而识别出指令提取或数据存取的 高速缓存未命中。除非被另一运行时间检测控制禁止,否则尝试存储表示样本指令的报告 群组,该样本指令的提取被识别在数值上大于或等于由IC字段734的值指明的层级的高速 缓存等待层级处未命中。用于指令提取的高速缓冲存储器结构及高速缓存等待层级是依赖 模型的。依赖模型行为可忽略IC字段734的值,且因此不使用该值作为存储报告群组的原 因。
[0098] 高速缓存等待层级更动控制报告控制位732 (F位)是用于非分支指令且用于分支 预测控制。当运行时间检测控制中的F位732为零时,检查运行时间检测控制的高速缓存 报告控制(IC字段734及DC控制字段736)且根据其经定义功能来加以使用。检查运行时 间检测控制的分支预测控制(BPxn722、BPxt724、BPti726及BPni728位)且根据其经定 义功能来加以使用。当F位732为1时,这些相同控制被忽略且报告群组被存储,除非被另 一控制禁止。
[0099] 数据高速缓存未命中控制位730(D位)指示报告群组是否将被存储。如果D位730 为1,则可或可不将额外类型记录置于报告群组的含有关于样本指令的依赖模型数据的额 外区段中。
[0100] MRIC指令包括分支预测(BP)报告控制(BPxn722、BPxt724、BPti726 及BPni 728)。如果运行时间检测控制中的BP报告控制位为零,则不检查相应条件。如果BP报告 控制位为1且相应分支预测条件存在,则报告群组被存储。
[0101]BPxn位722在为1时启用对分支预测信息的检查。因此,如果样本分支被错误地 预测为经采纳而实际上未被采纳,则报告群组被存储。
[0102]BPxt位724在为1时启用对分支预测信息的检查。因此,如果样本分支被错误地 预测为未被采纳而实际上经采纳,则报告群组被存储。
[0103]BPti位726在为1时启用对分支预测信息的检查。因此,如果样本分支被正确地 预测为经采纳且实际上被采纳,但分支目标被错误地预测,则报告群组被存储。
[0104]BPni位728在为1时启用对分支预测信息的检查。因此,如果样本分支被正确地 预测为未被采纳且实际上未被采纳,且分支目标被错误地预测,则报告群组被存储。
[0105] 事务执行模式记录位720 (X位)的启用控制控制着对事务执行模式中止记录的收 集。当运行时间检测控制中的X位720为零时,不收集事务执行模式中止记录。当X位720 为1时,收集事务执行模式中止记录且将记录置于图5的收集缓冲器508中。如果模型未 被安装有事务执行设施,则忽略X位720。
[0106] RIEMIT指令控制位718 (E位)控制RIEMIT指令的执行。当在运行时间检测经启 用时运行时间检测控制中的E位718为零或被忽略且当作零来对待时,RIEMIT执行无操作 (no-operation)。当E位718为1且未被以其他方式忽略时,RIEMIT经启用以执行其经定 义功能。
[0107] J位746在为零时指定:不管掩码值如何,条件分支(BC)指令在其他类型分支类 别中。如果J位746为1,则指定掩码15的BC指令在返回类型分支类别中。当BC指令指 定掩码1-14时,其不受J位746影响且始终在其他类型分支类别中。当在返回类型分支类 别中时,R位716控制至图5的收集缓冲器508中的包括。当在其他类型分支类别中时,B 位748控制至收集缓冲器508中的包括。其他类型分支类别也可被指示为传送类型分支类 别。
[0108] 指令地址码位714(C位)控制调用类型分支的启用。如果运行时间检测控制中的 C位714为1且指令为调用类型分支,则收集缓冲器508被更新。如果对调用类型分支及返 回类型分支两者的依赖模型检测被组合,则C位714对两个类型起作用,且R位716无效。
[0109] R位716为返回类型分支的启用控制。如果运行时间检测控制中的R位716为1 且指令为返回类型分支,则收集缓冲器508被更新。
[0110]B位748为对除了调用类型分支及返回类型分支以外的分支的启用控制。如果运 行时间检测控制中的B位748为1且指令为由运行时间检测识别的其他类型分支,则收集 缓冲器508被更新。
[0111] 最大地址已超出位712 (MAE位)在经设置为1时指示已存储了具有经设置为1的 C位714的一个或多个报告群组。一旦ME位712经设置为1,继续运行时间检测的执行不 会将该位设置回至零。将MAE位712指定为零的LRIC指令或MRIC指令的执行会将ME位 712设置为零。
[0112] 运行时间检测下一个(RINEXT)控制位710 (N位)控制着对运行时间检测下一个 指令(其控制样本指令的执行)的启用。当运行时间检测控制中的N位710为零或被忽略 且当作零来对待时,RINEXT执行无操作。当N位710为1且未被以其他方式忽略时,RINEXT 被启用以执行其经定义功能。
[0113] 模式字段708(M字段)为4位的无正负号的整数,其在运行时间检测控制中的值 指定用于运行时间检测控制的取样模式。所支持的取样模式可包括基于对CPU循环进行计 数、对指令进行计数的取样,或可回应于诸如RINEXT的样本指令而定向至样本。
[0114] 报告群组大小字段744 (RGS)为3位的无正负号的整数,其值指定报告群组的记录 的数目(Rd。报告群组中的记录的数目可从两个记录(包括开始/时间戳记录及指令最 后记录)变化至多达256个记录。在实施例中,上限可为依赖模型的。置于报告群组中的 16字节记录的数目为2 (m:s+1)。
[0115] 主要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时,发生抑制。
[0116] 图7的以上字段及位是字段的放置及命名的示例,且在本文中为清楚起见而提 供。将理解,在其他实施例中,可仅使用字段的子集,字段可呈任何次序或在任何位置中,和 /或可用不同名称来表示。
[0117] 当运行时间检测经安装且启用时,可在收集缓冲器508中捕获许多事件及数据。 收集缓冲器508被用以捕获记录的集合,记录的内容报告在程序执行期间由处理器106识 别的事件。示例为:一个或多个采纳分支的执行,事务执行中止事件,高速缓存未命中,及运 行时间检测发出指令的操作数。IC控制字段734及DC控制字段736设置层级,程序可对在 该层级采取用以改进指令或数据预取行为的某一校正动作有兴趣。RIEMIT指令的执行通过 将通用寄存器的值存储至收集缓冲器508中来收集该值。额外数据可被收集和/或存储在 其他缓冲器中,其他缓冲器诸如用以收集依赖模型样本指令数据以建构运行时间检测指令 记录的指令数据缓冲器(IDB)(未描绘)。
[0118] 所收集的运行时间检测信息是以取样方式报告。对来自指令流的指令进行取样。 经取样的指令被称为样本指令。当运行时间检测经启用时,用于确定样本指令的若干模式 被定义如下。在循环计数模式中,计数为SF740或RSIC742(其任一个被用以提供用于当 前间隔的计数)中所指定的CPU循环的数目。回应于与取样模式相关联的事件调整该计数。 举例而言,当处理器106处在操作状态中时,该计数可被递减。当该计数递减至诸如零的临 限值时,当前指令被识别为样本指令,且将该计数重新初始化至SF740值且该计数开始随 下一循环递减。当样本指令的执行完成时,执行报告(如果适当)。
[0119] 在指令计数模式中,在SF740或RSIC742 (其任一个被用以提供用于当前间隔的 计数)中指定计数。针对由单一操作单元组成的指令,在作为用以调整计数的事件的指令 完成时递减计数。当计数递减至诸如零的临限值时,指令为样本指令。对于由多个操作单 元组成的指令,可按以下方式中的一个递减计数:
[0120] a.针对可中断指令,直到部分完成的所有操作单元表示一个已计数单元,针对该 已计数单元,计数递减。
[0121] b.针对可中断指令,从最近的部分完成起直到最终完成的所有操作单元表示一个 已计数单元,针对该已计数单元,计数递减。
[0122] c.针对在执行由指令的参数指定的处理的CPU确定子部分之后完成的指令,完成 表示一个已计数单元,针对该已计数单元,计数递减。
[0123]d.针对在执行多个操作单元之后完成而不在以上类别a_c中的指令,最后一个操 作单元的完成表示一个已计数单元,针对该已计数单元,计数递减。
[0124] 当针对指令的任何已计数单元而言计数递减至零时,指令为样本指令。当达到诸 如零的临限值时,将计数重新初始化至SF740值,且计数开始如以上a-d中所描述的倒数 计数(countdown)。在计数模式的所有情况下,在样本指令的最后一个操作单元完成之后 发生报告(如果适当)。
[0125] 在导向取样模式中,当N位710为1且RINEXT指令被成功执行时,导向取样发生。 样本指令为RINEXT指令的后的下一顺序指令(NSI)。如果下一顺序指令为执行类型指令, 则样本指令为该执行类型指令的目标指令。当处于循环计数或指令技术模式中时,可发生 导向取样。计数取样结合导向取样及其所导致动作中的任一个继续且不另外受影响,以下 情况除外:如果根据计数取样确定的样本指令与由导向取样确定的指令相同,则不存储两 个报告群组。
[0126] 不管取样模式如何,当样本指令是由RINEXT指令的执行识别时,存储报告群组。 然而,运行时间检测控制Y738、Z739、Qs614及Ps612继续有效。
[0127] 循环计数及指令计数取样各自基于内部系统事件及例外条件而确定会经受一定 量的可变性的适当间隔。倒数计数(countdown)在运行时间检测从停用转变至启用时开 始。视可插入于RINEXT与NSI的完成之间的任何事件而定,导向取样经受较少量的可变性。 值得注意,中断可导致被视为NSI的指令不再为NSI。
[0128] 与模式无关,取样识别样本指令。一旦样本指令经识别,收集便在该样本指令的执 行完成时停止,且开始报告。接着应用管理报告的各种报告控制。在使报告群组的存储在 搁置中时,收集继续。
[0129] 当不在事务执行模式中时,在样本指令的执行完成时,报告群组的存储变为在搁 置中。当在事务执行模式中时,在样本指令的执行完成时,报告群组的存储被延后,直至事 务结束,且接着变为在搁置中。当报告群组的存储被延后或在搁置中时,如果识别出以下中 断中的任一个,则报告群组可被清除:1)程序中断;2)紧急机器检查中断;3)重新启动中 断;及4)监督调用中断。
[0130] 任何搁置中的I/O、外部及可抑制的机器检查中断保持搁置,直至报告群组已被存 储或运行时间检测控制确定报告群将不被存储。
[0131] 每一模式可或可不允许报告控制的不同集合。当取样模式为指令计数或循环计 数,但导向取样也被使用时,可能通过多个取样方法来识别出相同样本指令。当此情况发 生,且待使用的报告控制根据取样模式而不同时,应用与导向取样相关联的报告控制。
[0132] 归因于可能出现的非同步及非请求系统事件,用以对特定指令进行取样的间隔的 精确确定通常不可行。实情为,可将RINEXT指令用以较接近地指明样本指令。
[0133] 当在循环计数模式或指令计数模式中时,RINEXT指令可过于接近于根据指令计数 或循环计数取样所识别的样本指令而发出。相关联的报告群组的内容就好像样本指令被识 别为RINEXT指令的NSI-般,而不像所应用的样本指令的循环计数或指令计数识别。
[0134] 如果以下例外条件中的任何一个或多个得到满足,则RINEXT的执行可作为无操 作来执行:
[0135] 1.运行时间检测控制是无效的。
[0136] 2.在问题状态中,当前运行时间检测控制的Ps612为零,从而指示问题状态报告 不被准许。
[0137] 3.在监督状态中,当前运行时间检测控制的Qs614为零,从而指示监督状态报告 不被准许。
[0138] 4.当前运行时间检测控制的N位710为零,从而指示RINEXT指令本身不被准许。
[0139] 5.存储被抑制。
[0140] 6.当前PSW中的字段指示运行时间检测被停用。
[0141] 7.依赖模型临限值将被超过。在一时间段中RINEXT已被发出的次数已超过依赖 模型极限。
[0142] 8.存在程序缓冲器满条件。
[0143] 9.存在运行时间检测暂停条件。
[0144] 10.下一顺序指令为开始解译执行指令。
[0145] 11.下一顺序指令为监督调用指令。
[0146] 转而参看图8,大体上展示了收集缓冲器508的实施例。如先前所描述,当在程序 执行期间启用运行时间检测时,运行时间检测数据是收集于处理器106内。在实施例中,在 处理器106内收集数据的位置为收集缓冲器508,且视情况为指令数据缓冲器。在实施例 中,收集缓冲器508为处理器106的内部缓冲器,其用以存储(save)所收集的最近记录。当 检测到样本触发点时,将记录从收集缓冲器508复制至程序缓冲器522中以作为将写入至 程序缓冲器522的报告群组的部分。在实施例中,以非破坏性方式从收集缓冲器复制记录。
[0147] 收集缓冲器508可被称为"硬件收集缓冲器",因为收集缓冲器508位于处理器 中,且在实施例中经实施为表示给定事件的指令地址802及事件后设数据804的寄存器对 的阵列。在实施例中,指令数据缓冲器也由寄存器对的阵列来实施。事件的示例为采纳分 支,针对该采纳分支,寄存器对可保存该分支的指令地址,且该后设数据可保存分支的目标 以及关于分支的历史行为的信息。在实施例中,寄存器对经排序,且随着事件出现于指令 流中而被顺序地更新。维持计数器以指示阵列中的最近经更新输入项的索引。在实施例 中,收集缓冲器508为循环缓冲器,且当收集缓冲器508被填满时,下一事件覆写阵列中的 第一输入项,且在发生后续事件时阵列的寄存器对的顺序更新重新开始。因而,假设阵列 CB[0]至CB[N-1]及指示最新更新索引的计数器i,所捕获的事件的追踪可由序列CB[i]、 CB[i-l]、......、CB[1]、CB[0]、CB[N-1]、CB[N-2]、......、CB[i+1]来表示。在另一实施例 中,使用两个指针:指向缓冲器中的最旧输入项的头指针,及指向缓冲器中的最新输入项的 尾/当前指针。
[0148] 在收集缓冲器508中顺序地捕获表示处理器106在任何给定执行点处的状态的事 件。将收集缓冲器508用以捕获记录的集合,记录的内容报告在程序执行期间由处理器106 识别的事件(例如,一个或多个采纳分支的执行,事务执行中止事件,RIEMIT指令的操作数 等)。在实施例中,经识别的事件视图7中所展示的RICCB的内容而定。图8中所展示的收 集缓冲器508的实施例中的输入项包括事件指令地址802及其他相关的事件后设数据804。 事件后设数据804的示例包括(但不限于):采纳分支的指令地址及该分支的目标(包括 关于分支的历史行为的某一信息);RIEMIT指令的指令地址及各别寄存器值;及事务中止 指令的地址及各别事务复原进入点。
[0149] 图8中所展示的收集缓冲器508的实施例能够存储多达32个输入项(S卩,关于32 个事件的信息),其中由64个位(例如,位0:63)指定每一指令地址802且由64个位(例 如,位64:127)指定事件后设数据804。收集缓冲器的大小(Rffl)为依赖模型计数,其表示记 录的数目。在图8中所展示的收集缓冲器508的实施例中,收集缓冲器的字节大小为16字 节记录大小的倍数。在实施例中,收集缓冲器的大小为大于或等于模型的最大报告群组的 计数(R1J与报告群组中的未从收集缓冲器获取的记录的计数(Rnc)之间的差的记录数目。 因此,在实施例中,收集缓冲器的大小经表示为:Rra彡(RrorRic)t5
[0150] 在实施例中,收集缓冲器508及指令数据缓冲器(如果使用指令数据缓冲器)的 内容被清除或以其他方式受以下事件影响:(1)中断;(2)开启及关闭运行时间检测设施的 PSW位(例如,位24)从1变至0;及(3)当运行时间检测设施处于事务执行模式中时识别 出样本指令时(在此情况下,对收集数据缓冲器508及指令数据缓冲器的进一步更新停止 且在事务结束时继续),此时,报告群组的存储在搁置中且收集缓冲器508及指令数据缓冲 器被清除。
[0151] 在诸如图IB中所展示的模拟主机计算机系统的实施例中,主机计算机为每一相 异用户提供对运行时间检测设施及存储/还原运行时间检测状态的共用存取。使用属于主 机的寄存器和/或存储器来存储已存储运行时间检测状态。
[0152] 在实施例中,额外能力可影响数据收集,且可看作提供额外数据收集点,而不实质 上干扰先前所描述的正常指令计数或循环计数取样。这些能力包括RIEMIT指令的执行, RIEMIT指令通过将通用寄存器的值存储至收集缓冲器508中来收集该值。另外,先前所描 述的运行时间检测控制中的数据收集控制位可用以定制所收集数据的类型,例如,E、C、R及 B控制位。以此方式,所收集数据的类型是可程序化的。
[0153] 在实施例中,实施指令数据缓冲器以收集用以建构运行时间检测指令记录的依赖 模型样本指令数据。指令数据缓冲器从指令收集数据以便在该指令被识别为样本指令时使 数据可用。在实施例中,该指令数据缓冲器为处理器中的硬件缓冲器/存储位置,关于可变 为触发器以作为样本点的指令的信息是存储在该硬件缓冲器/存储位置中,使得在登出过 程期间,该信息可与来自收集缓冲器508的数据一起被写出。类似于收集缓冲器508,该指 令数据缓冲器包括指令地址及与该指令相关联的后设数据。指令数据缓冲器中的后设数据 常常为依赖机器的,且可包括(但不限于):高速缓存未命中相关的信息,及分支预测相关 的信息。
[0154] 根据实施例,所收集的其他数据可不来自于收集缓冲器508且可不来自于指令数 据缓冲器。示例包括用以形成以下各者的部分的数据:(1)报告群组的第一记录:时间戳或 开始记录;及(2)额外类型的记录,其可针对每一个报告群组而创建且因此不存储在收集 缓冲器508中,这些记录(当存在时)可放置于报告群组的额外或依赖机器部分中。这些 系统产生的记录在本文中被称为"系统信息记录"。
[0155] 图9描绘在样本点处存储至程序缓冲器522的报告群组900的高层级示例。由 Rvcb表示的来自收集缓冲器508的有效记录的数目在0彡Rra彡Rra (其中Rra为收集缓冲器 508的大小)的范围中。以记录记的报告群组900的大小由RKe表示、等于2(KGS+1),其中RGS 为作为指数的报告群组大小。从除收集缓冲器508外的位置复制的记录(诸如指令记录) 的依赖模型数目(Rnc)在用于报告群组900中时可以或可不以非破坏性方式复制。在实施 例中,如果Rvra小于RkTRn。,则报告群组900的剩余部分将用填充类型记录填满,以使得满足 报告群组900中的Rm个记录的必要计数。在图9的示例中,Rffi = 8,Res = 2,且Ric = 4。 在实施例中,Rffi在2彡RKe彡28个记录的范围中。根据实施例,Res限于小于7的依赖模型 最大值,使得模型中的最大报告群组大小可小于256,但仍为2的幂。
[0156] 图9中所展示的示例报告群组900包括报头区段902、主体区段904、额外记录区 段906及页脚区段908。报头区段902可包括用以保存状态、追踪和/或时序信息的开始记 录或时间戳记录。主体区段904可包括从收集缓冲器508取样的事件及信息的多种记录。 事件及信息可表示(例如)通过发出指令捕获的状态信息、事务执行中止、调用、返回、分支 及填充。额外记录区段906可包括依赖模型记录。页脚区段908可包括含有关于样本指令 的执行的信息的指令记录。
[0157] 根据实施例,报告群组900的第一记录在报头区段902中且为用以保存状态、追踪 和/或时序信息的开始记录或时间戳记录。针对存储在程序缓冲器522中的第一报告群组 900 (S卩,当RCA706等于ROA702时),存储开始记录。时间戳记录被存储作为每一后续报 告群组的第一记录。开始记录或时间戳记录均并非从收集缓冲器508获取,且因此记录为 Ric计数的部分。当Rlie等于Rn。时,主体为空,且没有来自收集缓冲器508的记录被存储在 报告群组中。当Rm大于Rirc且Ric等于2时,报告群组的记录1至Rffi-Ric的内容在报告群 组900的主体区段中且是从收集缓冲器508获取。
[0158] 根据实施例,存储在报告群组900的主体中的收集缓冲器记录是以从最旧至最 新的方式组织,其中当收集缓冲器508具有足够数目个有效记录时,最新记录存储在记录 RkTRjc中。当来自收集缓冲器508的多个记录被存储作为报告群组900的部分时,记录1为 所报告的最旧收集缓冲器记录,虽然收集缓冲器508可能具有不能放入主体的更旧记录, 这是因为必须报告收集缓冲器508中的最新记录。如果收集缓冲器508中的有效记录的数 目不足以填满报告群组900,则按需要将一个或多个填充记录用以填充报告群组记录,该填 充是从紧接在最新收集缓冲器记录的后的记录开始。即,在必要时,将填充类型记录置于主 体区段904的底部。
[0159] 当Rkc大于Rnc且Rnc大于2时,记录(RK(;-RNC+1)至(RKC-2)的内容为报告群组900 的额外区段906且含有一个或多个依赖模型记录或额外记录。当Rn。等于2时,额外区段 906为空且无额外记录被存储。额外区段906中的额外或依赖模型类型记录占用所需的空 间,且任何剩余空间变为主体区段904的部分。
[0160] 在实施例中,报告群组900的记录Rffi-I为页脚区段908且含有表示样本指令的指 令记录。该指令记录并非从收集缓冲器508获取且是部分地从指令数据缓冲器获取。
[0161] 根据实施例,报告群组900是存储在程序缓冲器522中的具有报告群组的字节大 小的整数边界处。
[0162] 当尝试存储报告群组900时,存储该群组的所有记录或存储较少记录。仅当存储 了报告群组900中的所有记录时,才将RCA706前移。在实施例中,当存储报告群组900时, 报告群组900中的记录并非以任何特定次序存储。然而,在已存储报告群组900的所有记 录之后,更新开始记录。
[0163] 在实施例中,低地址保护、动态地址转译(DAT)保护和/或密钥控制保护应用于报 告群组900的存储。密钥控制保护从运行时间检测控制(例如,密钥626)而非当前PSW获 得密钥。所使用的地址空间为主的或主要的,如运行时间检测控制块(例如,H位608)所 指定。如果在报告群组位置处或在开始记录位置处或在该两个位置处识别出存取例外,则 不执行在该两个位置处的存储且不存储报告群组的内容。
[0164] 在实施例中,RCA706针对所存储的报告群组的每一记录递增16。实际更新是对 于每个报告群组900执行一次,按报告群组900的聚集大小递增。RCA706的此递增在本 文中被称为当前地址的前移。因此,报告群组900的成功存储是通过RCA706是否被前移 且开始记录中的存储报告群组的数目(NRG)的字段是否递增1来表示。当识别到运行时 间检测暂停条件时,不使RCA706前移。当RCA706等于1加上RLA704的总和(RCA= 1+RLA)时,存在程序缓冲器满条件。当存在程序缓冲器满条件时,根据实施例,不存储报告 群组900。当RCA706经前移且使程序缓冲器满条件存在时识别出该条件。当RCA706经 前移且程序缓冲器满条件未经识别时,如果已前移的地址已越过页界限,则可识别出存取 例外。将此存取例外指示为副作用存储存取。由识别出程序缓冲器满条件导致的测量警告 外部中断在本文中被称为缓冲器满中断。
[0165] 当识别出程序缓冲器满条件时,可通过实施例执行呈所指示次序的以下动作:
[0166] 1.将开始记录中的停止(S)字段中的一位设置为1以指示程序缓冲器满条件的存 在。
[0167] 2.通过将运行时间检测控制块中的一位(例如,L位624)设置为1而使缓冲器满 中断被搁置。缓冲器满中断保持搁置,直至L位被清零。L位可通过以下各者中的任一个清 零:将L指定为零的LRIC指令的成功执行;缓冲器满中断的呈现;CPU重设;或在程序缓冲 器满条件未被载入的情况下隐含地将L设置为零的MRIC指令的成功执行。
[0168] 在实施例中,当程序缓冲器满条件存在时,以下结果适用:RINEXT的执行不执行 操作;RIEMIT的执行不执行操作;间隔的进一步递减是否发生是依赖模型的,如果间隔的 进一步递减确实发生,则间隔在递减至零时是否重新初始化至控制块中的缩放因子(SF) 值(例如,SF740)也是依赖模型的,如果间隔递减至零,则未识别出样本指令;且其他运行 时间检测指令的执行不受影响。
[0169] 在实施例中,运行时间检测暂停条件最初在待存储的报告群组900的时间戳中的 版本码不等于报告群组900的开始记录中的版本码时存在,且继续,直至在对运行时间检 测控制(例如,控制块)进行改变(其消除潜在不等性)之后再继续运行时间检测为止。最 初在识别开始记录的点处识别运行时间检测暂停条件。由识别出运行时间检测暂停条件导 致的测量警告外部中断在本文中被称为运行时间检测暂停中断。当识别出运行时间检测暂 停条件时,呈所指示次序的以下步骤适用。
[0170] 1.将开始记录中的暂停(H)字段设置为1。
[0171] 2.通过将控制块中的G位(例如,G位62)设置为1而使运行时间检测暂停中断 搁置。运行时间检测暂停中断保持搁置,直至其被清除。在实施例中,其通过以下各者中的 任一个清除:将G位指定为零的LRIC指令的成功执行;运行时间检测暂停中断的呈现;CPU 重设;在载入等于ROA702的RCA706的情况下将G隐含地设置为零的MRIC指令的成功执 行(此也为运行时间检测暂停条件的清除)。
[0172] 当运行时间检测暂停条件存在时,以下结果适用:1.RINEXT的执行不执行操作; 2.RIEMIT的执行不执行操作;3.间隔(例如,RSIC742)的进一步递减是否发生是依赖模 型的,如果间隔的进一步递减确实发生,则间隔在递减至零时是否重新初始化至SF值(例 如,SF740)也是依赖模型的,如果间隔递减至零,则未识别样本指令;4.不存储额外报告 群组900 ;5.不前移RCA706;及6.其他运行时间检测指令的执行不受影响。如果在LRIC 或MRIC指令的执行期间载入作为1的G位,则运行时间检测暂停中断变得搁置。G位是在 MRIC指令指定ROA702等于RCA706时隐含地设置为零。如果运行时间检测控制中的U位 622等于零,则运行时间检测暂停中断被停用。
[0173] 现转而参看图10,大体上展示了开始记录1000的实施例。在实施例中,开始记录 1000是存储在存储在程序缓冲器522中的第一报告群组900的报头区段902中(S卩,当RCA 706等于ROA702时),且在第一报告群组900被存储至程序缓冲器522之后更新开始记录 1000。图10中所展示的开始记录1000包括记录类型字段1002、报告群组的数目(NRG)字 段1004、版本字段1014、RGS字段1006、停止(S)字段1008、能力(T)字段1016、暂停(H)字 段1010及当日时间(TOD)时钟字段1012。开始记录1000是使用运行时间检测控制值(例 如,来自RICCB或其他控制块)初始化。记录类型字段1002经设置为"02"以指示记录为 开始记录1000。NRG字段1004经设置为1以指示程序缓冲器522中存储有一个报告群组 900。每当一新报告群组经存储至程序缓冲器522时,更新NRG字段1004。版本字段1014 存储一整数,其值指示(例如,检测模块506的)功能工程变化位准。在开始记录1000的 初始化期间,用RGS1006的当前值(例如,来自RICCB)更新RGS字段1006以指示程序缓 冲器522中的所有报告群组900的大小。S字段1008经设置为零以指示程序缓冲器522未 满。如果程序缓冲器522变满,则S字段1008变为1,其指示程序缓冲器满条件存在。在初 始化期间,T字段1016在报告群组900表示在以CPU能力操作的CPU上捕获的样本时经设 置为零,且在报告群组900表示在以次要CPU能力操作的CPU上捕获的样本时经设置为1。 H字段1010在初始化期间经设置为零,且接着在运行时间检测已由于除缓冲器满条件外的 原因而暂停的情况下经设置为1。当H字段1010等于1时,RICCB中的G位620也经设置 为1。TOD时钟字段1012经设置以指示含有开始记录1000的报告群组最初被存储时的当 日时间。开始记录1000的保留部分(及报告群组记录的剩余部分中的任何保留部分)不 具有可预测的值。
[0174] 图11为报告群组900的报头区段902中的时间戳记录1100的实施例。时间戳记 录1100被存储作为程序缓冲器522中的并非第一报告群组900的每一个报告群组900的 记录零(即,第一记录)。时间戳记录1100是在报告群组900经存储至程序缓冲器522且 ROA702不等于RCA706时创建。图11中所展示的时间戳记录1100的实施例包括记录类 型1102、版本字段1106、能力(T)字段1108及TOD时钟字段1104。记录类型1102经设置 为"03"以指示记录为时间戳记录1100。版本字段1106存储整数,其值指示(例如,检测模 块506的)功能工程变化位准。在初始化期间,T字段1108在报告群组900表示在以CPU 能力操作的CPU上捕获的样本时经设置为零,且在报告群组900表示在以次要CPU能力操 作的CPU上捕获的样本时经设置为1。TOD时钟字段1104经设置以指示当含有时间戳记录 1100的报告群组900最初被存储时的当日时间。
[0175] 报告群组900的主体区段904可包括从收集缓冲器508取样的多种事件及信息。 事件及信息可表示(例如)通过发出指令捕获的状态信息、事务执行模式中止、调用、返回、 分支及填充。
[0176] 发出记录是在RIEMIT指令的成功执行时创建且存储在程序缓冲器522中的报告 群组900的主体区段904中。图12说明基于是否正在实施64、31或24位寻址模式而变化 的发出记录1202、1204及1206的三个不同实施例。发出记录1202、1204及1206均包括记 录类型字段1208、指令地址码(C)字段1210、指令地址字段1212及发出数据字段1214。记 录类型字段1208经设置为"10"以指示记录为发出记录1202、1204或1206。在实施例中, C字段1210为无正负号的整数,其值为码,该码描述当前PSW中的指令地址位位置在发出记 录1202、1204及1206中的表示方式。当C字段1210等于零时,当前PSW的指令地址(IA) 的位位置22-62是放置于记录的位位置22-62中,且指令地址的位位置0-21全部为零。当 C字段1210等于1时,当前PSW的指令地址的位位置22-62是放置于记录的位位置22-62 中,且指令地址的位位置0-21并非全为零。当C字段等于1时,如果记录经存储作为报告 群组900的部分,则将运行时间检测控制块中的最大地址已超出位(例如,MAE712)设置 为1。指令地址字段1212含有RIEMIT指令或执行类型指令(如果RIEMIT指令为执行类型 指令的目标)的指令地址。如图12中所展示,指令地址字段1212视寻址模式(例如,64、 31或24位)而变化。发出数据字段1214包括来自由RIEMIT指令指定的通用寄存器的数 据。
[0177] 事务执行模式中止记录是通过隐含中止或通过事务中止的执行而创建,且存储在 程序缓冲器522中的报告群组900的主体区段904中。图13说明基于是否正在实施64、31 或24位寻址模式而变化的中止记录1302U304及1306的三个不同实施例。中止记录1302、 1304及1306均包括记录类型字段1308、指令地址码(C)字段1310、指令地址字段1312及 依赖模型字段1314。记录类型字段1308经设置为"11"以指示记录为中止记录1302、1304 或1306。在实施例中,C字段1310为无正负号的整数,其值为码,该码描述当前PSW中的 指令地址位位置如何在中止记录1302、1304及1306中表示,且该字段具有类似于上文关于 图12所描述的C字段1210的性质。指令地址字段1312含有已中止指令或执行类型指令 (如果已中止指令为执行类型指令的目标)的指令地址。如图13中所展示,指令地址字段 1312视寻址模式(例如,64、31或24位)而变化。依赖模型数据字段1314包括与中止相 关联的任何依赖模型数据。
[0178] 调用记录是通过经分类为调用类型分支指令的分支指令的执行而创建。调用记录 是存储在程序缓冲器522中的报告群组900的主体区段904中。在实施例中,调用类型分 支包括:当R2 字段为非零时的BRANCHANDSAVE(BASR)、BRANCHANDSAVE(BAS)、BRANCH RELATIVEANDSAVEL0NG、BRANCHRELATIVEANDSAVE、当R2 字段为非零时的BRANCHAND LINK(BALR)、BRANCHANDLINK(BAL)及当R2 字段为非零时的BRANCHANDSAVEANDSET MODE。图14说明基于是否正在实施64、31或24位寻址模式而变化的调用记录1402、1404 及1406的三个不同实施例。调用记录1402、1404及1406均包括记录类型字段1408、指令地 址码(C)字段1410、指令地址字段1412、正常执行(W)字段1416及目标地址字段1414。记 录类型字段1408经设置为" 12"以指示记录为调用记录1402、1404或1406。C字段1410为 无正负号的整数,其值为码,该码描述当前PSW中的指令地址位位置如何在调用记录1402、 1404及1406中表示,且该字段具有类似于上文关于图12所描述的C字段1210的性质。指 令地址字段1412含有分支指令或执行类型指令(如果分支为执行类型指令的目标)的地 址。具有值1的W字段1416指示分支被正确地预测,且值零指示分支未被正确预测。目标 地址字段1414含有分支目标地址(也被称为"被调用位置")。
[0179] 程序缓冲器522中的报告群组900的主体区段904中的返回记录及传送记录具有 与调用记录1402U404及1406相同的格式。在实施例中,返回记录具有为"13"的记录类型 字段且是通过返回类型分支指令的执行而创建,该返回类型分支指令诸如当R2字段为非 零且掩码为15时的BRANCHONCONDITION(BCR),当J位为1且掩码为15时的BRANCHON CONDITION(BC),及当R2字段为非零时的BRANCHANDSETMODE。对于返回记录,指令地址 字段含有分支指令或执行类型指令(如果分支为执行类型指令的目标)的地址,且目标地 址字段含有返回位置。
[0180] 在实施例中,传送记录具有为"14"的记录类型字段且是通过诸如以下各者 的返回类型分支指令的执行而创建:a.当R2字段为非零且掩码在1-14的范围中时, BRANCH ON CONDITION (BCR) ;b.当J位为零或掩码在1-14的范围中时,BRANCH ON CONDITION (BC) ;c. BRANCH ON ⑶UNT (BCT, BCTR, BCTG, BCTGR) ;d. BRANCH ON INDEX HIGH (BXHjBXHG);e. BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG);f. BRANCH RELATIVE ON CONDITION (BRC);g. BRANCH RELATIVE ON C0NDITI0NL0NG(BRCL);h. BRANCH RELATIVE ON COUNT(BRCT, BRCTG);i. BRANCH RELATIVE ON COUNT HIGH(BRCTH);j. BRANCH RELATIVE ON INDEX HIGH(BRXH, BRXHG);k. BRANCH RELATIVE ON INDEX LOW 0REQUAL(BRXLE, BRXLG); I.COMPARE AND BRANCH(CRB, CGRB);m.COMPARE AND BRANCH RELATIVE (CRJjCGRJ); n.COMPARE IMMEDIATE AND BRANCH(CIB, CGIB);o.COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ, CGIJ);p.COMPARE LOGICAL AND BRANCH(CLRB, CLGRB); q.COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ);r.COMPARE LOGICAL IMMEDIATE ANDBRANCH(CLIB, CLGIB);及s. COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ,CLGIJ)。传送记录是在分支经采纳时创建。对于传送记录,指令地址字段 含有分支指令或执行类型指令(如果分支为执行类型指令的目标)的地址,且目标地址字 段含有返回位置。
[0181] 当收集缓冲器508中的有效记录的数目不足以填满具有当前RGS的报告群组900 时,在报告群组900的主体区段904中使用填充记录。图15为填充记录1500的实施例。图 15中所展示的实施例包括记录类型1502,其经设置为"00"以指示该记录为填充记录1500, 且剩余字节是未定义的。
[0182] 报告群组900中的额外记录区段906 (在存在时)可含有依赖模型记录。在实施 例中,除了记录类型经设置为"01"以指示该记录为额外记录且该额外记录的剩余字节含有 依赖模型数据之外,额外记录的格式类似于填充记录1500。
[0183] 在实施例中,报告群组900的页脚区段908包括含有关于样本指令的执行的信息 的指令记录。指令记录是在存储针对样本指令的报告群组900时创建。图16说明基于是 否正在实施64、31或24位寻址模式而变化的指令记录1602、1604及1606的三个不同实施 例。指令记录1602、1604及1606均包括记录类型字段1608、指令地址码(C)字段1610、指 令地址字段1612及指令数据缓冲器(IDB)字段1614。记录类型字段1608经设置为"04" 以指示记录为指令记录1602、1604或1606。C字段1610为无正负号的整数,其值为码,该 码描述当前PSW中的指令地址位位置如何在指令记录1602、1604及1606中表示,且该字段 具有类似于上文关于图12所描述的C字段1210的性质。指令地址字段1612含有样本指 令或执行类型指令(如果样本指令为执行类型指令的目标)的地址。如图16中所展示,指 令地址字段1612视寻址模式(例如,64、31或24位)而变化。IDB字段1614包括从指令 数据缓冲器收集的数据且内容是依赖模型的。
[0184] 图17描绘根据实施例的用于运行时间检测报告的程序流程。在实施例中,图17 中所展示的程序是由检测模块506执行。在块1702,在处理器(诸如处理器106或模拟处 理器29)上执行指令流。在块1704,捕获该执行中的指令流的运行时间检测信息,且在块 1706,基于该捕获的运行时间检测信息而创建运行时间检测记录(诸如收集缓冲器508中 所展示的记录)。在块1708,检测该执行中的指令的运行时间检测样本点。在块1710,将报 告群组(诸如报告群组900)存储在运行时间检测程序缓冲器(诸如程序缓冲器522)中。 该存储包括基于该运行时间检测控制来确定该运行时间检测程序缓冲器的当前地址。在实 施例中,该运行时间检测控制的当前地址为存储在RICCB700中的RCA706。该存储是基于 该运行时间检测程序缓冲器的原始地址(例如,ROA702)及当前地址。
[0185] 如上所述,实施例可以计算机实施程序及用于实践那些程序的装置的形式体现。 实施例可包括在计算机可读/可用介质1802上的如图18中所描绘的计算机程序产品 1800,该计算机可读/可用介质1802具有含有作为制品体现于有形介质中的指令的计算机 程序代码逻辑1804。计算机可读/可用介质1802的示例性制品可包括软盘、⑶-ROM、硬驱 动器、通用串行总线(USB)闪速驱动器或任何其他计算机可读存储介质,其中,当计算机程 序代码逻辑1804被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明的 装置。实施例包括计算机程序代码逻辑1804,该计算机程序代码逻辑(例如)存储在存储 介质中、经载入至计算机中和/或由计算机执行,或经由某一传输介质(诸如,经由电布线 或缆线、经由光纤或经由电磁辐射)进行传输,其中,当计算机程序代码逻辑1804被载入至 计算机中且由计算机执行时,该计算机变为用于实践本发明的装置。当实施于通用微处理 器上时,计算机程序代码逻辑1804的多个段配置该微处理器以创建特定逻辑电路。
[0186] 技术效果及益处包括在实验室环境中提取运行时间检测数据以用于离线分析,且 在运行时间在程序内的即时软件环境(livesoftwareenvironment)中且在程序控制下提 取运行时间检测数据的能力。报告群组经存储至程序缓冲器中,该程序缓冲器的位置是根 据与运行时间检测相关联的控制来确定。因此,作为报告群组存储在程序缓冲器中的检测 数据可供程序用于后分析(或甚至在运行时间检测期间的积极分析)。
[0187] 本文中所使用的术语仅用于描述特定实施例的目的且不欲限制本发明。如本文 中所使用,除非上下文另有清晰指示,否则单数形式"一"及"该"意欲也包括复数形式。将 进一步理解,术语"包含"在用于本说明书中时指定所陈述的特征、整数、步骤、操作、元件和 /或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组 的存在或添加。
[0188]以下权利要求中的所有构件或步骤加功能元件的相应结构、材料、动作及等效物 意欲包括用于连同如具体所主张的其他所主张元件一起执行功能的任何结构、材料或动 作。已出于说明及描述目的呈现了本发明的描述,但该描述不欲为详尽的或限于呈所揭示 的形式的本发明。在不脱离本发明的范畴及精神的情况下,许多修改及变化对于一般本领 域普通技术人员将显而易见。选择并描述实施例以便最佳地解释本发明的原理及实际应 用,且使其他一般本领域普通技术人员能够理解本发明的各种实施例,实施例具有适合于 所设想的特定用途的各种修改。
[0189] 如本领域普通技术人员将了解,本发明的方面可体现为系统、方法或计算机程序 产品。相应地,本发明的方面可采用完全硬件实施例、完全软件实施例(包括固件、常驻软 件、微代码等)或组合软件方面与硬件方面的实施例的形式,实施例在本文中都可通称为 "电路"、"模块"或"系统"。此外,本发明的方面可采用体现于一个或多个计算机可读介质 中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读 程序代码。
[0190] 可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读 信号介质或计算机可读存储介质。计算机可读存储介质可为(例如,但不限于)电子、磁性、 光学、电磁、红外线或半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读存 储介质的更特定示例(非详尽清单)将包括以下各者:具有一或多条导线的电连接件、携带 型计算机磁片、硬碟、随机存取存储器(RAM)、唯读存储器(ROM)、可抹除可程序化唯读存储 器(EPROM或闪速存储器)、光纤、携带型致密盘唯读存储器(CD-ROM)、光学存储器件、磁性 存储器件或前述各者的任何合适组合。在本文件的上下文中,计算机可读存储介质可为可 含有或存储供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件使用的程 序的任何有形介质。
[0191] 计算机可读信号介质可包括传播的数据信号,该传播的数据信号具有体现于其中 (例如,在基频中或作为载波的部分)的计算机可读程序代码。此传播信号可采用多种形式 中的任一个,包括(但不限于)电磁、光学或其任何合适组合。计算机可读信号介质可为并 非计算机可读存储介质且可传达、传播或输送供指令执行系统、装置或器件使用或结合指 令执行系统、装置或器件使用的程序的任何计算机可读介质。
[0192] 可使用任何适当介质来传输体现于计算机可读介质上的程序代码,适当介质包括 (但不限于)无线、有线、光纤缆线、RF等或前述各者的任何合适组合。
[0193] 可以一或多种程序设计语言的任何组合来撰写用于执行本发明的方面的操作的 计算机程序代码,该一或多种程序设计语言包括物件导向式程序设计语言(诸如,Java、 SmalltalkX++或其类似者)及习知程序性程序设计语言(诸如,"C"程序设计语言或类似 程序设计语言)。程序代码可完全在用户的计算机上执行,部分地在用户的计算机上执行, 作为独立套装软件而执行,部分地在用户的计算机上执行且部分地在远程计算机上执行, 或完全在远程计算机或服务器上执行。在完全在远程计算机或服务器上执行的情形中,远 程计算机可经由任何类型的网络(包括局域网(LAN)或广域网络(WAN))连接至用户的计 算机,或可连接至外部计算机(例如,使用因特网服务提供者,经由因特网)。
[0194] 上文中参考根据本发明的实施例的方法、装置(系统)及计算机程序产品的流程 图说明和/或示意图来描述本发明的方面。将理解,可通过计算机程序指令来实施流程图 说明和/或方块图中的每一块及流程图说明和/或方块图中的块的组合。可将这些计算机 程序指令提供至通用计算机、专用计算机或其他可程序化数据处理装置的处理器以产生一 机器,以使得经由该计算机或其他可程序化数据处理装置的处理器执行的指令产生用于实 施该或流程图和/或方块图块中所指定的功能/动作的构件。
[0195] 也可将这些计算机程序指令存储在计算机可读介质中,其可指导计算机、其他可 程序化数据处理装置或其他器件以特定方式发挥作用,使得存储在该计算机可读介质中的 指令产生一制品,该制品包括实施该或流程图和/或方块图块中所指定的功能/动作的指 令。
[0196] 也可将计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器件 上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生计算机 实施的程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施该或流程图 和/或方块图块中所指定的功能/动作的程序。
[0197] 如上所述,实施例可以计算机实施的程序及用于实践那些程序的装置的形式体 现。在多个实施例中,本发明系体现于由一个或多个网络元件执行的计算机程序代码中。实 施例包括在计算机可用介质上的计算机程序产品,该计算机可用介质具有含有体现于作为 制品的有形介质中的指令的计算机程序代码逻辑。计算机可用介质的示例性制品可包括软 碟、CD-ROM、硬驱动器、通用流总线(USB)随身碟或任何其他计算机可读存储介质,其中,当 计算机程序代码逻辑被载入至计算机中且由计算机执行时,该计算机变为用于实践本发明 的装置。实施例包括计算机程序代码逻辑,该计算机程序代码逻辑(例如)存储在存储介 质中、载入至计算机中和/或由计算机执行,或经由某一传输介质(诸如,经由电布线或缆 线、经由光纤或经由电磁辐射)进行传输,其中,当计算机程序代码逻辑被载入至计算机中 且由计算机执行时,该计算机变为用于实践本发明的装置。当实施于一通用微处理器上时, 计算机程序代码逻辑的多个段配置该微处理器以创建特定逻辑电路。
[0198] 图中的流程图及方块图说明根据本发明的各种实施例的系统、方法及计算机程序 产品的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一块可表示程序 代码的模块、段或部分,其包含用于实施指定逻辑功能的一个或多个可执行指令。也应注 意,在一些替代实施中,块中所提到的功能可不以诸图中所提到的次序发生。举例而言,视 所涉及的功能性而定,连续展示的两个块实际上可实质上同时执行,或块有时可以相反次 序执行。也应注意,可通过执行指定功能或动作的基于专用硬件的系统或专用硬件与计算 机指令的组合来实施方块图和/或流程图说明的每一块及方块图和/或流程图说明中的块 的组合。
【权利要求】
1. 一种用于运行时间检测报告的计算机程序产品,该计算机程序产品包含: 有形存储介质,其可由处理电路读取,并且存储供该处理电路执行以用于执行包含以 下操作的方法的指令: 由处理器执行指令流; 由该处理器捕获该执行中的指令流的运行时间检测信息; 基于该捕获的运行时间检测信息,创建运行时间检测记录; 检测在该处理器上的该执行中指令流的运行时间检测样本点;以及 将报告群组存储在运行时间检测程序缓冲器中,该存储基于检测运行时间检测样本 点,该存储包含: 确定该运行时间检测程序缓冲器的当前地址,该确定基于指令可存取的运行时间检测 控制;以及 基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该 运行时间检测程序缓冲器中,该报告群组包含该创建的运行时间检测记录。
2. 如权利要求1的计算机程序产品,其中该报告群组包括由该运行时间检测控制指定 的预定数目个运行时间检测记录。
3. 如权利要求1的计算机程序产品,其中该方法进一步包含在监督状态中执行程序以 在该运行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址或该运行时间检 测程序缓冲器的该当前地址中的任一个。
4. 如权利要求3的计算机程序产品,其中该程序包括载入运行时间检测控制(LRIC)指 令及修改运行时间检测控制(MRIC)指令中的一个。
5. 如权利要求1的计算机程序产品,其中该方法进一步包含在问题状态中执行程序以 在该运行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址,其中该程序包括 修改运行时间检测控制(MRIC)指令。
6. 如权利要求1的计算机程序产品,其中该运行时间检测控制指定该运行时间检测程 序缓冲器中的每一报告群组中的记录的数目。
7. 如权利要求1的计算机程序产品,其中该运行时间检测程序缓冲器位于可由应用程 序存取的地址空间中。
8. -种用于运行时间检测报告的计算机实施方法,该方法包含: 由处理器执行指令流; 由该处理器捕获该执行中的指令流的运行时间检测信息; 基于该捕获的运行时间检测信息,创建运行时间检测记录; 检测在该处理器上的该执行中指令流的运行时间检测样本点;以及 将报告群组存储在运行时间检测程序缓冲器中,该存储基于检测运行时间检测样本 点,该存储包含: 确定该运行时间检测程序缓冲器的当前地址,该确定基于指令可存取的运行时间检测 控制;以及 基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该 运行时间检测程序缓冲器中,该报告群组包含该创建的运行时间检测记录。
9. 如权利要求8的方法,其中该报告群组包括由该运行时间检测控制指定的预定数目 个运行时间检测记录。
10. 如权利要求8的方法,其进一步包含在监督状态中执行程序以在该运行时间检测 控制中设置该运行时间检测程序缓冲器的该原始地址或该运行时间检测程序缓冲器的该 当前地址中的任一个。
11. 如权利要求10的方法,其中该程序包括载入运行时间检测控制(LRIC)指令及修改 运行时间检测控制(MRIC)指令中的一个。
12. 如权利要求8的方法,其进一步包含在问题状态中执行程序以在该运行时间检测 控制中设置该运行时间检测程序缓冲器的该原始地址,其中该程序包括修改运行时间检测 控制(MRIC)指令。
13. 如权利要求8的方法,其中该运行时间检测控制指定该运行时间检测程序缓冲器 中的每一报告群组中的记录的数目。
14. 如权利要求8的方法,其中该运行时间检测程序缓冲器位于可由应用程序存取的 地址空间中。
15. -种用于运行时间检测报告的系统,该系统包含: 处理器,该系统配置以执行包含以下操作的方法: 由处理器执行指令流; 由该处理器捕获该执行中的指令流的运行时间检测信息; 基于该捕获的运行时间检测信息,创建运行时间检测记录; 检测在该处理器上的该执行中指令流的运行时间检测样本点;以及 将报告群组存储在运行时间检测程序缓冲器中,该存储基于检测运行时间检测样本 点,该存储包含: 确定该运行时间检测程序缓冲器的当前地址,该确定基于指令可存取的运行时间检测 控制;以及 基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该 运行时间检测程序缓冲器中,该报告群组包含该创建的运行时间检测记录。
16. 如权利要求15的系统,其中该报告群组包括由该运行时间检测控制指定的预定数 目个运行时间检测记录。
17. 如权利要求15的系统,其中该方法进一步包含:在监督状态中执行程序以在该运 行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址或该运行时间检测程序 缓冲器的该当前地址中的任一个。
18. 如权利要求17的系统,其中该程序包括载入运行时间检测控制(LRIC)指令及修改 运行时间检测控制(MRIC)指令中的一个。
19. 如权利要求15的系统,其中该方法进一步包含:在问题状态中执行程序以在该运 行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址,其中该程序包括修改运 行时间检测控制(MRIC)指令。
20. 如权利要求15的系统,其中该运行时间检测控制指定该运行时间检测程序缓冲器 中的每一报告群组中的记录的数目。
【文档编号】G06F11/34GK104380264SQ201380014669
【公开日】2015年2月25日 申请日期:2013年2月28日 优先权日:2012年3月16日
【发明者】M.S.法雷尔, 小查尔斯.W.盖尼, M.M.米特兰, 岑中龙, B.L.史密斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1