CN108694109A - 同步硬件事件收集 - Google Patents
同步硬件事件收集 Download PDFInfo
- Publication number
- CN108694109A CN108694109A CN201711292833.XA CN201711292833A CN108694109A CN 108694109 A CN108694109 A CN 108694109A CN 201711292833 A CN201711292833 A CN 201711292833A CN 108694109 A CN108694109 A CN 108694109A
- Authority
- CN
- China
- Prior art keywords
- tracking
- event
- data
- hardware
- program code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3072—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Testing And Monitoring For Control Systems (AREA)
Abstract
本申请涉及同步硬件事件收集。一种计算机实现的方法,其包括监视由第一和第二处理器组件进行的程序代码的执行。一种计算系统通过以下步骤检测满足触发条件:i)识别程序代码的一部分中的操作数;或者ii)确定计算系统的时钟的当前时间指示预定义时间值。操作数和预定义时间值被用于发起跟踪事件。当满足触发条件时,系统发起跟踪事件,该跟踪事件生成跟踪数据,其识别跨计算系统发生的相应硬件事件。系统使用该跟踪数据来生成关联的跟踪数据集。关联的跟踪数据指示相应硬件事件的按时间排序的序列。系统使用关联的跟踪数据集来分析执行程序代码的性能。
Description
技术领域
本说明书涉及分析程序代码的执行。
背景技术
在分布式硬件组件内执行的分布式软件的有效性能分析可能是一项复杂的任务。分布式硬件组件能够是两个或两个以上中央处理单元(CPU)(或者图形处理单元(GPU))的相应处理器核,它们协作并交互以执行较大软件程序或程序代码的部分。
从硬件角度(例如,在CPU或GPU内),通常存在两种类型的可应用于性能分析的信息或特征:1)硬件性能计数器;以及2)硬件事件跟踪。
发明内容
一般而言,本说明书中描述的主题的一个创新方面能够被包含在一种由一个或多个处理器执行的计算机实现的方法中,该方法包括:监视由第一处理器组件进行的程序代码的执行,第一处理器组件被配置成执行该程序代码的至少第一部分;以及监视由第二处理器组件进行的该程序代码的执行,第二处理器组件被配置成执行该程序代码的至少第二部分。
该方法进一步包括:由计算系统基于以下至少一个检测满足触发条件:i)识别在至少该程序代码的第一部分或者该程序代码的第二部分中出现操作数,该操作数包括用于发起一个或多个跟踪事件的第一参数值,或者ii)确定计算系统的至少一个时钟的当前时间指示用于发起一个或多个跟踪事件的预定义时间值。
响应于检测到满足触发条件,该方法包括:由计算系统发起至少第一跟踪事件,其生成跟踪数据,该跟踪数据识别跨分布式处理器单元发生的相应硬件事件,所述分布式处理器单元至少包括第一处理器组件和第二处理器组件。对于所述相应硬件事件中的每个硬件事件,该跟踪数据包括至少一个硬件事件时间戳。该方法进一步包括:由计算系统使用该跟踪数据来生成关联的跟踪数据集,其指示当满足触发条件时生成的相应硬件事件的至少按时间排序的序列。
这些及其他实施方式能够各自可选地包括以下特征中的一个或多个。例如,在一些实施方式中,第一跟踪事件是同步的跟踪事件,其生成识别跨所述分布式处理器单元发生的硬件事件的跟踪数据,该跟踪数据还识别相应硬件事件的唯一跟踪标识符,以及其中,所述硬件事件包括多个同步的硬件事件,并且当两个硬件事件共享全局硬件事件时间戳时,所述两个硬件事件被同步化。
在一些实施方式中,检测满足触发条件包括:由计算系统检测以下之一:i)操作数的第一参数值超过寄存器的第一界限值,或者ii)由当前时间指示的预定义时间值超过寄存器的第一界限值;以及响应于检测到满足触发条件,由计算系统发起生成跟踪数据的第二跟踪事件,其中,该跟踪数据识别在跨所述分布式处理器单元发生的相应硬件事件之间共享的至少一个属性。
在一些实施方式中,该方法进一步包括:由计算系统检测以下之一:操作数的第二参数值超过寄存器的第二界限值,或者由当前时间指示的第二预定义时间值超过寄存器的第二界限值;以及响应于该检测,当操作数的第二参数值超过第二界限值时、或者当第二预定义时间值超过第二界限值时,由计算系统停止所述第二跟踪事件。
在一些实施方式中,操作数进一步包括以下至少一个:指示程序代码的特定序列步骤的参数;或者指示分布式处理器单元的特定性能状态的全局控制参数;并且预定义时间值包括以下至少一个:由所述分布式处理器单元的全局时钟指示的特定时间值;或者与全局时钟相关联的预定义时间窗口的特定时间值。
在一些实施方式中,操作数具有第一二进制数据结构,并且第一操作数的第一参数值对应于跟踪标记,预定义时间值具有第二二进制数据结构,并且当前时间由全局时钟来指示,以及其中,全局时钟由所述分布式处理器单元用于生成一个或多个硬件事件时间戳。
在一些实施方式中,该方法进一步包括:由计算系统的编译器将触发条件的操作数插入由第一处理器组件执行的程序代码的至少第一部分;以及由计算系统的编译器将触发条件的至少一个预定义时间值插入由第二处理器组件执行的程序代码的至少第二部分。
在一些实施方式中,发起第一跟踪事件或者第二跟踪事件中的至少一个包括:由计算系统生成由第一处理器核的第一计数寄存器接收的第一控制信号,第一控制信号使得与第一硬件事件相关联的数据被存储在第一计数寄存器中;以及由计算系统生成由第二处理器核的第二计数寄存器接收的第二控制信号,第二控制信号使得与第二硬件事件相关联的数据被存储在第二计数寄存器中。
在一些实施方式中,与第一硬件事件或者第二硬件事件中的一个相关联的数据包括以下至少一个:写入所述分布式处理器单元中的特定处理器核的特定存储器缓冲区的字节数;或者由所述分布式处理器单元中的特定处理器核执行的指令数。
在一些实施方式中,该方法进一步包括:由计算系统识别在由第一或第二处理器组件执行的程序代码的至少一部分中出现第二操作数,第二操作数包括第二参数值;由计算系统基于第二操作数的第二参数值超过寄存器的特定界限值或者低于寄存器的特定界限值来确定满足过滤条件;以及响应于确定满足过滤条件,由计算系统过滤一个或多个跟踪事件,其中,过滤一个或多个跟踪事件包括排除与一个或多个硬件事件相关联的跟踪数据的存储。
本说明书中所述的主题的另一个创新方面能够被体现成一种硬件事件收集系统,包括:一个或多个处理器,包括一个或多个处理器核;一个或多个机器可读的存储单元,用于存储指令,指令可由一个或多个处理器执行以执行操作,包括:监视由第一处理器组件进行的程序代码的执行,第一处理器组件被配置成执行该程序代码的至少第一部分;以及监视由第二处理器组件进行的该程序代码的执行,第二处理器组件被配置成执行该程序代码的至少第二部分。
该方法进一步包括:由计算系统基于以下至少一个,检测满足触发条件:i)识别在至少该程序代码的第一部分或者该程序代码的第二部分中出现操作数,该操作数包括用于发起一个或多个跟踪事件的第一参数值,或者ii)确定计算系统的至少一个时钟的当前时间指示用于发起一个或多个跟踪事件的预定义时间值。
响应于检测到满足触发条件,该方法包括:由计算系统发起至少第一跟踪事件,其生成跟踪数据,该跟踪数据识别跨分布式处理器单元发生的相应硬件事件,所述分布式处理器单元至少包括第一处理器组件和第二处理器组件。对于相应硬件事件中的每个硬件事件,该跟踪数据包括至少一个硬件事件时间戳。该方法进一步包括:由计算系统使用该跟踪数据来生成关联的跟踪数据集,其指示当满足触发条件时生成的相应硬件事件的至少按时间排序的序列。
一般而言,本说明书中所述的主题的一个创新方面能够被包含在一种由一个或多个处理器执行的计算机实现的方法中,该方法包括:监视由处理器组件进行的程序代码的执行,该处理器组件被配置成执行该程序代码的至少第一部分。
该方法进一步包括:由计算系统基于以下至少一个检测满足触发条件:i)识别程序代码的至少第一部分中出现操作数,该操作数包括用于发起一个或多个跟踪事件的第一参数值,或者ii)确定计算系统的至少一个时钟的当前时间指示用于发起所述一个或多个跟踪事件的预定义时间值。
响应于检测到满足触发条件,该方法进一步包括:由计算系统生成由处理器组件的计数寄存器接收的控制信号,该控制信号使得与硬件事件相关联的计数数据被存储在计数寄存器中;以及由计算系统生成指示与执行程序代码相关联的一个或多个性能属性的数据结构,该数据结构基于所存储的计数数据的一个或多个计数参数来生成。
这些及其他实施方式能够各自可选地包括以下特征中的一个或多个。例如,在一些实施方式中,计数寄存器是配置成存储关于计算系统的一个或多个处理器组件的性能的计数数据的多个性能计数器中的一个,以及其中,至少一个性能计数器包括以下之一:活动计数器、停顿计数器、统计计数器或者采样计数器。
在一些实施方式中,一个或多个计数参数指示以下之一:i)由特定处理器组件接收的指令数;ii)由特定处理器组件处理的指令数;iii)由特定处理器组件执行的指令数;或者iv)由特定处理器组件执行的存储器读取数或者存储器写入数。
在一些实施方式中,与执行程序代码相关联的性能属性包括以下之一:i)执行该程序代码的特定处理器组件的停顿频率;ii)该特定处理器组件的利用率低于阈值利用率的指示;或者iii)由该特定处理器组件使用的数据存储队列处于或低于队列占用阈值的指示。
该方面和其他方面的其他实施方式包括配置成执行编码在计算机存储设备上的方法的动作的对应的系统、装置和计算机程序。一个或多个计算机的系统能够借助安装在系统上的软件、固件、硬件或其组合而被配置成在操作中使得系统执行动作。一个或多个计算机程序能够借助具有指令而被配置成当由数据处理装置执行时使得装置执行动作。
本说明书中描述的主题能够被实施成特定实施例,以便实现以下优点中的一个或多个。所描述的硬件跟踪系统通过使用通过硬件旋钮/特征执行的动态触发条件来提高计算效率。这些触发条件能够部分地基于全局时间计数器、嵌入式逻辑操作数和硬件寄存器来同步捕捉事件,而并非纯粹通过编码序列,这通常需要系统资源来监视和执行事件捕捉。
同样地,当硬件触发被调谐成捕捉短期事件以及同时发生的同步全局捕捉而非无关的低效事件捕捉时,系统存储器的使用得以优化。对短期同步事件捕捉的控制会缓解信息超载,由此使得一些存储器资源保持未使用并且可用于其他系统进程。
在附图以及下面的描述中阐明在本说明书中描述的主题的一个或多个实施方式的细节。参阅说明书、附图和权利要求,主题的其他潜在特征、方面和优势将显而易见。
附图说明
图1图示出用于分布式硬件跟踪的示例计算机系统的框图。
图2图示出用于分布式硬件跟踪的示例计算系统的跟踪链和相应节点的框图。
图3图示出示例跟踪复用器设计架构和示例数据结构的框图。
图4是指示由用于分布式硬件跟踪的示例计算系统执行的直接存储器存取跟踪事件的跟踪活动的框图。
图5图示出全局时间计数器(GTC)的示例数据结构以及由用于分布式硬件跟踪的示例计算系统指示GTC的使用情形的表。
图6图示出示例时间计数器以及与用于分布式硬件跟踪的示例计算系统的组件相关联的硬件特征的框图。
图7是用于分布式硬件跟踪的示例过程的过程流程图。
各图中相似的附图标号和标记指示相似的元素。
具体实施方式
本说明书中所述的主题大体上涉及分布式硬件跟踪。特别地,计算系统监视由第一处理器核进行的程序代码的执行以及由第二处理器核进行的程序代码的执行。计算系统将硬件事件的时间线存储在存储器缓冲区中。所存储的事件遍及至少包括第一和第二处理器核的分布式处理器单元发生。
对于硬件事件中的每个,时间线包括表征硬件事件的事件时间戳和元数据。系统生成包括来自时间线的硬件事件的数据结构。系统将该数据结构存储在主机(host)设备的存储库中,并且使用该数据结构来评估由第一或第二处理器核执行的程序代码的性能。在该事件跟踪的场境中,本说明书描述分布式计算系统中的硬件事件跟踪的方法,如图1至图4所示。
本说明书进一步描述基于一个或多个触发机制的同步硬件事件收集的方法,如图5至图7所示。如下详述,本说明书中所述的计算系统的多个方面至少涉及协调/同步收集跟踪数据和事件计数。特别地,至少一个方面包括用于在独立和分布式系统内同步收集硬件性能计数器数据和跟踪事件数据的系统和方法。同步事件收集增强对分布式程序代码的性能数据和调试数据的分析。增强分析部分地通过响应于由系统100分析的所连接的软件组件/模块的执行而发生的事件的关联来实现。
图1图示出用于分布式硬件跟踪的示例计算机系统100的框图。如本说明书中所用,分布式硬件系统跟踪对应于存储在示例处理器微芯片的组件和子组件内发生的事件。另外,如本文中所用,分布式硬件系统(或者跟踪系统)对应于处理器微芯片的集合,它们协作执行配置用于处理器微芯片的集合之间的分布式执行的软件/程序代码的相应部分。在一些实施方式中,系统100的不同处理器芯片能够形成分布式硬件系统的相应节点。在替选实施方式中,单个处理器芯片能够包括一个或多个处理器核和硬件特征,它们能够各自形成处理器芯片的相应节点。
例如,在中央处理单元(CPU)的场境中,处理器芯片能够包括至少两个节点,并且每个节点能够是CPU的相应核。替选地,在图形处理器单元(GPU)的场境中,处理器芯片能够包括至少两个节点,并且每个节点能够是GPU的相应流式多处理器。计算系统100能够包括多个处理器组件。在一些实施方式中,处理器组件能够是处理器芯片、处理器核、存储器存取引擎或者整体计算系统100的至少一个硬件组件中的至少一个。
在一些实例中,诸如处理器核的处理器组件能够是配置成基于执行程序代码的至少一个发出指令执行至少一个特定操作的固定功能组件。在其他实例中,诸如存储器存取引擎(MAE)的处理器组件能够被配置成以比由系统100的其他处理器组件执行的程序代码更低级别的细节或粒度来执行程序代码。
例如,由处理器核执行的程序代码能够促使生成MAE描述符并且将其传送/发送到MAE。在接收到描述符之后,MAE能够基于MAE描述符来执行数据传送操作。在一些实施方式中,由MAE执行的数据传送能够例如包括经由系统的某些数据路径或者接口组件往返于系统100的某些组件来移动数据,或者向系统100的示例配置总线发出数据请求。
在一些实施方式中,系统100的示例性处理器芯片的每个张量节点能够具有至少两个“前端”,它们能够是处理程序指令的硬件块/特征。如下详述,第一前端能够对应于第一处理器核104,而第二前端能够对应于第二处理器核106。因此,在本文中也可以将第一和第二处理器核描述为第一前端104和第二前端106。
如本说明书中所用,跟踪链能够是特定物理数据通信总线,跟踪条目被放在该特定物理数据通信总线上以传输到系统100内的示例芯片管理器。所接收的跟踪条目能够是包括多个字节和多个二进制值或数位的数据字/结构。因此,描述符“字”指示能够由示例处理器核的硬件设备作为一个单元处理的固定大小的二进制数据片。
在一些实施方式中,分布式硬件跟踪系统的处理器芯片是多核处理器(即,具有多个核),它们各自在芯片的相应核中执行程序代码的部分。在一些实施方式中,程序代码的部分能够对应于用于示例多层神经网络的推理工作负载的矢量化计算。而在替选实施方式中,程序代码的部分能够大体上对应于与常规编程语言相关联的软件模块。
计算系统100大体上包括节点管理器102、第一处理器核(FPC)104、第二处理器核(SPC)106、节点组织结构(NF)110、数据路由器112和主机接口块(HIB)114。在一些实施方式中,系统100能够包括配置成执行信号切换、复用和解复用功能的存储器复用器108。系统100进一步包括张量核116,其包括布置于其中的FPC 104。张量核116能够是配置成对多维数据阵列执行矢量化计算的示例计算设备。张量核116能够包括与矩阵单元(MXU)120、转置单元(XU)122以及归约和置换单元(RPU)124相交互的矢量处理单元(VPU)118。在一些实施方式中,计算系统100能够包括常规CPU或GPU的一个或多个执行单元,诸如加载/存储单元、算术逻辑单元(ALU)和矢量单元。
系统100的组件总体上包括大的硬件性能计数器集合并且支持有助于在组件内完成跟踪活动的硬件。如下更详细地描述,由系统100的相应处理器核执行的程序代码能够包括用于在代码执行期间同时启用多个性能计数器的嵌入式触发条件。一般而言,检测到的触发条件促使针对一个或多个跟踪事件生成跟踪数据。跟踪数据能够对应于存储在计数器中并且能够经分析来辨别程序代码的性能特征的增量参数计数。相应跟踪事件的数据能够被存储在示例存储介质(例如,硬件缓冲区)中并且能够包括响应于检测到触发条件而生成的时间戳。
另外,能够针对在系统100的硬件组件内发生的多种事件生成跟踪数据。示例事件能够包括节点间和跨节点通信操作,诸如直接存储器存取(DMA)操作和同步标志更新(均在下文详细描述)。在一些实施方式中,系统100能够包括全局同步时间戳计数器,其通常被称为全局时间计数器(“GTC”)。在其他实施方式中,系统100能够包括其他类型的全局时钟,诸如Lamport时钟。
GTC能够被用于程序代码执行与在分布式处理环境中执行的软件/程序代码的性能的精确关联。此外,部分地与GTC有关,在一些实施方式中,系统100能够包括由分布式软件程序用于以高度协调的方式在分布式系统中开始和停止数据跟踪的一个或多个触发机制。
在一些实施方式中,主机系统126编译程序代码,其能够包括嵌入式操作数,嵌入式操作数在检测时触发以引起与硬件事件相关联的跟踪数据的捕捉和存储。在一些实施方式中,主机系统126将编译的程序代码提供给系统100的一个或多个处理器芯片。在替选实施方式中,程序代码能够通过示例外部编译器来编译(用嵌入式触发)并且被加载到系统100的一个或多个处理器芯片。在一些实例中,编译器能够设置与嵌入软件指令的部分中的某些触发条件相关联的一个或多个跟踪位(下文描述)。经编译的程序代码能够是由系统100的一个或多个组件执行的分布式软件程序。
主机系统126能够包括配置成监视由系统100的一个或多个组件执行程序代码的监视引擎128。在一些实施方式中,监视引擎128使得主机系统126能够监视至少由FPC 104和SPC 106进行的程序代码的执行。例如,在代码执行期间,至少通过基于所生成的跟踪数据来接收硬件事件的周期时间线,主机系统126能够经由监视引擎128监视执行代码的性能。虽然针对主机系统126示出单个框,但在一些实施方式中,系统126能够包括与系统100的多个处理器芯片或者芯片核相关联的多个主机(或者主机子系统)。
在其他实施方式中,涉及至少三个处理器核的跨节点通信可以促使主机系统126在数据业务遍历在FPC 104与示例第三处理器核/节点之间的通信路径时监视一个或多个中间“跳”的数据业务。例如,FPC104和第三处理器核可以是在给定时间段执行程序代码的唯一核。因此,在从FPC 104向第三处理器核传送数据时,从FPC 104到第三处理器核的数据传送能够在SPC 106处生成中间跳的跟踪数据。换言之,在系统100中的数据路由期间,从第一处理器芯片去往第三处理器芯片的数据可能需要遍历第二处理器芯片,因此数据路由操作的执行可能导致为第二芯片中的路由活动生成跟踪条目。
在执行编译的程序代码后,系统100的组件能够进行交互以生成在分布式计算机系统中发生的硬件事件的时间线。硬件事件能够包括节点内和跨节点通信事件。下面参照图2更详细地描述分布式硬件系统的示例节点及其相关联的通信。在一些实施方式中,生成数据结构,其识别用于至少一个硬件事件时间线的硬件事件的集合。时间线能够重建在分布式系统中发生的事件。在一些实施方式中,事件重建能够包括基于对特定事件发生期间所生成的时间戳的分析来校正事件排序。
一般而言,示例分布式硬件跟踪系统能够包括系统100的上述组件以及与主机系统126相关联的至少一个主机控制器。当事件数据例如以时间顺序或排序方式关联时,从分布式跟踪系统获得的数据的性能或调试可能有益。在一些实施方式中,当与所连接的软件模块相对应的多个存储的硬件事件被存储并且然后针对主机系统126的结构化分析来排序时,能够发生数据关联。对于包括多个主机系统的实施方式,可以例如由主机控制器执行经由不同主机所获得的数据的关联。
在一些实施方式中,FPC 104和SPC 106均是一个多核处理器芯片的不同核;而在其他实施方式中,FPC 104和SPC 106分别是不同多核处理器芯片的核。如上所指,系统100能够包括至少具有FPC 104和SPC 106的分布式处理器单元。在一些实施方式中,系统100的分布式处理器单元能够包括配置成执行较大分布式软件程序或者程序代码的至少一部分的一个或多个硬件或软件组件。
数据路由器112是在系统100的组件之间提供数据通信路径的芯片间互连(ICI)。特别地,路由器112能够提供FPC 104与SPC 106之间以及与核104、106相关联的相应组件之间的通信耦合或连接。节点组织结构110与数据路由器112相交互以在系统100的分布式硬件组件和子组件内移动数据包。
节点管理器102是管理多节点处理器芯片中的低级节点功能的高级设备。如下详述,处理器芯片的一个或多个节点能够包括由节点管理器102控制的芯片管理器,用以管理和存储局部条目日志中的硬件事件数据。存储器复用器108是能够对提供给示例外部高带宽存储器(HBM)的数据信号或者从外部HBM接收的数据信号执行切换、复用和解复用操作的复用设备。
在一些实施方式中,当复用器108在FPC 104与SPC 106之间进行切换时,通过复用器108能够生成示例跟踪条目(如下所述)。存储器复用器108能够潜在地影响不能访问复用器108的特定处理器核104、106的性能。因此,由复用器108生成的跟踪条目数据能够有助于理解产生的与相应核104、106相关联的某些系统活动的延时尖峰。在一些实施方式中,在复用器108内发起的硬件事件数据(例如,下文所述的跟踪点)能够在示例硬件事件时间线上与节点组织结构110的事件数据一起分组。当某些跟踪活动致使多个硬件组件的事件数据被存储在示例硬件缓冲区(例如,下文所述的跟踪条目日志218)中时,能够发生事件分组。
在系统100中,性能分析硬件包含FPC 104、SPC 106、复用器108、节点组织结构110、数据路由器112和HIB 114。这些硬件组件或者单元中的每一个均包括硬件性能计数器以及硬件事件跟踪条件和功能。在一些实施方式中,VPU 118、MXU 120、XU 122和RPU 124不包括其自身的专用性能硬件。相反,在这种实施方式中,FPC 104能够被配置成为VPU 118、MXU 120、XU 122和RPU 124提供必要的计数器。
VPU 118能够包括内部设计架构,其支持与示例矩阵矢量处理器的矢量元素相关联的局部高带宽数据处理和算术运算。MXU 120是配置成例如对被乘数的矢量数据集执行多达128×128矩阵乘法的矩阵乘法单元。
XU 122是配置成例如对与矩阵乘法运算相关联的矢量数据执行多达128×128矩阵转置运算的转置单元。RPU 124能够包括西格玛(sigma)单元和置换单元。西格玛单元对与矩阵乘法运算相关联的矢量数据执行顺序归约。归约能够包括求和以及各种类型的比较运算。置换单元能够完全置换或者复制与矩阵乘法运算相关联的矢量数据的所有元素。
在一些实施方式中,由系统100的组件执行的程序代码能够表示机器学习、神经网络推理计算和/或一个或多个直接存储器存取功能。系统100的组件能够被配置成执行一个或多个软件程序,包括促使系统的处理单元或设备执行一个或多个功能的指令。术语“组件”旨在包括任何数据处理设备或者存储设备,诸如控制状态寄存器,或者能够处理和存储数据的任何其他设备。
系统100能够一般包括多个处理单元或设备,其能够包括一个或多个处理器(例如,微处理器或者中央处理单元(CPU))、图形处理单元(GPU)、专用集成电路(ASIC)或者不同处理器的组合。在替选实施例中,系统100能够各自包括提供用于执行与本说明书中所述的硬件跟踪功能相关的计算的附加处理选项的其他计算资源/设备(例如,基于云的服务器)。
处理单元或设备能够进一步包括一个或多个存储器单元或者存储库(例如,寄存器/计数器)。在一些实施方式中,处理单元对系统100的设备执行存储在存储器中的编程的指令,以本说明书中所述的一个或多个功能。存储器单元/存储库能够包括一个或多个非暂时性机器可读存储介质。非暂时性机器可读存储介质能够包括固态存储器、磁盘和光盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(例如,EPROM、EEPROM或快闪存储器)或者能够存储信息的任何其他有形介质。
图2图示出由系统100执行的用于分布式硬件跟踪的示例跟踪链和相应示例节点200、201的框图。在一些实施方式中,系统100的节点200、201能够是单个多核处理器内的不同节点。在其他实施方式中,节点200能够是第一多核处理器芯片中的第一节点,并且节点201能够是第二多核处理器芯片中的第二节点。
虽然在图2的实施方式中描绘出两个节点,但在替选实施方式中,系统100能够包括多个节点。对于涉及多个节点的实施方式,跨节点数据传送能够沿着遍历多个节点的示例数据路径在中间跳生成跟踪数据。例如,中间跳能够对应于通过特定数据传送路径中的不同节点的数据传送。在一些实例中,针对通过一个或多个节点的跨节点数据传送期间出现的一个或多个中间跳,能够生成与ICI跟踪/硬件事件相关联的跟踪数据。
在一些实施方式中,节点0和节点1是用于与用于推理工作负载的程序代码的部分相关联的矢量化计算的张量节点。如本说明书中所用,张量是多维几何对象,并且示例多维几何对象包括矩阵和数据阵列。
如图2的实施方式所示,节点200包括与系统100的组件的至少一个子集相交互的跟踪链203。同样地,节点201包括与系统100的组件的至少一个子集相交互的跟踪链205。在一些实施方式中,节点200、201是组件的相同子集的示例节点,而在其他实施方式中,节点200、201是不同组件子集的相应节点。数据路由器/ICI 112包括跟踪链207,其通常与跟踪链203和205会聚,以将跟踪数据提供给芯片管理器216。
在图2的实施方式中,节点200、201能够各自包括至少具有FPC104、SPC 106、节点组织结构110和HIB 114的相应组件子集。节点200、201的每个组件包括配置成将由节点的特定组件生成的跟踪点(如下所述)分组的一个或多个跟踪复用器。FPC 104包括跟踪复用器204,节点组织结构110包括跟踪复用器210a/b,SPC 106包括跟踪复用器206a/b/c/d,HIB214包括跟踪复用器214,并且ICI 212包括跟踪复用器212。在一些实施方式中,每个跟踪复用器的跟踪控制寄存器允许启用和禁用单独的跟踪点。在一些实例中,对于一个或多个跟踪复用器,它们对应的跟踪控制寄存器能够包括单独的启用位和更广泛的跟踪复用器控制。
一般而言,跟踪控制寄存器能够是接收和存储跟踪指令数据的常规控制状态寄存器(CSR)。关于更广泛的跟踪复用器控制,在一些实施方式中,能够基于由系统100执行的CSR写入来启用和禁用跟踪。在一些实施方式中,基于全局时间计数器(GTC)的值,基于FPC104(或者核116)中的示例跟踪标记寄存器的值,或者基于SPC 106中的示例跟踪标记寄存器的值,通过系统100动态地开始和停止跟踪。
参照图5至图7的实施方式,更详细地描述与用于动态地开始和停止跟踪活动以及同步硬件事件收集的系统和方法相关的补充细节和描述。
在一些实施方式中,对于核116,FPC 104能够使用跟踪控制参数来定义与在核116内发生的事件活动相关联的跟踪窗口。跟踪控制参数允许根据GTC的下界和上界以及跟踪标记寄存器的下界和上界来定义跟踪窗口。
在一些实施方式中,系统100能够包括能够减少生成的跟踪条目的数目的功能,诸如跟踪事件过滤特征。例如,FPC 104和SPC 106能够各自包括限制每个核在示例生成的跟踪描述符(如下所述)中设置跟踪位的速率的过滤特征。HIB 114能够包括类似的过滤特征,诸如限制与捕捉某些DMA跟踪事件相关联的跟踪位的示例DMA速率限制器。此外,HIB 114能够包括用于限制哪些队列发起DMA跟踪条目的控制(例如,经由启用位)。
在一些实施方式中,用于DMA操作的描述符能够具有由主机系统126的示例编译器设置的跟踪位。当设置跟踪位时,使用确定并生成跟踪数据的硬件特征/旋钮来完成示例跟踪事件。在一些实例中,DMA中的最终跟踪位能够是由编译器静态插入的跟踪位与由特定硬件组件动态确定的跟踪位之间的逻辑或运算。因此,在一些实例中,除过滤之外,编译器生成的跟踪位还能够提供减少生成的跟踪数据的总量的机制。
例如,主机系统126的编译器可以决定仅设置一个或多个远程DMA操作(例如,跨至少两个节点的DMA)的跟踪位并且清除一个或多个局部DMA操作(例如,诸如节点200的特定张量节点内的DMA)的跟踪位。通过这种方式,基于跟踪活动限于跨节点(即,远程)DMA操作,而非包括跨节点和局部DMA操作的跟踪活动,可以减少生成的跟踪数据量。
在一些实施方式中,由系统100发起的至少一个跟踪事件能够与包括跨系统100发生的多个中间操作的存储器存取操作相关联。用于存储器存取操作的描述符(例如,MAE描述符)能够包括使得与多个中间操作相关联的数据被存储在一个或多个存储器缓冲区中的跟踪位。因此,当数据包遍历系统100时,跟踪位能够被用于“标记”中间存储器操作并且在DMA操作的中间跳生成多个跟踪事件。
在一些实施方式中,ICI 112能够包括一组启用位和一组包过滤器,它们为节点200、201的特定组件的每个入口和出口端口提供控制功能。这些启用位和包过滤器允许ICI112启用和禁用与节点200、201的特定组件相关联的跟踪点。除启用和禁用跟踪点之外,ICI112能够被配置成基于事件源、事件目的地和跟踪事件包类型来过滤跟踪数据。
在一些实施方式中,除使用GTC或者跟踪标记之外,处理器核104、106和HIB 114的每个跟踪控制寄存器还能够包括“每个人”跟踪模式。该“每个人”跟踪模式能够使得跨整个处理器芯片的跟踪能够由跟踪复用器204或者跟踪复用器206a控制。而在每个人跟踪模式下,跟踪复用器204和206a能够发送“窗口内”跟踪控制信号,其指定这个特定跟踪复用器(复用器204或者复用器206a)是否在跟踪窗口内。
窗口内跟踪控制信号能够以广播或通用方式发送到全部其他跟踪复用器,例如,在处理器芯片内或者跨多个处理器芯片。当复用器204或者复用器206a正执行跟踪活动时,向其他跟踪复用器的广播能够促使启用全部跟踪。在一些实施方式中,与处理器核104、106和HIB 114相关联的跟踪复用器各自包括跟踪窗口控制寄存器,其指定何时和/或如何生成“每个人跟踪”控制信号。
在一些实施方式中,跟踪复用器210a/b和跟踪复用器212中的跟踪活动大体上基于是在用于DMA操作的数据字中还是在遍历ICI/数据路由器112的控制消息中设置跟踪位来启用。DMA操作或者控制消息能够是固定大小的二进制数据结构,其能够具有基于某些情况或者软件条件设置的在二进制数据包内的跟踪位。
例如,当在具有跟踪型DMA指令的FPC104(或者SPC 106)中发起DMA操作并且发起器(处理器核104或106)处于跟踪窗口内时,将在该特定DMA中设置跟踪位。在另一个示例中,对于FPC 104,如果FPC 104处于跟踪窗口内并且启用了导致跟踪数据被存储的跟踪点,则用于数据写入到系统100内的另一个组件的控制消息将完成跟踪位设置。
在一些实施方式中,零长度DMA操作提供系统100内更广泛的DMA实施方式的示例。例如,一些DMA操作能够在系统100内产生非DMA活动。还能够跟踪非DMA活动的执行(例如,生成跟踪数据),好像非DMA活动就是DMA操作(例如,包括非零长度操作的DMA活动)。例如,在源位置发起但没有要发送或传送的任何数据(例如,零长度)的DMA操作能够代之向目的地位置发送控制消息。控制消息将指示在目的地没有要接收或处理的数据,并且控制消息本身会被系统100跟踪,因为非零长度DMA操作会被跟踪。
在一些实例中,对于SPC 106,零长度DMA操作能够生成控制消息,并且只有在DMA已完成跟踪位设置时,即,使得控制消息不具有零长度时,才能设置与消息相关联的跟踪位。一般而言,如果HIB 114处于跟踪窗口内,则从主机系统126发起的DMA操作将完成跟踪位设置。
在图2的实施方式中,跟踪链203接收与节点0对齐的组件子集的跟踪条目数据,而跟踪链205接收与节点1对齐的组件子集的跟踪条目数据。每个跟踪链203、205、207是由相应节点200、201和ICI 112使用的不同数据通信路径,用以向芯片管理器216的示例跟踪条目数据日志218提供跟踪条目数据。因此,跟踪链203、205、207的端点是芯片管理器216,在此能够将跟踪事件存储在示例存储器单元中。
在一些实施方式中,芯片管理器216的至少一个存储器单元能够是128位宽并且能够具有至少20,000个跟踪条目的存储器深度。在替选实施方式中,至少一个存储器单元能够具有更大或更小的位宽并且能够具有能够存储更多或更少条目的存储器深度。
在一些实施方式中,芯片管理器216能够包括执行指令来管理所接收的跟踪条目数据的至少一个处理设备。例如,芯片管理器216能够执行指令来扫描/分析经由跟踪链203、205、207接收的跟踪数据的相应硬件事件的时间戳数据。基于分析,芯片管理器216能够填充跟踪条目日志218以包括能够用于识别(或者生成)硬件跟踪事件的按时间排序的序列的数据。当系统100的处理单元执行示例分布式软件程序时,硬件跟踪事件能够对应于在组件和子组件层级发生的数据包的移动。
在一些实施方式中,系统100的硬件单元可以生成以未按时间排序的方式(即,无序地)填充示例硬件跟踪缓冲器的跟踪条目(和对应的时间戳)。例如,芯片管理器216能够使得具有生成的时间戳的多个跟踪条目被插入条目日志218。多个插入的跟踪条目的相应跟踪条目可能不会相对于彼此按时间排序。在本实施方式中,未按时序排序的跟踪条目能够由主机系统126的示例主机缓冲器接收。在主机缓冲器接收之后,主机系统126能够执行与性能分析/监视软件相关的指令来扫描/分析相应跟踪条目的时间戳数据。所执行的指令能够被用于对跟踪条目进行排序,并且构建/生成硬件跟踪事件的时间线。
在一些实施方式中,经由主机DMA操作,能够在跟踪会话期间从条目日志218中删除跟踪条目。在一些实例中,主机系统126可能不会同将DMA条目添加到日志一样快速地将其从跟踪条目日志218中删除。在其他实施方式中,条目日志218能够包括预定义的存储器深度。如果达到条目日志218的存储器深度限制,则添加的跟踪条目可能丢失。为了控制丢弃哪些跟踪条目,条目日志218能够以先进先出(FIFO)模式或者替选地以覆写记录模式操作。
在一些实施方式中,覆写记录模式能够由系统100使用于支持与事后调试相关联的性能分析。例如,能够在启用跟踪活动以及启用覆写记录模式的特定时间段内执行程序代码。响应于系统100内的事后软件事件(例如,程序崩溃),由主机系统126执行的监视软件能够分析示例硬件跟踪缓冲器的数据内容以深入了解程序崩溃之前发生的硬件事件。如本说明书中所用,事后调试涉及对代码崩溃之后或者大体上无法按预期执行/操作的程序代码的分析或者调试。
在FIFO模式下,如果条目日志218已满,并且如果主机系统126确定删除某一时间帧内保存的日志条目以节省存储器资源,则新的跟踪条目可能不会被保存到芯片管理器216的存储器单元。而在覆写记录模式下,如果条目日志218已满,因为主机系统126确定删除某一时间帧内已保存的日志条目以节省存储器资源,所以新的跟踪条目能够覆写条目日志218内存储的最早的跟踪条目。在一些实施方式中,响应于使用HIB 114的处理特征的DMA操作,跟踪条目被移动到主机系统126的存储器。
如本说明书中所用,跟踪点是由芯片管理器216接收并存储在跟踪条目日志218中的跟踪条目和与跟踪条目相关联的数据的生成器。在一些实施方式中,多核多节点处理器微芯片能够在芯片内包括三个跟踪链,使得第一跟踪链从芯片节点0接收跟踪条目,第二跟踪链从芯片节点1接收跟踪条目,以及第三跟踪链从芯片的ICI路由器接收跟踪条目。
每个跟踪点在其跟踪链中具有唯一跟踪标识号码,其插入到跟踪条目的报头中。在一些实施方式中,每个跟踪条目在由数据字的一个或多个字节/位指示的报头中识别其起源的跟踪链。例如,每个跟踪条目能够包括具有已定义的字段格式(例如,报头、有效载荷等)的数据结构,其传送关于特定跟踪事件的信息。跟踪条目中的每个字段对应于可应用于生成跟踪条目的跟踪点的有用数据。
如上所述,每个跟踪条目能够被写入到或者存储到与跟踪条目日志218相关联的芯片管理器216的存储器单元内。在一些实施方式中,跟踪点能够被单独启用或禁用,并且多个跟踪点能够生成相同类型的跟踪条目,但具有不同的跟踪点标识符。
在一些实施方式中,每个跟踪条目类型能够包括跟踪名称、跟踪描述以及标识跟踪条目内的特定字段和/或字段集合的编码的报头。名称、描述和报头共同提供对跟踪条目所表示的内容的描述。从芯片管理器216的角度来看,该描述还能够识别在特定处理器芯片内具体跟踪条目参与到的特定跟踪链203、205、207。因此,跟踪条目内的字段表示与描述相关的数据片(例如,以字节/位为单位),并且能够是用于确定哪一跟踪点生成特定跟踪条目的跟踪条目标识符。
在一些实施方式中,与所存储的硬件事件中的一个或多个相关联的跟踪条目数据能够部分地对应于以下发生的数据通信:a)至少在节点0和节点1之间;b)至少在节点0内的组件之间;以及c)至少在节点1内的组件之间。例如,所存储的硬件事件能够部分地对应于以下中的至少一个之间发生的数据通信:1)节点0的FPC 104与节点1的FPC 104;节点0的FPC 104与节点0的SPC 106;2)节点1的SPC 106与节点1的SPC 106。
图3图示出示例跟踪复用器设计架构300和示例数据结构320的框图。跟踪复用器设计300大体上包括跟踪总线输入端302、总线仲裁器304和局部跟踪点仲裁器306、总线FIFO 308、至少一个局部跟踪事件队列310、共享跟踪事件FIFO 312和跟踪总线输出端314。
复用器设计300对应于布置在系统100的组件内的示例跟踪复用器。复用器设计300能够包括以下功能。302中的总线能够与暂时性存储在总线FIFO 308内的局部跟踪点数据相关,直到使得时间仲裁逻辑(例如,仲裁器304)能够将跟踪数据放置到示例跟踪链上。组件的一个或多个跟踪点能够将跟踪事件数据插入至少一个局部跟踪事件队列310中。仲裁器306提供第一级仲裁并且能够从存储在队列310内的局部跟踪事件当中选择事件。所选择的事件被放置到共享跟踪事件FIFO 312中,其也用作存储队列。
仲裁器304提供从FIFO队列312接收局部跟踪事件并且经由跟踪总线输出端314将局部跟踪事件合并到特定跟踪链203、205、207的第二级仲裁。在一些实施方式中,跟踪条目可以被推送到局部队列310中快于它们能够被合并到共享FIFO 312,或者替换地,跟踪条目可以被推送到共享FIFO 312中快于它们能够被合并到跟踪总线314上。当发生这些情景时,相应的队列310和312将变得充满跟踪数据。
在一些实施方式中,当任意队列310或312变得充满跟踪数据时,系统100能够被配置成丢弃最新的跟踪条目并且不将其存储或合并到特定队列。在其他实施方式中,当某些队列填满(例如,队列310、312)时,并不丢弃跟踪条目,而是系统100能够被配置成停止示例处理流水线,直到再次填充的队列具有可用的队列空间来接收条目。
例如,能够停止使用队列310、312的处理流水线,直到充足或阈值数目的跟踪条目被合并到跟踪总线314上。充足或阈值数目能够对应于特定数目的合并跟踪条目,其产生供队列310、312接收一个或多个跟踪条目的可用队列空间。在下游队列空间变得可用之前停止处理流水线的实施方式能够基于保留而非丢弃某些跟踪条目来提供更高保真度的跟踪数据。
在一些实施方式中,局部跟踪队列与跟踪条目所要求的宽度相同,使得每个跟踪条目在局部队列310中仅占一个点。然而,共享的跟踪FIFO队列312能够使用唯一跟踪条目线路编码,使得一些跟踪条目能够在共享队列312中占据两个位置。在一些实施方式中,当丢弃跟踪包的任何数据时,丢弃完整包,使得跟踪条目日志218中不会出现部分包。
一般而言,跟踪是与系统100的特定组件相关联的活动或者硬件事件的时间线。有别于作为聚合数据的性能计数器(如下所述),跟踪包含详细的事件数据,能够深入了解指定跟踪窗口期间发生的硬件活动。所描述的硬件系统能够广泛支持分布式硬件跟踪,包括生成跟踪条目、在硬件管理的缓冲器中暂时性存储跟踪条目、静态和动态启用一个或多个跟踪类型以及将跟踪条目数据流送到主机系统126。
在一些实施方式中,能够针对由系统100的组件执行的硬件事件生成跟踪,诸如生成DMA操作、执行DMA操作、发出/执行某些指令或者更新同步标志。在一些实例中,跟踪活动能够被用于通过系统跟踪DMA或者跟踪特定处理器核上执行的指令。
系统100能够被配置成生成至少一个数据结构320,其从硬件事件的时间线识别一个或多个硬件事件322、324。在一些实施方式中,数据结构320将一个或多个硬件事件322、324以与至少FPC 104和SPC 106相关联的事件的按时间排序的序列来布置。在一些实例中,系统100能够将数据结构320存储在主机系统126的主机控制设备的存储库中。数据结构320能够被用于评估由至少处理器核104和106执行的程序代码的性能。
如硬件事件324所示,在一些实施方式中,特定跟踪标识(ID)号码(例如,跟踪ID“003”)能够与跨分布式处理器单元发生的多个硬件事件相关联。多个硬件事件能够对应于特定存储器存取操作(例如,DMA),并且特定跟踪ID号码被用于关联一个或多个硬件事件。
例如,如由事件324所指示,用于DMA操作的单个跟踪ID能够包括对应于DMA中的多个不同点的多个时间步长。在一些实例中,跟踪ID“003”能够具有“已发出”事件、“已执行”事件以及识别为相对于彼此间隔一段时间的“已完成”事件。因此,就此而言,跟踪ID能够进一步被用于基于相关性并且根据时间步长来确定存储器存取操作的延时属性。
在一些实施方式中,生成数据结构320能够例如包括:系统100将硬件事件的第一子集中的相应事件的事件时间戳与硬件事件的第二子集中的相应事件的事件时间戳相比较。生成数据结构320能够进一步包括:部分地基于事件的第一子集与事件的第二子集之间的比较,系统100提供相关联的硬件事件集合,以便在数据结构中呈现。
如图3所示,数据结构320能够识别指示特定硬件事件322、324的延时属性的至少一个参数。延时属性能够至少指示特定硬件事件的持续时间。在一些实施方式中,数据结构320由主机系统126的控制设备执行的软件指令生成。在一些实例中,响应于控制设备将跟踪条目数据存储到主机系统126的存储器磁盘/单元,能够生成结构320。
图4是指示由系统100执行的直接存储器存取(DMA)跟踪事件的示例跟踪活动的框图400。对于DMA跟踪,从第一处理器节点到第二处理器节点发起的示例DMA操作的数据能够行经ICI 112并且能够沿着数据路径生成ICI/路由器的中间跳。在DMA操作遍历ICI 112时,DMA操作将在处理器芯片内的每个节点处并且沿着每个跳生成跟踪条目。由这些生成的跟踪条目中的每一个捕捉信息,以重构沿着节点和跳的DMA操作的时间进程。
示例DMA操作能够与图4的实施方式中所描绘的过程步骤相关联。对于该操作,局部DMA从与处理器核104、106中的至少一个相关联的虚拟存储器402(vmem 402)向HBM 108传送数据。图400中描绘的编号对应于表404的步骤,并且大体上表示节点组织结构110中的活动或者由节点组织结构110发起的活动。
表404的步骤大体上描述相关联的跟踪点。对于该DMA,示例操作将生成六个跟踪条目。步骤一包括从处理器核到节点组织结构110的初始DMA请求,这在节点组织结构中生成一个跟踪点。步骤二包括读取命令,其中节点组织结构110向处理器核请求传送数据,这在节点组织结构110中生成另一个跟踪点。当vmem 402完成对节点组织结构110的读取时,示例操作不具有步骤三的跟踪条目。
步骤四包括节点组织结构110执行读取资源更新以导致在处理器核中的同步标志更新,这在处理器核中生成一个跟踪点。步骤五包括写命令,其中节点组织结构110向存储器复用器108通知将要写入HBM的即将到来的数据。经由写命令的通知在节点组织结构110中生成一个跟踪点,而在步骤六,写入HBM的完成也在节点组织结构110中生成一个跟踪点。在步骤七,节点组织结构110执行写入资源更新以导致在处理器核中的同步标志更新,这在处理器核(例如,FPC 104)中生成一个跟踪点。除写入资源更新之外,节点组织结构110能够执行确认更新(“ack更新”),其中将DMA操作的数据完成用信号发送回处理器核。ack更新能够生成与通过写入资源更新生成的跟踪条目相似的跟踪条目。
在另一个示例DMA操作中,当在始发节点的节点组织结构110中发出DMA指令时,生成第一跟踪条目。能够在节点组织结构110中生成附加的跟踪条目,用以捕捉用于读取DMA的数据并且将数据写入输出队列的时间。在一些实施方式中,节点组织结构110能够将DMA数据分组成更小的数据块。对于分组成更小块的数据,能够针对第一个块和最后一个块产生读取和写入跟踪条目。可选地,除第一个和最后一个数据块之外,全部数据块都能够被设置为生成跟踪条目。
对于可能需要ICI跳的远程/非局部DMA操作,第一个数据块和最后一个数据块能够沿着ICI/路由器112在每个中间跳中的入口点和出口点生成附加的跟踪条目。当DMA数据到达目的地节点时,在目的地节点处生成与前一节点组织结构110的条目相似的跟踪条目(例如,读取/写入第一个和最后一个数据块)。在一些实施方式中,DMA操作的最后一步能够包括与DMA相关联的执行指令,导致在目的地节点更新同步标志。当更新同步标志时,能够生成指示完成DMA操作的跟踪条目。
在一些实施方式中,当每个组件中处于跟踪模式时,由FPC 104、SPC 106或者HIB114发起DMA跟踪,以便能够执行跟踪点。经由触发机制,系统100的组件能够基于FPC 104或者SPC 106中的全局控制进入跟踪模式。响应于出现与由系统100的组件执行程序代码相关联的特定动作或者条件而触发跟踪点。例如,程序代码的部分能够包括可由系统100的至少一个硬件部件检测到的嵌入式触发功能。
系统100的组件能够被配置成检测与由FPC 104或者SPC 106中的至少一个执行的程序代码的部分相关联的触发功能。在一些实例中,触发功能能够对应于以下中的至少一个:1)所执行的程序代码的部分或模块中的特定序列步骤;或者2)由系统100的分布式处理器单元所使用的GTC指示的特定时间参数。
响应于检测到触发功能,系统100的特定组件能够发起、触发或者执行至少一个跟踪点(例如,跟踪事件),其使得与一个或多个硬件事件相关联的跟踪条目数据被存储在硬件组件的至少一个存储器缓冲区内。如上所述,然后,通过至少一个跟踪链203、205、207,能够将所存储的跟踪数据提供给芯片管理器216。
如上所述,图1至图4已图示出分布式计算系统中的硬件事件跟踪的方法。余下的图5至图7描述分布式计算系统中的同步硬件事件收集的方法。硬件事件的同步收集能够至少部分地基于一个或多个触发机制。
图5图示出全局时间计数器(GTC)502的示例数据结构以及由用于分布式硬件跟踪的示例计算系统(例如,系统100)指示GTC 502的使用情形的表504和506。在图5的实施方式中,GTC 502是包括60位计数器和4位偏移的64位值。在替选实施方式中,GTC 502能够是具有从小于64位到大于64位的位大小的固定大小的二进制数据片。
与GTC 502相关联的数据结构应用于全局主计数器以及下文参照图6的实施方式所描述的局部时间计数器(LTC)。GTC 502的高60位对应于实际的时间计数器,其每周期递增1,除非“追加”或“追减”以解决GTC相位变化(如下所述)。例如,在局部GTC 502(即,LTC)的更新期间,局部GTC 502能够不“标记”几个周期,以便“赶超”到主全局GTC 502。在这些情景下,较低的四个“偏移”位被用于补偿程序代码执行期间可能发生的GTC相位变化。
在解决GTC相位变化时,最后四个位能够在这些情况下递增,以部分地保持局部硬件事件活动的时间戳之间的差异,否则这些局部硬件事件活动的GTC会相同。在大多数其他实例中,GTC 502的4位偏移是清楚的,因此未被使用。在一些实施方式中,偏移位能够计数达15,然后停止。然而,在替选实施方式中,偏移位能够由特定计数器设计视需要计数到任何整数值。在一些实例中,当GTC 502的高60位再次开始标记时,偏移位被清零。
关于GTC 502、602(如下所述)的配置和管理,在一些实施方式中,所执行的程序代码能够通过配置系统100的一个或多个处理器芯片来配置或建立GTC。配置处理器芯片能够包括为系统指定全局主GTC以及为系统100的相应节点或组件指定局部主GTC(即,LTC)。
组件能够包括执行程序代码/软件用来计算和补偿时钟延时并且执行一个或多个局部GTC(即,图6的LTC)的手动调谐的硬件旋钮/特征。对时钟延时和手动调谐的LTC补偿相对于主GTC来执行,以便最小化或减轻相位变化。在一些实施方式中,系统100能够包括用于延时补偿的自动导频模式,其中组件硬件特征自动通过“发送并回显(ping-and-echo)”机制来确定链路延时。
在一些实施方式中,系统100能够包括链接/软件栈,其包括用于调整示例控制/状态寄存器(CSR)的参数值的程序代码的部分或子集。在一些实例中,响应于执行链接栈程序代码而生成的控制信号使得一个或多个参数值写入CSR。这些CSR参数值能够被用于配置GTC 502、602或LTC的各个方面。
例如,一个或多个参数能够包括:1)GTC_config参数,其促使选择主全局GTC、局部主GTC或局部从GTC并且选择更新采样大小;2)GTC_sync参数,其被用于复位主GTC或清除“ping”测量;3)GTC_latency_compensation_control参数,其配置手动延时补偿;4)GTC_link_ping参数,其指示最小ping延时;5)GTC_count参数,其指示实际GTC值;和/或6)GTC_max_diff参数,其指示局部GTC与主GTC之间的最大观察差异。
如上所述,系统100能够使用全局主GTC 502和一个或多个局部GTC 502来获得事件时间戳并且确定在系统内发生的硬件事件之间的顺序排序。除活动之间的顺序之外,GTC502能够被用于确定活动的延时。在一些实施方式中,特定GTC 502能够展示相位变化,因此,所确定的延时在一个或多个周期内可能不准确。
如上所述,根据局部GTC是否不同于全局主机,即当存在相位变化时,某些GTC 502递增的速率能够改变。在稳定状态下,当不存在相位变化时,主全局GTC 502每周期递增一次,并且能够被使于计数局部活动(例如,某组件)以及特定组件LTC的延时和顺序。
在一些实施方式中,主GTC 502计数可能慢于某个LTC。在这些情况下,GTC 502的偏移位在每个局部时钟周期持续递增一次。如表504、506所示,鉴于GTC偏移位的唯一功能,能够定义扩展GTC(“GTC-ext”)以供系统100使用。在一些实施方式中,GTC-ext能够通过添加上60位(GTC:top)和下四个偏移位(GTC:offset)来构建,而在其他实施方式中,在特定处理器中执行的程序代码能够计算GTC-ext等于GTC:top与小数GTC:offset值相加。
在一些实施方式中,并且响应于偏移位的递增,能够使用GTC-ext参数来确定事件排序以及局部操作的延时。表504、506表示当确定硬件事件排序和事件操作的延时时,GTC-ext参数可能证实有用的使用情景。
表504描述用于确定活动或硬件事件之间的顺序的示例GTC使用。在一些实施方式中,GTC 502在分析活动的过程中递增的速率可能比不相关于何时使用GTC 502来确定全局顺序,例如,至少两个不同计算节点(例如,各自具有主GTC的不同节点)之间的一个或多个活动的顺序。然而,当特定节点处的局部GTC 502比该节点的主GTC更慢时,GTC-ext能够被用于区分两个局部活动,或者两个局部活动发起写入远程资源的时间,如表504的特征508所示。
表506描述用于计算局部活动/事件或者跨越两个或多个节点的活动的延时的示例GTC使用。在一些实施方式中,系统参数可以不指示特定芯片处的GTC 502是否正以正常速率(即,与指定的主全局时钟同步)或者以与指定的主全局异步的速率进行标记。因此,在一些实例中,LTC能够被用于局部活动的事件延时确定,如表506的特征510所示。然而,在其他实施方式中,GTC或GTC-ext能够被使于测量一个或多个操作的延时。
一般而言,在系统100的各个节点或组件处发生的硬件跟踪事件能够包括GTC参数。在一些实施方式中,当跟踪的硬件事件/活动跨越系统100的多个节点时,应当经由GTC而非LTC来计算与局部活动相关联的延时。在这些实施方式中,使用GTC或GTC-ext能够是优选的计数器/时钟解决方案,因为跨两个或多个不同节点的LTC可能不会同步或者以相同的速率计时/标记。
图6图示出示例时间计数器以及与用于分布式硬件跟踪的示例计算系统(例如,系统100)的相应组件相关联的一个或多个计数器的框图。时间计数器能够包括各自与系统100的相应组件相关联的全局时间计数器(GTC)602和多个局部时间计数器(LTC)。
清楚起见,虽然图6描绘出耦合到系统100的特定组件的单个LTC块,但在替选实施方式中,每个组件能够包括一个或多个局部时间计数器/LTC。另外,虽然图6描绘出单个主GTC 602,但该特征也能够对应于或者表示被选择充当全局主机的特定LTC。例如,在一些实施方式中,GTC 602对应于由主机系统126实现的计数器选择逻辑,用以选择特定LTC来充当全局主时钟/计数器。
在一些实例中,系统100能够选择ICI 112的示例节点来充当全局主时钟,并且示例节点的LTC每时钟周期标记1。然而,在替选实施方式中,GTC 602是全局时间计数器,其充当全局主时钟并且向系统100的组件广播特定时间参数。在任一实施方式中,GTC 602能够是用于关联跨系统100发生的硬件事件的全局同步时钟。
在一些实施方式中,如上所述,GTC 602可能跨系统100具有小的相位变化,但能够被配置成避免长期的时间漂移。例如,GTC 602能够基于特定处理器芯片的示例振荡器(例如,被选择为全局主机的振荡器)来标记或计数。一般而言,针对系统100中的处理器芯片的所选振荡器,不存在长期的漂移或相位变化,然而,随着时间的推移,相对于不同处理器芯片之间的振荡器,可能发生漂移或变化。因此,在并非全局主机的处理器芯片处,GTC 602可能比局部时钟(LTC)更快或更慢地递增(即,标记)。
作为全局主机,GTC 602的当前主机值能够被广播到ICI 112的全部节点。示例ICI节点能够对应于系统100的一个或多个组件。接收节点能够计算用于针对特定组件/节点的局部操作的示例GTC在其局部值之间的差异。在示例采样周期内接收到的主机值与局部GTC值之间的最小差异能够被使于更新局部GTC。随着时间的推移,基于使用上述一个或多个偏移位实现的计数器调整,可以“追加”主机值与局部GTC值之间的相位变化(如果存在的话)。
如图6的实施方式所示,系统100的组件能够各自包括一个或多个性能计数器,并且在此将系统100内的性能计数器的集合或者子集描述为多个计数器600。特别地,并且针对每个组件,FPC 104能够包括多个计数器604,SPC 106能够包括多个计数器606,复用存储器(HBM)108能够包括多个计数器608,节点组织结构110能够包括多个计数器610,ICI 112能够包括多个计数器612,并且HIB 114能够包括多个计数器614。
在系统100中,基于使用与系统的特定组件相关联的一个或多个硬件性能计数器,能够启用/禁用对由一个或多个处理器执行的程序代码的性能分析。这些性能计数器能够对应于图6的多个相应的计数器,并且能够包括以下中的至少一个:1)活动计数器;2)停顿计数器;3)统计计数器;以及4)采样计数器。
在一些实施方式中,系统100包括能够编程为递增并存储与执行程序代码的技术方面相关联的指定计数数据的各种其他类型的性能计数器。另外,通过使用一个或多个计数器,用于跟踪活动的硬件支持能够包括例如与以下相关的功能:捕捉指令跟踪事件数据;捕捉存储器复用器跟踪事件数据;捕捉DMA跟踪事件数据;以及捕捉跟踪缓冲器中的事件数据。
在一些实施方式中,多个计数器600的至少一个子集能够是可供主机系统126经由HIB 114访问的CSR或者计数寄存器。这些计数寄存器/CSR能够是配置成存储识别由特定硬件组件接收、处理或执行的指令的各种类型的计数数据以及与执行程序代码的技术方面相关联的各种其他类型的数据/信息的存储设备。在一些实例中,数据以与特定指令或者处理器操作(例如,计数参数)相关联的计数或增量形式来存储。在一些实施方式中,系统100的多个计数器600能够对应于数百或数千个性能计数器/计数寄存器。
关于上述至少四种类型的性能计数器,在一些实施方式中,活动计数器能够被使于存储和分析与不同硬件单元的利用率参数相关联的数据。活动计数器也能够被用于分析执行程序代码的部分或者分析在代码执行期间传送的数据的数量或类型。例如,一些处理器核能够包括被用于在各种指令流中导出指令混合比的活动计数器。例如,活动计数器能够被配置成在示例性指令流中存储与执行特定指令类型相关联的计数。
在一些实施方式中,活动计数器能够包括计数器的子集,诸如:在发出某些指令类型后递增的发布计数器;在存储器路径上可用并且响应于与(例如,复用器108与VMEM 402之间)的存储器间传递相关联的读取/写入而递增的存储器活动计数器;以及响应于出现诸如中断、同步标志和警报计数器的指令而递增的一个或多个其他的一般活动计数器。
关于停顿计数器,在一些实施方式中,这些计数器能够提供停顿计数,指示由于特定停顿原因而停止某个硬件单元/组件的周期数,而不是进行与指令处理或者数据计算相关联的有用工作。例如,当特定硬件单元的利用率低于阈值利用率或者程序代码未以期望的阈值性能水平执行时,停顿计数器能够供系统100使用于获得有关的停顿信息,以便进行利用率和性能问题(例如,低于阈值利用率/性能)的根本原因分析。
在一些实施方式中,停顿计数器能够提供与以下相关的信息:基于检测到某些通常可用的存储器路径被指示为不可用的停顿;基于一个或多个同步标志指令的延迟执行的停顿;和/或由于指示为不可用的一个或多个通常可用的执行单元(例如,XU 122或RPU124)所致的停顿。
在一些实施方式中,FPC 104能够包括至少一个标量单元,其提供由VPU 118执行的矢量化计算的标量。与标量单元相关联的停顿计数器能够针对由于标量单元内可能发生的一个或多个危险所致的停顿提供有关信息。在一些实例中,可能出现各种危险类型,并且FPC 104能够包括用于每种危险类型的停顿计数器。示例危险类型能够包括DMA延迟危险、标量围栏延迟危险和/或标量延迟指令危险。
关于统计计数器,在一些实施方式中,系统100的组件能够包括一个或多个数据队列(例如,存储介质),并且活动计数器能够被配置成提供与队列利用率相关的信息。然而,在一些实例中,用于队列的活动计数器可能不足以通过执行程序代码来提供有关队列利用效果的全部信息。在这些情况下,统计计数器能够在一个或多个组件中可用以获取某些数据计数,以便能够确定与平均队列占用率相关的计算以及在某些队列中花费的时间。
在一些实施方式中,队列统计计数器能够提供队列占用率、队列插入状态、队列占满状态或者阈值占用状态下的队列有关的统计计数。在一些实例中,当队列统计计数器活动时,与组件队列相关联的占用率计数器基于每个处理器/指令周期中队列的当前占用率而递增。
在其他实例中,当活动队列统计计数器提供与队列占满状态相关的计数时,计数器在队列被完全占用的周期中递增(例如,加1)。另外,当活动队列统计计数器提供与队列插入状态相关的计数时,计数器响应于放入队列(即,队列插入)的数据块而递增。更甚者,对于阈值占用状态下的队列,计数器能够在当前队列占用率大于特定队列阈值占用率的每个周期中递增(例如,加1)。
在一些实施方式中,系统100的组件能够包括能够从主机系统126周期性读取以生成数据结构(例如,结构320或620)的采样计数器的集合。数据结构能够包括关于硬件事件、跟踪活动或者系统100的分布式处理器单元中发生的活动/事件的详细数据处理信息的采样统计数据。在一些实施方式中,基于采样统计数据所生成的数据结构能够例如包括结构320(如上所述)或者结构620(如下所述)。在一些实例中,所生成的数据结构被用于构建供主机系统126的监视引擎128用于分析由系统100的组件执行的程序代码的性能的一个或多个监视工具。
如上所述,系统100的组件能够基于与一个或多个触发机制相关联的全局控制来发起事件跟踪。在一些实施方式中,能够启用、禁用或以其他方式控制多个计数器600,以发起促使跟踪点执行并生成包括与一个或多个硬件事件相关的特定数据的跟踪条目的触发机制。在一些实施方式中,与硬件事件相关的跟踪条目至少部分地基于由上述多个计数器600中的一个或多个聚合的计数数据来填充事件数据。
全局控制大体上包括使用CSR控制(即,特定CSR硬件特征/旋钮)以及允许计数器递增并且允许以协调和同步的方式生成跟踪的触发机制。在一些实施方式中,经协调和同步的控制能够跨系统100的分布式处理器单元发生。如上所述,同步跟踪能够部分地通过使用用作全局主时钟(例如,GTC 602)的全局同步计数器来启用。
在一些实施方式中,系统100基于由分布式处理器单元的全局时钟指示的特定时间参数(例如,时间参数09:01.13)触发同步事件跟踪。例如,系统100能够使用GTC 602的全局主时钟值作为触发来开始和停止全部计数器并且在特定操作的持续时间内精确地进行跟踪。
在一些实例中,系统100的示例软件编译器能够在执行程序代码内嵌入或插入指令,包括基于与GTC 602相关联的特定预定义时间窗口的触发机制的操作数或参数值。预定义的时间窗口能够包括具有跟踪事件开始时间(例如,第一GTC 602时间参数)和跟踪事件结束时间(例如,在时间上晚于第一GTC时间参数的第二GTC 602时间参数)的示例跟踪持续时间。
如图6的实施方式所示,系统100的组件能够包括多个性能计数器600。由于其与触发机制有关,所以性能计数器控制能够包括启用和禁用计数器以及清零计数器和暂停计数器的机制。另外,除上述的统计计数器功能之外,一些硬件单元能够包括具有相关联的选择器(例如,CSR)的统计计数器,选择器被用于选择其事件被计数的硬件单元内的硬件块的子集。
如上文参照跟踪复用器控制所述,在一些实施方式中,能够基于由系统100执行的CSR写入来启用和禁用跟踪。在一些实例中,通过系统100,基于FPC 104(或者核116)中的示例跟踪标记(TM)寄存器的值,或者基于SPC 106中的示例TM寄存器的值,能够动态地开始和停止跟踪。
在一些实施方式中,示例跟踪控制参数能够被用于定义特定跟踪窗口。例如,跟踪控制参数能够允许根据GTC 602的下界和上界(例如,开始时间和停止时间时钟值)以及FPC104中的示例跟踪标记寄存器或者SPC 106中的示例跟踪标记寄存器的下界和上界来定义跟踪窗口。
在一些实施方式中,在系统100内执行的程序代码能够包括触发处理逻辑,用于在FPC 104或SPC 106中的一个内的每个处理器周期触发跟踪事件。在一些实例中,触发逻辑与特定“设置跟踪标记”指令相关联,该指令能够由执行的软件/程序代码插入到一个或多个指令流中。
例如,关于FPC104的触发逻辑,当在FPC104内发出设置跟踪标记的示例指令时,触发逻辑能够包括分析指令的跟踪标记操作数,并且将操作数的参数值与示例跟踪标记窗口的值相比较。该分析和比较被用于确定操作数参数值是否等于下界值或者落入特定跟踪标记窗口的下界值至上界值之内。
如果操作数的参数值落入跟踪标记窗口的限定范围内,则能够激发触发(例如,满足触发条件),并且FPC 104能够进入跟踪或计数模式并且启用多个计数器604中的一个或多个计数器。在一些实施方式中,当后续的“设置跟踪标记”指令包括下述操作数参数值时,其中基于操作数值等于或者超出示例跟踪标记窗口的上界该操作数参数值使得激发停止计数触发,FPC104退出跟踪/计数模式。
在一些实施方式中,系统100能够基于以下中的至少一个来检测满足触发条件:i)识别在执行程序代码的至少第一部分中出现示例跟踪标记操作数。跟踪标记操作数能够包括用于发起一个或多个跟踪事件和/或性能计数的参数值(例如,代码步骤序列/值)。基于确定当前时间GTC 602指示用于发起一个或多个跟踪事件和/或性能计数的预定义时间值,系统100也能够检测到满足触发条件。
响应于检测到满足触发条件,系统100的处理器组件能够生成控制信号,其由处理器组件的计数寄存器接收。控制信号能够使得与一个或多个硬件事件相关联的各种计数数据被存储在计数寄存器中。在一些实施方式中,系统100能够被配置或编程成例如经由主机系统126生成指示与执行程序代码相关联的一个或多个性能属性的数据结构。例如,数据结构能够基于所存储的计数数据的一个或多个计数参数来生成。在一些实施方式中,计数寄存器是配置成存储关于系统100的一个或多个处理器组件的性能的计数数据的多个性能计数器600中的一个。
为了进一步说明跟踪标记触发,在示例代码序列中,设置跟踪标记指令能够包括识别分布式软件结构(例如,示例神经网络推理工作负载中的计算步骤)的32位触发操作数。FPC 104能够包括专用的CSR,其在程序代码中被标识为“tracemark_limits”。虽然在本示例代码序列中描述32位操作数,但在替选实施方式中,触发操作数或者寄存器限制操作数/参数值能够是具有少于32位或多于32位的二进制数据结构。
该专用的CSR能够编码至少两个32位值。第一编码的32位值能够对应于用于开始跟踪/计数的跟踪标记下界,而第二编码的32位值能够对应于用于停止跟踪/计数的跟踪标记上界。在一些实施方式中,第一和第二编码值对应于诸如示例神经网络推理工作负载的分布式软件程序/构造或者任何其他分布式程序代码中的计算步骤。
再次参照示例代码序列,当执行“设置跟踪标记”指令时,将32位操作数值与tracemark_limits寄存器中的第一和第二编码值相比较。基于该比较,如果触发操作数等于/匹配起始值(即,第一编码值)或者具有比其更高的值,则触发性能分析活动。同样地,如果触发操作数匹配停止值(即,第二编码值)或者具有比其更高的值,则停止正在进行的性能分析活动。
就像跟踪标记触发,当GTC 602被用作触发时(例如,对于FPC 104或者SPC 106),能够针对GTC 602的当前值评估特定组件的示例GTC/LTC触发寄存器的上界和下界。因此,能够将GTC 602的当前时间参数或当前值与示例预定义时间窗口的下界相比较,以使用GTC触发来执行跟踪活动。类似地,在执行GTC触发开始计数活动之后,能够将GTC 602的当前时间参数或当前值与GTC触发寄存器的上界相比较,以确定GTC 602是否匹配或超出上界值。响应于GTC 602至少匹配上界值,将激发停止计数触发,使得组件退出计数模式。
在一些实施方式中,SPC 106包括与FPC104的设置跟踪标记指令的对应指令。因此,SPC 106的触发处理逻辑能够以与FPC104相同或基本上相似的方式工作。例如,跟踪标记参数能够被包括作为由SPC 106发出的一个或多个指令的操作数。在一些实例中,在每个指令发出时发生操作数的触发评估,并且评估逻辑能够基本上类似于在FPC 104中启用计数的方式(例如,使用跟踪标记操作数)。例如,在SPC 106中,当设置的跟踪标记指令中包括的跟踪标记操作数处于示例跟踪窗口的下界和上界之内时,启用跟踪。同样地,当跟踪标记指令中包括的跟踪标记操作数处于跟踪窗口的下界和上界之外时,禁用跟踪。
如上所述,除使用GTC 602或者跟踪标记之外,系统100能够包括“每个人”跟踪模式。一般而言,这种每个人跟踪模式能够使得跨整个处理器芯片的跟踪通过例如由FPC 104或者SPC 106的组件生成的控制信号来控制。在一些实施方式中,控制信号能够是指示系统100的分布式处理器单元的特定性能状态的全局控制参数。在一些实例中,特定性能状态对应于“每个人”跟踪模式。
在一些实施方式中,一个或多个硬件组件(例如,HIB 114或者ICI 112)能够被编程或配置成响应于激活“每个人”跟踪模式而发起事件跟踪,或者简单地忽略指示每个人跟踪模式的传播控制信号。因此,虽然系统100能够包括传播每个跟踪控制信号的信令机制,但系统100也能够包括使得至少一个硬件组件忽略控制信号的机制。
例如,系统100的用户(例如,性能分析人员)可能希望使用HIB 114来跟踪指示全部主机通信的数据包。用户能够例如经由外部编译器插入示例程序指令,以使得HIB 114进入“始终跟踪”模式,同时还使用每个人跟踪模式从系统100的其他硬件组件中捕捉某些单步数据序列。因此,当编程成在始终跟踪模式下执行时,HIB 114能够忽略用于从其他硬件组件中生成单步序列跟踪数据的每个人跟踪控制信号。
在一些实施方式中,跟踪点能够响应于出现与由系统100的组件执行程序代码相关的特定动作或者条件而触发。例如,分布式软件程序能够包括多个软件模块,它们各自包括共享或重叠的代码序列或步骤。例如,处理器核104、106能够各自接收和执行分布式软件程序的部分,并且每个程序部分能够包括示例代码序列1-100。
如上所述,在一些实施方式中,系统100能够被配置成包括具有或基于分布式程序代码的特定序列步骤的一个或多个触发条件/机制。因此,系统100能够被配置成响应于在代码执行期间处理器核104、106中的每个到达某编码序列/步骤(例如,代码序列步骤33)来触发跟踪点。在一些实例中,执行的分布式程序代码的部分能够包括可由系统100的至少一个硬件组件检测的嵌入式触发功能。
例如,如上所述,系统100能够被配置成基于识别由FPC 104或者SPC 106中的一个执行的程序代码的至少一部分中出现操作数来检测满足一个或多个触发条件。响应于检测到满足至少一个触发条件,系统100能够发起一个或多个跟踪事件,其生成跟踪条目/跟踪数据或者计数数据。在一些实施方式中,所生成的跟踪条目能够包括在跨分布式处理器单元发生的相应硬件事件之间共享的至少一个属性(例如,共享的时间戳或者代码序列步骤)。
例如,如数据结构620所示,所生成的跟踪条目622能够对应于同步跟踪事件,并且跟踪数据能够包括相应硬件事件的唯一跟踪标识符以及在至少两个相应的硬件事件之间共享的全局硬件事件时间戳(例如,09:01.13)。因此,对于跟踪条目622,在相应硬件事件之间共享的至少一个属性能够是硬件事件时间戳。同样地,当系统100基于特定代码序列来触发跟踪点时,对于跟踪条目624,在相应硬件事件之间共享的至少一个属性能够是代码序列或者跟踪标记步骤。
在一些实施方式中,跟踪条目能够包括时间戳报头或字段。时间戳报头能够包括48位时间戳,其识别生成跟踪条目的时间。在一些实例中,时间戳报头能够对应于GTC 502的低48位。
如上所述,在一些实施方式中,系统100的编译器能够将用于多个触发条件的一个或多个操作数插入由系统100的示例处理器核执行的程序代码的部分中。例如,与FPC 104相关联的编译器能够将用于触发条件的一个或多个操作数插入或嵌入由FPC 104执行的程序代码的部分中。同样地,与SPC 106相关联的编译器能够将用于触发条件的一个或多个操作数插入或嵌入由SPC 106执行的程序代码的部分中。
一般而言,如上所述,系统100被配置成检测一个或多个触发条件,并且响应于检测到条件而发起至少一个跟踪事件。在一些实施方式中,发起至少一个跟踪事件能够包括:系统100向FPC 104的第一性能计数器/寄存器(例如,诸如活动计数器的CSR)提供例如第一控制信号。该第一控制信号能够使得与至少一个硬件事件相关联的数据被存储在第一性能计数器中。
同样地,在一些实施方式中,发起至少一个跟踪事件能够进一步包括:系统100向SPC 106的第二性能计数器/寄存器(例如,诸如统计计数器的CSR)提供例如第二控制信号。该第二控制信号能够使得与至少一个硬件事件相关联的数据被存储在第二性能计数器中。
在一些实施方式中,与至少一个硬件事件相关联的数据能够包括以下之一:1)写入系统100的分布式处理器单元的某一处理器核的特定存储器缓冲区的字节数;或者2)由系统100的分布式处理器单元的特定处理器核执行的指令数。
一般而言,所描述的跟踪系统包括基于硬件的触发动作机制。触发能够被提前配置为基于根据软件语义来激发。例如,用于触发条件的操作数能够被插入或嵌入软件组件的导言和结尾(例如,分布式软件系统中的函数、循环报头或其他适当位置)。如上所述,在一些实例中,插入用于触发条件的操作数通过系统100中的编译器来完成,而在其他实例中,触发和触发操作数能够由编译器在系统100执行代码之前嵌入/插入,或者能够由主机系统126在实时代码执行期间嵌入。
例如,在一些实施方式中,通过在主机系统126上执行的性能分析软件,能够跨分布式硬件系统(例如,在系统100的每个芯片/节点中)建立指示何时激发触发的条件。当触发激发时,在特定硬件单元中执行硬件跟踪和性能计数,并且设定类似的触发条件来停止跟踪数据收集。
在其他实施方式中,系统100中的触发能够是作为指令的操作数的单调增加的值。该指令能够通过处理器核的示例编译器插入重要软件结构的导言和结尾。一般而言,对于执行程序代码,使指令中的触发操作数始终存在导致的性能损失可忽略不计,因为在触发激发之前并未收集性能数据。
例如,能够通过写入硬件组件中的示例寄存器来设定触发条件。为了评估或检测触发,每当遇到触发指令时,硬件组件都能够将该寄存器中的值与指令中的触发条件的操作数值相比较。一般而言,应当在某些编码序列步骤之前设定好触发条件,使得分布式系统中的处理器芯片/节点都不会过早地达到触发条件。
在一些实例中,硬件触发的实施需要在示例处理器芯片/节点的不同组件内传播触发信号。触发动作机制的至少一个益处使得分布式软件程序能够在与另一个(第二)节点处的相关活动(例如,代码序列步骤33)极为不同的时间在第一节点上执行活动(例如,代码序列步骤33)。在本实施方式中,系统100能够保持精确地收集由不同的硬件组件或者处理器节点在不同的时间段执行的相同或基本上相关的活动的硬件性能数据。
在一些实施方式中,示例触发使用情况能够包括系统100收集多组跟踪数据,而不重新编程、重置或者重新插入特定触发条件。例如,执行程序代码能够包括生成指令序列的软件结构,其中设置跟踪标记的相同的操作数出现多次。在一些实例中,当系统100的处理器在循环中执行程序代码的某一部分时,设置跟踪标记相同的操作数可能出现多次。在执行程序循环期间,事件跟踪能够根据程序循环的迭代而开始和结束。
例如,基于循环迭代开始时出现的操作数值,能够满足触发条件,例如,触发激发并且事件跟踪开始。同样地,基于循环迭代结束时出现的操作数值,能够不再满足触发条件,例如,事件跟踪停止。一般而言,循环迭代的开始和循环迭代的结束能够对应于给定软件结构的程序循环的界限。因此,跟踪会话能够在软件结构的每次执行(例如,每个循环迭代)时开始和结束。
在一些实施方式中,能够以下列方式确定适当的触发操作数值(例如,GTC或者跟踪标记)。如上所述,分布式软件程序能够包括软件模块,它们各自包括共享或重叠的代码序列或步骤。在系统100内执行分布式程序代码期间,性能分析人员能够经由系统100的计算控制台读取或分析跟踪标记寄存器的CSR值,以例如确定当前代码序列或步骤编号。
在一些实例中,分析人员反复读取CSR值以确定序列或步骤的平均增长率。所确定的增加率能够被用于基于出现例如跟踪标记操作数值而预测地设置一个或多个触发条件。在一些实施方式中,当使用GTC时,性能分析人员能够读取或分析系统/机器(或者硬件组件)时钟速度来预测或确定GTC增加的速率。然后,分析人员能够使用所确定的速率来基于出现特定GTC值而设置一个或多个触发条件。
图7是使用计算系统100和系统100的一个或多个节点200、201的分布式硬件跟踪的示例过程700的过程流程图。因此,过程700能够使用包括节点200、201的资源的系统100的上述计算资源中的一个或多个来实现。
过程700始于框702,并且包括监视由第一处理器核执行的程序代码执行的计算系统100。在一些实施方式中,第一处理器核被配置成执行被监视的程序代码的至少第一部分。在过程700的框704,系统100监视由第二处理器核执行的程序代码执行。在一些实施方式中,第二处理器核被配置成执行被监视的程序代码的至少第二部分。
在框706,系统100检测满足至少一个触发条件。在一些实施方式中,基于识别由第一处理器核或第二处理器核中的一个执行的程序代码的至少一部分中出现操作数,系统100检测满足触发条件。在一些实施方式中,在系统100内执行的程序代码包括用于触发跟踪事件的触发处理逻辑。
在一些实例中,触发逻辑与插入一个或多个指令流中的“设置跟踪标记”指令相关联。触发逻辑能够包括识别出现指令的跟踪标记操作数、分析跟踪标记操作数以及将操作数与示例跟踪标记窗口的值相比较。在一些实例中,该分析和比较被用于检测满足第一触发条件。
在其他实例中,触发逻辑与能够由系统100的外部用户或者系统的示例编译器插入一个或多个指令流中的预定义时间值相关联。触发逻辑能够包括确定计算系统的至少一个时钟的当前时间指示用于发起一个或多个跟踪事件的预定义时间值。在一些实施方式中,确定当前时间指示预定义的时间值能够包括接收预定义时间值以及将预定义时间值与示例预定义时间窗口的时间值相比较。
在框708,响应于检测到满足触发条件,系统100发起至少一个第一跟踪事件,其生成跟踪数据。所生成的跟踪数据识别跨至少包括第一处理器核和第二处理器核的分布式处理器单元发生的相应硬件事件。
例如,响应于检测到满足触发条件,系统100能够发起同步跟踪事件,其生成识别跨FPC 104和SPC 106发生的硬件事件的跟踪数据。在一些实施方式中,跟踪数据识别相应硬件事件的唯一跟踪标识符。在一些实例中,硬件事件包括多个同步硬件事件,并且当事件共享全局硬件事件时间戳时,多个同步事件的至少两个硬件事件被同步化。
在一些实施方式中,多个触发条件能够与执行程序代码相关联。在一些实例中,基于识别在由至少第一或第二处理器核执行的程序代码的至少一部分中出现特定操作数,能够满足特定触发条件。该特定操作数能够包括多个参数值中的一个,这些参数值能够各自被用于发起一个或多个跟踪事件中的第二跟踪事件。在本实施方式中,检测到满足特定触发条件能够包括系统100检测到特定参数值超过寄存器的第一界限值。
在一些实施方式中,响应于检测到满足特定触发条件,系统100发起跟踪事件生成跟踪数据,其识别在跨分布式处理器单元发生的相应硬件事件之间共享的至少一个属性。在一些实施方式中,相应硬件事件的属性能够至少包括源存储器地址、目的地存储器地址或者序列/程序计算步骤。而至少一个共享的属性能够包括程序代码的特定序列步骤或者程序步骤。
在一些实施方式中,一个或多个触发条件能够与以下中的至少一个相关联:1)程序代码的特定序列步骤;2)指示分布式处理器单元的特定性能状态的全局控制参数;3)由分布式处理器单元的全局时钟/计数器指示的当前时间或者特定时间参数;或者4)与全局时钟相关联的预定义时间窗口。
在一些实施方式中,系统100还能够检测特定操作数的特定参数值或者特定预定义时间值超过寄存器的第二界限值。在一些实例中,响应于该检测,当特定操作数的特定参数值或者某一预定义时间值超过寄存器的第二界限值时,系统100能够停止第二跟踪事件。
在过程700的框710,系统100向主机设备提供包括相应硬件事件的相关联的跟踪数据集。在一些实施方式中,相关联的跟踪数据集指示当满足第一触发条件时生成的相应硬件事件的至少一个按时间排序的序列。对于相应硬件事件中的每个,跟踪数据至少包括硬件事件的硬件事件时间戳以及表征硬件事件的元数据。在一些实例中,相关联的跟踪数据集至少部分地对应于数据结构620。
在框712,计算系统100使用相关联的跟踪数据集来分析由至少第一处理器核和第二处理器核执行的程序代码的性能。在一些实施方式中,由主机系统126使用数据结构620(即,对应于相关联的跟踪数据)来分析由至少处理器核104和106执行的程序代码的性能。同样地,能够由主机系统126使用数据结构620来分析系统100的至少一个组件的性能。
例如,主机系统126或者示例用户能够分析数据结构620以检测或确定是否存在与执行程序代码的特定软件模块相关联的性能问题。示性问题能够包括软件模块未能在分配的执行时间窗口内完成某些指令流的执行,或者低于阈值延时。
另外,用户或者主机设备/系统126能够检测或确定系统100的特定组件是否正高于或低于阈值性能水平运行。与组件性能相关的示例问题能够包括特定硬件组件生成超出可接受阈值结果参数范围的结果数据。在一些实施方式中,所生成的结果数据可能与由执行基本上相似的指令/操作的系统100的其他相关组件生成的结果数据不一致。
例如,在执行程序代码期间,可能要求系统100的第一组件完成操作并且产生结果。同样地,可能要求系统100的第二组件完成基本上相似的操作并且产生基本上相似的结果。对相关联的跟踪数据集的分析能够指示第二组件产生的结果与第一组件产生的结果明显不同。同样地,相关联的跟踪条目的示例数据结构可以指示第二组件的结果参数值处于可接受的参数范围之外。这些结果能够指示第二组件的潜在性能问题。
本说明书中所述的主题的实施例以及功能性操作能够在数字电路中、有形体现的计算机软件或固件中、计算机硬件中或者其中一个或多个的组合中来实现,包括本说明书中所述的结构以及其结构等同物。本说明书中所述的主题的实施例能够被实现为一个或多个计算机程序,即在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,用于由数据处理装置来执行或者控制其操作。替选地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电子、光学或者电磁信号,该信号被生成以编码用于传输至适当的接收器装置的信息,以便由数据处理装置执行。计算机存储介质能够是机器可读的存储设备、机器可读的存储衬底、随机或串行存取存储器设备或者其中一个或多个的组合。
本说明书中所述的过程以及逻辑流程能够由执行一个或多个计算机程序以通过对输入数据进行操作并且生成数据来执行功能的可编程计算机来执行。所述的过程以及逻辑流程也能够通过专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,例如,FPGA(现场可编程门阵列)、ASIC(专用集成电路)或者GPGPU(通用图形处理单元)。
适于执行计算机程序的计算机包括、例如能够基于通用或专用的微处理器或者二者,或者任何其他种类的中央处理单元。一般地,中央处理单元会从只读存储器或随机存取存储器或者二者接收指令和数据。计算机的基本元素是用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。一般地,计算机还会包括或者可操作地耦合至用于存储数据的一个或多个大容量存储设备以自其接收数据或向其传送数据或者兼顾,例如磁性的磁光盘或者光盘。然而,计算机不必具有这样的设备。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失存储器、介质和存储设备,例如包括例如EPROM、EEPROM和闪存设备的半导体存储设备、例如内置硬盘或可移动磁盘的磁盘。处理器和存储器能够增加或结合专用逻辑电路。
虽然本说明书包含许多特定实施方式细节,但这些不应当被解释为对任何发明或者可能要求保护的内容的范围的限制,而应被理解为对可能对于特定发明的特定实施例是特定特征的描述。本说明书中在单独实施例的场境中描述的某些特征也能够在单个实施例中组合来实施。反之,在单个实施例的场境中描述的各种特征也能够单独地在多个实施例中或者以任何适当的子组合来实施。此外,尽管在上文可以将特征描述为以某些组合进行动作乃至最初如此要求保护特征,但来自要求保护的组合的一个或多个特征在一些情况下能够从所述组合中排除,并且所要求保护的组合可以涉及子组合或者子组合的变型。
类似地,虽然在图中以特定次序来描绘操作,但这不应被理解为要求以所示的特定次序或者以顺序来执行这样的操作,或者执行所有图示的操作,以获得期望的结果。在某些情况下,多任务以及并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中要求这样的分离,而应理解的是,所述的程序组件和系统一般能够一起被集成于单个软件产品中或者被封装到多个软件产品中。
已对所述主题的特定实施例予以描述。其他实施例在所附权利要求的范围内。例如,能够以不同的次序来执行权利要求中所述的动作并且仍然获得期望的结果。作为一个示例,在附图中所描绘的过程不一定要求所示的特定次序或者顺序来获得期望的结果。在某些实施方式中,多任务以及并行处理可能是有利的。
Claims (20)
1.一种计算机实现的方法,该方法包括:
监视由第一处理器组件进行的程序代码的执行,所述第一处理器组件被配置成执行所述程序代码的至少第一部分;
监视由第二处理器组件进行的所述程序代码的执行,所述第二处理器组件被配置成执行所述程序代码的至少第二部分;
由计算系统基于以下至少一个检测满足触发条件:
i)识别在至少所述程序代码的所述第一部分或者所述程序代码的所述第二部分中出现操作数,所述操作数包括用于发起一个或多个跟踪事件的第一参数值,或者
ii)确定所述计算系统的至少一个时钟的当前时间指示用于发起一个或多个跟踪事件的预定义时间值;
响应于检测到满足所述触发条件,由所述计算系统发起至少第一跟踪事件,所述至少第一跟踪事件生成跟踪数据,所述跟踪数据识别跨分布式处理器单元发生的相应硬件事件,所述分布式处理器单元至少包括所述第一处理器组件和所述第二处理器组件,并且对于所述相应硬件事件中的每个硬件事件,所述跟踪数据包括至少一个硬件事件时间戳;以及
由所述计算系统使用所述跟踪数据来生成关联的跟踪数据集,所述关联的跟踪数据集指示当满足所述触发条件时生成的所述相应硬件事件的至少按时间排序的序列。
2.根据权利要求1所述的方法,其中,所述第一跟踪事件是同步的跟踪事件,所述同步的跟踪事件生成识别跨所述分布式处理器单元发生的硬件事件的跟踪数据,所述跟踪数据还识别用于相应硬件事件的唯一跟踪标识符,以及其中,所述硬件事件包括多个同步的硬件事件,并且当两个硬件事件共享全局硬件事件时间戳时,所述两个硬件事件被同步化。
3.根据权利要求1所述的方法,其中,检测满足所述触发条件包括:
由所述计算系统检测:
i)所述操作数的所述第一参数值超过寄存器的第一界限值,或者
ii)由所述当前时间指示的所述预定义时间值超过寄存器的第一界限值;以及
响应于检测到满足所述触发条件,由所述计算系统发起生成跟踪数据的第二跟踪事件,其中,所述跟踪数据识别在跨所述分布式处理器单元发生的所述相应硬件事件之间共享的至少一个属性。
4.根据权利要求3所述的方法,进一步包括:
由所述计算系统进一步检测:
所述操作数的第二参数值超过所述寄存器的第二界限值,或者
由所述当前时间指示的第二预定义时间值超过所述寄存器的第二界限值;以及
响应于所述进一步检测,当所述操作数的所述第二参数值超过所述第二界限值时、或者当所述第二预定义时间值超过所述第二界限值时,由所述计算系统停止所述第二跟踪事件。
5.根据权利要求3所述的方法,其中:
所述操作数进一步包括以下至少一个:
指示所述程序代码的特定序列步骤的参数;以及
指示所述分布式处理器单元的特定性能状态的全局控制参数;以及
所述预定义时间值包括以下至少一个:
由所述分布式处理器单元的全局时钟指示的特定时间值;以及
与所述全局时钟相关联的预定义时间窗口的特定时间值。
6.根据权利要求3所述的方法,其中:
所述操作数具有第一二进制数据结构,并且所述第一操作数的所述第一参数值对应于跟踪标记,
所述预定义时间值具有第二二进制数据结构,并且所述当前时间由全局时钟来指示,
以及其中,所述全局时钟由所述分布式处理器单元用于生成一个或多个硬件事件时间戳。
7.根据权利要求3所述的方法,进一步包括:
由所述计算系统的编译器将所述触发条件的所述操作数插入到由所述第一处理器组件执行的所述程序代码的至少所述第一部分中;以及
由所述计算系统的所述编译器将所述触发条件的至少一个预定义时间值插入到由所述第二处理器组件执行的所述程序代码的至少所述第二部分中。
8.根据权利要求3所述的方法,其中,发起所述第一跟踪事件或者所述第二跟踪事件中的至少一个包括:
由所述计算系统生成由所述第一处理器组件的第一计数寄存器接收的第一控制信号,所述第一控制信号使得与第一硬件事件相关联的数据被存储在所述第一计数寄存器中;以及
由所述计算系统生成由所述第二处理器组件的第二计数寄存器接收的第二控制信号,所述第二控制信号使得与第二硬件事件相关联的数据被存储在所述第二计数寄存器中。
9.根据权利要求8所述的方法,其中,与所述第一硬件事件或者所述第二硬件事件中的一个相关联的数据包括以下至少一个:
写入所述分布式处理器单元中的特定处理器组件的特定存储器缓冲区的字节数;以及
由所述分布式处理器单元中的特定处理器组件执行的指令数。
10.根据权利要求1所述的方法,进一步包括:
由所述计算系统识别在由所述第一处理器组件或所述第二处理器组件执行的所述程序代码的至少一部分中出现第二操作数,所述第二操作数包括第二参数值;
由所述计算系统基于所述第二操作数的所述第二参数值超过寄存器的特定界限值或者低于所述寄存器的特定界限值,确定满足过滤条件;以及
响应于确定满足所述过滤条件,由所述计算系统过滤一个或多个跟踪事件,其中,过滤一个或多个跟踪事件包括排除与一个或多个硬件事件相关联的跟踪数据的存储。
11.一种硬件事件收集系统,包括:
一个或多个处理器,包括一个或多个处理器核;
一个或多个机器可读的存储单元,用于存储指令,所述指令可由所述一个或多个处理器执行以执行操作,所述操作包括:
监视由第一处理器组件进行的程序代码的执行,所述第一处理器组件被配置成执行所述程序代码的至少第一部分;
监视由第二处理器组件进行的所述程序代码的执行,所述第二处理器组件被配置成执行所述程序代码的至少第二部分;
由计算系统基于以下至少一个检测满足触发条件:
i)识别在至少所述程序代码的所述第一部分或者所述程序代码的所述第二部分中出现操作数,所述操作数包括用于发起一个或多个跟踪事件的第一参数值,以及
ii)确定所述计算系统的至少一个时钟的当前时间指示用于发起一个或多个跟踪事件的预定义时间值;
响应于检测到满足所述触发条件,由所述计算系统发起至少第一跟踪事件,所述至少第一跟踪事件生成跟踪数据,所述跟踪数据识别跨分布式处理器单元发生的相应硬件事件,所述分布式处理器单元至少包括所述第一处理器组件和所述第二处理器组件,并且对于所述相应硬件事件中的每个硬件事件,所述跟踪数据包括至少一个硬件事件时间戳;以及
由所述计算系统使用所述跟踪数据来生成关联的跟踪数据集,所述关联的跟踪数据集指示当满足所述触发条件时生成的相应硬件事件的至少按时间排序的序列。
12.根据权利要求11所述的硬件事件收集系统,其中,所述第一跟踪事件是同步的跟踪事件,所述同步的跟踪事件生成识别跨所述分布式处理器单元发生的硬件事件的跟踪数据,所述跟踪数据还识别用于相应硬件事件的唯一跟踪标识符,以及其中,所述硬件事件包括多个同步的硬件事件,并且当两个硬件事件共享全局硬件事件时间戳时,所述两个硬件事件被同步化。
13.根据权利要求11所述的硬件事件收集系统,其中,检测满足所述触发条件包括:
由所述计算系统检测:
i)所述操作数的所述第一参数值超过寄存器的第一界限值,或者
ii)由所述当前时间指示的所述预定义时间值超过寄存器的第一界限值;以及
响应于检测到满足所述触发条件,由所述计算系统发起生成跟踪数据的第二跟踪事件,其中,所述跟踪数据识别在跨所述分布式处理器单元发生的所述相应硬件事件之间共享的至少一个属性。
14.根据权利要求13所述的硬件事件收集系统,其中,所述操作进一步包括:
由所述计算系统进一步检测:
所述操作数的第二参数值超过所述寄存器的第二界限值,或者
由所述当前时间指示的第二预定义时间值超过所述寄存器的第二界限值;以及
响应于所述进一步检测,当所述操作数的所述第二参数值超过所述第二界限值时、或者当所述第二预定义时间值超过所述第二界限值时,由所述计算系统停止所述第二跟踪事件。
15.根据权利要求13所述的硬件事件收集系统,其中:
所述操作数进一步包括以下至少一个:
指示所述程序代码的特定序列步骤的参数;以及
指示所述分布式处理器单元的特定性能状态的全局控制参数;以及
所述预定义时间值包括以下至少一个:
由所述分布式处理器单元的全局时钟指示的特定时间值;以及
与所述全局时钟相关联的预定义时间窗口的特定时间值。
16.根据权利要求13所述的硬件事件收集系统,其中:
所述操作数具有第一二进制数据结构,并且所述第一操作数的所述第一参数值对应于跟踪标记,
所述预定义时间值具有第二二进制数据结构,并且所述当前时间由全局时钟来指示,
以及其中,所述全局时钟由所述分布式处理器单元用于生成一个或多个硬件事件时间戳。
17.一种计算机实现的方法,该方法包括:
监视由处理器组件进行的程序代码的执行,所述处理器组件被配置成执行所述程序代码的至少第一部分;
由计算系统基于以下至少一个检测满足触发条件:
i)识别在所述程序代码的至少所述第一部分中出现操作数,所述操作数包括用于发起一个或多个跟踪事件的第一参数值,以及
ii)确定所述计算系统的至少一个时钟的当前时间指示用于发起所述一个或多个跟踪事件的预定义时间值;
响应于检测到满足所述触发条件,由所述计算系统生成由所述处理器组件的计数寄存器接收的控制信号,所述控制信号使得与硬件事件相关联的计数数据被存储在所述计数寄存器中;以及
由所述计算系统生成指示与执行程序代码相关联的一个或多个性能属性的数据结构,所述数据结构基于所存储的计数数据的一个或多个计数参数来生成。
18.根据权利要求17所述的方法,其中,所述计数寄存器是配置成存储关于所述计算系统的一个或多个处理器组件的性能的计数数据的多个性能计数器中的一个,以及其中,至少一个性能计数器包括以下之一:活动计数器、停顿计数器、统计计数器或者采样计数器。
19.根据权利要求18所述的方法,其中,所述一个或多个计数参数指示以下之一:
i)由特定处理器组件接收的指令数;
ii)由所述特定处理器组件处理的指令数;
iii)由所述特定处理器组件执行的指令数;或者
iv)由所述特定处理器组件执行的存储器读取数或者存储器写入数。
20.根据权利要求17所述的方法,其中,与执行程序代码相关联的性能属性包括以下之一:
i)执行所述程序代码的特定处理器组件的停顿频率;
ii)所述特定处理器组件的利用率低于阈值利用率的指示;或者
iii)由所述特定处理器组件使用的数据存储队列处于或低于队列占用阈值的指示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210792957.9A CN115168147A (zh) | 2017-03-29 | 2017-12-08 | 同步硬件事件收集 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/472,932 | 2017-03-29 | ||
US15/472,932 US10365987B2 (en) | 2017-03-29 | 2017-03-29 | Synchronous hardware event collection |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210792957.9A Division CN115168147A (zh) | 2017-03-29 | 2017-12-08 | 同步硬件事件收集 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694109A true CN108694109A (zh) | 2018-10-23 |
CN108694109B CN108694109B (zh) | 2022-07-22 |
Family
ID=60201424
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210792957.9A Pending CN115168147A (zh) | 2017-03-29 | 2017-12-08 | 同步硬件事件收集 |
CN201711292833.XA Active CN108694109B (zh) | 2017-03-29 | 2017-12-08 | 同步硬件事件收集 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210792957.9A Pending CN115168147A (zh) | 2017-03-29 | 2017-12-08 | 同步硬件事件收集 |
Country Status (12)
Country | Link |
---|---|
US (3) | US10365987B2 (zh) |
EP (1) | EP3382552A1 (zh) |
JP (3) | JP7196083B2 (zh) |
KR (3) | KR102584961B1 (zh) |
CN (2) | CN115168147A (zh) |
BR (1) | BR112019015427B1 (zh) |
DE (2) | DE202017106508U1 (zh) |
GB (1) | GB2561043B (zh) |
HK (1) | HK1259155A1 (zh) |
SG (1) | SG11201906749UA (zh) |
TW (2) | TWI808280B (zh) |
WO (1) | WO2018182783A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046116A (zh) * | 2019-04-23 | 2019-07-23 | 上海燧原智能科技有限公司 | 一种张量填充方法、装置、设备及存储介质 |
CN110311863A (zh) * | 2019-05-09 | 2019-10-08 | 北京邮电大学 | 一种路由路径确定方法及装置 |
CN111160558A (zh) * | 2019-12-13 | 2020-05-15 | 合肥本源量子计算科技有限责任公司 | 量子芯片控制器、量子计算处理系统和电子设备 |
CN113227975A (zh) * | 2021-03-31 | 2021-08-06 | 华为技术有限公司 | 一种同步方法及装置 |
CN114258538A (zh) * | 2019-08-16 | 2022-03-29 | 谷歌有限责任公司 | 片上操作的显式调度 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3430767B1 (en) * | 2016-03-16 | 2020-09-23 | Telefonaktiebolaget LM Ericsson (PUBL) | Method and device for real-time network event processing |
US9875167B1 (en) * | 2017-03-29 | 2018-01-23 | Google Inc. | Distributed hardware tracing |
US10365987B2 (en) | 2017-03-29 | 2019-07-30 | Google Llc | Synchronous hardware event collection |
US11144087B2 (en) * | 2018-08-10 | 2021-10-12 | Nvidia Corporation | Efficient performance monitoring of integrated circuit(s) having distributed clocks |
CN109981349B (zh) * | 2019-02-27 | 2022-02-25 | 华为云计算技术有限公司 | 调用链信息查询方法以及设备 |
GB2583103B (en) | 2019-04-16 | 2022-11-16 | Siemens Ind Software Inc | Tracing instruction execution |
US11294750B2 (en) * | 2019-07-15 | 2022-04-05 | Micron Technology, Inc. | Media management logger for a memory sub-system |
US11630919B1 (en) * | 2019-09-30 | 2023-04-18 | Amazon Technologies, Inc. | Management of sensitive data using static code analysis |
EP3839740A1 (en) * | 2019-12-20 | 2021-06-23 | GrAl Matter Labs S.A.S. | Message-based processing system and method of operating the same |
CN115135358B (zh) * | 2020-02-27 | 2024-07-02 | 美国西门子医学诊断股份有限公司 | 使用机器学习的自动传感器追踪验证 |
US11100166B1 (en) * | 2020-12-21 | 2021-08-24 | Coupang Corp. | Systems and methods for automatically updating guaranteed computing counters |
US20220198110A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Debugging architecture for system in package composed of multiple semiconductor chips |
KR102648657B1 (ko) * | 2021-10-06 | 2024-03-15 | 에스케이텔레콤 주식회사 | 무선통신시스템에서 원거리 통신을 위한 통신 장치 및 이를 위한 방법 |
US11966745B2 (en) | 2021-11-15 | 2024-04-23 | Google Llc | Sparse SIMD cross-lane processing unit |
US11972263B2 (en) | 2021-11-22 | 2024-04-30 | Google Llc | Cooperative instruction prefetch on multicore system |
WO2023128009A1 (ko) * | 2021-12-30 | 2023-07-06 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치 및 그의 동기화 방법 |
US11977499B2 (en) * | 2022-03-22 | 2024-05-07 | Google Llc | Streaming transfers and ordering model |
US20240201729A1 (en) * | 2022-12-16 | 2024-06-20 | Cirrus Logic International Semiconductor Ltd. | Event logging based on global clock in system with multiple components |
US11899516B1 (en) | 2023-07-13 | 2024-02-13 | T-Mobile Usa, Inc. | Creation of a digital twin for auto-discovery of hierarchy in power monitoring |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134676A (en) * | 1998-04-30 | 2000-10-17 | International Business Machines Corporation | Programmable hardware event monitoring method |
US6353924B1 (en) * | 1999-02-08 | 2002-03-05 | Incert Software Corporation | Method for back tracing program execution |
CN102193778A (zh) * | 2010-03-03 | 2011-09-21 | Arm有限公司 | 用于生成时间戳的方法、设备和跟踪模块 |
US20120179898A1 (en) * | 2011-01-10 | 2012-07-12 | Apple Inc. | System and method for enforcing software security through cpu statistics gathered using hardware features |
US20120226837A1 (en) * | 2011-03-02 | 2012-09-06 | Texas Instruments Incorporated | Method and System of debugging Multicore Bus Transaction Problems |
CN102792271A (zh) * | 2009-12-30 | 2012-11-21 | 国际商业机器公司 | 跨越多核心系统动态分布多维工作集 |
US20130042155A1 (en) * | 2011-08-11 | 2013-02-14 | Timothy J. Millet | Non-intrusive processor tracing |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4598364A (en) | 1983-06-29 | 1986-07-01 | International Business Machines Corporation | Efficient trace method adaptable to multiprocessors |
JPH0283749A (ja) | 1988-09-21 | 1990-03-23 | Hitachi Ltd | マイクロプロセッサの内部割込み制御方式 |
JPH04148439A (ja) | 1990-10-12 | 1992-05-21 | Nec Corp | 情報処理装置のトレース方式 |
JPH04242455A (ja) | 1991-01-16 | 1992-08-31 | Nec Ibaraki Ltd | プロセッサ間通信トレース回路 |
JPH05128079A (ja) | 1991-10-31 | 1993-05-25 | Nec Corp | マルチプロセツサシステムにおけるトレース方式 |
JPH07200352A (ja) | 1993-12-28 | 1995-08-04 | Hitachi Ltd | データプロセッサ、プログラム翻訳方法、及びデバッグツール |
US6128415A (en) | 1996-09-06 | 2000-10-03 | Polaroid Corporation | Device profiles for use in a digital image processing system |
US5682328A (en) | 1996-09-11 | 1997-10-28 | Bbn Corporation | Centralized computer event data logging system |
US5796939A (en) * | 1997-03-10 | 1998-08-18 | Digital Equipment Corporation | High frequency sampling of processor performance counters |
US6189140B1 (en) | 1997-04-08 | 2001-02-13 | Advanced Micro Devices, Inc. | Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic |
US6256775B1 (en) | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
US6233531B1 (en) | 1997-12-19 | 2001-05-15 | Advanced Micro Devices, Inc. | Apparatus and method for monitoring the performance of a microprocessor |
US6098169A (en) | 1997-12-23 | 2000-08-01 | Intel Corporation | Thread performance analysis by monitoring processor performance event registers at thread switch |
EP0992907B1 (en) * | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Trace fifo management |
JP2000348007A (ja) | 1999-06-03 | 2000-12-15 | Nec Corp | マルチプロセッサシステムのための動作トレース時刻同期方式およびその方法 |
US6530076B1 (en) | 1999-12-23 | 2003-03-04 | Bull Hn Information Systems Inc. | Data processing system processor dynamic selection of internal signal tracing |
US6545549B2 (en) * | 2000-03-02 | 2003-04-08 | Texas Instruments Incorporated | Remotely controllable phase locked loop clock circuit |
US6789182B1 (en) | 2000-11-13 | 2004-09-07 | Kevin Jay Brothers | System and method for logging computer event data and physical components of a complex distributed system |
US6813731B2 (en) | 2001-02-26 | 2004-11-02 | Emc Corporation | Methods and apparatus for accessing trace data |
US6769054B1 (en) | 2001-02-26 | 2004-07-27 | Emc Corporation | System and method for preparation of workload data for replaying in a data storage environment |
US6988155B2 (en) | 2001-10-01 | 2006-01-17 | International Business Machines Corporation | Aggregation of hardware events in multi-node systems |
US7080283B1 (en) | 2002-10-15 | 2006-07-18 | Tensilica, Inc. | Simultaneous real-time trace and debug for multiple processing core systems on a chip |
US7069176B2 (en) | 2003-08-07 | 2006-06-27 | Arm Limited | Trace source correlation in a data processing apparatus |
JP2005165825A (ja) | 2003-12-04 | 2005-06-23 | Canon Inc | トレース情報記録装置 |
US7529979B2 (en) | 2003-12-12 | 2009-05-05 | International Business Machines Corporation | Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control |
US20060005083A1 (en) | 2004-06-30 | 2006-01-05 | International Business Machines Corporation | Performance count tracing |
US9038070B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
GB0420442D0 (en) | 2004-09-14 | 2004-10-20 | Ignios Ltd | Debug in a multicore architecture |
US7543161B2 (en) | 2004-09-30 | 2009-06-02 | International Business Machines Corporation | Method and apparatus for tracking variable speed microprocessor performance caused by power management in a logically partitioned data processing system |
US7673050B2 (en) | 2004-12-17 | 2010-03-02 | Microsoft Corporation | System and method for optimizing server resources while providing interaction with documents accessible through the server |
US7418629B2 (en) | 2005-02-11 | 2008-08-26 | International Business Machines Corporation | Synchronizing triggering of multiple hardware trace facilities using an existing system bus |
JP2006318412A (ja) | 2005-05-16 | 2006-11-24 | Toshiba Corp | 半導体装置 |
US8079037B2 (en) * | 2005-10-11 | 2011-12-13 | Knoa Software, Inc. | Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications |
JP2008234191A (ja) | 2007-03-19 | 2008-10-02 | Toshiba Corp | ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 |
US8762951B1 (en) | 2007-03-21 | 2014-06-24 | Oracle America, Inc. | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor |
US8181185B2 (en) * | 2007-05-31 | 2012-05-15 | Intel Corporation | Filtering of performance monitoring information |
US20110246521A1 (en) * | 2007-08-06 | 2011-10-06 | Hui Luo | System and method for discovering image quality information related to diagnostic imaging performance |
JP4658182B2 (ja) | 2007-11-28 | 2011-03-23 | 株式会社荏原製作所 | 研磨パッドのプロファイル測定方法 |
US20100083237A1 (en) | 2008-09-26 | 2010-04-01 | Arm Limited | Reducing trace overheads by modifying trace operations |
US8301759B2 (en) | 2008-10-24 | 2012-10-30 | Microsoft Corporation | Monitoring agent programs in a distributed computing platform |
WO2010097875A1 (ja) | 2009-02-24 | 2010-09-02 | パナソニック株式会社 | データ処理装置、方法 |
JP5326708B2 (ja) | 2009-03-18 | 2013-10-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US8572581B2 (en) | 2009-03-26 | 2013-10-29 | Microsoft Corporation | Measurement and reporting of performance event rates |
JP5266385B2 (ja) | 2009-06-10 | 2013-08-21 | パナソニック株式会社 | トレース処理装置およびトレース処理システム |
US8554892B2 (en) | 2009-06-22 | 2013-10-08 | Citrix Systems, Inc. | Systems and methods for n-core statistics aggregation |
JP2011013867A (ja) * | 2009-06-30 | 2011-01-20 | Panasonic Corp | データ処理装置、性能評価解析システム |
US8407528B2 (en) * | 2009-06-30 | 2013-03-26 | Texas Instruments Incorporated | Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems |
US20110047358A1 (en) * | 2009-08-19 | 2011-02-24 | International Business Machines Corporation | In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication |
JP2011243110A (ja) | 2010-05-20 | 2011-12-01 | Renesas Electronics Corp | 情報処理装置 |
US8607202B2 (en) | 2010-06-04 | 2013-12-10 | Lsi Corporation | Real-time profiling in a multi-core architecture |
GB2481385B (en) | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
US20120042212A1 (en) | 2010-08-10 | 2012-02-16 | Gilbert Laurenti | Mixed Mode Processor Tracing |
US20120226839A1 (en) | 2011-03-02 | 2012-09-06 | Texas Instruments Incorporated | Method and System for Monitoring and Debugging Access to a Bus Slave Using One or More Throughput Counters |
US8943248B2 (en) | 2011-03-02 | 2015-01-27 | Texas Instruments Incorporated | Method and system for handling discarded and merged events when monitoring a system bus |
US10642709B2 (en) | 2011-04-19 | 2020-05-05 | Microsoft Technology Licensing, Llc | Processor cache tracing |
US8683268B2 (en) | 2011-06-20 | 2014-03-25 | International Business Machines Corporation | Key based cluster log coalescing |
US8935574B2 (en) * | 2011-12-16 | 2015-01-13 | Advanced Micro Devices, Inc. | Correlating traces in a computing system |
US9454462B2 (en) | 2012-03-16 | 2016-09-27 | International Business Machines Corporation | Run-time instrumentation monitoring for processor characteristic changes |
US9237082B2 (en) | 2012-03-26 | 2016-01-12 | Hewlett Packard Enterprise Development Lp | Packet descriptor trace indicators |
US9021311B2 (en) | 2012-08-28 | 2015-04-28 | Freescale Semiconductor, Inc. | Method and apparatus for filtering trace information |
US9645870B2 (en) | 2013-06-27 | 2017-05-09 | Atmel Corporation | System for debugging DMA system data transfer |
US20160117196A1 (en) | 2013-07-31 | 2016-04-28 | Hewlett-Packard Development Company, L.P. | Log analysis |
JP6122749B2 (ja) | 2013-09-30 | 2017-04-26 | ルネサスエレクトロニクス株式会社 | コンピュータシステム |
TWI514145B (zh) | 2013-10-21 | 2015-12-21 | Univ Nat Sun Yat Sen | 可儲存除錯資料的處理器、其快取及控制方法 |
US9684583B2 (en) | 2013-11-05 | 2017-06-20 | Texas Instruments Incorporated | Trace data export to remote memory using memory mapped write transactions |
JP2015114675A (ja) * | 2013-12-09 | 2015-06-22 | 三菱電機株式会社 | アプリケーションソフトウェア加速試験装置および試験方法 |
JP6258159B2 (ja) | 2014-08-26 | 2018-01-10 | 株式会社東芝 | プログラム情報生成システム、方法、及びプログラム |
US20160070636A1 (en) | 2014-09-04 | 2016-03-10 | Home Box Office, Inc. | Conditional wrapper for program object |
EP3035249B1 (en) | 2014-12-19 | 2019-11-27 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
CN106033385A (zh) | 2015-03-19 | 2016-10-19 | 启碁科技股份有限公司 | 用于追踪程序执行状态的方法与多核心处理系统 |
US11232848B2 (en) | 2015-04-30 | 2022-01-25 | Hewlett Packard Enterprise Development Lp | Memory module error tracking |
US20160378636A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Software-Initiated Trace Integrated with Hardware Trace |
CN105354136B (zh) | 2015-09-25 | 2018-06-15 | 华为技术有限公司 | 一种调试方法、多核处理器和调试设备 |
US9858167B2 (en) | 2015-12-17 | 2018-01-02 | Intel Corporation | Monitoring the operation of a processor |
US20170371761A1 (en) | 2016-06-24 | 2017-12-28 | Advanced Micro Devices, Inc. | Real-time performance tracking using dynamic compilation |
US9965375B2 (en) | 2016-06-28 | 2018-05-08 | Intel Corporation | Virtualizing precise event based sampling |
US9959498B1 (en) * | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10127283B2 (en) | 2016-10-31 | 2018-11-13 | International Business Machines Corporation | Projecting effect of in-flight streamed data on a relational database |
US9875167B1 (en) | 2017-03-29 | 2018-01-23 | Google Inc. | Distributed hardware tracing |
US10365987B2 (en) | 2017-03-29 | 2019-07-30 | Google Llc | Synchronous hardware event collection |
KR101988558B1 (ko) | 2017-06-07 | 2019-06-12 | 현대오트론 주식회사 | 멀티 코어를 갖는 마이크로콘트롤러 유닛을 감시하는 감시장치 및 그것의 동작 방법 |
-
2017
- 2017-03-29 US US15/472,932 patent/US10365987B2/en active Active
- 2017-10-20 KR KR1020237002919A patent/KR102584961B1/ko active IP Right Grant
- 2017-10-20 KR KR1020197021959A patent/KR102295511B1/ko active IP Right Grant
- 2017-10-20 WO PCT/US2017/057638 patent/WO2018182783A1/en active Application Filing
- 2017-10-20 KR KR1020217026813A patent/KR102493495B1/ko active IP Right Grant
- 2017-10-20 SG SG11201906749UA patent/SG11201906749UA/en unknown
- 2017-10-20 JP JP2019540323A patent/JP7196083B2/ja active Active
- 2017-10-20 BR BR112019015427-2A patent/BR112019015427B1/pt active IP Right Grant
- 2017-10-26 DE DE202017106508.1U patent/DE202017106508U1/de active Active
- 2017-10-26 DE DE102017125180.4A patent/DE102017125180A1/de active Pending
- 2017-10-30 TW TW108143681A patent/TWI808280B/zh active
- 2017-10-30 TW TW106137283A patent/TWI681332B/zh active
- 2017-10-31 GB GB1717925.0A patent/GB2561043B/en active Active
- 2017-10-31 EP EP17199338.9A patent/EP3382552A1/en active Pending
- 2017-12-08 CN CN202210792957.9A patent/CN115168147A/zh active Pending
- 2017-12-08 CN CN201711292833.XA patent/CN108694109B/zh active Active
-
2019
- 2019-01-23 HK HK19101202.1A patent/HK1259155A1/zh unknown
- 2019-07-24 US US16/520,558 patent/US11232012B2/en active Active
-
2022
- 2022-01-07 US US17/571,373 patent/US11921611B2/en active Active
- 2022-12-14 JP JP2022199690A patent/JP7427759B2/ja active Active
-
2024
- 2024-01-24 JP JP2024008574A patent/JP2024050667A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134676A (en) * | 1998-04-30 | 2000-10-17 | International Business Machines Corporation | Programmable hardware event monitoring method |
US6353924B1 (en) * | 1999-02-08 | 2002-03-05 | Incert Software Corporation | Method for back tracing program execution |
CN102792271A (zh) * | 2009-12-30 | 2012-11-21 | 国际商业机器公司 | 跨越多核心系统动态分布多维工作集 |
CN102193778A (zh) * | 2010-03-03 | 2011-09-21 | Arm有限公司 | 用于生成时间戳的方法、设备和跟踪模块 |
US20120179898A1 (en) * | 2011-01-10 | 2012-07-12 | Apple Inc. | System and method for enforcing software security through cpu statistics gathered using hardware features |
US20120226837A1 (en) * | 2011-03-02 | 2012-09-06 | Texas Instruments Incorporated | Method and System of debugging Multicore Bus Transaction Problems |
US20130042155A1 (en) * | 2011-08-11 | 2013-02-14 | Timothy J. Millet | Non-intrusive processor tracing |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046116A (zh) * | 2019-04-23 | 2019-07-23 | 上海燧原智能科技有限公司 | 一种张量填充方法、装置、设备及存储介质 |
CN110311863A (zh) * | 2019-05-09 | 2019-10-08 | 北京邮电大学 | 一种路由路径确定方法及装置 |
CN110311863B (zh) * | 2019-05-09 | 2020-08-21 | 北京邮电大学 | 一种路由路径确定方法及装置 |
CN114258538A (zh) * | 2019-08-16 | 2022-03-29 | 谷歌有限责任公司 | 片上操作的显式调度 |
CN114258538B (zh) * | 2019-08-16 | 2024-04-12 | 谷歌有限责任公司 | 片上操作的显式调度 |
CN111160558A (zh) * | 2019-12-13 | 2020-05-15 | 合肥本源量子计算科技有限责任公司 | 量子芯片控制器、量子计算处理系统和电子设备 |
CN113227975A (zh) * | 2021-03-31 | 2021-08-06 | 华为技术有限公司 | 一种同步方法及装置 |
CN113227975B (zh) * | 2021-03-31 | 2023-03-17 | 华为技术有限公司 | 一种同步方法及装置 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694109A (zh) | 同步硬件事件收集 | |
CN208766643U (zh) | 硬件跟踪系统 | |
US10990502B2 (en) | Detailed performance analysis by flow aware marker mechanism | |
TWI851297B (zh) | 用於收集關於類神經網路運算之事件資料之方法、事件收集系統及非暫態電腦可讀儲存裝置 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1259155 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |