CN1508690A - 使能跟踪重复指令的方法和系统 - Google Patents
使能跟踪重复指令的方法和系统 Download PDFInfo
- Publication number
- CN1508690A CN1508690A CNA2003101215553A CN200310121555A CN1508690A CN 1508690 A CN1508690 A CN 1508690A CN A2003101215553 A CNA2003101215553 A CN A2003101215553A CN 200310121555 A CN200310121555 A CN 200310121555A CN 1508690 A CN1508690 A CN 1508690A
- Authority
- CN
- China
- Prior art keywords
- instruction
- repetitive instruction
- execution
- repetitive
- processor
- 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
- 238000000034 method Methods 0.000 title claims abstract description 144
- 230000004044 response Effects 0.000 claims abstract description 11
- 230000003252 repetitive effect Effects 0.000 claims description 183
- 239000000872 buffer Substances 0.000 claims description 28
- 238000012544 monitoring process Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 99
- 230000015654 memory Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000014509 gene expression Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 239000010410 layer Substances 0.000 description 10
- 230000002349 favourable effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 229920002457 flexible plastic Polymers 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000004454 trace mineral analysis Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供了一种使能跟踪重复指令的方法和系统。在处理器内执行一个重复指令。响应检测到在所述重复指令的最后一次执行期间置位重复指令标志,在所述处理器内启动一个中断。在所述中断期间,所述处理器利用跟踪程序或外部硬件启动从所述处理器内的一个存储单元中读取所述重复指令的执行的计数。
Description
技术领域
本发明一般地涉及微处理器,具体地涉及跟踪微处理器的指令流。更具体地,本发明涉及跟踪微处理器的计数寄存器,从而评估重复指令的执行。
背景技术
在分析数据处理系统或者在该数据处理系统中执行的应用程序的性能时,理解执行流程和系统资源的使用是有帮助的。指令跟踪可以包括列出当应用程序或系统程序正运行时由处理器执行的指令。对指令跟踪进行分析,从而建立性能模型,并统计地监视系统行为的一些部分。指令类型和其它字段的动态使用,地址变换和存储器引用模式,以及分支行为和基本块大小是跟踪分析当中的一些课题。所提取的统计数据反映体系结构、实现、系统软件以及从中采集跟踪的应用程序的特定组合的行为,因此可用于引导所有这些部件的开发者的设计决定。
具体地说,跟踪可以含有各种层面的信息。例如地址跟踪,则含有用于存取指令和操作数的存储器地址序列。指令跟踪则除去存储器地址序列之外还含有指令操作码和寄存器说明符。
常规的跟踪工具可以使用硬件、软件或者硬件和软件的组合,来获得踪迹。在硬件方面,许多处理器包括允许进行跟踪的模式。当前处理器的一个焦点是分支跟踪特性,它会在检测到被取分支(taken branch)指令时引起中断,并跟踪所述被取分支指令。收集关于哪些分支指令是最经常被取用的,哪些分支是最经常异常的信息,这些信息是有用的信息。
虽然跟踪工具已集中在跟踪分支和异常上,但收集关于其它类型的指令的执行的踪迹将是有利的。具体地说,监视重复指令,例如重复字符串指令的执行将是有利的。例如,监视一个指令是否被重复了所请求的次数,或者监视一个中断是否终止了重复循环将是有利的。通过跟踪一个重复指令,可以监视执行重复指令的速度。
因此,具有一些硬件和软件跟踪工具,用于监视和检查重复指令,以确定重复指令对软件性能的影响将是有利的。此外,跟踪重复指令和分支指令两种指令,也是有利的。
发明内容
因此,由上述可见,本发明的一个目的在于提供改进的微处理器功能。
本发明的另一个目的在于提供一种用于跟踪微处理器的指令流的方法、系统和程序。
本发明的又一个目的在于提供一种用于跟踪微处理器的指令流,从而评估重复指令的执行的方法、系统和程序。
按照本发明的一个方面,一个重复指令在处理器内被执行。响应检测到在所述重复指令的最后一次执行期间设置(置位)的重复指令标志,在所述处理器内启动一个中断。在所述中断期间,借助于一个跟踪程序或者外部硬件,该处理器使能(enable)从该处理器内的一个存储单元中读取用于所述重复指令的执行的计数。
按照一个实施例,第一次执行重复指令时,把CX寄存器值复制到该处理器内的一重复计数寄存器中。当检测到重复指令的最后一次执行时,则产生中断。该处理器启动(使能)一个跟踪程序,以读出CX寄存器中的值和重复计数寄存器中的值之间的差,从而确定重复指令被执行的实际次数。
按照另一个实施例,可以利用处理器内的重复指令信息缓冲器,来存储多个重复指令执行的次数。可替代地,处理器可以指向该处理器外部的缓冲存储位置(单元)。当重复指令被第一次执行时,CX寄存器值被复制到该处理器内的重复计数寄存器中。然后,当检测到重复指令的最后一次执行时,处理器把当前的CX寄存器的值和重复计数寄存器中的值之间的差复制到该重复指令信息缓冲器中,使得重复指令的实际执行次数被保存。当该指令信息缓冲器满时,触发一个中断。处理器启动跟踪程序,以便读取该指令信息缓冲器。
按照另一个实施例,处理器包括具有计数器寄存器的性能监视器。所述计数器寄存器包括重复出现计数器(rep occurrence counter)。按照第一选择,该重复出现计数器通过被编程为差一步溢出而被设置成对重复指令的出现进行计数。在检测到重复指令的出现时,该计数器增加而溢出,从而触发一个中断。按照第二选择,该重复出现计数器被设置用于对重复指令的最后一次执行的发生进行计数,使该计数器增加而溢出,从而触发一个中断。另一个重复执行计数器在检测到重复指令时开始对重复指令的每次执行进行计数。因而,当触发所述中断时,处理器便启动跟踪程序,以便读取该重复执行计数器,该计数器已经计数了重复指令被执行的实际次数。
按照另一个实施例,由跟踪程序修改第一顺序重复指令(sequentialrepeat instruction),以便在处理器中引起中断。响应检测到该处理器中的中断,通过访问含有重复指令执行的实际次数的存储单元跟踪该重复指令。然后修改该重复指令以从中断返回(return-from-interrupt)。可替代地,响应检测到经过该第一顺序重复指令的分支中断,恢复所述重复指令,并修改下一个顺序重复指令,使得其如果被执行则引起中断。
本发明的所有目的、特征和优点在下面的详细的书面说明中将会变得显而易见。
附图说明
被认为是本发明的新特征在所附权利要求中提出。不过,本发明本身以及本发明的优选的使用方式、本发明的进一步的目的和优点,通过结合附图参看下面示例性的实施例的详细说明,可以得到最好的理解,其中:
图1表示在其中可以实施本发明的计算机系统的一个实施例的方框图;
图2是可用于例如图1所示的计算机系统等计算系统内的处理器和存储器子系统中的典型结构的方框图;
图3表示按照本发明的方法、系统和程序,显示在一种计算机系统内的软件的部分,并说明在作为软件的功能层的这些部分之间的逻辑关系的方框图;
图4表示按照本发明的方法、系统和程序,利用跟踪工具分析的数据处理系统中的各软件部分之间的关系的方框图;
图5表示按照本发明的方法、系统和程序,跟踪程序的一些典型阶段的高层逻辑流程图;
图6表示按照本发明的方法、系统和程序,在处理器内的可用于揭示关于重复指令执行的信息的重复指令寄存器的方框图;
图7表示按照本发明的方法、系统和程序,使能跟踪重复指令的处理器的方框图;
图8表示用于使用处理器内的重复使能标志的进程和程序的高层逻辑流程图;
图9表示用于使用处理器内的重复使能标志以跟踪一个完成的重复指令的进程和程序的高层逻辑流程图;
图10表示按照本发明的方法、系统和程序,使能跟踪和存储重复指令的处理器的方框图;
图11表示按照本发明的方法、系统和程序,使能跟踪重复指令和在处理器外部的存储器内保存重复指令的处理器的方框图;
图12表示利用重复使能标志跟踪缓冲器中的重复指令计数的进程和程序的高层逻辑流程图;
图13表示按照本发明的方法、系统和程序,使能控制对重复指令的跟踪的处理器的方框图;
图14表示利用性能监视计数器控制中断以便跟踪重复指令的进程和程序的高层逻辑流程图;
图15表示用于控制中断以通过多个性能监视计数器跟踪重复指令的进程和程序的高层逻辑流程图;以及
图16表示用于在应用程序中一次一个重复指令地插入跟踪异常分支(hook)的进程和程序的高层逻辑流程图。
具体实施方式
现在参看附图,图1表示在其中可以实施本发明的计算机系统的一个实施例。计算机系统10包括总线22或其它用于在计算机系统10内传递信息的通信装置,以及至少一个处理装置,例如处理器12,该处理装置和总线22相连以用于处理信息。总线22优选包括低延迟通路和较高延迟通路。它们由桥接器连接,并由多个总线控制器在计算机系统10内进行控制。
处理器12可以是通用处理器,例如IBM的PowerPCTM处理器,其在正常操作期间,在存储于例如随机存取存储器(RAM)14等动态存储装置和例如只读存储器(ROM)16等静态存储装置中的操作系统和应用软件的控制下处理数据。该操作系统首选地向用户提供图形用户界面(GUI)。在优选实施例中,应用软件含有机器可执行指令,其在处理器12上被执行时,则执行图8、9、12、14、15和16的流程图以及本说明所述的其它部分所描述的操作。或者,本发明的步骤可以由含有用于执行这些步骤的硬连线逻辑(hardwired logic)的特定的硬件组件执行,或者由程序控制的计算机组件和定制的硬件组件的任意组合执行。
本发明可以作为计算机程序产品来提供,该产品被包括在机器可读的介质上,该介质具有在其上存储的机器可执行指令,以用于对计算机系统10编程,从而执行按照本发明的进程。这里使用的术语“机器可读介质”包括任何参与向处理器12或者计算机系统10的其它组件提供用于执行的指令的介质。这种介质可以采用许多形式,其中包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质的通常形式包括例如:软盘,软磁盘,硬盘,磁带或任何其它磁介质,压缩光盘ROM(CD-ROM)或任何其它光学介质,穿孔卡片或任何其它具有孔模式的物理介质,可编程ROM(PROM),可擦写PROM(EPROM),电EPROM(EEPROM),闪存,任何其它存储器芯片或盒装芯片,或者任何其它的计算机系统10可从中读取指令并适用于存储指令的介质。在本实施例中,非易失性介质的例子是海量存储装置18。易失性介质包括动态存储器,例如RAM 14。传输介质包括同轴电缆、铜导线或光纤,包括构成总线22的导线。传输介质也可以采用声波或光波的形式,例如在射频或红外数据通信期间产生的声波和光波。
此外,本发明可作为计算机程序产品被下载,其中程序指令可以经由至与总线22相耦合的通信接口32的网络链路34(例如调制解调器或网络连接),通过被嵌入在载波或其它传播介质中的数据信号,从远程计算机例如服务器39传送到请求计算机系统10。通信接口32提供耦合网络链路34的双向数据通信,所述网络链路34例如可以和局域网(LAN)、广域网(WAN)相连,或者如本文所述,直接和因特网服务提供者(ISP)37相连。具体地说,网络链路34可以对一个或多个网络提供有线与/或无线网络通信。
ISP 37也通过因特网38或其它网络提供数据通信业务。因特网38可以是全球的使用特定协议的网络和网关的集合,例如使用传输控制协议(TCP)和因特网协议(IP),以便彼此进行通信。ISP 37和因特网38两者都使用用于承载数字数据流的电信号、电磁信号或光信号。通过该各种网络的信号,以及在网络链路34上的并通过通信接口32的信号是传输信息的载波的几种示例性的形式,它们向或从计算机系统10传输数字数据。
此外,可以对计算机系统10添加多个外围组件,它们与耦合至总线22的输入/输出(I/O)控制器11相连。例如,音频输入/输出设备28和I/O控制器11相连,用于控制通过麦克风或其它声音或嘴唇运动捕获装置的音频输入,并用于控制通过扬声器或其它音频发射装置的音频输出。显示器24也和I/O控制器11相连,用于提供可视的、可触的或其它图形表现格式。键盘26和光标控制装置30,例如鼠标、轨迹球、或光标方向键,和I/O控制器11相连,作为用户对计算机系统10输入的接口。在本发明的另一个实施例中,可以增加其它的输入和输出外围组件。
图1旨在作为一种在其中可以使处理器工作的计算环境的例子,而不作为一种体系结构的限制。本发明可以在多种系统中执行,包括在许多不同操作系统下的各种计算系统和电子装置。在本发明的一个实施例中,所述计算系统是便携式计算系统,例如笔记本计算机,掌上计算机,个人数字助理,电话或其它也可以具有用于提供电话技术、增强的电话技术、消息发送和信息服务的通信功能的电子计算系统。不过,所述计算系统还可以是例如台式计算机,网络计算机,中型计算机,服务器系统或大型机。因此,一般地说,本发明在用于执行例如操作计算机系统可访问的存储装置中的数据等计算任务的计算机系统中执行。此外,所述计算机系统可以包括至少一个输出装置和至少一个输入装置。
现在参看图2,图2是可用于例如图1所示的计算机系统等计算系统内的处理器和存储器子系统的典型结构的方框图。分级存储器110表示可由处理器12访问的一种存储器层次的例子。在这个例子中,分级存储器110包括二级高速缓存112,RAM14,以及非易失性存储器116。二级高速缓存112以本领域已知的方式提供一种对数据和指令的快速存取高速缓存,所述数据和指令可以存储在RAM14中。应当理解,也可以使用许多种高速缓存体系结构。RAM14提供用于数据和指令的主存储器存储,也可以提供在例如图1所示的海量存储装置18等非易失性存储器116中存储的数据和指令的高速缓存。
处理器12是一种能够在一个周期内执行多个指令的流水线处理器。应当理解,也可以使用其它类型的处理器。在所述数据处理系统操作期间,指令和数据被存储在分级存储器110内。数据和指令可以在总线22上从分级存储器传送到处理器。总线22可以包括公共数据通路或独立数据通路。在每种情况下,处理器12可以和指令高速缓存122以及数据高速缓存124结合而提供在处理器12内的单独的指令和数据传送通路。指令高速缓存122包含已被高速缓存的用于在该处理器内执行的指令。某些指令可以通过数据高速缓存124向或从分级存储器110传送数据。其它指令可以操作已被装入通用数据寄存器126中的数据。通用数据寄存器126一般包括多个寄存器,例如累加寄存器(AX),基址寄存器(BX),计数寄存器(CX)和数据寄存器(DX)。在该图中,专门示出了计数寄存器(CX)139,因为其与本发明的实施有关。此外,某些指令可以执行关于通用控制寄存器128的控制操作。
指令提取单元130按照需要从指令高速缓存122中提取指令,高速缓存122接着根据需要从分级存储器110中提取指令。指令译码单元132对指令进行译码,以确定关于该指令的基本信息,例如指令类型、源寄存器和目的寄存器。
在该实例中,处理器12是一种乱序执行处理器。应当理解,也可以使用其它执行类型的处理器。定序单元134使用该被译码的信息调度指令以供执行。为了跟踪指令,完成单元136可以具有数据和控制结构,用于存储和提取关于被调度的指令的信息。当指令由执行单元138执行时,关于正在执行和已经执行的指令的信息被收集在完成单元136中。执行单元138可以使用多个执行子单元。当指令完成时,完成单元136便提交这些指令的执行结果;使这些指令的目的寄存器可以由随后的指令利用,或者通过利用各种控制标志指示这些目的寄存器中的值是有效的。一旦随后的指令的源数据可获得,便可向合适的执行子单元发出这些随后的指令。
此外,在这个例子中,处理器12被描述为一种推测(speculative)执行处理器。一般地说,指令按顺序被取出和执行,直到一个分支型的指令有条件地或者无条件地改变该指令流程。在指令译码单元132识别一个条件分支操作之后,定序单元134可以认识到所述条件基于的数据仍然是不可用的。在这种情况下,指令提取单元130可以使用分支预测单元140中的一个或多个分支预测机制来预测该条件的结果。然后控制被推测地改变,直到该条件的结果可被确定为止。根据处理器的能力,可以采用多个预测路径,并从执行流水线中清除不必要的分支。
具体地说,在这个例子中,当指令译码单元132识别一个重复指令操作时,定序单元134便调度所述指令以供执行。重复指令操作一般由之前加有前缀“REP”的指令进行标识。指令要被重复的次数“n”被装入CX寄存器139中。具体到本发明,CX寄存器139是一个每当重复指令被执行一次便减一(递减)的计数寄存器。因而,执行单元138将该指令执行n次,或者直到满足一个条件为止,每执行一次使CX寄存器139减一。应当注意,本发明也可以利用每执行一次重复指令便加一(递增),直到一个指定的值的CX寄存器来实现。此外,本发明还可以利用在执行重复指令之后便减一,直到一个指定值的CX寄存器来实现。
中断控制单元142控制在指令处理期间发生的使指令流程控制被传递到一个可以由软件或者由外部硬件提供的中断处理例程的事件。在中断时一些处理器状态被处理器自动保存。在完成中断处理之后,可以执行从中断返回(return-from-interrupt,RFI),从而恢复被保存的处理器状态,此时处理器12可以继续被中断的指令的执行。中断控制单元142可以包括用于协助中断处理的各种数据寄存器和控制寄存器。
当指令被执行时处理器发生的某些事件,例如高速缓存访问、转换旁视缓冲器(Trans1ation Lookaside Buffer,TLB)未命中。性能监视器144监视这些事件,并累计作为处理指令的结果而发生的事件的数量。性能监视器144是一个软件可访问的机制,用于提供关于指令执行和数据存储的信息;其计数器寄存器和控制寄存器可在软件控制下通过用于读写的专用指令被读写。性能监视器144包括多个性能监视计数器(PMC)或用于在一个或多个控制寄存器148的控制下对事件进行计数的计数器寄存器146。控制寄存器一般被划分成多个位字段,其允许进行事件/信号选择和累计。选择事件的可允许组合使得这些计数器可以同时进行操作;性能监视器可用作监视指令流水线的各个阶段的性能的机制。
本领域的普通技术人员应当理解,图2的硬件可以根据该系统的实施而改变。所示的例子不意味着对本发明的体系结构的限制。
现在参看图3,图3表示按照本发明的方法、系统和程序,显示在一种计算机系统内的多个软件部分,并说明在作为软件的功能层的这些部分之间的逻辑关系的方框图。该计算系统的硬件处于层50中。位于该操作系统的层52中的内核提供作为和所述硬件的接口的核心功能集。I/O功能和驱动器位于层54中,存储器管理和与存储器相关的功能位于层56中。位于层58中的用户应用程序和其它程序访问其它层中的功能,以便进行一般的数据处理。层52、54和56作为一个整体可看作是一个特定设备的操作系统。假定所述操作系统是可扩充的,可以对该操作系统添加软件驱动程序,以便支持用户应用程序所需的各种附加功能,例如用于支持添加到该系统中的新设备的设备驱动程序。
本发明可以在各种硬件平台上以及各种软件环境中实施。可以在一个计算系统内执行多个操作系统。
现在参看图4,图4表示按照本发明的方法、系统和程序,利用跟踪工具分析的数据处理系统中的多个软件部分之间的关系的方框图。跟踪程序150包含用于分析应用程序151的中断处理例程。跟踪程序150可被配置成用于处理正被分析的数据处理系统中的中断的子集。例如,当由于一个被取分支陷阱(taken-branch trap)或者重复指令中断而发生中断时,跟踪程序150可以功能上执行各种跟踪功能、简档(profiling)功能或者调试功能;下文将可互换地使用跟踪、简档和调试这些术语。此外,在执行一个异常分支时,可以使用跟踪程序150记录数据,所述的异常分支是在一个应用进程中的指定位置上的一段专用的代码。跟踪异常分支一般为了调试、性能分析或者增强功能而被插入。
一般地说,跟踪程序150产生各种类型的信息的跟踪数据,其被写入一个固定的(pinned)跟踪数据缓冲器中,使得在处理异常或中断时不需要输入或输出。接着,被写入该固定的跟踪数据缓冲器中的数据被写入用于后处理的数据文件中。在本发明的情况下,跟踪程序150产生重复指令执行、以及被取分支指令和影响系统性能的其它类型的指令的跟踪数据。
跟踪程序150和应用程序151都使用内核152,所述内核包括并支持系统级调用、实用程序和设备驱动程序。根据实施,跟踪程序150可以具有在层58上运行的具有应用级优先权的一些模块,以及在层52上运行的具有可信的(trusted)系统级优先权的其它模块。具体地说,被使能处理异常或中断的跟踪程序150或其它驱动程序由可信代码处理(在特权的状态下)。
应当注意,本发明的指令跟踪功能可被置于多种环境中,包括内核,内核驱动程序、操作系统模块,或者跟踪进程或程序。下文将使用“跟踪程序”或者“跟踪软件”来区分典型的内核功能和由应用程序产生的进程。
现在参看图5,图5表示按照本发明的方法、系统和程序,跟踪程序的一些典型阶段的高层逻辑流程图。首先,初始化阶段155捕获在跟踪被启动时的计算机系统的状态。该跟踪初始化数据可以包括用于识别所有现有线程、所有被装入的类,以及用于所述被装入的类的所有方法的跟踪记录;随后产生的跟踪数据可以指示线程的切换,中断,以及类和运行时编译执行(jitted)的方法的加载和上载。可以写入一个特殊的记录,用于在跟踪输出中指示在何时所有的启动信息被写入。接着,简档阶段156跟踪记录并把所述记录写入一个跟踪缓冲器或文件中。在存储器许可的前提下,产生的跟踪输出的长度和详细程度可以根据分析者用于简档或调试特定程序的需要而定。
最后,后处理阶段157把收集在所述缓冲器中的数据发送给一个文件以用于后处理。在后处理期间,按照在每个跟踪记录内的信息的类型处理该跟踪记录。在所有这些跟踪记录被处理之后,所述信息通常被格式化,以便以报告的形式输出。该跟踪输出可被发送给服务器,所述服务器分析来自计算系统上的进程的跟踪输出。当然,根据可利用的资源或其它因素,也可以在所述计算系统上进行后处理,甚至在进行跟踪的同时进行后处理。
具体地,在跟踪初始化期间,为所有被装入的代码识别地址、可执行程序(例如应用程序)名称以及其它相关的信息。然后跟踪程序被启动(使能)把被跟踪的地址映射到可执行程序,由此把地址映射到该代码内的指令和所述代码的符号信息。当代码被动态地装入时,该信息也被识别。具体地说,当代码不是在后处理期间可以从盘上读出的可执行程序一部分(或者从盘上读出的所述代码的符号信息)时,则使用该代码的装载地址及其长度捕获用于随后的后处理的代码。这个功能被许多使用Java虚拟机简档接口(Java Virtual Machine Profiling Interface,JVMPI)的Java简档程序(profiler)支持。
借助于在初始化阶段识别地址、可执行程序名称和其它相关信息,然后在简档阶段期间,简单地记录被执行的代码的进程和地址便足够了。根据在初始化阶段期间识别的信息和在简档阶段期间记录的进程和地址,后处理阶段使用符号映射来识别正被执行的函数和方法的名称,并确定执行了哪个代码。
现在参看图6,图6表示按照本发明的方法、系统和程序,在处理器内的可用于揭示关于重复指令的执行信息的重复指令寄存器的方框图。如图所示,处理器180,和处理器12类似,包括专用的重复计数寄存器182。重复计数寄存器182含有表示重复指令被调度的重复的次数的CX值的副本。重复计数寄存器182在物理上可被适当地置于处理器180内的各个单元内。此外,重复计数寄存器182可以作为CX寄存器来实现。应当注意,重复计数寄存器182不必是专用寄存器;处理器180可以向通用寄存器、性能监视寄存器、或其它可被配置为或可适用于该被实施的处理器体系结构的寄存器传递最近被执行的指令的副本。此外,应当注意,重复计数寄存器可被共用,用于存储至和来自被取分支指令的地址。
现在参看图7,图7表示按照本发明的方法、系统和程序,使能跟踪重复指令的处理器的方框图。如图所示,处理器190包括中断控制单元192,如图2所述。中断控制单元包括重复计数寄存器182。此外,中断控制单元192包括控制寄存器196。控制寄存器196可以使用一个或多个位,所述的一个或多个位按照需要被置位或者被清除,用于表示该处理器内的模式、条件或某些其它类型的操作状态。“标志”这个术语一般用于描述一位(比特)字段。虽然在这个例子中被描述成中断控制单元192内的一种结构,但控制寄存器196可位于处理器内的多个位置。
控制寄存器196包括重复使能(RE)标志198。RE标志198是一种可用软件指定的标志,其在检测到重复指令时触发一个中断。图4和图5所示的跟踪程序,以及更具体地重复中断处理程序200可以置位(设置)RE标志198,以便当检测到重复指令时,或者当重复指令已经完成执行时停止所述处理器。
此外,控制寄存器196包括单步使能(SSE)标志199。SSE标志199也是一种可用软件指定的标志,当该标志被置位时,其使得在一个指令的成功执行之后产生一个单步陷阱。此外,控制寄存器196包括被取分支使能(TBE)标志197,当该标志被置位时,其使得当分支型指令成功地完成时产生被取分支陷阱。应当理解,在控制寄存器196内也可能需要其它的标志。例如,控制寄存器196也可以包括一些标志,例如中断使能(IE)标志,其表示是否将要发生中断,即,外部中断是否将使该处理器把控制转移给一个外部中断处理程序。此外,应当注意,该重复中断处理程序和被取分支中断处理程序可以作为一个单独处理程序来提供功能,其检测在中断之前出现的指令类型,并执行用于所述指令类型的功能。
在第一选择中,当置位RE标志198并且检测到重复指令时,中断控制单元192则产生一个中断(陷阱模式)。跟踪程序、重复中断处理程序200收集机器状态信息,包括CX寄存器,其指示该重复指令被设置要执行的次数。此外,重复中断处理程序200可以置位SSE标志199,以便跟踪该重复指令的执行,其重复次数在CX寄存器中被指示。
在第二选择中,当RE标志置位并且检测到重复指令时,则中断控制单元192直到最后一次执行该重复指令时才中断处理器。不过,第一次执行重复指令时,CX寄存器便被复制到重复计数寄存器182中。当检测到重复指令的最后的执行时,中断控制单元192则产生一个中断。重复指令处理程序读出在CX寄存器中的值和重复计数寄存器中的值之间的差。
第二选择提供的优点是,如果重复指令已经出现,则只跟踪所述重复指令。此外,一些重复指令是有条件的重复指令。使用这些指令可能需要把CX寄存器设置为其最高值,使得所述指令可以重复许多次,直到检测到一个条件。在有条件的重复指令的情况下,在最后执行之后跟踪该重复指令将提供更精确的跟踪。
现在参看图8,图8表示使用处理器内的重复使能标志的进程和程序的高层逻辑流程图。如图所示,该进程在框210开始,然后前进到框212。框212表示执行一个指令。接着,框216判断是否RE标志被置位。如果该RE标志没有被置位,则进程结束。如果RE标志被置位,则该进程转到框214。框214判断该被执行的指令是否是重复指令的第一次执行。如果该指令不是重复指令的第一次执行,则该进程结束。如果该指令是重复指令的第一次执行,则该进程转到框218。框218描述把CX寄存器中的值写入重复计数寄存器中。接着,框220描述产生跟踪中断,并且该进程结束。应当注意,在执行一个指令之后,如果所述指令不是重复指令,则可以判断所述指令是被取分支指令还是其它类型的专用指令。如果该指令是被取分支指令并且TBE标志被置位,则该进程将产生一个中断跟踪,以便跟踪该被取分支指令。
现在参看图9,图9表示使用处理器内的重复使能标志以跟踪一个已完成的重复指令的进程和程序的高层逻辑流程图。如图所示,该进程在框230开始,然后前进到框232。框232表示执行一个指令。接着,框240判断是否RE标志被置位。如果RE标志未被置位,则该进程结束。如果RE标志被置位,则该进程转到框234。框234判断该被执行的指令是否是重复指令。如果该指令不是重复指令,则该进程结束。如果该指令是重复指令,则该进程转到框236。框236确定指令是否是重复指令的第一次执行。如果是第一次执行,则进程转到框242。框242描述把CX寄存器的副本写入重复计数寄存器,然后进程返回到框232。
回到框236,如果该指令不是第一次执行,则该进程转到框238,以判断其是否是最后一次执行。如果其不是最后一次执行,则该进程转到框232;如果其是最后一次执行,则进程转到框244。框244描述产生一个跟踪中断,并且该进程结束。优选地,跟踪程序读出在重复计数寄存器中的值和CX寄存器中的值之间的差,以便记录该重复指令被执行的实际次数。
现在参看图10,图10表示按照本发明的方法、系统和程序,使能跟踪和存储重复指令的处理器的方框图。如图所示,处理器250包括一个中断控制单元252,其具有重复计数寄存器182和控制寄存器196,如图7所示。此外,中断控制单元252包括重复指令信息缓冲器259,用于存储多个重复指令而不仅仅是一个重复指令的计数。指令信息缓冲器259可以是一组专用寄存器,或者被并入现有寄存器内。重要的是,指令信息缓冲器259可以被跟踪程序读取。应当注意,指令信息缓冲器259可被共用,用于写重复指令的CX值,并用于写至和自被取分支指令的地址。例如,在指令缓冲器中的项目253包括重复指令和被取分支指令的信息。重复指令和被取分支指令的项目可以利用屏蔽技术或者可用于对缓冲器中的数据之间进行区分的其它技术来区分。
处理器在指令信息缓冲器259中放置CX寄存器值的副本。RE标志198和TBE标志197可用于限定指令信息缓冲器259的使用。如果置位RE标志198,则处理器应在重复指令信息缓冲器中存储CX寄存器值(指示该重复指令的计数)。此外,如果置位TBE标志197,则处理器应当存储自和至被取分支指令的地址。在这个例子中,指令信息缓冲器259以轮转的方式被填充。始端指针258和末端指针256用于指向指令信息缓冲器259中的第一项和最后一项。
作为第一选择,在RE标志198被置位时,当检测到第一个重复指令,CX寄存器的值被复制到指令信息缓冲器259中。然后,指令信息缓冲器259包含至少被执行一次的每个重复指令的预期的计数。
作为第二选择,在RE标志198被置位时,当检测到重复指令的第一次执行,CX寄存器值可被复制到重复计数寄存器182中。然后,当检测到该重复指令的最后执行时,处理器复制在重复计数寄存器182中的原始CX寄存器值和在最后重复指令执行之后的CX寄存器值之间的差,使得该重复指令被执行的实际次数被存储在指令信息缓冲器259中。
为了避免缓冲器溢出,将RE满标志254和指令信息缓冲器259相关联。当指令信息缓冲器259满时,RE满标志254被置位,因而产生中断。可替代地,其它类型的标志能够引起中断。例如,如果响应被取分支指令而置位TBE标志197,则可以启动一个中断,以便清空指令信息缓冲器259。
响应所述中断,处理器250调用一个跟踪程序,例如重复中断处理程序200,以试图清空指令信息缓冲器259。在重复中断处理程序200的控制下把指令信息缓冲器259腾空到另一个存储器单元。一旦完成被缓冲的信息的转移,重复中断处理程序200便发出一个从中断返回(RFI),从而将控制返还给处理器260,此时处理器260复位始端指针258和末端指针256。
现在参看图11,图11表示按照本发明的方法、系统和程序,使能跟踪和在处理器外部的存储器内存储重复指令的处理器的方框图。处理器260与处理器250类似,不同之处在于,处理器260利用重复指令信息缓冲器指针269代替指令信息缓冲器。在处理器260内的缓冲器的大小限制与在处理器260的外部的存储器中可利用的存储区域相比是一种较大的限制。因此,重复指令缓冲器指针269指向该处理器外部的存储器中的一个可以找到指令信息缓冲器的位置。应当注意,也可以使用指令信息缓冲器存储被取分支指令。此外,应当注意,可以使用一种指向一个单独的被取分支指令信息缓冲器的一种单独的被取分支指令信息缓冲器指针。
当合适时,所述处理器向由重复指令缓冲器指针269所指的指令信息缓冲器写入CX寄存器值的副本。或者,该处理器向由重复指令缓冲器指针269所指的指令信息缓冲器写入CX寄存器值和重复计数寄存器182中存储的值之间的差。指令信息缓冲器(IB)的大小被保持在IB大小寄存器268内。下一个未使用的项目偏移缓冲器的指示器被保持在“下一”寄存器266中。当重复指令信息缓冲器满时,置位满标志264,这产生一个中断,调用重复中断处理程序200,以控制将指令信息缓冲器存储到一个跟踪缓冲器单元。
现在参看图12,图12表示利用重复使能标志跟踪缓冲器中的重复指令计数的进程和程序的高层逻辑流程图。如图所示,该进程在框270开始,而后前进到框272。框272表示执行一个指令。接着,框276判断是否已置位RE标志。如果RE标志被置位,则该进程转到框274,否则该进程转到框286。框274判断该被执行的指令是否是重复指令的第一次执行。如果该被执行的指令是重复指令的第一次执行,则该进程转到框278;否则该进程结束。框278描述把CX寄存器计数的副本写入指令信息缓冲器中。或者,CX寄存器计数的副本可被写入由重复指令信息缓冲器指针所指的指令信息缓冲器中。此外,或者,当检测到重复指令的第一次执行时,CX寄存器的值可被存储在一个重复计数寄存器中。此后当检测到该重复指令的最后一次执行时,在重复计数寄存器中存储的CX寄存器中的值和CX寄存器的当前值之间的差被存入指令信息缓冲器中。
接着,框280判断指令信息缓冲器是否已满。如果指令信息缓冲器未满,则使末端指针递增并结束该进程;否则,该进程转到框282。框282表示置位满标志。接着,框284描述产生一个跟踪中断,并结束该进程。
回该到进程的开始步骤,框286描述判断是否置位了TBE标志。如果TBE标志被置位,则该进程转到框285;否则该进程结束。框285判断一个分支是否被采取。如果未采取一个分支,则该进程结束。如果采取了一个分支,则该进程转到框287。框287表示将自和至地址复制到标为被取分支记录的指令信息缓冲器中,然后进程转到框280。
现在参看图13,图13表示按照本发明的方法、系统和程序,允许控制对重复指令的跟踪的处理器的方框图。如图所示,除去一个处理器内一般具有的其它部件之外,处理器290包括性能监视器292。性能监视器292包括计数寄存器294和控制寄存器196。
计数寄存器294包括重复出现计数器296。按照一种选择,重复出现计数器296被设置用于计数重复指令的出现。该计数器被编程为差一步溢出。在检测到出现重复指令时,该计数器增加而溢出,从而触发一个中断。所述中断调用重复中断处理程序,用于跟踪该指令流,包括CX寄存器中的值。CX寄存器中的值可以指示重复指令被调度而执行的次数。
此外,计数寄存器294包括重复执行计数器298。按照第二选择,重复出现计数器296被设置来计数重复指令的完成的出现。重复执行计数器298被设置用于计数一个单个重复指令实际上被执行的次数。在检测到第一个重复指令时,重复执行计数器298开始计数该重复指令执行的次数。在检测到该重复指令的完成时,重复出现计数器296加一,从而引起溢出,其触发一个中断。所述中断调用重复中断处理程序200,以便读取重复执行计数器298中的值。具体地,从重复执行计数器298中读取的值是该重复指令实际被执行的次数。应当注意,计数寄存器294可以包括其它的计数器,使得在中断发生之前可以计数多个重复指令执行的次数。
现在参看图14,图14表示利用性能监视计数器控制中断以便跟踪重复指令的进程和程序的高层逻辑流程图。如图所示,该进程在框300开始,此后前进到框302。框302表示被执行的指令的检测。接着,框306判断是否RE标志被置位。如果RE标志被置位,则该进程转到框304;否则该进程结束。框304判断该被执行的指令是否是重复指令的第一次执行。如果该被执行的指令是重复指令的第一次执行,则该进程转到框308;否则该进程结束。框308描述使重复出现计数器加一。接着,框310判断重复出现计数器是否溢出。如果该重复出现计数器溢出,则该进程转到框312;否则该进程结束。框312描述产生一个跟踪中断,并且该进程结束。
现在参看图15,图15表示通过多个性能监视计数器控制中断以便跟踪重复指令的进程和程序的高层逻辑流程图。如图所示,该进程在框320开始,然后前进到框322。框322表示被执行的指令的检测。接着,框326判断是否RE标志被置位。如果RE标志被置位,则该进程转到框324;否则该进程结束。框324判断该被执行的指令是否是重复指令的第一次执行。如果该被执行的指令是重复指令的第一次执行,则该进程转到框328;否则该进程结束。框328表示使重复执行计数器加一。接着,框330表示检测一个被执行的指令。此后,框332判断该被执行的指令是否是重复指令的最后一次执行。如果该被执行的指令是重复指令的最后一次执行,则该进程转到框334;否则该进程转到框328,除非检测到一个越权(override)中断指令。框334描述使重复执行计数器加一。接着,框336描述使重复出现计数器加一。框338判断重复出现计数器是否溢出。如果重复出现计数器溢出,则该进程转到框340;否则该进程结束。框340描述产生一个跟踪中断,并且结束该进程。
现在参看图16,图16表示用于在一个应用程序中一次一个重复指令地插入跟踪异常分支的进程和程序的高层逻辑流程图。所述的进程和程序可以由跟踪程序,例如重复中断处理程序执行。所述进程最好一次一个重复指令地插入中断异常分支。如图所示,该进程在框350开始,然后前进到框351。框351中,对于第一顺序重复指令,修改操作码以便引起异常(引起中断)。接着,框352判断是否检测到使程序经过该被修改的重复指令的被取分支中断。如果检测到经过该被修改的重复指令的被取分支中断,则该进程转到框354。框354恢复先前被修改的重复指令的操作码。接着,框35 6修改下一个顺序重复指令的操作码,从而引起中断,并且该进程返回到框352。
回到框352,如果未检测到被取分支中断,则该进程转到框358。框358判断是否检测到用于该被修改的重复指令的陷阱。如果未检测到陷阱,则该进程判断是否在框364达到应用程序的结尾,并且如果未达到应用程序的结尾则返回框352。如果检测到陷阱,则该进程转到框360,将CX寄存器和该指令流的其它部分读入跟踪缓冲器。接着,框362中恢复该重复指令的操作码,使得从中断返回并且该进程转到框356。
重要的是注意到,虽然本发明在具有完整功能的数据处理系统的环境下进行了说明,但是本领域普通技术人员应当理解,本发明的进程能够以计算机可读介质的指令的形式以及各种形式分发,并且不管实际上用于实现该分发的信号承载介质的具体类型,本发明都同样适用。计算机可读介质的例子包括可记录型的介质,例如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM以及传输型介质,例如数字和模拟通信链路,利用传输形式的有线或无线通信链路,例如射频和光波传输。计算机可读介质还可以采取编码格式的形式,其在实际地用于特定的数据处理系统中时被译码。
虽然本发明参照优选实施例进行了特定的显示和描述,但是本领域技术人员应当理解,不脱离本发明的精神和范围,可以对本发明的形式和细节进行各种改变。
Claims (15)
1.一种使能跟踪重复指令的方法,包括:
在处理器内执行一个重复指令;
响应检测到在所述重复指令的最后一次执行期间置位的重复指令标志,在所述处理器内启动一个中断;以及
使能在所述中断期间从所述处理器内的一个存储单元中读取所述重复指令的执行的计数。
2.按照权利要求1所述的使能跟踪重复指令的方法,还包括:
响应检测到所述重复指令的第一次执行,把所述重复指令的第一计数值复制到所述存储单元中,所述存储单元包括在所述处理器内的重复计数寄存器和可由所述处理器访问的指令信息缓冲器当中的至少一个。
3.按照权利要求1所述的使能跟踪重复指令的方法,其中所述重复指令标志是以下当中的至少一个:被置位引起中断的重复使能标志,由溢出、跟踪异常分支指令、性能监视计数器的溢出置位的缓冲器满标志。
4.按照权利要求1所述的使能跟踪重复指令的方法,其中使能读取所述重复指令的执行的计数的步骤还包括:
使能一个跟踪程序从包含保持所述执行的计数的所述处理器内的CX寄存器、保持所述执行的计数的所述处理器内的重复计数寄存器、可以通过所述处理器访问的保持所述执行的计数的指令信息缓冲器中的至少一个的所述存储单元,读取保持执行的第一计数的所述重复计数寄存器和保持执行的第二计数的所述CX寄存器之间的差。
5.按照权利要求1所述的使能跟踪重复指令的方法,还包括:
跟踪作为所述处理器内的存储单元的性能监视计数器内的所述执行的计数;以及
使能从所述性能监视计数器读取所述执行的计数。
6.按照权利要求5所述的使能跟踪重复指令的方法,还包括:
只在跟踪多个重复指令的执行的计数之后,启动所述中断。
7.按照权利要求1所述的使能跟踪重复指令的方法,包括:
响应检测到中断,使能一个跟踪程序从所述存储单元中读取重复指令的执行的计数以及执行的地址到固定缓冲器中;以及
控制所述执行的地址与在所述执行的地址存储的可执行程序的指令的匹配,以将所述执行的计数映射到所述可执行程序内的一个特定的重复指令。
8.一种使能跟踪重复指令的系统,包括:
可由跟踪程序跟踪的处理器;
用于在所述处理器内执行重复指令的装置;
用于响应检测到在所述重复指令的最后一次执行期间置位的重复指令标志,在所述处理器内启动一个中断的装置;以及
用于使能在所述中断期间从所述处理器内的存储单元中读取所述重复指令的执行的计数的装置。
9.按照权利要求8所述的使能跟踪重复指令的系统,还包括:
用于响应检测到所述重复指令的第一次执行,把所述重复指令的第一计数值复制到所述存储单元中的装置,所述存储单元包括在所述处理器内的重复计数寄存器和可由所述处理器访问的指令信息缓冲器中的至少一个。
10.按照权利要求8所述的使能跟踪重复指令的系统,其中所述重复指令标志是以下当中的至少一个:被置位引起中断的重复使能标志,由溢出、跟踪异常分支指令、性能监视计数器的溢出置位的缓冲器满标志。
11.按照权利要求8所述的使能跟踪重复指令的系统,其中使能读取所述重复指令的执行的计数的装置还包括:
用于使能一个跟踪程序从包含保持所述执行的计数的所述处理器内的CX寄存器、保持所述执行的计数的所述处理器内的重复计数寄存器、可以通过所述处理器访问的用于保持所述执行的计数的指令信息缓冲器中的至少一个的所述存储单元,读取保持执行的第一计数的所述重复计数寄存器和保持执行的第二计数的所述CX寄存器之间的差的装置。
12.按照权利要求8所述的使能跟踪重复指令的系统,还包括:
用于跟踪作为所述处理器内的存储单元的性能监视计数器内的所述执行的计数的装置;以及
用于使能从所述性能监视计数器读取所述执行的计数的装置。
13.按照权利要求12所述的使能跟踪重复指令的系统,还包括:
用于只在跟踪多个重复指令的执行的计数之后,启动所述中断的装置。
14.按照权利要求8所述的使能跟踪重复指令的系统,包括:
用于响应检测到中断,使能一个跟踪程序从所述存储单元中读取重复指令的执行的计数以及执行的地址到固定缓冲器中的装置;以及
用于控制所述执行的地址与在所述执行的地址存储的可执行程序的指令的匹配,以将所述执行的计数映射到所述可执行程序内的一个特定的重复指令的装置。
15.一种用于控制重复指令的跟踪的方法,包括:
修改第一顺序重复指令,从而在处理器中引起中断;
响应检测到所述处理器中的所述中断,跟踪所述重复指令,并修改所述重复指令以从中断返回;以及
响应检测到经过所述第一顺序重复指令的分支中断,恢复所述重复指令,并修改下一个顺序重复指令以引起中断。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/325,078 | 2002-12-19 | ||
US10/325,078 US7062684B2 (en) | 2002-12-19 | 2002-12-19 | Enabling tracing of a repeat instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1508690A true CN1508690A (zh) | 2004-06-30 |
CN1252594C CN1252594C (zh) | 2006-04-19 |
Family
ID=32593645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200310121555.3A Expired - Fee Related CN1252594C (zh) | 2002-12-19 | 2003-12-18 | 使能跟踪重复指令的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7062684B2 (zh) |
JP (1) | JP3731887B2 (zh) |
CN (1) | CN1252594C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100440163C (zh) * | 2005-11-10 | 2008-12-03 | 国际商业机器公司 | 对计算机程序进行运行时分析的方法和系统 |
CN102693176A (zh) * | 2011-01-19 | 2012-09-26 | 株式会社东芝 | 处理器动作检查系统及其检查方法 |
CN103853591A (zh) * | 2012-11-30 | 2014-06-11 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
CN104216812B (zh) * | 2014-08-29 | 2017-04-05 | 杭州华为数字技术有限公司 | 一种性能监控单元多事件统计的方法和装置 |
CN107273198A (zh) * | 2017-06-16 | 2017-10-20 | 北京得瑞领新科技有限公司 | 一种ssd控制芯片的中断控制方法、装置及ssd设备 |
CN108804139A (zh) * | 2017-06-16 | 2018-11-13 | 上海兆芯集成电路有限公司 | 可编程设备及其操作方法和计算机可用介质 |
CN111736946A (zh) * | 2019-03-25 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 用于监视虚拟机i/o流量的系统和方法 |
CN111782273A (zh) * | 2020-07-16 | 2020-10-16 | 中国人民解放军国防科技大学 | 一种提高重复程序执行性能的软硬件协同缓存装置 |
CN111819551A (zh) * | 2018-03-13 | 2020-10-23 | Arm有限公司 | 跟踪分支指令 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7287245B2 (en) * | 2003-09-17 | 2007-10-23 | Faraday Technology Corp. | Method for real-time instruction information tracing |
US6925424B2 (en) * | 2003-10-16 | 2005-08-02 | International Business Machines Corporation | Method, apparatus and computer program product for efficient per thread performance information |
US7412693B2 (en) * | 2004-03-05 | 2008-08-12 | Sun Microsystems, Inc. | Method and apparatus for determining frequency of execution for compiled methods within a virtual machine |
US20060047495A1 (en) * | 2004-09-01 | 2006-03-02 | Jesus Sanchez | Analyzer for spawning pairs in speculative multithreaded processor |
US7380241B2 (en) * | 2004-12-07 | 2008-05-27 | International Business Machines Corporation | Scalable and improved profiling of software programs |
US8161461B2 (en) * | 2005-03-24 | 2012-04-17 | Hewlett-Packard Development Company, L.P. | Systems and methods for evaluating code usage |
US7454666B1 (en) * | 2005-04-07 | 2008-11-18 | Sun Microsystems, Inc. | Real-time address trace generation |
US7433803B2 (en) * | 2005-04-27 | 2008-10-07 | Freescale Semiconductor, Inc. | Performance monitor with precise start-stop control |
US7519797B1 (en) * | 2006-11-02 | 2009-04-14 | Nividia Corporation | Hierarchical multi-precision pipeline counters |
JP4836811B2 (ja) * | 2007-01-26 | 2011-12-14 | 株式会社東芝 | パフォーマンスモニタ装置および情報処理装置 |
US8055886B2 (en) | 2007-07-12 | 2011-11-08 | Texas Instruments Incorporated | Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction |
US9459984B2 (en) * | 2007-10-29 | 2016-10-04 | Intel Corporation | Method and systems for external performance monitoring for virtualized environments |
JP5161022B2 (ja) * | 2008-10-06 | 2013-03-13 | 日本電信電話株式会社 | 解析装置、解析方法及び解析プログラム |
GB2487355B (en) | 2011-01-13 | 2020-03-25 | Advanced Risc Mach Ltd | Processing apparatus, trace unit and diagnostic apparatus |
GB2489000B (en) | 2011-03-14 | 2019-09-11 | Advanced Risc Mach Ltd | Diagnosing code using single step execution |
US8910125B2 (en) * | 2012-09-27 | 2014-12-09 | International Business Machines Corporation | Monitoring software performance |
US9058415B1 (en) * | 2013-03-15 | 2015-06-16 | Google Inc. | Counting events using hardware performance counters and annotated instructions |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4910663A (en) * | 1987-07-10 | 1990-03-20 | Tandem Computers Incorporated | System for measuring program execution by replacing an executable instruction with interrupt causing instruction |
JPH0322146A (ja) | 1989-06-20 | 1991-01-30 | Toshiba Corp | マイクロプログラム制御装置 |
JPH0454636A (ja) | 1990-06-25 | 1992-02-21 | Hitachi Ltd | プロセッサ |
JPH05173779A (ja) | 1991-12-25 | 1993-07-13 | Toshiba Corp | デジタル演算集積回路 |
US5359608A (en) | 1992-11-24 | 1994-10-25 | Amdahl Corporation | Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions |
US5446876A (en) | 1994-04-15 | 1995-08-29 | International Business Machines Corporation | Hardware mechanism for instruction/data address tracing |
US5574937A (en) | 1995-01-30 | 1996-11-12 | Intel Corporation | Method and apparatus for improving instruction tracing operations in a computer system |
US5944841A (en) | 1997-04-15 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor with built-in instruction tracing capability |
US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
US5933626A (en) | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
EP0992907B1 (en) * | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Trace fifo management |
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 |
JP3842474B2 (ja) * | 1999-02-02 | 2006-11-08 | 株式会社ルネサステクノロジ | データ処理装置 |
US6915416B2 (en) * | 2000-12-28 | 2005-07-05 | Texas Instruments Incorporated | Apparatus and method for microcontroller debugging |
US6976158B2 (en) * | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
US7039793B2 (en) * | 2001-10-23 | 2006-05-02 | Ip-First, Llc | Microprocessor apparatus and method for accelerating execution of repeat string instructions |
-
2002
- 2002-12-19 US US10/325,078 patent/US7062684B2/en not_active Expired - Fee Related
-
2003
- 2003-12-15 JP JP2003417339A patent/JP3731887B2/ja not_active Expired - Fee Related
- 2003-12-18 CN CN200310121555.3A patent/CN1252594C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100440163C (zh) * | 2005-11-10 | 2008-12-03 | 国际商业机器公司 | 对计算机程序进行运行时分析的方法和系统 |
CN102693176A (zh) * | 2011-01-19 | 2012-09-26 | 株式会社东芝 | 处理器动作检查系统及其检查方法 |
CN103853591A (zh) * | 2012-11-30 | 2014-06-11 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
CN103853591B (zh) * | 2012-11-30 | 2017-06-16 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
CN104216812B (zh) * | 2014-08-29 | 2017-04-05 | 杭州华为数字技术有限公司 | 一种性能监控单元多事件统计的方法和装置 |
CN108804139A (zh) * | 2017-06-16 | 2018-11-13 | 上海兆芯集成电路有限公司 | 可编程设备及其操作方法和计算机可用介质 |
CN107273198A (zh) * | 2017-06-16 | 2017-10-20 | 北京得瑞领新科技有限公司 | 一种ssd控制芯片的中断控制方法、装置及ssd设备 |
CN108804139B (zh) * | 2017-06-16 | 2020-10-20 | 上海兆芯集成电路有限公司 | 可编程设备及其操作方法和计算机可用介质 |
CN111819551A (zh) * | 2018-03-13 | 2020-10-23 | Arm有限公司 | 跟踪分支指令 |
CN111736946A (zh) * | 2019-03-25 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 用于监视虚拟机i/o流量的系统和方法 |
CN111736946B (zh) * | 2019-03-25 | 2024-02-27 | 阿里巴巴集团控股有限公司 | 用于监视虚拟机i/o流量的系统和方法 |
CN111782273A (zh) * | 2020-07-16 | 2020-10-16 | 中国人民解放军国防科技大学 | 一种提高重复程序执行性能的软硬件协同缓存装置 |
CN111782273B (zh) * | 2020-07-16 | 2022-07-26 | 中国人民解放军国防科技大学 | 一种提高重复程序执行性能的软硬件协同缓存装置 |
Also Published As
Publication number | Publication date |
---|---|
US7062684B2 (en) | 2006-06-13 |
JP3731887B2 (ja) | 2006-01-05 |
JP2004199685A (ja) | 2004-07-15 |
CN1252594C (zh) | 2006-04-19 |
US20040123084A1 (en) | 2004-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1252594C (zh) | 使能跟踪重复指令的方法和系统 | |
CN1648871A (zh) | 发生中断时按其类型限定性能监视事件收集的方法与装置 | |
CN100407147C (zh) | 为记录事件提供前置与后置处理程序的方法 | |
CN100382061C (zh) | 按照类型对中断计数的方法和装置 | |
CN1308825C (zh) | 用于在smt处理器中进行cpi负载平衡的系统和方法 | |
CN1278224C (zh) | 在多处理器宿主系统上进行多处理器仿真的方法和系统 | |
CN1311351C (zh) | 可以激活其他线程的可编程事件驱动让步装置、系统和方法 | |
CN1304941C (zh) | 用于自主硬件辅助的线程栈跟踪的装置与方法 | |
CN1308826C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
CN100357911C (zh) | 对代码覆盖使用硬件辅助的自主测试用例反馈的方法和设备 | |
CN102341790B (zh) | 数据处理系统及其使用的方法 | |
CN104484158B (zh) | 微处理器以及微处理器操作方法 | |
CN1924825A (zh) | 用于具有不同处理器频率的自适应跟踪的方法及设备 | |
US10592430B2 (en) | Memory structure comprising scratchpad memory | |
CN104335175A (zh) | 基于系统性能度量在系统节点之间标识和迁移线程的方法和系统 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN1849585A (zh) | 处理特许事件的多个虚拟机监控器的使用 | |
CN1894662A (zh) | 作为用于执行引导码的ram的处理器缓存存储器 | |
CN1577290A (zh) | 用于方便成形一个应用程序的系统和方法 | |
CN1625733A (zh) | 将装载操作的猜测结果与寄存器值相连接的系统与方法 | |
CN104704474A (zh) | 用于管理的运行时间的基于硬件的运行时间检测设施 | |
CN104380264A (zh) | 运行时间检测报告 | |
CN104169887A (zh) | 通过指令操作码的运行时间检测间接采样 | |
Pereira et al. | Dynamic phase analysis for cycle-close trace generation | |
CN114253816A (zh) | 确定崩溃日志记录的结构的设备、系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060419 Termination date: 20100118 |