(57)【要約】【課題】システムＬＳＩにおいて、ＣＰＵメモリアクセス解析によるソフトウェアの処理速度面での最適化を行うため、システムの振舞いに影響を与えず、低いバンド幅でＣＰＵメモリアクセス状態を出力すること。【解決手段】システムＬＳＩ内に、キャッシュミスヒット信号を検出するキャッシュアクセス検出手段と、プロセス切替を検出するプロセス切替検出手段と、前記プロセス切替信号を受信した場合にはプロセス切替情報を、前記キャッシュミスヒット信号を受信した場合にはキャッシュミスヒット情報をシステムＬＳＩ外部に出力するように制御する出力制御手段と、前記出力制御手段に従ってプロセス切替情報、あるいは、キャッシュミスヒット情報を生成しシステムＬＳＩ外部に出力する出力選択手段を有し、キャッシュミスヒット時のメモリアクセス状態をプロセスＩＤに対応付けられた仮想アドレスとして出力することを特徴とする。【選択図】図１
2006285430.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリと、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）と、ＣＰＵコアから構成されるＣＰＵと、外付け、あるいは、内蔵されたメモリと、周辺回路とを備えるシステムＬＳＩであって、
前記システムＬＳＩは、前記ＣＰＵから出力されたキャッシュミスヒット信号によりキャッシュヒット、あるいは、ミスヒットを検出するキャッシュアクセス検出手段と、
前記ＣＰＵから出力されたプロセスＩＤによりプロセスが切替ったことを検出し、保持しているプロセスＩＤを更新するプロセス切替検出手段と、
前記プロセス切替検出手段からのプロセス切替信号、あるいは、キャッシュアクセス検出手段からのキャッシュミスヒット信号によって出力選択手段を制御し、また同時に、それらの信号に対応してプロセス切替イベント、あるいは、キャッシュミスヒットイベントを特定するイベント識別子を出力する出力制御手段と、
前記出力制御手段から出力された出力制御信号により、プロセス切替時には、前記イベント識別子と、前記プロセス切替検出手段から出力されたプロセスＩＤを選択してプロセス情報として出力し、キャッシュミスヒット時には、前記イベント識別子と、前記ＣＰＵから出力された仮想アドレスを選択してキャッシュミスヒット情報として出力する出力選択手段とを備えることにより、測定対象となるシステムの振舞いに影響を与えることなく、キャッシュミスヒット時のメモリアクセス状態をプロセスＩＤに対応付けられた仮想アドレスとして出力することを特徴とするＣＰＵメモリアクセス解析装置。
【請求項２】
キャッシュヒット、あるいは、キャッシュミスヒットイベントをカウントするイベントカウンタを更に備え、
前記出力制御手段は、前記イベントカウンタが予め設定された閾値に達するとイベントカウンタをリセットし、前記キャッシュアクセス検出手段から出力されるキャッシュヒット信号によりキャッシュヒットイベントを特定するイベント識別子を出力し、前記イベント識別子と前記ＣＰＵから出力された仮想アドレスをキャッシュヒット情報として出力するように前記出力選択手段を制御することを特徴とする請求項１記載のＣＰＵメモリアクセス解析装置。
【請求項３】
前記キャッシュアクセス検出手段から出力されたキャッシュヒット信号によりキャッシュヒット数をカウントするキャッシュヒットカウンタを更に備え、
前記イベントカウンタが予め設定された閾値に達すると、前記キャッシュアクセス検出手段から出力されるキャッシュヒット信号により、前記イベントカウンタと前記キャッシュヒットカウンタをリセットし、キャッシュヒットイベントを特定するイベント識別子と、キャッシュヒットカウンタがリセット前に保持していたカウント値と、前記ＣＰＵから出力された仮想アドレスをキャッシュヒット情報として出力し、また、プロセス切替検出手段からプロセス切替通知が出力されると、プロセス切替イベントを特定するイベント識別子と、プロセスＩＤと、キャッシュヒットカウンタが保持しているカウント値を出力するように前記出力選択判定手段を制御することを特徴とする請求項２記載のＣＰＵメモリアクセス解析装置。
【請求項４】
ＣＰＵ内のキャッシュメモリがセットアソシアティブ方式であって、
前記ＣＰＵによって出力される仮想アドレスが、ＭＭＵによって変換される物理アドレスと一対一で対応し、キャッシュヒット時に、ヒットしたウェイ番号と、ヒット時のキャッシュエントリを一意に決定する物理アドレスの下位アドレスとの組み合わせが、前記物理アドレスと一対一で対応していることを利用して、キャッシュヒット時には、ヒットしたウェイ番号と、ヒット時の仮想アドレスから前記物理アドレスの下位アドレスと同じ大きさ分の下位アドレスを出力し、キャッシュミスヒット時には、リフィル対象となったウェイ番号とミスヒット時の仮想アドレスを出力することにより、仮想アドレス全体をキャッシュヒット、ミスヒット時に出力する場合と比較して出力データ量を圧縮することを特徴とするキャッシュメモリトレース圧縮方法。
【請求項５】
セットアソシアティブ方式のキャッシュメモリと、ＭＭＵと、ＣＰＵコアから構成されるＣＰＵと、外付け、あるいは、内蔵されたメモリと、周辺回路とを備えるシステムＬＳＩであって、
前記システムＬＳＩは、前記ＣＰＵから出力されたキャッシュミスヒット信号によりキャッシュヒット、あるいは、ミスヒットをそれぞれ検出するキャッシュアクセス検出手段と、
前記キャッシュアクセス検出手段の出力によって出力選択手段を制御し、同時に、キャッシュヒットイベント、あるいは、キャッシュミスヒットイベントを特定するイベント識別子を出力する出力制御手段と、
前記出力制御手段から出力された出力制御信号により、キャッシュミスヒット時には、前記イベント識別子と、前記ＣＰＵから出力された仮想アドレスと、リフィル対象となったウェイ番号を選択してキャッシュミスヒット情報を出力し、また、キャッシュヒット時には、前記イベント識別子と、ヒット時の仮想アドレス内の前記下位アドレスと、ヒットしたウェイ番号を選択してキャッシュヒット情報を出力することにより、仮想アドレス全体をキャッシュヒット、ミスヒット時に出力する場合と比較して出力データ量を圧縮することを特徴とする請求項４記載の方式を用いたＣＰＵメモリアクセス解析装置。
【請求項６】
経過時間をカウントするタイムカウンタを更に備え、
前記出力制御手段は、前記タイムカウンタが予め設定された閾値に達すると、前記タイムカウンタをリセットし、時間経過イベントを特定するイベント識別子をタイムスタンプ情報として出力するように前記出力選択手段を制御することを特徴とする請求項１記載のＣＰＵメモリアクセス解析装置。
【請求項７】
前記キャッシュアクセス検出手段から出力されたキャッシュヒット信号によりキャッシュヒット数をカウントするキャッシュヒットカウンタを更に備え、
前記タイムカウンタが予め設定された閾値に達すると、前記タイムカウンタと前記キャッシュヒットカウンタをリセットし、時間経過イベントを特定するイベント識別子とキャッシュヒットカウンタがリセット前に保持していたカウント値をタイムスタンプ情報として出力し、また、前記プロセス切替検出手段からプロセス切替通知が出力されると、プロセス切替イベントを特定するイベント識別子と、プロセスＩＤと、キャッシュヒットカウンタが保持しているカウント値を出力するように前記出力選択判定手段を制御することを特徴とする請求項６記載のＣＰＵメモリアクセス解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ、メモリ、他周辺回路から構成されるＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）等のシステムＬＳＩにおいて、ソフトウェア処理速度の改善を可能にするＣＰＵメモリアクセス解析装置に関するものである。
【背景技術】
【０００２】
ＣＰＵ処理速度は年率数１０％で向上しているが、メモリ処理速度の向上率はＣＰＵと比較して低い。その結果、メモリアクセス時のペナルティが年々増加している。
【０００３】
ＣＰＵのメモリアクセスを解析するためには、ＣＰＵのキャッシュアクセスの状態を抽出すればよく、計測方法には、シミュレータによる計測と実機による計測がある。
【０００４】
従来のシミュレータによるＣＰＵメモリアクセスの計測方法としては、計測対象となるＣＰＵの動作をソフトウェアでシミュレーションしてメモリアクセスの状態を抽出する方法があった。
【０００５】
従来の実機によるＣＰＵメモリアクセスの計測方法としては、ＣＰＵ外部バスからキャッシュミスヒット時のアドレスとデータを取得し、そのアドレスに対応したキャッシュエントリ単位でミスヒット数をカウントアップし、その値を主記憶に保持する方法や、ハードウェアによりミスヒット数などをカウントした値を、割り込みなどを利用してソフトウェアで収集し主記憶に保持、あるいは、外部に出力する方法があった（例えば、特許文献１参照）。図１０は、前記特許文献１に記載された従来のＣＰＵメモリアクセス解析方法を示すものである。
【０００６】
図１０において、キャッシュミスヒット時にＣＰＵ２００からＣＰＵ外部のアドレスバスに出力されたアドレスは、アクセスアドレス格納手段１１０により取得される。アクセスアドレス格納手段１１０が取得したアドレスは、比較アドレス格納手段１３０で予め設定されたアドレス領域内であるか比較手段１４０により比較される。比較手段１４０が一致を検出した場合には制御手段１８０に通知し、制御手段１８０は、下位アドレス抽出手段１５０と上位アドレス格納手段１６０を用いて主記憶上のキャッシュミスアドレス分布表３１０のエントリから、カウンタ値を読出し、その値に加算手段１７０により１加算して、元のエントリに書き戻す。これにより、キャッシュミスアドレス分布表３１０にキャッシュミス分布を出力する。
【特許文献１】特許第２７９０１１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、シミュレータによるＣＰＵメモリアクセス解析方法では、計測時間が大きくなる上に、ＣＰＵ周辺回路をモデル化しているため、実システムでの動作とは異なるという課題を有している。また、前記特許文献１のような従来の実機による解析方法では、ＣＰＵメモリアクセス状態を抽出するためにシステムリソース（ＣＰＵ、バス、あるいは主記憶）を消費し、それによりシステムの実動作が阻害される課題を有していた。さらに、ＣＰＵメモリアクセスの計測結果を利用してソフトウェアの処理速度を改善するためには、高速なＣＰＵメモリアクセス動作をＣＰＵ動作周波数よりはるかに長いプログラム実行時間のオーダで計測する必要があるが、前記特許文献１のような従来の実機による解析方法をシステムＬＳＩ上に実装するには、搭載するメモリ容量が限られ、外部出力端子数が限られているため困難であった。
【０００８】
本発明は、前記従来の課題を解決するもので、ソフトウェア処理速度の改善に必要なＣＰＵメモリアクセス状態を、システムの振舞いに影響を与えることなく低ビットレートでシステムＬＳＩ外部に出力する方法、装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記従来の課題を解決するために、本発明のＣＰＵメモリアクセス解析装置は、システムＬＳＩ内に、キャッシュミスヒット信号を検出するキャッシュアクセス検出手段と、プロセス切替を検出するプロセス切替検出手段と、前記プロセス切替信号を受信した場合にはプロセス切替情報を、前記キャッシュミスヒット信号を受信した場合にはキャッシュミスヒット情報をシステムＬＳＩ外部に出力するように制御する出力制御手段と、前記出力制御手段に従ってプロセス切替情報、または、キャッシュミスヒット情報を生成しシステムＬＳＩ外部に出力する出力選択手段を有し、キャッシュミスヒット時のメモリアクセス状態をプロセスＩＤに対応付けられた仮想アドレスとして出力することを特徴とする。
【００１０】
本構成によって、システムの振舞いに影響を与えず、少ないバンド幅でＣＰＵメモリアクセス状態を出力することができ、ソフトウェアの性能面でボトルネックとなっている部分を最適化し、システム全体の処理速度を向上することができる。
【発明の効果】
【００１１】
本発明のＣＰＵメモリアクセス解析装置によれば、システムの振舞いに影響を与えることなく低ビットレートでＣＰＵメモリアクセスの状態を抽出することができる。
【００１２】
これは、ＣＰＵメモリアクセス解析装置が、ＣＰＵから取得したメモリアクセス状態からソフトウェアの最適化に必要な情報、つまり、キャッシュミスヒット情報とプロセス切替情報とを抽出して、間欠的に出力する機構としてシステムＬＳＩ内に構築されることによる。
【００１３】
また、本発明のＣＰＵメモリアクセス解析装置によれば、出力されるビットレートが低減されるため、プログラム実行時間というＣＰＵ動作周波数に比べてマクロなオーダでメモリアクセス解析を行うことが可能となり、キャッシュミスヒットの詳細な情報により、ソフトウェアの処理速度の面でボトルネックとなっている部分の最適化が容易になる。
【発明を実施するための最良の形態】
【００１４】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１５】
（実施の形態１）
図１は、本発明の実施の形態１におけるＣＰＵメモリアクセス解析装置の一例を示す構成図である。図１に示すシステムＬＳＩ１０は、ＣＰＵメモリアクセス解析装置１００と、ＣＰＵ２００と、メモリ３００と、システムバス４００を備えている。ＣＰＵメモリアクセス解析装置１００は、キャッシュアクセス検出手段１０１と、プロセス切替検出手段１０２と、出力制御手段１０３と、出力選択手段１０４を備えている。
【００１６】
さらに、ＣＰＵ２００は、ＣＰＵコア２０１と、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）２０２と、キャッシュメモリ２０３を備えている。
【００１７】
本実施の形態では、ＣＰＵ２００上でメモリ３００に保持されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）３０１が動作しており、ＯＳ３０１上でメモリ３００に保持されているプロセスＡ３０２、プロセスＢ３０３等の複数のプロセスが動作している。
【００１８】
ＣＰＵコア２０１はメモリから命令コードをフェッチするために仮想アドレスをＭＭＵ２０２に出力する。ＭＭＵ２０２は仮想アドレスを対応する物理アドレスに変換し、物理アドレスがキャッシュ対象のアドレス空間の場合に、キャッシュメモリ２０３にキャッシュアクセスリクエスト信号と共に物理アドレスを出力する。キャッシュメモリ２０３はＭＭＵ２０２からキャッシュアクセスリクエスト信号により物理アドレスを受信すると、物理アドレスに対応する命令コードがキャッシュメモリ２０３内に保持されているかどうか判定し、命令コードが見つかった、キャッシュヒットした場合には保持している命令コードをＣＰＵコア２０１に出力する。命令コードが見つからなかった、キャッシュミスヒットした場合にはＣＰＵコア２０１はキャッシュメモリ２０３から出力されたミスヒット信号を受信し、キャッシュメモリ２０３がメモリ３００から前記物理アドレスに対応する命令コードを取得するまで待機する。同時に、キャッシュメモリ２０３はシステムバス４００を介して、メモリ３００に前記物理アドレスを出力し対応する命令コードを取得する。キャッシュメモリ２０４が命令コードを取得すると、ＣＰＵコア２０１は再度同じ物理アドレスによりキャッシュメモリ２０３から命令コードをフェッチする。
【００１９】
また、前記ＯＳ３０１上で動作するプロセスが、例えばプロセスＡ３０２からプロセスＢ３０３に切替った場合に、ＯＳ３０１はＣＰＵコア２０１が保持するレジスタにプロセスＢ３０３を識別するプロセスＩＤを書き込むことにより、ＭＭＵ２０１にプロセスＩＤを出力する。ＭＭＵ２０２は前記プロセスＩＤによりプロセス毎の仮想アドレス空間を管理する。
【００２０】
キャッシュアクセス検出手段１０１はＭＭＵ２０２から出力されたキャッシュアクセスリクエスト信号とキャッシュメモリ２０３から出力されたキャッシュミスヒット信号により、キャッシュミスヒットを検出しキャッシュミスヒット信号を出力制御手段１０３に出力する。
【００２１】
出力制御手段１０３がキャッシュミスヒット信号を受信すると、キャッシュミスヒットイベントを特定するためのイベント識別子、値「１」を出力選択手段１０４に出力すると共に、出力選択手段１０４が、ＣＰＵコア２０１から出力された仮想アドレスと前記イベント識別子を選択するように出力制御信号を出力する。
【００２２】
出力選択手段１０４は、出力制御手段１０３からの出力制御信号によって、前記仮想アドレスと前記イベント識別子を出力する。
【００２３】
さらに、プロセス切替検出手段１０２はＭＭＵ２０２から出力されたプロセスＩＤとプロセス切替検出手段１０２が保持するプロセスＩＤを比較する。一致しない場合には、プロセス切替検出手段１０２は保持していたプロセスＩＤをＭＭＵ２０２から出力されたプロセスＩＤにより更新し、同時に、出力制御手段１０３にプロセス切替信号を、出力選択手段１０４に更新されたプロセスＩＤを出力する。
【００２４】
出力制御手段１０３がプロセス切替信号を受信すると、プロセス切替を特定するためのイベント識別子、値「２」を出力選択手段１０４に出力すると共に、出力選択手段１０４が、プロセス切替検出手段１０２から出力された前記プロセスＩＤと前記イベント識別子を選択するように出力制御信号を出力する。
【００２５】
出力選択手段１０４は、出力制御手段１０３からの出力制御信号によって、前記プロセスＩＤと前記イベント識別子を出力する。
【００２６】
このようにして、ＣＰＵメモリアクセス解析装置１００はキャッシュミスヒットが発生した場合には、ＣＰＵ２００から出力された仮想アドレスと、キャッシュミスヒットイベントを特定するイベント識別子をキャッシュミスヒット情報として出力する。また、プロセス切替が発生した場合には、切替ったプロセスＩＤと、プロセス切替イベントを特定するイベント識別子をプロセス切替情報として出力する。
【００２７】
図２は、本発明の実施の形態１における出力制御手段１０３の動作をフローチャートにより説明したものである。
【００２８】
出力制御手段１０３は、キャッシュアクセス検出手段１０１からキャッシュミスヒット信号を、あるいは、プロセス切替検出手段１０２からプロセス切替信号を受信すると、イベント判定を行う。キャッシュミスヒットイベントであればステップＳ２００２に進み、プロセス切替イベントであればＳ２００４に進む（ステップＳ２００１）。
【００２９】
出力制御手段１０３はキャッシュミスヒットイベントを受信した場合、キャッシュミスヒットイベントを特定するイベント識別子、ここでは値「１」を出力選択手段１０４に出力する（ステップＳ２００２）。
【００３０】
さらに、出力制御手段１０３はＣＰＵ１００から出力された仮想アドレスと、ステップＳ２００２で出力したイベント識別子を出力するように出力選択手段１０４に出力制御信号を出力する（ステップＳ２００３）。
【００３１】
一方、出力制御手段１０３はプロセス切替イベントを受信した場合、プロセス切替イベントを特定するイベント識別子、ここでは値「２」を出力選択手段１０４に出力する（ステップＳ２００４）。
【００３２】
さらに、出力制御手段１０３はプロセス切替検出手段１０２から出力されたプロセスＩＤと、ステップＳ２００４で出力したイベント識別子を出力するように出力選択手段１０４に出力制御信号を出力する（ステップＳ２００５）。
【００３３】
かかる構成によれば、キャッシュミスヒット時とプロセス切替時のみメモリアクセス状態を出力することにより、プログラムの実行時間のオーダで、図３の（ａ）に示すようにキャッシュミスヒット時のメモリアクセス状態をプロセスＩＤに対応付けられた仮想アドレスとして出力することができる。この結果を用いて、図３の（ｂ）に示すようにキャッシュミスヒット数により統計をとることにより、プログラムの性能面でボトルネックとなっている部分を見つけ出すことが可能となる。これは、プログラムのリンク時に出力されたマップファイル、プログラムの逆アセンブル結果、あるいは、デバッグ情報により、ＣＰＵメモリアクセス解析装置１００によって出力された仮想アドレスをプログラムコードと対応付けることが可能であり、また、ＯＳ３０１によりプロセスＩＤとプロセス名（プログラム名）を対応付けることが可能であることによる。
【００３４】
なお、本発明の実施の形態において、ＣＰＵメモリアクセス解析装置の例としてＣＰＵが命令コードをフェッチする場合を示したが、ＣＰＵがメモリからデータを読み込む、あるいは、メモリに保存する場合についても同様にメモリアクセス状態を出力することができる。そのため、本ＣＰＵメモリアクセス解析装置を、命令、データを別々に扱うハーバード型キャッシュに用いてもよいし、命令、データを同一に扱うユニファイドキャッシュに用いてもよい。
【００３５】
（実施の形態２）
図４は、本発明の実施の形態２におけるＣＰＵメモリアクセス解析装置の一例を示す構成図である。図４に示すシステムＬＳＩ１０は、ＣＰＵメモリアクセス解析装置１００と、ＣＰＵ２００と、メモリ３００と、システムバス４００を備えている点は実施の形態１と同様であるが、実施の形態２においては、ＣＰＵメモリアクセス解析装置１００は、イベントカウンタ５０５とキャッシュヒットカウンタ５０６を更に備え、また、キャッシュアクセス検出手段１０１の代わりにキャッシュアクセス検出手段５０１と、出力制御手段１０３の代わりに出力制御手段５０３と、出力選択手段１０４の代わりに出力選択手段５０４を備えている。
【００３６】
キャッシュアクセス検出手段５０１はＣＰＵ２００から出力されたキャッシュアクセスリクエスト信号とキャッシュミスヒット信号により、キャッシュヒット、あるいは、キャッシュミスヒットを検出し、キャッシュヒット信号、あるいは、キャッシュミスヒット信号をそれぞれ出力する。
【００３７】
キャッシュヒットカウンタ５０６は、前記キャッシュヒット信号を受信すると保持するカウンタを１加算してその結果を出力選択手段５０４に出力する。
【００３８】
イベントカウンタ５０５は、前記キャッシュミスヒット信号を受信すると保持するカウンタを１加算する。また、ＣＰＵ２００はシステムバス４００を介して、イベントカウンタ５０５にカウント閾値を設定することができる。イベントカウンタ５０５にイベント閾値として値「１０」が設定されていた場合、イベントカウンタ５０５は、キャッシュミスヒット信号を１０回受信すると出力制御手段５０３にイベント閾値検出信号を出力し、カウンタをリセットする。
【００３９】
出力制御手段５０３は、キャッシュミスヒット信号を受信した場合には、実施の形態１と同様の動作を行う。また、プロセス切替信号を受信した場合には、プロセス切替を特定するためのイベント識別子、値「２」を出力選択手段５０４に出力すると共に、出力選択手段５０４が、プロセス切替検出手段１０２から出力された前記プロセスＩＤと、前記イベント識別子と、キャッシュヒットカウンタ５０６の出力値を選択するように出力制御信号を出力する。さらに、イベントカウンタ５０５からイベント閾値検出信号を受信すると、キャッシュヒット数通知イベントを特定するためのイベント識別子、値「３」を出力選択手段５０４に出力すると共に、出力選択手段５０４が、キャッシュヒットカウンタ５０６の出力値と、前記イベント識別子を選択するように出力制御信号を出力し、同時にキャッシュヒットカウンタ５０６をリセットする。
【００４０】
出力選択手段５０４は、キャッシュミスヒット時には、実施の形態１と同様の動作を行う。また、プロセス切替時には、出力制御手段５０３からの出力制御信号によって、前記プロセスＩＤと、前記イベント識別子と、前記キャッシュヒット数を出力する。さらに、キャッシュミスヒット信号が１０回出現した場合には、出力制御手段５０３からの出力制御信号によって、前記キャッシュヒット数、そして前記イベント識別子を出力する。
【００４１】
このようにして、ＣＰＵメモリアクセス解析装置１００はキャッシュミスヒット発生時に、実施の形態１に示すキャッシュミスヒット情報を出力するのに加えて、プロセス切替時には、切替ったプロセスＩＤと、プロセス切替を特定するイベント識別子と、キャッシュミスヒットが１０回発生してからプロセス切替が発生するまでのキャッシュヒット数をプロセス切替情報として出力する。さらに、キャッシュミスヒットが１０回発生した場合には、キャッシュヒット数通知イベントを特定するイベント識別子と、キャッシュミスヒットが１０回発生する間にキャッシュメモリがヒットした回数をキャッシュヒット数通知情報として出力する。
【００４２】
かかる構成によれば、キャッシュミスヒットが１０回発生する間隔でキャッシュヒット数を出力し、さらに、プロセス切替時にもキャッシュヒット数を出力するができるため、プロセス単位でキャッシュヒット数を算出でき、プロセス毎のキャッシュヒット率を求めることができる。
【００４３】
なお、本発明の実施の形態において、イベントカウンタ５０５の例としてキャッシュミスヒット数をカウントする例を示したが、対応するイベントはこれに限らない。別の例として、イベントカウンタ５０５によりキャッシュヒット数をカウントすることができる。この場合には、キャッシュヒット数通知イベントを特定するイベント識別子と、キャッシュヒット数に加えて、閾値に達した時点の仮想アドレスを出力する事によりプログラムのさらに詳細なトレースを得ることができる。なお、この場合には、キャッシュヒットカウンタ５０６は不要である。
【００４４】
（実施の形態３）
図５の（ａ）は、本発明の実施の形態３におけるキャッシュメモリトレース圧縮方式の一例を説明した図である。ＣＰＵ２００は、セットアソシアティブ方式のキャッシュメモリ、ここでは、４ウェイセットアソシアティブのキャッシュメモリ６０３を備えている。キャッシュメモリ６０３は、４つのブロック（ウェイ０、１、２、３）を備え、各ブロックには、２０ビットのタグと１６バイトのデータなどから構成される２５６個のエントリから構成される。
【００４５】
ＣＰＵコア２０１から出力された３２ビットの仮想アドレスは、ＭＭＵ２０２により３２ビットの物理アドレスに変換される。ここでは、ＭＭＵ２０２により、仮想アドレス「０ｘ２０００Ｃ１Ａ０」が、物理アドレス「０ｘ８０００８１Ａ０」に変換されたことを示している。ＭＭＵ２０２は、アドレス空間を４ＫＢのページとして管理しているため、仮想ページ番号を示す仮想アドレスの上位２０ビットは、対応する物理ページ番号を示す物理アドレスの上位２０ビットに変換される。ここでは、仮想ページ番号「０ｘ２０００Ｃ」が、物理ページ番号「０ｘ８０００８」に対応していることを示している。
【００４６】
図５の（ａ）に示すように、ＭＭＵ２０２により変換された物理アドレスのビット１１からビット４までの値は、エントリアドレスと呼ばれ、各ブロック内のエントリを指定するために使用される。また、物理アドレスの上位２０ビットは、タグアドレスと呼ばれ、各ブロック中のエントリ内のタグと比較してブロックを選択するために使用される。物理アドレスの下位４ビットは、バイトアドレスと呼ばれ、エントリ内のデータのアドレスである。つまり、物理アドレス「０ｘ８０００８１Ａ０」によりキャッシュメモリ６０３がアクセスされ対応するブロックが見つからなかった場合、ミスヒットとなる。この場合には、物理アドレスが指し示すメモリ３００上のデータをキャッシュメモリ６０３のデータ部に格納するため、データを入れ替えるブロック、リフィル対象ブロックとしてウェイ０が決定され、物理アドレスのエントリアドレス「０ｘ１Ａ」が示す位置にあるタグに物理アドレスのタグアドレス「０ｘ８０００８」が格納される。
【００４７】
前記キャッシュミスヒットから、ウェイ０のエントリ「０ｘ１Ａ」内のデータがリフィルされるまで、同じ物理アドレス「０ｘ８０００８１Ａ０」でキャッシュメモリ６０３をアクセスすると、キャッシュヒットする。
【００４８】
これにより、キャッシュメモリアクセスアドレスの履歴をとる場合には、キャッシュミスヒット時には、物理アドレスと、その時リフィル対象となったウェイ番号を保存しておけば、同じブロックの同じエントリが入れ替えられるまで、ウェイ番号と、物理アドレスのエントリアドレスとバイトアドレスに対応する下位１２ビットを出力するだけで、キャッシュヒット時の物理アドレスを求めることができ出力データを圧縮することが可能となる。
【００４９】
図５の（ａ）では、キャッシュミスヒット時には、物理アドレス「０ｘ８０００８１Ａ０」とウェイ番号「０」を出力し、その後のキャッシュヒット時には、物理アドレスの下位１２ビット「０ｘ１Ａ０」とウェイ番号「０」を出力すればよい。
【００５０】
さらに、仮想アドレスと物理アドレスは、１対１に対応しているため、キャッシュミスヒット時には、仮想アドレス「０ｘ２０００Ｃ１Ａ０」とウェイ番号０を出力し、その後のキャッシュヒット時には、仮想アドレスの下位１２ビット「０ｘ１Ａ０」とウェイ番号０を出力すればよいこととなる。
【００５１】
図５の（ｂ）は、本発明の実施の形態３におけるキャッシュメモリトレース圧縮方式の動作をフローチャートにより説明したものである。
【００５２】
キャッシュヒットイベント、あるいは、キャッシュミスヒットイベントを受信するとイベント判定を行う。キャッシュヒットイベントであればステップＳ３００３に進み、キャッシュミスヒットイベントであればステップＳ３００２に進む（ステップＳ３００１）。
【００５３】
キャッシュミスヒットイベントを受信した場合、仮想アドレスとリフィル対象となったウェイ番号を出力する（ステップＳ３００２）。
【００５４】
一方、キャッシュミスヒットイベントを受信した場合、仮想アドレスの下位アドレス、ここでは下位１２ビットと、ヒットしたブロックのウェイ番号を出力する（ステップＳ３００３）。
【００５５】
かかる方式によれば、図６に示すように、キャッシュミスヒット時には、仮想アドレスとリフィル対象となったウェイ番号が保存され、キャッシュヒット時には、仮想アドレスの下位１２ビットとヒットしたブロックのウェイ番号が保存される。キャッシュヒット時には、仮想アドレスの下位１２ビットとヒットしたブロックのウェイ番号をキーとしてトレース履歴を逆に検索することによって、その値と一致するキャッシュミスヒット時の仮想アドレスを参照することにより、仮想アドレスの上位２０ビットを見つけることができる。
【００５６】
図６では、インデックス３のヒット時の仮想アドレスは、インデックス０の仮想アドレスより「０ｘ２０００００１０」であることがわかり、インデックス５と６の仮想アドレスは、それぞれ、「０ｘ３０００００１０」と「０ｘ２００００３１０」であることがわかる。
【００５７】
よって、本実施の形態において、本方式を用いれば、キャッシュヒット、ミスヒット毎に仮想アドレスを毎回出力していた方式と比較すると、ヒット１回につき１８ビットの圧縮が可能となる。これは、ヒット数がミスヒット数に比べてはるかに多いため、ミスヒット時のリフィル対象となるブロックのウェイ番号を示す２ビットが無視できることによる。
【００５８】
また、キャッシュミスヒットの要因を解析するためには、どのブロックのどのエントリが置き換えられたかを知ることが重要である。しかし、図６の（ａ）に示すように、ＭＭＵが１ＫＢごとにページ管理を行うために物理アドレスの上位２２ビットをページアドレスとして参照し、一方、キャッシュメモリが物理アドレスの上位２０ビットをタグアドレス、４から１１ビットまでをエントリアドレス、そして、下位４ビットをバイトアドレスとして参照するといった、キャッシュメモリによって参照される物理アドレスのエントリアドレスとバイトアドレスのビット数が、ＭＭＵによって参照されるページ内アドレスと呼ばれる、物理アドレスのページ番号以外のアドレスのビット数より大きい場合、キャッシュミスヒット時に仮想アドレスを出力する上記の方法ではキャッシュミスヒット時にリプレースされたエントリが解決できない。
【００５９】
このような場合には、エントリアドレスとバイトアドレスで構成されるアドレスと、ページ内アドレスの差分、図６の（ａ）では、物理アドレスの下位１２ビットと下位１０ビットとの差分、１０ビット目と１１ビット目を、キャッシュミス時に、ウェイ番号と仮想アドレスと共に出力すれば解決することができる。
【００６０】
なお、本発明の実施の形態において、ＭＭＵ２０３のメモリ管理の例として４ＫＢのサイズでページ管理している例を示したが、ページサイズはこれに限らない。これは、仮想アドレスと物理アドレスが一対一に対応していることによる。
【００６１】
また、セットアソシアティブ方式のキャッシュメモリの例として４ウェイセットアソシアティブのキャッシュメモリ６０３を示したが、ウェイ数はこれに限らない。さらに、キャッシュメモリ内のエントリサイズ、および、各ブロック内のタグサイズとデータサイズもこれに限らない。
【００６２】
（実施の形態４）
図７は、本発明の実施の形態４におけるＣＰＵメモリアクセス解析装置の一例を示す構成図である。図７に示すシステムＬＳＩ１０は、ＣＰＵメモリアクセス解析装置１００と、メモリ３００と、システムバス４００を備えている点は実施の形態２と同様であるが、ＣＰＵ２００の代わりに、前記キャッシュメモリ６０３を備え、プロセスＩＤ、仮想アドレス、キャッシュアクセスリクエスト信号、キャッシュミスヒット信号、そして、ウェイ番号を出力するＣＰＵ８００を備えている。さらに、実施の形態８においては、ＣＰＵメモリアクセス解析装置１００は、イベントカウンタ５０５の代わりにタイムカウンタ７０７を更に備え、また、出力制御手段５０３の代わりに出力制御手段７０３と、出力選択手段５０４の代わりに出力選択手段７０４を備えている。
【００６３】
タイムカウンタ７０７は、システム外部から入力されるクロックに同期してカウンタを１加算する。また、ＣＰＵ２００はシステムバス４００を介して、タイムカウンタ７０７にカウント閾値を設定することができる。この例では、タイムカウンタ７０７には１０ＭＨｚのクロックが入力されており、閾値として１０マイクロ秒を表す値「１００」が設定されているため、タイムカウンタ７０７は、１０マイクロ秒経過毎に出力制御手段７０３にタイムイベント検出信号を出力し、カウンタをリセットする。
【００６４】
出力制御手段７０３は、プロセス切替信号を受信した場合には、実施の形態２と同様の動作を行う。キャッシュミスヒット信号を受信した場合には、キャッシュミスヒットイベントを特定するためのイベント識別子、値「１」を出力すると共に、出力選択手段７０４が、ＣＰＵ２００から出力された仮想アドレスと、リフィル対象となったブロックのウェイ番号と、前記イベント識別子を選択するように出力制御信号を出力し、また、タイムカウンタ７０７からタイムイベント検出信号を受信した場合には、タイムスタンプ通知イベントを特定するためのイベント識別子、値「４」を出力する。さらに、キャッシュアクセス検出手段５０１から出力されたキャッシュヒット信号を受信した場合は、出力選択手段７０４が、ＣＰＵ２００から出力された仮想アドレスの下位１２ビットと、ヒットしたウェイ番号と、キャッシュヒットカウンタ５０６の出力値と、前記イベント識別子を選択するように出力制御信号を出力し、また、キャッシュヒット信号を受信しなかった場合は、出力選択手段７０４が、キャッシュヒットカウンタ５０６の出力値と、前記イベント識別子のみを出力するように出力制御信号を出力する。そして、同時にキャッシュヒットカウンタ５０６をリセットする。
【００６５】
出力選択手段７０４は、プロセス切替時には、実施の形態２と同様の動作を行う。キャッシュミスヒット時には、出力制御手段７０３からの出力制御信号によって、前記仮想アドレスと、前記ウェイ番号と、そして前記イベント識別子を出力する。また、１０マイクロ秒経過する毎に、出力制御手段７０３からの出力制御信号によって、前記キャッシュヒット数、そして前記イベント識別子を出力し、同時に、キャッシュヒット時には前記仮想アドレスの下位１２ビットと、前記ウェイ番号を出力する。
【００６６】
このようにして、ＣＰＵメモリアクセス解析装置１００はプロセス切替時に、実施の形態２に示すプロセス切替情報を出力するのに加えて、キャッシュミスヒットが発生した場合には、ＣＰＵ２００から出力された仮想アドレスとリフィル対象となったウェイ番号と、キャッシュミスヒットイベントを特定するイベント識別子をキャッシュミスヒット情報として出力する。さらに、１０マイクロ秒経過した場合には、タイムスタンプ通知を特定するイベント識別子と、１０マイクロ秒間にキャッシュがヒットした回数をキャッシュヒット数通知情報として出力し、同時に、キャッシュヒットの場合は、ＣＰＵ２００から出力された仮想アドレスの下位１２ビットとヒットしたウェイ番号を出力する。
【００６７】
図８は、本発明の実施の形態４における出力制御手段７０３の手順をフローチャートにより説明したものである。
【００６８】
出力制御手段７０３は、キャッシュアクセス検出手段５０１からキャッシュミスヒット信号を、プロセス切替検出手段１０２からプロセス切替信号を、あるいは、タイムカウンタからタイムイベント検出信号を受信すると、イベント判定を行う。キャッシュミスヒットイベントであればステップＳ４００２に進み、他のイベントであればＳ４００４に進む（ステップＳ４００１）。
【００６９】
出力制御手段７０３はキャッシュミスヒットイベントを受信した場合、キャッシュミスヒットイベントを特定するイベント識別子、ここでは値「１」を出力選択手段７０４に出力する（ステップＳ４００２）。
【００７０】
さらに、出力制御手段７０３はＣＰＵ１００から出力された仮想アドレスとウェイ番号、ステップＳ４００２で出力したイベント識別子を選択するように出力選択手段７０４に出力制御信号を出力する（ステップＳ４００３）。
【００７１】
一方、出力制御手段７０３がプロセス切替信号、あるいは、タイムイベント検出信号を受信した場合、さらにイベント判定を行う。プロセス切替イベントであればステップＳ４００５に進み、タイムイベント検出であればＳ４００７に進む（ステップＳ４００４）。
【００７２】
出力制御手段４０３はタイムイベントイベントを受信した場合、プロセス切替イベントを特定するイベント識別子、ここでは値「２」を出力選択手段４０４に出力する（ステップＳ４００５）。
【００７３】
出力制御手段７０３はプロセス切替検出手段１０２から出力されたプロセスＩＤと、ステップＳ４００５で出力したイベント識別子と、キャッシュヒットカウンタから出力されたキャッシュヒット数を選択するように出力選択手段７０４に出力制御信号を出力する（ステップＳ４００６）。
【００７４】
出力制御手段４０３はタイム検出イベントを受信した場合、タイムスタンプ通知イベントを特定するイベント識別子、ここでは値「４」を出力選択手段７０４に出力する（ステップＳ４００７）。
【００７５】
このとき、キャッシュアクセス検出手段５０１からキャッシュヒット信号を受信しているかどうか判定を行う、キャッシュヒットイベントであればステップＳ４００９に進み、その他のイベントであればＳ４００１０に進む（ステップＳ４００８）。
【００７６】
出力制御手段４０３はタイム検出イベントと、キャッシュヒットイベントを同時に受信した場合、ＣＰＵ２００から出力された仮想アドレスの下位１２ビットとウェイ番号と、ステップＳ４００７で出力したイベント識別子と、キャッシュヒットカウンタから出力されたキャッシュヒット数を選択するように出力選択手段７０４に出力制御信号を出力する（ステップＳ４００９）。
【００７７】
一方、タイム検出イベントと、キャッシュヒットイベントを同時に受信しなかった場合、ステップＳ４００７で出力したイベント識別子と、キャッシュヒットカウンタから出力されたキャッシュヒット数を選択するように出力選択手段７０４に出力制御信号を出力する（ステップＳ４０１０）。
【００７８】
キャッシュヒットカウンタ５０６をリセットする（ステップＳ４０１１）。
【００７９】
かかる構成によれば、図９の（ａ）に示すように、タイムスタンプイベント周期毎、ここでは、１０マイクロ秒毎に、圧縮されたキャッシュヒット時の仮想アドレスを出力することにより、実施の形態２に比べて低ビットレートで、プログラムの動作をトレースすることが出来る。また、図９の（ｂ）に示すように、１０マイクロ秒の周期でキャッシュヒット数が出力され、さらに、プロセス切替時にもキャッシュヒット数が出力されるため、プロセス単位でキャッシュヒット数を算出でき、プロセス毎の経過時間単位でのキャッシュヒット率を求めることができる。
【００８０】
なお、本実施の形態として、ＣＰＵメモリアクセス解析装置をシステムＬＳＩ内部に構築する例を示したが、ＣＰＵ内部に構築してもよい。
【００８１】
また、メモリアクセス状態を低ビットレートでシステムＬＳＩ外部に出力するために、ＣＰＵメモリアクセス解析装置の出力側に緩衝バッファを用いてもよい。
【００８２】
また、特定のプロセスのメモリアクセス状態を出力させるために、出力制御手段にプロセスＩＤを予め保持させておき、特定のプロセスのみのメモリアクセス状態を出力させてもよい。
【００８３】
また、ユーザ空間、あるいは、カーネル空間といった特定のアドレス空間に対するメモリアクセス状態を出力させるために、出力制御手段に解析したいアドレス領域を予め保持させておき、特定のアドレス空間のメモリアクセス状態を出力させてもよい。
【産業上の利用可能性】
【００８４】
本発明にかかるＣＰＵメモリアクセス解析装置は、システムリソースに影響を与えず、低ビットレートでＣＰＵメモリアクセス状態を抽出できるという効果を有し、ＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）等のシステムＬＳＩにおいてソフトウェアの処理速度の面での最適化、しいては、システム全体の処理速度向上等の用途に有用である。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施の形態１における構成図
【図２】本発明の実施の形態１における出力制御手段の流れ図
【図３】（ａ）本発明の実施の形態１における出力結果を示す図（ｂ）本発明の実施の形態１におけるキャッシュミスヒット数の統計図
【図４】本発明の実施の形態２における構成図
【図５】（ａ）本発明の実施の形態３におけるキャッシュメモリトレース圧縮原理の説明図（ｂ）本発明の実施の形態３におけるキャッシュメモリトレース圧縮動作の流れ図
【図６】（ａ）本発明の実施の形態３における例外時の説明図（ｂ）本発明の実施の形態３における出力結果を示す図
【図７】本発明の実施の形態４における構成図
【図８】本発明の実施の形態４における出力制御手段の流れ図
【図９】本発明の実施の形態４における出力結果を示す図
【図１０】従来のＣＰＵメモリアクセス解析装置の構成図
【符号の説明】
【００８６】
１０    システムＬＳＩ
１００    ＣＰＵメモリアクセス解析装置
１０１    キャッシュアクセス検出手段
１０２    プロセス切替検出手段
１０３    出力制御手段
１０４    出力選択手段
２００    ＣＰＵ
２０１    ＣＰＵコア
２０２    ＭＭＵ
２０３    キャッシュメモリ
３００    メモリ
３０１    ＯＳ
３０２    プロセスＡ
３０３    プロセスＢ
４００    システムバス
５０１    キャッシュアクセス検出手段
５０３    出力制御手段
５０４    出力選択手段
５０５    イベントカウンタ
５０６    キャッシュヒットカウンタ
６０３    キャッシュメモリ
７０３    出力制御手段
７０４    出力選択手段
７０７    タイムカウンタ
８００    ＣＰＵ
【図１】
2006285430.tif 000003
【図２】
2006285430.tif 000004
【図３】
2006285430.tif 000005
【図４】
2006285430.tif 000006
【図５】
2006285430.tif 000007
【図６】
2006285430.tif 000008
【図７】
2006285430.tif 000009
【図８】
2006285430.tif 000010
【図９】
2006285430.tif 000011
【図１０】
2006285430.tif 000012