(57)【特許請求の範囲】
【請求項１】
複数の処理装置がメモリを共有するメモリ共有データ処理システムであって、
前記処理装置は、タイマから通知される時刻を用いて前記処理装置で実行される処理ごとの開始時刻と終了時刻を測定する時間測定部と、
前記処理の開始から終了までの間、前記処理のメモリへのアクセス量を測定するアクセス測定部と、
前記メモリへのアクセスの測定対象領域としての測定領域開始アドレスと測定領域終了アドレスを測定アドレス情報として保持し、前記処理の前記メモリへのアクセスごとにアクセス先アドレスが前記測定領域開始アドレスと前記測定領域終了アドレスの間の範囲であれば前記アクセス量の測定を前記アクセス測定部に指示するアドレス比較部と、
を具備することを特徴とするメモリ共有データ処理システム。
【請求項２】
前記時間測定部は、前記開始時刻と前記終了時刻と、前記アクセス測定部によって測定された前記アクセス量を保持することを特徴とする請求項１に記載のメモリ共有データ処理システム。
【請求項３】
複数の各処理装置ごとに、かつ該各処理装置によって指示される時間範囲内ごとに、前記複数の処理装置に共通のメモリへのアクセス量を測定するアクセス量測定手段と、
該測定の結果を、前記処理装置ごと、前記時間範囲内ごとに記憶するアクセス量記憶手段と、
前記メモリへのアクセスの測定対象領域としての測定領域開始アドレスと測定領域終了アドレスを測定アドレス情報として保持し、前記メモリへのアクセスごとにアクセス先アドレスが前記測定領域開始アドレスと前記測定領域終了アドレスの間の範囲であれば前記アクセス量の測定を前記アクセス量測定手段に指示するアドレス比較手段と、
を備えることを特徴とするメモリアクセス量測定装置。
【請求項４】
複数の各処理装置ごとに、かつ該各処理装置によって指示される時間範囲内ごとに、前記複数の処理装置に共通のメモリへのアクセス量を測定し、
該測定の結果を、前記処理装置ごと、前記時間範囲内ごとに記憶し、
前記メモリへのアクセスの測定対象領域としての測定領域開始アドレスと測定領域終了アドレスを測定アドレス情報として保持し、前記メモリへのアクセスごとにアクセス先アドレスが前記測定領域開始アドレスと前記測定領域終了アドレスの間の範囲であれば前記アクセス量の測定を指示する、
ことを特徴とするメモリアクセス量測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置がメモリを共有するシステムのメモリアクセス量の測定技術に関する。
【背景技術】
【０００２】
従来、複数の処理装置とメモリを備えるシステムでは、複数の処理装置がバスマスタとなりバスを共有する構成になっている。例えば、マルチコアプロセッサにおいては複数の処理装置としてプロセッサコアが設けられ、プロセッサコアがバスマスタとしてバスを共有する。また、ＣＰＵなどを備えたユニットを複数有するシステムにおいては、ユニットを処理装置として各ユニットがバスマスタとしてバスを共有する。
【０００３】
このような構成では、複数のバスマスタが同時にバスアクセスを行うことがあり、バス帯域の上限を超えるようなアクセスが同時に生じると、ハードウェアがバスの調停を行うために一部のバスマスタを待たせる制御を行う、そのため必要な性能を得られない場合がある。そこで、必要な性能を確保するために図１１に示すようなバス帯域使用率の測定をし、プログラムのチューニングなどに利用する提案がされている。
【０００４】
図１１は、マルチコアプロセッサ１０２のバス帯域使用率の測定をする構成を示した図である。図１１のマルチコアプロセッサ１０２の構成は、処理装置（バスマスタ）としてプロセッサコア１０４（コア０〜コアＮ）、ＤＭＡ１０９（Direct Memory Access Unit）などが設けられている。
【０００５】
各プロセッサコア１０４はメモリ部１０３とのインタフェースを備えている。また、プロセッサコア１０４は処理部１０５（処理００、処理０１、処理０２・・・）、ローカルメモリ１０６、タイマ部１０７、アクセス測定部１０８、ＤＭＡ１０９を備えている。
【０００６】
メモリ部１０３は、各プロセッサコア１０４、ＤＭＡ１０９にバスを介して接続され、例えば、各アクセス測定部１０８から出力される測定結果も保存する。メモリ部１０３に保存される測定結果は各プロセッサコア１０４およびＤＭＡ１０９のアクセス量である。
【０００７】
図１２は、図１１に示したシステム構成（ハードウェア）を用いたバス帯域使用率の測定フローを示す。各プロセッサコア１０４で実行する処理のアクセス量を測定するためには、処理するプログラム（ソフトウェア）の前後に、フラグをセット、ネゲートを行うコードを挿入する。各プロセッサコア１０４でプログラムが実行され、フラグをセットするコードが実行されると、図１２に示すようにアクセス測定部１０８のフラグ部１１０にフラグのセットが通知され、フラグ部１１０はアクセス量検出カウンタ部１１１にアクセス量カウント指示を通知する。
【０００８】
つまり、図１２に示す、プロセッサコア１０４ごとに実行される動作フローのように、ステップＳ２１でフラグをセットし、ステップＳ２２で処理００を実行する。処理を実行した後、ステップＳ２３でフラグをネゲートする。同様の処理をステップＳ２４から実行して各処理のアクセス量を取得する（アクセス量検出カウンタ部１１１で測定したアクセス量（カウント値）をカウント値用レジスタ部１１２に保持する）。このように、メモリアクセスが実行されるたびに各プロセッサコア１０４から通知されるアクセス量をカウントして保持する。
【０００９】
上記構成にすることにより各コアでは、アクセス量の累計を取得することができ、アクセス量の総和を取得することができる。この値がバス帯域の上限近くまで上がっていれば、メモリアクセス待ちで各バスマスタの処理時間が延びている可能性があることを利用者は知ることができる。そして、必要な性能を未達成の場合には、ソフトウェアを修正してメモリアクセスを削減し、必要な性能を満たすようにチューニングを行う。
【００１０】
また、マルチコアプロセッサなどを用いるためにはＣ言語のような高級言語を用いた（オブジェクト指向の）ソフトウェア開発が必須になっている。
図１３に高級言語を用いたマルチプロセッサ向けプログラムと各バスマスタへの処理の割当を示す。関数やタスクの単位でバスマスタに処理を割り当てる。
【００１１】
例えば、図１３では高級言語で記述されたプログラムを構成する関数００、関数０１、関数０２、関数１０、関数１１、関数２０、関数２１が、各バスマスタに割り振られる。バスマスタを示すコア０には関数００〜０２、コア１には関数１０、１１、コア２には関数２０、２１が割り付けられている。
【００１２】
このような割付をする場合、マルチコアプロセッサ上でのプログラム開発時にバス帯域高使用率による性能劣化改善のために関数単位での１）マスタへの割当変更、２）実行順番変更、３）変数単位でメモリ配置変更というプログラム上でのチューニングを行う必要がある。そこで、特許文献１〜４に示すような提案がされている。
【００１３】
しかしながら、従来技術で取得できる性能情報は各処理ごとのバスアクセス量の累計のみであり、上記１）〜３）を行うことができないという問題がある。１）〜３）を行うためには、全バスマスタ共通の時刻情報とバスマスタごとのバス帯域使用量を関連付けることが必要であり、具体的には、イ）関数単位の帯域使用情報、ロ）全バスマスタ共通の時間情報に基づいた関数単位の開始時刻と終了時刻、ハ）各変数アクセスに対するバス帯域使用率を測定する必要がある。
【特許文献１】特開平１１−２７２４９９号公報
【特許文献２】特開平０６−２３１０８７号公報
【特許文献３】特開２０００−３４８００７号公報
【特許文献４】特開２００６−１４６９２１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明は上記のような実情に鑑みてなされたものであり、各処理のアクセス量とともにアクセス時間の情報を取得することにより、メモリアクセスが集中しても性能劣化を回避可能とするために、メモリアクセス量を測定するメモリアクセス量測定装置、メモリアクセス量測定装置、メモリアクセス量測定方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の態様のひとつである複数の処理装置がメモリを共有するメモリ共有データ処理システムであって、前記処理装置は、タイマから通知される時刻を用いて前記処理装置で実行される処理ごとの前記メモリへのアクセス開始時刻と終了時刻を測定する時間測定部と、前記処理の開始から終了までの間、前記処理のメモリへのアクセス量を測定するアクセス測定部と、を具備する構成である。
【００１６】
上記構成により、利用者は各処理のアクセス量とともにアクセス時間の情報を取得することができ、この結果に基づいてメモリアクセスが集中しても性能劣化を回避する対策を立てることができる。
【００１７】
好ましくは、前記処理装置は、前記メモリへのアクセスの測定対象領域として測定領域開始アドレスと測定領域終了アドレスを測定アドレス情報として保持し、前記処理の前記メモリへのアクセスごとにアクセス先アドレスが前記測定領域開始アドレスと前記測定領域終了アドレスの間の範囲であれば前記アクセス量の測定を前記アクセス測定部に指示するアドレス比較部をさらに備えてもよい。
【００１８】
好ましくは、前記時間測定部は、前記開始時刻と前記終了時刻と、前記アクセス測定部によって測定された前記アクセス量を保持してもよい。
【発明の効果】
【００１９】
本発明によれば、各処理のアクセス量とともにアクセス時間の情報を取得することにより、メモリアクセスが集中しても性能劣化を回避するための対策を立てることが可能である。
【発明を実施するための最良の形態】
【００２０】
（原理説明）
本発明は、複数の処理装置とメモリを備えるシステムにおいて、複数の処理装置がバスマスタとなるようなシステムに用いることができる。例えば、複数の処理装置としてプロセッサコアなどが設けられ、処理装置などがバスマスタとしてバスを共有するマルチコアプロセッサ。また、ＣＰＵなどを備えたユニットを処理装置とし、各ユニットをバスマスタとしてバスを共有するユニットを複数有するシステム。
【００２１】
上記処理装置は時間測定部、アクセス測定部を備え、時間測定部は、タイマから通知される時刻を用いて処理装置で実行される処理ごとのメモリへのアクセス開始時刻と終了時刻を測定し、アクセス測定部は、各処理の開始から終了までの間各処理のメモリへのアクセス量を測定する。
【００２２】
上記測定により処理情報をアプリケーションソフトの関数、タスク、変数に対応させることが可能な形式で取得することができる。具体的には、関数単位の帯域使用情報、全バスマスタ共通の時間情報に基づいた関数単位の開始時刻と終了時刻、各変数アクセスに対するバス帯域使用率を取得する。
【００２３】
例えばＣ言語などの高級言語を用いてアプリケーションソフトを開発するときに、利用者はその取得結果を用いバスマスタへの関数割当変更、関数の実行順序の変更、変数単位でのメモリ配置変更をプログラム上で検討することが可能になり、バスアクセス集中による性能劣化を回避できる。
【００２４】
以下図面に基づいて、本発明の実施形態について詳細を説明する。
（実施例１）
（構成）
図１に示すシステム１は、複数のプロセッサコア４（コア０〜コアＮ）やＤＭＡ９（Direct Memory Access Unit）などがバスを共有するマルチコアプロセッサ２とメモリ部３（ＳＤＲＡＭなど）から構成された例である。また、マルチコアプロセッサ２はプロセッサコア４、ＤＭＡ９、タイマ部１０を備えている。
【００２５】
各プロセッサコア４（処理装置）は、処理部５、ローカルメモリ６、時間測定部７、アクセス測定部８を備えている。
処理部５は、プロセッサコア４（コア０）において処理００、０１、０２〜（関数やタ
スクの単位）が割り当られている。例えば、高級言語で記述されたプログラムを構成する関数が、各バスマスタであるプロセッサコア４（コア０）に割り当てられる。同様にプロセッサコア４（コア１）〜（コアＮ）で実行する処理が割り当てられ、割り付けられた処理を各処理部５は実行する。
【００２６】
ローカルメモリ６にはプログラムやデータ、処理結果（図１、取得情報）などを保持することができる。
時間測定部７は、タイマ部１０から通知される時刻を用い、プロセッサコア４とＤＭＡ９を実行したときの各処理のメモリ（メモリ部３）へのアクセス開始時刻とアクセス終了時刻を測定する。
【００２７】
アクセス測定部８は、処理の開始から終了までの間、各処理のメモリ（メモリ部３）へのアクセス量を測定する。なお、このアクセス量はメモリ部３へのアクセスのたびに、例えば、各コアの処理部５からの制御情報としてアクセス測定部８に与えられるものとする。
【００２８】
タイマ部１０は、測定時に時刻をプロセッサコア４とＤＭＡ９の時間測定部７にブロードキャストに通知をする。タイマ部１０はＯＳのシステムカウンタなどを用いてもよい。
メモリ部３には、データや各プロセッサコア４の処理とＤＭＡ９の処理に関して測定したアクセス開始時刻、アクセス終了時刻、アクセス量を保持することができる（図１、取得情報）。これらの測定結果はローカルメモリ６などに保持してもよい。
【００２９】
図２に時間測定部７とアクセス測定部８の構成を示す。
時間測定部７は、複数フラグ部１１、時間取得部１２、カウント値出力部１３を備えている。
【００３０】
複数フラグ部１１は複数のフラグを有する。図２に示すように例えばコア０に対するフラグ数はフラグ００〜０ｎ（ｎは１以上の自然数）まで用意されている。例えば、特殊レジスタなどにより構成し、フラグは特殊レジスタを書き換えることによりセットされる。また、任意のフラグセット時にフラグがセットされたことを時間取得部１２、カウント値出力部１３、アクセス測定部８に通知し、フラグネゲート時にフラグがネゲートされたことを時間取得部１２、カウント値出力部１３、アクセス測定部８に通知する。
【００３１】
時間取得部１２は、フラグがセットされたとき（任意のフラグセット時）にタイマ部１０より通知された時刻を測定開始時刻として取得する。また、フラグネゲート時にタイマ部１０より通知された時刻を測定終了時刻として取得する。取得した測定開始時刻、測定終了時刻をフラグに対応するメモリ領域に出力する。
【００３２】
カウント値出力部１３は、フラグネゲート時にカウント値用レジスタ部１４よりデータを読み出して対応する領域にカウント値を書き込む。そのカウント値をアクセス量としてセットしていたフラグに対応するメモリ領域に保持する。
【００３３】
ここで、メモリ領域は、メモリ部３、ローカルメモリ６、専用メモリなどに割り当てられたメモリである。専用メモリを用いる場合は、フラグ数であるｎ個の測定開始時刻、測定終了時刻、アクセス量を保持できる領域を確保し、また、メモリ部３、ローカルメモリ６を用いる場合はフラグ数であるｎ個の測定開始時刻、終了時刻、アクセス量を保持できる領域を確保する。
【００３４】
アクセス測定部８は、カウント値用レジスタ部１４、アクセス量検出カウンタ部１５から構成されている。
アクセス量検出カウンタ部１５は、時間測定部７のフラグがセットされたときに、アクセス量検出カウンタ部１５のカウンタを０にセットし、ネゲートされるまでの期間メモリへのアクセスがあるたびにカウンタをカウントアップする。カウント値はカウント値用レジスタ部１４に通知する。
【００３５】
図３にプロセッサコア４のプログラムに対応した処理シーケンスを示す。また、図４に各処理ごとの詳細について示す。
図３では、処理００についてステップＳ１〜Ｓ３を実行することにより測定開始時刻、測定終了時刻、アクセス量をメモリに保存する。
【００３６】
ステップＳ１では、処理００用の時間情報を取得する（測定開始時刻）。メモリアクセスごとにアクセス量の測定を開始する。
ステップＳ２では処理００が実行される。
【００３７】
ステップＳ３では、処理００用の時間情報を取得する（測定終了時刻）。メモリアクセスごとのアクセス量の測定を終了する。
同様にステップＳ４〜Ｓ６を実行し処理０１に関する測定開始時刻、測定終了時刻、アクセス量をメモリに保存し、ステップＳ７〜Ｓ９を実施して処理０２の測定開始時刻、測定終了時刻、アクセス量をメモリに保存する。
【００３８】
また、他のプロセッサコア４（コア１〜Ｎ）についても同じように処理を行う。
次に図４について説明する。
処理００にはアクセス量を取得するために、アクセス量を測定したいプログラムの範囲の初めにフラグをセットする記述を挿入し、測定したい範囲の終わりにフラグをネゲートする記述を挿入する。上記のようなフラグセットとフラグネゲートを行うコードを、アクセス量を測定する必要がある処理およびＤＭＡを実行させるプログラムに記述する。
【００３９】
ステップＳ４１では例えば処理ｉ（例えば０ｉ）に対応したフラグｉ（０ｉ）がセットされる。
ステップＳ４２では、フラグがセットされると時間取得部１２にてタイマ部１０の時刻情報を開始時間としてフラグｉに対応するメモリ領域に格納する。ｉは処理を識別するための番号である。
【００４０】
例えば、処理００を実行するプロセッサコア４（コア０）がプログラムを実行し、処理００用のフラグをセットするコードが実行されると、時間測定部７の複数フラグ部１１の処理００に対応するフラグ００がセットされる。フラグがセットされるとタイマ部１０より通知される時刻情報を処理００の測定開始時刻として時間取得部１２が取得する。また、フラグがセットされたことをカウント値出力部１３とアクセス測定部８のアクセス量検出カウンタ部１５に通知する。ここで、測定開始時刻をメモリ領域に格納してもよいが、時間取得部１２に保持しネゲート後にまとめてメモリ領域に格納してもよい。
【００４１】
ステップＳ４３では処理が実行され、アクセス量検出カウンタ部１５でメモリアクセスごとにアクセス量をカウントアップしカウント値用レジスタ部１４に格納する。
例えば処理００の場合、アクセス測定部８では、フラグセットの通知を受けてアクセス量検出カウンタ部１５のアクセス量を測定するカウンタのカウンタ値を０にセットする。その後、処理００実行時メモリへのアクセスがあるたびにアクセス量を検出してカウンタ値をインクリメントしてアクセス量を測定する。
【００４２】
ステップＳ４４では処理ｉに対応したフラグｉがネゲートされる。
ステップＳ４５では、時間取得部にてタイマ部の時刻情報を終了時間としてフラグｉに対応するメモリ領域に格納する。
【００４３】
例えば、処理００を実行するプロセッサコア４（コア０）がプログラムを実行し、処理００用のフラグをネゲートするコードが実行されると、時間測定部７の複数フラグ部１１の処理００に対応するフラグ００がネゲートされ、タイマ部１０より通知される時刻を測定終了時刻として時間取得部１２が取得する。また、フラグがネゲートされたことをカウント値出力部１３とアクセス測定部８のアクセス量検出カウンタ部１５に通知する。その後、測定終了時刻をメモリ領域に格納する。
【００４４】
ステップＳ４６では、カウント値出力部１３にてカウント値用レジスタ部１４のカウント値を読み出しフラグｉに対応するメモリ領域に格納する。
例えば処理００の場合、処理００用のフラグ００がネゲートされるとアクセス測定部８のアクセス量検出カウンタ部１５はアクセス量の測定を停止し、カウント値用レジスタ部１４に格納されている値はカウント値出力部１３に出力される。取得した測定開始時刻、測定終了時刻、アクセス量はまとめてメモリ部３、ローカルメモリ６、専用メモリのいずれかに保持される。
【００４５】
図５に測定開始時刻、測定終了時刻、アクセス量を利用した表示とその利用方法について説明する。
図５は縦軸にアクセス量、横軸に測定時刻を示したグラフである。測定した情報に基づいて図５のようなグラフを表示することにより、どの時刻に各プロセッサコア４のどの処理が重なってバス帯域を上限近くまで使用しているかを視覚的に把握することができる。
【００４６】
図５に示す表は、デバッガなどを用いてメモリに保存した測定開始時刻、測定終了時刻、アクセス量のデータを、メモリから読み出してＰＣなどの表示部に表示する。
また、処理ごとに表示されているアクセス量は、例えば、測定開始時間と測定終了時間の間にカウンタされたカウント値を時間的に平均してその区間表示している。より詳細なアクセス量を取得するためには、処理ごとに複数のフラグを設けて測定開始時間と測定終了時間を測定してもよい。
【００４７】
Ｔ０〜Ｔ１の区間ではＤＭＡなどと同時に、プロセッサコア４（コア０）の処理００（例えば、関数やタスクの単位）とプロセッサコア４（コア１）の処理１０がメモリアクセスをしている。
【００４８】
Ｔ１〜Ｔ２の区間ではＤＭＡなどと同時に、プロセッサコア４（コア０）の処理００と
プロセッサコア４（コア１）の処理１１がメモリアクセスをしている。
Ｔ２〜Ｔ３の区間ではＤＭＡなどと同時に、プロセッサコア４（コア０）の処理０１とプロセッサコア４（コア１）の処理１１がメモリアクセスをしている。この区間ではバス帯域の限界に近づいている。
【００４９】
Ｔ３〜Ｔ４の区間ではＤＭＡなどと同時に、プロセッサコア４（コア０）の処理０１とプロセッサコア４（コア１）の処理１２がメモリアクセスをしている。
Ｔ４〜Ｔ５の区間ではＤＭＡなどと同時に、プロセッサコア４（コア０）の処理０２とプロセッサコア４（コア１）の処理１２がメモリアクセスをしている。
【００５０】
Ｔ５〜Ｔ６の区間ではＤＭＡなどと同時に、プロセッサコア４（コア０）の処理０２がメモリアクセスをしている。
上記のグラフからバス帯域を上限近くまで使用している区間Ｔ２〜Ｔ３は、バスアクセスの調停により性能劣化が起きている可能性が高い。この性能劣化を回避するために各プロセッサコア４への処理(関数やタスク)割当の変更、プロセッサコア４における実行順序の変更を行って、使用するバス帯域を小さくすることができる。
図５の例では、処理１２を処理１１と入れ替えて処理０１の完了後に実行するようにしてバス帯域を越えないようにソフトチューニングを利用者が検討することができる。
【００５１】
（実施例２）
実施例２は、実施例１にさらにアドレス比較部を設け、指定したメモリ領域（変数など）に対するアクセス量、測定開始時刻、測定終了時刻を測定する。
（構成）
指定した領域に対するアクセス量、測定開始時間、測定終了時間を測定するためのシステム構成を図６に示す。実施例１と実施例２との差分は、アドレス比較部１６を追加したことである。
【００５２】
アドレス比較部１６は、アクセス量を測定したいメモリ領域の開始アドレスと終了アドレスを保持しており、メモリ領域に対するアクセス発生時にアドレス、アクセス量を検出し、アドレスが保持している開始アドレス以上、終了アドレス未満であれば、アクセス量をアクセス測定部８に通知する。
【００５３】
アクセス測定部８では、時間測定部７から通知されているフラグ情報がセットのときに、アドレス比較部１６より通知されるアドレス量をカウントする。
図７に、プロセッサコア４ごとに設けられる時間測定部７、アクセス測定部８、アドレス比較部１６の構成を示す。
【００５４】
アドレス比較部１６は、アドレス比較器１７、測定領域レジスタ１８から構成される。
アドレス比較器１７は、いずれかのフラグがセットされたときに、メモリアクセス先アドレスと測定領域レジスタ値の比較を行い、範囲内であればアクセス量をアクセス量検出カウンタ部１５に通知する。
【００５５】
図７に示すアクセス量検出カウンタ部１５は、実施例１に示した機能にさらにアドレス比較器１７からの通知があるときのみカウントをする。通知があるとき以外は測定領域レジスタ１８に設定されたメモリ領域でないため測定を行わない。
【００５６】
測定領域レジスタ１８は、プロセッサコア４ごとに実行する処理の測定したいメモリ領域の始点となるアドレスと終点となるアドレスを保持している。
図８にプログラムに対応した処理シーケンスを示す。
【００５７】
処理００についてステップＳ７１〜Ｓ７３を実行することにより測定するメモリ領域のアドレスの始点と終点を設定するとともに、測定開始時刻、測定終了時刻、指定したメモリ領域へのアクセス量をメモリに保存する。
【００５８】
ステップＳ７１では、処理００用の時間情報を取得する（測定開始時刻）。指定したメモリ領域へのアクセスごとにアクセス量の測定を開始する。
ステップＳ７２では処理００が実行される。
【００５９】
ステップＳ７３では、処理００用の時間情報を取得する（測定終了時刻）。指定したメモリ領域へのアクセスごとのアクセス量の測定を終了する。
同様にステップＳ７４〜Ｓ７６を実行し処理０１に関する測定開始時刻、測定終了時刻、アクセス量をメモリに保存し、ステップＳ７７〜Ｓ７９を実施して処理０２の測定開始時刻、測定終了時刻、アクセス量をメモリに保存する。
【００６０】
また、他のプロセッサコア４（コア１〜Ｎ）についても同じように処理を行う。
次に図９について説明する。
処理００には指定したメモリ領域のアクセス量を取得するために、フラグをセットする記述の前にアドレス量を測定したいメモリ領域の開始アドレス（始点）と終了アドレス（終点）をアドレス比較部１６にセットする記述を挿入する。また、アクセス量を測定したいプログラムの範囲の初めにフラグをセットする記述を挿入し、測定したい範囲の終わりにフラグをネゲートする記述を挿入する。上記のような設定とフラグセットとフラグネゲートを行うコードを、アクセス量を測定する必要がある処理およびＤＭＡを実行させるプログラムに記述する。
【００６１】
ステップＳ９１では測定アドレスを設定する。
ステップＳ９２では、各プロセッサコア４がプログラムを実行し、アドレス量を測定したいメモリ領域の開始アドレスと終了アドレスを、アドレス比較部１６にセットする記述が実行されると、アドレス比較器１７に開始アドレスと終了アドレスが測定領域レジスタ１８にセットされる。
【００６２】
ステップＳ９３では処理ｉ（例えば０ｉ）に対応したフラグｉ（０ｉ）がセットされる。
ステップＳ９４では、任意のフラグをセットするコードを実行すると、時間測定部７では対応するフラグがセットされ、前述のように、タイマ部１０より通知される時刻情報を測定開始時刻として取得し、フラグｉがセットされたことをアクセス測定部８に通知する。ここで、ｉは処理を識別するための番号である。
【００６３】
ステップＳ９５では、フラグセット中はアドレス比較部１６によりメモリアクセス時に
アクセス先アドレスと測定領域レジスタ１８に保持された始点と終点のアドレスの比較を行う。アクセス先アドレスが始点以上終点未満であれば、アクセス量をアクセス量検出カウンタ部１５に通知する。
【００６４】
ステップＳ９６では処理が実行され、アクセス量検出カウンタ部１５では、フラグセットの通知を受けてアクセス量をカウントするカウンタを０にセットする。また、メモリへのアクセスがあるたびにアドレス比較器１７よりアクセス量検出カウンタ部１５にメモリアクセスのあったことを通知する。アクセス量検出カウンタ部１５ではメモリアクセスごとにアクセス量をカウントアップしカウント値用レジスタ部１４に格納する。
【００６５】
例えば、処理００の場合、アクセス測定部８では、フラグセットの通知を受けてアクセス量検出カウンタ部１５のアクセス量を測定するカウンタのカウンタ値を０にセットする。その後、処理００実行時アドレス比較器１７から通知があれば、メモリへのアクセスがあるたびにアクセス量を検出してカウンタ値をインクリメントしてアクセス量を測定する。
【００６６】
ステップＳ９７では処理ｉに対応したフラグｉがネゲートされる。
ステップＳ９８では、時間取得部１２にてタイマ部１０の時刻情報を測定終了時間としてフラグｉの対応するメモリ領域に格納する。
【００６７】
ステップＳ９９では、カウント値出力部１３にてカウント値用レジスタ部１４のカウント値を読み出しフラグｉに対応するメモリ領域に格納する。
例えば処理００の場合、処理００用のフラグ００がネゲートされるとアクセス測定部８のアクセス量検出カウンタ部１５は対象のメモリ領域へのアクセス量の測定を停止し、測定したカウント値がカウント値用レジスタ部１４に読み出され、カウント値はカウント値出力部１３に出力される。取得した測定開始時刻、測定終了時刻、アクセス量は、セットでメモリ部３、ローカルメモリ６、専用メモリのいずれかに保持される。
【００６８】
上記のようにすることで、例えばハードウェアで動作させるアプリケーションソフトにおいて指定した測定区間の測定区間ごとの帯域使用情報（アクセス量）、測定区間の処理の測定開始時刻と測定終了時刻をセットで測定することができる。
【００６９】
図１０に示すグラフは、測定区間の帯域使用情報（アドレスの始点、終点）、測定区間の処理の測定開始時刻と測定終了時刻、指定したメモリ領域に対するアクセス量に基づいて表示される。図１０の縦軸は指定したメモリ領域、横軸はアクセス量を示す。また、図１０に示す表は、デバッガなどを用いて測定区間の帯域使用情報、測定開始時刻、測定終了時刻、アクセス量のデータを、メモリから読み出してＰＣなどの表示部に表示する。
【００７０】
図１０に示すグラフは、プロセッサコア４（コア１）のメモリ領域へのアクセスを領域ごとに表示している。
メモリ領域の領域１に対してメモリアクセスがどれくらいあったかを示している。同じように領域２〜領域４についても各領域にどれくらいのメモリアクセスがあったかを示している。つまり、領域内におけるアクセス量の合計である。このように視覚的にすることで、図１０では領域２へのアクセス量が他の領域に比べて多いことがわかり、グラフを利用者が検討することができる。
【００７１】
その結果、測定対象であるアプリケーションプログラム上の測定区間を関数、タスクな
どのマルチプロセッサ向けアプリケーションプログラムの並列化の単位とすることにより、測定情報を用いてメモリアクセス集中により性能劣化を回避するためのプログラムチューニングを行うことが可能である。
【００７２】
例えば、変数ごとのアクセス量を取得することができるので、バスアクセス量の大きい変数をローカルメモリ６などの別のバスを使用する領域に配置することにより、１つのバスに対するアクセス量を削減することができ、性能劣化を回避することができる。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
【００７３】
（付記１）
複数の処理装置がメモリを共有するメモリ共有データ処理システムであって、
前記処理装置は、
タイマから通知される時刻を用いて前記処理装置で実行される処理ごとの開始時刻と終了時刻を測定する時間測定部と、
前記処理の開始から終了までの間、前記処理のメモリへのアクセス量を測定するアクセス測定部と、
を具備することを特徴とするメモリ共有データ処理システム。
（付記２）
前記処理装置は、
前記メモリへのアクセスの測定対象領域としての測定領域開始アドレスと測定領域終了アドレスを測定アドレス情報として保持し、前記処理の前記メモリへのアクセスごとにアクセス先アドレスが前記測定領域開始アドレスと前記測定領域終了アドレスの間の範囲であれば前記アクセス量の測定を前記アクセス測定部に指示するアドレス比較部をさらに備えることを特徴とする付記１に記載のメモリ共有データ処理システム。
（付記３）
前記時間測定部は、
前記開始時刻と前記終了時刻と、前記アクセス測定部によって測定された前記アクセス量を保持することを特徴とする付記１または２に記載のメモリ共有データ処理システム。
（付記４）
複数の各処理装置ごとに、かつ該各処理装置によって指示される時間範囲内ごとに、前記複数の処理装置に共通のメモリへのアクセス量を測定するアクセス量測定手段と、
該測定の結果を、前記処理装置ごと、前記時間範囲内ごとに記憶するアクセス量記憶手段と、
を備えることを特徴とするメモリアクセス量測定装置。
（付記５）
複数の各処理装置ごとに、かつ該各処理装置によって指示される時間範囲内ごとに、前記複数の処理装置に共通のメモリへのアクセス量を測定し、
該測定の結果を、前記処理装置ごと、前記時間範囲内ごとに記憶する、
ことを特徴とするメモリアクセス量測定方法。
（付記６）
前記時間測定部は、
前記処理ごとの前記アクセス量を測定するために測定開始と測定終了を示すフラグを用い、前記フラグがセットされると前記アクセス量の測定開始を前記アクセス測定部に通知
し、前記フラグがネゲートされると前記アクセス量の測定終了を前記アクセス測定部に通知することを特徴とする請求項１に記載のメモリ共有データ処理システム。
【図面の簡単な説明】
【００７４】
【図１】実施例１のシステム構成を示す図である。
【図２】実施例１のプロセッサコアの時間測定部とアクセス測定部を示す図である。
【図３】実施例１の動作を示すフロー図である。
【図４】実施例１の各処理の動作を示すフロー図である。
【図５】各処理のアクセス量と測定開始時間、測定終了時間に基づいて生成されるグラフを示す図である。
【図６】実施例２のシステム構成を示す図である。
【図７】実施例２のプロセッサコアの時間測定部、アクセス測定部、アドレス比較部を示す図である。
【図８】実施例２の動作を示すフロー図である。
【図９】実施例２の各処理の動作を示すフロー図である。
【図１０】各処理の対象メモリ領域のアドレスとアクセス量、測定開始時間、測定終了時間に基づいて生成されるグラフを示す図である。
【図１１】従来のシステム構成を示す図である。
【図１２】従来のプロセッサコアのアクセス測定部と動作を示すフローを示す図である。
【図１３】関数をバスマスタに割り付けた場合のイメージ図である
【符号の説明】
【００７５】
１      システム
２      マルチコアプロセッサ
３      メモリ部
４      プロセッサコア
５      処理部
６      ローカルメモリ
７      時間測定部
８      アクセス測定部、
９      ＤＭＡ
１０      タイマ部
１１      複数フラグ部
１２      時間取得部
１３      カウント値出力部
１４      カウント値用レジスタ部
１５      アクセス量検出カウンタ部
１６      アドレス比較部
１７      アドレス比較器
１８      測定領域レジスタ
【図１】
0004998303.tif 000002
【図２】
0004998303.tif 000003
【図３】
0004998303.tif 000004
【図４】
0004998303.tif 000005
【図５】
0004998303.tif 000006
【図６】
0004998303.tif 000007
【図７】
0004998303.tif 000008
【図８】
0004998303.tif 000009
【図９】
0004998303.tif 000010
【図１０】
0004998303.tif 000011
【図１１】
0004998303.tif 000012
【図１２】
0004998303.tif 000013
【図１３】
0004998303.tif 000014