CN101082875A - 减小在指令跟踪过程中产生的数据流的大小 - Google Patents
减小在指令跟踪过程中产生的数据流的大小 Download PDFInfo
- Publication number
- CN101082875A CN101082875A CNA2007101098204A CN200710109820A CN101082875A CN 101082875 A CN101082875 A CN 101082875A CN A2007101098204 A CNA2007101098204 A CN A2007101098204A CN 200710109820 A CN200710109820 A CN 200710109820A CN 101082875 A CN101082875 A CN 101082875A
- Authority
- CN
- China
- Prior art keywords
- instruction
- logic
- data
- prediction
- mark instructions
- 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
- 238000012545 processing Methods 0.000 claims abstract description 62
- 238000012544 monitoring process Methods 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 79
- 230000006399 behavior Effects 0.000 claims description 58
- 230000008569 process Effects 0.000 claims description 43
- 238000012546 transfer Methods 0.000 claims description 41
- 230000002547 anomalous effect Effects 0.000 claims description 35
- 230000006837 decompression Effects 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 2
- 230000006835 compression Effects 0.000 abstract description 12
- 238000007906 compression Methods 0.000 abstract description 12
- 239000003550 marker Substances 0.000 abstract 5
- 238000010586 diagram Methods 0.000 description 16
- 125000004433 nitrogen atom Chemical group N* 0.000 description 14
- 125000004429 atom Chemical group 0.000 description 7
- 210000003813 thumb Anatomy 0.000 description 6
- 230000005856 abnormality Effects 0.000 description 4
- 230000002349 favourable effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/3447—Performance evaluation by modeling
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
公开用于监视来自由数据处理器处理的程序的处理指令流的跟踪逻辑,该跟踪逻辑包括监视逻辑,该监视逻辑可用来:检测该指令流中的这些指令的处理;检测该指令流中的这些指令中哪些指令是条件直接转移指令、该指令流中的这些指令中哪些指令是条件间接转移、以及该指令流中的这些指令中哪些指令是无条件间接转移指令;该跟踪逻辑还包括压缩逻辑,该压缩逻辑可用来:将所述条件直接转移指令、所述条件间接转移指令和所述无条件间接转移指令指定为标记指令;为每个标记指令,输出指示该标记指令是否已经执行的执行指示符或指示该标记指令是否还未执行的不执行指示符,而不输出关于之前处理的不是标记指令的指令的数据。
Description
技术领域
本发明的领域涉及数据处理,具体来说,涉及用于监视数据处理操作的诊断机构。
背景技术
存在许多其中需要跟踪由处理电路执行的处理的情形,并且在这些情形下,需要能够识别指令的处理次序并且在任何时间点确定正在处理的是哪个指令。例如,该信息在数据处理系统的开发过程中有用,在数据处理系统的开发中,通常需要跟踪处理电路的活动。可用于帮助该过程的工具的一个实例是跟踪工具。
跟踪数据处理系统的活动由此产生包括表示系统内的逐步活动的数据在内的跟踪流是系统开发中极其有用的工具。此类跟踪工具利用各种方式来跟踪程序流,包括存在于处理受到监视的芯片上的嵌入式跟踪宏单元(ETM,Cambridge的ARM Limited的商标)。
大多数处理器指令集架构都包括取决于数据处理系统在处理转移(branch)时的状态的转移指令,即,如果某一条件为真,那么这些转移指令将执行并且转移到目的地,如果该条件为假,那么将不执行并且继续进行到下一个顺序指令,即将它作为no-op(无操作)操作看待。大多数指令集架构还包括间接转移指令,其中转移的目的地是根据数据处理系统在处理转移时的当前状态计算的。在2001年的ARM Architecture Reference Manual,ISBN 0-201-73719-1中有所记载的ARM指令集架构还包括不是转移指令的条件指令,它们的执行与否取决于处理器在处理指令时的当前状态。其它指令集架构也包括这样的条件指令,有时称为断言性指令。那些总是执行的非条件指令称为无条件指令。
嵌入式跟踪宏单元上用于非循环精确跟踪现有ARM(Cambridge的ARM Limited的注册商标)处理器内核的当前协议是从用于循环精确跟踪的协议演变而来的。因此,对于流中的每个指令,ETM将来自CPU的信息编码为E-原子(当执行指令时)或N-原子(当不执行指令时)。然后,ETM按照E-原子和N-原子的出现顺序发出数据流。一般来说,它们是使用诸如行程编码的编码技术以压缩形式发出的。
这在2002年12月的ARM Embedded Trace Macrocell ArchitectureSpecification,ARM IHI 0014I中有所描述。
可以将该数据流存储在芯片上或芯片外,然后可以将它馈送给称为ETM解压缩器的调试代理程序。解压缩器具有程序的副本,其中通过解码E-原子和N-原子以及数据流中用于编码程序流的依数据而定的变化(如间接转移)的其它信息来如此跟踪该程序以使得它可以重建嵌入式CPU内的程序流。
随着数据处理器内核增大它们的工作频率以及具有多个内核的处理器正变得更普遍,需要改进可以在数据处理系统的开发内使用的调试和跟踪工具和机构。增大内核频率会对跟踪造成特定问题。例如,在现有ARM处理器内核和ETM协议中,在只跟踪指令下实现约1.2-1.6位/指令的位速率。因此,每个周期处理一个指令的1GHz处理器将产生1.2-1.6吉比特/秒的跟踪数据,需要将该数据从芯片中取出并存储在缓冲器中。此外,多处理器系统引入该数据速率的整数倍。
使用压缩来减少用于跟踪个别指令的平均位数。但是,因为需要跟踪不断变快的内核,所以有利的是能够进一步减小该数据速率。
另一种已知的用于跟踪数据处理系统的数据活动的方法是在由Intel制造的名为XScale的数据处理系统内实施。这在2004年1月的题为IntelXScalecore的Intel Developers Manual中有所描述。
在该跟踪机构中,代替输出执行或不执行的每个指令的细节,XScale对所处理的指令进行计数,直到到达执行的转移指令为止。因此,它输出所处理的指令数量以及关于程序转移到哪里的信息。因此,如果它经过不执行的条件转移指令,那么不输出关于该指令的任何信息,因为它不会输出不执行指示符,这与所述其它常规跟踪机构不同。XScale的一个缺点是,通过不输出关于不执行的条件转移指令的信息,不执行的条件转移指令的指示符必须包含足以使跟踪解压缩器判定指令流中的可能的转移指令中哪些转移指令是执行的转移指令的信息,该信息采用要求编码多位的计数器形式。此外,因为该计数器对所处理的所有不是执行的转移指令的指令计数,所以该计数器可能会溢出,并且跟踪流因而还必须编码溢出标记。第二个缺点是,它只输出转移指令的信息,而不输出其它条件指令的信息;因此,跟踪不完整,从而限制了可以利用它的情形的数量。
发明内容
本发明的第一方面提供用于监视来自数据处理器处理的程序的处理指令流的跟踪逻辑,所述跟踪逻辑包括监视逻辑,所述监视逻辑可用来:检测所述指令流中的所述指令的处理;检测所述指令流中的所述指令中哪些指令是条件直接转移指令,所述指令流中的所述指令中哪些指令是条件间接转移指令,以及所述指令流中的所述指令中哪些指令是无条件间接转移指令;所述跟踪逻辑还包括压缩逻辑,所述压缩逻辑可用来:将所述条件直接转移指令、所述条件间接转移指令和所述无条件间接转移指令指定为标记指令;以及对于每个标记指令,输出指示在处理所述标记指令时所述数据处理器的行为的指示符,而不输出关于所处理的不是标记指令的指令的数据。
为了解决在跟踪以不断增大的速度工作并且在一些情况下具有个处理器共同工作的处理器的处理器程序流的过程中所捕获的数量不断增大的数据的问题,本发明认识到,不需要输出一般形成跟踪的一部分的信息中的一些信息,因为它可以推断出来,并且因此可以输出数量有所减少的信息。在这方面,本发明将条件直接转移指令、条件间接转移指令和无条件间接转移指令(即,不可能静态地确定其行为的指令的其中至少一些)指定为标记指令。这些指令之所以重要是因为在处理这些指令时的程序行为取决于某一动态(即,在程序运行过程中)确定的因素。因此,当跟踪指令流时,重要的是知道在处理这些条件直接转移指令、条件间接转移指令(统称为条件转移指令)或无条件间接转移指令时处理器的行为是怎样的。即,是否满足条件转移指令的条件以及间接转移指令转移到哪里?其它没有被指定为标记指令的指令一般以已知方式行动,并且因此已经认识到,无需输出该信息。因此,可以只根据关于标记指令的行为的信息和对程序本身的了解来跟踪程序流。这显著减少了需要输出以便跟踪指令流的数据的量。
将了解,尽管为了简单的指令跟踪的目的,只有间接转移操作和条件转移指令构成标记指令,但是对于其它形式的跟踪,也可以要求将其它类别的指令指定为标记指令。
在一些实施例中,所述监视逻辑还可用来检测所述指令流中的哪些指令是条件指令;并且所述压缩逻辑还可用来将所述条件指令指定为标记指令。
通过除了条件转移指令和无条件间接转移指令外还将条件指令指定为标记指令,跟踪逻辑输出指示所有不可能静态地确定其行为的指令的行为的指示符。尽管不一定必须跟踪所述指令的行为便可完全确定由数据处理器处理的指令流,但是当调试程序以便跟踪所述指令的行为,使得可以确定程序的全部行为时,通常有利。因此,当跟踪程序流时,重要的是知道是否满足条件指令的条件。
在一些实施例中,所述监视逻辑还可用来检测所述指令流中的哪些指令是数据存储器传送(data memory transfer)指令;并且所述压缩逻辑还可用来将所述数据存储器传送指令指定为标记指令。
指令跟踪通常会有所扩展以便包括跟踪通过在数据处理设备上执行的数据存储器传送指令产生的数据存储器传送。但是,已经观察到,跟踪所有通常由数据存储器地址和一个或多个数据存储器值组成的数据存储器传送会导致产生大量的跟踪数据。因此,跟踪逻辑的现有实现包括用于通常基于数据存储器传送的地址部分过滤数据存储器传送的部件。在这种系统中,每个数据存储器传送指令都可以潜在地产生跟踪,但是只有其中一些指令才会这样。一个要求是能够判定哪些数据存储器传送指令产生跟踪的数据存储器传送。通过将所有数据存储器传送操作都视为是标记指令,跟踪流以相对较低的成本包含足以使跟踪的数据存储器传送与数据存储器传送指令相关联的信息,因为用于那些不产生跟踪的数据存储器传送的数据存储器传送指令的行为的指示符只是必须指示数据存储传送指令的处理。
在一些实施例中,所述压缩逻辑可以响应检测到所处理的所述间接转移指令而输出所述指令转移到哪里的指示作为所述指示符。
指示符可以采用多种形式,只要它给出关于处理器的行为的一定指示。在间接转移指令的情况下,已经发现,有利的是输出关于指令转移到哪里的信息作为指示符。该信息的接收表明已经采用间接转移指令以及程序接着转移到哪里。因此,这是一种输出执行指示和跟踪所需的其它信息的有效方法。
在一些实施例中,所述监视逻辑还包括计数器,并且还可用来:使用所述计数器计算在每个标记指令之后处理的非标记指令的数量;以及检测异常事件;并且所述压缩逻辑可以响应检测到所述异常事件来:输出指示采用所述异常的异常指示符以及所述计数器的值。
如果在程序运行过程中发生异常事件,那么重要的是在跟踪程序时知道该异常事件发生在哪个点。因此,尽管一般来说,没有被指定为标记指令的指令不需要输出关于它们的处理的信息,但是在发生异常的情况下,这很重要,因为需要确定异常事件发生的位置。因此,使用计数器来计算在标记指令之间处理的指令数量。当到达下一个标记指令时,一般可以丢弃该信息,并且计数器复位到初始值,但是,如果异常事件在此之前发生,那么输出所述信息以及指示发生异常事件的指示符。在输出该信息之后,可以将计数器复位,或者它可以继续计数。当已经输出计数值时,如果它继续计数,那么可以从输出值和那时的计数器的值导出下一个异常发生的地方。
在一些实施例中,所述压缩逻辑可以响应所述计数器的值经过预定值而将所到达的所述非标记指令指定为标记指令不管所述下一个指令的性质如何,并且将所述计数器复位。
标记指令之间发生的指令数量各不相同,并且在一些情况下可能会较大。因此,如果要对这些指令计数,那么需要提供较大的计数器以便应对所有不测事件。为了避免具有能够计算较大数量的计数器的需要,已经发现,有利的是在计数器计数经过预定值(一般是计数器的最大值,但如果计数器倒计数,那么它也可以是最小值)时将计数器复位,并将下一个指令指定或提升为标记指令。这是不具有过大计数器但仍知道程序流中发生异常事件的位置的有效方法。一个备选方法是每当计数器计数经过预定值时便输出“计数器复位”指示符,并因此将计数器复位。这样做的一个缺点是,要辨识需要自己的格式的一条附加信息。已经使用经过对比的标记指令。本领域的技术人员应明白,计数器可以采用多种方法实现,所有这些方法在功能上都是等效的;这些方法包括从零到最大数正计数以及从初始最大值到零倒计数。
在一些实施例中,所述监视逻辑还可用来检测所述指令流中哪些指令是无条件直接转移指令;并且所述压缩逻辑还可用来将所述无条件直接转移指令指定为标记指令。
通过将所有的转移指令(直接或间接,有条件或无条件)都指定为标记指令,跟踪流只包含关于指令流中可能存在程序流的不连续性的点的信息。无条件直接转移指令通常不需要跟踪,因为它们的行为可以静态地确定而与跟踪流无关,即,总是可以确定该指令转移到哪里(因为该转移是直接的),并且它总是转移的(因为它是无条件的)。但是,通过跟踪这些指令,跟踪的标记指令之间的程序行为只是由程序中位于顺序位置的指令组成,并且这在一些形式的处理中有利。
在一些实施例中,所述监视逻辑还可用来检测异常事件;并且所述压缩逻辑可以响应检测到所述异常事件而输出指示采用所述异常的异常指示符以及指示所述程序中所述异常发生的位置的值。
如果在程序运行过程中发生异常事件,那么重要的是在跟踪指令流时知道该异常事件发生在哪个点。通常,只要知道在程序中的位置就够了,因为对于大多数的代码序列来说,在任何给定位置的指令将只是在两个标记指令之间处理一次,但是也存在某些代码序列,其中由于无条件直接转移而重复执行一个位置。因此,异常在指令流中的位置通常可以通过输出指示异常在程序中的位置的值来指示。
在一些实施例中,所述压缩逻辑可以在输出所述指示符之前压缩指示符数据流并在它的位置输出该压缩数据。
有利的是通过压缩关于指示符的数据进一步减少数据输出并输出压缩数据。通过分析指令的集合和条件或间接转移指令的行为,可以发现频繁出现的指示符的模式,并且可以用几个位编码这些模式,以便压缩数据输出。
在一些实施例中,所述跟踪逻辑还可用来判定是否可以根据先前的标记指令的行为确定所述标记指令中的至少一个标记指令的行为,所述跟踪逻辑可用来将该至少一个标记指令降级为不是标记指令的指令。
可能的情况是,一些无法静态确定的指令的行为却可以动态地确定,因为之前处理的指令的行为在跟踪流中提供足以能够确定将如何处理特定间接转移指令或条件指令的信息。在这些情况下,无需跟踪流中的单独的指示符,便可导出对它们的行为的了解。因此,通过不将这些指令指定为标记指令并且因此不输出对它们的行为的指示,可以进一步减小数据流。
本发明的第二方面包括一种数据处理设备,该设备包括可用来处理所述程序指令流的数据处理器和根据本发明的第一方面的跟踪逻辑。
在一些实施例中,所述数据处理设备还包括:可用来提供对所述标记指令中的至少一个标记指令的处理行为的至少一个预测的预测逻辑;并且其中,所述监视逻辑可用来根据所述监视的行为判定所述至少一个预测是否正确;并且对于所述至少一个标记指令,输出关于所述至少一个预测是否正确的指示作为所述指示符。
通过使用预测逻辑来预测至少一个标记指令的行为可以使得跟踪数据流中的数据量得以减少。这是因为两件事情。第一,发送“正确预测指示”的符号可以是简单的布尔值,或者在存在多个预测的情况下,可以是枚举。这样所需的数据比为了准确跟踪所发生的事情而必须输出的数据少。第二,如果预测方案一般产生正确预测,那么预测结果的序列可以使用简单的压缩技术比原始数据更压缩。因此,可以减少跟踪数据输出的量。
在一些实施例中,所述预测逻辑可用来为至少一个条件指令提供预测,所述预测逻辑可用来预测该条件指令的条件是真还是假,所述至少一个条件指令的所述指示符包括预测正确指示和预测不正确指示,如果所述预测正确,那么为预测正确指示,如果所述预测不正确,那么为预测不正确指示。
条件指令的预测可以通过预测关于该条件指令的条件是真还是假来完成。监视逻辑可以根据监视的行为判定预测是否正确,并输出合适的指示符。
在一些实施例中,所述预测逻辑可用来提供关于所述数据处理设备的所述部分的所述行为的多个步骤的对应多个预测,所述跟踪逻辑可用来判定所述多个预测中的至少一些预测是否正确并产生所述多个预测指示符中的对应的至少一些预测指示符,所述压缩逻辑可用来压缩所述多个预测指示符中的所述至少一些预测指示符,从而产生压缩数据,并且所述跟踪逻辑可用来输出该压缩数据。
一般来说,预测逻辑提供对应于监视的数据处理设备的部分的行为的多个步骤的多个预测。然后,跟踪逻辑判定它们是否正确,接着使用压缩逻辑来压缩该信息。这是有利的,就好像预测方案是可以预期大多数预测都将正确的方案一样。已经发现,在值不均匀地分布在可能的值集合之间的情况下的数据可以比数据值均匀分布在可能的值集合之间的情况下的数据更易压缩。
已经观察到,当将跟踪逻辑构造成不输出关于非标记指令的执行的信息时,所得输出由以下数据组成:第一,间接转移指令的指示符;第二,关于条件指令的执行或不执行的指示符,其中一般将输出的该第二部分中的“执行”和“不执行”指示符的分布视为是均匀的。在使用预测算法时,这些“执行”和“不执行”指示符可以用“预测正确”和“预测不正确”指示符取代,其中如果预测通常正确,那么“预测正确”和“预测不正确”指示符极不均匀地分布,并且因此可以更好地压缩。
在一些实施例中,所述跟踪逻辑包括嵌入式跟踪宏单元。
在一些实施例中,所述数据处理设备还包括数据存储部件,其中所述压缩逻辑可用来将数据输出到该数据存储部件。
尽管在一些实施例中,压缩逻辑将数据输出到外部设备,但在其它实施例中,它只是将数据输出到数据处理设备本身内的数据存储部件。
在一些实施例中,所述数据处理设备还包括用于存储所述程序的程序数据存储部件和解压缩逻辑,该解压缩逻辑可用来接收由所述压缩逻辑输出的数据并根据所述标记指令的所述执行和不执行指示符以及所述存储的程序确定程序流。
尽管解压缩逻辑和程序数据存储部件可以形成在独立的诊断设备中,但在一些实施例中,它们提供在处理指令的相同的数据处理设备上。因此,单个数据处理设备既可以处理程序流也可以跟踪程序流。
本发明的第三方面包括一种诊断设备,该诊断设备可用来接收从监视数据处理器的跟踪逻辑中输出的数据流,所述数据流包括指示在处理标记指令时所述数据处理器的行为的指示符,而不包括关于所处理的不是标记指令的指令的数据,所述标记指令包括条件直接转移指令、条件间接转移指令和无条件间接转移指令,所述诊断设备包括解压缩逻辑和数据存储部件,该数据存储部件可用来存储由所述数据处理器处理的所述程序的所述指令,所述解压缩逻辑可用来接收所述数据流并根据所述标记指令的所述指示符和所述存储的程序确定程序流。
根据本发明的第三方面的诊断设备可以接收和分析由本发明的第一方面的跟踪逻辑输出的信息。解压缩逻辑能够只是根据标记指令的执行和不执行指示符以及对所分析的由数据处理器处理的程序的了解来确定程序流。
在一些实施例中,所述诊断设备还包括缓冲器,该缓冲器可用来接收和存储所述数据流,然后将它转发给所述解压缩逻辑。
在跟踪逻辑和诊断设备之间存在缓冲器是有利的,并且因此一般都提供缓冲器。
本发明的第四方面提供一种监视来自由数据处理器处理的程序的处理指令流的方法,该方法包括以下步骤:检测所述指令流中的所述指令的处理;检测所述指令流中的所述指令中哪些指令是条件指令、以及所述指令流中的所述指令中哪些指令是条件间接转移指令或无条件间接转移指令;将所述条件直接转移指令、所述条件间接转移指令和所述无条件间接转移指令指定为标记指令;对于每个标记指令,输出指示所述标记指令是否已经执行的执行指示符或指示所述标记指令是否还未执行的不执行指示符,而不输出关于之前处理的不是标记指令的指令的数据。
本发明的第五方面提供一种诊断由数据处理器处理的程序的方法,该方法包括:接收通过执行根据本发明的第四方面的方法而输出的数据;将由所述数据处理器处理的所述程序的所述指令存储在数据存储部件内;根据所述标记指令的所述执行和不执行指示符以及所述存储的程序确定所处理的所述程序的程序流。
本发明的第六方面提供一种计算机程序产品,当该产品在数据处理器上运行时,可用来控制该数据处理器形成根据本发明的第五方面的方法的步骤。
在结合附图阅读以下对说明性实施例的详细描述后,本发明的所述和其它目的、特征和优点将变得显而易见。
附图说明
图1示出根据本发明的一个实施例的程序流的跟踪;
图2示出根据本发明的一个实施例的包括嵌入式跟踪宏单元的数据处理设备和根据本发明的一个实施例的用于分析程序流的诊断设备;
图3示出根据本发明的一个实施例的包括跟踪逻辑和解压缩逻辑的系统;
图4A示出在根据本发明的一个实施例跟踪程序过程中执行的步骤的流程图;
图4B、4C和图5示出在根据本发明的备选实施例跟踪程序过程中执行的步骤的流程图;
图6示出在分析图4A所示的方法产生的跟踪数据的过程中执行的步骤的流程图;
图7A示出根据本发明的一个实施例的所处理的指令的示例序列和结果输出;
图7B示出常规跟踪系统的所处理的指令的相同的示例序列和结果输出;
图8示出根据本发明的一个实施例的系统,该系统包括数据处理设备和诊断设备,这两个设备均具有预测逻辑;以及
图9示出给出示例预测方案的流程图。
具体实施方式
图1以非常简单的示意形式示出所处理的指令流10,该指令流包括条件转移指令10a1和10a2与异常事件10b。
在本发明的该实施例中,对于所示指令,只有标记指令具有关于它们的信息输出。因此,在此情况下,对于指令10a1的不执行,输出N-原子,并且对于指令10a2的执行,输出E-原子。响应异常事件10b,输出异常指示和用于指示在前一个标记指令10a2之后执行的指令数量的计数值。
图2示出包括CPU30的数据处理设备20,其中CPU30可用来处理包括从指令存储器22发送的指令流的程序。CPU30包括指令取出单元32、管道34和跟踪接口36。该数据处理设备还包括可用来经由跟踪接口36跟踪程序的处理的嵌入式跟踪宏单元(ETM)40。ETM40包括具有计数器45的监视逻辑42和压缩逻辑50。监视逻辑42监视CPU30内的指令的处理,并且对于所处理的每个没有被指定为标记指令的指令将计数器45加1。它将作为条件转移指令或间接转移指令(即,其行为无法静态确定的指令中的至少一些指令)的指令指定为标记指令。当它将一个指令指定为标记指令时,它将计数器复位,并丢弃之前存储在其中的信息。
因为跟踪通常存储在循环缓冲器,即其中新的输入覆写最早的输入的缓冲器中,所以跟踪流通常还包括由ETM定期输出的同步数据。该同步数据包含足以使解压缩逻辑从那个同步点开始解压缩跟踪的信息。因此,在同步点必须知道计数器的值。一种实现此目的的方法是在同步数据中包括计数器值,但已经发现,优选方法是在同步点简单地将计数器复位。
当发生异常事件时,监视逻辑42还对此检测并将该信息以及计数器在此时的值(指示自上一个标记指令以来执行的非标记指令的数量)转发给压缩逻辑50。然后,它将计数器复位。
因此,压缩逻辑50接收指示处理器在处理标记指令时的行为的数据流、计数器值和对发生异常事件的指示。它一般压缩该信息,并经由输出端口60输出该信息,在此情况下,输出端口60连接到数据处理设备20上的输出端口65。因此,输出执行和不执行指示符的数据流、异常事件指示符以及计数器值。指示符可以采用多种形式,例如,它们可以包含程序转移到的位置的地址。类似地,异常事件指示符可以采用多种形式,如异常的性质或程序转移到的位置。
从数据处理设备20输出的信息一般经过压缩逻辑50压缩,这将在稍后描述。它由跟踪端口适配器70接收,然后转发给诊断设备80。跟踪端口适配器70可以缓冲该信息直到诸如诊断设备80请求该信息的时间为止,或者它可以将该信息直接转发给诊断设备80。诊断设备80可以采用多种形式,并且在该实施例中,它包括用于运行调试程序110的主计算机。诊断设备80还包括数据存储部件90,该数据存储部件90包含在CPU30上运行的程序的映像。这使得解压缩逻辑100能够使用数据存储部件90中关于所处理的程序的信息和关于标记指令的行为和任何异常事件的信息重建所处理的程序的程序流。将该跟踪信息传给主计算机上的调试程序110,由此显示和/或分析该跟踪信息。解压缩逻辑可以采用多种不同的形式,但是在许多实施例中,将它实现为软件程序。
图3示出根据本发明的另一个实施例的系统。系统24包括ETM40,该ETM40具有用于将数据输出到芯片上数据存储部件120的输出端口60。然后,通过解压缩程序31分析该数据。解压缩程序31使用来自程序数据存储部件130的关于所处理的程序的数据。CPU30也使用来自程序数据存储部件130的程序。应注意,解压缩程序31可以在CPU30或不同的处理器上运行。因此,在该实施例中,数据处理设备可以运行并调试程序。在图3的系统中,整个系统形成在单个芯片上;但是,它显然也可以形成在分离的芯片上,例如如图2所示。
图4A示出根据本发明的一个实施例的跟踪程序流的方法的流程图。该方法包括监视异常事件或情形,如果没有监测到异常事件或情形,那么监视指令流中的下一个指令,以便查看它是否是条件指令或间接转移指令。如果是,那么将该指令指定为标记指令,并输出指示它的行为的指示符,将计数器复位到0,并返回到流程图的顶部。指示符可以采用多种形式。例如,就条件指令来说,它可以包括取值1和0的位,如果条件为真并且执行指令,那么该位取值1,如果条件为假并且不执行指令,那么该位取值0。例如,就间接转移指令来说,指示符可以包括关于程序流转移到哪里的信息。如果“下一个”指令既不是条件指令也不是间接转移指令,那么将计数器加1。将了解,计数器具有固定大小,并且因此在最大值,增大计数器将使它溢出。如果计数器溢出,那么将该指令指定为标记指令。换句话说,将正常的指令提升为标记指令,输出指示该“标记”指令的行为的信息,并将计数器复位到0。如果计数器没有溢出,那么返回到流程图的顶部,以便检测是否发生异常事件。因此,计数器记录在标记指令之间处理的非标记指令的数量。
如果在第一步中检测到异常,那么输出计数器的值以及关于异常的类型和/或该异常转移到哪里的信息。接着,将计数器复位到0,并且倘若在此之前没有检测到另一个异常,则继续检测下一个指令,在此情况下,该下一个指令将是程序响应异常转移到的指令,例如,它可以是中断服务例行程序内的第一个指令。
图4B示出与图4A中的流程图类似的流程图,不同之处在于它具有附加步骤。该实施例包括将数据存储器传送操作也视为是标记指令的情形。因此,在判定指令是否是条件指令或间接转移指令之后,执行附加步骤,以便判定指令是否是数据存储器传送指令,并将该指令指定为标记。将了解,在将指令指定为标记后,跟踪逻辑输出该指令的行为的指示符。在输出该指示符时,跟踪逻辑可以做有关该指示符的性质的另一个判定;例如,如果它判定要跟踪数据存储器传送,那么指示符可以包括传送地址和/或值的指示;但是如果不跟踪传送,那么指示符可以包括指示处理数据存储器传送指令的单个位。
图4C示出与图4A中的流程图类似的流程图,不同之处在于它是对于本发明的一个不同实施例而言的。该方法包括监视异常事件或情形,如果没有监测到异常事件或情形,那么监视指令流中的下一个指令,以便查看它是否是转移指令。如果是,那么将该指令指定为标记指令,输出指示它的行为的指示符,并且返回到流程图的顶部。指示符可以采用多种形式。例如,就无条件转移指令来说,它可以包括取值1的位,其中值1指示处理该转移。例如,就条件转移指令来说,它可以包括取值1和0的位,如果条件为真并且执行该转移指令,那么该位取值1,如果条件为假并且不执行该转移指令,那么该位取值0。例如,就间接转移指令来说,指示符可以包括关于程序流转移到哪里的信息。如果“下一个”指令不是转移指令,那么返回到流程图的顶部,以便检测是否发生异常事件。
如果在第一步中检测到异常,那么输出在程序中的位置以及关于异常的类型和/或该异常转移到哪里的信息。将了解,位置指示符可以采用多种形式,并且可以采用压缩形式输出。例如,它可以是在异常发生之前处理的上一个指令的地址的形式。倘若在此之前没有检测到另一个异常,则继续检测下一个指令,在此情况下,该下一个指令将是程序响应异常转移到的指令,例如,它可以是中断服务程序内的第一个指令。
图5示出与图4A中的流程图类似的流程图,不同之处在于它具有附加步骤。该实施例包括不输出关于可动态确定的指令以及那些可静态确定的指令(即,那些可以根据关于之前处理的包含在跟踪流中的指令的行为的信息确定其在将要处理时的行为的指令)的指示符的可能性。因此,在判定指令是否是条件指令或间接转移指令之后,执行附加步骤,由此判定是否可以根据之前的程序行为确定该指令的行为。如果答案是否定的,那么将该指令指定为标记指令,并且该方法如同图4A中那样继续。但是,如果答案是肯定的,那么不立即将该指令指定为标记指令,并且该方法返回到增大计数器值的步骤。但是,通过计数器溢出,仍可以将指令指定为标记指令。
图6示出在分析图4A所示的方法产生的跟踪数据过程中执行的步骤的图。解压缩逻辑100从跟踪端口适配器70接收在图2的输出端口65输出的数据流,其中解压缩逻辑100可以是在诊断设备上运行的程序。诊断设备还包括用于存储所分析的程序的至少一部分的数据存储部件90。解压缩逻辑可以从跟踪数据和所存储的程序导出程序数据流。具体地说,它共同分析这两者,如果程序显示条件指令或间接转移指令,那么它依赖跟踪数据流来发现如何处理它们。对于其它指令,它假定执行它们,除非在数据流中存在异常事件的指示。如果情况如此,那么依赖数据流来发现在该异常事件之前在上一个条件指令或间接转移指令之后处理的指令的数量。然后,获取有关该异常事件的信息,并输出该信息以及关于所处理的所述指令数量的信息。因此,诊断设备可以根据所存储的程序信息和提供有关间接转移指令和条件指令的信息的数据流以及异常事件的发生和位置产生对处理设备处理程序的行为的逐步分析。
除了通过不输出关于可静态确定的指令的信息来减少跟踪数据流所具有的数据量外,还可通过使用压缩技术来进一步减少数据。为了找到合适的压缩方法,分析由压缩逻辑输出的关于执行、不执行和异常事件的数据的典型模式,并且为最普遍的模式赋予特定编码,然后可以使用这些特定编码来减少输出该数据所需的位数。
图7A示出根据本发明的一个实施例的所处理的指令流(第3栏)和所得跟踪输出的一个实例。图中示出被指定为标记指令的指令以及计数值和最终的压缩输出。这些指令形成ARM指令集架构。条件指令通过指令的条件代码后缀以指令汇编语言指示,指令的条件代码后缀如EQ(等于;即,零[Z]标志为1)、NE(不等于;Z=0)、CS(进位集;C=1)或HI(无符号较高者;C=1及Z=0)。
第1栏示出指示指令的处理次序的步骤序号。第2栏示出指令的程序计数器值。第4栏指示是执行还是不执行所处理的每个指令。
跟踪逻辑的功能是根据该操作序列产生跟踪流,该跟踪流包含足以使诊断设备能够重建该操作序列的信息。
为了理解图7A中的输出(第8栏),重要的是理解所用的压缩技术。下文给出本发明的一个实施例的用于压缩跟踪数据的可能的压缩方案的汇总以及与用于现有技术的跟踪数据的压缩技术的比较。
现有格式(现有技术)
跟踪流由一系列具有以下编码的字节组成。
位: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
PN | 1 | N | E[3] | E[2] | E[1] | E[0] | 0 | 0 |
P2 | 1 | 0 | 0 | 0 | F1 | F2 | 1 | 0 |
B1 | C | A[5] | A[4] | A[3] | A[2] | A[1] | A[0] | 1 |
B2 | C | A[12] | A[11] | A[10] | A[9] | A[8] | A[7] | A[6] |
B3 | C | A[19] | A[18] | A[17] | A[16] | A[15] | A[14] | A[13] |
B4 | C | A[26] | A[25] | A[24] | A[23] | A[22] | A[21] | A[20] |
B5A | 0 | C | 0 | 0 | 1 | A[29] | A[28] | A[27] |
B5T | 0 | C | 0 | 1 | A[30] | A[29] | A[28] | A[27] |
B5J | 0 | C | 1 | A[31] | A[30] | A[29] | A[28] | A[27] |
B6 | 0 | TEE | CAN | X[3] | X[2] | X[1] | X[0] | NS |
表1:现有跟踪字节格式
现有格式(现有技术):PN和P2
为了指示所处理的指令的序列,跟踪逻辑输出PN字节或P2字节。
PN字节指示所处理的高达16个指令,包括0-15个执行的指令以及在此之后的高达1个不执行的指令。位7、1和0用于辨别PN字节。在字段E[3..0]中编码执行的指令的数量,并且在N字段中编码不执行的指令的数量:
位 | 值 | 执行的指令数 |
E[3..0] | 0000 | 0 |
O001 | 1 | |
0010 | 2 | |
0011 | 3 | |
0100 | 4 | |
0101 | 5 | |
0110 | 6 | |
0111 | 7 |
位 | 值 | 执行的指令数 |
E[3..0] | 1000 | 8 |
1001 | 9 | |
1010 | 10 | |
1011 | 11 | |
1100 | 12 | |
1101 | 13 | |
1110 | 14 | |
1111 | 15 |
表2:PN格式字节中E[3..0]位的编码
位 | 值 | 不执行的指令数 |
N | 0 | 0 |
1 | 1 |
表3:PN格式字节中N位的编码
P2字节指示处理2个指令,这两个指令由执行和不执行的任意混合组成:
F1 | F2 | 第一个指令 | 第二个指令 |
0 | 0 | 执行 | 执行 |
0 | 1 | 执行 | 不执行 |
1 | 0 | 不执行 | 执行 |
1 | 1 | 不执行 | 不执行 |
表4:P2格式字节的F1和F2位的编码
位7-4、1和0用于辨别P2字节。
跟踪逻辑跟踪所处理的指令,并且只有当所处理的另一个指令无法以当前字节编码、或者遇到执行的间接转移指令、或者遇到异常时,才输出P2或PN字节。
例如,如果已经处理完5个都执行的指令的序列,那么当前字节(如果输出)将是E[3..0]=0101且N=0的PN字节。如果执行所处理的下一个指令,那么跟踪逻辑不输出该字节,而是继续前进到E[3..0]=0110且N=0的PN编码。但是,如果不执行所处理的下一个指令,那么跟踪逻辑将输出E[3..0]=0110且N=1的PN字节(指示6个执行的指令的序列,在此之后是一个不执行的指令),因为它不可能以那个PN字节编码其它指令。即,输出字节8’b11011000。根据本发明的一个实施例的适于压缩跟踪数据的可能的压缩格式:PN、P2、P3和P4:
现有技术的编码支持执行的指令和少数不执行的指令的长期运行。在本发明的特定实施例下,只有有条件地执行的指令和不执行的指令(根据定义是有条件的)才以PN和P2格式编码,其中PN字节中的E[3..0]编码所处理的有条件地执行的标记指令的数量。N位的编码不变。
位 | 值 | 有条件地执行的指令数 |
E[3..0] | 0000 | 0 |
0001 | 1 | |
0010 | 2 | |
0011 | 3 | |
0100 | 4 | |
0101 | 5 | |
0110 | 6 | |
0111 | 7 |
位 | 值 | 有条件地执行的指令数 |
E[3..0] | 1000 | 8 |
1001 | 9 | |
1010 | 10 | |
1011 | 11 | |
1100 | 12 | |
1101 | 13 | |
1110 | 14 | |
1111 | 15 |
表5:经过修改的PN格式字节中E[3..0]位的编码
类似地,修改P2字节的定义:
F1 | F2 | 第一个指令 | 第二个指令 |
0 | 0 | 有条件地执行 | 有条件地执行 |
0 | 1 | 有条件地执行 | 不执行(有条件的) |
1 | 0 | 不执行(有条件的) | 有条件地执行 |
1 | 1 | 不执行(有条件的) | 不执行(有条件的) |
表6:经过修改的P2格式字节中F1、F2位的编码
因为有条件地执行的指令的运行不如执行(有条件或无条件)的指令的运行那样普遍,所以引入指示所处理的3个和4个标记指令的新格式,这3个和4个标记指令由有条件地执行和不执行(有条件的)的标记指令的任意组合组成。
位: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
P3 | 1 | 0 | 1 | F1 | F2 | F3 | 1 | 0 |
P4 | 1 | 1 | F1 | F2 | F3 | F4 | 1 | 0 |
表7:新格式P3和P4字节
F1和F2位的编码与P2格式字节中的一样。F3和在P4字节情况下的F4的编码如下:
F3 | F4(仅P4格式) | 第三个指令 | 第四个指令(只有P4格式) |
0 | 0 | 有条件地执行 | 有条件地执行 |
0 | 1 | 有条件地执行 | 不执行(有条件的) |
1 | 0 | 不执行(有条件的) | 有条件地执行 |
1 | 1 | 不执行(有条件的) | 不执行(有条件的) |
表8:新的P3和P4格式字节中F3和F4位的编码
现有格式:B数据包:
在遇到执行的间接转移指令时,跟踪逻辑首先确保跟踪前面的指令和该间接转移(通过输出编码它们的PN或P2字节),然后输出B数据包。B数据包包括B1字节,可选地在B1字节之后是B2字节,可选地在B2字节之后是B3字节,依此类推。每个B字节中的“C”位指示后面跟着另一个字节;C=0指示这是终止字节,C=1指示后面跟着下一个字节。
B数据包中的A[]位编码转移上的程序计数器(PC)的变化位。例如,如果在地址0x8013(16’b1000000000010011)处的间接转移转移到地址0x801F(16’b1000000000011111),那么只有PC的底部4个位改变,因此将B数据包编码为包含新值的单个B1字节。该字节还必定包括PC的未改变的位5和4。即,输出单个字节8’b00111110。
ARM处理器实现多于一个指令集,其中一些实现具有4个可能的指令集,称为ARM指令集、Thumb指令集、Thumb-2EE指令集和Java指令集。
因为ARM指令集(在ARM状态下处理)中的所有指令都是32位,并且在4的倍数的地址上对准,所以每个PC地址将位1和0设置为0。因此,在计算转移数据包之前,将源地址和目的地址向右移2个二进制数位。即,B1位A[0]对应于PC位2,位A[1]对应于PC位3,依此类推。
类似地,在Thumb指令集(在Thumb状态下处理)和Thumb-2EE指令集(在ThumbEE状态下处理)中,指令都是16位,在2的倍数上对准,并且因此将地址向右移1个二进制数位。即,B1位A[0]对应于PC位1,位A[1]对应于PC位2,依此类推。
在Java指令集(在Jazelle状态下处理)中,指令是8位,并且可以在任何地址,因此不进行任何地址移动。即,B1位A[0]对应于PC位0,位A[1]对应于PC位1,依此类推。
因此,在32位地址空间中,ARM地址最多需要30位,Thumb或Thumb-2EE地址最多需要31位,并且Java地址需要32位。如果使用全部5字节的B数据包,那么第五个字节是B5A、B5T或B5J这三种格式之一,以便指示目标地址是ARM指令地址、Thumb或Thumb-2EE指令地址或Java指令地址之一。
在改变指令集时,总是产生全部5个字节的数据包,以便指示目标指令集。通常不在间接转移上设置第5个字节中的C位。它用于指示异常或进入或来自ThumbEE状态的转移。
在异常时,也产生B数据包,该B数据包将始终包含5个字节。但是,在第5个字节中,将设置延续位(C),以便指示格式B6的第6个字节。这编码异常的类型、异常是否取消最近的指令、是否将指令作为安全异常处理。
在进入或离开ThumbEE状态的间接转移时,在B5T字节之后还产生第6个字节,并且也对此进行编码,其中异常类型字段指示没有异常。
位 | 值 | 含义 |
TEE | 0 | 转移的目标不是ThumbEE状态 |
1 | 转移的目标是ThumbEE状态 | |
CAN | 0 | 不取消先前指令 |
1 | 取消先前指令 | |
X[3..0] | 0000 | 没有异常 |
0001 | 调试异常 | |
0010 | 安全的监视器调用异常 | |
0011 | 保留 | |
0100 | 不精确的数据中止异常 | |
0101 | Jazelle异常 | |
0110 | 保留 | |
0111 | 保留 | |
1000 | 复位异常 | |
1001 | 未定义的指令异常 | |
1010 | 管理程序调用异常 | |
1011 | 预取中止异常 | |
1100 | 数据中止异常 | |
1101 | 保留 | |
1110 | 中断异常 | |
1111 | 快速中断异常 | |
NS | 0 | 在安全状态下处理的异常 |
1 | 在不安全状态下处理的异常 |
表9:B6字节的编码
因此,在间接转移时,所产生的字节序列始终是以下之一:
表10:间接转移上的字节序列
(注意,PN或P2字节编码该转移之前并包括该转移在内的指令。)
在异常时,产生如下字节序列:
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
异常 | PN或P2 | B1(C=1) | B2(C=1) | B3(C=1) | B4(C=1) | B5A或B5T或B5J(C=1) | B6(X[3:0]≠0) |
字节5的类型和字节6中的TEE位指示处理异常时的状态。
根据本发明的一个实施例的新格式:B7字节:
为了扩展用于编码自从上一个标记指令以来处理的非标记指令的计数的协议,在B6字节之后输出另一个字节,称为B7字节。为了指示该字节的存在,还在B6字节中增加延续位。
在本发明的一个实施例中,该B7字节包含计数器值。
位: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
B6(经过修改) | C | TEE | CAN | X[3] | X[2] | X[1] | X[0] | NS |
B7 | 0 | 0 | 0 | I[4] | I[3] | I[2] | I[1] | I[0] |
表11:新格式B7字节-异常计数器实施例
位I[4..0]编码5位计数器,实验表明,该计数器具有合理的使用长度。因此,在异常时,跟踪逻辑输出:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
异常(新格式) | PN、P2、 P3或P4 | B1(C=1) | B2(C=1) | B3(C=1) | B4(C=1) | B5A或B5T或B5J(C=1) | B6(C=1,X[3..0]≠0) | B7 |
根据本发明的一个实施例的新格式:B7-B11字节:
在本发明的一个不同实施例中,在检测到异常时,输出指示程序中发生异常的位置的值。在该优选实施例中,这作为在B6字节之后的一系列字节输出,这一系列字节编码遭受异常的指令的地址。这通过以与转移字节B1-B4相同的方式使用每个字节中的延续位将该值编码为上一个标记指令的地址(为解压缩器所知)和异常点处的指令的地址之间的逐位差来进行压缩。如果需要,最后一个字节B11可以包含地址的高达第32位,但将了解,如果异常发生在ARM、Thumb或Thumb-2EE指令集中,那么将不需要所有这些位,并且因此额外位将为0。
位: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
B6(经过修改) | C | TEE | CAN | X[3] | X[2] | X[1] | X[0] | NS |
B7 | C | XA[5] | XA[4] | XA[3] | XA[2] | XA[1] | XA[0] | 1 |
B8 | C | XA[12] | XA[11] | XA[10] | XA[9] | XA[8] | XA[7] | XA[6] |
B9 | C | XA[19] | XA[18] | XA[17] | XA[16] | XA[15] | XA[14] | XA[13] |
B10 | C | XA[26] | XA[25] | XA[24] | XA[23] | XA[22] | XA[21] | XA[20] |
B11 | 0 | 0 | 0 | XA[31] | XA[30] | XA[29] | XA[28] | XA[27] |
表12:新格式B7-B11字节-异常地址实施例
因此,在异常时,例如在只需要3个字节来指示该指令地址的情况下,跟踪逻辑输出:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
异常(新格式) | PN、P2、P3或P4 | B1(C=1) | B2(C=1) | B3(C=1) | B4(C=1) | B5A或B5T或B5J(C=1) | B6(C=1,X[3..0]≠0) | B7(C=1) | B8(C=1) | B9(C=0) |
但是,该实施例不是如图5所示的实施例。
在新格式中,在任何B数据包序列(不管是不是异常)之前的PN/P2或P4字节不编码转移指令本身,因为这由B数据包的存在暗示。
图7A中的第5栏指示每个指令是否是间接转移指令或条件指令;即,在该实施例中为标记指令。当指令是标记指令时,给出理由,其中“(cc)”指示由于是条件指令而将指令指定为标记指令,并且“(ib)”指示由于是间接转移指令而将指令指定为标记指令。在用于异常处理的计数器溢出时,也可以将指令提升为标记指令。但是,在该实例中,没有发生这样的溢出。
第6栏指示为标记指令产生的原子。
第7栏指示在本发明的该实施例中用于异常处理的计数器的值。在处理每个非标记指令时,该计数器递增。
第8栏指示本发明的该实施例的输出,其中指示所产生的字节的类型,并且示出那个原子的各个字段的值。
如图7A所示的实例中的指令处理在步骤1开始,其中处理SUB指令。该指令不是有条件的,因此执行,并且因为不是间接转移指令,所以ETM将它视为是非标记指令,如第5栏指示。因此,计数器增大到1,如第7栏所示。
步骤2中的指令同样不是标记指令,并且计数器增大到2。
步骤3中的指令是BEQ。这是条件转移指令,因此ETM将它视为是标记指令。因为该指令不执行,所以ETM为该指令产生N原子,并且将计数器复位到0。ETM进一步压缩原子流,因此在该步骤中不输出该原子。
处理以此方式继续进行至步骤10。又遇到两个标记指令,每个标记指令产生N原子,并且在每一步中,将计数器复位。在步骤10,处理第四个标记指令,这也产生N原子。在该步骤中,ETM不能进一步压缩原子流,并且必须输出P4字节,以便编码这4个N原子。
处理进一步继续进行至步骤17,在步骤17中,由于条件转移指令BHI的执行,所以程序计数器循环回到0x8050处的指令。接着,处理继续进行至步骤18。一直到步骤18,所产生的原子序列都是E原子,但是步骤19处的指令不执行,因此ETM必须立刻输出PN字节,以便编码4个E原子和单个N原子的运行。
处理进一步继续进行至步骤26,在步骤26,处理器接收中断异常(在ARM架构中称为IRQ)。一直到该步骤,ETM已经记录了3个N原子,最近的N原子在步骤24。自从那个步骤以来,已经处理了1个非标记指令,因此计数器停在1。因此,ETM首先输出P3字节以便编码3个N原子的系列,在此之后输出7字节转移数据包,该7字节转移数据包编码0x18处的转移IRQ异常处理程序、IRQ异常的发生和计数器的当前值(1)。在该步骤将计数器复位。
在步骤27,处理IRQ异常处理程序处的指令。该指令LDR pc,[pc,#20]是间接转移指令的一个实例,并且因此是标记指令。响应该标记指令,ETM产生用于编码该间接转移的目的地(在此情况下为地址0x1000)的另一个转移数据包。在步骤28,处理0x1000处的指令。
为了说明,图7B示出常规ETM和XScale响应与如图7A所示的指令集相同的指令集而产生的跟踪输出。由图可见,当与常规ETM相比时,本发明的实施例减少了跟踪数据输出。XScale跟踪包括转滚(rollover)、直接转移、异常和间接转移字节。但是,XScale本身产生比该实施例少的输出数据。然而,应注意,XScale可能不会输出足以允许精确跟踪处理器的步骤的数据,因为它不输出关于不是转移指令的条件指令的信息。XScale也不输出关于异常时转移到的地址的信息,因为对于XScale处理器的异常类型来说,转移到的地址是固定的。此外,指令序列相对较短,因此,所产生的跟踪量不代表长指令流。
由图7B可见,现有技术的ETM方法产生E原子(指示执行的指令)远远多于N原子(那些不执行的指令)的跟踪。这些数据模式相对易于使用众所周知的压缩技术(如所述用于PN编码的行程编码方案)压缩。但是,本发明的实施例易于形成具有完全相等数量的E原子和N原子的数据模式,并且因此更难压缩。
一种找到可有效处理具有完全相等数量的两个输出的数据的压缩技术的备选方法是找到某一调节信息输出以便给出几乎所有都为一个值的方法。如果使用预测技术来预测指令将如何使处理器运转,那么这就可以完成。如果预测技术擅长进行这些预测,那么跟踪输出将主要由“预测正确”指示符组成,其中只有少数几个“预测不正确”指示符。倘若诊断设备能够进行相同的预测,那么该跟踪数据流可用于跟踪处理器的行为。
尽管在如上所示的实施例中,只是将条件指令和无条件间接转移指令指定为标记指令,但应注意,本发明的实施例不限于此。
可能的情况是,在一些情形下,重要的是输出关于除了条件指令和无条件间接转移指令以外的其它类别的处理指令的数据。因此,在一些实施例中,监视逻辑可以检测另一指定类别的指令,并且压缩逻辑可以将该另一指定类别的指令指定为标记指令。此外,在其它实施例中,可以只是将条件直接转移指令、条件间接转移指令和间接转移指令指定为标记指令。
例如,当同时还跟踪由载入和存储指令启动的一些数据访问的存储地址和数据值时,重要的是知道何时处理这些载入和存储指令,因为不必跟踪所有这些存储地址和数据值。通过将载入和存储指令指定为标记指令,跟踪流将总是包含关于这些指令的行为的最少的信息,即,它们是否执行,以便稍后正确识别所跟踪的那些指令。
在这些情形下,跟踪逻辑检测指令流中的指定类别的指令,使得它可以将它们指定为标记指令并输出指示它们的行为的指示符。应注意,一般是由ETM本身来指定将被指定为标记指令的任何额外类别的指令。它的实现取决于它被要求跟踪何物。
图8示出与图2中的数据处理设备对应的数据处理设备,不同之处在于它还包括用于预测处理器30的行为的预测逻辑72。将由预测逻辑72所做的预测与由监视逻辑45监视的CPU30的实际行为进行比较,如果它们正确,那么将“预测正确”指示符输出到压缩逻辑50,反之,如果它们不正确,那么将“预测不正确”指示符输出到压缩逻辑50。如果合适,那么在此阶段还可以输出对处理设备的实际行为的附加指示。如果预测系统通常正确,那么输出主要为“预测正确”的指示符,并且因此将压缩成少于原始跟踪流的数据。
例如,预测逻辑72所做的预测可以关于条件指令的条件是真还是假。如果条件的值与预测逻辑72所做的预测匹配,那么将1(“预测正确”指示符)输出到压缩逻辑50,反之,如果条件与预测逻辑72所做的预测不匹配,那么将0(“预测不正确”指示符)输出到压缩逻辑50。在此情况下,不需要实际行为的附加指示符,因为只存在两种可能的行为。
一种示例预测方案如下:
1.当条件指令跟在无条件指令之后时,那么预测执行它。
2.当第二个条件指令跟在第一个条件指令之后时:
a.如果第二个指令的条件与第一个指令的条件相同,那么预测第二个指令的执行状况将与第一个指令的实际执行状况相同;反之,
b.如果第二个指令的条件与第一个指令的条件不相同,那么预测第二个指令的执行状况将与第一个指令的实际执行状况相反。
诊断设备80还包括设置成用于对处理器的行为进行同样的预测的预测逻辑92。它之所以能够进行同样的预测是因为它具有对由CPU处理的来自解压缩逻辑100的指令序列的访问权。解压缩逻辑100从预测逻辑92接收预测,并且通过使用从跟踪端口适配器70接收的跟踪流中的指示符来重建实际的CPU行为。
图9示出遵循所述预测规则的预测方案的流程图。在该预测方案中,考虑一个指令,如果它是无条件的,那么根据规则1做出“执行”的预测。如果它不是无条件的,那么考虑前一个指令,以便查看它是否是无条件的,如果是,那么做出“执行”的预测(规则2)。如果不是,那么考虑该指令的条件,以便查看它是否与前一个指令的条件匹配,如果匹配,那么如果前一个指令执行,则预测“执行”,反之,如果前一个指令不执行,则预测“不执行”(根据规则3a)。如果该指令的条件与前一个指令的条件不匹配,那么如果前一个指令执行,则预测“不执行”,反之,如果前一个指令不执行,那么预测“执行”(规则3b)。
尽管本文参照附图详细描述了本发明的说明性实施例,但应了解,本发明不限于那些精确实施例,并且在不偏离如所附权利要求定义的本发明的范围和精神的情况下,本领域的技术人员可以在其中实现各种改变和修改。
Claims (24)
1.一种用于监视来自数据处理器处理的程序的处理指令流的跟踪逻辑,所述跟踪逻辑包括监视逻辑,所述监视逻辑可用来:
检测所述指令流中的所述指令的处理;
检测所述指令流中的所述指令中哪些指令是条件直接转移指令、所述指令流中的所述指令中哪些指令是条件间接转移指令、以及所述指令流中的所述指令中哪些指令是无条件间接转移指令;
所述跟踪逻辑还包括压缩逻辑,所述压缩逻辑可用来:
将所述条件转移指令、所述条件间接转移指令和所述无条件间接转移指令指定为标记指令;以及
对于每个标记指令,输出指示在处理所述标记指令时所述数据处理器的行为的指示符而不输出关于所处理的不是标记指令的指令的数据。
2.如权利要求1所述的跟踪逻辑,其特征在于,所述监视逻辑还可用来检测所述指令流中哪些指令是条件指令;并且所述压缩逻辑还可用来将所述条件指令指定为标记指令。
3.如权利要求1所述的跟踪逻辑,其特征在于,所述监视逻辑还可用来检测所述指令流中哪些指令是数据存储器传送指令;并且所述压缩逻辑还可用来将所述数据存储器传送指令指定为标记指令。
4.如权利要求1所述的跟踪逻辑,其特征在于,
所述压缩逻辑可以响应检测到所处理的所述间接转移指令而输出所述指令转移到哪里的指示作为所述指示符。
5.如权利要求1所述的跟踪逻辑,其特征在于,所述监视逻辑还包括计数器,并且还可用来:
使用所述计数器计算在每个标记指令之后处理的非标记指令的数量;以及
检测异常事件;并且
所述压缩逻辑可以响应检测到所述异常事件来:
输出指示采用所述异常的异常指示符以及所述计数器的值。
6.如权利要求1所述的跟踪逻辑,其特征在于,所述压缩逻辑可以响应所述计数器的值超过预定值而将在所述计数器的值超过所述预定值时到达的所述非标记指令指定为标记指令而不管所述非标记指令的性质如何,并将所述计数器复位。
7.如权利要求1所述的跟踪逻辑,其特征在于,所述监视逻辑还可用来检测所述指令流中哪些指令是无条件直接转移指令;并且所述压缩逻辑还可用来将所述无条件直接转移指令指定为标记指令。
8.如权利要求1所述的跟踪逻辑,其特征在于,所述监视逻辑还可用来:
检测异常事件;并且
所述压缩逻辑可以响应检测到所述异常事件来:
输出指示采用所述异常的异常指示符以及指示所述程序中发生所述异常的位置的值。
9.如权利要求1所述的跟踪逻辑,其特征在于,所述压缩逻辑可以在输出所述指示符之前压缩所述指示符数据并输出所述压缩数据。
10.如权利要求1所述的跟踪逻辑,其特征在于,所述跟踪逻辑还可用来判定是否可以根据先前的标记指令的行为确定所述标记指令中的至少一个标记指令的行为,所述跟踪逻辑可用来将所述至少一个标记指令降级为不是标记指令的指令。
11.一种数据处理设备,包括可用来处理所述程序指令流的数据处理器和根据权利要求1所述的跟踪逻辑。
12.如权利要求11所述的数据处理设备,所述数据处理设备还包括:
预测逻辑,可用来提供对所述标记指令中的至少一个标记指令的处理行为的至少一个预测;并且其中
所述监视逻辑可用来:
根据所述监视的行为判定所述至少一个预测是否正确;以及
对于所述至少一个标记指令,输出关于所述至少一个预测是否正确的指示作为所述指示符。
13.如权利要求12所述的数据处理设备,其特征在于,所述预测逻辑可用来为至少一个条件指令提供预测,所述预测逻辑可用来预测所述条件指令的条件是真还是假,所述至少一个条件指令的所述指示符包括预测正确指示和预测不正确指示,如果所述预测正确,那么为预测正确指示,如果所述预测不正确,那么为预测不正确指示。
14.如权利要求12所述的数据处理设备,其特征在于,所述预测逻辑可用来提供关于所述数据处理设备的所述部分的所述行为的对应多个步骤的多个预测,所述跟踪逻辑可用来判定所述多个预测中的至少一些预测是否正确并产生所述多个预测指示符中的对应的至少一些预测指示符,所述压缩逻辑可用来压缩所述多个预测指示符中的所述至少一些预测指示符以产生压缩数据,并且所述跟踪逻辑可用来输出所述压缩数据。
15.如权利要求12所述的数据处理设备,其特征在于,所述跟踪逻辑包括嵌入式跟踪宏单元。
16.如权利要求11所述的数据处理设备,所述数据处理设备还包括数据存储部件,并且其中所述压缩逻辑可用来将数据输出到所述数据存储部件。
17.一种诊断设备,可用来接收从监视数据处理器的跟踪逻辑中输出的数据流,所述数据流包括指示在处理标记指令时所述数据处理器的行为的指示符而不包括关于所处理的不是标记指令的指令的数据,所述标记指令包括条件直接转移指令、条件间接转移指令和无条件间接转移指令,所述诊断设备包括解压缩逻辑和数据存储部件,所述数据存储部件可用来存储由所述数据处理器处理的所述程序的所述指令,所述解压缩逻辑可用来接收所述数据流,并根据所述标记指令的所述指示符和所述存储的程序确定程序流。
18.如权利要求17所述的诊断设备,所述诊断设备还包括缓冲器,所述缓冲器可用来接收和存储所述数据流,然后将它转发给所述解压缩逻辑。
19.如权利要求17所述的诊断设备,其特征在于,所述数据流还包括异常事件指示符和计数器值,所述计数器值指示在所述先前标记指令之后处理的指令的数量,所述诊断设备可用来根据所述先前标记指令指示符和所述计数器值确定所述异常事件的位置。
20.如权利要求17所述的诊断设备,其特征在于,所述数据流内的所述指示符包括预测指示符,所述预测指示符指示由所述数据处理设备内的逻辑所做的关于所述数据处理设备的一部分的行为的预测是否正确,所述诊断设备包括:
预测逻辑,可用来做出关于所述数据处理设备的所述部分的所述行为的预测,所述预测对应于由所述数据处理设备内的所述逻辑所做的预测;以及
解压缩逻辑,可用来根据所述预测和所述接收到的数据流确定所述数据处理设备的实际行为。
21.一种系统,包括根据权利要求11所述的数据处理设备和根据权利要求17所述的诊断设备,所述系统还包括用于存储所述程序的程序数据存储部件和解压缩逻辑,所述解压缩逻辑可用来接收由所述压缩逻辑输出的数据,并根据所述标记指令的所述指示符和所述存储的程序确定程序流。
22.一种监视来自数据处理器处理的程序的处理指令流的方法,所述方法包括以下步骤:
检测所述指令流中的所述指令的处理;
检测所述指令流中的所述指令中哪些指令是条件直接转移指令以及所述指令流中的所述指令中哪些指令是无条件间接转移指令或条件间接转移指令;
将所述条件直接转移指令、所述条件间接转移指令和所述无条件间接转移指令指定为标记指令;
对于每个标记指令,输出指示在处理所述标记指令时所述数据处理器的行为的指示符而不输出关于所处理的不是标记指令的指令的数据。
23.一种诊断数据处理器处理的程序的方法,包括:
接收从监视数据处理器的跟踪逻辑中输出的数据流,所述数据流包括指示在处理标记指令时所述数据处理器的行为的指示符而不包括关于所处理的不是标记指令的指令的数据,所述标记指令包括条件指令和间接转移指令;
将所述数据处理器处理的所述程序的所述指令存储在数据存储部件内;
根据所述标记指令的所述指示符和所述存储的程序确定所处理的所述程序的程序流。
24.一种计算机程序产品,当在数据处理器上运行时可用来控制所述数据处理器执行根据前述权利要求中任一权利要求所述的方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/442,593 US7707394B2 (en) | 2006-05-30 | 2006-05-30 | Reducing the size of a data stream produced during instruction tracing |
US11/442593 | 2006-05-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101082875A true CN101082875A (zh) | 2007-12-05 |
CN101082875B CN101082875B (zh) | 2014-01-22 |
Family
ID=38050711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710109820.4A Active CN101082875B (zh) | 2006-05-30 | 2007-05-30 | 减小在指令跟踪过程中产生的数据流的大小 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7707394B2 (zh) |
JP (3) | JP2007323636A (zh) |
CN (1) | CN101082875B (zh) |
GB (1) | GB2438699B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289405A (zh) * | 2010-06-21 | 2011-12-21 | Arm有限公司 | 追踪推测性执行的指令 |
CN103299273A (zh) * | 2011-01-13 | 2013-09-11 | Arm有限公司 | 数据处理装置的追踪 |
CN104067227A (zh) * | 2012-01-23 | 2014-09-24 | 国际商业机器公司 | 分支预测逻辑 |
CN108027762A (zh) * | 2016-06-24 | 2018-05-11 | Arm 有限公司 | 生成和处理指示处理电路的指令执行的跟踪流的装置和方法 |
CN108345534A (zh) * | 2017-01-24 | 2018-07-31 | Arm 有限公司 | 生成和处理跟踪流的装置和方法 |
CN116502576A (zh) * | 2023-06-26 | 2023-07-28 | 北京象帝先计算技术有限公司 | 指令流跟踪验证方法及调试系统 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752425B2 (en) * | 2006-05-30 | 2010-07-06 | Arm Limited | Data processing apparatus having trace and prediction logic |
US8677104B2 (en) * | 2006-05-30 | 2014-03-18 | Arm Limited | System for efficiently tracing data in a data processing system |
US8116179B2 (en) * | 2006-07-28 | 2012-02-14 | Apple Inc. | Simultaneous viewing of multiple tool execution results |
US8086904B2 (en) * | 2006-07-28 | 2011-12-27 | Apple Inc. | Event-based setting of process tracing scope |
US20090249046A1 (en) * | 2008-03-31 | 2009-10-01 | Mips Technologies, Inc. | Apparatus and method for low overhead correlation of multi-processor trace information |
US8230202B2 (en) * | 2008-03-31 | 2012-07-24 | Mips Technologies, Inc. | Apparatus and method for condensing trace information in a multi-processor system |
US7996686B2 (en) * | 2008-07-07 | 2011-08-09 | International Business Machines Corporation | Branch trace methodology |
EP2284708B1 (en) * | 2009-08-03 | 2016-01-06 | C.R.F. Società Consortile per Azioni | Microprogammable device code tracing |
CN101989888B (zh) * | 2009-08-05 | 2014-03-12 | 中兴通讯股份有限公司 | 一种开启/关闭前向纠错编码功能的指示方法及系统 |
US8850410B2 (en) * | 2010-01-29 | 2014-09-30 | International Business Machines Corporation | System using a unique marker with each software code-block |
GB2481384B (en) | 2010-06-21 | 2018-10-10 | Advanced Risc Mach Ltd | Key allocation when tracing data processing systems |
US8489866B2 (en) * | 2010-06-30 | 2013-07-16 | International Business Machines Corporation | Branch trace history compression |
US20120005462A1 (en) * | 2010-07-01 | 2012-01-05 | International Business Machines Corporation | Hardware Assist for Optimizing Code During Processing |
US8561033B2 (en) * | 2010-07-30 | 2013-10-15 | International Business Machines Corporation | Selective branch-triggered trace generation apparatus and method |
US8868886B2 (en) | 2011-04-04 | 2014-10-21 | International Business Machines Corporation | Task switch immunized performance monitoring |
US9342432B2 (en) | 2011-04-04 | 2016-05-17 | International Business Machines Corporation | Hardware performance-monitoring facility usage after context swaps |
US20130055033A1 (en) | 2011-08-22 | 2013-02-28 | International Business Machines Corporation | Hardware-assisted program trace collection with selectable call-signature capture |
KR20130066402A (ko) * | 2011-12-12 | 2013-06-20 | 삼성전자주식회사 | 트레이스 데이터 저장 장치 및 방법 |
US8612650B1 (en) | 2012-03-13 | 2013-12-17 | Western Digital Technologies, Inc. | Virtual extension of buffer to reduce buffer overflow during tracing |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US8966324B2 (en) * | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9326236B2 (en) | 2013-05-24 | 2016-04-26 | International Business Machines Corporation | Method, apparatus and computer program product providing performance and energy optimization for mobile computing |
US9703669B2 (en) * | 2014-11-14 | 2017-07-11 | Cavium, Inc. | Apparatus and method for distributed instruction trace in a processor system |
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 |
EP3607526A4 (en) * | 2017-04-01 | 2020-11-04 | INTEL Corporation | HYBRID TECHNOLOGY SHARED BY EXECUTION UNITS FOR ACCELERATED COMPUTING ON GRAPHIC PROCESSORS |
GB2571947B (en) * | 2018-03-13 | 2020-09-16 | Advanced Risc Mach Ltd | Tracing branch instructions |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US23959A (en) * | 1859-05-10 | Improvement in raking attachments for harvesting-machines | ||
US162895A (en) * | 1875-05-04 | Improvement | ||
US215720A (en) * | 1879-05-27 | Improvement in machines for pulling hop-poles | ||
US65912A (en) * | 1867-06-18 | Island | ||
US32309A (en) * | 1861-05-14 | Thbeshing-machine | ||
US194464A (en) * | 1877-08-21 | Improvement in machines for making horseshoe-nails | ||
JPH02271435A (ja) * | 1989-04-13 | 1990-11-06 | Mitsubishi Electric Corp | タスクトレース装置 |
US5333283A (en) * | 1991-10-29 | 1994-07-26 | International Business Machines Corporation | Case block table for predicting the outcome of blocks of conditional branches having a common operand |
JPH09237201A (ja) * | 1996-03-01 | 1997-09-09 | Yokogawa Digital Computer Kk | マイクロコンピュータアナライザ |
US5758143A (en) * | 1996-10-07 | 1998-05-26 | International Business Machines Corporation | Method for updating a branch history table in a processor which resolves multiple branches in a single cycle |
EP0869434A3 (en) * | 1997-03-31 | 1999-09-15 | Hewlett-Packard Company | Method for outputting trace information of a microprocessor |
US6314530B1 (en) * | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
US5933626A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
US6014742A (en) * | 1997-12-31 | 2000-01-11 | Intel Corporation | Trace branch prediction unit |
JPH11345150A (ja) * | 1998-06-02 | 1999-12-14 | Nec Robotics Eng Ltd | トレース方式 |
US6173395B1 (en) * | 1998-08-17 | 2001-01-09 | Advanced Micro Devices, Inc. | Mechanism to determine actual code execution flow in a computer |
US6247146B1 (en) * | 1998-08-17 | 2001-06-12 | Advanced Micro Devices, Inc. | Method for verifying branch trace history buffer information |
US6115810A (en) * | 1998-09-16 | 2000-09-05 | Sun Microsystems, Inc. | Bi-level branch target prediction scheme with mux select prediction |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
US6351844B1 (en) | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
US6418530B2 (en) * | 1999-02-18 | 2002-07-09 | Hewlett-Packard Company | Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions |
US6499101B1 (en) | 1999-03-18 | 2002-12-24 | I.P. First L.L.C. | Static branch prediction mechanism for conditional branch instructions |
US6542855B1 (en) * | 1999-05-10 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Selecting a cache design for a computer system using a model with a seed cache to generate a trace |
US6513134B1 (en) * | 1999-09-15 | 2003-01-28 | International Business Machines Corporation | System and method for tracing program execution within a superscalar processor |
US6658557B1 (en) * | 2000-05-25 | 2003-12-02 | Advanced Micro Devices, Inc. | Synthesizing the instruction stream executed by a microprocessor from its branch trace data |
JP3796111B2 (ja) * | 2000-11-10 | 2006-07-12 | 株式会社ルネサステクノロジ | データプロセッサ |
JP2002175198A (ja) * | 2000-12-07 | 2002-06-21 | Sony Corp | 演算処理装置および演算処理装置のデバッグ方法とそのシステム |
US20030023959A1 (en) | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US7165169B2 (en) | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
JP2003050716A (ja) * | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | ソフトウエアデバッガとソフトウエア開発支援システム |
JP2003085000A (ja) * | 2001-09-10 | 2003-03-20 | Mitsubishi Electric Corp | トレース情報生成装置およびその方法 |
US7203825B2 (en) | 2001-10-03 | 2007-04-10 | Intel Corporation | Sharing information to reduce redundancy in hybrid branch prediction |
GB2389432B (en) * | 2002-06-07 | 2005-09-07 | Advanced Risc Mach Ltd | Instruction tracing in data processing systems |
US7197671B2 (en) * | 2002-06-07 | 2007-03-27 | Arm Limited | Generation of trace elements within a data processing apparatus |
US20040064685A1 (en) * | 2002-09-27 | 2004-04-01 | Hung Nguyen | System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution |
US7120784B2 (en) | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
JP2005070951A (ja) * | 2003-08-21 | 2005-03-17 | Sanyo Electric Co Ltd | プログラム処理装置 |
JP2005196437A (ja) * | 2004-01-07 | 2005-07-21 | Matsushita Electric Ind Co Ltd | プロセッサおよび開発支援装置 |
US7197586B2 (en) * | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
JP2006120071A (ja) * | 2004-10-25 | 2006-05-11 | Matsushita Electric Ind Co Ltd | プロセッサおよび開発支援装置 |
US20070162895A1 (en) | 2006-01-10 | 2007-07-12 | International Business Machines Corporation | Mechanism and method for two level adaptive trace prediction |
-
2006
- 2006-05-30 US US11/442,593 patent/US7707394B2/en active Active
-
2007
- 2007-04-02 GB GB0706426A patent/GB2438699B/en active Active
- 2007-05-11 JP JP2007126789A patent/JP2007323636A/ja active Pending
- 2007-05-30 CN CN200710109820.4A patent/CN101082875B/zh active Active
-
2012
- 2012-04-16 JP JP2012093035A patent/JP2012160200A/ja active Pending
-
2014
- 2014-07-18 JP JP2014148052A patent/JP2014220003A/ja active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289405A (zh) * | 2010-06-21 | 2011-12-21 | Arm有限公司 | 追踪推测性执行的指令 |
US9639361B2 (en) | 2010-06-21 | 2017-05-02 | Arm Limited | Tracing speculatively executed instructions |
US10379989B2 (en) | 2011-01-13 | 2019-08-13 | Arm Limited | Processing apparatus, trace unit and diagnostic apparatus |
CN103299273A (zh) * | 2011-01-13 | 2013-09-11 | Arm有限公司 | 数据处理装置的追踪 |
CN103314356A (zh) * | 2011-01-13 | 2013-09-18 | Arm有限公司 | 处理设备、追踪单元及诊断设备 |
US9378113B2 (en) | 2011-01-13 | 2016-06-28 | Arm Limited | Tracing of a data processing apparatus |
CN103299273B (zh) * | 2011-01-13 | 2016-11-23 | Arm有限公司 | 数据处理装置的追踪 |
CN104067227A (zh) * | 2012-01-23 | 2014-09-24 | 国际商业机器公司 | 分支预测逻辑 |
CN104067227B (zh) * | 2012-01-23 | 2017-05-10 | 国际商业机器公司 | 分支预测逻辑 |
CN108027762A (zh) * | 2016-06-24 | 2018-05-11 | Arm 有限公司 | 生成和处理指示处理电路的指令执行的跟踪流的装置和方法 |
CN108345534A (zh) * | 2017-01-24 | 2018-07-31 | Arm 有限公司 | 生成和处理跟踪流的装置和方法 |
CN108345534B (zh) * | 2017-01-24 | 2023-03-03 | Arm 有限公司 | 生成和处理跟踪流的装置和方法 |
CN116502576A (zh) * | 2023-06-26 | 2023-07-28 | 北京象帝先计算技术有限公司 | 指令流跟踪验证方法及调试系统 |
CN116502576B (zh) * | 2023-06-26 | 2023-10-20 | 北京象帝先计算技术有限公司 | 指令流跟踪验证方法及调试系统 |
Also Published As
Publication number | Publication date |
---|---|
US7707394B2 (en) | 2010-04-27 |
GB2438699A8 (en) | 2010-11-03 |
GB2438699B (en) | 2011-06-08 |
JP2014220003A (ja) | 2014-11-20 |
JP2007323636A (ja) | 2007-12-13 |
GB0706426D0 (en) | 2007-05-09 |
US20070294592A1 (en) | 2007-12-20 |
GB2438699A (en) | 2007-12-05 |
JP2012160200A (ja) | 2012-08-23 |
CN101082875B (zh) | 2014-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101082875B (zh) | 减小在指令跟踪过程中产生的数据流的大小 | |
JP4233893B2 (ja) | データ処理システムにおける命令のトレーシング | |
CN100533416C (zh) | 控制处理环境的数据传输的方法和系统 | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
CN102289405A (zh) | 追踪推测性执行的指令 | |
JP2005317023A (ja) | データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
US11748072B2 (en) | Apparatus and method for source code optimisation | |
WO2014090085A1 (en) | Branch-free condition evaluation | |
CN100444126C (zh) | 用于自主剖析应用程序的方法和设备 | |
CN111125697B (zh) | 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统 | |
EP2972880B1 (en) | Kernel functionality checker | |
JP5606261B2 (ja) | デバッグシステムおよびデバッグシステムのトレースデータ取得方法 | |
US20230236950A1 (en) | Static source code analysis using explicit feedback and implicit feedback | |
US20090055636A1 (en) | Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence | |
CN110134438B (zh) | 指令排序方法、装置、移动终端及存储介质 | |
Biallas et al. | Range and value-set analysis for programmable logic controllers | |
CN100389411C (zh) | 在嵌入式实时操作系统中实现逻辑中断优先级的方法 | |
US8010477B2 (en) | Integrated problem solving system | |
CN114265593B (zh) | 指令调度方法、装置、设备及计算机可读存储介质 | |
Esaki et al. | A model for program error prediction based on testing characteristics and its evaluation | |
Huang et al. | A denotational model for interrupt-driven programs | |
US20240118894A1 (en) | Overflow Event Counter | |
CN114175002B (zh) | 数据处理装置、方法及计算机可读取的记录介质 | |
JP2007527050A (ja) | 分岐予測の方法およびシステム |
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 |