(57)【要約】【課題】プロセッサ内に専用のハードウェアを設けることなく、プロセッサで発生した事象を解析可能な構成を得る。【解決手段】プロセッサ１００に組み込まれたＰＭ機構４０がプロセッサ１００によるプログラムの実行中に特定の事象が発生したことを検出した場合に、ＰＭ割込みハンドラ４００は、ＰＭ機構４０からの割込みにより起動され、特定の事象の発生の際のプロセッサ１００の状態を示すプロセッサ状態情報を受信する。アドレス特定部６００は、プログラム８００とプロセッサ状態情報とを用いて、特定の事象を発生させたメモリアドレスを特定する。【選択図】図１
2015162003.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサに組み込まれたパフォーマンスモニター機構が前記プロセッサによるプログラムの実行中に特定の事象が発生したことを検出した場合に、前記パフォーマンスモニター機構からの割込みにより起動され、前記特定の事象の発生の際の前記プロセッサの状態を示すプロセッサ状態情報を受信する割込みハンドラと、
前記プログラムと前記プロセッサ状態情報とを用いて、前記特定の事象を発生させたメモリアドレスを特定するアドレス特定部とを有することを特徴とするプロセッサ管理装置。
【請求項２】
前記割込みハンドラは、
前記パフォーマンスモニター機構が前記プロセッサによるプログラムの実行中に命令キャッシュミスが発生したことを検出した場合に、前記プロセッサ状態情報として、前記命令キャッシュミスの発生の際のプログラムカウンタの値を受信し、
前記アドレス特定部は、
前記プログラムと前記プログラムカウンタの値とを用いて、前記命令キャッシュミスを発生させたメモリアドレスを特定することを特徴とする請求項１に記載のプロセッサ管理装置。
【請求項３】
前記割込みハンドラは、
前記パフォーマンスモニター機構が前記プロセッサによるプログラムの実行中にデータキャッシュミスが発生したことを検出した場合に、前記プロセッサ状態情報として、前記データキャッシュミスの発生の際のプログラムカウンタの値と、前記プログラムの実行に用いられたレジスタに格納されていたメモリアドレスを受信し、
前記アドレス特定部は、
前記プログラムと前記プログラムカウンタの値と前記レジスタに格納されていたメモリアドレスとを用いて、前記データキャッシュミスを発生させたメモリアドレスを特定することを特徴とする請求項１に記載のプロセッサ管理装置。
【請求項４】
前記プロセッサ管理装置は、更に、
割込みの発生頻度を前記パフォーマンスモニター機構に設定するパフォーマンスモニター機構制御部を有することを特徴とする請求項１に記載のプロセッサ管理装置。
【請求項５】
前記パフォーマンスモニター機構制御部は、
前記プロセッサで行われる周期処理のマージンの時間と、前記割込みハンドラの実行時間とに基づき算出された割込みの頻度を、前記パフォーマンスモニター機構に設定することを特徴とする請求項４に記載のプロセッサ管理装置。
【請求項６】
前記パフォーマンスモニター機構制御部は、
前記プロセッサで行われる周期処理での前記特定の事象の発生頻度に基づき算出された割込みの頻度を、前記パフォーマンスモニター機構に設定することを特徴とする請求項４に記載のプロセッサ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
プロセッサで発生した事象を解析する技術に関する。
【背景技術】
【０００２】
従来の組み込みシステムに搭載されているプロセッサでは、ハードウェアの動作状態を解析する機構としてパフォーマンスモニター機構（ＰＭ機構）が組み込まれている。
そして、このＰＭ機構によって命令の実行回数や、キャッシュのミス回数などの事象回数を計測することができ、プログラムの動作解析を行っていた。
組み込みシステムでは、周期処理を繰り返すため、１度発生した事象は別の周期にて再度発生することが多いため、複数周期にわたり事象回数を採取し、これらの情報を基にプログラムの解析を行っていた。
特にキャッシュミスは処理時間に大きな影響を及ぼすため、キャッシュミスしたアドレスなどの詳細な情報が必要であった。
しかし、単純なＰＭ機構では、キャッシュミスしたアドレスなどの詳細情報を採取することが困難であり、プログラムの詳細な解析を行うため、プロセッサ内に専用ハードウェアとして履歴記録部を設け、キャッシュミスしたアドレス情報を得る方法が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２１８３６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のプロセッサにおいてキャッシュミスしたアドレスの詳細情報を得るには、専用のハードウェアとしてプロセッサ内に履歴記録部を設けなければならないという課題があった。
この発明は上記のような課題を解決することを主な目的としており、プロセッサ内の専用のハードウェアを設けることなく、プロセッサで発生した事象を解析可能な構成を得ることを主な目的とする。
【課題を解決するための手段】
【０００５】
本発明に係るプロセッサ管理装置は、
プロセッサに組み込まれたパフォーマンスモニター機構が前記プロセッサによるプログラムの実行中に特定の事象が発生したことを検出した場合に、前記パフォーマンスモニター機構からの割込みにより起動され、前記特定の事象の発生の際の前記プロセッサの状態を示すプロセッサ状態情報を受信する割込みハンドラと、
前記プログラムと前記プロセッサ状態情報とを用いて、前記特定の事象を発生させたメモリアドレスを特定するアドレス特定部とを有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、パフォーマンスモニター機構からの割込みによりプロセッサ状態情報を受信し、受信したプロセッサ状態情報とプログラムとを用いて特定の事象を発生させたメモリアドレスを特定するため、プロセッサ内に専用のハードウェアを設けることなく、プロセッサで発生した事象を解析することができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１に係るプロセッサ及びプロセッサ管理装置の構成例を示す図。
【図２】実施の形態１に係るＰＭ機構制御部の動作例を示すフローチャート図。
【図３】実施の形態１に係るＰＭ割込みハンドラの動作例を示すフローチャート図。
【図４】実施の形態１に係るキャッシュミス履歴記録部の動作例を示す図。
【図５】実施の形態１に係るアドレス特定部の動作例を示す図。
【発明を実施するための形態】
【０００８】
実施の形態１．
以下、図面を参照して、本実施の形態について説明する。
本実施の形態では、プロセッサで発生した事象としてキャッシュミスを例にして説明を行う。
【０００９】
図１は、プロセッサ１００とプロセッサ管理装置７００の構成例を示す。
【００１０】
プロセッサ１００において、１０は、命令の取り出し、デコード、命令の実行、実行結果の格納を行うプロセッサコア部である。
【００１１】
１１は、プロセッサコア部１０からの命令取り出し要求である。
１２は、プロセッサコア部１０からの命令取り出し要求１１が有効なタイミングで参照する命令アドレス他の情報である。
１３は、プロセッサコア部１０に供給される命令コードである。
１４は、プロセッサコア部１０からのオペランドアクセス要求である。
１５は、プロセッサコア部１０からのオペランドアクセス要求１４が有効なタイミングで参照するオペランドアドレス他の情報である。
１６は、プロセッサコア部１０からのライト用オペランドデータまたは、プロセッサコア部１０からのリード要求に対するオペランドデータである。
【００１２】
２０は、プロセッサコア部１０からの命令取り出し要求１１と命令アドレス他の情報１２を受け付け、内部のキャッシュメモリを参照し、取り出した命令コード１３をプロセッサコア部１０に供給する命令キャッシュである。
２１は、プロセッサコア部１０からの命令取り出し要求１１と命令アドレス他の情報１２で命令キャッシュ２０の内部を検索した結果、命令キャッシュ２０に含まれていない場合に、上位キャッシュまたはメモリコントローラ２００に命令取り出しを要求する命令取り出し要求である。
２２は、命令取り出し要求２１が有効なタイミングで参照する命令アドレス他の情報である。
２３は、命令キャッシュに供給される命令コードである。
データキャッシュ３０へのリード要求時には、内部のキャッシュメモリを参照し、取り出したオペランドデータ１６をプロセッサコア部１０に供給する。
【００１３】
３０は、プロセッサコア部１０からのオペランドアクセス要求１４（リードやライト）とオペランドアドレス他の情報１５、ライト要求ではオペランドデータ１６を受け付け、内部のキャッシュメモリに書き込みを行うデータキャッシュ部である。
３４は、プロセッサコア部１０からのオペランドアクセス要求１４とオペランドアドレス他の情報１５でデータキャッシュ３０の内部を検索した結果、データキャッシュ３０に含まれていない場合に、上位のキャッシュメモリにオペランドアクセスを要求するオペランドアクセス要求である。
３５は、オペランドアクセス要求３４が有効なタイミングで参照するオペランドアドレス他の情報である。
３６は、データキャッシュ３０と上位キャッシュまたはメモリコントローラ２００との間で移動するオペランドである。
【００１４】
４０は、設定された事象の発生を監視し、設定された回数の発生を検出するとプロセッサコア部１０に通知するＰＭ機構である。
ＰＭ機構４０において、４１は、監視すべき事象を選択するセレクタ４４により選択された事象の発生回数を計測する回数計測部である。
４２は、プロセッサコア部１０への通知を発生させるための所定の発生回数を設定する割り込み間隔である。
４３は、回数計測部４１と割り込み間隔４２の値を比較し、一致した場合にプロセッサコア部１０に通知する比較器である。
４４は、命令取り出し要求２１とオペランドアクセス要求３４のいずれかを選択するセレクタである。
４５は、比較器４３で回数計測部４１と割り込み間隔４２の値が一致した場合に、プロセッサコア部１０に通知されるＰＭ割り込み信号である。
【００１５】
２００は、命令キャッシュ２０での命令取り出しでキャッシュミスした場合や、データキャッシュ３０でオペランドの取り出し、格納でキャッシュミスした場合に、参照する上位キャッシュまたはメモリコントローラである。
【００１６】
７００は、特定の事象（例えば、キャッシュミス）が発生した場合に、特定の事象を発生させたメモリアドレスを特定するプロセッサ管理装置である。
【００１７】
プロセッサ管理装置７００において、３００は、セレクタ４４にＰＭ機構４０で計測すべき特定の事象を設定し、割り込み間隔４２に所定の値を設定するＰＭ機構制御部である。
【００１８】
４００は、特定の事象が発生した場合にＰＭ機構４０によって通知された割り込みがプロセッサコア部１０で認識され、プログラム実行されるＰＭ割込みハンドラである。
ＰＭ割込みハンドラ４００は、特定の事象が発生した際のプロセッサの状態を示すプロセッサ状態情報をプロセッサコア部１０から受信する。
４０１は、ＰＭ機構４０によって通知された割り込みによって発生するＰＭ割込みハンドラ起動信号である。
【００１９】
５００は、ＰＭ割込みハンドラ４００がプロセッサ状態情報を格納するキャッシュミス履歴記録部である。
【００２０】
６００は、キャッシュミス履歴記録部５００に格納されているプロセッサ状態情報と、プログラム８００とを用いてキャッシュミスを発生させたメモリアドレスを特定するアドレス特定部である。
【００２１】
ＰＭ機構制御部３００、ＰＭ割込みハンドラ４００、アドレス特定部６００は、例えばプログラムで実現される。
ＰＭ機構制御部３００、ＰＭ割込みハンドラ４００、アドレス特定部６００を実現するプログラムは、プロセッサ１００又は組込みシステム内の他のプロセッサにより実行されて、以下にて説明する処理が行われる。
キャッシュミス履歴記録部５００は、プロセッサ１００内のレジスタやＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）により実現される。
【００２２】
次に動作について説明する。
【００２３】
まず、ＰＭ機構制御部３００が、ＰＭ機構４０で計測すべき事象の設定を行い、セレクタ４４の選択条件を決定する。
また、ＰＭ機構制御部３００は、割り込み間隔の設定を割り込み間隔４２に行う。
セレクタ４４と割り込み間隔４２を設定することで、プログラム実行中に計測が必要な事象の数の計測が開始される。
【００２４】
ＰＭ機構制御部３００の処理フローを図２に従い、説明する。
【００２５】
ＰＭ機構制御部３００は、Ｓ２０１で、計測すべき事象を決定し、セレクタ４４を設定する。
Ｓ２０２では、割り込み間隔４２を設定せず、周期での事象の発生回数を計測する。
Ｓ２０３では、ＰＭ割込みハンドラ４００の実行時間を計測する。
Ｓ２０４では、周期あたりの計測事象の発生回数や、ＰＭ割込みハンドラ４００の実行時間から、割り込みの発生間隔を決め、割り込み間隔４２を設定する。
【００２６】
割り込み間隔４２は、以下の（１）〜（３）のいずれかの方法で決定される。
（１）組み込みシステムで設定された周期処理の時間マージン内で実行可能なＰＭ割込みハンドラの実行回数
たとえば、周期１ｍ秒で、マージン５％、ＰＭ割込みハンドラの１回の実行時間５ｕ秒とした場合、１ｍ秒×５％／５ｕ秒＝１０回となる。
これは、周期時間や処理内容を変更することなく、計測できる。
ただし、１周期で発生する事象回数が多い場合は、複数周期のデータ採取を行い、データの補完を行うことが必要である。
採取する最低周期数は、１周期で発生する事象回数／ＰＭ割込みハンドラ実行回数となる。
（２）組み込みシステムで設定された周期処理の時間内で発生する事象の回数に対する比率に従った割り込み回数
比率は、周期あたりの発生回数により、変更される。
たとえば、１周期で２０００回事象が発生した場合は、比率を１％とし、２０００×１％＝２０回となる。
また、１周期で２０回事象が発生した場合は、比率を１０％とし、２０回×１０％＝２回となる。
データ採取のオーバーヘッドが周期処理の時間マージンと比べて、同等以上の場合には、周期時間や、処理内容の修正が発生する。
発生回数に対する比率が決まっているため、採取する最低周期数が決まる。
（３）上記（１）と（２）の組み合わせ
発生回数に対する比率と割り込みハンドラの実行時間から最適な回数を決定する。
【００２７】
次に、ＰＭ割込みハンドラ４００の処理フローを図３に従い、説明する。
【００２８】
ＰＭ割込みハンドラ４００は、Ｓ３０１で、割り込みからの復帰用にＰＣ（プログラムカウンタ）をセーブしておく。
Ｓ３０２で、キャッシュミス履歴記録部５００にＰＣ、レジスタ内容を記録する。
Ｓ３０３で、割り込みからの復帰用にセーブ（Ｓ３０１）したＰＣを設定する。
Ｓ３０４で、割り込みから復帰する。
【００２９】
Ｓ３０２では、計測事象により、プロセッサ状態情報として記録するデータが異なる。
命令キャッシュミスの計測では、ＰＣのみ記録し、データキャッシュミスの計測では、ＰＣとレジスタ内容を記録する。
命令キャッシュミスではＰＣがキャッシュミスしたアドレスとなるが、データキャッシュミスではＰＣで示される命令コードを解析し、オペランドアドレスを生成することが必要となるためである。
プロセッサによっては、キャッシュミスしたアドレスを保持し、プログラムから読み出すことができるプロセッサもあり、その場合は、読み出したアドレスを記録する。
【００３０】
プログラム実行時のキャッシュミス履歴記録部５００への書き込み動作について図４を用いて説明する。
【００３１】
計測対象のプログラムを図４に記載のプログラムとする。
図４のプログラムは、「０ｘ１０１０」の「ＬＤＲ  Ｒ１３，Ｒ２，０ｘ００００」を例にとると、レジスタＲ２に記憶されているメモリアドレスに「０ｘ００００」を加算して得られるメモリアドレスに格納されているデータをレジスタＲ２にロードするという内容である。
また、図４では、計測事象は、データキャッシュミスであり、割り込み発生間隔は２である。
【００３２】
０ｘ１０１０番地のロード命令（メモリ内容をレジスタにコピーする命令）は、データキャッシュにヒットする。
０ｘ１０２０番地のロード命令は、データキャッシュミスが発生し、これによりＰＭ割り込み信号４５が出力される。
ＰＭ割り込みにより起動されるＰＭ割込みハンドラ４００は、プロセッサ状態情報として、ＰＣとレジスタ内容（Ｒ０〜Ｒ１５の全てのレジスタの内容）をキャッシュミス履歴記録部５００に格納する。
０ｘ１０３０番地のロード命令は、データキャッシュミスが発生するが、割り込み間隔が２となっており、０ｘ１０２０番地のロード命令で割り込みが発生したため、０ｘ１０３０番地のロード命令によるデータキャッシュミスではＰＭ割り込み信号４５は出力されない。
０ｘ１０４０番地のロード命令は、データキャッシュミスが発生し、これによりＰＭ割り込み信号４５が出力される。
ＰＭ割り込みにより起動されるＰＭ割込みハンドラ４００は、プロセッサ状態情報として、ＰＣとレジスタ内容（Ｒ０〜Ｒ１５の全てのレジスタの内容）をキャッシュミス履歴記録部５００に格納する。
【００３３】
キャッシュミス履歴記録部５００に記録された情報と、実行したプログラムから、データキャッシュミスしたアドレスの再現について、図５を用いて説明する。
【００３４】
アドレス特定部６００は、キャッシュミス履歴記録部５００に記録されたＰＣの値と実行したプログラム８００から、命令の特定を行う。
図５の例では、ＰＣ＝０ｘ１０２０であることから、アドレス特定部６００は、データキャッシュミスした命令を、
ＬＤＲ  Ｒ１５，Ｒ１，０ｘ１０００
と特定する。
このとき、データキャッシュを参照したメモリアドレスは、Ｒ１＋０ｘ１０００から生成されていることから、アドレス特定部６００は、Ｒ１の内容（０ｘ０００１００００）と０ｘ１０００を加算した０ｘ０００１１０００がデータキャッシュミスを起こしたアドレスであると特定する。
【００３５】
次に、キャッシュミス履歴記録部５００に記録されているレコードは、ＰＣ＝０ｘ１０４０であることから、アドレス特定部６００は、データキャッシュミスした命令を、
ＬＤＲ  Ｒ１４，Ｒ１５，０ｘ２０００
と特定する。
このとき、データキャッシュを参照したアドレスは、Ｒ１５＋０ｘ２０００から生成されていることから、アドレス特定部６００は、Ｒ１５の内容（０ｘ００００２０００）と０ｘ２０００を加算した０ｘ００００４０００がデータキャッシュミスを起こしたアドレスであると特定する。
メモリ参照するアドレスの生成方法は、プロセッサアーキテクチャごとに定義されているので、その定義にしたがい、データキャッシュミスしたアドレスを生成する。
【００３６】
以上のように、プログラム実行時にキャッシュミスなどの計測対象の事象と割り込み間隔を設定するようにし、ＰＭ割り込み発生時にアドレス生成に使用されたレジスタとＰＣを記録するようにしているので、実行したプログラムと記録情報からキャッシュミスが発生したアドレスを生成することができる。
【符号の説明】
【００３７】
１０  プロセッサコア部、１１  命令取り出し要求、１２  命令アドレス他の情報、１３  命令コード、１４  オペランドアクセス要求、１５  オペランドアドレス他の情報、１６  オペランドデータ、２０  命令キャッシュ、２１  命令取り出し要求、２２  命令アドレス他の情報、２３  命令コード、３０  データキャッシュ、３４  オペランドアクセス要求、３５  オペランドアドレス他の情報、３６  オペランドデータ、４０  ＰＭ機構、４１  回数計測部、４２  割り込み間隔、４３  比較器、４４  セレクタ、１００  プロセッサ、２００  上位キャッシュまたはメモリコントローラ、３００  ＰＭ機構制御部、４００  ＰＭ割込みハンドラ、５００  キャッシュミス履歴記録部、６００  アドレス特定部、７００  プロセッサ管理装置、８００  プログラム。
【図１】
2015162003.tif 000003
【図２】
2015162003.tif 000004
【図３】
2015162003.tif 000005
【図４】
2015162003.tif 000006
【図５】
2015162003.tif 000007