分布式硬件跟踪的制作方法

文档序号:15736707发布日期:2018-10-23 21:36阅读:134来源:国知局

本申请涉及于2017年3月29日提交、标题为“同步硬件事件收集(Synchronous Hardware 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,HIB 214包括跟踪复用器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的特定组件的每个入口和出口端口提供控制功能。这些启用位和包过滤器允许ICI 112启用和禁用与节点200、201的特定组件相关联的跟踪点。除启用和禁用跟踪点之外,ICI 112能够被配置成基于事件源、事件目的地和跟踪事件包类型来过滤跟踪数据。

在一些实施方式中,除使用步长标记、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或者HIB 114发起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)跟踪条目相关联的大小参数。

在一些实施方式中,存储识别硬件事件的集合的数据包括将事件数据存储在FPC 104和/或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和闪存设备的半导体存储设备、例如内置硬盘或可移动磁盘的磁盘。处理器和存储器能够增加或结合专用逻辑电路。

虽然本说明书包含许多特定实施方式细节,但这些不应当被解释为对任何发明或者可能要求保护的内容的范围的限制,而应被理解为对可能对于特定发明的特定实施例是特定特征的描述。本说明书中在单独实施例的场境中描述的某些特征也能够在单个实施例中组合来实施。反之,在单个实施例的场境中描述的各种特征也能够单独地在多个实施例中或者以任何适当的子组合来实施。此外,尽管在上文可以将特征描述为以某些组合进行动作乃至最初如此要求保护特征,但来自要求保护的组合的一个或多个特征在一些情况下能够从所述组合中排除,并且所要求保护的组合可以涉及子组合或者子组合的变型。

类似地,虽然在图中以特定次序来描绘操作,但这不应被理解为要求以所示的特定次序或者以顺序来执行这样的操作,或者执行所有图示的操作,以获得期望的结果。在某些情况下,多任务以及并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中要求这样的分离,而应理解的是,所述的程序组件和系统一般能够一起被集成于单个软件产品中或者被封装到多个软件产品中。

已对所述主题的特定实施例予以描述。其他实施例在所附权利要求的范围内。例如,能够以不同的次序来执行权利要求中所述的动作并且仍然获得期望的结果。作为一个示例,在附图中所描绘的过程不一定要求所示的特定次序或者顺序来获得期望的结果。在某些实施方式中,多任务以及并行处理可能是有利的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1