(57)【要約】【課題】  プロセッサコア毎にキャッシュメモリが設けられたプロセッサシステムについて、プログラム開発者に対してプログラムの最適化に有用な情報を提供する。【解決手段】  データ更新通知部（２２ａ）は、中央処理装置（２１）によるキャッシュメモリ（２２）のデータ更新の発生を別のプロセッサコアに通知する際、更新対象データのアドレス情報および中央処理装置（２１）の実行対象処理の処理識別情報を送信する。第１プロファイル取得部（２４）は、中央処理装置（２１）の実行対象処理の処理識別情報および別のプロセッサコアから送信された処理識別情報の組み合わせ毎に、キャッシュ制御部（２３）による制御動作の実施回数をカウントする。【選択図】    図１
2009238142.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置およびキャッシュメモリを含む複数のプロセッサコアと、複数のプロセッサコアの間で共通に使用されるメインメモリとを備えるプロセッサシステムであって、
前記複数のプロセッサコアの各々は、
前記中央処理装置による前記キャッシュメモリのデータ更新の発生を別のプロセッサコアに通知する際、更新対象データの第１アドレス情報および前記中央処理装置の実行対象処理の第１処理識別情報を送信するデータ更新通知部と、
前記別のプロセッサコアから送信された第２アドレス情報に対応するデータが前記キャッシュメモリに存在する場合、前記キャッシュメモリに対してキャッシュ一貫性を維持するための制御動作を実施するキャッシュ制御部と、
前記第１処理識別情報および前記第２処理識別情報の組み合わせ毎に、前記キャッシュ制御部による前記制御動作の実施回数をカウントする第１プロファイル取得部とを備えることを特徴とするプロセッサシステム。
【請求項２】
請求項１に記載のプロセッサシステムにおいて、
前記複数のプロセッサコアの各々は、前記キャッシュ制御部が前記制御動作を実施し、且つ前記第１処理識別情報および前記第２処理識別情報が所定の組み合わせ条件と一致する度に、前記第２アドレス情報を保存する第２プロファイル取得部を更に備えることを特徴とするプロセッサシステム。
【請求項３】
請求項１または請求項２に記載のプロセッサシステムにおいて、
前記第１プロファイル取得部は、
メモリ部と、
前記キャッシュ制御部が制御動作を実施した場合、前記第１処理識別情報および前記第２処理識別情報の組み合わせを前記メモリ部の入力アドレスとして、前記メモリ部からデータを読み出し、読み出したデータの値をインクリメントして前記メモリ部に書き戻すメモリ制御部とを備えることを特徴とするプロセッサシステム。
【請求項４】
請求項１または請求項２に記載のプロセッサシステムにおいて、
前記第１プロファイル取得部は、
メモリ部と、
前記第１処理識別情報および前記第２処理識別情報が所定の組み合わせ条件と一致したことを検出する複数の条件一致検出部と、
前記キャッシュ制御部が前記制御動作を実施し、且つ前記複数の条件一致検出部のいずれかが条件一致を検出した場合、前記条件一致検出部に対応する条件識別情報を前記メモリ部の入力アドレスとして、前記メモリ部からデータを読み出し、読み出したデータの値をインクリメントして前記メモリ部に書き戻すメモリ制御部とを備えることを特徴とするプロセッサシステム。
【請求項５】
請求項２に記載のプロセッサシステムにおいて、
前記第２プロファイル取得部は、
メモリ部と、
前記第１処理識別情報および前記第２処理識別情報が所定の組み合わせ条件と一致したことを検出する条件一致検出部と、
前記キャッシュ制御部が前記制御動作を実施し、且つ前記条件一致検出部が条件一致を検出する度に、前記メモリ部の入力アドレスを変更しながら、前記第２アドレス情報を前記メモリ部に書き込むメモリ制御部とを備えることを特徴とするプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置（ＣＰＵ：Central Processing Unit）およびキャッシュメモリを含む複数のプロセッサコアと、複数のプロセッサコアの間で共通に使用されるメインメモリとを備えるプロセッサシステムに関する。
【背景技術】
【０００２】
マルチコア構成のプロセッサシステムにおいては、各プロセッサコアが個別にキャッシュメモリを有する場合、キャッシュメモリ間で同一アドレスのデータの値が一致しないという問題（キャッシュ一貫性問題）が発生する。キャッシュメモリ間で同一アドレスのデータの値が異なる場合、各プロセッサコアのＣＰＵが異なる値を参照して動作することになり、プログラム開発者の意図とは異なるシステム動作が実施される可能性がある。
【０００３】
この問題に対する解決策の１つとして、スヌープ方式のキャッシュ一貫性維持機構を搭載することが挙げられる。スヌープ方式のキャッシュ一貫性維持機構が搭載されている場合、キャッシュメモリ間で同一アドレスのデータの値が一致するようにハードウェアで制御されるため、プログラム開発者がキャッシュメモリ間でのデータ不一致を意識することなくプログラミングできるという利点がある。
【０００４】
スヌープ方式のキャッシュ一貫性維持機構では、例えば、あるプロセッサコアにてＣＰＵによるキャッシュメモリのデータ更新が発生した際、その他のプロセッサコアに対してデータ更新の発生が通知され、別のプロセッサコアのキャッシュメモリに同一アドレスのデータが存在する場合には、そのデータの無効化あるいは書き換えが実施されることで、キャッシュメモリ間でのデータ不一致が回避される（キャッシュ一貫性が維持される）。
【０００５】
但し、キャッシュメモリに対してデータの無効化あるいは書き換えを実施するには、キャッシュメモリを排他的に制御する必要があるため、データの無効化あるいは書き換えが終了するまでＣＰＵがキャッシュメモリにアクセスできなくなる。このため、ＣＰＵが停止して処理性能が低下する。従って、スヌープ方式のキャッシュ一貫性維持機構が搭載されている場合、キャッシュメモリに対するデータの無効化あるいは書き換えが少なくなるようにプログラムを最適化する必要がある。
【０００６】
なお、キャッシュメモリを有するデータプロセッサに関して、特権モードで動作するプログラムで使用可能なキャッシュメモリの制御命令をユーザモードで動作するプログラムでも使用できるようにするための制御方式が知られている（例えば、特許文献１を参照）。
【特許文献１】特開平６−１２３２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
キャッシュメモリに対するデータの無効化あるいは書き換えは、各プロセッサコア上で動作するプログラム間で共通に使用されるデータが多い場合に発生する。そこで、従来は、プログラム開発時にプログラム開発者が共有データ等をリストアップしてデータ更新通知の発生回数を予測するという手法が採用されていた。しかしながら、この手法では、より複雑なシステム構成を有するプロセッサシステムについて、プログラム中の修正すべき部分を特定することは容易ではない。
【０００８】
プログラム実行中のプロセッサコアの動作状況を把握するための単純な手法としては、キャッシュメモリに対するデータの無効化あるいは書き換えの発生回数をカウントすることが考えられる。しかしながら、この手法では、プログラム中のどの部分に問題があるのかを特定することができず、プログラムを最適化するには不十分である。プログラム中のどの部分に問題があるのかを特定するためには、ＣＰＵでどの処理が実行されているときにキャッシュメモリに対するデータの無効化あるいは書き換えが発生しているのかを把握することが有効である。
【０００９】
本発明の目的は、プロセッサコア毎にキャッシュメモリが設けられたプロセッサシステムについて、プログラム開発者に対してプログラムの最適化に有用な情報を提供することにある。
【課題を解決するための手段】
【００１０】
中央処理装置およびキャッシュメモリを含む複数のプロセッサコアと、複数のプロセッサコアの間で共通に使用されるメインメモリとを備えるプロセッサシステムにおいて、複数のプロセッサコアの各々は、データ更新通知部と、キャッシュ制御部と、第１プロファイル取得部とを備える。データ更新通知部は、中央処理装置によるキャッシュメモリのデータ更新の発生を別のプロセッサコアに通知する際、更新対象データの第１アドレス情報および中央処理装置の実行対象処理の第１処理識別情報を送信する。キャッシュ制御部は、別のプロセッサコアから送信された第２アドレス情報に対応するデータがキャッシュメモリに存在する場合、キャッシュメモリに対してキャッシュ一貫性を維持するための制御動作を実施する。第１プロファイル取得部は、第１処理識別情報および第２処理識別情報の組み合わせ毎に、キャッシュ制御部による制御動作の実施回数をカウントする。
【発明の効果】
【００１１】
処理識別情報の組み合わせ毎のキャッシュ制御部による制御動作の実施回数をプログラム開発者に対して提供することができる。これにより、各中央処理装置で実行される処理の組み合わせ毎に共有データが多いか否かを把握することができ、プログラムの最適化（チューニング）を効率よく実施することが可能になる。この結果、プログラムの開発工数を大幅に削減することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態について図面を用いて説明する。
【００１３】
図１は、本発明の第１実施形態を示している。第１実施形態のプロセッサシステム１０は、プロセッサコア２０−１、２０−２、インターコネクト３０およびメインメモリ４０を備えている。プロセッサコア２０−１、２０−２は、インターコネクト３０を介してメインメモリ４０にリードアクセス／ライトアクセス可能である。プロセッサコア２０−１、２０−２は、ＣＰＵ２１、キャッシュメモリ２２、キャッシュ制御機構２３およびプロファイル取得機構２４を備えている。プロセッサコア２０−１、２０−２は同一の内部構成を有しているため、ここでは、プロセッサコア２０−１に関して説明する。
【００１４】
プロセッサコア２０−１において、ＣＰＵ２１は、プログラムの実行により演算処理や制御処理等を実施する。ＣＰＵ２１には、ＣＰＵ２１の実行対象タスクのタスクＩＤを格納するタスクＩＤレジスタ２１ａが設けられている。キャッシュメモリ２２は、メインメモリ４０に比べて高速にアクセス可能なメモリであり、メインメモリ４０のデータのコピーを格納するために設けられている。キャッシュメモリ２２には、ＣＰＵ２１によるキャッシュメモリ２２のデータ更新の発生をプロセッサコア２０−２に通知するデータ更新通知部２２ａが設けられている。データ更新通知部２２ａは、データ更新の発生をプロセッサコア２０−２に通知する際に、更新対象データのアドレスに加えてＣＰＵ２１のタスクＩＤレジスタ２１ａに格納されているタスクＩＤを送信する。
【００１５】
キャッシュ制御機構２３は、アドレス比較部２３ａおよび無効化制御部２３ｂを備えている。アドレス比較部２３ａは、プロセッサコア２０−２から送信されたアドレスがキャッシュメモリ２２で参照されているアドレスと一致する場合にアドレス一致信号を活性化させる。無効化制御部２３ｂは、アドレス比較部２３ａによるアドレス一致信号の活性化に伴って、キャッシュメモリ２２の該当アドレスに関して無効化制御動作（データを無効化するための制御動作）を実施する。このように、プロセッサシステム１０には、スヌープ方式のキャッシュ一貫性維持機構が搭載されている。
【００１６】
プロファイル取得機構２４は、プログラム実行中のプロセッサコア２０−１の動作状況に関する情報を取得するための機構である。詳細については後述するが、プロファイル取得機構２４は、タスクＩＤの組み合わせ毎のキャッシュ制御機構２３による無効化制御動作の実施回数（無効化発生回数）をカウントする無効化発生回数取得機能と、所望のタスクＩＤの組み合わせに関してキャッシュ制御機構２３の無効化制御動作が実施される度にプロセッサコア２０−２から送信されたアドレス（更新先アドレス）を保存する更新先アドレス取得機能と有している。
【００１７】
図２は、図１のプロファイル取得機構の詳細を示している。プロセッサコア２０−１において、プロファイル取得機構２４は、タスクＩＤレジスタＲＥＧＡ、タスク条件レジスタＲＥＧＢ、比較器ＣＭＰ、セレクタＳＥＬＡ、ＳＥＬＢ、カウンタＣＮＴＡ、メモリＭＥＭＡおよび制御回路ＣＴＬＡを備えている。
【００１８】
タスクＩＤレジスタＲＥＧＡは、プロセッサコア２０−１のＣＰＵ２１のタスクＩＤレジスタ２１ａに格納されているタスクＩＤと同一のタスクＩＤ（ＩＤ１）を上位側に格納し、プロセッサコア２０−２から送信されたタスクＩＤ（ＩＤ２）を下位側に格納する。タスク条件レジスタＲＥＧＢは、プロセッサコア２０−１のＣＰＵ２１を介して供給される所望のタスクＩＤの組み合わせ条件（ＩＤＣ）を格納する。比較器ＣＭＰは、タスクＩＤレジスタＲＥＧＡの値とタスク条件レジスタＲＥＧＢの値とを比較し、双方が一致する場合に出力信号を活性化させる。
【００１９】
セレクタＳＥＬＡは、制御回路ＣＴＬＡの指示に従って、タスクＩＤレジスタＲＥＧＡの値またはカウンタＣＮＴＡの値のいずれかを選択してメモリＭＥＭＡの入力アドレスとして出力する。セレクタＳＥＬＢは、制御回路ＣＴＬＡの指示に従って、プロセッサコア２０−２から送信されたアドレスＡＤＲＳ、カウンタＣＮＴＡの値または“０”のいずれかを選択してメモリＭＥＭＡの入力データとして出力する。カウンタＣＮＴＡは、制御回路ＣＴＬＡの指示に従って、カウンタ値を“０”に初期化するクリア動作、メモリＭＥＭＡから出力されるデータＤＯＵＴの値をカウンタ値として取り込むロード動作またはカウンタ値をインクリメントするカウントアップ動作のいずれかを実施する。
【００２０】
メモリＭＥＭＡは、制御回路ＣＴＬＡからライトイネーブル端子ＷＥに供給される制御信号の活性化に伴って、セレクタＳＥＬＡからアドレス端子Ａに供給されるアドレスにセレクタＳＥＬＢからデータ入力端子Ｄに供給されるデータを書き込む。また、メモリＭＥＭＡは、制御回路ＣＴＬＡからリードイネーブル端子ＲＥに供給される制御信号の活性化に伴って、セレクタＳＥＬＡからアドレス端子Ａに供給されるアドレスのデータを読み出してデータ出力端子ＱからデータＤＯＵＴとして出力する。制御回路ＣＴＬＡは、モード信号ＭＤ、アドレス一致信号ＭＡＴＣＨ、初期化要求信号ＩＮＩ、測定要求信号ＭＥＳ、読出要求信号ＲＤおよび比較器ＣＭＰの出力信号に基づいて、セレクタＳＥＬＡ、ＳＥＬＢ、カウンタＣＮＴＡおよびメモリＭＥＭＡを制御する。
【００２１】
以上のようなプロファイル取得機構２４においては、メモリＭＥＭＡにおける全てのアドレスに関して“０”を書き込む初期化動作、タスクＩＤの組み合わせ毎の無効化発生回数や所望のタスクＩＤの組み合わせに関してキャッシュ制御機構２３が無効化制御動作を実施した際の更新先アドレスの履歴をメモリＭＥＭＡに格納する測定動作またはメモリＭＥＭＡにおける全てのアドレスに関してデータを読み出す読出動作のいずれかが以下のように実施される。
【００２２】
図３は、図２のプロファイル取得機構の初期化動作を示している。プロファイル取得機構２４では、初期化要求信号ＩＮＩが活性化されると、制御回路ＣＴＬＡの指示により、セレクタＳＥＬＡがメモリＭＥＭＡの入力アドレスとしてカウンタＣＮＴＡの値を出力するとともに、セレクタＳＥＬＢがメモリＭＥＭＡの入力データとして“０”を出力する。そして、制御回路ＣＴＬＡがメモリＭＥＭＡのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＡがカウンタＣＮＴＡの値に対応するアドレスに“０”を書き込む。この後、制御回路ＣＴＬＡの指示により、カウンタＣＮＴＡがカウントアップ動作を実施することで、メモリＭＥＭＡの入力アドレスがインクリメントされる。このような動作がメモリＭＥＭＡの最終アドレスに“０”が書き込まれるまで繰り返し実施されることで、メモリＭＥＭＡにおける全てのアドレスに関して“０”が書き込まれる。
【００２３】
図４は、図２のプロファイル取得機構の測定動作（無効化発生回数取得モード）を示している。プロファイル取得機構２４では、モード信号ＭＤが“無効化発生回数取得モード”に設定された状態で測定要求信号ＭＥＳが活性化されると、制御回路ＣＴＬＡの指示により、セレクタＳＥＬＡがメモリＭＥＭＡの入力アドレスとしてタスクＩＤレジスタＲＥＧＡの値を出力するとともに、セレクタＳＥＬＢがメモリＭＥＭＡの入力データとしてカウンタＣＮＴＡの値を出力する。この状態で、キャッシュ制御機構２３のアドレス比較部２３ａによりアドレス一致信号ＭＡＴＣＨが活性化されると、制御回路ＣＴＬＡがメモリＭＥＭＡのリードイネーブル端子ＲＥへの制御信号を活性化させることで、メモリＭＥＭＡがタスクＩＤレジスタＲＥＧＡの値に対応するアドレスのデータを読み出してデータＤＯＵＴとして出力する。この後、制御回路ＣＴＬＡの指示により、カウンタＣＮＴＡがロード動作およびカウントアップ動作を順次実施することで、メモリＭＥＭＡの入力データの値がデータＤＯＵＴの値をインクリメントした値に設定される。そして、制御回路ＣＴＬＡがメモリＭＥＭＡのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＡがタスクＩＤレジスタＲＥＧＡの値に対応するアドレスにデータＤＯＵＴの値をインクリメントした値のデータを書き込む。このような動作により、タスクＩＤの組み合わせ毎のキャッシュ制御機構２３による無効化制御動作の実施回数をカウントする無効化発生回数取得機能が実現される。
【００２４】
図５は、図２のプロファイル取得機構の測定動作（更新先アドレス取得モード）を示している。プロファイル取得機構２４では、モード信号ＭＤが“更新先アドレス取得モード”に設定された状態で測定要求信号ＭＥＳが活性化されると、制御回路ＣＴＬＡの指示により、セレクタＳＥＬＡがメモリＭＥＭＡの入力アドレスとしてカウンタＣＮＴＡの値を出力するとともに、セレクタＳＥＬＢがメモリＭＥＭＡの入力データとして別のプロセッサコアから送信されたアドレスＡＤＲＳを出力する。この状態で、比較器ＣＭＰの出力信号が活性化され、且つキャッシュ制御機構２３のアドレス比較部２３ａによりアドレス一致信号ＭＡＴＣＨが活性化されると、制御回路ＣＴＬＡがメモリＭＥＭＡのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＡがカウンタＣＮＴＡの値に対応するアドレスにアドレスＡＤＲＳを書き込む。この後、制御回路ＣＬＴＡの指示により、カウンタＣＮＴＡがカウントアップ動作を実施することで、メモリＭＥＭＡの入力アドレスがインクリメントされる。このような動作により、所望のタスクＩＤの組み合わせに関してキャッシュ制御機構２３の無効化制御動作が実施される度に別のプロセッサコアから送信されたアドレスを保存する更新先アドレス取得機能が実現される。
【００２５】
図６は、図２のプロファイル取得機構の読出動作を示している。プロファイル取得機構２４では、読出要求信号ＲＤが活性化されると、制御回路ＣＴＬＡの指示により、セレクタＳＥＬＡがメモリＭＥＭＡの入力アドレスとしてカウンタＣＮＴＡの値を出力する。そして、制御回路ＣＴＬＡがメモリＭＥＭＡのリードイネーブル端子ＲＥへの制御信号を活性化させることで、メモリＭＥＭＡがカウンタＣＮＴＡの値に対応するアドレスのデータを読み出してデータＤＯＵＴとして出力する。この後、制御回路ＣＴＬＡの指示により、カウンタＣＮＴＡがカウントアップ動作を実施することで、メモリＭＥＭＡの入力アドレスがインクリメントされる。このような動作がメモリＭＥＭＡの最終アドレスのデータが読み出されるまで繰り返し実施されることで、メモリＭＥＭＡにおける全てのアドレスに関してデータが読み出される。
【００２６】
図７は、図２のプロファイル取得機構の動作フローを示している。図８は、図２のプロファイル取得機構のメモリ内容を示している。制御回路ＣＴＬＡは、タスク条件レジスタＲＥＧＢに対する所望のタスクＩＤの組み合わせ条件の設定やカウンタＣＮＴＡのクリア動作の実施等の初期設定が実施された後、初期化要求信号ＩＮＩ、測定要求信号ＭＥＳおよび読出要求信号ＲＤの中でどの要求信号が活性化されているかを判定する（ステップＳ１１０、Ｓ１２０）。
【００２７】
初期化要求信号ＩＮＩが活性化されている場合、制御回路ＣＴＬＡは、セレクタＳＥＬＡにメモリＭＥＭＡの入力アドレスとしてカウンタＣＮＴＡの値を出力させるとともに、セレクタＳＥＬＢにメモリＭＥＭＡの入力データとして“０”を出力させる（ステップＳ１３１、Ｓ１３２）。そして、制御回路ＣＴＬＡは、メモリＭＥＭＡのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＡに書き込み動作を実施させる（ステップＳ１３３）。この後、制御回路ＣＴＬＡは、カウンタＣＮＴＡにカウントアップ動作を実施させた後、メモリＭＥＭＡの最終アドレスに関して書き込み動作が完了したか否かを判定する（ステップＳ１３４、Ｓ１３５）。ステップＳ１３３〜Ｓ１３５の動作は、ステップＳ１３５においてメモリＭＥＭＡの最終アドレスに関して書き込み動作が完了したと判定されるまで繰り返し実施される。
【００２８】
測定要求信号ＭＥＳが活性化されている場合、制御回路ＣＴＬＡは、モード信号ＭＤが“無効化発生回数取得モード”または“更新先アドレス取得モード”のいずれに設定されているかを判定する（ステップＳ１４０）。モード信号ＭＤが“無効化発生回数取得モード”に設定されている場合、制御回路ＣＴＬＡは、セレクタＳＥＬＡにメモリＭＥＭＡの入力アドレスとしてタスクＩＤレジスタＲＥＧＡの値（タスクＩＤの組み合わせ）を出力させるとともに、セレクタＳＥＬＢにメモリＭＥＭＡの入力データとしてカウンタＣＮＴＡの値を出力させる（ステップＳ１５１、Ｓ１５２）。そして、制御回路ＣＴＬＡは、アドレス一致信号ＭＡＴＣＨが活性化されるまで待機する（ステップＳ１５３）。アドレス一致信号ＭＡＴＣＨが活性化されると、制御回路ＣＴＬＡは、メモリＭＥＭＡのリードイネーブル端子ＲＥへの制御信号を活性化させることで、メモリＭＥＭＡに読み出し動作を実施させる（ステップＳ１５４）。これと同時に、制御回路ＣＬＴＡは、カウンタＣＮＴＡにロード動作を実施させる。この後、制御回路ＣＴＬＡは、カウンタＣＮＴＡにカウントアップ動作を実施させた後、メモリＭＥＭＡのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＡに書き込み動作を実施させる（ステップＳ１５５、Ｓ１５６）。そして、制御回路ＣＴＬＡは、測定要求信号ＭＥＳが活性化されているか否かを判定する（ステップＳ１５７）。ステップＳ１５３〜Ｓ１５７の動作は、ステップＳ１５７において測定要求信号ＭＥＳが活性化されていないと判定されるまで繰り返し実施される。以上のような動作が実施されることで、図８（ａ）に示すように、タスクＩＤの組み合わせ毎の無効化発生回数がメモリＭＥＭＡに格納される。
【００２９】
モード信号ＭＤが“更新先アドレス取得モード”に設定されている場合、制御回路ＣＴＬＡは、セレクタＳＲＬＡにメモリＭＥＭＡの入力アドレスとしてカウンタＣＮＴＡの値を出力させるとともに、セレクタＳＥＬＢにメモリＭＥＭＡの入力データとしてアドレスＡＤＲＳを出力させる（ステップＳ１６１、Ｓ１６２）。そして、制御回路ＣＴＬＡは、アドレス一致信号ＭＡＴＣＨが活性化されるまで待機する（ステップＳ１６３）。アドレス一致信号ＭＡＴＣＨが活性化されると、制御回路ＣＴＬＡは、比較器ＣＭＰの出力信号に基づいてタスクＩＤレジスタＲＥＧＡの値がタスク条件レジスタＲＥＧＢの値と一致するか否かを判定する（ステップＳ１６４）。タスクＩＤレジスタＲＥＧＡの値がタスク条件レジスタＲＥＧＢの値と一致しない場合、制御回路ＣＴＬＡは、アドレス一致信号ＭＡＴＣＨが活性化されるまで再び待機する。タスクＩＤレジスタＲＥＧＡの値がタスク条件レジスタＲＥＧＢの値と一致する場合、制御回路ＣＴＬＡは、メモリＭＥＭＡのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＡに書き込み動作を実施させる（ステップＳ１６５）。この後、制御回路ＣＬＴＡは、カウンタＣＮＴＡにカウントアップ動作を実施させた後、測定要求信号ＭＥＳが活性化されているか否かを判定する（ステップＳ１６６、Ｓ１６７）。ステップＳ１６３〜Ｓ１６７の動作は、ステップＳ１６７において測定要求信号ＭＥＳが活性化されていないと判定されるまで繰り返し実施される。以上のような動作が実施されることで、図８（ｂ）に示すように、所望のタスクＩＤの組み合わせ条件に関してキャッシュ制御機構２３が無効化制御動作を実施した際の更新先アドレスの履歴がメモリＭＥＭＡに格納される。
【００３０】
読出要求信号ＲＤが活性化されている場合、制御回路ＣＴＬＡは、セレクタＳＥＬＡにメモリＭＥＭＡの入力アドレスとしてカウンタＣＮＴＡの値を出力させる（ステップＳ１７１）。そして、制御回路ＣＴＬＡは、メモリＭＥＭＡのリードイネーブル端子ＲＥへの制御信号を活性化させることで、メモリＭＥＭＡに読み出し動作を実施させる（ステップＳ１７２）。この後、制御回路ＣＴＬＡは、カウンタＣＮＴＡにカウントアップ動作を実施させた後、メモリＭＥＭＡの最終アドレスに関して読み出し動作が完了したか否かを判定する（ステップＳ１７３、Ｓ１７４）。ステップＳ１７２〜Ｓ１７４の動作は、ステップＳ１７４においてメモリＭＥＭＡの最終アドレスに関して読み出し動作が完了したと判定されるまで繰り返し実施される。
【００３１】
図９は、第１実施形態におけるプログラム開発者の処理フローを示している。図１０は、プログラム開発環境の一例を示している。プログラム開発者は、例えば、ホストコンピュータ１００がＩＣＥ（In-Circuit Emulator）２００を介してシステムボード３００に接続されたプログラム開発環境において、ホストコンピュータ１００のデバッグ用ツールを使用してプロセッサシステムのプログラムを開発する。プログラム開発者は、プログラム開発時に、ホストコンピュータ１００を操作することで、プログラムの最適化に利用する情報（タスクＩＤの組み合わせ毎の無効化発生回数や所望のタスクＩＤの組み合わせに関する無効化発生時の更新先アドレスの履歴）を取得する。
【００３２】
まず、プログラム開発者は、プロファイル取得機構２４にてメモリＭＥＭＡの全てのアドレスに関して“０”を書き込ませるために、初期化要求信号ＩＮＩを一時的に活性化させる（ステップＳ５１１）。次に、プログラム開発者は、モード信号ＭＤを“無効化発生回数取得モード”に設定する（ステップＳ５１２）。続いて、プログラム開発者は、測定要求信号ＭＥＳを活性化させた後、開発中のプログラムを起動させる（ステップＳ５１３、Ｓ５１４）。これにより、プロファイル取得機構２４にてタスクＩＤの組み合わせ毎の無効化発生回数がメモリＭＥＭＡに格納される。この後、プログラム開発者は、測定要求信号ＭＥＳを非活性化させた後、プロファイル取得機構２４にてメモリＭＥＭＡの全てのアドレスに関してデータを読み出させるために、読出要求信号ＲＤを一時的に活性化させる（ステップＳ５１５、Ｓ５１６）。このとき、プロファイル取得機構２４から出力されたデータの内容（タスクＩＤの組み合わせ毎の無効化発生回数）がホストコンピュータ１００におけるデバッグ用ツールの画面に表示される。そして、プログラム開発者は、デバッグ用ツールの画面に表示された情報に基づいてプログラム中のタスク間の関連性の高い部分を解析する（ステップＳ５１７）。
【００３３】
続いて、プログラム開発者は、プロファイル取得機構２４にてメモリＭＥＭＡの全てのアドレスに関して“０”を書き込ませるために、初期化要求信号ＩＮＩを一時的に活性化させる（ステップＳ５２１）。次に、プログラム開発者は、モード信号ＭＤを“更新先アドレス取得モード”に設定する（ステップＳ５２２）。そして、プログラム開発者は、プロファイル取得機構２４のタスク条件レジスタＲＥＧＢに所望のタスクＩＤの組み合わせ条件を設定する（ステップＳ５２３）。続いて、プログラム開発者は、測定要求信号ＭＥＳを活性化させた後、開発中のプログラムを起動させる（ステップＳ５２４、Ｓ５２５）。これにより、プロファイル取得機構２４にて所望のタスクＩＤの組み合わせに関する無効化発生時の更新先アドレスの履歴がメモリＭＥＭＡに格納される。この後、プログラム開発者は、測定要求信号ＭＥＳを非活性化させた後、プロファイル取得機構２４にてメモリＭＥＭＡの全てのアドレスに関してデータを読み出させるために、読出要求信号ＲＤを一時的に活性化させる（ステップＳ５２６、Ｓ５２７）。このとき、プロファイル取得機構２４から出力されたデータの内容（所望のタスクＩＤの組み合わせに関する無効化発生時の更新先アドレスの履歴）がホストコンピュータ１００におけるデバッグ用ツールの画面に表示される。そして、プログラム開発者は、デバッグ用ツールの画面に表示された情報に基づいてタスク間で共有されるデータを特定する（ステップＳ５２８）。
【００３４】
図１１は、プログラム最適化の一例を示している。例えば、プログラム開発者は、デバッグ用ツールの画面に表示された情報（タスクＩＤの組み合わせ毎の無効化発生回数）に基づいて、プロセッサコア２０−１でタスクＡが実行され、且つプロセッサコア２０−２でタスクＣが実行されているときにキャッシュ制御機構２３の無効化制御動作が多く発生すること（タスクＡおよびタスクＣの関連性が高いこと）を認識すると、プロセッサコア２０−１でタスクＣが実行されるようにプログラムを修正する。あるいは、プログラム開発者は、タスクＡおよびタスクＣに関して同一のキャッシュラインにデータが乗らないようにアドレス配置を工夫する。
【００３５】
以上のような第１実施形態では、タスクＩＤの組み合わせ毎の無効化発生回数や所望のタスクＩＤの組み合わせに関してキャッシュ制御機構２３が無効化制御動作を実施した際の更新先アドレスの履歴をプログラム開発者に対して提供することができる。これにより、プログラムの最適化を効率よく実施することが可能になり、その結果、プログラムの開発工数の大幅な削減を実現することができる。
【００３６】
図１２は、本発明の第２実施形態を示している。なお、第２実施形態を説明するにあたって、第１実施形態で説明した要素と同一の要素については、第１実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【００３７】
第２実施形態のプロセッサシステムは、第１実施形態（図１）のプロセッサシステム１０においてプロセッサコア２０−１、２０−２のプロファイル取得機構２４をプロファイル取得機構２４’に置き換えたものである。プロセッサコア２０−１において、プロファイル取得機構２４’は、タスクＩＤレジスタＲＥＧＡ、タスク条件レジスタＲＥＧＢ０〜ＲＥＧＢ３、比較器ＣＭＰ０〜ＣＭＰ３、セレクタＳＥＬＣ、ＳＥＬＤ、カウンタＣＮＴＢ、メモリＭＥＭＢおよび制御回路ＣＴＬＢを備えている。
【００３８】
タスクＩＤレジスタＲＥＧＡは、プロセッサコア２０−１のＣＰＵ２１のタスクＩＤレジスタ２１ａに格納されているタスクＩＤと同一のタスクＩＤ（ＩＤ１）を上位側に格納し、プロセッサコア２０−２から送信されたタスクＩＤ（ＩＤ２）を下位側に格納する。タスク条件レジスタＲＥＧＢｉ（ｉ＝０，１，２，３）は、プロセッサコア２０−１のＣＰＵ２１を介して供給される所望のタスクＩＤの組み合わせ条件（ＩＤＣ）を格納する。比較器ＣＭＰｉは、タスクＩＤレジスタＲＥＧＡの値とタスク条件レジスタＲＥＧＢｉの値とを比較し、双方が一致する場合に出力信号を活性化させる。
【００３９】
セレクタＳＥＬＣは、制御回路ＣＴＬＢの指示に従って、タスク条件レジスタＲＥＧＢのレジスタ番号（０，１，２，３）またはカウンタＣＮＴＢの値のいずれかを選択してメモリＭＥＭＢの入力アドレスとして出力する。セレクタＳＥＬＤは、制御回路ＣＴＬＢの指示に従って、カウンタＣＮＴＢの値または“０”のいずれかを選択してメモリＭＥＭＢの入力データとして出力する。カウンタＣＮＴＢは、制御回路ＣＴＬＢの指示に従って、カウンタ値を“０”に初期化するクリア動作、メモリＭＥＭＢから出力されるデータＤＯＵＴの値をカウンタ値として取り込むロード動作またはカウンタ値をインクリメントするカウントアップ動作のいずれかを実施する。
【００４０】
メモリＭＥＭＢは、制御回路ＣＴＬＢからライトイネーブル端子ＷＥに供給される制御信号の活性化に伴って、セレクタＳＥＬＣからアドレス端子Ａに供給されるアドレスにセレクタＳＥＬＤからデータ入力端子Ｄに供給されるデータを書き込む。また、メモリＭＥＭＢは、制御回路ＣＴＬＢからリードイネーブル端子ＲＥに供給される制御信号の活性化に伴って、セレクタＳＥＬＣからアドレス端子Ａに供給されるアドレスのデータを読み出してデータ出力端子ＱからデータＤＯＵＴとして出力する。制御回路ＣＴＬＢは、アドレス一致信号ＭＡＴＣＨ、初期化要求信号ＩＮＩ、測定要求信号ＭＥＳ、読出要求信号ＲＤおよび比較器ＣＭＰ０〜ＣＭＰ３の出力信号に基づいて、セレクタＳＥＬＣ、ＳＥＬＤ、カウンタＣＮＴＢおよびメモリＭＥＭＢを制御する。
【００４１】
以上のようなプロファイル取得機構２４’においては、メモリＭＥＭＢにおける全てのアドレスに関して“０”を書き込む初期化動作、所望のタスクＩＤの組み合わせ毎の無効化発生回数をメモリＭＥＭＢに格納する測定動作またはメモリＭＥＭＢにおける全てのアドレスに関してデータを読み出す読出動作のいずれかが実施される。
【００４２】
図１３は、図１２のプロファイル取得機構の動作フローを示している。図１４は、図１２のプロファイル取得機構のメモリ内容を示している。制御回路ＣＴＬＢは、タスク条件レジスタＲＥＧＢ０〜ＲＥＧＢ３に対する所望のタスクＩＤの組み合わせ条件の設定やカウンタＣＮＴＢのクリア動作の実施等の初期設定が実施された後、初期化要求信号ＩＮＩ、測定要求信号ＭＥＳおよび読出要求信号ＲＤの中でどの要求信号が活性化されているかを判定する（ステップＳ２１０、Ｓ２２０）。
【００４３】
初期化要求信号ＩＮＩが活性化されている場合、制御回路ＣＴＬＢは、セレクタＳＥＬＣにメモリＭＥＭＢの入力アドレスとしてカウンタＣＮＴＢの値を出力させるとともに、セレクタＳＥＬＤにメモリＭＥＭＢの入力データとして“０”を出力させる（ステップＳ２３１、Ｓ２３２）。そして、制御回路ＣＴＬＢは、メモリＭＥＭＢのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＢに書き込み動作を実施させる（ステップＳ２３３）。この後、制御回路ＣＴＬＢは、カウンタＣＮＴＢにカウントアップ動作を実施させた後、メモリＭＥＭＢの最終アドレスに関して書き込み動作が完了したか否かを判定する（ステップＳ２３４、Ｓ２３５）。ステップＳ２３３〜Ｓ２３５の動作は、ステップＳ２３５においてメモリＭＥＭＢの最終アドレスに関して書き込み動作が完了したと判定されるまで繰り返し実施される。
【００４４】
測定要求信号ＭＥＳが活性化されている場合、制御回路ＣＴＬＢは、セレクタＳＥＬＤにメモリＭＥＭＢの入力データとしてカウンタＣＮＴＢの値を出力させる（ステップＳ２４１）。そして、制御回路ＣＴＬＡは、アドレス一致信号ＭＡＴＣＨが活性化されるまで待機する（ステップＳ２４２）。アドレス一致信号ＭＡＴＣＨが活性化されると、制御回路ＣＴＬＢは、比較器ＣＭＰ０〜ＣＭＰ３の出力信号に基づいてタスクＩＤレジスタＲＥＧＡの値がタスク条件レジスタＲＥＧＢ０〜ＲＥＧＢ３のいずれかの値と一致するか否かを判定する（ステップＳ２４３）。タスクＩＤレジスタＲＥＧＡの値がタスク条件レジスタＲＥＧＢ０〜ＲＥＧＢ３の全ての値と一致しない場合、制御回路ＣＴＬＢは、アドレス一致信号ＭＡＴＣＨが活性化されるまで再び待機する。タスクＩＤレジスタＲＥＧＡの値がタスク条件レジスタＲＥＧＢ０〜ＲＥＧＢ３のいずれかの値と一致する場合、制御回路ＣＴＬＢは、セレクタＳＥＬＣにタスクＩＤレジスタＲＥＧＡと同一のタスクＩＤの組み合わせを格納しているタスク条件レジスタＲＥＧＢのレジスタ番号（タスク条件番号）を出力させる（ステップＳ２４４）。そして、制御回路ＣＴＬＢは、メモリＭＥＭＢのリードイネーブル端子ＲＥへの制御信号を活性化させることで、メモリＭＥＭＢに読み出し動作を実施させる（ステップＳ２４５）。これと同時に、制御回路ＣＬＴＢは、カウンタＣＮＴＢにロード動作を実施させる。この後、制御回路ＣＴＬＢは、カウンタＣＮＴＢにカウントアップ動作を実施させた後、メモリＭＥＭＢのライトイネーブル端子ＷＥへの制御信号を活性化させることで、メモリＭＥＭＢに書き込み動作を実施させる（ステップＳ２４６、Ｓ２４７）。そして、制御回路ＣＴＬＢは、測定要求信号ＭＥＳが活性化されているか否かを判定する（ステップＳ２４８）。ステップＳ２４２〜Ｓ２４８の動作は、ステップＳ２４８において測定要求信号ＭＥＳが活性化されていないと判定されるまで繰り返し実施される。以上のような動作が実施されることで、図１４に示すように、所望のタスクＩＤの組み合わせ毎の無効化発生回数がメモリＭＥＭＢに格納される。
【００４５】
読出要求信号ＲＤが活性化されている場合、制御回路ＣＴＬＢは、セレクタＳＥＬＣにメモリＭＥＭＢの入力アドレスとしてカウンタＣＮＴＢの値を出力させる（ステップＳ２５１）。そして、制御回路ＣＴＬＢは、メモリＭＥＭＢのリードイネーブル端子ＲＥへの制御信号を活性化させることで、メモリＭＥＭＢに読み出し動作を実施させる（ステップＳ２５２）。この後、制御回路ＣＴＬＢは、カウンタＣＮＴＢにカウントアップ動作を実施させた後、メモリＭＥＭＢの最終アドレスに関して読み出し動作が完了したか否かを判定する（ステップＳ２５３、Ｓ２５４）。ステップＳ２５２〜Ｓ２５４の動作は、ステップＳ２５４においてメモリＭＥＭＢの最終アドレスに関して読み出し動作が完了したと判定されるまで繰り返し実施される。
【００４６】
図１５は、第２実施形態におけるプログラム開発者の処理フローを示している。プログラム開発者は、第１実施形態と同様に、例えば、図１０のプログラム開発環境において、ホストコンピュータ１００のデバッグ用ツールを使用してプロセッサシステムのプログラムを開発する。プログラム開発者は、プログラム開発時に、ホストコンピュータ１００を操作することで、プログラムの最適化に利用する情報（所望のタスクＩＤの組み合わせ毎の無効化発生回数）を取得する。
【００４７】
まず、プログラム開発者は、プロファイル取得機構２４’にてメモリＭＥＭＢの全てのアドレスに関して“０”を書き込ませるために、初期化要求信号ＩＮＩを一時的に活性化させる（ステップＳ６１１）。次に、プログラム開発者は、プロファイル取得機構２４’のタスク条件レジスタＲＥＧＢ０〜ＲＥＧＢ３に所望のタスクＩＤの組み合わせ条件を設定する（ステップＳ６１２）。続いて、プログラム開発者は、測定要求信号ＭＥＳを活性化させた後、開発中のプログラムを起動させる（ステップＳ６１３、Ｓ６１４）。これにより、プロファイル取得機構２４’にて所望のタスクＩＤの組み合わせ毎の無効化発生回数がメモリＭＥＭＢに格納される。この後、プログラム開発者は、測定要求信号ＭＥＳを非活性化させた後、プロファイル取得機構２４’にてメモリＭＥＭＢの全てのアドレスに関してデータを読み出させるために、読出要求信号ＲＤを一時的に活性化させる（ステップＳ６１５、Ｓ６１６）。このとき、プロファイル取得機構２４’から出力されたデータの内容（所望のタスクＩＤの組み合わせ毎の無効化発生回数）がホストコンピュータ１００におけるデバッグ用ツールの画面に表示される。そして、プログラム開発者は、デバッグ用ツールの画面に表示された情報に基づいてプログラム中のタスク間の関連性の高い部分を解析する（ステップＳ６１７）。
【００４８】
以上のような第２実施形態では、所望のタスクＩＤの組み合わせ毎の無効化発生回数をプログラム開発者に対して提供することができる。従って、第１実施形態と同様に、プログラムの最適化を効率よく実施することが可能になり、その結果、プログラムの開発工数の大幅な削減を実現することができる。また、プロファイル取得機構２４’のメモリＭＥＭＢにおいてはタスク条件レジスタＲＥＧＢの個数分のアドレスが用意されていればよいため、プロファイル取得機構の小規模化を実現することができる。このため、プロセッサシステムのコスト削減に寄与することができる。
【００４９】
なお、第１および第２実施形態では、キャッシュメモリのデータ更新通知部がデータ更新の発生を別のプロセッサコアに通知する際にタスクＩＤを送信する例について説明したが、キャッシュメモリのデータ更新通知部がデータ更新の発生を別のプロセッサコアに通知する際にプロセスＩＤ、スレッドＩＤあるいは関数ＩＤ等を送信するようにしてもよい。また、第１実施形態では、プロファイル取得機構の回路規模を低減するために、無効化発生回数取得機能と更新先アドレス取得機能との間で回路が共有される例について説明したが、無効化発生回数取得機能を具現する回路と更新先アドレス取得機能を具現する回路とが個別に設けられてもよいことは言うまでもない。
【００５０】
以上、本発明について詳細に説明してきたが、前述の実施形態は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【図面の簡単な説明】
【００５１】
【図１】本発明の第１実施形態を示す図である。
【図２】図１のプロファイル取得機構の詳細を示す図
【図３】図２のプロファイル取得機構の初期化動作を示す図である。
【図４】図２のプロファイル取得機構の測定動作（無効化発生回数取得モード）を示す図である。
【図５】図２のプロファイル取得機構の測定動作（更新先アドレス取得モード）を示す図である。
【図６】図２のプロファイル取得機構の読出動作を示す図である。
【図７】図２のプロファイル取得機構の動作フローを示す図である。
【図８】図２のプロファイル取得機構のメモリ内容を示す図である。
【図９】第１実施形態におけるプログラム開発者の処理フローを示す図である。
【図１０】プログラム開発環境の一例を示す図である。
【図１１】プログラム最適化の一例を示す図である。
【図１２】本発明の第２実施形態を示す図である。
【図１３】図１２のプロファイル取得機構の動作フローを示す図である。
【図１４】図１２のプロファイル取得機構のメモリ内容を示す図である。
【図１５】第２実施形態におけるプログラム開発者の処理フローを示す図である。
【符号の説明】
【００５２】
１０‥プロセッサシステム；２０−１、２０−２‥プロセッサコア；２１‥ＣＰＵ；２１ａ‥タスクＩＤレジスタ；２２‥キャッシュメモリ；２２ａ‥データ更新通知部；２３‥キャッシュ制御機構；２３ａ‥アドレス比較部；２３ｂ‥無効化制御部；２４、２４’‥プロファイル取得機構；３０‥インターコネクト；４０‥メインメモリ；ＣＭＰ、ＣＭＰ０〜ＣＭＰ３‥比較器；ＣＮＴＡ、ＣＮＴＢ‥カウンタ；ＣＴＬＡ、ＣＴＬＢ‥制御回路；ＭＥＭＡ、ＭＥＭＢ‥メモリ；ＲＥＧＡ‥タスクＩＤレジスタ；ＲＥＧＢ、ＲＥＧＢ０〜ＲＥＧＢ３‥タスク条件レジスタ；ＳＥＬＡ、ＳＥＬＢ、ＳＥＬＣ、ＳＥＬＤ‥セレクタ
【図１】
2009238142.tif 000003
【図２】
2009238142.tif 000004
【図３】
2009238142.tif 000005
【図４】
2009238142.tif 000006
【図５】
2009238142.tif 000007
【図６】
2009238142.tif 000008
【図７】
2009238142.tif 000009
【図８】
2009238142.tif 000010
【図９】
2009238142.tif 000011
【図１０】
2009238142.tif 000012
【図１１】
2009238142.tif 000013
【図１２】
2009238142.tif 000014
【図１３】
2009238142.tif 000015
【図１４】
2009238142.tif 000016
【図１５】
2009238142.tif 000017