CN1795438B - 用于跨距剖析软件应用的方法和设备 - Google Patents
用于跨距剖析软件应用的方法和设备 Download PDFInfo
- Publication number
- CN1795438B CN1795438B CN2004800147829A CN200480014782A CN1795438B CN 1795438 B CN1795438 B CN 1795438B CN 2004800147829 A CN2004800147829 A CN 2004800147829A CN 200480014782 A CN200480014782 A CN 200480014782A CN 1795438 B CN1795438 B CN 1795438B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- stride
- instruction address
- instruction
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Abstract
公开了一种用于跨距剖析软件应用的方法和设备。示例性的系统使用硬件性能计数器来报告与由某个事件(诸如数据高速缓存器未命中)所触发的存储器访问指令相关联的数据地址和指令地址。当相同的指令地址被与一个以上的数据地址相关联时,记录在两个数据地址之间的差异。当对于相同的指令记录了这些数据地址差异中的两个或更多时,该系统确定与所述指令相关联的跨距是所述两个或更多差异的最大公约数。此跨距可以由编译器用来优化数据高速缓存器预取。另外,通过在审查阶段和跳跃阶段之间循环可以降低与监视数据高速缓存器未命中的地址相关联的任何开销。在审查阶段期间比在跳跃阶段期间监视更多的数据高速缓存器未命中。
Description
技术领域
本发明涉及软件编译器,并且尤其涉及用于跨距剖析(profiling)软件应用的方法和设备。
背景技术
处理器和存储器速度之间的差距继续加大。结果,计算机性能逐渐地用高速缓存器分级结构的有效性来确定。然而,处理器工作量典型地会招致显著的高速缓存未命中。
预取是用于改进高速缓存器分级结构有效性的公知且有效的技术。用于改进预取准确性的一种编译器技术在于统计地发现具有恒定“跨距(stride)”的存储器访问指令(例如,加载、存储等)。例如,每十六个字节加载一次的加载指令易于被预取,这是因为编译器提前知道将需要什么字节。然而,由于直到运行时才被解析的间接数组引用和指针废弃,导致编译器不能统计地发现具有恒定跨距的许多存储器访问指令。
为了解决此问题,可以把“工具”代码(即,测试码)添加到软件应用以便直接监视由一个或多个存储器访问指令所访问的实际数据地址。然而,工具代码给软件应用增加了显著的开销,这使所述应用慢了下来(例如,慢了10倍)。
发明内容
在本发明的第一个方面,提供了一种用于跨距剖析软件应用的方法,所述方法包括:
从硬件性能计数器接收用于表示第一指令地址和第一数据地址的数据;
从所述硬件性能计数器接收用于表示第二指令地址和第二数据地址的数据;
如果所述第一指令地址等于所述第二指令地址,那么就通过从所述第二数据地址中减去所述第一数据地址来确定第一跨距积;并且
根据所述第一跨距积来确定跨距。
优选地,根据所述第一跨距积确定跨距包括:确定所述跨距等于所述第一跨距积。
优选地,所述方法还包括:
从所述硬件性能计数器接收用于表示第三指令地址和第三数据地址的数据;
如果所述第二指令地址等于所述第三指令地址,那么就通过从所述第三数据地址中减去所述第二数据地址来确定第二跨距积。
优选地,根据所述第一跨距积确定所述跨距包括:确定所述第一跨距积和所述第二跨距积的最大公约数。
优选地,从硬件性能计数器接收表示第一指令地址和第一数据地址的数据包括:接收所述第一指令地址和所述第一数据地址作为表示第一多个连续的数据高速缓存器未命中的第一数据集的一部分。
优选地,所述方法还包括:
接收用于表示第一多个连续的数据高速缓存器未命中的第一数据集;并且
接收用于表示第二多个连续的数据高速缓存器未命中的第二数据集,其中接收第一数据集和接收第二数据集被按预定的周期分隔开,在所述预定的周期期间,不接收用于表示连续的数据高速缓存器未命中的数据。
优选地,所述方法还包括:
从所述硬件性能计数器接收用于表示第三指令地址和第三数据地址的数据;
从所述硬件性能计数器接收用于表示第四指令地址和第四数据地址的数据;
如果所述第一指令地址等于所述第三指令地址和所述第四指令地址,那么就通过从所述第四数据地址中减去所述第三数据地址来确定第二跨距积。
优选地,根据所述第一跨距积确定所述跨距包括:确定所述第一跨距积和所述第二跨距积的最大公约数。
优选地,从硬件性能计数器接收用于表示第一指令地址和第一数据地址的数据包括:接收所述第一指令地址和所述第一数据地址作为用于表示多个连续的数据高速缓存器未命中的数据集的一部分。
优选地,所述方法还包括以周期性的脉冲串系列对硬件性能计数器进行采样。
在本发明的第二个方面,提供了一种用于剖析软件应用的设备,所述设备包括:
用于执行软件应用和剖析工具的处理器;
硬件性能计数器,被可操作地耦合到所述处理器,所述硬件性能计数器用于向剖析工具提供数据,所述数据用于表示第一指令地址、与所述第一指令地址相关联的第一数据地址、第二指令地址和与所述第二指令地址相关联的第二数据地址,
其中如果所述第一指令地址等于所述第二指令地址,那么所述剖析工具就根据所述第一数据地址和所述第二数据地址之间的差异来确定跨距。
优选地,
由硬件性能计数器提供给所述剖析工具的数据还包括第三指令地址和与所述第三指令地址相关联的第三数据地址,
如果所述第一指令地址等于所述第二指令地址,那么所述剖析工具就通过从所述第二数据地址中减去所述第一数据地址来确定第一跨距积,
如果所述第二指令地址等于所述第三指令地址,那么所述剖析工具就通过从所述第三数据地址中减去所述第二数据地址来确定第二跨距积,并且
所述剖析工具根据所述第一跨距积和所述第二跨距积来确定跨距。
优选地,所述剖析工具通过确定所述第一跨距积和所述第二跨距积的最大公约数来确定所述跨距。
优选地,当在执行软件应用期间出现第一次数据高速缓存器未命中时,所述硬件性能计数器向所述剖析工具提供用于表示所述第一指令地址和所述第一数据地址的数据。
优选地,当在执行软件应用期间出现第二次数据高速缓存器未命中时,所述硬件性能计数器向所述剖析工具提供用于表示所述第二指令地址和所述第二数据地址的数据。
优选地,所述第一次数据高速缓存器未命中和第二次数据高速缓存器未命中是与所述第一指令地址相关联的连续的数据高速缓存器未命中。
优选地,所述剖析工具以周期性的脉冲串系列对所述硬件性能计数器进行采样。
在本发明的第三个方面,提供了一种用于剖析软件应用的设备,所述设备包括:
硬件性能计数器;
跨距确定模块,被可操作地耦合到所述硬件性能计数器;和
最大公约数模块,被可操作地耦合到阶段管理器。
优选地,所述硬件性能计数器被构造成捕获用于表示与数据高速缓存器未命中相关联的指令地址以及与数据高速缓存器未命中相关联的数据地址的数据。
优选地,所述跨距确定模块被构造成在第一指令地址等于第二指令地址的情况下从第二数据地址中减去第一数据地址。
优选地,所述设备还包括阶段管理器,所述阶段管理器被可操作地耦合到所述跨距确定模块。
优选地,所述阶段管理器被构造成产生从第一跳跃阶段到检查阶段的第一转变。
优选地,所述阶段管理器被构造成产生从检查阶段到第二跳跃阶段的第二转变。
优选地,所述最大公约数模块被构造成确定第一跨距积和第二跨距积的最大公约数。附图说明
图1是图示用于所公开系统的环境的示例性计算机系统的框图。
图2是图示用于所公开系统的环境的另一示例性计算机系统的框图。
图3是包括加载指令的代码部分的例子。
图4是示例性的阶段图。
图5是表示示例性机器可读指令的流程图,所述机器可读指令可以由设备来执行以实现用于跨距剖析软件应用的示例性方法。
具体实施方式
在总体上,所公开的系统使用硬件性能计数器来报告与由某个事件(诸如数据高速缓存器未命中)所触发的存储器访问指令相关联的数据地址和指令地址。当相同的指令地址被与一个以上的数据地址相关联时,记录两个数据地址之间的差异。当对于相同的指令记录了这些数据地址差异中的两个或更多时,该系统确定与所述指令相关联的跨距是所述两个或更多差异的最大公约数。此跨距可以被编译器用于优化数据高速缓存器预取。另外,通过在审查阶段和跳跃阶段之间循环可以降低与监视数据高速缓存器未命中的地址相关联的任何开销。在审查阶段期间比在跳跃阶段期间监视更多的数据高速缓存器未命中。
在图1中图示了示例性计算机系统100的框图。计算机系统100可以是个人计算机(PC),也可以是任何其它计算装置。在一个例子中,计算机系统100包括由电源103供电的主处理单元102。主处理单元102可以包括处理器104,所述处理器104由系统互连106电耦合到主存储设备108和一个或多个接口电路110。在一个例子中,系统互连106是地址/数据总线。当然,本领域普通技术人员应当容易地理解到:可以使用不同于总线的互连来把处理器104连接到主存储设备108。例如,一个或多个专用线路和/或交叉开关(crossbar)可以用来把处理器104连接到主存储设备108。
处理器104可以是任何类型的公知处理器,诸如来自微处理器的Intel Pentium系列、微处理器的Intel Itanium系列、微处理器的Intel Centrin系列和/或微处理器的Intel XScale系列的处理器。另外,处理器104可以包括任何类型的公知高速缓冲存储器,诸如静态随机存取存储器(static random access memory,SRAM)。主存储设备108可以包括动态随机存取存储器(dynamic random access memory,DRAM)和/或任何其它形式的随机存取存储器。例如,主存储设备108可以包括双倍数据速率随机存取存储器(double data rate randomaccess memory,DDRAM)。主存储设备108还可以包括非易失性存储器。在一个例子中,主存储设备108依照公知方式来存储由处理器104所执行的软件程序。
接口电路(一个或多个)110可以使用任何类型的公知接口标准来实现,诸如以太网接口和/或通用串行总线(Universal Serial Bus,USB)接口。一个或多个输入设备112可以被连接到接口电路110以便把数据和命令输入到主处理单元102中。例如,输入设备112可以是键盘、鼠标、触摸屏、跟踪板、轨迹球、等电点(isopoint)和/或语音识别系统。
一个或多个显示器、打印机、扬声器和/或其它输出设备114也可以经由一个或多个接口电路110被连接到主处理单元102。显示器114可以是阴极射线管(cathode ray tube,CRT)、液晶显示器(liquidcrystal displays,LCD)或任何其它类型的显示器。显示器114可以产生对在主处理单元102操作期间所产生的数据的可见指示。可见指示可以包括对操作员输入、所计算的值、所检测到的数据等的提示。
计算机系统100还可以包括一个或多个存储设备116。例如,计算机系统100可以包括一个或多个硬盘驱动器、光盘(compact disk,CD)驱动器、数字化多功能盘驱动器(digital versatile disk,DVD)和/或其它计算机介质输入/输出(I/O)设备。
计算机系统100还可以经由到网络118的连接来与其它设备交换数据。网络连接可以是任何类型的网络连接,诸如以太网连接、数字用户线路(digital subscriber line,DSL)、电话线路、同轴电缆等。网络118可以是任何类型的网络,诸如因特网、电话网络、有线电视网和/或无线网络。
在图2中图示了另一示例性计算机系统200。在此例子中,计算机系统200包括按照所示互相连接的处理器202、高速缓存器204、主存储器206、硬件性能计数器208、跨距确定模块210、最大公约数模块212和阶段管理器214。
处理器202也可以是任何类型的公知处理器,诸如来自微处理器的Intel Pentium系列、微处理器的Intel Itanium系列、微处理器的Intel Centrin系列和/或微处理器的Intel XScale系列的处理器。另外,处理器202可以包括任何类型的公知高速缓冲存储器204,诸如静态随机存取存储器(SRAM)。主存储设备206可以包括动态随机存取存储器(DRAM)和/或任何其它形式的随机存取存储器。例如,主存储设备206可以包括双倍数据速率随机存取存储器(DDRAM)。主存储设备206还可以包括非易失性存储器。在一个例子中,主存储设备206依照公知方式来存储由处理器202所执行的软件程序。
典型情况下,当处理器202遇到需要来自主存储器206的数据值的指令(例如,加载或存储指令)时,计算机系统200首先检查所需要的值是否存储在高速缓存器204中。如果所需要的值存储在了高速缓存器204中(即,出现高速缓存器命中),那么不必从主存储器206获取所需要的数据值。然而,如果所述数据值没有存储在高速缓存器204中(即,出现高速缓存器未命中),那么可以从主存储器206获取所述数据值。
在此例子中,每当出现数据高速缓存器未命中时,硬件性能计数器208就捕获导致数据高速缓存器未命中的指令(例如,加载或存储指令)的地址和所需要的数据值的地址。在图3中图示了包括加载指令302的代码部分300的例子。在所图示的例子中,把加载指令302与“1005”这一指令地址304相关联。类似地,把加载指令302与“2000+X”这一数据地址306相关联。用于保持作为执行加载指令302的结果而由处理器202所获取的数据值的存储单元取决于变址变量“X”(308)的值。例如,如果X=0,那么加载指令使位于存储单元2000的数据值被获取。如果X=48,那么加载指令使位于存储单元2048的数据值被获取。
换句话说,保持加载指令302的存储单元是“1005”,并且每当处理器202执行此指令时,地址“1005”将与该操作相关联。然而,保持作为执行此指令的结果而获取的数据值的地址可能会从加载指令302的一次执行到所述加载指令302的下一次执行发生变化,这取决于X的值。例如,如果X在加载指令302的每次执行之间增量48,那么加载指令302将加载存储单元2000、2048、2096等。在此例子中,加载指令302的跨距为48。
跨距确定模块210使用从硬件性能计数器208接收的数据地址和指令地址来确定某些指令的跨距(如果有的话)。例如,由于每当通过包括加载指令302的循环310时X增加48,所以图3中的加载指令302的跨距为48。如果硬件性能计数器208捕获每个指令地址和相关联的数据地址,那么跨距确定模块210就可能要监视指令地址1005的两次连续出现,继而从第一次出现的数据地址中减去第二次出现的数据地址以便确定跨距(例如,2048-2000=48)。
然而,如果硬件性能计数器208只捕获出现高速缓存器未命中时的指令和数据地址,那么与相同指令地址相关联的两个连续数据地址之间的差异可能是实际跨距的某个倍数。例如,图3中的加载指令302的跨距为48。然而,如果只有加载指令302的第一次出现(例如,数据地址=2000)和加载指令302的第六次出现(例如,数据地址=2240)遭受高速缓存器未命中,那么这两个数据地址之间的差异(即,2240-2000)将是240(即,48*5)而不是48。在此例子中,值240是“跨距积”。
由于未报告的指令的出现(例如,由于硬件性能计数器208未报告数据高速缓存器命中)所致,跨距积是跨距值(例如,48)乘以某个跨距倍数(例如,5)。可以通过从与相同指令地址相关联的前一数据地址值中减去一个数据地址值来确定跨距积(例如,2240-2000=240)。
为了根据跨距积来确定实际的跨距值,计算机系统200包括最大公约数模块212。最大公约数模块212依照公知方式取得两个或更多的输入并且确定所述输入的最大公约数。具体地,最大公约数模块212取得两个或更多的跨距积并且确定跨距值。例如,假定硬件性能计数器208报告相同的加载指令302遭受了三次数据高速缓存器未命中。进一步假定在此例子中与加载指令302的第一次报告相关联的数据地址是2000,与加载指令302的第二次报告相关联的数据地址是2240,并且与加载指令302的第三次报告相关联的数据地址是2576。与此例子相关联的第一跨距积是240(即,2240-2000)。与此例子相关联的第二跨距积是336(即2576-2240)。240和336的最大公约数是48,并且在此例子中48是加载指令302的实际跨距。
在大部分计算系统200中,使用来自硬件性能计数器208的高速缓存器未命中数据来确定跨距值给计算机系统200增加了处理开销。为了降低此开销,计算机系统200包括阶段管理器214。阶段管理器214在两个或更多阶段之间转变跨距确定模块210。在图4中图示了示例性阶段图。在此例子中,阶段管理器214在跳跃阶段402和审查阶段404之间转变跨距确定模块210。在跳跃阶段402的每个实例期间,跨距确定模块210要比在审查阶段404期间处理来自硬件性能计数器208的、更少的高速缓存器未命中报告。例如,在跳跃阶段402期间,对于每1000个数据高速缓存器未命中,跨距确定模块210可能只对硬件性能计数器208采样一次。相比之下,在审查阶段404期间,跨距确定模块210可能对于每个数据高速缓存器未命中都对硬件性能计数器208进行采样。
在图5中图示了用于跨距剖析软件应用的示例性过程500。优选地是,过程500被实现在一个或多个软件程序中,所述软件程序依照公知方式存储在一个或多个存储器中并且由一个或多个处理器(例如,处理器104和/或处理器202)执行。然而,过程500的某些或全部块可以人工地执行和/或由某个其它设备执行。尽管参考在图5中所图示的流程图描述了过程500,然而本领域普通技术人员应当容易地理解可以使用用于执行过程500的许多其它方法。例如,可以修改许多块的次序,可以改变一个或多个块的操作,可以组合块,和/或可以删去块。
通常,示例性的过程500使用硬件性能计数器来报告与由某个事件(诸如数据高速缓存器未命中)所触发的存储器访问指令相关联的数据地址和指令地址。当相同的指令地址被与一个以上的数据地址相关联时,记录两个数据地址之间的差异。当对于相同的指令记录了这些数据地址差异中的两个或更多数据地址差异时,系统确定与所述指令相关联的跨距是所述两个或更多差异的最大公约数。此跨距可以由编译器用来优化数据高速缓存器预取。另外,通过在审查阶段和跳跃阶段之间循环可以降低与监视数据高速缓存器未命中的地址相关联的任何开销。在审查阶段期间比在跳跃阶段期间监视更多的数据高速缓存器未命中。
示例性过程500通过初始化几个变量而开始(块502)。具体地,示例性过程500初始化跳跃计数器、跳跃阈值、审查计数器、审查阈值和捕获数组。可以把这些变量中的每个都存储在任何存储器(诸如主存储器108、206)中。跳跃计数器用来对跳跃阶段期间所出现的数据高速缓存器(D高速缓存器)未命中的数目进行计数,而跳跃阈值用来触发从跳跃阶段402到审查阶段404的改变。跳跃阶段402用来降低对硬件性能计数器208进行采样的速率,以便降低与正在执行跨距剖析相关联的开销。例如,对于每个跳跃阶段402可以跳过一千个D高速缓存器未命中。
类似地,审查计数器用来对审查阶段404期间所出现的D高速缓存器未命中的数目进行计数,而审查阈值用来触发从一个审查阶段404到下一跳跃阶段402的改变。审查阶段404用来提高对硬件性能计数器208进行采样的速率,以便收集用于执行跨距剖析的数据。例如,在每个审查阶段404期间可以收集与一千个连续的D高速缓存器未命中相关联的指令和数据地址。捕获数组可以用来记录在每个审查阶段404期间所收集的地址。
一旦初始化了这些变量,过程500就通过等待D高速缓存器未命中来开始跳跃阶段402(块504)。在一个例子中,硬件性能计数器208被配置为每当出现D高速缓存器未命中就触发。因为这是跳跃阶段402,所以过程500只在每当出现D高速缓存器未命中时才增量跳跃计数器(块506)。当D高速缓存器未命中的数目超过跳跃阈值时,过程500继续至审查阶段404(块508)。
在审查阶段404中,对于每个D高速缓存器未命中,都从硬件性能计数器208接收指令地址和相关联的数据地址(块510)。所述指令地址是访问特定存储器段的指令的地址。数据地址是由所述指令所访问的特定存储器段的地址。当在审查阶段404期间出现D高速缓存器未命中时,过程500确定在捕获数组中是否已经记录了相同的指令地址(块512)。换句话说,过程500检查在此审查阶段404的早些时候该相同的指令是否遭受到D高速缓存器未命中。
如果相同的指令地址尚未被记录在捕获数组中(即,这是此特定的指令在此审查阶段404期间第一次遭受到D高速缓存器未命中),那么过程500就增量审查计数器(块514)并且检查审查计数器是否超过审查阈值(块516)。如果没有超过审查阈值(即,审查阶段404仍然在发生),那么过程500等待另一D高速缓存器未命中(块518)。当出现下一D高速缓存器未命中时,该过程再次从硬件性能计数器208接收指令地址和相关联的数据地址(块510)。如果此D高速缓存器未命中与不同的指令地址相关联(块512),那么过程500再次增量审查计数器(块514),并且再次检查审查计数器是否超过审查阈值(块516)。
然而,如果此D高速缓存器未命中与先前已经记录在捕获数组中的指令地址相关联(块512),那么过程500为此指令地址计算“跨距积”(决520)。跨距积是跨距值乘以跨距倍数。例如,如果跨距值是48字节而跨距倍数是5,那么跨距积是240。跨距倍数是D高速缓存器命中的结果。例如,如果特定的存储器访问指令遭受到D高速缓存器未命中,该D高速缓存器未命中后面是四个D高速缓存器命中,这四个D高速缓存器命中后面是另一D高速缓存器未命中,那么所述跨距倍数是5。通过从当前数据地址中减去先前与此指令地址相关联地记录的数据地址来确定跨距积。
然后过程500确定所计算出的跨距积是否是为此指令地址所计算出的第一个跨距积(块522)。例如,如果与此指令地址相关联只出现了两个高速缓存器未命中,那么只确定了一个跨距积(即,这是第一个跨距积)。然而,如果与此指令地址相关联已经出现了三个(或更多)高速缓存器未命中,那么可能已经确定了一个以上的跨距积。例如,第一次高速缓存器未命中的数据地址和第二次高速缓存器未命中的数据地址之间的差异可以产生第一跨距积,而第二次高速缓存器未命中的数据地址和第三次高速缓存器未命中的数据地址之间的差异可以产生第二跨距积。
如果所计算出的跨距积是为此指令地址所计算出的第一个跨距积(块522),那么过程500增量审查计数器(块514)并且检查审查计数器是否超过审查阈值(块516)。如果没有超过审查阈值(即,审查阶段404仍然在发生),那么过程500等待另一D高速缓存器未命中(块518)。
然而,如果所计算的跨距积不是为此指令地址所计算的第一个跨距积(块522),那么过程500确定此指令的跨距值(块524)。具体地,通过确定与此指令地址相关联的当前跨距积和与相同指令地址相关联的前一跨距积的最大公约数来计算跨距值。作为选择,可以用任意数目的跨距积来确定所述跨距值。例如,可以把三个跨距积的最大公约数用作为跨距值。
随后,过程500增量审查计数器(块514)并且检查所述审查计数器是否超过审查阈值(块516)。如果没有超过审查阈值(即,审查阶段404仍然在发生),那么过程500等待另一D高速缓存器未命中(块518)。然而,如果已经超过审查阈值,那么过程500重新初始化一定的变量(块502)并且返回到跳跃阶段402。
尽管以上公开了在其它组件中包括在硬件上执行的软件的示例性系统,然而应当注意,这种系统仅仅是说明性的而不应当被认为是限制性的。例如,预计这里所公开的任何或所有硬件和软件组件可以专门地体现在专用硬件、软件、固件或者硬件、固件和/或软件的某种组合中。
另外,尽管这里已经描述了一定的方法、设备和制造产品,然而本专利的覆盖范围并不局限于此。相反地,本专利完全覆盖落入所附权利要求字面或等效原则下的范围内的所有设备、方法和制造产品。
Claims (21)
1.一种用于跨距剖析软件应用的方法,所述方法包括:
从硬件性能计数器接收用于表示第一指令地址和第一数据地址的数据;
从所述硬件性能计数器接收用于表示第二指令地址和第二数据地址的数据;
如果所述第一指令地址等于所述第二指令地址,那么就通过从所述第二数据地址中减去所述第一数据地址来确定第一跨距积;并且
根据所述第一跨距积来确定跨距。
2.如权利要求1所述的方法,其中根据所述第一跨距积确定跨距包括:确定所述跨距等于所述第一跨距积。
3.如权利要求1所述的方法,还包括:
从所述硬件性能计数器接收用于表示第三指令地址和第三数据地址的数据;
如果所述第二指令地址等于所述第三指令地址,那么就通过从所述第三数据地址中减去所述第二数据地址来确定第二跨距积。
4.如权利要求3所述的方法,其中根据所述第一跨距积确定所述跨距包括:确定所述第一跨距积和所述第二跨距积的最大公约数。
5.如权利要求3所述的方法,其中从硬件性能计数器接收表示第一指令地址和第一数据地址的数据包括:接收所述第一指令地址和所述第一数据地址作为表示第一多个连续的数据高速缓存器未命中的第一数据集的一部分。
6.如权利要求5所述的方法,还包括:
接收用于表示第一多个连续的数据高速缓存器未命中的第一数据集;并且
接收用于表示第二多个连续的数据高速缓存器未命中的第二数据集,其中接收第一数据集和接收第二数据集被按预定的周期分隔开,在所述预定的周期期间,不接收用于表示连续的数据高速缓存器未命中的数据。
7.如权利要求1所述的方法,还包括:
从所述硬件性能计数器接收用于表示第三指令地址和第三数据地址的数据;
从所述硬件性能计数器接收用于表示第四指令地址和第四数据地址的数据;
如果所述第一指令地址等于所述第三指令地址和所述第四指令地址,那么就通过从所述第四数据地址中减去所述第三数据地址来确定第二跨距积。
8.如权利要求7所述的方法,其中根据所述第一跨距积确定所述跨距包括:确定所述第一跨距积和所述第二跨距积的最大公约数。
9.如权利要求1所述的方法,其中从硬件性能计数器接收用于表示第一指令地址和第一数据地址的数据包括:接收所述第一指令地址和所述第一数据地址作为用于表示多个连续的数据高速缓存器未命中的数据集的一部分。
10.如权利要求1所述的方法,还包括以周期性的脉冲串系列对硬件性能计数器进行采样。
11.一种用于剖析软件应用的设备,所述设备包括:
用于执行软件应用和剖析工具的处理器;
硬件性能计数器,被可操作地耦合到所述处理器,所述硬件性能计数器用于向剖析工具提供数据,所述数据用于表示第一指令地址、与所述第一指令地址相关联的第一数据地址、第二指令地址和与所述第二指令地址相关联的第二数据地址,
其中如果所述第一指令地址等于所述第二指令地址,那么所述剖析工具就根据所述第一数据地址和所述第二数据地址之间的差异来确定跨距。
12.如权利要求11所述的设备,其中:
由硬件性能计数器提供给所述剖析工具的数据还包括第三指令地址和与所述第三指令地址相关联的第三数据地址,
如果所述第一指令地址等于所述第二指令地址,那么所述剖析工具就通过从所述第二数据地址中减去所述第一数据地址来确定第一跨距积,
如果所述第二指令地址等于所述第三指令地址,那么所述剖析工具就通过从所述第三数据地址中减去所述第二数据地址来确定第二跨距积,并且
所述剖析工具根据所述第一跨距积和所述第二跨距积来确定跨距。
13.如权利要求12所述的设备,其中所述剖析工具通过确定所述第一跨距积和所述第二跨距积的最大公约数来确定所述跨距。
14.如权利要求11所述的设备,其中当在执行软件应用期间出现第一次数据高速缓存器未命中时,所述硬件性能计数器向所述剖析工具提供用于表示所述第一指令地址和所述第一数据地址的数据。
15.如权利要求14所述的设备,其中当在执行软件应用期间出现第二次数据高速缓存器未命中时,所述硬件性能计数器向所述剖析工具提供用于表示所述第二指令地址和所述第二数据地址的数据。
16.如权利要求15所述的设备,其中所述第一次数据高速缓存器未命中和第二次数据高速缓存器未命中是与所述第一指令地址相关联的连续的数据高速缓存器未命中。
17.如权利要求11所述的设备,其中所述剖析工具以周期性的脉冲串系列对所述硬件性能计数器进行采样。
18.一种用于剖析软件应用的设备,所述设备包括:
硬件性能计数器,被构造成捕获用于表示与数据高速缓存器未命中相关联的指令地址以及与数据高速缓存器未命中相关联的数据地址的数据;
被构造成在第一指令地址等于第二指令地址的情况下从第二数据地址中减去第一数据地址的跨距确定模块,被可操作地耦合到所述硬件性能计数器;和
被构造成确定第一跨距积和第二跨距积的最大公约数的最大公约数模块,被可操作地耦合到阶段管理器。
19.如权利要求18所述的设备,还包括阶段管理器,所述阶段管理器被可操作地耦合到所述跨距确定模块。
20.如权利要求19所述的设备,其中所述阶段管理器被构造成产生从第一跳跃阶段到检查阶段的第一转变。
21.如权利要求20所述的设备,其中所述阶段管理器被构造成产生从检查阶段到第二跳跃阶段的第二转变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210021110.7A CN102681947B (zh) | 2003-05-27 | 2004-05-12 | 用于跨距剖析软件应用的方法和设备 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/446,004 | 2003-05-27 | ||
US10/446,004 US7181723B2 (en) | 2003-05-27 | 2003-05-27 | Methods and apparatus for stride profiling a software application |
PCT/US2004/014845 WO2004107177A2 (en) | 2003-05-27 | 2004-05-12 | Methods and apparatus for stride profiling a software application |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210021110.7A Division CN102681947B (zh) | 2003-05-27 | 2004-05-12 | 用于跨距剖析软件应用的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1795438A CN1795438A (zh) | 2006-06-28 |
CN1795438B true CN1795438B (zh) | 2012-03-21 |
Family
ID=33450967
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800147829A Expired - Fee Related CN1795438B (zh) | 2003-05-27 | 2004-05-12 | 用于跨距剖析软件应用的方法和设备 |
CN201210021110.7A Expired - Fee Related CN102681947B (zh) | 2003-05-27 | 2004-05-12 | 用于跨距剖析软件应用的方法和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210021110.7A Expired - Fee Related CN102681947B (zh) | 2003-05-27 | 2004-05-12 | 用于跨距剖析软件应用的方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7181723B2 (zh) |
EP (1) | EP1627311B1 (zh) |
JP (1) | JP4361084B2 (zh) |
CN (2) | CN1795438B (zh) |
AT (1) | ATE368891T1 (zh) |
DE (1) | DE602004007913T2 (zh) |
WO (1) | WO2004107177A2 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7395527B2 (en) * | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US20050071821A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically select instructions for selective counting |
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 |
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 |
US7415705B2 (en) * | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
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 |
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 |
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 |
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 |
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 |
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 |
US7299319B2 (en) * | 2004-03-22 | 2007-11-20 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for code 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 |
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 |
US7526616B2 (en) * | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
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 |
US7421540B2 (en) * | 2005-05-03 | 2008-09-02 | International Business Machines Corporation | Method, apparatus, and program to efficiently calculate cache prefetching patterns for loops |
US20070006167A1 (en) * | 2005-05-31 | 2007-01-04 | Chi-Keung Luk | Optimizing binary-level instrumentation via instruction scheduling |
US20070130114A1 (en) * | 2005-06-20 | 2007-06-07 | Xiao-Feng Li | Methods and apparatus to optimize processing throughput of data structures in programs |
US8037465B2 (en) * | 2005-09-30 | 2011-10-11 | Intel Corporation | Thread-data affinity optimization using compiler |
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 |
JP4491500B2 (ja) * | 2007-01-30 | 2010-06-30 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
US8621468B2 (en) * | 2007-04-26 | 2013-12-31 | Microsoft Corporation | Multi core optimizations on a binary using static and run time analysis |
US9104794B2 (en) * | 2008-07-15 | 2015-08-11 | Microsoft Technology Licensing, Llc | Automatic incremental application dependency discovery through code instrumentation |
US8051332B2 (en) | 2008-07-15 | 2011-11-01 | Avicode Inc. | Exposing application performance counters for .NET applications through code instrumentation |
JP5326708B2 (ja) | 2009-03-18 | 2013-10-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
CN102567206B (zh) * | 2012-01-06 | 2014-10-29 | 华中科技大学 | 一种剖析cuda程序行为的方法 |
US10019341B2 (en) * | 2014-09-25 | 2018-07-10 | Intel Corporation | Using hardware performance counters to detect stale memory objects |
JP6341045B2 (ja) | 2014-10-03 | 2018-06-13 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US20180173631A1 (en) * | 2016-12-21 | 2018-06-21 | Qualcomm Incorporated | Prefetch mechanisms with non-equal magnitude stride |
CN107329908A (zh) * | 2017-07-07 | 2017-11-07 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN107601411A (zh) * | 2017-10-11 | 2018-01-19 | 荆门市双创专利技术服务有限公司 | 一种带有理瓶机玻璃胶生产装置 |
US10649688B1 (en) * | 2018-11-01 | 2020-05-12 | Intel Corporation | Precise longitudinal monitoring of memory operations |
US11288046B2 (en) * | 2019-10-30 | 2022-03-29 | International Business Machines Corporation | Methods and systems for program optimization utilizing intelligent space exploration |
US11115494B1 (en) * | 2020-02-26 | 2021-09-07 | International Business Machines Corporation | Profile clustering for homogenous instance analysis |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396604A (en) * | 1991-07-12 | 1995-03-07 | Hewlett-Packard Company | System and method for reducing the penalty associated with data cache misses |
US5778436A (en) * | 1995-03-06 | 1998-07-07 | Duke University | Predictive caching system and method based on memory access which previously followed a cache miss |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US126591A (en) * | 1872-05-07 | Improvement in hair-restoratives | ||
GB2247546B (en) * | 1990-08-31 | 1995-03-01 | Sun Microsystems Inc | Method and apparatus for predictive caching |
US5444850A (en) * | 1993-08-04 | 1995-08-22 | Trend Micro Devices Incorporated | Method and apparatus for controlling network and workstation access prior to workstation boot |
US5694568A (en) * | 1995-07-27 | 1997-12-02 | Board Of Trustees Of The University Of Illinois | Prefetch system applicable to complex memory access schemes |
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 |
US6098154A (en) * | 1997-06-25 | 2000-08-01 | Sun Microsystems, Inc. | Apparatus and method for generating a stride used to derive a prefetch address |
US6076151A (en) * | 1997-10-10 | 2000-06-13 | Advanced Micro Devices, Inc. | Dynamic memory allocation suitable for stride-based prefetching |
US6047363A (en) * | 1997-10-14 | 2000-04-04 | Advanced Micro Devices, Inc. | Prefetching data using profile of cache misses from earlier code executions |
US6047359A (en) * | 1997-11-04 | 2000-04-04 | The United States Of America As Represented By The Secretary Of The Navy | Predictive read cache memories for reducing primary cache miss latency in embedded microprocessor systems |
US6134643A (en) * | 1997-11-26 | 2000-10-17 | Intel Corporation | Method and apparatus for cache line prediction and prefetching using a prefetch controller and buffer and access history |
US6560706B1 (en) * | 1998-01-26 | 2003-05-06 | Intel Corporation | Interface for ensuring system boot image integrity and authenticity |
US6430680B1 (en) * | 1998-03-31 | 2002-08-06 | International Business Machines Corporation | Processor and method of prefetching data based upon a detected stride |
US6134710A (en) * | 1998-06-26 | 2000-10-17 | International Business Machines Corp. | Adaptive method and system to minimize the effect of long cache misses |
US6463535B1 (en) * | 1998-10-05 | 2002-10-08 | Intel Corporation | System and method for verifying the integrity and authorization of software before execution in a local platform |
US7430668B1 (en) | 1999-02-15 | 2008-09-30 | Hewlett-Packard Development Company, L.P. | Protection of the configuration of modules in computing apparatus |
US6571318B1 (en) * | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
US7103529B2 (en) * | 2001-09-27 | 2006-09-05 | Intel Corporation | Method for providing system integrity and legacy environment emulation |
US7093124B2 (en) * | 2001-10-30 | 2006-08-15 | Intel Corporation | Mechanism to improve authentication for remote management of a computer system |
US20030126591A1 (en) * | 2001-12-21 | 2003-07-03 | Youfeng Wu | Stride-profile guided prefetching for irregular code |
US20030145314A1 (en) * | 2002-01-31 | 2003-07-31 | Khoa Nguyen | Method of efficient dynamic data cache prefetch insertion |
US20030204840A1 (en) * | 2002-04-30 | 2003-10-30 | Youfeng Wu | Apparatus and method for one-pass profiling to concurrently generate a frequency profile and a stride profile to enable data prefetching in irregular programs |
US7155575B2 (en) * | 2002-12-18 | 2006-12-26 | Intel Corporation | Adaptive prefetch for irregular access patterns |
-
2003
- 2003-05-27 US US10/446,004 patent/US7181723B2/en not_active Expired - Fee Related
-
2004
- 2004-05-12 AT AT04751989T patent/ATE368891T1/de not_active IP Right Cessation
- 2004-05-12 CN CN2004800147829A patent/CN1795438B/zh not_active Expired - Fee Related
- 2004-05-12 WO PCT/US2004/014845 patent/WO2004107177A2/en active IP Right Grant
- 2004-05-12 DE DE602004007913T patent/DE602004007913T2/de not_active Expired - Lifetime
- 2004-05-12 CN CN201210021110.7A patent/CN102681947B/zh not_active Expired - Fee Related
- 2004-05-12 EP EP04751989A patent/EP1627311B1/en not_active Expired - Lifetime
- 2004-05-12 JP JP2006501313A patent/JP4361084B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396604A (en) * | 1991-07-12 | 1995-03-07 | Hewlett-Packard Company | System and method for reducing the penalty associated with data cache misses |
US5778436A (en) * | 1995-03-06 | 1998-07-07 | Duke University | Predictive caching system and method based on memory access which previously followed a cache miss |
Also Published As
Publication number | Publication date |
---|---|
DE602004007913D1 (de) | 2007-09-13 |
EP1627311B1 (en) | 2007-08-01 |
EP1627311A2 (en) | 2006-02-22 |
CN102681947A (zh) | 2012-09-19 |
US7181723B2 (en) | 2007-02-20 |
JP4361084B2 (ja) | 2009-11-11 |
CN102681947B (zh) | 2015-12-16 |
US20040243981A1 (en) | 2004-12-02 |
WO2004107177A2 (en) | 2004-12-09 |
CN1795438A (zh) | 2006-06-28 |
JP2006524375A (ja) | 2006-10-26 |
ATE368891T1 (de) | 2007-08-15 |
DE602004007913T2 (de) | 2008-04-30 |
WO2004107177A3 (en) | 2005-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1795438B (zh) | 用于跨距剖析软件应用的方法和设备 | |
US10282276B2 (en) | Fingerprint-initiated trace extraction | |
US9280438B2 (en) | Autonomic hotspot profiling using paired performance sampling | |
US7315795B2 (en) | Performance analyzing method using hardware | |
US8739143B2 (en) | Profiling metrics for computer programs | |
US7739662B2 (en) | Methods and apparatus to analyze processor systems | |
US20090307347A1 (en) | Using Transaction Latency Profiles For Characterizing Application Updates | |
Dey et al. | Emprof: Memory profiling via em-emanation in iot and hand-held devices | |
US20090083716A1 (en) | Profiling method and program | |
JPWO2014050254A1 (ja) | ボトルネック検出装置、方法及びプログラム | |
JP2017167930A (ja) | 情報処理装置、電力測定方法及び電力測定プログラム | |
US20080209403A1 (en) | Profiling apparatus and profiling program | |
US9753731B1 (en) | Methods and systems for analyzing and improving performance of computer codes | |
US8612952B2 (en) | Performance optimization based on data accesses during critical sections | |
Walcott-Justice et al. | THeME: A system for testing by hardware monitoring events | |
US20040255282A1 (en) | Optimizing performance of a program or a computer system | |
CN107451038B (zh) | 硬件事件采集方法、处理器和计算系统 | |
US6725363B1 (en) | Method for filtering instructions to get more precise event counts | |
US20190384690A1 (en) | Method for estimating memory reuse-distance profile | |
JP2018163656A (ja) | 追跡データ表現 | |
US9547484B1 (en) | Automated compiler operation verification | |
US20170168832A1 (en) | Instruction weighting for performance profiling in a group dispatch processor | |
JP2011203995A (ja) | 分析装置、分析方法および分析プログラム | |
CN104462368A (zh) | 数据计算方法、装置和服务器 | |
CN109446463B (zh) | 一种基于Web的数值模拟预加载可视化方法及系统 |
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: 20120321 Termination date: 20130512 |