CN108694112B - 分布式硬件跟踪 - Google Patents

分布式硬件跟踪 Download PDF

Info

Publication number
CN108694112B
CN108694112B CN201711294123.0A CN201711294123A CN108694112B CN 108694112 B CN108694112 B CN 108694112B CN 201711294123 A CN201711294123 A CN 201711294123A CN 108694112 B CN108694112 B CN 108694112B
Authority
CN
China
Prior art keywords
hardware
trace
events
processor
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.)
Active
Application number
CN201711294123.0A
Other languages
English (en)
Other versions
CN108694112A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202110903441.2A priority Critical patent/CN113778785A/zh
Publication of CN108694112A publication Critical patent/CN108694112A/zh
Application granted granted Critical
Publication of CN108694112B publication Critical patent/CN108694112B/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/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring 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
    • G06F11/3075Monitoring 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 the data filtering being achieved in order to maintain consistency among the monitored data, e.g. ensuring that the monitored data belong to the same timeframe, to the same system or component
    • 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/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/489Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using time information
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring 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)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请涉及分布式硬件跟踪。一种由一个或多个处理器执行的计算机实现的方法,该方法包括:监视由第一处理器组件执行的程序代码执行;以及监视由第二处理器组件执行的程序代码执行。计算系统将识别硬件事件的数据存储在存储器缓冲区中。所存储的事件跨包括至少第一和第二处理器组件的处理器单元发生。硬件事件各自包括事件时间戳和表征事件的元数据。系统生成识别硬件事件的数据结构。数据结构以按时间就排序的序列布置事件并且将事件与至少第一或第二处理器组件相关联。系统将数据结构存储在主机设备的存储库中,并且使用数据结构来分析由所述第一或第二处理器组件执行的程序代码的性能。

Description

分布式硬件跟踪
相关申请的交叉引用
本申请涉及于2017年3月29日提交、标题为“同步硬件事件收集(SynchronousHardware Event Collection)”、代理人案号16113-8129001的美国专利申请号15/472,932。美国专利申请号15/472,932的全部公开内容特此通过引用完整并入本文中。
技术领域
本说明书涉及分析程序代码的执行。
背景技术
在分布式硬件组件内执行的分布式软件的有效性能分析可能是一项复杂的任务。分布式硬件组件能够是两个或两个以上中央处理单元(CPU)(或者图形处理单元(GPU))的相应处理器核,它们协作并交互以执行较大软件程序或程序代码的部分。
从硬件角度(例如,在CPU或GPU内),通常存在两种类型的可应用于性能分析的信息或特征:1)硬件性能计数器;以及2)硬件事件跟踪。
发明内容
一般而言,本说明书中描述的主题的一个方面能够被体现成一种由一个或多个处理器执行的计算机实现的方法。该方法包括:监视由第一处理器组件进行的程序代码的执行,第一处理器组件被配置成执行程序代码的至少第一部分;以及监视由第二处理器组件进行的程序代码的执行,第二处理器组件被配置成执行程序代码的至少第二部分。
该方法进一步包括:由计算系统将识别跨包括第一处理器组件和第二处理器组件的处理器单元发生的一个或多个硬件事件的数据存储在至少一个存储器缓冲区中。每个硬件事件表示与程序代码的存储器存取操作相关联的数据通信、程序代码的已发布指令或者程序代码的已执行指令中的至少一个。识别一个或多个硬件事件中的每一个的数据包括硬件事件时间戳和表征硬件事件的元数据。该方法包括:由计算系统生成识别一个或多个硬件事件的数据结构,该数据结构被配置成将一个或多个硬件事件以与至少第一处理器组件和第二处理器组件相关联的事件的按时间排序的序列来布置。
该方法进一步包括:由计算系统将生成的数据结构存储在主机设备的存储库中,以便用于分析由至少第一处理器组件或者第二处理器组件执行的程序代码的性能。
这些及其他实施方式能够各自可选地包括以下特征中的一个或多个。例如,在一些实施方式中,该方法进一步包括:由计算系统检测与由第一处理器组件或者第二处理器组件中的至少一个执行的程序代码的部分相关联的触发功能;以及响应于检测到触发功能,由计算系统发起至少一个跟踪事件,其使得与一个或多个硬件事件相关联的数据存储在至少一个存储器缓冲区中。
在一些实施方式中,触发功能对应于程序代码中的特定序列步骤或者由处理器单元使用的全局时钟指示的特定时间参数中的至少一个;以及发起至少一个跟踪事件包括确定跟踪位被设置成特定值,至少一个跟踪事件与包括跨处理器单元发生的多个中间操作的存储器存取操作相关联,以及响应于确定跟踪位被设置成特定值,与多个中间操作相关联的数据被存储在一个或多个存储器缓冲区中。
在一些实施方式中,存储识别一个或多个硬件事件的数据进一步包括:在第一处理器组件的第一存储器缓冲区中,存储识别一个或多个硬件事件中的硬件事件的数据的第一子集。响应于第一处理器组件执行与程序代码的至少第一部分相关联的硬件跟踪指令而发生存储。
在一些实施方式中,存储识别一个或多个硬件事件的数据进一步包括:在第二处理器组件的第二存储器缓冲区中,存储识别一个或多个硬件事件中的硬件事件的数据的第二子集。响应于第二处理器组件执行与程序代码的至少第二部分相关联的硬件跟踪指令而发生存储。
在一些实施方式中,生成数据结构进一步包括:由计算系统将识别硬件事件的数据的第一子集中的相应事件的至少硬件事件时间戳与识别硬件事件的数据的第二子集中的相应事件的至少硬件事件时间戳相比较;以及由计算系统部分地基于第一子集中的相应事件与第二子集中的相应事件之间的比较来提供关联硬件事件集以在所述数据结构中呈现。
在一些实施方式中,所生成的数据结构识别指示特定硬件事件的延时属性的至少一个参数,延时属性至少指示特定硬件事件的持续时间。在一些实施方式中,计算系统的至少一个处理器是具有一个或多个处理器组件的多核多节点处理器,并且一个或多个硬件事件部分地对应于至少在第一节点的第一处理器组件与第二节点的第二处理器组件之间发生的数据传送。
在一些实施方式中,第一处理器组件和第二处理器组件是以下之一:计算系统的处理器、处理器核、存储器存取引擎或者硬件特征,并且一个或多个硬件事件部分地对应于在源与目的地之间的数据分组的移动;以及表征硬件事件的元数据对应于与直接存储器存取(DMA)跟踪相关联的源存储器地址、目的地存储器地址、唯一跟踪标识号码或者大小参数中的至少一个。
在一些实施方式中,特定跟踪(ID)号码与跨处理器单元发生的多个硬件事件相关联,以及其中,多个硬件事件对应于特定存储器存取操作,并且特定跟踪ID号码被用于关联多个硬件事件中的一个或多个硬件事件并且被用于基于关联来确定存储器存取操作的延时属性。
本说明书中所述的主题的另一方面能够被体现成一种分布式硬件跟踪系统,包括:一个或多个处理器,包括一个或多个处理器核;一个或多个机器可读的存储单元,用于存储指令,指令可由一个或多个处理器执行以执行操作,包括:监视由第一处理器组件进行的程序代码的执行,第一处理器组件被配置成执行程序代码的至少第一部分;以及监视由第二处理器组件进行的程序代码的执行,第二处理器组件被配置成执行程序代码的至少第二部分。
该方法进一步包括:由计算系统将识别跨包括第一处理器组件和第二处理器组件的处理器单元发生的一个或多个硬件事件的数据存储在至少一个存储器缓冲区中。每个硬件事件表示与程序代码的存储器存取操作相关联的数据通信、程序代码的已发布指令或者程序代码的已执行指令中的至少一个。识别一个或多个硬件事件中的每一个的数据包括硬件事件时间戳和表征硬件事件的元数据。该方法包括:由计算系统生成识别一个或多个硬件事件的数据结构,数据结构被配置成将一个或多个硬件事件以与至少第一处理器组件和第二处理器组件相关联的事件的按时间排序的序列来布置。
该方法进一步包括:由计算系统将生成的数据结构存储在主机设备的存储库中,以便用于分析由至少第一处理器组件或者第二处理器组件执行的程序代码的性能。
该方面和其他方面的其他实施方式包括配置成执行编码在计算机存储设备上的方法的动作的对应的系统、装置和计算机程序。一个或多个计算机的系统能够借助安装在系统上的软件、固件、硬件或其组合而被配置成在操作中使得系统执行动作。一个或多个计算机程序能够借助具有指令而被配置成当由数据处理装置执行时使得装置执行动作。
本说明书中所述的主题能够被实施成特定实施例,以便实现以下优点中的一个或多个。所述的硬件跟踪系统能够高效关联在由包括多节点多核处理器的分布式处理单元执行分布式软件程序期间发生的硬件事件。所述的硬件跟踪系统进一步包括能够在多个跨节点配置中收集和关联硬件事件/跟踪数据的机制。
硬件跟踪系统通过使用通过硬件旋钮/特征执行的动态触发条件来提高计算效率。另外,利用事件描述符,诸如唯一跟踪标识符、事件时间戳、事件源地址和事件目的地地址,硬件事件能够以序列方式按时间排序。这些描述符有助于软件程序员和处理器设计工程师高效地调试和分析源代码执行期间可能产生的软件和硬件性能问题。
在附图以及下面的描述中阐明在本说明书中描述的主题的一个或多个实施方式的细节。参阅说明书、附图和权利要求,主题的其他潜在特征、方面和优势将显而易见。
附图说明
图1图示出用于分布式硬件跟踪的示例计算机系统的框图。
图2图示出用于分布式硬件跟踪的示例计算系统的跟踪链和相应节点的框图。
图3图示出示例跟踪复用器设计架构和示例数据结构的框图。
图4是指示由用于分布式硬件跟踪的示例计算系统执行的直接存储器存取跟踪事件的跟踪活动的框图。
图5是用于分布式硬件跟踪的示例过程的过程流程图。
各图中相似的附图标号和标记指示相似的元素。
具体实施方式
本说明书中所述的主题总体上涉及分布式硬件跟踪。特别地,计算系统监视由一个或者多个处理器核执行的程序代码的执行。例如,计算系统能够监视通过第一处理器核执行的程序代码的执行和通过至少第二处理器核执行的程序代码的执行。计算系统存储识别存储器缓冲区中的一个或者多个硬件事件的数据。识别事件的被存储的数据对应于在遍及至少包括第一和第二处理器核的分布式处理器单元发生的事件。
对于各个硬件事件,所存储的数据包括表征硬件事件的事件时间戳和元数据。系统生成识别硬件事件的数据结构。数据结构按时间顺序排列事件并将事件与至少第一或第二处理器核相关联。系统将数据结构存储在主机设备的存储库中并使用该数据结构分析由第一或第二处理器核执行的程序代码的性能。
图1图示用于分布式硬件跟踪的示例计算系统100的框图。如在本说明书中所使用的,分布式硬件系统跟踪对应于识别在示例处理器微芯片的组件和子组件内发生的事件的数据的存储。此外,如在此所使用的,分布式硬件系统(或跟踪系统)对应于处理器微芯片或处理单元的集合,它们协作以执行被配置用于处理器微芯片或分布式处理单元当中的分布式执行的软件/程序代码的各个部分。
系统100能够是分布式处理系统,具有以分布式方式,即,通过在系统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)的值,FPC 104(或者核116)中的示例跟踪标记寄存器的值,或者SPC 106中的标记的值,通过系统100动态地开始和停止跟踪。
在于2017年3月29日提交的标题为“同步硬件事件收集”的和代理人案号16113-8129001的有关美国专利申请号15/472,932中描述用于动态地开始和停止跟踪活动以及用于同步硬件事件收集的系统和方法和相关的详情和描述。美国专利申请No.15/472,932的全部公开内容特此通过引用完整并入本文中。
在一些实施方式中,对于核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的SPC106与节点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内的局部跟踪事件当中选择事件。所选择的事件被放置到共享跟踪事件FIFO312中,其也用作存储队列。
仲裁器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和SPC106相关联的事件的按时间排序的序列来布置。在一些实例中,系统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。
图5是使用系统100和系统100的一个或多个节点200、201的组件特征的分布式硬件跟踪的示例过程500的过程流程图。因此,过程500能够使用包括节点200、201的系统100的上述计算资源的一个或多个来实现。
过程500始于框702,并且包括监视由一个或多个处理器组件(至少包括FPC 104和SPC 106)执行的程序代码的执行的计算系统100。在一些实施方式中,能够至少部分地由多个主机系统或单个主机系统的子系统监视生成跟踪活动的程序代码的执行。因此,在这些实现方式中,系统100能够执行与用于在分布式处理单元上发生的硬件事件的跟踪活动的分析相关的多个过程500。
在一些实现方式中,第一处理器组件被配置成执行被监视的程序代码的至少第一部分。在框504处,过程500包括计算系统100监视由第二处理器组件执行的程序代码的执行。在一些实现方式中,第二处理器组件被配置成执行被监视的程序代码的至少第二部分。
计算系统100的组件能够均包括至少一个存储器缓冲区。过程500的框506包括系统100存储识别特定组件的至少一个存储器缓冲区中的一个或多个硬件事件的数据。在一些实现方式中,硬件事件发生遍布分布式处理器单元,该分布式处理器单元至少包括第一处理器组件和第二处理器组件。被存储的识别硬件事件的数据能够均包括表征硬件事件的硬件事件时间戳和元数据。在一些实现方式中,硬件事件的收集对应于时间线事件。
例如,系统100能够存储识别一个或多个硬件事件的数据,该一个或多个硬件事件部分对应于系统100内的源硬件组件和系统100内的目的地硬件组件之间的数据分组的移动。在一些实施方式中,表征硬件事件的存储的元数据能够对应于下述中的至少一个:1)源存储器地址,2)目的地存储器地址,3)与使硬件事件被存储的跟踪条目有关的唯一跟踪标识号,或者4)与直接存储器访问(DMA)跟踪条目相关联的大小参数。
在一些实施方式中,存储识别硬件事件的集合的数据包括将事件数据存储在FPC104和/或SPC 106的存储器缓冲区中,其对应于例如至少一个本地跟踪事件队列310。存储事件数据能够指示硬件事件数据的子集,其能够被用于生成更大的硬件事件时间线。在一些实施方式中,事件数据的存储响应于执行与由系统100的组件执行的程序代码的部分相关联的硬件跟踪指令的FPC 104或SPC 106中的至少一个发生。
在过程500的框508处,系统100生成识别来自于硬件事件集合的一个或多个硬件事件的数据结构,诸如结构320。数据结构能够按照与至少第一处理器部件和第二处理器部件相关联的事件的时间排序顺序排列一个或多个硬件事件。在一些实施方式中,数据结构识别用于特定跟踪事件的硬件事件时间戳、与跟踪事件相关联的源地址或与跟踪事件相关联的存储器地址。
在过程500的框510处,系统100将所生成的数据结构存储在与主机系统126相关联的主机设备的存储库中。在一些实施方式中,主机系统126能够使用所存储的数据结构以分析由至少第一处理器组件或第二处理器组件执行的程序代码的性能。同样,主机系统126能够使用所存储的数据结构以分析系统100的至少一个组件的性能。
例如,用户或主机系统126能够分析数据结构以检测或确定是否存在与程序代码内的特定软件模块的执行相关联的性能问题。示例问题可能包括软件模块未在分配的执行时间窗口内完成执行。
此外,用户或主机设备126能够检测或确定系统100的特定组件是否在阈值性能水平以上或以下操作。与组件性能有关的示例问题能够包括执行特定事件但是生成超出结果数据的可接受参数范围结果数据的特定硬件组件。在一些实施方式中,结果数据可能与执行基本上相似的操作的系统100的其他相关组件生成的结果数据不一致。
例如,在程序代码的执行期间,可能要求系统100的第一组件来完成操作并产生结果。类似地,可能要求系统100的第二组件来完成基本类似的操作并产生基本类似的结果。分析生成的数据结构能够指示第二个组件生成的结果与第一个组件生成的结果有很大不同。类似地,数据结构可以指示明显在可接受的结果参数的范围之外的第二组件的结果参数值。这些结果可能指示系统100的第二组件潜在的性能问题。
本说明书中所述的主题的实施例以及功能性操作能够在数字电路中、有形体现的计算机软件或固件中、计算机硬件中或者其中一个或多个的组合中来实现,包括本说明书中所述的结构以及其结构等同物。本说明书中所述的主题的实施例能够被实现为一个或多个计算机程序,即在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,用于由数据处理装置来执行或者控制其操作。替选地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电子、光学或者电磁信号,该信号被生成以编码用于传输至适当的接收器装置的信息,以便由数据处理装置执行。计算机存储介质能够是机器可读的存储设备、机器可读的存储衬底、随机或串行存取存储器设备或者其中一个或多个的组合。
本说明书中所述的过程以及逻辑流程能够由执行一个或多个计算机程序以通过对输入数据进行操作并且生成数据来执行功能的可编程计算机来执行。所述的过程以及逻辑流程也能够通过专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,例如,FPGA(现场可编程门阵列)、ASIC(专用集成电路)或者GPGPU(通用图形处理单元)。
适于执行计算机程序的计算机包括、例如能够基于通用或专用的微处理器或者二者,或者任何其他种类的中央处理单元。一般地,中央处理单元会从只读存储器或随机存取存储器或者二者接收指令和数据。计算机的基本元素是用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。一般地,计算机还会包括或者可操作地耦合至用于存储数据的一个或多个大容量存储设备以自其接收数据或向其传送数据或者兼顾,例如磁性的磁光盘或者光盘。然而,计算机不必具有这样的设备。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失存储器、介质和存储设备,例如包括例如EPROM、EEPROM和闪存设备的半导体存储设备、例如内置硬盘或可移动磁盘的磁盘。处理器和存储器能够增加或结合专用逻辑电路。
虽然本说明书包含许多特定实施方式细节,但这些不应当被解释为对任何发明或者可能要求保护的内容的范围的限制,而应被理解为对可能对于特定发明的特定实施例是特定特征的描述。本说明书中在单独实施例的场境中描述的某些特征也能够在单个实施例中组合来实施。反之,在单个实施例的场境中描述的各种特征也能够单独地在多个实施例中或者以任何适当的子组合来实施。此外,尽管在上文可以将特征描述为以某些组合进行动作乃至最初如此要求保护特征,但来自要求保护的组合的一个或多个特征在一些情况下能够从所述组合中排除,并且所要求保护的组合可以涉及子组合或者子组合的变型。
类似地,虽然在图中以特定次序来描绘操作,但这不应被理解为要求以所示的特定次序或者以顺序来执行这样的操作,或者执行所有图示的操作,以获得期望的结果。在某些情况下,多任务以及并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中要求这样的分离,而应理解的是,所述的程序组件和系统一般能够一起被集成于单个软件产品中或者被封装到多个软件产品中。
已对所述主题的特定实施例予以描述。其他实施例在所附权利要求的范围内。例如,能够以不同的次序来执行权利要求中所述的动作并且仍然获得期望的结果。作为一个示例,在附图中所描绘的过程不一定要求所示的特定次序或者顺序来获得期望的结果。在某些实施方式中,多任务以及并行处理可能是有利的。

Claims (19)

1.一种由具有一个或多个处理器的计算系统执行的计算机实现的方法,所述方法包括:
监视由第一处理器组件进行的程序代码的执行,所述第一处理器组件被配置成执行所述程序代码的至少第一部分;
监视由第二处理器组件进行的所述程序代码的执行,所述第二处理器组件被配置成执行所述程序代码的至少第二部分;
由所述计算系统存储识别跨包括所述第一处理器组件和所述第二处理器组件的多个处理器单元发生的一个或多个硬件事件的数据,每个硬件事件表示与所述程序代码的存储器存取操作相关联的数据通信、所述程序代码的已发布指令以及所述程序代码的已执行指令中的至少一个,其中,识别所述一个或多个硬件事件中的每一个的数据包括硬件事件时间戳和表征所述硬件事件的元数据;
由所述计算系统生成识别所述一个或多个硬件事件的数据结构,所述数据结构被配置成将所述一个或多个硬件事件以与至少所述第一处理器组件和所述第二处理器组件相关联的事件的按时间排序的序列来布置,其中所述数据结构包括与跨所述多个处理器单元发生的多个硬件事件相关联的特定跟踪ID号码,所述多个硬件事件与特定存储器存取操作相对应,并且其中所述特定跟踪ID号码被用于关联所述多个硬件事件中的一个或多个硬件事件;以及
由所述计算系统将生成的数据结构存储在主机设备的存储库中。
2.根据权利要求1所述的方法,进一步包括:
由所述计算系统检测与由所述第一处理器组件以及所述第二处理器组件中的至少一个执行的所述程序代码的部分相关联的触发功能;以及
响应于检测到所述触发功能,由所述计算系统发起至少一个跟踪事件,所述至少一个跟踪事件使得与所述一个或多个硬件事件相关联的数据被存储在至少一个存储器缓冲区中。
3.根据权利要求2所述的方法,其中,所述触发功能对应于所述程序代码中的特定序列步骤以及由所述多个处理器单元使用的全局时钟指示的特定时间参数中的至少一个;以及
其中,发起所述至少一个跟踪事件包括确定跟踪位被设置成特定值,所述至少一个跟踪事件与包括跨所述多个处理器单元发生的多个中间操作的存储器存取操作相关联,以及其中,响应于确定所述跟踪位被设置成所述特定值,与所述多个中间操作相关联的数据被存储在一个或多个存储器缓冲区中。
4.根据权利要求1所述的方法,其中,存储识别所述一个或多个硬件事件的数据进一步包括:
在所述第一处理器组件的第一存储器缓冲区中存储识别所述一个或多个硬件事件的所述数据的第一子集,其中,所述存储响应于所述第一处理器组件执行与所述程序代码的至少所述第一部分相关联的硬件跟踪指令而发生。
5.根据权利要求4所述的方法,其中,存储识别所述一个或多个硬件事件的数据进一步包括:
在所述第二处理器组件的第二存储器缓冲区中存储识别所述一个或多个硬件事件的所述数据的第二子集,其中,所述存储响应于所述第二处理器组件执行与所述程序代码的至少所述第二部分相关联的硬件跟踪指令而发生。
6.根据权利要求5所述的方法,其中,生成所述数据结构进一步包括:
由所述计算系统将所述第一子集中的相应事件的至少硬件事件时间戳与所述第二子集中的相应事件的至少硬件事件时间戳相比较;以及
由所述计算系统部分地基于所述第一子集中的相应事件与所述第二子集中的相应事件之间的比较来提供关联硬件事件集以在所述数据结构中呈现。
7.根据权利要求1所述的方法,其中,所生成的数据结构识别指示特定硬件事件的延时属性的至少一个参数,所述延时属性至少指示所述特定硬件事件的持续时间。
8.根据权利要求1所述的方法,其中,所述计算系统的至少一个处理器是具有一个或多个处理器组件的多核多节点处理器,并且所述一个或多个硬件事件部分地对应于至少在第一节点的所述第一处理器组件与第二节点的所述第二处理器组件之间发生的数据传送。
9.根据权利要求1所述的方法,其中,所述第一处理器组件和所述第二处理器组件中的每一个是以下之一:所述计算系统的处理器、处理器核、存储器存取引擎以及硬件特征,以及其中,所述一个或多个硬件事件部分地对应于在源与目的地之间的数据分组的移动;以及
其中,表征所述硬件事件的元数据对应于与直接存储器存取(DMA)跟踪相关联的源存储器地址、目的地存储器地址、唯一跟踪标识号码以及大小参数中的至少一个。
10.一种分布式硬件跟踪系统,包括:
一个或多个处理器,所述一个或多个处理器包括一个或多个处理器核;
一个或多个机器可读的存储单元,其存储指令,所述指令在由所述一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括:
监视由第一处理器组件进行的程序代码的执行,所述第一处理器组件被配置成执行所述程序代码的至少第一部分;
监视由第二处理器组件进行的所述程序代码的执行,所述第二处理器组件被配置成执行所述程序代码的至少第二部分;
存储识别跨包括所述第一处理器组件和所述第二处理器组件的多个处理器单元发生的一个或多个硬件事件的数据,每个硬件事件表示与所述程序代码的存储器存取操作相关联的数据通信、所述程序代码的已发布指令以及所述程序代码的已执行指令中的至少一个,其中,识别所述一个或多个硬件事件中的每一个的数据包括硬件事件时间戳和表征所述硬件事件的元数据;
生成识别所述一个或多个硬件事件的数据结构,所述数据结构被配置成将所述一个或多个硬件事件以与至少所述第一处理器组件和所述第二处理器组件相关联的事件的按时间排序的序列来布置,其中所述数据结构包括与跨所述多个处理器单元发生的多个硬件事件相关联的特定跟踪ID号码,所述多个硬件事件与特定存储器存取操作相对应,并且其中所述特定跟踪ID号码被用于关联所述多个硬件事件中的一个或多个硬件事件;以及
将生成的数据结构存储在主机设备的存储库中。
11.根据权利要求10所述的分布式硬件跟踪系统,其中,所述操作进一步包括:
检测与由所述第一处理器组件以及所述第二处理器组件中的至少一个执行的所述程序代码的部分相关联的触发功能;以及
响应于检测到所述触发功能,发起至少一个跟踪事件,所述至少一个跟踪事件使得与所述一个或多个硬件事件相关联的数据被存储在至少一个存储器缓冲区中。
12.根据权利要求11所述的分布式硬件跟踪系统,其中,所述触发功能对应于所述程序代码中的特定序列步骤以及由所述多个处理器单元使用的全局时钟指示的特定时间参数中的至少一个;以及
其中,发起所述至少一个跟踪事件包括确定跟踪位被设置成特定值,所述至少一个跟踪事件与包括跨所述多个处理器单元发生的多个中间操作的存储器存取操作相关联,以及其中,响应于确定所述跟踪位被设置成所述特定值,与所述多个中间操作相关联的数据被存储在一个或多个存储器缓冲区中。
13.根据权利要求10所述的分布式硬件跟踪系统,其中,存储识别所述一个或多个硬件事件的数据进一步包括:
在所述第一处理器组件的第一存储器缓冲区中存储识别所述一个或多个硬件事件的所述数据的第一子集,其中,所述存储响应于所述第一处理器组件执行与所述程序代码的至少所述第一部分相关联的硬件跟踪指令而发生。
14.根据权利要求13所述的分布式硬件跟踪系统,其中,存储识别所述一个或多个硬件事件的数据进一步包括:
在所述第二处理器组件的第二存储器缓冲区中存储识别所述一个或多个硬件事件的所述数据的第二子集,其中,所述存储响应于所述第二处理器组件执行与所述程序代码的至少所述第二部分相关联的硬件跟踪指令而发生。
15.根据权利要求14所述的分布式硬件跟踪系统,其中,生成所述数据结构进一步包括:
将所述第一子集中的相应事件的至少硬件事件时间戳与所述第二子集中的相应事件的至少硬件事件时间戳相比较;以及
部分地基于所述第一子集中的相应事件与所述第二子集中的相应事件之间的比较来提供关联硬件事件集以在所述数据结构中呈现。
16.根据权利要求10所述的分布式硬件跟踪系统,其中,所生成的数据结构识别指示特定硬件事件的延时属性的至少一个参数,所述延时属性至少指示所述特定硬件事件的持续时间。
17.根据权利要求10所述的分布式硬件跟踪系统,其中,至少一个处理器是具有一个或多个处理组件的多核多节点处理器,并且所述一个或多个硬件事件部分地对应于至少在第一节点的所述第一处理器组件与第二节点的所述第二处理器组件之间发生的数据通信。
18.根据权利要求10所述的分布式硬件跟踪系统,其中,所述第一处理器组件和所述第二处理器组件中的每一个是以下之一:所述分布式硬件跟踪系统的处理器、处理器核、存储器存取引擎以及硬件特征;
其中,所述一个或多个硬件事件部分地对应于在源与目的地之间的数据分组的移动;以及
其中,表征所述硬件事件的元数据对应于与直接存储器存取跟踪请求相关联的源存储器地址、目的地存储器地址、特有跟踪事件标识ID号码以及大小参数中的至少一个。
19.一种布置在数据处理设备中并且编码有指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括:
监视由第一处理器组件进行的程序代码的执行,所述第一处理器组件被配置成执行所述程序代码的至少第一部分;
监视由第二处理器组件进行的所述程序代码的执行,所述第二处理器组件被配置成执行所述程序代码的至少第二部分;
存储识别跨包括所述第一处理器组件和所述第二处理器组件的多个处理器单元发生的一个或多个硬件事件的数据,每个硬件事件表示与所述程序代码的存储器存取操作相关联的数据通信、所述程序代码的已发布指令以及所述程序代码的已执行指令中的至少一个,其中,识别所述一个或多个硬件事件中的每一个的数据包括硬件事件时间戳和表征所述硬件事件的元数据;
生成识别所述一个或多个硬件事件的数据结构,所述数据结构被配置成将所述一个或多个硬件事件以与至少所述第一处理器组件和所述第二处理器组件相关联的事件的按时间排序的序列来布置,其中所述数据结构包括与跨所述多个处理器单元发生的多个硬件事件相关联的特定跟踪ID号码,所述多个硬件事件与特定存储器存取操作相对应,并且其中所述特定跟踪ID号码被用于关联所述多个硬件事件中的一个或多个硬件事件;以及
将生成的数据结构存储在主机设备的存储库中。
CN201711294123.0A 2017-03-29 2017-12-08 分布式硬件跟踪 Active CN108694112B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110903441.2A CN113778785A (zh) 2017-03-29 2017-12-08 分布式硬件跟踪

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/473,101 2017-03-29
US15/473,101 US9875167B1 (en) 2017-03-29 2017-03-29 Distributed hardware tracing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110903441.2A Division CN113778785A (zh) 2017-03-29 2017-12-08 分布式硬件跟踪

Publications (2)

Publication Number Publication Date
CN108694112A CN108694112A (zh) 2018-10-23
CN108694112B true CN108694112B (zh) 2021-08-20

Family

ID=60269931

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201711294123.0A Active CN108694112B (zh) 2017-03-29 2017-12-08 分布式硬件跟踪
CN202110903441.2A Pending CN113778785A (zh) 2017-03-29 2017-12-08 分布式硬件跟踪
CN201721706223.5U Active CN208766643U (zh) 2017-03-29 2017-12-08 硬件跟踪系统

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202110903441.2A Pending CN113778785A (zh) 2017-03-29 2017-12-08 分布式硬件跟踪
CN201721706223.5U Active CN208766643U (zh) 2017-03-29 2017-12-08 硬件跟踪系统

Country Status (13)

Country Link
US (5) US9875167B1 (zh)
EP (2) EP3382551B1 (zh)
JP (3) JP6845338B2 (zh)
KR (4) KR102464845B1 (zh)
CN (3) CN108694112B (zh)
BR (1) BR112019015271B1 (zh)
DE (2) DE102017125481A1 (zh)
DK (1) DK3382551T3 (zh)
FI (1) FI3382551T3 (zh)
GB (1) GB2561042B (zh)
SG (1) SG10202104613UA (zh)
TW (4) TWI741287B (zh)
WO (1) WO2018182782A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9111072B1 (en) * 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10255109B2 (en) 2017-04-17 2019-04-09 Intel Corporation High bandwidth connection between processor dies
US10466986B2 (en) 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
CN109446024A (zh) * 2018-10-16 2019-03-08 杭州绿湾网络科技有限公司 应用监控方法及装置
US11082493B2 (en) * 2018-11-16 2021-08-03 Arm Limited Distributed memory system, device and process
CN111291240B (zh) * 2018-12-06 2023-12-08 华为技术有限公司 处理数据的方法和数据处理装置
CN109981349B (zh) * 2019-02-27 2022-02-25 华为云计算技术有限公司 调用链信息查询方法以及设备
US11068378B2 (en) * 2019-04-11 2021-07-20 Microsoft Technology Licensing, Llc Memory value exposure in time-travel debugging traces
CN110046116B (zh) * 2019-04-23 2020-08-21 上海燧原智能科技有限公司 一种张量填充方法、装置、设备及存储介质
US11860897B2 (en) 2019-06-07 2024-01-02 Samsung Electronics Co., Ltd. Method for using catch-up logging to time-synchronize object stores during maintenance or recovery operations
US11231987B1 (en) * 2019-06-28 2022-01-25 Amazon Technologies, Inc. Debugging of memory operations
CN110351131B (zh) * 2019-06-28 2022-04-05 北京奇才天下科技有限公司 一种用于分布式链路的监控方法、装置和电子设备
US11513939B2 (en) * 2019-08-02 2022-11-29 EMC IP Holding Company LLC Multi-core I/O trace analysis
US11409634B2 (en) * 2019-11-14 2022-08-09 Cisco Technology, Inc. Retroactive tracing in a distributed system
US11145389B2 (en) * 2019-12-03 2021-10-12 Intel Corporation Detection and error-handling of high error rate blocks during copyback
KR102267920B1 (ko) * 2020-03-13 2021-06-21 성재모 매트릭스 연산 방법 및 그 장치
US11875247B1 (en) * 2020-06-18 2024-01-16 Amazon Technologies, Inc. Input batching with serial dynamic memory access
WO2023084748A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 コンピュータシステムおよびその制御方法
WO2023084749A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 コンピュータシステムおよびその制御方法
WO2023084750A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 コンピュータシステムおよびその制御方法
US11798654B1 (en) * 2022-07-28 2023-10-24 The Florida International University Board Of Trustees Systems and methods for matching mass spectrometry data with a peptide database

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1561493A (zh) * 2001-10-01 2005-01-05 国际商业机器公司 多节点系统中硬件事件的聚集
CN106033385A (zh) * 2015-03-19 2016-10-19 启碁科技股份有限公司 用于追踪程序执行状态的方法与多核心处理系统

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1040970A (en) 1912-06-05 1912-10-08 Henry G Voight Door controlling and locking means.
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
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
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
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
US7080283B1 (en) * 2002-10-15 2006-07-18 Tensilica, Inc. Simultaneous real-time trace and debug for multiple processing core systems on a chip
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
GB0420442D0 (en) 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. 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
JP2006318412A (ja) * 2005-05-16 2006-11-24 Toshiba Corp 半導体装置
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
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
JPWO2010097875A1 (ja) * 2009-02-24 2012-08-30 パナソニック株式会社 データ処理装置、方法
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
US8407528B2 (en) * 2009-06-30 2013-03-26 Texas Instruments Incorporated Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems
JP2011013867A (ja) 2009-06-30 2011-01-20 Panasonic Corp データ処理装置、性能評価解析システム
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
US8495604B2 (en) 2009-12-30 2013-07-23 International Business Machines Corporation Dynamically distribute a multi-dimensional work set across a multi-core system
GB2478328B (en) 2010-03-03 2015-07-01 Advanced Risc Mach Ltd Method, apparatus and trace module for generating timestamps
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
US20120179898A1 (en) 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
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
US8706937B2 (en) * 2011-03-02 2014-04-22 Texas Instruments Incorporated Method and system of debugging multicore bus transaction problems
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
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
US8713370B2 (en) 2011-08-11 2014-04-29 Apple Inc. Non-intrusive processor tracing
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
EP3028175A1 (en) * 2013-07-31 2016-06-08 Hewlett Packard Enterprise Development LP 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
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
WO2016175852A1 (en) 2015-04-30 2016-11-03 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
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
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 현대오트론 주식회사 멀티 코어를 갖는 마이크로콘트롤러 유닛을 감시하는 감시장치 및 그것의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1561493A (zh) * 2001-10-01 2005-01-05 国际商业机器公司 多节点系统中硬件事件的聚集
CN106033385A (zh) * 2015-03-19 2016-10-19 启碁科技股份有限公司 用于追踪程序执行状态的方法与多核心处理系统

Also Published As

Publication number Publication date
JP2020512612A (ja) 2020-04-23
US10324817B2 (en) 2019-06-18
FI3382551T3 (fi) 2023-12-07
KR20210089791A (ko) 2021-07-16
JP6845338B2 (ja) 2021-03-17
KR20220153112A (ko) 2022-11-17
BR112019015271A2 (pt) 2020-04-14
TWI741287B (zh) 2021-10-01
KR102521959B1 (ko) 2023-04-13
KR102277867B1 (ko) 2021-07-14
US10990494B2 (en) 2021-04-27
TW201935254A (zh) 2019-09-01
TW202203041A (zh) 2022-01-16
US20210248052A1 (en) 2021-08-12
EP4287026A3 (en) 2024-03-20
JP2021108129A (ja) 2021-07-29
JP2023082040A (ja) 2023-06-13
KR102365640B1 (ko) 2022-02-18
CN113778785A (zh) 2021-12-10
US10896110B2 (en) 2021-01-19
US11650895B2 (en) 2023-05-16
KR20220025262A (ko) 2022-03-03
US20200065206A1 (en) 2020-02-27
TWI661306B (zh) 2019-06-01
TW201837719A (zh) 2018-10-16
US9875167B1 (en) 2018-01-23
CN108694112A (zh) 2018-10-23
TW202336599A (zh) 2023-09-16
GB2561042A (en) 2018-10-03
DE102017125481A1 (de) 2018-10-04
KR20190095458A (ko) 2019-08-14
KR102464845B1 (ko) 2022-11-07
SG10202104613UA (en) 2021-06-29
DK3382551T3 (da) 2023-12-04
EP3382551A1 (en) 2018-10-03
EP4287026A2 (en) 2023-12-06
US20180285226A1 (en) 2018-10-04
EP3382551B1 (en) 2023-09-06
TWI805000B (zh) 2023-06-11
CN208766643U (zh) 2019-04-19
WO2018182782A1 (en) 2018-10-04
DE202017106613U1 (de) 2018-02-15
GB201717923D0 (en) 2017-12-13
GB2561042B (en) 2019-06-26
BR112019015271B1 (pt) 2021-06-15
TWI817920B (zh) 2023-10-01
JP7250832B2 (ja) 2023-04-03
US20190332509A1 (en) 2019-10-31

Similar Documents

Publication Publication Date Title
CN108694112B (zh) 分布式硬件跟踪
CN108694109B (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: 1259590

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant