(57)【要約】【課題】開始と終了イベントとの間に生じるデータ処理装置内の複数のアドレス指定可能場所へのアクセスを監視するための監視回路を提供する。【解決手段】前記監視回路は、監視される前記複数のアドレス指定可能場所を識別するデータを保存するためのアドレス場所保存と、監視データ保存とを含み、前記監視回路は、前記開始イベントの検出に応答して、前記複数のアドレス指定可能場所へのアクセスを検出し、前記監視データ保存内に前記検出されたアクセスの集計に関連する監視データを保存し、前記監視回路は、前記終了イベントの検出に応答して、前記監視データの収集を停止し、前記監視回路は、消去イベントの検出に応答して、前記保存された監視データを出力し、前記監視データ保存を消去する、データ処理装置が開示される。【選択図】図１
2010020767.tif 000002
【特許請求の範囲】
【請求項１】
開始イベントと終了イベントとの間に生じるデータ処理装置内の複数のアドレス指定可能場所へのアクセスを監視するための監視回路を含む、データ処理装置であって、
（ｉ）前記監視回路は、監視される前記複数のアドレス指定可能場所を識別するデータを保存するためのアドレス場所保存と、監視データ保存とを含み、
（ｉｉ）前記監視回路は、前記開始イベントの検出に応答して、前記複数のアドレス指定可能場所へのアクセスを検出し、前記監視データ保存内に前記検出されたアクセスの集計に関連する監視データを保存し、
（ｉｉｉ）前記監視回路は、前記終了イベントの検出に応答して、前記監視データの収集を停止し、
（ｉｖ）前記監視回路は、消去イベントの検出に応答して、前記保存された監視データを出力し、前記監視データ保存を消去する、
データ処理装置。
【請求項２】
前記開始イベント、前記終了イベント、および前記消去イベントは、同一イベントであって、前記同一イベントに応答し、前記監視回路は、前記監視データを出力し、前記監視データ保存を消去し、前記複数のアドレス指定可能場所へのアクセスの検出を開始する、請求項１に記載のデータ処理装置。
【請求項３】
前記開始、終了、および消去イベントはそれぞれ、タスクの開始、タスクの終了、メモリバリア命令、所定時間経過、カウンタオーバーフロー、カウンタ閾値到達、制御レジスタへの書き込み、特定の領域内のアドレスへのアクセス、インタラプト、ブレークポイント発生、送信イベント命令、イベント命令待機、ロード排他命令、保存排他命令、アトミックメモリ動作、バス上のメモリバリア表示、バス上のロード排他表示、バス上の保存排他表示、バス上のアトミックメモリアクセス表示、およびタイマのうちの１つを含む、請求項１に記載のデータ処理装置。
【請求項４】
前記監視データ出力は、前記開始、消去、および終了イベントのうちの少なくとも１つを識別する信号をさらに含む、請求項３に記載のデータ処理装置。
【請求項５】
前記監視データは、各アクセス時間を示すタイムスタンプデータをさらに含む、請求項１に記載のデータ処理装置。
【請求項６】
前記検出されたアクセスの前記集計は、ハッシュ関数によって計算される前記アクセスのフィンガープリントを含む、請求項１に記載のデータ処理装置。
【請求項７】
前記検出されたアクセスの前記集計は、前記アクセスのカウントを含む、請求項１に記載のデータ処理装置。
【請求項８】
前記監視回路は、前記複数のアドレス指定可能場所へのアクセス回数をカウントするためのカウンタを含む、請求項７に記載のデータ処理装置。
【請求項９】
前記複数のアドレス指定可能場所は、ある範囲のアドレス、複数の範囲のアドレス、あるセットの特定のアドレス、およびある範囲のアドレスの逆数のうちの少なくとも１つを含む、請求項１に記載のデータ処理装置。
【請求項１０】
前記複数のアドレス指定可能場所は、複数の範囲のアドレスを含み、前記検出されたアクセスの前記集計は、前記アクセスが為された前記複数のアドレス範囲の表示を含む、請求項１に記載のデータ処理装置。
【請求項１１】
前記検出されたアクセスの前記集計は、アクセスの種類のうちの少なくとも１つを示すデータ、前記アクセスを為すエンティティを識別する識別子、前記エンティティのうちの少なくとも１つによる各種類の前記アクセス回数を示すデータ、および前記アクセスが為された複数のアドレス範囲の表示をさらに含む、請求項１に記載のデータ処理装置。
【請求項１２】
前記監視回路は、複数のカウンタを含み、各カウンタは、前記エンティティのうちの１つ以上、前記複数のアドレス範囲のうちの１つ以上、およびデータアクセスの種類のうちの少なくとも１つに関連する、請求項１１に記載のデータ処理装置。
【請求項１３】
前記監視回路は、前記データ処理装置内のバスポートに連結され、前記エンティティは、複数のバスマスタを含む、請求項１１に記載のデータ処理装置。
【請求項１４】
前記監視データ保存は、キャッシュを含む、請求項１に記載のデータ処理装置。
【請求項１５】
前記検出されたアクセスの前記集計は、アクセスの種類、前記アクセスを為すエンティティを識別する識別子、および前記エンティティのうちの少なくとも１つによる各種類の前記アクセス回数を示すデータのうちの少なくとも１つを示すデータおよび前記アクセスが為された複数のアドレス範囲表示をさらに含み、前記キャッシュは、複数のセットの監視データを保存するように構成され、各セットは、前記エンティティのうちの１つ以上、データアクセスの種類、および１つ以上の前記複数のアドレス範囲のうちの少なくとも１つに関連する、請求項１４に記載のデータ処理装置。
【請求項１６】
前記監視回路は、フルになった前記キャッシュの検出および検出されたアクセスに応答して、前記複数のセットの監視データのうちの１つを消去するための論理を含む、請求項１５に記載のデータ処理装置。
【請求項１７】
前記データ処理装置は、複数の処理要素と、複数の監視回路とを含む、請求項１に記載のデータ処理装置。
【請求項１８】
前記データ処理装置は、イベント構成保存をさらに含み、前記データ処理装置は、所定の命令に応答して、前記イベント構成保存に書き込むように適合され、前記監視回路は、前記イベント構成保存に保存された値に応答して、前記複数のアドレス指定可能場所の監視を開始するか、前記監視データを出力するか、または前記監視データを消去する、請求項１に記載のデータ処理装置。
【請求項１９】
前記複数のアドレス指定可能場所を識別するデータを保存するために、前記アドレス場所保存を更新するためのデータ受信用データ入力を含む、請求項１に記載のデータ処理装置。
【請求項２０】
前記消去イベントに応答して、前記監視データを出力するために、前記データ処理装置からの出力を含み、前記消去イベントは、前記データ処理装置によって生成される内部イベントである、請求項１に記載のデータ処理装置。
【請求項２１】
データ処理装置を監視するための方法であって、
（ｉ）開始イベントを検出するステップと、     
（ｉｉ）複数のアドレス指定可能場所へのアクセスを検出し、監視データ保存内に前記検出されたアクセスの集計に関連する監視データを保存するステップと、
（ｉｉｉ）終了イベントを検出するステップと、
（ｉｖ）前記保存された監視データを出力するステップと、
（ｖ）前記監視データ保存をクリアするステップと、
を複数回実行するステップを含む、方法。
【請求項２２】
請求項１に記載のデータ処理装置によって生成される監視データを分析するための方法であって、
（ｉ）複数の開始イベントと終了イベントとの間に生成される複数のアドレス場所に為されるアクセスの集計に関連する複数のセットの監視データを受信するステップと、
（ｉｉ）随伴または重複セットの監視データから監視データを結合し、より広く離間した開始および終了イベントに関連する新しいセットの監視データを生成するステップと、
（ｉｉｉ）前記開始および終了イベントを識別するデータと、前記複数のアドレス場所と関連させて、前記監視データを分析するステップと、
を含む、方法。
【請求項２３】
（ｉ）前記監視データは、前記アクセスを実行したエンティティの表示をさらに含み、
（ｉｉ）前記分析ステップは、エンティティが、前記エンティティの許可された範囲外のアドレスにアクセスしているかどうか判断するステップを含む、
請求項２２に記載の方法。
【請求項２４】
（ｉ）前記監視データは、前記アクセスを実行したエンティティの表示をさらに含み、
（ｉｉ）前記分析ステップは、異なるエンティティが、前記セットの監視データのうちの１つ内の同一アドレス範囲に書き込みおよび読み出しを実行したかどうかを判断するステップを含む、
請求項２２に記載の方法。
【請求項２５】
（ｉ）前記分析ステップは、前記イベント間の時間毎にアクセス回数を分割することによって、異なるイベント間の前記データ処理装置の性能を判断するステップを含む、
請求項２２に記載の方法。
【請求項２６】
データプロセッサ上で起動される場合、前記データプロセッサを制御し、請求項２２に記載の方法のステップを実行するように動作可能な、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理分野に関し、より具体的には、データ処理システムの監視に関する。
【背景技術】
【０００２】
データ処理装置は、益々複雑になってきているため、最適化または故障の発見において、大量のデータを抽出および分析せずに、その性能を分析することが益々困難になってきている。
【０００３】
さらに、複数のプロセッサを有するデータ処理装置が増えている。これら複数のプロセッサは、多くの場合、同一のデータストレージにアクセスするため、レース条件の問題が発生し、１つのプロセッサがそれにアクセスするのとほぼ同時に、別のプロセッサが保存された変数に書き込むことになる。そのような問題は、プロセッサ間の同期が不十分であることによって発生する。
【０００４】
マルチプロセッサシステムの性能を調整する際には、異なるが、関連する問題が発生する。プログラマは、例えば、バス競合の理由によって、２つのコードが同時に異なるプロセッサ上で実行することによる性能の推測を理解する必要がある。
【０００５】
さらに、関数が、許可された範囲内のメモリの一部にのみアクセスし、その範囲外のメモリにはアクセスしないことを確認できることが重要である場合もある。
【０００６】
レース条件を確認する周知の方法の１つは、動的レース検出機構によるものである。例えば、「Ｅｒａｓｅｒ：  ａ  ｄｙｎａｍｉｃ  ｄａｔａ  ｒａｃｅ  ｄｅｔｅｃｔｏｒ  ｆｏｒ  ｍｕｌｔｉｔｈｒｅａｄｅｄ  ｐｒｏｇｒａｍｓ」（ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  Ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ（ＴＯＣＳ）ｖｏｌ  １５，  ｉｓｓｕｅ  ４，  Ｎｏｖｅｍｂｅｒ  １９９７  ｐａｇｅｓ  ３９１  −  ４１１  １９９７  Ｓａｖａｇｅ  ｅｔ  ａｌ）に記載されたＥｒａｓｅｒシステムが挙げられる。Ｅｒａｓｅｒシステムは、あらゆる共有メモリ参照を監視し、ロック動作が統一して実現されていることを検証するために、監視しているプログラムを変更する。このようなランタイム変更に関して、例えば、２つの問題がある。１つ目は、実質的な速度低下を引き起こす可能性がある（Ｅｒａｓｅｒは、典型的には、システムの速度を１０倍〜３０倍低下させる）ため、リアルタイムシステムには適用できないことであって、２つ目は、ソフトウェアを変更するため、プログラム不可能なアクセラレータ（例えば、ＤＭＡコントローラ）、または監視コードを表現するための命令セットが十分に豊富ではないアクセラレータ、あるいは実用的または法的な理由でコードが変更できないアクセラレータとのやり取りによって引き起こされる問題を検出するために使用することができないことである。
【０００７】
レース条件を確認する別の方法は、静的レース検出機構によるものであって、例えば、「ＨＰ  Ｌａｂｓ  Ｔｅｃｈ  ｒｅｐｏｒｔｓ  ＳＲＣ−ＲＲ−１５９  ｈｔｔｐ：／／ｗｗｗ．ｈｐｌ．ｈｐ．ｃｏｍ／ｔｅｃｈｒｅｐｏｒｔｓ／ｃｏｍｐａｑ−ＤＥＣ／ＳＲＣ−ＲＲ−１５９．ＨＴＭＬ」に記載されたＤｅｔｌｅｆｓらの「拡張静的確認法」（ＥＳＣ）および「“Ｃｈｅｃｋｉｎｇ  Ｓｙｓｔｅｍ  Ｒｕｌｅｓ  Ｕｓｉｎｇ  Ｓｙｓｔｅｍ−Ｓｐｅｃｉｆｉｃ，  Ｐｒｏｇｒａｍｍｅｒ−Ｗｒｉｔｔｅｎ  Ｃｏｍｐｉｌｅｒ  Ｅｘｔｅｎｓｉｏｎｓ”  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ４ｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ」に記載されたＥｎｇｅｌｓらのＭＣシステムが挙げられる。
【０００８】
これらの静的手段は、両方とも、プログラムの静的分析を実行することによって働き、プログラムにおける殆どのレース条件を検出することを目的にするが、それらが存在しないことを証明することは目的にしていない。ＭＣは、ロックを取得および解除する時に、プログラマが、確立された（手動に検証された）記述の書き方に従っていることを確認することによって働くが、ＥＳＣは、プログラムに関してより深い論理を実行し、例えば、配列の限界を超えて書き込むような問題も検出できる。静的分析は、動的検出に関わるオーバヘッドを回避するが、動的検出が捉え得るレース条件の一部を見つけることができない。加えて、静的分析ツールは、概して、ロック方式の限られたセットにしか対応せず、異なるロック方式が使用される場合、確認することができない（または、多くの誤検出を報告する）。
【０００９】
処理システムをプロファイリングし、その性能の表示を提供するために利用可能な多くのツールが存在する。例えば、多くのオペレーティングシステムは、各ＣＰＵがどれくらいビジー状態であるか、どのくらいのメモリが使用されているか、および時間によってその数がどのように変化するかを示すグラフを生成するツールを有する。
【００１０】
これらプロファイリングツールは、システムハードウェアによって提供される性能カウンタに依存することができる。例えば、最新のプロセッサは、実行される命令の数またはキャッシュミスの数等のイベントをカウントすることができる。これらカウンタは、典型的には、２つのモードで使用される。一方のモード（「ワンショットモード」と呼ぶ）では、プログラマ（または、ツール）は、プログラムを変更し、タスクの開始時にカウンタを起動し、タスクの終了時にカウンタの値を読み込む。本値は、ユーザに提示されるか、または後でユーザに提示するために保存される。他方のモード（「周期的サンプリング」と呼ぶ）では、周期的インタラプトが、ライブラリをトリガし、後の試験のために、性能カウンタおよびストリーム値をストレージに読み出す。これらは、例えば、グラフとして表示されてもよい。
【００１１】
いずれの場合も、プロセッサは、最新のカウンタ値を読み込むことが必要とされる。本要件は、プロセスを侵襲性にする（測定動作によって、結果に影響を及ぼす場合がある）。また、性能カウンタの読み出しに関与するプロセッサにオーバヘッドを課し、最終的に、測定が為され得る粒度と、可能性として、精度をも制限する。
【００１２】
ワンショットモードと比較して、「周期的サンプリング」モードにおいて性能カウンタを使用することは、監視を所望するタスクが、サンプリング周期の途中から開始し、別のサンプリング周期で終了し、不正確な性能係数をもたらす場合があるという不利点を有する。本不精度は、サンプリング周期を短縮することによって減少し得るが、これは、侵襲性の程度を増加させるだけでなく、ある程度の不精度が存在する限り、イベントが、確実に、あるタスクの間に生じた、またはそのタスクの間に生じなかったと断言することができない。
【００１３】
性能カウンタの周期的サンプリングに関する変形例は、ランダムサンプリングである。これは、サンプリング周期が、測定しているイベントの頻度の正確な倍数である場合に生じる一部の問題を解決するが、不精度を低減させることはない。
【００１４】
精度および侵襲性の問題は、ハードウェアを提供し、全着目イベントをトレースすることによって対処可能である。オフチップツールは、本トレースを集計し、非常に詳細かつ正確なグラフを生成することができる。そのようなアプローチの不利点は、イベントが高頻度で生じる場合、トレースを生成するために大量の帯域幅が必要とされ、それを保存するために大量のストレージが必要とされ、さらにそれを集計するために大量の処理が必要とされることである。これは、イベントを個別に試験することを所望する場合、有用であるが、性能プロファイリングまたはレース条件の検出には過度となる。
【００１５】
非常に大量のデータを収集する必要なく、したがって、出力および処理する必要なく、リアルタイムで複雑なシステムを分析可能であることが望ましいであろう。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】「Ｅｒａｓｅｒ：  ａ  ｄｙｎａｍｉｃ  ｄａｔａ  ｒａｃｅ  ｄｅｔｅｃｔｏｒ  ｆｏｒ  ｍｕｌｔｉｔｈｒｅａｄｅｄ  ｐｒｏｇｒａｍｓ」，ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  Ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ（ＴＯＣＳ）ｖｏｌ  １５，  ｉｓｓｕｅ  ４，  Ｎｏｖｅｍｂｅｒ  １９９７  ｐａｇｅｓ  ３９１  −  ４１１  １９９７  Ｓａｖａｇｅ  ｅｔ  ａｌ
【非特許文献２】ＨＰ  Ｌａｂｓ  Ｔｅｃｈ  ｒｅｐｏｒｔｓ  ＳＲＣ−ＲＲ−１５９  ｈｔｔｐ：／／ｗｗｗ．ｈｐｌ．ｈｐ．ｃｏｍ／ｔｅｃｈｒｅｐｏｒｔｓ／ｃｏｍｐａｑ−ＤＥＣ／ＳＲＣ−ＲＲ−１５９．ＨＴＭＬ
【非特許文献３】“Ｃｈｅｃｋｉｎｇ  Ｓｙｓｔｅｍ  Ｒｕｌｅｓ  Ｕｓｉｎｇ  Ｓｙｓｔｅｍ−Ｓｐｅｃｉｆｉｃ，  Ｐｒｏｇｒａｍｍｅｒ−Ｗｒｉｔｔｅｎ  Ｃｏｍｐｉｌｅｒ  Ｅｘｔｅｎｓｉｏｎｓ”  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ４ｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ
【発明の概要】
【課題を解決するための手段】
【００１７】
第１の態様から見ると、本発明は、開始と終了イベントとの間に生じるデータ処理装置内の複数のアドレス指定可能場所へのアクセスを監視するための監視回路を含む、データ処理装置であって、前記監視回路は、監視される前記複数のアドレス指定可能場所を識別するデータを保存するためのアドレス場所保存と、監視データ保存とを含み、前記監視回路は、前記開始イベントの検出に応答して、前記複数のアドレス指定可能場所へのアクセスを検出し、前記監視データ保存内の前記検出されたアクセスの集計に関連する監視データを保存し、前記監視回路は、前記終了イベントの検出に応答して、前記監視データの収集を停止し、前記監視回路は、消去イベントの検出に応答して、前記保存された監視データを出力し、前記監視データ保存を消去する、データ処理装置を提供する。
【００１８】
本発明は、従来のトレース方法を使用してデータ処理システムのアクティビティをトレースする際、トレースストリームが、システム内の段階的アクティビティを表すデータを含むように生成され、オフチップツールがそれを集計可能なように、本データが出力されることを認識する。しかしながら、これの不利点は、アクティビティが、高頻度で生じると、トレースを生成するために大量の帯域幅と、それを保存するために大量のストレージと、それを集計するために大量の処理とを必要とする可能性があることである。益々複雑化するシステムに伴って、本問題はさらに悪化しつつある。本発明は、開始および終了イベントを使用する際に監視されるアクセスを限度として制限し、さらに空間的に特定のアドレス場所に制限することによって、本問題に対処する。さらに、システムは、次いで、検出されたアクセスの集計の収集および出力のみ行い、その後、監視データ保存をクリアする。
【００１９】
このように、監視データのセットを、特定のイベント間に特定のアドレス範囲で生じるアクセスと関連して生成することができる。したがって、生成される監視データは、時間的および空間的の両方を対象にすることができる。さらに、生じるアクセスの集計のみ出力することによって、データ出力量の帯域幅は、大幅に低減することができる。集計の種類を適切に選択することによって、出力される減少データが、有用データであることを確実にするのに役立ち得る。
【００２０】
一部の実施形態では、前記開始イベント、前記終了イベント、および前記消去イベントは、同一イベントであって、前記同一イベントに応答し、前記監視回路は、監視を停止し、前記監視データを出力し、前記監視データ保存を消去し、前記複数のアドレス指定可能場所へのアクセスの検出を再び開始する。
【００２１】
同一イベントが、データの開始、終了、および消去をトリガする場合、事実上、システムの継続監視は、各イベント時に出力されるデータによって達成される。したがって、監視データは、セグメント化され、異なる時間セグメントのアクセスデータの集計が収集される。これらは、２つのより広く離間したイベント間の情報が必要とされる場合、ともに組み合わせ可能である。
【００２２】
他の実施形態では、開始、終了、および消去イベントは、異なるイベントであってもよく、あるいは代替として、開始イベントが、消去イベントでもあって、したがって、消去をトリガする、または終了イベントが消去イベントでもあって、データの出力およびデータ保存の消去の両方をトリガしてもよい。
【００２３】
一部の実施形態では、前記開始、終了、および消去イベントはそれぞれ、タスクの開始、タスクの終了、メモリバリア命令、所定時間経過、カウンタオーバーフロー、カウンタ閾値到達、制御レジスタへの書き込み、特定の領域内のアドレスへのアクセス、インタラプト、ブレークポイント発生、送信イベント命令、イベント命令待機、ロード排他命令（例えば、ＡＲＭプロセッサにおいて見られるように）、保存排他命令（例えば、ＡＲＭプロセッサにおいて見られるように）、アトミックメモリ動作（例えば、アトミック比較およびスワップ命令）、バス上のメモリバリア表示、バス上のロード排他表示、バス上の保存排他表示、バス上のアトミックメモリアクセス表示、およびタイマのうちの１つを含む。
【００２４】
データの出力、データ保存の消去、および検出の再開をトリガ可能な異なるイベントは、複数のものであり得る。事実上、その間のアクセスを監視するのに役立つであろう任意のイベントが使用可能である。実施例として、タスクの開始および終了であって、そのタスク内で生じるアクセスを監視することが望ましい場合に、メモリへの全保留アクセスがその時点で実行されていることを確実にするために使用される命令である、メモリバリア命令が挙げられる。代替として、イベントは、所定時間経過、あるいはカウンタオーバーフローまたは閾値到達であり得る。後者の２つは、カウンタが監視回路内で使用される場合、そのカウンタ内に保存されたデータの損失を回避するため、特に有用である。代替として、イベントは、制御レジスタへの書き込みを含んでもよい。本実施例は、プロセッサ内の種々のイベントの制御レジスタへの値の書き込みをトリガすることが、ユーザによって選択可能であるという点において、ユーザの制御下でトリガを可能にする。別の実施形態では、イベントは、特定の領域内の特定のアドレスのアクセスであってもよく、本特定の領域は、メモリ領域のためのロックが保存されるため、そこへのアクセスは、メモリ範囲がロックまたはロック解除されることを示し得る、あるいはデバイスが起動される領域であってもよく、その場合、そこへのアクセスは、デバイスが起動されることを示す。代替として、イベントは、インタラプトまたはブレークポイント発生であり得る。
【００２５】
一部の実施形態では、前記監視データ出力は、前記開始、消去、および終了イベントのうちの少なくとも１つを識別する信号をさらに含む。
【００２６】
開始イベント、終了イベント、または消去イベントは、複数の信号によってトリガされる場合がある。その場合、監視データに関連するさらなる情報を提供し、より容易な分析を可能にするため、監視データを伴う信号の表示を送信することが望ましい場合がある。
【００２７】
一部の実施形態では、前記監視データは、各アクセス時間を示すタイムスタンプデータをさらに含む。
【００２８】
監視の際に有用なさらなるデータは、タイムスタンプデータであるが、どのイベントが、どの時点で生じたかを知ることによって、これらイベントの順番を正確に推測可能であるので、しばしば、有用である。プロセッサが、そのアクセスを伴うタイムスタンプデータを含む場合、本データは、監視のために有用であって、一部の実施形態では、監視データとともに保存される。
【００２９】
一部の実施形態では、前記検出されたアクセスの前記集計は、ハッシュ関数によって計算されるアクセスのフィンガープリントを含む一方、他の実施形態では、前記検出されたアクセスの前記集計は、前記アクセスのカウントを含む。
【００３０】
検出されたアクセスは、より少ないデータの出力を必要とするが、データは依然として有用であるように、データの組み合わせを伴う、いくつもの方法で集計されてもよい。したがって、ハッシュ関数は、最新アクセス情報を組み合わせて使用可能である。値のシーケンスのハッシュは、２つのシーケンスのハッシュが、同一である場合、シーケンスもまた、同一である可能性が非常に高いように、選択可能である。すなわち、ハッシュ関数を使用して、値のシーケンスのための「署名」を生成することができる。値のシーケンスのハッシュを計算するステップは、チップ上のデータ集計値の良い例である。すなわち、値の未加工シーケンスは大きく（トレースのための高帯域幅および保存のための大空間を必要とする）、操作しにくい（シーケンスは、可変長を有し得、比較のために多くの動作を必要とする）が、集計は、メモリの１つまたは２つのデータワードにちょうど適合し、少数の動作のみを使用して比較することができる。代替として、データアクセス回数のカウントが、有用である場合があって、カウンタを使用して、この数をカウントすることができ、各個々のアクセスに関する情報よりも、これを出力し得る。
【００３１】
一部の実施形態では、前記監視回路は、前記複数のアドレス指定可能場所へのアクセス回数をカウントするためのカウンタを含む。
【００３２】
アクセスのカウントが必要な場合、アクセスをカウントするために、カウンタを監視回路内で使用することができる。そのようなカウンタは、ラップアラウンドカウンタまたは飽和カウンタであり得る。飽和カウンタは、イベント間でオーバーフローする場合、ラップアラウンドカウンタによって生じ得る、完全に誤った情報が出力される危険性を回避するという利点を有する。一部の実施形態では、カウンタは、１ビット飽和カウンタであり得、これは、アクセス回数よりも、特定のアクセスが生じたかどうかを検出することが重要である場合、使用され得る。
【００３３】
一部の実施形態では、前記複数のアドレス指定可能場所は、ある範囲のアドレス、複数の範囲のアドレス、一連の特定のアドレス、およびある範囲のアドレスの逆数のうちの少なくとも１つを含む。
【００３４】
複数のアドレス指定可能場所は、ある範囲のアドレスまたは複数のある範囲のアドレスであってもよく、あるいは異なる方法で選択される特定のセットのアドレスであってもよい。代替として、特定の範囲外の任意のアドレスであるように、ある範囲のアドレスの逆数であり得る。後者は、特定のエンティティまたはプロセスが、その許可された範囲外のアドレスにアクセスしているかどうか確認するために望ましい場合、有用であり得る。
【００３５】
一部の実施形態では、前記複数のアドレス指定可能場所は、複数の範囲のアドレスを含み、前記検出されたアクセスの前記集計は、前記アクセスが為された前記複数のアドレス範囲の表示を含む。
【００３６】
アクセスが為される複数の範囲のアドレスは、各範囲へのアクセスに関連する情報が、別々に保存されるように、またはいくつかの範囲へのアクセスが、必要とされる情報である場合、ともに収集され得るように、個々に監視されてもよい。
【００３７】
一部の実施形態では、前記検出されたアクセスの前記集計は、アクセスの種類を示すデータ、前記アクセスを為すエンティティを識別する識別子、前記エンティティのうちの少なくとも１つによる各種類の前記アクセス回数を示すデータ、および前記アクセスが為された複数のアドレス範囲の表示のうちの少なくとも１つをさらに含む。
【００３８】
アクセス回数に加え、集計はまた、アクセスの種類と、アクセスを為すエンティティを識別する識別子とを含んでもよい。エンティティは、ある種のマスタ、例えば、プロセッサまたはアクセラレータ等、いくつもあってもよい。また、集計は、アクセスの種類に関する情報、例えば、読み出しまたは書き込みであるかを含んでもよい。アクセスのカウントは、アクセスの総回数のカウントであってもよく、または異なるエンティティからの異なる種類のアクセスが、別々にカウントされてもよい。性能またはエラー検出のいずれかの理由のために、処理装置を分析する際、各エンティティによる特定のアドレスまたはアドレス範囲への２つのイベント間に生じるアクセス回数および種類に関する情報は、明確に有用情報であり、したがって、このように情報を集計するステップは、データ出力を減少させる一方、その値の多くを保持する。
【００３９】
一部の実施形態では、前記監視回路は、複数のカウンタを含み、各カウンタは、前記エンティティのうちの１つ以上、前記複数のアドレス範囲のうちの１つ以上、および１つのデータアクセスの種類のうちの少なくとも１つに関連する。
【００４０】
エンティティがアクセスを実行したデータを記録する方法の１つは、各エンティティに関連するカウンタを有し、エンティティが特定のアクセスを為す度に、それをインクリメントすることである。各エンティティに対しカウンタが存在することが可能であり、あるいは２つのエンティティまたはいくつかのエンティティによって為されるアクセスをともにカウントすることが望ましい可能性があり、もしくは各エンティティに対しいくつかのカウンタが存在し、それぞれ、異なる種類のアクセスをカウントすることが可能である。また、カウンタは、異なるアドレス範囲のために使用可能である。
【００４１】
一部の実施形態では、前記監視回路は、前記データ処理装置内のバスポートに連結され、前記エンティティは、複数のバスマスタを含む。
【００４２】
データ処理装置は、いくつもの方法で配列可能であるが、監視回路は、バスポートに連結されることが望ましい場合があって、これは、バスマスタポートまたはバススレーブポートであってもよく、したがって、監視回路は、送信されたマスタを示すバスマスタポート上の信号を視認することによって、どのエンティティが、どのアクセスを送信したのかを判断することができる。
【００４３】
監視データ保存は、いくつもの方法で形成される可能性があるが、一部の実施形態では、前記監視データ保存は、キャッシュを含む。
【００４４】
一部の実施形態では、前記検出されたアクセスの前記集計は、アクセスの種類、前記アクセスを為すエンティティを識別する識別子、および前記エンティティのうちの少なくとも１つによる各種類の前記アクセス回数を示すデータのうちの少なくとも１つを示すデータ、および前記アクセスが為された複数のアドレス範囲の表示をさらに含み、前記キャッシュは、複数のセットの監視データを保存するように構成され、各セットは、前記エンティティのうちの１つ以上、データアクセスの種類の１つ、および前記複数のアドレス範囲のうちの１つ以上のうちの少なくとも１つに関連する。
【００４５】
キャッシュは、複数のセットの監視データを効率的に保存し、それによって、多くの個々のデータ保存、例えば、個々のカウンタの必要性を回避することができる。これは、情報を保存する効率的方法であり得る。
【００４６】
一部の実施形態では、前記監視回路は、フルになった前記キャッシュの検出および検出されたアクセスに応答して、前記複数のセットの監視データのうちの１つを消去するための論理を含む。
【００４７】
キャッシュを使用して、情報を保存する利点の１つは、検出されるアクセスの多くが生じない場合があることである。そのような場合、ストレージ空間は、キャッシュ内で使用されず、キャッシュは、生じたアクセスのカウントの保存のみを行う。アクセスが生じ、それを保存するため空間がもはや存在しない場合、一部の実施形態では、異なるアクセスに関連して収集された前のデータが出力され、そのストレージ空間を使用して、新しく検出されたアクセスを保存することができる。
【００４８】
一部の実施形態では、前記データ処理装置は、複数の処理要素と、複数の監視回路とを含む。
【００４９】
本明細書で使用される監視回路を使用して、いくつかの処理要素、例えば、プロセッサ、バスマスタ、およびＤＭＡコントローラによる複雑なデータ処理装置を監視することができる。これを行うため、単一監視回路が、複数のプロセッサによるアクセスの検出と併用されてもよく、あるいは複数の監視回路を使用して、それぞれ、１つまたはいくつかのプロセッサを監視してもよい。これら複数の回路は、異なる開始および終了イベントによってトリガされてもよく、または同一イベントによってトリガされてもよい。
【００５０】
一部の実施形態では、前記データ処理装置は、イベント構成保存をさらに含み、前記データ処理装置は、所定の命令に応答して、前記イベント構成保存に書き込むように適合され、前記監視回路は、前記イベント構成保存に保存された値に応答して、前記複数のアドレス指定可能場所の監視を開始するか、前記監視データを出力するか、または前記監視データを消去する。
【００５１】
監視回路は、イベント構成保存内に保存された値に応答して、監視を開始、監視を停止、監視データを出力、および消去してもよい。そのような場合、データ処理装置は、特定の命令に応答して、イベント構成保存に書き込み、したがって、監視の開始および停止は、コード内に挿入される命令によって制御され、データ処理装置によって処理することができる。
【００５２】
一部の実施形態では、データ処理装置は、前記複数のアドレス指定可能場所を識別するデータを保存するために、前記アドレス場所保存を更新するためのデータ受信用データ入力を含む。
【００５３】
複数のアドレス指定可能場所を識別するデータを保存するためのアドレス場所保存を更新し、装置が異なるアドレスを監視するように構成可能である。これは、恐らく、デバッガを介して、ユーザによって入力されるデータ入力における信号に応答して、為されてもよい。代替として、プロセッサからの信号によって更新されてもよい。
【００５４】
一部の実施形態では、前記データ処理装置は、前記消去イベントに応答して、前記監視データを出力するために、前記データ処理装置からの出力をさらに含み、前記消去イベントは、前記データ処理装置によって生成される内部イベントである。
【００５５】
監視データは、例えば、トレースポートから監視データをストリーミングすることによって、消去イベントに応答して、データ処理装置から直接出力されてもよい。消去イベントは、データ処理装置によって生成される内部イベントであり、したがって、事実上、装置は、監視データに対する外部要求に反応するよりも、監視データを自発的に出力する。代替として、他の実施形態では、後でアクセスおよび分析されるデータ処理装置上のメモリ内に保存されてもよい。
【００５６】
本発明の第２の態様によると、データ処理装置を監視するための方法であって、
開始イベントを検出するステップと、
複数のアドレス指定可能場所へのアクセスを検出し、監視データ保存内の前記検出されたアクセスの集計に関連する監視データを保存するステップと、
終了イベントを検出するステップと、
前記保存された監視データを出力するステップと、
前記監視データ保存をクリアするステップと、
を複数回実行するステップを含む、方法が提供される。
【００５７】
本発明の第３の態様によると、本発明の第１の態様に記載のデータ処理装置によって生成される監視データを分析するための方法であって、
複数の開始イベントと終了イベントとの間に生成される複数のアドレス場所に為されるアクセスの集計に関連する複数のセットの監視データを受信するステップと、
異なる監視データのセットから監視データを結合し、より広く離間した開始および終了イベントに関連する新しいセットの監視データを生成するステップと、
前記開始および終了イベントを識別するデータと、前記複数のアドレス場所と関連させて、前記監視データを分析するステップと、
を含む、方法が提供される。
【００５８】
本発明の第１の態様のデータ処理装置によって出力される監視データは、分析される必要がある。本監視データは、複数のセットの監視データとして生成され、各セットは、特定のイベント間に生じるアクセスに関連する。データを分析する際、これらセットのいくつかを組み合わせ、より広く離間した開始および終了イベントに関連する新しいセットの監視データを生成する。このように本監視データを組み合わせることによって、監視セットの収集を直接トリガしたイベント間と、異なる監視セットで開始および終了した他のイベント間との両方に生じるアクセスが、監視情報として使用可能なように、所望に応じて、分析することが可能となる。
【００５９】
一部の実施形態では、前記監視データは、前記アクセスを実行したエンティティの表示をさらに含み、前記分析ステップは、エンティティが、前記エンティティの許可された範囲外のアドレスにアクセスしているかどうか判断するステップを含む。
【００６０】
監視される適切なアドレス範囲の選択と、アクセスを為すエンティティ間の差別化とによって、監視データを使用して、特定のエンティティが、許可された範囲外のアドレス範囲へのアクセスを実行したかどうかを判断することができる。これは、有用情報であって、システム内の故障が存在し得る場所を示す。
【００６１】
代替として、他の実施形態では、前記監視データは、前記アクセスを実行したエンティティの表示をさらに含み、前記分析ステップは、異なるエンティティが、前記セットの監視データのうちの１つの内の同一アドレス範囲に書き込みおよび読み出しを実行したかどうかを判断するステップを含む。
【００６２】
また、２つのイベント間の異なるエンティティからの同一アドレス範囲への異なる読み出しおよび書き込みのアクセスを分析するステップは、レース条件が存在し得る場所を示すことができる。例えば、エンティティがタスクを開始する時、またはエンティティがタスクを終了する時、前記同一イベントがトリガされ、前記同一アドレス範囲が、ある時に、１つのタスクによって、排他的にアクセスされるべき変数に対応する場合、一方のエンティティが、非ゼロ回数のアドレス範囲への書き込みを実行し、他方のエンティティが、非ゼロ回数のアドレス範囲への読み出しまたは書き込みを実行する場合のエラーである。タスクは、本出願においてはプロセスと同義語であることに留意されたい。
【００６３】
代替として、他の実施形態では、監視データは、システム性能の表示として使用可能である。そのような実施形態では、前記分析ステップは、前記イベント間の時間毎にアクセス回数を分割することによって、異なるイベント間の前記データ処理装置の性能を判断するステップを含む。
【００６４】
本発明の第４の態様は、データプロセッサ上で起動される場合、前記データプロセッサを制御し、本発明の第３の態様に記載の方法のステップを実行するように動作可能な、コンピュータプログラム製品を提供する。
【００６５】
本発明の上述および他の目的、特長、ならびに利点は、添付の図面を参照して熟読される例証的実施形態の以下の詳細な説明から明白となるであろう。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態による、監視回路を伴うデータ処理装置を示す。
【図２Ａ】本発明の実施形態による、メモリウォッチユニットと、監視集計ユニットとを伴うデータ処理装置を示す。
【図２Ｂ】本発明の実施形態による、メモリウォッチユニットと、対応する監視集計ユニットとを伴うデータ処理装置を示す。
【図３】本発明のさらなる実施形態による、データ処理装置を示す。
【図４】異なる開始および終了イベントを有する異なるプロセスを図式的に示す。
【図５】本発明の実施形態による、監視回路を示す。
【図６】本発明の実施形態による、監視データを生成する方法を示す。
【図７】本発明の実施形態による、監視データを分析する方法を図示するフロー図を示す。
【発明を実施するための形態】
【００６７】
図１は、メモリ３０をプロセッサ４０とＤＭＡ５０とに接続するバス２０を監視するための監視回路１０を含む、データ処理装置５を示す。
【００６８】
データアクセスは、プロセッサ４０およびＤＭＡ５０から、バス２０に沿って、メモリ３０からデータの読み出しと、そこへのデータの書き込みとを要求し、監視回路１０によって監視される。
【００６９】
本実施形態では、監視回路１０は、特定のアドレス範囲へのアクセスを監視するように構成され、特定のアドレス範囲は、データ保存１２内に保存された情報によって識別される。データ保存１２は、入力６０を介して、デバッガを使用して、ユーザによって更新され、したがって、監視回路は、異なるアドレス範囲を監視するように再構成可能である。
【００７０】
監視回路１０は、特定の「開始」イベントに応答して、バスからの監視データの収集を開始する。本実施形態では、収集される監視データは、指定アドレス範囲内のアドレスへの検出されたアクセス要求である。これらは、監視回路１０内の「インクリメントカウンタ」信号をトリガし、これは、回路内のカウンタ１４、１６のうちの１つに送信される。読み出しが検出される場合、信号は、読み出しカウンタ１４に送信され、書き込みの検出は、信号が書き込みカウンタ１６に送信されるようにトリガする。したがって、カウンタ１４は、検出された読み出しをカウントし、カウンタ１６は、検出された書き込みをカウントする。本実施形態では、簡潔にするために、２つのカウンタのみ示されるが、さらに多くのカウンタが存在し得、異なるエンティティからの異なるアドレス範囲の読み出しおよび書き込みがカウントされ得るように、それぞれ、恐らく、アクセスを要求する異なるアドレス範囲および／またはエンティティに関連することが、当業者には明白であろう。
【００７１】
本実施形態では、さらなるイベントが、監視回路をトリガし、この場合、カウンタ１４および１６内の値である、その監視データを出力する。監視データは、出力７を介して、分析論理１３０に出力され、データが分析される。この後、カウンタはクリアされ、特定の「開始」イベントが再び検出されると、カウントを再開する。
【００７２】
監視の開始、値の出力、およびカウンタの消去をトリガするイベントは、いくつもあり得るが、本実施形態では、プロセッサによって実行されるメモリ転送またはメモリバリア命令のＤＭＡの開始あるいは終了のいずれかの検出である。メモリバリア命令は、任意の保留メモリアクセスが、後続の命令が実行される前に実行されることを確実するために使用される命令である。したがって、メモリバリア命令に応答して、指定メモリへの任意の保留読み出しまたは書き込みが実行されるであろう。したがって、これら命令は、この時点で、全保留読み出しまたは書き込みが実行されていることが明白であるため、監視データの出力をトリガするために使用される場合、有用であり得る。したがって、プロセッサ４０は、メモリ転送を開始するようにＤＭＡ５０に命令し、開始命令は、バスに沿って進行し、監視回路１０によって検出される。メモリ転送が完了すると、ＤＭＡ５０は、インタラプトによって、プロセッサ４０にこれを示してもよい。これは、バスに沿って送信されず、したがって、本信号は、監視回路のための終了イベントであるため、監視回路１０に送るための別個のチャネルを必要とする。本実施形態では、プロセッサからＤＭＡへの開始信号は、開始イベントとして作用するが、しかしながら、一部の実施形態では、ＤＭＡは、プロセッサ４０からの開始メモリ転送要求に応答して、すぐにメモリ転送を開始しない場合があることに留意されたい。そのような場合、ＤＭＡは、監視回路１０へのさらなるラインを有してもよく、要求されたメモリ転送の実行を実際に開始すると、それに沿って、信号を送信可能であって、代替として、監視回路は、バス上のメモリアクセス要求を検出してもよく、本検出は、開始イベントとして作用し得る。
【００７３】
本実施形態では、カウンタ１２および１４は、飽和カウンタである。他の実施形態では、ラップアラウンドカウンタが使用されてもよいが、但し、ラップアラウンドする可能性がないように、十分大きい必要がある。他の実施形態では、それらのアクセスの回数を検出するよりも、特定のアクセスが生じたかどうかを単に検出することが望ましい場合、１ビット飽和カウンタが使用され得る。
【００７４】
本実施形態では、データ保存１２内に保存されたアドレス場所識別子は、ある範囲のアドレスを識別するが、他の実施形態では、複数の範囲を識別し得る。代替として、これは、整合よりも非整合アドレスによってトリガされるコンパレータとともに使用され、特定の範囲外の任意のアドレスを識別することができる。これは、プロセスのための既知の許可された範囲が存在し、本範囲外の場所にアクセスしていないことを確認することが望ましい場合、有用であり得る。したがって、本システムは、異なる指定されたものを監視するためにいくつもの異なる方法で設計することが可能であるが、集計された本データを出力するために、高帯域幅を必要としないことが分かる。
【００７５】
図２Ａは、代替実施形態による、データ処理装置５を示す。本実施形態では、いくつかの監視回路またはメモリウォッチユニット７０ａ、ｂ、およびｃが存在する。メモリウォッチユニット７０ａは、プロセッサ４２によって為されるアクセスを監視する一方、メモリウォッチユニット７０ｂは、プロセッサ４４によって為されるアクセスを監視する。メモリウォッチユニット７０ｃは、データ保存４６に為されるアクセスを監視する。これら個々のメモリウォッチユニットは、指定された特定のアドレス範囲内のアクセスを監視し、検出されたアクセスを識別する中央集計ユニット７２に信号を送信する。集計ユニット７２は、異なるメモリウォッチユニットからの情報を保存するための複数のデータ保存を有する。これらは、特定のメモリウォッチユニットからの特定の種類のアクセス回数をカウントするカウンタを含んでもよく、またはアクセスが生じた時間を示すアクセス信号とともに受信されるタイムスタンプ情報を保存するためのデータ保存を含んでもよく、あるいは検出されるアクセスのハッシュ関数を生成および保存するためのハッシュ関数ジェネレータを含んでもよい。加えて、そのようなイベントが、メモリウォッチユニットのいずれかによって監視される場合、競合による失速の回数を記録してもよい。また、集計ユニット７２は、消去信号を受信するための入力を含む。本実施形態では、本消去信号は、インタラプトに応答して生成され、「開始」、「終了」、および「消去」イベントとして作用し、異なるカウンタおよびデータ保存内に保存されたデータをメモリ８０に出力し、消去またはクリアし、異なるメモリウォッチユニット７０ａ、７０ｂ、７０ｃから再び情報を収集させる。したがって、事実上、インタラプトは、特定のセットの監視を終了し、データを出力し、データ保存を消去し、それによって、新しいセットの監視を開始する。インタラプトは、バスに沿って進行しないため、インタラプトは、プロセッサ４２から集計ユニット７２に別個に送信される必要がある。
【００７６】
使用され得る例示的ハッシュ関数ジェネレータは、周期的冗長検査（ＣＲＣ）関数を使用してもよく、シーケンスの集計は、データシーケンスのＣＲＣと、シーケンス長とから構成されるであろう。２例は、以下において特に興味深い。
ａ）タスクによってアクセスされるアドレスシーケンスは、しばしば、そのタスクを実行する度に同一であって、したがって、タスク実行のアドレスシーケンスのハッシュは、ｉ）システム内の全タスクのアドレスアクセスのハッシュと比較することによって、タスクを識別する、またはｉｉ）アドレスシーケンスのハッシュをタスク前の実行のアドレスシーケンスのハッシュと比較することによって、タスクが通常と異なって動作していることを認識する、のいずれかの関数の署名として使用可能であって、すなわち、署名が異なる場合、タスクは、異なって動作する。
ｂ）１つのタスクが、別のタスクがメモリからの値のシーケンスを読み出すのと同一順序で、メモリに値のシーケンスを書き込む場合、第１のタスクの出力のハッシュは、第２のタスクへの入力のハッシュと整合する。タスク間のデータの流れと、タスクが、特定の順序で、その変数のうちの１つを書き込む／読み出すこととが既知である場合、本特性を使用して、整合すべきデータの署名を比較することによって、データが、１つのタスクから別のタスクに正確に転送されているかを確認することができる（整合しない場合、例えば、データ転送の際に破損している）。タスクが、メモリの１つの領域から別の領域にデータを単純にコピーする場合、データ読み出しの署名は、データ書き換えと同一であるはずであって、したがって、タスクの入力および出力署名を比較することによって、メモリコピーが正確に実行されたことを確認することができる。
【００７７】
タスク間のデータの流れが既知でない場合、本特性を使用して、１つのタスクの出力が、常に、後のタスクへの入力と同一署名を有する状態を検索することによって、システム内のデータの流れの一部を再構成することができる。
【００７８】
本実施形態では、データ処理装置５の外部に監視データを出力するのではなく、保存されているデータ処理装置内のメモリ８０に送信される。その後、分析のために、後でアクセス可能である。
【００７９】
図２Ｂは、図２Ａと類似実施形態示すが、本実施形態では、各メモリウォッチユニット７０ａおよび７０ｂは、その独自の集計ユニット７２ａおよび７２ｂを有する。これらの集計ユニットは、データの収流を開始および停止し、本収集データを出力し、同一信号に応答して、そのカウンタをクリアする。データは、本実施形態では、出力ポート６０ａおよび６０ｂに出力される。データ出力は、別個に分析可能であって、代替として、出力データの２つのストリームは、その対応する開始／停止／消去イベントを相互に関連付けるソフトウェアを使用して、単一ストリームに統合可能である。
【００８０】
メモリウォッチユニットは、これら実施形態では、指定された特定のアドレス範囲内のアクセスを監視するが、また、特定のアクセスの検出に応答して、例外をトリガするために使用されてもよく、したがって、ウォッチポイントまたはメモリ保護ユニットを実装するために使用可能であることに留意されたい。
【００８１】
図３は、本発明の代替実施形態を示す。本実施形態では、データ処理装置５は、メインバス９０を観察し、マスタＭ１およびＭ２によって、スレーブＳ１およびＳ２に為されるアクセスを監視するメモリウォッチユニット８０を有する。また、アクセスは、異なるバス９２上の他のマスタによって為され、これらは、本バス上のデバイスへのアクセスが要求される場合、バスブリッジ９５を介して、メインバス９０に送信されてもよい。ブリッジ９５は、アクセス情報を伝送するが、マスタが生成した信号に関連する情報を除去し、したがって、どのアクセスが、バス９２ａ上のどのマスタからのものであるのかを識別するために、さらなるメモリウォッチユニット８５が使用され、本実施形態では、マスタＭ３のバスマスタポートを監視する。
【００８２】
本実施形態では、各メモリウォッチユニット８０、８５は、その中に指定された特定のアドレス範囲へのアクセスに関連するデータを収集し、同一「終了」イベントに応答して、本データを出力するように作用する。この場合、メモリウォッチユニット８０、８５は、データ処理装置５によって設定される制御レジスタ９７内の特定の値に応答し、これら値は、メモリウォッチユニットに示され、監視を開始または監視を終了する。本制御レジスタ９７内の値は、ユーザによってコード内に挿入される命令に応答して、プロセッサによって設定される。したがって、監視の開始および終了は、ユーザによって制御可能である。
【００８３】
本実施形態では、メモリウォッチユニット８０および８５が、同一イベントに応答する別個のユニットとして示されるが、一部の実施形態では、異なるイベントによってトリガされ、監視を開始および停止することができる。そのような場合、収集される情報は、別個に分析されるが、組み合わせてもよい。
【００８４】
図４は、異なるプロセッサＰ０、Ｐ１、およびＰ２によって実行される本実施形態の異なるプロセスＡ、Ｂ、およびＣの監視が、異なる開始および停止イベントによってトリガされ得る様子を図式的に示す。この場合、開始および停止イベントは、特定のプロセスの開始および停止である。したがって、異なる監視データのセットは、異なるプロセスのために収集される。本情報は、別個に分析可能である、または組み合わせることが可能である。例えば、集計が、開始と停止イベントとの間のアクセス回数である場合、各集計におけるアクセス回数を合計することによって、隣接集計を組み合わせることができる。同様に、集計が、アクセスシーケンスおよびアクセス回数のＣＲＣ（周期的冗長検査関数）である場合、集計は、以下のように組み合わせることができる。
【００８５】
＜ｃｒｃ１，Ｍ＞を第１の集計とする
式中、ｃｒｃ１は、アクセスのＣＲＣであって、Ｍは、ＣＲＣが網羅するビット数である。
＜ｃｒｃ２，Ｎ＞を第２の集計とする
式中、ｃｒｃ２は、アクセスのＣＲＣであって、Ｎは、ＣＲＣが網羅するビット数であって、組み合わせた集計は、＜ＣＲＣ（（ｃｒｃ１＜＜Ｎ）ｘｏｒ  ｃｒｃ２），Ｍ＋Ｎ＞であって、
式中、‘ｃｒｃ１  ＜＜Ｎ’は、Ｎビット左にシフトした最初のｃｒｃであって、
ｘｏｒは、排他的論理和またはその引数を計算し、
ＣＲＣは、その入力データ上のＣＲＣを計算する。
【００８６】
図５は、バス９０を監視するための監視回路１０をより詳細に示す。監視回路１０は、アクセスアドレスと保存された選択アドレス範囲とを比較するためのコンパレータ１０５を含む。本実施形態では、２つの異なる範囲の保存されたアドレスが存在し、コンパレータは、どのアドレス範囲が整合するかに応じて、異なる信号を出力する。範囲の内の１つのアドレスの検出に応答して、アクセスを生成するエンティティはアクセスが読み出しまたは書き込みであるかとともに確認され、本アドレス範囲内のこの種類のエンティティから、この種類のアクセスに対応するキャッシュ１１０内のカウンタ１１０ａが、インクリメントされる。本実施形態では、アドレス範囲、エンティティ、およびアクセスの種類に応じてカウントされるいくつもの異なる種類のアクセスが存在し、したがって、監視回路１０内にいくつものカウンタが存在する。これらカウンタは、本実施形態では、非ゼロカウンタのキャッシュとして実装される。これは、これらカウンタの多くが、長期間ゼロであり得るため行われ、したがって、多くのカウンタを提供するのではなく、非ゼロカウンタのキャッシュが維持され、カウンタがインクリメントされると、本キャッシュに追加される。本実施形態では、新しいカウンタが必要とされるが、キャッシュ内で利用可能な未使用のカウンタがもはや存在しない場合、カウンタの値のうちの１つが出力され、カウンタがクリアされる。出力およびクリアのためのカウンタは、いくつかの方法で選択可能であって、例えば、ラウンドロビンアプローチを使用してもよい。また、いずれのカウンタも指定時間内にフルにならない場合、この時点で、データが、出力１１を通して出力され、カウンタがクリアされるように、終了、開始、および消去イベントとしても作用するタイマが存在する。
【００８７】
本実施形態では、コンパレータ１０５は、アドレスとの整合を見つけることによって、指定範囲内のアクセスを検出する。他の実施形態では、整合の不在を検出することによって、アドレス範囲外のアクセスを検出するために使用可能である。これは、タスクが、特定のアドレス範囲内のアドレスのみにアクセスするはずであること、または、例えば、メモリのロックが保存される特定の範囲にアクセスするはずがないことが既知である場合、有用である場合がある。
【００８８】
各実施形態から異なる要素を組み合わせる異なる実施形態も可能であり得ることが、当業者には明白であるはずである。例えば、いくつかのプロセッサまたはアクセラレータ、例えば、ＤＭＡエンジンなどによるアクセスが、監視される必要がある場合、いくつかの監視回路の使用に適用可能であり得る。これらは、各処理要素のバスマスタポート上またはバスブリッジ上または監視されるメモリに付属のバス上に配置されてもよい。これらは、事実上、アクセスと、必要に応じて、それらが送信されるエンティティと、可能性として、さらなる情報、例えば、タイムスタンプデータとを検出可能な任意の場所に位置付け可能である。
【００８９】
監視の目的が、レース条件を検出することである場合、レースに関与し得る任意の処理要素によって、アクセスを区別することが必要となるであろう。したがって、そのような場合、異なる処理要素間のアクセスは、特定の時間内の同一アドレス範囲への２つの異なる処理要素によるアクセスが、潜在的レース条件として識別可能なように、区別される必要がある。これが必要ない場合、異なる処理要素からのアクセスを区別する必要がない場合があり、特定のバスに沿ったアクセスの単純なカウントだけが必要とされる場合がある。必要性に応じて、異なるものをカウントする異なる監視回路を使用可能である。
【００９０】
特定の検出セットを開始および終了する信号に関して、これらは、監視されるものに応じて、異なり得る。例えば、開始信号は、タスクが処理要素を開始する度に送信され、終了信号は、タスクがその処理要素を完了する度に送信され得る。このように、タスクの処理の際に為されるアクセスを検出することができる。この場合、開始および終了イベント信号は、配線されたアクセラレータからのいくつかの開始／停止信号のうちの論理ＯＲから生成可能である。代替として、関数呼び出しの開始または終了を示すブレークポイントであってもよい。一部の実施形態では、開始および／または終了イベントの性質は、状況に応じて変化してもよく、したがって、収集される監視データとともに保存される。
【００９１】
また、例えば、図３におけるハードウェア等上の制御レジスタに値を書き込むことによって、プロセッサに開始信号を明示的に生成させることが有用である場合がある。これら通知は、ＲＴＯＳ内の任意のプロセッサ間同期プリミティブにおけるコード内に挿入されてもよい。例えば、ロックされるまたは解除される度に、あるいはスレッドブロックがロック待機中の場合、プロセッサ内のコンテキストスイッチに挿入されてもよい。
【００９２】
監視されたアドレス範囲に関して、これらは、監視回路内に保存可能であって、一般に、複数の着目範囲が存在し得、それぞれ、異なる範囲のアドレスへのアクセスが、別個に識別可能なように、それらと関連付けられて保存されたアクセス集計を有してもよい。代替として、ある範囲を組み合わせることによって、本組み合わせられた範囲のアドレスへのアクセスを監視可能とすることができる。代替として、着目アドレスが、特定の範囲内でない場合があって、それらは、何らかの他の方法、例えば、バルーンフィルタ等によって、指定された異なるセットのアドレスであってもよい。
【００９３】
図６は、本発明の実施形態による、監視データを生成する方法を図示するフロー図を示す。開始イベントの検出後、一部の指定アドレス指定可能場所へのアクセスが監視され、検出されたアクセスの集計が、何らかの形式、恐らく、カウンタ内のカウント値として、保存される。これは、終了イベントが検出されるまで継続し、その後すぐに、監視の際に収集された保存データが出力され、監視データ保存が消去される。後続の開始イベントの検出に応じて、再び、プロセスが開始する。
【００９４】
図７は、本発明の実施形態による、監視データを分析する方法を図示するフロー図を示す。本方法では、例えば、図６の方法によって生成される監視データのセットが受信される。これらの一部を互いに組み合わせ、より広く離間したイベント間の新しいセットの監視データを生成する。次いで、データは、少なくとも、開始および終了イベントと、指定アドレス場所とを識別するデータと関連させて分析される。また、さらなるデータが、収集および保存されてもよく、これはまた、分析に使用されてもよい。そのようなデータは、各アクセス時間を示すタイムスタンプデータ、アクセスを実行するエンティティを示すエンティティデータ、アクセスデータの種類、ならびに開始および／または終了イベントの性質を含んでもよい。
【００９５】
本発明の例証的実施形態が、添付の図面を参照して、本明細書において詳細に説明されたが、本発明は、それらの正確な実施形態に制限されるものではなく、種々の変更および修正が、付随の請求項によって定義される本発明の範囲および精神から逸脱することなく、当業者によって為され得ることを理解されたい。
【符号の説明】
【００９６】
５  データ処理装置
７  出力
１０  監視回路
１２  データ保存
１４、１６  カウンタ
２０  バス
３０  メモリ
４０  プロセッサ
５０  ＤＭＡ
６０  入力
１３０  分析論理
【図１】
2010020767.tif 000003
【図２Ａ】
2010020767.tif 000004
【図２Ｂ】
2010020767.tif 000005
【図３】
2010020767.tif 000006
【図４】
2010020767.tif 000007
【図５】
2010020767.tif 000008
【図６】
2010020767.tif 000009
【図７】
2010020767.tif 000010
【外国語明細書】
2010020767.tif 000011
2010020767.tif 000012
2010020767.tif 000013
2010020767.tif 000014
2010020767.tif 000015
2010020767.tif 000016
2010020767.tif 000017
2010020767.tif 000018
2010020767.tif 000019
2010020767.tif 000020
2010020767.tif 000021
2010020767.tif 000022
2010020767.tif 000023
2010020767.tif 000024
2010020767.tif 000025
2010020767.tif 000026
2010020767.tif 000027
2010020767.tif 000028
2010020767.tif 000029
2010020767.tif 000030
2010020767.tif 000031
2010020767.tif 000032
2010020767.tif 000033
2010020767.tif 000034
2010020767.tif 000035
2010020767.tif 000036
2010020767.tif 000037
2010020767.tif 000038
2010020767.tif 000039
2010020767.tif 000040
2010020767.tif 000041
2010020767.tif 000042
2010020767.tif 000043
2010020767.tif 000044
2010020767.tif 000045