(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-04
(45)【発行日】2023-09-12
(54)【発明の名称】性能プロファイリング
(51)【国際特許分類】
G06F 11/34 20060101AFI20230905BHJP
【FI】
G06F11/34 166
【外国語出願】
(21)【出願番号】P 2020070495
(22)【出願日】2020-04-09
【審査請求日】2022-03-16
(32)【優先日】2019-04-10
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2019-04-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520161964
【氏名又は名称】シーメンス インダストリー ソフトウェア インコーポレイテッド
(74)【代理人】
【識別番号】100114890
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100135633
【氏名又は名称】二宮 浩康
(74)【代理人】
【識別番号】100162880
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ガジンダー、パネザー
【審査官】木村 雅也
(56)【参考文献】
【文献】米国特許出願公開第2017/0153962(US,A1)
【文献】米国特許出願公開第2005/0229176(US,A1)
【文献】特開2005-141392(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
複数のスレッドを実行するように構成された処理ユニットと、
期間にわたって前記複数のスレッドの各々が前記処理ユニットによっていつ実行されるかを指し示すアクティビティプロファイルを生成するために、前記期間にわたって前記処理ユニットの動作をプロファイルし、
前記期間
にわたる前記処理ユニットのスレッド実行のシグネチャ
を特定するために、生成されたアクティビティプロファイルを解析し、
前記期間にわたる前記処理ユニットのスレッド実行の前記シグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定し、
前記期間の前記処理ユニットのスレッド実行の前記シグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示す前記シグネチャと一致しない場合に、アラート信号を出力するように
構成されたプロファイリングユニットと、
を備える装置。
【請求項2】
前記アクティビティプロファイルが、前記期間にわたって各スレッドを実行することに費やされた処理ユニットクロックサイクルの数を指し示し、前記プロファイリングユニットが、前記アクティビティプロファイルを生成するために、前記期間にわたって前記処理ユニットによって実行されている各スレッドを識別することによって、前記処理ユニットの前記動作をプロファイルするように構成される、請求項1に記載の装置。
【請求項3】
前記装置が、相互接続回路を含む集積回路チップであり、前記プロファイリングユニットが、前記集積回路チップの相互接続回路を通したトランザクションをモニタリングすることによって、前記期間にわたって前記処理ユニットによって実行されている各スレッドを識別するように構成される、請求項2に記載の装置。
【請求項4】
前記処理ユニットが、実行されている前記スレッドを指し示すストレージ場所を維持するように構成され、前記プロファイリングユニットが、前記ストレージ場所にアクセスすることによって、実行されている各スレッドを識別するように構成される、請求項2に記載の装置。
【請求項5】
前記プロファイリングユニットが、前記処理ユニットから伝達される側波帯信号から、実行されている各スレッドを識別するように構成される、請求項2に記載の装置。
【請求項6】
前記プロファイリングユニットが、前記生成されたアクティビティプロファイルをデータアレイとして記憶するように構成され、前記プロファイリングユニットが、前記アクティビティプロファイルが前記処理ユニットのためのスレッド実行のベースラインを指し示すものとして分類され得るか否かを判定するために、前記データアレイにデータ処理アルゴリズムを使用して、前記生成されたアクティビティプロファイルを解析するように構成される、請求項
1から5までのいずれか1項に記載の装置。
【請求項7】
前記データ処理アルゴリズムが、トレーニングされたデータ分類モデルである、請求項6に記載の装置。
【請求項8】
前記プロファイリングユニットが、前記データアレイと、前記処理ユニットのためのスレッド実行のベースラインを各々が指し示す1つまたは複数のテンプレートデータアレイの組の各々との差を計算するために、前記データ処理アルゴリズムを使用するように構成され、前記データアレイが、そのデータアレイと、前記テンプレート
データアレイのうちの少なくとも1つとの前記差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを指し示すものとして分類される、請求項6に記載の装置。
【請求項9】
前記プロファイリングユニットが、前記期間の前記処理ユニットのスレッド実行の前記シグネチャを特徴付ける1つまたは複数のパラメータの組についての値を前記データアレイから抽出するために前記データ処理アルゴリズムを使用し、前記抽出された値を、スレッド実行のベースラインを指し示すシグネチャについての対応するパラメータ値と比較するように構成される、請求項6に記載の装置。
【請求項10】
前記1つまたは複数のパラメータの組が、前記期間にわたるスレッド切り替えの合計数、前記期間のスレッド実行の平均長さ、前記期間のスレッド実行の最大長さ、前記期間のスレッド実行の最小長さ、前記期間のスレッド切り替えの平均頻度、前記期間のスレッド切り替えの最大頻度および/もしくは最小頻度、ならびに前記期間のスレッド実行の順序のうちの、1つまたは複数を含む、請求項9に記載の装置。
【請求項11】
前記プロファイリングユニットが、前記データアレイが前記処理ユニットのためのスレッド実行のベースラインを表現しないものとして分類された場合に、前記アラート信号を出力するように構成される、請求項6から10のいずれかに記載の装置。
【請求項12】
前記データアレイが、前記期間にわたって各スレッドが前記処理ユニットによっていつ実行されているかを表す画像であり、前記データ処理アルゴリズムが、画像処理アルゴリズムであり、前記プロファイリングユニットが、生成された画像が前記処理ユニットのためのスレッド実行のベースラインを表すものとして分類され得るか否かを判定するために、前記生成された画像に前記画像処理アルゴリズムを使用して、前記生成されたアクティビティプロファイルを解析するように構成される、請求項6から11のいずれかに記載の装置。
【請求項13】
前記画像処理アルゴリズムが、トレーニングされた画像分類モデルである、請求項7に従属する場合の請求項12に記載の装置。
【請求項14】
前記プロファイリングユニットが、前記生成された画像と、前記処理ユニットのためのスレッド実行のベースラインを各々が表す1つまたは複数のテンプレート画像の組の各々との差を計算するために、前記画像処理アルゴリズムを使用するように構成され、前記生成された画像が、その画像と、前記テンプレート画像のうちの少なくとも1つとの前記差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを表すものとして分類される、請求項8に従属する場合の請求項12に記載の装置。
【請求項15】
複数のスレッドを実行する処理ユニットの性能をモニタリングする方法であって、
期間にわたって前記複数のスレッドの各々が前記処理ユニットによっていつ実行されたかを指し示すアクティビティプロファイルを生成するために、前記期間にわたって前記処理ユニットの動作をプロファイルすることと、
前記期間
にわたる前記処理ユニットのスレッド実行のシグネチャ
を特定するために、生成されたアクティビティプロファイルを解析することと、
前記期間にわたる前記処理ユニットのスレッド実行の前記シグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定することと、
前記期間の前記処理ユニットのスレッド実行の前記シグネチャが、前記処理ユニットのためのスレッド実行のベースラインを指し示す前記シグネチャと一致しない場合に、アラート信号を出力することと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチスレッディングを実施するときの処理ユニットの性能をモニタリングすることに関する。
【背景技術】
【0002】
コンピューティングデバイスは、一般に、プログラム命令によって規定されたタスクを実施するために、それらの命令を実行する1つまたは複数の処理ユニットを含む。処理ユニットは、例えば、中央処理ユニット(CPU)、またはグラフィックス処理ユニット(GPU)であることがある。
【0003】
処理ユニットは、命令の多数のスレッドを実行するための処理ユニットの能力であるマルチスレッディングをサポートすることができる。これを行うために、処理ユニットは、単一のスレッドが任意の所与の時間に処理ユニットによって実行されているように、実行のための命令のスレッドをスケジュールすることができる。あるスレッドは、そのスレッドの実行が止むことを意味する「スワップアウト」されてよく、別のスレッドは、そのスレッドの実行が始まることを意味する「スワップイン」されてよい。所与の時間の期間にわたって、スレッドは、1回または複数回、スワップインされ、スワップアウトされることがある。言い換えれば、処理ユニットは、時間にわたって異なるスレッドの実行を交互配置することによって、マルチスレッディングを実施することができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
命令のスレッドを実行するときの処理ユニットの性能について、情報を取得することが望ましいことがある。これは、処理ユニットの性能レベルをモニタリングする目的のためであっても、ならびに/または、スレッドおよびセキュリティ管理の一部としてであってもよい。
【課題を解決するための手段】
【0005】
本発明によれば、
複数のスレッドを実行するように構成された処理ユニットと、
期間にわたって複数のスレッドの各々が処理ユニットによっていつ実行されるかを指し示すアクティビティプロファイルを生成するために、期間にわたって処理ユニットの動作をプロファイルし、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析し、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致しない場合に、アラート信号を出力するように構成されたプロファイリングユニットと、
を含む装置が提供される。
【0006】
アクティビティプロファイルは、期間にわたって各スレッドを実行することに費やされた処理ユニットクロックサイクルの数を指し示してもよい。
【0007】
プロファイリングユニットは、アクティビティプロファイルを生成するために、期間にわたって処理ユニットによって実行されている各スレッドを識別することによって、処理ユニットの動作をプロファイルするように構成されてもよい。
【0008】
装置は、相互接続回路を含む集積回路チップであってよく、プロファイリングユニットは、集積回路チップの相互接続回路を通したトランザクションをモニタリングすることによって、期間にわたって処理ユニットによって実行されている各スレッドを識別するように構成されてもよい。
【0009】
処理ユニットは、実行されているスレッドを指し示すストレージ場所を維持するように構成されてよく、プロファイリングユニットは、ストレージ場所にアクセスすることによって、実行されている各スレッドを識別するように構成されてもよい。
【0010】
プロファイリングユニットは、処理ユニットから伝達される側波帯信号から、実行されている各スレッドを識別するように構成されてもよい。
【0011】
プロファイリングユニットは、生成されたアクティビティプロファイルをデータアレイとして記憶するように構成されてもよい。
【0012】
プロファイリングユニットは、アクティビティプロファイルが処理ユニットのためのスレッド実行のベースラインを指し示すものとして分類され得るか否かを判定するために、データアレイにデータ処理アルゴリズムを使用して、生成されたアクティビティプロファイルを解析するように構成されてもよい。
【0013】
データ処理アルゴリズムは、トレーニングされたデータ分類モデルであってよい。
【0014】
プロファイリングユニットは、データアレイと、処理ユニットのためのスレッド実行のベースラインを各々が指し示す1つまたは複数のテンプレートデータアレイの組の各々との差を計算するために、データ処理アルゴリズムを使用するように構成されてよく、データアレイは、そのデータアレイと、テンプレートアレイのうちの少なくとも1つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを指し示すものとして分類される。
【0015】
プロファイリングユニットは、期間の処理ユニットのスレッド実行のシグネチャを特徴付ける1つまたは複数のパラメータの組についての値をデータアレイから抽出するためにデータ処理アルゴリズムを使用し、抽出された値を、スレッド実行のベースラインを指し示すシグネチャについての対応するパラメータ値と比較するように構成されてもよい。
【0016】
1つまたは複数のパラメータの組は、期間にわたるスレッド切り替えの合計数、期間のスレッド実行の平均長さ、期間のスレッド実行の最大長さ、期間のスレッド実行の最小長さ、期間のスレッド切り替えの平均頻度、期間のスレッド切り替えの最大頻度および/もしくは最小頻度、ならびに期間のスレッド実行の順序のうちの、1つまたは複数を含むことができる。
【0017】
プロファイリングユニットは、データアレイが処理ユニットのためのスレッド実行のベースラインを表現しないものとして分類された場合に、アラート信号を出力するように構成されてもよい。
【0018】
データアレイは、期間にわたって各スレッドが処理ユニットによっていつ実行されているかを表す画像であってもよく、データ処理アルゴリズムは、画像処理アルゴリズムであってもよい。
【0019】
プロファイリングユニットは、生成された画像が処理ユニットのためのスレッド実行のベースラインを表すものとして分類され得るか否かを判定するために、生成された画像に画像処理アルゴリズムを使用して、生成されたアクティビティプロファイルを解析するように構成されてもよい。
【0020】
画像処理アルゴリズムは、トレーニングされた画像分類モデルであってよい。
【0021】
プロファイリングユニットは、生成された画像と、処理ユニットのためのスレッド実行のベースラインを各々が表す1つまたは複数のテンプレート画像の組の各々との差を計算するために、画像処理アルゴリズムを使用するように構成されてよく、生成された画像は、その画像と、テンプレート画像のうちの少なくとも1つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを表すものとして分類される。
【0022】
第2の態様によれば、複数のスレッドを実行する処理ユニットの性能をモニタリングする方法であって、
期間にわたって複数のスレッドの各々が処理ユニットによっていつ実行されたかを指し示すアクティビティプロファイルを生成するために、期間にわたって処理ユニットの動作をプロファイルすることと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析することと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致しない場合に、アラート信号を出力することと、を含む方法が提供される。
【0023】
プロファイルするステップは、アクティビティプロファイルを生成するために、期間にわたって処理ユニットによって実行されている各スレッドを識別することを含んでいてもよい。
【0024】
処理ユニットは、集積回路チップの一部を形成してもよく、方法は、集積回路チップの相互接続回路を通したトランザクションをモニタリングすることによって、実行されているスレッドを識別することを含んでいてもよい。
【0025】
方法は、処理ユニットによって実行されているスレッドを指し示す、処理ユニットによって維持されるストレージ場所にアクセスすることによって、処理ユニットによって実行されている各スレッドを識別することを含んでいてもよい。
【0026】
方法は、処理ユニットから伝達される側波帯信号から、処理ユニットによって実行されている各スレッドを識別することを含んでいてもよい。
【0027】
方法は、生成されたアクティビティプロファイルをデータアレイとして記憶することをさらに含んでいてもよい。
【0028】
生成されたアクティビティプロファイルを解析するステップは、アクティビティプロファイルが処理ユニットのためのスレッド実行のベースラインを指し示すものとして分類され得るか否かを判定するために、データアレイにデータ処理アルゴリズムを使用することを含んでいてもよい。
【0029】
データ処理アルゴリズムは、トレーニングされたデータ分類モデルであってもよい。
【0030】
方法は、データアレイと、処理ユニットのためのスレッド実行のベースラインを各々が指し示す1つまたは複数のテンプレートデータアレイの組の各々との差を計算するために、データ処理アルゴリズムを使用することを含んでいてもよく、データアレイは、そのデータアレイと、テンプレートアレイのうちの少なくとも1つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを指し示すものとして分類される。
【0031】
方法は、期間の処理ユニットのスレッド実行のシグネチャを特徴付ける1つまたは複数のパラメータの組についての値をデータアレイから抽出するためにデータ処理アルゴリズムを使用することと、抽出された値を、スレッド実行のベースラインを指し示すシグネチャについての対応するパラメータ値と比較することを含んでいてもよい。
【0032】
方法は、データアレイが処理ユニットのためのスレッド実行のベースラインを表現しないものとして分類された場合に、アラート信号を出力することを含んでいてもよい。
【0033】
データアレイは、期間にわたって各スレッドが処理ユニットによっていつ実行されているかを表す画像であってもよく、データ処理アルゴリズムは、画像処理アルゴリズムである。
【0034】
生成されたアクティビティプロファイルを解析するステップは、生成された画像が処理ユニットのためのスレッド実行のベースラインを表すものとして分類され得るか否かを判定するために、生成された画像に画像処理アルゴリズムを使用することを含んでいてもよい。
【0035】
画像処理アルゴリズムは、トレーニングされた画像分類モデルであってもよい。
【0036】
画像処理アルゴリズムは、生成された画像と、処理ユニットのためのスレッド実行のベースラインを各々が表す1つまたは複数のテンプレート画像の組の各々との差を計算してもよく、生成された画像は、その画像と、テンプレート画像のうちの少なくとも1つとの差が規定されたしきい値よりも少ない場合に、スレッド実行のベースラインを表すものとして分類される。
【0037】
第3の態様によれば、複数のスレッドを実行するように構成された処理ユニットを含む装置のコンピューティングユニットによって実行されるとき、
期間にわたって複数のスレッドの各々が処理ユニットによっていつ実行されたかを指し示すアクティビティプロファイルを生成するために、期間にわたって処理ユニットの動作をプロファイルすることと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致するかどうかを判定するために、生成されたアクティビティプロファイルを解析することと、
期間の処理ユニットのスレッド実行のシグネチャが、処理ユニットのためのスレッド実行のベースラインを指し示すシグネチャと一致しない場合に、アラート信号を出力することと、を含む、処理ユニットの性能をモニタリングする方法を、コンピューティングユニットに実施させるコンピュータ命令を記憶したコンピュータ可読な記憶媒体が提供される。
【0038】
本発明は、これより添付の図面を参照して、例として説明されることになる。
【図面の簡単な説明】
【0039】
【
図1】例示的な集積回路チップのアーキテクチャの概略図である。
【
図2】例示的な集積回路チップのアーキテクチャの概略図である。
【
図3】複数のスレッドを実行する処理ユニットの性能をプロファイルするためのプロファイリングユニットの概略図である。
【
図4】期間にわたって処理ユニットが5つのスレッドの実行をどのように交互配置するかの例を示す図である。
【
図5】複数のスレッドを実行する処理ユニットの性能をプロファイルする方法についてのステップのフローチャートである。
【発明を実施するための形態】
【0040】
以下の開示は、多数の命令スレッドを実行する処理ユニットの性能をプロファイルするためのプロファイリングアーキテクチャを説明する。プロファイリングアーキテクチャおよび処理ユニットは、集積回路チップ(ICC)の一部を形成してよい、すなわち、ICC上で実装されてよい。集積回路チップは、SоC、またはマルチチップモジュール(MCM)であってよい。プロファイリングアーキテクチャは、プロファイリングユニットを含み、プロファイリングユニットは、処理ユニットについてのアクティビティプロファイルを取得するために、規定された期間にわたって処理ユニットがスレッドの実行を交互配置するときの処理ユニットの性能をモニタリングする。アクティビティプロファイルは、その期間にわたってスレッドの各々が処理ユニットによっていつ実行されていたかを指し示す、すなわち、アクティビティプロファイルは、交互配置されたスレッドの実行を示す情報を収容する。プロファイリングユニットは、非介入的なやり方で、すなわち、処理ユニットによって実施される命令の実行を中断せずに、アクティビティプロファイルを生成するために処理ユニットをプロファイルすることができる。これは、例えば、プロファイリングユニットを、処理ユニットがスレッドを実行するときの相互接続回路を通したトランザクションをモニタリングする、ハードウェアブロックとして実装することによって行われてよい。一旦アクティビティプロファイルが生成されると、プロファイリングユニットは、期間にわたるスレッド実行についてのシグネチャが、規定された動作モードを指し示すシグネチャと一致するかどうかを判定するために、プロファイルを解析する。規定された動作モードは、処理ユニットのための「通常の」または「安全な」動作モードであってよい。シグネチャは、スレッドの実行のパターンを指す、またはより広くは、スレッド実行のパターンを特徴付ける情報を指すことができる。プロファイリングユニットが、モニタされた期間にわたるスレッド実行についてのシグネチャが規定された動作モードを指し示すシグネチャと一致しないと判定した場合、プロファイリングユニットは、出力信号を生成する。出力信号は、処理ユニットが規定された動作モードに従って動作していないことを指し示す。例えば、出力信号は、処理ユニットが通常の、または安全な動作モードで動作していない、すなわち、それが異常なやり方で動作していることを指し示すことがある。信号は、ICCの別のコンポーネントに出力されても、またはオフチップに設置されたコンポーネントに出力されてもよい。
【0041】
図1から
図3は、ICCアーキテクチャ、およびICCアーキテクチャ内のコンポーネントの概略図である。これらの図は、機能ブロックの観点から構造を提示している。当技術分野においてよく知られた機能を遂行するためのいくつかの機能ブロックは、省略されている。機能ブロックは、異なる物理的な構造を示していないことがあり、ICCデバイスの異なる論理要素間の厳密な分割を定義していないこともある。各機能ブロックは、ハードウェア、ソフトウェア、またはそれらの組合せで実装されてよい。
【0042】
図5は、処理ユニットの性能をモニタリングするための方法のステップのフローチャートを示す。しかしながら、フローチャートは、必ずしも方法のステップが実施され得る順番を制限するようには意図されていない。方法のステップは、
図5に表された順番に対する代替の順番で遂行されてもよい。方法のステップはまた、互いに同時に実装されてもよく、その結果、異なるステップの実装が、時間内に少なくとも部分的に重なることがある。
【0043】
図1は、ICC100についての例示的なプロファイリングアーキテクチャの全体構造を例証している。ICCは、システム・オンチップ(SoC)デバイスであってよい。ICC100は、システム回路102と、プロファイリングユニット104とを含む。
【0044】
システム回路102は、複数の処理ユニットを含む。この例では、3つの処理ユニット106、108、および110が存在する。各処理ユニットは、例えば、CPU(例えば、シングルコアCPU、デュアルコアCPU、クアッドコアCPUなど)、またはGPUであってよい。処理ユニットは、各々、複数のスレッドの実行を時間的に交互配置することによって、マルチスレッディングをサポートするように設計されてよい。本明細書で説明される例において、各処理ユニットは、5つのスレッドを実行するが、この数は、単に例証の目的のために選択されているにすぎないことが認識されるであろう。システム回路102は、明快にするために
図1に示されていないさらなるコンポーネントを含むことができる。
【0045】
プロファイリングユニット104は、処理ユニット106-110のうちの1つまたは複数の性能をプロファイルするように、かつ、処理ユニットによるスレッド実行のシグネチャが、処理ユニットが通常の、または安全なやり方で動作していない、すなわち、それが異常なやり方で動作していることを指し示すとプロファイリングユニット104が判定した場合に、出力信号を生成するように設計される。
【0046】
図2は、ICC100の例示的なアーキテクチャのより詳細な図を示す。システム回路は、処理ユニット106、108、および110と、コアデバイス202と、相互接続回路204と、メモリ206と、通信インターフェース208とを含んで示されている。任意の数のコアデバイスが、実装に応じて、ICC内で好適に実装されてもよいことが認識されるであろう。例示的なコアデバイスは、DSP(デジタル信号プロセッサ)、ビデオプロセッサ、システムメモリ、バス、ソフトウェア、データ、カスタム回路、およびデータエンジンを含む。この例のリストは非限定であり、ICCの任意のコンポーネントが、コアデバイスとして
図2に示されたアーキテクチャの中に組み込まれるために好適である。コアデバイスは、チップ上の他のデバイスのエミュレータまたはシミュレータであってもよい。例えば、コアデバイスは、プロセッサをエミュレートすることができる。処理ユニット106-110、メモリ206、および相互接続回路204もまたコアデバイスの例であるものの、これらは、明確性の目的のために、別個のコンポーネントとして
図2に示されていることに留意されたい。
【0047】
処理ユニット106-110、およびコアデバイス202は、相互接続回路204に接続されて示されている。相互接続回路204は、バス、またはバスネットワークであってよい。代替的に、相互接続回路は、ノードのネットワーク(例えば、ノードのメッシュネットワーク)、リングネットワーク、または共有ハブであってもよい。代替的に、相互接続回路は、1つまたは複数の共有ハブ、バス、リングネットワーク、およびメッシュネットワークの任意の組合せを含むことができる。
【0048】
相互接続回路204は、ICC100のコンポーネント間でデータを移送する。データは、離散的なメッセージの形式で、相互接続回路204を通して伝達されてよい。メッセージは、トランザクションプロトコルによって左右される、ICCのコンポーネント間のトランザクションの一部を形成することができる。すなわち、トランザクションは、ICCのコンポーネント間で伝達されている1つまたは複数のメッセージに関与することができる。言い換えれば、相互接続回路は、トランザクションプロトコルに従ったトランザクションとしてのデータを、ICCのコンポーネント間で移送することができる。相互接続回路は、例えば、異なるコアデバイス間のトランザクションをサポートすることができる。相互接続回路を通して伝達される各トランザクションメッセージは、多数のフィールドを含むことができる。各メッセージは、例えば、アドレスフィールドを含むことがある。アドレスフィールドは、送信元アドレスおよび/または宛先アドレスの表示を収容することができる。アドレスフィールドは、例えば、送信元ID、すなわち、メッセージの通信を始めたデバイス/コンポーネントのIDを記憶することができる。メッセージの通信を始めたデバイスまたはコンポーネントは、イニシエータと呼ばれてよい。したがって、アドレスフィールドは、イニシエータについてのIDを収容することができる。アドレスフィールドは、追加として、宛先ID、すなわち、メッセージの意図された受信先デバイス/コンポーネントのIDを記憶することができる。トランザクションを始めたデバイス/コンポーネントは、本明細書でマスターデバイス/コンポーネントと呼ばれてよい。代替的に、または加えて、アドレスフィールドは、トランザクションの関係先であるもののトランザクションを始めてはいないICC100内のデバイスまたはコンポーネント(これは、本明細書でスレーブデバイス/コンポーネントと呼ばれてもよい)のアドレスの表示を収容することができる。例えば、アドレスフィールドは、トランザクションの関係先である各(スレーブ)デバイス/コンポーネントのIDを収容することができる。したがって、マスターデバイスは、トランザクションを始める(および終える)ことができる。メッセージが処理デバイス106-110のうちの1つから生じるケースにおいて、メッセージは、そのメッセージを伝達されるようにさせた処理ユニットによって実行されるスレッドの表示を収容することができる。表示は、スレッドIDの形式であってよい。
【0049】
スレーブデバイスは、メッセージについて相互接続回路をリッスンしてもよい。スレーブデバイスは、マスターデバイスによってアドレス指定されたデバイスであってもよい。ICC100の各デバイスはまた、送信機デバイス、受信機デバイス、またはその両方であってもよい。送信機デバイスは、相互接続回路204にメッセージを送信するデバイスである。受信機デバイスは、相互接続回路204からデータを受信するデバイスである。送信機/受信機デバイスは、それぞれ、必ずしもマスター/スレーブデバイスであるわけではない。例えば、マスターデバイスが受信するデバイスとして動作することが可能であり、同様に、スレーブデバイスが送信機デバイスとして動作することが可能である。いくつかの例において、相互接続回路204を通したトランザクションを左右する通信プロトコルは、一度に1つのみのマスターデバイスがアクティブであり得ることを規定することができる。
【0050】
メモリ206は、相互接続回路204に接続されて示されている。メモリ206は、不揮発性メモリであってよい。メモリ206は、ICC100のシステムメモリであってもよい。システムメモリはコアデバイスの例として上で説明されてきたが、メモリ206は(相互接続回路204のように)明確性の目的のために、別個のコンポーネントとして示されている。メモリ206は、物理的に接続されていても、または別個であってもよい、1つもしくは複数の物理メモリ・デバイスから形成されてよい。メモリ206は、メモリブロックと呼ばれる多数のサブ領域または部分から形成されてよい。すなわち、メモリのブロックは、本明細書でメモリの部分と呼ばれてもよい。メモリ206は、多数のブロックから形成されてよい。ブロックは、互いに、等しい大きさであっても、または異なる大きさであってもよい。
【0051】
プロファイリングユニット104は、相互接続回路204に接続されていても、または処理ユニットに直接接続されていてもよい(明確性のために、
図2には1つのみの処理ユニット(106)への接続が示されている)。したがって、プロファイリングユニット104は、ハードウェアブロックであり、すなわち、それはハードウェア回路である。相互接続回路204に接続されている場合、プロファイリングユニット104は、相互接続回路204を通じて処理ユニットに接続されていると言われてよい。システム回路へのプロファイリングユニット104の考え得る接続は、以下でより詳細に説明されることになる。
【0052】
プロファイリングユニット104はまた、通信インターフェース208に接続されて示されている。通信インターフェース208は、オフチップのエンティティ(すなわち、チップ100の外部にあるエンティティ)と通信するように構成されてもよい。例えば、プロファイリングユニット104は、例えば、処理ユニット106、108、および110のプロファイルされた性能についての情報を伝達することによって、通信インターフェース208を介して、オフチップのデバッグコントローラ210と通信することができる。通信インターフェース208はまた、オンチップの他のエンティティと通信するように構成されてもよい。例えば、プロファイリングユニット104は、通信インターフェース208を介して、オンチップのデバッグコントローラ(
図2には示されず)と通信することができる。
図2は1つの通信インターフェースを例証しているが、任意の数の通信インターフェースがICC100上に統合され得る。実装される通信インターフェースは、行われることになる接続のタイプに依存して選択される。例示的な通信インターフェースは、JTAG、パラレルトレース入力/出力、およびAuroraベースの高速シリアルインターフェースなどの従来のデバッグインターフェース、ならびに、USB、イーサネット、RS232、PCIe、およびCANなどのシステムインターフェースの再使用を含む。
【0053】
処理ユニットが規定された動作モード、例えば、安全な、もしくは通常の動作モードに従って動作しているかどうか、またはそれが異常なやり方で動作しているかどうかを検出するために、プロファイリングユニット104を使用して処理ユニットの動作がプロファイルされる方法が、これより説明されることになる。この方法は、
図5におけるフローチャートを参照して説明されることになる。この例において、プロファイルされる処理ユニットは、処理ユニット106である。この処理ユニットは、例証の目的のみのために選択されており、処理ユニット108および110のうちの1つまたは複数が、類似したやり方でプロファイルされてもよいことが認識されるであろう。
【0054】
ステップ501で、プロファイリングユニット104は、アクティビティプロファイルを生成するために、期間にわたって処理ユニット106の動作をプロファイルする。この期間は、本明細書で「プロファイリング期間」と呼ばれてもよい。
【0055】
期間は、規定された期間であってよい。期間の値は、実装固有であってよい。期間の値は、プロファイリングユニット104によって設定されてもよい。期間の値は、プログラム可能であってもよい。
【0056】
アクティビティプロファイルは、プロファイリング期間内に、複数の命令スレッドの各々が処理ユニット106によっていつ実行されているかを指し示す。言い換えれば、アクティビティプロファイルは、処理ユニット106によるスレッドの交互配置された実行を示す、例えば、規定する。アクティビティプロファイルは、スレッドごとに、スレッドが処理ユニット106によって実行された時間間隔を指し示してもよい。すなわち、アクティビティプロファイルは、プロファイリング期間にわたって、スレッドごとに、実行開始時間および実行終了時間を指し示してもよい。アクティビティプロファイルの粒度は、実装によって異なってよいが、その最も細かい粒度において、期間内で各スレッドを実行することに費やされた処理ユニット106のクロックサイクルの数を指し示してもよい。すなわち、アクティビティプロファイルは、クロックサイクル数の観点から、各スレッドが処理ユニット106によって実行された時間間隔を指し示してもよい。
【0057】
図3は、プロファイリングユニット104の例示的な内部アーキテクチャを示す。それは、スレッド識別ユニット302と、ストア304と、処理ユニット306とを含む。ストア304は、プロファイリングユニット104の内部メモリであっても、または内部メモリの一部を形成してもよい。ストア304は、アクティビティプロファイルを定義するデータを記憶する。ストア304は、スレッドごとに、プロファイリング期間内にそのスレッドが処理ユニット106によっていつ実行されるかを指し示す情報を記憶する。その情報は、上で説明されたように、実行の時間間隔、または実行開始時間および実行終了時間の形式であってよい。示された例において、ストア304は、処理ユニット106によって実行されるそれぞれのスレッドに各々対応するエントリの組を含む。プロファイリングユニット104は、各エントリ内に、関連付けられたスレッドの実行のためのタイミング情報を記憶することができる。
【0058】
処理ユニット106の性能をプロファイルするために、プロファイリングユニット104は、期間にわたって処理ユニット106によって実行されているスレッドを追跡する。言い換えれば、プロファイリングユニット104は、期間にわたって処理ユニット106によって現在実行されている各スレッドを識別する。これは、各スレッドが実行されている時間間隔が、判定され、ストア304に書き込まれることを可能にする。
【0059】
処理ユニット106によって現在実行されているスレッドの識別は、スレッド識別ユニット302によって実施される。処理ユニット106によって実行されているスレッドを識別するための1つの仕方は、相互接続回路204を通して伝達されるトランザクションをモニタリングすることである。これは、プロファイリングユニット104が相互接続回路204に接続されている場合に可能である。上で言及されたように、処理ユニットによる命令の実行によって引き起こされるトランザクションの一部を形成するメッセージは、その命令が一部を形成するスレッドの表示を収容してよい。したがって、相互接続回路を通して伝達されるトランザクションをモニタリングすることによって、スレッド識別ユニット302(および、したがってより広くは、プロファイリングユニット104)は、処理ユニットによって、いつ、およびどのスレッドが実行されているかを判定することができる。代替的に、処理ユニット106によって実行されているスレッドの識別(例えば、ID)が、相互接続回路204を通して伝達される側波帯信号で伝達されてもよく、それは、プロファイリングユニット104によってモニタされ得る。側波帯シグナリングをサポートする相互接続回路の例は、AXIバスである。側波帯信号は、相互接続回路の一部を形成するバスのためのバス規格の一部ではない信号を指すこともあるが、信号は、バスを通して2つのコンポーネント間で伝達され、その伝達されるコンポーネントに理解可能である(すなわち、意味を有するデータを搬送する)。相互接続回路を「モニタリングすること」は、プロファイリングユニット104が、相互接続回路からそれらの通信を抽出することなく、相互接続回路を通して通信(例えば、トランザクションおよび/または側波帯信号)を観察することを意味してよい。例えば、それらの通信の複製が、プロファイリングユニットによって生成され、スレッドを識別するために解析されてもよい。それらの通信の複製は次いで、解析の後に、プロファイリングユニットによって破棄されてもよい。これは、ICC100にわたってそれらの通信の送信を妨げることなく、相互接続回路が観察されることを可能にするので、好都合である。
【0060】
代替的に、スレッド識別ユニット302は、処理ユニット106によって維持されるメモリの領域に記憶されたスレッドIDの表示を観察すること、またはモニタリングすることから、処理ユニット106によって実行されているスレッドを識別してもよい。言い換えれば、処理ユニット106は、その処理ユニットによって現在実行されているスレッドの表示を記憶するメモリの領域を維持してよい。メモリのその領域は、ハードウェア・キャッシュまたはレジスタであってよい。例えば、それは、ステータス・レジスタであってもよく、例えば、処理ユニット106がCPUである場合は、CPUステータス・レジスタであってもよい。ステータス・レジスタは、処理ユニットの内部にあってもよいし、または外部にあって処理ユニットにアクセス可能であってもよい。メモリの領域は、ICC100の一部を形成する。
図2に示された例において、メモリのこの領域は、メモリ206の一部を形成する。スレッド識別ユニット302は、スレッド識別ユニット302が観察する、処理ユニット106から伝達された信号から、維持されたメモリの領域に記憶されたスレッドIDを観察してもよい。観察された信号は、例えば、メモリの領域に記憶されたスレッドIDを更新する、または設定するために、処理ユニット106が伝達する信号であることがある。代替的に、スレッド識別ユニット302は、処理ユニット106によって実行されているスレッドを判定するために、維持されたメモリの領域にアクセスすることができる。スレッド識別ユニット302は、メモリ領域に周期的にアクセスしてもよい。
【0061】
処理ユニット106によって実行されているスレッドを識別すると、スレッド識別ユニット302は、そのスレッドの表示をストア304に伝達する。ストア304は次いで、例えば、クロック308からのクロック信号を使用して、そのスレッドの実行が始まった時間を識別することができる。クロック308は、この例において、プロファイリングユニット104の一部を形成して示されているが、他の例においては、ストアが、プロファイリングユニット104の外部にあるクロックからクロック信号を受信してもよいことが認識されるであろう。実行されているスレッドが変化したというスレッド識別ユニット302からの表示の受信に応答して、ストア304は、受信されたクロック信号を使用して、前のスレッドの実行が止んだ時間、および次のスレッドの実行が始まった時間をログする。したがって、要約すると、処理ユニット106によって特定のスレッドが実行されているというスレッド識別ユニット302からの表示の受信に応答して、ストア304は、受信されたクロック信号を使用して、以下の措置:1)先行するスレッドの実行が終了された時間を関連付けられたエントリにログする、および2)特定のスレッドの実行が開始された時間を関連付けられたエントリにログする、を実施する。
【0062】
処理ユニット106によるスレッドの実行をプロファイルすることへの上の手法は、好都合なことに、非介入的なやり方で実施され得る。すなわち、プロファイリングユニット104は、スレッド実行を中断することなく、それらの実行をプロファイルすることができる。これは、プロファイリングユニット104が、例えば、相互接続回路を通して伝達されるトランザクションもしくは信号、または処理ユニットによって維持されたメモリのいずれかをモニタリングすることを通じて、プロファイリングが実施されることを可能にするハードウェア・コンポーネントであるからである。対照的に、プロファイルすることへの一般的な手法は、プロファイリングソフトウェアが稼働されるのを可能にするために処理ユニットでの命令の実行を中断し、それは介入的である。
【0063】
プロファイリング期間にわたって処理ユニット106による時間的に交互配置されたスレッドの実行を特徴付けるアクティビティプロファイルを生成すると、プロファイリングユニット104は、アクティビティプロファイルを記憶する。アクティビティプロファイルは、メモリ、例えば、プロファイリングユニット104にローカルなメモリ(
図3には示されず)、またはICC100におけるなんらかの他のメモリ、例えば、メモリ206に記憶されてよい。アクティビティプロファイルは、プロファイリング期間内に各スレッドが処理ユニットによって実行されていた時間についての情報を収容するデータアレイとして記憶されてよい。異なるタイプのデータアレイの例は、以下でより詳細に説明されることになる。
【0064】
図5に戻って、ステップ503で、プロファイリングユニット104は、プロファイリング期間のスレッド実行のシグネチャがベースラインシグネチャと一致するかどうかを判定するために、アクティビティプロファイルを解析する。このステップは、処理ユニット306によって実施されてよい。
【0065】
処理ユニットのスレッド実行のシグネチャは、処理ユニット106によるスレッド実行のパターン、またはより広くは、スレッド実行のパターンの特徴付けを指す。処理ユニットのスレッド実行のパターンは、スレッド実行に関する1つまたは複数のパラメータの組を基準にして特徴付けられてよい。これらのパラメータは、例えば、スレッド切り替えの合計数、スレッド実行の平均長さ、スレッド実行の最大長さ、スレッド実行の最小長さ、スレッド切り替えの平均頻度、スレッド切り替えの最大頻度および/もしくは最小頻度、スレッド実行の順序、その他のうちの、1つまたは複数を含んでよい。
【0066】
ベースラインシグネチャは、処理ユニット106のための、動作の、すなわちスレッド実行の、ベースラインを指し示すシグネチャを指してよく、ここで、動作/スレッド実行のベースラインは、変化または偏差を比較または測定するための基礎として働く、処理ユニット106の動作/スレッド実行のタイプである。動作/スレッド実行のベースラインは、したがって、処理ユニット106のための、通常の、または一般的な、または予期される動作/スレッド実行であってよい。
【0067】
プロファイリングユニット104は、処理ユニット106のための1つまたは複数のベースラインシグネチャの組を記憶することができる。いくつかの例において、ベースラインシグネチャは、時間にわたって処理ユニット106をプロファイルすることによって、プロファイリングユニット104によって生成されてもよい。例えば、プロファイリングユニット104は、多数のプロファイリング期間にわたって処理ユニットをプロファイルすることによって、時間にわたってベースラインシグネチャを更新してもよい。他の例において、ベースラインシグネチャは、予め生成され、記憶されていてもよい。
【0068】
プロファイリングユニット104は、アクティビティプロファイルから判定されたシグネチャが、規定された量またはしきい値内までベースラインシグネチャと一致する場合に、アクティビティプロファイルから判定されたシグネチャは、ベースラインシグネチャと一致すると判定してよい。別の言い方をすれば、プロファイリングユニット104は、アクティビティプロファイルから判定されたシグネチャが、予め決められた量を超えてベースラインシグネチャから外れる、または異なる場合に、アクティビティプロファイルから判定されたシグネチャは、ベースラインシグネチャと一致しないと判定してよい。プロファイリングユニット104は、アクティビティプロファイルから判定されたスレッド実行シグネチャとのベースラインシグネチャの比較を使用して、処理ユニット106が、通常の、一般的な、または予期される動作モードに対応する規定された動作モードで動作しているかどうかを判定する。プロファイリングユニット104が、アクティビティプロファイルからのシグネチャがベースラインシグネチャのうちの少なくとも1つと一致しないと判定した場合、プロファイリングユニット104は、処理ユニット106が通常の、または一般的な仕方で動作していない、すなわち、それが異常な仕方で動作していると判定する。対照的に、プロファイリングユニットが、アクティビティプロファイルからのシグネチャがベースラインシグネチャのうちの少なくとも1つと一致すると判定した場合、プロファイリングユニットは、処理ユニット106が通常の、または一般的な仕方で動作している、すなわち、それが異常な仕方で動作していないと判定する。
【0069】
アクティビティプロファイルの解析は、アクティビティプロファイルを定義するデータがどのように記憶されているかに応じて、異なる仕方で実施されてよい。
【0070】
一組の例において、プロファイリングユニットは、アクティビティプロファイルをデータアレイとして記憶する。データアレイは、線形データアレイまたは2次元データアレイであってよい。それは、CSVファイルなどの表形式であってよい。
【0071】
処理ユニット306は、アクティビティプロファイルがベースラインスレッド実行を指し示すものとして分類され得るか否かを判定するために、データ処理アルゴリズムを使用してデータアレイを解析してよい。これを行うために、データ処理アルゴリズムは、データアレイによって指し示されたプロファイリング期間にわたるスレッド実行のシグネチャを判定するために、そのデータアレイを解析してよい。シグネチャは次いで、プロファイリング期間にわたるスレッド実行がベースラインスレッド実行と一致するかどうかを判定するために使用されてよい。
【0072】
データ処理アルゴリズムは、トレーニングされたデータ分類モデルであってよい。データ分類モデルは、例えば、機械学習技法または深層学習技法を使用してトレーニングされてよい。データ分類モデルは、入力データアレイを、ベースラインスレッド実行を指し示すものとして分類するように、またはベースラインスレッド表示を指し示さないものとして分類するようにトレーニングされてよい。データ分類モデルは、所望された、または規定されたスレッド実行のベースラインをまさに指し示すデータアレイを使用してトレーニングされてよい。したがって、この例において、スレッド実行のシグネチャは、明示的に判定されるのではなく、むしろ、トレーニングされたデータ分類モデルを使用して暗黙的に抽出され、解析される。
【0073】
代替的に、データ処理アルゴリズムは、データアレイと、スレッド実行のベースラインを各々が指し示す1つまたは複数のテンプレートデータアレイの組の各々との差を計算してもよい。データ処理アルゴリズムは、アクティビティプロファイルのデータアレイと、テンプレートアレイのうちの少なくとも1つとの差が規定されたしきい値よりも少ない場合に、アクティビティプロファイルのデータアレイを、スレッド実行のベースラインを指し示すものとして分類してよい。差は、アレイについてのエントリ単位で計算されてよい。差は、例えば、アレイにわたる絶対差の和として計算されてもよい。
【0074】
別の例において、データ処理アルゴリズムは、データアレイによって指し示されたプロファイリング期間にわたるスレッド実行についてのシグネチャを特徴付ける1つまたは複数のパラメータ、例えば、上で識別されたパラメータの組についての値を、そのデータアレイから抽出してもよい。データ処理アルゴリズムは次いで、シグネチャが一致するかどうかを判定するために、それらのパラメータの値を、ベースラインシグネチャについての記憶された値と比較することができる。したがって、スレッド実行のシグネチャは、明示的に判定され得る。パラメータの組が2つ以上のパラメータを含む場合、抽出された値は、ベースラインシグネチャについての対応する値と比較される。
【0075】
一組の例において、データアレイは、画像(例えば、デジタル画像)であってもよい。画像は、プロファイリング期間にわたって各スレッドが処理ユニット106によっていつ実行されるかを表す。言い換えれば、画像は、処理ユニット106によるスレッド実行の時間的な交互配置を表す。そのような画像の例が、
図4に401で示されている。ここで、中実ブロックは、各々、スレッドが処理ユニットによって実行されている時間間隔を指し示す。この例においては、5つのスレッドが実行される。
【0076】
データアレイが画像401などの画像として記憶されている場合、処理ユニット306によって実施されるデータ処理アルゴリズムは、画像処理アルゴリズムであってよい。例えば、データ処理アルゴリズムは、入力画像を、ベースラインスレッド実行を表すものとして分類する、またはベースラインスレッド表示を表さないものとして分類する、トレーニングされた画像分類モデルであってよい。画像分類モデルは、スレッド実行のベースラインをまさに表す画像を使用してトレーニングされてよい。
【0077】
代替的に、画像処理アルゴリズムは、画像(例えば、画像401)と、スレッド実行のベースラインを各々が表す1つまたは複数のテンプレート画像の組の各々との差を計算してもよい。データ処理アルゴリズムは、アクティビティプロファイルの画像と、テンプレート画像のうちの少なくとも1つとの差が規定されたしきい値よりも少ない場合に、アクティビティプロファイルの画像を、スレッド実行のベースラインを表すものとして分類してよい。差は、画像についてのエントリ単位で(例えば、ブロックが1つまたは複数のピクセルのブロックである場合、ブロック単位で)計算されてよい。差は、例えば、画像にわたる絶対差の和として計算されてもよい。
【0078】
画像処理アルゴリズムは、画像によって表されたスレッド実行についてのシグネチャを特徴付ける1つまたは複数のパラメータ、例えば、上で識別されたパラメータの組についての値を抽出するために、画像を解析してもよい(例えば、画像認識またはオブジェクト認識を実施する)。画像処理アルゴリズムは次いで、シグネチャが一致するかどうかを判定する(および、したがって、アクティビティプロファイルから取得された画像がスレッド実行のベースラインを表すか否かを判定する)ために、それらのパラメータの値を、ベースラインシグネチャについての記憶された値と比較することができる。
【0079】
ステップ505で、処理ユニット306は、処理ユニット106のためのスレッド実行のシグネチャがベースラインシグネチャと一致しないと判定した場合に、アラート信号を生成する。言い換えれば、処理ユニット306は、その解析から、プロファイリング期間の処理ユニットのスレッド実行のシグネチャがベースラインシグネチャと一致しない、またはベースラインシグネチャから外れていると判定した場合にのみ、アラート信号を生成する。アラート信号はしたがって、処理ユニット106がベースライン動作モードで動作していないこと、例えば、予期される、または一般的な、または通常の仕方で動作していないことを指し示すことができる。言い換えれば、アラート信号は、処理ユニットが異常な仕方で動作していることを指し示してよい。
【0080】
アラート信号は、通信インターフェース208を介して、オンチップまたはオフチップのエンティティに伝達されてよい。アラート信号は、応答措置を実施するように、アラート信号を受信するコンポーネントをトリガしてよい。アラート信号は、例えば、処理ユニット106がセキュリティ侵害を受けていることを指し示すことがあり、そのケースにおいて、応答措置は、例えば、処理ユニットの電源を落とすことによって、または処理ユニットにさらなる命令の実行を中止させることによって、処理ユニットを機能無効にすることであってもよい。代替的に、応答措置は、処理ユニット106から相互接続回路へのデータ経路にロックをかけて、処理ユニット106からのデータがICCを通じて伝播するのを防ぐことであってもよい。
【0081】
処理ユニット306は、代替的に、または加えて、いずれか1つのスレッドが異常に長い時間の期間実行しているかどうかを判定するために、アクティビティプロファイルを解析してもよい。例えば、処理ユニットは、スレッドが規定されたしきい値を超えた実行の継続期間を有するかどうかを判定してもよい。各スレッドは、同じしきい値に関連付けられても、またはそれぞれのしきい値に関連付けられていてもよい。処理ユニット306は、スレッドがしきい値を超えた継続期間実行されたという検出に応答して、出力信号を生成してよい。出力信号は、そのしきい値を超えたスレッドの表示(例えば、ID)を収容してもよい。2つ以上のスレッドがそのしきい値を超えた場合、出力信号は、それらのスレッドの各々の表示を収容してもよい。
【0082】
本明細書で説明されるプロファイリングユニット104は、チップ安全性、チップセキュリティ、またはチップ解析の目的のために動作するように構成されてもよい。本開示のコンテキストにおいて、チップセキュリティは、第三者利益の目的のために潜在的な悪意を有するチップ上でデータ誤りを検出することに関してよい。チップ安全性は、より深刻な潜在的帰結を有する、例えば、チップが実装されているより広いシステム上での危険な作用を有するチップ上でデータ誤りを検出することに関してよい。チップ解析は、チップがどのように機能するのか、または動作するのかのさらなる理解を獲得するために、チップの挙動を解析することに関してよい。チップ解析は、潜在的にはオフチップで実行される、専用の解析ソフトウェアによって実施されてよい。
【0083】
プロファイリングユニットからのアラート信号によって扇動される応答措置は、プロファイリングユニットが動作しているコンテキスト(すなわち、チップ安全性、チップセキュリティ、またはチップ解析のコンテキスト)に依存してよい。チップセキュリティについて、応答措置は、セキュリティ侵害が生じるのを防ぐことであってよい。チップ安全性について、応答措置は、安全性侵害が発生するのを防ぐことであってよい。例えば、チップ安全性のコンテキストにおいて、データ誤りは、チップ(または少なくともチップの一部)をシャット・ダウンする、または機能無効にするなどの、より深刻な応答措置をもたらすことがある。
【0084】
図1から
図3において例証されたICCの各コンポーネントは、専用のハードウェアで実装されてよい。代替的に、
図1から
図3において例証されたSoCの各コンポーネントは、ソフトウェアで実装されてもよい。いくつかのコンポーネントは、ソフトウェアで実装されてよく、一方他のコンポーネントは、専用のハードウェアで実装される。
【0085】
任意のサブユニットおよび通信インターフェースを含むプロファイリングユニット104は、ICC100の一部を形成するハードウェア回路であってよい。プロセッサなどの複雑なコアデバイスおよび周辺機器を制御する、ならびに/またはモニタリングするためのプロファイリングユニットのコンポーネントは、それらの制御ユニットの一部として、複雑な状態機械を好適に使用することができる。好適には、通信インターフェースは、複雑な状態機械を好適に使用して、それらの複雑なプロトコルを実装する。状態機械を実現することへのさまざまな手法が知られている。そのような状態機械は、(i)論理ゲートのみ、(ii)論理ゲートとメモリとの組合せ、ここでメモリは、状態機械の動作を簡素化する、もしくはそれをプログラム可能にするための値の表を収容するために使用される、または(iii)メモリに記憶されたソフトウェアを実行するためのプロセッサコア、を使用して実現されてよい。プロセッサコアが使用される場合、それは、(i)サブユニット、通信インターフェース、もしくは他のモニタリング回路と一体化する、または(ii)それらの実装リソースおよびコストを削減するために、いくつかのユニット間で共有されることが可能である。
【0086】
説明されたICCは、コンピューティングベースのデバイス内に組み込まれてよい。コンピューティングベースのデバイスは、電子デバイス、例えば、スマートフォン、スマートウォッチ、ラップトップ、PC、またはより広いコンピューティングシステムのコンポーネント部分であるなんらかの他のデバイス、例えば、ビデオプロセッサ、(例えば、自動車用途における電気モータ、バッテリ、エネルギー管理システムを制御するための)制御システム、エンジン制御ユニット(ECU)、その他であってよい。好適には、コンピューティングベースのデバイスは、本明細書で説明された方法を実装するために、デバイスの動作を制御するようにコンピュータ実行可能命令を処理するための、1つもしくは複数のプロセッサまたはコンピューティングユニットを含む。コンピュータ実行可能命令は、メモリなどの、任意のコンピュータ可読媒体を使用して提供されてよい。コンピュータ可読媒体は、非一時的であってよい。本明細書で説明された方法は、有形の記憶媒体上で、機械可読形式でソフトウェアによって実施されてよい。ソフトウェアは、本明細書で説明された方法を実装するために、コンピューティングベースのデバイスにおいて提供されてよい。
【0087】
上の説明は、システム回路およびプロファイリングユニットを、同じICC上にあるものとして説明している。代替実装において、システム回路およびプロファイリングユニットは、MCMの2つ以上の集積回路チップにわたって実装される。MCMにおいて、集積回路チップは、一般に、インターポーザ基板上にスタックされる、またはそれに近接して設置される。あるシステム回路が、1つの集積回路チップ上に設置され、他のシステム回路が、そのMCM上の異なる集積回路チップ上に設置されてもよい。同様に、プロファイリングユニットが、MCMの2つ以上の集積回路チップにわたって分散されてもよい。したがって、SoCのコンテキストにおいて上で説明された方法および装置はまた、MCMのコンテキストにおいても適用される。
【0088】
出願人は、これにより、本明細書で説明された各個々の特徴および2つ以上のそのような特徴の任意の組合せを、そのような特徴または特徴の組合せが本明細書で開示されたいかなる問題を解決するかどうかにかかわらず、かつ特許請求項の範囲を限定することなく、当業者の共通の一般的知識に照らし、全体としての本明細書に基づいて、そのような特徴または組合せが遂行されることが可能である範囲で、分離して開示する。出願人は、本発明の態様が、任意のそのような個々の特徴または特徴の組合せからなり得ることを指し示す。上述した説明を考慮して、さまざまな変更が本発明の範囲内で行われてよいことが当業者には明らかであろう。