CN102402476A - 数据处理装置、追踪单元和诊断装置 - Google Patents
数据处理装置、追踪单元和诊断装置 Download PDFInfo
- Publication number
- CN102402476A CN102402476A CN2011102764482A CN201110276448A CN102402476A CN 102402476 A CN102402476 A CN 102402476A CN 2011102764482 A CN2011102764482 A CN 2011102764482A CN 201110276448 A CN201110276448 A CN 201110276448A CN 102402476 A CN102402476 A CN 102402476A
- Authority
- CN
- China
- Prior art keywords
- reference address
- address
- address register
- register
- selecteed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
数据处理装置、追踪单元和诊断装置。追踪电路(8)生成指示由处理电路(4)执行的处理操作的追踪数据单元流。追踪电路(8)具有存储相应参考地址的多个参考地址寄存器(30-1)。当处理电路(4)执行与相关存储器地址相关联的处理操作时,追踪电路(8)选择参考地址寄存器(30-1)之一作为选择的参考地址寄存器,并生成指示以下内容的追踪数据单元:(i)参考地址寄存器(30-1)中哪个是选择的参考地址寄存器;(ii)相关存储器地址和选择的参考地址寄存器的参考地址之差,如果有的话。分析追踪流的诊断装置(20)具有类似的一组参考地址寄存器(30-2),其被用来从所生成的追踪数据单元重建相关存储器地址。
Description
技术领域
本发明涉及数据处理领域。更具体地,本发明涉及指示由处理装置执行的处理操作的追踪数据的生成和分析。
背景技术
在数据处理系统中,追踪电路可以被设置用于监控由处理电路执行的处理操作并且生成指示这些处理操作的特性的追踪数据。然后,诊断装置对所生成的追踪数据进行分析,以确定这些处理操作的处理结果。从追踪数据得出的信息可以被用于例如诊断或除错目的。
有时,处理电路可以执行与存储器地址相关联的处理操作。在这种情况中,追踪电路将存储器地址的指示包括在追踪数据流中是非常有用的。例如,可以追踪指令地址、分支目标地址、或者加载/存储地址。一些追踪电路维持用于存储参考地址的地址寄存器。当需要将地址输出到追踪流中时,追踪电路可以省略该地址的较高阶的比特(如果它们与地址寄存器中存储的参考地址的相应比特相同)。通过省略地址中的与相应的参考比特相同的比特,追踪数据的数量可以减少。
另一种追踪单元可以具有被用于特定类型的指令的地址寄存器,例如,仅用于当前执行的指令的指令地址的一个地址寄存器以及仅用于加载/存储指令所使用的加载/存储地址的另一个地址寄存器。但是,对于任意一个特定类型的指令,追踪单元总是使用相同的地址寄存器。
本技术试图提供一种可以提供对于追踪数据流中的地址的进一步压缩的追踪单元。
发明内容
鉴于一个方面,本发明提供了一种数据处理装置,包括:
存储器,该存储器包括由相应存储器地址表示的多个存储器位置;
处理电路,被配置为响应于指令而执行处理操作;以及
追踪电路,被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪电路包括被配置为存储多个参考地址的多个参考地址寄存器;并且
所述追踪电路响应于所述处理电路处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器之一作为被选择的参考地址寄存器,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器中的哪一个参考地址寄存器是所述被选择的参考地址寄存器的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息。
本技术提供了一种数据处理装置,该处理装置具有用于执行处理操作的处理电路、以及用于生成并输出指示由处理电路执行的处理操作的追踪数据单元流的追踪电路。追踪电路具有被配置为存储多个参考地址的多个参考地址寄存器。当处理电路处理用于执行与相关存储器地址相关联的处理操作的指令时,追踪电路选择多个参考地址寄存器中的任意一个作为被选择的参考地址寄存器,生成并输出指示第一信息和第二信息的追踪数据单元,其中第一信息指示多个参考地址寄存器中的哪一个是被选择的参考地址寄存器,第二信息指示相关存储器地址和被选择的参考地址寄存器的被选择的参考地址之间的差。
相关存储器地址和被选择的参考地址之间的差越小,表示相关存储器地址的追踪数据的数量越小。通过使追踪电路针对给定的相关存储器地址选择多个地址寄存器中的任意一个并且生成追踪数据单元(在该追踪数据单元中,被选择的参考地址寄存器被表示并且被选择的参考地址和相关存储器地址之间的差被指示),多个参考地址寄存器中的参考地址之一与相关存储器地址相匹配的可能性增加,或者多个参考地址寄存器中的参考地址之一与相关存储器地址相差较小数量的可能性增加。所以,追踪数据被更大程度地压缩的可能性增加,从而追踪缓冲器用于存储追踪数据溢流的可能性或者所生成的追踪数据超过可用追踪带宽的可能性降低。
注意,如果相关存储器地址与被选择的参考地址精确匹配,则第二信息指示相关存储器地址和被选择的参考地址之间的零差。
追踪数据单元可以通过很多方式对第一信息和第二信息进行编码。可以提供包括单个数据值的追踪数据单元,该单个数据值既标识作为被选择的参考地址寄存器的参考地址寄存器,又标识相关存储器地址和被选择的参考地址之间的差。
但是,在一个实施例中,追踪数据单元可以包括指示第一信息的头部部分和指示第二信息的地址部分,其中第一信息指示被选择的参考地址寄存器,第二信息指示相关存储器地址和被选择的参考地址之间的地址差。
可以通过很多方法将相关存储器地址与被选择的参考地址精确匹配的情况编码在追踪数据单元中。例如,追踪数据单元的地址部分可以被设置为指示相关存储器地址和被选择的参考地址之间的零差的零值。替代地,预定的标识符可以被包括在追踪数据单元中,标识相关存储器地址和被选择的参考地址之间存在精确匹配。
但是,在一个实施例中,在相关地址和被选择的参考地址之间的差为零的情况下,追踪电路可以从追踪数据单元中省去地址部分。在这种情况中,追踪数据单元仅包括头部部分而不包括地址部分,可以指示被选择的参考地址和相关存储器地址之间存在精确匹配(即,地址部分的缺失传达了第二信息,该第二信息指示相关存储器地址和被选择的参考地址之间不存在差)。通过在相关存储器地址和被选择的参考地址之间存在精确匹配时省去地址部分,追踪数据的数量可以被减少。
追踪电路可以被配置为以很多方式选择被选择的参考地址。在一个实施例中,追踪电路可以被配置为确定与多个参考地址寄存器中的各个参考地址寄存器相对应的多个候选第二信息值。每个候选第二信息值指示该候选第二信息值相对应的相关存储器地址和在参考地址寄存器中存储的参考地址之间的差。追踪电路可以选择与最有效的候选第二信息值相对应的参考地址寄存器作为被选择的参考地址寄存器。最有效的候选第二信息值一般是导致追踪数据单元的最有效的编码的值。如果多个候选第二信息值同等有效,则这些值中的任意一个被选择作为最有效的候选第二信息值。追踪电路然后可以生成指示与最有效的候选第二信息值相对应的第二信息的追踪数据单元。通过选择与最有效的候选值相对应的参考地址寄存器作为被选择的参考地址寄存器,可以更有效地对追踪数据进行编码。
在一个实施例中,最有效的候选第二信息值被包括在追踪数据单元中,以提供相应的第二信息。但是,在其他实施例中,最有效的候选第二信息值不需要总被包括在追踪数据单元中,并且有时其他种类的信息也可以被包括在追踪数据单元中来指示相应的第二信息。例如,当相关存储器地址和被选择的参考地址之间存在精确匹配时,最有效的候选第二信息将指示零差,所以相应的第二信息可以被利用零比特表示在追踪数据单元中,其中通过以上所述的方式,地址信息的缺失指示精确匹配。
在一个示例中,最有效的候选第二信息值是这样的候选第二信息值,其中与该候选第二信息值的相对应的第二信息可以利用最小数目的比特来表示。通过将可以利用最少比特表示的第二信息包括在追踪数据单元中,可以减少追踪数据的数量。
替代地,最有效的候选第二信息值可以被选择作为这样的候选第二信息值,其中如果与该候选第二信息值相对应的第二信息被包括在追踪数据单元流中的追踪数据单元中,将会使得追踪数据单元流中的追踪数据的总量最少。所以,通过选择参考地址寄存器中适当的一个作为被选择的参考地址寄存器,可以减少追踪数据的总量。
第二信息可以通过很多方式来指示相关存储器地址和被选择的参考地址之间的差。在一个实施例中,第二信息可以指示具有与被选择的参考地址寄存器的被选择的参考地址的相应部分不同的比特值的相关存储器地址的部分。通过提供指示具有与被选择的参考地址的相应比特不同的比特的部分的第二信息,并且省去相关存储器地址和被选择的参考地址中的相同的共有部分,可以利用比相关存储器地址更少的比特来表示第二信息。
替代地,第二信息可以指示相关存储器地址和被选择的存储器地址之间的数字差。在这种情况下,追踪电路可以通过从被选择的参考地址减去相关存储器地址来生成第二信息,或者反之生成数字差。
可以提供存储在追踪操作期间不变的固定参考地址的参考地址寄存器。但是,在一个实施例中,追踪电路可以被配置为在生成追踪数据单元后,执行用于根据相关存储器地址来有选择地更新多个参考地址寄存器中的至少一个的参考地址的参考地址更新操作。
本技术认识到,用于一个处理操作的相关存储器地址与用于一个或多个后续处理操作的相关存储器地址相似的可能性很大。例如,程序指令的循环可以分支到相同的目的地地址很多次,或者一系列的加载/存储操作可以在相邻的存储器地址块上执行。所以,通过为追踪电路提供根据相关存储器地址来更新至少一个参考地址寄存器的参考地址的能力,用于后续处理操作的相关存储器地址与参考地址之一相同或者相似的可能性增加,从而可以减少追踪数据的总量。
在一个实施例中,参考地址更新操作包括将相关地址写到从多个参考地址寄存器中选择的牺牲参考地址寄存器。然后,相关存储器地址成为可以被用在相关操作上以生成追踪数据单元的参考地址之一。通过利用相关存储器地址来更新参考地址之一,用于候选处理操作的相关存储器地址和参考地址之一之间的差较小的可能性更大。
追踪电路不必在每个处理操作之后或者在每个追踪数据单元被生成之后更新参考地址寄存器。有时,追踪电路可以不对参考地址中的任意一个进行更新。例如,在一个实施例中,参考地址更新操作包括:
(a)针对至少一个参考地址寄存器,确定相应的参考地址和所述相关存储器地址之间的地址差是否超过了预定阈值;以及
(b)针对所述至少一个参考地址寄存器中的每一个参考地址寄存器,在所述地址差超过了所述预定阈值的情况下,将所述相关存储器地址写到从所述至少一个参考地址寄存器中选择的牺牲参考地址寄存器。
期望参考地址寄存器存储不同范围的存储器地址空间中的广阔范围的不同参考地址,因为这将增大任意的给定相关存储器地址与参考地址之一相差很小数量的可能性。为了避免过多的相似参考地址值被存储在参考地址寄存器中,针对至少一个参考地址寄存器,追踪电路可以确定相关存储器地址和相应的参考地址之间的地址差是否超过了预定阈值。然后,在地址差超过预定阈值的情况下,追踪电路可以将相关存储器地址写到牺牲参考地址寄存器。如果地址差没有超过阈值,则指示参考地址之一已经被存储在参考地址寄存器中实质上将像相关参考地址被存储在参考地址寄存器中一样有利于压缩追踪数据,所以在这种情况中,将对利用相关存储器地址来更新参考地址寄存器基本没有什么好处。所以,在这种情况中,追踪电路可以选择不利用相关存储器地址对参考地址寄存器进行更新。
可以通过很多方式来定义用于确定是否利用给定的相关存储器地址来更新参考地址寄存器的阈值地址差。例如,预定阈值可以是用于不同于参考地址的相应部分的相关存储器地址的部分的比特的阈值数目。例如,如果比特的阈值数目为4比特,则追踪电路可以在相关存储器地址与现有的参考地址之一相差4比特以上的情况下利用相关存储器地址来更新参考地址之一。替代地,阈值地址差可以被定义为数字差,从而使得在相关存储器地址和现有的参考地址之间的数字差大于阈值的情况下相关存储器地址被存储到参考地址寄存器之一。
在一个实施例中,预定阈值与用于指示第二信息的地址部分的最小尺寸相对应。在一些追踪编码机制中,用于指示第二信息的地址部分可以具有最小尺寸。如果相关存储器地址和现有的参考地址之一之间的差不超过预定阈值(即,可以利用最小数目的地址部分表示该差),则使用相关存储器地址作为参考地址将不会比使用现有的参考地址更多地减少追踪数据的数量,所以将相关存储器地址写到参考地址寄存器将不会又什么好处。在预定阈值是在相关存储器地址和参考地址之间改变的部分的比特的阈值数目的情况下,该阈值可以对应于最小尺寸的地址部分中的比特的数目。替代地,在预定阈值是数字差的情况下,这将对应于可以利用地址部分的最小尺寸来表示的最大的正或负值。例如,如果最小尺寸是6比特,并且地址部分使用无符号的二进制表示,则阈值可以对应于数字差63(起始可以使用地址部分表示的最大值)。替代地,可以利用有符号的二进制表示来表示数字差,所以例如,6比特的地址部分可以表示-32到31的范围中的值。在这种情况中,预定阈值可以是用于负地址差的-32以及用于正地址差的31。注意,对于负差值,如果其小于阈值则认为该差“超过”了阈值(即,其绝对值大于阈值的绝对值,例如,差-35将被认为超过了阈值-32)。
追踪电路可以被配置为执行牺牲选择操作来选择参考地址寄存器中的牺牲参考地址寄存器,其中在参考地址更新期间相关存储器地址被写到该牺牲参考地址寄存器。如果任意参考地址已经被存储在牺牲地址寄存器中,则其将被相关存储器地址覆写。追踪电路可以使用任意种类的牺牲选择操作,例如,随机、最近最少使用(LRU)或者轮询。例如,寄存器可以被与指示最近最多更新的寄存器的指针相关联,并且可以通过选择指针所指示的寄存器后面的用于逐出的寄存器来实现轮询牺牲选择机制。
在一个实施例中,追踪电路可以响应于锁定信号,有选择地将至少一个参考地址寄存器排除到由参考地址更新操作的更新之外。所以,锁定信号可以被用来动态选择给定的寄存器,以确保这些寄存器继续存储它们当前的参考地址。例如,如果特定序列的程序指令将使用特定的相关存储器地址多次,并且参考地址寄存器存储了与重复的相关存储器地址相似的给定参考地址,则锁定信号可以被用来向追踪电路通知给定的参考地址不应该被丢弃或覆写,从而增加了追踪流被显著程度地压缩的可能性。
不必是所有的参考地址寄存器都可以被更新。在一个实施例中,存在至少一个用于存储预定的参考地址的固定参考地址寄存器。固定参考地址寄存器然后可以被排除在由参考地址更新操作的更新之外。例如,特定的存储器地址可以被频繁地用在程序指令中,所以提供存储该地址的固定参考地址寄存器是非常有用的。
在一个实施例中,至少一个参考地址寄存器可以是与存储器地址空间中的相关范围的存储器地址相关联的范围特定的参考地址寄存器。然后,在相关存储器地址处于该寄存器的相关范围之外的情况下,追踪电路可以将该范围特定的参考地址寄存器排除在被更新的范围之外。所以,范围特定的参考地址寄存器只可以存储相关范围内的地址。相关范围不需要是连续的存储器范围,但可以包括多个离散的地址范围。在一个示例中,如果提供了分别于不同的地址范围相关联的不同的范围特定的寄存器,则这可以被用来确保参考地址寄存器存储贯穿整个存储器地址空间分布的参考地址,从而使得相关存储器地址和参考地址之一之间的差较小的可能性增加。在另一示例中,参考地址寄存器可以是范围特定的,从而至少一个范围的相关存储器地址被排除在被写到任意参考地址寄存器的范围之外。
在一个实施例中,参考地址寄存器的至少一个子集可以被耦合在一起以形成参考地址流水线,并且参考地址更新操作可以包括根据相关存储器地址来更新流水线中的地址。该流水线可以提供用于以确保在较新的相关地址之前较旧的相关地址被覆写的方式来更新参考地址的方便的机制。在流水线中,参考地址更新操作可以包括有选择地对流水线的参考地址寄存器之间的参考地址进行移位。
在一个实施例中,参考地址流水线包括N个参考地址寄存器,并且所述参考地址更新操作包括:将所述参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器,并且将所述相关存储器地址写到所述参考地址流水线的第一参考地址寄存器。
在该示例中,流水线的第一个参考地址寄存器包括最新的相关存储器地址,第二地址寄存器包括第二最新的相关存储器地址,等等。当新的相关存储器地址被添加到流水线时,流水线中的第N个地址寄存器的内容丢失。这种技术对于指令地址尤其有用,因为相同的分支目的地地址可能会在指令流中出现很多次(例如,在程序循环中),所以通过将流水线配置为包括与N个最新的相关存储器地址相对应的参考地址,相关存储器地址与参考地址之一精确匹配的可能性增大。
替代地,参考地址流水线可以包括N个参考地址寄存器,并且被选择的参考地址寄存器是流水线的第M个参考地址寄存器(1≤M≤N),参考地址更新操作可以包括:
如果M>1,则将所述参考地址流水线的第1至第M-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器;以及
将所述相关存储器地址写到所述参考地址流水线的第一个参考地址寄存器。
在这种情况中,流水线的参考地址寄存器中的哪个被更新取决于哪个参考地址寄存器被用作用于生成追踪数据单元的被选择的参考地址寄存器。如果M>1,则被选择的参考地址寄存器之前的参考地址寄存器中的参考地址被移位到下一参考地址寄存器(并且被选择的参考地址寄存器被利用前一参考地址寄存器的参考地址更新),然后相关存储器地址被写到流水线的第一个参考地址寄存器。在这种技术中,由于用于生成追踪数据单元的参考地址被从流水线中移除并且随后被相关存储器地址替换,所以流水线中存在多个副本或者相似地址的可能性降低,从而使得流水线中的参考地址将被更均匀地分布在存储器空间中。然而,通过将相关存储器地址添加到第一个参考地址寄存器,最新的相关存储器地址再次位于流水线的头部,并且仍然较旧的相关存储器地址停留在流水线中的时间长。这种技术对于数据地址尤其有用,其中与参考地址精确匹配的可能性对于指令地址来说比较低,所以提供较大范围的可用参考地址是有用的。
如果被选择的参考地址寄存器是流水线的第一个参考地址寄存器(即,M=1),则流水线操作还可以包括:
确定所述相关存储器地址和所述第一参考地址寄存器的参考地址之间的差是否超过预定阈值;以及
如果所述差超过了所述预定阈值,则在将所述相关存储器地址写到所述参考地址流水线的所述第一个参考地址寄存器之前,将参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器。
该技术再次认识到不期望将太多相似的地址值写入流水线。如果M=1并且第一个参考地址和相关存储器地址之间的差没有超过预定阈值,则将流水线中的所有参考地址向上移位并且将相关存储器地址写到第一个参考地址寄存器将导致流水线的头两个寄存器中存在两个相似的地址值。所以,相反,追踪电路简单地用相关存储器地址来替换第一个参考地址寄存器的地址。另一方面,如果M=1并且第一个参考地址和相关存储器地址之间的差超过了预定阈值,则在流水线中提供这两个地址是非常有用的,所以追踪电路将流水线中的参考地址向上移位一阶,然后将相关存储器地址写到第一个参考地址寄存器。这种技术允许地址寄存器增多,而不会导致太多的流水线移位(太多的流水线移位将在地址寄存器中留下非常相似的地址值)。另外,预定阈值可以与如上所述的最小地址部分尺寸相对应,并且可以被指示为用于不同于参考地址的相应部分的相关存储器地址的部分的比特的阈值数目或者数字差阈值。
如上所述,追踪电路可以根据地址寄存器中与最有效的候选第二信息值相对应的地址寄存器来选择被选择的参考地址寄存器。在流水线实施例中,当存在其相应的候选第二信息值同等有效的多个参考地址寄存器时,追踪电路可以选择多个参考地址寄存器中最接近参考地址流水线的末端的参考地址寄存器作为被选择的参考地址寄存器。这是非常有用的,因为同等有效的参考地址寄存器中的最老的参考地址寄存器(即,最不可能用于将来的地址追踪的参考地址)将被从流水线中移除,并被相关地址替换(在该地址被用于生成追踪数据之后)。
替代地,当存在其相应的候选第二信息值同等有效的多个参考地址寄存器时,追踪电路可以选择多个参考地址寄存器中的任意一个作为被选择的参考地址寄存器。
在一个实施例中,追踪电路可以响应于初始化事件,将默认参考地址存储到多个参考地址寄存器中的每一个。例如,默认参考地址可以是其比特值全部为零值的地址。针对地址寄存器中的每一个,默认参考地址不需要相同。
在一个实施例中,初始化事件是追踪电路被初始化从而使得当追踪电路开始生成追踪流,并且参考地址寄存器全部存储已知的默认参考地址值。所以,诊断单元分析追踪流可以知道参考地址寄存器的什么内容处于追踪流的开端处。
另外,初始化事件可以是用于触发追踪电路生成并输出追踪同步数据单元的追踪同步事件。这是非常有用的,因为追踪流的追踪数据单元的一般分析取决于流中的在前追踪数据单元的分析(例如,诊断电路可以基于从先前的追踪数据单元推断出的处理结果来确定参考地址寄存器的内容)。通过提供用于触发追踪电路生成并输出追踪同步数据单元的追踪同步事件,并且在出现追踪同步事件时重新初始化参考地址寄存器,为诊断电路提供追踪流中的参考点,其中诊断电路可以从该参考点开始分析追踪流,而无需知道先前的追踪数据。这意味着,诊断单元可以从追踪同步数据单元所指示的参考点开始分析追踪数据,而不必从追踪流的起始位置开始。
在本技术中,处理电路可以被配置为响应于多个不同类型的数据处理指令而执行数据处理操作,并且针对这些多种类型中的每一种类型,追踪电路可以被配置为选择参考地址寄存器中的任意一个,从而使得追踪电路使用相同的参考地址寄存器来生成指示不同类型的数据处理指令的追踪数据单元。所以,被选择的参考地址寄存器的选择取决于数据处理指令的类型。每个地址寄存器可以保存与任意类型的指令相关联的地址。对于任意指令,追踪电路可以自由选择所选择的参考地址寄存器中的任意一个作为被选择的寄存器,从而使得相关存储器地址和参考地址之一之间存在较小的差的可能性更大。所以,相比于仅针对任意特定类型的指令提供单个地址寄存器的现有技术,追踪流可以被更大程度地压缩。多种类型的数据处理指令可以包括例如,以下指令中的至少两个:分支指令、当例外事件发生时执行的指令、在例外事件发生后指示执行的指令、处理电路当前执行的指令、装载指令、以及存储指令。
鉴于又一方面,本发明提供了一种数据处理装置,包括:
存储器部件,用于存储数据,所述存储器部件包括由相应的存储器地址标识的多个存储器位置;
处理部件,用于响应于指令而执行处理操作;以及
追踪部件,用于生成指示由所述处理部件执行的所述处理操作的追踪数据单元流,并输出所述追踪数据单元流;其中:
所述追踪部件包括用于存储多个参考地址的多个参考地址寄存器部件;并且
所述追踪部件响应于所述处理部件处理用于执行与相关存储器地址相关联的处理操作,选择所述多个参考地址寄存器部件之一作为被选择的参考地址寄存器部件,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器部件中的哪个是所述被选择的参考地址寄存器部件的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器部件中存储的被选择的参考地址之间的差的第二信息。
鉴于又一方面,本发明提供了一种用于输出处理装置的数据处理方法,所述数据处理装置包括存储器,该存储器包括由相应的存储器地址标识的多个存储器位置,所述方法包括以下步骤:
响应于指令而执行处理操作;
将多个参考地址存储在多个参考地址寄存器中;
生成指示由所述处理电路执行的所述处理操作的追踪数据单元流;以及输出所述追踪数据单元流;其中:
所述生成追踪数据单元流的步骤包括:响应于与相关存储器地址相关联的处理操作的执行,选择所述多个参考地址寄存器之一作为被选择的参考地址寄存器,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器中的哪个是所述被选择的参考地址寄存器的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息。
鉴于另一方面,本发明提供了一种用于监控处理装置响应于指令而执行的处理操作的追踪单元,所述处理装置包括存储器,所述存储器包括由相应的存储器地址标识的多个存储器位置,所述追踪单元包括:
追踪电路,被配置为生成指示由所述处理装置执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪电路包括被配置为存储多个参考地址的多个参考地址寄存器;并且
所述追踪电路响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器之一作为被选择的参考地址寄存器,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器中的哪个是所述被选择的参考地址寄存器的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息。
鉴于另一方面,本发明提供了一种用于监控处理装置响应于指令而执行的处理操作的追踪单元,所述处理装置包括用于存储数据的存储器部件,所述存储器部件包括由相应的存储器地址标识的多个存储器位置,所述追踪单元包括:
追踪部件,用于生成指示由所述处理装置执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪部件包括用于存储多个参考地址的多个参考地址寄存器;并且
所述追踪装置响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器部件之一作为被选择的参考地址寄存器部件并且输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器部件中的哪个参考地址寄存器部件是所述被选择的参考地址寄存器部件的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器部件中存储的被选择的参考地址之间的差的第二信息。
鉴于另一方面,本发明提供了一种用于分析指示处理装置响应于指令而执行的处理操作的追踪数据单元流的诊断装置,所述处理装置包括存储器,所述存储器包括由相应的存储器地址标识的多个存储器位置,所述诊断装置包括:
追踪输入端,用于接收所述追踪数据单元流;以及
诊断电路,被配置为分析所述追踪数据单元流,以确定所述处理操作的处理结果;其中:
所述诊断电路包括被配置为存储多个参考地址的多个参考地址寄存器;并且
所述诊断电路响应于所述处理装置处理用由于执行与相关存储器地址相关联的处理操作的指令,而进行以下处理:
(a)在所述追踪数据单元流中定位指示以下内容的追踪数据单元:(i)指示所述多个参考地址寄存器中的哪个参考地址寄存器是被选择的参考地址寄存器的第一信息;(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息;以及
(b)根据所述第二信息和在所述被选择的参考地址寄存器中存储的所述被选择的参考地址确定所述相关存储器地址。
用于分析所生成的追踪数据单元的诊断装置可以包括与处理装置的追踪单元中的参考地址寄存器相对应的参考地址寄存器。当分析追踪数据单元时,诊断电路可以存取由执行装置执行的指令的指示。当诊断电路碰到处理装置处理用于执行与相关存储器地址相关的处理操作的指令的指示时,诊断电路可以在追踪数据单元流中定位相应的追踪数据单元。相应的追踪数据单元指示第一信息和第二信息,其中第一信息指示当追踪单元生成追踪数据单元时所选择的被选择的参考地址寄存器,第二信息指示相关存储器地址和在被选择的参考地址寄存器中存储的被选择的参考地址之间的差。诊断电路然后可以存取由第一信息指示的参考地址寄存器,并且根据第二信息和参考地址寄存器中存储的被选择的参考地址来确定相关存储器地址。所以,诊断电路可以对追踪流进行解压缩,以标识相关存储器地址。
另外,尽管可以使用追踪数据单元的各种编码,但是在一个实施例中,追踪数据单元可以包括指示第一信息的头部部分和指示第二信息的地址部分。在追踪数据单元被发现不包括地址部分的情况下,诊断电路可以确定相关存储器地址与被选择的参考地址相同。所以,地址部分的缺失意味着相关存储器地址和被选择的参考地址之间存在精确匹配。
在第二信息被指示为具有与选择地址的相应部分不同的比特值的相关存储器地址的部分的情况下,诊断电路可以将相关存储器地址确定为具有等于通过以下处理得到的值的地址值:(i)从所述被选择的参考地址的比特值开始;(ii)用由所述第二信息指示的所述相关存储器地址的所述部分的比特值来替换所述被选择的参考地址的所述相应部分的比特值。应该明白,诊断电路不需要实际执行步骤(i)和(ii),但可以执行将使地址值具有与通过步骤(i)和(ii)获得的值相等的值的逻辑或算术操作的任意组合。
替代地,在第二信息指示相关存储器地址和被选择的参考地址之间的数字差的情况下,诊断电路可以通过将该数字差与被选择的参考地址相加来确定相关存储器地址。
诊断电路可以在确定相关存储器地址之后,通过以与追踪单元相对应的方式执行参考地址更新操作来有选择地更新所述多个参考地址寄存器之一的参考地址。
参考地址更新操作可以包括将所述相关存储器地址写到所述多个参考地址寄存器的牺牲参考地址寄存器。
参考地址更新操作可以包括:
(a)针对至少一个参考地址寄存器,确定相应参考地址和所述相关存储器地址之间的地址差是否超过预定阈值;以及
(b)针对所述至少一个参考地址寄存器中的每一个,如果所述地址差超过所述预定阈值,则将所述相关存储器地址写到从所述至少一个参考地址寄存器选择的牺牲参考地址寄存器。
追踪数据单元可以包括指示所述第二信息的地址部分,并且所述预定阈值可以与所述地址部分的最小尺寸相对应。
诊断电路可以被配置为执行牺牲选择操作,以选择所述多个参考地址寄存器中的哪个是牺牲参考地址寄存器。
诊断电路可以响应于锁定信号,有选择地将至少一个参考地址寄存器排除在由参考地址更新操作更新的范围之外。
多个参考地址寄存器中的至少一个可以是用于存储预先定义的参考地址的固定参考地址寄存器,并且诊断电路可以将固定参考地址寄存器排除在有所述参考地址更新操作更新的范围之外。
所述多个参考地址寄存器中的至少一个可以是与所述存储器地址的相关范围相关联的范围特定的参考地址寄存器,并且在相关存储器地址处于所述存储器地址的相关范围之外的情况下,诊断电路可以将范围特定的参考地址寄存器排除在有参考地址更新操作更新的范围之外。
多个参考地址寄存器的至少一个子集可以被耦合在一起以形成参考地址流水线,并且参考地址更新操作可以包括根据相关存储器地址来更新参考地址流水线中的参考地址。
参考地址流水线可以包括N个参考地址寄存器;并且所述参考地址更新操作可以包括将所述参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器,并且将所述相关存储器地址存储到所述参考地址流水线的第一个参考地址寄存器。
参考地址流水线包括N个参考地址寄存器,被选择的参考地址寄存器可以包括所述参考地址流水线的第M个参考地址寄存器,其中1≤M≤N,所述参考地址更新操作可以包括:如果M>1,则将所述参考地址流水线的第一至第M-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器;以及将所述相关存储器地址存储到所述参考地址流水线的第一个参考地址寄存器。
如果M=1,则参考地址更新操作还可以包括:确定所述相关存储器地址和所述第一个参考地址寄存器的参考地址之间的差是否超过预定阈值;以及如果所述差超过所述预定阈值,则在将所述相关存储器地址写到所述参考地址流水线的所述第一个参考地址寄存器之前,将所述参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器。
另外,预定阈值可以与地址部分的最小尺寸相对应。预定阈值可以是用于与第一个参考地址寄存器的参考地址的相应部分不同的相关存储器地址的部分的比特的阈值数目,或者可以是阈值数字差。
诊断电路可以通过与追踪单元相对应的方式将默认参考地址存储到每个参考地址寄存器来对初始化事件进行响应。初始化事件可以是诊断电路被激活从而开始分析追踪流,使得默认参考地址在开始分析追踪流时被使用。另外,初始化事件可以是诊断电路对追踪数据单元流中的追踪同步数据单元进行响应。由于参考地址寄存器在追踪同步数据单元处被重新初始化,所以追踪同步数据单元提供了这样的参考点,在该点处,追踪数据分析被开启,而无需从先前的追踪数据单元得出的信息。
鉴于另一方面,本发明提供了一种诊断装置,用于分析指示由处理装置响应于指令而执行的处理操作的追踪数据单元流,所述处理装置包括用于存储数据的存储器装置,所述存储器装置包括由相应的存储器地址标识的多个存储器位置,所述诊断装置包括:
追踪输入部件,用于接收所述追踪数据单元流;以及
诊断装置,用于分析所述追踪数据单元流,以确定所述处理操作的处理结果;其中:
所述诊断装置包括用于存储多个参考地址的多个参考地址寄存器;以及
所述诊断装置响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令的指示而进行以下处理:
(a)在所述追踪数据单元流中定位指示以下内容的追踪数据单元:(i)指示所述多个参考地址寄存器部件中的哪个是被选择的参考地址寄存器部件的第一信息;以及(ii)指示所述相关存储器地址和所述被选择的参考地址寄存器装置中存储的被选择的参考地址之间的差的第二信息;以及
(b)根据所述第二信息和所述被选择的参考地址寄存器装置中存储的所述被选择的参考地址确定所述相关存储器地址。
鉴于另一方面,本发明提供了一种用于分析指示处理装置响应于指令而执行的处理操作的追踪数据单元流的方法,所述处理装置包括存储器,该存储器包括由相应存储器地址标识的多个存储器位置,所述方法包括以下步骤:
接收所述追踪数据单元流;
将多个参考地址存储在多个参考地址寄存器中;以及分析所述追踪数据单元流,以确定所述处理操作的处理结果;其中:
所述分析的步骤包括响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令而进行以下处理:
(a)在所述追踪数据单元流中定位指示以下内容的追踪数据单元:(i)指示所述多个参考地址寄存器中的哪个是被选择的参考地址寄存器的第一信息;以及(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息;以及
(b)根据所述第二信息和在所述被选择的参考地址寄存器中存储的所述被选择的参考地址确定所述相关存储器地址。
通过将结合附图阅读的说明性实施例的以下详细描述,将明白本发明的以上和其他目的、特征和优点。
附图说明
图1示意性地示出了处理装置、追踪电路、和诊断装置;
图2示出了追踪数据单元的生成,其中相关地址和被选择的参考地址之间的差被指示为具有与被选择的参考地址的相应部分不同的比特值的相关地址的部分;
图3示出了追踪数据单元的生成,其中相关地址和被选择的参考地址之间的差被指示为相关地址和被选择的参考地址之间的数字差;
图4示出了在追踪数据单元中指示相关存储器地址和被选择的参考地址之间存在精确匹配的不同方式;
图5示意性地示出了用于生成追踪数据单元的方法;
图6示意性地示出了分析追踪数据单元流的相应方法;
图7示意性地示出了包括多个参考地址寄存器的参考地址流水线;
图8示意性地示出了用于更新参考地址流水线中的参考地址寄存器的参考地址更新操作;
图9是示出如何响应于处理操作序列所使用的相关存储器地址来更新流水线中的参考地址寄存器的示例的表格;
图10示出了参考地址流水线的另一示例;
图11示出了用于更新图10中所示的形式的流水线中的参考地址的参考地址更新操作;
图12是示出可以如何使用图10和图11的示例来更新参考地址的示例的表格;
图13示出了更新参考地址寄存器中的参考地址的另一示例;
图14示出了固定参考地址寄存器的使用;
图15示出了提供了分别与相关地址范围相关联的范围特定的参考地址寄存器的示例;以及
图16示出了用于响应于锁定信号(lockdown signal)而动态地锁定特定地址寄存器的技术。
具体实施方式
图1示意性地示出了包括处理电路4、存储器系统6、以及追踪电路8的处理装置2。存储器系统6包括用于代表处理电路4存储数据和/或指令的一个或多个缓存单元或存储器单元。处理单元4响应于指令执行处理操作。追踪电路8生成指示由处理电路4执行的处理操作的追踪数据单元流,并且经由追踪输出端口10输出追踪数据单元流。
处理电路4、存储器系统6、以及追踪电路8不必被设置在同一个集成电路上。例如,在一些实施例中,追踪电路8可以被设置为与处理装置2的其余部分分开设置的独立追踪单元。
由追踪电路8生成的追踪数据单元流可以被诊断装置20接收,用于分析追踪流。追踪数据单元在追踪输入端口22处被接收。诊断装置20具有诊断电路24,该诊断电路用于分析追踪数据单元以确定由处理电路4执行的处理操作的处理结果。诊断电路24可以存取在追踪数据被生成时处理电路4所执行的指令的指示。该指示可以被提供,例如,作为存储器系统6中的存储器地址的指示(处理电路从该存储器地址开始执行程序)。替代地,追踪电路8可以在追踪流中包括被执行的指令的指示。另外,诊断装置20本身可以包括用于存储由处理电路4执行的程序的副本的存储器(图1中未示出)。诊断电路24使用由追踪数据单元提供的额外信息以及被执行的指令的指示,来推断处理电路4执行处理操作的结果。追踪数据单元不需要被直接从处理装置2输出到诊断装置20,而可以被追踪电路8存储在存储器设备中,然后由诊断电路24从存储器设备存取。诊断装置20可以是例如,被编程用来分析追踪流的通用计算机。
追踪电路8包括用于存储两个以上参考地址的两个以上参考地址寄存器30-1。当追踪电路8响应于处理电路4执行与相关存储器地址相关联的处理操作而生成追踪数据单元时,追踪电路8选择参考地址寄存器30-1中的一个参考地址寄存器,确定相关存储器地址和被选择的参考地址寄存器的参考地址之间的差,并且生成追踪数据单元,其中该追踪数据单元指示第一信息和第二信息,第一信息指示参考地址寄存器30-1中的哪个参考地址寄存器是被选择的参考地址寄存器,第二信息指示在相关存储器地址和被选择的参考地址寄存器的参考地址之间存在差的情况下它们之间的差。
诊断装置20具有一组相应的参考地址寄存器30-2。当分析追踪流时,诊断电路24保持参考地址寄存器30-2包含与(当追踪流被生成时)追踪电路8的参考地址寄存器30-1中的参考地址相对应的参考地址。当诊断电路碰到处理电路4执行与相关存储器地址相关联的处理操作的指示时,诊断电路24在追踪流中定位与该操作相对应的追踪数据单元。诊断电路24使用追踪数据单元所指示的第一信息来确定参考地址寄存器30-2中的被选择的参考地址寄存器。然后,诊断电路24根据指示相关存储器地址和被选择的参考地址寄存器的参考地址之间的差(如果它们之间存在差的话)的第二信息来确定相关存储器地址的值。
通过在追踪电路8中设置两个以上参考地址寄存器30-1并且在诊断电路24中设置相应的参考地址寄存器30-2,相关存储器地址与参考地址寄存器30-1之一中的参考地址相匹配或者与参考地址之一相似的可能性增大,从而使得追踪数据可以被显著程度压缩的可能性提高。下面,将使用参考数字30来指代追踪电路8和诊断电路24二者的参考地址寄存器,以描述该两组寄存器共有的特征。
一般,追踪电路8选择这样的寄存器30-1作为被选择的参考地址寄存器:如果该参考地址寄存器被用来生成追踪数据单元,则会导致追踪数据单元的最有效的编码。一种处理方式是确定与每个参考地址寄存器30-1相对应的候选值,每个候选值指示相关存储器地址和该参考地址寄存器30-1的相应参考地址之间的差。追踪电路8然后可以选择与最有效的候选值相对应的参考地址寄存器30-1作为被选择的参考地址寄存器。最有效的候选地址可以是例如,可以使用最小数目的比特来表示的值,或者如果被包括在追踪数据单元中将使得追踪流中的追踪数据的总量最小的值。通过选择将导致追踪数据的最有效的编码的参考地址寄存器30-1,可以减少追踪数据的数量。追踪电路8将第一信息包括在追踪数据单元中以用信号通知诊断装置20哪个寄存器30-1被选择,从而使得诊断装置20可以在分析追踪流时在其寄存器30-2中做出相应的选择。
相关存储器地址和被选择的参考地址之间的差可以通过不同方式来指示。图2示出了这样的示例,其中该差被指示为具有与参考地址的相应部分不同的比特值的相关存储器地址的部分。例如,追踪数据单元可以指示不同于参考地址的相应的最低有效比特的相关存储器地址的任意最低有效比特,同时与参考地址的相应比特相同的相关存储器的更高有效比特可以被省略。例如,在图2中,相关存储器地址0x00004012与参考地址寄存器0中的参考地址0x00000000的不同在于0x4012部分。
追踪电路8将相关存储器地址与每个参考地址寄存器30-1中的参考地址相比较,并且确定针对每个参考地址寄存器的候选差值。在图2的示例中,每个候选差值代表不同于相应参考地址的相应部分的相关地址的部分。然后,最有效的候选地址被确定为例如,具有最少比特的候选值、或者将导致最小数量的追踪数据的候选值。然后,相应的参考地址寄存器被选择作为被选择的参考地址寄存器(在图2的示例中,参考地址寄存器1被选择,因为其相应的候选地址提供了最有效的追踪编码)。包括第一信息和第二信息的追踪数据单元被生成,其中第一信息指示参考地址寄存器30-1中的哪个参考地址寄存器是被选择的参考地址寄存器,并且第二信息对应于最有效的候选值。
在该示例中,追踪数据单元包括指示被选择的参考地址寄存器的头部部分40和指示差值的地址部分42。当分析追踪数据单元时,诊断装置20可以使用由头部部分40标识的参考地址寄存器30-2的参考地址和由地址部分42标识的地址差来确定相关存储器地址。替代地,可以设计这样的追踪编码,其中被选择的地址寄存器和差值被编码在追踪数据单元的共有部分中。
图3示出了地址差被指示为相关存储器地址和参考地址之间的数字差的另一实施例。在该示例中,追踪电路8确定针对每个参考地址寄存器30的候选差值,每个候选差值是通过将相关存储器地址和参考地址中的一个与另一个相减获得的。然后,最有效的候选地址可以被选择作为可以使用最少比特来代表的值或者将导致最小数量的追踪数据的值。然后,相应的参考地址寄存器被选择作为用于生成追踪数据单元的被选择的参考地址寄存器。另外,追踪数据单元可以包括头部部分40和地址部分42,或者可以具有这样的编码,其中,被选择的参考地址寄存器可以被标识,并且可以使用共有值来指示的差值。
当分析图3中所示的追踪数据单元时,诊断电路24可以通过将追踪数据单元中所指示的差值与追踪数据单元的头部部分所标识的被选择的参考地址寄存器30-2中存储的地址相加来确定相关存储器地址。
有时,相关存储器地址可以精确匹配参考地址之一。在这种情况中,可以以多种方式对追踪数据进行编码,诸如图4中所示的示例。在示例A中,追踪数据单元通过将追踪数据单元的地址部分设置为零值,来指示相关存储器地址和被选择的参考地址寄存器的参考地址之间存在精确匹配。替代地,在示例B中,地址部分被设置为指示存在精确匹配的标识码。
如图4的示例C中所示,精确匹配也可以由地址部分的缺失来表示。在这种情况下,仅包括头部部分的追踪数据单元可以指示相关存储器地址与头部部分中所标识的参考地址寄存器的参考地址相同。所以,在示例C中,通过地址部分的缺失而不是任意特定的数据值来传达第二信息。
如图4的示例D中所示,标识被选择的参考地址寄存器的地址头还可以被修改为指示与地址寄存器中存储的地址存在精确匹配。
所以,图4示出了相关存储器地址和被选择的参考地址之间的零差可以通过多种方式指示。不必每个追踪数据单元都包括用于指示第一信息和第二信息的单独的值。在示例C和D中,例如,单个数据值提供了第一信息和第二信息二者,其中第一信息标识被选择的参考地址寄存器,第二信息标识存在零差。
一般,追踪电路9将被配置为根据处理电路4所使用的地址来对参考地址寄存器30-1中所存储的参考地址进行更新。给定序列的参考指令有可能多次使用相同或相似的地址。例如,指令序列可以被循环多次,从而使得相同的分支目的地地址可以被重复使用,或者指令序列可能会导致与一系列相邻存储器地址相关联的加载/存储操作。通过根据相关存储器地址有选择地更新参考地址寄存器30-1,相关存储器地址可以被用作用于随后的处理操作的参考地址,从而使得与随后的操作相关联的地址与参考地址之一相似的可能性提高。通过相应的方式,诊断电路24可以基于根据追踪流确定的相关存储器地址来更新其参考地址寄存器30-2的参考地址。
追踪电路8和诊断电路24不需要利用每个相关联的存储器地址来更新参考地址寄存器30。不期望将很多相似的地址添加到参考地址寄存器,因为这将集中将追踪流压缩到可用存储器空间的特定存储器范围的能力。相反,遍及存储器地址空间分布的多个参考地址可以增加相关存储器地址和参考地址之一之间的差相对较小的可能性。所以,在生成追踪数据单元之后,在一个实施例中,追踪电路8可以被配置为将相关联的存储器地址与地址寄存器30-1的现有的参考地址相比较,然后只有在相关存储器地址和现有的参考地址之一之间的差大于预定阈值时才利用相关存储器地址来更新参考地址寄存器30-1之一。诊断电路24也可以执行类似比较,并且以类似于追踪电路8的相应方式更新参考地址寄存器30-2。
可以通过多种方式来确定用于确定是否值得对参考地址寄存器30之一进行更新的阈值,例如,可以将该阈值确定为具有与参考地址的相应部分不同的比特值的相关存储器地址寄存器的部分的比特的阈值数目,或者数字差阈值。如果追踪数据单元包括用于指示相关存储器地址和被选择的参考地址之间的差的地址部分42,则阈值可以对应于地址部分42的最小尺寸。例如,如果地址部分具有4比特的最小尺寸,则可以期望利用相关存储器地址来更新参考地址,其中该相关存储器地址与现有的参考地址之一的区别在于可以由4比特或更少比特表示的地址差(即,如果地址差具有15以下的数字值)。
可以利用存储默认参考地址值的参考地址寄存器30来对追踪电路8和诊断电路24进行初始化。例如,默认值可以是为零的地址值。另外,追踪电路8可以周期性地将参考地址寄存器301-1重新设置到默认值,并且生成追踪同步分组。诊断装置20然后可以通过重新将其参考地址寄存器30-2设置为默认值来响应追踪同步分组。同步事件可以是例如,使得诊断装置20在由追踪同步分组所指示的中间点开始对追踪流进行分析而不是在追踪流开始时开始分析的周期性事件。
图5示出了生成追踪数据单元流的方法。在步骤50,处理装置2响应于指令而开始执行处理操作。追踪电路8监控由处理电路4执行的指令。在步骤52,追踪电路8确定处理电路4是否正在执行用于执行与将要追踪的相关存储器地址相关联的处理操作的指令(追踪单元仅可以追踪相关存储器地址的子集)。
如果当前指令被与将要追踪的相关存储器地址相关联,则在步骤54,追踪电路8确定针对每个参考地址寄存器30-1的候选第二信息。候选第二信息可以是例如,图2和图3的示例中所示的形式的差值。在步骤56,追踪电路8确定最有效的候选第二信息值。例如,最有效的候选第二信息可以是可以利用最少的比特来表示或者将产生最少追踪数据的信息。然后,在步骤58,追踪电路8选择与最有效的候选第二信息相对应的参考地址寄存器30-1作为被选择的参考地址寄存器。在步骤60,追踪电路8生成指示第一信息和第二信息的追踪数据单元。第一信息标识出哪个地址寄存器30-1是被选择的参考地址寄存器。第二信息与最有效的候选第二信息相对应,并且在相关存储器地址和被选择的参考地址寄存器中存储的参考地址之间存在差的情况下指示它们之间的差。然后,追踪数据单元作为追踪流的一部分被输出。然后在步骤62,追踪电路8根据相关联的存储器地址来执行用于有选择地更新至少一个参考地址寄存器30-1的参考地址更新操作。参考地址更新操作可以具有下面将描述的多种形式。
如果在步骤52确定当前指令不是与相关存储器地址相关联的指令,则步骤54至62被省略。追踪电路8可以针对不与将要追踪的存储器地址相关联的指令执行其他类型的追踪操作。
在步骤64,追踪电路8确定处理电路4是否正在处理另一指令。如果存在另一指令,则方法返回到步骤52,同时如果不存在进一步的指令,则方法在步骤66结束。
所以,通过执行图5的方法,追踪电路8可以输出指示处理电路4的操作的追踪数据单元流。当相关存储器地址被追踪时,追踪数据单元标识被选择的参考地址寄存器之一、以及相关存储器地址和被选择的参考地址寄存器的地址之间的差。通过选择可以提供最有效的差信息的参考地址寄存器,可以减少追踪数据的数量。
图6示出了用于分析由追踪电路8生成的追踪数据单元的相应方法。在步骤70,诊断装置20在分析追踪数据单元之前,直接从追踪电路8或者从存储追踪数据单元的存储器或其他存储设备接收追踪数据单元流。诊断装置20还可以在追踪流被生成时存取被处理电路4执行的程序指令的指示。在步骤72,诊断电路24确定处理电路4是否执行了用于执行与将要追踪的相关存储器地址相关联的处理操作的指令。如果存在这样的指令,则在步骤74,诊断电路24在追踪流中定位与该指令相关联的追踪数据单元。追踪数据单元包括标识由追踪电路8选择的被选择的参考地址寄存器的第一信息、以及指示相关存储器地址和被选择的参考地址寄存器的参考地址之间的差的第二信息。诊断电路24然后选择其参考地址寄存器30-2中的与追踪数据单元中指示的第一信息相对应的一个参考地址寄存器。在步骤76,诊断电路24基于追踪数据单元中包括的第二信息和被选择的参考地址寄存器30-2中存储的参考地址来确定相关存储器地址。从而,诊断装置20可以从追踪数据单元中包括的第一和第二信息重新构建出相关存储器地址。在步骤78,诊断装置20以与图5的步骤62相对应的方式,根据相关存储器地址来执行用于有选择地更新参考地址寄存器30-2的参考地址的参考地址更新操作。下面将描述参考更新的不同形式。在下面参考图10至图12描述的一个示例中,由诊断装置20执行的参考地址更新操作取决于哪个参考地址寄存器30-2是被选择的参考地址寄存器(诊断装置20可以从追踪数据单元中所指示的第一信息识别出被选择的参考地址寄存器),并且还可以取决于控制参考地址寄存器被更新的方式的阈值差值。
如果在步骤72处,该指示是其指令不与将要追踪的相关存储器地址相关联的指示,则步骤74至78可以被诊断电路24省略。诊断电路24可以针对这些指令执行其他类型的追踪分析。
在步骤80,诊断电路24确定是否存在由处理电路4执行的另一指令的指示。如果没有更多指令被执行,则该方法在步骤82结束,否则新的方法返回到步骤72。
现在将描述在图5和图6的步骤62和78中执行的参考地址更新操作的各种示例。在图7的示例中,至少一些参考地址寄存器30被配置为形成参考地址流水线。该流水线不需要包括所有的参考地址寄存器30,并且在一些示例中可以仅包括寄存器30的子集。当生成追踪数据单元时,追踪电路8可以选择流水线中的任意一个寄存器作为被选择的参考地址寄存器。为了更新参考地址中的一个参考地址,相关存储器地址被写入流水线中的第一个参考地址寄存器,并且流水线中的地址被移位到流水线中的下一寄存器。流水线的最后一个寄存器中的地址被移出流水线。
图8示出了针对图7的示例的步骤62和78的参考地址更新操作。流水线中存在N个参考地址寄存器。在步骤100,第一至第N-1个参考地址寄存器的参考地址被移位到流水线中的下一参考地址寄存器。然后,在步骤102,相关存储器地址被写入流水线中的第一个参考地址寄存器。以这种方似乎,最新的相关存储器地址总是处于流水线的前端,并且流水线中的连续的寄存器包含有逐渐变老的相关存储器地址。
图9示出了用于包括地址寄存器0和地址寄存器1两个地址寄存器的流水线的参考地址更新操作的示例的表格。图9示出了针对一系列六个相关存储器地址的六个追踪数据单元的生成。
两个地址寄存器最初都存储默认地址0x00000000。响应于相关地址0x00000001,这些寄存器之一(例如,寄存器0)被选择作为被选择的参考地址寄存器,并且指示被选择的地址寄存器和地址值0x01的追踪地址单元被生成,其中地址值0x01指示不同于被选择的地址寄存器中的地址的相应部分的相关存储器地址的部分。然后,相关存储器地址被放入地址寄存器0,并且地址寄存器0中存储的值被移位到地址寄存器1。
类似地,在图9的每个步骤,导致最有效的追踪数据单元的地址寄存器被选择,利用被选择的地址寄存器生成了追踪数据单元,并且相关存储器地址被移位到流水线中。例如,在图9的步骤4和步骤5,相对于地址寄存器0中存储的地址来说,相关存储器地址更类似于地址寄存器1中存储的地址,所以在这种情况中地址寄存器1被选择作为被选择的参考地址。
当诊断电路24分析追踪流,然后以类似于追踪电路8的方式更新地址寄存器30-2时,诊断电路24的地址寄存器30-2中存储的值将以与追踪电路8中的寄存器30-1相对应的方式改变。
图10至图12示出了追踪电路8和诊断电路24所使用的参考地址流水线的另一示例。再次,该流水线包括N个参考地址寄存器30。在该示例中,更新流水线的方式取决于哪个参考地址寄存器被选择作为用于生成追踪数据单元的被选择的参考地址寄存器。每个参考地址寄存器30被与相应的使能信号105相关联,其中该使能信号控制是否利用流水线的前一寄存器中存储的地址来更新参考地址寄存器30(或者在流水线的第一个参考地址寄存器的情况中,是否利用相关存储器地址对其进行更新)。当相关存储器地址被追踪时,被选择的参考地址寄存器不是流水线中的第一个参考地址寄存器,用于第二个参考地址寄存器到被选择的参考地址寄存器的使能信号被设置为“真”值,从而使得这些寄存器能够捕捉流水线的前一寄存器中存储的地址。流水线中被选择的参考地址寄存器进一步向上的参考地址寄存器使得它们的使能信号被设置为“假”值,从而使得相对应的参考地址不变。利用新的相关存储器地址来有选择地对第一个参考地址寄存器进行更新。
例如,在图10中,流水线中的第四个地址寄存器是被选择的参考地址寄存器。在这种情况中,用于流水线的第二到第四个寄存器30的使能信号被设置为“真”值,从而使得第二到第四个寄存器30能够捕捉先前分别存储在第一至第三寄存器30中的地址。同样,用于第一个参考地址寄存器的使能信号也被设置为“真”值,从而使得第一个参考地址寄存器能够捕捉相关存储器地址。相反,流水线中的第五至第七个参考地址寄存器使它们的使能信号被设置为“假”值,从而使得这些寄存器中存储的地址不变。
在图10的示例中,如果一个以上的地址寄存器可以被用来产生同等有效的追踪数据,则追踪电路8选择最接近流水线的末端的寄存器(即,驻留在流水线中最长时间的地址)作为被选择的地址寄存器。所以,最后一个地址寄存器将取得优先级,然后倒数第二个地址寄存器,然后是倒数第三个地址寄存器,等等。通过在较老的参考地址和较新的参考地址产生同等有效的追踪数据时优先选择较老的参考地址而不选择较新的参考地址,追踪电路8将倾向于保持流水线中的最有用的参考地址。
当流水线的第一个参考地址寄存器是用于生成追踪数据单元的被选择的参考地址寄存器时,存在用于更新参考地址的特殊情况。在这种情况中,追踪电路8或者诊断电路24可以确定相关存储器地址和第一个参考地址寄存器的参考地址之间的差。如果该差没有超过给定阈值,则第一个参考地址寄存器被更新,同时保持其他地址寄存器不变。另一方面,如果该差超过了阈值,则流水线的第二个到最后一个地址寄存器被分别利用流水线的前一寄存器中存储的地址更新,并且相关参考地址被写到第一个地址寄存器。这种机制通过避免将在所有地址寄存器中留下相似的值的过多的流水线移位,实现了遍及存储器空间的地址范围的地址的更好分布。
图11示出了当地址寄存器的子集形成图10中所示的参考地址流水线时可以在图5和图6的步骤62和78中执行的参考地址更新操作的示例。在步骤110,追踪电路8或者诊断电路24确定流水线中N个寄存器中的哪个寄存器是被选择的参考地址寄存器。被选择的地址寄存器是流水线的第M个寄存器(0≤M≤N)。追踪电路8或者诊断电路24还确定M是否等于1。
如果M不等于1,则在步骤112,第一至第M-1个地址寄存器的参考地址被移位到流水线中的下一寄存器。该方法然后进行到步骤114。在步骤114,相关存储器地址被写到流水线的第一个寄存器。
另一方面,如果M=1,则在步骤116,确定相关存储器地址和流水线中的第一个寄存器的参考地址之间的差是否大于给定阈值。如果差不大于该阈值,则该方法进行到步骤114,在步骤114,相关存储器地址被写到第一个寄存器,而无需修改流水线的其他地址寄存器中的地址。如果在步骤116,相关存储器地址和第一个参考地址之间的差大于阈值,则在步骤118,在将相关存储器地址写到第一个寄存器的步骤114之前,流水线的第一至第N-1个寄存器的参考地址被移位到流水线的下一寄存器。
总之,图11的参考地址更新操作确保了在不同于第一个参考地址寄存器的参考地址寄存器被用作被选择的参考地址寄存器的情况下,所使用的参考地址被从流水线移除,流水线中的任意先前的地址被向上移位一阶,并且相关存储器地址被添加到流水线的第一阶。该技术导致所使用的参考地址被相关存储器地址所替代,从而避免了流水线中出现多个相似的地址,但是还确保了相关存储器地址被添加到流水线的前端,从而使得最新添加的参考地址将比任何较老的参考地址被保留在流水线中更长时间。当第一个参考地址寄存器是被选择的参考地址寄存器时,只有在第一个参考地址值与相关存储器地址相差预定量以上的情况下流水线中的地址才被移位一阶。这也有助于确保参考地址寄存器不包含多个相似的参考地址值。
图12示出了示出将图10和11的技术应用于具有两个参考地址寄存器的流水线的示例的表格。在该示例中,假设追踪数据单元中的地址部分的最小尺寸为8比特(即,2个十六进制数,例如,值0x01具有最小地址部分尺寸)。所以,图11的步骤116中所使用的预定阈值与最小尺寸8比特相对应。该阈值可以被规定为8比特的阈值部分尺寸,或者255的阈值数字差(其是可以用8比特表示的最大值)。
在图12的头两个步骤,流水线的第一个参考地址寄存器(参考地址寄存器0)是被选择的参考地址寄存器,并且相关存储器地址和流水线中的第一个参考地址寄存器的被选择的参考地址之间的差不大于预定的阈值(因为步骤1中的差0x01和步骤2中的差0x21可以利用最小部分尺寸来表示)。所以,在步骤1和2中,流水线中的地址不被移位一阶。相反,地址寄存器0的参考地址被利用相关存储器地址覆写(在图11的步骤116和114之后)。
但是,在图12的步骤3,参考地址寄存器0是被选择的参考地址寄存器,并且相关存储器地址和参考地址寄存器0中的值之间的差0x30000000大于阈值,所以在这种情况中流水线中的值被根据图11的步骤118移位一阶,并且相关存储器地址被写入参考地址寄存器0。
然后,在图12的步骤4和5,参考地址寄存器1是被选择的参考地址寄存器。在这种情况中,参考地址寄存器0中的值被移位以被存储在参考地址寄存器1中(根据图11的步骤112),并且相关存储器地址被写入参考地址寄存器0(根据图1的步骤114)。
在图12的步骤6,流水线中不再有移位,因为不同于第一个地址寄存器中的地址值的相应部分的相关存储器地址的部分为0x08,其没有超过8比特的阈值部分尺寸。
在图12中所示的每个步骤中,标识相关存储器地址和被选择的地址寄存器中的地址值之间的差以及被选择的地址寄存器的追踪数据单元被生成。在分析追踪数据时,诊断电路24以与追踪电路8相对应的方式修改地址寄存器中的地址。
尽管图9和图12的示例示出了相关地址和被选择的参考地址之间的地址差由具有与参考地址的相应部分不同的比特值的相关地址的部分所指示,但是将明白,该技术也可以被应用于追踪数据单元指示作为通过将相关地址和被选择的参考地址中的一个与另一个相减获得的数字差值的地址差。
图13示出了更新参考地址寄存器30中的参考地址的另一示例。与如图7和图10中所示地在物理上将地址从一个参考地址寄存器移位到另一个参考地址寄存器不同,相关存储器地址可以被写入被选择的牺牲参考地址寄存器,同时其他参考地址寄存器保持不变。追踪电路8或者诊断电路24可以执行各种类型的牺牲选择算法来选择牺牲参考地址寄存器,例如,最近使用的、轮循的、或者任意的牺牲选择算法。
例如,地址寄存器30可以被认为形成了表格或者类似于缓冲器的结构。指针可以被追踪电路8或者诊断电路24保持,以指示最近更新的寄存器。当选择牺牲寄存器时,追踪电路8或者诊断电路24可以选择当前利用指针指示的寄存器后面的寄存器(如果表格中的最后一个寄存器是当前利用指针指示的寄存器,则追踪电路8或者诊断电路24可以选择表格中的第一个寄存器)。追踪电路8或者诊断电路24然后可以利用相关存储器地址来更新被选择的牺牲寄存器,并且将指针修改为指示新近选择的牺牲寄存器。通过在相关存储器地址每次被写入参考地址寄存器30时重复这种牺牲选择算法,追踪电路8或者诊断电路24将以循环序列更新寄存器从而使得最早更新的地址寄存器下一个将被选择作为牺牲寄存器。
图13的相关存储器地址被写入被选择的牺牲参考地址寄存器的实施例可以比存在很多参考地址寄存器的流水线实施例更加有效。
图14示出了其中除了多个可更新的参考地址寄存器120(它们是根据图7至12的流水线的部分,或者图13所示的表格或类似于缓冲器的结构),还存在不能被更新的至少一个固定的参考地址寄存器122。固定的参考地址寄存器122存储预先定义的参考地址值。例如,固定的参考地址寄存器可以被配置为存储已知在给定程序中被频繁使用的地址。
图15示出了参考地址寄存器中的一些与特定的地址范围相关联从而仅可以利用该地址范围中的相关存储器地址来更新它们的另一示例。如果被追踪的相关存储器地址处于针对特定寄存器所规定的地址范围外,则该寄存器被排除在寄存器更新处理之外。这可以被用来例如,确保存在与不同范围的存储器空间相关联的参考地址的广泛选择。
图16示出了追踪电路8和诊断电路24响应于用于动态锁定某些寄存器从而使得它们不再被更新的外部锁定信号的示例。例如,锁定寄存器可以被排除在图7至图12中所示的流水线之外,或者可以被排除在牺牲选择算法之外。所以,如果特定的参考地址寄存器30存储有已知的对于随后的指令集合有用的参考地址,则锁定信号可以被提供以确保参考地址将不被从参考地址寄存器30赶出。
为了使诊断电路24以与追踪电路8相对应的方式锁定其寄存器30-2,在诊断电路24分析追踪数据单元时相应的锁定信号可以被提供给诊断电路24。替代地,追踪电路8可以在追踪流中包括指示锁定信号的哪些值被使用的信息,从而使得诊断电路24可以通过与追踪电路的寄存器30-1相对应的方式锁定其寄存器30-2。
应该理解,用于更新参考地址寄存器的图7至图16中所示的各种技术可以被结合使用,例如,在流水线中设置的寄存器的子集中,至少一个其他寄存器存储有固定的预定值,或者与特定的地址范围相关联。
尽管本文中详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些明确的实施例,并且在不脱离所附权利要求所限定的本发明的范围的条件下本领域技术人员可以对本发明做出各种改变和修改。
Claims (52)
1.一种数据处理装置,包括:
存储器,所述存储器包括由相应的存储器地址标识的多个存储器位置;
处理电路,被配置为响应于指令而执行处理操作;
追踪电路,被配置为生成指示由所述处理电路执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪电路包括被配置为存储多个参考地址的多个参考地址寄存器;并且
所述追踪电路响应于所述处理电路处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器之一作为被选择的参考地址寄存器,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器中的哪个是所述被选择的参考地址寄存器的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息。
2.根据权利要求1所述的数据处理装置,其中,所述追踪数据单元包括指示所述第一信息的头部部分以及指示所述第二信息的地址部分。
3.根据权利要求2所述的数据处理装置,其中,在所述相关存储器地址和所述被选择的存储器地址之间的差为零的情况下,所述追踪电路从所述追踪数据单元中省略所述地址部分。
4.根据权利要求1所述的数据处理装置,其中,所述追踪电路被配置为确定与所述多个参考地址寄存器相对应的多个候选第二信息值,其中每个候选第二信息值指示所述相关存储器地址和在相应参考地址存储器中存储的参考地址之间的差;并且
所述追踪电路被配置为选择所述参考地址寄存器中的与最有效的候选第二信息值相对应的一个参考地址寄存器作为所述被选择的参考地址寄存器,并且生成具有与所述最有效的候选第二信息值相对应的所述第二信息的所述追踪数据单元。
5.根据权利要求4所述的数据处理装置,其中,所述最有效的候选第二信息值是能够使用最少数目的比特来表示其相应第二信息的候选第二信息值。
6.根据权利要求4所述的数据处理装置,其中,所述最有效的候选第二信息值是这样的候选第二信息值:其相应第二信息在被包括在所述追踪数据单元流内的所述追踪数据单元中的情况下会使得所述追踪数据单元流内的追踪数据的总量最小。
7.根据权利要求1所述的数据处理装置,其中,所述第二信息指示所述相关存储器地址中的具有与所述被选择的参考地址寄存器的所述被选择的参考地址的相应部分不同的比特值的部分。
8.根据权利要求1所述的数据处理装置,其中,所述第二信息指示所述相关存储器地址和所述被选择的参考地址之间的数字差。
9.根据权利要求1所述的数据处理装置,其中,所述追踪电路被配置为在生成所述追踪地址单元之后,执行参考地址更新操作,用于根据所述相关存储器地址,有选择地更新所述多个参考地址寄存器中的至少一个参考地址寄存器的参考地址。
10.根据权利要求9所述的数据处理装置,其中,所述参考地址更新操作包括将所述相关存储器地址写到所述多个参考地址寄存器中的牺牲参考地址寄存器中。
11.根据权利要求9所述的数据处理装置,其中,所述参考地址更新操作包括:
(a)针对至少一个参考地址寄存器,确定相应的参考地址和所述相关存储器地址之间的地址差是否超过了预定阈值;以及
(b)针对所述至少一个参考地址寄存器中的每一个参考地址寄存器,如果所述地址差超过所述预定阈值,则将所述相关存储器地址写到从所述至少一个参考地址寄存器中选择的牺牲参考地址寄存器中。
12.根据权利要求11所述的数据处理装置,其中,所述追踪数据单元包括指示所述第二信息的地址部分,并且所述预定阈值对应于所述地址部分的最小尺寸。
13.根据权利要求10所述的数据处理装置,其中,所述追踪电路被配置为执行牺牲选择操作,用于选择所述多个参考地址寄存器中哪个是所述牺牲参考地址寄存器。
14.根据权利要求9所述的数据处理装置,其中,所述追踪电路响应于锁定信号,有选择地将至少一个参考地址寄存器排除在所述参考地址更新操作的更新之外。
15.根据权利要求9所述的数据处理装置,其中,所述多个参考地址寄存器中的至少一个是用于存储预先定义的参考地址的固定参考地址寄存器,所述固定参考地址寄存器被排除在所述参考地址更新操作的更新之外。
16.根据权利要求9所述的数据处理装置,其中,所述多个参考地址寄存器中的至少一个是与所述存储器地址的相关范围相关联的范围特定的参考地址寄存器,在所述相关存储器地址处于所述存储器地址的所述相关范围之外的情况下,所述范围特定的参考地址寄存器被排除在所述参考地址更新操作的更新之外。
17.根据权利要求9所述的数据处理装置,其中,所述多个参考地址寄存器的至少一个子集被耦合以形成参考地址流水线,并且所述参考地址更新操作包括根据所述相关存储器地址来更新所述参考地址流水线中的参考地址。
18.根据权利要求17所述的数据处理装置,其中,所述参考地址流水线包括N个参考地址寄存器;并且
所述参考地址更新操作包括:将所述参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器,并且将所述相关存储器地址写到所述参考地址流水线的第一个参考地址寄存器中。
19.根据权利要求17所述的数据处理装置,其中,所述参考地址流水线包括N个参考地址寄存器,所述被选择的参考地址寄存器包括所述参考地址流水线的第M个参考地址寄存器,其中1≤M≤N,并且所述参考地址更新操作包括:
在M>1的情况下,则将所述参考地址流水线的第一至第M-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器;以及
将所述相关存储器地址写到所述参考地址流水线的第一个参考地址寄存器中。
20.根据权利要求19所述的数据处理装置,其中,在M=1的情况下,所述流水线更新操作进一步包括:
判断所述相关存储器地址和所述第一个参考地址寄存器的参考地址之间的差是否超过了预定阈值;以及
如果所述差超过了所述预定阈值,则在将所述相关存储器地址写到所述参考地址流水线的所述第一个参考地址寄存器中之前,将所述参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器。
21.根据权利要求19所述的数据处理装置,其中,所述追踪电路被配置为确定与所述N个参考地址寄存器相对应的N个候选第二信息值,每个候选第二信息值指示所述相关存储器地址和在相应参考地址寄存器中存储的参考地址之间的差;
所述追踪电路被配置为选择所述N个参考地址寄存器中的与最有效的候选第二信息值相对应的一个参考地址寄存器作为所述被选择的参考地址寄存器;并且
在存在相应的候选第二信息值同等高效的多个参考地址寄存器的情况下,所述追踪电路选择所述多个参考地址寄存器中的最接近所述参考地址流水线的末端的一个参考地址寄存器作为所述被选择的参考地址寄存器。
22.根据权利要求1所述的数据处理装置,其中,所述追踪电路响应于初始化事件,将默认参考地址存储到所述多个参考地址寄存器中的每一个参考地址寄存器中。
23.根据权利要求22所述的数据处理装置,其中,所述初始化事件是所述追踪电路被激活。
24.根据权利要求22所述的数据处理装置,其中,所述初始化事件是用于触发所述追踪电路生成并输出追踪同步数据单元的追踪同步事件。
25.根据权利要求1所述的数据处理装置,其中,所述处理电路被配置为响应于多种不同类型的数据处理指令来执行数据处理操作;并且
针对所述多种类型的数据处理指令中的每一种,所述追踪电路被配置为选择所述多个参考地址寄存器中的任一个作为所述被选择的地址寄存器,使得所述追踪电路使用相同的参考地址寄存器来生成指示不同类型的数据处理指令的追踪数据单元。
26.根据权利要求25所述的数据处理装置,其中所述多种类型的数据处理指令包括以下指令中的至少两种:
分支指令;
当例外事件发生时执行的指令;
在所述例外事件发生后转向执行的指令;
当前由所述处理电路执行的指令;
加载指令;以及
存储指令。
27.一种数据处理装置,包括:
存储器部件,用于存储数据,所述存储器部件包括由相应的存储器地址标识的多个存储器位置;
处理部件,用于响应于指令而执行处理操作;以及
追踪部件,用于生成指示由所述处理部件执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪部件包括用于存储多个参考地址的多个参考地址寄存器部件;并且
所述追踪部件响应于所述处理部件处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器部件之一作为被选择的参考地址寄存器部件,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器部件中的哪个是所述被选择的参考地址寄存器部件的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器部件中存储的被选择的参考地址之间的差的第二信息。
28.一种用于数据处理装置的数据处理方法,该数据处理装置包括存储器,该存储器包括由相应的存储器地址标识的多个存储器地址,所述方法包括以下步骤:
响应于指令执行处理操作;
将多个参考地址存储在多个参考地址寄存器中;
生成指示由所述处理电路执行的所述处理操作的追踪数据单元流;以及
输出所述追踪数据单元流;其中:
所述生成追踪数据单元流的步骤包括:响应于与相关存储器地址相关联的处理操作的执行,选择所述多个参考地址寄存器之一作为被选择的参考地址寄存器,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器中的哪个是所述被选择的参考地址寄存器的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息。
29.一种追踪单元,用于监控处理装置响应于指令而执行的处理操作,所述处理装置包括存储器,所述存储器包括由相应的存储器地址标识的多个存储器位置;所述追踪单元包括:
追踪电路,被配置为生成指示由所述处理装置执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪电路包括被配置为存储多个参考地址的多个参考地址寄存器;并且
所述追踪电路响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器之一作为被选择的参考地址寄存器,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器中的哪个是所述被选择的参考地址寄存器的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息。
30.一种追踪单元,用于监控处理装置响应于指令而执行的处理操作,所述处理装置包括用于存储数据的存储器部件,所述存储器部件包括由相应的存储器地址标识的多个存储器位置,所述追踪单元包括:
追踪部件,用于生成指示由所述处理装置执行的所述处理操作的追踪数据单元流,并且输出所述追踪数据单元流;其中:
所述追踪部件包括用于存储多个参考地址的多个参考地址寄存器部件;并且
所述追踪部件响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令,选择所述多个参考地址寄存器部件之一作为被选择的参考地址寄存器部件,生成并输出指示以下内容的追踪数据单元:
(i)指示所述多个参考地址寄存器部件中的哪个是所述被选择的参考地址寄存器部件的第一信息;以及
(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器部件中存储的被选择的参考地址之间的差的第二信息。
31.一种诊断装置,用于分析指示处理装置响应于指令而执行的处理操作的追踪数据单元流,所述处理装置包括存储器,所述存储器包括由相应存储器地址标识的多个存储器位置,所述诊断装置包括:
追踪输入端,用于接收所述追踪数据单元流;以及
诊断电路,被配置为分析所述追踪数据单元流,以确定所述处理操作的处理结果;其中:
所述诊断电路包括被配置为存储多个参考地址的多个参考地址寄存器;并且
所述诊断电路响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令,而执行以下处理:
(a)在所述追踪数据单元流中定位指示以下内容的追踪数据单元:(i)指示所述多个参考地址寄存器中的哪个是被选择的参考地址寄存器的第一信息;以及(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息;以及
(b)根据所述第二信息和在所述被选择的参考地址寄存器中存储的所述被选择的参考地址来确定所述相关存储器地址。
32.根据权利要求31所述的诊断装置,其中,所述追踪数据单元包括指示所述第一信息的头部部分和指示所述第二信息的地址部分。
33.根据权利要求32所述的诊断装置,其中,在所述追踪数据单元不包括所述地址部分的情况下,所述诊断电路确定所述相关存储器地址与所述被选择的参考地址相同。
34.根据权利要求31所述的诊断装置,其中,所述第二信息指示所述相关存储器地址的具有与所述被选择的参考地址寄存器的所述被选择的参考地址的相应部分不同的比特值的部分;并且
所述诊断电路被配置为确定所述相关存储器地址具有等于如下得到的值的地址值:(i)从所述被选择的参考地址的比特值开始;(ii)用所述第二信息所指示的所述相关存储器地址的所述部分的比特值来替换所述被选择的参考地址的所述相应部分的比特值。
35.根据权利要求31所述的诊断装置,其中,所述第二信息指示所述相关存储器地址和所述被选择的参考地址之间的数字差;并且
所述诊断电路被配置为通过将由所述第二信息所指示的所述数字差加到所述被选择的参考地址上来确定所述相关存储器地址。
36.根据权利要求31所述的诊断装置,其中,所述诊断电路被配置为在确定所述相关存储器地址之后,执行参考地址更新操作,用于根据所述相关存储器地址来有选择地更新所述多个参考地址寄存器之一的参考地址。
37.根据权利要求36所述的诊断装置,其中,所述参考地址更新操作包括将所述相关存储器地址写到所述多个参考地址寄存器中的牺牲参考地址寄存器。
38.根据权利要求36所述的诊断装置,其中,所述参考地址更新操作包括:
(i)针对至少一个参考地址寄存器,判断相应参考地址和所述相关存储器地址之间的地址差是否超过预定阈值;以及
(ii)针对所述至少一个参考地址寄存器中的每一个参考地址寄存器,如果所述地址差超过了所述预定阈值,则将所述相关存储器地址写到从所述至少一个参考地址寄存器中选择的牺牲参考地址寄存器中。
39.根据权利要求38所述的诊断装置,其中,所述追踪数据单元包括指示所述第二信息的地址部分,并且所述预定阈值对应于所述地址部分的最小尺寸。
40.根据权利要求37所述的诊断装置,其中,所述诊断电路被配置为执行牺牲选择操作,用于选择所述多个参考地址寄存器中的哪个是所述牺牲参考地址寄存器。
41.根据权利要求36所述的诊断装置,其中,所述诊断电路响应于锁定信号,有选择地将至少一个参考地址寄存器排除在由所述参考地址更新操作的更新之外。
42.根据权利要求36所述的诊断装置,其中,所述多个参考地址寄存器中的至少一个是用于存储预先定义的参考地址的固定参考地址寄存器,所述固定参考地址寄存器被排除在由所述参考地址更新操作的更新之外。
43.根据权利要求36所述的诊断装置,其中,所述多个参考地址寄存器中的至少一个是与所述存储器地址的相关范围相关联的范围特定的参考地址寄存器,在所述相关存储器地址处于所述存储器地址的所述相关范围之外的情况下,所述范围特定的参考地址寄存器被排除在由所述参考地址更新操作的更新之外。
44.根据权利要求36所述的诊断装置,其中,所述多个参考地址寄存器的至少一个子集被耦合以形成参考地址流水线,并且所述参考地址更新操作包括根据所述相关存储器地址来更新所述参考地址流水线中的参考地址。
45.根据权利要求44所述的诊断装置,其中,所述参考地址流水线包括N个参考地址寄存器;并且
所述参考地址更新操作包括:将所述参考地址流水线的第1至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器,并且将所述相关存储器地址存储到所述参考地址流水线的第一个参考地址寄存器中。
46.根据权利要求44所述的诊断装置,其中,所述参考地址流水线包括N个参考地址寄存器,所述被选择的参考地址寄存器包括所述参考地址流水线的第M个参考地址寄存器,其中1≤M≤N,并且所述参考地址更新操作包括:
在M>1的情况下,则将所述参考地址流水线的第一至第M-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器;以及
将所述相关存储器地址存储到所述参考地址流水线的第一个参考地址寄存器中。
47.根据权利要求46所述的诊断装置,其中,在M=1的情况下,所述参考地址更新操作进一步包括:
判断所述相关存储器地址和所述第一个参考地址寄存器的参考地址之间的差是否超过预定阈值;以及
如果所述差超过了所述预定阈值,则在将所述相关存储器地址写到所述参考地址流水线的所述第一个参考地址寄存器中之前,将所述参考地址流水线的第一至第N-1个参考地址寄存器中的参考地址移位到所述参考地址流水线的下一参考地址寄存器。
48.根据权利要求31所述的诊断装置,其中,所述诊断电路响应于初始化事件,将默认参考地址存储到所述多个参考地址寄存器中的每一个参考地址寄存器中。
49.根据权利要求48所述的诊断装置,其中,所述初始化事件是所述诊断电路被激活。
50.根据权利要求48所述的诊断装置,其中,所述初始化事件是所述诊断电路对所述追踪数据单元流中的追踪同步数据单元进行响应。
51.一种诊断装置,用于分析指示处理装置响应于指令而执行的处理操作的追踪数据单元流,所述处理装置包括用于存储数据的存储器部件,所述存储器部件包括由相应的存储器地址标识的多个存储器位置,所述诊断装置包括:
追踪输入部件,用于接收所述追踪数据单元流;以及
诊断部件,用于分析所述追踪数据单元流,以确定所述处理操作的处理结果;其中:
所述诊断部件包括用于存储多个参考地址的多个参考地址寄存器部件;并且
所述诊断部件响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令的指示,而进行以下处理:
(a)在所述追踪数据单元流中定位指示以下内容的追踪数据单元:(i)指示所述多个参考地址寄存器部件中的哪个是被选择的参考地址寄存器部件的第一信息;以及(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器部件中存储的被选择的参考地址之间的差的第二信息;以及
(b)根据所述第二信息和在所述被选择的参考地址寄存器部件中存储的所述被选择的参考地址来确定所述相关存储器地址。
52.一种用于分析指示处理装置响应于指令而执行的处理操作的追踪数据单元流的方法,所述处理装置包括存储器,所述存储器包括由相应的存储器地址标识的多个存储器位置,所述方法包括以下步骤:
接收所述追踪数据单元流;
将多个参考地址存储在多个参考地址寄存器中;以及
分析所述追踪数据单元流,以确定所述处理操作的处理结果,其中:
所述分析的步骤包括响应于所述处理装置处理用于执行与相关存储器地址相关联的处理操作的指令的指示,而进行以下处理:
(a)在所述追踪数据单元流中定位指示以下内容的追踪数据单元:(i)指示所述多个参考地址寄存器中的哪个是被选择的参考地址寄存器的第一信息;以及(ii)指示所述相关存储器地址和在所述被选择的参考地址寄存器中存储的被选择的参考地址之间的差的第二信息;以及
(b)根据所述第二信息和在所述被选择的参考地址寄存器中存储的所述被选择的参考地址来确定所述相关存储器地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1015181.9A GB2483509B (en) | 2010-09-13 | 2010-09-13 | Data processing apparatus, trace unit and diagnostic apparatus |
GB1015181.9 | 2010-09-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402476A true CN102402476A (zh) | 2012-04-04 |
CN102402476B CN102402476B (zh) | 2016-02-10 |
Family
ID=43065062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110276448.2A Active CN102402476B (zh) | 2010-09-13 | 2011-09-13 | 数据处理装置、追踪单元和诊断装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8788887B2 (zh) |
JP (1) | JP5680511B2 (zh) |
CN (1) | CN102402476B (zh) |
GB (1) | GB2483509B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9164821B2 (en) | 2012-12-14 | 2015-10-20 | International Business Machines Corporation | Performing diagnostic tracing of an executing application to identify suspicious pointer values |
US10348626B1 (en) * | 2013-06-18 | 2019-07-09 | Marvell Israel (M.I.S.L) Ltd. | Efficient processing of linked lists using delta encoding |
CN103984614B (zh) | 2014-05-06 | 2017-07-21 | 华为技术有限公司 | 一种监控方法及监控装置、电子设备 |
US9524227B2 (en) | 2014-07-09 | 2016-12-20 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
CN111858256B (zh) * | 2015-12-25 | 2024-05-28 | 北京忆芯科技有限公司 | 命令队列监控电路、数据交换方法及其设备 |
US10216562B2 (en) | 2016-02-23 | 2019-02-26 | International Business Machines Corporation | Generating diagnostic data |
GB2551747B (en) * | 2016-06-29 | 2019-04-10 | Advanced Risc Mach Ltd | Diagnostic data capture |
KR102538258B1 (ko) * | 2016-07-25 | 2023-05-31 | 삼성전자주식회사 | 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템 |
US10506079B2 (en) | 2017-09-14 | 2019-12-10 | Arm Limited | Packet compression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003280941A (ja) * | 2002-03-26 | 2003-10-03 | Toshiba Corp | トレースデータ圧縮装置、トレースデータ圧縮方法及びトレースデータ圧縮回路を内蔵したマイクロコンピュータ |
JP2004178591A (ja) * | 2002-11-22 | 2004-06-24 | Texas Instruments Inc | ダイナミック・トレース用プログレッシブ拡張圧縮マスク |
JP2006268746A (ja) * | 2005-03-25 | 2006-10-05 | Toshiba Corp | マイクロプロセッサおよびその制御方法 |
US20080288741A1 (en) * | 2007-04-18 | 2008-11-20 | Li Lee | Data Access Tracing |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3629181B2 (ja) | 2000-03-28 | 2005-03-16 | Necマイクロシステム株式会社 | プログラム開発支援装置 |
JP2003085000A (ja) * | 2001-09-10 | 2003-03-20 | Mitsubishi Electric Corp | トレース情報生成装置およびその方法 |
JP2009042815A (ja) | 2007-08-06 | 2009-02-26 | Renesas Technology Corp | 半導体集積回路及びデバッグシステム |
-
2010
- 2010-09-13 GB GB1015181.9A patent/GB2483509B/en active Active
-
2011
- 2011-08-03 US US13/137,273 patent/US8788887B2/en active Active
- 2011-09-08 JP JP2011195900A patent/JP5680511B2/ja active Active
- 2011-09-13 CN CN201110276448.2A patent/CN102402476B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003280941A (ja) * | 2002-03-26 | 2003-10-03 | Toshiba Corp | トレースデータ圧縮装置、トレースデータ圧縮方法及びトレースデータ圧縮回路を内蔵したマイクロコンピュータ |
JP2004178591A (ja) * | 2002-11-22 | 2004-06-24 | Texas Instruments Inc | ダイナミック・トレース用プログレッシブ拡張圧縮マスク |
JP2006268746A (ja) * | 2005-03-25 | 2006-10-05 | Toshiba Corp | マイクロプロセッサおよびその制御方法 |
US20080288741A1 (en) * | 2007-04-18 | 2008-11-20 | Li Lee | Data Access Tracing |
Also Published As
Publication number | Publication date |
---|---|
GB201015181D0 (en) | 2010-10-27 |
US8788887B2 (en) | 2014-07-22 |
JP5680511B2 (ja) | 2015-03-04 |
JP2012113691A (ja) | 2012-06-14 |
GB2483509B (en) | 2017-08-02 |
CN102402476B (zh) | 2016-02-10 |
GB2483509A (en) | 2012-03-14 |
US20120066552A1 (en) | 2012-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402476A (zh) | 数据处理装置、追踪单元和诊断装置 | |
US9886017B2 (en) | Counter operation in a state machine lattice | |
KR102376117B1 (ko) | 병렬 결정 트리 프로세서 아키텍처 | |
US20140325494A1 (en) | Methods and systems for detection in a state machine | |
US8417923B2 (en) | Data processing apparatus having trace and prediction logic | |
US9703574B2 (en) | Overflow detection and correction in state machine engines | |
WO2013090092A1 (en) | Boolean logic in a state machine lattice | |
WO2014035700A1 (en) | Instruction insertion in state machine engines | |
CN104331269A (zh) | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 | |
CN111367786B (zh) | 一种符号执行方法、电子设备以及存储介质 | |
CN112100627B (zh) | 适用于拟态防御系统的多队列随机参数归一化装置及方法 | |
US20150262063A1 (en) | Decision tree processors | |
CN115576840B (zh) | 基于机器学习的静态程序插桩检测方法及装置 | |
CN102270111B (zh) | 一种指令译码方法和指令译码装置 | |
CN114665885B (zh) | 一种时序数据库自适应数据压缩方法 | |
Gong et al. | Enabling fast and memory-efficient acceleration for pattern matching workloads: The lightweight automata processing engine | |
CN108345534A (zh) | 生成和处理跟踪流的装置和方法 | |
GB2560749A (en) | Trace data representation | |
CN107045606A (zh) | 用于监测程序代码的执行的方法和设备 | |
JP2023503034A (ja) | パターンベースのキャッシュブロック圧縮 | |
Healy et al. | Branch Prediction in CPU Pipelining | |
Ma et al. | GATPS: An attention-based graph neural network for predicting SDC-causing instructions | |
CN111061635B (zh) | 一种基于运行时路径特征与测试场景聚类的测试样例约减方法 | |
CN113222152B (zh) | 一种量子态信息的获取方法及装置 | |
Zhang | FOCUS: LESSONS LEARNED IN DEVOPS FEATURE: PERFORMANCE TUNING |
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 |