CN1627270A - 用于对指令执行和数据访问进行计数的方法和设备 - Google Patents
用于对指令执行和数据访问进行计数的方法和设备 Download PDFInfo
- Publication number
- CN1627270A CN1627270A CNA200410083369XA CN200410083369A CN1627270A CN 1627270 A CN1627270 A CN 1627270A CN A200410083369X A CNA200410083369X A CN A200410083369XA CN 200410083369 A CN200410083369 A CN 200410083369A CN 1627270 A CN1627270 A CN 1627270A
- Authority
- CN
- China
- Prior art keywords
- instruction
- incident
- designator
- data
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种用于处理指令的数据处理***中的方法、设备和计算机指令。在数据处理***中的处理器接收指令。如果选定指示符与该指令相关联,则启动对与该指令的执行相关联的每个事件的计数。
Description
技术领域
本发明一般涉及一种改进的数据处理***。具体地说,本发明提供一种用于获得数据处理***内的性能数据的方法和设备。更具体地说,本发明提供一种用于在获得数据处理***内的性能数据时对软件工具提供硬件协助的方法和设备。
背景技术
在分析和增强数据处理***和在该数据处理***内执行的应用程序的性能时,知道数据处理***内的哪些软件模块正在使用***资源是有帮助的。数据处理***的有效管理和增强需要知道如何和何时使用了各种***资源。性能工具用来监测和检查数据处理***以确定各种软件应用程序在数据处理***内执行时的资源消耗。例如,性能工具可以识别数据处理***中最频繁执行的模块和指令,或者可以识别分配最大量的存储器或执行最多I/O请求的那些模块。硬件性能工具可以内置在***中,或者在以后的时间点添加。
一种公知的软件性能工具是跟踪工具。跟踪工具可以使用多种技术来提供表示执行程序的执行流的跟踪信息。一种技术通过随着特定事件的出现而对其进行记录来跟踪该特定指令序列,即所谓的基于事件的剖析(profiling)技术。例如,跟踪工具可以记录对模块、子例程、方法、函数或***组件的每一次进入和每一次退出。或者,跟踪工具可以记录每一个存储器分配请求的请求者以及为其分配的存储器量。典型地,为每一个这样的事件产生带时间戳记录。还使用类似于进入-退出记录的对应记录对来跟踪开始和完成I/O或数据传输以及用于很多其它感兴趣事件的任意代码段的执行。
为了改善由不同计算机家族生成的代码的性能,经常有必要确定处理器在执行代码时在何处花费了时间,这样的工作在计算机处理领域内通常称作定位“热点”。在理想情况下,希望以指令和/或源代码行级别查出这样的热点,从而将注意力集中在通过代码改进而可能受益最大的区域。
另一种跟踪技术涉及周期性地对程序的执行流进行采样以识别该程序似乎花费大量时间的特定程序位置。该技术基于以规则间隔周期性地中断应用程序或数据处理***执行的思想,即所谓的基于样本的剖析。每次中断时,对预定时间长度或者预定次数的感兴趣事件记录信息。例如,在此间隔期间可以记录当前执行线程的程序计数器,其是正被剖析的较大程序的可执行部分。可以在后处理时对照数据处理***的装入图(load map)和符号表信息来解析这些值,并且可以通过这一分析获得正在何处花费时间的剖析信息(profile)。
创建诸如得到与特定情形或问题有关的答案的工具可能非常费力,并且可能非常难以校准,因为软件工具本身影响测试中的***。本发明认识到对工具开发和问题分析的硬件协助可以极大地减轻开发软件性能工具所需的工作量。此外,随着处理器的密度增大,可以包括硬件协助来提供附加调试和分析特性。
因此,具有一种用于为用来分析数据处理***的性能的性能工具提供硬件协助的改进方法、设备和计算机指令将是有利的。
发明内容
本发明提供了一种用于处理指令的数据处理***中的方法、设备和计算机指令。在数据处理***中的处理器接收指令。如果选定指示符与该指令相关联,则启动对与该指令的执行相关联的每个事件的计数。
附图说明
在所附权利要求中阐述了被认为是本发明特征的新颖特性。然而,通过参考下面结合附图对示例性实施例的详细描述,本发明本身以及优选使用模式及其进一步目的和优点将会得到更好的理解,其中:
图1是可以实现本发明的数据处理***的方框图;
图2是根据本发明优选实施例的用于处理信息的处理器***的方框图;
图3是示出根据本发明优选实施例的用于处理与指示符相关联的指令的组件的图;
图4是示出根据优选实施例的一种用于将性能指示符与指令或存储单元(memory location)相关联的机制的图;
图5是示出根据本发明优选实施例的指令包(bundle)的图;
图6A和6B是根据本发明优选实施例的包含性能指示符的子例程的图;
图7是根据本发明优选实施例的用于处理包含性能指示符的指令的过程的流程图;
图8是根据本发明优选实施例的用于选择性地发送指令到中断单元的过程的流程图;
图9是根据本发明优选实施例的用于响应对与性能指示符相关联的存储单元的访问而产生中断的过程的流程图;
图10是根据本发明优选实施例的用于对事件进行计数的过程的流程图;
图11是根据本发明优选实施例的用于对指令进行选择性计数的过程的流程图;
图12是根据本发明优选实施例的用于对指令进行选择性计数的过程的流程图;
图13是根据本发明优选实施例的用于识别超过阈值的指令的过程的流程图;
图14是根据本发明优选实施例的用于访问存储单元的过程的流程图;
图15是示出根据本发明优选实施例的用于生成元数据如性能指示符的组件的方框图;
图16是示出根据本发明优选实施例的元数据的图;
图17是示出根据本发明优选实施例的装入和维护性能检测映像高速缓存(performance instrumentation shadow cache)时所涉及的组件的图;
图18是根据本发明优选实施例的用于生成指令元数据的过程的流程图;
图19是根据本发明优选实施例的用于生成存储单元元数据的过程的流程图;
图20是根据本发明优选实施例的用于对特定指令的执行进行计数的过程的流程图;
图21是根据本发明优选实施例的用于对特定存储单元的访问进行计数的过程的流程图;
图22是示出根据本发明优选实施例的用于访问关于对指令的执行或对存储单元的访问所收集的信息的组件的图;
图23是根据本发明优选实施例的用于自主修改程序中的代码以允许对部分代码进行选择性计数或剖析的组件的方框图;
图24是根据本发明优选实施例的用于将性能指示符动态添加到指令中或者使其与指令相关联的过程的流程图;
图25是示出根据本发明优选实施例的用来通过将性能指示符与页内的指令相关联来扫描页的组件的图;
图26是根据本发明优选实施例的用于将指示符关联到页内的指令的过程的流程图;
图27是示出根据本发明优选实施例的包含堆栈帧的调用堆栈的图;
图28是根据本发明优选实施例的用于识别与调用和返回从性能监测器单元收集数据的指令相关联的事件的过程的流程图;
图29是根据本发明优选实施例的用于识别已被执行多于选定次数的指令的过程的流程图;
图30是根据本发明优选实施例的用于在特定指令被执行多于某选定次数时检查调用堆栈并识别例程调用者的过程的流程图;
图31是示出根据本发明优选实施例的为进行监视而选择的指令和数据范围的图;以及
图32是根据本发明优选实施例的用于对设定范围的访问次数以及在设定范围内执行的指令数进行计数的过程的流程图。
具体实施方式
现在参照图1,其中示出了可以实现本发明的数据处理***的方框图。客户机100是计算机的例子,实现本发明的过程的代码或指令可以位于其中。客户机100采用***组件互连(PCI)局部总线架构。虽然所示例子采用PCI总线,但是也可以使用其它总线架构如加速图形端口(AGP)和工业标准架构(ISA)。处理器102和主存储器104通过PCI桥108连接到PCI局部总线106。PCI桥108还可以包括用于处理器102的集成存储器控制器和高速缓冲存储器。与PCI局部总线106的其它连接可以通过直接组件互连或者通过内插板来实现。在所示例子中,局域网(LAN)适配器110、小型计算机***接口SCSI主机总线适配器112和扩展总线接口114通过直接组件连接而连接到PCI局部总线106。与此相反,音频适配器116、图形适配器118和音频/视频适配器119通过***到扩展槽中的内插板而连接到PCI局部总线106。扩展总线接口114为键盘和鼠标适配器120、调制解调器122和附加存储器124提供连接。SCSI主机总线适配器112为硬盘驱动器126、磁带驱动器128和CD-ROM驱动器130提供连接。典型的PCI局部总线实现将支持三个或四个PCI扩展槽或内插连接器。
操作***运行在处理器102上,并且用来协调和提供对图1的数据处理***100内的各个组件的控制。操作***可以是市场上可买到的操作***,如可从微软公司获得的Windows XP。面向对象的编程***如Java可以结合操作***运行,并且提供从在客户机100上执行的Java程序或应用程序对操作***的调用。“Java”是太阳微***公司(Sun Microsystems,Inc.)的商标。操作***、面向对象的编程***、以及应用程序或程序的指令位于诸如硬盘驱动器126的存储装置上,并且可以装入到主存储器104中以由处理器102执行。
本领域的普通技术人员应当理解,图1中的硬件可以根据具体实现而不同。作为对图1所示的硬件的补充或替代,可以使用其它内部硬件或***装置,如快闪只读存储器(ROM)、等效非易失性存储器或光盘驱动器等。另外,本发明的过程也可以应用于多处理器数据处理***。
例如,客户机100,如果可选地配置为网络计算机,则可以不包括SCSI主机总线适配器112、硬盘驱动器126、磁带驱动器128和CD-ROM 130。在这种情况下,该计算机可以适当地称作客户计算机,并包括某种网络通信接口如LAN适配器110、调制解调器122等。作为另一个例子,客户机100可以是配置成在不依赖于某种网络通信接口的情况下可启动的独立***,而不管客户机100是否包括某种网络通信接口。作为另外一个例子,客户机100可以是个人数字助理(PDA),其配置有ROM和/或快闪ROM来提供用于存储操作***文件和/或用户所产生数据的非易失性存储器。图1所示的例子和上述例子不意味着隐含架构限制。
本发明的过程使用可以位于例如主存储器104、存储器124或一个或多个***装置126-130的存储器中的计算机实现指令由处理器102执行。
接下来参照图2,其示出根据本发明优选实施例的用于处理信息的处理器***的方框图。处理器210可以作为图1中的处理器102实现。
在优选实施例中,处理器210是单个集成电路超标量微处理器。从而,如下面进一步所述,处理器210包括各种单元、寄存器、缓冲器、存储器和其它部分,所有这些都由集成电路形成。另外,在优选实施例中,处理器210根据简化指令集计算机(“RISC”)技术运行。如图2所示,***总线211连接到处理器210的总线接口单元(“BIU”)212。BIU 212控制处理器210与***总线211之间的信息传输。
BIU 212连接到处理器210的指令高速缓存214和数据高速缓存216。指令高速缓存214将指令输出到定序器单元218。响应来自指令高速缓存214的这些指令,定序器单元218将指令选择性地输出到处理器210的其它执行电路。
除了定序器单元218之外,在本优选实施例中,处理器210的执行电路还包括多个执行单元,即转移(branch)单元220、定点单元A(“FXUA”)222、定点单元B(“FXUB”)224、复合定点单元(“CFXU”)226、装入/存储单元(“LSU”)228以及浮点单元(“FPU”)230。FXUA 222、FXUB 224、CFXU 226和LSU 228从多个通用架构寄存器(“GPR”)232和多个定点重命名(rename)缓冲器234输入其源操作数信息。而且,FXUA 222和FXUB 224从进位(“CA”)寄存器239输入“进位”。FXUA 222、FXUB 224、CFXU 226和LSU 228输出其运算结果(目的操作数信息)以存储在定点重命名缓冲器234内的选定条目(entry)上。另外,CFXU 226从专用寄存器处理单元(“SPR单元”)237输入并向其输出源操作数信息和目的操作数信息。
FPU 230从多个浮点架构寄存器(“FPR”)236和多个浮点重命名缓冲器238输入其源操作数信息。FPU 230输出其运算结果(目的操作数信息)以存储在浮点重命名缓冲器238内的选定条目上。
响应装入指令,LSU 228从数据高速缓存216输入信息,并且将该信息拷贝到重命名缓冲器234和238中选定的一个。如果该信息未存储在数据高速缓存216中,则数据高速缓存216(通过BIU 212和***总线211)从连接到***总线211的***存储器239输入该信息。而且,数据高速缓存216能够(通过BIU 212和***总线211)将信息从数据高速缓存216输出到连接到***总线211的***存储器239。响应存储指令,LSU 228从GPR 232和FPR 236中选定的一个输入信息,并且将该信息拷贝到数据高速缓存216。
定序器单元218从GPR 232和FPR 236输入信息,并且向其输出信息。转移单元220从定序器单元218输入指令和表示处理器210的当前状态的信号。响应该指令和信号,转移单元220(向定序器单元218)输出表示存储要由处理器210执行的指令序列的合适的存储器地址的信号。响应来自转移单元220的该信号,定序器单元218从指令高速缓存214输入所指示的指令序列。如果一条或多条指令序列没有存储在指令高速缓存214中,则指令高速缓存214(通过BIU 212和***总线211)从连接到***总线211的***存储器239输入这些指令。
响应从指令高速缓存214输入的指令,定序器单元218选择性地将指令调度到执行单元220、222、224、226、228和230中选定的一个。每个执行单元执行一条或多条特定指令类的指令。例如,FXUA222和FXUB 224对源操作数执行第一类定点数学运算,如加法、减法、与运算、或运算以及异或运算。CFXU 226对源操作数执行第二类定点运算,如定点乘法和除法。FPU230对源操作数执行浮点运算,如浮点乘法和除法。
当信息存储在选定的一个重命名缓冲器234上时,该信息与由为其分配了选定重命名缓冲器的指令指定的存储位置(例如,GPR 232或进位(CA)寄存器242之一)相关联。响应来自定序器单元218的信号,将选定的一个重命名缓冲器234上存储的信息拷贝到与其关联的一个GPR232(或CA寄存器242)中。定序器单元218响应“完成”产生了该信息的指令,引导拷贝在选定的一个重命名缓冲器234上存储的信息。该拷贝称作“写回”
当信息存储在选定的一个重命名缓冲器238上时,该信息与一个FPR 236相关联。响应来自定序器单元218的信号,将选定的一个重命名缓冲器238上存储的信息拷贝到与其关联的一个FPR236中。定序器单元218响应“完成”产生该信息的指令,引导拷贝在选定的一个重命名缓冲器238上存储的信息。
处理器210通过在执行单元220、222、224、226、228和230中的各个单元上同时处理多条指令来实现高性能。因此,每条指令作为一系列级处理,其中每个级与其它指令的级可并行执行。该技术称作“流水线技术”。在该示例性实施例的一个重要方面,指令通常以六个级处理,即提取、译码、调度、执行、完成和写回。
在提取级,定序器单元218选择性地(从指令高速缓存214)从上面有关转移单元220和定序器单元218而进一步讨论的存储指令序列的一个或多个存储器地址输入一条或多条指令。
在译码级,定序器单元218对多达四条所提取的指令进行译码。
在调度级,定序器单元218在为所调度指令结果(目的操作数信息)保留重命名缓冲器条目之后,将多达四条已译码的指令选择性地调度到执行单元220、222、224、226、228和230中(响应译码级中的译码)选定的一个。在调度级,将操作数信息提供给所调度指令的选定执行单元。处理器210以指令编程序列的次序调度指令。
在执行级,如上所述,执行单元执行其调度指令,并且输出其操作结果(目的操作数信息)以存储在重命名缓冲器234和重命名缓冲器238内的选定条目上。以这种方式,处理器210能够相对于指令编程序列无序地执行指令。
在完成级,定序器单元218指示指令“完成”。处理器210以指令编程序列的次序“完成”指令。
在写回级,定序器218引导将信息分别从重命名缓冲器234和238拷贝到GPR 232和FPR 236。定序器单元218引导拷贝选定重命名缓冲器上存储的信息。同样,在特定指令的写回级,处理器210响应该特定指令更新其架构状态。处理器210以指令编程序列的次序处理指令的各“写回”级。处理器210在特定情形下有利地合并指令的完成级和写回级。
在该示例性实施例中,每条指令需要一个机器周期来完成指令处理的每一个级。但是,一些指令(例如由CFXU 226执行的复合定点指令)可能需要多个周期。因此,响应完成先前指令所需的时间的变化,在特定指令的执行和完成级之间可能发生可变延迟。
完成缓冲器248安设在定序器218内以跟踪正在执行单元内执行的多条指令的完成。一旦出现以应用程序指定顺序成功地完成了一条指令或一组指令的指示时,可以利用完成缓冲器248来发起将这些已完成指令的结果传输到关联通用寄存器。
另外,处理器210还包括连接到指令高速缓存214以及处理器210中其它单元的性能监测器单元240。可以利用性能监测器单元240来监测处理器210的操作,在本示例性实施例中,性能监测器单元240是能够提供描述指令执行资源利用和存储控制的详细信息的软件可访问机制。虽然图2中未示出,性能监测器单元240耦接到处理器210的每个功能单元以允许监测处理器210的所有方面的操作,包括例如重建事件之间的关系、识别虚假触发、识别性能瓶颈、监测流水线停顿(pipeline stall)、监测空闲处理器周期、确定调度效率、确定转移效率、确定未对准(misaligned)数据访问的性能损失、识别串行化指令的执行频率、识别被禁止中断以及确定性能效率。感兴趣事件还可以包括例如指令译码时间、指令执行、转移事件、高速缓存失败(miss)和高速缓存成功(hit)。
性能监测器单元240包括其数目依赖于具体实现的(例如,2-8个)计数器241-242,标记为PMC1和PMC2,用来对选定事件的出现进行计数。性能监测器单元240还包括至少一个监测器模式控制寄存器(MMCR)。在本例中,有两个指定计数器241-242功能的控制寄存器MMCR 243和244。计数器241-242和MMCR 243-244最好作为通过可由CFXU 226执行的MFSPR(从SPR传送)和MTSPR(传送至SPR)指令可访问以进行读或写的SPR实现。然而,在一个可替换实施例中,计数器241-242和MMCR 243-244可以简单地作为I/O空间中的地址实现。在另一个替换实施例中,控制寄存器和计数器可以通过变址寄存器来间接访问。该实施例在来自英特尔公司(IntelCorporation)的处理器内的IA-64架构中实现。
另外,处理器210还包括连接到指令高速缓存214的中断单元250。另外,虽然图2中未示出,中断单元250连接到处理器210内的其它功能单元。中断单元250可以从其它功能单元接收信号,并且发起诸如开始错误处理或捕获过程的操作。在这些例子中,使用中断单元250来产生在程序执行期间可能发生的中断和异常。
本发明提供了在程序执行期间监视对特定指令的执行以及对特定存储单元的访问的能力。具体地说,可以使用空闲字段来保存用于标识指令或存储单元为要由性能监测器单元或处理器中的某个其它单元监测的指令或存储单元的指示符。或者,指示符可以存储在与指令或存储单元相关联的另一个位置中。在指示符置于指令中的情况下,典型地使用空闲字段,但是在一些情况下可以扩展指令以包括指示符所需的空间。在这种情况下,处理器的架构可能需要改变。例如,64位架构可以改成65位架构以容纳指示符。对于数据访问,指示符可以与数据或该数据所在的存储单元相关联。
现在参照图3,其示出根据本发明优选实施例的用于处理与指示符相关联的指令的组件的图。指令高速缓存300接收指令包(bundle)302。指令高速缓存300是图2中的指令高速缓存214的示例。指令包是一种指令编组。这种指令编组典型地出现于可从英特尔公司获得的IA-64处理器中。指令高速缓存300处理所要执行的指令。
作为该指令处理的一部分,指令高速缓存300确定哪些指令与指示符相关联。在这些例子中,这些指示符也称作“性能指示符”。信号304已与性能指示符相关联。结果,将指令的信号304发送到性能监测器单元306。性能监测器单元306是图2中的性能监测器单元240的示例。
当指令高速缓存300确定存在与指示符相关联的指令时,发送信号以表示正在执行被标记(marked)的指令。在这些例子中,被标记的指令是与性能指示符相关联的指令。或者,性能指示符可以指示指令包中的所有项目或指令均被标记以被计数。另外,这些指令的信号由指令高速缓存300发送到适当的功能单元。根据具体实现,不同于性能监测器单元306的功能单元可以对指令执行进行计数。在性能指示符位于指令或指令包中的情况下,高速缓存单元即指令高速缓存300探测指示符,并且向性能监测器单元306发送信号。
当性能监测器单元306接收到这些指令的信号时,性能监测器单元306对与指令304执行相关联的事件进行计数。如图所示,性能监测器单元306编程为仅对与性能指示符相关联的指令的事件进行计数。换句话说,使用与指令或存储单元相关联的指示符来使得能够由性能监测器单元306对与指令或存储单元相关联的事件进行计数。如果指令高速缓存300接收到没有性能指示符的指令,则不对与该指令相关联的事件进行计数。总而言之,性能指示符使得能够在处理器中逐个指令地或逐个存储单元地进行计数。
如果性能监测器单元306设成对这些类型的被标记指令所允许的规格(metrics)进行计数的模式,则性能监测器单元306对与性能指示符相关联的指令的事件进行计数。在某些情况下,性能监测器单元306可以设成执行作为当前可用功能的某种其它类型的计数,例如对所有指令的执行进行计数。
对于访问存储单元中的数据,由数据高速缓存如图2中的数据高速缓存216而不是由指令高速缓存来处理数据和指示符。数据高速缓存将表示正在访问被标记存储单元的信号发送到性能监测器单元306。被标记存储单元类似于被标记指令。这些类型的存储单元是与性能指示符相关联的存储单元。
现在参照图4,其示出根据本发明优选实施例的一种用于将性能指示符与指令或存储单元相关联的机制的图。处理器400从高速缓存402接收指令。在本例中,指示符不与指令一起存储,也不存储于找到数据的存储单元中。相反,指示符存储在单独的存储区域,即性能检测映像高速缓存(shadowcache)404内。该存储装置可以是任何存储装置,例如***存储器、闪存、高速缓存或盘。
当处理器400从高速缓存402接收指令时,处理器400检查性能检测映像高速缓存404以查看性能指示符是否与指令相关联。对包含数据的存储单元的访问进行类似的检查。在一个实施例中,为每个不影响实际数据段的对应的字提供完全映像字。换句话说,处理器400允许高速缓存402的架构或配置保持不变。在这些例子中,所述映射是逐字的。然而,也可以使用某种其它类型的映射,例如每数据字一个映像位,其中性能检测映像高速缓存404中的一位对应于数据的一个字。
对于这种类型的架构,利用该特性,编译器以类似于调试符号的方式在与数据区本身分离的工作区内创建调试信息。当装入模块时,由装入器准备额外的信息即性能指示符,从而当将指令装入到高速缓存402中时使其可用于并入性能检测映像高速缓存404中。这些高速缓存区域可以是混合的并且要么如此标记要么通过操作模式理解。处理器400使用性能指示符来确定如何对相关数据访问和指令执行进行计数,或者如何避免(take exception)相关数据访问和指令执行。在这些例子中,通过调试器或性能分析程序将该过程编程为了解在执行指令时是否使用映像信息。
现在参照图5,其示出根据本发明优选实施例的指令包的图。指令包500包含指令槽502、指令槽504、指令槽506和模板508。如图所示,指令包500包含128位。每个指令槽包含41位,而模板508包含5位。模板508用来标识当前指令包内的终止,并且将槽内的指令映射到不同类型的执行单元中。
指令包500内的空闲位用来保存本发明的指示符。例如,指示符510、512和514分别位于指令槽502、504和506内。这些指示符可以根据具体实现而采取各种形式和各种大小。指示符可以使用单个位或者可以使用多个位。单个位可以用来指示响应该指令的执行要对事件进行计数。多个位可以用来标识阈值,例如可以在对事件进行计数之前传递的指令执行的处理器或时钟周期的数量。此外,这些位甚至可以用作针对特定指令的计数器。类似的字段使用可以用于标记数据或存储单元的指示符。
或者,模板508可以用来包含相关指示符的指令包,从而使用一位来标识指令包中的所有指令。另外,指令包本身可以扩展成256位或某一其它位数,以包含性能指示符的额外信息。
接下来参照图6A和6B,示出根据本发明优选实施例的包含性能指示符的子例程和包含性能指示符的数据的图。在本例中,图6A中的子例程600包括多条指令,其中指令602、604和606与性能指示符相关联。这些指令也称作被标记指令。当执行这些指令时,对与这些指令相关联的事件进行计数,从而为软件工具获得数据以分析执行子例程600的数据处理***的性能。
数据或包含数据的存储单元可以采用类似方式以指示符标记。在这些例子中,这些指示符用于对数据或存储单元访问进行计数。在图6B中,数据610包括与性能指示符相关联的数据。数据612和数据614是与性能指示符相关联的数据610的部分。与性能指示符相关联的这些数据部分也称作被标记数据。
现在参照图7,其示出了根据本发明优选实施例的用于处理包含性能指示符的指令的过程的流程图。图7所示的过程可以在指令高速缓存如图2中的指令高速缓存214中实现。
该过程以接收指令包(步骤700)开始。在这些例子中,每个指令包具有类似于图5中的指令包500的格式。识别指令包中的指令(步骤702)。判定是否存在与指令相关联的性能指示符(步骤704)。该判定可以通过检查指令或指令包中的适当字段来进行。或者,可以检查性能检测映像高速缓存如图4中的性能检测映像高速缓存404,以查看性能指示符是否与指令相关联。
如果存在性能指示符,则发送信号到性能监测器单元(步骤706)。当接收到该信号时,性能监测器单元将对与指令执行相关联的事件进行计数。另外,对指令进行处理(步骤708)。指令处理包括例如将指令发送到适当的功能单元以便执行。
然后,判定在指令包中是否存在另外的未处理指令(步骤710)。如果在指令包中存在另外的未处理指令,则该过程返回到如上所述的步骤702。否则,该过程终止。回到步骤704,如果不存在性能指示符,则该过程直接进入步骤708。
现在参照图8,其示出了根据本发明优选实施例的用于选择性地发送信号到中断单元的过程的流程图。图8所示的过程可以在指令高速缓存如图2的指令高速缓存242中实现。在使用性能监测器单元监测事件可能错过特定事件的情况下采用该过程。例如,性能监测器单元对事件进行计数。当发生高速缓存失败时,发送信号到性能监测器单元。当将对应高速缓存线的元数据装入到高速缓存中时,也引发(raise)一个或多个适当信号。如果元数据表示要引发异常,则发送信号到中断单元,其中该信号表示要引发异常。
该过程以接收指令包(步骤800)开始。识别指令包中的指令(步骤802)。判定是否存在与该指令相关联的性能指示符(步骤804)。发送到中断单元以表示要引发异常的信号不同于发送到性能监测器单元的信号。例如,指令可以与具有导致发送信号到中断单元的第一值的特定性能指示符相关联。性能指示符的第二值可以用来发送不同信号到性能监测器单元。如果存在具有第一值的性能指示符,则发送信号到中断单元(步骤806)。当接收到该信号时,中断单元发起适当的调用流支持以处理该中断。调用流支持可以例如记录试图访问高速缓存中的指令或数据的功能单元可能发生的高速缓存失败。
另外,对指令进行处理(步骤808)。指令的处理包括例如发送指令到适当的功能单元以便执行。
然后,判定指令包中是否存在另外的未处理指令(步骤810)。如果指令包中存在另外的未处理指令,则该过程返回到如上所述的步骤802。否则,该过程终止。回到步骤804,如果不存在性能指示符,则该过程直接进入步骤808。
现在参照图9,其示出根据本发明优选实施例的用于响应对与性能指示符相关联的存储单元的访问而产生中断的过程的流程图。图9所示的过程可以在数据高速缓存如图2的数据高速缓存246中实现。
该过程以识别访问存储单元的请求(步骤900)开始。响应于识别出该请求,判定性能指示符是否与存储单元相关联(步骤902)。如果性能指示符与存储单元相关联,则通过发送信号到中断单元来产生中断(步骤904)。然后,处理对存储单元的访问(步骤906),然后该过程终止。
在图10中,示出了根据本发明优选实施例的用于对事件进行计数的过程的流程图。图10所示的过程可以在性能监测器单元如图2的性能监测器单元240中实现。
该过程以从指令高速缓存接收表示正在处理带有性能指示符的指令的信号(步骤1000)开始。下一步,对与正被处理的指令相关联的事件进行计数(步骤1002),然后该过程终止。事件计数可以存储在计数器如图2的计数器241中。
接下来参照图11,其示出了根据本发明优选实施例的用于对指令进行选择性计数的过程的流程图。图11所示的过程可以在指令高速缓存如图2的指令高速缓存214中实现。
该过程以判定是否接收到与性能指示符相关联的指令(步骤1100)开始。在本例中,该指示符导致对由处理器执行的这一指令和所有后续指令的事件进行计数。或者,该指示符可以是指示要开始新计数模式的指令本身。如果接收到带有指示符的指令,则设置(set)标志以开始对指令的事件进行计数(步骤1102)。该标志表示应开始对指令的事件进行计数。
下一步,判定是否接收到带有指示符的指令(步骤1104)。或者,指示符可以是指示要停止新计数模式的指令本身。如果接收到带有指示符的指令,则清除(unset)该标志以停止对事件的计数(步骤1106),然后该过程终止。
步骤1100和步骤1104中的指示符可以是相同的指示符,其中该指示符切换标志的设置和清除。在另一种实现中,可以使用两个不同的指示符,其中第一指示符仅设置标志。第二指示符用来清除标志。可以通过在要进行计数时采用高信号而在不再启动计数时采用低信号来简单地实现高速缓存单元如指令高速缓存或数据高速缓存与性能监测器单元之间为表示计数模式而进行的通信。
接下来参照图12,其示出了根据本发明优选实施例的用于对指令进行选择性计数的过程的流程图。图12所示的过程可以在指令高速缓存如图2的指令高速缓存214中实现。
该过程以检查标志(步骤1200)开始。判定是否设置了标志(步骤1202)。如果设置了标志,则发送信号到性能监测器单元以启动该单元对事件进行计数(步骤1204),然后该过程终止。否则,发送信号到性能监测器单元以禁止对事件计数(步骤1206),然后该过程终止。
图11和12所示的过程在指令与性能指示符相关联之后对所有指令的事件进行计数。通过这种方式,可以使用较少的位来触发对事件的计数。此外,在对所有指令计数的情况下,可以对与外部子例程调用相关联的事件进行计数。
现在参照图13,其示出根据本发明优选实施例的用于识别超过阈值的指令的过程的流程图。图13所示的过程可以在指令高速缓存如图2的指令高速缓存214中实现。
该过程以接收与性能指示符相关联的指令(步骤1300)开始。为指令识别阈值(步骤1302)。在这些例子中,阈值与完成指令所需的处理器或时钟周期的数量相关。如果访问高速缓存所需的高速缓存延迟或时间量超过该阈值,则对该事件进行计数。在这些例子中,阈值设置在指示符内。
例如,可以使用三位来设置八个不同的阈值。例如,“xx1”=10周期,“x1x”=50周期,以及“1xx”=100周期。这三位的某组合可以用来设置阈值。根据具体实现,可以使用更多或更少的位,并且可以将不同值分配给这些位。这些位的含义也可以通过接口来控制,例如可以用来设置每个位的含义的一组寄存器。这些寄存器是为此特定目的而添加到处理器架构的寄存器。
监测用于执行该指令的周期(步骤1304)。判定对该指令是否超过了阈值(步骤1306)。如果超过了阈值,则执行选定操作(步骤1308)。该选定操作可以根据具体实现而采取不同的形式。例如,每次超过阈值时,可以递增计数器。或者,可以产生中断。中断可以将控制传递给另一个过程以收集数据。例如,该数据可以包括调用堆栈和有关该调用堆栈的信息。堆栈是保留存储器区域,其中一个或多个程序存储状态数据,如过程和函数调用地址、所传递的参数、性能监测器计数器值以及有时还有局部变量。
判定监测是否结束(步骤1310)。步骤1310可以一次一条指令地实现。当执行了指令或者超过了阈值时,发送信号。在本例中,单条指令的执行导致发送一个信号。在可以同时执行多条指令的情况下,可能需要多个信号来表示每条指令的执行。在一些实施例中,可以支持采样方案,其中一次仅对一条指令支持阈值。这可以通过仅支持处理器指令队列中的特定位置中的那些指令的阈值来实现。在其它实施例中,如果至少一条被标记指令超过阈值,则可以发送一个信号。对于超过阈值的每条指令,为该指令引发或产生单独的信号。
如果监测结束,则将所收集的信息发送到监测程序(步骤1312),然后,该过程终止。否则,该过程返回到如上所述的步骤1304。在步骤1306,如果未超过该指令的阈值,则该过程直接进入步骤1310。
可以在数据高速缓存如图2的数据高速缓存216中实现类似的过程,以监测对存储单元的访问。图13所示的过程可以修改成识别访问存储单元中的数据所需的周期。如同指令执行一样,当访问存储单元中的数据所需的时间量超过指定阈值时进行计数或产生中断。
如同其它例子一样,可以作为指令的一部分或者与存储单元中的数据一起包括这些指示符。或者,这些指示符可以与指令或数据相关联地在性能检测映像高速缓存或存储器中找到。
参照图14,其示出根据本发明优选实施例的用于监测对存储单元的访问的过程的流程图。图14所示的过程可以在数据高速缓存如图2的数据高速缓存216中实现。该过程用来对存储单元中的数据访问进行计数。
该过程以接收与性能指示符相关联的数据(步骤1400)开始。判定是否访问了该数据的存储单元(步骤1402)。如果访问了该存储单元,则递增计数器(步骤1404)。判定监测是否结束(步骤1406)。如果对存储单元的监测结束,则该过程终止。否则,该过程返回到步骤1402。在步骤1402,如果没有访问存储单元,则该过程进入步骤1406。
参照图15,其示出根据本发明优选实施例的用于生成元数据如性能指示符的组件的方框图。编译器支持嵌入在指示要生成的元数据的源代码中的命令(directive)。编译器1500可以生成用于执行的指令1502和用于监测的元数据。在这些例子中,随着指令或数据高速缓存页被装入到存储器中,操作***程序装入器/链接器和/或性能监测程序读取由编译器1500生成的元数据,并且将元数据装入到存储器如性能监测器部分1506中。该部分本身被标记为元数据1504。处理器可以接受性能监测器部分1506中具有编译器所生成部分数据的格式的元数据1504,并且向处理器的内部性能检测映像高速缓存填充该数据。下面参照图17描述面向块的方案。
在一个实施例中,该格式对于其块或扇区(sector)引用中的每一个都简单地具有性能检测映像高速缓存条目,并且将元数据1504传送至其对应的一个或多个映像条目。代替具有性能检测映像高速缓存,可以修改高速缓存本身的内部格式来包含元数据1504。在修改指令流本身以包含元数据的实施例中,装入器更新指令流以包含适当的指示符和工作区,或者编译器1500生成了代码来包含元数据1504。在任何情况下,在装入了代码之后,处理器接收元数据1504。
另外,元数据1504可以与指令1502相关联地置于性能检测映像存储器1505中。编译器1500在表或调试数据部分中产生信息。性能监测程序将该信息装入到性能检测映像存储器1505内的映像数据区中。或者,调试区可以由一起工作的操作***和处理器自动填充。
然后,可以由处理器1508执行指令1502。编译器1500可以设置处理器1508中的寄存器如模式寄存器1510。当设置了该寄存器时,处理器1508在执行指令1502时查看性能检测映像存储器1505中的元数据1504,以判定元数据1504中的性能指示符是否与指令1502中正被执行的指令相关联。使用例如上面参照图2-14所述的过程处理这些性能指示符。如果没有设置模式寄存器1510,则在执行指令1502时忽略元数据1504。
可以对存储单元1512中的数据执行类似的过程。根据具体实现,元数据1504可以置于指令内或数据内,而不是置于性能检测映像存储器1505中。然而,通过将元数据1504置于性能检测映像存储器1505中,当元数据1504置于性能检测映像存储器1505中时可以动态执行元数据1504的生成。
该特性允许在不必修改程序的情况下进行对指令的选择和监测。换句话说,编译器1500可以在编译了指令1502以便由处理器1508执行之后生成元数据1504。设置模式寄存器1510使处理器1508在性能检测映像存储器1505中查找元数据1504而不必修改指令1502。在这些例子中,元数据1504采取告诉处理器1508如何处理指令1502的执行和/或对存储单元1512的数据访问的性能指示符的形式。
接下来参照图16,其示出根据本发明优选实施例的元数据的图。元数据1600是图15中的元数据1504的例子。该元数据由编译器如编译器1500生成。
在本例中,元数据1600包括5个条目,即条目1602、1604、1606、1608和1610,如元数据1600中的行1612所示。在本例中,这些条目中的每一个都包括偏移、长度和用于描述代码的检测(instrumentation)的标志。
条目1602的偏移为0,而其条目长度为120字节。标志1614表示需要对由条目长度1616表示的范围内的所有指令进行计数。在这些例子中,每条指令的长度为4字节。条目1604的条目长度为4字节,这与指令相对应。标志1618表示当执行该指令时应当产生异常。
在条目1606中,以160字节的偏移开始的指令与标志1620相关联。该标志表示如果超过阈值即100个周期则应当对指令进行计数。
条目1608中的标志1622表示应当在偏移为256字节的指令处开始跟踪。如条目1610中的标志1624所指示而停止跟踪,其中条目1610具有用于偏移为512字节的指令的标志。
这些标志用来生成与这些指令相关联的性能指示符。操作***将由编译器生成的该元数据传送到性能检测映像存储器如图15的性能检测映像存储器1506中,并且处理该元数据。或者,根据具体实现,该元数据可以置于指令内的字段中。
现在参照图17,示出根据本发明优选实施例的在装入和维护性能检测映像高速缓存时所涉及的组件的图。在本例中,现有高速缓存1700包含主段1702。主段1702包括块1704、1706、1708、1710、1712、1714、1716、1718、1720、1722和1724。转换表1726用来提供对主段1702中的块1704-1724到性能检测(perfinst)段1728中的块的映射。该段中的数据置于新性能检测映像高速缓存1730中。
在程序编译的时候,编译器生成如前所述的新性能检测数据部分。在程序装入时候,装入器向处理器查询以确定高速缓存线大小。装入器以处理器所要求的格式,为装入器所装入的任何文本或数据段解析性能检测段1728并且构造映像段。该映像段置于新性能检测映像高速缓存1730中。
映像段中的每一块包含对应主高速缓存块中的指令或数据的元数据。该元数据例如包括主段1702的块内每个带标签(tagged)项目的标志、标签字段、阈值和计数字段。该元数据还可以包括表示块中的所有指令或数据的标志。
装入器构造将主段1702中的每一块映射到性能检测段1728中对应的性能检测块如块1732、1734、1736、1738、1740、1742、1744、1746、1748、1750和1752的表,即转换表1726。此外,装入器还向处理器登记该表即转换表1726的头以及主段1702的位置和大小。
在页更替的时候,页面调度软件提供新接口来使性能检测段1728与对应主段即主段1702相关联。当主段1702页面调入或调出时,性能检测段1728也页面调入或调出。
在高速缓存线更替的时候,处理器包含新性能检测映像高速缓存1730,其中的高速缓存帧与现有数据和指令高速缓存如现有高速缓存1700中的帧直接相关联。当处理器的指令或数据高速缓存装入新线时,高速缓存也必须将对应性能检测块装入到性能检测映像高速缓存即新性能检测映像高速缓存1730中。处理器(从程序装入的时候由装入器提供的登记数据)知道处理器正在将块带入其具有关联性能检测段即性能检测段1728的高速缓存。处理器在与该段相关联的转换表1726中查看,得到对与将要装入的块相对应的性能检测块的引用,并且将该性能检测块装入到新性能检测映像高速缓存1730中。在这些例子中,与元数据相关联的高速缓存失败不被用信号通知,或者以不同于与主高速缓存块如主段1702中的数据相关联的高速缓存失败的方式进行处理。
现在参照图18,其示出根据本发明优选实施例的用于生成指令的元数据的过程的流程图。图18所示的过程可以由性能监测程序实现。
该过程以识别要剖析的指令(步骤1800)开始。该指令可以是例如已被执行多于选定次数的指令。为所识别的指令生成元数据(步骤1802)。该元数据采取性能指示符的形式。性能指示符可以,例如,每当执行该指令时递增计数器,在执行指令所需的周期数超过阈值的情况下递增计数器,在该指令之后对所有事件、所有指令触发对事件的计数,或者对响应执行指令而发生的事件进行计数。在优选实施例中,计数器位于关联的性能检测映像高速缓存中,并且采取若干位来允许高速缓存中的数据或指令与被保留用于计数的位之间的一一对应关系。
然后,将元数据与指令相关联(步骤1804)。接下来,判定是否存在更多指令要处理(步骤1806)。如果存在另外的指令,则该过程返回到步骤1800。否则,该过程终止。可以使用类似的过程来动态生成存储单元中的数据的元数据。
现在参照图19,其示出根据本发明优选实施例的用于生成存储单元的元数据的过程的流程图。图19所示的过程可以在编译器如图15的编译器1500中实现。
该过程以识别要剖析的存储单元(步骤1900)开始。通过探测对被标记位置的访问而发生步骤1900。为所识别的存储单元生成元数据(步骤1902)。该元数据采取性能指示符的形式。性能指示符可以,例如,每当访问存储单元时递增计数器,在访问存储单元所需的周期数超过阈值的情况下递增计数器,或者触发对存储单元的所有访问的计数。然后,将元数据与存储单元相关联(步骤1904)。接下来,判定是否存在更多存储单元要处理(步骤1906)。如果存在另外的存储单元,则该过程返回到步骤1900。否则,该过程终止。
现在参照图20,其示出根据本发明优选实施例的用于对特定指令的执行进行计数的过程的流程图。图20所示的过程可以在指令高速缓存如图2的指令高速缓存214中实现。
该过程以执行指令(步骤2000)开始。判定计数器是否与指令相关联(步骤2002)。计数器可以包括在指令内的字段中,或者可以位于性能检测映像存储器中。如果计数器与指令相关联,则递增计数器(步骤2004),然后该过程终止。否则,该过程终止而不递增计数器。如果计数器超过阈值,则可以将计数器清零。
当计数器作为指令的一部分实现时,该计数器可能为有限大小。在这种情况下,计数器的阈值可以设为表示计数器何时处于上溢的危险中。然后,在读到该值之后,则可以将计数器清零。该值可以由性能监测器单元或用来分析数据的程序读取。可以实现API来访问该数据。
现在参照图21,其示出根据本发明优选实施例的用于对特定存储单元的访问进行计数的过程的流程图。图21所示的过程可以在数据高速缓存如图2的数据高速缓存216和指令高速缓存214中实现。
该过程以探测对存储单元的访问(步骤2100)开始。判定计数器是否与存储单元相关联(步骤2102)。计数器可以包括在存储单元内,或者可以位于性能检测映像存储器中。如果计数器与存储单元相关联,则递增计数器(步骤2104),然后该过程终止。否则,该过程终止而不递增计数器。
接下来参照图22,其是根据本发明优选实施例的用于访问关于指令执行或存储单元访问而收集的信息的组件的图。在本例中,指令单元2200执行指令2202,并且递增计数器2204。每次执行指令2202时,都递增该计数器。在本例中,指令单元2200可以实现为图2中的指令高速缓存214。
当指令或数据高速缓存页被装入到存储器中时,操作***程序装入器/链接器和/或性能监测程序读取由编译器生成的元数据,并且确定计数与指令或数据访问相关联,然后装入过程分配数据区来维护计数器作为其性能检测段的一部分。计数器的大小和数据访问的粒度决定所要分配的工作区的数量。
在简单的情况下,数据或指令访问的粒度可以是字大小(从而对字中的任何字节的访问都被认为是一次访问)并且计数也可以是字大小。在这种情况下,在主段和性能检测段之间存在一对多映射(不需要全字来包含计数或阈值)。装入过程分配一个或多个映像页,并且告诉处理器使用所述一个或多个映像页来包含计数。该映射的详细信息在上面参照图17作过描述。处理器中的高速缓存单元维护映像块条目以指示对应页包含计数信息。可以提供不同映射和不同级别的支持。
在另一实施例中,编译器分配工作区来维护计数,并且指示将这些工作区置于其生成的数据区中。元数据中的条目可以表示数据的开始、数据的字节数、数据的粒度、计数区的开始和每个计数单元的粒度。在任何情况下,将元数据装入到处理器中,并且处理器向其内部(映像)高速缓存填充元数据。在修改指令流本身来包含元数据的示例性实施例中,装入器更新指令流以包含适当的指示符和工作区,或者编译器生成了代码来包含元数据。在任一种情况下,在装入了代码之后,处理器接收元数据。
数据单元2206可以作为图2中的数据高速缓存206实现。在本例中,每当访问数据2208时,都递增计数器2210。数据2208和计数器2210均处于特定存储单元中。在这些例子中,可以采用新指令,其中,该指令称作ReadDataAccessCount(RDAC),其获得(take)数据地址和寄存器,并且将与该数据地址相关联的计数置于该寄存器中。
指令执行和数据访问这些事件中的每一个都导致计数器的递增。本发明的机制提供一个接口即硬件接口2212来访问所收集的这一数据。在这些例子中,硬件接口2212采取用于操作***2214的应用程序编程接口(API)的形式。这样,分析工具2216可以从计数器2204和计数器2210获得数据。分析工具2216可以采取多种形式,例如Oprofile,其是Linux***的公知的全***剖析器。虽然图22中的例子示出向指令单元和数据单元提供接口,但是也可以实现硬件接口2212来提供对来自处理器中的其它单元的信息的访问。例如,可以为允许访问位于性能监测器单元的计数器如图2的性能监测器单元240的计数器241和242中的信息的硬件接口2212创建API。
在图23中,示出根据本发明优选实施例的用于自主修改程序代码以允许对代码部分进行选择性计数或剖析中的组件的方框图。在本例中,剖析器2300是可以用来识别程序如程序2302中具有高使用率的例程的程序,如tprof。在这些例子中,“tprof”是定时器剖析器,其捆绑(ship)在来自国际商业机器(IBM)公司的高级交互性执行体(AIX)操作***上。该程序采集由定时器发起的样本。当定时器结束时,tprof识别所执行的指令。tprof是可以用于***性能分析的CPU剖析工具。该工具是分析工具的例子,并且基于包括以下步骤的采样技术:通过时间或性能监测器计数器周期性地中断***;随同进程id(pid)和线程id(tid)一起确定被中断代码的地址;记录软件跟踪缓冲器中的TPROF挂钩(hook);并且返回到被中断代码。
或者,可以使用性能监测器计数器的固定数目的计数来代替定时器。该程序剖析用来指示在程序内何处花费了时间的子例程。使用率超过特定阈值的程序也称作“热点(hot)”。通过使用来自剖析器2300的信息,可以识别感兴趣的例程如程序2302中的子例程2304。
采用该信息,可以由分析工具2306自主修改子例程2304中的指令,以允许对子例程2304的执行进行计数。可以识别另外的例程以由分析工具2306进行修改。例如,还可以识别子例程2304为感兴趣的例程,并修改该例程的指令以允许对子例程2304的执行进行计数。对这些例程中的代码的修改包括将性能指示符与这些子例程中每一个内的一条或多条指令相关联。
在由分析工具2306修改了这些例程中的指令之后,由处理器2308执行程序2302。处理器2308执行程序2302并且为这些例程提供计数。例如,对所执行的指令和执行例程时所用周期数的计数可以使用上述机制由处理器2308执行。
参照图24,其示出根据本发明优选实施例的用于动态地将性能指示符添加到指令或使其与指令关联的过程的流程图。图24所示的过程可以在诸如图23的分析工具2306的程序中实现。分析工具是用来获得有关程序执行的规格的程序。这些规格可以是任何可测量参数,如执行时间、所执行的例程、所执行的特定指令和所访问的存储单元。
该过程以使用来自剖析器的数据识别感兴趣的指令(步骤2400)开始。该剖析器可以例如是AIX中见到的定时器剖析器。从识别出的指令中选择一条指令以作修改(步骤2402)。然后,将性能指示符动态添加到所选指令(步骤2404)。
在步骤2404,可以以无需为执行而修改指令的方式添加指令。可以采用性能检测映像存储器如图15中的性能检测映像存储器1506来保存性能指示符。在这种情形下,设置处理器中的寄存器以指示当执行指令时应检查性能检测映像存储器以获得性能指示符。
然后,判定是否存在另外的所识别指令要修改(步骤2406)。如果存在另外的指令要修改,则该过程返回到步骤2402。否则,该过程终止。
接下来参照图25,其示出根据本发明优选实施例的用来通过将性能指示符与页内的指令相关联而扫描页的组件的图。本发明的机制使用性能指示符来允许每次一页地检测(instrument)或修改程序中的指令。
在本例中,程序2500包含三页,即页2502、页2504和页2506。扫描守护进程(daemon)2508每次一页或多页地将性能指示符与程序2500中的指令相关联。例如,页2502中的指令可以通过扫描守护进程2508与性能指示符相关联。然后,由处理器2510执行程序2500。然后可以收集来自对程序2500的执行的数据。该数据包括例如对响应页2502中的指令而发生的事件的计数,从而对执行页2502中的每条指令的次数进行计数和/或识别对页2502的访问次数。
下一步,扫描守护进程可以从页2502内的指令中去除性能指示符,并且将性能指示符与页2504中的指令相关联。然后,由处理器2510再次执行程序2500,并且收集来自对该程序的执行的数据。然后,可以在所执行的程序2500中修改页2506中的指令以收集有关该页的数据。
以这种方式,可以识别诸如定时器剖析器的程序通常不记录的对例程的使用。由于中断可能被禁止,或者样本的定时可能产生同步非随机行为,所以定时器剖析器可能不记录对例程的某些使用。通过修改程序2500中的指令,可以获得对例程或其它模块的计数,其中,计数是无偏的,并且***是不受干扰的。以这种方式,避免了中断驱动的计数。此外,虽然对代码的检测是每次一页的,但是在扫描程序时也可以使用指令的其它编组,例如形成程序的模块。例如,编组可以是单个可执行程序、库、一组选定函数和一组选定页。
接下来参照图26,其示出根据本发明优选实施例的用于将指示符添加到页内指令的过程的流程图。图26所示的过程可以在诸如图25的扫描守护进程2508的程序中实现。
首先,识别页的选择范围(selection)(步骤2600)。在本例中,这些页是程序中所要扫描或检测的那些页。接下来,选择页的选择范围中的一页以作修改(步骤2602)。然后,使指示符与选定页内的所有指令相关联(步骤2604)。然后执行程序(步骤2606)。接下来,判定是否扫描了选择范围内的所有页(步骤2608)。如果扫描了所有页,则该过程随后终止。然而,如果并非所有的页都已被扫描,则选择所要扫描的下一页(步骤2610),而该过程返回到如上所述的步骤2604。
图26所示的过程示出所扫描的作为页的指令编组。根据具体实现,可以以这种方式扫描或检测其它类型的指令分组,例如形成程序的模块。
采用程序来根据调用堆栈中找到的信息从例程中识别调用者。该程序通过识别已进行的函数调用,允许识别例程中发生了什么,并且提供对程序中发生了什么的总结。然而,该程序需要将指令***代码中以获得这一信息。
本发明的机制允许识别调用和返回,而不必执行特别的代码检测。具体地说,可以使用对特定指令集产生中断的函数来收集有关***和应用程序的信息。在这些例子中,调用和返回的指令与产生中断的性能指示符相关联。
通过向上回巡(walk back)调用堆栈,可以获得完整的调用堆栈以作分析。“堆栈巡视(stack walk)”也可以描述为“堆栈展开(stack unwind)”,而“巡视堆栈”的过程也可以描述为“展开堆栈”。这些术语中的每一个阐明了对该过程的不同比喻。当该过程必须逐步或逐帧地获得和处理堆栈帧时,该过程可以描述为“巡视”。当该过程必须获得和处理指向彼此的堆栈帧时,该过程也可以描述为“展开”,而这些指针及其信息必须通过很多指针解除参考(dereference)来“展开”。
堆栈展开遵循中断时的函数/方法调用顺序,并且响应与性能指示符相关联的指令的执行而生成。调用堆栈是例程加上在程序执行期间进入的例程(即模块、函数、方法等)内偏移的有序列表。例如,如果例程A调用例程B,然后例程B调用例程C,而处理器正在执行例程C中的指令,则调用堆栈为ABC。当把控制从例程C返回到例程B时,调用堆栈为AB。为了在所生成的报告内表达更简洁和易于解释起见,提供例程的名称而没有任何偏移信息。偏移可以用于对程序执行更详细的分析,然而,这里不进一步考虑偏移。
因此,在通过执行与特定性能指示符关联的指令而发起的中断处理期间或后处理时,所生成的基于样本的剖析信息反映调用堆栈的采样,而不是如同某些程序计数器采样技术中一样仅仅为可能调用堆栈的叶子(leaf)。叶子是分枝末端的节点,即没有子代的节点。子代是父节点之子,而叶子是无子节点。
现在参照图27,其是示出根据本发明优选实施例的包含多个堆栈帧的调用堆栈的图。“堆栈”是保留存储器区域,其中一个或多个程序存储状态数据,如过程和函数调用地址、所传递参数,并且有时还有局部变量。“堆栈帧”是线程堆栈的一部分,其表示单个函数调用的局部存储(参数、返回地址、返回值和局部变量)。每一个活动的执行线程具有为其堆栈空间分配的一部分***存储器。线程堆栈由堆栈帧序列组成。线程堆栈上的帧集在任何时候都表示该线程的执行状态。由于堆栈帧典型地是相互链接的(例如,每个堆栈帧指向前一堆栈帧),因此经常有可能向上往回跟踪堆栈帧序列,并且形成“调用堆栈”。调用堆栈表示所有尚未完成的函数调用——换句话说,它反映任何时间点的函数调用序列。
调用堆栈2700包括标识正在运行的例程、调用其的例程等等一直到主程序的信息。调用堆栈2700包括多个堆栈帧2702、2704、2706和2708。在所示例子中,堆栈帧2702位于调用堆栈2700的顶部,而堆栈帧2708位于调用堆栈2700的底部。调用堆栈的顶部也称作“根”。修改(大多数操作***中所见)的中断,以获得被中断线程的程序计数器值(pcv)以及指向该线程的当前活动堆栈帧的指针。在英特尔架构中,这典型地由寄存器:EIP(程序计数器)和EBP(指向堆栈帧的指针)的内容表示。
通过访问当前活动的堆栈帧,有可能利用(典型的)堆栈帧链接约定,以便将所有帧链在一起。标准链接约定的一部分还规定函数返回地址正好放在被调用函数的堆栈帧之上;这可以用来确定被调用函数的地址。虽然本讨论采用基于英特尔的架构,但是本例不是限制。大多数架构采用可以类似地由修改的剖析中断处理程序导航的链接约定。
当发生中断时,所获取的第一参数是程序计数器值。下一个值是指向被中断线程的当前堆栈帧的顶部的指针。在所示例子中,该值将指向堆栈帧2708中的EBP 2708a。EBP 2708又指向堆栈帧2706中的EBP 2706a,而EBP 2706a又指向堆栈帧2704中的EBP 2704a。该EBP又指向堆栈帧2702中的EBP2702a。标识调用例程的返回地址的EIP 2702b-2708b位于堆栈帧2702-2708内。可以根据这些地址来识别这些例程。因此,通过向上或向后巡视堆栈而收集所有返回地址来定义例程。
在某些情况下获得完整的调用堆栈可能是困难的,因为例如当具有一个调用堆栈的应用程序对具有不同调用堆栈的内核进行调用时,环境可能使跟踪困难。由本发明的机制提供的硬件支持避免了这些问题中的某些问题。
接下来参照图28,其示出根据本发明优选实施例的用于识别与调用和返回指令相关联的事件的过程的流程图,其中从性能监测器单元收集数据。图28所示的过程也可以在分析工具如图22的分析工具2216中实现。
该过程以识别调用和返回指令(步骤2800)开始。调用和返回指令是用于确定何时调用了例程和何时例程完成的感兴趣的指令。这可以为中断、中断返回、***调用和从***调用返回而实现。
接下来,使性能指示符与所识别的调用和返回指令相关联(步骤2802)。然后执行程序(步骤2804),并且从性能监测器单元收集数据(步骤2806),然后该过程终止。该信息可以通过接口如图22所示的硬件接口2212来收集,其中,采用API来获得由处理器中的不同功能单元收集的数据。
利用该数据,可以识别例程的调用者。该信息可以用来产生诸如树的数据结构来跟踪和呈现有关程序执行的信息。数据结构的这一生成可以使用类似于在分析工具中提供的过程来实现。
接下来参照图29,其示出根据本发明优选实施例的用于识别已被执行多于选定次数的例程的过程的流程图。图29所示的过程可以在处理器内的功能单元如图2的指令高速缓存214中实现。该过程用来识别对被执行指令的计数,并且当这些指令出现次数多于某选定次数时产生中断。
首先,判定是否探测到对选定指令的执行(步骤2900)。通过检查每条被执行的指令来判定,以查看性能指示符是否与该指令相关联。这些性能指示符可以通过不同工具如图15中的编译器1500或图22中的分析工具2216与该指令相关联。
如果没有识别出对包含性能指示符的指令的执行,则该过程返回到步骤2900,直到探测出选定指令。如果选定指令被识别为正在执行,则为该选定指令递增具有设定阈值的计数器,以对执行该特定指令的频度计数(步骤2902)。在这些例子中,为被标识以进行监测的每条指令分配计数器。
接下来,判定是否达到设定阈值(步骤2904)。对于每一个高速缓存级,起初通过使用文档化高速缓存失败次数来确定阈值。然而,增加次数用来确定因高速缓存干扰(来自其它处理器的访问)引起的问题。可以以不同值重复运行,以识别具有最差性能的区域。
在这些例子中,指令可以与包括要监测对指令的执行并提供计数器的指示的指示符相关联。此外,可以包括计数标准来识别何时要产生中断。例如,当指令被执行多于十三次时,可以产生中断。
如果尚未达到阈值,则该过程返回到如上所述的步骤2900。如果达到了设定阈值,则将中断发送到监测程序(步骤2906),然后该过程终止。该中断可以被发送到中断单元如图2中的中断单元250,这将控制传到适当的程序或进程以处理中断。
该过程可能对具有很多转移的例程尤其有用。在这种情况下,将标志所有转移指令以进行计数。通过这种计数而获得的信息可能对通过使转移最少化或调整所用处理器的指令架构中支持的提示(hint)标志来识别对编译器和运行时编译执行的(JIT,just-in-time)代码生成的改进有用。
接下来参照图30,其示出根据本发明优选实施例的用于当特定指令被执行的次数多于某选定次数时检查调用堆栈并识别例程的调用者的过程的流程图。图7所示的过程可以由中断单元如图2中的中断单元250发起。该过程用来识别例程中的调用,并且可以用来递归获得调用者的信息。
首先,检查调用堆栈,并且识别例程的调用者(步骤3000)。接下来,从指令高速缓存捕获对被执行指令的计数(步骤3002)。该计数是针对图29的步骤2902中所用的计数器的。然后将计数器清零(步骤3004),随后从中断返回控制(步骤3006)。可以使用在图30的过程中获得的信息来识别另外的要监测的例程以递归识别例程的调用者。
接下来参照图31,其是示出根据本发明优选实施例的为进行监测而选择的指令和数据的范围的图。在本例中,程序3100包括指令范围3102和3104。这些范围中的每一个均被识别为所要监测的感兴趣范围。这些范围中的每一个均设在诸如图2的指令高速缓存214的指令单元内。每个范围都用来在程序3100的执行期间告诉处理器在一范围内执行的指令数以及进入一范围的次数。
指令高速缓存3106使用范围寄存器3108来定义指令范围。这些寄存器可以是现有寄存器,或者可以修改指令高速缓存3106来包括定义指令范围的寄存器。这些范围可以基于指令地址。另外,范围寄存器3108可以由各种调试器程序和性能工具更新。
如果在诸如指令范围3102或指令范围3104的范围内执行指令,则在指令高速缓存3106中递增计数器。或者,可以发送指令到性能监测器单元如图2中的性能监测器单元240。在这些例子中,性能监测器单元跟踪对该范围内执行的指令数和进入该指令范围的次数的计数。
数据访问可以以类似方式监测。例如,数据3112包括数据范围3114。可以以与指令范围3102或指令范围3104内的指令执行类似的方式对数据范围3114的数据访问进行计数。这些范围可以定义在诸如图2的数据高速缓存216的数据单元内的寄存器中。这些数据范围可以作为数据的存储单元范围定义在寄存器中。
接下来参照图32,其示出根据本发明优选实施例的用于对设定范围的访问次数以及在设定范围内执行的指令数进行计数的过程的流程图。图32所示的过程可以在诸如图2的指令高速缓存214的指令单元中实现。
首先,识别所要执行的指令(步骤3200)。接下来,判定指令是否在设定的指令范围内(步骤3202)。该范围可以通过检查定义一个或多个指令范围的寄存器来识别。如果指令不在设定的指令范围内,则该过程返回到如上所述的步骤3200。如果该指令在设定的指令范围内,则判定前一指令是否在设定的指令范围内(步骤3204)。如果前一指令不在设定的指令范围内,则递增访问计数器以告诉处理器已进入该指令范围多少次(步骤3206)。另外,递增执行计数器以对在设定的指令范围内执行的指令数进行计数(步骤3208),然后该过程返回到步骤3200。
回到步骤3204,如果前一指令在设定的指令范围内,则该过程进入如上所述的步骤3208。
可以实现类似于图32所示的过程以对数据进行访问。在这种情况下,该过程将典型地在数据单元而非指令单元中实现。
因此,本发明提供了一种用于在监测对程序的执行时提供协助的改进方法、设备和计算机指令。本发明的机制包括采用由处理器识别以启动对与指示符关联的指令的执行进行计数的指示符。通过该机制启动如上所述的各种计数。此外,采用通过利用指示符与特定指令的关联而提供的信息,本发明的机制还提供在监测和分析程序性能中对程序的各种调整。此外,如上所述,可以自动调整程序,以允许监测选定指令乃至例程和模块而不必修改程序。
值得注意的是,虽然本发明是在完全功能数据处理***的上下文中描述的,但是本领域的普通技术人员应当理解本发明的过程能够以指令的计算机可读介质的形式和各种形式来分发,并且本发明与实际上用来执行分发的信号承载介质的具体类型无关地同等适用。计算机可读介质的例子包括诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM的可记录型介质和诸如数字和模拟通信链路、采用各种传输形式例如射频和光波传输的有线或无线通信链路的传输型介质。计算机可读介质可以采取为在特定数据处理***中实际使用而译码的编码格式的形式。
本发明的描述是为了示例和描述的目的而提供的,不旨在穷举或者将本发明限定于所公开的形式。对于本领域的普通技术人员而言,很多修改和变动将是显然的。例如,代替使用指令中或指令包中的字段,可以使用新指令或操作码来指示后续的指令或后续的指令集是被标记指令。此外,在希望在指令的字段内包括性能指示符的情况下,如果用于性能指示符的空闲字段不可用,则可以改变处理器的架构来包括附加位。此外,虽然给出了诸如指令执行的事件、执行指令所需时间如时钟或处理器周期、访问数据及进入到代码部分中的时间的例子,但是这些例子并不旨在将本发明限定于可以计数的事件的类型。可以使用本发明的机制对任何与对指令的执行或对存储单元的访问有关的事件进行计数。
选择和描述这些所示实施例是为了最佳地说明本发明的原理、实际应用,并使得本领域的其他普通技术人员能够理解本发明能有计划地以具有各种修改的各种实施例来适用于具体应用。
Claims (25)
1.一种用于处理指令的数据处理***中的方法,包括:
响应数据处理***中的处理器接收到指令,判定指示符是否与该指令相关联;以及
如果指示符与该指令相关联,则启动对与该指令的执行相关联的每个事件的计数。
2.如权利要求1所述的方法,还包括:
如果启动对指令的计数,则对与指令的执行相关联的每个事件进行计数,其中启动对事件的计数以分析指令的执行。
3.如权利要求2所述的方法,其中计数步骤包括:
每当发生事件时,递增与指示符相关联的计数器。
4.如权利要求1所述的方法,其中接收步骤包括:
在处理器内的指令高速缓存中接收指令。
5.如权利要求1所述的方法,其中指示符存储在性能检测映像高速缓存中,并且其中处理器检查指令高速缓存以判定指示符是否与指令相关联。
6.如权利要求1所述的方法,其中指令由处理器内的指令高速缓存在指令包中接收,并且其中指示符在指令包内的字段中包括至少一个空闲位。
7.如权利要求1所述的方法,其中指示符是单独的指令。
8.如权利要求1所述的方法,其中所述多个事件中的事件包括进入模块、退出模块、进入子例程、退出子例程、进入函数、退出函数、输入/输出的开始、输入/输出的结束以及指令执行中的至少一个。
9.如权利要求1所述的方法,其中判定步骤包括:
由指令高速缓存判定指示符是否存在于指令内的字段中。
10.如权利要求1所述的方法,其中启动步骤包括:
发送信号到性能监测器单元,其中性能监测器单元使用计数器对与指令的执行相关联的每个事件进行计数。
11.一种数据处理***,包括:
性能监测器单元,其中当接收到信号时,性能监测器单元对指令的事件进行计数;以及
指令高速缓存,其中指令高速缓存接收指令,并且当指令与指示符相关联时,发送信号到性能监测器单元以对与该指令相关联的事件进行计数。
12.如权利要求11所述的数据处理***,其中指令位于由指令高速缓存接收的指令包中。
13.如权利要求12所述的数据处理***,其中指示符位于该指令包中。
14.如权利要求11所述的数据处理***,其中指示符与指令相关联地位于性能检测映像存储器中。
15.一种用于监测数据访问的数据处理***中的方法,该方法包括:
识别与指示符相关联的存储单元;以及
启动与对该存储单元的访问相关联的事件的计数。
16.如权利要求15所述的方法,其中启动步骤包括:
从数据高速缓存发送信号到性能监测器单元,以启动性能监测器单元对与存储单元的访问相关联的事件进行计数;以及
每当发生与存储单元访问相关联的事件时,在性能存储器单元中递增计数器。
17.如权利要求15所述的方法,其中所述多个事件中的事件包括对存储单元的访问。
18.一种用于处理指令的数据处理***,所述数据处理***包括:
判定装置,用于响应在数据处理***中的处理器接收到指令,判定指示符是否与该指令相关联;以及
启动装置,用于在指示符与该指令相关联的情况下,启动对与该指令的执行相关联的每个事件的计数。
19.如权利要求18所述的数据处理***,还包括:
计数装置,用于在启动对指令的计数的情况下,对与指令的执行相关联的每个事件进行计数,其中启动对事件进行计数以分析指令的执行。
20.如权利要求19所述的数据处理***,其中计数装置包括:
递增装置,用于每当发生事件时,递增与指示符相关联的计数器。
21.如权利要求18所述的数据处理***,其中接收装置包括:
用于在处理器内的指令高速缓存中接收指令的装置。
22.一种用于监测数据访问的数据处理***,该数据处理***包括:
识别装置,用于识别与指示符相关联的存储单元;以及
启动装置,用于启动与对该存储单元的访问相关联的事件的计数。
23.一种计算机可读介质中用于处理指令的计算机程序产品,所述计算机程序产品包括:
第一指令,用于响应数据处理***中的处理器接收到指令,判定指示符是否与该指令相关联;以及
第二指令,用于在指示符与该指令相关联的情况下,启动对与该指令的执行相关联的每个事件的计数。
24.如权利要求23所述的计算机程序产品,还包括:
第三指令,用于在启动对指令的计数的情况下,对与指令的执行相关联的每个事件进行计数,其中启动对事件进行计数以分析指令的执行。
25.如权利要求24所述的计算机程序产品,其中第三指令包括:
用于每当发生事件时递增与指示符相关联的计数器的子指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/675,777 US7395527B2 (en) | 2003-09-30 | 2003-09-30 | Method and apparatus for counting instruction execution and data accesses |
US10/675,777 | 2003-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1627270A true CN1627270A (zh) | 2005-06-15 |
CN1627270B CN1627270B (zh) | 2010-05-26 |
Family
ID=34377266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200410083369XA Active CN1627270B (zh) | 2003-09-30 | 2004-09-30 | 用于对指令执行和数据访问进行计数的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7395527B2 (zh) |
CN (1) | CN1627270B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963907A (zh) * | 2010-10-14 | 2011-02-02 | 中国科学技术大学苏州研究院 | 一种计算机程序热点的动态剖析机制 |
CN101251821B (zh) * | 2007-02-22 | 2012-01-25 | Arm有限公司 | 数据处理***中诊断功能的选择性禁用 |
CN108476042A (zh) * | 2015-12-23 | 2018-08-31 | 北欧半导体公司 | 可编程的无线电收发器 |
WO2022198552A1 (en) * | 2021-03-25 | 2022-09-29 | Intel Corporation | Hardware assisted memory access tracking |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230313B1 (en) * | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
US7373637B2 (en) * | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US7290255B2 (en) * | 2004-01-14 | 2007-10-30 | International Business Machines Corporation | Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7480899B2 (en) * | 2004-03-22 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for code coverage |
US7421684B2 (en) | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
US8640114B2 (en) | 2006-09-07 | 2014-01-28 | Oracle America, Inc. | Method and apparatus for specification and application of a user-specified filter in a data space profiler |
US8161461B2 (en) * | 2005-03-24 | 2012-04-17 | Hewlett-Packard Development Company, L.P. | Systems and methods for evaluating code usage |
US7886194B2 (en) * | 2005-05-16 | 2011-02-08 | Texas Instruments Incorporated | Event-generating instructions |
US7890941B1 (en) * | 2005-11-10 | 2011-02-15 | Oracle America, Inc. | Binary profile instrumentation framework |
US7904887B2 (en) * | 2006-02-16 | 2011-03-08 | International Business Machines Corporation | Learning and cache management in software defined contexts |
JP4284332B2 (ja) * | 2006-04-21 | 2009-06-24 | 株式会社東芝 | パフォーマンスモニタ装置、データ収集方法及びそのプログラム |
JP4894362B2 (ja) * | 2006-06-09 | 2012-03-14 | 富士通株式会社 | 稼働状況監視プログラム |
US7461383B2 (en) * | 2006-08-21 | 2008-12-02 | International Business Machines Corporation | Method and apparatus for efficient performance monitoring of a large number of simultaneous events |
US8176475B2 (en) | 2006-10-31 | 2012-05-08 | Oracle America, Inc. | Method and apparatus for identifying instructions associated with execution events in a data space profiler |
US8813055B2 (en) * | 2006-11-08 | 2014-08-19 | Oracle America, Inc. | Method and apparatus for associating user-specified data with events in a data space profiler |
US7971190B2 (en) * | 2006-11-30 | 2011-06-28 | Intel Corporation | Machine learning performance analysis tool |
US8762951B1 (en) | 2007-03-21 | 2014-06-24 | Oracle America, Inc. | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor |
US7895421B2 (en) * | 2007-07-12 | 2011-02-22 | Globalfoundries Inc. | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement |
US8407425B2 (en) * | 2007-12-28 | 2013-03-26 | Intel Corporation | Obscuring memory access patterns in conjunction with deadlock detection or avoidance |
CN101661425B (zh) * | 2008-08-26 | 2012-03-21 | 国际商业机器公司 | 测试覆盖分析方法和装置 |
US20100218171A1 (en) * | 2009-02-26 | 2010-08-26 | Computer Measurement Laboratory, Inc. | Computer bus monitoring for the adaptive control of executing software processes |
US8423972B2 (en) * | 2009-02-27 | 2013-04-16 | International Business Machines Corporation | Collecting profile-specified performance data on a multithreaded data processing system |
US8571834B2 (en) | 2010-01-08 | 2013-10-29 | International Business Machines Corporation | Opcode counting for performance measurement |
US8516450B2 (en) * | 2010-03-19 | 2013-08-20 | Oracle International Corporation | Detecting real-time invalid memory references |
US8682910B2 (en) * | 2010-08-03 | 2014-03-25 | Accenture Global Services Limited | Database anonymization for use in testing database-centric applications |
US20120084537A1 (en) * | 2010-09-30 | 2012-04-05 | International Business Machines Corporation | System and method for execution based filtering of instructions of a processor to manage dynamic code optimization |
US9280439B2 (en) * | 2011-02-11 | 2016-03-08 | Sap Se | Usage analysis of productive environment to establish new data source for process optimization and project planning |
JP5998764B2 (ja) * | 2012-09-04 | 2016-09-28 | 富士通株式会社 | 情報処理装置、ログ出力方法およびログ出力プログラム |
US9003236B2 (en) * | 2012-09-28 | 2015-04-07 | Intel Corporation | System and method for correct execution of software based on baseline and real time information |
US9734263B2 (en) * | 2012-12-20 | 2017-08-15 | Intel Corporation | Method and apparatus for efficient pre-silicon debug |
US9342303B2 (en) * | 2013-03-15 | 2016-05-17 | Intel Corporation | Modified execution using context sensitive auxiliary code |
GB2536871A (en) * | 2015-03-04 | 2016-10-05 | Advanced Risc Mach Ltd | An apparatus and method to generate trace data in response to transactional execution |
US11868198B2 (en) * | 2021-06-23 | 2024-01-09 | Paypal, Inc. | Updating counters distributed across a plurality of nodes |
Family Cites Families (397)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2112794A (en) | 1935-06-15 | 1938-03-29 | Underwood Elliott Fisher Co | Typewriting machine |
US3707725A (en) | 1970-06-19 | 1972-12-26 | Ibm | Program execution tracing system improvements |
FR2253418A5 (zh) | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253420A5 (zh) | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253423A5 (zh) | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4034353A (en) | 1975-09-15 | 1977-07-05 | Burroughs Corporation | Computer system performance indicator |
US4145735A (en) | 1977-02-02 | 1979-03-20 | Nippon Steel Corporation | Monitor for priority level of task in information processing system |
US4291371A (en) | 1979-01-02 | 1981-09-22 | Honeywell Information Systems Inc. | I/O Request interrupt mechanism |
FR2471631B1 (fr) | 1979-12-11 | 1986-02-21 | Cii Honeywell Bull | Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information |
JPS59132070A (ja) | 1983-01-18 | 1984-07-30 | Mitsubishi Electric Corp | アレイ演算用デ−タ処理装置 |
US4598364A (en) | 1983-06-29 | 1986-07-01 | International Business Machines Corporation | Efficient trace method adaptable to multiprocessors |
US4558413A (en) | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
US5103394A (en) | 1984-04-30 | 1992-04-07 | Hewlett-Packard Company | Software performance analyzer |
US4794472A (en) | 1985-07-30 | 1988-12-27 | Matsushita Electric Industrial Co., Ltd. | Video tape reproducing apparatus with a processor that time-shares different operations |
US4682283A (en) | 1986-02-06 | 1987-07-21 | Rockwell International Corporation | Address range comparison system using multiplexer for detection of range identifier bits stored in dedicated RAM's |
US5051944A (en) | 1986-04-17 | 1991-09-24 | Ncr Corporation | Computer address analyzer having a counter and memory locations each storing count value indicating occurrence of corresponding memory address |
US4821178A (en) | 1986-08-15 | 1989-04-11 | International Business Machines Corporation | Internal performance monitoring by event sampling |
GB2200483B (en) | 1987-01-22 | 1991-10-16 | Nat Semiconductor Corp | Memory referencing in a high performance microprocessor |
US5822578A (en) | 1987-12-22 | 1998-10-13 | Sun Microsystems, Inc. | System for inserting instructions into processor instruction stream in order to perform interrupt processing |
US6569679B1 (en) | 1988-03-21 | 2003-05-27 | Chiron Corporation | Producer cell that generates adenoviral vectors encoding a cytokine and a conditionally lethal gene |
US4912623A (en) | 1988-04-11 | 1990-03-27 | Square D Company | Multiple processor communications system |
US5032982A (en) | 1988-05-18 | 1991-07-16 | Zilog, Inc. | Device for timing interrupt acknowledge cycles |
US5113507A (en) | 1988-10-20 | 1992-05-12 | Universities Space Research Association | Method and apparatus for a sparse distributed memory system |
US4928222A (en) | 1988-10-31 | 1990-05-22 | International Business Machines Corporation | Enhanced semaphore architecture |
US5142634A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5142635A (en) | 1989-04-07 | 1992-08-25 | Intel Corporation | Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer |
US5257358A (en) | 1989-04-18 | 1993-10-26 | Nec Electronics, Inc. | Method for counting the number of program instruction completed by a microprocessor |
US5256775A (en) | 1989-06-05 | 1993-10-26 | Gilead Sciences, Inc. | Exonuclease-resistant oligonucleotides |
US5150349A (en) | 1989-10-19 | 1992-09-22 | Clarion Co., Ltd. | Disc loading structure |
US6083220A (en) | 1990-03-13 | 2000-07-04 | The Regents Of The University Of California | Endovascular electrolytically detachable wire and tip for the formation of thrombus in arteries, veins, aneurysms, vascular malformations and arteriovenous fistulas |
EP0458495A3 (en) | 1990-05-21 | 1993-04-14 | Texas Instruments Incorporated | Apparatus and method for managing versions and configurations of persistent and transient objects |
US5212794A (en) | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
DE69130138T2 (de) | 1990-06-29 | 1999-05-06 | Digital Equipment Corp., Maynard, Mass. | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
US5276833A (en) | 1990-07-02 | 1994-01-04 | Chips And Technologies, Inc. | Data cache management system with test mode using index registers and CAS disable and posted write disable |
US5151981A (en) | 1990-07-13 | 1992-09-29 | International Business Machines Corporation | Instruction sampling instrumentation |
JPH04248483A (ja) | 1991-02-01 | 1992-09-03 | Nec Corp | 半導体集積回路 |
EP0501613A3 (en) | 1991-02-28 | 1993-09-01 | Hewlett-Packard Company | Heterogeneous software configuration management apparatus |
JP2777496B2 (ja) * | 1991-02-28 | 1998-07-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法 |
US5297282A (en) | 1991-05-29 | 1994-03-22 | Toshiba America Information Systems, Inc. | Resume processing function for the OS/2 operating system |
JPH0774984B2 (ja) | 1991-06-10 | 1995-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | システム資源利用率測定方法とデータ処理システム |
US5193180A (en) | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
US5644692A (en) | 1991-12-06 | 1997-07-01 | Lucent Technologies Inc. | Information display apparatus and methods |
US5574872A (en) | 1991-12-10 | 1996-11-12 | Intel Corporation | Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling |
US5414827A (en) | 1991-12-19 | 1995-05-09 | Opti, Inc. | Automatic cache flush |
US5548762A (en) | 1992-01-30 | 1996-08-20 | Digital Equipment Corporation | Implementation efficient interrupt select mechanism |
US5537572A (en) | 1992-03-31 | 1996-07-16 | Vlsi Technology, Inc. | Cache controller and method for dumping contents of a cache directory and cache data random access memory (RAM) |
JP3544214B2 (ja) | 1992-04-29 | 2004-07-21 | サン・マイクロシステムズ・インコーポレイテッド | プロセッサの状態を監視する方法及び監視システム |
US5657253A (en) | 1992-05-15 | 1997-08-12 | Intel Corporation | Apparatus for monitoring the performance of a microprocessor |
US5581778A (en) | 1992-08-05 | 1996-12-03 | David Sarnoff Researach Center | Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock |
US5450349A (en) | 1992-10-27 | 1995-09-12 | Digital Equipment Corporation | Computer system performance evaluation system and method |
US5479633A (en) | 1992-10-30 | 1995-12-26 | Intel Corporation | Method of controlling clean-up of a solid state memory disk storing floating sector data |
US5404500A (en) | 1992-12-17 | 1995-04-04 | International Business Machines Corporation | Storage control system with improved system and technique for destaging data from nonvolatile memory |
AU6133594A (en) | 1993-02-08 | 1994-08-29 | Action Technologies, Inc. | Method and apparatus for managing business processes |
US5544342A (en) | 1993-06-30 | 1996-08-06 | International Business Machines Corporation | System and method for prefetching information in a processing system |
US5751942A (en) | 1993-06-30 | 1998-05-12 | Intel Corporation | Trace event detection during trace enable transitions |
JP3639927B2 (ja) | 1993-10-04 | 2005-04-20 | 株式会社ルネサステクノロジ | データ処理装置 |
JP3242508B2 (ja) | 1993-11-05 | 2001-12-25 | 松下電器産業株式会社 | マイクロコンピュータ |
DE4423559A1 (de) | 1993-11-09 | 1995-05-11 | Hewlett Packard Co | Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher |
US5581981A (en) | 1993-11-12 | 1996-12-10 | Thiele Engineering Company | Method of packaging toothbrushes |
US5745770A (en) | 1993-12-27 | 1998-04-28 | Intel Corporation | Method and apparatus for servicing simultaneous I/O trap and debug traps in a microprocessor |
US5666507A (en) | 1993-12-29 | 1997-09-09 | Unisys Corporation | Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing |
US5603004A (en) | 1994-02-14 | 1997-02-11 | Hewlett-Packard Company | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system |
US5999737A (en) | 1994-03-01 | 1999-12-07 | Digital Equipment Corporation | Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis |
US5581482A (en) | 1994-04-26 | 1996-12-03 | Unisys Corporation | Performance monitor for digital computer system |
US5590352A (en) | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
CA2186349C (en) | 1994-05-12 | 2008-09-23 | James C. Bunnell | Cpu activity monitoring through cache watching |
US5652858A (en) | 1994-06-06 | 1997-07-29 | Hitachi, Ltd. | Method for prefetching pointer-type data structure and information processing apparatus therefor |
EP0689141A3 (en) | 1994-06-20 | 1997-10-15 | At & T Corp | Disruption-based hardware support for system performance profiling |
US5627981A (en) | 1994-07-01 | 1997-05-06 | Digital Equipment Corporation | Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination |
US5689712A (en) | 1994-07-27 | 1997-11-18 | International Business Machines Corporation | Profile-based optimizing postprocessors for data references |
US6006033A (en) | 1994-08-15 | 1999-12-21 | International Business Machines Corporation | Method and system for reordering the instructions of a computer program to optimize its execution |
US5537541A (en) | 1994-08-16 | 1996-07-16 | Digital Equipment Corporation | System independent interface for performance counters |
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 |
US5557548A (en) | 1994-12-09 | 1996-09-17 | International Business Machines Corporation | Method and system for performance monitoring within a data processing system |
US5694540A (en) | 1994-12-15 | 1997-12-02 | Lucent Technologies Inc. | Automated software regression test and compilation system |
JP2908739B2 (ja) | 1994-12-16 | 1999-06-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 多重プロセッサ・システムにおけるcpuのモニタリング・システム及び方法 |
WO1996024991A1 (en) | 1995-02-08 | 1996-08-15 | Actual Radio Measurement | Remote listenership monitoring system |
US5794052A (en) | 1995-02-27 | 1998-08-11 | Ast Research, Inc. | Method of software installation and setup |
US5761103A (en) | 1995-03-08 | 1998-06-02 | Texas Instruments Incorporated | Left and right justification of single precision mantissa in a double precision rounding unit |
US5675802A (en) | 1995-03-31 | 1997-10-07 | Pure Atria Corporation | Version control system for geographically distributed software development |
US5727167A (en) | 1995-04-14 | 1998-03-10 | International Business Machines Corporation | Thresholding support in performance monitoring |
US6148321A (en) | 1995-05-05 | 2000-11-14 | Intel Corporation | Processor event recognition |
GB9509987D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
US5659679A (en) | 1995-05-30 | 1997-08-19 | Intel Corporation | Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system |
US5671920A (en) | 1995-06-01 | 1997-09-30 | Xerox Corporation | High speed printed sheet stacking and registration system |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
US5684030A (en) | 1995-06-07 | 1997-11-04 | American Home Products Corporation | 2-substituted benzimidazole derivatives |
US5878255A (en) | 1995-06-07 | 1999-03-02 | Advanced Micro Devices, Inc. | Update unit for providing a delayed update to a branch prediction array |
US5740413A (en) | 1995-06-19 | 1998-04-14 | Intel Corporation | Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping |
US5875294A (en) | 1995-06-30 | 1999-02-23 | International Business Machines Corporation | Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states |
JP3290567B2 (ja) | 1995-08-24 | 2002-06-10 | 富士通株式会社 | プロファイル計装方法 |
US5754839A (en) | 1995-08-28 | 1998-05-19 | Motorola, Inc. | Apparatus and method for implementing watchpoints and breakpoints in a data processing system |
US5748878A (en) | 1995-09-11 | 1998-05-05 | Applied Microsystems, Inc. | Method and apparatus for analyzing software executed in embedded systems |
US5691920A (en) | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5797019A (en) | 1995-10-02 | 1998-08-18 | International Business Machines Corporation | Method and system for performance monitoring time lengths of disabled interrupts in a processing system |
US5752062A (en) | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US5949971A (en) | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5787286A (en) | 1995-10-10 | 1998-07-28 | International Business Machines Corporation | Method and system for tabulation of execution performance |
US5815707A (en) | 1995-10-19 | 1998-09-29 | Hewlett-Packard Company | Dynamic function replacement for streams framework |
US5875334A (en) | 1995-10-27 | 1999-02-23 | International Business Machines Corporation | System, method, and program for extending a SQL compiler for handling control statements packaged with SQL query statements |
JP3717212B2 (ja) * | 1995-10-27 | 2005-11-16 | 株式会社日立製作所 | 情報処理装置及び情報処理ユニット |
US5774724A (en) | 1995-11-20 | 1998-06-30 | International Business Machines Coporation | System and method for acquiring high granularity performance data in a computer system |
US5758061A (en) | 1995-12-15 | 1998-05-26 | Plum; Thomas S. | Computer software testing method and apparatus |
US5805879A (en) | 1996-02-23 | 1998-09-08 | Cyrix Corporation | In a pipelined processor, setting a segment access indicator during execution stage using exception handling |
JP3650460B2 (ja) | 1996-03-06 | 2005-05-18 | 株式会社アドバンテスト | 温度補正付きドライバ回路 |
US5758187A (en) | 1996-03-15 | 1998-05-26 | Adaptec, Inc. | Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure |
US5909573A (en) | 1996-03-28 | 1999-06-01 | Intel Corporation | Method of branch prediction using loop counters |
US5758168A (en) | 1996-04-18 | 1998-05-26 | International Business Machines Corporation | Interrupt vectoring for optionally architected facilities in computer systems |
US5822763A (en) | 1996-04-19 | 1998-10-13 | Ibm Corporation | Cache coherence protocol for reducing the effects of false sharing in non-bus-based shared-memory multiprocessors |
DE69728081T2 (de) | 1996-05-30 | 2004-08-19 | Matsushita Electric Industrial Co., Ltd., Kadoma | Verfahren und Schaltkreis zur Steuerung verzögerter Verzweigungsbefehle |
US5772322A (en) | 1996-05-31 | 1998-06-30 | Honeywell Inc. | Resonant microbeam temperature sensor |
US5775825A (en) | 1996-07-22 | 1998-07-07 | Hewlett-Packard Company | Integrated shell-and-chasis construction for a desktop image-related device |
US5794028A (en) | 1996-10-17 | 1998-08-11 | Advanced Micro Devices, Inc. | Shared branch prediction structure |
US5835702A (en) | 1996-10-21 | 1998-11-10 | International Business Machines Corporation | Performance monitor |
US5937437A (en) | 1996-10-28 | 1999-08-10 | International Business Machines Corporation | Method and apparatus for monitoring address translation performance |
US6278064B1 (en) | 1996-10-30 | 2001-08-21 | Square D Company | Conductive joint formed by electron beam welding and method thereof |
US5926640A (en) | 1996-11-01 | 1999-07-20 | Digital Equipment Corporation | Skipping clock interrupts during system inactivity to reduce power consumption |
US6128711A (en) | 1996-11-12 | 2000-10-03 | Compaq Computer Corporation | Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes |
US5862381A (en) | 1996-11-26 | 1999-01-19 | International Business Machines Corporation | Visualization tool for graphically displaying trace data |
US5896538A (en) * | 1996-11-26 | 1999-04-20 | International Business Machines Corporation | System and method for multi-phased performance profiling of single-processor and multi-processor systems |
US5887159A (en) | 1996-12-11 | 1999-03-23 | Digital Equipment Corporation | Dynamically determining instruction hint fields |
US5913925A (en) | 1996-12-16 | 1999-06-22 | International Business Machines Corporation | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order |
US5870576A (en) | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US5889947A (en) | 1996-12-16 | 1999-03-30 | International Business Machines Corporation | Apparatus and method for executing instructions that select a storage location for output values in response to an operation count |
US5938760A (en) | 1996-12-17 | 1999-08-17 | International Business Machines Corporation | System and method for performance monitoring of instructions in a re-order buffer |
US6189072B1 (en) | 1996-12-17 | 2001-02-13 | International Business Machines Corporation | Performance monitoring of cache misses and instructions completed for instruction parallelism analysis |
US20030061471A1 (en) | 1999-07-23 | 2003-03-27 | Masahito Matsuo | Data processor |
US5822790A (en) | 1997-02-07 | 1998-10-13 | Sun Microsystems, Inc. | Voting data prefetch engine |
SE520343C2 (sv) | 1997-02-12 | 2003-07-01 | Ericsson Telefon Ab L M | Förfarande, system och dator för grenprediktion |
ATE282907T1 (de) | 1997-02-17 | 2004-12-15 | Ego Elektro Geraetebau Gmbh | Schaltungsanordnung für ein sensorelement |
US5872913A (en) | 1997-03-07 | 1999-02-16 | International Business Machines Corporation | System and method for low overhead, high precision performance measurements using state transistions |
US6112317A (en) | 1997-03-10 | 2000-08-29 | Digital Equipment Corporation | Processor performance counter for sampling the execution frequency of individual instructions |
US5796939A (en) | 1997-03-10 | 1998-08-18 | Digital Equipment Corporation | High frequency sampling of processor performance counters |
US5857097A (en) * | 1997-03-10 | 1999-01-05 | Digital Equipment Corporation | Method for identifying reasons for dynamic stall cycles during the execution of a program |
US5950009A (en) | 1997-03-10 | 1999-09-07 | International Business Machines Coporation | Method and apparatus for profile-based reordering of program portions in a computer program |
US5970439A (en) | 1997-03-13 | 1999-10-19 | International Business Machines Corporation | Performance monitoring in a data processing system |
EP0864969A1 (en) | 1997-03-14 | 1998-09-16 | Alcatel | A method to provide a software package and a provider station and a user station realising the method |
US5938766A (en) | 1997-03-21 | 1999-08-17 | Apple Computer, Inc. | System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables |
US5928334A (en) * | 1997-03-28 | 1999-07-27 | International Business Machines Corporation | Hardware verification tool for multiprocessors |
US6149318A (en) | 1997-04-15 | 2000-11-21 | Samuel C. Kendall | Link-time and run-time error detection, and program instrumentation |
US6026235A (en) | 1997-05-20 | 2000-02-15 | Inprise Corporation | System and methods for monitoring functions in natively compiled software programs |
US5966537A (en) | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
US5920721A (en) | 1997-06-11 | 1999-07-06 | Digital Equipment Corporation | Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments |
US6094709A (en) | 1997-07-01 | 2000-07-25 | International Business Machines Corporation | Cache coherence for lazy entry consistency in lockup-free caches |
US5991708A (en) | 1997-07-07 | 1999-11-23 | International Business Machines Corporation | Performance monitor and method for performance monitoring within a data processing system |
US5987598A (en) | 1997-07-07 | 1999-11-16 | International Business Machines Corporation | Method and system for tracking instruction progress within a data processing system |
US5802678A (en) | 1997-07-16 | 1998-09-08 | Puente; Joe A. | Non-penetrating tie restraining device |
US6425118B1 (en) | 1997-07-18 | 2002-07-23 | Compaq Computer Corporation | System for automatically generating tests to ensure binary compatibility between software components produced by a source-to-source computer language translator |
US5926176A (en) | 1997-07-31 | 1999-07-20 | Think & Do Software, Inc. | Control program tracking and display system |
US6202199B1 (en) | 1997-07-31 | 2001-03-13 | Mutek Solutions, Ltd. | System and method for remotely analyzing the execution of computer programs |
US5987250A (en) | 1997-08-21 | 1999-11-16 | Hewlett-Packard Company | Transparent instrumentation for computer program behavior analysis |
JPH1185515A (ja) | 1997-09-10 | 1999-03-30 | Ricoh Co Ltd | マイクロプロセッサ |
US5940618A (en) | 1997-09-22 | 1999-08-17 | International Business Machines Corporation | Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments |
US5991908A (en) | 1997-09-29 | 1999-11-23 | Xilinx, Inc. | Boundary scan chain with dedicated programmable routing |
US5995754A (en) | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
US6256771B1 (en) | 1997-10-16 | 2001-07-03 | At&T Corp. | Method and apparatus for providing a dynamic service composition software architecture |
US6101524A (en) | 1997-10-23 | 2000-08-08 | International Business Machines Corporation | Deterministic replay of multithreaded applications |
US6105051A (en) | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US5966538A (en) | 1997-10-31 | 1999-10-12 | Hewlett-Packard Company | Method and apparatus for automatically determining which compiler options should be used when compiling a computer program |
US5938778A (en) | 1997-11-10 | 1999-08-17 | International Business Machines Corporation | System and method for tracing instructions in an information handling system without changing the system source code |
US6199154B1 (en) * | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6442585B1 (en) * | 1997-11-26 | 2002-08-27 | Compaq Computer Corporation | Method for scheduling contexts based on statistics of memory system interactions in a computer system |
US6119075A (en) | 1997-11-26 | 2000-09-12 | Digital Equipment Corporation | Method for estimating statistics of properties of interactions processed by a processor pipeline |
US6163840A (en) | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
US6549930B1 (en) | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US6070009A (en) | 1997-11-26 | 2000-05-30 | Digital Equipment Corporation | Method for estimating execution rates of program execution paths |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
FR2772547B1 (fr) | 1997-12-12 | 2000-01-21 | Soudure Autogene Francaise | Ensemble corps d'electrode/porte-electrode pour torche plasma |
US6349406B1 (en) * | 1997-12-12 | 2002-02-19 | International Business Machines Coporation | Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times |
US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6098169A (en) | 1997-12-23 | 2000-08-01 | Intel Corporation | Thread performance analysis by monitoring processor performance event registers at thread switch |
US6195765B1 (en) | 1998-01-05 | 2001-02-27 | Electronic Data Systems Corporation | System and method for testing an application program |
US6631514B1 (en) | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
JPH11194957A (ja) * | 1998-01-07 | 1999-07-21 | Matsushita Electric Ind Co Ltd | デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体 |
US6374364B1 (en) * | 1998-01-20 | 2002-04-16 | Honeywell International, Inc. | Fault tolerant computing system using instruction counting |
GB2333864B (en) | 1998-01-28 | 2003-05-07 | Ibm | Distribution of software updates via a computer network |
US6202207B1 (en) | 1998-01-28 | 2001-03-13 | International Business Machines Corporation | Method and a mechanism for synchronized updating of interoperating software |
JP3881763B2 (ja) * | 1998-02-09 | 2007-02-14 | 株式会社ルネサステクノロジ | データ処理装置 |
US6105129A (en) | 1998-02-18 | 2000-08-15 | Advanced Micro Devices, Inc. | Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction |
US6311327B1 (en) | 1998-03-02 | 2001-10-30 | Applied Microsystems Corp. | Method and apparatus for analyzing software in a language-independent manner |
GB9805485D0 (en) * | 1998-03-13 | 1998-05-13 | Sgs Thomson Microelectronics | Microcomputer |
US6237019B1 (en) | 1998-03-18 | 2001-05-22 | International Business Machines Corporation | Method and apparatus for performing a semaphore operation |
US6185671B1 (en) | 1998-03-31 | 2001-02-06 | Intel Corporation | Checking data type of operands specified by an instruction using attributes in a tagged array architecture |
US6067644A (en) | 1998-04-15 | 2000-05-23 | International Business Machines Corporation | System and method monitoring instruction progress within a processor |
US6134676A (en) | 1998-04-30 | 2000-10-17 | International Business Machines Corporation | Programmable hardware event monitoring method |
US6189141B1 (en) | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6247113B1 (en) * | 1998-05-27 | 2001-06-12 | Arm Limited | Coprocessor opcode division by data type |
US6735757B1 (en) | 1998-06-04 | 2004-05-11 | Gateway, Inc. | Apparatus and method for checking component compatibility in a build to order computer system |
US6317820B1 (en) | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
US6145123A (en) | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US6286584B1 (en) | 1998-07-15 | 2001-09-11 | James A. Frields | Quick-change mechanism for a tie bar |
US6243804B1 (en) * | 1998-07-22 | 2001-06-05 | Scenix Semiconductor, Inc. | Single cycle transition pipeline processing using shadow registers |
US6073215A (en) | 1998-08-03 | 2000-06-06 | Motorola, Inc. | Data processing system having a data prefetch mechanism and method therefor |
US6240510B1 (en) * | 1998-08-06 | 2001-05-29 | Intel Corporation | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions |
US6275893B1 (en) * | 1998-09-14 | 2001-08-14 | Compaq Computer Corporation | Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system |
US6212675B1 (en) | 1998-09-16 | 2001-04-03 | International Business Machines Corporation | Presentation of visual program test coverage information |
US6189142B1 (en) | 1998-09-16 | 2001-02-13 | International Business Machines Corporation | Visual program runtime performance analysis |
US6324689B1 (en) | 1998-09-30 | 2001-11-27 | Compaq Computer Corporation | Mechanism for re-writing an executable having mixed code and data |
US6223338B1 (en) | 1998-09-30 | 2001-04-24 | International Business Machines Corporation | Method and system for software instruction level tracing in a data processing system |
JP3551353B2 (ja) | 1998-10-02 | 2004-08-04 | 株式会社日立製作所 | データ再配置方法 |
JP3123047B2 (ja) * | 1998-10-02 | 2001-01-09 | 日本電気株式会社 | マイクロプロセッサ |
US6192513B1 (en) | 1998-11-02 | 2001-02-20 | Hewlett-Packard Company | Mechanism for finding spare registers in binary code |
US6185652B1 (en) | 1998-11-03 | 2001-02-06 | International Business Machin Es Corporation | Interrupt mechanism on NorthBay |
US6351844B1 (en) * | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
US6826749B2 (en) * | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
US6654781B1 (en) | 1998-12-11 | 2003-11-25 | International Business Machines Corporation | Enhanced thread processing |
US6636950B1 (en) | 1998-12-17 | 2003-10-21 | Massachusetts Institute Of Technology | Computer architecture for shared memory access |
US6253338B1 (en) * | 1998-12-21 | 2001-06-26 | International Business Machines Corporation | System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block |
US6230313B1 (en) | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
US6446019B1 (en) | 1998-12-29 | 2002-09-03 | Intel Corporation | Method and apparatus for calibrating analog sensor measurement |
US6404500B1 (en) | 1999-01-25 | 2002-06-11 | Aqua Check Systems, Inc | Colorimeter apparatus and related process |
US6484315B1 (en) | 1999-02-01 | 2002-11-19 | Cisco Technology, Inc. | Method and system for dynamically distributing updates in a network |
US6378066B1 (en) | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
US6330662B1 (en) | 1999-02-23 | 2001-12-11 | Sun Microsystems, Inc. | Apparatus including a fetch unit to include branch history information to increase performance of multi-cylce pipelined branch prediction structures |
US6430741B1 (en) * | 1999-02-26 | 2002-08-06 | Hewlett-Packard Company | System and method for data coverage analysis of a computer program |
US6526571B1 (en) | 1999-03-16 | 2003-02-25 | International Business Machines Corporation | Method for identifying calls in java packages whose targets are guaranteed to belong to the same package |
US6647301B1 (en) | 1999-04-22 | 2003-11-11 | Dow Global Technologies Inc. | Process control system with integrated safety control system |
US7086035B1 (en) * | 1999-05-13 | 2006-08-01 | International Business Machines Corporation | Method and system for counting non-speculative events in a speculative processor |
US6562858B2 (en) | 1999-05-17 | 2003-05-13 | St. Elizabeth's Medical Center Of Boston, Inc. | Method for treating depression |
US6460693B1 (en) | 1999-05-19 | 2002-10-08 | Valley Design, Inc. | Child resistant blister pack container with compound action release mechanism |
US6501995B1 (en) | 1999-06-30 | 2002-12-31 | The Foxboro Company | Process control system and method with improved distribution, installation and validation of components |
US6339818B1 (en) | 1999-06-24 | 2002-01-15 | International Business Machines Corporation | Method and system for dynamically locating frequently accessed memory regions or locations |
US6477703B1 (en) | 1999-06-29 | 2002-11-05 | Hewlett-Packard Company | Software patch selection tool |
US6446029B1 (en) * | 1999-06-30 | 2002-09-03 | International Business Machines Corporation | Method and system for providing temporal threshold support during performance monitoring of a pipelined processor |
US6453468B1 (en) | 1999-06-30 | 2002-09-17 | B-Hub, Inc. | Methods for improving reliability while upgrading software programs in a clustered computer system |
US20030040955A1 (en) * | 1999-07-02 | 2003-02-27 | The Nasdaq Stock Market, Inc., A Delaware Corporation | Market monitoring architecture for detecting alert conditions |
US6206235B1 (en) | 1999-07-07 | 2001-03-27 | Daniel Green | Candy dispenser |
US6459998B1 (en) | 1999-07-24 | 2002-10-01 | Gary R. Hoffman | Sensing downed power lines |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6601233B1 (en) | 1999-07-30 | 2003-07-29 | Accenture Llp | Business components framework |
US6438743B1 (en) | 1999-08-13 | 2002-08-20 | Intrinsity, Inc. | Method and apparatus for object cache registration and maintenance in a networked software development environment |
US6457170B1 (en) | 1999-08-13 | 2002-09-24 | Intrinsity, Inc. | Software system build method and apparatus that supports multiple users in a software development environment |
US6406135B1 (en) | 1999-08-23 | 2002-06-18 | Canon Kabushiki Kaisha | Ink jet recording head and recording apparatus using the same |
US7254806B1 (en) * | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
US6542985B1 (en) | 1999-09-23 | 2003-04-01 | Unisys Corporation | Event counter |
US6594820B1 (en) * | 1999-09-28 | 2003-07-15 | Sun Microsystems, Inc. | Method and apparatus for testing a process in a computer system |
US6298521B1 (en) | 1999-10-18 | 2001-10-09 | Gary Butterfield | Door knob sanitizing device |
US6557096B1 (en) * | 1999-10-25 | 2003-04-29 | Intel Corporation | Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types |
US6574727B1 (en) * | 1999-11-04 | 2003-06-03 | International Business Machines Corporation | Method and apparatus for instruction sampling for performance monitoring and debug |
US6550002B1 (en) | 1999-11-04 | 2003-04-15 | International Business Machines Corporation | Method and system for detecting a flush of an instruction without a flush indicator |
US6973417B1 (en) | 1999-11-05 | 2005-12-06 | Metrowerks Corporation | Method and system for simulating execution of a target program in a simulated target system |
US6530042B1 (en) | 1999-11-08 | 2003-03-04 | International Business Machines Corporation | Method and apparatus for monitoring the performance of internal queues in a microprocessor |
US6718543B2 (en) | 1999-11-08 | 2004-04-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior |
US6871298B1 (en) * | 1999-11-12 | 2005-03-22 | Obsidian Software, Inc. | Method and apparatus that simulates the execution of paralled instructions in processor functional verification testing |
US6513045B1 (en) | 1999-11-17 | 2003-01-28 | International Business Machines Corporation | Method and an apparatus for providing cross product automated user assistance in the planning, configuration, and management of information systems |
US6681387B1 (en) * | 1999-12-01 | 2004-01-20 | Board Of Trustees Of The University Of Illinois | Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit |
JP3600095B2 (ja) | 1999-12-07 | 2004-12-08 | 松下電器産業株式会社 | 割り込み管理装置及び割り込み管理方法 |
US6480966B1 (en) | 1999-12-07 | 2002-11-12 | International Business Machines Corporation | Performance monitor synchronization in a multiprocessor system |
US6598153B1 (en) | 1999-12-10 | 2003-07-22 | International Business Machines Corporation | Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
JP3946397B2 (ja) | 1999-12-24 | 2007-07-18 | 三菱電機株式会社 | 車載情報処理装置 |
JP3575593B2 (ja) | 1999-12-27 | 2004-10-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクトのロック管理方法及び装置 |
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
US6549998B1 (en) * | 2000-01-14 | 2003-04-15 | Agere Systems Inc. | Address generator for interleaving data |
JP2001202270A (ja) | 2000-01-21 | 2001-07-27 | Mitsubishi Electric Corp | 内部バストレース機能付プロセッサ |
US6772322B1 (en) * | 2000-01-21 | 2004-08-03 | Intel Corporation | Method and apparatus to monitor the performance of a processor |
TW457432B (en) | 2000-02-11 | 2001-10-01 | Via Tech Inc | Method to resolve the interrupt problem of data stream and the device thereof |
US6721875B1 (en) * | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
US6735666B1 (en) * | 2000-02-22 | 2004-05-11 | Wind River Systems, Inc. | Method of providing direct user task access to operating system data structures |
WO2001063434A1 (en) * | 2000-02-24 | 2001-08-30 | Bops, Incorporated | Methods and apparatus for dual-use coprocessing/debug interface |
JP2001265609A (ja) | 2000-03-16 | 2001-09-28 | Omron Corp | 演算処理装置 |
US6862729B1 (en) | 2000-04-04 | 2005-03-01 | Microsoft Corporation | Profile-driven data layout optimization |
US6687807B1 (en) | 2000-04-18 | 2004-02-03 | Sun Microystems, Inc. | Method for apparatus for prefetching linked data structures |
JP2001312374A (ja) | 2000-04-28 | 2001-11-09 | Fujitsu Ltd | 記憶装置及びアクセス制御方法 |
EP1150213B1 (en) * | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
US7024668B2 (en) | 2000-05-15 | 2006-04-04 | Matsushita Electric Industrial Co., Ltd. | Application execution apparatus and method |
US6725457B1 (en) | 2000-05-17 | 2004-04-20 | Nvidia Corporation | Semaphore enhancement to improve system performance |
US6951018B2 (en) | 2000-05-30 | 2005-09-27 | Sun Microsystems, Inc. | Method and apparatus for efficiently tracking monitors |
DE10028500A1 (de) | 2000-06-08 | 2002-01-03 | Deutsche Telekom Ag | Verfahren zur Installation von Software in einer Hardware |
US6961681B1 (en) | 2000-09-12 | 2005-11-01 | Microsoft Corporation | System and method providing virtual applications architecture |
US6678755B1 (en) | 2000-06-30 | 2004-01-13 | Micron Technology, Inc. | Method and apparatus for appending memory commands during a direct memory access operation |
US6557083B1 (en) | 2000-06-30 | 2003-04-29 | Intel Corporation | Memory system for multiple data types |
US6658416B1 (en) | 2000-07-10 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for creating an indexed database of symbolic data for use with trace data of a computer program |
US6973542B1 (en) | 2000-07-18 | 2005-12-06 | International Business Machines Corporation | Detecting when to prefetch inodes and then prefetching inodes in parallel |
JP2002110537A (ja) | 2000-07-19 | 2002-04-12 | Nikon Corp | マスク描画用電子線露光装置 |
US6918106B1 (en) | 2000-07-31 | 2005-07-12 | Sun Microsystems, Inc. | Method and apparatus for collocating dynamically loaded program files |
US6928521B1 (en) | 2000-08-01 | 2005-08-09 | International Business Machines Corporation | Method, system, and data structures for using metadata in updating data in a storage device |
US6757771B2 (en) * | 2000-08-09 | 2004-06-29 | Advanced Micro Devices, Inc. | Stack switching mechanism in a computer system |
US6948059B1 (en) | 2000-09-28 | 2005-09-20 | Rockwell Automation Technologies, Inc. | Component loader for industrial control device providing resource search capabilities |
US6782454B1 (en) * | 2000-09-29 | 2004-08-24 | Sun Microsystems, Inc. | System and method for pre-fetching for pointer linked data structures |
US6775825B1 (en) | 2000-10-31 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | Common software application definition for resource management |
US6971091B1 (en) | 2000-11-01 | 2005-11-29 | International Business Machines Corporation | System and method for adaptively optimizing program execution by sampling at selected program points |
FI117143B (fi) | 2000-11-30 | 2006-06-30 | Metso Automation Oy | Soodakattilan nuohousmenetelmä ja -laitteisto |
US20020073406A1 (en) * | 2000-12-12 | 2002-06-13 | Darryl Gove | Using performance counter profiling to drive compiler optimization |
US6480938B2 (en) | 2000-12-15 | 2002-11-12 | Hewlett-Packard Company | Efficient I-cache structure to support instructions crossing line boundaries |
US6857083B2 (en) * | 2000-12-18 | 2005-02-15 | International Business Machines Corporation | Method and system for triggering a debugging unit |
US7448025B2 (en) * | 2000-12-29 | 2008-11-04 | Intel Corporation | Qualification of event detection by thread ID and thread privilege level |
US6665776B2 (en) | 2001-01-04 | 2003-12-16 | Hewlett-Packard Development Company L.P. | Apparatus and method for speculative prefetching after data cache misses |
US6785844B2 (en) | 2001-01-26 | 2004-08-31 | Dell Products L.P. | Automated test system and method for computer factory install environment |
US7093236B2 (en) * | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
US6865667B2 (en) | 2001-03-05 | 2005-03-08 | Freescale Semiconductors, Inc. | Data processing system having redirecting circuitry and method therefor |
US6519310B2 (en) | 2001-03-28 | 2003-02-11 | Intel Corporation | Hardware event based flow control of counters |
US6966057B2 (en) | 2001-03-30 | 2005-11-15 | Intel Corporation | Static compilation of instrumentation code for debugging support |
US20030066055A1 (en) * | 2001-04-26 | 2003-04-03 | Spivey John Michael | Profiling computer programs |
US20020169738A1 (en) | 2001-05-10 | 2002-11-14 | Giel Peter Van | Method and system for auditing an enterprise configuration |
JP4445160B2 (ja) | 2001-05-18 | 2010-04-07 | 富士通株式会社 | イベント計測装置および方法並びにイベント計測プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体並びにプロセッサシステム |
WO2002095601A1 (en) | 2001-05-22 | 2002-11-28 | Koninklijke Philips Electronics N.V. | Method and system for accelerated access to a memory |
US20020199179A1 (en) | 2001-06-21 | 2002-12-26 | Lavery Daniel M. | Method and apparatus for compiler-generated triggering of auxiliary codes |
US6988186B2 (en) | 2001-06-28 | 2006-01-17 | International Business Machines Corporation | Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry |
US20030005422A1 (en) | 2001-07-02 | 2003-01-02 | Nicolai Kosche | Technique for improving the prediction rate of dynamically unpredictable branches |
US6742179B2 (en) * | 2001-07-12 | 2004-05-25 | International Business Machines Corporation | Restructuring of executable computer code and large data sets |
US6848030B2 (en) * | 2001-07-20 | 2005-01-25 | Freescale Semiconductor, Inc. | Method and apparatus for filling lines in a cache |
GB2379039B (en) * | 2001-08-22 | 2005-03-23 | Ibm | Transaction processing in a distributed data processing system |
US6687794B2 (en) * | 2001-10-18 | 2004-02-03 | International Business Machines Corporation | Prefetching mechanism for data caches |
US6430938B1 (en) | 2001-10-18 | 2002-08-13 | Praxair Technology, Inc. | Cryogenic vessel system with pulse tube refrigeration |
US20030131343A1 (en) * | 2001-10-19 | 2003-07-10 | French Ronan J. | Framework for system monitoring |
CA2359862A1 (en) | 2001-10-24 | 2003-04-24 | Ibm Canada Limited - Ibm Canada Limitee | Using identifiers and counters for controlled optimization compilation |
US7093154B2 (en) * | 2001-10-25 | 2006-08-15 | International Business Machines Corporation | Critical adapter local error handling |
US6775728B2 (en) * | 2001-11-15 | 2004-08-10 | Intel Corporation | Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework |
US20030126590A1 (en) * | 2001-12-28 | 2003-07-03 | Michael Burrows | System and method for dynamic data-type checking |
US6928582B2 (en) * | 2002-01-04 | 2005-08-09 | Intel Corporation | Method for fast exception handling |
US20030135720A1 (en) * | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for instruction tracing with secondary set of interruption resources |
US20030135719A1 (en) | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for tracing instruction disposition information |
US7035996B2 (en) * | 2002-01-17 | 2006-04-25 | Raytheon Company | Generating data type token value error in stream computer |
US7168067B2 (en) * | 2002-02-08 | 2007-01-23 | Agere Systems Inc. | Multiprocessor system with cache-based software breakpoints |
US7069541B2 (en) | 2002-03-01 | 2006-06-27 | Bellsouth Intellectual Property Corporation | System and method for a web-based application development and deployment tracking tool |
US7131115B2 (en) | 2002-03-25 | 2006-10-31 | Hewlett-Packard Development Company, L.P. | Unwinding instrumented program code |
US7089535B2 (en) | 2002-03-28 | 2006-08-08 | International Business Machines Corporation | Code coverage with an integrated development environment |
US6832296B2 (en) | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
US6732354B2 (en) | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
US7577951B2 (en) | 2002-05-30 | 2009-08-18 | Hewlett-Packard Development Company, L.P. | Performance of computer programs while they are running |
WO2004001584A2 (en) | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP4077252B2 (ja) | 2002-06-28 | 2008-04-16 | 富士通株式会社 | コンパイラプログラムおよびコンパイル処理方法 |
KR100481854B1 (ko) | 2002-07-29 | 2005-04-11 | 삼성전자주식회사 | 온칩 터미네이션기능을 가진 집적회로장치 |
US6970999B2 (en) | 2002-07-31 | 2005-11-29 | International Business Machines Corporation | Counting latencies of an instruction table flush, refill and instruction execution using a plurality of assigned counters |
US9003376B2 (en) * | 2002-08-09 | 2015-04-07 | Texas Instruments Incorporated | Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems |
US6840829B2 (en) | 2002-08-30 | 2005-01-11 | Kawasaki Jukogyo Kabushiki Kaisha | Jet-propulsion watercraft |
US7296259B2 (en) * | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
US6774724B2 (en) | 2002-11-21 | 2004-08-10 | Motorola, Inc. | Radio frequency power amplifier active self-bias compensation circuit |
US7707621B2 (en) | 2002-12-02 | 2010-04-27 | Silverbrook Research Pty Ltd | Creation and usage of mutually exclusive messages |
US7155575B2 (en) | 2002-12-18 | 2006-12-26 | Intel Corporation | Adaptive prefetch for irregular access patterns |
US7207043B2 (en) | 2002-12-31 | 2007-04-17 | International Business Machines Corporation | Programmatic response-time based workload distribution techniques |
US7237242B2 (en) | 2002-12-31 | 2007-06-26 | International Business Machines Corporation | Dynamic thread pool tuning techniques |
US20040128651A1 (en) | 2002-12-31 | 2004-07-01 | Michael Lau | Method and system for testing provisioning and interoperability of computer system services |
US6948032B2 (en) * | 2003-01-29 | 2005-09-20 | Sun Microsystems, Inc. | Method and apparatus for reducing the effects of hot spots in cache memories |
US7114150B2 (en) | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US7290254B2 (en) | 2003-03-25 | 2007-10-30 | Intel Corporation | Combining compilation and instruction set translation |
JP3955285B2 (ja) | 2003-03-27 | 2007-08-08 | 松下電器産業株式会社 | モータ駆動用インバータ制御装置および空気調和機 |
US6944722B2 (en) | 2003-04-14 | 2005-09-13 | Sun Microsystems, Inc. | Method and system for postmortem identification of falsely shared memory objects |
US6981128B2 (en) | 2003-04-24 | 2005-12-27 | International Business Machines Corporation | Atomic quad word storage in a simultaneous multithreaded system |
US7469407B2 (en) | 2003-04-24 | 2008-12-23 | International Business Machines Corporation | Method for resource balancing using dispatch flush in a simultaneous multithread processor |
US7424397B2 (en) * | 2003-05-09 | 2008-09-09 | Hewlett-Packard Development Company, L.P. | General purpose performance counter |
US7181723B2 (en) * | 2003-05-27 | 2007-02-20 | Intel Corporation | Methods and apparatus for stride profiling a software application |
US7194732B2 (en) | 2003-06-26 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | System and method for facilitating profiling an application |
US7415699B2 (en) | 2003-06-27 | 2008-08-19 | Hewlett-Packard Development Company, L.P. | Method and apparatus for controlling execution of a child process generated by a modified parent process |
US7594219B2 (en) | 2003-07-24 | 2009-09-22 | International Business Machines Corporation | Method and apparatus for monitoring compatibility of software combinations |
US6918606B2 (en) | 2003-08-11 | 2005-07-19 | Radio Flyer Inc. | Tricycle push handle arrangement |
US7395527B2 (en) * | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US20050071609A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically take an exception on specified instructions |
US7937691B2 (en) * | 2003-09-30 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for counting execution of specific instructions and accesses to specific data locations |
US7373637B2 (en) | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US20050071608A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for selectively counting instructions and data accesses |
US20050071816A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically count instruction execution for applications |
US20050071516A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically profile applications |
US20050071611A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for counting data accesses and instruction executions that exceed a threshold |
US20050071612A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations |
US20050071821A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically select instructions for selective counting |
US20050071610A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for debug support for individual instructions and memory locations |
TWI258078B (en) | 2003-10-07 | 2006-07-11 | Via Tech Inc | Pre-fetch controller and method thereof |
US7421681B2 (en) | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US7225309B2 (en) | 2003-10-09 | 2007-05-29 | International Business Machines Corporation | Method and system for autonomic performance improvements in an application via memory relocation |
US6925424B2 (en) | 2003-10-16 | 2005-08-02 | International Business Machines Corporation | Method, apparatus and computer program product for efficient per thread performance information |
US20050091456A1 (en) * | 2003-10-23 | 2005-04-28 | Huck Jerome C. | Determining an arrangement of data in a memory for cache efficiency |
US7458078B2 (en) | 2003-11-06 | 2008-11-25 | International Business Machines Corporation | Apparatus and method for autonomic hardware assisted thread stack tracking |
US7257657B2 (en) * | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
US7162594B2 (en) * | 2003-11-19 | 2007-01-09 | Buffalo Inc. | Memory module indicator device |
US20050155018A1 (en) | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values |
US7181599B2 (en) | 2004-01-14 | 2007-02-20 | International Business Machines Corporation | Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure |
US7290255B2 (en) | 2004-01-14 | 2007-10-30 | International Business Machines Corporation | Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US7197586B2 (en) | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
US7496908B2 (en) | 2004-01-14 | 2009-02-24 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
US7392370B2 (en) | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US7114036B2 (en) | 2004-01-14 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected |
US7093081B2 (en) | 2004-01-14 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for identifying false cache line sharing |
US7293164B2 (en) | 2004-01-14 | 2007-11-06 | International Business Machines Corporation | Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions |
US7526757B2 (en) | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7082486B2 (en) * | 2004-01-14 | 2006-07-25 | International Business Machines Corporation | Method and apparatus for counting interrupts by type |
US20050155022A1 (en) | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses to identify hot spots |
US8070009B2 (en) | 2004-01-23 | 2011-12-06 | Rmc Engineering Co., Inc. | Remotely activated tank hatch system |
US7987453B2 (en) | 2004-03-18 | 2011-07-26 | International Business Machines Corporation | Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data |
US7421684B2 (en) | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
US7296130B2 (en) | 2004-03-22 | 2007-11-13 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data |
US7299319B2 (en) | 2004-03-22 | 2007-11-20 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for code coverage |
US20050210450A1 (en) | 2004-03-22 | 2005-09-22 | Dimpsey Robert T | Method and appartus for hardware assistance for data access coverage |
US7526616B2 (en) | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
US7480899B2 (en) | 2004-03-22 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for code coverage |
US8135915B2 (en) | 2004-03-22 | 2012-03-13 | International Business Machines Corporation | Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator |
US7895473B2 (en) | 2004-04-29 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for identifying access states for variables |
US7937685B2 (en) | 2005-01-13 | 2011-05-03 | Hsbc Technology & Services (Usa) Inc. | Computer software implemented framework for configuration and release management of group systems software, and method for same |
US20080088609A1 (en) | 2006-10-16 | 2008-04-17 | King I Tech Corporation | Control system with a display interface for a fitness equipment meter |
JP5103127B2 (ja) | 2007-10-05 | 2012-12-19 | 株式会社日立製作所 | Rfidタグ |
US20090287729A1 (en) | 2008-05-16 | 2009-11-19 | Microsoft Corporation | Source code coverage testing |
US20090300587A1 (en) | 2008-05-27 | 2009-12-03 | Microsoft Corporation | Determining domain data coverage in testing database applications |
US20110105970A1 (en) | 2009-11-02 | 2011-05-05 | Gainer Jr James V | Anatomical support braces and methods |
-
2003
- 2003-09-30 US US10/675,777 patent/US7395527B2/en active Active
-
2004
- 2004-09-30 CN CN200410083369XA patent/CN1627270B/zh active Active
-
2008
- 2008-01-29 US US12/021,425 patent/US8689190B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251821B (zh) * | 2007-02-22 | 2012-01-25 | Arm有限公司 | 数据处理***中诊断功能的选择性禁用 |
CN101963907A (zh) * | 2010-10-14 | 2011-02-02 | 中国科学技术大学苏州研究院 | 一种计算机程序热点的动态剖析机制 |
CN108476042A (zh) * | 2015-12-23 | 2018-08-31 | 北欧半导体公司 | 可编程的无线电收发器 |
CN108476042B (zh) * | 2015-12-23 | 2021-12-14 | 北欧半导体公司 | 可编程的无线电收发器 |
WO2022198552A1 (en) * | 2021-03-25 | 2022-09-29 | Intel Corporation | Hardware assisted memory access tracking |
Also Published As
Publication number | Publication date |
---|---|
CN1627270B (zh) | 2010-05-26 |
US20080141005A1 (en) | 2008-06-12 |
US20050071515A1 (en) | 2005-03-31 |
US8689190B2 (en) | 2014-04-01 |
US7395527B2 (en) | 2008-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100351810C (zh) | 对特定指令类型的指令执行和数据访问计数的方法和*** | |
CN1627270A (zh) | 用于对指令执行和数据访问进行计数的方法和设备 | |
CN1604049A (zh) | 用于自主剖析应用程序的方法和设备 | |
CN1332321C (zh) | 页表中维护性能监测结构用于监测程序性能的方法和设备 | |
CN1277207C (zh) | 使用基于时间的断点调试计算机程序的方法和*** | |
CN1648865A (zh) | 为记录事件提供前置与后置处理程序的方法与装置 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1613058A (zh) | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 | |
CN1127016C (zh) | 计算机处理装置和方法 | |
US20080235495A1 (en) | Method and Apparatus for Counting Instruction and Memory Location Ranges | |
CN101957773A (zh) | 用于多轮次动态概要分析的方法及其*** | |
CN1949187A (zh) | 一种程序调测***及方法 | |
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1886728A (zh) | 非法代码执行的防止方法、非法代码执行的防止用程序以及非法代码执行的防止用程序的记录媒体 | |
CN1315062C (zh) | 处理器装置、使用它的信息处理装置、编译装置及其方法 | |
CN1604044A (zh) | 用于指令和数据访问的选择性计数的方法和装置 | |
CN101067798A (zh) | 一种动态探针方法及其在嵌入式***中的应用 | |
US7937691B2 (en) | Method and apparatus for counting execution of specific instructions and accesses to specific data locations | |
CN1278226C (zh) | 模拟装置、模拟方法 | |
US20050071821A1 (en) | Method and apparatus to autonomically select instructions for selective counting | |
CN1761949A (zh) | 垃圾收集*** | |
CN1508690A (zh) | 使能跟踪重复指令的方法和*** | |
CN1138172A (zh) | 高速实现子程序返回的处理器及产生能高速从子程序返回的机器语言程序的程序翻译装置 | |
CN1016383B (zh) | 基于操作数长度和对位的微码转移 | |
US20050071611A1 (en) | Method and apparatus for counting data accesses and instruction executions that exceed a threshold |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |