用于生成目标程序的配置文件的装置和方法技术领域
本公开涉及数据处理领域。更具体地,它涉及生成目标程序的配置文件(profile,
也称为简档)的装置和方法。
背景技术
基于在目标程序执行期间捕获的跟踪信息可以生成由目标数据处理装置执行的
目标程序的配置文件。例如,配置文件可以概括各种源级程序特征(例如,功能、陈述、或函
数调用)出现的频率,或者可以对特定种类的指令的执行进行计数。这可以用于软件开发,
因为它有助于识别在由特定目标数据处理装置执行目标程序时出现的问题。
发明内容
至少一些示例提供了一种基于在目标数据处理装置执行目标程序期间所捕获的
跟踪信息生成由目标数据处理装置执行的目标程序的配置文件的方法;
该方法包括执行至少一个配置文件更新操作,每个配置文件更新操作包括:
基于跟踪信息中指示目标程序的相应路径点指令的结果的至少一个路径点标记,
识别在执行目标程序期间由目标数据处理装置执行的下一指令块;
确定与下一指令块相对应的目标条目是否在配置文件缓存中存在,目标条目指定
与下一指令块相关联的零个、一个或多个配置文件更新动作;以及
当目标条目在配置文件缓存中存在时,根据由目标条目指定的零个、一个或多个
配置文件更新动作更新目标程序的配置文件。
至少一些示例提供了一种装置,该装置包括:
跟踪接收电路,该跟踪接收电路接收在目标数据处理装置执行目标程序期间所捕
获的跟踪信息;以及
配置文件生成电路,该配置文件生成电路通过执行至少一个配置文件更新操作生
成目标程序的配置文件,每个配置文件更新操作包括:
基于指示目标程序的相应路径点指令的结果的跟踪信息的至少一个路径点标记,
识别在执行目标程序期间由目标数据处理装置执行的下一指令块;
确定与下一指令块相对应的目标条目是否在配置文件缓存中存在,目标条目指定
与下一指令块相关联的零个、一个或多个配置文件更新动作;以及
当目标条目在配置文件缓存中存在时,根据由目标条目指定的零个、一个或多个
配置文件更新动作更新目标程序的配置文件。
至少一些示例提供了一种存储有计算机程序的非暂态计算机可读存储介质,该计
算机程序在由主机数据处理装置执行时控制主机数据处理装置以执行上文所述方法。
结合附图阅读下文的示例描述可以清楚了解本技术的另外的方面、特征和优势。
附图说明
图1示意性示出用于执行目标程序的目标数据处理装置的示例以及用于生成目标
程序的配置文件的分析装置的示例;
图2示出将被执行的目标程序的示例以及在目标程序执行期间生成的跟踪信息的
示例;
图3是示出跟踪流分析装置中的数据流的示例;
图4示出配置文件缓存的示例;
图5是示出生成目标程序的配置文件的方法的流程图;
图6示出针对给定指令块的共享配置文件缓存条目的示例,该共享配置文件缓存
条目具有依据至少一个路径点指令的结果而指定的不同条件配置文件更新动作。
图7示出合并配置文件缓存条目的示例;
图8示出其中第一配置文件缓存条目连接至针对后续被执行的指令块的第二配置
文件缓存条目的示例。
图9示意性示出分析装置的示例性计算机实现方式;以及
图10示出其中目标数据处理装置包括用于分析跟踪数据以生成目标程序的概括
配置文件的捕获箱电路的替换示例。
具体实施方式
在目标数据处理装置上执行目标程序期间捕获的跟踪信息可以包括至少一个路
径点标记,以指示当执行目标程序时相应路径点指令的结果。在典型的配置文件生成技术
中,路径点标记被用于控制逐步地通过目标程序的逐指令表征以确定在被执行的代码内各
种事件出现的频率,并且生成概括配置文件。
然而,对被执行的程序内的许多指令块而言,在将路径点标记扩展成完整的逐指
令表征并且对每个指令进行解码后,可能会发现这些指令不需要对配置文件进行任何更
新。因此,形式相对紧密的路径点跟踪被扩展成效率较低的逐指令表征,但只有这些指令的
子集可以作用于配置文件,并且甚至可能没有指令可以作用于配置文件。跟踪流被大量扩
展,然后大多数跟踪流可能被丢弃。这可能通过被执行的指令的循环针对各个迭代完成多
次。这使得传统的配置文件生成技术相对较慢。
替代地,本技术的方法提供了具有与指令块相对应的条目的配置文件缓存。目标
程序的配置文件是通过执行一系列至少一个配置文件的更新操作来建立的。在各个配置文
件更新操作中,在目标程序执行期间被执行的下一指令块是基于跟踪信息的路径点标记被
识别的。与下一指令块相对应的目标条目是否被包含在目标文件缓存中被确定。目标条目
可以指定与下一指令块相关联的零个、一个或多个配置文件更新动作。当目标条目在配置
文件缓存中存在时,根据由目标条目指定的零个、一个或多个配置文件更新动作更新目标
程序的配置文件。
因此,配置文件缓存可以被用于记住由具体指令块触发的各组零个、一个或多个
配置文件相关的动作,从而使得不需要每当在被执行程序中遇到这些指令时都访问(如跟
踪信息的路径点标记所表示的)目标程序的逐指令表征。这特别有用,因为通常被执行的程
序可能包括多个循环,其中某些指令块被执行多次,因此,通过避免在每次执行循环时逐个
解析目标程序指令的需求,配置文件可以被快得多地生成。
另一方面,当目标条目在配置文件缓存中不存在时,程序指令的逐指令表征可以
被用于确定是否需要零个、一个或多个配置文件更新动作,然后可以对目标程序的配置文
件进行相应的更新。因此,使用逐指令表征来确定针对下一指令块的任何配置文件更新动
作可以被限制于在配置文件缓存中不存在相应目标条目的情形(例如,因为之前没有遇到
过下一指令块)。
在目标条目在配置文件缓存中不存在的情形中,至少一个配置文件更新操作还可
以包括向配置文件缓存分配条目,该条目指定基于目标程序的逐指令表征针对下一指令块
所确定的零个、一个或多个配置文件更新动作。因此,如果在配置文件缓存中不存在针对下
一指令块的条目,那么基于逐指令表征确定需要的配置文件更新动作,然后条目被分配给
配置文件缓存以存储这些动作,从而使得当在被执行的程序中遇到相同的指令块时,从缓
存中读取相同的动作,而不需要分别逐步通过目标程序的各个指令。
需要注意的是配置文件缓存的一些条目有可能指定零个针对给定指令块的配置
文件更新动作。根据配置文件将被更新的事件类型,对一些指令块而言,可能没有感兴趣的
事件,因此可能不需要在这些指令块之后对目标程序的配置文件进行更新。在这个情况下,
本技术特别有用,因为基于配置文件缓存中的目标条目可以确定零个配置文件更新动作被
需要,这样避免了针对下一指令块逐步通过目标程序的逐指令表征以便于确定不需要进行
配置文件更新的需求。这节省了对各个指令分别进行解码的开销。
换言之,当目标条目在配置文件缓存中存在时,该方法包括确定目标条目是否指
定了至少一个配置文件更新动作。当目标条目指定了至少一个配置文件更新动作时,根据
指定的至少一个配置文件更新动作更新配置文件。当目标条目指定存在零个针对下一指令
块的配置文件的更新动作时,配置文件不被更新。类似地,当目标条目不存在时,该方法包
括基于目标程序的逐指令表征确定是否需要任何配置文件更新动作,并且然后向配置文件
缓存分配指定是否需要任意配置文件更新动作的条目,如果需要至少一个配置文件更新动
作,那么标识该至少一个配置文件更新动作。
在一些情形中,配置文件缓存可以是以硬件形式提供的专用缓存存储器,以存储
当给他指令块时指定哪些配置文件更新动作相关联的条目。然而,在许多情况下,配置文件
缓存可以只是还可以存储其他信息的通用存储器内的数据阵列。
每个配置文件更新操作与目标程序的特定指令块相对应。在一些示例中,在连续
的配置文件更新操作中考虑的指令块之间的划分可以是相对随意的。例如,在每个通路
(pass)上可以考虑某一固定大小的指令块。然而,处理配置文件生成的一个特别有效的方
式可以是将各个配置文件更新操作与以(如跟踪信息的下一路径点标记所指示的)给定路
径点指令结束的指令块相对应。从而每个配置文件更新操作可以包括识别在之前配置文件
更新操作中还没有考虑的下一路径点标记,然后选择目标程序中以与下一路径点标记相对
应的路径点指令结束的指令块作为下一指令块。路径点指令可以是可能存在若干可替换结
果的指令,这些替换结果影响目标程序中在跟随路径点指令之后执行哪些指令,因此通过
在这些点处把程序划分开,在配置文件缓存中被分配条目的指令块可以更好地映射至存在
重复模式的指令块,在重复模式下,每次执行指令块时都需要进行配置文件更新。
跟踪信息的路径点标记通常可以指示相应路径点指令的结果,但可能不指示跟随
路径点指令之后的要被执行的下一指令的地址。下一指令地址可以根据目标程序的逐指令
表征确定。然而,这可能需要根据逐指令表征对指令操作码进行某种解码,这可能会导致一
些开销。
为了节省处理,配置文件缓存的每个条目除了指定任意需要的配置文件更新动作
以外,还可以指定跟随相应的路径点指令之后的由数据处理装置执行的下一指令的下一指
令地址。因此,针对给定配置文件更新操作,当下一指令块命中配置文件缓存时,除了任何
所需的配置文件更新动作以外,要被执行的下一指令的地址也可以根据被访问的配置文件
缓存条目被确定,从而使得没有必要访问目标程序的逐指令表征。在后续配置文件更新操
作中,下一指令块可以被确定为是从具有下一指令地址(在针对在先配置文件更新操作的
目标条目中被指定)的指令开始的块。这使得该配置文件生成方法更高效。
另一方面,如果配置文件缓存中不存在针对给定配置文件更新操作的目标条目,
那么所需的配置文件更新动作和下一指令地址可以根据逐指令表征确定,然后被保存至配
置文件缓存,从而使得当随后遇到相同的指令块时,可以避免此类开销。
通常,路径点指令可以是存在多个可能的结果的任意指令,这些可能的结果可以
在被跟踪的目标程序内控制程序流。例如,路径点指令可以是分支指令或函数返回,并且路
径点标记可以指示是否采用相应的分支或函数返回的结果。因此,在执行目标程序期间作
为跟踪信息输出的路径点信息可以简单地提供以较高层次指示当目标程序被执行时通过
目标程序采用的路径点的地图,并且配置文件生成方法采用这种跟踪信息连同逐指令表
征,以便于生成概括各类事件(例如,执行特定种类的指令)的发生的更完善的配置文件。通
过以上文讨论的方式使用配置文件缓存,逐指令表征需要被访问的次数可以被减少,因为
在路径点标记流中遇到过一次给定指令块之后,随后场合中要执行的任意更新可以直接从
配置文件缓冲中读取。通过在不需要访问逐指令表征的情况下基于路径点标记直接触发配
置文件动作,可以节省将路径点标记扩展成指令流并且对各个指令进行解码的开销。
在一些情形中,针对相同的指令块但是与相应路径点指令的不同结果相对应的分
离的配置文件条目可以被提供。例如,一个条目可以指定当路径点指令被采用时针对给定
指令块的零个、一个或多个要被执行的配置文件更新动作,并且另一条目可以指定当相应
的路径点指令没被采用时针对要被同一指令块执行的替换配置文件更新动作。
可替换地,不论针对相应路径点指令的路径点标记所指示的结果如何,针对给定
指令块的共享条目可以被提供。该条目可以指定至少一个条件配置文件更新动作,该至少
一个条件配置文件更新动作是根据针对相应路径点指令的路径点标记所指示的结果被选
择性执行的。这种方法可以节省配置文件缓存中的空间。
为了识别哪个配置文件缓存条目与哪个指令块相对应,每个条目可以被标记有相
应指令块的起始地址。相应指令块的结束地址可以被明确地储存在配置文件缓存条目中,
或者可以被隐含为跟随起始地址的下一路径点指令的地址。
在每个配置文件更新操作中,识别了下一指令块之后,该方法可以包括执行地址
比较以确定配置文件缓存中的任意条目的起始地址是否与下一指令块的起始地址相匹配。
如果匹配,那么目标条目被认为存在,如果没有条目与下一指令块的起始地址匹配,那么目
标条目被认为不存在。通常,下一指令块的起始地址可以是在在先配置文件更新操作中考
虑的最后的指令之后的在目标程序中执行的第一个指令的地址。如上文提到的,在一些情
况下,下一指令块的起始地址可以在在先配置文件更新操作中访问的配置文件条目内被指
定。
基于起始地址对配置文件进行的这种搜索在对下一指令块的起始地址与每个配
置文件条目的标签中的起始地址进行比较时会引起一定的开销。通过将缓存的一个条目直
接链接至它的后继条目(表示随后被执行的指令块)可以加快缓存查找。因此,配置文件缓
存的至少一个条目可以与第一指令块相对应,并且包括后续条目指示,该后续条目指示标
识了配置文件缓存中与跟随第一指令块之后由数据处理装置执行的第二指令块相对应的
另外的条目。针对给定配置文件的更新操作,当目标条目在配置文件缓存中存在并且包括
后续条目指示时,针对后续配置文件更新操作的地址比较可以只针对由针对给定配置文件
更新操作的目标条目中的后续条目指示所指示的另外的条目执行。当该地址比较确定起始
地址匹配时,针对配置文件缓存中的任意其他条目的地址比较可以被阻止。针对任意其他
条目的地址比较可以只在由后续条目指示所指示的另外的条目的地址比较不匹配时被执
行。多个指令块要在多种不同时刻被连续执行是比较普遍的,当任意中间路径点指令的结
果针对循环的多次迭代而言相同时。通过在在先配置文件条目中标识要被访问的下一配置
文件条目,这可以避免针对缓存的每个条目的标签查找的需求。
可替换地或此外,合并配置文件缓存的两个或多个条目以形成指定针对两个或多
个指令块要被执行的配置文件更新动作的单个条目是可能的。例如,这可以在两个或多个
指令块在多个时刻被连续执行时是有用的,从而使得它们实际上被看作是单个指令块。在
这种情况下,将配置文件缓存的相应条目合并成单个条目会释放缓存中的空间以用于指示
针对其他指令块的配置文件更新操作,并且还允许更快地分析目标程序,因为单个缓存访
问提供针对较大的指令块的所需更新,这允许以较少的配置文件更新操作更快地逐步通过
程序。
通常,在合并两个或多个条目之前可能需要满足预定条件。例如,预定条件可以是
检测到相应指令块被连续执行的次数大于给定阈值。例如,存储结构可以被维护为针对在
缓存中具有条目的每个指令块指定接下来执行哪个指令块、以及执行频率,并且当跟随的
给定指令块的次数计数大于一定水平时,相应的条目可以被合并。
在支持配置文件缓存条目合并的系统中,针对给定起始地址,可能存在可以作为
下一指令块被识别的多个候选指令块。例如,针对给定起始地址,与块相对应的多个候选扩
展成第一路径点指令、第二路径点指令、第三路径点指令等,直至给定数量的后续路径点指
令,并且可以在缓存中查找这些候选指令块中的每个指令块以确定是否存在针对任意候选
的相应条目。
针对跟定指令块指定的配置文件更新动作可以根据剖析(profiling)的目的显著
变化。在一些系统中,可能存在可以控制被执行的剖析的类型的控制参数或配置寄存器。例
如,配置文件更新动作可以包括:更新目标程序的配置文件以指示被执行的指令的至少一
个特性,更新指示至少一个预定事件发生的次数的至少一个计数值,更新指示被执行的给
定类型的指令的数量的至少一个计数值,或基于利用预测模型(例如,分支预测模型)处理
相应的指令块的结果更新配置文件。应该理解的是本技术可以被应用于任意类型的目标程
序的剖析,不论在配置文件中收集到的具体类型的信息为何。
剖析方法可以以不同的方式实现。在一些情况下,该方法可以在由软件控制的通
用计算机上执行。例如,计算机程序可以在计算机可读存储介质上被提供,当该计算机程序
由主机执行时,控制装置控制主机以执行上文讨论的生成配置文件的方法。计算机可读存
储介质可以是非暂态机制。例如,通用处理器可以接收由目标数据处理装置内的板上跟踪
模块捕获的跟踪信息,并且然后分析该跟踪信息以生成配置文件目标程序。
可替换地,该技术可以在使用用于接收跟踪信息和生成配置文件的专用电路的硬
件中实现。
在一些情况下,生成目标程序的配置文件的方法可以在与执行目标程序的目标数
据处理装置分开的装置中发生。
在其他情况下,生成配置文件的装置可以是目标数据处理装置本身,它可以具有
板上电路以跟踪目标处理器的操作以及基于跟踪信息生成配置文件。例如,这可以用于允
许重新编译或改进由目标数据处理装置执行的软件以解决基于配置文件所确定的任何问
题。
图1示意性示出支持对于被执行的程序的剖析的示例性系统。目标数据处理装置2
包括用于执行存储在存储器8中的目标程序6的程序指令的处理电路4。应该理解的是在一
些情况下存储器8可以包括缓存。应该理解的是目标数据处理装置2的示意图是被简化的,
并且装置2通常可以包括图1未示出的许多其他元件。任意已知的目标数据处理装置的设计
可以被使用。
目标数据处理装置2具有跟踪模块10以在目标程序6执行期间监控处理电路4的操
作,以及在目标程序6执行期间输出提供关于处理电路4的行为的信息的跟踪数据流12。例
如,跟踪信息12可以允许确定处理电路4的控制行为、数据和逐周期地址。例如,跟踪信息12
可以说明处理电路执行哪些指令、执行哪些至存储器的数据访问,可以标识某些事件(例
如,处理电路4的中断或某些模式变换)的发生,或者可以标识其他类型的信息。跟踪信息被
输出至跟踪缓冲器14以在芯片上存储跟踪信息。跟踪接口16被提供以允许外部装置从跟踪
缓冲器14中读取跟踪信息。
跟踪缓冲器14的大小和跟踪接口16上的带宽通常是受限制的,因此通常期望跟踪
模块10生成尽可能少但仍提供充分的信息以允许确定处理电路4的行为的跟踪信息。用于
减少跟踪信息量的一种技术是提供程序流跟踪以输出与路径点指令相关的跟踪信息,而不
是输出由处理电路4执行的每个单独指令的记录。
图2示出包括多个条件分支指令20的目标程序6的示例,这些条件分支指令20用于
当满足某条件时将程序流重新定向到规定的指令地址。例如,该条件可以取决于在先指令
的结果。在图2所示的示例中,如果早前的结果是相等(EQ),那么在指令地址#36处的分支转
移到地址#52,而当早前的结果是不相等(NE),那么在指令地址#96处的分支转移到地址#0。
应该理解的是许多其他条件可以被提供。一些分支还可以是无条件的,因为它们总是转移
到给定位置。
通常,目标程序6的大多数指令可能不能够以这种方式对程序流进行重新定向。例
如,在指令地址#0、#4、#8处所示的算法或加载/存储指令只执行相应的操作,然后程序流进
行至下一指令。通过只生成针对路径点指令20中的一个路径点指令(可能有不同的程序流
结果)的跟踪信息,而不是生成针对每个被执行的指令的跟踪信息,可以减少由跟踪模块10
生成的跟踪数据的量。因此,如图2的底部所示,程序流跟踪流可以包括多个跟踪原子(路径
点标记)22,每个跟踪原子表示给定路径点指令20的结果。每个跟踪原子22可以与单独的跟
踪分组相对应或者与给定分组内的位或位组相对应。例如,跟踪模块10可以监测一系列路
径点指令,然后生成包括多个位的单个跟踪分组,该多个位指定针对被监控的路径点指令
集合的跟踪原子22。虽然图2示出了作为路径点指令的具体示例的分支指令,但其他示例可
以包括函数返回。
因此,跟踪模块10的输出可以包括一系列路径点标记,这些路径点标记标识在被
执行的程序6中的相应路径点指令20的结果。如图2所示,在程序中可能存在循环,因此某些
指令块可能被执行多次,并且在每次迭代上,相应的路径点标记可以被输出以指示相应路
径点指令是否被采用。在下文使用的符号中,路径点标记<N>表示相应路径点没有被采用,
路径点标记<E>表示被采用的路径点指令。应该理解的是存在在生成的跟踪分组内以二进
制形式表示该信息的多种方式。
跟踪信息12被输出至分析装置30的跟踪接口32以分析跟踪信息和生成被执行的
程序的概括配置文件。分析装置30具有处理电路34,处理电路34从接口32接收跟踪信息、分
析跟踪信息、并且生成被存储到分析装置30内的存储器40中的程序配置文件36。存储器40
还存储与目标数据处理装置2执行的程序6相对应的目标程序42的逐指令表征。由分析装置
30存储的目标程序42的表征可以不完全相同,因为它可以是以替换的表征形式(例如,目标
代码,而不是汇编语言)。存储器40还包括被处理电路34用来生成程序配置文件36的配置文
件缓存44。配置文件缓存44可以被存储在专用缓存或者与用于存储其他信息的存储器的其
余部分分开的以硬件形式提供的存储器中,或者配置文件缓存44可以是存储配置文件36和
目标程序表征42的同一存储器设备内的数据阵列。
图3示意性示出分析装置30内的数据流。处理电路34充当经由接口16、32接收从目
标数据处理装置2输出的跟踪分组12的跟踪流分析器。跟踪分组12包括指示程序流中的相
应路径点指令的结果的一系列路径点标记22。基于路径点标记,跟踪流分析器34识别在执
行目标程序6期间由目标处理装置2执行的指令块,并且然后基于目标程序42的逐指令表征
和配置文件缓存44针对各个指令块识别要对程序配置文件36进行的任意程序文件更新动
作50。配置数据45指定在被执行的相应指令块中检测到的哪种事件应该触发对程序配置文
件36的相应更新(例如,标识要计数的指令或事件的类别)。通过对执行的每个指令块重复
该过程,程序配置文件36被逐步建立以概括程序的执行。
被存储的程序表征42表示存储在存储器中的静态指令。然而,要在配置文件36中
记录的事件发生的频率取决于程序的动态执行。由于图2所示的循环,一些静态指令可以被
执行多次,因此在这种情况下,相同的静态指令的每次动态执行可能需要触发对配置文件
36的相应更新。因此,跟踪流12的路径点标记被用于标识在程序被实际执行时通过程序表
征42的静态指令采用的路径,这可能取决于例如被输入至程序的数据。
如图2所示,在跟踪流12中的路径点标记本身不标识关于被执行的指令的任何信
息,因此一种方法是将其扩展成被动态执行的指令的完整的逐指令表征,以对各种事件(例
如,执行特定类型的指令)的发生进行计数。在图2的示例中,第一路径点标记22是<N>,这表
示在指令地址#36处的第一分支指令20没有被采用。因此,下一被执行的指令将会是接下来
的地址#40处的指令,然后从地址#40到#96的一系列指令会被执行,直到下一路径点指令。
因此,在该序列中的每个指令可以被解码,并且可以基于被解码的指令相应地更新配置文
件。
然而,扩展跟踪流并且对每个指令进行解码的这种操作很慢,因为在连续的路径
点指令之间可能存在许多指令。实际上,这些指令中的许多指令可能完全不作用于配置文
件,因为他们可能不是感兴趣的指令类型。跟踪流可以被大量扩展,但随后被丢弃。
并且,如图2所示,程序可以包括循环,从而使得某些指令块可以被执行多次。基于
目标程序表征42将指令块扩展成单独的指令以及每当遇到同一系列的指令时对每个指令
都进行解码是昂贵并且不必要的。替代地,配置文件缓存44被提供来记住由成对的程序流
路径点触发的各组配置文件相关的动作集合,以避免每当看到成对的程序流路径点时都需
要将其扩展成指令序列的需求。
图4示出配置文件缓存44的示例。配置文件缓存44包括多个条目46,每个条目包括
标签部分48和数据部分50。每个条目46与从给定起始地址(起始程序计数器)开始并且以路
径点指令(与跟踪流中的路径点标记中的一个相对应)结束的指令块相对应。
每个条目的标签部分48标识起始程序计数器(SPC)52和指示相应路径点指令的结
果的路径点结果指示符54。
条目46的数据部分50包括与相应的指令块相关联的零个、一个或多个配置文件更
新动作56的集合的动作列表。例如,动作可以包括增加被执行的给定类型的指令的计数、增
加追踪给定事件(例如,函数调用、陈述、或异常)的发生次数的事件计数、或用于更新配置
文件以指定被执行的指令的某特性或当执行这些指令时处理电路4的特性的其他类型的动
作。对一些条目46而言,动作列表56可能指定了零个动作,从而使得它标识不存在与相应的
指令块相关联的配置文件更新动作。
数据部分50还包括下一程序计数器(PCnext)58,下一程序计数器58表示在标记当
前指令块的结束的路径点指令之后的由目标数据处理装置2立即执行的指令的地址。通常,
针对被采用的路径点(相应的结果指示符54是<E>)而言,下一程序计数器是相应路径点指
令的目标地址(例如,分支目标地址或函数返回地址)。针对未被采用的路径点(结果指示符
是<N>)而言,下一程序计数器58指示与路径点指令的地址连续的地址。
如图4所示,可选择地,数据部分还可以包括路径点地址指示符60,路径点地址指
示符60指示标记指令块的结束的路径点指令的地址,但这不是必需的。路径点地址60被包
含在图4中帮助理解每个条目对应的指令块,但是在实际实现方式中,起始程序计数器52和
路径点结果指示符54足以充当用于定位正确的条目的标签。路径点地址60可以隐含在跟随
起始地址52的下一路径点指令的地址中,因此它可能不需要被存储。
图5示出解释用于生成由目标数据处理装置2执行的目标程序的方法的流程图。该
方法通过一系列迭代步骤(被称为配置文件更新操作)被执行。绕着图5中的流程图的每个
循环与一个配置文件更新操作相对应。每个配置文件更新操作与程序中的给定的被执行的
指令块相对应。当前程序计数器PC被维护以跟踪被执行分析的程序的当前点。
在步骤100处,当前程序计数器PC被设置为等于当执行目标程序6时由目标数据处
理装置执行的第一个指令的地址。例如,在图2的情形中,被执行的第一个指令的地址是#0。
在步骤102处,跟踪流分析器34从跟踪流12中读取下一路径点标记22。下一路径点
标记是在在先配置文件更新操作中还没有考虑的流中的第一个路径点标记。在步骤104处,
跟踪流分析器34在配置文件缓存44中查找标签部分48与当前程序计数器PC和在步骤102中
读取的下一路径点标记的路径点结果相匹配的条目。如果缓存44包括起始地址(SPC)52与
当前程序计数器PC相匹配、并且路径点结果指示符54与来自跟踪流的下一路径点标记指示
的结果相匹配的条目,那么存在缓存命中,因此与当前指令块相对应的目标条目在缓存中
存在。如果不存在起始地址52与当前程序计数器PC相匹配并且路径点结果指示符54与下一
路径点标记指示的结果相匹配的条目46,那么存在缓存缺失并且目标条目不存在。
在缓存缺失的情形中,在步骤106处,阵列Actions[]作为空阵列被初始化,并且当
前程序计数器PC作为当前指令块的起始程序计数器SPC被保存。在步骤108处,跟踪流分析
器34访问目标程序42的逐指令表征,并且读取地址与当前程序计数器相同的指令并且对其
进行解码。跟踪流分析器34确定被解码的指令是否要求对程序配置文件36进行更新。例如,
跟踪流分析器34可以基于配置数据45确定被解码的指令是否满足更新程序配置文件36所
要求的某些条件。例如,如果被解码的指令是计数被维护的指令类型中的一个,那么这可以
触发该计数增加。针对一些指令可能不要求任何动作。在步骤110处,基于在步骤108处所确
定的任意动作来更新程序配置文件36(如果没有动作被确定,那么配置文件保持不变)。此
外,在步骤112处,任意被确定的动作被添加至阵列Actions[],阵列Actions[]追踪到目前
为止所有针对当前指令块所确定的配置文件更新动作。
在步骤114处,跟踪流分析器34确定在当前程序计数器地址PC处的指令是否是路
径点指令。如果不是,那么在步骤116处,程序计数器被增加,并且然后方法返回步骤108以
读取来自目标程序42的表征的下一指令并对其进行解码。针对每个连续的指令继续从步骤
108至116的这种循环,直到最终到达路径点指令。
当在步骤114处程序计数器PC表示的当前指令是路径点指令时,那么在步骤118
处,程序计数器PC被设置成在路径点之后被执行的下一指令的地址。当在步骤102处读取的
下一路径点标记指示路径点是未被采用<N>时,那么程序计数器PC被增加至下一指令的地
址。当下一路径点标记指示路径点是被采用<E>时,跟踪流分析器34对路径点指令进行解码
以识别它的目标地址并且将当前程序计数器PC设置为等于被确定的目标地址。
在步骤120处,针对当前被处理的指令块的新的条目被分配给配置文件缓存44。该
条目被存储有标签部分48,标签部分48指定在步骤106处被存储的起始程序计数器SPC作为
起始地址52并且指定在步骤102处读取的下一路径点标记的路径点结果54。条目的数据部
分50指定阵列Actions[]所指定的任意动作作为动作列表,阵列Actions[]是通过针对当
前块中的每个指令执行从步骤108至116的循环来开发的。数据部分还指定在步骤118处被
确定的当前程序计数器PC的当前值(即,跟随当前路径点指令之后的下一指令的地址)作为
下一指令地址58。
另一方面,如果在步骤104处存在缓存命中,那么在步骤124处,配置文件缓存中的
目标条目被读取,并且基于目标条目46中的动作列表56中指定的任意动作更新程序配置文
件36。如果动作列表指定零个动作,那么不对当前指令块的配置文件36进行更新。但如果存
在被指定的一个或多个动作,那么这些动作被用来更新配置文件36。通过这种方式,整个指
令块所要求的所有动作可以一口气完成,而不是缓慢地逐步进行目标程序42的表征的每个
指令。因此,配置文件缓存可以大大加快配置文件的更新。在步骤126处,当前程序计数器PC
被设置为等于在配置文件缓存104中访问的目标条目所指定的下一程序计数器58。这意味
着不一定要对当前指令块结束处的路径点指令进行解码,因为下一程序计数器在缓存中被
直接指定,所以不需要再次确定路径点的目的地。在步骤126之后,该方法再次进行至步骤
122。
在步骤122处,跟踪流分析器34确定跟踪流中是否还存在要被跟踪的任何更多路
径点标记,如果是,那么方法返回针对下一路径点标记的步骤102。如果没有更多的路径点
标记,那么过程可以结束。在一些实现方式中,路径点标记可以在跟踪流中被提供以标记程
序中最后的指令,并且在这种情况下不再需要额外的步骤。可替换地,在其他实现方式中,
最后的路径点标记可能不表示最后被执行的指令,并且如果存在在最终路径点外被执行的
一些指令,那么可要需要通过图5的方法中的多一个循环来确定最后路径点后的最终指令
块所要求的动作。如果存在还需要考虑的路径点标记,那么在步骤122之后,该方法返回步
骤102以读取下一路径点标记。
将图5的方法应用于图2所示的示例的工作示例在下文被示出。配置文件缓存最初
为空。
第1配置文件更新操作
当前PC=#0,下一路径点=<N>(下一指令块=#0至#36)
在配置文件缓存中针对(#0,<N>)的查找未命中,因此访问逐指令表征42来确定要
对配置文件进行的所要求的动作(Actions[1])以及下一指令地址#40。分配新的配置文件
缓存条目:
条目1[SPC=#0,E/N=<N>,动作=Actions[1],PCnext=#40]
设置当前PC=#40。
第2配置文件更新操作
当前PC=#40,下一路径点=<E>(下一指令块=#40至#96)
在配置文件缓存中针对(#40,<E>)的查找未命中,因此访问逐指令表征42来确定
要对配置文件进行的所要求的动作(Actions[2])和下一指令地址#0。分配新的配置文件缓
存条目:
条目2[SPC=#40,E/N=<E>,动作=Actions[2],PCnext=#0]
设置当前PC=#0。
第3配置文件更新操作
当前PC=#0,下一路径点=<N>
在配置文件缓存中针对(#0,<N>)的查找命中条目1,因此基于条目所指定的
Actions[1]更新配置文件36,并且设置PC=PCnext=#40。不需要访问逐指令表征。
第4配置文件更新操作
当前PC=#40,下一路径点=<E>
在配置文件缓存中针对(#40,<E>)的查找命中条目2,因此基于条目所指定的
Actions[2]更新配置文件36,并且设置PC=PCnext=#0。不需要访问逐指令表征。
第5配置文件更新操作
当前PC=#0,下一路径点=<E>
在配置文件缓存中针对(#0,<E>)的查找未命中,由于缓存中只有针对地址#0的条
目是针对未被采用的路径点<N>的。因此,逐指令表征42被用于确定要对配置文件进行的所
要求的动作(Actions[3])和下一指令地址#52。分配新的配置文件缓存条目:
条目3[SPC=#0,E/N=<E>,动作=Actions[3],PCnext=#52]
设置当前PC=#52。
第6配置文件更新操作
当前PC=#52,下一路径点=<E>
在配置文件缓存中针对(#52,<E>)的查找未命中,因此逐指令表征42被用于确定
要对配置文件进行的所要求的动作(Actions[4])和下一指令地址#0,并且分配新的配置文
件缓存条目:
条目4[SPC=#52,E/N=<E>,动作=Actions[4],PCnext=#0]
设置当前PC=#0。
第7配置文件更新操作
与第3配置文件更新操作相同。
第8配置文件更新操作
当前PC=#40,下一路径点=<N>
在配置文件缓存中针对(#40,<N>)的查找未命中,因此逐指令表征42被用于确定
要对配置文件进行的所要求的动作(Actions[5])和下一指令地址#100,并且分配新的配置
文件缓存条目:
条目5[SPC=#40,E/N=<N>,动作=Actions[5],PCnext=#100]。
然后可以以类似的方式处理任意另外的路径点标记。在该示例中,针对第3、第4和
第7配置文件更新操作,配置文件缓存允许所需的配置文件更新在不需要访问逐指令表征
的情况下被执行。但应该理解的是在实际生活的示例中,通常存在具有相同的路径点结果
类型的多次重复的循环的迭代,因此配置文件缓存可以大大减少对完整的逐指令表征进行
解码的次数。
用于实现上文讨论的方法的某伪码的示例如下文所示:
![]()
![]()
上文讨论的示例为给定指令块分配不同的缓存条目46,这些不同缓存条目与该块
的相应路径点指令的不同的结果相对应。然而,如图6所示,还可能提供针对从起始程序计
数器52起始的给定指令块的单个共享条目46,不论标记块的结束的最后路径点指令的结果
如何。有时这可能更高效,因为创建针对具有相同的起始地址且以被采用或不被采用的路
径点结束的块的组合配置文件条目,可以允许不论结果如何大量动作都共同进行,因为直
到最后的指令的大多数动作通常都是相同的。例如,在上文的样例中,由于无论地址#36处
的路径点指令是否被采用,针对指令块#0至#36所采取的大多数动作可能相同,因此条目1
和3可以被合并以形成单个条目。如图6所示,动作列表56可以指定一个或多个条件动作150
(只在相应路径点指令的结果是被采用<E>或者不被采用<N>时被执行)。另外,该示例可以
以与之前的示例相同的方式运行。
在图4的示例中,每个条目46与两个连续路径点之间的指令块相对应,从跟随在先
路径点的指令开始并且以下一路径点结束。然而,如图7所示,还可能将与连续的指令块相
对应的一个或多个条目46进行合并以形成针对跨两个或多个路径点扩展的多个指令块的
单个被合并的条目。在执行程序的时候在多个时刻连续执行若干指令块是比较常见的。例
如,在图2中,如果针对循环的多次迭代在地址#36处的路径点指令的结果是不被采用<N>,
那么在多个时刻,地址#0至#36和地址#40至#96处的指令块可以执行了一个后执行另一个。
因此,通过将它们的配置文件缓存条目组合成指定这些块中的每个块所要求的所有动作的
单个被合并的条目,需要进行的缓存查找将更少,在配置文件缓存中有更多于其他条目的
空间,并且整个目标程序6可以绕图5的循环以更少的迭代被处理。
例如,跟踪分析器可以监控合并条目所需的给定条件是否被满足,如果满足,那么
可以按图7所示合并条目。例如,条件可以是在超过一定阈值数量的时刻第二指令块跟在第
一指令块之后被执行。例如,小型追踪结构可以由跟踪流分析器34维护以追踪在每个指令
块之后执行哪个其他指令块,并且当给定指令块在超过阈值数量的时刻具有相同的后继块
时,那么相应的条目可以被合并。
如图7所示,当合并条目时,被合并的条目的起始地址52采用与与被合并的指令块
中的第一指令块相对应的条目的起始地址相同的值,并且下一指令地址58采用与与被合并
的指令块的最后的指令块相对应的条目的下一指令地址58相同的值,动作列表56包括与条
目被合并的指令块中的任意指令块相对应的所有动作。应该注意的是如果两个或多个条目
都指定计数值的给定增量,那么这些条目可以被合并以形成具有更大增量的单个计数更
新。例如,在图7中,两个指令计数增量+22和+80被合并以形成单个指令计数增量+102。
另外,针对被合并的条目中的每个条目的路径点结果指示符54被组合以形成指定
中介路径点中的每个路径点的结果(例如,图7中的N,E)的单个路径点结果指示符54。可能
存在多种对单个条目内的路径点结果的组合进行编码的方式。在一些情况下,跟踪模块10
所用的跟踪编码方案可能已经具有用于指定路径点结果的某种组合以便于将一系列程序
流标记22压缩在给定跟踪分组中的编码,因此,可以在配置文件缓存中使用相同的编码。如
果在对原始跟踪流所表示的或者配置文件缓存的条目内的任意给定的路径点结果集合进
行解释时只需要考虑一种编码方案,那么这可以简化跟踪流分析器34的设计。
当系统支持以这种方式合并两个或多个条目时,针对给定起始程序计数器地址存
在需要考虑的两个或多个不同的候选指令块。例如,当检查缓存时,跟踪流分析器34可能不
知道是存在针对起始程序计数器地址X和Y+4的两个单独条目还是存在图7所示的针对两个
指令块的单个被合并的条目。因此,在图5的步骤102和104处,跟踪流分析器34可以从与两
个或多个不同的候选指令块(例如,延伸到下一路径点指令的块、进一步延伸到两个路径点
指令的块、进一步延伸到三个路径点指令的块等等)相对应的跟踪流中读取路径点标记,并
且然后在步骤104处针对这些候选指令块中的每个候选指令块对配置文件缓存进行查找以
检查是否存在命中。
如果将图7的合并方法与图6的方法(不同的路径点指令的结果共享单个条目)组
合,那么存在与被合并的后续指令块中的两个或多个路径点指令的结果相对应的多于两个
的条件更新操作150的集合列表。
如图8所示,在一些实施例中,至少一些配置文件缓存条目46可以包括后续条目指
示符160,后续条目指示符160标识哪个配置文件缓存条目46与在对应于当前条目的指令块
之后执行的指令块相对应。例如,在图8中,索引0处的缓存条目标识后续条目索引2,这表示
索引2处的条目是针对具有起始程序计数器Y+4的指令块,其中起始程序计数器Y+4与索引0
处的条目的下一程序计数器58相匹配,这有助于加快缓存查找,因为一个条目可以直接链
接至它的后继条目。因此,如果在给定的缓存访问中,被访问的条目指定后继条目160,那么
后续的配置文件更新操作可以直接访问被指定的后继条目,而不需要执行每个条目的标签
部分48与当前程序计数器PC和路径点结果的完整的标签比较。在使用后继条目的内容之
前,跟踪分析器34再次检查起始程序计数器52和路径点结果54是否与来自跟踪流的当前程
序计数器和当前的路径点结果相匹配,如果匹配,那么命中被确定,与之前相同,在步骤124
处可以对配置文件被记录在该条目中的任意动作可以被更新至配置文件。如果后继条目与
来自跟踪流的当前程序计数器和当前路径点结果不匹配,那么与在缓存中没有指定后继条
目的情形相同,跟踪流分析器随后执行完整的标签比较。这是因为存在一些循环迭代,在这
些迭代中出现了不同的路径点结果,从而使得不同的指令块顶替与后继条目相对应的指令
块被执行。条目直接链接至下一条目通常有助于加快缓存查找。不必要求缓存的所有条目
在后续条目指示160中指示后继条目。如果跟踪流分析器34还没有确定相应指令块执行的
重复模式,那么一些条目可以不连接至后续指令。
图9示出可以被用于实现跟踪流分析器34或分析装置30的计算系统的示例。图9示
意性示出可以被用于实现上文所述的技术的类型的通用计算机200。通用计算机200包括中
央处理单元202、随机访问存储器204、只读存储器206、网络接口卡208、硬盘驱动210、显示
驱动器212和监视器214以及具有键盘218和鼠标220的用户输入/输出电路216,它们全部经
由通用总线222连接。在操作中,中央处理单元202执行被存储在一个或多个随机访问存储
器204、只读存储器206和硬盘驱动210中的、或经由网络接口卡208动态下载的计算机程序
指令。执行的处理的结果可以经由显示驱动器212和监视器214被显示给用户。用于控制通
用计算机200的操作的用户输入可以经由用户输入输出电路216从键盘218或鼠标220被接
收。应该理解的是计算机程序可以以各种不同的计算机语言被写入。计算机程序可以存储
以及分布在存储介质上或者被动态下载到通用计算机200上。当在适当的计算机程序的控
制下操作时,通用计算机200可以执行上文所述的技术并且可以被考虑形成用于执行上述
技术的装置。通用计算机200的结构可以显著变化,并且图9只是一个示例。
可替换地,上述技术可以以更分布式的方式被实现,其中,图9示出的通用计算机
200可以被扩展和/或被替换为包括在分立的物理设备实施的组件的基础结构。分立的物理
设备共享需要实现这些技术的处理。这些分立的物理设备可以相互物理临近,或者甚至可
以位于完全不同的物理位置。在一些配置中,这种基础结构被称为“云计算”布置。
图10示出用于生成针对由目标数据处理装置执行的目标程序6的程序配置文件36
的替换实施例。在该示例中,程序配置文件36由执行目标程序本身的同一目标数据处理装
置生成。此外,目标数据处理装置2具有用于执行被存储在存储器8中的目标程序6的处理电
路4。跟踪模块10被再次提供以生成跟踪流并且将其输出至跟踪缓冲器14,但此时用于将跟
踪数据输出至外部的跟踪接口16没必要存在,但仍可以选择性地提供跟踪接口16。捕获箱
(capture box)200被提供来作为目标数据处理装置2的一部分以捕获存储在跟踪缓冲器14
中的跟踪数据并且利用跟踪分析器204对其进行分析。捕获箱在片上存储器210上具有一些
(可替换地,它可以重复利用处理电路4所用的存储器8的一部分)。跟踪分析器204分析跟踪
分组12并且以与上文讨论的相同的方式利用目标程序42的表征和配置文件缓存44生成程
序配置文件36。
该方法可以被用于例如服务器或其他处理装置以分析基于它自身的处理生成的
跟踪数据,并且生成相应的程序配置文件。程序配置文件36之后可以被用于优化目标数据
处理装置2的性能,例如,通过重新编译目标程序6、切换至不同的操作模式、或者调整改变
处理电路4如何执行目标程序6的某控制配置。
一些实例实施例在以下语句中被定义:
(1)一种基于在目标数据处理装置执行目标程序期间所捕获的跟踪信息生成由目
标数据处理装置执行的目标程序的配置文件的方法;
该方法包括执行至少一个配置文件更新操作,每个配置文件更新操作包括:
基于指示目标程序的相应路径点指令的结果的跟踪信息的至少一个路径点标记,
识别在执行目标程序期间由目标数据处理装置执行的下一指令块;
确定与下一指令块相对应的目标条目是否存在于配置文件缓存中,目标条目指定
与下一指令块相关联的零个、一个或多个配置文件更新动作;以及
当目标条目存在于配置文件缓存中时,根据由目标条目指定的零个、一个或多个
配置文件更新动作更新目标程序的配置文件。
(2)根据语句(1)的方法,其中,当目标条目不存在于配置文件缓存中时,至少一个
配置文件更新操作包括:基于目标程序的逐指令表征确定针对下一指令块的零个、一个或
多个配置文件更新动作,以及基于零个、一个或多个配置文件更新动作更新目标程序的配
置文件。
(3)根据语句(2)的方法,其中,当目标条目在配置文件缓存中不存在时,至少一个
配置文件更新操作包括:向配置文件缓存分配条目,该条目指定基于逐指令表征针对下一
指令块确定的零个、一个或多个配置文件更新动作的条目。
(4)根据语句(1)至(3)中任一项的方法,其中,每个配置文件更新操作包括识别跟
踪信息的下一路径点标记,其中,下一指令块包括以与下一路径点标记相对应的下一路径
点指令结束的指令块。
(5)根据语句(1)至(4)中任一项的方法,其中,配置文件缓存的每个条目与以相应
的路径点指令结束的指令块相对应,并且标识跟随相应的路径点指令的由数据处理装置执
行的下一指令的下一指令地址。
(6)根据语句(5)的方法,其中,当针对给定配置文件更新操作的目标条目存在于
配置文件缓存中时,针对后续配置文件更新操作的下一指令块始于具有由给定配置文件更
新操作的目标条目所指示的下一指令地址的指令。
(7)根据语句(5)和(6)中任一项的方法,其中,当针对给定配置文件更新操作的目
标条目不存在时,下一指令块从具有基于逐指令表征确定的指令地址的指令开始。
(8)根据语句(1)至(7)中任一项的方法,其中,路径点指令包括分支指令或函数返
回,并且每个路径点标记将相应的路径点指令的结果指示为被采用和不被采用中的一者。
(9)根据语句(1)至(8)中任一项的方法,其中,配置文件缓存的每个条目与包括至
少一个路径点指令的指令块相对应,并且标识针对至少一个路径点指令的结果;并且
当配置文件缓存的条目对应于与下一指令块相同的指令块并且标识与至少一个
路径点指令的至少一个路径点标记相同的结果时,目标条目被确定为存在于配置文件缓存
中。
(10)根据语句(1)至(8)中任一项的方法,其中配置文件缓存的每个条目与以相应
路径点指令结束的指令块相对应;并且
不论针对相应路径点指令的路径点标记所指示结果如何,当配置文件缓存的条目
与与下一指令块相同的指令块相对应时,目标条目被确定为存在于配置文件缓存中。
(11)根据语句(10)的方法,其中,目标条目指定至少一个条件配置文件更新动作,
至少一个条件配置文件更新动作是基于针对相应路径点指令的路径点标记所指示的结果
被选择性执行的。
(12)根据语句(1)至(11)中任一项的方法,其中,配置文件缓存的每个条目指定相
应指令块的起始地址;并且
该确定步骤包括:针对配置文件的至少一个条目执行地址比较以确定该条目标识
的起始地址是否与下一指令块的起始地址相匹配。
(13)根据语句(12)的方法,其中,与第一指令块相对应的配置文件缓存的至少一
个条目包括后续条目指示,后续条目指示标识配置文件缓存中与跟随第一指令块之后由数
据处理装置执行的第二指令块相对应的另外的条目;并且
当针对给定配置文件更新操作的目标条目存在于配置文件缓存中并且包括后续
条目指示时,针对后续配置文件更新操作,该确定步骤包括:针对由后续条目指示所指示的
另外的条目执行地址比较,并且当针对另外的条目的地址比较确定另外的条目标识的起始
地址与下一指令块标识的起始地址相匹配时,阻止针对配置文件缓存的至少一个其他条目
的地址比较。
(14)根据语句(1)至(13)中任一项的方法,其中,当满足预定条件时,配置文件缓
存的至少两个条目被合并以形成配置文件缓存的单个条目,单个条目指定针对与至少两个
条目相对应的至少两个指令块中的每个指令块要执行的配置文件更新动作。
(15)根据语句(14)的方法,其中,预定条件包括:检测在执行目标程序期间至少两
个指令块被连续执行的次数大于预定阈值。
(16)根据语句(14)和(15)中任一项的方法,其中,该识别步骤包括识别作为下一
指令块的至少两个候选指令块,并且该确定步骤包括确定配置文件缓存中是否存在针对至
少两个候选指令块中的每个指令块的目标条目。
(17)根据语句(1)至(16)中任一项的方法,其中,当目标条目指定与下一指令块相
关联的至少一个配置文件更新动作时,这至少一个配置文件更新动作包括以下各项中的至
少一项:
更新目标程序的配置文件以指示被执行的指令的至少一个特性;
更新至少一个计数值,至少一个计数值指示至少一个预定事件出现的次数;
更新指令计数值,指令计数值指示在下一指令块中执行的预定类型的指令的数
量;以及
基于利用预测模型处理相应指令块的结果更新配置文件。
(18)一种计算机程序,该计算机程序在由主机数据处理装置执行时控制主机数据
处理装置以执行语句(1)至(17)中任一项的方法。
(19)一种存储(18)的计算机程序的计算机可读存储介质。
(20)一种装置,包括:
跟踪接收电路,该跟踪接收电路接收在目标数据处理装置执行目标程序期间所捕
获的跟踪信息;以及
配置文件生成电路,该配置文件生成电路通过执行至少一个配置文件更新操作生
成目标程序的配置文件,每个配置文件更新操作包括:
基于指示目标程序的相应路径点指令的结果的跟踪信息的至少一个路径点标记,
识别在执行目标程序期间由目标数据处理装置执行的下一指令块;
确定与下一指令块相对应的目标条目是否存在于配置文件缓存中,目标条目指定
与下一指令块相关联的零个、一个或多个配置文件更新动作;
当目标条目存在于配置文件缓存中时,根据由目标条目指定的零个、一个或多个
配置文件更新动作更新目标程序的配置文件;
当目标条目不存在于配置文件缓存中时,在基于目标程序的逐指令表征而为下一
指令块确定的零个、一个或多个配置文件更新动作的基础上更新目标程序的配置文件。
(21)根据语句(20)的装置,其中,该装置包括目标数据处理装置本身。
(22)一种装置,包括:
用于接收在目标数据处理装置执行目标程序期间所捕获的跟踪信息的装置;以及
用于通过执行至少一个配置文件更新操作生成目标程序的配置文件的装置,每个
配置文件更新操作包括:
基于指示目标程序的相应路径点指令的结果的跟踪信息的至少一个路径点标记,
识别在执行目标程序期间由目标数据处理装置执行的下一指令块;
确定与下一指令块相对应的目标条目是否存在于配置文件缓存中,目标条目指定
与下一指令块相关联的零个、一个或多个配置文件更新动作;以及
当目标条目存在于配置文件缓存中时,根据由目标条目指定的零个、一个或多个
配置文件更新动作更新目标程序的配置文件。
在本申请中,词语“被配置为...”被用于表示装置的元件具有能够执行被定义的
操作的配置。在这种语境下,“配置”表示硬件或软件的互连的方式或布置。例如,装置可以
具有提供被定义的操作的专用硬件,或者处理器或其他处理设备可以被程序化以执行功
能。“被配置为”不暗示装置元件需要以任意方式改变以便于提供被定义的操作。
虽然已经参考附图对本发明的示例实施例进行了详细地描述,但是应该理解的是
本发明不限于这些精确的实施例,并且在不背离所附权利要求定义的本发明的精神的范围
的情况下,本领域的相关技术人员可以对其进行各种改变和修改。