(57)【特許請求の範囲】
【請求項１】
予め記憶されたデータの展開要求を含む命令を取得する取得手段と、
前記命令についてハッシュ関数を適用して前記命令についてのハッシュ値を生成する生成手段と、
前記命令に含まれる展開要求に従って、対応データを読み出して展開領域に展開する展開手段と、
前記展開領域に展開された前記対応データと前記命令についてのハッシュ値とを関連付けて管理する管理手段と、を有する情報処理装置。
【請求項２】
前記展開手段は、前記命令についてのハッシュ値が既に前記展開領域に展開されたデータに関連付けられたハッシュ値と同一である場合に、前記対応データの前記展開領域への展開を行わない請求項１に記載の情報処理装置。
【請求項３】
前記展開領域に展開されたデータは、所定の条件を満たした場合に破棄されるように構成され、
前記管理手段は、前記命令についてのハッシュ値が既に前記展開領域に展開されたデータに関連付けられたハッシュ値と同一である場合に、該データを前記展開領域に展開されている他のデータよりも破棄されにくいように制御する請求項１または２に記載の情報処理装置。
【請求項４】
前記命令について、該命令に含まれる展開要求に従って前記展開領域に展開された対応データを特定する情報を出力する出力手段をさらに有し、
前記出力手段は、前記命令についてのハッシュ値が既に前記展開領域に展開されたデータに関連付けられたハッシュ値と同一である場合に、該既に前記展開領域に展開されたデータを特定する情報を出力する請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記命令は、画面描画に際して描画手段に対してなされる命令であり、
前記命令に含まれる展開要求は、画面描画に用いられるデータの展開を要求するものであり、
前記出力手段は、前記命令に含まれる展開要求に従って前記展開領域に展開されたデータを特定する情報を前記描画手段に出力する請求項４に記載の情報処理装置。
【請求項６】
画面描画は、連続するフレームについて順次行われるものであり、
前記展開領域に展開されたデータは、少なくとも複数フレームに渡って保持され、
前記出力手段は、１つのフレームに係る画面描画に際して、同一のフレームについて先になされた命令あるいは先行するフレームについてなされた命令に含まれる展開要求に従って前記展開領域に展開されたデータを特定する情報を出力する請求項５に記載の情報処理装置。
【請求項７】
前記取得手段は、複数の機器に提供する画面に係る画面描画について前記命令を並行して取得し、
前記展開手段は、前記複数の機器に提供する画面に係る画面描画についての展開要求に係るデータの展開に前記展開領域を共有し、
前記出力手段は、１つの機器に提供する画面に係る画面描画に際して、異なる機器に提供する画面に係る画面描画についての前記命令に含まれる展開要求に従って前記展開領域に展開されたデータを特定する情報を出力する請求項５または６に記載の情報処理装置。
【請求項８】
前記ハッシュ関数は、画面描画に係る命令全体、展開要求、及び展開指示の種類を示す情報と該指示に関するパラメータの組合せのいずれかについて適用されることでハッシュ値を生成する関数である請求項５乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記画面描画に用いられるデータは、描画オブジェクトのモデルデータ、テクスチャデータ、描画用プログラム、及び描画用プログラムで用いられる演算用データの少なくともいずれかを含む請求項５乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
予め記憶されたデータの展開要求を含む命令を取得する取得工程と、
前記命令についてハッシュ関数を適用して前記命令についてのハッシュ値を生成する生成工程と、
前記命令に含まれる展開要求に従って、対応データを読み出して展開領域に展開する展開工程と、
前記展開領域に展開された前記対応データと前記命令についてのハッシュ値とを関連付けて管理する管理工程と、を有する情報処理装置の制御方法。
【請求項１１】
前記命令についてのハッシュ値が既に前記展開領域に展開されたデータに関連付けられたハッシュ値と同一である場合に、前記展開工程において、前記対応データの前記展開領域への展開は行われない請求項１０に記載の情報処理装置の制御方法。
【請求項１２】
前記展開領域に展開されたデータは、所定の条件を満たした場合に破棄されるように構成され、
前記命令についてのハッシュ値が既に前記展開領域に展開されたデータに関連付けられたハッシュ値と同一である場合に、前記管理工程において、該データは前記展開領域に展開されている他のデータよりも破棄されにくいように制御される請求項１０または１１に記載の情報処理装置の制御方法。
【請求項１３】
前記命令について、該命令に含まれる展開要求に従って前記展開領域に展開された対応データを特定する情報を出力する出力工程をさらに有し、
前記出力工程において、前記命令についてのハッシュ値が既に前記展開領域に展開されたデータに関連付けられたハッシュ値と同一である場合に、該既に前記展開領域に展開されたデータを特定する情報が出力される請求項１０乃至１２のいずれか１項に記載の情報処理装置の制御方法。
【請求項１４】
前記命令は、画面描画に際して描画手段に対してなされる命令であり、
前記命令に含まれる展開要求は、画面描画に用いられるデータの展開を要求するものであり、
前記出力工程において、前記命令に含まれる展開要求に従って前記展開領域に展開されたデータを特定する情報が前記描画手段に出力される請求項１３に記載の情報処理装置の制御方法。
【請求項１５】
画面描画は、連続するフレームについて順次行われるものであり、
前記展開領域に展開されたデータは、少なくとも複数フレームに渡って保持され、
前記出力工程において、１つのフレームに係る画面描画に際して、同一のフレームについて先になされた命令あるいは先行するフレームについてなされた命令に含まれる展開要求に従って前記展開領域に展開されたデータを特定する情報が出力される請求項１４に記載の情報処理装置の制御方法。
【請求項１６】
前記取得工程において、複数の機器に提供する画面に係る画面描画について前記命令が並行して取得され、
前記展開工程において、前記複数の機器に提供する画面に係る画面描画についての展開要求に係るデータの展開に前記展開領域が共有され、
前記出力工程において、１つの機器に提供する画面に係る画面描画に際して、異なる機器に提供する画面に係る画面描画についての前記命令に含まれる展開要求に従って前記展開領域に展開されたデータを特定する情報が出力される請求項１４または１５に記載の情報処理装置の制御方法。
【請求項１７】
前記ハッシュ関数は、画面描画に係る命令全体、展開要求、及び展開指示の種類を示す情報と該指示に関するパラメータの組合せのいずれかについて適用されることでハッシュ値を生成する関数である請求項１４乃至１６のいずれか１項に記載の情報処理装置の制御方法。
【請求項１８】
前記画面描画に用いられるデータは、描画オブジェクトのモデルデータ、テクスチャデータ、描画用プログラム、及び描画用プログラムで用いられる演算用データの少なくともいずれかを含む請求項１４乃至１７のいずれか１項に記載の情報処理装置の制御方法。
【請求項１９】
コンピュータに、請求項１０乃至１８のいずれか１項に記載の情報処理装置の制御方法の各工程を実行させるためのプログラム。
【請求項２０】
コンピュータに、請求項１０乃至１８のいずれか１項に記載の情報処理装置の制御方法の各工程を実行させるためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、プログラム、及び記録媒体に関し、特に描画に用いるデータの展開領域への展開を効率化する技術に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークを利用する情報通信技術の発達に伴い、ネットワークを介した顧客へのサービス提供が様々な分野でなされている。こうしたサービスの１つに、所謂クラウド型ゲーミングのような、サーバにおいて描画された画面をネットワークを介してクライアント機器に提供するものがある。該サービスでは、サーバは例えばクライアント機器においてなされた操作の情報を取得し、操作に対応して変更された画面を描画してクライアント機器に提供することで、クライアント機器における画面表示を更新することができる。つまり、例えばクラウド型ゲーミングでは、ユーザは十分な描画性能を有するクライアント機器を所持していなくとも、十分な描画性能を有する機器と同等のゲームをプレイすることができる。
【０００３】
ところで、ゲームのように操作に応じてリアルタイムに内容が変化するようなコンテンツは、毎フレーム、その画面に係る描画処理を行う必要がある。描画処理は、例えばＧＰＵが、画面に含まれる描画オブジェクトのデータをキャッシュメモリに展開し、所定の演算において該データを使用しながら、演算結果に応じて最終出力である画面のピクセルを順次ＶＲＡＭ上に生成することにより行われる。通常、１つの画面の描画処理では、画面に対応する描画範囲に含まれる描画オブジェクトを順番に選択しながら、キャッシュメモリへの描画オブジェクトのデータの展開、演算、描画の処理が繰り返し行われていくことになる。
【０００４】
一方、例えば３Ｄシーン等が描画されるコンテンツでは、描画対象であるシーン内に同一あるいは一部のデータ（モデルデータ等）が共通する描画オブジェクトが複数配置される場合がある。このような場合、展開に係る処理リソースを低減するためにキャッシュメモリに展開されたデータを再利用することが好ましい。また１つのフレーム内に限らず、連続するフレームにおいても同様の描画オブジェクトを使用する機会はあるため、例えば家庭用ゲーム機やＰＣ等で実行されるゲームでは必要なデータの全てを予め全てキャッシュメモリに展開した上で、フレームの描画処理が実行されることもある。
【０００５】
これに対して、クラウド型ゲーミングのように１つのサーバが複数のクライアント機器に対して画面を描画して提供する場合、単純に考えて、１つのクライアント機器に対して割り当てることができるキャッシュメモリは制限される。従って、多数のクライアント機器が同時接続しうるクラウド型ゲーミングのようなサービスでは、家庭用ゲーム機のように必要なデータの全てを予めキャッシュメモリに展開することは現実的ではなく、データ展開の効率化が要求される。さらに、複数のクライアント機器に対して同一のコンテンツを提供する場合、各クライアント機器でその進行状況は異なるため、各機器について独立したプロセスが実行されることになる。しかし、同一のコンテンツである場合、例えばＧＵＩ等の２Ｄ表示や操作キャラクタ等の一部の描画オブジェクトは、進行状況に依らず描画されるため、図３に示されるように、サーバのキャッシュメモリ内には同一の描画オブジェクトのデータが複数展開される可能性があった。
【発明の概要】
【０００６】
本発明はこのような従来技術の課題に鑑みてなされたものである。本発明は、処理に用いるデータの展開領域への展開を効率化する情報処理装置、制御方法、プログラム、及び記録媒体を提供する。
【０００７】
本発明の第１の態様は、予め記憶されたデータの展開要求を含む命令を取得する取得手段と、命令についてハッシュ関数を適用して命令についてのハッシュ値を生成する生成手段と、命令に含まれる展開要求に従って、対応データを読み出して展開領域に展開する展開手段と、展開領域に展開された対応データと命令についてのハッシュ値とを関連付けて管理する管理手段と、を有する情報処理装置を提供する。
【０００８】
本発明の第２の態様は、予め記憶されたデータの展開要求を含む命令を取得する取得工程と、命令についてハッシュ関数を適用して命令についてのハッシュ値を生成する生成工程と、命令に含まれる展開要求に従って、対応データを読み出して展開領域に展開する展開工程と、展開領域に展開された対応データと命令についてのハッシュ値とを関連付けて管理する管理工程と、を有する情報処理装置の制御方法を提供する。
【０００９】
さらに、本発明の特徴は、（添付の図面を参照して）以下の例示的な実施形態の記載により明らかになるだろう。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る画面提供システムのシステム構成を示した図
【図２】本発明の実施形態に係るサーバ１００の機能構成を示したブロック図
【図３】従来の複数のプロセスによるキャッシュメモリへのデータ展開を説明するための図
【図４】本発明の実施形態に係るキャッシュメモリ１０５へのデータ展開動作を説明するための図
【図５】本発明の実施形態に係る管理部１０７により管理される情報の一般的なアーキテクチャを示した図
【図６】本発明の実施形態に係るＧＰＵ１０４で行われる展開処理を例示したフローチャート
【発明を実施するための形態】
【００１１】
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、情報処理装置の一例としての、複数のクライアント機器に提供する画面を並行して描画可能なサーバに、本発明を適用した例を説明する。しかし、本発明は、展開領域にデータを展開し、該展開したデータを用いた処理を繰り返し実行することが可能な任意の機器に適用可能である。即ち、本発明は、描画処理における展開領域へのデータ展開に限らず、任意の処理における展開領域へのデータ展開に適用することができる。
【００１２】
《画面提供システムの構成》
図１は、本発明の実施形態に係る画面提供システムのシステム構成を示した図である。本システムは、クラウド型ゲーミングを実現する。
【００１３】
サーバ１００は、クラウド型ゲーミングとしてサービス提供がなされるゲームに係る画面（ゲーム画面）を描画し、これを符号化動画データとしてストリーミング形式でクライアント機器２００に出力する。なお、本実施形態ではサーバ１００が描画機能を有するものとして説明するが、本発明の実施はこれに限られない。例えばサーバ１００から出力された命令に従って、描画処理に特化した外部の描画サーバが画面描画を行い、生成したゲーム画面を出力する態様であってもよい。また、本実施形態では簡単のため、サーバ１００に接続するクライアント機器２００は、共通して１つのゲームコンテンツを同時に利用することができるものとして説明するが、本発明の実施はこれに限られるものではない。
【００１４】
各クライアント機器２００は、サービス提供を受けるためにネットワーク３００を介してサーバ１００に接続する。クライアント機器２００は、ＰＣや据置型ゲーム機に限らず、携帯電話やスマートフォン、携帯型ゲーム機等の移動端末であってもよい。またネットワーク３００は、インターネット等の公用の通信網にかぎらず、ＬＡＮであってもよいし、サーバ１００とクライアント機器２００とを直接有線／無線で接続する通信態様であってもよい。クライアント機器２００は、操作入力インタフェースを備えており、ユーザによりなされた操作入力を示す情報をサーバ１００に送信する、あるいは操作入力を示す情報に所定の処理を適用した上でサーバ１００に送信する。
【００１５】
サーバ１００は、ネットワーク３００を介してクライアント機器２００から操作入力に係る情報を取得し、描画するフレームについての所定の演算及び描画処理を行ってゲーム画面を生成する。そしてサーバ１００は、例えば該画面を動画データに符号化し、対応するクライアント機器２００に送信する。クライアント機器２００は、該動画データを受信すると復号等の所定の処理を行い、クライアント機器２００が有する表示装置あるいはクライアント機器２００に接続された表示装置に映像信号を出力して表示させる。このようにすることで、クライアント機器２００のユーザに対して、画面提供システムにおけるゲーム画面の提供が実現される。
【００１６】
なお、本実施形態では複数のクライアント機器２００が並行してサーバ１００に接続し、各々ゲーム画面の提供を受けるものとして説明するが、本発明の実施はこれに限られるものではなく、サーバ１００はクライアント機器２００と１対１で接続するものであってもよい。
【００１７】
〈サーバ１００の機能構成〉
図２は、本発明の実施形態に係るサーバ１００の機能構成を示すブロック図である。
【００１８】
ＣＰＵ１０１は、サーバ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、記録媒体１０２に記録されているゲームプログラムを読み出し、ＲＡＭ１０３に展開して実行することにより各ブロックの動作を制御することができる。
【００１９】
記録媒体１０２は、ＨＤＤや書き換え可能なＲＯＭ等の不揮発性メモリであってよい。記録媒体１０２にはクライアント機器２００に提供するゲームコンテンツに係るゲームプログラムだけでなく、ゲームプログラムにおいて必要となる各種パラメータが記録される。また記録媒体１０２には、ゲーム画面の生成において必要となる描画オブジェクトのデータが記録される。描画オブジェクトのデータは、例えばモデルデータやテクスチャデータだけでなく、使用するシェーダ等の描画用プログラム、及び該描画用プログラムで用いられる演算用データ（光源強度等の定数や光源ベクトルや回転マトリクス等の変数など）が含まれていてよい。なお、描画オブジェクトのデータは、モデルデータ、テクスチャデータ、描画用プログラム、及び演算用データを全て有するものである必要はなく、これらのうち少なくともいずれかを有するものであってよい。
【００２０】
ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、ゲームプログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データ等を一時記憶する記憶領域としても用いられる。
【００２１】
ＧＰＵ１０４は、ＣＰＵ１０１からの指示を受けてゲーム画面の描画処理を行う。具体的にはＧＰＵ１０４は、例えばゲームプログラムの実行時において予め用意されたＡＰＩを利用する描画指示がなされた場合に、ドライバーを介してその指示に対応する描画命令を受ける。本実施形態ではＧＰＵ１０４は、描画に必要なデータを一時的に展開して保持する展開領域であるキャッシュメモリ１０５を有する。
【００２２】
キャッシュメモリ１０５への展開は、展開部１０６により実行される。ＣＰＵ１０１から管理部１０７を介して展開要求を受信すると、展開部１０６は展開要求に従って、記録媒体１０２から対応するデータを読み出し、キャッシュメモリ１０５に展開する。一方で、管理部１０７は、キャッシュメモリ１０５に展開されたデータを管理する。ＧＰＵ１０４は、描画命令に従い、キャッシュメモリ１０５に展開されているデータを使用してＰＵメモリ１０８にゲーム画面の描画を行う。
【００２３】
なお、本実施形態では簡単のため、複数のクライアント機器２００の各々について行われるゲームプログラムにおいて、１つのキャッシュメモリ１０５を共有するものとして説明するが、キャッシュメモリ１０５は複数の領域に分離して構成されていてもよい。この場合、例えば管理部１０７が全ての領域に展開されているデータを管理してもよい。
【００２４】
通信部１０９は、サーバ１００が有する通信インタフェースである。通信部１０９は、ネットワーク３００を介して各クライアント機器２００との間でデータの送受信を行うことができる。具体的には通信部１０９は、各クライアント機器２００においてなされた操作入力の情報の受信、あるいはＧＰＵメモリ１０８に描画されたゲーム画面（本実施形態ではゲーム画面は符号化された映像データである）の対応するクライアント機器２００への送信を行う。データの送受信は、所定の通信方式に係るデータ形式への変換や該形式からサーバ１００において処理可能な形式への変換等を含む。
【００２５】
《動作概要》
このような構成を有する本実施形態のサーバ１００について、複数のクライアント機器２００についてのゲームプログラムが並行して実行されている場合の、ＣＰＵ１０１が実行する各プログラムに対応するプロセス（クライアントプロセス４０１）においてなされる展開動作について、図４を用いて説明する。
【００２６】
各クライアントプロセス４０１が描画命令を発行する場合、該クライアントプロセス４０１は展開要求を管理部１０７に出力する。このとき、管理部１０７は、展開要求により展開する必要があるデータ（以下、対応データ）がキャッシュメモリ１０５に既に展開されているか否かを判断する。本実施形態では管理部１０７は、展開要求を示す情報に対し、予め定められたハッシュ関数を適用することで得られたハッシュ値が、既になされた展開要求についてのハッシュ値と同じであるか否かを判断することで、対応データが既にキャッシュメモリ１０５に展開されているか否かを判断する。管理部１０７において用いられるハッシュ関数は、同一の内容を有する複数の展開要求の各々に対して適用された場合には同一のハッシュ値を出力し、異なる内容を有する複数の展開要求の各々に対して適用された場合には各々異なるハッシュ値を出力するよう規定された関数である。ハッシュ関数は、例えばCRC32、SHA1、xxhash、Murmurhash3、CityHash等の従来の関数や、これらを改良した関数、あるいは独自の関数が適宜用いられてよい。また、本実施形態ではハッシュ関数は展開要求（即ち展開要求を規定する所定の構造体）に対して適用されるものとして説明するが、本発明の実施はこれに限られるものではない。ハッシュ関数は、展開要求を含む命令（例えば描画命令）全体や、展開に係る具体的な指示の種類を示す情報（例えば、テクスチャデータの変倍命令や抽出命令）と該指示に関するパラメータとの組合せ（構造体の一部の情報）等に対して適用されるものであってもよい。
【００２７】
管理部１０７は、対応データがキャッシュメモリ１０５に存在しない場合は展開要求を展開部１０６に伝送し、対応データを読み出し、キャッシュメモリ１０５に展開させる。このとき管理部１０７は、展開された対応データのキャッシュメモリ１０５上の位置を特定する特定情報を展開部１０６から受信する。そして管理部１０７は、図５のように受信した特定情報５０２に、対応データの展開要求について生成したハッシュ値をハッシュキー５０１として関連付け、管理する。また管理部１０７は対応データの特定情報をクライアントプロセス４０１に返却する。
【００２８】
図５は、管理部１０７により管理される情報（管理情報）の一般的なアーキテクチャを示している。管理部１０７は、該データの特定情報５０２を格納し、各識別子情報アイテムとそれぞれのキー５０１を関連付ける。キーは、単一のキーが特定情報５０２の単一のピースを示すように、固有のものである。
【００２９】
一方、管理部１０７は、対応データが既にキャッシュメモリ１０５に展開されている場合は、生成したハッシュ値と同一のハッシュ値に関連付けられた対応データの特定情報をクライアントプロセス４０１に返却する。なお、本実施形態では、画面描画が連続するフレームについて順次行われるため、キャッシュメモリ１０５は複数のフレームに渡って展開された対応データを保持し、また管理部１０７は複数のフレームに渡ってハッシュキー５０１及び特定情報５０２を保持する。故に、管理部１０７は、同一のフレームについて生成された命令、あるいは先行するフレームについて生成された命令に含まれる展開要求に従って展開された対応データの特定情報を返す。
【００３０】
このようにすることで、本実施形態のＧＰＵ１０４では、例えば異なるクライアントプロセス４０１、あるいは同一のクライアントプロセス４０１において共通のデータを展開する必要がある場合に、既にキャッシュメモリ１０５に該データが展開されているかを容易に判断することができる。
【００３１】
《展開処理》
次に、このような動作概要を実現するためにＧＰＵ１０４で行われる具体的な展開処理の詳細について、図６のフローチャートを用いて詳細を説明する。なお、本展開処理はＧＰＵ１０４において実行されるクライアントプロセス４０１のいずれかから管理部１０７が展開要求の情報を受信した際に開始されるものとして説明する。
【００３２】
ステップ６０１で、管理部１０７は、展開要求に基づいてハッシュキーを生成する。展開要求が描画命令に含まれる例では、展開要求はキーを生成するための適切なアルゴリズム（ハッシュ関数）により処理される。改良の特定のモードでは、１つのキーは複数の展開要求について生成される。選択的に、管理部１０７は、特定のタイプの最も共有可能たり得る展開要求を捕捉するために、展開要求フィルタを有するよう構成されてもよい。このことは、データ共有の原因となりそうもないキーの生成の回避における、効率的な見通しにおいて有用である。
【００３３】
図６に戻り、ステップ６０２でハッシュキーが生成されると、管理部１０７は展開要求に対応するデータ（対応データ）がキャッシュメモリ１０５に既に存在するか否かを判断する。具体的には管理部１０７は、キャッシュメモリ１０５に展開しているデータを管理する情報（管理データベース）の中に、同一のハッシュキーが関連付けられた特定情報が存在するか否かに応じて、該判断を行う。同一のキーの存在は、同一の対応データが同一のまたは異なるクライアントプロセスにより既に要求され、キャッシュメモリ１０５に既に存在していることを意味する。従って、該対応データは再利用可能であり、再度生成する必要がない。管理部１０７は、キャッシュメモリ１０５に対応データが既に存在すると判断した場合は処理をステップ６０３に移し、存在しないと判断した場合は処理をステップ６０４に移す。
【００３４】
ステップ６０３で、管理部１０７は対応データの特定情報をクライアントプロセスに提供する。そして管理部１０７は展開処理を完了する。これは、管理部１０７の論理出力を介した、該対応データにアクセス可能な位置のアドレスやポインタ（またはハンドラ）がクライアントプロセスに返却されることによりなされ得る。
【００３５】
キャッシュメモリ１０５に対応データが存在しないと判断した場合、管理部１０７はステップ６０４で、展開要求を展開部１０６に伝送し、対応データを記録媒体１０２から読み出し、キャッシュメモリ１０５に展開させる。展開部１０６は、対応データの展開が完了すると、該対応データの特定情報を管理部１０７に伝送する。
【００３６】
ステップ６０５で、管理部１０７は展開部１０６から受信した特定情報を、管理データベースに登録する。登録処理は、要求に関連して計算されたキーと、新たに生成された対応データとをリンクする管理データベースへの新たなエントリの生成を含む。
【００３７】
なお、ステップ６０４において展開部１０６が対応データを展開することにより、既にキャッシュメモリ１０５に展開されたデータと重複する領域を使用することがある。このような場合、該領域に展開されていたデータは、全体的にあるいは部分的に破棄されることになるため、管理部１０７は該データの管理を管理データベースから解除する必要がある。従って、本ステップにおいて管理部１０７は、展開部１０６から受信した特定情報を参照し、対象データが展開されたアドレス範囲と重複する特定情報を有するエントリを削除する処理も行う。
【００３８】
またステップ６０６で、管理部１０７は、受信した特定情報を展開要求の情報を送信したクライアントプロセスに提供し、展開処理を完了する。
【００３９】
このように本実施形態のサーバ１００では、展開要求に対してハッシュ関数を適用して得られたハッシュ値を用いることで、要求の同一性を容易に判断することができる。また展開要求に従って展開領域に展開したデータに対して、該展開要求に係るハッシュ値を関連付けて管理することで、同一のハッシュ値を示す展開要求があった場合に、展開対象のデータが展開領域内に存在するか否かを容易に判断することができる。
【００４０】
なお、本実施形態ではキャッシュメモリ１０５に展開されたデータは、展開アドレスが競合する、即ち上書きされない限り存在し続けるものとして説明したが、本発明の実施はこれに限られるものではない。
【００４１】
例えば、キャッシュメモリ１０５に展開されたとしてもデータを再び利用する機会がないのであれば、該データを管理する必要性は低い。また、再利用価値のないデータを管理することは、同一のデータの存在を判断する際の判断対象数の増加を生じうる。さらに展開されるデータ長が均一でないことから、再利用価値の低いがデータ長の長いデータによって、再利用価値の高いデータが破棄されてしまい、該データを再度展開する必要を生じうる。従って、再利用価値、即ち実際に再利用されるか否かを評価した上で、再利用価値のあるデータを優先的にキャッシュメモリ１０５に残すように制御し、再利用価値の低いデータは順次破棄するように制御してもよい。
【００４２】
該処理は、例えば管理部１０７が管理する管理データベースにおいて、各展開データについて使用頻度に相当するカウントをさらに管理するようにすることで実現可能である。具体的には管理部１０７は、例えば１フレームの描画において展開要求がなされたデータについては要求回数に応じたカウントを加算し、１フレーム中１度も要求がなされなかったデータについては該カウントを減算する。そして、管理部１０７は、カウントが閾値以下となったデータが存在する場合に該データの管理を外し、対応データの格納に使用されていた領域を新たに展開要求されたデータに対して積極的に割り当てるようにしてもよい。あるいは管理部１０７は、カウントの数値が上位所定数の順位とならないデータについては管理を外すように制御してもよい。またこのとき、管理部１０７は、破棄するデータあるいは管理から外したデータを格納していた領域の情報を展開部１０６に供給し、該領域に優先的に新たなデータの展開を行わせるようにしてもよい。あるいは、カウントが閾値以上のデータが存在する領域の情報を展開部１０６に供給し、該領域への新たなデータの展開がなされないようにしてもよい。
【００４３】
このようにすることで、再利用価値の高いデータについては優先的に残し、再利用価値の低いデータについては順次破棄することができる。なお、ここでは１フレーム中にカウントの増減算を行うものとして説明したが、これは一例を単に示すものであり、カウントは任意の期間の処理に基づいて増減算されてもよい。
【００４４】
以上説明したように、本実施形態の情報処理装置は、処理に用いるデータの展開領域への展開を効率化することができる。具体的には情報処理装置は、予め記憶されたデータの展開要求を含む命令を取得し、命令についてハッシュ関数を適用して命令についてのハッシュ値を生成する。また情報処理装置は命令に含まれる展開要求に従って展開領域に展開した対応データと、該命令についてのハッシュ値とを関連付けて管理する。
【００４５】
［その他の実施形態］
例示的な実施形態を参照して本発明を説明してきたが、記載した例示的な実施形態に発明が限られるものでないことは理解されよう。以下の特許請求の範囲は、このような変形、等価な構成及び機能の全てを包含するように、広範な解釈を許容されよう。また、本発明に係る情報処理装置及び制御方法は、コンピュータにおいて該手法が実行されるプログラムにより実現可能である。プログラムは、コンピュータ読み取り可能な記録媒体に格納されることで、または電気的な通信回線を介して、提供／配信可能である。
【００４６】
本出願は、その全体がここに参照により援用される、２０１３年２月６日に出願された米国仮出願第６１／７６１３１１号の利益を主張するものである。
【図１】
0005817052.tif 000002
【図２】
0005817052.tif 000003
【図３】
0005817052.tif 000004
【図４】
0005817052.tif 000005
【図５】
0005817052.tif 000006
【図６】
0005817052.tif 000007