CN108345534B - 生成和处理跟踪流的装置和方法 - Google Patents

生成和处理跟踪流的装置和方法 Download PDF

Info

Publication number
CN108345534B
CN108345534B CN201711351192.0A CN201711351192A CN108345534B CN 108345534 B CN108345534 B CN 108345534B CN 201711351192 A CN201711351192 A CN 201711351192A CN 108345534 B CN108345534 B CN 108345534B
Authority
CN
China
Prior art keywords
trace
vector
data
address
memory access
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
CN201711351192.0A
Other languages
English (en)
Other versions
CN108345534A (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 Technology China Co Ltd
ARM Ltd
Original Assignee
ARM Technology China Co Ltd
ARM 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 ARM Technology China Co Ltd, ARM Ltd filed Critical ARM Technology China Co Ltd
Publication of CN108345534A publication Critical patent/CN108345534A/zh
Application granted granted Critical
Publication of CN108345534B publication Critical patent/CN108345534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/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/3471Address tracing
    • 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/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/548Trigonometric functions; Co-ordinate transformations
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)

Abstract

本公开涉及生成和处理跟踪流的装置和方法。一种装置具有输入接口,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息。该序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令。向量包括多个通道,其中通道的数量取决于向量内表示的数据值的大小,并且在执行预测向量存储器访问指令时参考的预测信息被用于确定对哪些通道进行存储器传送操作。该装置还提供跟踪生成电路,用于从该执行信息生成包括多个跟踪元素的数据跟踪流。

Description

生成和处理跟踪流的装置和方法
技术领域
本技术涉及用于生成和处理指示数据处理系统内的处理电路的活动的跟踪流的机制,并且具体涉及用于在由处理电路执行的指令序列包括至少一个预测向量存储器访问指令的情况下高效地生成数据跟踪流的机制。
背景技术
跟踪电路可以用于产生包括一系列跟踪元素的一个或多个跟踪流,使得稍后可以分析这些跟踪元素以便确定相关联处理电路的活动。例如,可以生成指令跟踪流,该指令跟踪流包括多个跟踪元素,使得分析电路能够稍后确定由处理电路执行的指令序列。此外,如果需要的话,可以产生数据跟踪流,该数据跟踪流还包括多个跟踪元素,以使得分析电路能够稍后确定关于存储器地址(以及可选的数据值)的信息,在处理电路执行指令序列内的存储器访问指令时访问存储器地址(以及可选的数据值)。
一些数据处理系统支持向量指令的处理,并且在这样的向量处理系统内,可以执行向量存储器访问指令以执行存储器传送操作,以便在向量寄存器和存储器中访问的地址之间传送向量的数据值。此外,在现代系统中,可以对这样的指令应用预测,以便在操作中省略某些通道。
发明内容
当产生与预测向量存储器访问指令相关联的数据跟踪流时,将期望提供由跟踪电路使用的高效跟踪机制。
在一个示例配置中,提供了一种装置,包括:输入接口,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定对哪些通道进行了存储器传送操作;以及跟踪生成电路,用于从执行信息生成包括多个跟踪元素的数据跟踪流,对于每个被执行的向量存储器访问指令,跟踪生成电路被布置为在所述数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何;跟踪生成电路进一步被布置为在数据跟踪流内针对每个被执行的预测向量存储器访问指令下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
在另一示例配置中,提供了一种装置,包括:输入接口,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定对哪些通道进行了存储器传送操作;跟踪信息包括包含多个跟踪元素的数据跟踪流,针对每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何,针对每个被执行的预测向量存储器访问指令,该数据跟踪流还包括至少一个预测跟踪元素来标识已经从存储器传送操作中省略的向量的任何通道;该装置进一步包括:解压缩电路,用于参考程序映像从跟踪信息中检测所述指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时对哪些通道进行了存储器传送操作。
在又一个示例配置中,提供了一种操作跟踪生成电路以生成跟踪流的方法,包括:从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定对哪些通道进行了存储器传送操作;从执行信息生成包括多个跟踪元素的数据跟踪流包括:针对每个被执行的预测向量存储器访问指令,在数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素为存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管执行存储器访问指令时所访问的数据值的大小如何;以及针对每个被执行的预测向量存储器访问指令,在数据跟踪流内下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
在另一示例配置中,提供了一种装置,包括:输入接口装置,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,并且当执行预测向量存储器访问指令时被引用的预测信息用于确定对哪些通道进行了存储器传送操作;以及跟踪生成装置,用于从执行信息生成包括多个跟踪元素的数据跟踪流,对于每个被执行的向量存储器访问指令,跟踪生成电路用于在所述数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何;跟踪生成装置,进一步针对每个被执行的预测向量存储器访问指令在数据跟踪流内下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
在又一个示例配置中,提供了一种操作分析电路以处理跟踪流的方法,包括:从处理电路接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定对哪些通道进行了存储器传送操作;在跟踪信息内检测包含多个跟踪元素的数据跟踪流,针对每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何,针对每个被执行的预测向量存储器访问指令,该数据跟踪流还包括至少一个预测跟踪元素来标识已经从存储器传送操作中省略的向量的任何通道;以及参考程序映像从跟踪信息中检测所述指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时对哪些通道进行了存储器传送操作。
在另一示例配置中,提供了一种装置,包括:输入接口装置,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定对哪些通道进行了存储器传送操作;跟踪信息包括包含多个跟踪元素的数据跟踪流,针对每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何,针对每个被执行的预测向量存储器访问指令,该数据跟踪流还包括至少一个预测跟踪元素来标识已经从存储器传送操作中省略的向量的任何通道;该装置进一步包括:解压缩装置,用于参考程序映像从跟踪信息中检测所述指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时对哪些通道进行了存储器传送操作。
附图说明
本技术将仅通过示例方式参照附图中所示的实施例来进一步描述,其中:
图1是示意地图示在执行预测向量存储器访问指令时执行的存储器传送操作的图示;
图2是根据一个实施例的系统的框图;
图3是更详细地示出根据一个实施例使用的跟踪模块的框图;
图4是更详细地示出根据一个实施例使用的跟踪分析电路的框图;
图5A至图5D示出了在一个实施例中使用的各种预测分组格式;
图6是示出根据一个实施例的由跟踪模块执行的步骤的流程图;
图7示意性地示出根据一个实施例的在指令跟踪流和数据跟踪流内下发以跟踪预测向量存储器访问指令的执行行为的跟踪元素序列;
图8示意性地图示了当在执行预测向量存储器访问指令的中途发生中断时的一个实施例的跟踪模块的操作;
图9示意性地示出了当预测向量存储器访问指令的执行暂时中断以及随后在该中断之后重新恢复时在指令跟踪流和数据跟踪流内可以下发的跟踪元素序列的两个不同选项;以及
图10是示出根据一个实施例的由跟踪分析电路执行的步骤的流程图。
具体实施方式
在参考附图讨论实施例之前,提供对实施例的以下描述。
一些数据处理系统支持向量指令的处理,其指令的源操作数或结果值是包括多个元素的向量。通过响应于单个指令支持对多个不同元素的处理,可以改善代码密度并且减少指令的取出和解码的开销。通过将数据值加载到向量操作数的相应元素中并且使用单个向量指令一次处理若干个元素的数据值,可以更有效地处理要处理的数据值的阵列。
在这样的向量处理系统内,可以执行向量存储器访问指令以执行存储器传送操作,以便在向量寄存器和存储器中访问的地址之间传送向量的数据值。因此,在执行单个向量存储器访问指令期间,可以在存储器中访问多个地址,并且可以在那些地址处访问相应的多个数据值。
在一些现代向量处理系统中,也可以将预测应用于某些指令,包括向量存储器访问指令。结果,可能当执行预测向量存储器访问指令时,可能不会对向量的一个或多个通道进行存储器传送操作。
跟踪数据处理系统内的处理电路的活动,由此生成一个或多个跟踪元素流,随后可以分析该跟踪元素流以标识处理电路的逐步活动,这是系统软件开发中非常有用的工具。例如,可以分析(一个或多个)跟踪流以便于调试由处理电路执行的指令序列。通常,跟踪机制与处理电路一起在芯片上提供,这种片上跟踪机制的示例是由英国剑桥ARM有限公司(ARM Limited)提供的与各种ARM处理器相关联的嵌入式跟踪宏单元(ETM)。这样的跟踪机制可能会产生大量的跟踪元素,随后这些跟踪元素需要在芯片外提供以用于进一步分析,因此寻求提供用于跟踪处理电路的各种期望活动的有效机制是很重要的。
在一些实施例中,期望分析由处理电路执行的存储器访问指令,并且因此可以产生数据跟踪流,其为每个被执行存储器访问指令提供一个或多个地址跟踪元素以标识内存访问指令所访问的一个或多个地址。另外,如果需要,还可以跟踪所访问的数据值。如之前提到的,在向量处理系统中,可以执行向量存储器访问指令,其中在执行向量存储器访问指令时访问多个地址(和相关联的数据值)。此外,可以预测向量存储器访问指令,使得不对某些地址(和相关的数据值)进行由向量存储器访问指令定义的存储器传送操作。本文描述的实施例的目的在于提供一种用于跟踪这种预测存储器访问指令的执行的有效机制。
在一个实施例中,提供了一种包括输入接口的装置,输入接口用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息。该序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令。向量包括多个通道,通道的数量取决于向量内表示的数据值的大小,并且在执行预测向量存储器访问指令时参考的预测信息被用于确定对哪些通道进行存储器传送操作。
该装置还提供跟踪生成电路,以从该执行信息生成包括多个跟踪元素的数据跟踪流。针对每个被执行的预测向量存储器访问指令,跟踪生成电路被布置为在数据跟踪流内下发多个地址跟踪元素。每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且与固定大小的数据块相关联,不管在执行预测向量存储器访问指令时所访问的数据值的大小如何。另外,跟踪生成电路被布置为针对每个被执行的预测向量存储器访问指令在数据跟踪流内下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
根据上述机制,采用有效的技术来生成地址跟踪元素,因为地址跟踪元素的格式与正被处理的数据值大小无关,并且与正在执行的存储器访问指令是否被预测无关。相反,每个地址跟踪元素都与固定大小的数据块相关联,不管在执行预测向量存储器访问指令时所访问的数据值的大小如何,并且地址跟踪元素本身不用于捕获任何预测信息。这避免了根据指令是否被预测来提供不同格式的跟踪元素的需求,并且还避免了需要根据正被处理的数据值的大小来提供不同格式的地址跟踪元素。相反,与地址跟踪元素分开,在数据跟踪流内提供至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。预测跟踪元素的形式可以根据实施例而变化。在最简单的情况下,可能只需要针对预测向量存储器访问指令下发与所有地址跟踪元素相关联的单个预测跟踪元素。因此已经发现,上述将地址跟踪元素(每个地址跟踪元素与固定大小的数据块相关联)与至少一个预测跟踪元素结合使用提供了一种用于跟踪预测向量存储器访问指令的执行行为的特别有效的机制。
在一个实施例中,由预测向量存储器访问指令处理的数据值的大小可以在不同的向量存储器访问指令之间变化。通常,可以提供多个受支持的数据值大小,并且对于每个预测向量存储器访问指令,将对其大小为选自那些受支持的数据值大小之一的数据值执行存储器传送操作。如前所述,无论数据值大小如何,每个地址跟踪元素都与固定大小的数据块相关联,并且在一个实施例中,固定大小的数据块是每个受支持的数据值大小的整数倍。在一个特定实施例中,固定大小的数据块是32位,并且多个受支持的数据值大小是8位,16位和32位。通过保持相同格式的地址跟踪元素而不管正被处理的数据值大小如何,并且随后在一个或多个单独的预测跟踪元素中捕获关于已经从存储器传送操作中省略的向量的任何通道的信息(其性质将考虑数据值大小),这提供了跟踪带宽用于跟踪预测向量存储器访问指令的执行的特别高效的使用。
每个预测跟踪元素的格式可以根据实施例而变化。然而,在一个实施例中,每个预测跟踪元素具有这样的格式,使得当针对一个预测向量存储器访问指令在数据跟踪流内下发多个预测跟踪元素时,对这些多个预测跟踪元素应用逻辑组合操作标识已经从存储器传送操作中省略的向量的任何通道。因此,这提供了一个简单的机制来构造来自多个预测跟踪元素的所有必需的预测信息。在一个特定实施例中,逻辑组合操作可以简单地是逻辑“或”运算。
预测跟踪元素可以采用数据跟踪流内的各种形式,但是在一个实施例中,跟踪生成电路被布置为下发每个预测跟踪元素作为预测跟踪分组,预测跟踪分组包括将跟踪分组标识为预测跟踪分组的头部部分,以及提供预测数据的预测指定部分。
虽然在一个实施例中可以提供单一格式的预测跟踪分组,但是在替代实施例中,跟踪生成电路可以访问预测跟踪分组的多种格式,并且跟踪生成电路被布置为应用格式选择标准来确定要在数据跟踪流中下发的每个预测跟踪分组的格式。通过提供多种格式,这可以进一步提高跟踪带宽的使用效率。例如,在一个实施例中,预测跟踪分组的多种格式包括不同数据值大小的格式,并且当应用格式选择准则时,跟踪生成电路被布置为当确定哪个格式的预测跟踪分组将被下发时,考虑在预测向量存储器访问指令的执行期间所传送的数据值的大小。作为特定示例,预测跟踪分组的大小可以在不同的格式之间变化,并且当数据值大小较大时,可能需要捕捉较少的预测信息,并且相应地可以选择较小大小的格式。
如前所述,在一个实施例中,除了指令跟踪流以外,还可以下发数据跟踪流,指令跟踪流包含足够的信息以使跟踪分析电路能够确定哪些指令已经被处理电路执行。可以使用各种技术来将指令跟踪流和数据跟踪流连接在一起。在一个特定实施例中,跟踪生成电路被布置为在指令跟踪流内包括由处理电路执行的每个预测向量存储器访问指令的指令跟踪元素,所述指令跟踪元素指定标识符密钥,并且跟踪生成电路被布置为选择性地指定在所述数据跟踪流中下发的一个或多个跟踪元素的标识符密钥,以便将所述一个或多个跟踪元素与所述指令跟踪流中的对应指令跟踪元素相连接。
关于预测跟踪分组,跟踪分析器可能能够参考数据跟踪流内先前发送的标识符关键字信息来推断哪个标识符关键字与该预测跟踪分组相关联。然而,在一个实施例中,预测跟踪分组的多种格式包括包含标识符关键字部分的格式。在这样的实施例中,当无法从数据跟踪流内的先前跟踪元素推断与预测跟踪元素有关的标识符关键字时,跟踪生成单元可以被布置为选择包含标识符关键字部分的预测跟踪分组的格式。然而,通过提供至少一种不包含标识符关键字部分的格式,并且当可以从先前的跟踪元素推导标识符关键字时使用该格式,这进一步提高了使用预测跟踪分组时可用跟踪带宽的高效使用。
在一个实施例中,针对每个被执行的预测向量存储器访问指令,跟踪生成电路被布置为在数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素具有与其相关联的序列号。需要下发的地址跟踪元素的数量可以根据存储器所需的单独访问的数量而变化,并且这可以取决于许多因素,例如存储器访问带宽,正被访问的数据值大小以及访问是涉及连续的地址序列还是不连续的地址序列。通过使用这样的序列号,这可以允许跟踪分析电路容易地对接收到的各种地址跟踪元素进行排序。
在一个特定实施例中,当要与地址跟踪元素中的一个相关联的所有数据值占用未对其进行存储器传送操作的通道时,跟踪生成电路可以被布置为抑制在数据跟踪流中下发该地址跟踪元素及其相关联的序列号。因此,通过省略一个或多个地址跟踪元素可以实现进一步的增效节约。在这种情况下,当地址跟踪元素被省略时,如果数据值跟踪也被启用,则相应的数据值也可以从数据跟踪流中省略。
在一个实施例中,如从至少一个预测跟踪元素确定的,对从存储器传送操作中省略的向量的通道的标识包括对至少与已经被抑制的地址跟踪元素相关联的那些通道的标识。因此,根据对预测信息的分析,跟踪分析电路将能够验证省略的地址跟踪元素由于预测确实已经被省略。
在一个实施例中,当从存储器传送操作中省略的向量的所有通道与已经被抑制的地址跟踪元素相关联时,跟踪生成电路可以被布置为抑制至少一个预测跟踪元素的生成。因此,在省略的一个或多个地址跟踪元素直接提供由于预测而已经被省略的通道的指示的特定情况下,在一个实施例中,不需要下发预测跟踪元素,从而提供进一步的带宽效率节约。
如前所述,在一个实施例中,跟踪生成电路可以进一步被布置为在数据跟踪流内下发与在数据跟踪流中下发的每个地址跟踪元素相关联的数据块跟踪元素,以标识在相关联地址跟踪元素指示的地址处所访问的数据块。在连续地址被访问的情况下,根据与相应的存储器访问指令相关联的数据值大小,数据块实际上可以表示一个或多个数据值。
在实践中可能的是,预测向量存储器访问指令的执行可能被异常中断,并且在这种情况下,有效的机制对于跟踪存储器访问指令的执行是有用的。在一个实施例中,这可以通过使用所描述的实施例的预测跟踪元素容易地实现。特别地,跟踪生成电路可以被布置为在数据跟踪流内下发至少一个预测跟踪元素,以在异常发生之前标识对其进行了存储器传送操作的那些通道,并且在预定向量存储器访问指令恢复之后,跟踪生成电路可以被布置为在数据跟踪流内下发至少一个预测跟踪元素,以标识对其进行了存储器传送操作的剩余通道。在一个实施例中,这些多个预测跟踪元素随后可以在逻辑上被组合以标识已经对哪些通道进行了存储器传送操作。
在另一个实施例中,可以提供用于执行跟踪分析功能的装置。特别地,这样的设备可以包括输入接口,以接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,其中指令序列包括至少一个预测向量存储器访问指令。跟踪信息可以包括数据跟踪流,数据跟踪流包括多个跟踪元素,对于每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素。每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,不管在执行该预测向量存储器访问指令时被访问的数据值的大小如何。对于每个被执行的预测向量存储器访问指令,数据跟踪流还包括至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。该装置还包括解压缩电路,用于参考程序映像从跟踪信息中检测指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时对哪些通道进行了存储器传送操作。随后,这便于进一步分析针对预测向量存储器访问指令下发的一个或多个地址跟踪元素,以及甚至任何对应的数据块跟踪元素。
在一个实施例中,当解压缩电路从程序映像检测到潜在预测向量存储器访问指令的执行时,则通过在数据跟踪内存在至少一个相关联的预测跟踪元素来指示该向量存储器访问指令的预测状态。
在一个实施例中,当针对一个预测向量存储器访问指令在数据跟踪流内下发多个预测跟踪元素时,解压缩电路可以被布置为对这些多个预测跟踪元素应用逻辑组合操作,以便标识已经从存储器传送操作中省略的向量的任何通道。如前所述,逻辑组合操作在一个实施例中可以涉及简单的逻辑“或”运算。
现在将参考附图描述特定实施例。
图1是示意地图示可以在执行预测向量存储器访问指令时执行的存储器传送操作的图示。向量存储器访问指令可以是一个向量加载指令,被布置成从存储器地址空间8中的地址加载多个用于存储在向量寄存器2内的数据值,或者可以是用于将来自向量寄存器2的数据值存储到存储器地址空间8内的指定地址的向量存储指令。这种向量存储器访问指令可以指定连续的地址序列,如图1所示的示例,或者可以指定不连续的地址序列(例如通过指定一个将被应用于指定基准地址的地址偏移的向量)。
存储器传送操作6可被视为在多个通道内操作,其中通道的数量取决于数据值的大小,并因此取决于向量内的数据值的数量。在图1所示的示例中,假定向量内有四个数据值,因此有四条通道。当向量存储器访问指令被预测时,预测4被称为标识对于存储器传送操作而言哪些通道是活动的。有多种可以指定预测的方式,但是在该示例中为每个通道提供了一个值,逻辑1值指示相关联通道是活动的,逻辑0值表示相关联通道是不活动的。因此,对于图1中所示的预测4的特定示例,通道0、2和3是活动的,但是通道1是不活动的。相应地,当进行存储器传送操作时,在存储器和向量寄存器之间不传送通道1中的数据值,而是传送其它通道内的数据值。
如前所述,期望提供一种用于跟踪这样的预测向量存储器访问指令的执行的有效机制。当跟踪存储器访问指令时,已知在数据跟踪流内包括地址跟踪元素以标识被访问的存储器中的地址,并且可选地还包括数据块跟踪元素以标识在该地址处所访问的数据块。对于向量存储器访问指令,可以扩展这个原理,以便跟踪所访问的各种地址,并且可选地跟踪所访问的数据值。希望以有效的方式做到这一点,以使用于跟踪这种信息的跟踪带宽最小化。然而,当预测的可能性受到支持时,将要理解可以从存储器传送操作中省略单独的通道,并且如果跟踪分析电路能够建立当执行预测向量存储器访问指令而执行存储器传送操作时访问哪些准确的地址(和数据值)的完整画面,则希望能够在跟踪流内捕获该附加级别的信息。下文描述的实施例提供了一种用于跟踪这样的预测向量存储器访问指令的执行的有效机制。
图2示意性地图示了根据一个实施例的系统,提供了被监测电路10,跟踪模块20,跟踪缓冲器30和跟踪分析器40。虽然图2示出了提供了跟踪缓冲器30的系统,但是在替代实施例中,跟踪模块20可以将其输出直接传递到跟踪分析器40,而不经过跟踪缓冲器。跟踪模块被布置成产生包括一系列跟踪元素的一个或多个跟踪流,其随后使得跟踪分析器能够重建被监测电路10的活动。被监测电路10可以采用各种形式,但是在一个实施例中它包括至少一个被布置为执行一系列指令的处理元件,例如处理器核。被监测电路将执行信息输出到跟踪模块20,指示当执行指令序列时由监测电路执行的操作。
跟踪模块在一个实施例中在芯片上呈现并且可以例如采用由英国剑桥ARM有限公司(ARM Limited)生产的ETM电路的形式,该跟踪模块被布置成产生提供一系列跟踪元素的一个或多个跟踪流。例如,可以产生指令跟踪流,其中跟踪元素指示执行指令序列内的预定指令。在一个实施例中,不是产生代表被监视电路执行的每个指令的跟踪元素,而是指令跟踪流内的跟踪元素仅指示某些预定指令的执行,其中对跟踪分析器提供足够的知识(例如通过程序映像),以使其能够重建关于指令的信息,指令已经在对其提供了跟踪元素的每个这样的预定指令之间执行。
例如,在其中仅产生指令跟踪流的一个实施例中,跟踪模块可以被布置为针对在该序列内执行的每个指令流改变指令(通常为分支指令)在指令跟踪流中产生跟踪元素,该跟踪元素提供关于分支是否被采用的信息,并且对跟踪分析器40提供程序映像以使得其能够基于关于处理分支指令的信息来确定已经执行的实际指令序列。这使得能够产生显著减少跟踪元素的量。这是非常有用的,因为跟踪分析器40通常在片外提供,并且因此跟踪流需要经由芯片的引脚被路由到分析器。
在一些情况下,还希望跟踪在执行指令时由监视电路执行的存储器访问,因此在这种情况下,指令跟踪流可以包括被执行的每个存储器访问指令的跟踪元素。另外,除了指令跟踪流以外,还可以产生数据跟踪流,以便针对每个这样的存储器访问指令,在数据跟踪流内下发一个或多个跟踪元素。特别地,针对每个被执行的存储器访问指令,数据跟踪流可以包括一个或多个地址跟踪元素,每个地址跟踪元素在执行该向量存储器访问指令时为在存储器中访问的地址提供地址指示。如果需要的话,还可以将数据值跟踪结合到数据跟踪流内,使得与每个地址跟踪元素相关联,数据块跟踪元素也被输出,其标识在该地址处访问的数据块。这种方法可以应用于标量存储器访问指令和向量存储器访问指令,但是对于向量存储器访问指令,通常情况是需要下发与向量存储器访问指令相关联的多于一个地址跟踪元素(以及相关联的数据块元素),以便跟踪所访问的所有地址(以及可选的数据值)。
通常,系统将支持对各种不同大小的数据值所执行的处理。例如,字长数据值(即32位)可以由一些指令操作,虽然半字大小数据值(16位)由其他指令操作,事实上在一些情况下字节大小数据值(8位)可以由其他指令操作。因此,当考虑向量存储器访问指令时,进行了由存储器访问指令定义的存储器传送操作的数据值的数量可以根据数据值的大小显著变化。例如,考虑128位的向量宽度,并且使用上述数据值大小的例子,可以理解,向量寄存器可以包含四个32位数据值,八个16位数据值或十六个8位数据值。
随后,当对指令的预测执行的选项也被说明时,应该理解,处理通道的数量将根据数据值大小而显著变化,并且当跟踪这样的预测向量存储器访问指令时,期望表示没有对哪些通道(如果有的话)进行存储器传送操作。
虽然原则上可能认为在个别地址跟踪元素内试图捕获这样的预测信息是合适的,但是这将需要修改跟踪元素格式以考虑到不同的数据值大小,导致不同类型的跟踪元素的数量增大。也可能要求生成地址跟踪元素的预测和非预测两个版本,以避免在非预测情况下的开销。
然而,根据下文所述的实施例,提供了一种改进的机制,其更有效地利用可用跟踪带宽。特别地,如将要讨论的,每个地址跟踪元素提供为固定大小数据块提供地址指示,不管在执行预测向量存储器访问指令时所访问的数据值的大小如何。另外,跟踪生成电路随后被布置为针对每个被执行的预测向量存储器访问指令在数据跟踪流内下发至少一个预测跟踪元素,该预测跟踪元素用于标识已经从存储器传送操作中省略的向量的任何通道。这使得能够保持和使用地址跟踪元素的有效形式,不管向量存储器访问指令是否被预测。随后可以分别捕获预测信息,并且在一些实施例中,已经发现仅需要下发与跟踪向量存储器访问指令相关联的单个预测跟踪元素。已经发现这提供了可用跟踪带宽的特别有效的使用。
例如,考虑图1的特定示例,并假设向量寄存器是128位宽,并且因此所示出的每个数据值是32位长度,则跟踪生成电路可以被布置为针对每个32位的被访问数据生成跟踪元素,并因此针对图1所示的存储器地址空间8内的四个地址中的每一个下发地址跟踪元素。对于连续的加载或存储操作,甚至可以当数据值大小是16位或8位时下发相同数量的地址跟踪元素。特别地,对于16位示例,每个地址跟踪元素将涉及32位数据块,并且如果数据值跟踪也被启用,则对应的数据块也将捕获16位数据值中的两个。类似地,对于8位数据值,每个地址跟踪元素将标识用于访问32位数据块的地址,其中该数据块包括数据值中的四个。
对于非连续的变体(当将来自存储器中的不连续地址的数据值加载到向量寄存器中时经常被称为收集指令,或者当向存储器中的不连续地址存储向量寄存器的内容时被称为分散指令),可能需要下发更多地址跟踪元素,但是每个地址跟踪元素将被假定为涉及32位数据块,而不管正被处理的数据值的大小如何。跟踪分析电路随后可以标识一旦已经确定被执行的特定向量存储器访问指令后所访问的特定地址(以及可选的数据值),并且因此知道数据值大小。
当在单独的预测跟踪元素中捕获预测信息时,即使存储器访问指令被预测,仍然可以使用上述形式的地址跟踪元素。随后,预测信息被单独捕获,并且当确定被执行的特定存储器访问指令是指令的预测版本时,预测信息可以由跟踪分析电路参考。预测跟踪元素可以采取多种形式,但是提供足够的信息来标识没有对其进行存储器传送操作的任何单独的通道。
图3是示出一个实施例的跟踪模块20的框图。如图所示,跟踪模块20耦合到处理元件50,处理元件在一个实施例中形成被监测电路的至少一部分。处理元件访问一组向量寄存器55,这些寄存器在执行前面提到的向量存储器访问指令时使用。
当处理元件50执行一系列指令时,它将执行信息传递至跟踪模块20的输入接口65,随后将其转发给跟踪生成电路60。在一个实施例中,该执行信息将包括如下信息,其标识预测存储器向量存储器访问指令何时已经被执行以便在向量寄存器55其中之一与存储器中访问的地址之间传送向量的数据值。假设已经启用了数据跟踪,那么跟踪生成电路60将被布置为在指令跟踪流内下发跟踪元素(在本文中被称为P0跟踪元素)以标识预测向量存储器访问指令的执行。另外,在数据跟踪流内,跟踪生成电路将下发一个或多个地址跟踪元素来标识在处理存储器访问指令时所访问的地址,并且还将下发至少一个预测跟踪元素以提供标识已经从存储器传送操作中省略的向量的任何通道。在一个实施例中,每个这样的预测跟踪元素被作为预测跟踪分组,并且提供跟踪生成电路可访问的存储装置75,该存储装置标识预测跟踪分组的多种不同格式。随后跟踪生成电路将应用格式选择标准62以针对预测跟踪分组的每个实例标识要使用哪个格式的预测跟踪分组。
预测跟踪分组的各种示例格式在图5A至5D中示出。考虑图5A中所示的格式1,预测跟踪分组150包括头部字段152,其在一个实施例中包括用于标识该分组是预测跟踪分组的一字节信息。形成头部部分所需的比特数将根据数据跟踪流内所支持的不同分组的数量而变化,但是在一个实施例中,已经发现一字节信息足以能够标识所有各种类型的分组。
在一个实施例中,提供了一种机制来连接数据跟踪流中的跟踪元素与包含在指令跟踪流内的对应P0跟踪元素。特别地,在一个实施例中,通过使用“左侧”或“右侧”关键字来执行该连接,该“左侧”或“右侧”关键字是对指令或数据跟踪流中的相关分组的唯一索引参考。特别地,在一个实施例中,与包括在指令跟踪流内的用于预测向量存储器访问指令的P0跟踪元素相关联,右侧关键字将被标识。在数据跟踪流内,相应的左侧关键字随后可以与数据跟踪流内下发的跟踪元素中的一个或多个跟踪元素相关联,数据跟踪流与该预测向量存储器访问指令相关联。在图5A所示的格式一变体中,可以在分组150内指定字段154以标识左侧关键字。
指定左侧关键字所需的字节数可以根据实施例而变化,并且在一些实施例中可能需要多个字节。因此,提供左侧关键字信息会消耗大量的带宽。然而,在一些实施例中,对跟踪分析电路而言可以基于先前发送的信息来推导一个或多个分组的左侧关键字信息,并且因此可能不需要与每个分组一起发送左侧关键字信息。因此,如图5B所示,可以提供与格式1相同的分组160的格式2变体,除了省略了左侧关键字信息。
在图5A的格式一分组中,提供两个字段156,158以提供16位的预测信息。对于数据值大小为32比特,16比特或8比特的128比特向量的早些示例,这使预测信息能够针对向量内信息的每个字节单独指定,因此可以适应上述示例性实施例的数据值大小的最好粒度。当考虑图5B变体时,字段166,168对应于图5A的字段156,158。
在上面的示例性实施例中,当数据值大小是16位而不是8位时,将会理解,仅需要8位的预测信息来表示单个通道的预测,并且因此图5C和5D示出了在这样的情况下可以在一个实施例中使用的图5A和5B的分组的替代变体。应该注意,由于仍然可以使用图5A和5B的格式,即通过复制每对比特中的预测信息以便有效地标识8个通道的预测信息,所以不需要这些变体。然而,在支持使用图5C和5D所示的格式3或格式4的实施例中,这可以将在这种情况下下发的每个预测跟踪分组的大小减少一个字节,并因此可以提供带宽效率益处。
因此,通过比较图5C和图5A,将可以看出,图5C的分组170包括类似于图5A的分组150的头部部分152的头部部分172,并且还包括类似于图5A的分组的部分154的部分174,部分174中可以指定左侧关键字信息。随后字段176提供所有的预测信息,并替换图5A的两个单独的字段156,158。
图5D示出类似于变体170的分组变体180,但省略了左侧关键字信息,并且因此仅包括头部部分182和预测指定部分186。
对于其中数据值为32位值并因此在向量内存在四个数据值的实施例,在一个实施例中,如果需要,可以仅通过复制多位位置的预测信息使用四个示例预测格式中的任何一个。然而,如稍后将更详细地讨论的,在一个实施例中,在处理四个32位数据值的特定场景中,可能完全省略输出预测跟踪分组的需要,因为预测信息可能能够从下发的一系列地址跟踪分组来推断。
一旦跟踪生成电路60已经确定了所需的跟踪元素,那么这些跟踪元素就通过输出接口70在相应的指令或数据跟踪流中输出,用于向前传播到跟踪缓冲器30和/或跟踪分析器40。
图4是示意性地示出一个实施例的跟踪模块40的图示。跟踪分析器40在其输入接口105处接收跟踪流,随后将该信息从输入接口转发到解压缩电路100。解压缩器电路访问程序映像110,其提供由被监视电路执行的程序代码的副本。解压缩器电路100保持跟踪程序映像内的当前地址(诸如当跟踪被开启时,或者通过专用跟踪信息,当前地址在预定点处被设置为预定的初始值),并且每当在指令跟踪流中接收新跟踪元素时,它遍历程序映像直到它到达预定类型的程序图像内的下一个指令。例如,对于纯指令跟踪,可能是在指令流内只跟踪了分支指令的情况,因此每当在指令流内接收到新跟踪元素时,遍历该程序映像,直到遇到下一个分支指令为止。然而,如果数据跟踪也被启用,则指令流将不仅捕获分支指令,而且捕获被执行的存储器访问指令的每个实例,并且因此遍历该程序映像,直到遇到分支指令或存储器访问指令。
随后,解压缩电路可以从程序映像中提取关于在当前地址和下一个预定指令的地址之间执行的每个指令的信息,并且可以将该执行信息全部输出到分析电路120以供分析。随后可以适当地更新当前地址。因此,对于分支指令,可以根据遇到的分支的目标地址更新当前地址。
当数据跟踪被启用,并且解压缩电路100检测到存储器访问指令已经被执行时,其可以标识数据跟踪流内用于该指令的所有相关数据跟踪元素。这将包括一个或多个地址跟踪元素,并且如果数据值跟踪被启用,则其还可以包括对应的一个或多个数据块跟踪元素。进一步地,如果从程序映像确定正在执行的存储器访问指令是预测向量存储器访问指令,则数据跟踪流可以包括一个或多个预测跟踪分组。基于该信息,解压缩电路随后可以标识在执行该指令时所访问的各种地址(以及可选的数据值),并且还可以将该信息提供给分析电路120。
图6是示出当跟踪模块从监视电路接收到的信息指示向量存储器访问指令已经被执行时跟踪模块20的操作的流程图。如框200所示,当处理元件(被监测电路)指示向量存储器访问指令已经被执行时,则跟踪生成电路60确定数据跟踪是否已被启用。如果未被启用,则处理进行到步骤210,在该步骤中没有针对当前指令下发跟踪元素。特别地,在一个实施例中,当数据跟踪未被启用时,将不会产生数据跟踪流,并且在指令跟踪流内不需要针对存储器访问指令下发跟踪元素。
然而,假定数据跟踪被启用,则过程进行到步骤215,在步骤215中,在指令跟踪流中下发P0跟踪元素以标识向量存储器访问指令的执行,并且将唯一右侧关键字分配给该指令。
在步骤220,在数据跟踪流中下发一个或多个地址跟踪元素(在本文中也被称为P1跟踪元素),并且如果数据值跟踪也被启用,则相关联的数据块跟踪元素(在本文中被称为P2微量元素)也被下发。可选地,可以将左侧关键字分配给一个或多个地址跟踪元素,以将这些地址跟踪元素连接到指令流中的对应P0元素。以类似的方式,如果数据值跟踪被启用,则可以使用其他唯一的右关键字和左关键字来连接每个P1地址跟踪元素和其对应的数据块跟踪元素。
如前所述,在所述实施例中,每个P1地址元素都被针对固定大小的数据块下发,不管存储器访问指令正在处理的数据值的大小如何。在一个实施例中,当存储器访问指令处理连续地址序列时,所需的地址跟踪元素的数量将不会根据数据值大小而变化,但是当针对不连续地址执行聚集或分散操作时,地址跟踪元素的数量将通常取决于所访问的不连续地址的数量,其本身可能取决于向量内的数据值的数量。然而,应该注意,下发的地址跟踪元素的格式和数量通常与向量存储器访问指令是否被预测无关(除了在稍后讨论的特定实施例中,其中如果与这样的地址跟踪元素相关联的所有数据值都占用未对其进行存储器传送操作的通道,则单独地址跟踪元素可以被整体抑制)。相反,预测信息被单独捕获。
特别地,在步骤225中,确定指令执行是否被预测,如果未被预测,则如步骤230所示,则针对该指令下发所有所需的跟踪元素。然而,如果指令执行被预测,则在步骤235,在一个实施例中,将在数据跟踪流内下发一个或多个预测跟踪元素。这些预测跟踪元素相对于数据跟踪流内的其他跟踪元素的位置可以根据实施例而改变,并且可选地它们可以与相关联的P1/P2跟踪元素交织。然而,在一个实施例中,在预测向量存储器访问指令的处理不存在任何中断的情况下,下发与整个预测向量存储器访问指令有关并且与下发的地址跟踪元素数量无关的单个预测跟踪元素。此外,在一个实施例中,如前面参考图3所讨论的,应用格式选择标准62来确定所下发的每个预测跟踪元素的格式。例如,如果正被处理的数据值大小是一个字节,则可以使用图5A或图5B的格式之一来确保可以在单个预测跟踪分组内捕获所有所需预测信息。此外,将关于是否需要左侧关键字信息或者该信息是否可以由跟踪分析器从数据跟踪流内先前下发的关键字来推断做出决定,并且这可以用于决定是使用图5A的变体还是图5B的变体。类似地,如果数据值大小是半字或单字,则可以决定使用图5C或图5D的格式之一。
图7是示意性地示出用于一个示例实施例的在指令跟踪流和数据跟踪流内下发的各种跟踪元素的图示。在该示例中,假定在指令跟踪流内下发右侧关键字为零的指令,在一个实施例中该指令不是向量存储器访问指令。随后执行随后的向量存储器访问指令,导致在指定右侧关键字为1的指令流内下发P0跟踪元素。
在该实施例中,包括与数据跟踪流内下发的P1跟踪元素相关联的对应的为1的左侧关键字值,并且其确实也可以与被下发以标识预测信息的预测跟踪元素相关联地使用。然而,如前所述,在一些实施例中,这些跟踪元素中的至少一些可以省略包含左侧关键字值,其中该左侧关键字值由跟踪分析器从先前发送的左侧左侧关键字信息来推断。这例如可以涉及跟踪解压缩器先前递增式发送的关键字以便确定与特定跟踪元素相关联的适当关键字。或者,可以指定与第一地址跟踪元素相关联的为1的左侧关键字值,但是每个后续的地址跟踪元素和预测跟踪元素可能不需要再次指定左侧关键字信息。例如,如果不存在与数据跟踪流中的不同指令有关的中间P1跟踪元素或预测跟踪元素,则这可能是可能的。
如图7所示,在一个实施例中,每个P1地址跟踪元素可以具有指定的相关联序列索引。在该实施例中,假设需要四个地址跟踪元素来指定四个地址,每个地址用于固定大小的数据块(例如32位数据块)。这些单独的跟踪元素可以具有与它们相关联的序列号0、1、2和3。
如果还启用了数据值跟踪,则可以下发对应的P2跟踪元素来标识在相关地址处所访问的数据块。如图7所示,可以使用唯一的右关键字和左关键字来连接数据跟踪流内的P1和P2元素。
如图7所示,预测跟踪元素可以在数据跟踪流内的合适点处下发,在本实施例中,预测跟踪元素在各个P1跟踪元素之后下发。该预测跟踪元素也将具有与其相关联的左侧关键字值1。这可以通过使用预测跟踪分组的图5A或图5C变体来明确地指定,或者可以通过由P1地址元素所使用的左侧关键字值隐式地导出,其中预测跟踪元素使用图5B或图5D格式。
如图7所示,如果预测信息指示与该地址跟踪元素相关联的数据值中没有一个占用已经对其进行了存储器传送操作的通道,则可以选择性地抑制单独地址跟踪元素。在该示例中,假设序列索引1不需要P1跟踪元素,因为所有与该地址相关联的数据值均被预测。例如,对于图1所示的具体示例来说就是这种情况。如果存在8个16位数据值,但是不对与地址1相关联的两个通道进行存储器访问操作,或者实际上如果存储器访问操作在16个8位数据值上操作,并且未对与地址1相关联的通道中的所有四个数据值进行存储器访问操作,则也是这种情况。
在图1的处理四个32位数据值的特定示例中,可能不需要实下发际预测数据分组,而是可以从缺少序列索引1的地址跟踪元素来标识所有预测信息。
如果由于上述原因抑制了P1地址元素之一,则如果数据值跟踪被启用,则也可以抑制对应的P2数据值元素。
如果需要,可以在数据跟踪流内下发多于一个预测跟踪分组。例如,在一个实施例中,将有可能下发与每个P1地址元素相关联的预测跟踪分组。这些预测分组中的每一个仍然可以使用图5A至5D中所示的格式之一,但是在一个实施例中,未由该分组表示的通道的对应预测值将被设置为零。随后跟踪分析器可以通过对所接收的各种预测跟踪分组进行“或”运算来获得完整的预测信息。
然而,在一个实施例中,下发单个预测跟踪分组,如图7所示。然而,在一些实例中,可能仍然需要下发多于一个预测跟踪分组,一个示例在图8中示出。具体地,在图8的流程图所示的示例中,假设在执行向量存储器存取指令的中途发生中断。具体地,如图8所示,一旦在步骤300处确定处理元件正在执行向量存储器访问指令,则在步骤305处在指令跟踪流中下发P0元素,并且跟踪生成电路60开始在数据跟踪流中下发P1(以及如果需要P2)元素以捕获所访问的各种地址(和数据块)。
然而,如步骤310所示,假定在指令已经完成执行之前发生中断。在图8所述的实施例中,这导致预测跟踪元素在步骤315处下发,以在中断之前标识已对其进行存储器传送操作的那些通道的预测信息。在框317所示的特定示例情况下,假定向量存储器访问指令正在对16个8位数据值执行存储器传送操作,并且在中断之前处理前12个数据值。从框317可以看出,预测数据的前12位标识已被处理的单独通道的预测信息,其余四个通道的预测数据被设置为零。
在步骤320,跟踪生成电路随后等待已经恢复指令执行的指示,并且之后过程行进至步骤325,其中在一个实施例中,跟踪生成电路在指令跟踪流中重新下发P0元素。然而,如稍后将参照图9讨论的,在替代实施例中,这可能不是必需的。
之后,在步骤330,跟踪生成电路在数据跟踪流内下发剩余的P1(和可选的P2)元素,随后在步骤335处生成预测跟踪元素以在中断被处理完之后标识已对其进行传送操作的其余通道的预测信息。框337示出了特定示例布置,其中最后四个通道在中断之后被处理,其中预测信息的最后四个比特提供对这四个通道的预测的指示。所有的前十二位都被设置为逻辑零值。通过查看示例框317、337可以理解,跟踪分析电路随后可以通过对两组预测值317、337执行逻辑或运算来简单地确定总体预测信息。
图9示出了在执行图8的处理时在指令跟踪流和数据跟踪流内下发的元素的示例序列。在步骤305,在指令跟踪流中下发P0元素,指定为1的右侧关键字值,并且随后在下发每个P1地址元素时,在一个实施例中,它们指定为1的左侧关键字值,或者该值可由跟踪分析器从之前下发的关键字信息中推断。一旦中断发生,则在步骤315处下发预测跟踪元素,再次明确地指定为1的左侧关键字值,或者使该左侧关键字值是隐含的。在该示例中,假定在中断发生之前处理了八条通道中的前四条,因此预测数据的最后四位将被设置为零,而前四位将具有标识对前四条通道的哪个通道进行了存储器传送操作的值。
一旦中断完成后恢复处理,则图9显示了可以追求的两种可能选择。根据选择一,图8的步骤325被省略,并且不重新下发P0跟踪元素。相反,数据跟踪流只是通过下发剩余的P1地址元素来恢复,其中P1地址元素的序列号用于将那些地址跟踪元素与先前的地址跟踪元素相关联。随后下发最后的预测跟踪元素,其中前四个通道被设置为零,因为那些通道的预测行为被较早下发的预测覆盖,并且最后的四个预测位标识在处理恢复后对哪些通道进行了存储器传送操作。
根据选择二,随后在步骤325,指令跟踪元素被重新下发,这次使用不同的唯一右侧关键字。随后所有的P1地址元素可以和相关联的左侧关键字值一起被重新下发,接着是与针对选择1所讨论的预测跟踪元素具有相同形式的最后预测跟踪元素。在一个实施例中,由于先前讨论图7时所讨论的原因,由于下发的最终预测中的预测信息将标识与前两个地址跟踪元素相关联的所有通道均未被处理,因此前两个P1地址跟踪元素可以被可选地抑制。随后使用P1地址元素的序列编号来标识所跟踪的P1地址元素与序列中的第二和第三地址有关。
图10是示出根据一个实施例的图4的解压缩电路的操作的流程图。在步骤400处,参照程序映像110,解压缩电路100检测到向量存储器访问指令已被执行,这由指令跟踪流中的P0元素指示,使解压缩电路开始遍历当前地址的程序映像,随后使得向量存储器访问指令被标识。
在一个实施例中,如步骤405所示,解压缩电路随后可以累积该指令的数据跟踪流内的所有数据跟踪元素(即,包括所有P1和预测跟踪元素,以及可选的任何P2跟踪元素)。随后解压缩电路可以在步骤410处确定是否已经包括任何预测跟踪分组,并且如果包括,则可以在步骤415处对预测跟踪分组(如果存在多于一个)一起进行“或”运算。之后,处理进行到步骤420,其中可以使用P1跟踪元素和预测信息(如果提供的话)构建已经访问了哪些地址的记录。如果没有提供预测信息,则假定与提供的P1地址元素相关联的所有通道都是活动的,并且相应地重构所访问的地址的记录。类似地,如果提供P2元素,则可以确定所访问的数据值。在步骤425,结果可以显示给用户,作为该信息被转发到分析电路120的结果。
在步骤420,解压缩电路将参考P1元素的序列号。在一个特定示例中,如前所述,如果正被处理的数据值是32位值,并且因此在128位向量内有四条处理通道,则可能不需要下发单独的预测跟踪分组,相反如果未对对应的数据值进行存储器传送操作,则可以抑制单独地址跟踪元素。通过参考步骤420处的序列号,解压缩电路仍然可以确定执行了哪些访问。
虽然在图10中描述了一旦在步骤405处已经累积了所有的数据跟踪元素,则发生由解压缩电路执行的分析,但是在替代实施例中,过程可以按逐个跟踪元素顺序执行,因为每个跟踪元素是从数据跟踪流中提取的,以便随时间形成所访问的地址和数据的记录。例如,考虑图7,解压缩电路可以基于接收到的三个P1地址元素来重构地址和数据值,随后当接收到预测跟踪分组时,可以通过基于预测信息分析P1跟踪分组来量化所产生的结果,以便排除未对其进行存储器存取操作的任何地址和相关数据值。
上述实施例采用地址跟踪元素和一个或多个相关联预测跟踪元素的组合使用,所述地址跟踪元素均与固定大小的数据块相关联,而不管所访问的数据值的大小如何,这些实施例提供了一种跟踪预测向量存储器访问指令的非常有效的机制。
在本申请中,词语“被配置为”用于指装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”是指硬件或软件互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程为执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所定义的操作。
虽然本文已经参照附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确实施例,并且在不背离由所附权利要求书限定的本发明的范围和精神的情况下,可以本领域技术人员在其中进行各种改变,添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征的各种组合可以与独立权利要求的特征一起进行。

Claims (24)

1.一种装置,包括:
输入接口,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,其中所述多个通道的数量取决于向量内表示的数据值的大小,并且当执行预测向量存储器访问指令时被引用的预测信息用于确定进行了存储器传送操作的通道;以及
跟踪生成电路,用于从执行信息生成包括多个跟踪元素的数据跟踪流,对于每个被执行的向量存储器访问指令,跟踪生成电路被布置为在所述数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何;
跟踪生成电路进一步被布置为针对每个被执行的预测向量存储器访问指令在数据跟踪流内下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
2.如权利要求1所述的装置,其中针对每个预测向量存储器访问指令,对其大小选自多个被支持数据值大小的数据值执行存储器传送操作,并且所述固定大小数据块是每个被支持数据值大小的整数倍。
3.如权利要求1所述的装置,其中每个预测跟踪元素具有这样的格式,使得当针对一个预测向量存储器访问指令在数据跟踪流内下发多个预测跟踪元素时,对这些多个预测跟踪元素应用逻辑组合操作标识已经从存储器传送操作中省略的向量的任何通道。
4.如权利要求3所述的装置,其中所述逻辑组合操作是逻辑“或”运算。
5.如权利要求1所述的装置,其中:
跟踪生成电路被布置为下发每个预测跟踪元素作为预测跟踪分组,预测跟踪分组包括将预测跟踪分组与其他类型的跟踪 分组进行区分的头部部分,以及提供预测数据的预测指定部分。
6.如权利要求5所述的装置,其中跟踪生成电路可以访问预测跟踪分组的多种格式,并且跟踪生成电路被布置为应用格式选择标准来确定要在数据跟踪流中下发的每个预测跟踪分组的格式。
7.如权利要求6所述的装置,其中预测跟踪分组的多种格式包括不同数据值大小的格式,并且当应用格式选择准则时,跟踪生成电路被布置为当确定哪个格式的预测追踪分组将被下发时,考虑在预测向量存储器访问指令的执行期间所传送的数据值的大小。
8.如权利要求1所述的装置,其中:
跟踪生成电路被布置为除了数据跟踪流之外还生成指令跟踪流,并且在指令跟踪流内包括由处理电路执行的每个预测向量存储器访问指令的指令跟踪元素,所述指令跟踪元素指定标识符关键字;并且
跟踪生成电路被布置为选择性地指定在数据跟踪流中下发的一个或多个跟踪元素的标识符关键字,以便将所述一个或多个跟踪元素与指令跟踪流中对应的指令跟踪元素相连接。
9.如权利要求8所述的装置,其中:
跟踪生成电路可以访问预测跟踪分组的多种格式,并且跟踪生成电路被布置为应用格式选择标准来确定要在数据跟踪流中下发的每个预测跟踪分组的格式;并且
其中,预测跟踪分组的所述多种格式包括包含标识符关键字部分的格式。
10.如权利要求9所述的装置,其中当无法从数据跟踪流内的先前跟踪元素获得与预测跟踪元素有关的标识符关键字的推断时,跟踪生成电路被布置为选择包含标识符关键字部分的预测跟踪分组的格式。
11.如据权利要求1所述的装置,其中针对每个被执行的预测向量存储器访问指令,跟踪生成电路被布置为在所述数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素具有与其相关联的序列号。
12.如据权利要求11所述的装置,其中当要与地址跟踪元素中的一个相关联的所有数据值占用未对其进行存储器传送操作的通道时,跟踪生成电路被布置为抑制在数据跟踪流中下发该地址跟踪元素及其相关联的序列号。
13.如据权利要求12所述的装置,其中如从至少一个预测跟踪元素确定的,对从存储器传送操作中省略的向量的通道的标识包括对与已经被抑制的地址跟踪元素相关联的至少那些通道的标识。
14.如据权利要求12所述的装置,其中当从存储器传送操作中省略的向量的所有通道与已经被抑制的地址跟踪元素相关联时,跟踪生成电路被布置为抑制至少一个预测跟踪元素的生成。
15.如据权利要求1所述的装置,其中跟踪生成电路进一步被布置为在数据跟踪流内下发与在数据跟踪流中下发的每个地址跟踪元素相关联的数据块跟踪元素,以标识在相关联地址跟踪元素指示的地址处所访问的数据块。
16.如据权利要求2所述的装置,其中固定大小的数据块是32位,并且多个受支持的数据值大小是8位,16位和32位。
17.如据权利要求1所述的装置,其中如果预测向量存储器访问指令的执行被异常中断,跟踪生成电路被布置为在数据跟踪流内下发至少一个预测跟踪元素,以在异常发生之前标识对其进行了存储器传送操作的那些通道,并且在预定向量存储器访问指令恢复之后,跟踪生成电路被布置为在数据跟踪流内下发至少一个预测跟踪元素,以标识对其进行了存储器传送操作的剩余通道。
18.一种装置,包括:
输入接口,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,其中所述多个通道的数量取决于向量内表示的数据值的大小,并且当执行预测向量存储器访问指令时被引用的预测信息用于确定进行了存储器传送操作的通道;
跟踪信息包括包含多个跟踪元素的数据跟踪流,针对每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何,针对每个被执行的预测向量存储器访问指令,该数据跟踪流还包括至少一个预测跟踪元素来标识已经从存储器传送操作中省略的向量的任何通道;
该装置进一步包括:
解压缩电路,用于参考程序映像从跟踪信息中检测所述指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时进行了存储器传送操作的通道。
19.如据权利要求18所述的装置,其中当针对一个预测向量存储器访问指令在数据跟踪流内下发多个预测跟踪元素时,解压缩电路可以被布置为对这些多个预测跟踪元素应用逻辑组合操作,以便标识已经从存储器传送操作中省略的向量的任何通道。
20.如权利要求19所述的装置,其中所述逻辑组合操作是逻辑“或”运算。
21.一种操作跟踪生成电路以生成跟踪流的方法,包括:
从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,其中所述多个通道的数量取决于向量内表示的数据值的大小,并且当执行预测向量存储器访问指令时被引用的预测信息用于确定进行了存储器传送操作的通道;
从执行信息生成包括多个跟踪元素的数据跟踪流包括:
针对每个被执行的预测向量存储器访问指令,在所述数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素为存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管执行存储器访问指令时所访问的数据值的大小如何;
针对每个被执行的预测向量存储器访问指令,在数据跟踪流内下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
22.一种装置,包括:
输入接口装置,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的执行信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,其中所述多个通道的数量取决于向量内表示的数据值的大小,并且当执行预测向量存储器访问指令时被引用的预测信息用于确定进行了存储器传送操作的通道;以及
跟踪生成装置,用于从执行信息生成包括多个跟踪元素的数据跟踪流,对于每个被执行的向量存储器访问指令,跟踪生成电路用于在所述数据跟踪流内下发多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何;
跟踪生成装置,进一步针对每个被执行的预测向量存储器访问指令在数据跟踪流内下发至少一个预测跟踪元素,以标识已经从存储器传送操作中省略的向量的任何通道。
23.一种操作分析电路以处理跟踪流的方法,包括:
从处理电路接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,所述多个通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定进行了存储器传送操作的通道;以及
在跟踪信息内检测包含多个跟踪元素的数据跟踪流,针对每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何,针对每个被执行的预测向量存储器访问指令,该数据跟踪流还包括至少一个预测跟踪元素来标识已经从存储器传送操作中省略的向量的任何通道;以及
参考程序映像从跟踪信息中检测所述指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时进行了存储器传送操作的通道。
24.一种装置,包括:
输入接口装置,用于从处理电路接收指示当执行指令序列时由处理电路执行的操作的跟踪信息,所述序列包括被执行以执行存储器传送操作以便在向量寄存器和存储器中访问的地址之间传送向量的数据值的至少一个预测向量存储器访问指令,向量包括多个通道,其中所述多个通道的数量取决于向量内表示的数据值的大小,以及当执行预测向量存储器访问指令时被引用的预测信息用于确定进行了存储器传送操作的通道;
跟踪信息包括包含多个跟踪元素的数据跟踪流,针对每个被执行的预测向量存储器访问指令,数据跟踪流包括多个地址跟踪元素,每个地址跟踪元素为在存储器中访问的地址提供地址指示,并且每个地址跟踪元素与固定大小的数据块相关联,而不管在执行该预测向量存储器访问指令时所访问的数据值的大小如何,针对每个被执行的预测向量存储器访问指令,该数据跟踪流还包括至少一个预测跟踪元素来标识已经从存储器传送操作中省略的向量的任何通道;
该装置进一步包括:
解压缩装置,用于参考程序映像从跟踪信息中检测所述指令序列内预测向量存储器访问指令的执行,并且参考数据跟踪流内对应的至少一个预测跟踪元素以确定在执行该预测向量存储器访问指令时进行了存储器传送操作的通道。
CN201711351192.0A 2017-01-24 2017-12-15 生成和处理跟踪流的装置和方法 Active CN108345534B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1701183.4 2017-01-24
GB1701183.4A GB2558955B (en) 2017-01-24 2017-01-24 An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions

Publications (2)

Publication Number Publication Date
CN108345534A CN108345534A (zh) 2018-07-31
CN108345534B true CN108345534B (zh) 2023-03-03

Family

ID=58462909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711351192.0A Active CN108345534B (zh) 2017-01-24 2017-12-15 生成和处理跟踪流的装置和方法

Country Status (3)

Country Link
US (1) US10642710B2 (zh)
CN (1) CN108345534B (zh)
GB (1) GB2558955B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2558955B (en) * 2017-01-24 2020-12-23 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions
GB2570512B (en) * 2018-01-30 2020-04-22 Advanced Risc Mach Ltd An apparatus and method for aligning corresponding elements in multiple streams of elements

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809293A (en) * 1994-07-29 1998-09-15 International Business Machines Corporation System and method for program execution tracing within an integrated processor
CA2234493A1 (en) * 1998-04-09 1999-10-09 Pmc-Sierra Ltd. State machine architecture with multiplexed random access memory
CN101082875A (zh) * 2006-05-30 2007-12-05 Arm有限公司 减小在指令跟踪过程中产生的数据流的大小
CN101246449A (zh) * 2008-02-25 2008-08-20 华为技术有限公司 跟踪函数调用轨迹的方法和装置
CN101398782A (zh) * 2007-09-28 2009-04-01 Arm有限公司 产生用于数据处理装置的跟踪流的技术
CN105278920A (zh) * 2014-07-09 2016-01-27 英特尔公司 用于实现具有迭代依赖条件的迭代的向量环路的指令
GB201604943D0 (en) * 2016-03-23 2016-05-04 Advanced Risc Mach Ltd Vector predication instruction

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5113521A (en) * 1988-03-18 1992-05-12 Digital Equipment Corporation Method and apparatus for handling faults of vector instructions causing memory management exceptions
US6536037B1 (en) * 1999-05-27 2003-03-18 Accenture Llp Identification of redundancies and omissions among components of a web based architecture
US7168066B1 (en) * 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7043668B1 (en) * 2001-06-29 2006-05-09 Mips Technologies, Inc. Optimized external trace formats
US7503061B2 (en) * 2003-03-24 2009-03-10 Hewlett-Packard Development Company, L.P. Secure resource access
US7562258B2 (en) * 2006-02-09 2009-07-14 Arm Limited Generation of trace elements within a data processing apparatus
US8055950B2 (en) * 2008-01-11 2011-11-08 Arm Limited Method and apparatus for improved timing for trace synchronization
GB2481380B (en) * 2010-06-21 2018-05-16 Advanced Risc Mach Ltd Correlating trace data streams
WO2013147869A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Apparatus and method for selecting elements of a vector coumputation
US9298456B2 (en) * 2012-08-21 2016-03-29 Apple Inc. Mechanism for performing speculative predicated instructions
US20140075163A1 (en) * 2012-09-07 2014-03-13 Paul N. Loewenstein Load-monitor mwait
US9367309B2 (en) * 2013-09-24 2016-06-14 Apple Inc. Predicate attribute tracker
US9323525B2 (en) * 2014-02-26 2016-04-26 Intel Corporation Monitoring vector lane duty cycle for dynamic optimization
US9396056B2 (en) * 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression
US9672298B2 (en) * 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
US9715432B2 (en) * 2014-12-23 2017-07-25 Intel Corporation Memory fault suppression via re-execution and hardware FSM
GB2539657B (en) * 2015-06-22 2018-03-07 Advanced Risc Mach Ltd Tracing Processing Activity
US11977891B2 (en) * 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10936316B2 (en) * 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10089110B2 (en) * 2016-07-02 2018-10-02 Intel Corporation Systems, apparatuses, and methods for cumulative product
GB2558955B (en) * 2017-01-24 2020-12-23 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions
US10120813B2 (en) * 2017-03-08 2018-11-06 Arm Limited Address translation
US11194693B2 (en) * 2017-09-21 2021-12-07 Arm Limited Trace data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809293A (en) * 1994-07-29 1998-09-15 International Business Machines Corporation System and method for program execution tracing within an integrated processor
CA2234493A1 (en) * 1998-04-09 1999-10-09 Pmc-Sierra Ltd. State machine architecture with multiplexed random access memory
CN101082875A (zh) * 2006-05-30 2007-12-05 Arm有限公司 减小在指令跟踪过程中产生的数据流的大小
CN101398782A (zh) * 2007-09-28 2009-04-01 Arm有限公司 产生用于数据处理装置的跟踪流的技术
CN101246449A (zh) * 2008-02-25 2008-08-20 华为技术有限公司 跟踪函数调用轨迹的方法和装置
CN105278920A (zh) * 2014-07-09 2016-01-27 英特尔公司 用于实现具有迭代依赖条件的迭代的向量环路的指令
GB201604943D0 (en) * 2016-03-23 2016-05-04 Advanced Risc Mach Ltd Vector predication instruction

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ARM寻址方式及相关指令汇总;southcamel;《https://blog.csdn.net/southcamel/article/details/9262547》;20130707;全文 *
SIMD自动向量识别及代码调优技术研究;姚远;《解放军信息工程大学 博士学位论文》;20130615;全文 *

Also Published As

Publication number Publication date
US20180210805A1 (en) 2018-07-26
GB2558955B (en) 2020-12-23
CN108345534A (zh) 2018-07-31
GB201701183D0 (en) 2017-03-08
US10642710B2 (en) 2020-05-05
GB2558955A (en) 2018-07-25

Similar Documents

Publication Publication Date Title
EP2873983B1 (en) Trace-data processing and profiling device
US7334161B2 (en) Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
JP6807383B2 (ja) 転送プレフィックス命令
US7725687B2 (en) Register file bypass with optional results storage and separate predication register file in a VLIW processor
US9239735B2 (en) Compiler-control method for load speculation in a statically scheduled microprocessor
US9292291B2 (en) Instruction merging optimization
US9208066B1 (en) Run-time code parallelization with approximate monitoring of instruction sequences
CN108780397B (zh) 程序循环控制
US9135015B1 (en) Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
CN108885549B (zh) 分支指令
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
US20030005423A1 (en) Hardware assisted dynamic optimization of program execution
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP2016536665A (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
CN108345534B (zh) 生成和处理跟踪流的装置和方法
US9817763B2 (en) Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products
US10558462B2 (en) Apparatus and method for storing source operands for operations
KR20200090103A (ko) 분기 예측기
EP3368974A1 (en) Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers
CN115562725A (zh) 指令融合方法、处理器、计算机系统及存储介质
US11550574B2 (en) Generating a vector predicate summary
JP7377208B2 (ja) データ処理
JP2002014868A (ja) メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
EP2348400A1 (en) Arithmetic processor, information processor, and pipeline control method of arithmetic processor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant