(57)【要約】      （修正有）【課題】マルチスレッディングを実施するときの処理ユニットの性能をモニタリングする装置及び方法を提供する。【解決手段】集積回路チップ１００において、プロファイリングユニットは、期間にわたって処理ユニットによって実行される複数のスレッドの各々がいつ実行されるかを指し示すアクティビティプロファイルを生成し、生成されたアクティビティプロファイルを解析し、期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定し、一致しない場合に、アラート信号を出力する。【選択図】図２
2020184327.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドを実行するように構成された処理ユニットと、
期間にわたって前記複数のスレッドの各々が前記処理ユニットによっていつ実行されるかを指し示すアクティビティプロファイルを生成するために、前記期間にわたって前記処理ユニットの動作をプロファイルし、
前記期間の前記処理ユニットのスレッド実行のシグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析し、
前記期間の前記処理ユニットのスレッド実行の前記シグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示す前記シグネチャと一致しない場合に、アラート信号を出力するように
構成されたプロファイリングユニットと、
を備える装置。
【請求項２】
前記アクティビティプロファイルが、前記期間にわたって各スレッドを実行することに費やされた処理ユニットクロックサイクルの数を指し示し、前記プロファイリングユニットが、前記アクティビティプロファイルを生成するために、前記期間にわたって前記処理ユニットによって実行されている各スレッドを識別することによって、前記処理ユニットの前記動作をプロファイルするように構成される、請求項１に記載の装置。
【請求項３】
前記装置が、相互接続回路を含む集積回路チップであり、前記プロファイリングユニットが、前記集積回路チップの相互接続回路を通したトランザクションをモニタリングすることによって、前記期間にわたって前記処理ユニットによって実行されている各スレッドを識別するように構成される、請求項２に記載の装置。
【請求項４】
前記処理ユニットが、実行されている前記スレッドを指し示すストレージ場所を維持するように構成され、前記プロファイリングユニットが、前記ストレージ場所にアクセスすることによって、実行されている各スレッドを識別するように構成される、請求項２に記載の装置。
【請求項５】
前記プロファイリングユニットが、前記処理ユニットから伝達される側波帯信号から、実行されている各スレッドを識別するように構成される、請求項２に記載の装置。
【請求項６】
前記プロファイリングユニットが、前記生成されたアクティビティプロファイルをデータアレイとして記憶するように構成され、前記プロファイリングユニットが、前記アクティビティプロファイルが前記処理ユニットのためのスレッド実行のベースラインを指し示すものとして分類され得るか否かを判定するために、前記データアレイにデータ処理アルゴリズムを使用して、前記生成されたアクティビティプロファイルを解析するように構成される、請求項５に記載の装置。
【請求項７】
前記データ処理アルゴリズムが、トレーニングされたデータ分類モデルである、請求項６に記載の装置。
【請求項８】
前記プロファイリングユニットが、前記データアレイと、前記処理ユニットのためのスレッド実行のベースラインを各々が指し示す１つまたは複数のテンプレートデータアレイの組の各々との差を計算するために、前記データ処理アルゴリズムを使用するように構成され、前記データアレイが、そのデータアレイと、前記テンプレートアレイのうちの少なくとも１つとの前記差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを指し示すものとして分類される、請求項６に記載の装置。
【請求項９】
前記プロファイリングユニットが、前記期間の前記処理ユニットのスレッド実行の前記シグネチャを特徴付ける１つまたは複数のパラメータの組についての値を前記データアレイから抽出するために前記データ処理アルゴリズムを使用し、前記抽出された値を、スレッド実行のベースラインを指し示すシグネチャについての対応するパラメータ値と比較するように構成される、請求項６に記載の装置。
【請求項１０】
前記１つまたは複数のパラメータの組が、前記期間にわたるスレッド切り替えの合計数、前記期間のスレッド実行の平均長さ、前記期間のスレッド実行の最大長さ、前記期間のスレッド実行の最小長さ、前記期間のスレッド切り替えの平均頻度、前記期間のスレッド切り替えの最大頻度および／もしくは最小頻度、ならびに前記期間のスレッド実行の順序のうちの、１つまたは複数を含む、請求項９に記載の装置。
【請求項１１】
前記プロファイリングユニットが、前記データアレイが前記処理ユニットのためのスレッド実行のベースラインを表現しないものとして分類された場合に、前記アラート信号を出力するように構成される、請求項６から１０のいずれかに記載の装置。
【請求項１２】
前記データアレイが、前記期間にわたって各スレッドが前記処理ユニットによっていつ実行されているかを表す画像であり、前記データ処理アルゴリズムが、画像処理アルゴリズムであり、前記プロファイリングユニットが、生成された画像が前記処理ユニットのためのスレッド実行のベースラインを表すものとして分類され得るか否かを判定するために、前記生成された画像に前記画像処理アルゴリズムを使用して、前記生成されたアクティビティプロファイルを解析するように構成される、請求項６から１１のいずれかに記載の装置。
【請求項１３】
前記画像処理アルゴリズムが、トレーニングされた画像分類モデルである、請求項７に従属する場合の請求項１２に記載の装置。
【請求項１４】
前記プロファイリングユニットが、前記生成された画像と、前記処理ユニットのためのスレッド実行のベースラインを各々が表す１つまたは複数のテンプレート画像の組の各々との差を計算するために、前記画像処理アルゴリズムを使用するように構成され、前記生成された画像が、その画像と、前記テンプレート画像のうちの少なくとも１つとの前記差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを表すものとして分類される、請求項８に従属する場合の請求項１２に記載の装置。
【請求項１５】
複数のスレッドを実行する処理ユニットの性能をモニタリングする方法であって、
期間にわたって前記複数のスレッドの各々が前記処理ユニットによっていつ実行されたかを指し示すアクティビティプロファイルを生成するために、前記期間にわたって前記処理ユニットの動作をプロファイルすることと、
前記期間の前記処理ユニットのスレッド実行のシグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析することと、
前記期間の前記処理ユニットのスレッド実行の前記シグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示す前記シグネチャと一致しない場合に、アラート信号を出力することと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチスレッディングを実施するときの処理ユニットの性能をモニタリングすることに関する。
【背景技術】
【０００２】
コンピューティングデバイスは、一般に、プログラム命令によって規定されたタスクを実施するために、それらの命令を実行する１つまたは複数の処理ユニットを含む。処理ユニットは、例えば、中央処理ユニット（ＣＰＵ）、またはグラフィックス処理ユニット（ＧＰＵ）であることがある。
【０００３】
処理ユニットは、命令の多数のスレッドを実行するための処理ユニットの能力であるマルチスレッディングをサポートすることができる。これを行うために、処理ユニットは、単一のスレッドが任意の所与の時間に処理ユニットによって実行されているように、実行のための命令のスレッドをスケジュールすることができる。あるスレッドは、そのスレッドの実行が止むことを意味する「スワップアウト」されてよく、別のスレッドは、そのスレッドの実行が始まることを意味する「スワップイン」されてよい。所与の時間の期間にわたって、スレッドは、１回または複数回、スワップインされ、スワップアウトされることがある。言い換えれば、処理ユニットは、時間にわたって異なるスレッドの実行を交互配置することによって、マルチスレッディングを実施することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
命令のスレッドを実行するときの処理ユニットの性能について、情報を取得することが望ましいことがある。これは、処理ユニットの性能レベルをモニタリングする目的のためであっても、ならびに／または、スレッドおよびセキュリティ管理の一部としてであってもよい。
【課題を解決するための手段】
【０００５】
本発明によれば、
複数のスレッドを実行するように構成された処理ユニットと、
期間にわたって複数のスレッドの各々が処理ユニットによっていつ実行されるかを指し示すアクティビティプロファイルを生成するために、期間にわたって処理ユニットの動作をプロファイルし、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析し、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致しない場合に、アラート信号を出力するように構成されたプロファイリングユニットと、
を含む装置が提供される。
【０００６】
アクティビティプロファイルは、期間にわたって各スレッドを実行することに費やされた処理ユニットクロックサイクルの数を指し示してもよい。
【０００７】
プロファイリングユニットは、アクティビティプロファイルを生成するために、期間にわたって処理ユニットによって実行されている各スレッドを識別することによって、処理ユニットの動作をプロファイルするように構成されてもよい。
【０００８】
装置は、相互接続回路を含む集積回路チップであってよく、プロファイリングユニットは、集積回路チップの相互接続回路を通したトランザクションをモニタリングすることによって、期間にわたって処理ユニットによって実行されている各スレッドを識別するように構成されてもよい。
【０００９】
処理ユニットは、実行されているスレッドを指し示すストレージ場所を維持するように構成されてよく、プロファイリングユニットは、ストレージ場所にアクセスすることによって、実行されている各スレッドを識別するように構成されてもよい。
【００１０】
プロファイリングユニットは、処理ユニットから伝達される側波帯信号から、実行されている各スレッドを識別するように構成されてもよい。
【００１１】
プロファイリングユニットは、生成されたアクティビティプロファイルをデータアレイとして記憶するように構成されてもよい。
【００１２】
プロファイリングユニットは、アクティビティプロファイルが処理ユニットのためのスレッド実行のベースラインを指し示すものとして分類され得るか否かを判定するために、データアレイにデータ処理アルゴリズムを使用して、生成されたアクティビティプロファイルを解析するように構成されてもよい。
【００１３】
データ処理アルゴリズムは、トレーニングされたデータ分類モデルであってよい。
【００１４】
プロファイリングユニットは、データアレイと、処理ユニットのためのスレッド実行のベースラインを各々が指し示す１つまたは複数のテンプレートデータアレイの組の各々との差を計算するために、データ処理アルゴリズムを使用するように構成されてよく、データアレイは、そのデータアレイと、テンプレートアレイのうちの少なくとも１つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを指し示すものとして分類される。
【００１５】
プロファイリングユニットは、期間の処理ユニットのスレッド実行のシグネチャを特徴付ける１つまたは複数のパラメータの組についての値をデータアレイから抽出するためにデータ処理アルゴリズムを使用し、抽出された値を、スレッド実行のベースラインを指し示すシグネチャについての対応するパラメータ値と比較するように構成されてもよい。
【００１６】
１つまたは複数のパラメータの組は、期間にわたるスレッド切り替えの合計数、期間のスレッド実行の平均長さ、期間のスレッド実行の最大長さ、期間のスレッド実行の最小長さ、期間のスレッド切り替えの平均頻度、期間のスレッド切り替えの最大頻度および／もしくは最小頻度、ならびに期間のスレッド実行の順序のうちの、１つまたは複数を含むことができる。
【００１７】
プロファイリングユニットは、データアレイが処理ユニットのためのスレッド実行のベースラインを表現しないものとして分類された場合に、アラート信号を出力するように構成されてもよい。
【００１８】
データアレイは、期間にわたって各スレッドが処理ユニットによっていつ実行されているかを表す画像であってもよく、データ処理アルゴリズムは、画像処理アルゴリズムであってもよい。
【００１９】
プロファイリングユニットは、生成された画像が処理ユニットのためのスレッド実行のベースラインを表すものとして分類され得るか否かを判定するために、生成された画像に画像処理アルゴリズムを使用して、生成されたアクティビティプロファイルを解析するように構成されてもよい。
【００２０】
画像処理アルゴリズムは、トレーニングされた画像分類モデルであってよい。
【００２１】
プロファイリングユニットは、生成された画像と、処理ユニットのためのスレッド実行のベースラインを各々が表す１つまたは複数のテンプレート画像の組の各々との差を計算するために、画像処理アルゴリズムを使用するように構成されてよく、生成された画像は、その画像と、テンプレート画像のうちの少なくとも１つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを表すものとして分類される。
【００２２】
第２の態様によれば、複数のスレッドを実行する処理ユニットの性能をモニタリングする方法であって、
期間にわたって複数のスレッドの各々が処理ユニットによっていつ実行されたかを指し示すアクティビティプロファイルを生成するために、期間にわたって処理ユニットの動作をプロファイルすることと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析することと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致しない場合に、アラート信号を出力することと、を含む方法が提供される。
【００２３】
プロファイルするステップは、アクティビティプロファイルを生成するために、期間にわたって処理ユニットによって実行されている各スレッドを識別することを含んでいてもよい。
【００２４】
処理ユニットは、集積回路チップの一部を形成してもよく、方法は、集積回路チップの相互接続回路を通したトランザクションをモニタリングすることによって、実行されているスレッドを識別することを含んでいてもよい。
【００２５】
方法は、処理ユニットによって実行されているスレッドを指し示す、処理ユニットによって維持されるストレージ場所にアクセスすることによって、処理ユニットによって実行されている各スレッドを識別することを含んでいてもよい。
【００２６】
方法は、処理ユニットから伝達される側波帯信号から、処理ユニットによって実行されている各スレッドを識別することを含んでいてもよい。
【００２７】
方法は、生成されたアクティビティプロファイルをデータアレイとして記憶することをさらに含んでいてもよい。
【００２８】
生成されたアクティビティプロファイルを解析するステップは、アクティビティプロファイルが処理ユニットのためのスレッド実行のベースラインを指し示すものとして分類され得るか否かを判定するために、データアレイにデータ処理アルゴリズムを使用することを含んでいてもよい。
【００２９】
データ処理アルゴリズムは、トレーニングされたデータ分類モデルであってもよい。
【００３０】
方法は、データアレイと、処理ユニットのためのスレッド実行のベースラインを各々が指し示す１つまたは複数のテンプレートデータアレイの組の各々との差を計算するために、データ処理アルゴリズムを使用することを含んでいてもよく、データアレイは、そのデータアレイと、テンプレートアレイのうちの少なくとも１つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを指し示すものとして分類される。
【００３１】
方法は、期間の処理ユニットのスレッド実行のシグネチャを特徴付ける１つまたは複数のパラメータの組についての値をデータアレイから抽出するためにデータ処理アルゴリズムを使用することと、抽出された値を、スレッド実行のベースラインを指し示すシグネチャについての対応するパラメータ値と比較することを含んでいてもよい。
【００３２】
方法は、データアレイが処理ユニットのためのスレッド実行のベースラインを表現しないものとして分類された場合に、アラート信号を出力することを含んでいてもよい。
【００３３】
データアレイは、期間にわたって各スレッドが処理ユニットによっていつ実行されているかを表す画像であってもよく、データ処理アルゴリズムは、画像処理アルゴリズムである。
【００３４】
生成されたアクティビティプロファイルを解析するステップは、生成された画像が処理ユニットのためのスレッド実行のベースラインを表すものとして分類され得るか否かを判定するために、生成された画像に画像処理アルゴリズムを使用することを含んでいてもよい。
【００３５】
画像処理アルゴリズムは、トレーニングされた画像分類モデルであってもよい。
【００３６】
画像処理アルゴリズムは、生成された画像と、処理ユニットのためのスレッド実行のベースラインを各々が表す１つまたは複数のテンプレート画像の組の各々との差を計算してもよく、生成された画像は、その画像と、テンプレート画像のうちの少なくとも１つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを表すものとして分類される。
【００３７】
第３の態様によれば、複数のスレッドを実行するように構成された処理ユニットを含む装置のコンピューティングユニットによって実行されるとき、
期間にわたって複数のスレッドの各々が処理ユニットによっていつ実行されたかを指し示すアクティビティプロファイルを生成するために、期間にわたって処理ユニットの動作をプロファイルすることと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析することと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致しない場合に、アラート信号を出力することと、を含む、処理ユニットの性能をモニタリングする方法を、コンピューティングユニットに実施させるコンピュータ命令を記憶したコンピュータ可読な記憶媒体が提供される。
【００３８】
本発明は、これより添付の図面を参照して、例として説明されることになる。
【図面の簡単な説明】
【００３９】
【図１】例示的な集積回路チップのアーキテクチャの概略図である。
【図２】例示的な集積回路チップのアーキテクチャの概略図である。
【図３】複数のスレッドを実行する処理ユニットの性能をプロファイルするためのプロファイリングユニットの概略図である。
【図４】期間にわたって処理ユニットが５つのスレッドの実行をどのように交互配置するかの例を示す図である。
【図５】複数のスレッドを実行する処理ユニットの性能をプロファイルする方法についてのステップのフローチャートである。
【発明を実施するための形態】
【００４０】
以下の開示は、多数の命令スレッドを実行する処理ユニットの性能をプロファイルするためのプロファイリングアーキテクチャを説明する。プロファイリングアーキテクチャおよび処理ユニットは、集積回路チップ（ＩＣＣ）の一部を形成してよい、すなわち、ＩＣＣ上で実装されてよい。集積回路チップは、ＳоＣ、またはマルチチップモジュール（ＭＣＭ）であってよい。プロファイリングアーキテクチャは、プロファイリングユニットを含み、プロファイリングユニットは、処理ユニットについてのアクティビティプロファイルを取得するために、規定された期間にわたって処理ユニットがスレッドの実行を交互配置するときの処理ユニットの性能をモニタリングする。アクティビティプロファイルは、その期間にわたってスレッドの各々が処理ユニットによっていつ実行されていたかを指し示す、すなわち、アクティビティプロファイルは、交互配置されたスレッドの実行を示す情報を収容する。プロファイリングユニットは、非介入的なやり方で、すなわち、処理ユニットによって実施される命令の実行を中断せずに、アクティビティプロファイルを生成するために処理ユニットをプロファイルすることができる。これは、例えば、プロファイリングユニットを、処理ユニットがスレッドを実行するときの相互接続回路を通したトランザクションをモニタリングする、ハードウェアブロックとして実装することによって行われてよい。一旦アクティビティプロファイルが生成されると、プロファイリングユニットは、期間にわたるスレッド実行についてのシグネチャが、規定された動作モードを指し示すシグネチャと一致するかどうかを判定するために、プロファイルを解析する。規定された動作モードは、処理ユニットのための「通常の」または「安全な」動作モードであってよい。シグネチャは、スレッドの実行のパターンを指す、またはより広くは、スレッド実行のパターンを特徴付ける情報を指すことができる。プロファイリングユニットが、モニタされた期間にわたるスレッド実行についてのシグネチャが規定された動作モードを指し示すシグネチャと一致しないと判定した場合、プロファイリングユニットは、出力信号を生成する。出力信号は、処理ユニットが規定された動作モードに従って動作していないことを指し示す。例えば、出力信号は、処理ユニットが通常の、または安全な動作モードで動作していない、すなわち、それが異常なやり方で動作していることを指し示すことがある。信号は、ＩＣＣの別のコンポーネントに出力されても、またはオフチップに設置されたコンポーネントに出力されてもよい。
【００４１】
図１から図３は、ＩＣＣアーキテクチャ、およびＩＣＣアーキテクチャ内のコンポーネントの概略図である。これらの図は、機能ブロックの観点から構造を提示している。当技術分野においてよく知られた機能を遂行するためのいくつかの機能ブロックは、省略されている。機能ブロックは、異なる物理的な構造を示していないことがあり、ＩＣＣデバイスの異なる論理要素間の厳密な分割を定義していないこともある。各機能ブロックは、ハードウェア、ソフトウェア、またはそれらの組合せで実装されてよい。
【００４２】
図５は、処理ユニットの性能をモニタリングするための方法のステップのフローチャートを示す。しかしながら、フローチャートは、必ずしも方法のステップが実施され得る順番を制限するようには意図されていない。方法のステップは、図５に表された順番に対する代替の順番で遂行されてもよい。方法のステップはまた、互いに同時に実装されてもよく、その結果、異なるステップの実装が、時間内に少なくとも部分的に重なることがある。
【００４３】
図１は、ＩＣＣ１００についての例示的なプロファイリングアーキテクチャの全体構造を例証している。ＩＣＣは、システム・オンチップ（ＳｏＣ）デバイスであってよい。ＩＣＣ１００は、システム回路１０２と、プロファイリングユニット１０４とを含む。
【００４４】
システム回路１０２は、複数の処理ユニットを含む。この例では、３つの処理ユニット１０６、１０８、および１１０が存在する。各処理ユニットは、例えば、ＣＰＵ（例えば、シングルコアＣＰＵ、デュアルコアＣＰＵ、クアッドコアＣＰＵなど）、またはＧＰＵであってよい。処理ユニットは、各々、複数のスレッドの実行を時間的に交互配置することによって、マルチスレッディングをサポートするように設計されてよい。本明細書で説明される例において、各処理ユニットは、５つのスレッドを実行するが、この数は、単に例証の目的のために選択されているにすぎないことが認識されるであろう。システム回路１０２は、明快にするために図１に示されていないさらなるコンポーネントを含むことができる。
【００４５】
プロファイリングユニット１０４は、処理ユニット１０６−１１０のうちの１つまたは複数の性能をプロファイルするように、かつ、処理ユニットによるスレッド実行のシグネチャが、処理ユニットが通常の、または安全なやり方で動作していない、すなわち、それが異常なやり方で動作していることを指し示すとプロファイリングユニット１０４が判定した場合に、出力信号を生成するように設計される。
【００４６】
図２は、ＩＣＣ１００の例示的なアーキテクチャのより詳細な図を示す。システム回路は、処理ユニット１０６、１０８、および１１０と、コアデバイス２０２と、相互接続回路２０４と、メモリ２０６と、通信インターフェース２０８とを含んで示されている。任意の数のコアデバイスが、実装に応じて、ＩＣＣ内で好適に実装されてもよいことが認識されるであろう。例示的なコアデバイスは、ＤＳＰ（デジタル信号プロセッサ）、ビデオプロセッサ、システムメモリ、バス、ソフトウェア、データ、カスタム回路、およびデータエンジンを含む。この例のリストは非限定であり、ＩＣＣの任意のコンポーネントが、コアデバイスとして図２に示されたアーキテクチャの中に組み込まれるために好適である。コアデバイスは、チップ上の他のデバイスのエミュレータまたはシミュレータであってもよい。例えば、コアデバイスは、プロセッサをエミュレートすることができる。処理ユニット１０６−１１０、メモリ２０６、および相互接続回路２０４もまたコアデバイスの例であるものの、これらは、明確性の目的のために、別個のコンポーネントとして図２に示されていることに留意されたい。
【００４７】
処理ユニット１０６−１１０、およびコアデバイス２０２は、相互接続回路２０４に接続されて示されている。相互接続回路２０４は、バス、またはバスネットワークであってよい。代替的に、相互接続回路は、ノードのネットワーク（例えば、ノードのメッシュネットワーク）、リングネットワーク、または共有ハブであってもよい。代替的に、相互接続回路は、１つまたは複数の共有ハブ、バス、リングネットワーク、およびメッシュネットワークの任意の組合せを含むことができる。
【００４８】
相互接続回路２０４は、ＩＣＣ１００のコンポーネント間でデータを移送する。データは、離散的なメッセージの形式で、相互接続回路２０４を通して伝達されてよい。メッセージは、トランザクションプロトコルによって左右される、ＩＣＣのコンポーネント間のトランザクションの一部を形成することができる。すなわち、トランザクションは、ＩＣＣのコンポーネント間で伝達されている１つまたは複数のメッセージに関与することができる。言い換えれば、相互接続回路は、トランザクションプロトコルに従ったトランザクションとしてのデータを、ＩＣＣのコンポーネント間で移送することができる。相互接続回路は、例えば、異なるコアデバイス間のトランザクションをサポートすることができる。相互接続回路を通して伝達される各トランザクションメッセージは、多数のフィールドを含むことができる。各メッセージは、例えば、アドレスフィールドを含むことがある。アドレスフィールドは、送信元アドレスおよび／または宛先アドレスの表示を収容することができる。アドレスフィールドは、例えば、送信元ＩＤ、すなわち、メッセージの通信を始めたデバイス／コンポーネントのＩＤを記憶することができる。メッセージの通信を始めたデバイスまたはコンポーネントは、イニシエータと呼ばれてよい。したがって、アドレスフィールドは、イニシエータについてのＩＤを収容することができる。アドレスフィールドは、追加として、宛先ＩＤ、すなわち、メッセージの意図された受信先デバイス／コンポーネントのＩＤを記憶することができる。トランザクションを始めたデバイス／コンポーネントは、本明細書でマスターデバイス／コンポーネントと呼ばれてよい。代替的に、または加えて、アドレスフィールドは、トランザクションの関係先であるもののトランザクションを始めてはいないＩＣＣ１００内のデバイスまたはコンポーネント（これは、本明細書でスレーブデバイス／コンポーネントと呼ばれてもよい）のアドレスの表示を収容することができる。例えば、アドレスフィールドは、トランザクションの関係先である各（スレーブ）デバイス／コンポーネントのＩＤを収容することができる。したがって、マスターデバイスは、トランザクションを始める（および終える）ことができる。メッセージが処理デバイス１０６−１１０のうちの１つから生じるケースにおいて、メッセージは、そのメッセージを伝達されるようにさせた処理ユニットによって実行されるスレッドの表示を収容することができる。表示は、スレッドＩＤの形式であってよい。
【００４９】
スレーブデバイスは、メッセージについて相互接続回路をリッスンしてもよい。スレーブデバイスは、マスターデバイスによってアドレス指定されたデバイスであってもよい。ＩＣＣ１００の各デバイスはまた、送信機デバイス、受信機デバイス、またはその両方であってもよい。送信機デバイスは、相互接続回路２０４にメッセージを送信するデバイスである。受信機デバイスは、相互接続回路２０４からデータを受信するデバイスである。送信機／受信機デバイスは、それぞれ、必ずしもマスター／スレーブデバイスであるわけではない。例えば、マスターデバイスが受信するデバイスとして動作することが可能であり、同様に、スレーブデバイスが送信機デバイスとして動作することが可能である。いくつかの例において、相互接続回路２０４を通したトランザクションを左右する通信プロトコルは、一度に１つのみのマスターデバイスがアクティブであり得ることを規定することができる。
【００５０】
メモリ２０６は、相互接続回路２０４に接続されて示されている。メモリ２０６は、不揮発性メモリであってよい。メモリ２０６は、ＩＣＣ１００のシステムメモリであってもよい。システムメモリはコアデバイスの例として上で説明されてきたが、メモリ２０６は（相互接続回路２０４のように）明確性の目的のために、別個のコンポーネントとして示されている。メモリ２０６は、物理的に接続されていても、または別個であってもよい、１つもしくは複数の物理メモリ・デバイスから形成されてよい。メモリ２０６は、メモリブロックと呼ばれる多数のサブ領域または部分から形成されてよい。すなわち、メモリのブロックは、本明細書でメモリの部分と呼ばれてもよい。メモリ２０６は、多数のブロックから形成されてよい。ブロックは、互いに、等しい大きさであっても、または異なる大きさであってもよい。
【００５１】
プロファイリングユニット１０４は、相互接続回路２０４に接続されていても、または処理ユニットに直接接続されていてもよい（明確性のために、図２には１つのみの処理ユニット（１０６）への接続が示されている）。したがって、プロファイリングユニット１０４は、ハードウェアブロックであり、すなわち、それはハードウェア回路である。相互接続回路２０４に接続されている場合、プロファイリングユニット１０４は、相互接続回路２０４を通じて処理ユニットに接続されていると言われてよい。システム回路へのプロファイリングユニット１０４の考え得る接続は、以下でより詳細に説明されることになる。
【００５２】
プロファイリングユニット１０４はまた、通信インターフェース２０８に接続されて示されている。通信インターフェース２０８は、オフチップのエンティティ（すなわち、チップ１００の外部にあるエンティティ）と通信するように構成されてもよい。例えば、プロファイリングユニット１０４は、例えば、処理ユニット１０６、１０８、および１１０のプロファイルされた性能についての情報を伝達することによって、通信インターフェース２０８を介して、オフチップのデバッグコントローラ２１０と通信することができる。通信インターフェース２０８はまた、オンチップの他のエンティティと通信するように構成されてもよい。例えば、プロファイリングユニット１０４は、通信インターフェース２０８を介して、オンチップのデバッグコントローラ（図２には示されず）と通信することができる。図２は１つの通信インターフェースを例証しているが、任意の数の通信インターフェースがＩＣＣ１００上に統合され得る。実装される通信インターフェースは、行われることになる接続のタイプに依存して選択される。例示的な通信インターフェースは、ＪＴＡＧ、パラレルトレース入力／出力、およびＡｕｒｏｒａベースの高速シリアルインターフェースなどの従来のデバッグインターフェース、ならびに、ＵＳＢ、イーサネット、ＲＳ２３２、ＰＣＩｅ、およびＣＡＮなどのシステムインターフェースの再使用を含む。
【００５３】
処理ユニットが規定された動作モード、例えば、安全な、もしくは通常の動作モードに従って動作しているかどうか、またはそれが異常なやり方で動作しているかどうかを検出するために、プロファイリングユニット１０４を使用して処理ユニットの動作がプロファイルされる方法が、これより説明されることになる。この方法は、図５におけるフローチャートを参照して説明されることになる。この例において、プロファイルされる処理ユニットは、処理ユニット１０６である。この処理ユニットは、例証の目的のみのために選択されており、処理ユニット１０８および１１０のうちの１つまたは複数が、類似したやり方でプロファイルされてもよいことが認識されるであろう。
【００５４】
ステップ５０１で、プロファイリングユニット１０４は、アクティビティプロファイルを生成するために、期間にわたって処理ユニット１０６の動作をプロファイルする。この期間は、本明細書で「プロファイリング期間」と呼ばれてもよい。
【００５５】
期間は、規定された期間であってよい。期間の値は、実装固有であってよい。期間の値は、プロファイリングユニット１０４によって設定されてもよい。期間の値は、プログラム可能であってもよい。
【００５６】
アクティビティプロファイルは、プロファイリング期間内に、複数の命令スレッドの各々が処理ユニット１０６によっていつ実行されているかを指し示す。言い換えれば、アクティビティプロファイルは、処理ユニット１０６によるスレッドの交互配置された実行を示す、例えば、規定する。アクティビティプロファイルは、スレッドごとに、スレッドが処理ユニット１０６によって実行された時間間隔を指し示してもよい。すなわち、アクティビティプロファイルは、プロファイリング期間にわたって、スレッドごとに、実行開始時間および実行終了時間を指し示してもよい。アクティビティプロファイルの粒度は、実装によって異なってよいが、その最も細かい粒度において、期間内で各スレッドを実行することに費やされた処理ユニット１０６のクロックサイクルの数を指し示してもよい。すなわち、アクティビティプロファイルは、クロックサイクル数の観点から、各スレッドが処理ユニット１０６によって実行された時間間隔を指し示してもよい。
【００５７】
図３は、プロファイリングユニット１０４の例示的な内部アーキテクチャを示す。それは、スレッド識別ユニット３０２と、ストア３０４と、処理ユニット３０６とを含む。ストア３０４は、プロファイリングユニット１０４の内部メモリであっても、または内部メモリの一部を形成してもよい。ストア３０４は、アクティビティプロファイルを定義するデータを記憶する。ストア３０４は、スレッドごとに、プロファイリング期間内にそのスレッドが処理ユニット１０６によっていつ実行されるかを指し示す情報を記憶する。その情報は、上で説明されたように、実行の時間間隔、または実行開始時間および実行終了時間の形式であってよい。示された例において、ストア３０４は、処理ユニット１０６によって実行されるそれぞれのスレッドに各々対応するエントリの組を含む。プロファイリングユニット１０４は、各エントリ内に、関連付けられたスレッドの実行のためのタイミング情報を記憶することができる。
【００５８】
処理ユニット１０６の性能をプロファイルするために、プロファイリングユニット１０４は、期間にわたって処理ユニット１０６によって実行されているスレッドを追跡する。言い換えれば、プロファイリングユニット１０４は、期間にわたって処理ユニット１０６によって現在実行されている各スレッドを識別する。これは、各スレッドが実行されている時間間隔が、判定され、ストア３０４に書き込まれることを可能にする。
【００５９】
処理ユニット１０６によって現在実行されているスレッドの識別は、スレッド識別ユニット３０２によって実施される。処理ユニット１０６によって実行されているスレッドを識別するための１つの仕方は、相互接続回路２０４を通して伝達されるトランザクションをモニタリングすることである。これは、プロファイリングユニット１０４が相互接続回路２０４に接続されている場合に可能である。上で言及されたように、処理ユニットによる命令の実行によって引き起こされるトランザクションの一部を形成するメッセージは、その命令が一部を形成するスレッドの表示を収容してよい。したがって、相互接続回路を通して伝達されるトランザクションをモニタリングすることによって、スレッド識別ユニット３０２（および、したがってより広くは、プロファイリングユニット１０４）は、処理ユニットによって、いつ、およびどのスレッドが実行されているかを判定することができる。代替的に、処理ユニット１０６によって実行されているスレッドの識別（例えば、ＩＤ）が、相互接続回路２０４を通して伝達される側波帯信号で伝達されてもよく、それは、プロファイリングユニット１０４によってモニタされ得る。側波帯シグナリングをサポートする相互接続回路の例は、ＡＸＩバスである。側波帯信号は、相互接続回路の一部を形成するバスのためのバス規格の一部ではない信号を指すこともあるが、信号は、バスを通して２つのコンポーネント間で伝達され、その伝達されるコンポーネントに理解可能である（すなわち、意味を有するデータを搬送する）。相互接続回路を「モニタリングすること」は、プロファイリングユニット１０４が、相互接続回路からそれらの通信を抽出することなく、相互接続回路を通して通信（例えば、トランザクションおよび／または側波帯信号）を観察することを意味してよい。例えば、それらの通信の複製が、プロファイリングユニットによって生成され、スレッドを識別するために解析されてもよい。それらの通信の複製は次いで、解析の後に、プロファイリングユニットによって破棄されてもよい。これは、ＩＣＣ１００にわたってそれらの通信の送信を妨げることなく、相互接続回路が観察されることを可能にするので、好都合である。
【００６０】
代替的に、スレッド識別ユニット３０２は、処理ユニット１０６によって維持されるメモリの領域に記憶されたスレッドＩＤの表示を観察すること、またはモニタリングすることから、処理ユニット１０６によって実行されているスレッドを識別してもよい。言い換えれば、処理ユニット１０６は、その処理ユニットによって現在実行されているスレッドの表示を記憶するメモリの領域を維持してよい。メモリのその領域は、ハードウェア・キャッシュまたはレジスタであってよい。例えば、それは、ステータス・レジスタであってもよく、例えば、処理ユニット１０６がＣＰＵである場合は、ＣＰＵステータス・レジスタであってもよい。ステータス・レジスタは、処理ユニットの内部にあってもよいし、または外部にあって処理ユニットにアクセス可能であってもよい。メモリの領域は、ＩＣＣ１００の一部を形成する。図２に示された例において、メモリのこの領域は、メモリ２０６の一部を形成する。スレッド識別ユニット３０２は、スレッド識別ユニット３０２が観察する、処理ユニット１０６から伝達された信号から、維持されたメモリの領域に記憶されたスレッドＩＤを観察してもよい。観察された信号は、例えば、メモリの領域に記憶されたスレッドＩＤを更新する、または設定するために、処理ユニット１０６が伝達する信号であることがある。代替的に、スレッド識別ユニット３０２は、処理ユニット１０６によって実行されているスレッドを判定するために、維持されたメモリの領域にアクセスすることができる。スレッド識別ユニット３０２は、メモリ領域に周期的にアクセスしてもよい。
【００６１】
処理ユニット１０６によって実行されているスレッドを識別すると、スレッド識別ユニット３０２は、そのスレッドの表示をストア３０４に伝達する。ストア３０４は次いで、例えば、クロック３０８からのクロック信号を使用して、そのスレッドの実行が始まった時間を識別することができる。クロック３０８は、この例において、プロファイリングユニット１０４の一部を形成して示されているが、他の例においては、ストアが、プロファイリングユニット１０４の外部にあるクロックからクロック信号を受信してもよいことが認識されるであろう。実行されているスレッドが変化したというスレッド識別ユニット３０２からの表示の受信に応答して、ストア３０４は、受信されたクロック信号を使用して、前のスレッドの実行が止んだ時間、および次のスレッドの実行が始まった時間をログする。したがって、要約すると、処理ユニット１０６によって特定のスレッドが実行されているというスレッド識別ユニット３０２からの表示の受信に応答して、ストア３０４は、受信されたクロック信号を使用して、以下の措置：１）先行するスレッドの実行が終了された時間を関連付けられたエントリにログする、および２）特定のスレッドの実行が開始された時間を関連付けられたエントリにログする、を実施する。
【００６２】
処理ユニット１０６によるスレッドの実行をプロファイルすることへの上の手法は、好都合なことに、非介入的なやり方で実施され得る。すなわち、プロファイリングユニット１０４は、スレッド実行を中断することなく、それらの実行をプロファイルすることができる。これは、プロファイリングユニット１０４が、例えば、相互接続回路を通して伝達されるトランザクションもしくは信号、または処理ユニットによって維持されたメモリのいずれかをモニタリングすることを通じて、プロファイリングが実施されることを可能にするハードウェア・コンポーネントであるからである。対照的に、プロファイルすることへの一般的な手法は、プロファイリングソフトウェアが稼働されるのを可能にするために処理ユニットでの命令の実行を中断し、それは介入的である。
【００６３】
プロファイリング期間にわたって処理ユニット１０６による時間的に交互配置されたスレッドの実行を特徴付けるアクティビティプロファイルを生成すると、プロファイリングユニット１０４は、アクティビティプロファイルを記憶する。アクティビティプロファイルは、メモリ、例えば、プロファイリングユニット１０４にローカルなメモリ（図３には示されず）、またはＩＣＣ１００におけるなんらかの他のメモリ、例えば、メモリ２０６に記憶されてよい。アクティビティプロファイルは、プロファイリング期間内に各スレッドが処理ユニットによって実行されていた時間についての情報を収容するデータアレイとして記憶されてよい。異なるタイプのデータアレイの例は、以下でより詳細に説明されることになる。
【００６４】
図５に戻って、ステップ５０３で、プロファイリングユニット１０４は、プロファイリング期間のスレッド実行のシグネチャがベースラインシグネチャと一致するかどうかを判定するために、アクティビティプロファイルを解析する。このステップは、処理ユニット３０６によって実施されてよい。
【００６５】
処理ユニットのスレッド実行のシグネチャは、処理ユニット１０６によるスレッド実行のパターン、またはより広くは、スレッド実行のパターンの特徴付けを指す。処理ユニットのスレッド実行のパターンは、スレッド実行に関する１つまたは複数のパラメータの組を基準にして特徴付けられてよい。これらのパラメータは、例えば、スレッド切り替えの合計数、スレッド実行の平均長さ、スレッド実行の最大長さ、スレッド実行の最小長さ、スレッド切り替えの平均頻度、スレッド切り替えの最大頻度および／もしくは最小頻度、スレッド実行の順序、その他のうちの、１つまたは複数を含んでよい。
【００６６】
ベースラインシグネチャは、処理ユニット１０６のための、動作の、すなわちスレッド実行の、ベースラインを指し示すシグネチャを指してよく、ここで、動作／スレッド実行のベースラインは、変化または偏差を比較または測定するための基礎として働く、処理ユニット１０６の動作／スレッド実行のタイプである。動作／スレッド実行のベースラインは、したがって、処理ユニット１０６のための、通常の、または一般的な、または予期される動作／スレッド実行であってよい。
【００６７】
プロファイリングユニット１０４は、処理ユニット１０６のための１つまたは複数のベースラインシグネチャの組を記憶することができる。いくつかの例において、ベースラインシグネチャは、時間にわたって処理ユニット１０６をプロファイルすることによって、プロファイリングユニット１０４によって生成されてもよい。例えば、プロファイリングユニット１０４は、多数のプロファイリング期間にわたって処理ユニットをプロファイルすることによって、時間にわたってベースラインシグネチャを更新してもよい。他の例において、ベースラインシグネチャは、予め生成され、記憶されていてもよい。
【００６８】
プロファイリングユニット１０４は、アクティビティプロファイルから判定されたシグネチャが、規定された量またはしきい値内までベースラインシグネチャと一致する場合に、アクティビティプロファイルから判定されたシグネチャは、ベースラインシグネチャと一致すると判定してよい。別の言い方をすれば、プロファイリングユニット１０４は、アクティビティプロファイルから判定されたシグネチャが、予め決められた量を超えてベースラインシグネチャから外れる、または異なる場合に、アクティビティプロファイルから判定されたシグネチャは、ベースラインシグネチャと一致しないと判定してよい。プロファイリングユニット１０４は、アクティビティプロファイルから判定されたスレッド実行シグネチャとのベースラインシグネチャの比較を使用して、処理ユニット１０６が、通常の、一般的な、または予期される動作モードに対応する規定された動作モードで動作しているかどうかを判定する。プロファイリングユニット１０４が、アクティビティプロファイルからのシグネチャがベースラインシグネチャのうちの少なくとも１つと一致しないと判定した場合、プロファイリングユニット１０４は、処理ユニット１０６が通常の、または一般的な仕方で動作していない、すなわち、それが異常な仕方で動作していると判定する。対照的に、プロファイリングユニットが、アクティビティプロファイルからのシグネチャがベースラインシグネチャのうちの少なくとも１つと一致すると判定した場合、プロファイリングユニットは、処理ユニット１０６が通常の、または一般的な仕方で動作している、すなわち、それが異常な仕方で動作していないと判定する。
【００６９】
アクティビティプロファイルの解析は、アクティビティプロファイルを定義するデータがどのように記憶されているかに応じて、異なる仕方で実施されてよい。
【００７０】
一組の例において、プロファイリングユニットは、アクティビティプロファイルをデータアレイとして記憶する。データアレイは、線形データアレイまたは２次元データアレイであってよい。それは、ＣＳＶファイルなどの表形式であってよい。
【００７１】
処理ユニット３０６は、アクティビティプロファイルがベースラインスレッド実行を指し示すものとして分類され得るか否かを判定するために、データ処理アルゴリズムを使用してデータアレイを解析してよい。これを行うために、データ処理アルゴリズムは、データアレイによって指し示されたプロファイリング期間にわたるスレッド実行のシグネチャを判定するために、そのデータアレイを解析してよい。シグネチャは次いで、プロファイリング期間にわたるスレッド実行がベースラインスレッド実行と一致するかどうかを判定するために使用されてよい。
【００７２】
データ処理アルゴリズムは、トレーニングされたデータ分類モデルであってよい。データ分類モデルは、例えば、機械学習技法または深層学習技法を使用してトレーニングされてよい。データ分類モデルは、入力データアレイを、ベースラインスレッド実行を指し示すものとして分類するように、またはベースラインスレッド表示を指し示さないものとして分類するようにトレーニングされてよい。データ分類モデルは、所望された、または規定されたスレッド実行のベースラインをまさに指し示すデータアレイを使用してトレーニングされてよい。したがって、この例において、スレッド実行のシグネチャは、明示的に判定されるのではなく、むしろ、トレーニングされたデータ分類モデルを使用して暗黙的に抽出され、解析される。
【００７３】
代替的に、データ処理アルゴリズムは、データアレイと、スレッド実行のベースラインを各々が指し示す１つまたは複数のテンプレートデータアレイの組の各々との差を計算してもよい。データ処理アルゴリズムは、アクティビティプロファイルのデータアレイと、テンプレートアレイのうちの少なくとも１つとの差が規定されたしきい値よりも少ない場合に、アクティビティプロファイルのデータアレイを、スレッド実行のベースラインを指し示すものとして分類してよい。差は、アレイについてのエントリ単位で計算されてよい。差は、例えば、アレイにわたる絶対差の和として計算されてもよい。
【００７４】
別の例において、データ処理アルゴリズムは、データアレイによって指し示されたプロファイリング期間にわたるスレッド実行についてのシグネチャを特徴付ける１つまたは複数のパラメータ、例えば、上で識別されたパラメータの組についての値を、そのデータアレイから抽出してもよい。データ処理アルゴリズムは次いで、シグネチャが一致するかどうかを判定するために、それらのパラメータの値を、ベースラインシグネチャについての記憶された値と比較することができる。したがって、スレッド実行のシグネチャは、明示的に判定され得る。パラメータの組が２つ以上のパラメータを含む場合、抽出された値は、ベースラインシグネチャについての対応する値と比較される。
【００７５】
一組の例において、データアレイは、画像（例えば、デジタル画像）であってもよい。画像は、プロファイリング期間にわたって各スレッドが処理ユニット１０６によっていつ実行されるかを表す。言い換えれば、画像は、処理ユニット１０６によるスレッド実行の時間的な交互配置を表す。そのような画像の例が、図４に４０１で示されている。ここで、中実ブロックは、各々、スレッドが処理ユニットによって実行されている時間間隔を指し示す。この例においては、５つのスレッドが実行される。
【００７６】
データアレイが画像４０１などの画像として記憶されている場合、処理ユニット３０６によって実施されるデータ処理アルゴリズムは、画像処理アルゴリズムであってよい。例えば、データ処理アルゴリズムは、入力画像を、ベースラインスレッド実行を表すものとして分類する、またはベースラインスレッド表示を表さないものとして分類する、トレーニングされた画像分類モデルであってよい。画像分類モデルは、スレッド実行のベースラインをまさに表す画像を使用してトレーニングされてよい。
【００７７】
代替的に、画像処理アルゴリズムは、画像（例えば、画像４０１）と、スレッド実行のベースラインを各々が表す１つまたは複数のテンプレート画像の組の各々との差を計算してもよい。データ処理アルゴリズムは、アクティビティプロファイルの画像と、テンプレート画像のうちの少なくとも１つとの差が規定されたしきい値よりも少ない場合に、アクティビティプロファイルの画像を、スレッド実行のベースラインを表すものとして分類してよい。差は、画像についてのエントリ単位で（例えば、ブロックが１つまたは複数のピクセルのブロックである場合、ブロック単位で）計算されてよい。差は、例えば、画像にわたる絶対差の和として計算されてもよい。
【００７８】
画像処理アルゴリズムは、画像によって表されたスレッド実行についてのシグネチャを特徴付ける１つまたは複数のパラメータ、例えば、上で識別されたパラメータの組についての値を抽出するために、画像を解析してもよい（例えば、画像認識またはオブジェクト認識を実施する）。画像処理アルゴリズムは次いで、シグネチャが一致するかどうかを判定する（および、したがって、アクティビティプロファイルから取得された画像がスレッド実行のベースラインを表すか否かを判定する）ために、それらのパラメータの値を、ベースラインシグネチャについての記憶された値と比較することができる。
【００７９】
ステップ５０５で、処理ユニット３０６は、処理ユニット１０６のためのスレッド実行のシグネチャがベースラインシグネチャと一致しないと判定した場合に、アラート信号を生成する。言い換えれば、処理ユニット３０６は、その解析から、プロファイリング期間の処理ユニットのスレッド実行のシグネチャがベースラインシグネチャと一致しない、またはベースラインシグネチャから外れていると判定した場合にのみ、アラート信号を生成する。アラート信号はしたがって、処理ユニット１０６がベースライン動作モードで動作していないこと、例えば、予期される、または一般的な、または通常の仕方で動作していないことを指し示すことができる。言い換えれば、アラート信号は、処理ユニットが異常な仕方で動作していることを指し示してよい。
【００８０】
アラート信号は、通信インターフェース２０８を介して、オンチップまたはオフチップのエンティティに伝達されてよい。アラート信号は、応答措置を実施するように、アラート信号を受信するコンポーネントをトリガしてよい。アラート信号は、例えば、処理ユニット１０６がセキュリティ侵害を受けていることを指し示すことがあり、そのケースにおいて、応答措置は、例えば、処理ユニットの電源を落とすことによって、または処理ユニットにさらなる命令の実行を中止させることによって、処理ユニットを機能無効にすることであってもよい。代替的に、応答措置は、処理ユニット１０６から相互接続回路へのデータ経路にロックをかけて、処理ユニット１０６からのデータがＩＣＣを通じて伝播するのを防ぐことであってもよい。
【００８１】
処理ユニット３０６は、代替的に、または加えて、いずれか１つのスレッドが異常に長い時間の期間実行しているかどうかを判定するために、アクティビティプロファイルを解析してもよい。例えば、処理ユニットは、スレッドが規定されたしきい値を超えた実行の継続期間を有するかどうかを判定してもよい。各スレッドは、同じしきい値に関連付けられても、またはそれぞれのしきい値に関連付けられていてもよい。処理ユニット３０６は、スレッドがしきい値を超えた継続期間実行されたという検出に応答して、出力信号を生成してよい。出力信号は、そのしきい値を超えたスレッドの表示（例えば、ＩＤ）を収容してもよい。２つ以上のスレッドがそのしきい値を超えた場合、出力信号は、それらのスレッドの各々の表示を収容してもよい。
【００８２】
本明細書で説明されるプロファイリングユニット１０４は、チップ安全性、チップセキュリティ、またはチップ解析の目的のために動作するように構成されてもよい。本開示のコンテキストにおいて、チップセキュリティは、第三者利益の目的のために潜在的な悪意を有するチップ上でデータ誤りを検出することに関してよい。チップ安全性は、より深刻な潜在的帰結を有する、例えば、チップが実装されているより広いシステム上での危険な作用を有するチップ上でデータ誤りを検出することに関してよい。チップ解析は、チップがどのように機能するのか、または動作するのかのさらなる理解を獲得するために、チップの挙動を解析することに関してよい。チップ解析は、潜在的にはオフチップで実行される、専用の解析ソフトウェアによって実施されてよい。
【００８３】
プロファイリングユニットからのアラート信号によって扇動される応答措置は、プロファイリングユニットが動作しているコンテキスト（すなわち、チップ安全性、チップセキュリティ、またはチップ解析のコンテキスト）に依存してよい。チップセキュリティについて、応答措置は、セキュリティ侵害が生じるのを防ぐことであってよい。チップ安全性について、応答措置は、安全性侵害が発生するのを防ぐことであってよい。例えば、チップ安全性のコンテキストにおいて、データ誤りは、チップ（または少なくともチップの一部）をシャット・ダウンする、または機能無効にするなどの、より深刻な応答措置をもたらすことがある。
【００８４】
図１から図３において例証されたＩＣＣの各コンポーネントは、専用のハードウェアで実装されてよい。代替的に、図１から図３において例証されたＳｏＣの各コンポーネントは、ソフトウェアで実装されてもよい。いくつかのコンポーネントは、ソフトウェアで実装されてよく、一方他のコンポーネントは、専用のハードウェアで実装される。
【００８５】
任意のサブユニットおよび通信インターフェースを含むプロファイリングユニット１０４は、ＩＣＣ１００の一部を形成するハードウェア回路であってよい。プロセッサなどの複雑なコアデバイスおよび周辺機器を制御する、ならびに／またはモニタリングするためのプロファイリングユニットのコンポーネントは、それらの制御ユニットの一部として、複雑な状態機械を好適に使用することができる。好適には、通信インターフェースは、複雑な状態機械を好適に使用して、それらの複雑なプロトコルを実装する。状態機械を実現することへのさまざまな手法が知られている。そのような状態機械は、（ｉ）論理ゲートのみ、（ｉｉ）論理ゲートとメモリとの組合せ、ここでメモリは、状態機械の動作を簡素化する、もしくはそれをプログラム可能にするための値の表を収容するために使用される、または（ｉｉｉ）メモリに記憶されたソフトウェアを実行するためのプロセッサコア、を使用して実現されてよい。プロセッサコアが使用される場合、それは、（ｉ）サブユニット、通信インターフェース、もしくは他のモニタリング回路と一体化する、または（ｉｉ）それらの実装リソースおよびコストを削減するために、いくつかのユニット間で共有されることが可能である。
【００８６】
説明されたＩＣＣは、コンピューティングベースのデバイス内に組み込まれてよい。コンピューティングベースのデバイスは、電子デバイス、例えば、スマートフォン、スマートウォッチ、ラップトップ、ＰＣ、またはより広いコンピューティングシステムのコンポーネント部分であるなんらかの他のデバイス、例えば、ビデオプロセッサ、（例えば、自動車用途における電気モータ、バッテリ、エネルギー管理システムを制御するための）制御システム、エンジン制御ユニット（ＥＣＵ）、その他であってよい。好適には、コンピューティングベースのデバイスは、本明細書で説明された方法を実装するために、デバイスの動作を制御するようにコンピュータ実行可能命令を処理するための、１つもしくは複数のプロセッサまたはコンピューティングユニットを含む。コンピュータ実行可能命令は、メモリなどの、任意のコンピュータ可読媒体を使用して提供されてよい。コンピュータ可読媒体は、非一時的であってよい。本明細書で説明された方法は、有形の記憶媒体上で、機械可読形式でソフトウェアによって実施されてよい。ソフトウェアは、本明細書で説明された方法を実装するために、コンピューティングベースのデバイスにおいて提供されてよい。
【００８７】
上の説明は、システム回路およびプロファイリングユニットを、同じＩＣＣ上にあるものとして説明している。代替実装において、システム回路およびプロファイリングユニットは、ＭＣＭの２つ以上の集積回路チップにわたって実装される。ＭＣＭにおいて、集積回路チップは、一般に、インターポーザ基板上にスタックされる、またはそれに近接して設置される。あるシステム回路が、１つの集積回路チップ上に設置され、他のシステム回路が、そのＭＣＭ上の異なる集積回路チップ上に設置されてもよい。同様に、プロファイリングユニットが、ＭＣＭの２つ以上の集積回路チップにわたって分散されてもよい。したがって、ＳｏＣのコンテキストにおいて上で説明された方法および装置はまた、ＭＣＭのコンテキストにおいても適用される。
【００８８】
出願人は、これにより、本明細書で説明された各個々の特徴および２つ以上のそのような特徴の任意の組合せを、そのような特徴または特徴の組合せが本明細書で開示されたいかなる問題を解決するかどうかにかかわらず、かつ特許請求項の範囲を限定することなく、当業者の共通の一般的知識に照らし、全体としての本明細書に基づいて、そのような特徴または組合せが遂行されることが可能である範囲で、分離して開示する。出願人は、本発明の態様が、任意のそのような個々の特徴または特徴の組合せからなり得ることを指し示す。上述した説明を考慮して、さまざまな変更が本発明の範囲内で行われてよいことが当業者には明らかであろう。
【図１】
2020184327.tif 000003
【図２】
2020184327.tif 000004
【図３】
2020184327.tif 000005
【図４】
2020184327.tif 000006
【図５】
2020184327.tif 000007
【外国語明細書】
2020184327000001.pdf