CN108628637A - 跟踪数据表示 - Google Patents

跟踪数据表示 Download PDF

Info

Publication number
CN108628637A
CN108628637A CN201810220876.5A CN201810220876A CN108628637A CN 108628637 A CN108628637 A CN 108628637A CN 201810220876 A CN201810220876 A CN 201810220876A CN 108628637 A CN108628637 A CN 108628637A
Authority
CN
China
Prior art keywords
program instruction
sequence
tracking
executed
branch
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
Application number
CN201810220876.5A
Other languages
English (en)
Other versions
CN108628637B (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
Advanced Risc Machines 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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN108628637A publication Critical patent/CN108628637A/zh
Application granted granted Critical
Publication of CN108628637B publication Critical patent/CN108628637B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/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
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Abstract

本公开涉及跟踪数据表示。跟踪电路22、6形成跟踪对象34,跟踪对象34表示已执行程序指令序列,并包括指示已执行程序指令序列的起始地址的起始地址指示符、指示从起始地址开始的已执行程序指令序列内的分支结果序列的分支结果指示符、以及指示对分支结果序列被检测到的次数的计数的计数指示符。跟踪电路可以是片上22或片外6。跟踪对象可以包括在由所涉及的跟踪对象表示的程序指令序列之后要遵循的下一个程序指令序列的起始地址的指示符。

Description

跟踪数据表示
技术领域
本公开涉及数据处理系统的领域。更具体地说,本公开涉及与数据处理系统内执行的程序指令序列相对应的跟踪数据的表示。
背景技术
已知为数据处理系统提供跟踪机制以使得能够通过生成指示通过数据处理系统所遵循的程序指令的执行路径的跟踪数据来分析程序指令序列的执行。例如,在越来越复杂的数据处理系统及其相关联的程序上执行的调试和诊断操作中,这种跟踪机制是有用的。
跟踪机制的配设带来的挑战是它们可以产生大量可能难以管理/处理的跟踪数据。跟踪数据的量可以通过各种不同的方式来减少。在某些形式的跟踪机制中,当程序本身可用时,跟踪数据仅仅提供遵循通过程序的执行路径所需的信息,例如,条件分支指令的已执行或未执行结果、程序流的数据相关的变化、以及周期同步地址数据的指示。此外,可以使用各种压缩技术对跟踪数据进行压缩,以减少数据量并简化对跟踪数据的处理。如果跟踪数据被划分为表示不同执行线程的流(例如,由多核处理器内的不同处理器执行的不同线程),则这种压缩技术可以在效率方面得到改进,因为在线程内往往具有较高的相关度,使得与压缩来自不同交织线程的跟踪数据相比能够实现更高程度的压缩。
发明内容
本公开的至少一些示例实施例提供了一种用于处理数据的装置,其包括:
处理电路,用于执行程序的程序指令;以及
跟踪电路,用于生成多个跟踪对象,其中,
跟踪对象将已执行程序指令序列表示为:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示在从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述分支结果序列被检测到的次数的计数。
本公开的至少一些示例实施例提供了用于耦合到执行程序的程序指令以生成多个跟踪对象的处理电路的一种跟踪电路,其中
跟踪对象将已执行程序指令序列表示为:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述已执行程序指令序列被执行的次数的计数。
本公开的至少一些示例实施例提供了一种处理数据的方法,其包括:
执行程序的程序指令;以及
生成多个跟踪对象,其中,
跟踪对象将已执行程序指令序列表示为:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述已执行程序指令序列被执行的次数的计数。
本公开的至少一些实施例提供了一种分析程序的执行的方法,其包括:
接收指定所述程序的程序指令的数据;
接收指定将已执行程序指令序列表示为以下内容的跟踪对象的数据:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述已执行程序指令序列被执行的次数的计数;以及
分析所述指定程序指令的数据和所述指定跟踪对象的数据以至少确定给定程序指令被执行的次数。
根据以下结合附图阅读的对示例的描述,本技术的其他方面、特征、和优点将变得显而易见,其中:
附图说明
图1示意性地示出了使用片上前体(precursor)数据形成的数据处理系统;
图2示意性地示出了使用片外前体数据形成的数据处理系统;
图3示意性地示出了已执行程序指令序列和表示该序列的相关联的跟踪对象;以及
图4示意性地示出了表示已执行程序指令序列的跟踪对象的另一示例。
具体实施方式
图1示意性地示出了使用片上前体数据形成的数据处理系统2。数据处理系统2包括经由片外跟踪电路6连接到通用可编程计算机8的片上系统集成电路4。集成电路4包括存储要由处理器核心14、16执行的程序指令12的存储器10。与处理器核心14、16相关联的相应的缓存存储器18、20存储程序指令12和待操纵的数据。
片上跟踪电路22耦合到处理器核心14、16,并监视它们对程序指令的执行。用作用于执行程序指令的处理电路的处理器核心14、16向片上跟踪电路22提供指示由核心14、16执行的条件分支指令的分支指令结果的数据以及核心14、16所遵循的非静态分支目标的程序指令地址。此外,处理器核心14、16可以提供指示由核14、16执行的程序指令的程序指令地址的数据作为同步点,例如在周期性地基础上提供同步点地址。片上跟踪电路22用于缓冲从核心14、16接收到的数据,并且在该示例实施例中,使用该数据来执行包括将在下面进一步讨论的跟踪对象的简档前体数据的片上生成。
片上跟踪电路22从相应的核心14、16接收表征数据的执行的单独流,并且这些流可以被分别处理以形成分别的简档前体数据,即,一组简档前体数据对应于核心14并且一组简档前体数据对应于核心16。
片上跟踪电路22处理从核心14、16接收到的缓冲数据以形成跟踪对象。每个跟踪对象通过使用以下各项来表示已执行程序指令序列:用于指示该已执行程序指令序列的起始地址的起始地址指示符、用于指示从该起始地址处开始的该已执行程序指令序列内的分支结果序列的分支结果指示符、以及用于指示对分支结果序列在正由片上跟踪电路22监视并由所生成的简档前体数据表示的程序指令的执行窗口内被检测到的次数的计数的计数指示符。所生成的简档前体数据包括多个跟踪对象,每个跟踪对象表示观察到的已执行程序指令序列。
简档前体数据的跟踪对象可以与程序指令12结合考虑,以便可以识别在已执行程序指令序列内执行的特定程序指令。在其他示例实施例中,当跟踪对象包括下一地址指示符时,可以使用简档前体数据来单独给出所采用的分支指令对其相应的分支目标地址的使用计数。
包括这种跟踪对象的简档前体数据准许对要实现的执行行为的紧凑表示,但可能不准许贯穿整个窗口的执行的精确的端到端流被确定-而是生成更加基于统计的执行视图,其中,已执行程序指令序列可以与这些序列被检测到的次数一起被标识。
在目标是测试代码覆盖率(即,检查在整个程序内哪些程序指令已被执行或尚未被执行)的一些示例实施例中,计数指示符可在一处饱和,从而给出特定代码序列是否已被执行的指示至少一次。
在至少一些示例实施例中,跟踪对象还可以包括下一地址指示符,以指示在包括该下一地址指示符的跟踪对象的已执行程序指令序列之后要执行的下一个程序指令序列的起始地址。因此,跟踪对象可以有效地包括指示接下来的跟踪对象的链接信息。这可以使得能够恢复关于跟踪对象如何链接在一起的信息中的至少一些并给出程序执行流程的更全面的视图。
当分析从核心14、16接收到的缓冲数据时,片上跟踪电路22可用于通过使用接收到的用于指示要形成的跟踪对象之间的边界的程序指令地址数据(例如,数据相关(dependent)的分支目标数据、同步点数据等)来将接收到的数据分成与跟踪对象相关联的序列,由此触发终止对当前跟踪的程序指令序列的跟踪和开始对下一个跟踪的程序指令序列的跟踪。
如前所述,可以结合为了理解程序执行的实际流程而执行的程序指令12来分析包括由图1的示例中的片上跟踪电路22形成的跟踪对象的简档前体数据。这可以通过将目前紧凑表示的简档前体数据传送到片外跟踪电路6来实现,通用计算机8可以从片外跟踪电路6中读取该简档前体数据。通用计算机8还可以访问由集成电路4执行的程序指令12的单独副本并结合简档前体数据,从而识别出与简档前体数据中所标识的跟踪对象相对应的各种程序指令序列内的特定程序指令。
包括跟踪对象的简档前体数据可以具有各种不同的形式。在一些示例形式中,形成简档前体数据的跟踪对象的起始地址可以被表示为距简档前体数据内的其他跟踪对象的起始地址的地址偏移。因此,需要在简档前体数据中指定相对较少的绝对地址,并且使用与这些绝对指定的相对较少的起始地址的偏移量来导出其他跟踪对象的地址。这可以使简档前体数据更紧凑。
在一些实施例中,跟踪对象的形式可以是例如它们各自指定单个执行路径。在其他实施例中,跟踪对象可以指定多个分支执行路径,该分支执行路径对应于从共同起始地址开始并且经过共享中间分支节点直到各自终止于相应叶节点处的各个分支结果序列。这样的布置可以提供执行路径的更紧凑表示并因此减少简档前体数据的数据量。在这样的实施例中,每个叶节点可以具有相关联的计数指示符,该相关联的计数指示符指示对终止于该叶节点的执行路径被执行的次数的计数,如所涉及的该组简档前体数据中所表示的。在这样的布置中,跟踪对象的给定中间节点可以具有对在共同起始地址之间延伸并且经过该给定中间节点的程序指令序列被执行的次数的计数,其由与包括该给定中间节点的执行路径的叶节点相关联的计数值的总和来表示。因此,从每个中间节点向前跟踪到最终叶节点使得能够获得各个叶节点计数的总和,从而获得所涉及的中间节点的计数。
叶节点可以具有相关联的下一地址指示符,其指示处理电路在终止于该叶节点的分支执行路径之后执行的下一个程序指令的地址。可能并非所有的叶节点都具有与其相关联的下一个地址值,因为这可能不总是可用的。如先前所讨论的,跟踪对象包括分支结果,该分支结果指示在从该跟踪对象的起始地址开始的已执行程序指令序列内的分支结果序列。简档前体数据的数据量可以通过使用对分支结果序列进行游程(runlength)编码的分支结果指示符来减少。
图1示出了其中片上跟踪电路22形成包括跟踪对象的简档前体数据的示例实施例。图2示出了其中片外跟踪电路6用于形成包含跟踪对象的简档前体数据的示例实施例。在图2的示例实施例中,片上跟踪电路22将指示由处理电路(核心14、16)执行的分支指令的分支指令结果(E/N数据)的数据传递到片外跟踪电路6。片上跟踪电路22还将地址数据([addr])传递到片外跟踪电路6,该地址数据指示所执行的分支指令的非静态分支目标(例如,数据相关分支目标)的程序地址以及充当周期同步点的程序指令地址或程序指令。
在图2的这个示例实施例中,片外跟踪电路6根据由片上跟踪电路22发送到其的数据形成跟踪对象。然后,将由片外跟踪电路形成的简档前体数据发送到通用计算机8,在通用计算机8中结合程序指令12对其进行分析以提供调试和诊断信息(以及关于程序指令12和集成电路4的操作的其他信息)。
形成目标对象的跟踪电路可以是在片上跟踪电路22或片外跟踪电路6内提供的专用硬件。可替换地,其可以是用于通过执行自身的程序代码(例如,用于生成跟踪对象的固件)来形成跟踪对象的更通用的硬件(例如,专用小型处理器核心)。在其他示例实施例中,也可以由在程序控制下执行的通用计算机8的处理电路来提供跟踪电路以形成简档前体数据,该简档前体数据然后被发送到别处用于分析,其优点在于由通用计算机8形成的这种简档前体数据具有更紧凑的表示来用于发送别处。
图3示意性地示出了包括分支指令B和不是分支指令的指令I的程序指令序列,因此不能形成程序流改变的点。在所示出的示例中,程序指令序列在对应于指令24的addr0处被输入。程序流然后从程序指令24被传递到条件分支指令26三次。当执行起始地址addr0之后的程序指令序列时,两个另外的条件分支指令28、30被经过且不被执行,然后到达被执行的(被采用的)分支指令26。分支指令26、28、30是否被执行在图3中由E或N来指示。
第三次遇到分支指令26时,其未被执行,因此不跳回到该指令24的起始地址addr0。因此,分支指令26的分支结果序列是:被执行,被执行,未被执行(E,E,N)。在所示出的循环内的分支指令28、30各自在全部三个时机上都未被执行,并且因此它们的分支结果是:未被执行,未被执行,未被执行(N,N,N)。
在分支指令26第三次出现时的分支指令26的未执行之后,程序流进行到分支指令32,该分支指令32被执行(采用)并触发到新的起始地址addr1的分支。
图3还示意性地示出了与图3所示的执行路径序列相对应的跟踪对象34。具体地,跟踪对象34包括指示与指令24的指令地址相对应的序列的起始地址的起始地址指示符[addr0]。指示在对序列的前两次遍历(path0,path1)上与分支指令28、30、和26相对应的分支结果序列的分支结果指示符由N,N,E表示(其指示:未被执行,未被执行,被执行)。计数指示符#2用于指示该分支结果序列(即N,N,E)被检测为发生两次。跟踪对象34还指示在起始地址addr0处开始的另一执行路径,即,在指令24和分支指令32之间延伸的路径。该路径的分支结果指示符是未被执行,未被执行,未被执行,被执行,其对应于沿着该路径进行的分支指令28、30、26、和32的结果。如计数指示符#1所示,该路径被执行一次。该执行路径与路径2相对应。
虽然未在跟踪对象34中被示出,但在一些实施例中,跟踪对象可以用于指示在由所涉及的跟踪对象所表示的程序指令序列之后要执行的下一个程序指令序列的起始地址,例如,跟踪对象34可以另外包括指向在执行分支指令32之后要执行的程序指令序列的起始地址addr2的指针。
下面的伪代码给出了可以对指定数据的接收到的分支结果和接收到的地址数据执行的处理的编程表示,以便生成示例跟踪对象。这种伪代码可以对应于由例如图1的片上跟踪电路22或图2的片外跟踪电路执行的作为固件的代码。该伪代码内的注释也参考跟踪对象的可能形式,其使用了在每个跟踪对象内的如图4所示的多个执行路径的叶和分支表示。
图4示出了使用了每个跟踪对象内的多个执行路径的叶和分支表示的多个跟踪对象。第一个跟踪对象指定绝对地址[addr]。接下来的跟踪对象通过与第一个跟踪对象的起始地址的偏移值来指定其起始地址,即[Δaddr]。单独的跟踪对象表示穿过从起始地址延伸并对应于中间节点或叶节点的分支指令的执行路径。叶节点终止所观察的/检测到的分支结果序列,并且在图4的表示中由“○”表示。中间节点表示不终止所观察的执行路径的分支结果,并且在图4中由“#”表示。叶节点具有与其相关联的计数指示符,并且可选地具有表示在与该叶节点相对应的分支指令之后执行的程序指令序列的下一个地址的下一地址指示符。与中间节点相对应的分支指令被执行的次数可以通过对与在所表示的分支路径内在该中间节点之后的每个叶节点相关联的计数值进行求和来确定。
在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在这种情境中,“配置”是指硬件或软件互连的布置或方式。例如,该设备可以具有提供所定义的操作的专用硬件,或者可以被编程为执行功能的处理器或其他处理设备。“被配置为”并不意味着装置元件需要以任何方式被改变以提供所定义的操作。
虽然已参考附图详细描述了本发明的说明性实施例,但应理解的是,本发明不限于这些精确的实施例,并且本领域的技术人员可以在不背离由所附权利要求所限定的本发明的范围和精神的情况下在其中实现各种改变和修改。

Claims (21)

1.一种用于处理数据的装置,包括:
处理电路,用于执行程序的程序指令;以及
跟踪电路,用于生成多个跟踪对象,其中,
跟踪对象将已执行程序指令序列表示为:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示在从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述分支结果序列被检测到的次数的计数。
2.根据权利要求1所述的装置,其中,所述跟踪对象包括下一地址指示符,用于指示在所述已执行程序指令序列之后要执行的下一个程序指令序列的起始地址。
3.根据权利要求1所述的装置,其中,所述计数指示符在一处饱和,并且所述跟踪对象提供指示程序指令是否已被执行的覆盖数据。
4.根据权利要求1所述的装置,其中,所述处理电路包括执行相应程序指令流的多个处理器,并且所述跟踪电路被配置为生成用于分别表示所述程序指令流的所述跟踪对象。
5.根据权利要求1所述的装置,其中,所述处理电路被配置为向所述跟踪电路提供指示由所述处理电路执行的分支指令的分支指令结果以及由所述处理电路执行的分支指令的非静态分支目标的程序指令地址的数据。
6.根据权利要求5所述的装置,其中,所述处理电路被配置为向所述跟踪电路提供指示由所述处理电路执行的程序指令的程序指令地址的数据作为同步点。
7.根据权利要求5所述的装置,其中,所述跟踪电路被配置为响应于从所述处理电路接收到的程序指令地址数据,终止跟踪当前跟踪的程序指令序列并开始跟踪下一个跟踪的程序指令序列。
8.根据权利要求1所述的装置,其中,所述跟踪电路将所述跟踪对象收集在一起以形成简档前体数据,并且所述简档前体数据与所述程序结合表示给定程序指令序列被所述处理电路执行的次数。
9.根据权利要求2所述的装置,其中,所述跟踪电路将所述跟踪对象收集在一起以形成简档前体数据,并且所述简档前体数据表示对具有相应分支目标地址的分支指令地址对的计数。
10.根据权利要求9所述的装置,其中,所述简档前体数据包括表示按相应的被表示的起始地址排序的所述跟踪对象的数据。
11.根据权利要求10所述的装置,其中,形成所述简档前体数据的跟踪对象的所述起始地址中的至少一些被表示为距形成所述简档前体数据的其他跟踪对象的起始地址的地址偏移。
12.根据权利要求1所述的装置,其中,所述跟踪对象指定多个分支执行路径,所述多个分支执行路径对应于从共同起始地址开始的经过共享中间分支节点并且各自终止于叶节点的相应分支结果序列。
13.根据权利要求12所述的装置,其中,所述叶节点中的每一个都具有相关联的计数指示符,所述计数指示符指示对终止于所述叶节点的分支执行路径被所述处理电路执行的次数的计数。
14.根据权利要求13所述的装置,其中,包括给定中间节点的跟踪对象通过与包括所述给定中间节点的执行路径的叶节点相关联的计数值的总和来表示在所述共同起始地址和所述给定中间节点之间延伸的程序指令序列被执行的次数。
15.根据权利要求12所述的装置,其中,叶节点中的至少一些具有相关联的下一地址指示符,所述下一地址指示符指示终止于所述叶节点的分支执行路径之后由所述处理电路执行的下一个程序指令的地址。
16.根据权利要求8所述的装置,其中,所述简档前体数据对所述分支结果序列进行游程编码。
17.根据权利要求1所述的装置,其中,所述处理电路是集成电路的处理器核心并且所述跟踪电路是以下各项之一:
所述集成电路内的片上跟踪电路;以及
经由通信接口与所述集成电路耦合的片外跟踪电路。
18.一种跟踪电路,用于耦合到执行程序的程序指令以生成多个跟踪对象的处理电路,其中,
跟踪对象将已执行程序指令序列表示为:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述已执行程序指令序列被执行的次数的计数。
19.一种处理数据的方法,包括:
执行程序的程序指令;以及
生成多个跟踪对象,其中,
跟踪对象将已执行程序指令序列表示为:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述已执行程序指令序列被执行的次数的计数。
20.一种分析程序的执行的方法,包括:
接收指定所述程序的程序指令的数据;
接收指定将已执行程序指令序列表示为以下内容的跟踪对象的数据:
起始地址指示符,用于指示所述已执行程序指令序列的起始地址;
分支结果指示符,用于指示从所述起始地址开始的所述已执行程序指令序列内的分支结果序列;以及
计数指示符,用于指示对所述已执行程序指令序列被执行的次数的计数;以及
分析所述指定程序指令的数据和所述指定跟踪对象的数据以至少确定给定程序指令被执行的次数。
21.根据权利要求19所述的方法,其中,所述分析确定所述给定程序指令被包括在哪个执行路径内。
CN201810220876.5A 2017-03-24 2018-03-16 用于处理数据的装置和方法 Active CN108628637B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1704675.6A GB2560749B (en) 2017-03-24 2017-03-24 Trace data representation
GB1704675.6 2017-03-24

Publications (2)

Publication Number Publication Date
CN108628637A true CN108628637A (zh) 2018-10-09
CN108628637B CN108628637B (zh) 2024-05-03

Family

ID=58687827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810220876.5A Active CN108628637B (zh) 2017-03-24 2018-03-16 用于处理数据的装置和方法

Country Status (5)

Country Link
US (1) US10956303B2 (zh)
EP (1) EP3379418A1 (zh)
JP (1) JP7116562B2 (zh)
CN (1) CN108628637B (zh)
GB (1) GB2560749B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802940B1 (en) * 2017-05-22 2020-10-13 Palantir Technologies Inc. Approaches for analyzing data streams
EP3792770B1 (en) * 2019-09-13 2023-11-08 Accemic Technologies GmbH Trace-data processing device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62130436A (ja) * 1985-12-03 1987-06-12 Nec Corp トレ−ス制御装置
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US20040111708A1 (en) * 2002-09-09 2004-06-10 The Regents Of The University Of California Method and apparatus for identifying similar regions of a program's execution
US20080256339A1 (en) * 2007-04-11 2008-10-16 Freescale Semiconductor, Inc. Techniques for Tracing Processes in a Multi-Threaded Processor
US20090287729A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Source code coverage testing
CN103299273A (zh) * 2011-01-13 2013-09-11 Arm有限公司 数据处理装置的追踪

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62288946A (ja) * 1986-06-09 1987-12-15 Fujitsu Ltd ジヤンプ履歴記録方式
US5809293A (en) * 1994-07-29 1998-09-15 International Business Machines Corporation System and method for program execution tracing within an integrated processor
JPH10260872A (ja) * 1997-01-20 1998-09-29 Fujitsu Ltd 計算機システムおよび記録媒体
JP2878264B1 (ja) * 1998-03-11 1999-04-05 甲府日本電気株式会社 トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US7694281B2 (en) * 2005-09-30 2010-04-06 Intel Corporation Two-pass MRET trace selection for dynamic optimization
JP4892387B2 (ja) * 2007-03-30 2012-03-07 財団法人福岡県産業・科学技術振興財団 実行パス検出装置、情報処理装置、実行パス検出方法、プログラム及び記録媒体
US8959496B2 (en) * 2010-04-21 2015-02-17 Microsoft Corporation Automatic parallelization in a tracing just-in-time compiler system
US20130246736A1 (en) * 2010-11-25 2013-09-19 Toyota Jidosha Kabushiki Kaisha Processor, electronic control unit and generating program
US20130047169A1 (en) * 2011-08-16 2013-02-21 Computer Associates Think, Inc. Efficient Data Structure To Gather And Distribute Transaction Events
JP5834991B2 (ja) * 2012-02-17 2015-12-24 富士電機株式会社 図式プログラムのテスト網羅性測定装置およびその方法、並びにプログラム
EP2873983B1 (en) * 2013-11-14 2016-11-02 Accemic GmbH & Co. KG Trace-data processing and profiling device
EP3144814B1 (en) * 2015-09-16 2021-08-25 ARM Limited Method and apparatus for generating a profile of a target program
US20170277538A1 (en) * 2016-03-24 2017-09-28 Centipede Semi Ltd. Speculative multi-threading trace prediction

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62130436A (ja) * 1985-12-03 1987-06-12 Nec Corp トレ−ス制御装置
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US20040111708A1 (en) * 2002-09-09 2004-06-10 The Regents Of The University Of California Method and apparatus for identifying similar regions of a program's execution
US20080256339A1 (en) * 2007-04-11 2008-10-16 Freescale Semiconductor, Inc. Techniques for Tracing Processes in a Multi-Threaded Processor
US20090287729A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Source code coverage testing
CN103299273A (zh) * 2011-01-13 2013-09-11 Arm有限公司 数据处理装置的追踪

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHUNG-FU KAO ETAL.: ""A Hardware Approach to Real-Time Program Trace Compression for Embedded Processors"", 《IEEE》, pages 530 - 543 *
LHADJ: ""Techniques to simplify the analysis of execution traces for program comprehension"", 《OTTAWA-CARIETON INSTITUTE FOR COMPUTER SCIENCE SCHOOL OF INFORMATION TECHNOLOGY AND ENGINEERING》, pages 1 - 175 *

Also Published As

Publication number Publication date
US20180276106A1 (en) 2018-09-27
EP3379418A1 (en) 2018-09-26
GB201704675D0 (en) 2017-05-10
CN108628637B (zh) 2024-05-03
GB2560749A (en) 2018-09-26
JP7116562B2 (ja) 2022-08-10
US10956303B2 (en) 2021-03-23
JP2018163656A (ja) 2018-10-18
GB2560749B (en) 2020-10-14

Similar Documents

Publication Publication Date Title
EP2873983B1 (en) Trace-data processing and profiling device
KR101994636B1 (ko) 데이터 처리장치의 추적
US7325168B2 (en) Trace data source identification within a trace data stream
US9720695B2 (en) System for providing trace data in a data processor having a pipelined architecture
US20090125756A1 (en) Trace data timestamping
US7237151B2 (en) Apparatus and method for trace stream identification of a processor reset
CN108628637A (zh) 跟踪数据表示
CN108875519A (zh) 对象检测方法、装置和系统及存储介质
CN109379305A (zh) 一种数据下发方法、装置、服务器及存储介质
CN111290305B (zh) 多套惯导系统多路数字量采集与处理防冲突方法及系统
WO2018158815A1 (ja) 点検支援装置、点検支援方法および記録媒体
CN108345534B (zh) 生成和处理跟踪流的装置和方法
US7519497B2 (en) Apparatus and method for state selectable trace stream generation
US9678852B2 (en) Tracing the operations of a data processing apparatus using trace data source identifiers to respond to flush requests
CN113469113A (zh) 动作计数方法、装置、电子设备和存储介质
US20060107123A1 (en) Processor and development supporting apparatus
JP2008158662A (ja) メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体
CN110391952A (zh) 一种性能分析方法、装置及其设备
JPH11242614A (ja) 並列プログラム用リアルタイム検証装置および方法
CN109388500A (zh) 一种基于无线测量报告mr的处理方法及系统
JP2007310516A (ja) バスモニタ回路
CN111314268B (zh) 一种数据包分析方法及装置
JP4685368B2 (ja) データを処理する装置、トレースデータを発生する方法、及びトレースデータを分析する装置
KR20040055629A (ko) 트레이스 스트림에서 전송되는 패킷 그룹의 op 코드확장을 위한 장치 및 방법
CN115830497A (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