CN102947804A - 当追踪数据处理系统时的键配置 - Google Patents

当追踪数据处理系统时的键配置 Download PDF

Info

Publication number
CN102947804A
CN102947804A CN2011800305540A CN201180030554A CN102947804A CN 102947804 A CN102947804 A CN 102947804A CN 2011800305540 A CN2011800305540 A CN 2011800305540A CN 201180030554 A CN201180030554 A CN 201180030554A CN 102947804 A CN102947804 A CN 102947804A
Authority
CN
China
Prior art keywords
tracing unit
index value
data
index
value
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
CN2011800305540A
Other languages
English (en)
Other versions
CN102947804B (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 CN102947804A publication Critical patent/CN102947804A/zh
Application granted granted Critical
Publication of CN102947804B publication Critical patent/CN102947804B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种追踪单元,该追踪单元被配置为产生指示数据处理单元的处理活动的追踪数据的项目。该追踪单元包括追踪索引单元,该追踪索引单元被配置为将索引值与由该追踪单元产生的追踪数据的项目的至少一个子集相关联。该追踪索引单元被配置为产生作为索引值的预定序列中的一个的每个索引值,其中该预定序列中的第n+1索引值仅可从在该预定序列中的第n索引值确定。

Description

当追踪数据处理系统时的键配置
技术领域
本发明涉及监视数据处理单元的活动,具体地,涉及产生指示该数据处理单元的处理活动的追踪数据的项目。
背景技术
现代数据处理设备(如微处理器)的复杂性意味着将这种数据处理设备的操作的编程和调试是复杂和耗时的任务。因此,对于寻求正确地配置数据处理设备的程序设计师,极有用的是当数据处理设备实行其处理活动时能监视其操作,以确认操作如需求地实行且当问题发生时加以排除。
监视数据处理设备的处理活动的这种需求必须相对于现代数据处理设备通常经配置成为极小规模装置(例如芯片上系统(SoC))的知识来平衡。已知这种装置中的空间限制是其构造中的极重要因素,并且因此,将监视组件加入这种装置中的机会受到极大限制。同样地,在SoC周边的管脚也有代价,这限制可从SoC输出用于外部分析的诊断数据的数量。
由于这些原因,已知提供与这种数据处理设备相关联的追踪单元,追踪单元被配置为监视数据处理设备的处理活动并产生指示处理活动的序列追踪数据项。具体地,为了减少必须转移的数据的带宽,已知是以高度压缩形式来提供追踪数据的项目,省略任何冗余信息并仅包括用于目前分析目的的严格必要的数据。美国专利第7,707,394号提出用于减少指令追踪期间产生的数据流大小的一些技术。
如果数据处理设备能进行可推测指令执行,则与追踪数据处理设备的活动相关联的困难将更突显。已知由于机会而提供推测指令执行,此技术例如通过避免管道平台被闲置提供更快速的操作。然而,推测指令执行使追踪单元具有困难,因为直至解决该推测(即,已知给定指令是否实际上已确定),追踪单元不能提供明确地指示数据处理设备的操作的追踪数据流。一种可能性是使追踪单元缓冲其产生的追踪数据直至解决推测,但如果处理器的推测深度过大,此技术需要的缓冲器空间可能变成不符合需求的大。替代技术还推测地产生追踪数据,且接着如果随后发现其对应的指令是误推测则取消追踪数据的某些项目。例如,Nexus协议(“The Nexus5001 Forum-Standard for a Global Embedded Processor Debug Interface”,IEEE-ISTO 5001-2003,2003年12月23日)支持取消追踪数据项的特定数目。
然而,即使数据处理设备特定地指示追踪单元哪些指令(或更典型地成群组的指令)应被取消,但识别对应于经取消指令的追踪数据的项目并不直接。成群组的指令是典型推测执行,因为仅一些指令可导致程序流中的改变,且因此如果其中该群组中任何指令被执行则可识别成群组的指令,接着整个群组将被执行。
仅产生用于选定指令的追踪数据的追踪技术会产生特定问题,因为此可使追踪数据的对应取消项目的产生困难,因为如果(例如)数据处理设备指示最近的两指令群组应被取消,则追踪单元不能仅指示下游分析单元追踪数据的该两项目应被取消,因为在成群组的指令及所产生追踪数据的项目的数目间没有此直接相关性。
关联后续识别追踪数据的特定项目的困难的另一问题产生于资料转移的背景中。由于加载或储存操作可能花许多循环来完成,当(例如)执行加载指令且产生追踪数据的对应项目时,在已从内存撷取到所请求数据值之前,难以识别数据值应联结的追踪数据的对应项目(许多循环之前产生)。如果处理器可脱离程序顺序执行指令或施行数据转移,则追踪单元也许没有方法来识别哪些数据值属于哪些数据地址。
关于追踪无序处理器的一些背景技术信息可在2005年7月4的“ThePD Trace Interface and Trace Control Block Specification”中找到(其可自http://www.mips.com/products/product-materials/processor/mips-architecture/获得)及在ARM ETMv3架构(自http://infocenter.arm.com获得)中找到。
因而将会需求提供一种用于产生追踪数据的项目的改良技术,该改良技术将会允许追踪单元克服上述问题。
发明内容
本发明的第一方面提供一种追踪单元,该追踪单元被配置为产生指示数据处理单元的处理活动的追踪数据的项目,该追踪单元包括:追踪索引单元,该追踪索引单元被配置为关联索引值与由该追踪单元产生的追踪数据的项目的至少一个子集。该追踪索引单元被配置为产生该索引值成为索引值的预定序列的一个,其中该预定序列中的第n+1索引值可仅从在该预定序列中的第n索引值确定。
根据本发明的技术,该追踪单元包括追踪索引单元,该追踪索引单元被配置为关联索引值与由该追踪单元产生的追踪数据的项目的至少一个子集。具体地,索引值是根据索引值的预定序列由该追踪索引单元产生,使得该预定序列中的第n+1索引值可仅从在该预定序列的第n索引值确定。就追踪数据的项目的产生而言,这种索引值与追踪数据的至少一些项目的关联是有利,因为此举允许追踪单元将其产生的追踪数据的至少一些项目「加标」,因此后续可引用追踪数据的特定项目。此举例如当寻求后续由于误推测而取消追踪数据的特定项目时具有特定益处。或者当寻求使数据值与产生用于数据转移指令的追踪数据的项目的关联(该关联可能花费长时间来完成)时具有益处。通过依此方式索引追踪数据的项目,可造成后续对追踪数据的特定项目的引用。另外,通过能从该预定序列中的第n索引值确定该预定序列中的第n+1索引值,可暗指大部分索引,而大体上无须显示地追踪。可因此节省追踪单元内的可贵的空间,且可造成相当节省追踪数据带宽。
虽然可能有提供索引值的预定序列的一些方法,在具体实施例中该追踪单元包括计数器,该计数器被配置为提供索引值的该预定序列。计数器可相对地容易在该追踪单元的硬件中实施且由计数器产生的索引值的预定序列(典型是渐增序列)有利地易于管理。
存在其中该追踪单元能使用关联追踪数据的一些项目的索引值的每个种方法,但在具体实施例中该追踪单元包括索引储存单元,该索引储存单元被配置为储存至少该索引值。提供索引储存单元允许该追踪单元保持至少一个索引值的记录,使得该追踪单元的后续操作可引用该储存值且因此与该储存值关联的追踪数据的项目。
在一些具体实施例中,该追踪单元包括索引储存单元,该索引储存单元被配置为储存两索引值的间的差值。此提供有利的紧凑储存机制,通过该机制(例如)可储存索引值的范围。在具体实施例中,此索引储存单元可是FIFO装置。FIFO装置呈现其中可储存值的序列的简单结构。
该追踪单元经组态所监视的数据处理单元能采取一些形式,然而在具体实施例中,该数据处理单元的处理活动包括推测指令执行且该至少一个索引值是与至少一个推测执行指令关联。指令的推测执行可将困难呈现给追踪单元,因为如果推测执行指令后续通过数据处理单元指示已被误推测,则可能需求追踪单元将此事实向其追踪数据的接受者表明。通过具有索引储存单元(其中可能储存与推测执行指令关联的索引值),追踪单元是具有机制,通过该机制可保持对该推测指令的引用甚至在其已产生追踪数据的对应项目一段时间后。
在一些具体实施例中,该索引储存单元被配置为储存该至少一个索引值,直至该至少一个推测执行指令已被确定或取消。因此该索引储存单元将接着保持对应于推测执行指令的索引值直至已知该推测执行指令的结果,即该指令是否正确地推测执行(并且是“经确定”),或误推测(并且是“经取消”)。在索引储存单元中储存对应索引值致使该追踪单元后续引用该指令且因此引用关联其所产生的任何追踪数据。
指令的推测执行可包括个别指令的推测执行,但在一些具体实施例中,该推测执行指令形成指令群组的部分,其中该指令群组的第一指令的推测执行使该群组指令的所有指令的推测执行成为必要。
在群组内推测地执行指令是实际的,因为仅一些指令(如,分支)造成从顺序指令执行的可能偏离且如果先前的指令被执行时则其他指令(如,ADD指令)确定被执行。由于此原因,被配置为施行推测指令执行的数据处理单元典型将推测执行已知形成这种不可分割群组的指令群组。
在一些具体实施例中,该索引储存单元包括第一索引储存单元,该第一索引储存单元被配置为储存关联该指令群组内的第一指令的第一索引值。在产生对应于经推测执行的指令群组的追踪数据中,有利的是储存关联该指令群组中的第一指令的第一索引值,因为此定义该指令群组的开始。
虽然该第一索引储存单元可能仅储存单一项,但在具体实施例中该第一索引储存单元包括第一多个项且被配置为取决于指示该指令群组的指示符而储存该第一索引值。因而,该第一索引储存单元可在对应于指示该指令群组的指示符的一项中储存第一索引值,使得后续引用该指令群组可允许从第一索引储存单元撷取该对应第一索引值。
给定该数据处理单元能推测执行一些指令群组,有利的是如果该追踪单元能追踪对应于群组的每个群组的索引值,及因此在具体实施例中该第一多个项的数目对应于可由该数据处理单元推测执行的指令群组的至少一个最大数目。
当然推测指令执行有时不正确且在一些具体实施例中该追踪单元被配置为从该数据处理单元接收取消指示,该取消指示会指示已经推测执行的选定指令群组已被取消,且该追踪单元被配置为产生指示该选定指令群组的追踪数据的取消项目。因此,当该数据处理单元指示应该取消选定指令群组时,该追踪单元被配置为通过产生追踪数据的对应取消项目以将此信息传送至其追踪数据的接受者。
具体地,在具体实施例中,该追踪单元被配置为当接受该取消指示时,取决于第一索引值产生追踪数据的该取消项目,该第一索引值储存在该第一索引储存单元中及关联该选定指令群组。在第一索引储存单元中储存的第一索引值关联该指令群组内的第一指令,且因此引用此第一索引值致使该追踪单元提供由于选定指令群组的取消而应被取消的追踪数据的第一项目的指示。追踪数据的此第一项目可为待取消的如果干项目的第一者,或可为待取消的追踪数据的特定项目。
在一些具体实施例中,该追踪单元包括计数器,该计数器被配置为提供索引值的该预定序列且该追踪单元被配置为进一步取决于该计数器的目前计数器值产生追踪数据的该取消项目。因为该追踪单元被配置为使用计数器来产生索引值的序列,引用计数器的目前计数器值提供对追踪数据的最近项目的引用。因此通过取决于第一索引值及目前计数器值两者产生追踪数据的取消项目,该追踪单元能指示其追踪数据的接受者,在追踪数据项的该序列中在何处应该开始取消以及在何处其应该结束。
在一些具体实施例中,该索引储存单元包括最后索引储存单元,该最后索引储存单元被配置为储存关联该指令群组内的最后指令的最后索引值。在产生对应于的推测执行的指令群组的追踪数据中,有利的是储存关联该群组指令中的最后指令的最后索引值,因为此定义该群组指令的结束。
虽然该最后索引储存单元可能仅储存单一项,在具体实施例中,该最后索引储存单元包括第二多个项及被配置为取决于指示该群组指令的指示符储存该最后索引值。因而,该最后索引储存单元可在对应于指示该群组指令的指示符的一项中储存最后索引值,使得后续引用该群组指令可允许对应的最后索引值从第二索引储存单元撷取。
假设该数据处理单元能推测执行一些指令群组,有利的是如果该追踪单元能追踪对应于群组的每个群组的索引值,及因此在具体实施例中,该第二多个项的数目对应于可由该数据处理单元推测执行的指令群组的至少一个最大数目。
推测指令执行的实施是因为有许多其中可精确(统计上)预测程序流的情况。一旦明确地得知指令的推测执行是正确,则该指令是“经确定”且在一些具体实施例,该追踪单元是组态以从该数据处理单元接收确定指示,该确定指示指示已经推测执行的选定指令群组已经确定,及该追踪单元是组态以产生指示该选定指令群组的追踪数据的确定项目。因此,当该数据处理单元指示选定指令群组经确定时,该追踪单元被配置为通过产生追踪数据的对应确定项目将此信息传送至其追踪数据的接受者。
尤其是在具体实施例中,该追踪单元被配置为当接收该确定指示时取决于在该最后索引储存单元中储存及关联该选定指令群组的最后索引值产生追踪数据的该确定项目。在最后索引储存单元中储存的最后索引值关联该指令群组内的最后指令,且因此引用此最后索引值致使追踪单元能够提供由于确定该选定指令群组而是明确正确的追踪数据的最后项目的指示。追踪数据的此最后项目能提供确定的一些项目的结束点,或可以是待确定的特定项目。
在一些具体实施例中,该追踪单元包括计数器,该计数器被配置为提供索引值的该预定序列及未确定的储存单元,该追踪单元被配置为当产生追踪的该确定项目后,在该未确定储存单元中储存该计数器的目前计数器值。因此,在当指令群组被确定时刻,该追踪单元可记录目前计数器值,指示未确定指令开始处的点。
在一些具体实施例中,该追踪单元是被配置为取决于在该未确定储存单元中储存的值产生追踪的该确定项目。由于该未确定储存单元从当追踪的确定项目最后产生的时刻,通过取决于在该最后索引储存单元中储存的值两者产生追踪数据的确定项目,来储存目前计数器值,追踪单元是能向其追踪数据的接受者指示在追踪数据项的序列中该确定应开始的处及该确定应结束的处。
在一些具体实施例中,该索引储存单元包括第一索引储存单元,该第一索引储存单元被配置为储存关联该指令群组内的第一指令的第一索引值,该索引储存单元包括最后索引储存单元,该最后索引储存单元被配置为储存关联该群组指令中的最后指令的最后索引值,且该最后索引值以与该第一索引值相关的格式储存。
在指令群组中的指令数目方面的限制(该限制继而在该群组指令中的第一指令及最后指令的间赋予指令数目的限制)可意指可通过以与第一索引值相关的格式储存最后索引值来获得有利的储存效率,例如作为自第一索引值的偏移。应了解此相对格式能采取一些形式,但在具体实施例中,与该第一索引值相关的该格式是2位数据格式。替代具体实施例可取决于在所关注的群组中的指令数目于数据格式中使用1位数据格式或多于2位。
在一些具体实施例中,该追踪单元包括推测深度计数器,该推测深度计数器被配置为指示由该数据处理单元执行的指令的目前推测深度。推测深度计数器的提供致使该追踪单元能够追踪已推测执行且因此可能需要取消或确定的指令数目。当确定或取消推测执行指令时,此推测深度计数器可因此减量。
在一些具体实施例中,该追踪单元包括未决(pending)确定计数器,该未决确定计数器被配置为指示经未决输出的追踪数据的确定项目的目前数目。因此当追踪数据的确定项目发生时,追踪单元无须立即输出追踪数据的确定项目,而是可追踪一些这种未决项目。此更有益于追踪带宽的所需减少。
在一些具体实施例中,该追踪单元被配置为当接收到该确定指示而没有产生追踪数据的该确定项目时使该未决确定计数器增加。因此未决确定计数器减少追踪数据必须产生的频率,因为可保持未决确定的执行总数,当从数据处理单元接收确定指示而无须产生追踪数据的确定项目时使未决确定计数器增加。
在一些具体实施例中,该追踪单元被配置为当该推测深度计数器达到预定值时减少该未决确定计数器。例如,当推测深度计数器达到数据处理单元的已知最大推测深度时,推测深度计数器可推理确定必须取代最旧的推测执行指令。
在一些具体实施例中,当该推测深度计数器达到预定值时产生追踪数据的另一项目暗示该追踪单元已从该数据处理单元接收到另一确定指示。例如,当推测深度计数器达到数据处理单元的已知最大推测深度时,如果接收到追踪数据的另一项目,可由追踪数据的接受者推理出最旧推测执行指令的确定。追踪数据的接受者典型地将经配置以还追踪数据处理单元的推测深度以实现此推理。
在一些具体实施例中,该追踪单元被配置为响应于预定事件来将值的该预定序列的该索引值重设至预定值。例如,可能需求使追踪数据的另外项目与相同索引值关联,且此可仅通过重设索引序列而达到。
在一些具体实施例中,该追踪单元被配置为产生值的该预定序列成为值的回路序列。这为产生无限序列提供合适的机制。
可以一些方法组态该追踪单元,但在具体实施例中,该追踪单元被配置为对于该数据处理单元所响应的至少一个指令类型不产生追踪数据的项目。特定指令对经产生追踪数据的接受者可能比其他指令具有更多关注,且因此可由不关注的追踪数据省略某些类型的指令而节省可贵的追踪带宽。
在一些具体实施例中,该索引储存单元被配置为选择性地储存进行中的(in-flight)指示符,该进行中的指示符指示索引值的该预定序列的储存索引值目前正使用中。虽然可选择索引值的预定序列使得可能发生索引值的再使用而无歧义,但可能有其中某些索引值保持与特定追踪项目关联得更长久的示例。进行中的指示符提供机制以识别哪些索引值应以此方式处置。
在一些具体实施例中,该追踪单元被配置为当产生下一索引值时,引用该进行中的指示符,及如果该进行中的指示符指示该下一索引值仍处于使用中时,储存替代索引值以代替该下一索引值。储存替代索引值避免再使用仍处于使用中的索引值。
该数据处理单元的处理活动可变化,但在具体实施例中,该数据处理单元的处理活动包括使用数据地址引用储存数据值且该索引值是与该至少一个数据地址关联的数据地址索引值。当与由追踪单元追踪的指令的时间标度比较时,使用数据地址引用储存数据值可花费明显时间量。例如,当指令使数据处理单元通过引用数据值的数据地址从内存加载数据值时,直至多个时钟循环后该数据值才能返回数据处理单元。在此情况下,由开联加载指令的追踪单元产生的追踪数据的项目可能在数据值返回数据处理单元之前已产生一段长时间。在此情节下,使用数据地址索引值是有利的,因为此举提供一种机制,通过该机制关联引用储存数据值的数据地址的追踪数据的特定项目后续可被识别,例如一旦该引用程序已完成则可识别。
在一些具体实施例中,对该储存数据值的该引用包括加载该储存数据值且在其他具体实施例中对该储存数据值的该引用包括储存该储存数据值。加载及储存数据值两者需要如上述可能花费长时间的内存存取。
在一些具体实施例中,该追踪单元被配置为在数据地址索引值储存表中储存该数据地址索引值。数据地址索引值储存表的提供致使该数据追踪单元能够储存数据地址索引值直至以后需要对其引用,例如当完成与引用该值关联的载入或储存操作。
如上述,存在某些指令,追踪数据的产生项目可与该某些指令关联且可能花费明显时间量以完成该某些指令的操作。这种指令可因此可与其他指令区分,该其他指令经追踪则在该指令被认为完成前没有另外事件必须发生。等待此事件完成的状态称为“进行中的(in-flight)”及在一些具体实施例中,该追踪单元被配置为选择性地储存进行中的指示符,该进行中的指示符指示对关联该数据地址索引值的该储存数据值的引用尚未完成及该数据地址索引值在进行中的。组态该追踪单元以依此方式储存进行中的指示符提供机制,该追踪单元可通过该机制追踪关联尚未完成操作的数据地址索引值。
在这种具体实施例中,该追踪单元被配置为当产生下一数据地址索引值时,引用储存进行中的指示符,及如果该储存进行中的指示符指示该下一数据地址索引值仍处于进行中的时,储存替代数据地址索引值以代替该下一数据地址索引值。
由于空间限制的原因,该追踪单元将典型地具有追踪单元可产生的数据地址索引值的明确及有限范围。因此,当遭遇花费长时间来完成的指令时,使用关联该指令的数据地址索引值可能需要达到长时期,该时期会比其中追踪单元循环通过全组数据地址索引值时可用的时期更长。因此,该追踪单元可能经过仍进行中的(即应尚未被再使用)的数据地址索引值,并且,在此情况下,该追踪单元是组态以不仅使用预定序列中的下一数据地址索引值,而且在其位置中储存替代数据地址索引值。通过此方法,受限并明确的数据地址索引值组大体上可由追踪单元使用,但仍可适应其中数据地址索引值需要使用比数据地址索引值的自然循环更长时期的偶然情况。
替代数据地址索引值能采取一些形式,但在具体实施例中,该替代数据地址索引值包括数据处理单元索引值,其中由该数据处理单元用该数据处理单元索引值来引用该数据地址。数据处理单元本身典型还将具有其用来引用这种数据地址的索引系统,以致即使当(在处理器循环方面)在造成引用该数据地址及数据值返回间的相当大延迟时,数据处理单元还可使数据值与数据地址关联。在此情况下,对应数据处理单元索引值(有时称为“核心键”可由追踪单元用作替代数据地址索引值。然而,对应数据处理单元索引值本身无须用作替代数据地址索引值的“核心键”(“特殊键”),且在具体实施例,该替代数据地址索引值具有与数据处理单元索引值的一对一对应,其中是由该数据处理单元使用该数据处理单元索引值来引用该数据地址。
当该进行中的指示符由追踪单元储存时,在一些具体实施例中,该进行中的指示符与该数据地址索引值相关联的储存,而在其他具体实施例中,该进行中的指示符与该数据处理单元索引值相关联的储存。
当该追踪单元使用替代数据地址索引值时,在一些具体实施例中,该追踪单元被配置为产生指示该替代数据地址索引值的追踪数据的项目。虽然由追踪单元产生的索引值的预定的序列大体上允许追踪数据的给定项目的索引从该追踪数据的以前项目的索引值推理出,但当使用替代数据地址索引值时并非如此情况。就追踪单元而言有利的是产生指示替代数据地址索引值的追踪数据的项目,使得追踪数据的接受者可确定此“一次性(one-off)”的特殊索引值。
替代数据地址索引值及数据地址索引值可根据不同协议编码,但在具体实施例中,该替代数据地址索引值及该下一次数据地址索引值共享编码协议。例如,能为数据地址索引值保留该协议内的预定范围,而为替代数据地址索引值保留其余部分。
在一些具体实施例中,该追踪单元被配置为自有关初始指令群组及后续指令群组的该数据处理单元接收合并指示,其中如果该数据处理单元确定如果执行该初始指令群组而将执行该后续指令群组时该数据处理单元发出该合并指令,并且因此,该初始指令群组及该后续指令群组是合并的指令群组,并且,其中该追踪单元是被配置为取决于该合并指示组态以修改关联该合并指令群组的该索引储存单元中的至少一个合并索引值。
在处置用于推测执行的指令群组的数据处理单元中,构成群组的定义典型通过指令(例如分支指令)确定,数据处理单元尚未得知将解决该分支的方法。然而,可能此分支将会采取的方向事先加以解决,例如如果“如果相等则分支”指令所依据的值经确定且已知在执行该分支指令前此值将不改变。如果此指令定义两指令群组的间的边界,则在此情况中,可将两指令群组合并,因为第一群组的执行后必然跟随有第二群组的执行。当数据处理单元发出此合并指示时追踪单元则可修改储存在索引储存单元中的索引值,该索引储存单元与现已合并的两指令群组关联。例如,如果第一与最后索引值是先前在与第一及第二指令群组关联的索引储存单元中储存,当该两指令群组合并时,可修改索引储存单元中的值以用从第一群组取得的第一索引值及从第二群组取得的最后索引值指示单一指令群组。
在一些具体实施例中,该追踪单元被配置为产生追踪数据的合并项目,追踪数据的该合并项目指示该初始指令群组及该后续指令群组已经合并。在此情况下,追踪单元可被配置为产生追踪数据的合并项目以对追踪数据的接受者指示该两指令群组已经合并及处置为单一指令群组。
本发明的第二方面提供一种追踪单元,该追踪单元组态以产生指示数据处理单元的处理活动的追踪数据的项目,该追踪单元包括:追踪索引部件,该追踪索引部件用于关联索引值与由该追踪单元产生的追踪数据的项目的至少一个子集。该追踪索引部件被配置为产生该索引值成为索引值的预定序列的一个,其中该预定序列中的第n+1索引值可仅从在该预定序列的第n索引值确定。
本发明的第三方面提供一种方法,该方法产生指示数据处理单元的处理活动的追踪数据的项目,该方法包括以下步骤:产生追踪数据的项目;关联索引值与由追踪数据的产生项目的至少一个子集;产生该索引值成为索引值的预定序列的一个,其中该预定序列中的第n+1索引值可仅从在该预定序列的第n索引值确定。
附图说明
本发明的以上及其他目的、特征及优点可将会从以下结合附图阅读的说明性具体实施例的详述中了解。
图1示意性地示出了根据一个实施例的数据处理单元及关联追踪单元;
图2示意性地示出了图1的追踪单元的更多细节;
图3示出了由根据一个实施例的追踪单元采取的是列步骤;
图4示意性地示出了图1的追踪单元的替代配置;
图5说明根据一个实施例的顺序键和特殊键的使用;
图6示意性地示出了根据一个实施例的索引储存单元;
图7示意性地示出了根据一个实施例的索引储存单元;
图8示意性地示出了由根据一个实施例的追踪单元采取的序列步骤;以及
图9说明16键的协议空间分成12个顺序键和4个特殊键。
具体实施方式
图1示意性地示出了包括根据本发明的追踪单元的数据处理系统。数据处理系统包括处理器核心100(数据处理单元)及追踪单元110,追踪单元110被配置为监视处理器核心100的处理活动及产生指示核心的处理活动的追踪数据的项目(作为追踪流)。处理器核心100包括提取单元120及执行单元130。提取单元120从内存(未示出)提取指令及将指令传给执行单元130用于执行。尤其是处理器核心中100是推测及无序处理器,及因此提取单元120被配置为执行单元130提取经预测(尽管未保证)将需要的指令。执行单元130将推测地执行这种指令,后续当执行单元130已知事实上是否应执行该推测地执行指令时取消或确定指令。
追踪单元110被配置为产生指示处理器核心100的处理活动的追踪数据的项目,包括指令的推测执行。虽然原则上追踪单元110可缓冲关联推测地执行指令所产生的追踪数据的项目,且仅在一旦解决该推测后将项目释放作为输出追踪流,但此需要在追踪单元110中较佳是避免的可贵的储存空间。取而代的在图1说明的具体实施例中,追踪单元110被配置为还推测地产生追踪数据,即产生指示推测地执行指令的追踪数据的项目,并且然后,一旦已知是否推测正确而将追踪数据的项目取消/确定。为了如此,此追踪单元110更设有追踪索引单元140。索引单元140被配置为将索引值与由追踪单元110产生的追踪数据的项目的至少一个子集关联。具体地,追踪单元140被配置为产生索引值成为索引值的预定序列,其中第n+1索引值可从在该预定序列的第n索引值确定。在所示的具体实施例中,此功能是通过索引单元140中的计数器提供,如将参考图2进一步描述。
图2更详细地概要说明图1显示的追踪单元110。追踪单元110包括追踪控制单元200,该追踪控制单元200控制追踪单元110的总体操作。追踪单元110还包括计数器210,计数器210提供追踪单元110可关联其产生的追踪数据的(一些)项目的索引值的预定序列。追踪单元110还包括索引储存单元220,其中可储存由计数器210产生的索引值。索引储存单元220包括第一索引储存单元230及最后索引储存单元240。对于推测地执行的指令群组内的第一指令,追踪单元110被配置为将来自计数器210的目前计数器值储存进入至由群组数目索引的第一索引储存单元内。相反地,当开始新群组时,目前计数器值在最后索引储存单元240中储存。
在所示的具体实施例中,索引储存单元220具有足够项以针对指令群组对应于处理器的最大推测深度。处理器的最大推测深度表示索引储存单元可能必须保持的项的最大数目,因为超出该深度处理器必须确定或取消指令群组,该操作将清空索引储存单元中的一项。另外,在所示的具体实施例中,由处理器推测地执行的每个指令群组可具有最大的分支指令及加载(或储存)指令。由于所有其他指令可从包括这种指令的指示的追踪流推理出,故每一指令群组将产生最大的两指令追踪项目。此对于索引储存单元220中的给定项具有进一步的结果,最后索引储存单元240中的值可能至多2计数,该值不同于第一索引储存单元230中的值。通过将最后索引值储存成为自第一索引值的2位偏移(即,+0、+1或+2),因而节省可贵的储存空间。追踪单元更包括最旧未确定储存单元250,下文将解释最旧未确定储存单元250的功能。追踪单元110的变动包括下文还描述的虚线方块252及254。
由追踪单元110实行的是列步骤在图3中示意性地示出了。流程在步骤300处开始,在该处等待来自处理器核心100的新事件,流程本身在步骤300处形成回路直至接收到事件。当接收到新事件时(即,由核心执行下一指令),流程前进至步骤310,在该处确定该事件是否是新指令群组的部分。如果是,则流程前进至步骤320,在该处索引储存单元220(“表”)的第一索引储存单元230中的项会用在对应于新的群组数字K的该项处的目前计数器值更新。接着,在步骤330处确定此事件是否是“感兴趣”且经追踪两者。“感兴趣”指令是分支、加载及储存指令(由于如上述原因,这种是针对追踪一群组指令的键指令)。如果指令目前未通过追踪单元过滤掉则加以追踪。如果事件(即,指令)是感兴趣的和经追踪两者则流程前进至步骤340,在该处计数器210增加且在步骤350处事件于追踪单元110的追踪流内输出。在步骤360处,对应于群组K的最后索引储存单元240的项用计数器210的目前值更新。此时流程回至步骤300。
追踪单元110的操作,并且,具体地,索引储存单元(还称作“追踪表”)220的操作现参考下表1描述。表1显示在当处理器核心100推测地执行指令群组A、B及C 且后续指示该群组B应被取消及群组A应被确定的情况下,计数器值、最旧未确定值、及追踪表如何在追踪单元110中更新。
群组A用加载(LDR)指令开始,该指令是“感兴趣”及目前被追踪。因此,对应于群组A的第一索引单元230的项(“A.first”)储存0的目前计数器值且接着使计数器增加至1。最后,对应于群组A的最后索引单元240的项(“A.last”)储存1的目前计数器值。群组A内的下一指令是既非“感兴趣”还非追踪的移动指令(MOV)。群组A的最后指令是如果相等则分支(BEQ)指令,该指令是“感兴趣”及经追踪两者,所以计数器增加至2。对应于群组A的最后索引单元240的项(“A.last”)然后用2的目前计数器值更新。应注意到事实上每个指令的最后步骤始终是用于对应于待用目前计数器值更新的目前群组的最后索引单元240的项。当然仅当计数器已针对该指令更新时此才具有任何效果。依此方法,“last”值的更新未在表1中显示的剩余指令中明确地描述。
群组B从非“感兴趣”还非追踪的ADD指令开始,但如新群组内的第一指令使目前计数器值2储存在第一索引值储存单元的对应项中(即,B.first=2)。群组B内的第二指令是SUB指令,该指令同样既非“感兴趣”还非追踪且不更新任何值。
群组C用是“感兴趣”及经追踪两者的储存(STR)指令开始,因此目前计数器值储存在第一索引储存单元的C.first项中且使计数器接着增加至3。群组C内的第二指令是还“感兴趣”及经追踪的如果不相等则分支(BNE)指令,所以计数器更新至4。
其次,处理器核心100指示群组B的推测执行为不正确,且因此应该取消群组B及C。响应中,追踪单元110(由追踪控制单元200控制)引用计数器210的目前计数值(其目前是4),及储存在第一索引储存单元230的对应项(即,B.first)中是2的值。追踪单元110因此确定应该取消追踪数据的两项目(4-2)且产生指示此事实的追踪数据的项目。计数器210接着重设至2(因为计数器先前是4且2项目已被取消)。
接着,处理器核心100指示指令群组A应被确定,因为处理器核心100已确定此指令群组的推测执行是正确。响应中,追踪单元中110(在追踪控制单元200的控制中)引用储存在最旧未确定储存单元250的值(目前0)及在最后索引储存单元240中对应于此群组且是2的项(即,A.last)。追踪单元110因此确定应确定追踪数据的两项目(2-0),及产生指示此事实的追踪数据示的项目。接着最旧未确定储存单元250中储存的值重设至“last”值,该值被读取用于此群组,即此示例中为2。
在关于表1描述的具体实施例中,应注意到取消及确定是通过引用一些事件来施行,其中追踪数据的所产生项目指示应取消或确定的事件的数目。在替代具体实施例中,追踪单元可产生引用事件数目的追踪的取消/确定项目。当此是该情况时,对于追踪的取消项目,事件数目将从“first”值取得,即第一索引值储存单元的对应项,及对于追踪的确定项目,事件数目是从“last”值取得,即最后索引值储存单中的对应项。应注意虽然可能出现通过事件数目来确定及取消将需要较少硬件(因为无须相减),但应注意当通过事件的数目指示确定/取消时此时常可被压缩,因为其大体上将具有前导的零。是否通过“事件的数目”或“事件数目”以确定/取消的选择可根据系统需求确定,即是否追踪单元中的较少硬件或追踪流中较少带宽被认为更重要。
Figure BDA00002625112400171
Figure BDA00002625112400181
表1.推测执行期间的索引储存单元值
现参考下表2讨论另一示例,其中在通过不追踪储存(STR)指令的示例中追踪单元进一步过滤所产生的追踪。表2中给定用于群组A及B的值是与表1中给定的值相同。然而,对于群组C的第一指令未追踪STR指令,所以计数没增加。因此,仅当遭遇群组C内的BNE指令(经追踪)时计数是增加至3。
因此,当处理器核心发出“取消B”讯息时,追踪单元110确定目前计数是3,B.first是2(如表1示例中),且因此仅追踪的项目(3-2)应取消。同样地,计数只减少(成为2的值)。当处理器核心发出“确定A”讯息时(如在表1中),则最旧未确定计数是0,A.last=2且因此确定追踪的两项目。接着最旧未确定计数更新成2。
Figure BDA00002625112400182
表2.具有过滤追踪的推测执行期间的索引储存单元值
虽然参考表1和2讨论的每个群组指令仍可作为不同群组,但每个群组指令可推测地执行为群组,且接着确定或取消成为群组,在一些具体实施例中,两指令群组在执行后可一起合并。
Figure BDA00002625112400201
Figure BDA00002625112400211
表3.具有合并的推测执行期间的索引储存单元值
表3显示如何将索引储存单元(“追踪表”)220中的值用于此情况中。在此示例中,群组B内的BNE指令是在群组A内的LDR指令前解决。于此情况下,处理器核心100指示此事实,处理器核心100指令追踪单元将群组B并入群组A。此通过复制B.last的值进入至A.last来进行。换言的,与群组A对应的该组追踪值增加(由于BNE指令的追踪项目现形成该组追踪项目的部分,该组追踪项目现将必然跟随形成群组A的开始的LDR指令的成功执行)。一旦已施行此合并,群组标签B接着可用于再使用及被采取作为在群组C后的下一指令群组的标签。在此新群组B内(其中执行MOV和BLT),仅追踪BLT。
在更简单的实施例中,可将索引储存单元配置作为FIFO单元。此在图4中示意性地示出了,其中追踪单元110包括以FIFO 260形式的追踪索引单元。此简化配置的优点是无须将完全索引值储存在索引储存单元260的每个项中。
当由追踪单元110接收到群组时,群组被增加至FIFO260的末尾。然后,当确定群组时,群组被从FIFO的前面移走,而当群组被取消时,群组从FIFO的末尾取得。FIFO中的每个项含有指示在该群组内的关注指令的数目的小标识符。在说明性示例中,最多2个关注指令可在任何群组内,标识符是指示0、1或2的2位字段。由于从FIFO(依确定或取消)取得每个项,待确定或取消的追踪事件的数目仅是通过FIFO中的该项内的标识符所表示的数目。如果确定或取消多个群组,则标识符从移除的FIFO项相加。
现描述还在图2(虚线方块)中显示的追踪单元110的配置变化。在任何给定时间,将有未被确定或取消的推测追踪数据项的数目。此数目在零至处理器的最大推测深度的范围中。还应注意通常无须立即将确定追踪数据输出。可以延迟确定,通过将确定计数相加在一起来组合确定,或分开确定,只要确定计数输出绝不超过由处理器产生的计数。
可用这种因子来产生系统,其中确定是暗指而非于追踪流中显示地输出,此举进一步改进追踪效率。与立即输出不同的是保持总数(在“确定尚未输出”储存单元252中)指示尚未输出的确定计数的总数。第二计数保持(在“推测深度”储存单元254中)推测追踪数据项的目前数目。当追踪数据项输出时,推测深度增加一。当确定计数是输出时,推测深度减少该确定数目。当取消计数是输出时,推测深度减少该取消数目。
随着更多追踪数据项输出,推测深度将达到最大推测深度。当此发生时意味着具有计数=1的确定。同时推测深度减少一。总确定计数还减少一。
如果追踪单元经指令停止产生追踪数据则追踪单元可被配置为执行以下任一步骤:
(1)输出目前待决总确定计数并立即输出任何随后确定计数;或
(2)等待直至所有追踪数据都已确定或取消且然后输出该总确定计数。
本发明的技术还找到用于无序处理器的特定应用性,尤其在数据值及数据地址的背景中。在无序处理器中追踪数据(与指令相反)必须应付额外的复杂性,即无序处理器将会以不同于数据地址的次序产生或接收数据值。由本发明提供的追踪数据的项目的索引允许数据值与其数据地址匹配。然而,伴随追踪数据值及地址的另一困难是虽然可对于数据地址可相对于其上代指令延迟多久方面施加极限,此就相对于其上代数据地址的数据值而言不实际。例如,读取可花费上百循环来完成,且当时可能已经执行任何数目的指令(只要无这种指令需要该读取值)。
根据本发明的技术,追踪单元中的追踪索引单元将索引值与数据地址关联,使得可引用这种数据地址。图5中,这种索引值是在数目的较低行中的“数据地址键”。可看到这种键大体上为顺序且进一步见到键在达到7的值以后缠绕(wrap-around)至0。大体上关联数据值在该键后短暂可用,且因此当数据键的序列缠绕时,可再使用键而没有冲突。然而,如果数据转移花费长时间来完成,则追踪键在其已被释放前可被再使用。此在图5中由数据地址键数字1说明,即未接收到对应数据值达到不寻常的长时间。因此,在数据地址键1应被用于图5中的第二时间之前,数据地址键1仍在“进行中的”且因此不可使用。取而代的的是,追踪单元被配置为使用特殊键(键A)而非顺序键1。在此具体实施例中,此特殊键A事实上是处理器100用以在等待数据值返回时追踪此数据地址的核心键。在其他具体实施例中,特殊键可从不同“字母”导出,只要该字母具有与核心键的一对一对应。图5还说明一些顺序键如果由处理器明确地去除则其可能没有对应数据值(如,顺序键3的第一示例)。应注意的是无须检查特殊键是否是进行中的,因为特殊键由于在核心中关于如何使用核心键的规则而在进行中的时无法再使用(核心键还必须被唯一地使用)。
图6示意性地示出了键追踪表的具体实施例,其中由核心键引用数据地址键。在此,由处理器核心使用核心键β来索引三个数据地址,该三个数据地址是贡献于顺序键D1、D2及D3。下一数据地址由核心键β使用,追踪单元识别下一顺序键(即D4)仍由核心键α使用中且因此将核心键β本身用作目前数据地址的索引键。追踪单元通过引用关联的进行中的储存单元来识别该顺序键D4仍使用中,该储存单元中关联顺序索引键D4的旗标组指示其仍进行中的。
图7中说明替代实施例,图中该进行中的指示符由核心键储存。此配置需要当使用顺序键(D1、D2等等)时在键追踪表中施行完全关联查找表。如果对于该顺序键找到匹配及设定对应核心键标志,则确定顺序键是在进行中的。
图8示意性地示出了在一个实施例中由追踪单元采取的一系列步骤。流程在步骤400处开始,在该处追踪单元从处理器核心接收新数据地址和关联核心键。然后,在步骤410处追踪单元计算下顺序键及在步骤420处,追踪单元确定在键追踪表中该键是否目前“进行中的”。如果否,则流程前进至步骤430且将下一顺序键加至键追踪表及流程返回至步骤400。然而,如果在步骤420确定下一顺序键目前是在进行中的,则取而代的在步骤440将特殊键加至键追踪表并在步骤450处特殊键的值在追踪流中输出。接着流程回至步骤400。应注意的是如果已使用特殊键以代替下一顺序键,则大体上较佳的是不立即在步骤410的下一重复上再尝试下一顺序键,因为如果已经发现特殊键在重复中使用,在下一重复中仍很有可能在使用中。
大体上应该认识到可用的顺序键越多,需要特殊键的可能越少。可能有任何数目的顺序键,但当有N核心键时,大体上适当的是在N至3N的范围。应注意的是顺序键无须用数据地址输出因为可预测顺序键的值,顺序键是由追踪单元产生的索引值的预定序列的一个。应该进一步注意到顺序键及特殊键能使用整体分离的协议编码,但在一些具体实施例中,只要没有重迭就能使用相同的协议编码。例如,在值0至15的范围中,顺序键能采用值0至11且特殊键能采用值12至15。追踪数据的接受者当然需要知道已经使用哪些规定。图9说明分成12顺序键及4特殊键的16键(0至15)的协议空间。
尽管已在此描述了具体实施例,但是,应意识到本发明并不限于此,并且,可在本发明的范围内做出许多修改和增加。例如,可做出以下从属权利要求的特征和独立权利要求的特征的各种组合,只要其不偏离本发明的范围即可。

Claims (49)

1.一种追踪单元,该追踪单元被配置为产生指示数据处理单元的处理活动的追踪数据的项目,该追踪单元包括:
追踪索引单元,该追踪索引单元被配置为关联索引值和由该追踪单元产生的追踪数据的项目的至少一个子集,
所述追踪索引单元被配置为产生作为索引值的预定序列中的一个的所述索引值,
其中所述预定序列中的第n+1索引值仅可从在所述预定序列中的第n索引值确定。
2.如权利要求1的追踪单元,其中所述追踪单元包括计数器,该计数器被配置为提供索引值的所述预定序列。
3.如权利要求1的追踪单元,其中所述追踪单元包括索引储存单元,该索引储存单元被配置为储存至少一个所述索引值。
4.如权利要求1的追踪单元,其中所述追踪单元包括索引储存单元,该索引储存单元被配置为储存两索引值的间的差值。
5.如权利要求4的追踪单元,其中该索引储存单元是FIFO装置。
6.如权利要求3的追踪单元,其中介于数据处理单元的处理活动包括推测指令执行并且,介于至少一个索引值是与至少一个推测执行指令相关联的。
7.如权利要求6的追踪单元,其中所述索引储存单元被配置为储存所述至少一个索引值,直至所述至少一个推测执行指令已被确定或取消。
8.如权利要求6的追踪单元,其中所述推测执行指令形成指令群组的一部分,其中所述指令群组的第一指令的推测执行使所述群组指令的所有指令的推测执行成为必要。
9.如权利要求8的追踪单元,其中所述索引储存单元包括第一索引储存单元,该第一索引储存单元被配置为储存第一索引值,该第一索引值与所述指令群组内的第一指令相关联。
10.如权利要求9的追踪单元,其中所述第一索引储存单元包括第一多个条目被配置为取决于指示所述指令群组的指示符而储存所述第一索引值。
11.如权利要求10的追踪单元,其中所述第一多个条目的数目至少对应于能由所述数据处理单元推测执行的指令群组的最大数目。
12.如权利要求9的追踪单元,其中所述追踪单元被配置为从所述数据处理单元接收取消指示,所述取消指示会指示已经推测执行的选定指令群组已被取消,并且,所述追踪单元被配置为产生指示所述选定指令群组的追踪数据的取消项目。
13.如权利要求12的追踪单元,其中所述追踪单元被配置为当接收到所述取消指示时,取决于第一索引值产生追踪数据的所述取消项目,该第一索引值储存在所述第一索引储存单元中并与所述选定指令群组相关联。
14.如权利要求13的追踪单元,其中所述追踪单元包括计数器,该计数器被配置为提供索引值的所述预定序列,并且,所述追踪单元被配置为进一步取决于所述计数器的目前计数器值产生追踪数据的所述取消项目。
15.如权利要求8的追踪单元,其中所述索引储存单元包括最后索引储存单元,该最后索引储存单元被配置为储与所述指令群组内的最后指令相关联的最后索引值。
16.如权利要求15的追踪单元,其中所述最后索引储存单元包括第二多个项,并且,被配置为取决于指示所述群组指令的指示符储存所述最后索引值。
17.如权利要求16的追踪单元,其中所述第二多个条目的数目至少对应于可由所述数据处理单元推测执行的指令群组的最大数目。
18.如权利要求15的追踪单元,其中所述追踪单元是组态以从所述数据处理单元接收确定指示,所述确定指示指示已经推测执行的选定指令群组已被确定,并且,所述追踪单元是组态以产生指示所述选定指令群组的追踪数据的确定项目。
19.如权利要求18的追踪单元,其中所述追踪单元被配置为当接收到该确定指示时取决于最后索引值产生追踪数据的所述确定项目,该最后索引值储存在所述最后索引储存单元中并与所述选定指令群组相关联。
20.如权利要求19的追踪单元,其中所述追踪单元包括计数器,该计数器被配置为提供索引值的所述预定序列和未确定储存单元,所述追踪单元被配置为当产生追踪的所述确定项目时,在所述未确定储存单元中储存所述计数器的目前计数器值。
21.如权利要求20的追踪单元,其中所述追踪单元是被配置为取决于值产生追踪的所述确定项目,该值储存在所述未确定储存单元中。
22.如权利要求8的追踪单元,其中所述索引储存单元包括第一索引储存单元,该第一索引储存单元被配置为储存与所述指令群组内的第一指令相关联的第一索引值,其中所述索引储存单元包括最后索引储存单元,该最后索引储存单元被配置为储存与所述群组指令中的最后指令相关联的最后索引值,其中所述最后索引值是以与所述第一索引值相关的格式储存的。
23.如权利要求22的追踪单元,其中与所述第一索引值相关的所述格式是2位数据格式。
24.如权利要求18的追踪单元,其中所述追踪单元包括推测深度计数器,该推测深度计数器被配置为指示由所述数据处理单元执行的指令的目前推测深度。
25.如权利要求24的追踪单元,其中所述追踪单元包括未决确定计数器,所述未决确定计数器被配置为指示经未决输出的追踪数据的确定项目的目前数目。
26.如权利要求25的追踪单元,其中所述追踪单元被配置为当接收到所述确定指示而没有产生追踪数据的所述确定项目时递增所述未决确定计数器。
27.如权利要求25的追踪单元,其中所述追踪单元被配置为当所述推测深度计数器达到预定值时递减所述未决确定计数器。
28.如权利要求24的追踪单元,其中当所述推测深度计数器达到预定值时产生追踪数据的另一项目暗示所述追踪单元已从所述数据处理单元接收到另一确定指示。
29.如权利要求1的追踪单元,其中所述追踪单元被配置为响应于预定事件而将值的所述预定序列的所述索引值重设至预定值。
30.如权利要求1的追踪单元,其中所述追踪单元被配置为产生值的所述预定序列,以作为值的回路序列。
31.如权利要求1的追踪单元,其中所述追踪单元被配置为对于所述数据处理单元所响应的至少一个指令类型不产生追踪数据的项目。
32.如权利要求3的追踪单元,其中所述索引储存单元被配置为选择性地储存进行中的(in-flight)指示符,所述进行中的指示符指示索引值的所述预定序列的储存索引值目前正使用中。
33.如权利要求32的追踪单元,其中所述追踪单元被配置为当产生下一索引值时,引用所述进行中的指示符,并且,如果所述进行中的指示符指示所述下一索引值仍使用中时,储存替代索引值以代替所述下一索引值。
34.如权利要求1的追踪单元,其中所述数据处理单元的处理活动包括使用数据地址引用储存数据值,并且,所述索引值是与所述至少一个数据地址相关联的数据地址索引值。
35.如权利要求34的追踪单元,其中对所述储存数据值的所述引用包括加载所述储存数据值。
36.如权利要求34的追踪单元,其中对所述储存数据值的所述引用包括储存所述储存数据值。
37.如权利要求34的追踪单元,其中所述追踪单元被配置为在数据地址索引值储存表中储存所述数据地址索引值。
38.如权利要求37的追踪单元,其中所述追踪单元被配置为选择性地储存进行中的指示符,所述进行中的指示符指示对与所述数据地址索引值的所述储存数据值相关联的引用尚未完成并且所述数据地址索引值在进行中的。
39.如权利要求38的追踪单元,其中所述追踪单元被配置为当产生下一数据地址索引值时,引用储存进行中的指示符,并且,如果所述储存进行中的指示符指示所述下一数据地址索引值仍进行中的时,储存替代数据地址索引值以代替所述下一数据地址索引值。
40.如权利要求39的追踪单元,其中所述替代数据地址索引值包括数据处理单元索引值,其中由所述数据处理单元使用所述数据处理单元索引值来引用所述数据地址。
41.如权利要求39的追踪单元,其中所述替代数据地址索引值具有与数据处理单元索引值的一对一对应,其中由所述数据处理单元使用所述数据处理单元索引值来引用该数据地址。
42.如权利要求40的追踪单元,其中所述进行中的指示符与所述数据地址索引值相关联地储存。
43.如权利要求40的追踪单元,其中所述进行中的指示符与所述数据处理单元索引值相关联地储存。
44.如权利要求39的追踪单元,其中所述追踪单元被配置为产生指示所述替代数据地址索引值的追踪数据的项目。
45.如权利要求39的追踪单元,其中所述替代数据地址索引值和所述该数据地址索引值共享编码协议。
46.如权利要求8的追踪单元,其中所述追踪单元被配置为从所述数据处理单元接收有关初始指令群组和后续指令群组的合并指示,其中如果确定如果所述初始指令群组经执行而将会执行所述后续指令群组时,所述数据处理单元发出所述合并指令,并且由此,所述初始指令群组和所述后续指令群组是合并的指令群组,并且其中,所述追踪单元是被配置为取决于所述合并指示以修改与所述合并指令群组相关联的所述索引储存单元中的至少一个合并索引值。
47.如权利要求46的追踪单元,其中所述追踪单元被配置为产生追踪数据的合并项目,追踪数据的所述合并项目指示所述初始指令群组和所述后续指令群组已经合并。
48.一种追踪单元,该追踪单元被配置为产生指示数据处理单元的处理活动的追踪数据的项目,所述追踪单元包括:
追踪索引部件,该追踪索引部件用于关联索引值与由该追踪单元产生的追踪数据的项目的至少一个子集,
所述追踪索引部件被配置为产生所述索引值,以作为索引值的预定序列的一个,
其中所述预定序列中的第n+1索引值仅可从在所述预定序列的第n索引值确定。
49.一种产生指示数据处理单元的处理活动的追踪数据的项目的方法,所述方法包括以下步骤:
产生追踪数据的项目;
将索引值与由追踪数据的产生项目的至少一个子集关联;
产生所述索引值,以作为索引值的预定序列中的一个,
其中所述预定序列中的第n+1索引值仅可从在所述预定序列中的第n索引值确定。
CN201180030554.0A 2010-06-21 2011-05-24 当追踪数据处理系统时的键配置 Active CN102947804B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1010350.5 2010-06-21
GB1010350.5A GB2481384B (en) 2010-06-21 2010-06-21 Key allocation when tracing data processing systems
PCT/GB2011/050979 WO2011161429A2 (en) 2010-06-21 2011-05-24 Key allocation when tracing data processing systems

Publications (2)

Publication Number Publication Date
CN102947804A true CN102947804A (zh) 2013-02-27
CN102947804B CN102947804B (zh) 2016-02-10

Family

ID=42582702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180030554.0A Active CN102947804B (zh) 2010-06-21 2011-05-24 当追踪数据处理系统时的键配置

Country Status (10)

Country Link
US (1) US8707106B2 (zh)
EP (1) EP2583179B1 (zh)
JP (1) JP5512041B2 (zh)
KR (1) KR101708170B1 (zh)
CN (1) CN102947804B (zh)
GB (1) GB2481384B (zh)
IL (1) IL222736A (zh)
MY (1) MY156921A (zh)
TW (1) TWI517035B (zh)
WO (1) WO2011161429A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003850A (zh) * 2014-12-24 2017-08-01 英特尔公司 用于数据推测执行的系统、装置和方法
CN112579169A (zh) * 2019-09-27 2021-03-30 阿里巴巴集团控股有限公司 处理器追踪流的生成方法及装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713204B2 (en) * 2011-12-27 2014-04-29 Apple Inc. High-performance AHCI interface
US9183147B2 (en) * 2012-08-20 2015-11-10 Apple Inc. Programmable resources to track multiple buses
US9626119B2 (en) * 2014-11-14 2017-04-18 Intel Corporation Using counters and a table to protect data in a storage device
US9934126B1 (en) * 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US10185645B2 (en) 2017-03-08 2019-01-22 Microsoft Technology Licensing, Llc Resource lifetime analysis using a time-travel trace
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
GB2570466B (en) 2018-01-25 2020-03-04 Advanced Risc Mach Ltd Commit window move element
US11061807B2 (en) * 2018-12-28 2021-07-13 Intel Corporation Trace management during aborted speculative operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147965A1 (en) * 2001-02-01 2002-10-10 Swaine Andrew Brookfield Tracing out-of-order data
CN1432151A (zh) * 2000-10-04 2003-07-23 Arm有限公司 单指令多数据处理
US6681321B1 (en) * 2000-04-20 2004-01-20 International Business Machines Corporation Method system and apparatus for instruction execution tracing with out of order processors

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905204A (en) * 1988-09-06 1990-02-27 Exxon Production Research Company Method of weighting a trace stack from a plurality of input traces
JPH06282468A (ja) * 1993-03-30 1994-10-07 Toshiba Corp 情報処理装置
US5724566A (en) * 1994-01-11 1998-03-03 Texas Instruments Incorporated Pipelined data processing including interrupts
JP2001147837A (ja) * 1999-11-18 2001-05-29 Fujitsu Ltd プログラムトレース装置及び記憶媒体
US7168066B1 (en) * 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7225434B2 (en) * 2003-09-25 2007-05-29 Intel Corporation Method to collect address trace of instructions executed
US7194731B1 (en) * 2003-11-14 2007-03-20 Sun Microsystems, Inc. Method and apparatus for speculative tracing
US7219207B2 (en) * 2003-12-03 2007-05-15 Intel Corporation Reconfigurable trace cache
US7603589B2 (en) * 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program
US7802149B2 (en) * 2005-05-16 2010-09-21 Texas Intruments Incorporated Navigating trace data
US7720670B2 (en) * 2005-05-16 2010-05-18 Texas Instruments Incorporated Saving resources by deducing the total prediction events
US7987393B2 (en) * 2005-05-16 2011-07-26 Texas Instruments Incorporated Determining operating context of an executed instruction
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7757068B2 (en) * 2007-01-16 2010-07-13 Oracle America, Inc. Method and apparatus for measuring performance during speculative execution
CN101611384B (zh) * 2007-04-18 2012-11-14 联发科技股份有限公司 数据地址追踪方法及装置
US8091073B2 (en) * 2007-06-05 2012-01-03 International Business Machines Corporation Scaling instruction intervals to identify collection points for representative instruction traces

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681321B1 (en) * 2000-04-20 2004-01-20 International Business Machines Corporation Method system and apparatus for instruction execution tracing with out of order processors
CN1432151A (zh) * 2000-10-04 2003-07-23 Arm有限公司 单指令多数据处理
US20020147965A1 (en) * 2001-02-01 2002-10-10 Swaine Andrew Brookfield Tracing out-of-order data

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003850A (zh) * 2014-12-24 2017-08-01 英特尔公司 用于数据推测执行的系统、装置和方法
CN107003850B (zh) * 2014-12-24 2020-12-22 英特尔公司 用于数据推测执行的系统、装置和方法
CN112579169A (zh) * 2019-09-27 2021-03-30 阿里巴巴集团控股有限公司 处理器追踪流的生成方法及装置
CN112579169B (zh) * 2019-09-27 2024-04-09 阿里巴巴集团控股有限公司 处理器追踪流的生成方法及装置

Also Published As

Publication number Publication date
US8707106B2 (en) 2014-04-22
EP2583179A2 (en) 2013-04-24
TW201203109A (en) 2012-01-16
MY156921A (en) 2016-04-15
IL222736A0 (en) 2012-12-31
JP5512041B2 (ja) 2014-06-04
KR20130123355A (ko) 2013-11-12
GB201010350D0 (en) 2010-08-04
GB2481384B (en) 2018-10-10
JP2013533546A (ja) 2013-08-22
US20110314264A1 (en) 2011-12-22
IL222736A (en) 2015-10-29
WO2011161429A3 (en) 2012-02-16
WO2011161429A2 (en) 2011-12-29
EP2583179B1 (en) 2017-03-22
KR101708170B1 (ko) 2017-02-20
TWI517035B (zh) 2016-01-11
GB2481384A (en) 2011-12-28
CN102947804B (zh) 2016-02-10

Similar Documents

Publication Publication Date Title
CN102947804B (zh) 当追踪数据处理系统时的键配置
CN103299273A (zh) 数据处理装置的追踪
CN103154908B (zh) 用于事务存储器的最后分支记录的装置、方法和系统
CN104541244B (zh) 用于进行重放执行的方法和设备
CN102844744A (zh) 调试多线程代码
CN106030533A (zh) 通过拆分过程执行自动重试事务
CN104750459B (zh) 带有事务功能以及报告事务操作的日志记录电路的处理器
US10083208B2 (en) Query modification in a database management system
CN102236705A (zh) 数据库重放的细粒度同步
CN109840837B (zh) 财务数据的处理方法、装置、计算机可读介质及电子设备
US9052972B2 (en) Determining the processing order of a plurality of events
US20110055151A1 (en) Processing Database Operation Requests
EP1779243A1 (en) Method and system for scheduling partial ordered transactions for event correlation
CN105074656B (zh) 管理并发谓词表达式的方法和装置
CN110134385A (zh) 记录c语言函数调用链的方法及c语言通用日志框架
CN107003896A (zh) 具有共享事务处理资源的装置和数据处理方法
CN103810035A (zh) 智能上下文管理
CN101639803A (zh) 多线程应用系统的异常处理方法和异常处理装置
CN107003894A (zh) 用于硬件事务内存程序的剖析器的装置和方法
CN108920523A (zh) 区块链上数据查询方法、装置、设备、系统及介质
CN107003897A (zh) 监控事务处理资源的利用率
CN110706108B (zh) 在区块链中并发执行交易的方法和装置
CN102339223B (zh) 数字数据处理系统
US8180739B2 (en) Duplicate filtering in a data processing environment
US10185569B2 (en) Precise-restartable parallel execution of programs

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