【手続補正書】
【提出日】令和2年4月8日(2020.4.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータにより実現される方法であって、前記方法は、
第１のプロセッサコンポーネントによるプログラムコードの実行を監視するステップを含み、前記第１のプロセッサコンポーネントは、前記プログラムコードの少なくとも第１の部分を実行するように構成され、前記方法はさらに、
第２のプロセッサコンポーネントによる前記プログラムコードの実行を監視するステップを含み、前記第２のプロセッサコンポーネントは、前記プログラムコードの少なくとも第２の部分を実行するように構成され、前記方法はさらに、
コンピューティングシステムが、
ｉ）少なくとも前記プログラムコードの前記第１の部分または前記プログラムコードの前記第２の部分におけるオペランドの発生を識別すること、もしくは、
ｉｉ）前記コンピューティングシステムの少なくとも１つのクロックの現在の時間が、１つ以上のトレースイベントを始動するために使用される予め定義された時間値を示していると判定すること、のうちの少なくとも１つに基づいて、トリガー条件が満たされていることを検出するステップを含み、前記オペランドは、１つ以上のトレースイベントを始動するために使用される第１のパラメータ値を含み、前記方法はさらに、
前記トリガー条件が満たされていることを検出するステップに応答して、前記コンピューティングシステムが、トレースデータを生成する少なくとも第１のトレースイベントを始動するステップを含み、前記トレースデータは、少なくとも前記第１のプロセッサコンポーネントおよび前記第２のプロセッサコンポーネントを含む分散プロセッサユニット間にわたって生じるそれぞれのハードウェアイベントを識別し、前記それぞれのハードウェアイベントの各々について、前記トレースデータは少なくともハードウェアイベントタイムスタンプを含み、前記方法はさらに、
前記コンピューティングシステムが前記トレースデータを使用して、前記トリガー条件が満たされている場合に生成される前記それぞれのハードウェアイベントの時系列の順序を少なくとも示す相関された一組のトレースデータを生成するステップを含む、方法。
【請求項２】
前記第１のトレースイベントは、前記分散プロセッサユニット間にわたって生じるハードウェアイベントを識別するトレースデータを生成する同期されたトレースイベントであり、前記トレースデータはまた、それぞれのハードウェアイベントのための一意的なトレース識別子を識別し、前記ハードウェアイベントは複数の同期されたハードウェアイベントを含み、２つのハードウェアイベントがグローバルハードウェアイベントタイムスタンプを共有する場合、前記ハードウェアイベントは同期される、請求項１に記載の方法。
【請求項３】
前記トリガー条件が満たされていることを検出するステップは、
前記コンピューティングシステムが、
ｉ）前記オペランドの前記第１のパラメータ値がレジスタの第１の限界値を上回ること、または、
ｉｉ）前記現在の時間によって示される前記予め定義された時間値がレジスタの第１の限界値を上回ること、のうちの１つを検出するステップと、
前記トリガー条件が満たされていることを検出するステップに応答して、前記コンピューティングシステムが、トレースデータを生成する第２のトレースイベントを始動するステップとを含み、前記トレースデータは、前記分散プロセッサユニット間にわたって生じる前記それぞれのハードウェアイベント間で共有される少なくとも１つの属性を識別する、請求項１または２に記載の方法。
【請求項４】
前記コンピューティングシステムが、
前記オペランドの第２のパラメータ値が前記レジスタの第２の限界値を上回ること、または、
前記現在の時間によって示される第２の予め定義された時間値が前記レジスタの第２の限界値を上回ること、のうちの１つを検出するステップと、
検出するステップに応答して、前記コンピューティングシステムが、前記オペランドの前記第２のパラメータ値が前記第２の限界値を上回る場合、または前記第２の予め定義された時間値が前記第２の限界値を上回る場合に、前記第２のトレースイベントを停止するステップとをさらに含む、請求項３に記載の方法。
【請求項５】
前記オペランドはさらに、
前記プログラムコードの特定のシーケンスステップを示すパラメータ、または、
前記分散プロセッサユニットの特定の性能状態を示すグローバル制御パラメータ、のうちの少なくとも１つを含み、
前記予め定義された時間値は、
前記分散プロセッサユニットのグローバルタイムクロックによって示される特定の時間値、または、
前記グローバルタイムクロックに関連付けられた予め定義された時間ウィンドウの特定の時間値、のうちの少なくとも１つを含む、請求項３または４に記載の方法。
【請求項６】
前記オペランドは第１の２進データ構造を有し、前記オペランドの前記第１のパラメータ値はトレースマークに対応しており、
前記予め定義された時間値は第２の２進データ構造を有し、前記現在の時間はグローバルタイムクロックによって示され、
前記グローバルタイムクロックは、１つ以上のハードウェアイベントタイムスタンプを生成するために前記分散プロセッサユニットによって使用される、請求項３または４に記載の方法。
【請求項７】
前記コンピューティングシステムのコンパイラが、前記トリガー条件の前記オペランドを、前記第１のプロセッサコンポーネントによって実行されるプログラムコードの少なくとも前記第１の部分に挿入するステップと、
前記コンピューティングシステムの前記コンパイラが、前記トリガー条件の少なくとも１つの予め定義された時間値を、前記第２のプロセッサコンポーネントによって実行されるプログラムコードの少なくとも前記第２の部分に挿入するステップとをさらに含む、請求項３〜６のいずれかに記載の方法。
【請求項８】
前記第１のトレースイベントまたは前記第２のトレースイベントのうちの少なくとも１つを始動するステップは、
前記コンピューティングシステムが、前記第１のプロセッサコンポーネントの第１のカウントレジスタによって受信される第１の制御信号を生成するステップを含み、前記第１の制御信号は、第１のハードウェアイベントに関連付けられたデータを前記第１のカウントレジスタに格納させ、さらに、
前記コンピューティングシステムが、前記第２のプロセッサコンポーネントの第２のカウントレジスタによって受信される第２の制御信号を生成するステップを含み、前記第２の制御信号は、第２のハードウェアイベントに関連付けられたデータを前記第２のカウントレジスタに格納させる、請求項３〜７のいずれかに記載の方法。
【請求項９】
前記第１のハードウェアイベントまたは前記第２のハードウェアイベントのうちの１つに関連付けられた前記データは、
前記分散プロセッサユニットの特定のプロセッサコンポーネントの特定のメモリバッファに書込まれたバイトの数、または、
前記分散プロセッサユニットの特定のプロセッサコンポーネントによって実行された命令の数、のうちの少なくとも１つを含む、請求項８に記載の方法。
【請求項１０】
前記コンピューティングシステムが、前記第１または第２のプロセッサコンポーネントによって実行される前記プログラムコードの少なくとも一部における第２のオペランドの発生を識別するステップをさらに含み、前記第２のオペランドは第２のパラメータ値を含み、さらに、
前記コンピューティングシステムが、前記第２のオペランドの前記第２のパラメータ値がレジスタの特定の限界値を上回ること、または前記レジスタの特定の限界値を下回ること、のうちの１つに基づいて、フィルター条件が満たされていると判定するステップと、
前記フィルター条件が満たされていると判定するステップに応答して、前記コンピューティングシステムが１つ以上のトレースイベントをフィルタリングするステップとを含み、前記１つ以上のトレースイベントをフィルタリングするステップは、１つ以上のハードウェアイベントに関連付けられたトレースデータの格納を除外するステップを含む、請求項１または２に記載の方法。
【請求項１１】
ハードウェアイベント収集システムであって、
１つ以上のプロセッサコアを含む１つ以上のプロセッサと、
命令を格納するための１つ以上のマシン読取可能記憶ユニットとを含み、前記命令は、動作を行なうために前記１つ以上のプロセッサによって実行可能であり、前記動作は、
第１のプロセッサコンポーネントによるプログラムコードの実行を監視することを含み、前記第１のプロセッサコンポーネントは、前記プログラムコードの少なくとも第１の部分を実行するように構成され、前記動作はさらに、
第２のプロセッサコンポーネントによる前記プログラムコードの実行を監視することを含み、前記第２のプロセッサコンポーネントは、前記プログラムコードの少なくとも第２の部分を実行するように構成され、前記動作はさらに、
コンピューティングシステムが、
ｉ）少なくとも前記プログラムコードの前記第１の部分または前記プログラムコードの前記第２の部分におけるオペランドの発生を識別すること、もしくは、
ｉｉ）前記コンピューティングシステムの少なくとも１つのクロックの現在の時間が、１つ以上のトレースイベントを始動するために使用される予め定義された時間値を示していると判定すること、のうちの少なくとも１つに基づいて、トリガー条件が満たされていることを検出することを含み、前記オペランドは、１つ以上のトレースイベントを始動するために使用される第１のパラメータ値を含み、前記動作はさらに、
前記トリガー条件が満たされていることを検出することに応答して、前記コンピューティングシステムが、トレースデータを生成する少なくとも第１のトレースイベントを始動することを含み、前記トレースデータは、少なくとも前記第１のプロセッサコンポーネントおよび前記第２のプロセッサコンポーネントを含む分散プロセッサユニット間にわたって生じるそれぞれのハードウェアイベントを識別し、前記それぞれのハードウェアイベントの各々について、前記トレースデータは少なくともハードウェアイベントタイムスタンプを含み、前記動作はさらに、
前記コンピューティングシステムが前記トレースデータを使用して、相関のある一組のトレースデータを生成することを含み、前記相関のある一組のトレースデータは、前記トリガー条件が満たされている場合に生成される前記それぞれのハードウェアイベントの時系列の順序を少なくとも示す、ハードウェアイベント収集システム。
【請求項１２】
前記第１のトレースイベントは、前記分散プロセッサユニット間にわたって生じるハードウェアイベントを識別するトレースデータを生成する同期されたトレースイベントであり、前記トレースデータはまた、それぞれのハードウェアイベントのための一意的なトレース識別子を識別し、前記ハードウェアイベントは複数の同期されたハードウェアイベントを含み、２つのハードウェアイベントがグローバルハードウェアイベントタイムスタンプを共有する場合、前記ハードウェアイベントは同期される、請求項１１に記載のハードウェアイベン
ト収集システム。
【請求項１３】
前記トリガー条件が満たされていることを検出することは、
前記コンピューティングシステムが、
ｉ）前記オペランドの前記第１のパラメータ値がレジスタの第１の限界値を上回ること、または、
ｉｉ）前記現在の時間によって示される前記予め定義された時間値がレジスタの第１の限界値を上回ること、のうちの１つを検出することと、
前記トリガー条件が満たされていることを検出することに応答して、前記コンピューティングシステムが、トレースデータを生成する第２のトレースイベントを始動することとを含み、前記トレースデータは、前記分散プロセッサユニット間にわたって生じる前記それぞれのハードウェアイベント間で共有される少なくとも１つの属性を識別する、請求項１１または１２に記載のハードウェアイベント収集システム。
【請求項１４】
前記動作はさらに、
前記コンピューティングシステムが、
前記オペランドの第２のパラメータ値が前記レジスタの第２の限界値を上回ること、または、
前記現在の時間によって示される第２の予め定義された時間値が前記レジスタの第２の限界値を上回ること、のうちの１つを検出することと、
検出することに応答して、前記コンピューティングシステムが、前記オペランドの前記第２のパラメータ値が前記第２の限界値を上回る場合、または前記第２の予め定義された時間値が前記第２の限界値を上回る場合に、前記第２のトレースイベントを停止することとを含む、請求項１３に記載のハードウェアイベント収集システム。
【請求項１５】
前記オペランドはさらに、
前記プログラムコードの特定のシーケンスステップを示すパラメータ、または、
前記分散プロセッサユニットの特定の性能状態を示すグローバル制御パラメータ、のうちの少なくとも１つを含み、
前記予め定義された時間値は、
前記分散プロセッサユニットのグローバルタイムクロックによって示される特定の時間値、または、
前記グローバルタイムクロックに関連付けられた予め定義された時間ウィンドウの特定の時間値、のうちの少なくとも１つを含む、請求項１３または１４に記載のハードウェアイベント収集システム。
【請求項１６】
前記オペランドは第１の２進データ構造を有し、前記オペランドの前記第１のパラメータ値はトレースマークに対応しており、
前記予め定義された時間値は第２の２進データ構造を有し、前記現在の時間はグローバルタイムクロックによって示され、
前記グローバルタイムクロックは、１つ以上のハードウェアイベントタイムスタンプを生成するために前記分散プロセッサユニットによって使用される、請求項１３または１４に記載のハードウェアイベント収集システム。
【請求項１７】
コンピュータにより実現される方法であって、前記方法は、
プロセッサコンポーネントによるプログラムコードの実行を監視するステップを含み、前記プロセッサコンポーネントは、前記プログラムコードの少なくとも第１の部分を実行するように構成され、前記方法はさらに、
コンピューティングシステムが、
ｉ）前記プログラムコードの少なくとも前記第１の部分におけるオペランドの発生を
識別すること、または、
ｉｉ）前記コンピューティングシステムの少なくとも１つのクロックの現在の時間が、１つ以上のトレースイベントを始動するために使用される予め定義された時間値を示していると判定すること、のうちの少なくとも１つに基づいて、トリガー条件が満たされていることを検出するステップを含み、前記オペランドは、前記１つ以上のトレースイベントを始動するために使用される第１のパラメータ値を含み、前記方法はさらに、
前記トリガー条件が満たされていることを検出するステップに応答して、前記コンピューティングシステムが、前記プロセッサコンポーネントのカウントレジスタによって受信される制御信号を生成するステップを含み、前記制御信号は、ハードウェアイベントに関連付けられたカウントデータを前記カウントレジスタに格納させ、前記方法はさらに、
前記コンピューティングシステムが、実行される前記プログラムコードに関連付けられた１つ以上の性能属性を示すデータ構造を生成するステップを含み、前記データ構造は、格納された前記カウントデータの１つ以上のカウントパラメータに基づいて生成される、方法。
【請求項１８】
前記カウントレジスタは、前記コンピューティングシステムの１つ以上のプロセッサコンポーネントの性能に関するカウントデータを格納するように構成された複数の性能カウンタのうちの１つであり、少なくとも１つの性能カウンタは、活動カウンタ、ストールカウンタ、統計カウンタ、またはサンプリングカウンタ、のうちの１つを含む、請求項１７に記載の方法。
【請求項１９】
前記１つ以上のカウントパラメータは、
ｉ）特定のプロセッサコンポーネントによって受信された命令の数、
ｉｉ）前記特定のプロセッサコンポーネントによって処理された命令の数、
ｉｉｉ）前記特定のプロセッサコンポーネントによって実行された命令の数、もしくは、
ｉｖ）前記特定のプロセッサコンポーネントによって行なわれたメモリ読出の数、またはメモリ書込の数、のうちの１つを示す、請求項１８に記載の方法。
【請求項２０】
実行される前記プログラムコードに関連付けられた性能属性は、
ｉ）前記プログラムコードを実行する特定のプロセッサコンポーネントのストール頻度、
ｉｉ）前記特定のプロセッサコンポーネントの利用が利用しきい値未満であるという表示、または、
ｉｉｉ）前記特定のプロセッサコンポーネントによって使用されるデータ格納キューがキュー占有率しきい値以下であるという表示、のうちの１つを含む、請求項１７または１８に記載の方法。