JP2023082040A - 分散ハードウェアトレーシング - Google Patents

分散ハードウェアトレーシング Download PDF

Info

Publication number
JP2023082040A
JP2023082040A JP2023045549A JP2023045549A JP2023082040A JP 2023082040 A JP2023082040 A JP 2023082040A JP 2023045549 A JP2023045549 A JP 2023045549A JP 2023045549 A JP2023045549 A JP 2023045549A JP 2023082040 A JP2023082040 A JP 2023082040A
Authority
JP
Japan
Prior art keywords
hardware
trace
processor
data
processor component
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.)
Pending
Application number
JP2023045549A
Other languages
English (en)
Inventor
ノリー,トーマス
Norrie Thomas
クマー,ナビーン
Kumar Naveen
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
Publication of JP2023082040A publication Critical patent/JP2023082040A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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

【課題】プログラムコードの性能を分析するための方法を提供する。【解決手段】1つ以上のプロセッサによって実行される、コンピュータにより実現される方法であって、第1のプロセッサコンポーネントによって実行されるプログラムコードの実行を監視するステップと、第2のプロセッサコンポーネントによって実行されるプログラムコードの実行を監視するステップとを含む。第1および第2のプロセッサコンポーネントを含むプロセッサユニット間にわたって生じるハードウェアイベントを識別するデータをメモリバッファに格納する。ハードウェアイベントはイベントを特徴付けるメタデータおよびタイムスタンプを含む。システムは、ハードウェアイベントを識別するデータ構造を生成し、ホストデバイスのメモリバンクに格納する。データ構造は、イベントを時系列の順序で配置し、イベントを少なくとも第1または第2のプロセッサコンポーネントに関連付ける。【選択図】図5

Description

関連出願との相互参照
本願は、2017年3月29日に出願された、「同期するハードウェアイベント収集」(Synchronous Hardware Event Collection)と題された米国特許出願第15/472,
932号、および代理人ドケット番号16113-8129001に関する。米国特許出願第15/472,932号の全開示は、その全体がここに引用により明白に援用される。
背景
この明細書は、プログラムコードの実行を分析することに関する。
分散ハードウェアコンポーネント内で実行される分散ソフトウェアの効果的な性能分析は、複雑な作業である場合がある。分散ハードウェアコンポーネントは、より大きいソフトウェアプログラムまたはプログラムコードの一部を実行するために協働し対話する2つ以上の中央処理装置(Central Processing Unit:CPU)(またはグラフィックス処理
装置(Graphics Processing Unit:GPU))のそれぞれのプロセッサコアである場合がある。
(たとえばCPUまたはGPU内の)ハードウェアの観点から見ると、性能分析に利用可能である情報または機能としては概して、1)ハードウェア性能カウンタと、2)ハードウェアイベントトレースという2種類がある。
概要
概して、この明細書で説明される主題の一局面は、1つ以上のプロセッサによって実行される、コンピュータにより実現される方法において具現化され得る。方法は、第1のプロセッサコンポーネントによるプログラムコードの実行を監視するステップを含み、第1のプロセッサコンポーネントは、プログラムコードの少なくとも第1の部分を実行するように構成され、方法はさらに、第2のプロセッサコンポーネントによるプログラムコードの実行を監視するステップを含み、第2のプロセッサコンポーネントは、プログラムコードの少なくとも第2の部分を実行するように構成される。
方法はさらに、コンピューティングシステムが、第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントを含むプロセッサユニット間にわたって生じる1つ以上のハードウェアイベントを識別するデータを、少なくとも1つのメモリバッファに格納するステップを含む。各ハードウェアイベントは、プログラムコードのメモリアクセス動作、プログラムコードの発行済命令、またはプログラムコードの実行済命令に関連付けられたデータ通信のうちの少なくとも1つを表わす。1つ以上のハードウェアイベントの各々を識別するデータは、ハードウェアイベントを特徴付けるメタデータおよびハードウェアイベントタイムスタンプを含む。方法は、コンピューティングシステムが、1つ以上のハードウェアイベントを識別するデータ構造を生成するステップを含み、データ構造は、1つ以上のハードウェアイベントを、少なくとも第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントに関連付けられたイベントの時系列の順序で配置するように構成される。
方法はさらに、コンピューティングシステムが、生成されたデータ構造を、少なくとも第1のプロセッサコンポーネントまたは第2のプロセッサコンポーネントによって実行されるプログラムコードの性能を分析する際に使用するために、ホストデバイスのメモリバンクに格納するステップを含む。
これらのおよび他の実現化例は各々オプションで、以下の特徴のうちの1つ以上を含み得る。たとえば、いくつかの実現化例では、方法はさらに、コンピューティングシステムが、第1のプロセッサコンポーネントまたは第2のプロセッサコンポーネントのうちの少なくとも1つによって実行されるプログラムコードの一部に関連付けられたトリガー機能を検出するステップと、トリガー機能を検出するステップに応答して、コンピューティングシステムが、1つ以上のハードウェアイベントに関連付けられたデータを少なくとも1つのメモリバッファに格納させる少なくとも1つのトレースイベントを始動するステップとを含む。
いくつかの実現化例では、トリガー機能は、プログラムコードにおける特定のシーケンスステップ、または、プロセッサユニットによって使用されるグローバルタイムクロックによって示される特定の時間パラメータ、のうちの少なくとも1つに対応し、少なくとも1つのトレースイベントを始動するステップは、トレースビットが特定の値に設定されていると判定するステップを含み、少なくとも1つのトレースイベントは、プロセッサユニット間にわたって生じる複数の中間動作を含むメモリアクセス動作に関連付けられており、トレースビットが特定の値に設定されていると判定するステップに応答して、複数の中間動作に関連付けられたデータが1つ以上のメモリバッファに格納される。
いくつかの実現化例では、1つ以上のハードウェアイベントを識別するデータを格納するステップは、第1のプロセッサコンポーネントの第1のメモリバッファに、1つ以上のハードウェアイベントのハードウェアイベントを識別するデータの第1の部分集合を格納するステップを含む。格納するステップは、第1のプロセッサコンポーネントが、プログラムコードの少なくとも第1の部分に関連付けられたハードウェアトレース命令を実行することに応答して生じる。
いくつかの実現化例では、1つ以上のハードウェアイベントを識別するデータを格納するステップはさらに、第2のプロセッサコンポーネントの第2のメモリバッファに、1つ以上のハードウェアイベントのハードウェアイベントを識別するデータの第2の部分集合を格納するステップを含む。格納するステップは、第2のプロセッサコンポーネントが、プログラムコードの少なくとも第2の部分に関連付けられたハードウェアトレース命令を実行することに応答して生じる。
いくつかの実現化例では、データ構造を生成するステップはさらに、コンピューティングシステムが、ハードウェアイベントを識別するデータの第1の部分集合におけるそれぞれのイベントの少なくともハードウェアイベントタイムスタンプを、ハードウェアイベントを識別するデータの第2の部分集合におけるそれぞれのイベントの少なくともハードウェアイベントタイムスタンプと比較するステップと、コンピューティングシステムが、第1の部分集合におけるそれぞれのイベントと第2の部分集合におけるそれぞれのイベントとの比較に部分的に基づいて、相関された一組のハードウェアイベントを、データ構造における提示のために提供するステップとを含む。
いくつかの実現化例では、生成されたデータ構造は、特定のハードウェアイベントの待ち時間属性を示す少なくとも1つのパラメータを識別し、待ち時間属性は少なくとも、特定のハードウェアイベントの持続時間を示す。いくつかの実現化例では、コンピューティングシステムの少なくとも1つのプロセッサは、1つ以上のプロセッサコンポーネントを
有するマルチコアマルチノードプロセッサであり、1つ以上のハードウェアイベントは、少なくとも第1のノードの第1のプロセッサコンポーネントと第2のノードの第2のプロセッサコンポーネントとの間で生じるデータ転送に部分的に対応する。
いくつかの実現化例では、第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントは、コンピューティングシステムのプロセッサ、プロセッサコア、メモリアクセスエンジン、またはハードウェア機能のうちの1つであり、1つ以上のハードウェアイベントは、ソースと宛先との間のデータパケットの移動に部分的に対応しており、ハードウェアイベントを特徴付けるメタデータは、ソースメモリアドレス、宛先メモリアドレス、一意的なトレース識別番号、または、直接メモリアクセス(direct memory access:DMA)トレースに関連付けられたサイズパラメータ、のうちの少なくとも1つに対応する。
いくつかの実現化例では、特定のトレースID番号が、プロセッサユニット間にわたって生じる複数のハードウェアイベントに関連付けられ、複数のハードウェアイベントは、特定のメモリアクセス動作に対応しており、特定のトレースID番号は、複数のハードウェアイベントのうちの1つ以上のハードウェアイベントを相関させるために使用され、相関に基づいてメモリアクセス動作の待ち時間属性を判定するために使用される。
この明細書で説明される主題の他の局面は、1つ以上のプロセッサコアを含む1つ以上のプロセッサと、命令を格納するための1つ以上の機械読取可能記憶ユニットとを含む、分散ハードウェアトレーシングシステムにおいて具現化され得る。命令は、動作を行なうために1つ以上のプロセッサによって実行可能であり、動作は、第1のプロセッサコンポーネントによるプログラムコードの実行を監視することを含み、第1のプロセッサコンポーネントは、プログラムコードの少なくとも第1の部分を実行するように構成され、動作はさらに、第2のプロセッサコンポーネントによるプログラムコードの実行を監視することを含み、第2のプロセッサコンポーネントは、プログラムコードの少なくとも第2の部分を実行するように構成される。
方法はさらに、コンピューティングシステムが、第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントを含むプロセッサユニット間にわたって生じる1つ以上のハードウェアイベントを識別するデータを、少なくとも1つのメモリバッファに格納することを含む。各ハードウェアイベントは、プログラムコードのメモリアクセス動作、プログラムコードの発行済命令、またはプログラムコードの実行済命令に関連付けられたデータ通信のうちの少なくとも1つを表わす。1つ以上のハードウェアイベントの各々を識別するデータは、ハードウェアイベントを特徴付けるメタデータおよびハードウェアイベントタイムスタンプを含む。方法は、コンピューティングシステムが、1つ以上のハードウェアイベントを識別するデータ構造を生成することを含み、データ構造は、1つ以上のハードウェアイベントを、少なくとも第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントに関連付けられたイベントの時系列の順序で配置するように構成される。
方法はさらに、コンピューティングシステムが、生成されたデータ構造を、少なくとも第1のプロセッサコンポーネントまたは第2のプロセッサコンポーネントによって実行されるプログラムコードの性能を分析する際に使用するために、ホストデバイスのメモリバンクに格納することを含む。
このおよび他の局面の他の実現化例は、コンピュータ記憶デバイス上で符号化された方法のアクションを行なうように構成された、対応するシステム、装置、およびコンピュータプログラムを含む。1つ以上のコンピュータのシステムは、動作時にシステムにアクシ
ョンを行なわせる、システムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せによって、そのように構成され得る。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると当該装置にアクションを行なわせる命令を有することによって、そのように構成され得る。
この明細書で説明される主題は、以下の長所のうちの1つ以上を実現するように、特定の実施形態で実現され得る。説明されるハードウェアトレーシングシステムは、マルチノードマルチコアプロセッサを含む分散処理ユニットによる分散ソフトウェアプログラムの実行中に生じるハードウェアイベントの効率的相関を可能にする。説明されるハードウェアトレーシングシステムはさらに、複数のクロスノード構成でのハードウェアイベント/トレースデータの収集および相関を可能にするメカニズムを含む。
ハードウェアトレーシングシステムは、ハードウェアノブ/機能を通して実行される動的トリガーを使用することによって計算効率を高める。さらに、ハードウェアイベントは、一意的なトレース識別子、イベントタイムスタンプ、イベントソースアドレス、およびイベント宛先アドレスといったイベント記述子を用いて、順序立てて時系列化され得る。そのような記述子は、ソフトウェアプログラマーおよびプロセッサ設計エンジニアが、ソースコード実行中に生じ得るソフトウェアおよびハードウェア性能問題を効果的にデバッグし分析するのを助ける。
この明細書で説明される主題の1つ以上の実現化例の詳細を、添付図面および以下の説明で述べる。主題の他の潜在的な特徴、局面、および長所は、説明、図面、および請求項から明らかになるであろう。
分散ハードウェアトレーシングのための例示的なコンピューティングシステムのブロック図である。 分散ハードウェアトレーシングのための例示的なコンピューティングシステムのトレースチェーンおよびそれぞれのノードのブロック図である。 例示的なトレース多重化設計アーキテクチャおよび例示的なデータ構造のブロック図である。 分散ハードウェアトレーシングのための例示的なコンピューティングシステムによって実行される直接メモリアクセストレースイベントのためのトレース活動を示すブロック図である。 分散ハードウェアトレーシングのための例示的なプロセスのプロセスフロー図である。
さまざまな図面における同様の参照番号および名称は、同様の要素を示す。
詳細な説明
この明細書で説明される主題は概して、分散ハードウェアトレーシングに関する。特に、コンピューティングシステムが、1つ以上のプロセッサコアによって実行されるプログラムコードの実行を監視する。たとえば、コンピューティングシステムは、第1のプロセッサコアによって実行されるプログラムコードの実行と、少なくとも第2のプロセッサコアによって実行されるプログラムコードの実行とを監視することができる。コンピューティングシステムは、1つ以上のハードウェアイベントを識別するデータをメモリバッファに格納する。イベントを識別する格納されたデータは、少なくとも第1および第2のプロセッサコアを含む分散プロセッサユニット間にわたって生じるイベントに対応する。
各ハードウェアイベントについて、格納されたデータは、そのハードウェアイベントを特徴付けるメタデータおよびイベントタイムスタンプを含む。システムは、ハードウェアイベントを識別するデータ構造を生成する。データ構造は、イベントを時系列の順序で配置し、イベントを少なくとも第1または第2のプロセッサコアに関連付ける。システムは、データ構造をホストデバイスのメモリバンクに格納し、第1または第2のプロセッサコアによって実行されるプログラムコードの性能を分析するためにデータ構造を使用する。
図1は、分散ハードウェアトレーシングのための例示的なコンピューティングシステム100のブロック図を示す。この明細書で使用されるように、分散ハードウェアシステムトレーシングは、例示的なプロセッサマイクロチップのコンポーネントおよびサブコンポーネント内に生じるイベントを識別するデータの格納に対応する。さらに、ここで使用されるように、分散ハードウェアシステム(またはトレーシングシステム)は、プロセッサマイクロチップまたは分散処理ユニットの集合のうち、分散実行のために構成されたソフトウェア/プログラムコードのそれぞれの一部を実行するよう協働するプロセッサマイクロチップまたは処理ユニットの集合に対応する。
システム100は、ソフトウェアプログラムを分散的に実行する、すなわち、プログラムコードの異なる部分をシステム100の異なる処理ユニットに対して実行することによって実行する1つ以上のプロセッサまたは処理ユニットを有する、分散処理システムであってもよい。処理ユニットは、2つ以上のプロセッサ、プロセッサマイクロチップ、または処理ユニット、たとえば、少なくとも第1の処理ユニットおよび第2の処理ユニットを含み得る。
いくつかの実現化例では、第1の処理ユニットが分散ソフトウェアプログラムのプログラムコードの第1の部分を受信して実行する場合、および、第2の処理ユニットが同じ分散ソフトウェアプログラムのプログラムコードの第2の部分を受信して実行する場合、2つ以上の処理ユニットが分散処理ユニットであり得る。
いくつかの実現化例では、システム100の異なるプロセッサチップが、分散ハードウェアシステムのそれぞれのノードを形成することができる。代替的な実現化例では、単一のプロセッサチップが、そのプロセッサチップのそれぞれのノードを各々形成することができる1つ以上のプロセッサコアおよびハードウェア機能を含み得る。
たとえば、中央処理装置(CPU)の状況では、プロセッサチップは少なくとも2つのノードを含んでいてもよく、各ノードはCPUのそれぞれのコアであってもよい。それに代えて、グラフィカル処理装置(GPU)の状況では、プロセッサチップは少なくとも2つのノードを含んでいてもよく、各ノードはGPUのそれぞれのストリーミングマルチプロセッサであってもよい。コンピューティングシステム100は、複数のプロセッサコンポーネントを含み得る。いくつかの実現化例では、プロセッサコンポーネントは、コンピューティングシステム100全体のプロセッサチップ、プロセッサコア、メモリアクセスエンジン、または少なくとも1つのハードウェアコンポーネントのうちの少なくとも1つであってもよい。
いくつかの例では、プロセッサコアなどのプロセッサコンポーネントは、実行中のプログラムコードの少なくとも1つの発行済命令に基づいて少なくとも1つの特定の動作を実行するように構成された固定機能コンポーネントであってもよい。他の例では、メモリアクセスエンジン(memory access engine:MAE)などのプロセッサコンポーネントは、システム100の他のプロセッサコンポーネントによって実行されるプログラムコードよりも低い詳細度または粒度でプログラムコードを実行するように構成され得る。
たとえば、プロセッサコアによって実行されるプログラムコードは、MAE記述子が生成されてMAEに送信されるようにすることができる。記述子の受信後、MAEは、MAE記述子に基づいてデータ転送動作を実行することができる。いくつかの実現化例では、MAEによって実行されるデータ転送は、たとえば、システムのあるデータ経路またはインターフェイスコンポーネントを介してシステム100のあるコンポーネント間でデータを動かすこと、または、システム100の例示的な構成バスにデータ要求を発行することを含み得る。
いくつかの実現化例では、システム100の例示的なプロセッサチップの各テンソルノードは、プログラム命令を処理するハードウェアブロック/機能であり得る少なくとも2つの「フロントエンド」を有し得る。以下により詳細に説明されるように、第1のフロントエンドは第1のプロセッサコア104に対応することができ、一方、第2のフロントエンドは第2のプロセッサコア106に対応することができる。よって、第1および第2のプロセッサコアはまた、ここに第1のフロントエンド104および第2のフロントエンド106と記載されてもよい。
この明細書で使用されるように、トレースチェーンとは、トレースエントリがシステム100内の例示的なチップマネージャへの送信のために置かれ得る、特定の物理データ通信バスであってもよい。受信されたトレースエントリは、複数のバイトと複数の2進値または2進数とを含むデータワード/構造であってもよい。このため、「ワード」という記述子は、例示的なプロセッサコアのハードウェアデバイスによって1単位として扱われ得る、固定サイズの2進データ片を示す。
いくつかの実現化例では、分散ハードウェアトレーシングシステムのプロセッサチップは、チップのそれぞれのコアでプログラムコードの一部を各々実行する、マルチコア(すなわち複数のコアを有する)プロセッサである。いくつかの実現化例では、プログラムコードの一部は、例示的な多層ニューラルネットワークの推論作業負荷のためのベクトル化計算に対応することができる。一方、代替的な実現化例では、プログラムコードの一部は概して、従来のプログラミング言語に関連付けられたソフトウェアモジュールに対応することができる。
コンピューティングシステム100は概して、ノードマネージャ102と、第1のプロセッサコア(first processor core:FPC)104と、第2のプロセッサコア(second
processor core:SPC)106と、ノードファブリック(node fabric:NF)110と、データルータ112と、ホストインターフェイスブロック(host interface block:HIB)114とを含む。いくつかの実現化例では、システム100は、信号切替、多重化、および逆多重化機能を行なうように構成されたメモリmux108を含み得る。システム100はさらに、FPC104が内部に配置されたテンソルコア116を含む。テンソルコア116は、ベクトル化計算を多次元データアレイに行なうように構成された例示的な計算デバイスであってもよい。テンソルコア116はベクトル処理ユニット(vector
processing unit:VPU)118を含んでいてもよく、それは、行列ユニット(matrix
unit:MXU)120、転置ユニット(transpose unit:XU)122、簡約および置
換ユニット(reduction and permutation unit:RPU)124と対話する。いくつかの実現化例では、コンピューティングシステム100は、ロード/格納ユニット、算術論理演算ユニット(arithmetic logic unit:ALU)、およびベクトルユニットといった、
従来のCPUまたはGPUの1つ以上の実行ユニットを含み得る。
システム100のコンポーネントは、大きい一組のハードウェア性能カウンタと、コンポーネント内のトレース活動の完了を促進するサポートハードウェアとを一括して含む。以下により詳細に説明されるように、システム100のそれぞれのプロセッサコアによっ
て実行されるプログラムコードは、コード実行中に複数の性能カウンタを同時にイネーブルにするために使用される埋込みトリガーを含み得る。一般に、検出されたトリガーは、トレースデータが1つ以上のトレースイベントのために生成されるようにする。トレースデータは、カウンタに格納され、プログラムコードの性能特性を識別するために分析され得るインクリメンタルパラメータカウントに対応することができる。それぞれのトレースイベントについてのデータは、例示的な記憶媒体(たとえばハードウェアバッファ)に格納可能であり、トリガーの検出に応答して生成されるタイムスタンプを含み得る。
さらに、トレースデータは、システム100のハードウェアコンポーネント内に生じるさまざまなイベントについて生成され得る。例示的なイベントは、直接メモリアクセス(DMA)動作および同期フラグ更新(各々、以下により詳細に説明される)といった、ノード間およびクロスノード通信動作を含み得る。いくつかの実現化例では、システム100は、一般にグローバル時間カウンタ(Global Time Counter:GTC)と呼ばれる、グ
ローバルに同期するタイムスタンプカウンタを含み得る。他の実現化例では、システム100は、ランポート(Lamport)クロックといった他のタイプのグローバルクロックを含
み得る。
GTCは、プログラムコード実行と、分散処理環境で実行されるソフトウェア/プログラムコードの性能との正確な相関のために使用され得る。加えて、およびGTCに一部関連して、いくつかの実現化例では、システム100は、分散システムでデータトレーシングを非常に協調的な態様で起動および停止するために分散ソフトウェアプログラムによって使用される1つ以上のトリガーメカニズムを含み得る。
いくつかの実現化例では、ホストシステム126が、埋込まれたオペランドを含み得るプログラムコードをコンパイルする。オペランドは、検出されると、ハードウェアイベントに関連付けられたトレースデータの取込みおよび格納を引き起こすことをトリガーする。いくつかの実現化例では、ホストシステム126は、コンパイルされたプログラムコードを、システム100の1つ以上のプロセッサチップに提供する。代替的な実現化例では、プログラムコードは例示的な外部コンパイラによって(埋込まれたトリガーを用いて)コンパイルされ、システム100の1つ以上のプロセッサチップにロードされ得る。いくつかの例では、コンパイラは、ソフトウェア命令の一部に埋込まれたあるトリガーに関連付けられた(以下に説明される)1つ以上のトレースビットを設定することができる。コンパイルされたプログラムコードは、システム100の1つ以上のコンポーネントによって実行される分散ソフトウェアプログラムであってもよい。
ホストシステム126は、システム100の1つ以上のコンポーネントによるプログラムコードの実行を監視するように構成された監視エンジン128を含み得る。いくつかの実現化例では、監視エンジン128は、ホストシステム126が、少なくともFPC104およびSPC106によって実行されるプログラムコードの実行を監視することを可能にする。たとえば、コード実行中、ホストシステム126は、少なくとも、生成されたトレースデータに基づいてハードウェアイベントの周期的なタイムラインを受信することによって、監視エンジン128を介して実行コードの性能を監視することができる。ホストシステム126のために単一のブロックが示されているが、いくつかの実現化例では、システム126は、システム100の複数のプロセッサチップまたはチップコアに関連付けられる複数のホスト(またはホストサブシステム)を含み得る。
他の実現化例では、データトラフィックがFPC104と例示的な第3のプロセッサコア/ノードとの間の通信経路を横断する際、少なくとも3つのプロセッサコアを伴うクロスノード通信が、ホストシステム126に、1つ以上の中間「ホップ」でデータトラフィックを監視させてもよい。たとえば、FPC104と第3のプロセッサコアとは、所与の
期間にプログラムコードを実行する唯一のコアであってもよい。よって、FPC104から第3のプロセッサコアへのデータ転送は、データがFPC104から第3のプロセッサコアへ転送される際、SPC106で中間ホップについてのトレースデータを生成することができる。別の言い方をすると、システム100でのデータルーティング中、第1のプロセッサチップから第3のプロセッサチップに向かうデータは、第2のプロセッサチップを横断する必要があるかもしれず、そのため、データルーティング動作の実行は、トレースエントリが第2のチップでのルーティング活動のために生成されるようにするかもしれない。
コンパイルされたプログラムコードが実行されると、システム100のコンポーネントは、分散コンピュータシステムで生じるハードウェアイベントのタイムラインを生成するために対話することができる。ハードウェアイベントは、ノード内およびクロスノード通信イベントを含み得る。分散ハードウェアシステムの例示的なノードおよびそれらの関連付けられた通信は、図2を参照して以下により詳細に説明される。いくつかの実現化例では、少なくとも1つのハードウェアイベントタイムラインのためのハードウェアイベントの集合を識別するデータ構造が生成される。タイムラインは、分散システムで生じるイベントの再構築を可能にする。いくつかの実現化例では、イベント再構築は、特定のイベントの発生中に生成されたタイムスタンプの分析に基づく正しいイベント順序付けを含み得る。
一般に、例示的な分散ハードウェアトレーシングシステムは、システム100の上述のコンポーネントと、ホストシステム126に関連付けられた少なくとも1つのホストコントローラとを含み得る。分散トレーシングシステムから得られたデータの性能またはデバッグは、イベントデータがたとえば時系列でまたは順序立てて相関される場合に有用であり得る。いくつかの実現化例では、接続されたソフトウェアモジュールに対応する複数の格納されるハードウェアイベントが格納され、次に、ホストシステム126による構造化分析のために順序立てられた場合に、データ相関が生じ得る。複数のホストシステムを含む実現化例については、異なるホストを介して得られたデータの相関は、たとえばホストコントローラによって行なわれてもよい。
いくつかの実現化例では、FPC104およびSP106は各々、1つのマルチコアプロセッサチップの別個のコアである。一方、他の実現化例では、FPC104およびSP106は、別個のマルチコアプロセッサチップのそれぞれのコアである。上述のように、システム100は、少なくともFPC104およびSPC106を有する分散プロセッサユニットを含み得る。いくつかの実現化例では、システム100の分散プロセッサユニットは、より大きい分散ソフトウェアプログラムまたはプログラムコードの少なくとも一部を実行するように構成された1つ以上のハードウェアまたはソフトウェアコンポーネントを含み得る。
データルータ112は、システム100のコンポーネント間にデータ通信経路を提供するチップ間相互接続(inter-chip interconnect:ICI)である。特に、ルータ112
は、FPC104とSPC106との間に、およびコア104、106に関連付けられたそれぞれのコンポーネント間に、通信結合または接続を提供することができる。ノードファブリック110は、システム100の分散ハードウェアコンポーネントおよびサブコンポーネント内でデータパケットを動かすために、データルータ112と対話する。
ノードマネージャ102は、マルチノードプロセッサチップにおける低レベルのノード機能を管理する高レベルのデバイスである。以下により詳細に説明されるように、プロセッサチップの1つ以上のノードは、ハードウェアイベントデータを管理してローカルエントリログに格納するためにノードマネージャ102によって制御されるチップマネージャ
を含み得る。メモリmux108は、例示的な外部高帯域メモリ(high bandwidth memory:HBM)に提供されたデータ信号、または外部HBMから受信されたデータ信号に対
してスイッチング、多重化、および逆多重化動作を行なうことができる多重化デバイスである。
いくつかの実現化例では、mux108がFPC104とSPC106とを切り替える際、(以下に説明される)例示的なトレースエントリがmux108によって生成され得る。メモリmux108は、mux108にアクセスできない特定のプロセッサコア104、106の性能に影響を与える可能性がある。このため、mux108によって生成されたトレースエントリデータは、それぞれのコア104、106に関連付けられたあるシステム活動の待ち時間において結果として生じるスパイクを理解することの助けとなり得る。いくつかの実現化例では、mux108内で発生するハードウェアイベントデータ(たとえば、以下に説明されるトレースポイント)は、例示的なハードウェアイベントタイムラインで、ノードファブリック110についてのイベントデータとともにグループ化され得る。あるトレース活動が、複数のハードウェアコンポーネントについてのイベントデータを、例示的なハードウェアバッファ(たとえば、以下に説明されるトレースエントリログ218)に格納させる場合、イベントグループ化が生じ得る。
システム100では、性能分析ハードウェアは、FPC104、SPC106、mux108、ノードファブリック110、データルータ112、およびHIB114を包含する。これらのハードウェアコンポーネントまたはユニットの各々は、ハードウェア性能カウンタと、ハードウェアイベントトレース機構および機能とを含む。いくつかの実現化例では、VPU118、MXU120、XU122、およびRPU124は、それら自体の専用性能ハードウェアを含んでいない。むしろ、そのような実現化例では、FPC104は、VPU118、MXU120、XU122、およびRPU124のための必要なカウンタを提供するように構成され得る。
VPU118は、例示的な行列-ベクトルプロセッサのベクトル要素に関連付けられたローカル化高帯域データ処理および算術演算をサポートする内部設計アーキテクチャを含み得る。MXU120は、たとえば最大128×128の行列乗算を被乗数のベクトルデータセットに対して行なうように構成された行列乗算ユニットである。
XU122は、たとえば最大128×128の行列転置演算を、行列乗算演算に関連付けられたベクトルデータに対して行なうように構成された転置ユニットである。RPU124は、シグマユニットと置換ユニットとを含み得る。シグマユニットは、行列乗算演算に関連付けられたベクトルデータに対して順次簡約を実行する。簡約は、和およびさまざまなタイプの比較演算を含み得る。置換ユニットは、行列乗算演算に関連付けられたベクトルデータのすべての要素を完全に置換し、または複製することができる。
いくつかの実現化例では、システム100のコンポーネントによって実行されるプログラムコードは、機械学習、ニューラルネットワーク推論計算、および/または1つ以上の直接メモリアクセス機能を代表し得る。システム100のコンポーネントは、システムの処理ユニットまたはデバイスに1つ以上の機能を実行させる命令を含む1つ以上のソフトウェアプログラムを実行するように構成され得る。「コンポーネント」という用語は、あらゆるデータ処理デバイス、または制御ステータスレジスタなどの記憶デバイス、またはデータを処理し格納することができる任意の他のデバイスを含むよう意図される。
システム100は概して、1つ以上のプロセッサ(たとえばマイクロプロセッサまたは中央処理装置(CPU))、グラフィックス処理装置(GPU)、特定用途向け集積回路(application specific integrated circuit:ASIC)、または異なるプロセッサの
組合せを含み得る、複数の処理ユニットまたはデバイスを含み得る。代替的な実施形態では、システム100は各々、この明細書で説明されるハードウェアトレース機能に関連する計算を行なうための追加の処理オプションを提供する、他のコンピューティングリソース/デバイス(たとえばクラウドベースのサーバ)を含み得る。
処理ユニットまたはデバイスはさらに、1つ以上のメモリユニットまたはメモリバンク(たとえばレジスタ/カウンタ)を含み得る。いくつかの実現化例では、処理ユニットは、この明細書で説明される1つ以上の機能を行なうために、メモリに格納された、システム100のデバイスへのプログラミングされた命令を実行する。メモリユニット/バンクは、1つ以上の非一時的機械読取可能記憶媒体を含み得る。非一時的機械読取可能記憶媒体は、ソリッドステートメモリ、磁気ディスク、および光学ディスク、ランダムアクセスメモリ(random access memory:RAM)、読取専用メモリ(read-only memory:ROM)、消去可能プログラマブル読取専用メモリ(たとえばEPROM、EEPROM、またはフラッシュメモリ)、もしくは、情報を格納可能な任意の他の有形媒体を含み得る。
図2は、システム100によって実行される分散ハードウェアトレーシングに使用されるトレースチェーンおよびそれぞれの例示的なノード200、201のブロック図を示す。いくつかの実現化例では、システム100のノード200、201は、単一のマルチコアプロセッサ内の異なるノードであってもよい。他の実現化例では、ノード200は第1のマルチコアプロセッサチップにおける第1のノードであってもよく、ノード201は第2のマルチコアプロセッサチップにおける第2のノードであってもよい。
図2の実現化例では2つのノードが図示されているが、代替的な実現化例では、システム100は複数のノードを含み得る。複数のノードを伴う実現化例については、クロスノードデータ転送が、複数のノードを横断する例示的なデータ経路に沿った中間ホップでトレースデータを生成することができる。たとえば、中間ホップは、特定のデータ転送経路における別個のノードを通過するデータ転送に対応することができる。いくつかの例では、1つ以上のノードを通過するクロスノードデータ転送中に生じる1つ以上の中間ホップのために、ICIトレース/ハードウェアイベントに関連付けられたトレースデータを生成することができる。
いくつかの実現化例では、ノード0およびノード1は、推論作業負荷のためのプログラムコードの一部に関連付けられたベクトル化計算に使用されるテンソルノードである。この明細書で使用されるように、テンソルは多次元の幾何学的オブジェクトであり、例示的な多次元の幾何学的オブジェクトは行列とデータアレイとを含む。
図2の実現化例に示すように、ノード200は、システム100のコンポーネントの少なくとも部分集合と対話するトレースチェーン203を含む。同様に、ノード201は、システム100のコンポーネントの少なくとも部分集合と対話するトレースチェーン205を含む。いくつかの実現化例では、ノード200、201はコンポーネントの同じ部分集合の例示的なノードであり、一方、他の実現化例では、ノード200、201は別個のコンポーネント部分集合のそれぞれのノードである。データルータ/ICI112は、トレースデータをチップマネージャ216に提供するためにトレースチェーン203および205と概して収束するトレースチェーン207を含む。
図2の実現化例では、ノード200、201は各々、少なくともFPC104、SPC106、ノードファブリック110、およびHIB114を有するそれぞれのコンポーネント部分集合を含み得る。ノード200、201の各コンポーネントは、ノードの特定のコンポーネントによって生成される(以下に説明される)トレースポイントをグループ化するように構成された1つ以上のトレースmuxを含む。FPC104はトレースmux
204を含み、ノードファブリック110はトレースmux210a/bを含み、SPC106はトレースmux206a/b/c/dを含み、HIB214はトレースmux214を含み、ICI212はトレースmux212を含む。いくつかの実現化例では、各トレースmuxのためのトレース制御レジスタは、個々のトレースポイントがイネーブルおよびディスエーブルにされることを可能にする。いくつかの例では、1つ以上のトレースmuxのために、それらの対応するトレース制御レジスタは、個々のイネーブルビットと、より広範なトレースmux制御とを含み得る。
一般に、トレース制御レジスタは、トレース命令データを受信して格納する従来の制御ステータスレジスタ(control status register:CSR)であってもよい。より広範な
トレースmux制御に関し、いくつかの実現化例では、システム100によって実行されるCSR書込に基づいて、トレーシングがイネーブルおよびディスエーブルにされ得る。いくつかの実現化例では、トレーシングは、グローバル時間カウンタ(GTC)の値、FPC104(またはコア116)における例示的なトレースマークレジスタの値に基づいて、もしくは、SPC106におけるステップマークの値に基づいて、システム100によって動的に起動および停止され得る。
トレース活動を動的に起動および停止するための、ならびに、同期されたハードウェアイベント収集のための、コンピューティングシステムおよびコンピュータにより実現される方法に関連する詳細および説明は、2017年3月29日に出願された、「同期するハードウェアイベント収集」と題された関連する米国特許出願第15/472,932号、および代理人ドケット番号16113-8129001に記載されている。米国特許出願第15/472,932号の全開示は、その全体がここに引用により明白に援用される。
いくつかの実現化例では、コア116のために、FPC104は、コア116内に生じるイベント活動に関連付けられたトレースウィンドウを定義するためにトレース制御パラメータを使用することができる。トレース制御パラメータは、トレースウィンドウが、GTCについての下限および上限、ならびに、トレースマークレジスタについての下限および上限によって定義されることを可能にする。
いくつかの実現化例では、システム100は、トレースイベントフィルタリング機能といった、生成されるトレースエントリの数の減少を可能にする機能を含み得る。たとえば、FPC104およびSPC106は各々、各コアが(以下に説明される)例示的な生成されたトレース記述子においてトレースビットを設定するレートを制限するフィルタリング機能を含み得る。HIB114は、あるDMAトレースイベントの取込みに関連付けられたトレースビットを制限する例示的なDMAレートリミッタといった、同様のフィルタリング機能を含み得る。加えて、HIB114は、ソースDMAトレースエントリをキューに入れる制限のための(たとえばイネーブルビットを介した)制御を含み得る。
いくつかの実現化例では、DMA動作用の記述子は、ホストシステム126の例示的なコンパイラによって設定されるトレースビットを有し得る。トレースビットが設定されると、トレースデータを判定して生成するハードウェア機能/ノブが、例示的なトレースイベントを完了するために使用される。いくつかの例では、DMAにおける最後のトレースビットは、コンパイラによって静的に挿入されるトレースビットと、特定のハードウェアコンポーネントによって動的に判定されるトレースビットとの論理和演算であり得る。よって、いくつかの例では、コンパイラが生成したトレースビットは、フィルタリングとは別に、生成されるトレースデータの全体量を減少させるためのメカニズムを提供することができる。
たとえば、ホストシステム126のコンパイラは、1つ以上のリモートDMA動作(た
とえば、少なくとも2つのノード間にわたるDMA)のためのトレースビットだけを設定し、1つ以上のローカルDMA動作(たとえば、ノード200といった特定のテンソルノード内のDMA)のためのトレースビットをクリアするよう、決定してもよい。このように、生成されるトレースデータの量は、クロスノード(すなわちリモート)およびローカルDMA動作の双方を含むトレース活動ではなく、クロスノードDMA動作に制限されたトレース活動に基づいて減少され得る。
いくつかの実現化例では、システム100によって始動された少なくとも1つのトレースイベントが、システム100全体にわたって生じる複数の中間動作を含むメモリアクセス動作に関連付けられ得る。メモリアクセス動作用の記述子(たとえばMAE記述子)は、複数の中間動作に関連付けられたデータを1つ以上のメモリバッファに格納させるトレースビットを含み得る。このため、トレースビットは、データパケットがシステム100を横断する際、DMA動作の中間ホップで中間メモリ動作に「タグ付け」し、複数のトレースイベントを生成するために使用され得る。
いくつかの実現化例では、ICI112は、ノード200、201の特定のコンポーネントの各入口および出口ポートのための制御機能性を提供する、1組のイネーブルビットおよび1組のパケットフィルタを含み得る。これらのイネーブルビットおよびパケットフィルタは、ICI112が、ノード200、201の特定のコンポーネントに関連付けられたトレースポイントをイネーブルおよびディスエーブルにすることを可能にする。トレースポイントをイネーブルおよびディスエーブルにすることに加えて、ICI112は、イベントソース、イベント宛先、およびトレースイベントパケットタイプに基づいてトレースデータをフィルタリングするように構成され得る。
いくつかの実現化例では、ステップマーカー、GTC、またはトレースマーカーを使用することに加えて、プロセッサコア104、106、およびHIB114のための各トレース制御レジスタはまた、「各自」(everyone)トレースモードを含み得る。この「各自」トレースモードは、プロセッサチップ全体にわたるトレーシングがトレースmux204またはトレースmux206aのいずれかによって制御されることを可能にし得る。各自トレースモード時、トレースmux204および206aは、その特定のトレースmux、すなわち、mux204またはmux206aのいずれかがトレースウィンドウ内にあるか否かを特定する、「ウィンドウ内」トレース制御信号を送信することができる。
ウィンドウ内トレース制御信号は、たとえば、1つのプロセッサチップ内の、または複数のプロセッサチップ間にわたる他のすべてのトレースmuxに一斉送信され、または全般的に送信され得る。mux204またはmux206aのいずれかがトレース活動を実行している場合、他のトレースmuxへの一斉送信によって、すべてのトレーシングがイネーブルにされ得る。いくつかの実現化例では、プロセッサコア104、106、およびHIB114に関連付けられたトレースmuxは各々、「各自トレース」制御信号がいつ、および/またはどのように生成されるかを特定するトレースウィンドウ制御レジスタを含む。
いくつかの実現化例では、トレースmux210a/bおよびトレースmux212におけるトレース活動は一般に、トレースビットが、ICI/データルータ112を横断するDMA動作または制御メッセージのためにデータワードにおいて設定されるかどうかに基づいて、イネーブルにされる。DMA動作または制御メッセージは、ある状況またはソフトウェア状態に基づいて設定された2進データパケット内にトレースビットを有し得る、固定サイズの2進データ構造であってもよい。
たとえば、DMA動作がトレースタイプDMA命令によってFPC104(またはSP
C106)で始動され、イニシエータ(プロセッサコア104または106)がトレースウィンドウ内にある場合、トレースビットはその特定のDMAにおいて設定されるであろう。別の例では、FPC104について、FPC104がトレースウィンドウ内にあり、トレースデータを格納させるトレースポイントがイネーブルにされた場合、システム100内の別のコンポーネントへのデータ書込みのための制御メッセージがトレースビットを設定させるであろう。
いくつかの実現化例では、ゼロレングスDMA動作が、システム100内のより広範なDMA実現化例の一例を提供する。たとえば、いくつかのDMA動作は、システム100内に非DMA活動を生成することができる。非DMA活動の実行も、非DMA活動がまるでDMA動作(たとえば、非ゼロレングス動作を含むDMA活動)であるかのようにトレースされ得る(たとえば、トレースデータを生成する)。たとえば、ソース位置で始動されたものの、送信または転送されるべきデータがない(たとえばゼロレングスである)DMA動作は、代わりに、制御メッセージを宛先位置へ送信してもよい。制御メッセージは、宛先に受信または作業されるべきデータがないことを示すであろう。そして、制御メッセージ自体は、非ゼロレングスDMA動作がトレースされるように、システム100によってトレースされるであろう。
いくつかの例では、SPC106について、ゼロレングスDMA動作は制御メッセージを生成することができ、DMAがトレースビットを設定させた場合のみ、すなわち、制御メッセージがゼロレングスを有していなかった場合のみ、そのメッセージに関連付けられたトレースビットが設定される。一般に、HIB114がトレースウィンドウ内にある場合、ホストシステム126から始動されたDMA動作がトレースビットを設定させるであろう。
図2の実現化例では、トレースチェーン203は、ノード0と整列するコンポーネント部分集合についてのトレースエントリデータを受信し、一方、トレースチェーン205は、ノード1と整列するコンポーネント部分集合についてのトレースエントリデータを受信する。各トレースチェーン203、205、207は、チップマネージャ216の例示的なトレースエントリデータログ218にトレースエントリデータを提供するためにそれぞれのノード200、201、およびICI112によって使用される別個のデータ通信経路である。このため、トレースチェーン203、205、207のエンドポイントは、トレースイベントが例示的なメモリユニットに格納され得るチップマネージャ216である。
いくつかの実現化例では、チップマネージャ216の少なくとも1つのメモリユニットは128ビット幅であり、少なくとも20,000個のトレースエントリというメモリ深度を有し得る。代替的な実現化例では、少なくとも1つのメモリユニットは、より大きい、またはより小さいビット幅を有していてもよく、より多い、またはより少ないエントリを格納できるメモリ深度を有していてもよい。
いくつかの実現化例では、チップマネージャ216は、受信されたトレースエントリデータを管理するための命令を実行する少なくとも1つの処理デバイスを含み得る。たとえば、チップマネージャ216は、トレースチェーン203、205、207を介して受信されたトレースデータのそれぞれのハードウェアイベントについてのタイムスタンプデータを走査/分析するための命令を実行することができる。分析に基づいて、チップマネージャ216は、ハードウェアトレースイベントの時系列の順序を識別(または生成)するために使用され得るデータを含むように、トレースエントリログ218をポピュレートすることができる。ハードウェアトレースイベントは、システム100の処理ユニットが例示的な分散ソフトウェアプログラムを実行する際にコンポーネントおよびサブコンポーネ
ントレベルで生じるデータパケットの移動に対応することができる。
いくつかの実現化例では、システム100のハードウェアユニットは、例示的なハードウェアトレースバッファを非時系列的に(すなわち順不同に)ポピュレートするトレースエントリ(および対応するタイムスタンプ)を生成してもよい。たとえば、チップマネージャ216は、生成されたタイムスタンプを有する複数のトレースエントリをエントリログ218に挿入させることができる。挿入された複数のトレースエントリのうち、それぞれのトレースエントリは、互いに対して時系列化されていなくてもよい。この実現化例では、非時系列のトレースエントリは、ホストシステム126の例示的なホストバッファによって受信され得る。ホストバッファによって受信されると、ホストシステム126は、それぞれのトレースエントリについてのタイムスタンプデータを走査/分析するために、性能分析/監視用ソフトウェアに関連する命令を実行することができる。実行された命令は、トレースエントリをソートするために、および、ハードウェアトレースイベントのタイムラインを構築/生成するために使用され得る。
いくつかの実現化例では、トレーシングセッション中、ホストDMA動作を介して、トレースエントリをエントリログ218から除去することができる。いくつかの例では、ホストシステム126は、DMAエントリを、それらがログに追加されるのと同じくらい速く、トレースエントリログ218から除去しないかもしれない。他の実現化例では、エントリログ218は、予め定義されたメモリ深度を含み得る。エントリログ218のメモリ深度制限に達すると、追加のトレースエントリが失われるかもしれない。どのトレースエントリが失われるかを制御するために、エントリログ218は、先入れ先出し(first-in-first-out:FIFO)モードで、またはそれに代えて、上書き記録モードで動作することができる。
いくつかの実現化例では、上書き記録モードは、事後デバッグに関連付けられた性能分析をサポートするために、システム100によって使用され得る。たとえば、プログラムコードは、トレース活動がイネーブルにされ、上書き記録モードがイネーブルにされた状態で、ある期間実行され得る。システム100内の事後ソフトウェアイベント(たとえばプログラム破損)に応答して、ホストシステム126によって実行される監視用ソフトウェアは、プログラム破損前に生じたハードウェアイベントを把握するために、例示的なハードウェアトレースバッファのデータ内容を分析することができる。この明細書で使用されるように、事後デバッグは、コードが破損した後の、または、意図されたように実行される/動作することがおおむねできなくなった後のプログラムコードの分析またはデバッグに関する。
FIFOモードでは、エントリログ218がいっぱいである場合、および、ホストシステム126がある時間枠内の保存されたログエントリを除去する場合、メモリリソースを節約するために、新しいトレースエントリはチップマネージャ216のメモリユニットに保存されないかもしれない。一方、上書き記録モードでは、ホストシステム126がある時間枠内の保存されたログエントリを除去するためにエントリログ218がいっぱいである場合、メモリリソースを節約するために、新しいトレースエントリを、エントリログ218内に格納された最も古いトレースエントリに上書きすることができる。いくつかの実現化例では、トレースエントリは、DMA動作がHIB114の処理機能を使用することに応答して、ホストシステム126のメモリへ動かされる。
この明細書で使用されるように、トレースポイントは、トレースエントリと、チップマネージャ216によって受信され、トレースエントリログ218に格納された当該トレースエントリに関連付けられたデータとの生成元である。いくつかの実現化例では、マルチコアマルチノードプロセッサマイクロチップは、チップ内に3つのトレースチェーンを含
んでいてもよく、第1のトレースチェーンはチップノード0からトレースエントリを受信し、第2のトレースチェーンはチップノード1からトレースエントリを受信し、第3のトレースチェーンはチップのICIルータからトレースエントリを受信するようになっている。
各トレースポイントは、そのトレースチェーン内に、それがトレースエントリのヘッダに挿入する一意的なトレース識別番号を有する。いくつかの実現化例では、各トレースエントリは、それが発生したトレースチェーンを、1つ以上のバイト/ビットのデータワードによって示されたヘッダにおいて識別する。たとえば、各トレースエントリは、特定のトレースイベントに関する情報を伝える定義されたフィールドフォーマット(たとえばヘッダ、ペイロードなど)を有するデータ構造を含み得る。トレースエントリにおける各フィールドは、トレースエントリを生成したトレースポイントに適用可能な有用なデータに対応する。
上述のように、各トレースエントリは、トレースエントリログ218に関連付けられたチップマネージャ216のメモリユニットに書込まれ、または格納され得る。いくつかの実現化例では、トレースポイントが個々にイネーブルまたはディスエーブルにされてもよく、複数のトレースポイントが、同じタイプであるものの異なるトレースポイント識別子を有するトレースエントリを生成してもよい。
いくつかの実現化例では、各トレースエントリタイプは、トレース名と、トレース記述と、トレースエントリ内の特定のフィールドおよび/またはフィールドの集合のための符号化を識別するヘッダとを含み得る。これらの名前、記述、およびヘッダは、トレースエントリが表わすことの記述を一括して提供する。チップマネージャ216の観点から見ると、この記述は、特定のトレースエントリが特定のプロセッサチップ内に加わった特定のトレースチェーン203、205、207を識別することもできる。このため、トレースエントリ内のフィールドは、記述に関する(たとえばバイト/ビット単位の)データ片を表わしており、どのトレースポイントが特定のトレースエントリを生成したかを判定するために使用されるトレースエントリ識別子であってもよい。
いくつかの実現化例では、格納されたハードウェアイベントのうちの1つ以上に関連付けられたトレースエントリデータは、a)少なくともノード0とノード1との間、b)少なくともノード0内のコンポーネント間、および、c)少なくともノード1内のコンポーネント間に生じるデータ通信に部分的に対応することができる。たとえば、格納されたハードウェアイベントは、1)ノード0のFPC104とノード1のFPC104との間、ノード0のFPC104とノード0のSPC106との間、2)ノード0のSPC106とノード1のSPC106との間、のうちの少なくとも1つで生じるデータ通信に部分的に対応することができる。
図3は、例示的なトレース多重化設計アーキテクチャ300および例示的なデータ構造320のブロック図を示す。トレース多重化設計300は概して、トレースバス入力302、バスアービタ304、およびローカルトレースポイントアービタ306、バスFIFO308、少なくとも1つのローカルトレースイベントキュー310、共有トレースイベントFIFO312、およびトレースバスアウト314を含む。
多重化設計300は、システム100のコンポーネント内に配置された例示的なトレースmuxに対応する。多重化設計300は、以下の機能性を含み得る。バスイン302は、時間アービトレーション論理(たとえばアービタ304)によってトレースデータが例示的なトレースチェーンに置かれるようになるまでバスFIFO308内に一時的に格納されるローカルトレースポイントデータに関連し得る。コンポーネントのための1つ以上
のトレースポイントが、トレースイベントデータを、少なくとも1つのローカルトレースイベントキュー310に挿入することができる。アービタ306は第1のレベルのアービトレーションを提供し、キュー310内に格納されたローカルトレースイベントからのイベントの選択を可能にする。選択されたイベントは、格納キューとしても機能する共有トレースイベントFIFO312に置かれる。
アービタ304は、FIFOキュー312からローカルトレースイベントを受信し、ローカルトレースイベントをトレースバスアウト314を介して特定のトレースチェーン203、205、207上に併合する第2のレベルのアービトレーションを提供する。いくつかの実現化例では、トレースエントリは、それらが共有FIFO312に併合され得るよりも速く、ローカルキュー310に押込まれてもよい。または、それに代えて、トレースエントリは、それらがトレースバス314上に併合され得るよりも速く、共有FIFO312に押込まれてもよい。これらのシナリオが生じる場合、それぞれのキュー310および312はトレースデータでいっぱいになるであろう。
いくつかの実現化例では、いずれかのキュー310または312がトレースデータでいっぱいになると、システム100は、最新のトレースエントリがドロップされて特定のキューに格納または併合されないように構成され得る。他の実現化例では、あるキュー(たとえばキュー310、312)がいっぱいになった場合にトレースエントリをドロップするのではなく、システム100は、もう一度いっぱいになったキューがエントリを受信するための利用可能キュー空間を有するまで、例示的な処理パイプラインをストールさせるように構成され得る。
たとえば、キュー310、312を使用する処理パイプラインは、十分なまたはしきい値の数のトレースエントリがトレースバス314上に併合されるまでストールされ得る。十分なまたはしきい値の数は、1つ以上のトレースエントリがキュー310、312によって受信されるための利用可能なキュー空間をもたらす、特定の数の併合されたトレースエントリに対応することができる。下流のキュー空間が利用可能になるまで処理パイプラインがストールされる実現化例は、トレースエントリがドロップされるのではなく保たれることに基づいた、より高い忠実度のトレースデータを提供することができる。
いくつかの実現化例では、ローカルトレースキューは、各トレースエントリがローカルキュー310において1ヶ所のみを占めるように、トレースエントリによって要求されるのと同じくらい幅が広い。しかしながら、共有トレースFIFOキュー312は、いくつかのトレースエントリが共有キュー312において2つの位置を占め得るように、一意的なトレースエントリライン符号化を使用することができる。いくつかの実現化例では、トレースパケットのいずれかのデータがドロップされた場合、部分パケットがトレースエントリログ218に現われないように、パケット全体がドロップされる。
一般に、トレースは、システム100の特定のコンポーネントに関連付けられた活動またはハードウェアイベントのタイムラインである。集合体データである(以下に説明される)性能カウンタとは異なり、トレースは、特定されたトレースウィンドウ中に生じるハードウェア活動についての洞察力を提供する詳細なイベントデータを含む。説明されるハードウェアシステムは、トレースエントリの生成、ハードウェア管理バッファでのトレースエントリの一時的格納、1つ以上のトレースタイプの静的および動的イネーブリング、ならびに、ホストシステム126へのトレースエントリデータのストリーミングを含む、分散ハードウェアトレーシングのための大規模なサポートを可能にする。
いくつかの実現化例では、トレースは、DMA動作の生成、DMA動作の実行、ある命令の発行/実行、または同期フラグの更新といった、システム100のコンポーネントに
よって実行されるハードウェアイベントのために生成され得る。いくつかの例では、トレース活動は、システムを通してDMAを追跡するために、または、特定のプロセッサコア上で実行される命令を追跡するために使用され得る。
システム100は、ハードウェアイベントのタイムラインから1つ以上のハードウェアイベント322、324を識別する少なくとも1つのデータ構造320を生成するように構成され得る。いくつかの実現化例では、データ構造320は、1つ以上のハードウェアイベント322、324を、少なくともFPC104およびSPC106に関連付けられたイベントの時系列の順序で配置する。いくつかの例では、システム100は、データ構造320を、ホストシステム126のホスト制御デバイスのメモリバンクに格納することができる。データ構造320は、少なくともプロセッサコア104および106によって実行されるプログラムコードの性能を評価するために使用され得る。
ハードウェアイベント324によって示されるように、いくつかの実現化例では、特定のトレース識別(ID)番号(たとえばトレースID‘003)が、分散プロセッサユニット間にわたって生じる複数のハードウェアイベントに関連付けられ得る。複数のハードウェアイベントは、特定のメモリアクセス動作(たとえばDMA)に対応することができ、特定のトレースID番号は、1つ以上のハードウェアイベントを相関させるために使用される。
たとえば、イベント324によって示されるように、DMA動作用の単一のトレースIDは、DMAにおける複数の異なるポイントに対応する複数のタイムスタンプを含み得る。いくつかの例では、トレースID‘003は、互いに対して何らかの時間離れているとして識別される、「発行済」イベント、「実行済」イベント、および「完了済」イベントを有することができる。よって、この点に関し、トレースIDはさらに、相関に基づいて、およびタイムスタンプを参照して、メモリアクセス動作の待ち時間属性を判定するために使用され得る。
いくつかの実現化例では、データ構造320を生成することは、たとえば、システム100が、ハードウェアイベントの第1の部分集合におけるそれぞれのイベントのイベントタイムスタンプを、ハードウェアイベントの第2の部分集合におけるそれぞれのイベントのイベントタイムスタンプと比較することを含み得る。データ構造320を生成することはさらに、システム100が、イベントの第1の部分集合とイベントの第2の部分集合との比較に部分的に基づいて、相関された一組のハードウェアイベントを、データ構造における提示のために提供することを含み得る。
図3に示すように、データ構造320は、特定のハードウェアイベント322、324の待ち時間属性を示す少なくとも1つのパラメータを識別することができる。待ち時間属性は少なくとも、特定のハードウェアイベントの持続時間を示し得る。いくつかの実現化例では、データ構造320は、ホストシステム126の制御デバイスによって実行されるソフトウェア命令によって生成される。いくつかの例では、構造320は、制御デバイスがトレースエントリデータをホストシステム126のメモリディスク/ユニットに格納することに応答して生成され得る。
図4は、システム100によって実行される直接メモリアクセス(DMA)トレースイベントのための例示的なトレース活動を示すブロック図400である。DMAトレーシングのために、第1のプロセッサノードから第2のプロセッサノードへと発生する例示的なDMA動作についてのデータが、ICI112を介して進むことができ、データ経路に沿って中間ICI/ルータホップを生成することができる。DMA動作がICI112を横断する際、DMA動作は、プロセッサチップ内の各ノードで、および各ホップに沿ってト
レースエントリを生成するであろう。ノードおよびホップに沿ったDMA動作の時間的推移を再構築するために、これらの生成されたトレースエントリの各々によって情報が取込まれる。
例示的なDMA動作は、図4の実現化例に示すプロセスステップに関連付けられ得る。この動作のために、ローカルDMAが、プロセッサコア104、106の少なくとも1つに関連付けられた仮想メモリ402(vmem402)からHBM108へデータを転送する。ブロック図400に示された番号付けは、表404のステップに対応しており、概して、ノードファブリック110における活動、またはノードファブリック110によって始動される活動を表わす。
表404のステップは概して、関連付けられたトレースポイントを説明する。例示的な動作は、このDMAのために6つのトレースエントリを生成するであろう。ステップ1は、プロセッサコアからノードファブリック110への最初のDMA要求を含み、それはノードファブリックにおいてトレースポイントを生成する。ステップ2は、ノードファブリック110がプロセッサコアにデータを転送するよう求める読出コマンドを含み、それはノードファブリック110において別のトレースポイントを生成する。vmem402がノードファブリック110の読出を完了すると、例示的な動作は、ステップ3のためのトレースエントリを有していない。
ステップ4は、ノードファブリック110が、プロセッサコアにおいて同期フラグ更新を引き起こすために読出リソース更新を行なうことを含み、それはプロセッサコアにおいてトレースポイントを生成する。ステップ5は、次のデータがHBMに書込まれることをノードファブリック110がメモリmux108に通知する書込コマンドを含む。書込コマンドを介した通知は、ノードファブリック110においてトレースポイントを生成し、一方、ステップ6で、HBMへの書込の完了も、ノードファブリック110においてトレースポイントを生成する。ステップ7で、ノードファブリック110は、プロセッサコアにおいて同期フラグ更新を引き起こすために書込リソース更新を行ない、それはプロセッサコアにおいて(たとえばFPC104において)トレースポイントを生成する。書込リソース更新に加えて、ノードファブリック110は、DMA動作のためのデータ完了がプロセッサコアに信号で送り返される受信確認更新(ack更新)を行なうことができる。ack更新は、書込リソース更新によって生成されたトレースエントリと同様のトレースエントリを生成することができる。
別の例示的なDMA動作では、DMA命令が発生元ノードのノードファブリック110において発行されると、第1のトレースエントリが生成される。DMAについてのデータを読出し、そのデータを送信用キューに書込むために使用される時間を取込むために、追加のトレースエントリがノードファブリック110において生成され得る。いくつかの実現化例では、ノードファブリック110は、DMAデータを、より小さいチャンクのデータへとパケット化することができる。より小さいチャンクへとパケット化されたデータのために、読出および書込トレースエントリが、最初のデータチャンクおよび最後のデータチャンクについて生成され得る。オプションで、最初と最後のデータチャンクに加えて、すべてのデータチャンクが、トレースエントリを生成するために設定され得る。
ICIホップを要求し得るリモート/非ローカルDMA動作のために、最初のデータおよび最後のデータチャンクは、ICI/ルータ112に沿った各中間ホップにおける入口および出口ポイントで、追加のトレースエントリを生成することができる。DMAデータが宛先ノードに到着すると、以前のノードファブリック110エントリと同様のトレースエントリが、宛先ノードで生成される(たとえば、最初と最後のデータチャンクの読出/書込)。いくつかの実現化例では、DMA動作の最後のステップは、DMAに関連付けら
れた実行された命令が宛先ノードで同期フラグの更新を引き起こすことを含み得る。同期フラグが更新されると、DMA動作の完了を示すトレースエントリが生成され得る。
いくつかの実現化例では、トレースポイントが実行され得るように、DMAトレーシングが、FPC104、SPC106、またはHIB114によって、各コンポーネントがトレースモードである場合に始動される。システム100のコンポーネントは、トリガーメカニズムを介したFPC104またはSPC106におけるグローバル制御に基づいて、トレースモードに入ることができる。システム100のコンポーネントによるプログラムコードの実行に関連付けられた特定のアクションまたは状態の発生に応答して、トレースポイントはトリガーする。たとえば、プログラムコードの一部は、システム100の少なくとも1つのハードウェアコンポーネントによって検出可能である、埋込まれたトリガー機能を含み得る。
システム100のコンポーネントは、FPC104またはSPC106の少なくとも1つによって実行されるプログラムコードの一部に関連付けられたトリガー機能を検出するように構成され得る。いくつかの例では、トリガー機能は、1)実行されたプログラムコードの一部またはモジュールにおける特定のシーケンスステップ、または、2)システム100の分散プロセッサユニットによって使用されるGTCによって示される特定の時間パラメータ、のうちの少なくとも1つに対応することができる。
トリガー機能の検出に応答して、システム100の特定のコンポーネントは、1つ以上のハードウェアイベントに関連付けられたトレースエントリデータをハードウェアコンポーネントの少なくとも1つのメモリバッファに格納させる少なくとも1つのトレースポイント(たとえばトレースイベント)を、始動、トリガー、または実行することができる。上述のように、格納されたトレースデータは次に、少なくとも1つのトレースチェーン203、205、207を経由して、チップマネージャ216に提供され得る。
図5は、システム100のコンポーネント機能とシステム100の1つ以上のノード200、201とを使用する分散ハードウェアトレーシングのための例示的なプロセス500のプロセスフロー図である。このため、プロセス500は、ノード200、201を含むシステム100の上述のコンピューティングリソースのうちの1つ以上を使用して実現され得る。
プロセス500はブロック502で始まり、コンピューティングシステム100が、(少なくともFPC104およびSPC106を含む)1つ以上のプロセッサコンポーネントによって実行されるプログラムコードの実行を監視するステップを含む。いくつかの実現化例では、トレース活動を生成するプログラムコードの実行は、複数のホストシステム、または単一のホストシステムのサブシステムによって、少なくとも部分的に監視され得る。よって、これらの実現化例では、システム100は、分散処理ユニット間にわたって生じるハードウェアイベントのためのトレース活動の分析に関連する複数のプロセス500を行なうことができる。
いくつかの実現化例では、第1のプロセッサコンポーネントは、監視されるプログラムコードの少なくとも第1の部分を実行するように構成される。ブロック504で、プロセス500は、コンピューティングシステム100が、第2のプロセッサコンポーネントによって実行されるプログラムコードの実行を監視するステップを含む。いくつかの実現化例では、第2のプロセッサコンポーネントは、監視されるプログラムコードの少なくとも第2の部分を実行するように構成される。
コンピューティングシステム100のコンポーネントは各々、少なくとも1つのメモリ
バッファを含み得る。プロセス500のブロック506は、システム100が、1つ以上のハードウェアイベントを識別するデータを、特定のコンポーネントの少なくとも1つのメモリバッファに格納するステップを含む。いくつかの実現化例では、ハードウェアイベントは、少なくとも第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントを含む分散プロセッサユニット間にわたって生じる。ハードウェアイベントを識別する格納されたデータは各々、ハードウェアイベントを特徴付けるメタデータおよびハードウェアイベントタイムスタンプを含み得る。いくつかの実現化例では、ハードウェアイベントの集合はタイムラインイベントに対応する。
たとえば、システム100は、システム100内のソースハードウェアコンポーネントとシステム100内の宛先ハードウェアコンポーネントとの間のデータパケットの移動に部分的に対応する1つ以上のハードウェアイベントを識別するデータを格納することができる。いくつかの実現化例では、ハードウェアイベントを特徴付ける格納されたメタデータは、1)ソースメモリアドレス、2)宛先メモリアドレス、3)ハードウェアイベントを格納させるトレースエントリに関連する一意的なトレース識別番号、または、4)直接メモリアクセス(DMA)トレースエントリに関連付けられたサイズパラメータ、のうちの少なくとも1つに対応することができる。
いくつかの実現化例では、ハードウェアイベントの集合を識別するデータを格納するステップは、たとえば、少なくとも1つのローカルトレースイベントキュー310に対応するFPC104および/またはSPC106のメモリバッファにイベントデータを格納するステップを含む。格納されたイベントデータは、ハードウェアイベントのより大きいタイムラインを生成するために使用され得るハードウェアイベントデータの部分集合を示し得る。いくつかの実現化例では、イベントデータの格納は、FPC104またはSPC106の少なくとも1つが、システム100のコンポーネントによって実行されるプログラムコードの一部に関連付けられたハードウェアトレース命令を実行することに応答して生じる。
プロセス500のブロック508で、システム100は、ハードウェアイベントの集合から1つ以上のハードウェアイベントを識別する、構造320などのデータ構造を生成する。データ構造は、1つ以上のハードウェアイベントを、少なくとも第1のプロセッサコンポーネントおよび第2のプロセッサコンポーネントに関連付けられたイベントの時系列の順序で配置する。いくつかの実現化例では、データ構造は、特定のトレースイベントについてのハードウェアイベントタイムスタンプ、そのトレースイベントに関連付けられたソースアドレス、または、そのトレースイベントに関連付けられたメモリアドレスを識別する。
プロセス500のブロック510で、システム100は、生成されたデータ構造を、ホストシステム126に関連付けられたホストデバイスのメモリバンクに格納する。いくつかの実現化例では、格納されたデータ構造は、少なくとも第1のプロセッサコンポーネントまたは第2のプロセッサコンポーネントによって実行されるプログラムコードの性能を分析するために、ホストシステム126によって使用され得る。同様に、格納されたデータ構造は、システム100の少なくとも1つのコンポーネントの性能を分析するために、ホストシステム126によって使用され得る。
たとえば、ユーザまたはホストシステム126は、プログラムコード内の特定のソフトウェアモジュールの実行に関連付けられた性能問題があるかどうかを検出または判定するために、データ構造を分析することができる。例示的な問題は、ソフトウェアモジュールが割り当てられた実行時間ウィンドウ内で実行を完了しないことを含み得る。
さらに、ユーザまたはホストデバイス126は、システム100の特定のコンポーネントがしきい値性能レベルを上回って動作しているか、または下回って動作しているかを検出または判定することができる。コンポーネント性能に関連する例示的な問題は、特定のハードウェアコンポーネントがあるイベントを実行するものの、結果データについての許容可能パラメータ範囲外にある結果データを生成することを含み得る。いくつかの実現化例では、この結果データは、実質的に同様の動作を実行するシステム100の他の関連するコンポーネントによって生成された結果データと一致していないかもしれない。
たとえば、プログラムコードの実行中、システム100の第1のコンポーネントが、動作を完了するために、および結果を生成するために必要とされ得る。同様に、システム100の第2のコンポーネントが、実質的に同様の動作を完了するために、および実質的に同様の結果を生成するために必要とされ得る。生成されたデータ構造の分析は、第2のコンポーネントが、第1のコンポーネントによって生成された結果とは大幅に異なる結果を生成したことを示し得る。同様に、データ構造は、許容可能結果パラメータの範囲外にあることが顕著である第2のコンポーネントの結果パラメータ値を示すかもしれない。これらの結果はおそらく、システム100の第2のコンポーネントの潜在的な性能問題を示し得る。
この明細書で説明される主題および機能的動作の実施形態は、デジタル電子回路で、有形に具体化されたコンピュータソフトウェアまたはファームウェアで、この明細書に開示された構造およびそれらの構造的同等物を含むコンピュータハードウェアで、もしくは、それらのうちの1つ以上の組合せで実現され得る。この明細書で説明される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、有形の非一時的プログラム担体上で符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。それに代えて、またはそれに加えて、プログラム命令は、データ処理装置による実行のために好適なレシーバ装置へ送信される情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械によって生成された電気信号、光学信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、機械読取可能記憶デバイス、機械読取可能記憶基板、ランダムまたはシリアルアクセスメモリデバイス、もしくは、それらのうちの1つ以上の組合せであってもよい。
この明細書で説明されるプロセスおよび論理フローは、1つ以上のプログラマブルコンピュータが、1つ以上のコンピュータプログラムを、入力データ上で動作して出力を生成することによって機能を行なうように実行することによって、行なわれ得る。プロセスおよび論理フローはまた、特殊用途論理回路、たとえばFPGA(field programmable gate array:フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路
)、またはGPGPU(General purpose graphics processing unit:汎用グラフィック処理ユニット)によって行なわれてもよく、装置はまた、当該特殊用途論理回路として実現されてもよい。
コンピュータプログラムの実行に好適なコンピュータは、汎用または専用マイクロプロセッサまたはそれら双方、もしくは任意の他の種類の中央処理装置を例として含み、それに基づき得る。一般に、中央処理装置は、読取専用メモリまたはランダムアクセスメモリまたはそれら双方から、命令およびデータを受信するであろう。コンピュータの本質的要素は、命令を行なうか実行するための中央処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータはまた、データを格納するための1つ以上の大容量記憶デバイス、たとえば磁気ディスク、光磁気ディスク、または光学ディスクを含み、もしくは、当該大容量記憶デバイスからデータを受信し、または当該大容量記憶デバイスへデータを転送し、またはそれら双方を行なうために動作可能に結
合されるであろう。しかしながら、コンピュータはそのようなデバイスを有していなくてもよい。
コンピュータプログラム命令およびデータを格納するのに好適なコンピュータ読取可能媒体は、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス;磁気ディスク、たとえば内部ハードディスクまたはリムーバブルディスクを例として含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、特殊用途論理回路によって補足され、またはそれに組み込まれ得る。
この明細書は多くの特定の実現詳細を含むものの、これらは、発明の範囲または特許請求の範囲に対する限定として解釈されるべきでなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。この明細書において別々の実施形態の状況で説明されるある特徴を、単一の実施形態において組合せて実現することもできる。逆に、単一の実施形態の状況で説明されるさまざまな特徴を、複数の実施形態で別々に、または任意の好適な部分的組合せで実現することもできる。さらに、特徴はある組合せで作用するとして上述され、そういうものとして当初特許請求され得るが、場合によっては、特許請求された組合せからの1つ以上の特徴がその組合せから削除されてもよく、特許請求された組合せは、部分的組合せまたは部分的組合せの変形に向けられてもよい。
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序または連続する順序で行なわれること、もしくは、図示された動作がすべて行なわれることを要求するものとして理解されるべきではない。ある状況では、マルチタスクおよび並行処理が有利であるかもしれない。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を要求するものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは一般に、単一のソフトウェア製品にともに一体化されるか、または複数のソフトウェア製品にパッケージ化され得るということが理解されるべきである。
主題の特定の実施形態が説明されてきた。他の実施形態は、特許請求の範囲内にある。たとえば、請求項に記載されたアクションは、異なる順序で行なわれ、依然として望ましい結果を達成することができる。一例として、添付図面に示されたプロセスは、望ましい結果を達成するために、図示された特定の順序または連続する順序を必ずしも必要とはしない。ある実現化例では、マルチタスクおよび並行処理が有利であるかもしれない。

Claims (20)

  1. 1つ以上のプロセッサを有するコンピューティングシステムによって実行される、コンピュータにより実現される方法であって、前記方法は、
    第1のプロセッサコンポーネントによるプログラムコードの実行を監視するステップを含み、前記第1のプロセッサコンポーネントは、前記プログラムコードの少なくとも第1の部分を実行するように構成され、前記方法はさらに、
    第2のプロセッサコンポーネントによる前記プログラムコードの実行を監視するステップを含み、前記第2のプロセッサコンポーネントは、前記プログラムコードの少なくとも第2の部分を実行するように構成され、前記方法はさらに、
    前記コンピューティングシステムが、前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントを含むプロセッサユニット間にわたって生じる1つ以上のハードウェアイベントを識別するデータを格納するステップを含み、各ハードウェアイベントは、前記プログラムコードのメモリアクセス動作、前記プログラムコードの発行済命令、または前記プログラムコードの実行済命令に関連付けられたデータ通信のうちの少なくとも1つを表わしており、前記1つ以上のハードウェアイベントの各々を識別する前記データは、前記ハードウェアイベントを特徴付けるメタデータおよびハードウェアイベントタイムスタンプを含み、前記方法はさらに、
    前記コンピューティングシステムが、前記1つ以上のハードウェアイベントを識別するデータ構造を生成するステップを含み、前記データ構造は、前記1つ以上のハードウェアイベントを、少なくとも前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントに関連付けられたイベントの時系列の順序で配置するように構成され、前記方法はさらに、
    前記コンピューティングシステムが、生成された前記データ構造を、ホストデバイスのメモリバンクに格納するステップを含む、方法。
  2. 前記コンピューティングシステムが、前記第1のプロセッサコンポーネントまたは前記第2のプロセッサコンポーネントのうちの少なくとも1つによって実行されるプログラムコードの一部に関連付けられたトリガー機能を検出するステップと、
    前記トリガー機能を検出するステップに応答して、前記コンピューティングシステムが、前記1つ以上のハードウェアイベントに関連付けられたデータを少なくとも1つのメモリバッファに格納させる少なくとも1つのトレースイベントを始動するステップとをさらに含む、請求項1に記載の方法。
  3. 前記トリガー機能は、前記プログラムコードにおける特定のシーケンスステップ、または、前記プロセッサユニットによって使用されるグローバルタイムクロックによって示される特定の時間パラメータ、のうちの少なくとも1つに対応し、
    前記少なくとも1つのトレースイベントを始動するステップは、トレースビットが特定の値に設定されていると判定するステップを含み、前記少なくとも1つのトレースイベントは、前記プロセッサユニット間にわたって生じる複数の中間動作を含むメモリアクセス動作に関連付けられており、前記トレースビットが前記特定の値に設定されていると判定するステップに応答して、前記複数の中間動作に関連付けられたデータが1つ以上のメモリバッファに格納される、請求項2に記載の方法。
  4. 前記1つ以上のハードウェアイベントを識別するデータを格納するステップはさらに、前記第1のプロセッサコンポーネントの第1のメモリバッファに、前記1つ以上のハードウェアイベントのハードウェアイベントを識別するデータの第1の部分集合を格納するステップを含み、格納するステップは、前記第1のプロセッサコンポーネントが、前記プログラムコードの少なくとも前記第1の部分に関連付けられたハードウェアトレース命令を実行することに応答して生じる、請求項1に記載の方法。
  5. 前記1つ以上のハードウェアイベントを識別するデータを格納するステップはさらに、前記第2のプロセッサコンポーネントの第2のメモリバッファに、前記1つ以上のハードウェアイベントのハードウェアイベントを識別するデータの第2の部分集合を格納するステップを含み、格納するステップは、前記第2のプロセッサコンポーネントが、前記プログラムコードの少なくとも前記第2の部分に関連付けられたハードウェアトレース命令を実行することに応答して生じる、請求項4に記載の方法。
  6. 前記データ構造を生成するステップはさらに、
    前記コンピューティングシステムが、ハードウェアイベントを識別するデータの前記第1の部分集合におけるそれぞれのイベントの少なくともハードウェアイベントタイムスタンプを、ハードウェアイベントを識別するデータの前記第2の部分集合におけるそれぞれのイベントの少なくともハードウェアイベントタイムスタンプと比較するステップと、
    前記コンピューティングシステムが、前記第1の部分集合における前記それぞれのイベントと前記第2の部分集合における前記それぞれのイベントとの比較に部分的に基づいて、相関された一組のハードウェアイベントを、前記データ構造における提示のために提供するステップとを含む、請求項5に記載の方法。
  7. 生成された前記データ構造は、特定のハードウェアイベントの待ち時間属性を示す少なくとも1つのパラメータを識別し、前記待ち時間属性は少なくとも、前記特定のハードウェアイベントの持続時間を示す、請求項1に記載の方法。
  8. 前記コンピューティングシステムの少なくとも1つのプロセッサは、1つ以上のプロセッサコンポーネントを有するマルチコアマルチノードプロセッサであり、前記1つ以上のハードウェアイベントは、少なくとも第1のノードの前記第1のプロセッサコンポーネントと第2のノードの前記第2のプロセッサコンポーネントとの間で生じるデータ転送に部分的に対応する、請求項1に記載の方法。
  9. 前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントは、前記コンピューティングシステムのプロセッサ、プロセッサコア、メモリアクセスエンジン、またはハードウェア機能のうちの1つであり、前記1つ以上のハードウェアイベントは、ソースと宛先との間のデータパケットの移動に部分的に対応し、
    前記ハードウェアイベントを特徴付けるメタデータは、ソースメモリアドレス、宛先メモリアドレス、一意的なトレース識別番号、または、直接メモリアクセス(DMA)トレースに関連付けられたサイズパラメータ、のうちの少なくとも1つに対応する、請求項1に記載の方法。
  10. 分散ハードウェアトレーシングシステムであって、
    1つ以上のプロセッサコアを含む1つ以上のプロセッサと、
    命令を格納するための1つ以上の機械読取可能記憶ユニットとを含み、前記命令は、動作を行なうために前記1つ以上のプロセッサによって実行可能であり、前記動作は、
    第1のプロセッサコンポーネントによるプログラムコードの実行を監視することを含み、前記第1のプロセッサコンポーネントは、前記プログラムコードの少なくとも第1の部分を実行するように構成され、前記動作はさらに、
    第2のプロセッサコンポーネントによる前記プログラムコードの実行を監視することを含み、前記第2のプロセッサコンポーネントは、前記プログラムコードの少なくとも第2の部分を実行するように構成され、前記動作はさらに、
    コンピューティングシステムが、前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントを含むプロセッサユニット間にわたって生じる1つ以上のハードウェアイベントを識別するデータを格納することを含み、各ハードウェアイベントは
    、前記プログラムコードのメモリアクセス動作、前記プログラムコードの発行済命令、または前記プログラムコードの実行済命令に関連付けられたデータ通信のうちの少なくとも1つを表わしており、前記1つ以上のハードウェアイベントの各々を識別する前記データは、前記ハードウェアイベントを特徴付けるメタデータおよびハードウェアイベントタイムスタンプを含み、前記動作はさらに、
    前記コンピューティングシステムが、前記1つ以上のハードウェアイベントを識別するデータ構造を生成することを含み、前記データ構造は、前記1つ以上のハードウェアイベントを、少なくとも前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントに関連付けられたイベントの時系列の順序で配置するように構成され、前記動作はさらに、
    前記コンピューティングシステムが、生成された前記データ構造を、ホストデバイスのメモリバンクに格納することを含む、分散ハードウェアトレーシングシステム。
  11. 前記動作はさらに、
    前記コンピューティングシステムが、前記第1のプロセッサコンポーネントまたは前記第2のプロセッサコンポーネントのうちの少なくとも1つによって実行されるプログラムコードの一部に関連付けられたトリガー機能を検出することと、
    前記トリガー機能を検出することに応答して、前記コンピューティングシステムが、前記1つ以上のハードウェアイベントに関連付けられたデータを少なくとも1つのメモリバッファに格納させる少なくとも1つのトレースイベントを始動することとを含む、請求項10に記載の分散ハードウェアトレーシングシステム。
  12. 前記トリガー機能は、前記プログラムコードにおける特定のシーケンスステップ、または、前記プロセッサユニットによって使用されるグローバルタイムクロックによって示される特定の時間パラメータ、のうちの少なくとも1つに対応し、
    前記少なくとも1つのトレースイベントを始動することは、トレースビットが特定の値に設定されていると判定することを含み、前記少なくとも1つのトレースイベントは、前記プロセッサユニット間にわたって生じる複数の中間動作を含むメモリアクセス動作に関連付けられており、前記トレースビットが前記特定の値に設定されていると判定することに応答して、前記複数の中間動作に関連付けられたデータが1つ以上のメモリバッファに格納される、請求項11に記載の分散ハードウェアトレーシングシステム。
  13. 前記1つ以上のハードウェアイベントを識別するデータを格納することはさらに、前記第1のプロセッサコンポーネントの第1のメモリバッファに、前記1つ以上のハードウェアイベントのハードウェアイベントを識別するデータの第1の部分集合を格納することを含み、格納することは、前記第1のプロセッサコンポーネントが、前記プログラムコードの少なくとも前記第1の部分に関連付けられたハードウェアトレース命令を実行することに応答して生じる、請求項10に記載の分散ハードウェアトレーシングシステム。
  14. 前記1つ以上のハードウェアイベントを識別するデータを格納することはさらに、前記第2のプロセッサコンポーネントの第2のメモリバッファに、前記1つ以上のハードウェアイベントのハードウェアイベントを識別するデータの第2の部分集合を格納することを含み、格納することは、前記第2のプロセッサコンポーネントが、前記プログラムコードの少なくとも前記第2の部分に関連付けられたハードウェアトレース命令を実行することに応答して生じる、請求項13に記載の分散ハードウェアトレーシングシステム。
  15. 前記データ構造を生成することはさらに、
    前記コンピューティングシステムが、ハードウェアイベントを識別するデータの前記第1の部分集合におけるそれぞれのイベントの少なくともハードウェアイベントタイムスタンプを、ハードウェアイベントを識別するデータの前記第2の部分集合におけるそれぞれ
    のイベントの少なくともハードウェアイベントタイムスタンプと比較することと、
    前記コンピューティングシステムが、前記第1の部分集合における前記それぞれのイベントと前記第2の部分集合における前記それぞれのイベントとの比較に部分的に基づいて、相関された一組のハードウェアイベントを、前記データ構造における提示のために提供することとを含む、請求項14に記載の分散ハードウェアトレーシングシステム。
  16. 生成された前記データ構造は、特定のハードウェアイベントの待ち時間属性を示す少なくとも1つのパラメータを識別し、前記待ち時間属性は少なくとも、前記特定のハードウェアイベントの持続時間を示す、請求項10に記載の分散ハードウェアトレーシングシステム。
  17. 少なくとも1つのプロセッサは、1つ以上の処理コンポーネントを有するマルチコアマルチノードプロセッサであり、前記1つ以上のハードウェアイベントは、少なくとも第1のノードの前記第1のプロセッサコンポーネントと第2のノードの前記第2のプロセッサコンポーネントとの間で生じるデータ通信に部分的に対応する、請求項10に記載の分散ハードウェアトレーシングシステム。
  18. 前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントは、前記コンピューティングシステムのプロセッサ、プロセッサコア、メモリアクセスエンジン、またはハードウェア機能のうちの1つであり、
    前記1つ以上のハードウェアイベントは、ソースと宛先との間のデータパケットの移動に部分的に対応し、
    前記ハードウェアイベントを特徴付けるメタデータは、ソースメモリアドレス、宛先メモリアドレス、特有のトレースイベント識別(ID)番号、または、直接メモリアクセストレース要求に関連付けられたサイズパラメータ、のうちの少なくとも1つに対応する、請求項10に記載の分散ハードウェアトレーシングシステム。
  19. 特定のトレースID番号が、前記プロセッサユニット間にわたって生じる複数のハードウェアイベントに関連付けられ、前記複数のハードウェアイベントは、特定のメモリアクセス動作に対応しており、前記特定のトレースID番号は、前記複数のハードウェアイベントのうちの1つ以上のハードウェアイベントを相関させるために使用され、相関に基づいて前記メモリアクセス動作の待ち時間属性を判定するために使用される、請求項18に記載の分散ハードウェアトレーシングシステム。
  20. データ処理デバイスに配置され、コンピュータプログラムで符号化された、非一時的コンピュータ記憶ユニットであって、前記プログラムは、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに動作を行なわせる命令を含み、前記動作は、
    第1のプロセッサコンポーネントによるプログラムコードの実行を監視することを含み、前記第1のプロセッサコンポーネントは、前記プログラムコードの少なくとも第1の部分を実行するように構成され、前記動作はさらに、
    第2のプロセッサコンポーネントによる前記プログラムコードの実行を監視することを含み、前記第2のプロセッサコンポーネントは、前記プログラムコードの少なくとも第2の部分を実行するように構成され、前記動作はさらに、
    コンピューティングシステムが、前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントを含むプロセッサユニット間にわたって生じる1つ以上のハードウェアイベントを識別するデータを格納することを含み、各ハードウェアイベントは、前記プログラムコードのメモリアクセス動作、前記プログラムコードの発行済命令、または前記プログラムコードの実行済命令に関連付けられたデータ通信のうちの少なくとも1つを表わしており、前記1つ以上のハードウェアイベントの各々を識別する前記データは、前記ハードウェアイベントを特徴付けるメタデータおよびハードウェアイベントタイ
    ムスタンプを含み、前記動作はさらに、
    前記コンピューティングシステムが、前記1つ以上のハードウェアイベントを識別するデータ構造を生成することを含み、前記データ構造は、前記1つ以上のハードウェアイベントを、少なくとも前記第1のプロセッサコンポーネントおよび前記第2のプロセッサコンポーネントに関連付けられたイベントの時系列の順序で配置するように構成され、前記動作はさらに、
    前記コンピューティングシステムが、生成された前記データ構造を、ホストデバイスのメモリバンクに格納することを含む、非一時的コンピュータ記憶ユニット。
JP2023045549A 2017-03-29 2023-03-22 分散ハードウェアトレーシング Pending JP2023082040A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/473,101 US9875167B1 (en) 2017-03-29 2017-03-29 Distributed hardware tracing
US15/473,101 2017-03-29
JP2021028781A JP7250832B2 (ja) 2017-03-29 2021-02-25 分散ハードウェアトレーシング

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021028781A Division JP7250832B2 (ja) 2017-03-29 2021-02-25 分散ハードウェアトレーシング

Publications (1)

Publication Number Publication Date
JP2023082040A true JP2023082040A (ja) 2023-06-13

Family

ID=60269931

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2019539979A Active JP6845338B2 (ja) 2017-03-29 2017-10-20 分散ハードウェアトレーシング
JP2021028781A Active JP7250832B2 (ja) 2017-03-29 2021-02-25 分散ハードウェアトレーシング
JP2023045549A Pending JP2023082040A (ja) 2017-03-29 2023-03-22 分散ハードウェアトレーシング

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2019539979A Active JP6845338B2 (ja) 2017-03-29 2017-10-20 分散ハードウェアトレーシング
JP2021028781A Active JP7250832B2 (ja) 2017-03-29 2021-02-25 分散ハードウェアトレーシング

Country Status (13)

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

Families Citing this family (24)

* 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
JPWO2023084749A1 (ja) * 2021-11-12 2023-05-19
JPWO2023084748A1 (ja) * 2021-11-12 2023-05-19
JPWO2023084750A1 (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
US20240248855A1 (en) * 2023-01-19 2024-07-25 SambaNova Systems, Inc. Method and apparatus for selecting data access method in a heterogeneous processing system with multiple processors

Family Cites Families (82)

* 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
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
US6813731B2 (en) * 2001-02-26 2004-11-02 Emc Corporation Methods and apparatus for accessing trace data
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
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
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
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
US8464089B2 (en) * 2009-06-10 2013-06-11 Panasonic Corporation Tracing apparatus and tracing system
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
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
US8706937B2 (en) * 2011-03-02 2014-04-22 Texas Instruments Incorporated Method and system of debugging multicore bus transaction problems
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
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
CN105579999A (zh) * 2013-07-31 2016-05-11 慧与发展有限责任合伙企业 日志分析
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
CN106033385A (zh) * 2015-03-19 2016-10-19 启碁科技股份有限公司 用于追踪程序执行状态的方法与多核心处理系统
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
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
KR101988558B1 (ko) 2017-06-07 2019-06-12 현대오트론 주식회사 멀티 코어를 갖는 마이크로콘트롤러 유닛을 감시하는 감시장치 및 그것의 동작 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
JP7250832B2 (ja) 分散ハードウェアトレーシング
JP7196083B2 (ja) 同期するハードウェアイベント収集

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230405

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240618