(57)【要約】【課題】  マルチタスクに対応して、効率的なグラフィックメモリの管理が可能なメモリ管理方法およびグラフィックプロセッサを提供する。【解決手段】  グラフィックメモリは、第１および第２領域に空間的に分割されて使用される。第１領域は、メインプロセッサにより処理されるタスクによらず、所定のアプリケーションに対応するタスクが実行される。一方、変動領域は時分割され、複数のアプリケーションに対応するタスクに関連するデータが、メインプロセッサにより処理されるタスクの変更に伴い、順番に格納される。【選択図】  図２
2006092217.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックプロセッサが管理するメモリを複数の領域に分割し、それらの領域に複数のタスクに関連するデータをタスクごとに分別して格納することを特徴とするメモリ制御方法。
【請求項２】
前記メモリに格納されるタスクに関連するデータは、グラフィックプロセッサにより描画される画像フレームデータと、前記画像フレームデータを作成する際に参照する基本データを含むことを特徴とする請求項１に記載のメモリ制御方法。
【請求項３】
メモリを複数の領域に分割し、それらの領域に複数のタスクに関連するデータをタスクごとに分別して格納するメモリ制御部を有することを特徴とするグラフィックプロセッサ。
【請求項４】
前記メモリに格納されるタスクに関連するデータは、当該グラフィックプロセッサにより描画される画像フレームデータと、前記画像フレームデータを作成する際に参照する基本データを含むことを特徴とする請求項３に記載のグラフィックプロセッサ。
【請求項５】
メモリと演算ユニットとを備え、
前記演算ユニットは個々のタイムスライスにおいては単一のタスクを対象として演算処理を実行する一方、前記メモリは前記演算ユニットにおいて処理中のタスクに関連するデータに加え、別のタイムスライスで演算処理すべき別のタスクに関連するデータを格納することを特徴とするグラフィックプロセッサ。
【請求項６】
装置全体を統括的に制御するメインプロセッサとグラフィックプロセッサを備え、前記グラフィックプロセッサは、
処理対象のタスクを特定する情報を前記メインプロセッサから取得するタスク特定部と、
メモリと、
前記メモリを複数の領域に分割し、前記情報を利用し当該複数の領域に、それぞれ異なる複数のタスクに関連するデータを分別して格納するメモリ制御部と、
を有することを特徴とする情報処理装置。
【請求項７】
装置全体を統括的に制御するメインプロセッサとグラフィックプロセッサとグラフィックプロセッサが管理するメモリを備え、
前記メインプロセッサは同時に複数のタスクを処理するための複数の処理ユニットを備え、
前記グラフィックプロセッサは前記メインプロセッサが処理する複数のタスクの内、前記メインプロセッサから指示された単一のタスクを処理するための演算ユニットを備え、
前記メモリは前記メインプロセッサが同時に処理する複数のタスクに関連するデータを同時に格納し、
前記グラフィックプロセッサが処理すべきタスクの変更が前記メインプロセッサから指示されたとき、前記グラフィックプロセッサは変更後のタスクに関連するデータを前記メモリの当該タスクに対応する領域へ格納することを特徴とする情報処理装置。
【請求項８】
前記複数のタスクに関連するデータは、前記グラフィックプロセッサによりタスク毎に描画される画像フレームデータと、前記画像フレームデータを作成する際に参照する基本データを含み、
前記グラフィックプロセッサは、前記画像フレームデータおよび前記画像フレームデータを作成する際に参照する基本データを、それぞれ前記メモリの当該タスクに対応する領域へ格納することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記メモリ制御部は、各タスクに対応するアプリケーションが必要とするメモリ容量を、各タスクに関連するデータを格納する領域として割り当てることを特徴とする請求項３に記載のグラフィックプロセッサ。
【請求項１０】
前記メモリ制御部は、各タスクに関連するデータを格納する領域を、当該タスクに対応するアプリケーションからの指示に従って割り当てることを特徴とする請求項９に記載のグラフィックプロセッサ。
【請求項１１】
前記メモリ制御部は、各タスクに関連するデータを格納する領域を、各タスクに対応するアプリケーションの内容に基づいて割り当てることを特徴とする請求項９に記載のグラフィックプロセッサ。
【請求項１２】
複数のタスクを時分割して処理するグラフィックプロセッサが使用するメモリを第１および第２の領域に分割し、
前記第１の領域を、処理対象のタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用する一方、前記第２の領域を、処理対象のタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用することを特徴とするメモリ制御方法。
【請求項１３】
請求項１２に記載のメモリ制御方法において、変更後のタスクに関連するデータを変動領域に格納する前に、変更前のタスクに関連するデータを別のメモリへ退避せしめることを特徴とするメモリ制御方法。
【請求項１４】
請求項１２に記載のメモリ制御方法において、前記変更前および変更後のタスクに関連するデータは、前記グラフィックプロセッサが描画する画像フレームデータと、前記画像フレームデータを作成する際に参照する基本データを含み、変更後のタスクに関連するデータを変動領域に格納する前に、変更前のタスクに関連するデータの内、基本データを別のメモリへ退避せしめることを特徴とするメモリ制御方法。
【請求項１５】
メモリを第１および第２の領域に分割して管理するメモリ制御部を備え、このメモリ制御部は、
前記第１の領域を、処理対象のタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用する一方、前記第２の領域を、処理対象のタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用することを特徴とするグラフィックプロセッサ。
【請求項１６】
装置全体を統括的に制御するメインプロセッサとグラフィックプロセッサを備え、前記グラフィックプロセッサは、
処理対象のタスクを特定する情報をメインプロセッサから取得するタスク特定部と、
メモリと、
前記メモリを第１および第２の領域に分割して管理するメモリ制御部と、
を備え、前記メモリ制御部は、前記第１の領域を処理対象のタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用する一方、前記第２の領域を、処理対象のタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用することを特徴とする情報処理装置。
【請求項１７】
装置全体を統括的に制御するメインプロセッサとグラフィックプロセッサとグラフィックプロセッサが管理するメモリを備え、
前記メインプロセッサは同時に複数のタスクを実行するための複数の処理ユニットを備え、
前記グラフィックプロセッサは前記メインプロセッサから指示された単一のタスクを処理するための演算ユニットと、前記メモリを第１および第２の領域に分割して管理するメモリ制御部と、を備え、
前記メモリ制御部は、前記第１の領域を前記演算ユニットが処理対象とするタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用する一方、前記第２の領域を、前記演算ユニットが処理対象とするタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用することを特徴とする情報処理装置。
【請求項１８】
前記メモリ制御部は、各タスクに対応するアプリケーションが必要とするメモリ容量を、各タスクに関連するデータを格納する領域として、固定領域または変動領域のいずれかに割り当てることを特徴とする請求項１５に記載のグラフィックプロセッサ。
【請求項１９】
前記タスクに関連するデータは、グラフィックプロセッサにより描画される画像フレームデータと、前記画像フレームデータを作成する際に参照する基本データを含み、
前記メモリ制御部は、前記各タスクに関連するデータを、前記画像フレームデータと前記画像フレームデータを作成する際に参照する基本データに分割し、それぞれを固定領域または変動領域のいずれかに格納することを特徴とする請求項１８に記載のグラフィックプロセッサ。
【請求項２０】
前記メモリ制御部は、各タスクに関連するデータを格納する領域を、固定領域または変動領域のいずれとして割り当てるかについて、各タスクに対応するアプリケーションからの指示に従って決定することを特徴とする請求項１８に記載のグラフィックプロセッサ。
【請求項２１】
前記メモリ制御部は、各タスクに関連するデータを格納する領域を、固定領域または変動領域のいずれとして割り当てるかについて、各タスクに対応するアプリケーションの内容に基づいて決定することを特徴とする請求項１８に記載のグラフィックプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理技術に関し、特にグラフィックプロセッサにおけるメモリ管理技術に関する。
【背景技術】
【０００２】
近年のコンピュータグラフィックス技術の発達に伴い、大型計算機や、パーソナルコンピュータ、ゲーム機器などの情報処理装置から出力される画像データは、ますます複雑化、高度化している。そこで、このような情報処理装置は、通常の演算処理装置を行うメインプロセッサとは別に、画像処理専用のグラフィックプロセッサを搭載し、メインプロセッサを画像処理から解放して、システムのオーバーヘッドの解消を図っている。
【０００３】
これらの情報処理装置においては、メインプロセッサが複数のタスクを同時に処理する場合があり、メインプロセッサにより処理されるタスクの切り替えに伴って、グラフィックプロセッサにより処理されるタスクも切り替える必要がある。ところが、グラフィックプロセッサが画像処理専用に使用する画像用メモリの容量は予め決まっているため、複数のタスクで画像用メモリを共有する場合、一のタスクから他のタスクへと切り替えられる際には、新たな画像用データの書き込みに先立って、それまで格納されていた画像用データを別のメモリ領域に退避する必要がある。
【０００４】
この画像用メモリの画像データの書き換えにはある程度の時間を要するため、ゲームなどユーザの操作によって出力される映像がリアルタイムで変化するタスクの場合には、タスクの切り替えに伴うオーバーヘッドは、動画の停止やコマ落ちなどの画質低下の原因となってしまう。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明はこのような課題に鑑みてなされたものであり、その目的は、マルチタスクに対応した、効率的なメモリ管理が可能なメモリ管理方法およびグラフィックプロセッサの提供にある。
【課題を解決するための手段】
【０００６】
本発明のある態様はメモリ制御方法に関する。このメモリ制御方法は、グラフィックプロセッサが管理するメモリを複数の領域に分割し、それらの領域に複数のタスクに関連するデータをタスクごとに分別して格納する。
【０００７】
「タスク」とは、ある目的を達成するためにプログラムされたアプリケーションまたはそれに含まれる情報処理の内容をいい、アプリケーションと対応してもよいし、入出力制御やユーザが指定したコマンドなどアプリケーションよりも小さい単位と対応してもよく、何らかの処理または機能の単位に対応すればよい。
この態様によれば、空間分割や時間分割されたメモリの領域を複数のタスクに適切に割り当てることによって、グラフィックプロセッサにより使用されるメモリを、複数のタスクで効率的に共有して使用することができる。
【０００８】
本発明の別の態様は、グラフィックプロセッサに関する。このグラフィックプロセッサは、メモリを複数の領域に分割し、それらの領域に複数のタスクに関連するデータをタスクごとに分別して格納するメモリ制御部を有する。
【０００９】
この態様によれば、メモリ制御部によりメモリを空間分割、時間分割し、各タスクに対してメモリ領域の割り当てを行うことで、グラフィックプロセッサにおけるメモリ管理を効率的に行うことができる。
【００１０】
本発明のさらに別の態様は、メモリ制御方法である。この方法は、複数のタスクを時分割して処理するグラフィックプロセッサが使用するメモリを第１および第２の領域に分割して使用する。この際、第１の領域を、処理対象のタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用する一方、第２の領域を、処理対象のタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用する。
【００１１】
この態様によれば、固定領域に格納されたデータは、タスクの切り替えの際に書き換えられることがないため、データの退避などに伴うオーバーヘッドの問題は解消し、グラフィックプロセッサにおけるタスク切り替えを高速に処理することができる。また、同時に変動領域を設け、この変動領域を時間分割し複数のタスクで共有することによって効率的なメモリ管理が行うことができる。
【００１２】
本発明のさらに別の態様は、グラフィックプロセッサである。このグラフィックプロセッサは、メモリを第１および第２の領域に分割して管理するメモリ制御部を備える。このメモリ制御部は、第１の領域を、処理対象のタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用する。一方、第２の領域を、処理対象のタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用する。
【００１３】
この態様によれば、グラフィックプロセッサ内のメモリ制御部に、固定領域と変動領域へのタスクの割り当てや、データの退避、復帰などを処理させることにより、効率的にメモリ管理を行うことができる。
【００１４】
なお、以上の構成要素の任意の組合せや本発明の構成要素や表現を方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明に係るメモリ制御方法、グラフィックプロセッサおよび情報処理装置によれば、グラフィックプロセッサにより使用されるメモリを、複数のタスクで効率的に共有して使用することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の第１の実施の形態に係る情報処理装置１０００の構成を示すブロック図である。情報処理装置１０００は、グラフィックプロセッサ１００とメインプロセッサ２００、メインメモリ５０を含む。情報処理装置１０００は、表示装置５００と接続されており、メインプロセッサ２００およびグラフィックプロセッサ１００の処理の結果得られた画像、映像を出力する。図１などにおいて、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１７】
この情報処理装置１０００では、情報処理装置１０００を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム（以下、ＯＳと略す）が実行される。そのＯＳ上で複数のアプリケーションソフトウェア（以下、単にアプリケーションという）が実行され、情報処理装置１０００は、複数のアプリケーションに対応するタスクを並列的に処理する。
【００１８】
メインプロセッサ２００は、それぞれのアプリケーションに対応するタスクを時分割し、各タイムスライスごとに各アプリケーションに対応するタスクを実行する並列処理を行っている。例えば、あるタイムスライスにおいて処理されるアプリケーションに対応するタスクが３次元コンピュータグラフィックスの画像処理に関するものである場合には、モデリングなどの演算処理を行うことになる。
【００１９】
本実施の形態においては、メインプロセッサ２００と、グラフィックプロセッサ１００は協調的に演算処理を行っており、グラフィックプロセッサ１００は、メインプロセッサ２００により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置５００に出力し、または図示しない記憶装置に記憶する。
【００２０】
メインメモリ５０は、主にメインプロセッサ２００によって使用される記憶領域である。このメインメモリ５０は、複数のアプリケーションに対応するタスクに関連するデータが格納される。例えば、メインプロセッサ２００によりコンピュータグラフィックスに関するタスクを処理して得られたモデリングデータなどが一時的に格納される。
また、このメインメモリ５０には、後述するようにグラフィックプロセッサ１００による演算処理の結果得られたデータが退避して格納される場合もある。
【００２１】
グラフィックプロセッサ１００は、画像に関する処理を専用に実行するブロックであり、レンダリング処理などを行うユニットである。グラフィックプロセッサ１００は、グラフィックメモリ１０、演算ユニット１２、ディスプレイコントローラ１８、制御ブロック２０を含む。これらのブロック同士は、バス４０で接続されており、各ブロック間でデータ信号の送受が行われる。
【００２２】
グラフィックメモリ１０は、グラフィックプロセッサ１００により使用、管理されるグラフィックに関するデータ専用のメモリ領域である。このグラフィックメモリ１０は、画像フレームデータが格納されるフレームバッファやＺバッファに加え、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブルなどが格納される領域を含んでいる。グラフィックメモリ１０は、エントリのバス幅を広くし、あるいは転送クロックを高速化するなどして演算ユニット１２からグラフィックメモリ１０に格納されているデータに高速にアクセスできるように設計されている。
【００２３】
演算ユニット１２は、メインプロセッサ２００からの命令に従って、グラフィックに関する様々な演算処理を行う。その処理の一例としては、３次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。演算ユニット１２は、特に３次元グラフィックスに関する処理を高速に行うために、ラスタライザ１２ａ、シェーダユニット１２ｂ、テクスチャユニット１２ｃなどの機能ブロックを含んでいる。
【００２４】
ラスタライザ１２ａは、描画するプリミティブの頂点データを受け取り、３次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスター処理を行う。このラスタライザ１２ａによってプリミティブがピクセル展開されて、各ピクセル毎にピクセル情報を算出する。このピクセル情報には、ＲＧＢカラー値、透明度を表すα値、視点からの奥行きを表すＺ値が含まれる。
【００２５】
ラスタライザ１２ａは、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット１２ｂ、テクスチャユニット１２ｃへと出力する。ラスタライザ１２ａから出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット１２ｂはスタックされたピクセル領域を順に処理していく。
【００２６】
シェーダユニット１２ｂは、ラスタライザ１２ａにより算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット１２ｃにより得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックメモリ１０内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット１２ｂはフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【００２７】
テクスチャユニット１２ｃは、シェーダユニット１２ｂからテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックメモリ１０内のテクスチャバッファを読み出し、所定の処理を行った後にシェーダユニット１２ｂに対して出力する。
【００２８】
制御ブロック２０は、このグラフィックプロセッサ１００全体を制御するブロックであり、演算ユニット１２、グラフィックメモリ１０、ディスプレイコントローラ１８を統括的に制御し、各ブロック間のデータ転送の同期管理、割り込み処理、タイマー管理等を行う。
【００２９】
制御ブロック２０は、メモリ制御部１４、タスク特定部１６を含む。メモリ制御部１４は、後述するグラフィックメモリ１０の空間分割および時間分割を管理するブロックであって、各アプリケーションに対するメモリ容量やアドレスの割り当てなどのメモリ管理機能を有する。タスク特定部１６は、メインプロセッサ２００からタスク切り替えの通知を受け付け、グラフィックプロセッサ１００で処理すべきタスクを特定する。
【００３０】
ディスプレイコントローラ１８は、水平および垂直同期信号を生成し、表示装置５００の表示タイミングに従って、グラフィックメモリ１０に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ１８は、ライン状に読み込まれたピクセルデータを、ＲＧＢのカラー値からなるデジタルデータから表示装置５００に対応したフォーマットに変換して出力する。
【００３１】
つぎに、以上のように構成された情報処理装置１０００の動作について、本実施の形態の特徴であるメモリ管理機能を中心に説明する。
【００３２】
いま、情報処理装置１０００は、ゲームとビデオ録画に関する２つのアプリケーションを同時に実行しているものとする。以下、ゲームアプリケーションを第１アプリケーションとし、それに関連するタスクを第１タスクと総称する。同様に、ビデオ録画アプリケーションを第２アプリケーションとし、それに関連するタスクを第２タスクと総称する。メインプロセッサ２００は、第１タスクおよび第２タスクを時分割によって処理している。
【００３３】
図２は、グラフィックメモリ１０が空間および時間分割され、２つのアプリケーションによって共有される状態を示すタイムチャートである。同図は横軸が時間、縦軸がメモリの容量を表している。
【００３４】
グラフィックメモリ１０は、第１および第２領域に分割されて使用される。第１領域は、メインプロセッサ２００における処理対象のタスクが変更されたかどうかに関わらず所定のタスクに関連するデータを格納する固定領域として使用される。具体的には、第１領域にはメインプロセッサ２００で処理されるタスクの切り替えにかかわらず、第１アプリケーションに対応する第１タスクに関連するデータＧＡＭＥが固定的に格納される。
【００３５】
一方、第２領域は、メインプロセッサ２００における処理対象のタスクが変更されたことに伴い、変更後のタスクに関連するデータを格納する変動領域として使用される。具体的には、第２領域は、メインプロセッサ２００による処理と同期して、第１アプリケーションに対応するタスクに関連したデータＧＡＭＥと、第２アプリケーション対応するタスクに関連したデータＰＶＲとが時間的に入れ替わり格納される。
【００３６】
図２において、時刻Ｔ０からＴ１は、メインプロセッサ２００によってゲームアプリケーションに対応するタスクが処理されている。この間、グラフィックメモリ１０は、第１領域に加えて第２領域にもゲームに関連するデータＧＡＭＥが格納されている。
【００３７】
第２領域にデータが格納されるアプリケーションは、タスクの切り替えに際して、データを退避するかを予め指定しておく。これは例えばアプリケーションごとにデータ退避フラグＦＤｉ（添え字のｉはアプリケーションの番号を表す）を用意しておき、退避する場合には１、退避しない場合には０を割り当てることで識別することができる。例えば、第１タスクであるゲームに関するデータの退避が必要な場合にはＦＤ１＝１とし、第２タスクであるビデオ録画に関するデータを退避する必要がない場合には、ＦＤ２＝０とする。
なお、データ退避フラグＦＤｉは、あらかじめグラフィックメモリ１０の一部、あるいはメインメモリ５０に記憶しておいてもよいし、タスクの切り替えのたびに、メインプロセッサ２００からグラフィックプロセッサ１００に対して通知してもよい。
【００３８】
時刻Ｔ１にメインプロセッサ２００により処理されるタスクがビデオ録画アプリケーションに対応する第２タスクに切り替えられる。タスクの切り替えにともない、メインプロセッサ２００は、グラフィックプロセッサ１００のタスク特定部１６に対してタスクの変更を通知する。
【００３９】
タスク変更の通知を受けたグラフィックプロセッサ１００は、第１タスクのデータ退避フラグＦＤ１を参照する。いま、ＦＤ１＝１の場合には、第２領域に格納されたデータをグラフィックメモリ１０とは別の、メインメモリ５０に一時退避する。ＦＤ１＝０の場合には、第２領域に格納されたデータの退避は行わない。
【００４０】
その後、メモリ制御部１４は、第２領域に格納されていたデータをすべてクリアする。データがクリアされた後、メモリ制御部は、第２タスクのデータ退避フラグＦＤ２を参照し、ＦＤ２＝１の場合には、以前のタイムスライスで退避しておいた第２タスクに関連するデータをメインメモリ５０から読み込み、グラフィックメモリ１０の第２領域に復帰させる。
【００４１】
グラフィックメモリ１０において、データの退避、復帰のスワップ動作が完了すると、メモリ制御部１４はメインプロセッサ２００に対して、グラフィックプロセッサ１００のタスク変更の準備が整ったことを通知する。この通知を受けてメインプロセッサ２００は、第２アプリケーションに対応する第２タスクの処理を開始する。時刻Ｔ１から時刻Ｔ２の期間においては、第２タスクに関連するデータは第２領域にのみ格納され、第１領域はゲームアプリケーションに対応した第１タスクに関連するデータによって占有されている。
【００４２】
時刻Ｔ２にメインプロセッサ２００により処理されるタスクがふたたび第１タスクに切り替えられる。グラフィックプロセッサ１００は、メインプロセッサ２００からタスクの変更の通知を受ける。グラフィックプロセッサ１００は、第２タスクのデータ退避フラグＦＤ２を参照し、必要であればデータの退避を行う。
【００４３】
上述の一連のメモリ管理はメモリ制御部１４によって行われる。図３は、メモリ制御部１４による第２領域のメモリ管理の手順を示すフローチャートである。
【００４４】
メインプロセッサ２００が第ｉアプリケーションに対応する第ｉタスクの処理を終え、次の第ｊタスクへの切り替え通知を行う（Ｓ１００）。メモリ制御部１４は、第ｉタスクのデータ退避フラグＦＤｉを参照し、データを退避すべきかどうかを確認する（Ｓ１１０）。タスクＦＤｉ＝１ならば、第２領域に格納されたデータをメインメモリ５０に退避する（Ｓ１２０）。
【００４５】
メモリ制御部１４は、第２領域に格納されていたデータをすべてクリアする（Ｓ１３０）。この際、第ｉタスクに関連するデータを退避しなかった場合には、そのデータは消去されることになる。このデータクリアによって、異なるアプリケーション間で、誤ったデータを読み込むことが無くなるため、複数のアプリケーションを安定に動作させることができる。
【００４６】
つぎに、メモリ制御部１４は、第ｊタスクのデータ退避フラグＦＤｊを参照する（Ｓ１４０）。その結果、ＦＤｊ＝１ならば、メインメモリ５０に退避していた第ｊタスクに関連するデータを読み込み、グラフィックメモリ１０に復帰する（Ｓ１５０）。
メモリ制御部１４は、メインプロセッサ２００に対し、一連のメモリスワップ動作の完了を通知する（Ｓ１６０）。
【００４７】
その後、メインプロセッサ２００が第ｊタスクに関連する処理を開始し、グラフィックプロセッサ１００の演算ユニット１２はメインプロセッサ２００から指示された第ｊタスクに関連する画像処理を行う。
【００４８】
以上のように、本実施の形態に係る情報処理装置１０００は、グラフィックメモリ１０を第１および第２領域に分割し、それぞれを固定領域および変動領域として使用する。その結果、メインプロセッサ２００で処理されるタスクが切り替えられても、固定領域として使用される第１領域に格納される第１タスクに関連するデータは、一時的に退避する必要がないため、タスク再開後の再読込が不要となり、スイッチコストを低減し、システムのオーバーヘッドを大幅に低減することができる。
【００４９】
特に３次元グラフィックスの描画を行うゲームアプリケーションなどのように、膨大な計算量およびメモリ容量を必要とし、かつリアルタイム性が要求されるタスクに関連するデータを固定領域に格納することにより、タスク切り替え時にメモリの書き換えに伴うオーバーヘッドが発生しないため、動画が停止したりコマ落ちするといった画質低下の問題を解消することができる。
【００５０】
一方、変動領域として使用する第２領域に、ビデオ録画アプリケーションなどのリアルタイム性の要求されないタスクに関連するデータを格納することによって、メモリを複数のタスクで効率的に共有することができる。
【００５１】
図２に示されるように、第１領域に割り当てられる第１タスクに関連するデータは、固定領域に格納されるデータと、変動領域に格納されるデータに分けられる。
第１タスクであるゲームが、３次元グラフィックを描画する場合には、第１領域および第２領域には、フレームバッファ、Ｚバッファ、テクスチャバッファ、カラールックアップテーブルなどが分割して格納されることになる。そこで、第１領域と第２領域には、それぞれ以下のようにデータを配分して格納してもよい。
【００５２】
例えば、テクスチャデータやカラールックアップテーブルなどは、フレームが異なっても共通して使用される場合があるため、固定領域に割り当てる。アプリケーションの内容によってはグラフィックスがそれほど複雑ではなく画像フレームデータの描画にそれほど時間を要さないような場合、フレームバッファやＺバッファの内容は破棄してもよい。逆に、画像フレームデータを描画するのに比較的多くの計算量を必要とし、あるいは、ある画像フレームデータの描画にそれ以前のフレームの画像フレームデータを必要とする場合には、固定領域に割り当てて、データの退避および読み込みに必要な時間を短縮することが望ましい。これらはアプリケーションごとに、そのアプリケーションの種類や要求される仕様に応じて決定すればよい。
【００５３】
メモリ制御部１４は、第１タスクに関連するフレームバッファ、Ｚバッファ、テクスチャバッファ、カラールックアップテーブルを固定領域、変動領域のいずれに格納すべきかをアプリケーションからの指示に従って判断し、それぞれを格納すべき領域に対応するアドレスを保持しておく。演算ユニット１２内のラスタライザ１２ａ、シェーダユニット１２ｂ、テクスチャユニット１２ｃは、演算の結果得られた画像フレームデータ、テクセル情報などをメモリ制御部１４から指定されたアドレスに書き込むことによって、固定領域と変動領域に、適切なデータを割り振って格納することができる。
【００５４】
また、変動領域である第２領域に格納されるデータを退避するかについては、タスクごとに決定するのではなく、第２領域に格納されるそれぞれのデータごとに指定してもよい。例えば、第２領域に、フレームバッファとテクスチャバッファが格納される場合、テクスチャバッファのみを退避し、フレームバッファは退避しないように設定してもよい。この場合、必要最低限のデータのみの退避を行うことになるため、データの退避および再読込に要する時間を短縮することができる。
いずれのデータを退避するかについては、次にそのタスクが処理されるタイムスライスにおいて、そのデータが必要であるかによって決めてもよい。さらに、そのデータが必要な場合であっても、同一のデータを作成するのに要する時間が、データの退避および復帰に要する時間よりも短い場合には退避しなくてもよい。
【００５５】
図２では、グラフィックメモリ１０を第１、第２の２つの領域に分割したが、図４に示すように、第１から第３領域の３つに分割してもよい。この場合、第１、第２領域をそれぞれ第１、第２タスクの固定領域として使用し、第３領域を変動領域として第１タスクと第２タスクで時分割して使用してもよい。
【００５６】
３つ以上の領域に分割することによって、第１タスクのみでなく、第２タスクについても固定領域を確保することができるため、第２タスクについてもリアルタイム性が要求される場合などにおいて効率的なメモリ管理方法となる。
【００５７】
つぎに、複数のタスクに関連するアプリケーションが起動される際のグラフィックメモリ１０の分割、割り当てに関する手順について図５および図６を用いて説明する。
図５は、複数のアプリケーションが順次起動された場合にグラフィックメモリ１０が空間および時間分割されていく状態遷移を示すタイムチャートである。図中、第Ｘタスクと示されているのは、第Ｘアプリケーションに対応するタスクに関連するデータが格納されている状態を示す。
図６は、ＯＳおよび各アプリケーション間で行われるメモリ割り当てに関するデータのシーケンス図である。以下、括弧内に示されるＳで始まる番号は、図６における各シーケンスに対応する。
【００５８】
時刻Ｔ０に第１アプリケーションが起動される（Ｓ２００）。第１アプリケーションはＯＳに対して所定の容量Ａのグラフィックメモリ１０の割り当てを要求する（Ｓ２０２）。ＯＳは、その時点でのグラフィックメモリ１０の空き容量を参照する（Ｓ２０４）。その結果、時刻Ｔ０においては、他にアプリケーションが起動していないため、ＯＳは要求された容量を第１アプリケーションにそのまま割り当てる（Ｓ２０６）。時刻Ｔ１に第２アプリケーションが起動されるまでの間、グラフィックメモリ１０は、第１アプリケーションによって占有的に使用される。
【００５９】
時刻Ｔ１に第２アプリケーションが起動される（Ｓ２１０）。第２アプリケーションは必要なグラフィックメモリ１０の容量の割り当てをＯＳに対して通知する（Ｓ２１２）。第２アプリケーションにより要求されるメモリ容量が、その時点でのグラフィックメモリ１０の空き容量よりも大きいとき、ＯＳはグラフィックメモリ１０を固定領域、変動領域にそれぞれ対応する第１、第２領域に分割可能か検討する（Ｓ２１６〜Ｓ２２４）。
【００６０】
ＯＳは、先に起動されている第１アプリケーションに対して、固定領域として確保すべき容量を問い合わせる（Ｓ２１６）。第１アプリケーションは、この問い合わせに対して、予め規定しておいた必要な固定領域の容量Ｘを返答する（Ｓ２１８）。
【００６１】
ＯＳは、グラフィックメモリ１０全体の容量Ｍから第１アプリケーションの固定領域の容量Ｘを確保した場合に残る容量Ｙ＝Ｍ−Ｘを計算する（Ｓ２２０）。その結果得られた容量Ｙを変動領域の容量として第２アプリケーションに対して通知し（Ｓ２２２）、第２アプリケーションは、変動領域として容量Ｙが割り当てられた状態でアプリケーションが実行可能かどうかを判断し、ＯＳに返答する（Ｓ２２４）。
【００６２】
第２アプリケーションから実行可能であるとの返答があった場合、ＯＳはメモリ制御部１４に対してグラフィックメモリ１０の分割を指示する（Ｓ２２６）。
【００６３】
以上に示すシーケンスを経て、メモリ制御部１４は、容量Ｘを固定領域として、容量Ｙを変動領域として割り当てる。その後、第1アプリケーションに対応するデータは、内容ごとに固定領域と変動領域に再配置されて、グラフィックメモリ１０の分割が完了する。
【００６４】
シーケンスＳ２２４において、第２アプリケーションから容量Ｙが不足であると返答された場合には、ＯＳはユーザに対してその旨を通知し、第２アプリケーションの起動が中止され、グラフィックメモリ１０の分割は行わずに第１アプリケーションがそのまま使用する。
【００６５】
図５において、時刻Ｔ１からＴ２の期間は、グラフィックプロセッサ１００は第１アプリケーションに対応した第１タスクに関連するデータ処理が行う。その間、グラフィックメモリ１０には、第１、第２領域ともに第１タスクに関連するデータが格納される。その後、時刻Ｔ２に、メインプロセッサ２００から第２アプリケーションに対応する第２タスクへの切り替えが通知されると、第２領域には、第２アプリケーションに対応するタスクに関連するデータが書き込まれる。
【００６６】
以上のように、アプリケーション毎に全体として必要な容量とともに、固定領域として必要な容量を規定しておくことによって、他のアプリケーションが起動されるたびにＯＳおよび制御ブロック２０によって、グラフィックメモリ１０の再割り当てを検討することができ、効率的に共有することができる。
【００６７】
情報処理装置１０００がゲーム専用機である場合には、実行されるアプリケーションとしてはメインとなるゲームアプリケーションと、ビデオ録画アプリケーション、チャットアプリケーションなどのサブアプリケーションが想定される。この場合、ゲームアプリケーションなどのリアルタイム性が要求されうるタスクを、起動の順番に関係なく優先的に固定領域に割り当ててもよい。
【００６８】
また、各アプリケーションが必要とする固定領域を、グラフィックメモリ１０の使用状況に応じて変化させてもよい。すなわち、あらかじめ各アプリケーションにおいて、画像の詳細度に対応させていくつか固定領域の容量を規定しておく。グラフィックメモリ１０の空き容量が十分にあるときは、フルサイズ、フルカラーでの描画を行う。この場合、必要とする固定領域の容量は当然大きくなる。
【００６９】
そこで、複数のアプリケーションが起動される際に、画面サイズや解像度、カラー階調等を低下させることにより必要とする固定領域の容量は小さくすることができる。この場合、ＯＳは、アプリケーションが起動される毎に、すでに実行されているアプリケーションに対して詳細度の低下を打診し、各アプリケーションとの間で固定領域または変動領域として確保すべきメモリ容量を交渉する。複数のアプリケーションを起動する際に、どの程度の画質の低下を許容するかについては、ユーザが指定してもよい。
【００７０】
このように、起動されるアプリケーションの数に応じて、各アプリケーションが固有領域の容量を適応的に変化させていくことにより、より多くのアプリケーションに対応するタスクを実行することが可能となり、効率的にメモリを共有することができる。
【００７１】
上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７２】
本実施の形態に係る情報処理装置１０００においては、グラフィックプロセッサ１００とメインプロセッサ２００とは一のＬＳＩチップとして一体集積化されていてもよく、または別のチップとされていてもよい。実施の形態において示した各ブロックは、集積度についてまで限定するものではなく、いずれの構成要素の組み合わせが集積化され、あるいは別チップとして構成されていてもよい。
【００７３】
本実施の形態においては、２つのアプリケーションに対応するタスク間がマルチタスクによって処理される場合について説明したが、３つ以上のタスクを同時に処理する場合にも適用することができる。このときには、グラフィックメモリ１０の時分割、空間分割の態様を２つ以上の領域に空間分割し、各タスクそれぞれに対して割り当てる固定領域と、複数のタスクに対して割り当てる変動領域をそれぞれ確保すればよい。
【図面の簡単な説明】
【００７４】
【図１】本発明の第１の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】グラフィックメモリが空間および時間分割され、２つのアプリケーションによって共有される状態を示すタイムチャートである。
【図３】メモリ制御部による第２領域のメモリ管理の手順を示すフローチャートである。
【図４】グラフィックメモリが３つの領域に空間分割され、２つのアプリケーションによって共有される状態を示すタイムチャートである。
【図５】複数のアプリケーションが順次起動された場合にグラフィックメモリが空間および時間分割されていく状態遷移を示すタイムチャートである。
【図６】ＯＳおよび各アプリケーション間で行われるメモリ割り当てに関するデータのシーケンス図である。
【符号の説明】
【００７５】
１０  グラフィックメモリ、  １０ａ  フレームバッファ、  １０ｂ  Ｚバッファ、  １０ｃ  テクスチャバッファ、  １０ｄ  カラールックアップテーブル、  １２  演算ユニット、  １２ａ  ラスタライザ、  １２ｂ  シェーダユニット、  １２ｃ  テクスチャユニット、  １４  メモリ制御部、  １６  タスク特定部、  １８  ディスプレイコントローラ、  ２０  制御ブロック、  ４０  バス、  ５０  メインメモリ、  １００  グラフィックプロセッサ、  ２００  メインプロセッサ、  ５００  表示装置、  １０００  情報処理装置。
【図１】
2006092217.tif 000003
【図２】
2006092217.tif 000004
【図３】
2006092217.tif 000005
【図４】
2006092217.tif 000006
【図５】
2006092217.tif 000007
【図６】
2006092217.tif 000008