CN1648865A - 为记录事件提供前置与后置处理程序的方法与装置 - Google Patents
为记录事件提供前置与后置处理程序的方法与装置 Download PDFInfo
- Publication number
- CN1648865A CN1648865A CN200510004632.6A CN200510004632A CN1648865A CN 1648865 A CN1648865 A CN 1648865A CN 200510004632 A CN200510004632 A CN 200510004632A CN 1648865 A CN1648865 A CN 1648865A
- Authority
- CN
- China
- Prior art keywords
- post processing
- routine
- program routine
- processing program
- interrupt
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
Abstract
一种方法、装置与计算机指令,用来提供前置与后置处理程序,以在进入中断处理程序之前或者退出中断处理程序之后记录轨迹记录。轨迹记录包含其中发生中断或其中执行分支指令的“来源”地址、或分支去向的“目的”地址,及选定性能监视事件的情况和计数。时间戳可与每个事件相关联。在一种实施方式中,利用分支时陷阱来使用前置与后置处理程序,以在进行分支之前以及紧跟其之后记录轨迹记录。在另一实施方式中,使能前置处理程序,以记录在执行中断服务例程之前发生的轨迹记录。使能后置处理程序,以记录在执行中断服务例程之后并且在返回正常执行之前发生的轨迹记录。用户可以在以后收集所得的低级性能轨迹数据以进行更加结构化的性能分析。
Description
技术领域
一般地,本发明涉及一种改进的数据处理系统,具体地讲,涉及一种在数据处理系统中当发生中断时监视处理器性能的方法与系统。更具体地讲,本发明涉及一种方法、装置与计算机指令,用来为记录事件提供前置处理程序(handler)与后置处理程序。
背景技术
典型的数据处理系统利用处理器来执行一组指令以执行特定任务,例如从主存储器中读取特定字符。然而,随着需要处理器执行的任务数目的增加,对于希望优化系统的工程师来说,处理器对存储器的访问模式的效率以及此类访问的特性成为重要因素。
当前,现有技术包含可以计数数据处理系统内软件可选事件(例如高速缓存丢失、所执行的指令、I/O数据传送请求)的发生次数,以及执行给定进程所需要的时间的机制。一种此类机制为性能监视器。性能监视器进行对选定特性的监视,从而通过确定特定时间的机器状态而有助于系统分析。该分析提供以下信息:当执行指令时如何使用处理器,以及当存储数据时处理器与主存储器的交互作用。该分析还用来确定应用代码是否改变,例如分支指令与存储器访问的重定位,从而(如果需要的话)进一步优化系统性能。另外,性能监视器可以提供处理系统中事件之间所经过的时间量。性能监视器提供工程师可以用来分析系统性能的事件计数。另外,性能监视器可以收集有关处理器如何访问数据处理系统的一级与二级高速缓存、以及主存储器,以发现特定于硬件或软件环境的性能瓶颈。
除之外上述性能监视器之外,中断处理单元还可以用来记录事件,例如指令执行、分支事件、或者当中断发生时的系统事件等等。当诸如鼠标或者键盘等设备发起中断信号时,发出中断信号,以通知处理器发生了事件。当处理器接受中断请求时,处理器完成其当前指令,并且将控制传送给中断处理程序。中断处理程序执行与该中断相关联的中断服务例程。中断也可能由特定机器语言操作代码引起,例如摩托罗拉公司的产品——68000的TRAP。在这种情况下,诸如除以零等未预料软件条件使处理器存储当前状态,存储有关特定中断的标识信息,并且将控制传送给处理该未预料软件条件的中断处理程序。
然而,以上的性能监视器必须在运行时修改应用程序,以记录精确的性能轨迹数据,例如在中断处理期间执行的指令数目。因此,以下是有益的:具有一种改进的方法、装置、以及计算机指令,用来针对在进入之前以及紧接退出中断处理程序之后发生的事件提供前置与后置处理程序,以记录精确的性能数据,而不用修改底层的应用程序。
发明内容
本发明提供了一种方法、装置与计算机指令,用来提供前置与后置处理程序,以在中断发生时记录事件。前置与后置处理程序允许和与待记录的性能监视事件相关联的时间戳一道记录轨迹记录,以向用户提供更加细致的性能数据。
在优选实施方式中,本发明的机制提供了前置与后置处理程序,以记录当执行分支指令时性能监视事件的发生次数。利用“分支时陷阱”(即当执行分支指令时被处理的陷阱或中断)来使用前置序与后置处理程序,以产生指令轨迹,该轨迹包含从那里得到分支的“来源”地址,并且可能包含该分支分支去向的“目的”地址。应该理解:可以各种方式压缩信息以最小化待记录的信息量。前置与后置处理程序记录在进行分支之前以及紧跟其后发生的性能监视事件。
在替换实施方式中,当中断发生时,在处理器从中断处理程序获取指令之前,本发明的机制允许前置处理程序在进入中断处理程序之前记录轨迹记录。所记录的事件提供了当进入中断处理程序时的系统状态。
当中断处理程序完成中断服务例程时,本发明的机制允许后置处理程序在返回正常执行之前记录事件以及低级信息,例如为中断所执行的指令数目。该低级信息可以提供当退出中断时的系统状态。
在以下对优选实施方式的详细描述中,将讨论这些以及其他特征与优点,并且本领域技术人员应该理解这些以及其他特征与优点。
附图说明
在所附的权利要求中列出了本发明特有的新颖特征。然而,参照附图及以下对说明性实施方式的详细描述将更好地理解本发明自身、优选使用模式及其进一步的目的与优点,其中:
图1为可以实现本发明的数据处理系统的示范性方框图;
图2为根据本发明优选实施方式的用于处理信息的处理器系统的示范性方框图;
图3为显示根据本发明优选实施方式的、使用前置与后置处理程序记录中断的事件的组件的示范性图示;
图4为显示根据本发明优选实施方式的、中断描述表(IDT)示例的示范性图示;
图5为概括显示根据本发明优选实施方式的、利用前置与后置处理程序记录中断的事件的示范性过程的流程图;以及
图6为概括显示根据本发明优选实施方式的、当执行分支指令时、通过使用前置与后置处理程序利用分支时陷阱来记录轨迹记录的示范性过程的流程图。
具体实施方式
本发明的机制提供了前置与后置处理程序来记录轨迹记录,包含其中发生中断或者其中执行分支指令的“来源”地址。在进入中断处理程序之前或者在退出中断处理程序之后、或者进行分支之前或者退出分支之后,前置与后置处理程序记录事件,例如性能监视事件。通过记录这些轨迹记录,工程师们能够及时发现特定时刻性能监视事件的值。这些记录有助于工程师们将系统中当处理中断时或者进行分支时发生的事件与在系统正常执行期间发生的事件分离开来。
本发明可以在计算机系统中实现。该计算机系统可以是独立的计算设备,通过网络互连的客户端-服务器环境下的客户端或者服务器计算设备等等。图1提供了可以实现本发明的各方面的计算设备的示范性图示。图1只是示范性的,而所示例子没有暗示或者指出对其上可以实现本发明的计算设备的结构或者组织的限制。
现在参照图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公司的商标。操作系统、面向对象的编程系统以及应用程序或者程序的指令位于存储设备上,例如硬盘驱动器126上,并且可以加载到主存储器104内,以由处理器102执行。
本领域技术人员应该理解:图1中的硬件可根据实现而变化。除图1所示硬件之外,或者替代这些硬件地,可以使用其他内部硬件或外围设备,例如闪存只读存储器(ROM)、等效的非易失存储器、或者光盘驱动器等等。另外,本发明的处理可以应用到多处理器数据处理系统。
例如,客户端100如果可选地配置为网络计算机,则可不包含SCSI主机总线适配器112、硬盘驱动器126、磁带驱动器128、以及CD-ROM 130。在这种情况下,该计算机,正确地应该称为客户端计算机,包含某种类型的网络通信接口,例如LAN适配器110、调制解调器122等等。作为另一例子,客户端100可以是独立的系统,其被配置为可引导的,而不依赖于某种类型的网络通信接口,而不管客户端100是否包含某种类型的网络通信接口。作为另一例子,客户端100可以是个人数字助理(PDA),其配备有ROM和/或闪存ROM,以提供非易失存储器,用来存储操作系统文件和/或用户生成的数据。图1中所示的例子以及上述例子并不是用来暗指对体系结构的限制。
本发明的处理由处理器102使用计算机实现的指令来执行,这些指令可位于存储器中,例如主存储器104、存储器124,或者位于一或多个外围设备126-130中。
转到图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的执行电路还包含多个执行单元,即分支单元220、定点单元A(“FXUA”)222、定点单元B(“FXUB”)224、复杂定点单元(“CFXU”)226、加载/存储单元(“LSU”)228、以及浮点单元(“FPU”)230。FXUA 222、FXUB 224、CFXU 226、以及LSU 228从通用体系寄存器(“GPR”)232以及定点重命名缓冲器234输入其源操作数信息。另外,FXUA 222与FXUB 224从进位位(“CA”)寄存器239输入“进位位”。FXUA 222、FXUB 224、CFXU 226、以及LSU 228输出其运行结果(目的操作数信息),以在定点重命名缓冲器234中的选定项处存储。另外,CFXU 226从/向专用寄存器处理单元(“SPR单元”)237输入与输出源操作数信息与目的操作数信息。
FPU 230从浮点体系寄存器(“FPR”)236与浮点重命名缓冲器238输入其源操作数信息。FPU 230输出其运行结果(目的操作数信息),以在浮点重命名缓冲器238中的选定项处存储。
响应于加载指令,LSU 228从数据高速缓存216输入信息,并且将该信息拷贝到重命名缓冲器234与238中的选定项。如果该信息未存储在数据高速缓存216中,则数据高速缓存216从连接到系统总线211的系统存储器260输入该信息(通过BIU 212与系统总线211)。另外,数据高速缓存216能够从数据高速缓存216输出信息到连接到系统总线211的系统存储器260(通过BIU 212与系统总线211)。响应于存储指令,LSU 228从GPR 232与FPR236的选定项输入信息,并且将该信息拷贝到数据高速缓存216。
排序单元218从/向GPR 232与FPR 236输入与输出信息。从排序单元218,分支单元220输入指示处理器210当前状态的指令与信号。响应于这些指令与信号,分支单元220(向排序单元218)输出指示存储由处理器210执行的指令序列的适当存储器地址的信号。响应于来自分支单元220的这些信号,排序单元218从指令高速缓存214输入所指示的指令序列。如果一或多个指令序列未存储在指令高速缓存214中,则指令高速缓存214从连接到系统总线211的系统存储器260输入这些指令(通过BIU 212与系统总线211)。
响应于从指令高速缓存214输入的指令,排序单元218选择性地分发指令到选定的执行单元220、222、224、226、228、以及230。每个执行单元执行特定指令类别的一或多条指令。例如,FXUA 222与FXUB 224对源操作数执行第一类别的定点数学运算,例如加法、减法、与、或、以及异或。CFXU226对源操作数执行第二类别的定点运算,例如定点乘法与除法。FPU 230对源操作数执行浮点运算,例如浮点乘法与除法。
当信息存储在重命名缓冲器234的选定项时,该信息与为其分配选定的重命名缓冲器的指令所指定的存储位置相关联(例如GPR 232中的一个或者进位位(CA)寄存器242)。响应于来自排序单元218的信号,在重命名缓冲器234的选定项处存储的信息被拷贝到GPR 232中其相关联的一个(或者CA寄存器242)。响应于“完成”生成该信息的指令,排序单元218指挥对在重命名缓冲器234选定项处存储的信息的所述拷贝。该拷贝称为“写回”。
当信息存储在重命名缓冲器238的选定项时,该信息与FPR 236中的一个相关联。响应于来自排序单元218的信号,在重命名缓冲器238的选定项处存储的信息被拷贝到FPR 236中其相关联的一个。响应于“完成”生成该信息的指令,排序单元218指挥对在重命名缓冲器238选定项处存储的信息的所述拷贝。
通过在各个执行单元220、222、224、226、228、以及230处同时处理多条指令,处理器210达到高性能。相应地,每条指令被当作一系列阶段处理,每个阶段都可与其他指令的阶段并行执行。这种技术称为“流水线”。根据所示实施方式的一个重要方面,指令一般被处理为六个阶段,即获取、解码、分发、执行、完成、以及写回。
在获取阶段,排序单元218(从指令高速缓存214)选择性地输入来自一或多个存储器地址的一或多条指令,所述存储器地址存储了上面结合分支单元220与排序单元218进一步讨论的指令序列。
在解码阶段,排序单元218解码多达四条所获取的指令。
在分发阶段,在为所分发的指令的结果(目的操作数信息)保留了重命名缓冲器项之后,排序单元218(响应于解码阶段的解码)选择性地分发多达四条已解码的指令到选定的执行单元220、222、224、226、228、以及230中的几个。在分发阶段,操作数信息被提供给对于所分发的指令的选定执行单元。处理器210按其编程序列分发指令。
在执行阶段,执行单元执行其所分发的指令,并且输出其运行结果(目的操作数信息),以在重命名缓冲器234与重命名缓冲器238中选定项处存储,如上所述。通过这种方式,处理器210能够相对于其编程序列乱序地执行指令。
在完成阶段,排序单元218指示指令为“完成”。处理器210按其编程序列“完成”指令。
在写回阶段,排序单元218指挥从重命名缓冲器234与238分别拷贝信息到GRP 232与FPR 236。排序单元218指挥对在选定的重命名缓冲器处存储的信息的所述拷贝。类似地,在特定指令的写回阶段,响应于特定指令,处理器210更新其体系状态。处理器210按其编程序列处理指令的各个“写回”阶段。优选地,在指定情况下,处理器210合并指令的完成阶段与写回阶段。
在所示实施方式中,每条指令都要求一个机器周期来完成指令处理的每个阶段。然而,某些指令(例如由CFXU 226执行的复杂定点指令)可能要求多于一个周期。因此,响应于完成先前指令所需的时间的变化,在特定指令的执行与完成阶段之间可能发生可变延迟。
在排序单元218内配备有完成缓冲器248,用来跟踪在执行单元内执行的多条指令的完成情况。当指示已经成功地完成一条指令或一组指令时,按照应用程序所指定的先后顺序,完成缓冲器248可用来启动传送这些已完成指令的结果到相关联的通用寄存器。
另外,处理器210还包含性能监视单元240,该单元连接到指令高速缓存214以及处理器210中的其他单元。利用性能监视单元240,可以监视处理器210的运行,在所示实施方式中,性能监视单元240为软件可访问机制,其能够提供描述指令执行资源的利用情况与存储控制的详细信息。虽然在图2中未显示,但是性能监视单元240耦合至处理器210的每个功能单元,以允许监视处理器210运行的所有方面,包含(例如)重建事件之间的关系、标识错误触发、标识性能瓶颈、监视流水线停滞、监视空闲处理器周期、确定分发效率、确定分支效率、确定未对准数据访问的性能损失、标识串行化指令执行的频率、标识被禁止的中断、以及确定性能效率。感兴趣的事件还包括(例如)指令解码的时间、指令的执行、分支事件、高速缓存丢失、以及高速缓存命中。
性能监视单元240包含依赖于实现的数目(例如2-8)的计数器214-242,标记为PMC1与PMC2,其用来计数选定事件的发生次数。性能监视单元240还包含至少一个监视器模式控制寄存器(MMCR)。在该例子中,存在两个控制寄存器,MMCR 243与244,其指定计数器241-242的功能。优选地,计数器241-242与MMCR 243-244实现为可以借助由CFXU 226执行的MFSPR(从SPR移动)与MTSPR(向SPR移动)进行读或写访问的SPR。然而,在一替换实施方式中,计数器241-242与MMCR 243-244简单地可以实现为I/O空间中的地址。在另一替换实施方式中,控制寄存器与计数器可以借助索引寄存器间接地访问。该实施方式实现于英特尔公司的处理器中的IA-64体系结构中。
另外,处理器210还包括中断单元250,其连接到指令高速缓存214。另外,尽管在图2中未显示,但是中断单元250连接到处理器210内其他功能单元。中断单元250可以接收来自其他功能单元的信号,并且启动动作,例如开始错误处理或者陷阱过程。在这些例子中,中断单元250用来生成可能在程序执行过程中发生的例外和中断。
本发明提供了一种方法、装置、以及计算机指令,用来提供记录事件的前置与后置处理程序。前置与后置处理程序可以进行不同的操作以获得不同的计算机程序执行度量信息,以供性能分析工具在提供对执行期间的计算机程序性能的分析时使用。前置处理程序被打算用来在执行中断处理例程之前获得有关计算机程序执行度量的信息。后置处理程序被打算用来获得有关在处理中断期间(即在执行中断处理例程期间)发生了什么的信息。
陷阱,即当发生了特定条件时(例如当生成了特定中断或例外时等等)执行的一段代码,此处也被称为陷阱或者中断服务例程。
根据本发明,作为处理该陷阱的一部分,在调用陷阱或者中断处理例程之前,本发明的处理器调用前置处理程序。即,当陷阱指令生成中断或者试图将控制传送给陷阱处理例程时,处理器重定向该调用至前置处理程序,该前置处理程序可能累积或者获得来自与计算机程序相关联的性能监视机制的性能监视度量信息。然后存储该信息以标识在执行陷阱或者中断处理程序之前的计算机程序的执行状态。
类似地,当发生陷阱并且已经执行了陷阱或中断处理例程时,可以在执行陷阱或者中断处理例程之后执行后置处理程序,以获得有关在执行陷阱或者中断处理例程期间发生了什么的信息。例如,后置处理程序可以增加在中断处理程序自身中发生的指令或者高速缓存丢失的数目,以累积可以输出到性能分析工具的总值,以在对计算机程序的性能分析中使用。为了进行不同的操作,前置与后置处理程序通过利用发生的事件的值以及与这些事件相关联的时间戳,处理性能监视度量信息(此后称为“性能信息”)。
另外,前置与后置处理程序可以记录轨迹记录。轨迹记录可以包含其中事件发生的指令的“来源”地址以及对选定事件的计数,以及标识何时写入轨迹记录的时间戳。所记录的事件可以包括在进入中断服务例程之前以及在退出中断服务例程之后发生的性能监视事件。前置与后置处理程序是记录轨迹记录或者有关机器状态的进程信息的指令例程。轨迹记录还可以包括从性能监视计数器中读取的信息,例如图2中的计数器241-242,以及与每个事件相关联的时间戳。性能监视事件的例子有所执行的指令的数目、高速缓存丢失的数目、表后援(lookaside)缓冲器(TLB)丢失的数目等等。
前置与后置处理程序通过在执行处理程序之前记录性能监视计数器的值并且紧接执行处理程序之后记录记录性能监视计数器的值,累积在执行中断服务例程、或者陷阱/中断处理例程之前与在其期间发生的事件的轨迹记录。当执行前置与后置处理程序时性能监视器可以被编程来停止计数事件。
本发明的前置与后置处理程序可以被使能或者禁止。作为结果,通过确定使能或者禁止哪些前置与后置处理程序,可以获得定制的性能监视信息。通过这种方式,用户可以获得对于该用户来说是重要问题的特别有关的性能信息。这允许有关什么性能监视信息由前置与后置处理程序编辑和分析的很大的灵活性。
另外,也可以通过“分支时陷阱”指令使用前置与后置处理程序例程,以产生轨迹记录。如上提及的,陷阱为程序中专用的一段代码,其基于运行程序时的特定条件而发生。
“分支时陷阱”,或者称为“分支陷阱”,是如果进行分支则发生的陷阱。如果进行分支,则分支时陷阱处理程序接收控制。
在本发明的优选实施方式中,选择正在被监视的计算机程序中的一或多个分支来进行监视。当选择进行监视的这些分支指令中的一个被执行时,即当进行分支时,处理器发送信号给中断单元。与从正常的陷阱处理例程中获取指令不同,如果使能了前置处理程序,则中断单元通知处理器从前置处理程序中获取指令,以在执行陷阱处理例程与进行分支之前记录轨迹记录。
轨迹记录可以包含“来源”存储器地址,该地址为当进行分支时的分支指令的存储器地址。另外,轨迹记录还可以包含“目的”存储器地址,该地址为分支去向的存储器地址。可以从性能监视设备与数据结构(例如计数器241-242)获得的性能监视信息可以与这些地址相关联。可以获得并且与“目的”和/或“来源”地址相关联的性能监视信息的例子为性能监视事件的选定计数,例如已经发生的高速缓存丢失的数目。
在执行前置处理程序例程之后,执行正常的陷阱服务例程,或者陷阱处理器程序例程。后置处理程序例程也可以与位于程序内的陷阱相关联。在正常的陷阱服务例程执行完成之后并且试图将对计算机程序的控制返回给计算机程序的正常代码时,调用该后置处理程序例程。在完成正常的陷阱服务例程时,并且在返回正常执行之前,处理器发送信号给中断单元,指示完成了正常的陷阱服务例程。作为结果,如果使能了后置处理程序,则中断单元通知处理器从后置处理程序中获取指令,以在进行分支之后记录轨迹记录。由此,前置与后置处理程序允许用户记录在执行陷阱/中断处理例程之前与紧跟其之后的低级性能数据。该功能的一种优选的应用为以上讨论的“分支时陷阱”情况。
正常地,当中断发生时,例如当在程序执行期间发生页面错误时,处理器停止当前执行,并且开始从中断处理程序的进入点地址获取指令。中断处理程序包含由处理器获取以处理中断的中断服务例程。在中断描述符表(IDT)中存储进入点的地址,中断描述符表为系统表,其将每个中断与包含相应中断服务例程的相应中断处理程序相关联。
然而,在本发明的一种示范实施方式中,响应于使中断被生成的中断事件的出现,本发明的中断单元从与元数据相关联的处理器接收中断信号。该元数据可以包含处理程序标志,例如标识以下中断处理程序之一的非零值:正常中断处理程序、前置处理程序、或者后置处理程序。
如果在元数据中设置了前置处理程序标志,则不同于上述从正常中断处理程序获取指令,中断单元通知处理器在特定时刻从前置处理程序例程中获取指令,该前置处理程序例程在执行“正常”中断处理程序之前记录轨迹数据。在本说明书中使用的术语——“正常”中断处理程序,指如果未设置前置和/或后置标志,则根据所生成的中断执行的中断处理例程。
由前置处理程序例程生成的轨迹数据可以包含其中发生中断的指令的“目的”和/或“来源”地址以及选定的性能监视信息。在轨迹记录中也可以包含时间戳。
一旦执行了前置处理程序例程,则前置处理程序通知处理器从正常中断处理程序中获取指令。当正常中断处理程序执行完成时,如果设置了后置处理程序标志,则本发明的中断单元在正常中断处理程序之后的特定时刻通知处理器从后置处理程序中获取指令,以记录中断轨迹数据。
通过这种方式,前置与后置处理程序允许记录特定时刻处特定陷阱或者中断所特有的轨迹数据,而不用修改任何操作系统例程。通过利用前置与后置处理程序,可以在执行正常陷阱或者中断处理例程之前(例如响应于进行分支)或者紧跟执行正常陷阱或者中断处理例程之后记录轨迹记录。根据由前置与后置处理程序生成的信息,可以获得以下情况:在计算机程序执行时,在执行分支指令时到进行分支时之间、以及在进行分支之后到返回正常执行之间发生了什么。
另外,在正常陷阱或者中断处理例程的入口与出口,可以记录性能轨迹数据,以标识在特定中断发生时到开始陷阱或者中断处理例程时之间发生的变化。另外,也可以标识在结束陷阱或者中断处理例程时到中断返回之间发生的变化。该信息为工程师们提供了一种工具,用来将在系统正常执行期间发生的事件与当系统被中断或者进行分支时发生的事件相分离。
在另一优选实施方式中,可以实现前置与后置处理程序例程来执行其他功能,例如处理由性能监视单元用来计数事件的计数的上溢。性能监视单元可以实现为图2中的性能监视单元240。该计数可以存储在IDT中或者在IDT之外的专用存储位置中。因为在计数事件期间可能发生上溢,所以前置与后置处理程序例程可以定期查找计数值以检查上溢。在一种实施方式中,如果计数值将要回绕(wrap),则前置与后置处理程序例程可以向处理器发信号表示将要发生上溢。在另一实施方式中,前置与后置处理程序可以包含处理上溢的例程,例如通过读取并重置计数值。
接着转到图3,根据本发明优选实施方式显示了说明用来使用前置与后置处理程序记录中断的事件的组件的示范性示图。在该示例实现中,中央处理单元(CPU)302可以实现为图2中的处理器210。在优选实施方式中,当执行分支指令时,由应用程序执行陷阱。该陷阱通知CPU 302生成并发送信号给中断单元304,以指示发生了例外,即指执行了分支指令。中断单元304通知CPU 302从前置处理程序中获取指令,以在进行分支之前记录轨迹数据。在进行分支之前,前置处理程序例程记录轨迹数据,该数据可以包含其中执行分支指令的“来源”地址,分支去向的“目的”地址,以及性能信息,例如发生的选定性能事件的计数值。
在执行陷阱处理例程之后,向中断单元304返回完成陷阱处理例程的指示。然后,中断单元304通知CPU 302从后置处理程序中获取指令,以在返回正常执行之前记录轨迹数据。
在替换实施方式中,当发生中断时,例如当在程序执行期间发生高速缓存丢失时,CPU 302发送带有标识中断类型的相关元数据的信号给中断单元304,该元数据用来标识将要执行以处理中断的特定中断处理例程。然后,中断单元304可以标识IDT中的地址,并且通知处理器根据在元数据中指示的中断类型在IDT中的标识地址处从中断处理例程获取指令。这可能涉及下述的从与由元数据标识的处理程序关联地存储的前置和/或后置处理程序的地址中获取指令。
接着转到图4,根据本发明的优选实施方式显示了说明中断描述表(IDT)示例的示范性示图。在该示例实现中,中断描述符表(IDT)402包含存储器地址404、中断类型406、前置处理程序地址408、以及后置处理程序地址410。在IDT 402中表示的中断类型406只是用于说明目的。
在个例子中,当发生中断时,例如虚拟散列页面表(VHPH)数据错误中断(其为与虚拟散列页面表相关联的中断),处理器发送标识发生该中断的信号给中断单元,例如图3中的中断单元304。中断单元检查与信号相关联的元数据400,以确定是否使能了前置或者后置处理程序以处理所标识的中断。在该例子中,元数据为01,这意味着使能了前置处理程序。如果元数据为00,则使能了正常中断处理程序;如果元数据为10,则使能了后置处理程序。如果元数据为11,则使能了前置处理程序与后置处理程序两者。
对于元数据被设置为01、00、10还是11,可以根据(例如)与用来监视计算机程序执行的性能监视应用程序相关联的数据结构来判定。即,用户可以通过至性能监视应用程序的用户输入,为特定类型的事件或者为特定轨迹设置使能前置处理程序、使能后置处理程序、使能两者、或者都不使能。该信息可以存储在与性能监视应用程序相关联的数据结构中,其可以被访问来设置与处理器相关联的寄存器以指示使能前置处理程序、使能后置处理程序、使能两者、或者都不使能。
可替换地,该信息可以在每次生成陷阱或中断时由处理器或者中断单元访问的数据结构中进行维护,以确定该特定陷阱或中断与前置处理程序、后置处理程序、两者相关联、或者都不相关联。该数据结构可以是(例如)IDT、阴影(shadow)IDT数据结构、或者其他数据结构。在另一实施方式中,可以使用寄存器来指示前置处理程序的地址以及用于后置处理程序的不同的寄存器。零值意味着没有前置或后置处理程序,而非零值指示前置或后置处理程序的地址。该方法允许用于所有陷阱的一个前置处理程序与一个后置处理程序。[请注意:这很可能是优选实施方式,一定要在权利要求中出现。]
如果使能了前置处理程序,则中断单元从与中断类型(其在从处理器的接收的信号中指示)相关联的IDT 402的前置处理程序地址字段408中找到前置处理程序地址408,在该例子中为0x4000 412,并且执行从存储器地址0x4000 424开始的相应的前置处理程序例程422以记录事件。
一旦执行了前置处理程序例程422,中断单元就从IDT 402的存储器地址字段404中找到VHPT数据错误中断服务例程的开始存储器地址404,在该例子中为0x0000 426,并且通知处理器执行中断处理程序的正常中断服务例程。一旦完成了正常中断服务例程,处理器就发送信号给图3中的中断单元304。中断单元304检查与由处理器响应于发生中断而发送的信号相关联的元数据400,以确定是否也使能了后置处理程序。
如果使能了后置处理程序,则中断单元304从IDT 402的后置处理程序地址字段410中找到后置处理程序开始地址410,在该例子中为0x5000 442。然后中断单元通知处理器执行从存储器地址0x5000 442开始的、相应的后置处理程序例程440以记录事件。一旦执行了后置处理程序例程440,中断单元就通知处理器返回引起中断的计算机程序的原来的指令。
接着转到图5,根据本发明的优选实施方式显示了从中断单元的角度概括了利用前置与后置处理程序来记录中断的事件的示范性过程的流程图。当响应于执行陷阱指令或者生成的中断、处理器发送带有相关元数据的信号给中断单元时,开始该处理(步骤502)。接着,通过检查在元数据中设置的标志,根据与该信号相关联的元数据,判定是否使能了前置处理程序(步骤504)。如果未使能前置处理程序,则中断单元在IDT中(例如图4中的IDT 402)找到相应于中断类型(例如图4中的中断类型406)的、正常中断处理例程的存储器地址(例如图4中的存储器地址404)(步骤510),并且通知处理器执行该中断处理例程(步骤512)。
如果使能了前置处理程序,则中断单元找到前置处理程序例程的开始地址(步骤506),并且通知处理器执行该前置处理程序例程(步骤508)以记录事件。然后,中断单元通知处理器IDT中相应于中断类型的中断处理例程的存储器地址(步骤510),以执行该中断处理例程(步骤512)。
一旦处理器执行了中断处理例程,中断单元就在IDT中找到相应于中断类型或者IDT项的后置处理程序地址(步骤514)。根据元数据判定是否使能了后置处理程序(步骤516)。如果未使能后置处理程序,则中断单元通知处理器返回原来的执行(步骤522)。此后该处理终止。
如果使能了后置处理程序,则中断单元找到后置处理程序例程开始地址(步骤518)。然后,中断单元通知处理器在返回原来的执行(步骤522)之前执行该后置处理程序例程(步骤520)以记录事件。此后该处理终止。
接着转到图6,根据本发明的优选实施方式显示了从中断单元的角度概括当执行分支指令时利用分支时陷阱通过使用前置与后置处理程序来记录轨迹记录的示范性过程的流程图。当响应于正在执行的分支指令、处理器发送信号给中断单元以指示执行分支指令时,开始该处理(步骤602)。然后中断单元,例如图3中的中断单元304,通知处理器执行来自前置处理程序例程的指令(步骤604)。接着,执行分支指令以进行分支(步骤606)。随后,中断单元通知处理器在返回正常执行(步骤612)之前执行来自后置处理程序的指令以记录轨迹数据(步骤610),此后该过程终止。
由此,本发明提供了一种不用通过在运行时修改应用程序和/或系统代码来记录性能数据的解决方案。提供了前置与后置处理程序来以各种方式处理性能信息。一个例子是通过累积所发生的事件值以供性能分析工具使用。另外,当执行分支指令时,前置与后置处理程序可以利用“分支时陷阱”条件来记录轨迹数据。前置与后置处理程序还可以用来对于在进入中断处理程序之前与紧跟退出中断处理程序之后发生的事件记录精确的性能数据。所记录的值为工程师们提供了一种工具,用来将在系统正常执行期间发生的事件与当系统被中断时发生的事件相分离,以更好地优化系统。
应该注意:虽然已经针对全功能数据处理系统的情况描述了本发明,但是本领域技术人员应该理解本发明的过程能够以指令的计算机可读介质的形式以及各种形式进行分布,并且不管实际用来进行该分布的信号承载介质的特定类型为何,同样适用本发明。计算机可读介质的例子包括可记录类型介质,例如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM以及传送类型介质,例如数字与模拟通信链路,使用诸如射频与光波传送等传送形式的有线或无线通信链路。计算机可读介质可以采用编码格式的形式,所述编码格式在特定数据处理系统中实际使用时被解码。
对本发明的描述出于展示与描述目的,而不是穷尽的或者限于所公开形式的本发明。对于本领域技术人员,显然存在许多修改与变化。选择与描述的实施方式以便最好地解释本发明的原理与实际应用,并且使本领域技术人员理解本发明具有适合于所设想的实际应用的各种修改的各种实施方式。
Claims (53)
1.一种在数据处理系统中处理性能信息的方法,包含以下步骤:
在该数据处理系统的处理器的中断单元处接收中断信号;
确定是否为中断使能了前置处理程序例程与后置处理程序例程中的至少一个;
如果使能了前置例程,则启动前置处理程序例程以在第一时刻记录事件;
启动中断处理程序例程;以及
如果使能了后置处理程序例程,则启动后置处理程序例程以在第二时刻记录事件。
2.如权利要求1所述的方法,其中记录事件包括记录多个计数。
3.如权利要求1所述的方法,其中记录事件包括记录时间戳。
4.如权利要求2所述的方法,其中所述计数表示事件的发生次数。
5.如权利要求4所述的方法,其中从包含高速缓存丢失与所执行的指令数目的组中选择事件。
6.如权利要求1所述的方法,其中第一与第二时刻分别与第一与第二时间戳相关联。
7.如权利要求1所述的方法,还包括多个前置处理程序例程与多个后置处理程序例程,其中每个前置处理程序例程与每个后置处理程序例程在发生中断时记录不同的事件。
8.如权利要求1所述的方法,其中记录事件包括累积计数总值。
9.如权利要求8所述的方法,其中通过相加所记录的事件计数来累积所述计数总值。
10.如权利要求8所述的方法,其中在性能分析工具中显示所述计数总值。
11.如权利要求2所述的方法,其中当启动前置或后置处理程序例程时,不更新所述计数。
12.一种在数据处理系统中执行指令的方法,包含以下步骤:
在该数据处理系统的处理器的中断单元处接收中断信号;
确定是否为中断使能了前置处理程序例程与后置处理程序例程中的至少一个;
如果使能了前置例程,则启动前置处理程序例程以在第一时刻记录轨迹记录;
启动中断处理程序例程;以及
如果使能了后置处理程序例程,则启动后置处理程序例程以在第二时刻记录轨迹记录。
13.如权利要求12所述的方法,其中轨迹记录包括指示哪里发生中断的指令的来源地址。
14.如权利要求12所述的方法,其中轨迹记录包括多个计数。
15.如权利要求14所述的方法,其中所述计数表示事件的发生次数。
16.如权利要求15所述的方法,其中从包含高速缓存丢失与时钟周期的组中选择事件。
17.如权利要求12所述的方法,其中轨迹记录包括时间戳。
18.如权利要求12所述的方法,还包括多个前置处理程序例程与多个后置处理程序例程,其中每个前置处理程序例程与每个后置处理程序例程在发生中断时记录不同的事件。
19.如权利要求12所述的方法,其中第一和第二时刻分别与第一和第二时间戳相关联。
20.如权利要求12所述的方法,其中前置处理程序例程或后置处理程序例程监视所记录的事件的计数,以确定是否发生了上溢。
21.如权利要求20所述的方法,其中前置处理程序例程或后置处理程序例程通过读取并重置所述计数来处理上溢。
22.一种数据处理系统,包括:
中断单元,用来接收中断信号;
前置处理程序例程与后置处理程序例程;
其中响应于在中断单元处收到的中断的中断信号,前置处理程序例程在第一时刻记录轨迹记录;以及
其中响应于中断完成,后置处理程序例程在第二时刻记录轨迹记录。
23.如权利要求22所述的系统,其中轨迹记录包括指示哪里发生中断的指令的来源地址。
24.如权利要求22所述的系统,其中轨迹记录包括多个计数。
25.如权利要求24所述的系统,其中所述计数表示事件的发生次数。
26.如权利要求25所述的系统,其中从包含高速缓存丢失与时钟周期的组中选择事件。
27.如权利要求22所述的系统,其中轨迹记录包括时间戳。
28.如权利要求22所述的系统,还包括多个前置处理程序例程与多个后置处理程序例程,其中每个前置处理程序例程与每个后置处理程序例程在发生中断时记录不同的事件。
29.如权利要求22所述的系统,其中第一和第二时刻分别与第一和第二时间戳相关联。
30.如权利要求24所述的系统,其中当启动前置或后置处理程序例程时,不更新所述计数。
31.如权利要求22所述的系统,其中前置处理程序例程或后置处理程序例程监视所记录的事件的计数,以确定是否发生了上溢。
32.如权利要求31所述的系统,其中前置处理程序例程或后置处理程序例程通过读取并重置所述计数来处理上溢。
33.一种计算可读介质中的计算机程序产品,包含:
第一指令,用来在数据处理系统的处理器的中断单元处接收中断信号;
第二指令,用来确定是否为中断使能了前置处理程序例程与后置处理程序例程中的至少一个;
第三指令,用来如果使能了前置例程,则启动前置处理程序例程以在第一时刻记录轨迹记录;以及
第四指令,用来启动中断处理程序例程;以及
第五指令,用来如果使能了后置处理程序例程,则启动后置处理程序例程以在第二时刻记录轨迹记录。
34.如权利要求33所述的计算机程序产品,其中轨迹记录包括指示哪里发生中断的指令的来源地址。
35.如权利要求33所述的计算机程序产品,其中轨迹记录包括多个计数。
36.如权利要求35所述的计算机程序产品,其中所述计数表示事件的发生次数。
37.如权利要求36所述的计算机程序产品,其中从包含高速缓存丢失与时钟周期的组中选择事件。
38.如权利要求33所述的计算机程序产品,其中轨迹记录包括时间戳。
39.如权利要求33所述的计算机程序产品,还包括多个前置处理程序例程与多个后置处理程序例程,其中每个前置处理程序例程与每个后置处理程序例程在发生中断时记录不同的事件。
40.如权利要求33所述的计算机程序产品,其中在轨迹记录中,第一和第二时刻分别与第一和第二时间戳相关联。
41.如权利要求33所述的计算机程序产品,其中前置处理程序例程或后置处理程序例程监视所记录的事件的计数,以确定是否发生了上溢。
42.如权利要求35所述的计算机程序产品,其中当启动前置或后置处理程序例程时,不更新所述计数。
43.如权利要求41所述的计算机程序产品,其中前置处理程序例程或后置处理程序例程通过读取并重置所述计数来处理上溢。
44.一种在数据处理系统中执行分支指令的方法,包含以下步骤:
执行程序的分支指令;
响应于执行陷阱,在该数据处理系统的处理器的中断单元处接收信号,其中响应于执行所述程序的分支指令,执行所述陷阱;
响应于收到该信号,启动前置处理程序例程以在第一时刻记录轨迹记录;
当完成程序的分支指令的执行时,启动后置处理程序例程以在第二时刻记录轨迹记录。
45.如权利要求44所述的方法,其中轨迹记录包括指示分支指令地址的来源地址。
46.如权利要求44所述的方法,其中轨迹记录包括指示分支指令去向地址的目的地址。
47.如权利要求44所述的方法,其中轨迹记录包括多个计数。
48.如权利要求47所述的方法,其中所述计数表示事件的发生次数。
49.如权利要求44所述的方法,其中轨迹记录包括时间戳。
50.如权利要求48所述的方法,其中从包含高速缓存丢失与时钟周期的组中选择事件。
51.如权利要求44所述的方法,还包括多个前置处理程序例程与多个后置处理程序例程,其中每个前置处理程序例程与每个后置处理程序例程记录不同的事件。
52.如权利要求44所述的方法,其中在轨迹记录中,第一和第二时刻分别与第一和第二时间戳相关联。
53.如权利要求47所述的方法,其中当启动前置与后置处理程序例程时,不更新所述计数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/757,192 US7197586B2 (en) | 2004-01-14 | 2004-01-14 | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
US10/757,192 | 2004-01-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1648865A true CN1648865A (zh) | 2005-08-03 |
CN100407147C CN100407147C (zh) | 2008-07-30 |
Family
ID=34740004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100046326A Active CN100407147C (zh) | 2004-01-14 | 2005-01-14 | 为记录事件提供前置与后置处理程序的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7197586B2 (zh) |
CN (1) | CN100407147C (zh) |
TW (1) | TWI307463B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944041A (zh) * | 2010-09-26 | 2011-01-12 | 中国科学院计算技术研究所 | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 |
CN102591638A (zh) * | 2010-12-06 | 2012-07-18 | 微软公司 | 事件激发的前后方法执行 |
US8793706B2 (en) | 2010-12-16 | 2014-07-29 | Microsoft Corporation | Metadata-based eventing supporting operations on data |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US7373637B2 (en) | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US7421681B2 (en) | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation 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 |
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 |
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 |
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 |
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 |
US7454666B1 (en) * | 2005-04-07 | 2008-11-18 | Sun Microsystems, Inc. | Real-time address trace generation |
US7581148B2 (en) * | 2006-01-31 | 2009-08-25 | Verigy (Singapore) Pte. Ltd. | System, method and apparatus for completing the generation of test records after an abort event |
US7707394B2 (en) * | 2006-05-30 | 2010-04-27 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
US20080114690A1 (en) * | 2006-10-26 | 2008-05-15 | International Business Machines Corporation | System and method for performing partner settlement for managed services in an ip multimedia subsystem (ims) network |
JP5119994B2 (ja) * | 2008-03-14 | 2013-01-16 | 富士通株式会社 | 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置 |
JP4691153B2 (ja) * | 2008-12-10 | 2011-06-01 | 富士通株式会社 | マルチコアプロセッサ,制御方法および情報処理装置 |
US9195487B2 (en) | 2009-05-19 | 2015-11-24 | Vmware, Inc. | Interposition method suitable for hardware-assisted virtual machine |
US8635415B2 (en) * | 2009-09-30 | 2014-01-21 | Intel Corporation | Managing and implementing metadata in central processing unit using register extensions |
EP2333830B1 (en) | 2009-12-07 | 2014-09-03 | STMicroelectronics (Research & Development) Limited | a package comprising a first and a second die coupled by a multiplexed bus |
EP2339795B1 (en) * | 2009-12-07 | 2013-08-14 | STMicroelectronics (Research & Development) Limited | Inter-chip communication interface for a multi-chip package |
EP2339476B1 (en) * | 2009-12-07 | 2012-08-15 | STMicroelectronics (Research & Development) Limited | Interface connecting dies in an IC package |
EP2339475A1 (en) * | 2009-12-07 | 2011-06-29 | STMicroelectronics (Research & Development) Limited | Inter-chip communication interface for a multi-chip package |
EP2333673B1 (en) * | 2009-12-07 | 2014-04-16 | STMicroelectronics (Research & Development) Limited | Signal sampling and transfer |
EP2330514B1 (en) | 2009-12-07 | 2018-12-05 | STMicroelectronics (Research & Development) Limited | An integrated circuit package |
US8516229B2 (en) * | 2010-02-05 | 2013-08-20 | International Business Machines Corporation | Two pass test case generation using self-modifying instruction replacement |
US8521937B2 (en) | 2011-02-16 | 2013-08-27 | Stmicroelectronics (Grenoble 2) Sas | Method and apparatus for interfacing multiple dies with mapping to modify source identity |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9317460B2 (en) * | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9201821B2 (en) | 2012-09-27 | 2015-12-01 | Apple Inc. | Interrupt timestamping |
US9298651B2 (en) | 2013-06-24 | 2016-03-29 | International Business Machines Corporation | Continuous in-memory accumulation of hardware performance counter data |
US10282326B1 (en) * | 2014-10-29 | 2019-05-07 | Xilinx, Inc. | Active interrupt handler performance monitoring in microprocessors |
US9600336B1 (en) | 2015-08-28 | 2017-03-21 | International Business Machines Corporation | Storing service level agreement compliance data |
US10002063B2 (en) | 2015-10-20 | 2018-06-19 | International Business Machines Corporation | Monitoring performance of multithreaded workloads |
US20170168832A1 (en) * | 2015-12-11 | 2017-06-15 | International Business Machines Corporation | Instruction weighting for performance profiling in a group dispatch processor |
JP2019096243A (ja) * | 2017-11-28 | 2019-06-20 | ルネサスエレクトロニクス株式会社 | 半導体装置及びその故障検出方法 |
Family Cites Families (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3707725A (en) * | 1970-06-19 | 1972-12-26 | Ibm | Program execution tracing system improvements |
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 |
JPS59132070A (ja) * | 1983-01-18 | 1984-07-30 | Mitsubishi Electric Corp | アレイ演算用デ−タ処理装置 |
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 |
US4821178A (en) * | 1986-08-15 | 1989-04-11 | International Business Machines Corporation | Internal performance monitoring by event sampling |
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 |
US5151981A (en) * | 1990-07-13 | 1992-09-29 | International Business Machines Corporation | Instruction sampling instrumentation |
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 |
US5548762A (en) * | 1992-01-30 | 1996-08-20 | Digital Equipment Corporation | Implementation efficient interrupt select mechanism |
JP3544214B2 (ja) * | 1992-04-29 | 2004-07-21 | サン・マイクロシステムズ・インコーポレイテッド | プロセッサの状態を監視する方法及び監視システム |
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 |
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 |
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 |
US5581482A (en) * | 1994-04-26 | 1996-12-03 | Unisys Corporation | Performance monitor for digital computer system |
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 |
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 |
US6148321A (en) * | 1995-05-05 | 2000-11-14 | Intel Corporation | Processor event recognition |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
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 |
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 |
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 |
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 |
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 |
US5937437A (en) * | 1996-10-28 | 1999-08-10 | International Business Machines Corporation | Method and apparatus for monitoring address translation performance |
US5926640A (en) * | 1996-11-01 | 1999-07-20 | Digital Equipment Corporation | Skipping clock interrupts during system inactivity to reduce power consumption |
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 |
US5822790A (en) * | 1997-02-07 | 1998-10-13 | Sun Microsystems, Inc. | Voting data prefetch engine |
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 |
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 |
US6094709A (en) * | 1997-07-01 | 2000-07-25 | International Business Machines Corporation | Cache coherence for lazy entry consistency in lockup-free caches |
US5987250A (en) * | 1997-08-21 | 1999-11-16 | Hewlett-Packard Company | Transparent instrumentation for computer program behavior analysis |
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 |
US6101524A (en) * | 1997-10-23 | 2000-08-08 | International Business Machines Corporation | Deterministic replay of multithreaded applications |
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 |
US5987495A (en) * | 1997-11-07 | 1999-11-16 | International Business Machines Corporation | Method and apparatus for fully restoring a program context following an interrupt |
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 |
US6070009A (en) * | 1997-11-26 | 2000-05-30 | Digital Equipment Corporation | Method for estimating execution rates of program execution paths |
US6163840A (en) * | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
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 |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
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 |
GB9805485D0 (en) * | 1998-03-13 | 1998-05-13 | Sgs Thomson Microelectronics | Microcomputer |
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 |
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 |
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 |
US6243804B1 (en) * | 1998-07-22 | 2001-06-05 | Scenix Semiconductor, Inc. | Single cycle transition pipeline processing using shadow registers |
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 |
US6189142B1 (en) | 1998-09-16 | 2001-02-13 | International Business Machines Corporation | Visual program runtime performance analysis |
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 |
US6324689B1 (en) * | 1998-09-30 | 2001-11-27 | Compaq Computer Corporation | Mechanism for re-writing an executable having mixed code and data |
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 |
US6636950B1 (en) * | 1998-12-17 | 2003-10-21 | Massachusetts Institute Of Technology | Computer architecture for shared memory access |
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 |
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 |
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 |
US6594820B1 (en) | 1999-09-28 | 2003-07-15 | Sun Microsystems, Inc. | Method and apparatus for testing a process in a computer system |
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 |
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 |
US6480966B1 (en) * | 1999-12-07 | 2002-11-12 | International Business Machines Corporation | Performance monitor synchronization in a multiprocessor system |
JP3600095B2 (ja) * | 1999-12-07 | 2004-12-08 | 松下電器産業株式会社 | 割り込み管理装置及び割り込み管理方法 |
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
US6735666B1 (en) * | 2000-02-22 | 2004-05-11 | Wind River Systems, Inc. | Method of providing direct user task access to operating system data structures |
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 |
US6865663B2 (en) * | 2000-02-24 | 2005-03-08 | Pts Corporation | Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode |
EP1150213B1 (en) * | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
US6557083B1 (en) * | 2000-06-30 | 2003-04-29 | Intel Corporation | Memory system for multiple data types |
US6973542B1 (en) * | 2000-07-18 | 2005-12-06 | International Business Machines Corporation | Detecting when to prefetch inodes and then prefetching inodes in parallel |
US6757771B2 (en) * | 2000-08-09 | 2004-06-29 | Advanced Micro Devices, Inc. | Stack switching mechanism in a computer system |
US6782454B1 (en) * | 2000-09-29 | 2004-08-24 | Sun Microsystems, Inc. | System and method for pre-fetching for pointer linked data structures |
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 |
US7093236B2 (en) * | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
US20030066055A1 (en) | 2001-04-26 | 2003-04-03 | Spivey John Michael | Profiling computer programs |
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 |
US6687794B2 (en) * | 2001-10-18 | 2004-02-03 | International Business Machines Corporation | Prefetching mechanism for data caches |
US20030131343A1 (en) | 2001-10-19 | 2003-07-10 | French Ronan J. | Framework for system monitoring |
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 |
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 |
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 |
US9003376B2 (en) | 2002-08-09 | 2015-04-07 | Texas Instruments Incorporated | Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems |
US6944722B2 (en) * | 2003-04-14 | 2005-09-13 | Sun Microsystems, Inc. | Method and system for postmortem identification of falsely shared memory objects |
US7194732B2 (en) | 2003-06-26 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | System and method for facilitating profiling an application |
US20050091456A1 (en) * | 2003-10-23 | 2005-04-28 | Huck Jerome C. | Determining an arrangement of data in a memory for cache efficiency |
US7162594B2 (en) * | 2003-11-19 | 2007-01-09 | Buffalo Inc. | Memory module indicator device |
-
2004
- 2004-01-14 US US10/757,192 patent/US7197586B2/en not_active Expired - Lifetime
-
2005
- 2005-01-03 TW TW094100038A patent/TWI307463B/zh not_active IP Right Cessation
- 2005-01-14 CN CN2005100046326A patent/CN100407147C/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944041A (zh) * | 2010-09-26 | 2011-01-12 | 中国科学院计算技术研究所 | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 |
CN101944041B (zh) * | 2010-09-26 | 2012-10-10 | 中国科学院计算技术研究所 | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 |
CN102591638A (zh) * | 2010-12-06 | 2012-07-18 | 微软公司 | 事件激发的前后方法执行 |
CN102591638B (zh) * | 2010-12-06 | 2015-01-28 | 微软公司 | 事件激发的前后方法执行 |
US8793706B2 (en) | 2010-12-16 | 2014-07-29 | Microsoft Corporation | Metadata-based eventing supporting operations on data |
Also Published As
Publication number | Publication date |
---|---|
CN100407147C (zh) | 2008-07-30 |
US20050154812A1 (en) | 2005-07-14 |
TWI307463B (en) | 2009-03-11 |
TW200534089A (en) | 2005-10-16 |
US7197586B2 (en) | 2007-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100407147C (zh) | 为记录事件提供前置与后置处理程序的方法 | |
CN100383754C (zh) | 发生中断时按其类型限定性能监视事件收集的方法与装置 | |
CN100382061C (zh) | 按照类型对中断计数的方法和装置 | |
CN1252594C (zh) | 使能跟踪重复指令的方法和系统 | |
US7373637B2 (en) | Method and apparatus for counting instruction and memory location ranges | |
US7257657B2 (en) | Method and apparatus for counting instruction execution and data accesses for specific types of instructions | |
US7395527B2 (en) | Method and apparatus for counting instruction execution and data accesses | |
Sprunt | Pentium 4 performance-monitoring features | |
CN1138205C (zh) | 以不同等待时间调度指令 | |
US8782664B2 (en) | Autonomic hardware assist for patching code | |
US7657875B2 (en) | System and method for collecting a plurality of metrics in a single profiling run of computer code | |
US7725298B2 (en) | Event tracing with time stamp compression | |
US7369954B2 (en) | Event tracing with time stamp compression and history buffer based compression | |
US20100017583A1 (en) | Call Stack Sampling for a Multi-Processor System | |
CN1773459A (zh) | 从同步冗余设备选择状态数据的方法和系统 | |
US20050071817A1 (en) | Method and apparatus for counting execution of specific instructions and accesses to specific data locations | |
US20060212243A1 (en) | Event tracing using hash tables with support for dynamic address to name resolution | |
US20050071608A1 (en) | Method and apparatus for selectively counting instructions and data accesses | |
US7620801B2 (en) | Methods to randomly or pseudo-randomly, without bias, select instruction for performance analysis in a microprocessor | |
US20050071610A1 (en) | Method and apparatus for debug support for individual instructions and memory locations | |
US20050086455A1 (en) | Method and apparatus for generating interrupts for specific types of instructions | |
US20040193395A1 (en) | Program analyzer for a cycle accurate simulator | |
Vaswani et al. | Representing, Detecting and Profiling Paths in Hardware | |
CN1851653A (zh) | 嵌入式sram操作系统进程带性能保证调度的实现方法 |
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 |