CN102193778B - 用于生成时间戳的方法、设备和跟踪模块 - Google Patents

用于生成时间戳的方法、设备和跟踪模块 Download PDF

Info

Publication number
CN102193778B
CN102193778B CN201110050860.2A CN201110050860A CN102193778B CN 102193778 B CN102193778 B CN 102193778B CN 201110050860 A CN201110050860 A CN 201110050860A CN 102193778 B CN102193778 B CN 102193778B
Authority
CN
China
Prior art keywords
data processing
grouping
timestamp
tracking
tracks
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
CN201110050860.2A
Other languages
English (en)
Other versions
CN102193778A (zh
Inventor
M.J.威廉斯
J.M.霍尔利
E.J.S.阿什菲尔德
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.)
Anne science and Technology (China) Co., Ltd.
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 CN102193778A publication Critical patent/CN102193778A/zh
Application granted granted Critical
Publication of CN102193778B publication Critical patent/CN102193778B/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/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
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp

Abstract

本发明涉及用于生成时间戳的方法、设备和跟踪模块。本发明涉及数据处理领域,具体来说涉及一种用于在跟踪数据处理设备或者由数据处理设备执行的处理的特性的同时生成时间戳的方法、设备1和跟踪模块12。当发生预定事件时,时间戳请求标志18被设定成指示时间戳请求待定。在生成后续跟踪分组时,确定时间戳请求标志是否指示时间戳请求待定,并且如果请求待定则生成对应于所述后续跟踪分组的时间戳,并且把时间戳请求标志设定成指示没有待定时间戳请求。

Description

用于生成时间戳的方法、设备和跟踪模块
技术领域
本发明涉及数据处理领域。具体来说,本发明涉及在跟踪数据处理的特性的同时生成时间戳。
背景技术
已知用于生成指示由处理设备执行的处理特性的跟踪信息的跟踪模块。有可能生成指示跟踪分组的生成时间的时间戳,并且把所述时间戳周期性地插入到跟踪流中。但是这样的时间戳占用跟踪带宽,这是因为它们增大了跟踪流中的跟踪数据量。如果实现周期精确的跟踪则可以生成更少的时间戳,但是在这种情况下则需要更多的跟踪数据,因此在跟踪缓冲器容量和跟踪端口带宽方面再次是成本高昂。另一方面,太少的时间戳会妨碍从跟踪流推断出跟踪分组的生成顺序。本发明试图以高效的方式生成时间戳,以便减少由跟踪模块生成的跟踪分组的数目并且同时仍然允许建立跟踪流之间的相关。
发明内容
本技术提供一种数据处理方法,其包括以下步骤:
利用数据处理设备来处理数据;
生成指示所述数据处理设备或所述处理的至少一项特性的跟踪分组;
在发生预定事件时,设定时间戳请求标志以指示时间戳请求待定;
在生成后续的跟踪分组时,检查时间戳请求标志是否指示时间戳请求待定;以及
当时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳并且把时间戳请求标志设定成指示没有时间戳请求待定。
在本技术中,生成指示数据处理设备或者由所述设备执行的数据处理的至少一项特性的跟踪分组。当发生预定事件时,触发用于生成时间戳的程序。但是本技术认识到,不希望在发生预定事件时立即生成时间戳。相反,在预定事件发生时设定时间戳请求标志,其指示时间戳请求待定。随后,在生成后续的跟踪分组时,检查时间戳请求标志以查看是否有时间戳请求待定,并且当时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳,并且随后把时间戳请求标志设定成指示没有时间戳请求待定。这种技术强制在还生成新跟踪分组的一点上生成时间戳。这意味着可以与所生成的后续跟踪分组一起输出时间戳,从而避免在未生成跟踪数据时把时间戳分组插入到跟踪流中。通过避免生成仅包含时间戳而不包含任何跟踪数据的分组,跟踪流包含更少的跟踪分组,并且因此更加高效地使用例如跟踪缓冲器或跟踪输出端口的跟踪带宽。此外,本技术意味着如果对于特定跟踪流不再输出跟踪分组(例如如果被监控的处理已经完成),则在这段时间期间不把时间戳插入到流中,并且从而节省跟踪资源。
许多类型的事件可以被用作触发设定时间戳请求标志以指示时间戳请求待定的预定事件。所述预定事件可以是在数据处理期间发生的事件,或者是独立于数据处理发生的外部事件。
举例来说,在包括用于执行多条线程的多个处理器的系统中,所述预定事件可以包括把所述多条线程的其中一条的执行从所述多个处理器的其中一个转移到所述多个处理器当中的另一个。在这样的系统中,可以为对应的处理器生成单独的跟踪流。在对称多处理器系统中,可以利用多于一个处理器执行特定线程,从而线程在不同处理器之间迁移。当跟踪这样的线程时则会存在问题,即对应于这些处理器的跟踪流变得脱节(从而每一个跟踪流包括对应于不同线程的跟踪数据片段(fragment))。在没有本技术的情况下,其中不同跟踪流中的跟踪分组的生成时间无法彼此相关。这一问题通过强制在处理器之间的线程的每次转移之后发出时间戳而得到解决。随后可以为每一个跟踪分组的生成时间设置上界和下界,并且可以利用所生成的时间戳重建用于特定线程的跟踪分组的生成顺序。
所述预定事件还可以包括异常事件。异常事件是触发中断数据处理的事件。因此,异常事件的发生的场合(instance)可以指示跟踪流中的一点,在该点处相邻跟踪分组在非连续时间点处被生成。通过在发生异常事件时触发时间戳请求,后续的跟踪分组将与时间戳一起生成,并且从而可以在跟踪流中识别出异常点。
所述预定事件还可以包括开始执行异常应对线程,以及/或者在执行异常应对线程之后返回所述处理。如果跟踪模块对于触发处理器核心中的异常事件的信号没有可见性但是对于由处理器执行的操作具有可见性,则这可能是有用的。不是监控异常事件,而是使用在异常之后(例如异常或中断应对例程的第一项操作)或者在正常处理返回之后执行的操作而不是来识别中断。在这些点处触发生成时间戳有助于令跟踪数据相关。
另一种类型的预定事件可以是上下文切换(context switch),其发生在处理器被置于处理指令的不同状态中时。举例来说,处理器可能有若干条线程要执行,每一条线程由在给定状态下执行的操作序列构成,所述给定状态另外被称作上下文。这样的上下文切换可能导致正在执行的数据处理中断,并且因此上下文切换可以是用来记录跟踪流中的时间戳的有用点。
所述预定事件还可以包括上下文同步事件。在发生上下文切换时,则处理流水线(pipeline)可能需要被刷新(flush)指令,从而在上下文切换之后将利用新上下文来处理获取到所述流水线中的指令。这可能会导致在上下文切换之后所处理的操作不同于在上下文切换之前所处理的操作。因此,上下文同步事件可以是处理中断的指示符,并且从而可用于在该点处请求时间戳。对于某些类型的跟踪模块,比起上下文切换本身可能更容易识别上下文同步事件,这是因为上下文同步事件可以由指令触发,而上下文切换则可以通过监控上下文寄存器值来识别,所述上下文寄存器值对于跟踪模块来说可能不可见。异常应对线程的起始以及在异常应对之后返回所述处理也可以是上下文同步事件。
应当认识到,前面的预定事件实例可以被用来单独地或者组合地触发时间戳请求,从而在任何一种或多种不同类型的预定事件发生时设定时间戳请求标志。
本技术还包括选择性地启用或禁用所述跟踪分组的生成的步骤;其中:
在所述发生所述至少一个预定事件时,把所述时间戳请求标志设定成指示时间戳请求待定,而与所述跟踪分组的所述生成被启用还是禁用无关;以及
当在重新启用所述跟踪分组的生成之后生成后续跟踪分组时并且在所述时间戳请求标志指示时间戳请求待定时,生成对应于后续跟踪分组的所述时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
不需要总是启用用于生成指示处理器操作的跟踪信息的跟踪模块。例如在执行其操作是公知的数据处理时,或者在期望节省跟踪带宽时,则可以禁用跟踪模块以节省跟踪资源。因此跟踪模块可以具有用于启用或禁用跟踪分组的生成的逻辑。本技术认识到,如果禁用了跟踪分组的生成并且于是随后在数据处理期间重新启用,则可能的是跟踪流在重新启用跟踪分组的生成之后所监控的处理不同于在禁用跟踪分组的生成之前所监控的处理。在这种情况下,有用的做法是在重新启用跟踪分组的生成之后包括时间戳。因此,虽然跟踪分组的生成被禁用,但本技术继续监控是否发生了至少一个预定事件,并且如果这样的事件已经发生,则把时间戳请求标志设定成指示待定的时间戳请求,而与跟踪分组的生成被启用还是禁用无关。当在重新启用跟踪分组的生成之后生成后续跟踪分组时,则如果时间戳请求标志指示时间戳请求待定,则生成时间戳。这允许重建在禁用跟踪分组的生成之前和之后所生成的跟踪分组的生成顺序。
在本技术中,由数据处理设备执行的软件可以在发生预定事件时控制数据处理设备把时间戳请求标志设定成指示时间戳请求待定。
本技术意识到,并非所有跟踪模块都具有对于由数据处理设备执行的操作的可见性,并且因此跟踪模块可能不知道数据处理设备遇到预定事件的场合。举例来说,存储器映射的仪器化跟踪宏单元(ITM)对于由处理设备输出的某些数据具有可见性,但是对于由处理设备执行的处理没有可见性。对于这样的跟踪模块,有用的做法是把软件配置成控制处理设备通过设定指示时间戳请求待定的时间戳请求标志来对预定事件的发生做出响应。所述软件例如可以是在发生预定事件时设定所述标志的处理设备的操作系统内核。
时间戳请求标志可以是被用于生成跟踪分组的跟踪模块的可编程寄存器。处理设备可以在任何预定重要事件发生时向跟踪模块的所述可编程寄存器提供信号,从而向跟踪模块通知请求生成时间戳。跟踪模块随后在生成后续跟踪分组时生成时间戳。
在本技术的另一项特征中,可以通过数据处理设备在发生预定事件时对所述可编程寄存器进行写入来把时间戳请求标志设定成指示时间戳请求待定。因此,处理设备可以向跟踪模块通知请求生成时间戳。处理设备把跟踪模块的可编程寄存器作为“请求为后续数据项加时间戳”寄存器来对待。
某些具有跟踪能力的系统可以利用多于一种定时方案来操作。举例来说,诸如被提供在单一处理器群集内的嵌入式跟踪宏单元(ETM)或仪器化跟踪宏单元(ITM)之类的局部跟踪源可以根据局部时间发生器进行操作,同时还可以使用外部定时方案。在这样的情况下,有用的做法是提供两种或更多种不同定时方案之间的相关。可以通过把所生成的时间戳施加到时间戳相关跟踪分组来把本技术应用于所述系统,以便把第一定时方案的时间戳值与第二定时方案的时间戳值相关。因此,如果在生成后续跟踪分组时设定了时间戳请求标志,则把相关跟踪分组插入到跟踪流以及所述后续跟踪分组中。随后可以对相关跟踪分组进行分析以便提供不同定时方案之间的相关。延迟相关分组的生成直到后续跟踪分组的生成为止的本技术是有用的,因为这意味着如果从未生成后续跟踪分组(即跟踪分组生成已经停止),则不会输出相关分组,从而节省跟踪带宽。
可替换地或还使用相关跟踪分组,时间戳可以是附加到后续跟踪分组的时间值。举例来说,可以把所述时间值添加到后续跟踪分组的报头。这种形式的时间戳避免生成专用于记录时间戳的额外跟踪分组,并且从而导致生成较少跟踪分组。
所生成的跟踪分组可以指示数据处理设备或者由数据处理设备执行的数据处理的许多类型的特性。举例来说,跟踪分组可以指示以下各项的至少其中一项的特性:
在所述处理期间所处理的数据;
在所述处理期间所生成的数据;
在所述处理期间所执行的指令;
在所述处理期间所访问的存储器地址;
存储在所述数据处理设备的寄存器中的值;以及
硬件事件的发生。
所述硬件事件例如可以包括开始利用数据处理设备的硬件加速器、协处理器或其他处理电路进行处理,或者接收到外部信号。
在一个实施例中,所述后续跟踪分组可以是在发生预定事件之后生成的下一个跟踪分组。这意味着在所生成的跟踪流中,加有时间戳的跟踪分组指示,在紧接着该加有时间戳的跟踪分组之前的跟踪分组的生成与该加有时间戳的跟踪分组的生成之间的某一时间发生了预定事件。
在另一个实施例中,所述后续跟踪分组可以是下一个跟踪分组和在生成所述下一个跟踪分组之后生成的后来跟踪分组中的其中之一。
在某些时刻(occasion)可能希望把时间戳的生成推迟到生成了两个或更多后续跟踪分组为止。举例来说,在某些情况下可能会关于单一操作生成一组跟踪分组。有些时候当预定事件发生时,可能正在关于前一操作生成这样的一组跟踪分组,并且与关于前一操作的该组跟踪分组相比,可能对关于在所述事件之后发生的第一操作的跟踪分组更感兴趣。因此,可以在不是关于前一操作的该组跟踪分组的一部分的第一个跟踪分组处生成时间戳。举例来说,如果第一操作对应于第一组跟踪分组(例如“1p”、“1q”、“1r”和“1s”)并且第二操作涉及第二组跟踪分组(例如“2p”、“2q”、“2r”和“2s”),则可以把对应于在第一操作期间发生的事件的时间戳的生成延迟到在第一操作完成之后生成第一个跟踪分组(“2p”)为止。如果对于某些类型的分组(例如“q”、“r”或“s”分组)的生成时间不感兴趣,则有用的是通过把时间戳的生成推迟到生成对其定时感兴趣的下一个跟踪分组(例如下一个“p”分组)为止来节省跟踪带宽(并且避免跟踪资源上溢的风险)。
在某些情况下可能有若干种类型的跟踪分组,并且在事件之后生成的第一个跟踪分组不是对其生成时间感兴趣的类型。在第一实例中,跟踪分组的类型可以包括控制跟踪分组和数据跟踪分组。有些时候在事件之后的第一个跟踪分组可能是控制跟踪分组,与数据跟踪分组的生成时间相比,对控制跟踪分组的生成时间不那么感兴趣。因此,可以把时间戳的生成推迟到事件之后的第一个数据跟踪分组为止。在第二实例中,跟踪分组的类型可以包括标记符(marker)跟踪分组和数据跟踪分组。有些时候在事件之后的第一个跟踪分组可能是数据跟踪分组,与标记符跟踪分组的生成时间相比,对数据跟踪分组的生成时间不那么感兴趣。因此,可以把时间戳的生成推迟到事件之后的第一个标记符跟踪分组为止。在第三实例中,跟踪分组的类型可以包括已标记的跟踪分组和未标记的跟踪分组。生成跟踪分组的操作可以利用所述标记来指示该跟踪分组是否是对其生成时间感兴趣的类型。在设定了时间戳请求标志之后,可以在生成后续已标记的跟踪分组时,而不是在生成后续未标记的跟踪分组时生成时间戳。
可替换地,在某些情况下可能有若干种类型的跟踪分组,并且在事件之后生成的第一个跟踪分组的类型可能由于跟踪协议的设计方式而无法具有与之相关联的时间戳。举例来说,跟踪分组的类型可以包括成帧(framing)分组,并且跟踪协议可能被设计成使得成帧分组无法具有与之相关联的时间戳。有些时候事件之后的第一个跟踪分组可能是成帧分组,并且因此可以把时间戳的生成推迟到事件之后的不是成帧分组的第一个跟踪分组为止。
可替换地,在某些情况下可能有若干个跟踪分组来源(source),并且在事件之后生成的第一个跟踪分组不是来自对其生成时间感兴趣的来源。举例来说,可能存在控制线程来源和应用线程来源。有些时候事件之后的第一个跟踪分组可能由控制线程生成,与由应用线程生成的跟踪分组的生成时间相比,对于由控制线程生成的跟踪分组的生成时间可能不那么感兴趣。因此可以把时间戳的生成推迟到事件之后的由应用线程生成的第一个跟踪分组为止。
可替换地,如果暂时没有足够的跟踪带宽来应对加有时间戳的跟踪分组,则可以把时间戳的生成推迟到足够带宽变得可用为止。在这种情况下,所述后续跟踪分组可以在预定事件的发生之后的若干个跟踪分组发生。
从另一方面来看,本技术提供了一种数据处理设备,其包括:
用于处理数据的处理电路;以及
用于生成指示所述数据处理设备或者由所述处理电路执行的所述处理的至少一项特性的跟踪分组的跟踪电路;其中:
所述处理电路和所述跟踪电路的至少其中之一响应于发生预定事件以把时间戳请求标志设定成指示时间戳请求待定;以及
在由所述跟踪电路生成后续跟踪分组时,所述跟踪电路被配置成检查所述时间戳请求标志是否指示时间戳请求待定,并且当所述时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
从另一方面来看,本技术提供了一种用于在数据处理设备上执行跟踪操作的跟踪模块,所述跟踪模块包括:
用于生成指示所述数据处理设备或者由所述数据处理设备执行的处理的至少一项特性的跟踪分组的跟踪电路;以及
用于指示是否时间戳请求待定的时间戳请求标志;其中:
在由所述跟踪电路生成后续跟踪分组时,所述跟踪电路被配置成检查所述时间戳请求标志是否指示时间戳请求待定,并且当所述时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
通过结合附图阅读下面对说明性实施例的详细描述,本发明的前述和其他目的、特征和优点将变得显而易见。
附图说明
图1示意性地示出了一种具有跟踪模块的数据处理设备,所述跟踪模块用于生成指示该设备的数据处理的跟踪分组;
图2示出了一种用于生成跟踪流以及指示该跟踪流的相应跟踪分组的生成时间的时间戳的方法;
图3A示出了生成两个跟踪流的实例,其中没有使用在发生预定事件时发出时间戳请求的时间戳生成技术;
图3B示出了线程状态图;
图4示出了生成两个跟踪流,其中在发生异常事件之后请求时间戳生成;
图5A示出了图4的实例中的处理跟踪流输出的步骤,其中对于任何未加戳的跟踪分组的生成时间设定边界;
图5B示出了被分成与对应的处理相应的跟踪分组的跟踪流,其中跟踪分组被按照时间先后顺序分类;
图6示出了跟踪分组的一种实例格式;
图7示出了包括时间戳相关分组的跟踪流的实例;
图8示出了一种方法,其中把标志设定成指示待定时间戳请求而与跟踪分组的生成是否被禁用无关;以及
图9示意性地示出了一种具有可编程寄存器的跟踪模块。
具体实施方式
图1示意性地示出了数据处理设备1。数据处理设备1包括处理电路,所述处理电路包括至少一个处理器4。在图1的实例中有两个处理器:第一处理器4-1和第二处理器4-2。在下面的描述中,处理器只是一般称谓,并且具体指哪一个处理器并不重要,附图标记4将被用来代表处理器。应当认识到,所述处理电路还可以包括其他处理组件,例如比如硬件加速器、协处理器或图形处理单元。
数据处理设备1还包括用于存储在处理期间使用的值的寄存器组6以及用于存储由处理器4使用的数据和指令的存储器8。处理器4、寄存器组6和存储器8通过总线10连接。
处理设备1还包括至少一个跟踪模块12,其用于生成指示处理设备1和由设备1执行的数据处理的特性的跟踪数据。在图1中示出了一个实例,其中有两个跟踪模块12-1、12-2,但是跟踪模块是一般称谓而不指代特定跟踪模块,并且将使用附图标记12。虽然图1的跟踪模块12被示出在数据处理设备1内,但是跟踪模块也可以是位于数据处理设备1的外壳之外的外部跟踪模块。跟踪模块12生成跟踪数据并且将跟踪数据输出到跟踪缓冲器14,其中可以把数据存储在芯片上或者输出到芯片外。可以对跟踪数据进行分析以便提供关于设备1的诊断或调试信息,并且跟踪数据可以包括关于由处理器4执行的处理的诊断和调试信息。
在提供多于一个跟踪模块12的情况下,每一个跟踪模块可以具有不同的功能。举例来说,在图1中所示的设置中,跟踪模块12-1可以监控由处理器4-1执行的线程,而跟踪模块12-2监控由处理器4-2执行的线程。可替换地,跟踪模块12-1、12-2二者可以都监控单一处理器4,但是可以提供不同的跟踪功能。举例来说,跟踪模块12-1可以提供监控由处理器4处理的指令的程序流程跟踪,而跟踪模块12-2可以提供对于所执行的指令不具有可见性但是却可以监控通过总线10输入及输出的数据的仪器化(instrumentation)跟踪。因此可以由(一个或多个)跟踪模块12生成至少一个跟踪流。所述跟踪流包括至少一个跟踪分组,每一个跟踪分组指示设备1或者由处理器4执行的数据处理的一项或多项特性。可以通过跟踪模块12监控许多类型的特性,正如后面将参照图6讨论的那样。
在对跟踪流进行分析以便从该跟踪流的分组获得诊断或调试信息时,可能有用的是能够推断出生成跟踪分组的时间和/或顺序。当生成两个或更多跟踪流时特别是这种情况,其中把不同跟踪流的跟踪分组的生成时间相关的任务并不是无关紧要的。因此,跟踪模块12可以生成被插入到跟踪流中的时间戳,以便提供允许把不同流相关的参考点。在本技术中,时间戳的生成被强制发生在生成跟踪分组的一点处。这是通过为每一个跟踪模块12提供时间戳请求标志(或“粘滞(sticky)标志”)18而实现的。在发生预定重要事件时,标志18被设定成指示时间戳请求待定。随后当跟踪模块生成跟踪流的后续跟踪分组时,该跟踪模块检查时间戳请求标志18以查看其是否指示待定时间戳请求。如果请求待定,则跟踪模块12与后续跟踪分组一起生成时间戳。通过强制把时间戳与后续跟踪分组一起生成,避免生成仅包括时间戳而不包括任何跟踪数据的跟踪分组。此外,所生成的时间戳可以更加有用,这是因为它们被固定到代表由设备1执行的数据处理中的特定点的特定跟踪数据项,而不是被放置在两个跟踪分组之间的任意位置处(如果在重要事件发生后立即发出时间戳就会发生这种情况)。这意味着可以精确地确定更多跟踪分组的生成时间。
在下面将描述的实施例中,所述后续跟踪分组是在发生预定事件之后生成的下一个跟踪分组。
图2示出了一种生成时间戳和跟踪分组的方法。在步骤20中,数据处理开始。随后在步骤22中,跟踪模块12开始跟踪处理设备1或所述数据处理的特性。“跟踪”一词在本上下文中被用来意味着监控设备1的操作,并且其不一定要求由跟踪模块12生成跟踪数据的跟踪分组(正如后面在图8的讨论中将看到的那样,有可能禁用跟踪分组的生成同时继续跟踪处理器4的操作)。
在进行跟踪时,跟踪模块12在步骤24中确定是否发生了预定事件。预定事件是其发生触发针对生成时间戳的请求的任何一种或多种类型的事件。在下面将讨论多种预定事件。跟踪模块12可以按照多种不同方式确定是否发生了预定事件。如果跟踪模块12对于由处理器4处理的指令具有可见性,则跟踪模块12本身可以通过监控所执行的指令来确定预定事件的发生点。举例来说,程序流程跟踪模块具有这样的能力。可替换地,设备1的处理器4或其他组件可以向跟踪模块12提供指示发生了预定事件的信号。这在跟踪模块12对于由处理器4处理的指令流程没有可见性而仅仅监控由处理器4输入及输出的数据的情况下可能更加有用。举例来说,仪器化跟踪模块可以利用来自处理器4的信号指示发生了预定事件。
如果跟踪模块12确定发生了预定事件,则所述方法继续到步骤26,在该步骤中把时间戳请求标志18设定成指示时间戳请求待定。另一方面,如果没有发生预定事件,则标志18不被设定成指示待定时间戳请求。不管是否发生了预定事件,在步骤30中都确定是否应当生成跟踪流中的下一个跟踪分组。如果将不生成跟踪分组,则流程继续到步骤40,在该步骤中再次确定处理是否已完成。如果处理完成则所述方法结束,而如果仍要执行处理则所述方法返回步骤24以再次检查预定事件。
当在步骤30中确定将要生成下一个跟踪分组时,所述方法继续到步骤32,在该步骤中跟踪模块确定时间戳请求标志18是否已被设定成指示待定时间戳请求。如果时间戳请求标志指示待定时间戳请求,则在步骤34中生成时间戳。时间戳可以具有多种格式,正如后面将参照图6和7所描述的那样。例如可以作为在跟踪流中的下一个跟踪分组之前到来的分组而输出时间戳,可以作为在跟踪流中的下一个跟踪分组之后到来的分组而输出时间戳,可以通过把下一个跟踪分组从可能不具有时间戳的类型转换成具有时间戳的类型而生成时间戳,或者可以按照其他形式生成时间戳。在生成时间戳之后,随后在步骤36中清除时间戳请求标志18,从而使其不再指示待定时间戳请求。这意味着在发生另一个预定事件之前都将不会生成时间戳,或者作为正常跟踪的一部分请求时间戳。如果时间戳请求标志未被设定则不执行步骤34和36。
不管是否生成了时间戳,随后在步骤38中都由跟踪模块12生成下一个跟踪分组。所生成的跟踪分组可以被输出到跟踪缓冲器14,并且可选地从数据处理设备1输出从而可以对其进行分析。在步骤40中,所述方法随后继续检查由处理器4执行的处理是否完成。如果处理完成则所述方法结束,而如果处理继续则所述方法返回步骤24,在该步骤中确定是否发生了另一个预定事件。
从图2中可以看出,时间戳的生成并非紧接在发生预定事件之后而发生。相反,标志18的设定导致将在生成跟踪流中的下一个跟踪分组时发出时间戳。这避免在没有生成跟踪数据时产生时间戳分组,从而避免生成不必要的大量跟踪分组,并且避免仅仅包含时间戳的长时段的跟踪输出。此外,时间戳被束缚到程序中的重要点,这是因为在感兴趣事件的发生点发出时间戳。这意味着时间戳更有可能被置于时间相关将会有用的各点处,并且从而与被置于跟踪流中的其他点处的时间戳相比可以提供更好的诊断信息。本技术允许更加精确地重建生成跟踪数据的相对定时,同时避免跟踪缓冲器14的上溢(如果每次生成跟踪数据时都发出时间戳就将发生这种情况)。
图3A示出了其中由跟踪模块12-1、12-2监控在处理器4-1、4-2上执行的线程的实例。在对称多处理器(SMP)系统中,线程可以在处理器之间迁移,以便提高多处理器系统的线程吞吐量。为了管理这一点,所述系统把每一条线程的状态保持在存储于共享存储器8内的数据结构中。在简单的系统中,每一条线程可以处于三个状态的其中之一:激活(active)(其也被称作运行中)、就绪(ready)(其也被称作等待)或者阻断(blocked)(参见图3B)。举例来说,如果所跟踪的线程正在执行,则其处于激活状态。但是如果要求一个处理器执行异常应对线程而不是正在跟踪的线程,则把所跟踪的线程置于就绪状态(图3B中的转换(transition)A)。可以控制其他(一个或多个)处理器接管执行处于就绪状态的线程,比如先前由被中断的处理器处理的那些线程,从而仍然可以允许完成被异常应对例程中断的线程(通过把所述线程返回激活状态—图3B中的转换B)。这改进线程执行中的前进进展。如果激活线程需要尚不可用的数据项,则暂停该线程的执行并且将该线程置于阻断状态(图3B中的转换C)。一旦所述数据变得可用,就把所述线程置于就绪状态(图3B中的转换D),从而一旦处理器变得可用就准备继续该线程的处理。
但是,当生成不同的跟踪流并且利用已知的加时间戳技术来为所述跟踪流加时间戳时会出现问题。这一点由图3A示出。图3A示出了由处理器4-1和4-2执行的两条线程T1和T2。线程T1在处理器4-1上开始执行。但是,在T1的执行期间发生的异常事件强制占用处理器4-1来处理不受跟踪模块12-1监控的其他线程。因此,处理器4-1把线程T1置于就绪状态,这意味着处理器4-2能够处理线程T1的某些部分。在线程T1和T2的执行期间,跟踪模块12-1和12-2可能如图3A中所示的那样输出跟踪分组。在先前的加时间戳技术中,只能对特定线程的起始加时间戳,如图3A中所示,其中线程T1和T2中的第一个分组二者都加有时间戳,但是其他跟踪分组都没有加时间戳。当线程从一个处理器转移到另一个处理器从而每一个跟踪流包括对应于若干条不同线程的跟踪分组时,这个技术就会出现问题。跟踪分组被混合在一起,并且由于后面的跟踪分组都没有加时间戳,因此不可能确定特定跟踪流的各跟踪分组的生成顺序。因此就不可能按照正确的顺序把T1和T2跟踪分组的片段接回在一起。
图4示出了在执行与图3A中的线程相同的线程时生成的跟踪分组的实例,但是其中应用了本技术的加时间戳。在本技术中,在发生预定事件时设定时间戳请求标志18。其指示在生成下一个跟踪分组时也应当生成时间戳。在图4的实例中,所述预定事件是上下文同步事件。
在图4中,处理器4-1开始处理线程T1,并且跟踪模块12-1在时间0和300处生成两个跟踪分组。在时间400处,线程T1被中断,并且处理器4-1执行上下文切换。作为所述上下文切换的一部分,线程T1被置于就绪状态,并且处理器4-1遇到上下文同步事件。所述上下文同步事件导致设定时间戳请求标志18-1。类似地,在时间650处,在处理器4-2上执行的线程T2被中断,并且处理器4-2执行上下文切换。作为该上下文切换的一部分,线程T1被带出就绪状态并且进入激活状态,也就是说其开始在处理器4-2上执行,其中处理器4-2首先执行了上下文同步事件。所述上下文同步事件导致设定时间戳请求标志18-2。
因此,在时间700处,当在处理器4-2上执行的线程T1通过跟踪模块12-2生成跟踪分组时,该跟踪分组具有附带包含时间值700的时间戳。随后重置时间戳请求标志18-2。
类似地,每当在处理器4-1或处理器4-2处发生上下文切换时就会遇到上下文同步事件,从而设定相应的时间戳请求标志18-1或18-2,并且生成下一个生成的跟踪分组连同指示该跟踪分组的生成时间的时间戳。每次生成时间戳时就重置所述标志,以便清除时间戳请求。
在时间1400-1600处发生三次上下文切换,在所述上下文切换之间没有输出任何跟踪分组。如果在每一次上下文切换上立即生成时间戳则将浪费跟踪带宽,这是因为在本技术中将生成多个仅包含时间戳而不包含跟踪数据的跟踪分组,于是在时间1400处的第一次上下文切换之后设定时间戳请求并且然后保持直到在时间2100处生成下一个跟踪分组为止,在该点处生成单一时间戳。因而节省跟踪带宽。
与图3A中示出的加时间戳不同,图4中示出的加时间戳允许重建跟踪流的顺序。这通过两个步骤来实现,如图5A和5B中所示。首先,估计未加时间戳的任何跟踪分组的生成时间。这通过对这些分组的可能生成时间设置边界而实现。
未加戳的分组必须与同一跟踪输出流中的最近时间戳同时到来或者在其之后到来。因此,所述最近时间戳指示与未加戳的分组相关联的时间的下界。此外,在最近时间戳的生成与未加戳的跟踪分组的生成之间没有发生干扰上下文切换,因为这样的事件将导致处理器遇到上下文同步事件,这接着又设定时间戳请求标志18。因此未加戳的跟踪分组必然在同一跟踪流中的下一个时间戳值之前生成。因此下一个时间戳值指示与未加戳的分组相关联的时间的上界。但是,通过利用线程迁移过程的进一步理解,可以设定改进的上界。
在处理器之间迁移线程的过程涉及到第一处理器上的第一上下文切换和第二处理器上的第二上下文切换。第二上下文切换必须在第一上下文切换之后发生,这是因为第一上下文切换把线程带出激活状态并且将其置于就绪状态,而第二上下文切换仅仅选择就绪状态下的线程。通过软件来同步对线程状态的访问以便确保正确的排序。
因此,未加戳的跟踪分组必然在与该未加戳的跟踪分组相同的线程相关联的任一跟踪流中的次最高(next highest)时间戳值之前生成,这是因为所述次最高时间戳值的存在指示选择所述线程的下一次上下文切换发生在生成所述未加戳的分组之后。
图5A示出了对于所有未加戳的分组的生成时间设置边界的这一步骤。举例来说,监控第一处理器4-1的跟踪模块12-1的跟踪输出中的第二个分组没有时间戳。因此,它在时间0处的第一个跟踪分组的生成与第二个跟踪分组的生成之间没有中断情况下必须被生成。这意味着对于第二个跟踪分组的生成时间的下界肯定是0。此外,与(任何跟踪流中的)线程T1相关联的次最高时间戳处于处理器4-2的输出的第三个跟踪分组中的时间700处。因此,第二个分组的生成时间的上界肯定是700。如图5A中所示,可以按照类似的方式为所有其他未加戳的分组的生成时间设置边界。
在所有分组上设置了边界之后,然后可以对于每一个单独线程提取跟踪分组并且按照时间戳顺序设置(参见图5B)。如果有多于一个跟踪分组具有相同的生成时间边界(当这些分组处于同一跟踪流中时应该会发生这种情况),则按照其在原始输出跟踪流中的出现顺序来放置所述跟踪分组。因而就可以确定跟踪分组的正确生成顺序,并且可以把分布在所生成的不同跟踪流之间的跟踪分组的片段接合在一起。因此,与图3A中所示的实例不同,可以对跟踪流进行正确的分析。
图3A和4示出了其中由监控在不同处理器4上执行的线程的不同跟踪模块12输出不同跟踪流的实例。但是,所述加时间戳技术也可以用于以下情况:由不同跟踪模块12按照两种或更多种不同方式监控运行在同一处理器上的线程(例如一个跟踪模块执行程序流程跟踪,而另一个跟踪模块执行仪器化跟踪)。此外,虽然图1示出了分开的跟踪模块12,但是有可能单一跟踪模块生成多于一个跟踪流。
图4示出了本技术的实例,其中所述预定事件是异常事件的发生。对于处理器核心具有可见性的跟踪模块12可以通过检测被用于触发异常事件的信号来检测这样的事件。可替换地,只对于从处理器4输入及输出的数据具有可见性的跟踪模块12可以通过检测把与被中断线程相关联的状态数据保存到存储器8来检测这样的事件。
还可以使用多种其他类型的预定事件来触发时间戳的生成。举例来说,不是把异常事件的发生用作触发来设定时间戳请求标志18,而是所述预定事件可以是进入异常应对例程或者在执行了异常应对例程之后返回处理所监控的线程。
此外,某些指令的执行可能依赖于处理器4的当前状态(所述当前状态常常被称作“上下文”)。在流水线式处理器中,可以在把指令获取到流水线中时确定所述上下文。这可以意味着如果一旦在把指令已经获取到流水线中就发生上下文切换,则在所述上下文切换之后可能无法正确地执行这些指令的执行。为此原因,在期望进行上下文切换时可以执行上下文同步操作。所述上下文同步操作可以利用诸如指令同步屏障(barrier)指令之类的指令来实现,其控制处理器刷新流水线中的指令并且根据新的上下文重新获取指令。这意味着在上下文切换之后可以正确地执行指令。出于与关于图3A和4所讨论的相同原因,有用的是把上下文切换和执行上下文同步操作二者当中的一项或全部两项作为其中一个预定事件来对待。按照这种方式,上下文切换或上下文同步控制跟踪模块12设定时间戳请求标志,并且强制在生成下一个跟踪分组时生成时间戳,从而允许跟踪流的相关。
另一种类型的预定事件可以是线程的执行从一个处理器转移到另一个处理器。此外,可以把线程的任何中断作为控制设定时间戳请求标志的预定事件来对待。预定事件的任何前述实例可以被单独使用或者以任意组合使用,从而由多于一种类型的预定事件触发标志18的设定。举例来说,对于仪器化跟踪,处理器4可以向跟踪模块12通知任何上下文同步操作、异常进入或异常返回的发生。
图6示出了所生成的跟踪分组的一种示例格式。跟踪分组可以包括关于设备1或所执行的数据处理的多种特性的数据。举例来说,跟踪分组可以在其有效载荷中包括指示以下各项当中的一项或多项的信息:在执行数据处理时由处理器4处理的数据、作为数据处理的结果所生成的数据、在数据处理期间执行的(一条或多条)指令、在执行数据处理时所访问的存储器地址、由处理器4访问的寄存器组6的各寄存器和存储在这些寄存器中的值、以及硬件事件的发生。硬件事件例如可以是高速缓存错失(miss)的发生、直接存储器存取(DMA)引擎的启动、硬件加速器的处理开始或者由系统硬件用信号通知的任何其他事件。例如可以在跟踪分组有效载荷中通过指示特定类型事件的数字来标记符硬件事件。由跟踪模块12跟踪的特性可以是从处理器4所执行的数据处理得到的特性,或者可以是设备1或独立于所执行的数据处理发生的重要事件的特性。
对应于所生成的跟踪分组而生成的时间戳可以具有若干种形式。举例来说,如图6中所示,所述时间戳可以是指示该时间戳的生成时间的简单数值并且可以被插入到跟踪分组中,其或者被插入在跟踪分组的有效载荷内或者如图6中所示作为分组报头的一部分。其他形式的时间戳也是可能的。
可替换地,在系统利用两种或更多种分开的定时方案进行操作的情况下,可能有用的是提供用于把所述两种或更多种这些定时方案相关的信息。举例来说,单一处理器群集内的一个或多个跟踪模块可以使用由局部时钟生成的局部定时方案,但是也可以从全局计数器或定时器以及/或者从其他(一个或多个)处理器群集获得(一种或多种)外部定时方案。为了允许把不同的时间值相关,全局定时器模块可以在每一个定时器事件向跟踪模块12传递全局时间值,并且跟踪模块12可以利用局部时间戳值来给所述全局时间值加时间戳。因此,对应于跟踪分组生成的时间戳可以是如图7中所示的相关分组,其中例如把局部时间戳施加到该相关跟踪分组的报头,同时全局时间值是分组有效载荷的一部分(或者反之亦可)。再次,只有在生成下一个跟踪分组时并且作为设定时间戳请求标志的结果才把所述相关分组插入到跟踪流中。虽然相关分组代表跟踪流中的附加分组,但是把相关分组的发出延迟到产生下一个跟踪分组为止仍然是有用的,因为这意味着如果不再生成跟踪数据,则避免插入一个或多个不必要的相关分组。这降低了跟踪缓冲器14发生上溢的机会。
如前所述,跟踪模块12可以具有作为跟踪处理器4的操作的结果而选择是否生成跟踪分组的功能。即使禁用了跟踪分组的生成,跟踪模块12仍然可以监控设备4的操作。对于本技术来说,如果在禁用跟踪生成的同时发生预定事件,则不生成时间戳。但是,仍然可以设定时间戳请求标志并且由系统保留到下一次启用跟踪为止,此时就可以生成时间戳。在跟踪模块12被完全禁用以便禁用跟踪生成的系统中,处理器4可以记录预定事件的发生并且在重新启用跟踪生成时向跟踪模块12提供信号。图8示出了一种方法,其中,在预定事件发生时都设定时间戳请求标志而与是否启用跟踪分组生成无关。在跟踪分组生成被重新启用的情况下,则在生成下一个跟踪分组并且时间戳请求标志被设定到该点时,生成时间戳。通过即使在跟踪分组的生成被禁用时仍然记录预定事件的发生,这允许更加可靠地把在多处理器群集周围移动的程序跟踪拼回在一起。从而可以使得跟踪分析更加精确。
在图8中,步骤20-26和30-40类似于图2的相应步骤。图8与图2的不同之处在于,在步骤30中在检查是否要生成下一个跟踪分组之前,执行步骤28以检查是否启用了跟踪分组的生成。如果启用了跟踪分组的生成,则流程继续到步骤30,在该步骤中确定是否要生成下一个跟踪分组。不管是否禁用了跟踪生成都执行步骤26,在该步骤中,如果发生了预定事件则设定时间戳请求标志。另一方面,如果在步骤28中没有启用跟踪分组的生成,则流程继续到步骤40,在该步骤中确定处理是否完成。如果处理没有完成,则所述方法返回步骤24,在该步骤中再次确定是否发生了预定事件。
图9示出了适于实现本技术的跟踪模块。跟踪模块12包括跟踪电路50、用于存储时间戳请求标志18的可编程寄存器54以及可选的跟踪缓冲器14。跟踪电路50在跟踪目标端口58处监控从跟踪目标接收的信息,并且生成输出到跟踪缓冲器14的跟踪数据。跟踪缓冲器14可以如图1中所示位于跟踪模块外部,或者如图9中所示位于跟踪模块12内部。跟踪模块具有用于把跟踪数据输出到跟踪分析器或者用于处理跟踪数据的其他设备的跟踪输出端口62。
可以由跟踪模块12本身或者由数据处理设备的一部分(例如处理器4)对可编程寄存器54进行写入。对可编程寄存器54进行写入以便设定所述标志的数据处理设备的所述部分不必是由跟踪模块12监控的相同部分。可编程寄存器54可以由对于被监控的目标的不同电路写入,或者可以由跟踪目标本身写入。通过寄存器写入线60对可编程寄存器54进行写入,以便把标志18设定成指示待定时间戳请求。如果标志18指示待定时间戳请求,则跟踪电路50随后响应于存储在可编程寄存器54中的标志18在生成下一个跟踪分组时生成时间戳。所生成的任何时间戳都被插入到跟踪流中。在生成时间戳之后,跟踪电路50通过向可编程寄存器54写入指示没有请求待定的值来清除标志18。
在前面的实施例中,时间戳与在发生预定事件之后产生的下一个跟踪分组一起生成。在其他实施例中,如果必要的话可以把时间戳的生成推迟到在预定事件之后生成了若干个跟踪分组为止。在这样的实施例中,与所述时间戳相关联的后续跟踪分组可以是下一个跟踪分组以及比所述下一个跟踪分组更靠后的跟踪分组的其中之一。
举例来说,如果一组跟踪分组与已经发生的一项操作/事件相关联,则可能适当的是为与在第一项操作/事件之后发生的另一项操作/事件相对应的跟踪分组加时间戳。在这种情况下,时间戳请求标志将保持设定,直到生成指示与触发时间戳请求的操作/事件不同的操作/事件的第一个跟踪分组为止。在生成指示不同操作/事件的第一个跟踪分组并且时间戳请求标志被设定时,生成时间戳并且清除时间戳请求标志。
可替换地,如果暂时缺乏容纳时间戳的跟踪带宽,则可以把时间戳的生成延迟到有足够带宽可用为止。在这种情况下,时间戳请求标志将保持设定到生成时间戳为止。
因此,取决于当前跟踪带宽或者所监控的特定操作,可以关于下一个跟踪分组或者后来跟踪分组生成时间戳。
在发生预定事件时生成时间戳的本技术可以被独立使用或者与其他加时间戳技术相结合地使用。举例来说,处理器4可以能够请求插入时间戳,或者该处理器的操作系统可以具有这种能力。跟踪模块可以具有多个时间戳请求寄存器54(其中一个时间戳请求寄存器54用于每一个请求来源),并且可以利用或(OR)操作组合不同的加时间戳方案,从而如果各个时间戳请求来源当中的任一个(包括时间戳请求标志18在内)发出待定请求,则在生成后续跟踪分组时生成时间戳。
本技术为某些跟踪分组添加时间戳,这些跟踪分组在先前的加时间戳技术下不会被加时间戳。这意味着某些现有的跟踪分析器(其利用时间戳的存在或缺失来推断出关于所跟踪的线程的信息)可能无法正确地操作。可以通过为跟踪分组添加额外比特来解决这一问题,其指示先前通过时间戳的存在/缺失所传达的信息。
虽然在这里参照附图详细描述了本发明的说明性实施例,但是应当理解的是,本发明并不限于这些精确实施例,并且在不偏离如所附权利要求书限定的本发明的范围和精神的情况下,本领域技术人员可以实施许多改变和修改。

Claims (33)

1.一种数据处理方法,包括以下步骤:
利用数据处理设备来处理数据;
生成指示所述数据处理设备的至少一项特性或由所述数据处理设备执行的处理的至少一项特性的跟踪分组;
在发生预定事件时,设定时间戳请求标志以指示时间戳请求待定;
在生成后续的跟踪分组时,检查时间戳请求标志是否指示时间戳请求待定;以及
当时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳并且把时间戳请求标志设定成指示没有时间戳请求待定。
2.根据权利要求1的数据处理方法,其中,所述处理包括利用所述数据处理设备的多个处理器执行的多条线程,并且所述预定事件包括把所述多条线程的其中一条的执行从所述多个处理器的其中一个转移到所述多个处理器当中的另一个。
3.根据权利要求1的数据处理方法,其中,所述预定事件包括异常事件。
4.根据权利要求1的数据处理方法,其中,所述预定事件包括开始执行异常应对线程。
5.根据权利要求1的数据处理方法,其中,所述预定事件包括在执行异常应对线程之后返回由所述数据处理设备执行的处理。
6.根据权利要求1的数据处理方法,其中,所述预定事件包括上下文切换。
7.根据权利要求1的数据处理方法,其中,所述预定事件包括上下文同步事件。
8.根据权利要求1的数据处理方法,还包括选择性地启用或禁用所述跟踪分组的生成的步骤;其中:
在所述发生所述至少一个预定事件时,把所述时间戳请求标志设定成指示时间戳请求待定,而与所述跟踪分组的所述生成被启用还是禁用无关;以及
当在重新启用跟踪分组的所述生成之后生成后续跟踪分组时并且在所述时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的所述时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
9.根据权利要求1的数据处理方法,其中,由所述数据处理设备执行的软件在发生所述预定事件时控制所述数据处理设备以把所述时间戳请求标志设定成指示时间戳请求待定。
10.根据权利要求1的数据处理方法,其中,所述时间戳请求标志是用于生成所述跟踪分组的跟踪模块的可编程寄存器。
11.根据权利要求10的数据处理方法,其中,通过由所述数据处理设备在发生所述预定事件时对所述可编程寄存器进行写入来把所述时间戳请求标志设定成指示时间戳请求待定。
12.根据权利要求1的数据处理方法,其中,把对应于后续跟踪分组的时间戳施加到时间戳相关跟踪分组以便把第一定时方案的时间戳值与第二定时方案的时间戳值相关,在生成所述后续跟踪分组时把相关跟踪分组插入到跟踪流中。
13.根据权利要求1的数据处理方法,其中,所述时间戳是附加到后续跟踪分组的时间值。
14.根据权利要求1的数据处理方法,其中,所述数据处理设备的至少一项特性或由所述数据处理设备执行的处理的至少一项特性包括以下各项的至少其中一项的特性:
在所述数据处理设备执行处理期间所处理的数据;
在所述数据处理设备执行处理期间所生成的数据;
在所述数据处理设备执行处理期间所执行的指令;
在所述数据处理设备执行处理期间所访问的存储器地址;
存储在所述数据处理设备的寄存器中的值;以及
硬件事件的发生。
15.根据权利要求1的数据处理方法,其中,所述后续跟踪分组是在发生所述预定事件之后生成的下一个跟踪分组。
16.根据权利要求1的数据处理方法,其中,所述后续跟踪分组是在发生所述预定事件之后生成的下一个跟踪分组和在所述下一个跟踪分组之后生成的后来跟踪分组的其中之一。
17.一种数据处理设备,包括:
用于处理数据的处理电路;以及
用于生成指示所述数据处理设备的至少一项特性或者由所述处理电路执行的处理的至少一项特性的跟踪分组的跟踪电路;其中:
所述处理电路和所述跟踪电路的至少其中之一响应于发生预定事件而把时间戳请求标志设定成指示时间戳请求待定;以及
在由所述跟踪电路生成后续跟踪分组时,所述跟踪电路被配置成检查所述时间戳请求标志是否指示时间戳请求待定,并且当所述时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
18.根据权利要求17的数据处理设备,其中,所述处理包括多条线程并且所述处理电路包括用于执行所述多条线程的多个处理器,并且所述预定事件包括把所述多条线程的其中一条的执行从所述多个处理器的其中一个转移到所述多个处理器当中的另一个。
19.根据权利要求17的数据处理设备,其中,所述预定事件包括异常事件。
20.根据权利要求17的数据处理设备,其中,所述预定事件包括开始执行异常应对线程。
21.根据权利要求17的数据处理设备,其中,所述预定事件包括在执行异常应对线程之后返回执行所述数据处理。
22.根据权利要求17的数据处理设备,其中,所述预定事件包括上下文切换。
23.根据权利要求17的数据处理设备,其中,所述预定事件包括上下文同步事件。
24.根据权利要求17的数据处理设备,其中,
所述跟踪电路具有用于选择性地启用或禁用所述跟踪分组的生成的逻辑;
在所述发生所述至少一个预定事件时,所述处理电路和所述跟踪电路的所述至少其中之一被配置成把所述时间戳请求标志设定成指示时间戳请求待定,而与所述跟踪分组的所述生成被启用还是禁用无关;以及
当在重新启用跟踪分组的所述生成之后生成后续跟踪分组时并且在所述时间戳请求标志指示时间戳请求待定时,所述跟踪电路被配置成生成对应于后续跟踪分组的所述时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
25.根据权利要求17的数据处理设备,其中,由所述处理电路执行的软件被配置成在发生所述预定事件时控制所述处理电路以把所述时间戳请求标志设定成指示时间戳请求待定。
26.根据权利要求17的数据处理设备,其中,所述跟踪电路具有用于存储所述时间戳请求标志的可编程寄存器。
27.根据权利要求26的数据处理设备,其中,所述处理电路被配置成通过在所述发生所述预定事件时对所述可编程寄存器进行写入来把所述时间戳请求标志设定成指示时间戳请求待定。
28.根据权利要求17的数据处理设备,其中,把对应于后续跟踪分组的所述时间戳施加到时间戳相关跟踪分组以便把第一定时方案的时间戳值与第二定时方案的时间戳值相关,所述跟踪电路被配置成把所述时间戳相关跟踪分组与所述后续跟踪分组一起插入到跟踪流中。
29.根据权利要求17的数据处理设备,其中,所述时间戳是附加到后续跟踪分组的时间值。
30.根据权利要求17的数据处理设备,其中,所述数据处理设备的至少一项特性或由所述数据处理设备执行的处理的至少一项特性包括以下各项的至少其中一项的特性:
在所述数据处理设备执行处理期间所处理的数据;
在所述数据处理设备执行处理期间所生成的数据;
在所述数据处理设备执行处理期间所执行的指令;
在所述数据处理设备执行处理期间所访问的存储器地址;
存储在所述数据处理设备的寄存器中的值;以及
硬件事件的发生。
31.根据权利要求17的数据处理设备,其中,所述后续跟踪分组是由所述跟踪电路在发生所述预定事件之后生成的下一个跟踪分组。
32.根据权利要求17的数据处理设备,其中,所述后续跟踪分组是由所述跟踪电路在发生所述预定事件之后生成的下一个跟踪分组和由所述跟踪电路在下一个跟踪分组之后生成的后来跟踪分组的其中之一。
33.一种用于在数据处理设备上执行跟踪操作的跟踪模块,所述跟踪模块包括:
用于生成指示所述数据处理设备的至少一项特性或者由所述数据处理设备执行的处理的至少一项特性的跟踪分组的跟踪电路;以及
用于指示是否时间戳请求待定的时间戳请求标志;其中:
在由所述跟踪电路生成后续跟踪分组时,所述跟踪电路被配置成检查所述时间戳请求标志是否指示时间戳请求待定,并且当所述时间戳请求标志指示时间戳请求待定时,生成对应于所述后续跟踪分组的时间戳并且把所述时间戳请求标志设定成指示没有时间戳请求待定。
CN201110050860.2A 2010-03-03 2011-03-03 用于生成时间戳的方法、设备和跟踪模块 Active CN102193778B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1003554.1A GB2478328B (en) 2010-03-03 2010-03-03 Method, apparatus and trace module for generating timestamps
GB1003554.1 2010-03-03

Publications (2)

Publication Number Publication Date
CN102193778A CN102193778A (zh) 2011-09-21
CN102193778B true CN102193778B (zh) 2015-04-15

Family

ID=42136424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110050860.2A Active CN102193778B (zh) 2010-03-03 2011-03-03 用于生成时间戳的方法、设备和跟踪模块

Country Status (4)

Country Link
US (1) US8589927B2 (zh)
JP (1) JP5478531B2 (zh)
CN (1) CN102193778B (zh)
GB (1) GB2478328B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2481385B (en) 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
JP5874433B2 (ja) * 2012-02-20 2016-03-02 富士通株式会社 トレース結合装置及びプログラム
US9361204B2 (en) * 2013-02-19 2016-06-07 Arm Limited Generating trace data including a lockup identifier indicating occurrence of a lockup state
US20140281429A1 (en) * 2013-03-14 2014-09-18 Qualcomm Incorporated Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9830245B2 (en) 2013-06-27 2017-11-28 Atmel Corporation Tracing events in an autonomous event system
US9256399B2 (en) 2013-06-27 2016-02-09 Atmel Corporation Breaking program execution on events
US9645870B2 (en) * 2013-06-27 2017-05-09 Atmel Corporation System for debugging DMA system data transfer
US9158720B2 (en) 2013-08-11 2015-10-13 Qualcomm Incorporated System and method for scalable trace unit timestamping
US9690687B2 (en) 2013-12-17 2017-06-27 International Business Machines Corporation Dynamic allocation of trace array timestamp data
US9535815B2 (en) * 2014-06-04 2017-01-03 Nvidia Corporation System, method, and computer program product for collecting execution statistics for graphics processing unit workloads
GB2548871B (en) * 2016-03-31 2019-02-06 Advanced Risc Mach Ltd Instruction prefetching
US10423511B2 (en) * 2016-11-29 2019-09-24 International Business Machines Corporation Packet flow tracing in a parallel processor complex
BR112017001012A2 (pt) * 2016-12-12 2020-10-27 Sicpa Holding Sa sistema e método para rastrear um item de produto em uma linha de produção
CN110337679B (zh) * 2017-02-17 2021-12-31 日本电信电话株式会社 感测系统及时间戳校正方法
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10579505B1 (en) 2018-09-11 2020-03-03 International Business Machines Corporation Capturing task traces for multiple tasks
JP2021026648A (ja) * 2019-08-08 2021-02-22 日本信号株式会社 動作トレース装置
US11665262B2 (en) * 2020-10-28 2023-05-30 Viavi Solutions Inc. Analyzing network data for debugging, performance, and identifying protocol violations using parallel multi-threaded processing
GB202110155D0 (en) * 2021-07-14 2021-08-25 Graphcore Ltd GSP trace unit
US20230185695A1 (en) * 2021-12-15 2023-06-15 Intel Corporation Processor trace with suppression of periodic timing packets for low density trace sections

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101498951A (zh) * 2008-01-30 2009-08-05 汤姆森许可贸易公司 在计算机或可编程机器中处理时间值的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684348B1 (en) * 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
DE10085287T1 (de) * 1999-12-08 2003-03-27 Univ British Columbia Zeitplaner für einen gewichteten fairen Warteschlagenbetrieb
US6883162B2 (en) * 2001-06-06 2005-04-19 Sun Microsystems, Inc. Annotations for transaction tracing
JP2004030505A (ja) * 2002-06-28 2004-01-29 Matsushita Electric Ind Co Ltd プログラムトレースデータ記録方法およびトレースメモリ
US7346476B2 (en) * 2005-03-17 2008-03-18 International Business Machines Corporation Event tracing with time stamp compression
US7681084B2 (en) * 2005-05-13 2010-03-16 Texas Instruments Incorporated TOD or time stamp inserted into trace recording stream
JP4806577B2 (ja) * 2006-03-06 2011-11-02 株式会社リコー トレースデータ記録装置
US8145760B2 (en) * 2006-07-24 2012-03-27 Northwestern University Methods and systems for automatic inference and adaptation of virtualized computing environments
US8160084B2 (en) * 2006-09-22 2012-04-17 Nokia Corporation Method for time-stamping messages
US7743279B2 (en) * 2007-04-06 2010-06-22 Apple Inc. Program counter (PC) trace
US7870437B2 (en) * 2007-11-14 2011-01-11 Arm Limited Trace data timestamping

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101498951A (zh) * 2008-01-30 2009-08-05 汤姆森许可贸易公司 在计算机或可编程机器中处理时间值的方法

Also Published As

Publication number Publication date
US8589927B2 (en) 2013-11-19
GB2478328B (en) 2015-07-01
GB201003554D0 (en) 2010-04-21
CN102193778A (zh) 2011-09-21
GB2478328A (en) 2011-09-07
JP2011181068A (ja) 2011-09-15
US20110219376A1 (en) 2011-09-08
JP5478531B2 (ja) 2014-04-23

Similar Documents

Publication Publication Date Title
CN102193778B (zh) 用于生成时间戳的方法、设备和跟踪模块
KR102365640B1 (ko) 분산형 하드웨어 트레이싱
EP2787444A2 (en) Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method
CN104050066A (zh) 多核处理的系统及方法
CN106257411A (zh) 单指令多线程计算系统及其方法
CN104699601A (zh) 用于执行状态机驱动的注入的方法和系统
US9405315B2 (en) Delayed execution of program code on multiple processors
EP2565790A1 (en) Method and system for injecting simulated errors
CN110515754B (zh) 神经网络处理器的调试系统及方法
US9594561B2 (en) Instruction stream tracing of multi-threaded processors
CN101639816B (zh) 一种总线的实时跟踪系统及相应的跟踪、调试方法
US9910760B2 (en) Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging
EP3961403A1 (en) Bus monitoring device and method, storage medium, and electronic device
US9195524B1 (en) Hardware support for performance analysis
JP2006164185A (ja) デバッグ装置
EP2942714B1 (en) Monitoring method, monitoring apparatus, and electronic device
US20140019945A1 (en) Software instrumentation apparatus and method
EP3121728B1 (en) System and method for remotely debugging a device
US7519497B2 (en) Apparatus and method for state selectable trace stream generation
US20040128597A1 (en) Apparatus and method for selecting program halts in an unprotected pipeline at non-interruptible points in code execution
CN116361084A (zh) 多核处理器调试方法、装置、调试设备和可读存储介质
CN109087682A (zh) 全局存储器顺序检测系统及方法
KR20080113052A (ko) 추적 데이터 생성 장치, 방법 및 컴퓨터 프로그램 제품

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180528

Address after: cambridge

Co-patentee after: Anne science and Technology (China) Co., Ltd.

Patentee after: Advanced Risc Machines Ltd.

Address before: Cambridge County

Patentee before: Advanced Risc Machines Ltd.