CN102289361B - 对追踪数据流的关联 - Google Patents

对追踪数据流的关联 Download PDF

Info

Publication number
CN102289361B
CN102289361B CN201110184081.1A CN201110184081A CN102289361B CN 102289361 B CN102289361 B CN 102289361B CN 201110184081 A CN201110184081 A CN 201110184081A CN 102289361 B CN102289361 B CN 102289361B
Authority
CN
China
Prior art keywords
instruction
data
tracing stream
stream
circuit
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
CN201110184081.1A
Other languages
English (en)
Other versions
CN102289361A (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 CN102289361A publication Critical patent/CN102289361A/zh
Application granted granted Critical
Publication of CN102289361B publication Critical patent/CN102289361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • G06F11/364Software debugging by tracing the execution of the program tracing values on a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Abstract

本发明公开了对追踪数据流的关联。提供了一种数据处理装置,该装置具有用于生成包括指令追踪流(10)和数据追踪流(12)的多个追踪流的追踪电路。指令追踪流内的指令元素和数据追踪流内的数据元素利用键值KV被标记,以使得可以在数据元素与对应指令元素之间进行匹配。当满足预定条件时,同步标记(66)被插入指令追踪流(10)和数据追踪流(12)两者中,以便在随后对数据进行分析时,准许在指令元素和数据元素之间进行精确关联。

Description

对追踪数据流的关联
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及生成并分析追踪流(tracestream)以辅助数据处理系统的行为的诊断和排错。
背景技术
已知可以提供包括追踪电路的数据处理系统,该追踪电路被耦合到处理电路并且被配置来生成指示处理电路执行的处理操作的追踪数据流。这样的系统的一个示例是由英国剑桥市的ARM有限公司生产的集成电路设计,其包括处理器核心以及耦合到该处理器核心以生成追踪数据的流的嵌入式追踪宏单元(ETM)。该追踪数据在被发送到芯片外以用于分析之前可被缓存在芯片上。该分析可以利用读取追踪数据流并解释追踪数据流以重构引起该追踪数据流的处理操作的通用计算机。
提供多个追踪流(例如,如由英国剑桥市的ARM有限公司设计的CoreSight聚合器机构所提供的),例如指令追踪流和数据追踪流,可以具有多个优点。这些优点包括容易在指令与数据之间进行过滤的能力。追踪机构也可以更容易地被建立来以不同方式处理指令和数据。追踪流解压缩器可被配置来对指令流译码,并且仅在需要时对数据流译码。具有专用的指令追踪流和专用的数据追踪流通畅也将减少每个流中需要的头部空间的量,从而实现了带宽的提高。追踪电路可以应用分离的先进先出存储器并且准许使用不合比例的更小输入级。分离的指令追踪流和数据追踪流还允许溢出行为有更大的灵活性,例如,准许发生数据追踪流的丢失而不丢失指令追踪流。此外,由于如果不需要数据追踪流的话可以忽略它,因此不需要明确地提供数据追踪抑制(即,用于停止生成与正被处理的数据值有关的追踪数据的机构)。
发明内容
从一个方面看,本发明提供了一种用于处理数据的装置,该装置包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到处理电路并被配置为生成指示由处理电路执行的处理操作的追踪数据;其中
追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且追踪电路被配置为在第二追踪流中插入同步标记以用于标记与第一追踪流中的已知点相匹配的同步点。
本发明的技术认识到,当多个追踪流被提供时,在支持对这些追踪流的适当分析方面出现了困难。具体地,可能难以在所有情况中确定追踪流内的元素之间的关联性。为了辅助实现此,本发明的技术提供了追踪电路,被配置为在第一追踪流和第二追踪流两者中插入同步标记以标记在第一追踪流和第二追踪流中具有相匹配位置的相应同步点。以这种方式,当对追踪流进行分析时,同步标记可被检测到并且可在追踪流之间设置准确的关联性。
第一追踪流内的已知点本身也可以是同步标记。
当多个追踪流因多个原因而可以得到支持时,本发明的技术在如下情况中特别有用:所述第一追踪流是指示由所述处理电路处理的程序指令的指令追踪流,并且所述第二追踪流是指示所述处理电路与存储器系统之间的数据传送的数据追踪流。出于诸如下面讨论的这些原因之类的多个原因,指令和数据的分开追踪是方便的。
如果利用相应键值(keyvalue)来标记元素,则有助于对一系列指令元素内的元素的解释。
通过利用与引起这些数据值的或者与这些数据值相关联的对应指令元素的键值相匹配的键值来标记数据元素,有助于将各个数据元素与引起这些数据元素的指令元素相关联。
当准许具有相匹配键值的数据元素和指令元素在它们在所述数据追踪流和所述指令追踪流内的各自位置之间具有可变偏移时,可以调适(accommodate)指令元素和数据元素的生成和处理中的灵活性以及可能在指令开始执行和与该指令有关的数据变得可用之间产生的延迟的性质。因此,例如,当指令开始执行时,指令元素可被生成并被放置在指令追踪流中,并且在稍后的时间,当数据值根据可变延迟从存储器系统被返回时,具有相匹配键值的对应数据元素被插入数据追踪流中。
所述追踪电路可被布置为递增地改变邻近指令元素之间的所述指令元素的所述键值。通过这样的布置,指令元素的键值在指令追踪流内具有预定顺序。
与指令元素在指令追踪流内的预定顺序及其递增地改变的键值相比,数据元素在数据追踪流内可以具有可变顺序,并且数据值可以不按照与这些数据值所关联的指令元素相对应的顺序被返回系统。因此,第一指令可以将数据载入发布给高等待时间存储器。晚于第一指令被执行的第二指令随后可以向低延迟存储器发布数据载入,其中,即使第一指令更早地开始其执行并且使其指令元素更早地出现在指令追踪流内,与第二指令相对应的数据值在与第一指令相关联的数据值之前被返回。为数据元素提供键值允许这样的失序数据元素被适当地与其对应指令元素相匹配。
为了保留指令追踪流和数据追踪流内的比特空间,键值可被布置为在预定键值范围内绕回(warp),从而限制需要被分配来存储键值的比特空间。根据本发明的技术插入的同步标记有利于键值的这种绕回,这是因为即使因键值绕回而使键值模棱两可,同步标记也准许对相应追踪流内的同步点进行标识。
当键值被与表示已被传送的数据值的数据元素相关联时,进行如下判断:数据元素及其对应指令元素之间的偏移是否如此大以致于同步标记应当被插入,从而辅助系统力图译码追踪数据流并且消除数据元素和指令元素之间的关系的任何模糊性。为了辅助该判断,在指令追踪流内存在相关的邻近指令元素的搜索空间。
搜索空间在指令追踪流内相对于最后被匹配指令元素而被定位,其中,最后被匹配指令元素与指令追踪流内的已针对其在数据追踪流内形成了相匹配数据元素的最后出现指令元素相对应。搜索空间因此形成了一移动窗,在该移动窗内键值可以正常地被匹配而不会产生模糊并且因此不需要在各个追踪流内插入同步标记的开销。
追踪电路可被配置为响应于多种不同的所检测情况来插入同步标记。一种情况是:追踪电路检测数据追踪流内的具有与指令追踪流内早于搜索空间中的最早指令元素的位置相对应的键值的数据元素。另一情况将以上情况与这样的情况相组合:该键值与搜索空间中的比最近生成的键值更晚的位置所对应的指令元素相匹配。用于插入同步标记的这些触发条件有助于应对这样的情形,其中,与数据元素的对应指令元素相比该数据元素太晚出现在数据追踪流中,使得未被匹配的对应指令元素已经移出了搜索空间,并且因此如果依赖关系仅取决于键值则将存在模糊性。
追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记的另一情况是:追踪电路检测到所述数据追踪流内的具有与所述指令追踪流中比所述搜索空间内的最晚指令元素更晚的位置相对应的键值的数据元素。该触发条件可以与这样的条件相组合:该键值与位于搜索空间中的最早指令元素和搜索空间中的最后被匹配指令元素之间的指令元素相匹配。这些条件对应于这样的情形:其中,在数据元素与其对应指令元素之间存在太大的间隙,并且因此同步标记的插入是适当的,因为这将准许必须解释该追踪数据流的电路高效地实现此并且没有错误。
追踪电路被触发来插入同步标记的另一情况是当在处理电路中推测性地被执行的一个或多个程序指令被取消从而使得指令追踪流内的对应指令元素被取消时。在此情况中,指令的取消将在指令追踪流内被标记并且然后被取消的指令元素的键值将再次被使用。由于在指令追踪流内可能存在被执行指令元素和被取消指令元素两者,因此在力图匹配数据元素与指令元素时,插入与取消操作相关联的同步标记消除了任何潜在的模糊性。还可能存在具有相同键的数据元素,其中一些数据元素对应于该取消之前并且其中一些数据元素对应于该取消之后。
从另一方面看,本发明提供了一种用于处理数据的装置,该装置包括:
用于响应于程序指令流执行处理操作的处理装置;
被耦合到处理装置的、用于生成指示由处理装置执行的处理操作的追踪数据的追踪装置;其中
追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且追踪装置被配置为在第二追踪流中插入同步标记以用于标记与第一追踪流中的已知点相匹配的同步点。
从又一方面看,本发明提供了一种处理数据的方法,包括以下步骤:
响应于程序指令流执行处理操作;
生成指示所执行的处理操作的追踪数据;其中
追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且生成步骤在第二追踪流中插入同步标记以用于标记与第一追踪流中的已知点相匹配的同步点。
本发明的一个补充方面是用于根据上述技术处理所接收追踪数据的接收装置。因此,本发明的又一方面提供了一种用于处理所接收追踪数据的装置,包括:
接收电路,被配置为从响应于程序指令流执行处理操作的处理装置接收追踪数据;以及
分析电路,被耦合到接收电路并被配置为分析追踪数据;其中
追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且分析电路被配置为标识第二追踪流中的同步标记和第一数据流内的已知点,同步标记和已知点标识在第一追踪流和第二追踪流内具有相匹配位置的相应同步点。
本发明的又一方面是提供了一种用于处理所接收追踪数据的装置,包括:
用于从响应于程序指令流执行处理操作的处理装置接收追踪数据的接收装置;以及
被耦合到接收装置的、用于分析追踪数据的分析装置;其中
追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且分析装置被配置为标识第二追踪流中的同步标记和第一追踪流内的已知点,同步标记和已知点标识在第一追踪流和第二追踪流内具有相匹配位置的相应同步点。
本发明的又一方面是提供了一种处理所接收追踪数据的方法,包括:
从响应于程序指令流执行处理操作的处理装置接收追踪数据;以及
分析追踪数据;其中
追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且分析步骤标识第二追踪流中的同步标记和第一数据流内的已知点,同步标记和已知点标识在第一追踪流和第二追踪流内具有相匹配位置的相应同步点。
本发明的技术也可被用在不设置同步标记的实施例中。在这些方面中,本发明提供了一种用于处理数据的装置,包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到处理电路并被配置为生成指示由处理电路执行的处理操作的追踪数据;其中
追踪数据包括:
(i)指令追踪流,指令追踪流指示由处理电路处理的程序指令;以及
(ii)数据追踪流,数据追踪流与指令追踪流相分离,并且指示处理电路与存储器之间的数据传送,并且被与指令追踪流精确地相关联。
分开提供指令追踪流和可以精确地与指令追踪流相关(相关联)的数据追踪流提供了独立于同步标记的插入的如先前讨论的优点。
从有一方面看,本发明提供了
一种用于处理数据的装置,包括:
用于响应于程序指令流执行处理操作的处理装置;
被耦合到处理装置的、用于生成指示由处理装置执行的处理操作的追踪数据的追踪装置;其中
追踪数据包括:
(i)指令追踪流,指令追踪流指示由处理电路处理的程序指令;以及
(ii)数据追踪流,数据追踪流与指令追踪流相分离,并且指示处理装置与用于存储数据的存储装置之间的数据传送,并且被与指令追踪流精确地相关联。
从又一方面看,本发明提供了一种处理数据的方法,包括以下步骤:
响应于程序指令流执行处理操作;
生成指示所执行的处理操作的追踪数据;其中
追踪数据包括:
(i)指令追踪流,指令追踪流指示所处理的程序指令;以及
(ii)数据追踪流,数据追踪流与指令追踪流相分离,并且指示响应于程序指令的数据传送,并且被与指令追踪流精确地相关联。
从又一方面看,本发明提供了一种用于处理所接收追踪数据的装置,包括:
接收电路,被配置为从响应于程序指令流执行处理操作的处理装置接收追踪数据;以及
分析电路,被耦合到接收电路并被配置为分析追踪数据;其中
分析电路被配置来分析作为以下(i)、(ii)的追踪数据:
(i)指令追踪流,指令追踪流指示由处理电路处理的程序指令;以及
(ii)数据追踪流,数据追踪流与指令追踪流相分离,并且指示处理电路与存储器之间的数据传送,并且被与指令追踪流精确地相关联。
从又一方面看,本发明提供了一种用于处理所接收追踪数据的装置,包括:
用于从响应于程序指令流执行处理操作的处理装置接收追踪数据的接收装置;以及
被耦合到接收装置的、用于分析追踪数据的分析装置;其中
分析装置被配置来分析作为以下(i)、(ii)的追踪数据:
(i)指令追踪流,指令追踪流指示由处理装置处理的程序指令;以及
(ii)数据追踪流,数据追踪流与指令追踪流相分离,并且指示处理装置与存储器之间的数据传送,并且被与指令追踪流精确地相关联。
从又一方面看,本发明提供了一种处理所接收追踪数据的方法,包括:
从响应于程序指令流执行处理操作的处理装置接收追踪数据;以及
分析追踪数据;其中
分析步骤分析作为以下(i)、(ii)的追踪数据:
(i)指令追踪流,指令追踪流指示由处理装置处理的程序指令;以及
(ii)数据追踪流,数据追踪流与指令追踪流相分离,并且指示处理装置与存储器之间的数据传送,并且被与指令追踪流精确地相关联。
将从结合附图阅读的下面对说明性实施例的详细描述中清楚本发明的以上以及其它目的、特征和优点。
附图说明
图1示意性地图示出了包括处理电路、存储器和追踪电路的用于处理数据的装置;
图2示意性地图示出了通过相匹配键值指示出了数据元素与指令元素之间的关系的指令追踪流和数据追踪流;
图3是示意性地图示出用于确定哪个键值将与被插入指令追踪流内的指令元素相关联的处理的流程图;
图4是示意性地图示出键值如何被指派给将被插入数据追踪流内的数据元素的流程图;
图5示意性地图示出了数据元素太晚被插入数据追踪流中以致于不容易与其对应指令元素相匹配从而使得同步标记的插入被触发的情形;
图6A示意性地图示出了在数据追踪流内的数据元素与指令追踪流内的对应指令元素之间存在太大的间隙从而使得同步标记的插入被触发的情形;
图6B是示意性地图示出当同步标记被插入时、系统的状态之间的关系的状态图;
图7示意性地图示出了指令被取消并且指令元素的键值再次被使用从而使得同步标记的插入应当被触发的情形;
图8是示意性地图示出当数据元素相对于对应指令元素出现太晚或者在数据元素与对应指令元素之间存在太大的间隙时对插入同步标记进行的控制的流程图;
图9是示意性地图示出在指令取消发生时触发对同步标记的插入时所执行的控制的流程图;以及
图10A至10D示意性地图示出从追踪数据流中恢复诊断信息。
具体实施方式
图1示意性地图示出了用于处理数据的装置2,包括耦合到存储器6的处理电路4。处理电路4包括追踪电路8,追踪电路8生成被提供给用于处理所接收追踪数据的装置14的指令追踪流10和数据追踪流12。
处理电路4包括具有一数据路径的处理器核心,该数据路径包括通用寄存器16、乘法器19、移位器20和加法器22。经由预取电路24从存储器6取回的程序指令被提供给指令流水线26,其中,在译码级中,它们生成用于控制数据路径16、18、20、22执行所希望的处理操作的控制信号。在此示例中,这些处理操作包括存储器6与处理电路4之间的数据传送。数据传送可以是如下形式:将数据值载入寄存器组16中的寄存器之一或者寄存器组16的寄存器内的值之一存储到存储器6。
将理解,处理电路4是以极简化的形式示出的,并且实际上,处理电路4可以包括许多另外的电路元件。此外,图1的示例实施例将处理电路4和存储器6图示为分离的,然而将理解,这些元件可以以组合的方式被形成在片上系统集成电路等上。
处理电路4包括作为与处理电路4相关联的嵌入式追踪宏单元(ETM)一部分的追踪电路8。追踪电路8响应于从流水线26接收的信号28生成包括有表示正被执行的指令的指令元素的指令追踪流。追踪电路8还接收信号30,信号30指示处理电路4与存储器6之间正在进行的数据传送。这些信号30由追踪电路8用来控制数据追踪流的生成,数据追踪流包括表示已被检测到并且正被追踪的数据传送的数据元素。嵌入式追踪宏单元包括追踪缓冲器32,指令追踪流和数据追踪流在被发送给用于接收追踪数据的装置14之前被存储在追踪缓冲器32中。追踪电路8还响应于来自流水线26的指示一个或多个指令已被取消的取消信号。如下面将进一步讨论的,指令取消的发生是用于向数据追踪流12和指令追踪流10插入同步标记的一种触发。
本示例实施例中的用于接收追踪数据的装置14包括通用计算机,该通用计算机包括用于接收数据追踪流12和指令追踪流10的接收电路34以及通用处理器36和程序存储器38。存储在程序存储器38内并由通用处理器36执行的计算机程序对数据追踪流12和指令追踪流10进行分析,以向用户提供对哪些指令已被执行和哪些数据值已被传送的指示。出于诸如排错、诊断和性能优化之类的多种原因,这是有用的。该分析利用数据追踪流12和指令追踪流10内的同步标记来标识这些追踪流10、12内的匹配(关联)位置,以使得数据元素可被匹配到指令元素。
现在将参考下面的表1描述追踪电路8,以及特别地,ETM内的索引存储单元(也称为“追踪表”)220的操作。表1示出了在处理器核心推测性地执行多组指令A、B和C并且随后指示出组B应当被取消并且组A应当被提交(commit)的情形中的计数器值、最早的未被提交值以及追踪表如何在ETM中被更新。
组A开始于“令人感兴趣的”并且当前正被追踪的载入(LDR)指令。因此,与组A相对应的初始索引单元230的条目(“A.first”)存储当前计数器值0并且然后接收器被递增到1。最后,与组A相对应的最后索引单元240的条目(“A.last”)存储当前计数器值1。组A中的下一指令是既不“令人感兴趣的”也不被追踪的移动指令(MOV)。组A的最后一个指令是既“令人感兴趣的”又被追踪的若等于则分支(BEQ)指令,因此计数器被递增到2。与组A相对应的最后索引单元240的条目(“A.last”)随后利用当前计数器值2被更新。应注意,实际上,每条指令的最后一步总是用于使得与当前组相对应的最后索引单元240的条目利用当前计数器值被更新。当然,只有计数器已针对该指令被更新,这才具有任何效果。对于图1所示的其余指令,将不明确描述以这种方式对“最后的”值的更新。
组B开始于既不“令人感兴趣的”也不被追踪的ADD指令,但是作为新组中的第一指令来使得当前计数器值2被存储在初始索引值存储单元的相应条目(即,B.first=2)中。组B中的第二条指令类似地是既不“令人感兴趣的”也不被追踪并且不更新任何值的SUB指令。
组C开始于既“令人感兴趣的”又被追踪的存储(STR)指令,因此当前计数器值被存储在初始索引存储单元的C.first条目中并且计数器随后被递增到3。组C中的第二条指令也是既“令人感兴趣的”又被追踪的的若不等则分支(BNE)指令,因此计数器被更新为4。
接下来,处理器核心指示出组B的推测性执行是不正确的并且因此组B和组C应当被取消。作为响应,ETM(由追踪电路8控制)参考计数器210的当前计数值(当前为4)以及存储在初始索引值存储单元230的相应条目(即,B.first)中的值(为2)。ETM由此确定两项追踪数据应当被取消(4-2),并且生成指示该事实的追踪数据项。计数器210然后被重设为2(因为其先前为4并且2项被取消)。
接下来,处理器核心指示出指令组A应当被提交,因为其已经确定该组指令的推测性执行是正确的。作为响应,ETM(在追踪电路8的控制下)参考存储在最早的未被提交存储单元250中的值(当前为0)以及与该组相对应的最后索引存储单元240中的条目(即,A.last)(为2)。ETM由此确定两项追踪数据(2-0)应当被提交,并且生成指示该事实的追踪数据项。存储在最早的未被提交存储单元250中的值然后被重设为针对该组读取的“最后的”值,即,在此示例中为2。
在参考图1描述的实施例中,注意,取消和提交是通过参考事件的数目来执行的,其中,所生成的追踪数据项指示应当被取消或提交的事件的数目。在替代实施例中,追踪单元可以参考事件编号来生成取消/提交追踪项。当是这样的情况时,对于追踪取消项,事件编号将从“初始”值,即初始索引值存储单元的相应条目被获得,并且对于追踪提交项,事件编号将从“最后的”值,即最后索引值存储单元的相应条目被获得。注意,尽管看起来通过事件编号进行的提交和取消需要较少的硬件(由于不需要减法),然而应注意,当通过事件的数目来指示取消/提交时,其常常可被压缩,因为其通常具有前导零。可以取决于系统需求,即,是追踪单元中的较少硬件还是追踪流中的较少带宽被认为更重要,来确定对通过“事件的数目”或“事件编号”进行提交/取消的选择。
表1.推测性执行期间的索引存储单元值
图2示意性地图示出了多个追踪流10、12。在此示例实施例中,这多个追踪流是数据追踪流12和指令追踪流10。将理解,从更一般的方面来说,将同步标记插入不同追踪流的本发明的技术不必限于这些追踪流包括数据追踪流12和指令追踪流10的情形。
在图2的示例中,指令追踪流10包括一系列指令元素(“原子”),每个指令元素用范围0至5内的键值来标记。键值按照递增的序列被应用于指令元素。该序列在键值5之后绕回键值0。将理解,该范围的键值仅是一个示例,并且实际上,还可以使用大得多的范围的和/或任何预定义的序列。此外,本示例中的递增是升序递增,然而也可以是这样的:递增被应用以使得键值的绝对值减小,当键值达到零时绕回来。此外,键值的改变量可以是不同于1的值,如果在整个系统的上下文中这是合适的话。本发明的技术涵盖了所有这些可能性。
在指令追踪流10内,存在与已被匹配的最近的指令元素相对应的最后匹配指令元素(LME)40,即,在先前已被匹配的所有指令元素中,LME是最新的。在图2所示的示例中,在检测到处理电路4和存储器6之间的数据传送之后,数据元素44将被插入数据追踪流12内。该数据元素44将被与指令追踪流10内的指令元素46相匹配。追踪电路8通过分析来自流水线26的信号28以及通过探察数据路径而得到的信号30(例如,存储器地址可被追踪电路8用来将数据传送匹配到指令),判定这是正确匹配。为了使数据追踪流12和指令追踪流10内的数据元素44和指令元素46可被匹配起来,它们被标记有匹配键值,在此示例中,为键值3。
数据元素44被插入数据追踪流12内的精确定时将取决于数据传送的可变延迟而变化。因此,在指令元素46和其对应的数据元素44之间存在可变偏移。该可变偏移还使得数据追踪流12内的数据元素不必遵循与指令追踪流10内的其对应指令元素相同的顺序。数据追踪流12内的数据元素的这种失序行为是键值的使用对于如下能力之所以重要的一个原因:能够以关联方式合适地分析数据追踪流12和指令追踪流10以了解处理电路4和存储器6的精确行为。
在指令追踪流10内的最后匹配指令元素(LME)40附近的定位被布置为搜索空间48。该搜索空间在同步标记应被插入数据追踪流12和指令追踪流10内时被用来进行定义和控制,如下面将讨论的。搜索空间48被定位为与最后匹配元素40具有固定关系,因此当最后匹配元素40在指令追踪流10内移动位置时,搜索空间48也在指令追踪流10内移动。在图2所示的示例中,搜索空间48具有使得其跨越键值的完整数值范围的大小,即,搜索空间包括从0延伸到5的可能键值的全部范围。
图3是示意性地图示出可由追踪电路8在确定哪个键值与将被发布到指令追踪流10中的指令元素相关联时所执行的处理的流程图。在步骤50,键值KV被初始化为值0。在步骤52,处理等待直到指令元素将被发布到指令追踪流10中。当这样的指令元素将被发布时,处理前进到步骤54,在步骤54中,键值KV的当前值被与正被放置到指令追踪流10中的指令元素相关联(例如,指令元素中的空字段被用来保存键值KV的当前值)。
在步骤56,键值KV被递增。在步骤58,判断键值现在是否已达到应当经历绕回操作的状态。在所示示例中,如果键值达到“6”,则绕回应当被执行并且处理返回到步骤50,在步骤50中键值再次被初始化为“0”。如果键值不需要绕回,则处理返回到步骤52,在步骤52中等待发布另一指令元素。
图4是示意性地图示出由追踪电路8在将键值KV与将被插入数据追踪流12中的数据元素相关联时所执行的处理的流程图。在步骤60,处理等待直到检测到将被发布到数据追踪流12中的数据元素为止。当这样的数据元素被检测到时,然后步骤62向该数据元素指派键值KV,以与已经被发布到指令追踪流10中的并且与所关注的数据元素相对应的指令元素的键值KV相匹配。
因此,载入指令可被执行并且与该指令相对应的指令元素被插入指令追踪流10。当响应于该载入指令返回数据值(其可以是稍后的可变处理周期数目)时,对应的数据元素被插入数据追踪流12中并且被标记有与该载入指令的指令元素的键值相匹配的键值。追踪电路8追踪引起可利用数据元素被标记的数据传送的这样的“飞行”指令,并且因此当数据元素到达时,追踪电路8将匹配键值与该数据元素相匹配。
在步骤62之后,步骤64将现在被标记有适当键值的数据元素发布到数据追踪流12中,并且处理返回到步骤60。
图5示意性地图示出了向数据追踪流12和指令追踪流10两者插入同步标记66被触发的情况的一个示例。图5的示例是这样的情形,其中,在相应的指令元素70被发布到指令追踪流10中之后数据元素68将太晚被插入。将看到,在图5所示的示例中,在指令元素72被插入指令追踪流10中之前数据元素68已出现,并且由于数据传送在其对应指令被执行之前不能发生,因此产生了数据元素68对应于太早的指令元素70的情况。
追踪电路8通过追踪指令追踪流10中最近生成的指令元素来进行操作。此外,搜索空间48的最晚端是基于从也被追踪的最晚匹配元素LME的位置得出的固定计算来确定的。如果正被插入的数据元素68的键晚于最近生成的指令元素74的键但早于或等于搜索空间48的最晚端76,则数据元素68与早于搜索空间的指令元素70相对应,并且因此同步标记66(例如独特比特图案)被插入数据追踪流12和指令追踪流10两者中。
图6A示意性地图示出了在数据元素78和前一数据元素的插入之间存在太长的间隙的情形。当数据元素78的键值与位于最后匹配元素LME和搜索空间48的最早端86之间的数据元素80的键值相匹配时,在此情况中插入同步标记82的要求是通过具有与搜索空间48的最晚端84之后的位置相对应的键值的数据元素78来标识的。
可以利用具有三个状态的状态机来控制根据图6A的情形生成同步标记82。该状态机可以具有空闲状态、搜索空间结束之后状态以及最后匹配元素之后状态,如图6B所示。状态机将占据空闲状态直到搜索空间的结束过去之后的指令元素被生成为止。这将使状态机移到搜索空间结束之后状态。在此状态中,如果搜索空间前进以使得该指令元素不再位于搜索空间的最晚端之后,则状态机可以返回空闲状态。如果所生成指令的键等于LME键,则状态机可以从搜索空间结束之后状态前进到最后匹配元素之后状态。在如下情况中时同步标记被插入:
我们处于“搜索空间结束之后”状态并且数据元素键位于搜索空间的最早端与LME之间时,或者
我们处于“最后匹配元素之后”状态并且任何数据元素被生成时。
图7图示出了这样的情形,其中,当包括与指令元素90相对应的指令的两个指令被取消时同步标记88被插入数据追踪流12和指令追踪流10中。同步标记至少针对与被取消指令之后的指令相对应的第一数据元素而被插入。为了控制该插入,追踪电路8存储对最早被取消指令元素的指示。该键用作用于取消之后的第一指令元素的键。在所示示例中,取消操作用来取消标记有键“4”和“5”的指令元素。因此,键“4”在取消操作之后再次被使用并且标记指令追踪流10中的取消标记94之后的第一指令元素92。返回数据元素88,如果该数据元素88的键位于最早被取消指令元素和最近生成的指令元素(包括端点指令元素)之间,则其可以是取消之后的第一数据元素并且因此同步标记被插入指令追踪流10和数据追踪流12两者中,如果在此之前的第二次取消被检测到,则最早被取消指令元素的取消值被更新。在此情况中,追踪电路8针对所有数据元素插入同步标记,直到与最近取消的指令元素之后的指令元素相对应的第一数据元素被检测到为止。当与被取消指令之后的指令元素相对应的第一数据元素被检测到时,则取消键被标记为无效并且不需要在该取消之后进一步插入同步标记。如果具有等于取消值的键的指令元素被生成,则键已绕回。在此情况中,同步标记针对下一数据元素被插入。这不太可能发生,除非在没有数据元素情况下的取消之后,存在较长时段。
图8是图示出根据图5和图6所示情形追踪电路8在插入同步标记时的操作的流程图。在步骤96,处理等待直到数据元素被检测到。步骤100判断该数据元素的键值是否与比最近生成指令元素键值晚的搜索空间48内的指令元素相匹配。其对应于比搜索空间内的最早指令元素更早的数据元素的键值。如果符合该测验,则处理前进到步骤102,在步骤102中,同步标记被插入指令追踪流10和数据追踪流12两者中。
如果步骤100处的判断是所作的测验未被满足,则处理前进到步骤106。在步骤106中进行如下判断:当在搜索空间结束之后状态中时,该数据元素的键值是否与搜索空间48内的位于搜索空间的最早端和最后匹配元素之间的指令元素相匹配,或者当在最后匹配元素之后状态中时,任何数据元素是否被生成。其对应于比搜索空间内的最晚指令元素更晚的数据元素的键值。如果步骤106处的判断是相匹配,则处理前进到步骤102,在步骤102中,同步标记被插入。如果步骤100和步骤106处的判断均未被满足,则同步标记不被插入。
图9是示意性地图示出根据图7所示的情形的追踪电路的操作的流程图。在步骤108处,处理等待直到与追踪流内的指令元素相对应的指令被取消。在步骤109处,处理等待与该取消之后的指令相对应的第一数据元素。步骤110记录将被取消的最早指令的键值,并且然后当具有在最晚被取消指令和最近生成指令元素之间的键值的数据元素出现时,同步标记被插入指令追踪流10和数据追踪流12两者中。
将参考图10A至图10D讨论根据本发明的技术的追踪分析工具的操作。
该工具将接收位于分离的流中的指令追踪元素和数据追踪元素,因此其必须进行一些操作来使得数据与指令相匹配。其应当按照接收顺序依次考虑每个数据追踪元素。对于每个数据追踪元素,其必须在指令追踪元素(或原子)中尝试并找到对应匹配。为了实现此,其采取以下两个动作之一:
●如果当前正被考虑的数据追踪元素在同步标记之前,则必须在指令追踪元素中找到对应的同步标记。这是通过在它们被接收到时使同步标记相匹配来实现的,这是简单的任务,因为在两个流中存在相同数目的同步标记并且同步标记在两个流中具有相同的顺序。一旦对应的同步标记被找到,则该工具应当从该同步标记起向后搜索直到其找到具有正确追踪键的指令元素为止。
●否则,该工具应当根据搜索空间概念进行搜索。因为取消可能存在于指令追踪中,所以这比仅搜索搜索空间稍微更复杂。取而代之的是,接着进行下面的步骤,按照这样的顺序,直到匹配指令元素被找到为止:
1)从(并且包括)LME向前搜索直到如下的任一者为止:
a.取消追踪元素被找到
b.搜索空间的最近端被找到
2)从LME向后搜索直到匹配被找到或者工具用尽指令为止,即使这意味着比搜索空间的最早端更进一步地向后。
在同步标记对(一个同步标记来自于一个流)被找到之前匹配无法开始,然后上面的第一规则可被应用并且LME被设置。无论哪个动作被使用,当匹配原子比当前LME晚时,该LME被更新。
图10A示出了这样的示例,其中,工具已找到在同步标记之后的数据地址元素“DA1”并且将其与对应原子匹配。在该匹配之后,LEM将变为所指示的“A1”。
图10B示出了工具正考虑“DA3”并且正利用搜索空间进行匹配的示例。不存在取消。在该匹配之后,LEM将向前移动到“A3”。
图10C示出了当存在取消时工具正进行匹配的示例。其正考虑“DA3”。其从LEM向前搜索并且在取消之前找到匹配指令。在该匹配之后,LEM将向前移动到“A3”。
图10D示出了当存在取消时工具进行匹配的示例。其从LME向前搜索但是在取消之前未找到匹配,因此其随后向后搜索并且找到匹配。在该匹配之后,由于匹配原子早于LME,因此LME不移动。
尽管在此已参考附图描述了本发明的说明性实施例,然而将明白,本发明不限于这些精确实施例,并且本领域技术人员在不脱离如所附权利要求限定的本发明的范围和精神的情况下可以在其中实现各种改变和修改。

Claims (33)

1.一种用于处理数据的装置,包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到所述处理电路并被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据;其中
所述追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且所述追踪电路被配置为在所述第二追踪流中插入同步标记以用于标记与所述第一追踪流中的已知点相匹配的同步点,其中,除了所述同步标记之外,所述追踪电路还被配置为利用相应的键值来标记所述第一追踪流中的各个指令元素和所述第二追踪流中的各个数据元素。
2.如权利要求1所述的装置,其中,所述第一追踪流中的所述已知点也是同步标记。
3.如权利要求1所述的装置,其中,所述第一追踪流是指示由所述处理电路处理的程序指令的指令追踪流,并且所述第二追踪流是指示所述处理电路与存储器之间的数据传送的数据追踪流。
4.如权利要求3所述的装置,其中,所述指令追踪流包括一系列指令元素并且所述数据追踪流包括一系列数据元素。
5.如权利要求3所述的装置,其中,所述指令追踪流包括一系列指令元素并且所述数据追踪流包括一系列数据元素,并且所述追踪电路被配置为利用与所述指令追踪流中的指令元素的键值相匹配的相应键值来标记所述一系列数据元素中的各个数据元素,所述指令追踪流中的指令元素对应于与所述数据元素相关联的相应程序指令。
6.如权利要求5所述的装置,其中,具有匹配键值的数据元素和指令元素在它们分别在所述数据追踪流和所述指令追踪流内的位置之间具有可变偏移。
7.如权利要求5所述的装置,其中,所述追踪电路被配置为递增地改变所述指令追踪流内邻近指令元素之间的所述指令元素的所述键值。
8.如权利要求5所述的装置,其中,所述指令元素的所述键值在所述指令追踪流内具有预定顺序。
9.如权利要求8所述的装置,其中,所述数据元素的所述键值在所述数据追踪流内具有可变顺序。
10.如权利要求7所述的装置,其中,所述追踪电路被配置为在预定键值范围内使所述键值绕回。
11.如权利要求5所述的装置,其中,所述追踪电路被配置为通过在所述指令追踪流的邻近指令元素的搜索空间内检测数据元素和指令元素之间的匹配键值来将所述数据元素匹配到所述指令元素。
12.如权利要求11所述的装置,其中,所述搜索空间位于所述指令追踪流内以相对于所述指令追踪流内的最后被匹配指令元素具有固定位置,所述最后被匹配指令元素与所述指令追踪流内的针对其在所述数据追踪流内放置了相匹配数据元素的最晚出现指令元素相对应。
13.如权利要求11所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流内比所述搜索空间中的最早指令元素更早的位置相对应的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
14.如权利要求11所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流内的比所述搜索空间中的最早指令元素更早的位置相对应的键值的数据元素以及具有与所述搜索空间中的比最近生成键值更晚的位置相对应的指令元素所匹配的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
15.如权利要求11所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流中比所述搜索空间内的最晚指令元素更晚的位置相对应的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
16.如权利要求12所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流中比所述搜索空间内的最晚指令元素更晚的位置相对应的键值以及具有与位于所述搜索空间内的最早指令元素和所述最后被匹配指令元素之间的指令元素相匹配的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
17.如权利要求3所述的装置,其中,当由所述处理电路推测性地执行的一个或多个程序指令被取消从而使得所述指令追踪流内的对应指令元素被取消时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
18.一种处理数据的方法,包括以下步骤:
响应于程序指令流执行处理操作;
生成指示所执行的所述处理操作的追踪数据;其中
所述追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且所述生成步骤在所述第二追踪流中插入同步标记以用于标记与所述第一追踪流中的已知点相匹配的同步点,以及
除了所述同步标记之外,还利用相应的键值来标记所述第一追踪流中的各个指令元素和所述第二追踪流中的各个数据元素。
19.一种用于处理所接收追踪数据的装置,包括:
接收电路,被配置为从响应于程序指令流执行处理操作的处理装置接收追踪数据;以及
分析电路,被耦合到所述接收电路并被配置为分析所述追踪数据;其中
所述追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且所述分析电路被配置为标识所述第二追踪流中的同步标记和所述第一追踪流内的已知点,所述同步标记和所述已知点标识在所述第一追踪流和所述第二追踪流内具有相匹配位置的相应同步点;以及
除了所述同步标记之外,还利用相应的键值来标记所述第一追踪流和所述第二追踪流中的各个指令元素。
20.一种处理所接收追踪数据的方法,包括:
从响应于程序指令流执行处理操作的处理装置接收追踪数据;以及
分析所述追踪数据;其中
所述追踪数据包括包含第一追踪流和第二追踪流的多个分离的追踪流,并且所述分析步骤标识所述第二追踪流中的同步标记和所述第一追踪流内的已知点,所述同步标记和所述已知点标识在所述第一追踪流和所述第二追踪流内具有相匹配位置的相应同步点,以及
除了所述同步标记之外,还利用相应的键值来标记所述第一追踪流和所述第二追踪流中的各个指令元素。
21.一种用于处理数据的装置,包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到所述处理电路并被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据;其中
所述追踪数据包括:
(i)指令追踪流,所述指令追踪流指示由所述处理电路处理的程序指令;以及
(ii)数据追踪流,所述数据追踪流与所述指令追踪流相分离,并且指示所述处理电路与存储器之间的数据传送,并且被与所述指令追踪流精确地相关联,其中所述指令追踪流包括一系列指令元素并且所述数据追踪流包括一系列数据元素,其中所述追踪电路被配置为利用相应的键值来标记所述一系列指令元素中的各个指令元素,并且所述追踪电路被配置为利用与所述指令追踪流中的指令元素的键值相匹配的相应键值来标记所述一系列数据元素中的各个数据元素,所述指令追踪流中的指令元素对应于与所述数据元素相关联的相应程序指令;
其中,具有匹配键值的数据元素和指令元素在它们分别在所述数据追踪流和所述指令追踪流内的位置之间具有可变偏移。
22.一种用于处理数据的装置,包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到所述处理电路并被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据;其中
所述追踪数据包括:
(i)指令追踪流,所述指令追踪流指示由所述处理电路处理的程序指令;以及
(ii)数据追踪流,所述数据追踪流与所述指令追踪流相分离,并且指示所述处理电路与存储器之间的数据传送,并且被与所述指令追踪流精确地相关联,其中所述指令追踪流包括一系列指令元素并且所述数据追踪流包括一系列数据元素,其中所述追踪电路被配置为利用相应的键值来标记所述一系列指令元素中的各个指令元素,并且所述追踪电路被配置为利用与所述指令追踪流中的指令元素的键值相匹配的相应键值来标记所述一系列数据元素中的各个数据元素,所述指令追踪流中的指令元素对应于与所述数据元素相关联的相应程序指令;
其中,所述追踪电路被配置为递增地改变所述指令追踪流内邻近指令元素之间的所述指令元素的所述键值。
23.如权利要求22所述的装置,其中,所述指令元素的所述键值在所述指令追踪流内具有预定顺序。
24.如权利要求23所述的装置,其中,所述数据元素的所述键值在所述数据追踪流内具有可变顺序。
25.如权利要求22所述的装置,其中,所述追踪电路被配置为在预定键值范围内使所述键值绕回。
26.一种用于处理数据的装置,包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到所述处理电路并被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据;其中
所述追踪数据包括:
(i)指令追踪流,所述指令追踪流指示由所述处理电路处理的程序指令;以及
(ii)数据追踪流,所述数据追踪流与所述指令追踪流相分离,并且指示所述处理电路与存储器之间的数据传送,并且被与所述指令追踪流精确地相关联,其中所述指令追踪流包括一系列指令元素并且所述数据追踪流包括一系列数据元素,其中所述追踪电路被配置为利用相应的键值来标记所述一系列指令元素中的各个指令元素,并且所述追踪电路被配置为利用与所述指令追踪流中的指令元素的键值相匹配的相应键值来标记所述一系列数据元素中的各个数据元素,所述指令追踪流中的指令元素对应于与所述数据元素相关联的相应程序指令;
其中,所述追踪电路被配置为通过在所述指令追踪流的邻近指令元素的搜索空间内检测数据元素和指令元素之间的匹配键值来将所述数据元素匹配到所述指令元素。
27.如权利要求26所述的装置,其中,所述搜索空间位于所述指令追踪流内以相对于所述指令追踪流内的最后被匹配指令元素具有固定位置,所述最后被匹配指令元素与所述指令追踪流内的针对其在所述数据追踪流内放置了相匹配数据元素的最晚出现指令元素相对应。
28.如权利要求26所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流内比所述搜索空间中的最早指令元素更早的位置相对应的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
29.如权利要求27所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流内的比所述搜索空间中的最早指令元素更早的位置相对应的键值的数据元素以及具有与所述搜索空间中的比最近生成键值更晚的位置相对应的指令元素所匹配的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
30.如权利要求26所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流中比所述搜索空间内的最晚指令元素更晚的位置相对应的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
31.如权利要求27所述的装置,其中,当所述追踪电路检测到所述数据追踪流内的具有与所述指令追踪流中比所述搜索空间内的最晚指令元素更晚的位置相对应的键值以及具有与位于所述搜索空间内的最早指令元素和所述最后被匹配指令元素之间的指令元素相匹配的键值的数据元素时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
32.一种用于处理数据的装置,包括:
处理电路,被配置为响应于程序指令流执行处理操作;以及
追踪电路,被耦合到所述处理电路并被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据;其中
所述追踪数据包括:
(i)指令追踪流,所述指令追踪流指示由所述处理电路处理的程序指令;以及
(ii)数据追踪流,所述数据追踪流与所述指令追踪流相分离,并且指示所述处理电路与存储器之间的数据传送,并且被与所述指令追踪流精确地相关联,其中所述指令追踪流包括一系列指令元素并且所述数据追踪流包括一系列数据元素,其中所述追踪电路被配置为利用相应的键值来标记所述一系列指令元素中的各个指令元素,并且所述追踪电路被配置为利用与所述指令追踪流中的指令元素的键值相匹配的相应键值来标记所述一系列数据元素中的各个数据元素,所述指令追踪流中的指令元素对应于与所述数据元素相关联的相应程序指令;
其中,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记,以标记在所述指令追踪流和所述数据追踪流内具有相匹配位置的相应同步点。
33.如权利要求32所述的装置,其中,当由所述处理电路推测性地执行的一个或多个程序指令被取消从而使得所述指令追踪流内的对应指令元素被取消时,所述追踪电路被配置为在所述指令追踪流和所述数据追踪流两者中插入同步标记。
CN201110184081.1A 2010-06-21 2011-06-21 对追踪数据流的关联 Active CN102289361B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1010333.1A GB2481380B (en) 2010-06-21 2010-06-21 Correlating trace data streams
GB1010333.1 2010-06-21

Publications (2)

Publication Number Publication Date
CN102289361A CN102289361A (zh) 2011-12-21
CN102289361B true CN102289361B (zh) 2016-07-06

Family

ID=42582691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110184081.1A Active CN102289361B (zh) 2010-06-21 2011-06-21 对追踪数据流的关联

Country Status (4)

Country Link
US (1) US8713375B2 (zh)
JP (1) JP5699042B2 (zh)
CN (1) CN102289361B (zh)
GB (1) GB2481380B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144844A (zh) * 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 追踪方法、装置、设备和机器可读介质

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519564B1 (en) * 2012-09-28 2016-12-13 EMC IP Holding Company LLC Trace saving intervals
US9612938B2 (en) * 2013-05-16 2017-04-04 Intel Corporation Providing status of a processing device with periodic synchronization point in instruction tracing system
JP6668840B2 (ja) * 2016-03-11 2020-03-18 富士通株式会社 ソフトウェア導入支援プログラム、ソフトウェア導入支援装置、及びソフトウェア導入支援方法
US10657021B2 (en) * 2016-09-07 2020-05-19 Arm Limited Tracing processing activity with position data to reorder items of trace data
GB2553582B (en) * 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
GB2558955B (en) * 2017-01-24 2020-12-23 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions
GB2570466B (en) * 2018-01-25 2020-03-04 Advanced Risc Mach Ltd Commit window move element
GB2570512B (en) * 2018-01-30 2020-04-22 Advanced Risc Mach Ltd An apparatus and method for aligning corresponding elements in multiple streams of elements
GB201809542D0 (en) * 2018-06-11 2018-07-25 Nordic Semiconductor Asa Software-trace message sink peripheral

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2371897A (en) * 2001-02-01 2002-08-07 Advanced Risc Mach Ltd Tracing out-of-order data
GB2404753A (en) * 2003-08-07 2005-02-09 Advanced Risc Mach Ltd Trace source correlation in a data processing apparatus
CN101398782A (zh) * 2007-09-28 2009-04-01 Arm有限公司 产生用于数据处理装置的跟踪流的技术

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804814B1 (en) * 1999-12-29 2004-10-12 Veritas Operating Corporation Method for simulating back program execution from a traceback sequence
US6834365B2 (en) * 2001-07-17 2004-12-21 International Business Machines Corporation Integrated real-time data tracing with low pin count output
US7080289B2 (en) * 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
US7225365B2 (en) * 2002-12-17 2007-05-29 Texas Instruments Incorporated Apparatus and method for identification of a new secondary code start point following a return from a secondary code execution
US20040153813A1 (en) * 2002-12-17 2004-08-05 Swoboda Gary L. Apparatus and method for synchronization of trace streams from multiple processors
US7463653B2 (en) * 2002-12-17 2008-12-09 Texas Instruments Incorporated Apparatus and method for compression of the timing trace stream
US7149933B2 (en) 2003-08-07 2006-12-12 Arm Limited Data processing system trace bus
US7681084B2 (en) * 2005-05-13 2010-03-16 Texas Instruments Incorporated TOD or time stamp inserted into trace recording stream
US8881114B2 (en) * 2005-05-16 2014-11-04 Texas Instruments Incorporated Stored program writing stall information when a processor stalls waiting for another processor
US7606999B2 (en) * 2006-05-16 2009-10-20 Texas Instruments Incorporated Merging branch information with sync points
US9195462B2 (en) * 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
US7870437B2 (en) * 2007-11-14 2011-01-11 Arm Limited Trace data timestamping
US8055950B2 (en) * 2008-01-11 2011-11-08 Arm Limited Method and apparatus for improved timing for trace synchronization
US8122437B2 (en) * 2008-03-31 2012-02-21 Freescale Semiconductor, Inc. Method and apparatus to trace and correlate data trace and instruction trace for out-of-order processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2371897A (en) * 2001-02-01 2002-08-07 Advanced Risc Mach Ltd Tracing out-of-order data
GB2404753A (en) * 2003-08-07 2005-02-09 Advanced Risc Mach Ltd Trace source correlation in a data processing apparatus
CN101398782A (zh) * 2007-09-28 2009-04-01 Arm有限公司 产生用于数据处理装置的跟踪流的技术

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144844A (zh) * 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 追踪方法、装置、设备和机器可读介质
CN109144844B (zh) * 2017-06-27 2023-01-31 阿里巴巴集团控股有限公司 追踪方法、装置、设备和机器可读介质

Also Published As

Publication number Publication date
GB2481380B (en) 2018-05-16
CN102289361A (zh) 2011-12-21
US8713375B2 (en) 2014-04-29
JP5699042B2 (ja) 2015-04-08
GB2481380A (en) 2011-12-28
US20110314340A1 (en) 2011-12-22
JP2012003770A (ja) 2012-01-05
GB201010333D0 (en) 2010-08-04

Similar Documents

Publication Publication Date Title
CN102289361B (zh) 对追踪数据流的关联
CN100449499C (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置
US11379234B2 (en) Store-to-load forwarding
EP0135844B1 (en) A data processor with a branch target instruction storage
CN1742257B (zh) 用于数据预测的系统及方法
CN100424635C (zh) 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法
CN101529378B (zh) 用于处理分支历史信息的方法及管线处理器
EP0789299A1 (en) Method for executing speculative load instructions in high-performance processors
US20020147965A1 (en) Tracing out-of-order data
US10303480B2 (en) Unified store queue for reducing linear aliasing effects
CN1204499C (zh) 在以正常模式执行指令期间执行硬件测试的处理器
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
CN101046740A (zh) 用于按需临时寄存器重命名的方法和系统
CN105593807A (zh) 跨群组界限的指令群组最佳化
KR20200083479A (ko) 저장 융합 시스템 및 방법
US7774582B2 (en) Result bypassing to override a data hazard within a superscalar processor
CN114008587A (zh) 在处理器中的推测性错误预测恢复中限制基于负载的控制无关(ci)指令的重放
CN111078295B (zh) 一种乱序高性能核的混合分支预测装置及方法
KR20230093442A (ko) 프로세서에서 추론적 예측 실패 복구시 리플레이를 위한 제어 독립적(ci) 메모리 데이터 의존적(dd)(cimdd) 명령어들로서 로드 기반 제어 독립적(ci) 레지스터 데이터 독립적(di)(cirdi) 명령어들의 예측
US9348688B2 (en) Correlating trace data streams
JP2001100997A (ja) 並列処理プロセッサ
US6721876B1 (en) Branch predictor index generation using varied bit positions or bit order reversal
US6098168A (en) System for completing instruction out-of-order which performs target address comparisons prior to dispatch
US6401195B1 (en) Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
US20010027538A1 (en) Computer register watch

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