CN106547587B - 用于生成目标程序的配置文件的装置和方法 - Google Patents

用于生成目标程序的配置文件的装置和方法 Download PDF

Info

Publication number
CN106547587B
CN106547587B CN201610799170.XA CN201610799170A CN106547587B CN 106547587 B CN106547587 B CN 106547587B CN 201610799170 A CN201610799170 A CN 201610799170A CN 106547587 B CN106547587 B CN 106547587B
Authority
CN
China
Prior art keywords
instruction
entry
profile
target
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610799170.XA
Other languages
English (en)
Other versions
CN106547587A (zh
Inventor
阿拉斯代尔·格兰特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN106547587A publication Critical patent/CN106547587A/zh
Application granted granted Critical
Publication of CN106547587B publication Critical patent/CN106547587B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开涉及用于生成目标程序的配置文件的装置和方法。一种用于生成由目标数据处理装置执行的目标程序的配置文件的方法包括执行至少一个配置文件更新操作。每个配置文件更新操作包括:基于跟踪信息中指示目标程序的相应路径点指令的结果的至少一个路径点标记,识别在执行目标程序期间由目标数据处理装置执行的下一指令块;确定与下一指令块相对应的目标条目是否在配置文件缓存中存在,目标条目指定与下一指令块相关联的零个、一个或多个配置文件更新动作;以及当目标条目在配置文件缓存中存在时,根据由目标条目指定的零个、一个或多个配置文件更新动作更新目标程序的配置文件。该方法有助于根据程序流跟踪加快基于指令的概括。

Description

用于生成目标程序的配置文件的装置和方法
技术领域
本公开涉及数据处理领域。更具体地,它涉及生成目标程序的配置文件(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配置文件更新操作,配置文件缓存允许所需的配置文件更新在不需要访问逐指令表征的情况下被执行。但应该理解的是在实际生活的示例中,通常存在具有相同的路径点结果类型的多次重复的循环的迭代,因此配置文件缓存可以大大减少对完整的逐指令表征进行解码的次数。
用于实现上文讨论的方法的某伪码的示例如下文所示:
Figure BDA0001105999640000181
Figure BDA0001105999640000191
上文讨论的示例为给定指令块分配不同的缓存条目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)一种装置,包括:
用于接收在目标数据处理装置执行目标程序期间所捕获的跟踪信息的装置;以及
用于通过执行至少一个配置文件更新操作生成目标程序的配置文件的装置,每个配置文件更新操作包括:
基于指示目标程序的相应路径点指令的结果的跟踪信息的至少一个路径点标记,识别在执行目标程序期间由目标数据处理装置执行的下一指令块;
确定与下一指令块相对应的目标条目是否存在于配置文件缓存中,目标条目指定与下一指令块相关联的零个、一个或多个配置文件更新动作;以及
当目标条目存在于配置文件缓存中时,根据由目标条目指定的零个、一个或多个配置文件更新动作更新目标程序的配置文件。
在本申请中,词语“被配置为...”被用于表示装置的元件具有能够执行被定义的操作的配置。在这种语境下,“配置”表示硬件或软件的互连的方式或布置。例如,装置可以具有提供被定义的操作的专用硬件,或者处理器或其他处理设备可以被程序化以执行功能。“被配置为”不暗示装置元件需要以任意方式改变以便于提供被定义的操作。
虽然已经参考附图对本发明的示例实施例进行了详细地描述,但是应该理解的是本发明不限于这些精确的实施例,并且在不背离所附权利要求定义的本发明的精神的范围的情况下,本领域的相关技术人员可以对其进行各种改变和修改。

Claims (18)

1.一种基于在目标数据处理装置执行目标程序期间所捕获的跟踪信息生成由所述目标数据处理装置执行的所述目标程序的配置文件的方法,
所述方法包括执行至少一个配置文件更新操作,每个配置文件更新操作包括:
基于所述跟踪信息中指示所述目标程序的相应路径点指令的结果的至少一个路径点标记,识别在执行所述目标程序期间由所述目标数据处理装置执行的下一指令块;
确定与所述下一指令块相对应的目标条目是否存在于配置文件缓存中,所述目标条目指定与所述下一指令块相关联的零个、一个或多个配置文件更新动作;
当所述目标条目存在于所述配置文件缓存中时,根据由所述目标条目指定的所述零个、一个或多个配置文件更新动作更新所述目标程序的配置文件;以及
当所述目标条目不存在于所述配置文件缓存中时,基于所述目标程序的逐指令表征确定针对所述下一指令块的零个、一个或多个配置文件更新动作,基于所述零个、一个或多个配置文件更新动作更新所述目标程序的配置文件,并且向所述配置文件缓存分配一条目,该条目指定基于所述逐指令表征针对所述下一指令块确定的所述零个、一个或多个配置文件更新动作。
2.根据权利要求1所述的方法,其中,每个配置文件更新操作包括识别所述跟踪信息的下一路径点标记,其中,所述下一指令块包括以与所述下一路径点标记相对应的下一路径点指令结束的指令块。
3.根据权利要求1所述的方法,其中,所述配置文件缓存的每个条目与以相应的路径点指令结束的指令块相对应,并且标识跟随所述相应的路径点指令之后由所述数据处理装置执行的下一指令的下一指令地址。
4.根据权利要求3所述的方法,其中,当针对给定配置文件更新操作的目标条目存在于所述配置文件缓存中时,针对后续配置文件更新操作的下一指令块始于具有由所述给定配置文件更新操作的目标条目所指示的所述下一指令地址的指令。
5.根据权利要求3所述的方法,其中,当针对给定配置文件更新操作的目标条目不存在时,所述下一指令块始于具有基于逐指令表征确定的指令地址的指令。
6.根据权利要求1所述的方法,其中,所述路径点指令包括分支指令或函数返回,并且每个路径点标记将相应的路径点指令的结果指示为被采用和不被采用中的一者。
7.根据权利要求1所述的方法,其中,所述配置文件缓存的每个条目与包括至少一个路径点指令的指令块相对应,并且标识所述至少一个路径点指令的结果;并且
当所述配置文件缓存的条目对应于与所述下一指令块相同的指令块并且标识与所述至少一个路径点指令的至少一个路径点标记相同的结果时,所述目标条目被确定为存在于所述配置文件缓存中。
8.根据权利要求1所述的方法,其中所述配置文件缓存的每个条目与以相应的路径点指令结束的指令块相对应;并且
不论所述相应的路径点指令的路径点标记所指示结果如何,当所述配置文件缓存的条目对应于与所述下一指令块相同的指令块时,所述目标条目被确定为存在于所述配置文件缓存中。
9.根据权利要求8所述的方法,其中,所述目标条目指定了至少一个条件配置文件更新动作,所述至少一个条件配置文件更新动作要依据所述相应的路径点指令的路径点标记所指示的所述结果被选择性执行。
10.根据权利要求1所述的方法,其中,所述配置文件缓存的每个条目指定了相应指令块的起始地址;并且
该确定步骤包括:针对所述配置文件的至少一个条目执行地址比较以确定该条目所标识的所述起始地址是否与所述下一指令块的起始地址相匹配。
11.根据权利要求10所述的方法,其中,所述配置文件缓存中与第一指令块相对应的至少一个条目包括后续条目指示,所述后续条目指示标识所述配置文件缓存中与跟随所述第一指令块之后由所述数据处理装置执行的第二指令块相对应的另外的条目;并且
当针对给定配置文件更新操作的目标条目存在于所述配置文件缓存中并且包括所述后续条目指示时,对于后续配置文件更新操作,该确定步骤包括:执行对于由所述后续条目指示所指示的所述另外的条目的地址比较,并且当对于所述另外的条目的地址比较确定所述另外的条目所标识的起始地址与所述下一指令块的起始地址相匹配时,阻止针对所述配置文件缓存的至少一个其他条目的地址比较。
12.根据权利要求1所述的方法,其中,当满足预定条件时,所述配置文件缓存的至少两个条目被合并以形成所述配置文件缓存的单个条目,所述单个条目指定针对与所述至少两个条目相对应的至少两个指令块中的每个指令块要执行的配置文件更新动作。
13.根据权利要求12所述的方法,其中,所述预定条件包括:检测到在执行所述目标程序期间所述至少两个指令块被连续执行的次数大于预定阈值。
14.根据权利要求12所述的方法,其中,该识别步骤包括识别作为所述下一指令块的至少两个候选指令块,并且该确定步骤包括确定所述配置文件缓存中是否存在针对所述至少两个候选指令块中的每个指令块的目标条目。
15.根据权利要求1所述的方法,其中,当所述目标条目指定与所述下一指令块相关联的至少一个配置文件更新动作时,所述至少一个配置文件更新动作包括以下各项中的至少一项:
更新所述目标程序的配置文件以指示被执行的指令的至少一个特性;
更新至少一个计数值,所述至少一个计数值指示至少一个预定事件出现的次数;
更新指令计数值,所述指令计数值指示在所述下一指令块中执行的预定类型的指令的数量;以及
基于利用预测模型处理相应指令块的结果更新所述配置文件。
16.一种存储有计算机程序的非暂态计算机可读存储介质,所述计算机程序在由主机数据处理装置执行时控制所述主机数据处理装置以执行权利要求1所述的方法。
17.一种装置,包括:
跟踪接收电路,所述跟踪接收电路接收在目标数据处理装置执行目标程序期间所捕获的跟踪信息;以及
配置文件生成电路,所述配置文件生成电路通过执行至少一个配置文件更新操作生成所述目标程序的配置文件,每个配置文件更新操作包括:
基于所述跟踪信息中指示所述目标程序的相应路径点指令的结果的至少一个路径点标记,识别在执行所述目标程序期间由所述目标数据处理装置执行的下一指令块;
确定与所述下一指令块相对应的目标条目是否存在于配置文件缓存中,所述目标条目指定与所述下一指令块相关联的零个、一个或多个配置文件更新动作;
当所述目标条目存在于所述配置文件缓存中时,根据由所述目标条目指定的所述零个、一个或多个配置文件更新动作更新所述目标程序的配置文件;以及
当所述目标条目不存在于所述配置文件缓存中时,基于所述目标程序的逐指令表征确定针对所述下一指令块的零个、一个或多个配置文件更新动作,基于所述零个、一个或多个配置文件更新动作更新所述目标程序的配置文件,并且向所述配置文件缓存分配一条目,该条目指定基于所述逐指令表征针对所述下一指令块确定的所述零个、一个或多个配置文件更新动作。
18.根据权利要求17所述的装置,其中,所述装置包括所述目标数据处理装置本身。
CN201610799170.XA 2015-09-16 2016-08-31 用于生成目标程序的配置文件的装置和方法 Active CN106547587B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP15185433.8 2015-09-16
EP15185433.8A EP3144814B1 (en) 2015-09-16 2015-09-16 Method and apparatus for generating a profile of a target program

Publications (2)

Publication Number Publication Date
CN106547587A CN106547587A (zh) 2017-03-29
CN106547587B true CN106547587B (zh) 2021-07-06

Family

ID=54238187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610799170.XA Active CN106547587B (zh) 2015-09-16 2016-08-31 用于生成目标程序的配置文件的装置和方法

Country Status (3)

Country Link
US (1) US10055221B2 (zh)
EP (1) EP3144814B1 (zh)
CN (1) CN106547587B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180054364A (ko) * 2016-11-15 2018-05-24 삼성전자주식회사 트레이스 데이터를 생성하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
GB2560749B (en) * 2017-03-24 2020-10-14 Advanced Risc Mach Ltd Trace data representation
JP6806249B2 (ja) 2017-06-19 2021-01-06 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、及びプログラム
US10466986B2 (en) * 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
CN112882753A (zh) * 2019-11-29 2021-06-01 中科寒武纪科技股份有限公司 程序运行方法及装置
CN111158791A (zh) * 2019-12-31 2020-05-15 广州酷狗计算机科技有限公司 配置文件更新方法、装置及系统、存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6126329A (en) * 1993-06-08 2000-10-03 Rational Software Coporation Method and apparatus for accurate profiling of computer programs
CN102148714A (zh) * 2011-05-13 2011-08-10 大唐移动通信设备有限公司 软件升级方法和设备
CN104636165A (zh) * 2015-02-02 2015-05-20 广东小天才科技有限公司 移动设备启动方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732273A (en) * 1995-08-11 1998-03-24 Digital Equipment Corporation System for monitoring compute system performance
US20050183079A1 (en) * 2004-02-03 2005-08-18 Jayashankar Bharadwaj Tail duplicating during block layout
US9152531B2 (en) * 2005-02-18 2015-10-06 Green Hills Sofware, Inc. Post-compile instrumentation of object code for generating execution trace data
US8527960B2 (en) * 2009-12-04 2013-09-03 Sap Ag Combining method parameter traces with other traces
EP3017566A1 (en) * 2013-07-01 2016-05-11 NIKE Innovate C.V. Wireless initialization of electronic devices for first time use

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6126329A (en) * 1993-06-08 2000-10-03 Rational Software Coporation Method and apparatus for accurate profiling of computer programs
CN102148714A (zh) * 2011-05-13 2011-08-10 大唐移动通信设备有限公司 软件升级方法和设备
CN104636165A (zh) * 2015-02-02 2015-05-20 广东小天才科技有限公司 移动设备启动方法及装置

Also Published As

Publication number Publication date
US20170075685A1 (en) 2017-03-16
US10055221B2 (en) 2018-08-21
CN106547587A (zh) 2017-03-29
EP3144814A1 (en) 2017-03-22
EP3144814B1 (en) 2021-08-25

Similar Documents

Publication Publication Date Title
CN106547587B (zh) 用于生成目标程序的配置文件的装置和方法
CN112000370B (zh) 循环指令的处理方法、装置、设备和存储介质
JP6546584B2 (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
US11163574B2 (en) Method for maintaining a branch prediction history table
US9201806B2 (en) Anticipatorily loading a page of memory
US12093398B2 (en) Vulnerability analysis and reporting for embedded systems
US11636122B2 (en) Method and apparatus for data mining from core traces
CN115525344B (zh) 一种译码方法、处理器、芯片及电子设备
JP2020500368A (ja) データプリフェッチング方法、装置、およびシステム
US7228528B2 (en) Building inter-block streams from a dynamic execution trace for a program
CN107506293B (zh) 一种软件性能数据采集方法和装置
US9652245B2 (en) Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
US8769498B2 (en) Warning of register and storage area assignment errors
CN113168329A (zh) 循环退出预测器
US11194575B2 (en) Instruction address based data prediction and prefetching
CN108027762B (zh) 生成和处理指示处理电路的指令执行的跟踪流的装置和方法
US11941403B2 (en) Selective prediction based on correlation between a given instruction and a subset of a set of monitored instructions ordinarily used to generate predictions for that given instruction
CN114780409A (zh) 基于程序运行进程的断点设置方法、电子设备和存储介质
US11341023B2 (en) Apparatus, method, and non-transitory computer-readable medium for analyzing trace information
US20040268100A1 (en) Apparatus to implement mesocode
CN116069602B (zh) 一种最坏情况执行时间分析方法和装置
CN112199160B (zh) 虚拟指令还原方法、装置、设备及存储介质
US20040268326A1 (en) Multiple instruction set architecture code format
CN101093465A (zh) 访问控制器和访问控制方法
CN118502766A (zh) 字节码编译方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant