CN103314356B - 处理设备、追踪单元、诊断设备及其方法 - Google Patents

处理设备、追踪单元、诊断设备及其方法 Download PDF

Info

Publication number
CN103314356B
CN103314356B CN201180064982.5A CN201180064982A CN103314356B CN 103314356 B CN103314356 B CN 103314356B CN 201180064982 A CN201180064982 A CN 201180064982A CN 103314356 B CN103314356 B CN 103314356B
Authority
CN
China
Prior art keywords
flag
condition
trace data
conditional
trail
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180064982.5A
Other languages
English (en)
Other versions
CN103314356A (zh
Inventor
约翰·霍尔利
西蒙·克拉斯克
迈克尔·吉布斯
保罗·吉尔克森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN103314356A publication Critical patent/CN103314356A/zh
Application granted granted Critical
Publication of CN103314356B publication Critical patent/CN103314356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • G06F11/3461Trace driven simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

处理电路(4)对至少一个条件式指令作出响应,以取决于至少一个条件旗标(22)的子集的当前值来执行条件式运算。追踪电路(6)被提供来用于产生追踪数据元素,所述追踪数据元素指示由处理电路(4)执行的运算。当处理电路(4)处理至少一个选定的指令时,追踪电路(6)产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示需要用来确定该条件式指令的结果的条件旗标(22)的至少该子集。相应诊断设备(12)使用该所追踪条件值来确定该至少一个条件式指令的处理结果。

Description

处理设备、追踪单元、诊断设备及其方法
技术领域
本发明关于数据处理的领域。更特定言,本发明关于追踪由处理设备执行的处理运算并分析在追踪期间产生的追踪数据。
背景技术
在处理设备中,可提供追踪电路以用于监视由处理电路执行的处理运算并用于产生指示所执行的处理运算的追踪数据。诊断设备可分析追踪数据,以便演绎处理运算的处理结果。可针对预期结果来核对处理结果以验证处理设备是否正确操作。
处理设备可执行条件式指令,所述条件式指令规定相关联的条件。条件式指令的处理结果取决于在执行条件式指令时是否满足相关联的条件。在由追踪电路追踪条件式指令的执行时,追踪电路可产生追踪数据,该追踪数据包括对通过条件还是未通过条件的指示。当分析追踪数据时,该通过/未通过指示可用以确定条件式指令的结果。
然而,当追踪一些进阶处理器时,可能难以获得条件式结果的通过/未通过结果。一些处理器可能包含处理流水线,所述处理流水线具有该此并行的多个执行阶段。一些处理器可执行指令的乱序运行以改良效能。因此,可能难以预先预测何时及在流水线中的哪一点处该通过/未通过结果将变为可用。本发明的技术力图简化条件式指令的追踪。
发明内容
根据一个方面,本发明提供一种处理设备,该处理设备包含:
处理电路,该处理电路被配置为响应于程序指令而执行处理运算;
条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标(flag),该至少一个条件旗标指示该处理电路的条件;以及
追踪电路,该追踪电路被配置为产生追踪数据元素,所述追踪数据元素指示由该处理电路响应于所述程序指令而执行的所述处理运算;其中:
该处理电路对至少一个条件式指令作出响应,以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;且
该追踪电路被配置为响应于该处理电路处理至少一个选定的指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
处理设备可具有条件状态储存位置(例如,寄存器),该条件状态储存位置用于储存至少一个条件旗标,该至少一个条件旗标指示该处理电路的条件。该处理电路可取决于该至少一个条件旗标的至少一子集的当前值来执行条件式指令。举例而言,当执行条件式指令时,若所述条件旗标的子集的当前值满足给定条件,则可执行该条件式指令的相关联条件式运算,否则,若未满足该条件,则可不执行运算。该追踪电路可被配置为响应于该处理电路处理至少一个选定的指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该条件式指令所取决于的该至少一个条件旗标的至少该子集。该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
本发明的技术认识到,条件旗标的值通常比该条件式指令的通过/未通过结果容易获得。举例而言,条件旗标通常为该处理设备的架构状态的部分,且因此条件旗标可在处理流水线的早期阶段被读取,而不需要监视何时及在该流水线的哪一阶段指令的执行结果变为可用。因此,藉由追踪条件旗标值而非通过/未通过结果,简化了该追踪电路的配置。
该所追踪条件值可具有不同形式。在一个实例中,该所追踪条件值可包含该至少一个条件旗标的至少该子集的当前值。因此,该追踪数据元素直接识别条件旗标值。
或者,该所追踪条件值可包含识别符,该识别符识别该至少一个条件旗标的至少该子集的值。在一些情况下,此举可比追踪条件旗标的实际值更高效。举例而言,若条件旗标的值的某些图样(pattern)比其它图样常用,则可对最常用的图样指派特定识别符,该特定识别符具有少于条件旗标的实际值的位数。此举将倾向于减少由追踪电路产生的追踪数据量,因此减轻了对追踪频宽的约束。
指令流中条件旗标被追踪的点可变化,且未必需要是将使用所追踪条件值来确定其结果的条件式指令。该所追踪条件值可在任何选定的指令下输出。
在一个实例中,该处理电路对至少一个条件更新指令作出响应,以执行相关联的处理运算并取决于该相关联的处理运算的处理结果来更新该至少一个条件旗标。在此情况下,触发条件旗标的追踪的该至少一个选定的指令可包含该至少一个条件更新指令。举例而言,该条件更新指令可包含比较指令,该比较指令比较两个数据值且取决于该比较的结果来更新该至少一个条件旗标,且该至少一个条件旗标可在该比较指令执行后加以追踪。在更新该至少一个条件旗标时该追踪流中包括的所追踪条件值提供用于确定任何后续条件式指令通过还是未通过其相关联条件的信息。
当在执行该至少一个条件更新指令后输出所追踪条件值时,所追踪条件值可指示因处理该至少一个条件更新指令而产生的条件旗标的所更新值。因此,此所更新值可用于确定在该条件旗标的下一更新之前发生的任何后续条件式指令的结果。
该至少一个条件更新指令不需要包括由该处理电路执行的每一条件更新指令。在一些情形下,可存在连续发生而无任何介入条件式指令的若干条件更新指令,在此状况下,仅从最后的条件更新指令产生的条件旗标值将由条件式指令使用。因此,将不必针对所有条件更新指令来产生所追踪条件值。
替代地,或除该至少一个条件更新指令外,该至少一个选定的指令可包括该至少一个条件式指令中的至少一个条件式指令。在一些情形下,在执行该条件更新指令时,可能难以确定任何后续条件指令将实际上是否使用由该条件更新指令产生的所更新条件旗标值。因此,可能更高效的是,在追踪由条件式指令使用的该至少一个条件旗标的至少该子集之前,替代地等待直至条件式指令使用该至少一个条件旗标为止。
当在执行条件式指令后输出所追踪条件值时,该所追踪条件值可指示在处理该条件式指令时该至少一个条件旗标的至少该相关子集的当前值。
此外,并非始终有必要在执行每一条件式指令后输出所追踪条件值。程序可包括与互斥条件相关联的一对互补条件式指令。举例而言,第一条件式指令之后可接着第二条件式指令,该第一条件式指令取决于产生“等于”结果的先前处理运算,该第二条件式指令取决于产生“不等于”结果的先前处理运算。在此情况下,将不必针对该第二条件式指令来追踪条件旗标值,这是因为可根据针对该第一条件式指令而产生的所追踪条件值来确定该第二条件式指令的处理结果。因此,在一些情形下,可能较佳的是,该选定的指令包含在该至少一个条件旗标的更新后被处理的第一条件式指令。
并非所有类型的条件式指令或条件更新指令均需要由追踪单元追踪。在一些实例中,仅指令类型的一子集可能为感兴趣的。在此情况下,仅条件式指令或条件更新指令的相关子集将触发包括所追踪条件值的追踪数据元素的输出。该追踪电路可被配置为选择将所述程序指令中的哪些程序指令包括于该至少一个选定的指令中,以用于触发包括所追踪条件值的追踪数据元素的产生。举例而言,该追踪电路可对控制信号作出响应,所述控制信号指示应对条件旗标进行追踪的指令,例如,仅特定条件式指令,诸如条件式储存指令。
应注意,一些种类的指令可为条件式指令和条件更新指令两者。举例而言,条件式比较指令可具有相关联的条件且可规定待在满足相关联的条件的情形下执行比较。在执行该条件式比较指令后,若该至少一个条件旗标的当前值满足相关联的条件,则执行比较且基于该比较的结果来更新该至少一个条件旗标。因此,可取决于该追踪电路的配置,将该条件式比较指令作为条件式指令、或作为条件更新指令、或作为条件式指令与条件更新指令二者来追踪。
该追踪电路可被配置为储存控制旗标,且该追踪电路可对该控制旗标作出响应以选择特定程序指令是否触发包括所追踪条件值的追踪数据元素的产生。举例而言,该追踪电路可使用该控制旗标来记录是否已追踪该至少一个条件旗标的当前状态,且接着使用该控制旗标来确定是否应针对后续指令来追踪该至少一个条件旗标。
在一个实例中,该控制旗标具有第一状态及第二状态。举例而言,该控制旗标可包含位,该位具有指示第一状态与第二状态中的一个状态的“0”值及指示第一状态与第二状态中的另一状态的“1”值。该追踪电路可对该至少一个条件旗标的更新作出响应,以将该控制旗标置于第一状态中,且可对该处理电路处理条件式指令作出响应,以(a)确定该控制旗标是否处于该第一状态中;且(b)若该控制旗标处于该第一状态中,则产生包括该所追踪条件值的追踪数据元素并将该控制旗标置于该第二状态中。
因此,该控制旗标的第一状态指示已更新该至少一个条件旗标,但尚未追踪该至少一个条件旗标的所更新值。若当执行待追踪的条件式指令时该控制旗标处于第一状态中,则产生包括所追踪条件值的追踪数据元素,以使得可根据追踪数据来确定该条件式指令的处理结果。在产生包括所追踪条件值的追踪数据元素后,将该控制旗标置于第二状态中,以指示已追踪该至少一个条件旗标的当前状态,且因此,在执行后续条件式指令后,不必再次追踪该至少一个条件旗标。当已再一次更新该至少一个条件旗标时,将该控制旗标返回至第一状态。此技术帮助减少追踪数据量,这是因为,若已可根据先前产生的追踪数据元素中包括的所追踪条件值来确定相应指令的处理结果,则不产生包括所追踪条件值的追踪数据元素。
在一些实施例中,该条件状态储存位置可被配置为储存多个条件旗标,所述多个条件旗标对应于该处理电路的相应条件。举例而言,在由英国剑桥的ARM有限公司(ARMLimitedofCambridge,UK)设计的处理器中,条件旗标通常包括:N旗标,该N旗标指示先前处理结果是否为负值;Z旗标,该Z旗标指示先前处理结果是否为零值;C旗标,该C旗标指示先前处理运算是否导致进位运算;以及V旗标,该V旗标指示先前处理运算是否导致溢位。其它类型的条件旗标亦为可能的。
在存在多个条件旗标的情况下,特定条件式指令不需要取决于所有条件旗标,而是可取决于这些条件旗标的任何子集。当追踪条件旗标的当前值时,可藉由产生具有指示多个条件旗标的相关子集的所追踪条件值的追踪数据元素来减少追踪数据量。可省略并非该子集的部分的条件旗标,从而不包括于追踪数据元素中。
另一方面,不管条件旗标的哪一子集实际上正由条件式指令使用,该追踪电路亦可被配置为产生具有指示所有多个条件旗标的所追踪条件值的追踪数据元素。在一些情形下,此举可降低被提供来用于存取条件旗标的值的硬件的复杂性,这是因为将不必提供用于存取条件状态储存位置的各个旗标的电路。
在一实施例中,该追踪电路可被配置为储存多个控制旗标,多个控制旗标对应于多个条件旗标。该追踪电路可对每一控制旗标作出响应,以选择是否针对给定程序指令产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该相应条件旗标。每一控制旗标可例如用于追踪从相应条件旗标的最近更新起是否已追踪该旗标,且因此确定是否需要在执行后来的程序指令后追踪该条件旗标。
在一个实例中,所述多个控制旗标各自具有第一状态及第二状态,该追踪电路对所述多个条件旗标中的任何条件旗标的更新作出响应,以至少将对应于已更新的条件旗标的控制旗标置于该第一状态中;且该追踪电路对该处理电路处理取决于条件旗标的所需子集的该至少一个条件式指令中的一个条件式指令作出响应,以(a)确定与条件旗标的该所需子集相对应的相应控制旗标中的任何控制旗标是否处于该第一状态中;且(b)若所述相应控制旗标中的任何控制旗标处于该第一状态中,则产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值至少指示相应控制旗标处于该第一状态中的该所需子集的条件旗标,并将相应控制旗标置于该第二状态中。
因此,当更新所述条件旗标中的任何条件旗标时,将至少对应于所更新条件旗标的控制旗标置于该第一状态中,从而指示尚未在相应条件旗标的所更新形式下追踪相应条件旗标。当遭遇取决于条件旗标的所需子集的条件式指令时,确定与该子集相对应的相应控制旗标中的任何控制旗标是否处于第一状态中。若这些相应控制旗标中的任何控制旗标处于第一状态中,则此举指示尚未追踪相应条件旗标,且因此产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值至少指示其相应控制旗标处于第一状态中的所需子集的条件旗标。当追踪特定条件旗标时,将该条件旗标的相应控制旗标置于第二状态中。当遭遇条件式指令且条件旗标的所需子集中的一个条件旗标具有处于第二状态中的相应控制旗标时,此举指示已追踪该条件旗标且不需要再次追踪该条件旗标。此技术通过追踪如下条件旗标而帮助减少追踪数据量,所述条件旗标尚未在条件旗标的当前形式下被追踪且所述条件旗标为确定特定条件式指令的处理结果所需。
在一个实施例中,可在条件更新后将所有多个控制旗标置于第一状态中,甚至在仅更新条件旗标的一子集的情形下亦如此。此举可简化用于实施本发明的技术的硬件,这是因为将不需要核对因条件更新指令而实际上更新哪些旗标。
在提供多个控制旗标的实施例中,可通过仅追踪其控制旗标处于第一状态中的所需子集的条件旗标,来达成追踪数据量的最大减少。但是,亦有可能的是,若在执行条件式指令后,与条件旗标的所需子集相对应的相应控制旗标中的任何控制旗标处于第一状态中,则追踪所有条件旗标的值。此举可简化用于读取条件旗标的状态的硬件。
上文已将该一个或多个控制旗标描述为在条件旗标的更新发生时被置于第一状态中。然而,此并非将控制旗标重设为第一状态的仅有情形。各种其它事件亦可使控制旗标得以置于第一状态中。
如上所述,本发明的技术不需要应用于所有类型的条件式指令。此技术可例如仅用于条件式指令的子集。在一个实例中,该至少一个条件式指令的条件式运算可为非分支运算。一些追踪电路可具有用于例如使用分支预测方案来确定条件式分支指令的结果的独立机构。因此,在一些实施例中,本发明的技术可仅应用于条件式非分支指令,其中由追踪电路独立地处理条件式分支指令的追踪。
根据另一方面,本发明提供一种处理设备,该处理设备包含:
处理构件,该处理构件用于响应于程序指令而执行处理运算;
条件状态储存构件,该条件状态储存构件用于储存至少一个条件旗标,该至少一个条件旗标指示该处理构件的条件;以及
追踪构件,该追踪构件用于产生追踪数据元素,所述追踪数据元素指示由该处理构件响应于所述程序指令而执行的所述处理运算;其中:
该处理构件对至少一个条件式指令作出响应,以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;
且该追踪构件被配置为响应于该处理构件处理至少一个选定的指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
根据另一方面,本发明提供一种用于监视由处理设备响应于程序指令而执行的处理运算的追踪单元,该处理设备包含条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该追踪单元包含:
追踪电路,该追踪电路被配置为产生追踪数据元素,所述追踪数据元素指示由该处理设备响应于所述程序指令而执行的所述处理运算;其中:
该追踪电路被配置为响应于该处理设备处理至少一个选定的指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
根据另一方面,本发明提供一种用于监视由处理设备响应于程序指令而执行的处理运算的追踪单元,该处理设备包含条件状态储存构件,该条件状态储存构件用于储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该追踪单元包含:
追踪构件,该追踪构件用于产生追踪数据元素,所述追踪数据元素指示由该处理设备响应于所述程序指令而执行的所述处理运算;其中:
该追踪构件被配置为响应于该处理设备处理至少一个选定的指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
根据另一方面,本发明提供一种用于分析追踪数据的诊断设备,该追踪数据指示由处理设备响应于程序指令而执行的处理运算,该处理设备包含条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该诊断设备包含:
追踪输入端,该追踪输入端被配置为接收追踪数据,该追踪数据包括至少一个追踪数据元素,该至少一个追踪数据元素是响应于该处理设备处理至少一个选定的指令而产生的,该至少一个追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集;以及
诊断电路,该诊断电路被配置为取决于该至少一个追踪数据元素中包括的该所追踪条件值来确定该至少一个条件式指令的处理结果。
诊断设备接收由相应追踪单元产生的追踪数据。该诊断设备具有用于分析追踪数据的诊断电路。使用追踪数据元素中指示的所追踪条件值,该诊断电路可确定该至少一个条件式指令的处理结果。
该诊断设备可接收哪些指令被处理设备执行同时正被追踪的指示。此指示可具有若干形式。有可能在追踪流内提供用于指示由处理设备执行哪些指令的信息。然而,可通过以下方式提供更高效的实施:允许诊断设备存取储存所执行的程序指令的存储器(例如,通过向诊断设备提供程序执行开始处的指令地址)或向诊断设备提供用于储存由处理设备执行的程序的相应复本的相应存储器。诊断设备可使用由处理设备执行哪些指令的此指示,以确定何时预期到包括所追踪条件值的追踪数据元素。在一个实例中,响应于对该至少一个选定的指令的指示,该诊断设备可演绎出已将相应数据元素包括在追踪流中,且通过定位此数据元素,该诊断电路可确定至少一个条件式指令的处理结果。该选定的指令可为至少一个条件更新指令,或该至少一个条件式指令中的至少一个条件式指令。
该诊断电路可被配置为储存诊断控制旗标,该诊断控制旗标具有第一状态及第二状态;该追踪输入端可接收对该处理设备处理的程序指令的指示;该诊断电路可对该处理设备更新该至少一个条件旗标的指示作出响应,以将该诊断控制旗标置于该第一状态中;且该诊断电路可对该处理设备处理条件式指令的指示作出响应,以:(a)确定该诊断控制旗标是否处于该第一状态中;(b)若该诊断控制旗标处于该第一状态中,则针对该条件式指令在该追踪数据中定位相关联的追踪数据元素,并取决于该相关联的追踪数据元素中包括的该所追踪条件值来确定该条件式指令的该处理结果,且将该诊断控制旗标置于该第二状态;且(c)若该诊断控制旗标处于该第二状态中,则在该追踪数据中定位与先前条件式指令相关联的另外的追踪数据元素,并取决于该另外的追踪数据元素中包括的该所追踪条件值来确定该条件式指令的该处理结果。
因此,该诊断电路可维护与在产生追踪流时由追踪单元使用的控制旗标相对应的诊断控制旗标。当该诊断电路接收导致该至少一个条件旗标的更新的由该处理电路执行的程序指令的指示(例如,该指示可为追踪流中的对条件更新的明确指示,或者,该指示可为当该诊断电路在处理追踪流的同时遭遇条件更新指令时出现的隐含指示)时,该诊断设备将其诊断控制旗标置于该状态中,从而指示,下一次发现条件式指令的指示时,该诊断电路应预期该追踪流包括相关联的追踪数据元素,该相关联的追踪数据元素包括所追踪条件值。
当该诊断电路接收对该处理设备处理条件式指令的指示时,该诊断设备确定该诊断控制旗标是否处于第一状态中,且若该诊断控制旗标处于第一状态中,则该诊断设备针对该条件式指令定位相关联的追踪数据元素,且取决于该相关联的追踪数据元素中包括的所追踪条件值来确定该条件式指令的处理结果。该诊断设备接着将该诊断控制旗标置于第二状态中,从而指示可根据相关联的追踪数据元素中包括的所追踪条件值演绎出任何后续条件式指令的效果。接着,若在该诊断控制旗标处于第二状态中时侦测到条件式指令的指示,则该诊断设备可回顾与先前条件式指令相关联的追踪数据元素,且取决于较早追踪数据元素中包括的所追踪条件值来确定最近的条件式指令的处理结果。此技术允许该诊断设备以与追踪电路执行的技术对应的方式来确定处理运算的结果。
若该处理设备的条件状态储存位置储存与该处理设备的相应条件相对应的多个条件旗标,则该诊断电路可被配置为储存对应于所述多个条件旗标的多个诊断控制旗标,所述多个诊断控制旗标各自具有第一状态及第二状态;该追踪输入端可接收对由该处理设备处理的程序指令的指示;该诊断电路可对该处理设备更新多个条件旗标中的任何条件旗标的指示作出响应,以至少将对应于已更新的条件旗标的控制旗标置于该第一状态中;且该诊断电路可对该处理设备处理取决于条件旗标的所需子集的条件指令的指示作出响应,以:(a)确定与条件旗标的该所需子集相对应的相应诊断控制旗标中的任何诊断控制旗标是否处于该第一状态中;(b)若在步骤(a)处,所述相应诊断控制旗标中的任何诊断控制旗标处于该第一状态中,则针对该条件式指令将相关联的追踪数据元素定位于该追踪数据中,且将所述相应诊断控制旗标置于该第二状态中,该相关联的追踪数据元素包括第一所追踪条件值,该第一所追踪条件值至少指示其相应诊断控制旗标处于该第一状态中的条件旗标;(c)若在步骤(a)处,所述相应诊断控制旗标中的任何诊断控制旗标处于该第二状态中,则针对至少一个先前条件式指令而将至少一个另外的追踪数据元素定位于该追踪数据中,该至少一个另外的追踪数据元素包括至少一个另外的所追踪条件值,该至少一个另外的所追踪条件值至少指示其相应诊断控制旗标处于该第二状态中的条件旗标;且(d)取决于该第一所追踪条件值及该至少一个另外的所追踪条件值中的至少一者来确定该条件式指令的该处理结果。
此算法对应于追踪单元的算法,在追踪单元的算法中,提供了对应于相应条件旗标的独立条件控制旗标。该诊断电路能够根据诊断控制旗标来确定追踪流是否包括针对给定条件式指令的追踪元素,从而指示相关子集的条件旗标的值,或者确定是否有必要回顾较早条件式指令的一个或多个另外的追踪数据元素以确定所需条件旗标值。可取决于针对当前条件式指令而在追踪数据元素中包括的所追踪条件值及针对较早条件式指令而在至少一个较早追踪数据元素中包括的所追踪条件值中的一者或两者,来确定当前条件式指令的处理结果。
根据另一方面,本发明提供一种用于分析指示由处理设备响应于程序指令来执行的处理运算的追踪数据元素的诊断设备,该处理设备包含条件状态储存构件,该条件状态储存构件用于储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该诊断设备包含:
输入构件,该输入构件用于接收追踪数据元素,该追踪数据元素是响应于该处理设备处理至少一个选定的指令而产生的,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集;以及
诊断构件,该诊断构件用于取决于针对该至少一个选定的指令而在该追踪数据元素中包括的该所追踪条件值来确定该至少一个条件式指令的处理结果。
根据另一方面,本发明提供一种数据处理的方法,该方法包含以下步骤:
响应于程序指令,使用处理设备来执行处理运算;
储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件;以及
产生追踪数据元素,所述追踪数据元素指示所述处理运算;其中:
该执行处理运算的步骤包括:响应于至少一个条件式指令,取决于该至少一个条件旗标的子集的当前值来执行条件式运算;且
该产生追踪数据元素的步骤包括:响应于至少一个选定的指令,产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
根据另一方面,本发明提供一种用于分析追踪数据元素的方法,所述追踪数据元素指示由处理设备响应于程序指令而执行的处理运算,该处理设备包含条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该方法包含以下步骤:
接收追踪数据元素,该追踪数据元素是响应于该处理设备处理至少一个选定的指令而产生的,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集;以及
取决于针对该至少一个选定的指令而在该追踪数据元素中包括的该所追踪条件值来确定该至少一个条件式指令的处理结果。
可提供一种计算机程序,该计算机程序用于控制计算机,以执行上述分析追踪数据元素的方法。可在非暂时性储存媒体上提供该计算机程序。
根据另一方面,本发明提供一种处理设备,该处理设备包含:处理电路,该处理电路被配置为响应于程序指令而执行处理运算;以及
追踪电路,该追踪电路被配置为产生追踪数据元素,所述追踪数据元素指示由该处理电路响应于所述程序指令而执行的所述处理运算;其中:
该处理电路对至少一个条件式指令作出响应,以取决于该处理电路的条件来执行条件式运算;
该追踪电路被配置为储存控制旗标,该控制旗标具有第一状态及第二状态;
该追踪电路对该处理电路的该条件的更新作出响应,以将该控制旗标置于该第一状态中;且
该追踪电路对该处理电路处理该至少一个条件式指令中的一个条件式指令作出响应,以:(a)确定该控制旗标是否处于该第一状态中;且(b)若该控制旗标处于该第一状态中,则产生追踪数据元素,并将该控制旗标置于该第二状态,该追踪数据元素包括效果指示值,该效果指示值用于提供关于该至少一个条件式指令的处理结果的信息。
可扩展用于确定是否针对给定条件式指令追踪条件旗标值的上述控制算法,以用于对提供用于确定该条件式指令的处理结果的信息的任何效果指示值进行追踪。举例而言,该效果指示值可包括如上所述的所追踪条件值,但亦可包括其它种类的效果指示值,例如,该条件式指令的通过/未通过结果。通过使用此算法,减少了追踪数据量,这是因为针对在该处理电路的条件更新后的第一条件式指令而包括效果指示值,但不针对后续指令而包括效果指示值,所述后续指令的处理结果可使用针对先前指令而产生的追踪数据来加以确定。
根据另一方面,本发明提供一种处理设备,该处理设备包含:
处理构件,该处理构件用于响应于程序指令而执行处理运算;以及
追踪构件,该追踪构件用于产生追踪数据元素,所述追踪数据元素指示由该处理构件响应于所述程序指令而执行的所述处理运算;其中:
该处理构件对至少一个条件式指令作出响应,以取决于该处理构件的条件来执行条件式运算;
该追踪构件被配置为储存控制旗标,该控制旗标具有第一状态及第二状态;
该追踪构件对该处理构件的该条件的更新作出响应,以将该控制旗标置于该第一状态中;且
该追踪构件对该处理构件处理该至少一个条件式指令中的一个条件式指令作出响应,以:(a)确定该控制旗标是否处于该第一状态中;且(b)若该控制旗标处于该第一状态中,则产生追踪数据元素,并将该控制旗标置于该第二状态中,该追踪数据元素包括效果指示值,该效果指示值用于提供关于该至少一个条件式指令的处理结果的信息。
根据另一方面,本发明提供一种数据处理的方法,该方法包含以下步骤:
响应于程序指令,使用处理设备来执行处理运算,该执行处理运算的步骤包括:响应于至少一个条件式指令,取决于该处理电路的条件来执行条件式运算;以及
产生追踪数据元素,所述追踪数据元素指示所述处理运算,所述追踪数据元素是取决于控制旗标而产生的,该控制旗标具有第一状态及第二状态;
其中该产生追踪数据元素的步骤包括:
响应于该处理电路的该条件的更新,将该控制旗标置于该第一状态中;以及
响应于处理该至少一个条件式指令中的一个条件式指令,(a)确定该控制旗标是否处于该第一状态中;且(b)若该控制旗标处于该第一状态中,则产生追踪数据元素,并将该控制旗标置于该第二状态中,该追踪数据元素包括效果指示值,该效果指示值用于提供关于该至少一个条件式指令的处理结果的信息。
根据将结合附图来研读的说明性实施例的以下详细描述,本发明的上述及其它目标、特征结构及优点将显而易见。
附图说明
第1图示意性地图示出了处理设备、追踪电路及诊断设备;
第2图图示由英国剑桥的ARM有限公司设计的处理器中所使用的条件旗标及条件状态的实例;
第3图图示用于识别条件旗标的值的特定集合的识别符的实例;
第4图图示出了在执行条件更新指令后追踪条件旗标的值的方法;
第5图图示分析第4图的方法中所产生的追踪数据的相应方法;
第6图图示第4图的方法中所产生的追踪流的实例及根据第5图的方法对追踪流的分析的实例;
第7图图示出了程序指令序列的实例,在该序列中,多个条件更新指令连续发生,而无任何介入条件式指令;
第8图图示出了在执行条件式指令后追踪条件旗标的值的方法;
第9图图示分析第8图的方法中所产生的追踪数据的相应方法;
第10图图示第8图的方法中所产生的追踪流的实例及根据第9图的方法对追踪流的分析的实例;
第11图图示出了在执行条件式指令后追踪条件旗标的至少所需子集的值的方法;
第12图图示分析第11图的方法中所产生的追踪数据的相应方法;以及
第13图图示使用第11图的方法产生追踪流的实例及使用第12图的方法分析追踪流的实例。
具体实施方式
第1图图示处理设备2,处理设备2包含处理电路4,处理电路4用于响应于程序指令而执行处理运算。处理设备2具备存储器系统8,存储器系统8包含一个或多个高速缓存单元或内存单元,用于储存待由处理电路4执行的程序指令及/或待由处理电路4处理的数据。
处理设备2包括追踪电路6,追踪电路6用于监视由处理电路4执行的处理运算。追踪电路6产生追踪数据元素,所述追踪数据元素指示由处理电路4执行的处理运算的特性。追踪电路6经由输出端口10输出所产生的追踪数据元素。追踪电路6不需要与处理电路4实施于同一集成电路上,且在一些实施例中,追踪电路6可作为独立追踪单元来提供。
诊断设备12被提供以用于分析由追踪电路6产生的追踪数据元素。诊断设备12经由输入端口14来接收追踪数据元素。诊断设备12亦接收处理电路4执行哪些程序指令的指示。此指示可由追踪电路6提供,以在追踪流中指示哪些指令得以执行。或者,诊断设备12可被提供地址,该地址指示由处理电路4执行的第一程序指令在存储器系统8内的位置。诊断设备12亦可具备内存(第1图中未图示出),该内存用于储存由处理电路4执行的程序的相应复本。诊断设备12逐步分析由处理电路4执行的指令,且基于追踪数据元素的流中包括的信息来确定指令的处理结果。
追踪数据元素不需要直接自追踪电路6输出至诊断设备12,而是可例如储存于内存或其它储存装置中且接着在需要时由诊断设备12自储存装置存取。诊断设备12可为例如经程序化以执行追踪分析方法的通用计算机。
处理设备2具有储存位置,例如,条件状态寄存器(conditionstatusregister,CPSR)20,用于储存一个或多个条件旗标22,该一个或多个条件旗标22指示处理设备2的相应条件。在由英国剑桥的ARM有限公司(ARMLimitedofCambridge,UK)设计的处理器中,条件旗标22可包括NZCV(负值、零值、进位、溢位)旗标,NZCV旗标用于指示处理结果为负值、为零值、需要进位还是导致溢位。第2图图示各种条件状态,所述条件状态可由条件状态寄存器20中的条件旗标22的不同组合来指示。
应了解,用于储存条件旗标22的储存位置不需要为条件状态寄存器20,而是亦可为存储器系统8内的储存位置或任何其它种类的储存位置。
处理电路4可对至少一个条件更新指令作出响应,以更新条件状态寄存器20中的条件旗标22中的一个或多个条件旗标。举例而言,比较指令可比较两个数据值且取决于该比较来更新旗标,例如以指示所述值是否相等或指示一个值小于还是大于另一值。使条件旗标22得以更新的任何指令可视为条件更新指令。举例而言,在ARM指令集架构中,TST、TEQ、CMP及CMN指令为条件更新指令的实例。
处理电路4亦可对与给定条件相关联的至少一个条件式指令作出响应。在执行条件式指令时,比较条件旗标22的值与给定条件。若条件旗标22满足该条件,则执行相关联的处理运算。若未满足条件,则不执行相关联的处理运算(或者,对于一些种类的条件式指令而言,若未满足条件,则可执行与相关联的处理运算不同的处理运算)。
举例而言,条件式加法指令ADDEQ与EQ条件相关联。第2图指示:若Z旗标处于设定状态,则满足EQ条件。当执行条件式加法指令ADDEQ时,若Z旗标处于设定状态,则将执行相关联的加法运算,然而,若Z旗标未处于设定状态,则将不执行加法运算。
无法单独根据指令流来确定条件式指令的处理结果,这是因为指令流不含有用于确定是否满足条件的信息。因此,追踪电路6对至少一个选定的指令作出响应,以产生追踪数据元素,该追踪数据元素包括指示条件旗标22的值的所追踪条件值。诊断设备12可使用追踪数据元素中包括的所追踪条件值来确定是否满足条件,且因此可确定相应条件式指令的处理结果。
追踪电路6维护一个或多个控制旗标26,这一个或多个控制旗标26用于监视是否已追踪条件旗标22的值。追踪电路6可基于一个或多个控制旗标26的当前值来选择是否在执行给定指令后追踪条件旗标值。在一个实施例中,追踪电路6包括单个控制旗标26(参见如下所述的第8图至第10图的实施例),而在另一实施例中,追踪电路6包括多个控制旗标26,所述多个控制旗标26各自对应于条件旗标22中的一个条件旗标(参见下文关于第11图至第13图所述的实施例)。
诊断电路16维护相应组的控制旗标28,该相应组的控制旗标28以与追踪电路6的控制旗标26相对应的方式被使用,以确定针对给定程序指令,包括所追踪条件值的追踪数据元素是否预期被提供于追踪流中。
可采用不同方式指示追踪数据元素内的所追踪条件值。在一个实例中,追踪电路6可将条件旗标22的至少一个子集的实际值包括于追踪数据元素中。在条件式指令仅取决于条件旗标22的子集的情况下,追踪电路6可仅包括条件旗标值的相关子集,或可包括条件旗标22的全部。
或者,追踪电路6可将指示条件旗标22的值的特定组合的识别码包括于追踪数据元素中。若条件值的一些组合比其它组合常用,则此举可提供高效编码。举例而言,第3图展示一实例,在该实例中,2位识别符用于条件状态中的三个条件状态(例如,C旗标处于设定状态的状态、N旗标处于设定状态的状态及Z旗标与C旗标处于设定状态的状态)。接着,4位识别符用于不同条件状态中的另外三个条件状态。若需要条件旗标值的其它组合中的一个组合,则可使用不同于第3图所示的方案的编码,将当前条件旗标值的独立指示提供于追踪数据元素中。
应了解,识别符的编码及哪些条件状态由特定识别符表示的选择仅是一个实例。然而,此实例证明:可通过将具有最少位的识别符分配给最频繁出现的条件状态来减少追踪数据的总量。举例而言,若处理设备2处于具有2位识别符的三个条件状态中的一个状态达70%的时间、处于具有4位识别符的三个条件状态中的一个状态达29%的时间且处于其它状态中的一个状态达1%的时间(且举例而言,那些其它状态由8位识别符来表示),则用于识别当前条件状态的位的平均数将为2*0.7+4*0.29+8*0.01=2.64(星号*表示乘号)。因此,包括于追踪流中以指示当前条件状态的位的平均数将小于4个位,若追踪数据元素仅包括条件旗标的当前值,则将使用这样的4个位。
追踪电路6可在程序的不同指令由处理电路4执行时追踪条件旗标22的值。追踪电路6可选择一个或多个选定的指令,以用于触发包括条件旗标指示值的追踪数据元素的产生。选定的指令可为条件式指令,但亦可为另外的指令。
举例而言,第4图至第6图展示一实例,在该实例中,在执行条件更新指令后产生包括所追踪条件值的追踪数据元素。第4图展示响应于处理电路4的运算而产生追踪数据的方法。在步骤40处,处理电路4处理正执行的程序的下一指令,且追踪电路6监视由处理电路4执行的该指令的处理。在步骤42处,追踪电路6确定正由处理电路4执行的指令是否为条件更新指令。若该指令是条件更新指令,则在步骤44处,追踪电路6产生并输出追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示因执行条件更新指令而产生的条件旗标22的更新值。另一方面,若该指令并非条件更新指令,则省略步骤44。在步骤46处,确定是否存在待由处理电路4处理的另一指令。若存在另一指令,则该方法返回至步骤40,否则,若不存在剩余指令,则该方法在步骤48处结束。
第5图图示出用于分析由追踪电路6使用第4图的方法而产生的追踪流的相应诊断方法。诊断设备12接收处理电路4执行哪些指令的指示。在步骤50处,诊断电路16分析被指示为由处理电路4执行的下一指令。在步骤52处,诊断电路16确定该下一指令是否为条件式指令。若该指令为条件式指令,则在步骤54处,诊断电路16将与程序指令的指示中所指示的最新近条件更新指令相关联的追踪数据元素定位于追踪数据流中。在步骤56处,诊断电路16基于所定位追踪数据元素中包括的所追踪条件值来确定条件式指令的处理结果。举例而言,诊断电路16可使用所追踪条件值来确定是否满足与条件式指令相关联的条件且因此确定是否执行相关联的运算。若在步骤52处确定该下一指令并非条件式指令,则省略步骤54及56。在步骤58处,确定是否存在待分析的另一指令。若存在另一指令,则该方法返回至步骤50,否则,若不存在其它指令,则该方法在步骤60处结束。
第6图图示根据第4图的方法产生追踪流及根据第5图的方法分析追踪流的实例。第6图展示由处理电路4执行的程序指令的集合。当执行分支指令时,产生了指示是否进行分支跳转的追踪数据元素。当遭遇条件更新指令(例如,CMP)时,根据第4图的步骤44,产生包括所追踪条件值CPSR的追踪数据元素。当分析追踪流时,诊断设备可使用所追踪条件值来确定任何后续条件式指令(例如,第6图中所示的指令MOVNE、MOVEQ及ADDHI)的处理结果。
一些指令可为条件更新指令,亦可为条件式指令。举例而言,第6图中的存储器位置2100处的程序指令为条件式比较指令CCMPNE,该条件式比较指令CCMPNE用于控制处理电路4以确定条件旗标22的当前值是否满足不等于(NE)条件(参见第2图)。若满足不等于条件,则处理电路4执行比较运算并基于比较结果来更新条件旗标22。因为CCMPNE指令为条件式指令,所以诊断电路16基于条件旗标的最新近更新时的追踪流中包括的所追踪条件值(亦即,针对存储器位置2000处的比较指令CMP而包括的CPSR值)来确定CCMPNE指令的处理结果。若在执行CCMPNE指令后满足NE条件,则CCMPNE指令亦为条件更新指令,且因此追踪电路6针对指令CCMPNE而产生追踪数据元素,该追踪数据元素包括指示条件旗标22的所更新值的所追踪条件值。此追踪数据元素可用于确定任何后续条件式指令的结果。
或者,在一些实例中,不管是否满足NE条件,均可将CCMPNE指令视为条件更新指令,且因此可始终针对CCMPNE指令而产生指示条件旗标的值的追踪数据元素。此举可适用于在追踪时尚未计算出NE条件的情形。
当单个条件更新指令之后跟随着都取决于同一集合的条件值一串条件式指令时,第4图至第6图中所示的技术可适用,这是因为,在此情况下,少量的追踪数据足以确定若干后续指令的结果。
然而,在一些情形下,可能存在连续发生的许多条件更新指令,而没有使用条件旗标的所更新值的任何介入条件式指令。举例而言,在第7图中,程序指令的序列包括导致条件旗标更新的数个比较CMP指令及位测试TST指令,但这些指令中的前四个指令更新了旗标,而这些所更新值不曾为条件式指令所用。在此种情形下,在执行条件式指令后产生包括所追踪条件值的追踪数据元素可更高效(例如,如下文关于第8图至第10图及第11图至第13图所述)。在第7图中所示的实例中,接着可在执行条件式指令MOVNE时,而并非在每一次条件更新后,产生追踪数据元素。
应了解,这些技术的混合可能能够实现,且因此一些追踪单元在执行条件更新指令后及在执行条件式指令后均可产生所追踪条件值。
第8图展示在执行条件式指令后追踪条件旗标22的追踪方法。在此实施例中,追踪电路6维护控制旗标26,控制旗标26用于确定是否追踪条件旗标22的值。控制旗标26具有“清除”状态及“设定”状态(例如,“清除”状态可为具有0值的控制旗标26,且“设定”状态可为具有1值的控制旗标26,或者“清除”状态可为具有1值的控制旗标26,且“设定”状态可为具有0值的控制旗标26)。
在第8图的步骤70处,追踪电路6监视处理电路4执行下一指令。在步骤72处,追踪电路6确定该指令是否为条件式指令。若该指令为条件式指令,则在步骤74处,追踪电路6确定控制旗标是否处于清除状态。若控制旗标处于清除状态,则在步骤76处,追踪电路6产生并输出追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示条件状态寄存器20的当前状态。接着,在步骤78处,控制旗标被设定。另一方面,若在步骤74处控制旗标处于设定状态,则省略步骤76及78。若在步骤72处确定该指令并非条件式指令,则省略步骤74至78。
接着,在步骤80处,确定该下一指令是否为条件更新指令。应注意,一些指令可为条件式指令和条件更新指令两者。若该指令为条件更新指令,则在步骤82处,清除控制旗标。否则,省略步骤82。接着,在步骤84处,确定是否存在待由处理电路4处理的另一指令。若存在另一指令,则该方法返回至步骤70。若不存在其它指令,则该方法在步骤86处结束。
下文指示用于实施第8图的方法的某伪码(术语“marker”指示控制旗标26):
Onaninstruction:
Ifinstructionisconditional:
Ifmarkerisclear:
TracetheCPSR
Setmarker
IfinstructionupdatestheCPSR:
Clearmarker
第8图的方法帮助减少追踪数据的量,因为追踪电路6产生追踪数据元素,该追踪数据元素包括关于在条件更新指令后发生的第一条件式指令的所追踪条件值。对于后续条件式指令而言,不需要对条件值进行追踪,因为先前的条件式指令已具有相关联的追踪数据元素,该相关联的追踪数据元素含有指示条件旗标22的状态的信息。
第9图展示用于分析第8图的方法中所产生的追踪流的相应诊断方法。诊断设备12具有控制旗标28,控制旗标28具有与追踪电路6的控制旗标26的状态相对应的“清除”及“设定”状态。在步骤100处,诊断电路16分析由处理电路4处理的程序指令的指示中包括的下一指令。在步骤102处,确定是否存在条件式指令的指示。若该指令为条件式指令,则在步骤104处,确定诊断控制旗标28是否处于清除状态。若诊断控制旗标处于清除状态,则在步骤106处,诊断电路16针对该条件式指令定位相关联的追踪数据元素,且在步骤108处基于该相关联的追踪数据元素中包括的所追踪条件值来确定该条件式指令的处理结果。在步骤110处,将诊断控制旗标置于“设定”状态。
另一方面,若在步骤104处诊断控制旗标并非处于清除状态,则方法继续进行至步骤112,在步骤112处,由诊断电路16定位另外的追踪数据元素。该另外的追踪数据元素为与先前分析的条件式指令相关联的数据元素。在步骤114处,诊断电路16基于针对先前分析的条件式指令产生的另外的追踪数据元素中包括的所追踪条件值来确定当前分析的条件式指令的处理结果。若在步骤102处确定该指令并非条件式指令,则省略步骤104至114。
接着,在步骤116处,确定正分析的指令是否为条件更新指令。该指令可为条件式指令和条件更新指令两者。若该指令为条件更新指令,则在步骤118处,清除诊断控制旗标28,而若该指令并非条件更新指令,则省略步骤118。在步骤120处,确定是否存在待分析的另一指令。若存在另一指令,则该方法返回至步骤100,否则,则该方法在步骤122处结束。
因此,诊断电路使用与追踪电路6的控制旗标26相对应的诊断控制旗标28来确定针对给定条件式指令,相关联的追踪数据元素是否预期被包括在追踪流中。若存在此种相关联的追踪数据元素,则可基于该相关联的追踪数据元素中包括的所追踪条件值来确定条件式指令的处理结果。若不存在相关联的追踪数据元素,则将存在与先前条件式指令相关联的追踪数据元素,该追踪数据元素将含有使得能够确定当前条件式指令的处理结果的所追踪条件值。当遭遇条件更新指令时,清除诊断控制旗标28,以指示下一条件式指令被预期具有相关联的追踪数据元素。
第10图图示将第8图及第9图的方法应用于第6图中所示的程序指令的流的实例。再次,存储器位置1600处的分支指令的分支跳转结果被追踪。响应于执行储存于存储器位置2000处的条件更新指令CMP,追踪电路6根据第8图的步骤82清除其控制旗标26。以类似方式,当诊断电路16分析指令时,诊断电路16将根据第9图的步骤118通过清除其诊断控制旗标28来对条件更新指令CMP的指示作出响应。
当追踪电路6遭遇储存于存储器位置2004处的条件式指令MOVNE时,追踪电路6确定控制旗标26当前处于经清除状态,且因此,在第8图的步骤76处,产生包括所追踪条件值CPSR的追踪数据元素。接着,根据第8图的步骤78,设定控制旗标。以相应方式,当分析指令时,诊断电路16将侦测存储器位置2004处的条件式指令MOVNE的指示,且接着将通过如下方式来对诊断控制旗标28处于清除状态作出回应:在追踪流中定位相关联的追踪数据元素并基于追踪数据元素中包括的所追踪条件值来确定MOVNE指令的处理结果。接着在第9图的步骤110处,诊断电路16设定诊断控制旗标28。
接着,针对存储器位置2008及200C处的后续条件式指令,追踪电路6侦测到控制旗标26处于设定状态,且因此不产生相应追踪数据元素。以相应方式,诊断电路16侦测到诊断控制旗标28处于设定状态,且因此第9图的后续步骤112及114定位与储存于存储器位置2004处的先前条件式指令相关联的追踪数据元素。诊断电路16基于存储器位置2004处的指令的先前追踪数据元素来确定存储器位置2008及200C处的指令的处理结果。
以此方式,可产生追踪流,其中将在条件旗标22的更新后执行的第一条件式指令触发包括所追踪条件值的追踪数据元素的产生。
第11图至第13图展示一实施例,在该实施例中,追踪电路6监视已追踪哪些条件旗标22,且在针对条件式指令产生追踪数据元素时追踪尚未被追踪的该条件式指令所需的额外条件旗标。此方法利用多个控制旗标26,所述多个控制旗标26各自对应于条件旗标22中的相应条件旗标。每一控制旗标26具有“清除”状态及“设定”状态。诊断电路16具有相应群组的诊断控制旗标28,这些诊断控制旗标28亦具有“清除”状态及“设定”状态。
第11图图示出追踪处理电路4的运算的方法。在步骤140处,处理电路4执行下一指令且由追踪电路6监视此指令的执行。在步骤142处,确定该指令是否为条件式指令。若该指令为条件式指令,则在步骤144处,追踪电路6确定用于确定该条件式指令的结果所需的条件旗标22的子集。举例而言,针对第2图中所示的每一条件,表中所指示的相应旗标是所需的条件旗标子集。举例而言,HI条件需要C旗标及Z旗标。
在步骤146处,追踪电路6确定与所需的条件旗标22的子集相对应的控制旗标26中的任何控制旗标是否处于清除状态。若与所需的条件旗标的子集相对应的控制旗标中的任何控制旗标均不处于清除状态,则该方法继续进行至步骤152。若与所需的条件旗标的子集相对应的控制旗标中的任何一个或多个控制旗标处于清除状态,则在步骤148处,追踪电路6产生并输出追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值至少指示相应控制旗标26处于清除状态的该所需子集的条件旗标22。可选地,该所追踪条件值亦可指示其它条件旗标,或可指示所有条件旗标22。接着,在步骤150处,追踪电路6设定与所追踪条件值中所指示的条件旗标相对应的控制旗标。若在步骤142处确定该指令并非条件式指令,则省略步骤144至150。
在步骤152处,追踪电路6确定正由处理电路4执行的指令是否为条件更新指令。若该指令为条件更新指令,则在步骤154处,追踪电路6清除至少与因条件更新指令而被更新的条件旗标22相对应的控制旗标26。可选地,在步骤154处,追踪电路6亦可清除其它控制旗标26,或可清除所有控制旗标26。若该指令并非条件更新指令,则省略步骤154。在步骤156处,确定是否存在待由处理电路4处理的另一指令。若存在此种指令,则该方法返回至步骤140。否则,则该方法在步骤158处结束。
下文指示用于实施第11图的方法的伪码(术语“markers”表示控制旗标26):
Onaninstruction:
Ifinstructionisconditional:
Ifanymarkersforflagsrequiredbythisinstructionareclear:
Traceatleasttheflagsrequired
Setmarkersfortherequiredflags
IfinstructionupdatestheCPSR:
Clearatleastthemarkersforupdatedflags
或者,以下伪码可用于实施第11图的方法:
Onaninstruction:
Ifinstructionisconditional:
Ifanymarkersforflagsrequiredbythisinstructionareclear:
Traceatleasttheflagsrequired
Setmarkersforthetracedflags
IfinstructionupdatestheCPSR:
Clearatleastthemarkersforupdatedflags
第12图展示分析通过第11图的方法产生的追踪流的方法。在步骤160处,诊断电路16分析由处理电路4执行的指令的指示中所指示的下一指令。若在步骤162处确定该下一指令为条件式指令,则在步骤164处,诊断电路16针对该指令来确定条件旗标的所需子集,且确定与条件旗标的所需子集相对应的诊断控制旗标28是处于清除状态还是设定状态。在步骤166处,若步骤164确定与条件旗标的所需子集相对应的诊断控制旗标28中的任何诊断控制旗标处于清除状态,则诊断电路16在追踪流中定位包括第一所追踪条件值的相关联追踪数据元素。第一所追踪条件值至少指示与清除状态诊断控制旗标28相对应的条件旗标的所需子集的值。诊断电路16接着设定处于清除状态并对应于所要子集的条件旗标22的诊断控制旗标28。
在步骤168处,若步骤164确定对应于条件旗标的所需子集的任何诊断控制旗标28处于设定状态,则诊断电路16将针对至少一个先前条件式指令定位至少一个另外的追踪数据元素。该另外的追踪数据元素包括至少一个另外的所追踪条件值,该至少一个另外的所追踪条件值指示与处于设定状态的那些诊断控制旗标相对应的条件旗标的值。接着,在步骤170处,诊断电路16分析该第一所追踪条件值及/或该至少一个另外的所追踪条件值(取决于在步骤166及168处存取哪些所追踪条件值)且接着基于那些所追踪条件值来确定当前条件式指令的处理结果。若在步骤162处确定该指令并非条件式指令,则省略步骤164至170。
在步骤172处,诊断电路16确定该下一所指示指令是否为条件更新指令。若该下一指令为条件更新指令,则在步骤174处,诊断电路16至少清除与因执行条件更新指令而被更新的条件旗标22相对应的诊断控制旗标28(诊断电路16可基于条件更新指令的所演绎处理结果来确定更新哪些条件旗标22)。可选地,在步骤174处,诊断电路16亦可清除其它诊断控制旗标28,或可清除所有诊断控制旗标28。若在步骤172处,该下一指令并非条件更新指令,则省略步骤174。在步骤176处,确定是否存在待分析的另一指令。若存在另一指令,则该方法返回至步骤160,否则,则该方法在步骤178处结束。
第13图图示将第11图及第12图的方法应用于先前图示出的程序指令的流的实例。在此实例中,假设响应于条件更新指令而清除所有控制旗标26及诊断控制旗标28,但如上所述,亦可能提供一实施例,在该实施例中,追踪电路6及诊断电路16仅清除对应于已更新的条件旗标22的控制旗标26、28。
在第13图中,在针对分支指令产生的追踪数据元素中指示分支跳转结果。分支跳转结果可由诊断电路16用来确定由处理电路4执行哪些指令。
在遭遇存储器位置2000处的条件更新指令CMP后,追踪电路6清除所有控制旗标26。类似地,当诊断电路16遭遇条件更新指令CMP时,诊断电路16清除其所有诊断控制旗标28。
在执行存储器位置2004处的条件式指令MOVNE后,追踪电路6确定,针对“不等于”条件NE,条件旗标的所需子集是Z旗标(参见第2图)。在第11图的步骤146处,追踪电路6确定与Z条件旗标相对应的控制旗标26处于清除状态,且因此在步骤148处,产生追踪数据元素,该追踪数据元素包括指示至少该Z旗标的值的所追踪条件值。接着,在第11图的步骤150处,设定对应于Z旗标的控制旗标。
以相应方式,当分析追踪流时,诊断电路16遭遇存储器位置2004处的条件式指令MOVNE并确定条件旗标的所需子集为Z旗标。此时,对应于Z条件旗标的诊断控制旗标28处于清除状态,且因此,诊断电路16确定存在对应于MOVNE指令的相关联追踪数据元素。诊断电路16定位相关联的追踪数据元素,该追踪数据元素包括指示Z旗标的值的所追踪条件值。诊断电路16基于储存于存储器位置2004处的MOVNE指令的所追踪条件值来确定处理结果。接着,诊断电路16设定对应于Z旗标的诊断控制旗标28。
当追踪电路6遭遇储存于存储器位置2008处的条件式指令MOVEQ时,追踪电路6确定用于判定是否满足“等于”条件EQ的所需旗标子集再次为Z旗标(参见第2图)。在第11图的步骤146处,追踪电路6确定对应于Z旗标的控制旗标处于设定状态,且因此省略第11图的步骤148及150,且并不产生包括所追踪条件值的追踪数据元素。在分析追踪流后,诊断电路16可类似地侦测到对应于Z旗标的诊断控制旗标28处于设定状态。因此,诊断电路16将在第12图的步骤168处针对储存于存储器位置2004处的先前条件式指令MOVNE来定位追踪数据元素,且基于针对该MOVNE指令而在追踪数据元素中包括的所追踪条件值来确定MOVEQ指令的结果。
在存储器位置200C处,存在条件式加法指令ADDHI,该条件式加法指令ADDHI取决于HI条件。当执行此指令时,追踪电路6确定条件旗标的所需子集为C旗标及Z旗标(参见第2图)。追踪电路6确定与C旗标及Z旗标相对应的相应控制旗标26的状态,且确定对应于Z条件旗标的控制旗标26处于设定状态,但对应于C条件旗标的控制旗标26仍处于清除状态。因此,在第11图的步骤148处,追踪电路6产生至少包括指示C旗标的该值的追踪数据元素。接着,设定对应于C条件旗标的控制旗标26。
在分析追踪流后,诊断设备12侦测到存储器位置200C处的ADDHI指令的条件旗标的所需子集为C旗标及Z旗标。因为对应于C旗标的诊断控制旗标28处于清除状态,所以在步骤166诊断电路16将在追踪流中定位与指示C旗标值的ADDHI指令相关联的追踪数据元素。在第12图的步骤168处,诊断电路16将亦定位另外的追踪数据元素,因为在步骤164处Z条件旗标的诊断控制旗标28处于设定状态。在此实例中,该另外的追踪数据元素为针对存储器位置2004处的MOVNE指令产生的追踪数据元素。在第12图的步骤170处,诊断电路16基于以下两者来确定ADDHI指令的处理结果:针对存储器位置2004处的MOVNE指令而在追踪数据元素中包括的所追踪条件值;及针对存储器位置200C处的ADDHI指令而在追踪数据元素中包括的所追踪条件值。
以类似方式,追踪电路6产生追踪数据且诊断电路16分析第13图中所示的后续指令的追踪数据。
虽然上述实施例已描述在更新条件旗标22时清除控制旗标26及诊断控制旗标28,但其它事件亦可触发对控制旗标26或诊断控制旗标28进行清除。举例而言,异常事件可导致清除控制旗标。若正由追踪电路6追踪由异常事件触发的异常处理器,则在异常事件发生后清除控制旗标26确保了将在异常处理器发起时追踪条件旗标22。或者,若未追踪异常处理器,则在异常事件发生后清除控制旗标26可确保将在来自异常处理的返回之后追踪条件旗标22。
此外,追踪电路6可周期性地清除控制旗标,使得所追踪条件值周期性地包括在追踪流中,以给诊断设备12提供参考点。诊断电路16可在参考点处开始分析追踪数据,因为参考点处包括的所追踪条件值使得能够确定条件旗标的状态,而不需要来自先前追踪数据元素的信息。此举是适用的,这是因为诊断电路16能够直接跳至感兴趣的追踪流的区域,而不是必须遍历整个追踪流以到达感兴趣的区域。
此外,为改良处理效能,一些处理器可在知晓实际上是否应执行指令之前对该指令进行臆测(speculative)执行。有时,实际上不应执行一个或多个臆测执行的指令。在侦测到误臆测后,处理器可逆转任何错误执行的指令的结果,以恢复在执行错误执行的指令之前出现的处理器状态。追踪电路6可能并不知晓错误地执行了多少指令。为确保可根据追踪流来确定因误臆测的校正而产生的条件旗标值,追踪电路6可在侦测到误臆测后清除控制旗标26。
对于这些事件中的任何事件而言,追踪电路6可将指示已清除控制旗标26的信息包括于追踪流中。诊断电路16可通过清除诊断控制旗标28来对此信息作出响应。
第8图至第13图图示指示条件旗标22的值的所追踪条件值被包括于追踪流中以使得能够由诊断设备12确定条件式指令的结果的实施例。然而,这些技术亦可适用于另一种类的结果指示值(例如,通过/未通过结果)包括于追踪流中以使得能够确定条件式指令的结果的实施例。
虽然本文中已参照附图详细描述本发明的说明性实施例,但应理解,本发明不限于这些精确实施例,且可在不脱离由随附权利要求界定的本发明的范畴的情况下,由熟习此项技术者进行各种改变及修改。

Claims (24)

1.一种处理设备,该处理设备包含:
处理电路,该处理电路被配置为响应于程序指令而执行处理运算;
条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理电路的条件;以及
追踪电路,该追踪电路被配置为产生追踪数据元素,所述追踪数据元素指示由该处理电路响应于所述程序指令而执行的所述处理运算;
其中:
该处理电路对至少一个条件式指令作出响应,以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;且
该追踪电路被配置为响应于该处理电路处理所述至少一个条件式指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
2.如权利要求1所述的处理设备,其中该所追踪条件值包含用于识别该至少一个条件旗标的至少该子集的值的识别符。
3.如权利要求1所述的处理设备,其中该所追踪条件值包含该至少一个条件旗标的至少该子集的值。
4.如权利要求1-3中任意一项所述的处理设备,其中该追踪电路被配置为响应于该处理电路处理该至少一个条件式指令中的至少一个而产生具有该所追踪条件值的该追踪数据元素,其中该所追踪条件值指示在处理该至少一个条件式指令中的该至少一个时该至少一个条件旗标的至少该子集的当前值。
5.如权利要求1-3中任意一项所述的处理设备,其中该至少一个条件式指令包含在该至少一个条件旗标的更新之后处理的第一条件式指令。
6.如权利要求1-3中任意一项所述的处理设备,其中该追踪电路被配置为选择将所述程序指令中的哪些程序指令包括于该至少一个条件式指令中以用于触发包括该所追踪条件值的该追踪数据元素的产生。
7.如权利要求1-3中任意一项所述的处理设备,其中该追踪电路被配置为储存控制旗标,该追踪电路对该控制旗标作出响应以选择是否针对给定程序指令产生包括该所追踪条件值的该追踪数据元素。
8.如权利要求7所述的处理设备,其中该控制旗标具有第一状态及第二状态;
该追踪电路对该至少一个条件旗标的更新作出响应以将该控制旗标置于该第一状态中;且
该追踪电路对该处理电路处理条件式指令作出响应以:
(a)确定该控制旗标是否处于该第一状态中;且
(b)若该控制旗标处于该第一状态中,则产生包括该所追踪条件值的追踪数据元素并将该控制旗标置于该第二状态中。
9.如权利要求1-3中任意一项所述的处理设备,其中该条件状态储存位置被配置为储存与该处理电路的相应条件相对应的多个条件旗标。
10.如权利要求9所述的处理设备,其中该条件式运算取决于所述多个条件旗标的子集的当前值,且该追踪电路被配置为产生具有该所追踪条件值的该追踪数据元素,其中该所追踪条件值指示所述多个条件旗标的该子集。
11.如权利要求9所述的处理设备,其中该追踪电路被配置为产生具有该所追踪条件值的该追踪数据元素,其中该所追踪条件值指示所述多个条件旗标的全部。
12.如权利要求9所述的处理设备,其中该追踪电路被配置为储存与所述多个条件旗标相对应的多个控制旗标,该追踪电路对每个控制旗标作出响应以选择是否针对给定程序指令产生包括指示相对应的该条件旗标的所追踪条件值的追踪数据元素。
13.如权利要求12所述的处理设备,其中所述多个控制旗标各自具有第一状态及第二状态;
该追踪电路对所述多个条件旗标中的任何条件旗标的更新作出响应,以将与已更新的条件旗标相对应的至少所述控制旗标置于该第一状态中;且
该追踪电路对该处理电路处理取决于条件旗标的所需子集的该至少一个条件式指令中的一个条件式指令作出响应,以
(a)确定与条件旗标的该所需子集相对应的相应控制旗标中的任何控制旗标是否处于该第一状态中;且
(b)若所述相应控制旗标中的任何控制旗标处于该第一状态中,则产生追踪数据元素并将所述相应控制旗标置于该第二状态中,该追踪数据元素包括这样的所追踪条件值,该所追踪条件值指示该所需子集中至少其相应控制旗标处于该第一状态中的条件旗标。
14.如权利要求1-3中任意一项所述的处理设备,其中该至少一个条件式指令的该条件式运算是非分支运算。
15.一种用于监视由处理设备响应于程序指令而执行的处理运算的追踪单元,该处理设备包含条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该追踪单元包含:
追踪电路,该追踪电路被配置为产生追踪数据元素,所述追踪数据元素指示由该处理设备响应于所述程序指令而执行的所述处理运算;其中:
该追踪电路被配置为响应于该处理设备处理所述至少一个条件式指令而产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
16.一种用于分析追踪数据的诊断设备,该追踪数据指示由处理设备响应于程序指令而执行的处理运算,该处理设备包含条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该诊断设备包含:
追踪输入端,该追踪输入端被配置为接收追踪数据,该追踪数据包括至少一个追踪数据元素,该至少一个追踪数据元素是响应于该处理设备处理所述至少一个条件式指令而产生的,该至少一个追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集;以及
诊断电路,该诊断电路被配置为取决于该至少一个追踪数据元素中包括的该所追踪条件值来确定该至少一个条件式指令的处理结果。
17.如权利要求16所述的诊断设备,其中该至少一个条件式指令包含至少一个条件更新指令,该至少一个条件更新指令用于控制该处理设备,以执行相关联的处理运算且取决于该相关联的处理运算的处理结果来更新该至少一个条件旗标。
18.如权利要求16和17中任一项所述的诊断设备,其中该至少一个条件式指令包含该至少一个条件式指令中的至少一个条件式指令。
19.如权利要求18所述的诊断设备,其中:
该诊断电路被配置为储存诊断控制旗标,该诊断控制旗标具有第一状态及第二状态;
该追踪输入端接收对由该处理设备处理的所述程序指令的指示;
该诊断电路对该处理设备更新该至少一个条件旗标的指示作出响应,以将该诊断控制旗标置于该第一状态中;且
该诊断电路对该处理设备处理条件式指令的指示作出响应,以:
(a)确定该诊断控制旗标是否处于该第一状态中;
(b)若在步骤(a)处该诊断控制旗标处于该第一状态中,则针对该条件式指令在该追踪数据中定位相关联的追踪数据元素并取决于该相关联的追踪数据元素中包括的该所追踪条件值来确定该条件式指令的该处理结果,并且将该诊断控制旗标置于该第二状态中;且
(c)若在步骤(a)处该诊断控制旗标处于该第二状态中,则在该追踪数据中定位与先前条件式指令相关联的另外的追踪数据元素,并取决于该另外的追踪数据元素中包括的该所追踪条件值来确定该条件式指令的该处理结果。
20.如权利要求18所述的诊断设备,其中:
该处理设备的该条件状态储存位置被配置为储存多个条件旗标,所述多个条件旗标对应于该处理设备的相应条件;
该诊断电路被配置为储存多个诊断控制旗标,所述多个诊断控制旗标对应于所述多个条件旗标,所述多个诊断控制旗标各自具有第一状态及第二状态;
该追踪输入端接收由该处理设备处理的所述程序指令的指示;
该诊断电路对该处理设备更新所述多个条件旗标中的任何条件旗标的指示作出响应,以至少将与已更新的条件旗标相对应的诊断控制旗标置于该第一状态中;且
该诊断电路对该处理设备处理取决于条件旗标的所需子集的条件式指令的指示作出响应,以:
(a)确定相应诊断控制旗标中与条件旗标的该所需子集相对应的任何诊断控制旗标是否处于该第一状态中;
(b)若在步骤(a)处所述相应诊断控制旗标中的任何诊断控制旗标处于该第一状态中,则针对该条件式指令在该追踪数据中定位相关联的追踪数据元素,且将所述相应诊断控制旗标置于该第二状态中,该相关联的追踪数据元素包括第一所追踪条件值,该第一所追踪条件值至少指示其相应诊断控制旗标处于该第一状态中的条件旗标;
(c)若在步骤(a)处所述相应诊断控制旗标中的任何诊断控制旗标处于该第二状态中,则针对至少一个先前条件式指令在该追踪数据中定位至少一个另外的追踪数据元素,该至少一个另外的追踪数据元素包括至少一个另外的所追踪条件值,该至少一个另外的所追踪条件值至少指示其相应诊断控制旗标处于该第二状态中的条件旗标;且
(d)取决于该第一所追踪条件值和该至少一个另外的所追踪条件值中的至少一者来确定该条件式指令的该处理结果。
21.一种数据处理的方法,该方法包含以下步骤:
响应于程序指令,使用处理设备来执行处理运算;
储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件;以及
产生追踪数据元素,所述追踪数据元素指示所述处理运算;其中:
该执行处理运算的步骤包括:响应于至少一个条件式指令,取决于该至少一个条件旗标的子集的当前值来执行条件式运算;且
该产生追踪数据元素的步骤包括:响应于所述至少一个条件式指令,产生追踪数据元素,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集,该所追踪条件值提供用于确定该至少一个条件式指令的处理结果的信息。
22.一种用于分析追踪数据元素的方法,所述追踪数据元素指示由处理设备响应于程序指令而执行的处理运算,该处理设备包含条件状态储存位置,该条件状态储存位置被配置为储存至少一个条件旗标,该至少一个条件旗标指示该处理设备的条件,该处理设备对至少一个条件式指令作出响应以取决于该至少一个条件旗标的子集的当前值来执行条件式运算;该方法包含以下步骤:
接收追踪数据元素,该追踪数据元素是响应于该处理设备处理所述至少一个条件式指令而产生的,该追踪数据元素包括所追踪条件值,该所追踪条件值指示该至少一个条件旗标的至少该子集;以及
取决于针对该至少一个条件式指令而在该追踪数据元素中包括的该所追踪条件值来确定该至少一个条件式指令的处理结果。
23.一种处理设备,包含:
处理电路,该处理电路被配置为响应于程序指令而执行处理运算;以及
追踪电路,该追踪电路被配置为产生追踪数据元素,所述追踪数据元素指示由该处理电路响应于所述程序指令而执行的所述处理运算;其中:
该处理电路对至少一个条件式指令作出响应,以取决于该处理电路的条件来执行条件式运算;
该追踪电路被配置为储存控制旗标,该控制旗标具有第一状态及第二状态;
该追踪电路对该处理电路的该条件的更新作出响应,以将该控制旗标置于该第一状态中;且
该追踪电路对该处理电路处理该至少一个条件式指令中的一个条件式指令作出响应,以:
(a)确定该控制旗标是否处于该第一状态中;且
(b)若该控制旗标处于该第一状态中,则产生追踪数据元素,并将该控制旗标置于该第二状态中,该追踪数据元素包括结果指示值,该结果指示值用于提供关于该至少一个条件式指令的处理结果的信息。
24.一种数据处理的方法,该方法包含以下步骤:
响应于程序指令,使用处理设备来执行处理运算,该执行处理运算的步骤包括:响应于至少一个条件式指令,取决于处理电路的条件来执行条件式运算;以及
产生追踪数据元素,所述追踪数据元素指示所述处理运算,所述追踪数据元素是取决于控制旗标而产生的,该控制旗标具有第一状态及第二状态;其中该产生追踪数据元素的步骤包括:
响应于该处理电路的该条件的更新,将该控制旗标置于该第一状态中;以及
响应于处理该至少一个条件式指令中的一个条件式指令,(a)确定该控制旗标是否处于该第一状态中;且(b)若该控制旗标处于该第一状态中,则产生追踪数据元素,并将该控制旗标置于该第二状态中,该追踪数据元素包括结果指示值,该结果指示值用于提供关于该至少一个条件式指令的处理结果的信息。
CN201180064982.5A 2011-01-13 2011-11-29 处理设备、追踪单元、诊断设备及其方法 Active CN103314356B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1100505.5 2011-01-13
GB1100505.5A GB2487355B (en) 2011-01-13 2011-01-13 Processing apparatus, trace unit and diagnostic apparatus
PCT/GB2011/052353 WO2012095619A1 (en) 2011-01-13 2011-11-29 Processing apparatus, trace unit and diagnostic apparatus

Publications (2)

Publication Number Publication Date
CN103314356A CN103314356A (zh) 2013-09-18
CN103314356B true CN103314356B (zh) 2016-04-06

Family

ID=43664141

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201180064992.9A Active CN103299273B (zh) 2011-01-13 2011-11-17 数据处理装置的追踪
CN201180064982.5A Active CN103314356B (zh) 2011-01-13 2011-11-29 处理设备、追踪单元、诊断设备及其方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201180064992.9A Active CN103299273B (zh) 2011-01-13 2011-11-17 数据处理装置的追踪

Country Status (10)

Country Link
US (4) US8874975B2 (zh)
EP (2) EP2585909B1 (zh)
JP (2) JP5865920B2 (zh)
KR (2) KR101994636B1 (zh)
CN (2) CN103299273B (zh)
GB (2) GB2487355B (zh)
IL (2) IL224506A (zh)
MY (2) MY159191A (zh)
TW (2) TWI524269B (zh)
WO (2) WO2012095618A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US20130145350A1 (en) * 2011-12-05 2013-06-06 Microsoft Corporation Efficient, large scale trace storage system
US8838888B2 (en) * 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
US9483259B1 (en) * 2012-05-07 2016-11-01 Google Inc. System and method for providing real-time execution of source code in a collaborative online software development environment
JP6036089B2 (ja) * 2012-09-25 2016-11-30 日本電気株式会社 データ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラム
US9262163B2 (en) * 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US8990784B2 (en) * 2013-06-28 2015-03-24 International Business Machines Corporation Determining control flow divergence due to variable value difference
US10372590B2 (en) 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
US11068827B1 (en) * 2015-06-22 2021-07-20 Wells Fargo Bank, N.A. Master performance indicator
GB2540388B (en) * 2015-07-15 2019-01-23 Advanced Risc Mach Ltd Secure mode state data access tracking
GB2541400B (en) * 2015-08-17 2017-11-15 Advanced Risc Mach Ltd Tracing of exception handling events
GB2551574B (en) * 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
US9798593B1 (en) 2016-07-06 2017-10-24 Workday, Inc. Synchronization of code execution
US10657021B2 (en) * 2016-09-07 2020-05-19 Arm Limited Tracing processing activity with position data to reorder items of trace data
GB2553582B (en) 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
GB2560749B (en) * 2017-03-24 2020-10-14 Advanced Risc Mach Ltd Trace data representation
WO2019113603A1 (en) * 2017-12-08 2019-06-13 Zytek Communications Corporation State machine block for high-level synthesis
US10705843B2 (en) 2017-12-21 2020-07-07 International Business Machines Corporation Method and system for detection of thread stall
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN108650123B (zh) * 2018-05-08 2022-09-06 平安普惠企业管理有限公司 故障信息记录方法、装置、设备和存储介质
US10797983B1 (en) 2018-06-05 2020-10-06 Juniper Networks, Inc Systems and methods for debugging network stacks based on evidence collected from selective tracing
US11573883B1 (en) * 2018-12-13 2023-02-07 Cadence Design Systems, Inc. Systems and methods for enhanced compression of trace data in an emulation system
EP3792767B1 (en) 2019-09-13 2023-07-12 Accemic Technologies GmbH Event processing
EP3907615B1 (en) * 2020-05-06 2022-11-02 Mitsubishi Electric R&D Centre Europe B.V. Method and system for testing the operation of a target computer system by using timed requirements
CN113485748B (zh) * 2021-05-31 2022-08-12 上海卫星工程研究所 卫星条件指令系统及其执行方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715440A (en) * 1989-06-20 1998-02-03 Fujitsu Limited Branch instruction executing device for tracing branch instruments based on instruction type
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
CN101082875B (zh) * 2006-05-30 2014-01-22 Arm有限公司 减小在指令跟踪过程中产生的数据流的大小

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1493176A1 (de) 1965-10-20 1969-06-26 Schering Ag Verfahren zur Herstellung von delta?-Pregnen-11beta- und 11alpha,17alpha,21-triol-3,20-dionen
US4503495A (en) * 1982-01-15 1985-03-05 Honeywell Information Systems Inc. Data processing system common bus utilization detection logic
JPS623351A (ja) * 1985-06-28 1987-01-09 Nec Corp マイクロプロセツサ
JP2915944B2 (ja) * 1989-12-29 1999-07-05 株式会社日立製作所 カバレージ測定方法及びマイクロコンピュータ
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6553564B1 (en) 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US6247146B1 (en) * 1998-08-17 2001-06-12 Advanced Micro Devices, Inc. Method for verifying branch trace history buffer information
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US7024661B2 (en) 2000-01-07 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for verifying computer program correctness and providing recoverable execution trace information
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7185234B1 (en) * 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
JP2002342114A (ja) 2001-05-21 2002-11-29 Fujitsu Ltd トレースデータ採取可能なプロセッサ
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
JP2003150403A (ja) * 2001-11-06 2003-05-23 Arc Internatl (Uk) Ltd データプロセッサの観測方法及び装置
US20030135719A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
US7197671B2 (en) 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
GB2389931B (en) * 2002-06-07 2005-12-14 Advanced Risc Mach Ltd 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
US7062684B2 (en) 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US20040153635A1 (en) 2002-12-30 2004-08-05 Kaushik Shivnandan D. Privileged-based qualification of branch trace store data
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US20060129999A1 (en) 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
US20070162895A1 (en) 2006-01-10 2007-07-12 International Business Machines Corporation Mechanism and method for two level adaptive trace prediction
US7562258B2 (en) * 2006-02-09 2009-07-14 Arm Limited Generation of trace elements within a data processing apparatus
US7574586B2 (en) * 2006-05-16 2009-08-11 Texas Instruments Incorporated Efficient transfer of branch information
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US7890299B2 (en) 2007-05-21 2011-02-15 Qualcomm, Incorporated Providing event-controlled continuous logging for a mobile operating environment
US8122437B2 (en) * 2008-03-31 2012-02-21 Freescale Semiconductor, Inc. Method and apparatus to trace and correlate data trace and instruction trace for out-of-order processors
GB2459652B (en) * 2008-04-28 2010-09-22 Imagination Tech Ltd Controlling instruction scheduling based on the space in a trace buffer
JP5167984B2 (ja) 2008-06-26 2013-03-21 富士通株式会社 命令トレース生成プログラム、命令トレース生成装置および命令トレース生成方法
US8176366B2 (en) * 2009-04-03 2012-05-08 Arm Limited Trace synchronization
PT2444400T (pt) 2009-06-15 2018-06-06 Shionogi & Co Derivado de carbamoilpiridona policíclico substituído
JP2011028308A (ja) * 2009-07-21 2011-02-10 Renesas Electronics Corp 半導体装置及びソフトウェア開発支援装置
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715440A (en) * 1989-06-20 1998-02-03 Fujitsu Limited Branch instruction executing device for tracing branch instruments based on instruction type
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
CN101082875B (zh) * 2006-05-30 2014-01-22 Arm有限公司 减小在指令跟踪过程中产生的数据流的大小

Also Published As

Publication number Publication date
TWI524269B (zh) 2016-03-01
US20140101491A1 (en) 2014-04-10
US20130339686A1 (en) 2013-12-19
IL224506A (en) 2015-11-30
TW201237746A (en) 2012-09-16
GB2487355B (en) 2020-03-25
US20120185676A1 (en) 2012-07-19
KR20140014126A (ko) 2014-02-05
US20120185734A1 (en) 2012-07-19
EP2643751B1 (en) 2014-12-24
KR102025556B1 (ko) 2019-09-26
MY162170A (en) 2017-05-31
JP2014506371A (ja) 2014-03-13
GB2487251A (en) 2012-07-18
US9378113B2 (en) 2016-06-28
WO2012095619A1 (en) 2012-07-19
GB201100505D0 (en) 2011-02-23
KR101994636B1 (ko) 2019-07-02
MY159191A (en) 2016-12-30
WO2012095618A1 (en) 2012-07-19
TW201232393A (en) 2012-08-01
US8874975B2 (en) 2014-10-28
KR20140006861A (ko) 2014-01-16
CN103299273A (zh) 2013-09-11
CN103314356A (zh) 2013-09-18
EP2643751A1 (en) 2013-10-02
JP5914521B2 (ja) 2016-05-11
CN103299273B (zh) 2016-11-23
GB2487355A (en) 2012-07-25
JP5865920B2 (ja) 2016-02-17
EP2585909B1 (en) 2014-09-10
TWI524270B (zh) 2016-03-01
GB201101945D0 (en) 2011-03-23
EP2585909A1 (en) 2013-05-01
US10379989B2 (en) 2019-08-13
US8533685B2 (en) 2013-09-10
IL226755A (en) 2017-08-31
JP2014507710A (ja) 2014-03-27

Similar Documents

Publication Publication Date Title
CN103314356B (zh) 处理设备、追踪单元、诊断设备及其方法
JP5904993B2 (ja) マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム
KR101423480B1 (ko) 트랜잭셔널 메모리를 위한 최종 브랜치 레코드 표시자
CN104487941B (zh) 在向量处理过程中控制处理数据元素的顺序
CN110580226B (zh) 操作系统级程序的目标码覆盖率测试方法、系统及介质
US20150047045A1 (en) Automatic algorithm discovery using reverse dataflow analysis
US7945900B2 (en) Debugging tool for debugging multi-threaded programs
US20140365833A1 (en) Capturing trace information using annotated trace output
CN102289405A (zh) 追踪推测性执行的指令
CN104077220A (zh) Mips架构操作系统内核的调试方法和装置
US20040168005A1 (en) Methods for interrupting a program and for obtaining program execution acquisition
CN110716778A (zh) 应用兼容性测试方法、装置及系统
CN109189672A (zh) 微服务的自动测试方法、服务器及计算机可读存储介质
CN114371954A (zh) 一种微服务系统的自动恢复方法
CN107045606A (zh) 用于监测程序代码的执行的方法和设备
Yu et al. Improving modularity by refactoring code clones: A feasibility study on linux
JP2019526108A (ja) 診断データキャプチャ
Hadad et al. Learning Test Traces
CN114153622A (zh) 一种线程锁管理方法、装置及存储介质
CN105975586A (zh) 一种推荐软件安装方法、装置及设备
US10127121B2 (en) Operation of a multi-slice processor implementing adaptive failure state capture
CN113064713A (zh) 一种任务执行方法、装置及设备
Baldini et al. Should I use a GPU? Predicting GPU performance from CPU runs
CN114691830A (zh) 一种基于大数据的网络安全分析方法及系统
CN111630498A (zh) 提交窗口移动元素

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