(57)【特許請求の範囲】
【請求項１】
符号化した画像データを出力する描画サーバであって、
ＧＰＵを使用して画像を描画する描画手段と、
前記描画手段により描画された前記画像を前記ＧＰＵが有するＧＰＵメモリに書き込む書き込み手段と、
前記書き込み手段により前記ＧＰＵメモリに書き込まれた前記画像を読み出してランレングス符号化処理を行なって前記符号化した画像データを生成する符号化手段と、を有し、
前記書き込み手段は、前記画像を前記ＧＰＵメモリに書き込む際に、該画像にパリティ情報を付加して書き込み、
前記符号化手段は、前記ＧＰＵメモリから読み出した前記画像について、ビット列を参照して前記符号化した画像データを生成する際に、該ビット列と前記書き込み手段により付加されたパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする描画サーバ。
【請求項２】
前記書き込み手段は、前記描画手段により描画された前記画像に対して、符号化前処理を適用して前記ＧＰＵメモリに書き込むことを特徴とする請求項１に記載の描画サーバ。
【請求項３】
前記符号化前処理は、離散コサイン変換処理を含むことを特徴とする請求項２に記載の描画サーバ。
【請求項４】
前記符号化した画像データは、動画符号化データの１フレームに対応するデータであることを特徴とする請求項１乃至３のいずれか１項に記載の描画サーバ。
【請求項５】
前記符号化手段によりビット反転エラーが検出された回数を計数する計数手段と、
前記計数手段により計数されたビット反転エラーが検出された回数を、該ビット反転エラーが検出されたＧＰＵを示す情報を関連付けて外部装置に通知する通知手段と、
をさらに有することを特徴とする請求項１乃至４のいずれか１項に記載の描画サーバ。
【請求項６】
請求項５に記載の描画サーバが１以上接続されたセンタサーバであって、
クライアント機器が接続されたことを検出する検出手段と、
前記検出手段により検出されたクライアント機器に対して提供する符号化した画像データの生成を、前記１以上の描画サーバが有するＧＰＵのうちのいずれかに割り当てる割り当て手段と、
前記割り当て手段により接続されているクライアント機器に対して割り当てられたＧＰＵを有する描画サーバから、前記符号化した画像データを受信して該クライアント機器に送信する送信手段と、を有し、
前記割り当て手段は、前記符号化した画像データの生成を割り当てたＧＰＵについてビット反転エラーが検出された回数を該ＧＰＵを有する描画サーバから受信し、該回数が閾値を超える場合は、該ＧＰＵを前記符号化した画像データの生成を割り当てるＧＰＵから除外する
ことを特徴とするセンタサーバ。
【請求項７】
パリティ情報を付加したデータをメモリに書き込む書き込み手段と、
前記書き込み手段により書き込まれたデータを前記メモリから読み出してランレングス符号化処理を行って符号化データを生成する符号化手段と、を有し、
前記符号化手段は、前記書き込まれたデータについてビット列を参照して前記符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする符号化装置。
【請求項８】
符号化した画像データを出力する描画サーバの制御方法であって、
前記描画サーバの描画手段が、ＧＰＵを使用して画像を描画する描画工程と、
前記描画サーバの書き込み手段が、前記描画工程において描画された前記画像を前記ＧＰＵが有するＧＰＵメモリに書き込む書き込み工程と、
前記描画サーバの符号化手段が、前記書き込み工程において前記ＧＰＵメモリに書き込まれた前記画像を読み出してランレングス符号化処理を行なって前記符号化した画像データを生成する符号化工程と、を有し、
前記書き込み手段は前記書き込み工程において、前記画像を前記ＧＰＵメモリに書き込む際に、該画像にパリティ情報を付加して書き込み、
前記符号化手段は前記符号化工程において、前記ＧＰＵメモリから読み出した前記画像について、ビット列を参照して前記符号化した画像データを生成する際に、該ビット列と前記書き込み工程において付加されたパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする描画サーバの制御方法。
【請求項９】
請求項５に記載の描画サーバが複数接続されたセンタサーバの制御方法であって、
前記センタサーバの検出手段が、クライアント機器が接続されたことを検出する検出工程と、
前記センタサーバの割り当て手段が、前記検出工程において検出されたクライアント機器に対して提供する符号化した画像データの生成を、前記複数の描画サーバが有するＧＰＵのうちのいずれかに割り当てる割り当て工程と、
前記センタサーバの送信手段が、前記割り当て工程において接続されているクライアント機器に対して割り当てられたＧＰＵを有する描画サーバから、前記符号化した画像データを受信して該クライアント機器に送信する送信工程と、を有し、
前記割り当て手段は前記割り当て工程において、前記符号化した画像データの生成を割り当てたＧＰＵについてビット反転エラーが検出された回数を該ＧＰＵを有する描画サーバから受信し、該回数が閾値を超える場合は、該ＧＰＵを前記符号化した画像データの生成を割り当てるＧＰＵから除外する
ことを特徴とするセンタサーバの制御方法。
【請求項１０】
書き込み手段が、パリティ情報を付加したデータをメモリに書き込む書き込み工程と、
符号化手段が、前記書き込み工程において書き込まれたデータを前記メモリから読み出してランレングス符号化処理を行って符号化データを生成する符号化工程と、を有し、
前記符号化手段は前記符号化工程において、前記書き込まれたデータについてビット列を参照して前記符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする符号化方法。
【請求項１１】
コンピュータを、請求項１乃至５のいずれか１項に記載の描画サーバの各手段として機能させるためのプログラム。
【請求項１２】
コンピュータを、請求項１乃至５のいずれか１項に記載の描画サーバの各手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１３】
コンピュータを、請求項６に記載のセンタサーバの各手段として機能させるためのプログラム。
【請求項１４】
コンピュータを、請求項６に記載のセンタサーバの各手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１５】
コンピュータを、請求項７に記載の符号化装置の各手段として機能させるためのプログラム。
【請求項１６】
コンピュータを、請求項７に記載の符号化装置の各手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画サーバ、センタサーバ、符号化装置、制御方法、符号化方法、プログラム、及び記録媒体に関し、特に動画符号化処理を利用したＧＰＵメモリの検査方法に関する。
【背景技術】
【０００２】
ネットワーク接続可能なパーソナルコンピュータ（ＰＣ）等のクライアント機器が普及している。このような機器の普及により、インターネットにおけるネットワーク人口は増加している。近年では、ネットワークユーザに対する、インターネットを利用した様々なサービスが展開されており、ゲーム等のエンターテインメントサービスも提供されている。
【０００３】
ネットワークユーザに対するサービスの１つとして、ＭＭＯＲＰＧ（Massively Multiplayer Online Role-Playing Game）等の多人数同時参加型のネットワークゲームがある。多人数同時参加型のネットワークゲームでは、ユーザは使用するクライアント機器を、ゲームを提供するサーバ機器に接続することで、該サーバ機器に接続されているクライアント機器を使用するユーザとの対戦プレイや協力プレイを行うことができる。
【０００４】
一般的な多人数参加型のネットワークゲームでは、クライアント機器はサーバ機器との間でゲームの描画に必要なデータの送受信を行う。クライアント機器は、受信した描画に必要なデータを用いて描画処理を実行し、生成したゲーム画面をクライアント機器に接続された表示装置に提示することで、ユーザにゲーム画面を提供する。また、ユーザが入力インタフェースを操作することで入力された情報はサーバ機器に送信され、サーバ機器における演算処理に使用されたり、サーバ機器に接続された他のクライアント機器に伝送されたりする。
【０００５】
しかしながら、このようなクライアント機器で描画処理を行うネットワークゲームの中には、十分な描画性能を有するＰＣや専用のゲーム機をユーザが使用する必要があるものがある。このため、ネットワークゲーム（１コンテンツ）のユーザ数は、コンテンツに要求される性能を満足する機器の所有ユーザの数に依存してしまう。即ち、例えば美麗なグラフィックを提供するゲーム等の高い描画性能が要求されるゲームでは、ユーザ数を増加させることが困難である。
【０００６】
これに対し、近年ではクライアント機器の描画性能等の処理能力に依存せずに、ユーザがプレイ可能なゲームも提供されている。特許文献１のようなゲームでは、サーバ機器はクライアント機器においてなされた操作の情報を取得し、該情報を用いて描画処理を実行して得られたゲーム画面を、クライアント機器に対して提供している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００９／１３８８７８号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のような描画処理を行う機器の描画性能は、該機器に設けられたＧＰＵの処理能力に依存する。ＧＰＵの金銭的な導入コストは、該ＧＰＵの処理能力にもよるが、該ＧＰＵが有するＧＰＵメモリの信頼性によっても異なる。即ち、特許文献１のように、クライアント機器に提供する画面の描画を描画サーバが行う場合、採用するＧＰＵのメモリの信頼性が高いほど、描画サーバの導入コストが上昇することになる。これに対し、コスト低減を図るために信頼性の低いＧＰＵメモリを有するＧＰＵを使用することが考えられるが、この場合、ＧＰＵメモリのエラーチェックを行う処理の定期的な実行が必要となる。
【０００９】
しかしながら、特許文献１のように提供する画面の描画処理等のメイン処理をマイフレーム行うＧＰＵに対して、メモリのチェック処理を並行して行うことは演算量の増加につながり、提供するサービス品質が低減する可能性がある。
【００１０】
本発明は、上述の問題点に鑑みてなされたものであり、符号化処理を利用した効率的なメモリ検査を行う描画サーバ、センタサーバ、符号化装置、制御方法、符号化方法、プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前述の目的を達成するために、本発明の描画サーバは、以下の構成を備える。
符号化した画像データを出力する描画サーバであって、ＧＰＵを使用して画像を描画する描画手段と、描画手段により描画された画像をＧＰＵが有するＧＰＵメモリに書き込む書き込み手段と、書き込み手段によりＧＰＵメモリに書き込まれた画像を読み出してランレングス符号化処理を行なって符号化した画像データを生成する符号化手段と、を有し、書き込み手段は、画像をＧＰＵメモリに書き込む際に、該画像にパリティ情報を付加して書き込み、符号化手段は、ＧＰＵメモリから読み出した画像について、ビット列を参照して符号化した画像データを生成する際に、該ビット列と書き込み手段により付加されたパリティ情報とを比較してビット反転エラーを検出することを特徴とする。
【００１２】
前述の目的を達成するために、本発明の符号化装置は、以下の構成を備える。
パリティ情報を付加したデータをメモリに書き込む書き込み手段と、書き込み手段により書き込まれたデータをメモリから読み出してランレングス符号化処理を行って符号化データを生成する符号化手段と、を有し、符号化手段は、書き込まれたデータについてビット列を参照して符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出することを特徴とする。
【発明の効果】
【００１３】
このような構成により本発明によれば、符号化処理を利用した効率的なメモリ検査を行うことが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係る描画システムのシステム構成を示した図
【図２】本発明の実施形態に係る描画サーバ１００の機能構成を示したブロック図
【図３】本発明の実施形態に係るセンタサーバ２００の機能構成を示したブロック図
【図４】本発明の実施形態に係る画面提供処理を例示したフローチャート
【図５】本発明の実施形態に係る画面生成処理を例示したフローチャート
【発明を実施するための形態】
【００１５】
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、描画システムの一例としての、１以上のクライアント機器の接続を受け付け可能なセンタサーバと、１以上のクライアント機器の各々に提供する画面を同時に生成可能な描画サーバとに、本発明を適用した例を説明する。しかし、本発明は、１以上のクライアント機器に提供する画面（画像データ）を同時に作成することが可能な任意の機器及びシステムに適用可能である。
【００１６】
なお、本明細書においてセンタサーバがクライアント機器に対して提供する画面は、ゲーム処理の実行により生成されるゲーム画面であり、描画サーバにおいて毎フレームの画面が描画されたのち符号化されて提供されるものとする。しかしながら本発明の実施はゲーム画面の生成に限られるものではなく、クライアントに対して符号化した画像データを提供するものであればよい。
【００１７】
＜描画システムの構成＞
図１は、本発明の実施形態に係る描画システムのシステム構成を示す図である。
【００１８】
図示されるように、サービス提供を受けるクライアント機器３００ａ乃至ｅと、サービス提供を行うセンタサーバ２００とは、インターネット等のネットワーク４００を介して接続されている。また同様にクライアント機器３００に対して提供する画面を描画する描画サーバ１００は、ネットワーク４００を介してセンタサーバ２００に接続されている。なお、以下の説明では特に指定のない限り「クライアント機器３００」と称した場合は、クライアント機器３００ａ乃至ｅの全てを指すものとする。
【００１９】
クライアント機器３００は、例えばＰＣ、家庭用ゲーム機、携帯ゲーム機に限らず、携帯電話、ＰＤＦ、タブレット等の機器であってよい。本実施形態の描画システムは、クライアント機器においてなされた操作入力に応じたゲーム画面を描画サーバ１００が生成し、センタサーバ２００がクライアント機器３００に配信する。このため、クライアント機器３００はゲーム画面の生成を行う描画機能を有するものでなくてよい。即ち、クライアント機器３００は、操作入力を行うユーザインタフェース及び画面の表示を行う表示装置を有する機器、あるいは該ユーザインタフェース及び表示装置が接続可能な機器であって、受信したゲーム画面を復号し、表示装置を用いて表示可能な機器であればよい。
【００２０】
センタサーバ２００は、ゲーム処理プログラムの実行及び管理、描画サーバ１００への描画処理命令、クライアント機器３００とのデータ送受信を行う。具体的にはセンタサーバ２００では、クライアント機器３００に対して提供するゲームに係るゲーム処理が実行される。
【００２１】
センタサーバ２００は、例えば各クライアント機器のユーザが操作するキャラクタのマップ上の位置や方向、各キャラクタに対して提供するイベント等の情報を管理する。そしてセンタサーバ２００は、管理しているキャラクタの状態に応じたゲーム画面の生成を描画サーバ１００に実行させる。例えばセンタサーバ２００に対して、接続されている各クライアント機器においてなされたユーザの操作入力の情報がネットワーク４００を介して入力されると、センタサーバ２００では該情報を管理しているキャラクタの情報に反映させる処理が実行される。そしてセンタサーバ２００は、操作入力の情報が反映されたキャラクタの情報に基づいてゲーム画面に係る描画パラメータを決定し、描画サーバ１００が有するＧＰＵのいずれかに対して描画命令を行う。なお、描画パラメータにはカメラ（視点）の位置及び方向や描画範囲に含まれる描画オブジェクトの情報等が含まれる。
【００２２】
描画サーバ１００は、描画処理の実行を担うサーバであり、本実施形態では後述するように４つのＧＰＵを有する。描画サーバ１００は、センタサーバ２００より受けた描画命令に応じてゲーム画面の描画を行い、生成したゲーム画面をセンタサーバ２００に出力する。なお、描画サーバ１００は、複数のゲーム画面を同時に作成可能であるものとする。描画サーバ１００は、各ゲーム画面についてセンタサーバ２００から受信した、ゲーム画面に係る描画パラメータに基づいて、指定されたＧＰＵでゲーム画面の描画処理を実行する。
【００２３】
センタサーバ２００は、送信した描画オブジェクトの識別情報及び詳細情報を含む描画命令に応じて描画サーバ１００から受信したゲーム画面を、符号化した動画データの１フレームの画像データとして対応するクライアント機器に対して配信する。このようにすることで、本実施形態の描画システムはクライアント機器においてなされた操作入力に応じたゲーム画面を生成し、クライアント機器の表示装置を介してユーザにゲーム画面を提供することができる。
【００２４】
なお、本実施形態では描画システムは、１つの描画サーバ１００と１つのセンタサーバ２００とで構成されるものとして説明するが、本発明の実施はこれに限られない。例えば、複数のセンタサーバ２００に対して１つの描画サーバ１００が割り当てられている構成であってもよいし、複数のセンタサーバ２００に対して複数の描画サーバ１００が割り当てられている構成であってもよい。
【００２５】
＜描画サーバ１００の構成＞
図２は、本発明の実施形態に係る描画サーバ１００の機能構成を示すブロック図である。
【００２６】
ＣＰＵ１０１は、描画サーバ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、例えばＲＯＭ１０２や記録媒体１０４に記憶されている描画処理の動作プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより、各ブロックの動作を制御する。
【００２７】
ＲＯＭ１０２は、例えば書き換え可能な不揮発性メモリである。ＲＯＭ１０２は、描画処理の動作プログラムに加え、他の動作プログラムや描画サーバ１００が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【００２８】
ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、動作プログラムの展開領域としてだけでなく、描画サーバ１００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【００２９】
記録媒体１０４は、例えばＨＤＤ等の、描画サーバ１００に着脱可能に接続される記録装置である。本実施形態では記録媒体１０４には、描画処理において画面の生成に用いる、以下のデータが記憶されているものとする。
・モデルデータ
・テクスチャデータ
・描画用プログラム
・描画用プログラムで用いられる演算用データ
【００３０】
通信部１１３は、描画サーバ１００が備える通信インタフェースである。通信部１１３は、ネットワーク４００を介して接続したセンタサーバ２００等の、他の機器間でのデータ送受信を行う。データ送信時には通信部１１３は、ネットワーク４００あるいは送信先の機器との間で定められたデータ伝送形式にデータを変換し、送信先の機器へのデータ送信を行う。またデータ受信時には通信部１１３は、ネットワーク４００を介して受信したデータを、描画サーバ１００において読み取り可能な任意のデータ形式に変換し、例えばＲＡＭ１０３に記憶させる。
【００３１】
第１ＧＰＵ１０５、第２ＧＰＵ１０６、第３ＧＰＵ１０７、及び第４ＧＰＵ１０８は、描画処理においてクライアント機器３００に対して提供するゲーム画面の生成を行う。ＧＰＵの各々は、ゲーム画面の描画領域としてビデオメモリ（第１ＶＲＡＭ１０９、第２ＶＲＡＭ１１０、第３ＶＲＡＭ１１１、及び第４ＶＲＡＭ１１２）が接続されている。また各ＧＰＵは作業用領域としてのＧＰＵメモリを有している。各ＧＰＵは、接続されたＶＲＡＭに対して描画を行う場合、描画オブジェクトのＧＰＵメモリへの展開を行なった後、該展開後の描画オブジェクトを対応するＶＲＡＭに描画する。なお、本実施形態では１つのＧＰＵに対して１つのビデオメモリが接続されるものとして説明するが、本発明の実施はこれに限られない。即ち、ＧＰＵに対して接続されるビデオメモリの数は、任意の数であってよい。
【００３２】
＜センタサーバ２００の構成＞
また、本実施形態のセンタサーバ２００の機能構成について説明する。図３は、本発明の実施形態に係るセンタサーバ２００の機能構成を示すブロック図である。
【００３３】
センタＣＰＵ２０１は、センタサーバ２００が有する各ブロックの動作を制御する。具体的にはセンタＣＰＵ２０１は、例えばセンタＲＯＭ２０２やセンタ記録媒体２０４からゲーム処理のプログラムを読み出し、センタＲＡＭ２０３に展開して実行することにより各ブロックの動作を制御する。
【００３４】
センタＲＯＭ２０２は、例えば書き換え可能な不揮発性メモリである。センタＲＯＭ２０２は、ゲーム処理のプログラムに限らず他のプログラムが記憶されていてもよい。またセンタＲＯＭ２０２は、センタサーバ２００が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【００３５】
センタＲＡＭ２０３は、揮発性メモリである。センタＲＡＭ２０３は、ゲーム処理のプログラムの展開領域としてだけでなく、センタサーバ２００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【００３６】
センタ記録媒体２０４は、例えばＨＤＤ等の、センタサーバ２００に着脱可能に接続される記録装置である。本実施形態ではセンタ記録媒体２０４は、ゲームを利用するユーザやクライアント機器を管理するデータベース、接続された各クライアント機器に提供するゲーム画面の生成に必要となるゲーム上の各種情報を管理するデータベース等として用いられる。
【００３７】
センタ通信部２０５は、センタサーバ２００が備える通信インタフェースである。センタ通信部２０５は、ネットワーク４００を介して接続した描画サーバ１００やクライアント機器３００との間で、データ送受信を行う。なお、センタ通信部２０５は通信部１１３と同様に、通信仕様に従ったデータ形式の変換を行う。
【００３８】
＜画面提供処理＞
このような構成をもつ本実施形態のセンタサーバ２００の画面提供処理について、図４のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、センタＣＰＵ２０１が、例えばセンタＲＯＭ２０２に記憶されている対応する処理プログラムを読み出し、センタＲＡＭ２０３に展開して実行することにより実現することができる。
【００３９】
なお、本画面提供処理は、例えばクライアント機器との接続が完了し、該クライアント機器に対してゲームを提供する準備処理が完了した際に開始され、ゲームの毎フレームについて実行されるものとして説明する。また以下の説明では簡単のため、１つのクライアント機器３００がセンタサーバ２００に接続されている場合について説明するが、本発明の実施はこれに限られるものではない。上述したシステム構成のようにセンタサーバ２００に複数のクライアント機器３００が接続されている場合は、各クライアント機器３００について本画面提供処理を実行すればよい。
【００４０】
Ｓ４０１で、センタＣＰＵ２０１は、データ反映処理を実行し、接続されているクライアント機器３００に提供するゲーム画面に係る描画パラメータを決定する。データ反映処理は、クライアント機器においてなされた入力（キャラクタの移動指示、カメラ移動指示、ウィンドウ表示指示等）や、ゲーム処理で状態を管理する描画オブジェクトの状態変更等を反映し、該クライアント機器に対して提供するゲーム画面の描画内容を特定する処理である。具体的にはセンタＣＰＵ２０１は、センタ通信部２０５を介してクライアント機器３００においてなされた入力を受信し、前フレームのゲーム画面に用いた描画パラメータを更新する。またゲーム処理で状態を管理する描画オブジェクトは、例えばＮＰＣ（Non Player Character）と呼ばれるユーザの操作非対象のキャラクタ、地形等の背景オブジェクト等である。ゲームで状態を管理する描画オブジェクトは、時間経過やユーザの操作対象のキャラクタの動作によって変化する。センタＣＰＵ２０１は、ゲーム処理を実行することにより、時間経過やクライアント機器においてなされた入力に応じて、ゲーム処理で状態を管理する描画オブジェクトについての前フレームの描画パラメータを更新する。
【００４１】
Ｓ４０２で、センタＣＰＵ２０１は、ゲーム画面の描画を行わせるＧＰＵを、描画サーバ１００が有する描画可能なＧＰＵのうちから決定する。本実施形態ではセンタサーバ２００に接続されている描画サーバ１００には、第１ＧＰＵ１０５、第２ＧＰＵ１０６、第３ＧＰＵ１０７、及び第４ＧＰＵ１０８の４つのＧＰＵが設けられている。センタＣＰＵ２０１は、センタサーバ２００に接続されているクライアント機器の各々に対して提供するゲーム画面の生成を、描画サーバ１００の有する４つのＧＰＵのいずれかに描画させることを決定する。描画を行わせるＧＰＵの決定は、例えば同時に描画要求を行うゲーム画面についての描画オブジェクト数や必要処理コスト等を考慮して、選択対象のＧＰＵの中から負荷分散するように決定すればよい。なお、本ステップで選択対象となるＧＰＵは、後述する描画サーバ１００におけるメモリ検査結果に応じて変化する。
【００４２】
Ｓ４０３で、センタＣＰＵ２０１は、Ｓ４０２で決定した、ゲーム画面の描画を行わせるＧＰＵに対しての描画命令を送信する。具体的にはセンタＣＰＵ２０１は、Ｓ４０１のゲーム処理で更新された現フレームのゲーム画面に係る描画パラメータに描画命令を関連付けてセンタ通信部２０５に伝送し、描画サーバ１００に送信させる。なお、描画命令には、ゲーム画面の描画を行わせるＧＰＵを示す情報及び提供するクライアント機器３００の識別情報が含まれるものとする。
【００４３】
Ｓ４０４で、センタＣＰＵ２０１は、接続されているクライアント機器３００に提供するゲーム画面を、描画サーバ１００から受信したか否かを判断する。具体的にはセンタＣＰＵ２０１は、ゲーム画面を提供するクライアント機器３００の識別情報を有するゲーム画面のデータをセンタ通信部２０５が受信したか否かを判断する。なお、本実施形態ではクライアント機器３００に提供するゲーム画面は、ゲームのフレームごとにクライアント機器３００に送信するため、転送量削減を考慮して動画符号化データの１フレームに対応する、符号化された画像データであるものとする。センタＣＰＵ２０１は、センタ通信部２０５が描画サーバ１００からデータを受信した場合、該情報のヘッダ情報を参照し、該データが接続されているクライアント機器３００に提供するゲーム画面に対応した符号化された画像データであるか否か否かを判断する。センタＣＰＵ２０１は、接続されているクライアント機器３００に提供するゲーム画面を受信したと判断した場合は処理をＳ４０５に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【００４４】
Ｓ４０５で、センタＣＰＵ２０１は、受信したゲーム画面を接続されているクライアント機器３００に送信する。具体的にはセンタＣＰＵ２０１は、受信したゲーム画面をセンタ通信部２０５に伝送し、接続されているクライアント機器３００に対して送信させる。
【００４５】
Ｓ４０６で、センタＣＰＵ２０１は、第１ＧＰＵ１０５、第２ＧＰＵ１０６、第３ＧＰＵ１０７、及び第４ＧＰＵ１０８のいずれかについて、ＧＰＵメモリのビット反転エラーが検出された回数が閾値を超えたか否かを判断する。本実施形態では、後述する画面生成処理で説明するように、描画サーバ１００のＣＰＵ１０１は、各ＧＰＵのＧＰＵメモリにおいてビット反転エラーが発生した場合に、ビット反転エラー数の情報を、発生したＧＰＵを識別する情報を関連付けてセンタサーバ２００に通知する。このためセンタＣＰＵ２０１は、本ステップにおいてまず描画サーバ１００からビット反転エラー数の情報をセンタ通信部２０５が受信したか否かを判断する。またセンタＣＰＵ２０１は、ビット反転エラー数の情報を受信したと判断した場合、さらに該ビット反転エラー数が閾値を超えるか否かを判断する。なお、閾値は、ＧＰＵメモリの信頼性が低下したと判断する値として予め設定される値であり、例えばセンタＲＯＭ２０２に記憶されているものとする。センタＣＰＵ２０１は、描画サーバ１００が有するＧＰＵのいずれかにおいて、ＧＰＵメモリのビット反転エラーが検出された回数が閾値を超えたと判断した場合は処理をＳ４０７に移し、超えていないと判断した場合は本画面提供処理を完了する。
【００４６】
Ｓ４０７で、センタＣＰＵ２０１は、ビット反転エラー数が閾値を超えたＧＰＵメモリを有するＧＰＵを次フレームのゲーム画面の描画を割り当てる選択対象から外す。具体的にはセンタＣＰＵ２０１は、例えば該ＧＰＵの識別情報に対して描画を割り当てる選択対象から除外する旨を示す論理型の情報を関連付けてセンタＲＯＭ２０２に記憶する。この情報は、Ｓ４０２においてゲーム画面の描画を割り当てるＧＰＵを選択する際に参照される。
【００４７】
なお、本実施形態ではセンタＣＰＵ２０１は、ビット反転エラー数が閾値を超えるか否かによってＧＰＵメモリの信頼性を判断するものとして説明するが、本発明の実施はこれに限られなくてもよい。センタＣＰＵ２０１は、例えばビット反転エラーが発生したメモリアドレスの分布の情報を取得し、所定のアドレス範囲におけるビット反転エラー数に応じてＧＰＵメモリの信頼性を評価する形態であってもよい。
【００４８】
＜画面生成処理＞
次に、本実施形態に係る描画サーバ１００における、クライアント機器に提供するゲーム画面（符号化された画像データ）を生成する画面生成処理について、図５のフローチャートを参照して詳細を説明する。該フローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記憶されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本画面提供処理は、例えばセンタサーバ２００からゲーム画面の描画命令を通信部１１３が受信したとＣＰＵ１０１が判断した場合に開始されるものとして説明する。
【００４９】
Ｓ５０１で、ＣＰＵ１０１は、受信したゲーム画面に係る描画パラメータに基づいて、ゲーム画面の描画を行う。具体的にはＣＰＵ１０１は、まず通信部１１３において受信された描画命令、及び該描画命令に関連付けられている現フレームのゲーム画面に係る描画パラメータをＲＡＭ１０３に格納する。そしてＣＰＵ１０１は、描画命令に含まれる、ゲーム画面の描画を行わせるＧＰＵを示す情報を参照し、該情報により特定されるＧＰＵ（対象ＧＰＵ）に、描画パラメータに対応するゲーム画面を該対象ＧＰＵに接続されたＶＲＡＭに描画させる。
【００５０】
Ｓ５０２で、ＣＰＵ１０１は、Ｓ５０１でＶＲＡＭに描画されたゲーム画面について、対象ＧＰＵに離散コサイン変換（ＤＣＴ）処理を実行させる。具体的には対象ＧＰＵは、ゲーム画面を所定の画素数のブロックに分解し、各ブロックについてＤＣＴ処理を実行し、周波数領域のデータに変換する。周波数領域に変換されたゲーム画面は、対象ＧＰＵにより量子化されて該対象ＧＰＵのＧＰＵメモリに書き込まれる。このとき対象ＧＰＵは、量子化されたデータについて所定データ長のビット列ごとにパリティビット（パリティ情報）を付加してＧＰＵメモリに書き込むものとする。なお、本実施形態ではゲーム画面について直接ＤＣＴ処理を実行するものとして説明するが、上述したようにゲーム画面は動画符号化データの１フレームに対応するデータであるため、ゲーム画面から生成された画像データについてＤＣＴ処理を実行するものであってもよい。例えば、動画符号化形式がＭＰＥＧ形式である場合、対象ＧＰＵは前フレームのゲーム画面から動き補償により生成された画像データと、現フレームで生成したゲーム画面との差分画像を生成し、該差分画像についてＤＣＴ処理を実行してもよい。
【００５１】
Ｓ５０３で、ＣＰＵ１０１は、周波数領域に変換されたゲーム画面（量子化ゲーム画面）に対してランレングス符号化処理を実行し、最終的にクライアント機器に提供するゲーム画面のデータを生成する。このとき、ＣＰＵ１０１はランレングス符号化を実行するために、対象ＧＰＵのＧＰＵメモリから量子化ゲーム画面を読み出してＲＡＭ１０３に格納する。ＧＰＵメモリにおいてビット反転エラーが発生した場合、ＲＡＭ１０３に格納された量子化ゲーム画面ではパリティ情報との齟齬が発生していることになる。
【００５２】
一方、ランレングス符号化処理は、連続するデータのビット列において、同一の値が連続する長さを調査してデータ圧縮を行う処理である。即ち、ＲＡＭ１０３に格納された量子化ゲーム画面についてランレングス符号化処理を行う場合、ＣＰＵ１０１は所定数のビット列内に含まれる全ての値を参照するため、パリティビット間のデータ列について例えば１が登場した数を把握することができる。つまり、本発明ではＣＰＵ１０１はランレングス符号化におけるビット列における並びの調査を利用し、パリティチェックを行うことができる。
【００５３】
本ステップではＣＰＵ１０１は、上述のようにランレングス符号化処理を実行して最終的に提供するゲーム画面の符号化データを生成するとともに、パリティチェックを行い、対象ＧＰＵのＧＰＵメモリについてビット反転エラーの発生を検出する。なお、ＣＰＵ１０１は、対象ＧＰＵのＧＰＵメモリについてビット反転エラーを検出した回数を計数するものとする。
【００５４】
Ｓ５０４で、ＣＰＵ１０１は、Ｓ５０３で生成した最終的に提供するゲーム画面の符号化データと、対象ＧＰＵのＧＰＵメモリについてビット反転エラーを検出した回数を示す情報とを、通信部１１３に伝送してセンタサーバ２００に送信させる。なお、このとき最終的に提供するゲーム画面の符号化データは、描画命令に含まれていたゲーム画面を提供するクライアント機器３００の識別情報が関連付けられて送信されるものとする。またビット反転エラーを検出した回数を示す情報は、描画命令に含まれていたゲーム画面を描画するＧＰＵの識別情報が関連付けられて送信されるものとする。
【００５５】
このようにすることで、ＧＰＵメモリについて専用のチェックプログラムを実行することなく、符号化処理を利用してビット反転エラーの発生を検出することができる。なお、本実施形態では、パリティ情報を付加した量子化ゲーム画面をＧＰＵメモリに書き込むものとして説明したが、ＧＰＵメモリに書き込まれるデータはこれに限られるものではない。即ち、本発明におけるＧＰＵメモリのエラーチェックは、ランレングス符号化を適用する直前のデータがパリティ情報を付加された状態でＧＰＵメモリに書き込まれればよい。つまり本発明は、ランレングス符号化の前処理が適用されたデータが、パリティ情報を付加された状態でＧＰＵメモリに書き込まれ、該データを読み出してランレングス符号化を行う形態であれば適用可能である。
【００５６】
なお、本実施形態ではＧＰＵメモリを例にとって説明したが、本発明はＧＰＵメモリに限らず、一般的なメモリについても、そのエラーチェックを行う手法として適用可能である。
【００５７】
また本実施形態では、描画サーバが複数のＧＰＵを有している例について説明したが、本発明の実施はこの構成に限られない。例えばそれぞれ１つのＧＰＵを有する描画サーバが複数センタサーバに接続される場合、センタサーバはビット反転エラー数が閾値を超えたＧＰＵを有する描画サーバを、ゲーム画面の描画を行う描画サーバの対象から除外する構成であってもよい。また、センタサーバを設けず、クライアント機器３００が直接描画サーバ１００と接続する構成であってもよい。この場合、ＣＰＵ１０１が、ビット反転エラー数が閾値を超えるか否かを判断し、閾値を超えたＧＰＵを、ゲーム画面を描画するＧＰＵの割り当て対象から除外してもよい。
【００５８】
なお、上述した実施形態では、ＧＰＵメモリのビット反転エラー数が閾値を超えた場合、該ＧＰＵメモリを有するＧＰＵに次のフレームのゲーム画面の描画は割り当てないものとして説明したが、ＧＰＵの除外方法はこれに限られない。例えば、ビット反転エラー数が閾値を超えた回数をさらに計数し、該閾値を超えた回数が所定回数以上で除外してもよいし、サーバメンテナンス時間に入った際に、ビット反転エラー数が閾値以上のＧＰＵを除外してもよい。
【００５９】
以上説明したように、本実施形態の符号化装置は、符号化処理を利用した効率的なメモリ検査を行うことができる。具体的には符号化装置は、検査対象のメモリについてパリティ情報を付加したデータをメモリに書き込んだ後、該データをメモリから読み出してランレングス符号化処理を行って符号化データを生成する。符号化装置は、書き込まれたデータについてビット列を参照して符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する。
【００６０】
このようにすることで、ランレングス符号化処理を行う際に、同時にメモリの信頼性をチェックすることができるため、専用のチェックプログラムをスケジューリングする必要なく、信頼性の低いメモリを検出できる。また上述したような形態の描画システムにおいて、効率のよく自動化されたフォールトトレランスを実現することが可能である。
【図１】
0005331192.tif 000002
【図２】
0005331192.tif 000003
【図３】
0005331192.tif 000004
【図４】
0005331192.tif 000005
【図５】
0005331192.tif 000006