(57)【要約】【課題】  データ処理中のパフォーマンス情報を取得し、その情報に基づいて適宜データ処理内容を変更して効率的にデータ処理を行うこと。【解決手段】  データを処理するデータ処理部７０と、データ処理部７０による処理において所定種類のイベントが発生したことを検知するイベント検知部７２と、イベント検知部７２により検知する所定種類のイベントの発生する頻度情報を記憶する頻度情報記憶部７４と、頻度情報記憶部７４に記憶される頻度情報に基づいて、データ処理部７０による処理に所定種類の制約が発生しているかを判断する制約発生判断部７６と、制約発生判断部７６によりデータ処理部７０による処理に所定種類の制約が発生していると判断する場合に、データ処理部７０による処理の内容を変更する処理内容変更部７８と、を含むことを特徴とする情報処理装置。【選択図】      図６
2006293694.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを含み、データを処理するデータ処理手段と、
前記データ処理手段による処理において、前記複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントとを検知するイベント検知手段と、
前記イベント検知手段により検知される前記第１イベント及び第２イベントの発生の頻度情報を記憶する頻度情報記憶手段と、
前記頻度情報記憶手段に記憶される前記第１イベントと前記第２イベントの頻度情報に基づいて、前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する制約発生判断手段と、
前記制約発生判断手段により前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断される場合に、前記メモリに格納するデータを圧縮させる処理内容変更手段と、
を含むことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記制約発生判断手段は、前記第１イベントが所定の頻度を超えて発生している期間において、前記第２イベントの発生する頻度に基づいて、前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断する、
ことを特徴とする情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置において、
前記処理内容変更手段により圧縮させたデータを伸張させる手段をさらに含む、
ことを特徴とする情報処理装置。
【請求項４】
複数のプロセッサによりデータを処理するデータ処理ステップと、
前記データ処理ステップにおいて、前記複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントとを検知するイベント検知ステップと、
前記イベント検知ステップにより検知される前記第１イベント及び第２イベントの発生の頻度情報を記憶する頻度情報記憶手段に記憶される前記第１イベントと前記第２イベントの頻度情報に基づいて、前記データ処理ステップによる処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する制約発生判断ステップと、
前記制約発生判断ステップにより前記データ処理ステップによる処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断される場合に、前記メモリに格納するデータを圧縮させる処理内容変更ステップと、
を含むことを特徴とするコンピュータの制御方法。
【請求項５】
複数のプロセッサによりデータを処理するデータ処理手段、
前記データ処理手段による処理において、前記複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントとを検知するイベント検知手段、
前記イベント検知手段により検知される前記第１イベント及び第２イベントの発生の頻度情報を記憶する頻度情報記憶手段、
前記頻度情報記憶手段に記憶される前記第１イベントと前記第２イベントの頻度情報に基づいて、前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する制約発生判断手段、及び、
前記制約発生判断手段により前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断される場合に、前記メモリに格納するデータを圧縮させる処理内容変更手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、コンピュータの制御方法及びプログラムに関し、特に情報処理装置のデータ処理を最適化する技術に関する。
【背景技術】
【０００２】
情報処理装置によりプログラムに基づいてデータ処理を行う際に、データ処理の処理効率を良くするために、プログラムの最適化がしばしば行われる。この最適化は、プログラムを実際に情報処理装置で実行させた際のトレースデータを収集して、そのデータを解析することにより行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の従来技術では、プログラムのトレースデータを収集し、それを基にして手作業でプログラムを修正しなければならなかった。また、プログラムの実行環境が変更された場合、例えばメモリ容量、同時並行で実行されるプログラムの種類や数等が変動した場合には、再度、トレースデータを収集して、プログラムの修正をしなくてはならないという問題があった。
【０００４】
本発明は上記課題に鑑みてなされたものであって、その目的は、プログラムの動作の最適化を動的に行うことができる情報処理装置、コンピュータの制御方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明に係る情報処理装置は、複数のプロセッサを含み、データを処理するデータ処理手段と、前記データ処理手段による処理において、前記複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントとを検知するイベント検知手段と、前記イベント検知手段により検知される前記第１イベント及び第２イベントの発生の頻度情報を記憶する頻度情報記憶手段と、前記頻度情報記憶手段に記憶される前記第１イベントと前記第２イベントの頻度情報に基づいて、前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する制約発生判断手段と、前記制約発生判断手段により前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断される場合に、前記メモリに格納するデータを圧縮させる処理内容変更手段と、を含むことを特徴とする。
【０００６】
また、本発明に係るコンピュータ（例えば家庭用ゲーム機、業務用ゲーム機、携帯電話機、携帯用ゲーム機、携帯情報端末、パーソナルコンピュータ、サーバコンピュータ等である。以下、同様。）の制御方法は、複数のプロセッサによりデータを処理するデータ処理ステップと、前記データ処理ステップにおいて、前記複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントとを検知するイベント検知ステップと、前記イベント検知ステップにより検知される前記第１イベント及び第２イベントの発生の頻度情報を記憶する頻度情報記憶手段に記憶される前記第１イベントと前記第２イベントの頻度情報に基づいて、前記データ処理ステップによる処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する制約発生判断ステップと、前記制約発生判断ステップにより前記データ処理ステップによる処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断される場合に、前記メモリに格納するデータを圧縮させる処理内容変更ステップと、を含むことを特徴とする。
【０００７】
また、本発明に係るプログラムは、複数のプロセッサによりデータを処理するデータ処理手段、前記データ処理手段による処理において、前記複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントとを検知するイベント検知手段、前記イベント検知手段により検知される前記第１イベント及び第２イベントの発生の頻度情報を記憶する頻度情報記憶手段、前記頻度情報記憶手段に記憶される前記第１イベントと前記第２イベントの頻度情報に基づいて、前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する制約発生判断手段、及び、前記制約発生判断手段により前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断される場合に、前記メモリに格納するデータを圧縮させる処理内容変更手段、としてコンピュータを機能させるためのプログラムである。プログラムは、ＣＤ−ＲＯＭ（Compact Disk - Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk - Read Only Memory）、メモリーカードその他のあらゆるコンピュータ読み取り可能な情報記憶媒体に格納することとしてもよい。
【０００８】
本発明では、データ処理において、複数のプロセッサのうち特定のプロセッサにおけるバスを介したメモリへのアクセスに待ちが発生したことを示す第１イベントと、前記メモリへのアクセスが発生したことを示す第２イベントが発生したことを検知する。そして、前記第１イベントと第２イベントの発生の頻度情報を記憶し、記憶する頻度情報に基づいて、データ処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したか否かを判断する。上記の制約が発生していると判断される場合には、前記メモリに格納するデータを圧縮させる。こうして、本発明によれば、データ処理において、プロセッサとメモリ間のデータ転送に起因するボトルネックが発生した場合に、データを圧縮することでデータ転送効率を良くし、データ処理の制約を軽減することでプログラムの動作の最適化を動的に行うことができる。
【０００９】
本発明の一態様では、前記制約発生判断手段は、前記第１イベントが所定の頻度を超えて発生している期間において、前記第２イベントの発生する頻度に基づいて、前記データ処理手段による処理に前記特定のプロセッサとメモリ間のデータ転送に起因する制約が発生したと判断する。こうすれば、第１イベントと第２イベントの頻度情報に基づいて、プロセッサとメモリ間のデータ転送によるバスの混雑を高い信頼性で判断でき、そうした場合にデータ処理内容を変更して処理効率を良くすることができる。
【００１０】
本発明の一態様では、前記処理内容変更手段により圧縮したデータを伸張させる手段をさらに含む。こうすれば、プログラム側を変更することなく、情報処理装置側によってデータ転送に起因するボトルネックを緩和して、データ処理の効率を良くすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の好適な実施形態について図面に基づいて詳細に説明する。
【００１２】
図１には、本発明の実施形態に係るゲーム装置のハードウェア構成図を示す。同図に示されるように、ゲーム装置１０は、制御部１２、メモリ１４、グラフィックプロセッサ１６、グラフィックインターフェース１８、ＩＯコントローラ２０、コントローラインターフェース２２、ネットワークインターフェース２４及びディスクドライブ２６を含んで構成されるコンピュータゲームシステムである。
【００１３】
制御部１２は、図示しないＲＯＭに格納されるオペレーティングシステムやディスクドライブ２６によってコンピュータ読み取り可能な情報記憶媒体であるＤＶＤメディア３４から読み出されるゲームプログラムに基づいて、ゲーム装置１０の各部を制御する。メモリ１４には、ＤＶＤメディア３４から読み取られるゲームプログラムやゲームデータが必要に応じて書き込まれる。また、メモリ１４は、制御部１２の作業用としても用いられる。
【００１４】
グラフィックプロセッサ１６は、制御部１２から送られる画像データを受け取ってＶＲＡＭ（Video Random Access Memory）上にゲーム画面を描画するものである。そして、その内容をグラフィックインターフェース１８を介して、ディスプレイ２８に出力する。
【００１５】
ＩＯコントローラ２０は、制御部１２と外部デバイス等を接続するための入出力制御部である。ＩＯコントローラ２０を介して、制御部１２は、コントローラ３０、ネットワーク３２又はディスクドライブ２６と相互通信可能に接続される。コントローラ３０は、プレイヤがゲーム操作や、データ処理をさせるための入力手段であり、コントローラインターフェース２２を介してＩＯコントローラ２０に接続される。ゲーム装置１０は、ネットワーク３２とネットワークインターフェース２４を介して接続され、外部情報機器と相互に通信をすることができる。また、ゲーム装置１０は、ディスクドライブ２６に格納されたＤＶＤメディア３４からデータやプログラムを読み出すことができる。
【００１６】
図２は、制御部１２の詳細ハードウェア構成図を示す。同図に示されるように、制御部１２は、プロセッサＡ、プロセッサＢ、プロセッサＣ、プロセッサＤ、ＩＯインターフェース（以下ＩＯＩＦ）４８、メモリインターフェースコントローラ（以下ＭＩＣ）５０、内部バス５２及びパフォーマンスモニタ５３を含んで構成される。パフォーマンスモニタ５３は、トレースバス５４、パフォーマンスカウンタ５６、インターバルタイマ５８及びトレースバッファ６０から構成されており、ゲーム装置１０のデータ処理のパフォーマンス情報を取得するものである。
【００１７】
プロセッサＡ〜Ｄは、それぞれ独立した信号処理プロセッサである。本実施形態では、プロセッサＡ〜Ｄは、それぞれ同一のプロセッサとするが、それぞれ異なるプロセッサであることとしてもよい。プロセッサＡ〜Ｄのハードウェア構成について、以下説明する。
【００１８】
プロセッサＡは、図３に示されるように、プロセッサコア６２、ローカルストア６４、ＤＭＡコントローラ６６及びインターフェース６８を含んで構成される。プロセッサコア６２は、実際にデータの演算処理を行う部分である。ローカルストア６４は、プロセッサＡ専用のＲＡＭである。ローカルストア６４には、メモリ１４からコピーしてきたプログラムやデータを一時的に格納する。プロセッサＡは、ローカルストア６４とメモリ１４との間のデータ転送をＤＭＡコントローラ６６を用いて行う。ＤＭＡコントローラ６６のキューには、複数のＤＭＡ転送要求を格納することができる。ＤＭＡコントローラ６６において、転送要求のキューが一杯になっている場合には、キューフル（Queue Full）の信号がトレースバス５４に送出され、一杯ではないが何らかの要求が残っている場合には、キューノットエンプティ（Queue not empty）の信号がトレースバス５４に送出される。また、プロセッサＡは、インターフェース６８を介してバス５２に接続し、ゲーム装置１０の各部と信号の送受信をしている。なお、他のプロセッサＢ〜Ｄについても同様である。
【００１９】
ＩＯＩＦ４８は、制御部１２とグラフィックプロセッサ１６及びＩＯコントローラ２０とを相互に通信可能に接続するための入出力インターフェースである。ＩＯＩＦ４８は、内部バス５２に接続しており、制御部１２の各部と外部デバイスとがＩＯＩＦ４８を介して相互に信号の送受信が可能となっている。
【００２０】
ＭＩＣ５０は、メモリ１４にアクセスするためのメモリインターフェースコントローラである。ＭＩＣ５０を介して、制御部１２やＩＯコントローラ２０などの周辺デバイスは、メモリ１４にアクセスすることができる。メモリ１４に対するデータの読み込みや書き込みがあると、ＭＩＣ５０において読み込みアクセス（Read Dispatched）や書き込みアクセス（Write Dispatched）の信号が発生し、トレースバス５４に伝送される。
【００２１】
トレースバス５４は、制御部１２のハードウェアモジュールから発信されるパフォーマンス信号が伝送されるバスである。本実施形態では、トレースバス５４には、少なくともプロセッサＡ〜Ｄ及びＭＩＣからのパフォーマンス信号が伝送されることとするが、これ以外のモジュールからの信号が伝送されることとしてもよい。
【００２２】
パフォーマンスカウンタ５６は、トレースバス５４を通る信号のうち所定の信号の発生をカウントするためのものである。本実施形態では、プロセッサＡ〜Ｄ及びＭＩＣからのパフォーマンス信号の発生回数を計数することとするが、これに限られず、ユーザが計数対象となる信号を自由に設定できることとしてもよい。そして、インターバルタイマ５８によって所定時間間隔ごと送られるカウンタクリア信号に基づいて、カウンタの計数値が初期化される。
【００２３】
トレースバッファ６０は、パフォーマンスカウンタ５６により所定時間間隔において計数された所定信号の発生頻度情報を格納する記憶部である。インターバルタイマ５８によって所定時間間隔ごと送られるカウンタクリア信号に基づいて、パフォーマンスカウンタ５６で計数された各種類のパフォーマンス信号の回数、すなわち所定信号の発生頻度情報がトレースバッファ６０に書き込まれる。なお、トレースバッファ６０は内部バス５２にも接続されており、プロセッサＡ〜Ｄはトレースバッファ６０の記憶内容を参照することができる。
【００２４】
図３には、ゲーム装置１０の一部のブロック構成図を示す。同図では、ゲーム装置１０のうち、プロセッサＡ、ディスクドライブ２６及びメモリ１４が中心として示されている。プロセッサＡが、ＤＶＤメディア３４（図１参照）に格納されるデータを用いてデータ処理を行う場合について、以下説明する。なお、他のプロセッサＢ〜Ｄにおいてもデータ処理の動作は同様である。
【００２５】
プロセッサＡは、ローカルストア６４をダブルバッファ構成にしてデータ処理を行うこととする。ダブルバッファ構成とは、プロセッサＡが、片方のバッファにおいて演算を行っている間に、次の演算で処理すべきデータをメモリ１４から読み出しておき、演算が終了するとすぐに次の演算に移るという構成のことである。ダブルバッファ構成において、内部バス５２の混雑によってメモリ１４とプロセッサＡとの間のデータ転送が遅延すると、次の演算がなかなか開始されず非効率となる。本実施形態においては、内部バス５２がメモリ１４とプロセッサＡとの間のデータ転送に起因して混雑していると判断される場合には、メモリ１４に格納されるデータを圧縮して、内部バス５２を介して転送されるデータ量を減らして、処理の効率を高める。具体的な処理の流れについては、以下に述べる。
【００２６】
プロセッサＡは、まず、Ｎ番目のデータ処理の最中に、Ｎ＋１番目の処理対象データの読み込み要求をＤＭＡコントローラ６６に出す。処理対象データは、ディスクドライブ２６に収められたＤＶＤメディア３４に格納されていることとする。そして、ＤＭＡコントローラ６６からデータ転送の要求を受け取ったＩＯコントローラ２０は、ＤＶＤメディア３４の格納されたディスクドライブ２６から対象のデータを読み出す。図４（Ａ）に示されるように、メモリ１４とプロセッサＡとの間の内部バス５２が競合していない場合には、ＩＯコントローラ２０で読み出し（ステップI）たデータを、そのままの型で（後述するように圧縮処理を施さずに）データを転送し（ステップII）メモリ１４に格納する。そして、プロセッサＡでは、ＩＯコントローラ２０からメモリ１４へのデータの転送が終了した旨の信号を受けたＤＭＡコントローラ６６が、そのデータをメモリ１４から読み込んで、ローカルストア６４に転送し（ステップIII）、Ｎ＋１番目のデータ処理を開始する（ステップIV）。バス５２の競合がある場合には、図４（Ｂ）に示されるように、データ転送に係る処理（ステップII及びIII）において遅延が生じてしまう。そこで、本実施形態に係るゲーム装置１０では、バス５２の競合が生じている場合には、図４（Ｃ）に示されるように、メモリ１４に格納するデータを圧縮し、転送するデータ量を減らして、全体的な処理時間を短縮するようにしている。そして、本実施形態に係るゲーム装置１０は、上記の処理の切り替えを、パフォーマンスモニタ５３のトレースバッファ６０に格納された情報に基づいて判断するようにしている。これにより、実際の制御部１２のパフォーマンスに応じて、上述したデータの圧縮処理を行うようにすることができる。
【００２７】
図５には、パフォーマンスモニタ５３のブロック構成図を示す。同図に示されるように、パフォーマンスモニタ５３は、パフォーマンスカウンタ５６、インターバルタイマ５８及びトレースバッファ６０を含んで構成される。なお、パフォーマンスカウンタ５６は、セレクタ５５とカウンタ５７とから構成される。
【００２８】
パフォーマンスモニタ５３には、ＭＩＣ５０からの読み込みアクセス（Read Dispatched）や書き込みアクセス（Write Dispatched）の発生の信号、及び、ＤＭＡコントローラ６６からのキューフル（Queue Full）及びキューノットエンプティ（Queue not empty）の信号のみがセレクタ５５で選別され、カウンタ５７でその発生回数がカウントされる。そして、インターバルタイマ５８から所定時間間隔ごとに送られる信号に応じて、各信号のカウンタ５７に格納される回数をトレースバッファ６０に書き込んで、カウンタ５７をクリアする。本実施形態では、カウンタ５７は、３２ｂｉｔカウンタとし、トレースバッファには４つの信号の頻度情報である１２８ｂｉｔを１列として所定時間間隔ごとにデータが順次格納されることとするが、これに限らず、取得される信号及びカウンタ５７のサイズをユーザが自由に設定できることとしてもよい。
【００２９】
図６には、ゲーム装置１０の機能ブロック図を示す。同図に示されるように、ゲーム装置１０は、データ処理部７０、イベント検知部７２、頻度情報記憶部７４、制約発生判断部７６及び処理内容変更部７８を含んで構成される。
【００３０】
データ処理部７０は、データの処理を行うものであり、制御部１２のプロセッサＡ〜Ｄ及びＭＩＣ５０から構成される。プロセッサＡ〜Ｄは共有するメモリ１４から自己のローカルストア６４にデータを転送し、データ処理を行う。ＭＩＣ５０はプロセッサＡ〜Ｄのメモリ１４へのアクセスを中継する。
【００３１】
イベント検知部７２は、データ処理部７０による処理において所定種類のイベントが発生したことを検知するものであり、ＤＭＡコントローラ６６、ＭＩＣ５０及びセレクタ５５を含んで構成される。イベント検知部７２において検知するイベントは、複数のプロセッサのうち特定のプロセッサ（ここではプロセッサＡ）におけるバス５２を介したメモリ１４へのアクセスの待ちが発生したことを示す第１イベントと、メモリ１４へのアクセスが発生したことを示す第２イベントである。第１イベントは、プロセッサのＤＭＡコントローラ６６からのキューフル（Queue full）の信号によって検知される。また、第２イベントは、ＭＩＣ５０におけるメモリアクセス（読み込みアクセス（Read Dispatched）や書き込みアクセス（Write Dispatched））の発生の信号によって検知される。
【００３２】
頻度情報記憶部７４は、イベント検知部７２により検知する所定種類のイベントの発生する頻度情報を記憶するものであり、トレースバッファ６０を含んで構成される。所定種類のイベントの発生する頻度情報は、具体的には、インターバルタイマ５８によって区切られる時間間隔において、イベント検知部７２によって検知する前記第１イベントと前記第２イベントの発生をカウンタ５７で計数する回数である。この頻度情報をインターバルタイマによって区切られる時間間隔毎にトレースバッファ６０に順次書き込む。
【００３３】
制約発生判断部７６は、頻度情報記憶部７４に記憶される頻度情報に基づいて、データ処理部７０による処理に所定種類の制約が発生しているかを判断するものであり、例えばプロセッサＡにより構成される。制約発生判断部７６により判断される制約とは、ここでは、データ処理部７０による処理に対して、プロセッサＡとメモリ１４との間のデータ転送に起因して生じる制約とするが、これに限られるものではない。プロセッサのＤＭＡコントローラ６６のキューが溜まり続けている場合に、メモリ１４のアクセスが頻繁にあれば、処理が停滞しているのは内部バス５２の混雑が要因だと推定される。従って、プロセッサコア６２は、トレースバッファ６０から上記第１イベント及び第２イベントの発生の頻度情報を読み出し、それらの情報に基づいて前記データ転送に起因する制約が発生しているか否かを判断する。例えば、複数回のインターバルタイマ５８で区切られる時間間隔において、第１イベントの頻度が所定の閾値を（例えば所定回数以上）連続して超えている期間において、第２イベントの発生する頻度が所定頻度を超えるか否かによって、制約発生の有無が判断される。上記のように、実行中のデータ処理のパフォーマンス解析にプロセッサコア６２が素早くアクセスできるトレースバッファ６０に格納された頻度情報を利用することで、パフォーマンス解析用の他のプログラムによる割り込み無しに、実行中のプログラムにおけるデータ処理のパフォーマンス情報をリアルタイムに把握できるようになる。なお、制約発生判断部７６は、プロセッサＡのプロセッサコア６２により構成されてもよいし、トレースバッファ６０にアクセスできる他のプロセッサのプロセッサコア６２により構成されてもよい。
【００３４】
処理内容変更部７８は、制約発生判断部７６によりデータ処理部７０による処理に所定種類の制約が発生していると判断する場合に、データ処理部７０による処理の内容を変更するものであり、例えばプロセッサＡ又はＩＯコントローラ２０により構成される。本実施形態では、制約発生判断部７６により、データ処理部７０による処理にプロセッサＡとメモリ１４との間のデータ転送に起因する制約が発生していると判断される場合に、メモリ１４に格納するデータを圧縮させることとするが、これに限られるものではない。圧縮されたデータに対しては、データ処理部７０は自己のローカルストア６４にデータを転送後、データを伸張してからデータ処理を行う。
【００３５】
制約発生判断部７６および処理内容変更部７８がプロセッサＡにより実現されている場合における具体的な処理を以下に述べる。プロセッサＡが、内部バス５２を介して、トレースバッファ６０の内容を参照する。そして、複数回のインターバルタイマ５８で区切られる時間間隔において、第１イベントの頻度が所定の閾値を（例えば所定回数以上）連続して超えている期間において、第２イベントの発生する頻度が所定頻度を超えている場合には、プロセッサＡは、プロセッサＡとメモリ１４間のバスの混雑に起因するデータ転送の制約が発生していると判断し、メモリ１４内の共有メモリ空間に圧縮モードを示すフラグを立てる。圧縮モードを示すフラグは、プロセッサＡ〜Ｄ及びＩＯコントローラ２０によって参照される。各プロセッサ及びＩＯコントローラ２０は、共有メモリ空間を定期的に参照し、最新のフラグの値を自己の専用記憶部（ローカルストア等）に格納しておくこととしてもよい。そして、各プロセッサ及びＩＯコントローラ２０は、圧縮モードのフラグが立っている時は、データを圧縮してメモリ１４に格納し、メモリ１４からデータを受け取る場合は、そのデータを受け取った後に伸張することとする。プロセッサＡがＤＶＤメディア３４に記憶されたデータを読み込んでプログラムを処理する場合について以下に説明する。プロセッサＡからデータ転送の要求を受けたＩＯコントローラ２０は、圧縮モードのフラグが立っている場合には、ディスクドライブ２６に格納されたＤＶＤメディア３４から読み出したデータを圧縮して、メモリ１４に書き込む。そして、書き込みが終了すると、データの格納位置及びデータサイズをＤＭＡコントローラ６６に通知し、ＤＭＡコントローラ６６は、メモリ１４から当該データを読み込んで、ローカルストア６４に格納する。そして、プロセッサＡは、圧縮モードのフラグを参照することで、現在圧縮モードでデータの転送をしていると判断し、当該データを伸張した後、伸張したデータを用いてプログラムを処理する。上記の機能の実装は、プロセッサＡ及びＩＯコントローラ２０がそれぞれ用いるデータ転送プログラムにおいて行うこととしてもよい。つまり、データ転送プログラムの中で、データ転送を実行する前に圧縮モードのフラグを参照するようにしておいて、圧縮モードのフラグが立っている場合には、データを圧縮してメモリ１４に格納し、メモリ１４からデータを受け取るときには、そのデータを受け取った後に伸張するようにデータ転送プログラムを実装することとしてもよい。また、上記の例では、プロセッサＡが圧縮モードのフラグを立てることとしているが、他のプロセッサＢ〜Ｄが制約の発生を判断し、フラグを立てることとしてもよい。
【００３６】
以下、本発明の実施の形態に係る画像処理装置の動作の詳細について説明する。
【００３７】
図７は、ゲーム装置１０のデータ処理中におけるデータ構造変更処理のフロー図である。ゲーム装置１０は、パフォーマンスモニタ５３の初期設定を行う（Ｓ１０１）。初期設定においては、パフォーマンス信号として何を検出するかや、処理に制約が発生していると判断する場合の頻度の閾値や、インターバルタイマ５８からカウンタ５６への初期化信号の出力時間間隔等を設定する。そして、パフォーマンス計測を開始し（Ｓ１０２）、例えばゲームプログラム等のＤＶＤメディア３４から供給されるプログラムに基づいてデータ処理を行う（Ｓ１０３）。所定時間が経過する前に、データ処理が終了すると判断する（Ｓ１０４）場合には、処理を終了する。データ処理が終了しない場合には、所定時間経過後に計測を終了する（Ｓ１０５）。そして、計測した第１イベントと第２イベントの頻度情報から、ゲーム装置１０の処理のパフォーマンス情報を解析し（Ｓ１０６）、プロセッサＡとメモリ１４間のデータ転送に起因する制約が発生しているか否か、すなわちデータ構造の変更が必要か否かを判断する（Ｓ１０７）。制約が発生していると判断する場合には、データを圧縮して（Ｓ１０８）メモリ１４に書き込むこととし、プロセッサＡは圧縮されたデータを転送後にデータの伸張を行ってデータ処理を行うこととする。
【００３８】
以上説明した本発明の実施の形態に係るゲーム装置１０によれば、実行中のデータ処理のパフォーマンス解析にトレースバッファ６０に格納された所定イベントの頻度情報を利用することで、パフォーマンス解析用のソフトウェアによる割り込み無しに、実行中のデータ処理におけるパフォーマンス情報をリアルタイムに把握でき、その情報に基づいて適宜データ処理内容を変更して効率的にデータ処理を行うことができる。
【００３９】
なお、本発明は上記実施形態に限定されるものではない。
【００４０】
上記実施形態では、制約が発生していると判断する場合に、全てのデータを圧縮することとしているが、全てのデータを圧縮することとしなくてもよい。例えば、トレースバッファに格納される情報に基づいて、圧縮するデータの比率を決定することとしてもよい。
【００４１】
また、上記実施形態では、プロセッサとＭＩＣから発信される信号を用いて、データ処理における制約の発生を判断しているが、他のハードウェアモジュールから発信される信号を用いて制約の発生を判断することとしてもよい。
【００４２】
また、上記実施形態では、プロセッサとメモリ間のデータ転送に起因する制約が発生している場合に、データの処理内容を変更しているが、制約はこれに限られなくともよい。例えば、制約は、メモリアクセスの競合、割り込みの競合、デッドロック等の情報処理装置のデータ処理において発生する様々な制約であってもよい。
【００４３】
また、上記実施形態では、プロセッサの数を４つとしているが、プロセッサの数はこれに限られるものではない。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施形態に係るゲーム装置のハードウェア構成図を示す。
【図２】制御部１２の詳細ハードウェア構成図を示す。
【図３】ゲーム装置１０の一部のブロック構成図を示す。
【図４】ゲーム装置が制約の発生に応じてデータ処理を変更することの説明図を示す。
【図５】パフォーマンスモニタ５３のブロック構成図を示す。
【図６】ゲーム装置１０の機能ブロック図を示す。
【図７】ゲーム装置１０のデータ構造変更処理を示すフロー図である。
【符号の説明】
【００４５】
１０  ゲーム装置、１２  制御部、１４  メモリ、１６  グラフィックプロセッサ、１８  グラフィックインターフェース、２０  ＩＯコントローラ、２２  コントローラインターフェース、２４  ネットワークインターフェース、２６  ディスクドライブ、２８  ディスプレイ、３０  コントローラ、３２  ネットワーク、３４  ＤＶＤメディア、４８  ＩＯインターフェース、５０  メモリインターフェースコントローラ、５２  内部バス、５３  パフォーマンスモニタ、５４  トレースバス、５５  セレクタ、５６  パフォーマンスカウンタ、５７  カウンタ、５８  インターバルタイマ、６０  トレースバッファ、６２  プロセッサコア、６４  ローカルストア、６６  ＤＭＡコントローラ、６８  インターフェース、７０  データ処理部、７２  イベント検知部、７４  頻度情報記憶部、７６  制約発生判断部、７８  処理内容変更部、Ａ，Ｂ，Ｃ，Ｄ  プロセッサ。
【図１】
2006293694.tif 000003
【図２】
2006293694.tif 000004
【図３】
2006293694.tif 000005
【図４】
2006293694.tif 000006
【図５】
2006293694.tif 000007
【図６】
2006293694.tif 000008
【図７】
2006293694.tif 000009