説明

描画サーバ、センタサーバ、符号化装置、制御方法、符号化方法、及びプログラム

【課題】符号化処理を利用した効率的なメモリ検査を行う。
【解決手段】検査対象のメモリについてパリティ情報を付加したデータをメモリに書き込んだ後、該データをメモリから読み出してランレングス符号化処理を行って符号化データを生成する。符号化装置は、書き込まれたデータについてビット列を参照して符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、描画サーバ、センタサーバ、符号化装置、制御方法、符号化方法、及びプログラムに関し、特に動画符号化処理を利用したGPUメモリの検査方法に関する。
【背景技術】
【0002】
ネットワーク接続可能なパーソナルコンピュータ(PC)等のクライアント機器が普及している。このような機器の普及により、インターネットにおけるネットワーク人口は増加している。近年では、ネットワークユーザに対する、インターネットを利用した様々なサービスが展開されており、ゲーム等のエンターテインメントサービスも提供されている。
【0003】
ネットワークユーザに対するサービスの1つとして、MMORPG(Massively Multiplayer Online Role-Playing Game)等の多人数同時参加型のネットワークゲームがある。多人数同時参加型のネットワークゲームでは、ユーザは使用するクライアント機器を、ゲームを提供するサーバ機器に接続することで、該サーバ機器に接続されているクライアント機器を使用するユーザとの対戦プレイや協力プレイを行うことができる。
【0004】
一般的な多人数参加型のネットワークゲームでは、クライアント機器はサーバ機器との間でゲームの描画に必要なデータの送受信を行う。クライアント機器は、受信した描画に必要なデータを用いて描画処理を実行し、生成したゲーム画面をクライアント機器に接続された表示装置に提示することで、ユーザにゲーム画面を提供する。また、ユーザが入力インタフェースを操作することで入力された情報はサーバ機器に送信され、サーバ機器における演算処理に使用されたり、サーバ機器に接続された他のクライアント機器に伝送されたりする。
【0005】
しかしながら、このようなクライアント機器で描画処理を行うネットワークゲームの中には、十分な描画性能を有するPCや専用のゲーム機をユーザが使用する必要があるものがある。このため、ネットワークゲーム(1コンテンツ)のユーザ数は、コンテンツに要求される性能を満足する機器の所有ユーザの数に依存してしまう。即ち、例えば美麗なグラフィックを提供するゲーム等の高い描画性能が要求されるゲームでは、ユーザ数を増加させることが困難である。
【0006】
これに対し、近年ではクライアント機器の描画性能等の処理能力に依存せずに、ユーザがプレイ可能なゲームも提供されている。特許文献1のようなゲームでは、サーバ機器はクライアント機器においてなされた操作の情報を取得し、該情報を用いて描画処理を実行して得られたゲーム画面を、クライアント機器に対して提供している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】国際公開第2009/138878号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述のような描画処理を行う機器の描画性能は、該機器に設けられたGPUの処理能力に依存する。GPUの金銭的な導入コストは、該GPUの処理能力にもよるが、該GPUが有するGPUメモリの信頼性によっても異なる。即ち、特許文献1のように、クライアント機器に提供する画面の描画を描画サーバが行う場合、採用するGPUのメモリの信頼性が高いほど、描画サーバの導入コストが上昇することになる。これに対し、コスト低減を図るために信頼性の低いGPUメモリを有するGPUを使用することが考えられるが、この場合、GPUメモリのエラーチェックを行う処理の定期的な実行が必要となる。
【0009】
しかしながら、特許文献1のように提供する画面の描画処理等のメイン処理をマイフレーム行うGPUに対して、メモリのチェック処理を並行して行うことは演算量の増加につながり、提供するサービス品質が低減する可能性がある。
【0010】
本発明は、上述の問題点に鑑みてなされたものであり、符号化処理を利用した効率的なメモリ検査を行う描画サーバ、センタサーバ、符号化装置、制御方法、符号化方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
前述の目的を達成するために、本発明の描画サーバは、以下の構成を備える。
符号化した画像データを出力する描画サーバであって、GPUを使用して画像を描画する描画手段と、描画手段により描画された画像をGPUが有するGPUメモリに書き込む書き込み手段と、書き込み手段によりGPUメモリに書き込まれた画像を読み出してランレングス符号化処理を行なって符号化した画像データを生成する符号化手段と、を有し、書き込み手段は、画像をGPUメモリに書き込む際に、該画像にパリティ情報を付加して書き込み、符号化手段は、GPUメモリから読み出した画像について、ビット列を参照して符号化した画像データを生成する際に、該ビット列と書き込み手段により付加されたパリティ情報とを比較してビット反転エラーを検出することを特徴とする。
【0012】
前述の目的を達成するために、本発明の符号化装置は、以下の構成を備える。
パリティ情報を付加したデータをメモリに書き込む書き込み手段と、書き込み手段により書き込まれたデータをメモリから読み出してランレングス符号化処理を行って符号化データを生成する符号化手段と、を有し、符号化手段は、書き込まれたデータについてビット列を参照して符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出することを特徴とする。
【発明の効果】
【0013】
このような構成により本発明によれば、符号化処理を利用した効率的なメモリ検査を行うことが可能となる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態に係る描画システムのシステム構成を示した図
【図2】本発明の実施形態に係る描画サーバ100の機能構成を示したブロック図
【図3】本発明の実施形態に係るセンタサーバ200の機能構成を示したブロック図
【図4】本発明の実施形態に係る画面提供処理を例示したフローチャート
【図5】本発明の実施形態に係る画面生成処理を例示したフローチャート
【発明を実施するための形態】
【0015】
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、描画システムの一例としての、1以上のクライアント機器の接続を受け付け可能なセンタサーバと、1以上のクライアント機器の各々に提供する画面を同時に生成可能な描画サーバとに、本発明を適用した例を説明する。しかし、本発明は、1以上のクライアント機器に提供する画面(画像データ)を同時に作成することが可能な任意の機器及びシステムに適用可能である。
【0016】
なお、本明細書においてセンタサーバがクライアント機器に対して提供する画面は、ゲーム処理の実行により生成されるゲーム画面であり、描画サーバにおいて毎フレームの画面が描画されたのち符号化されて提供されるものとする。しかしながら本発明の実施はゲーム画面の生成に限られるものではなく、クライアントに対して符号化した画像データを提供するものであればよい。
【0017】
<描画システムの構成>
図1は、本発明の実施形態に係る描画システムのシステム構成を示す図である。
【0018】
図示されるように、サービス提供を受けるクライアント機器300a乃至eと、サービス提供を行うセンタサーバ200とは、インターネット等のネットワーク400を介して接続されている。また同様にクライアント機器300に対して提供する画面を描画する描画サーバ100は、ネットワーク400を介してセンタサーバ200に接続されている。なお、以下の説明では特に指定のない限り「クライアント機器300」と称した場合は、クライアント機器300a乃至eの全てを指すものとする。
【0019】
クライアント機器300は、例えばPC、家庭用ゲーム機、携帯ゲーム機に限らず、携帯電話、PDF、タブレット等の機器であってよい。本実施形態の描画システムは、クライアント機器においてなされた操作入力に応じたゲーム画面を描画サーバ100が生成し、センタサーバ200がクライアント機器300に配信する。このため、クライアント機器300はゲーム画面の生成を行う描画機能を有するものでなくてよい。即ち、クライアント機器300は、操作入力を行うユーザインタフェース及び画面の表示を行う表示装置を有する機器、あるいは該ユーザインタフェース及び表示装置が接続可能な機器であって、受信したゲーム画面を復号し、表示装置を用いて表示可能な機器であればよい。
【0020】
センタサーバ200は、ゲーム処理プログラムの実行及び管理、描画サーバ100への描画処理命令、クライアント機器300とのデータ送受信を行う。具体的にはセンタサーバ200では、クライアント機器300に対して提供するゲームに係るゲーム処理が実行される。
【0021】
センタサーバ200は、例えば各クライアント機器のユーザが操作するキャラクタのマップ上の位置や方向、各キャラクタに対して提供するイベント等の情報を管理する。そしてセンタサーバ200は、管理しているキャラクタの状態に応じたゲーム画面の生成を描画サーバ100に実行させる。例えばセンタサーバ200に対して、接続されている各クライアント機器においてなされたユーザの操作入力の情報がネットワーク400を介して入力されると、センタサーバ200では該情報を管理しているキャラクタの情報に反映させる処理が実行される。そしてセンタサーバ200は、操作入力の情報が反映されたキャラクタの情報に基づいてゲーム画面に係る描画パラメータを決定し、描画サーバ100が有するGPUのいずれかに対して描画命令を行う。なお、描画パラメータにはカメラ(視点)の位置及び方向や描画範囲に含まれる描画オブジェクトの情報等が含まれる。
【0022】
描画サーバ100は、描画処理の実行を担うサーバであり、本実施形態では後述するように4つのGPUを有する。描画サーバ100は、センタサーバ200より受けた描画命令に応じてゲーム画面の描画を行い、生成したゲーム画面をセンタサーバ200に出力する。なお、描画サーバ100は、複数のゲーム画面を同時に作成可能であるものとする。描画サーバ100は、各ゲーム画面についてセンタサーバ200から受信した、ゲーム画面に係る描画パラメータに基づいて、指定されたGPUでゲーム画面の描画処理を実行する。
【0023】
センタサーバ200は、送信した描画オブジェクトの識別情報及び詳細情報を含む描画命令に応じて描画サーバ100から受信したゲーム画面を、符号化した動画データの1フレームの画像データとして対応するクライアント機器に対して配信する。このようにすることで、本実施形態の描画システムはクライアント機器においてなされた操作入力に応じたゲーム画面を生成し、クライアント機器の表示装置を介してユーザにゲーム画面を提供することができる。
【0024】
なお、本実施形態では描画システムは、1つの描画サーバ100と1つのセンタサーバ200とで構成されるものとして説明するが、本発明の実施はこれに限られない。例えば、複数のセンタサーバ200に対して1つの描画サーバ100が割り当てられている構成であってもよいし、複数のセンタサーバ200に対して複数の描画サーバ100が割り当てられている構成であってもよい。
【0025】
<描画サーバ100の構成>
図2は、本発明の実施形態に係る描画サーバ100の機能構成を示すブロック図である。
【0026】
CPU101は、描画サーバ100が有する各ブロックの動作を制御する。具体的にはCPU101は、例えばROM102や記録媒体104に記憶されている描画処理の動作プログラムを読み出し、RAM103に展開して実行することにより、各ブロックの動作を制御する。
【0027】
ROM102は、例えば書き換え可能な不揮発性メモリである。ROM102は、描画処理の動作プログラムに加え、他の動作プログラムや描画サーバ100が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【0028】
RAM103は、揮発性メモリである。RAM103は、動作プログラムの展開領域としてだけでなく、描画サーバ100が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0029】
記録媒体104は、例えばHDD等の、描画サーバ100に着脱可能に接続される記録装置である。本実施形態では記録媒体104には、描画処理において画面の生成に用いる、以下のデータが記憶されているものとする。
・モデルデータ
・テクスチャデータ
・描画用プログラム
・描画用プログラムで用いられる演算用データ
【0030】
通信部113は、描画サーバ100が備える通信インタフェースである。通信部113は、ネットワーク400を介して接続したセンタサーバ200等の、他の機器間でのデータ送受信を行う。データ送信時には通信部113は、ネットワーク400あるいは送信先の機器との間で定められたデータ伝送形式にデータを変換し、送信先の機器へのデータ送信を行う。またデータ受信時には通信部113は、ネットワーク400を介して受信したデータを、描画サーバ100において読み取り可能な任意のデータ形式に変換し、例えばRAM103に記憶させる。
【0031】
第1GPU105、第2GPU106、第3GPU107、及び第4GPU108は、描画処理においてクライアント機器300に対して提供するゲーム画面の生成を行う。GPUの各々は、ゲーム画面の描画領域としてビデオメモリ(第1VRAM109、第2VRAM110、第3VRAM111、及び第4VRAM112)が接続されている。また各GPUは作業用領域としてのGPUメモリを有している。各GPUは、接続されたVRAMに対して描画を行う場合、描画オブジェクトのGPUメモリへの展開を行なった後、該展開後の描画オブジェクトを対応するVRAMに描画する。なお、本実施形態では1つのGPUに対して1つのビデオメモリが接続されるものとして説明するが、本発明の実施はこれに限られない。即ち、GPUに対して接続されるビデオメモリの数は、任意の数であってよい。
【0032】
<センタサーバ200の構成>
また、本実施形態のセンタサーバ200の機能構成について説明する。図3は、本発明の実施形態に係るセンタサーバ200の機能構成を示すブロック図である。
【0033】
センタCPU201は、センタサーバ200が有する各ブロックの動作を制御する。具体的にはセンタCPU201は、例えばセンタROM202やセンタ記録媒体204からゲーム処理のプログラムを読み出し、センタRAM203に展開して実行することにより各ブロックの動作を制御する。
【0034】
センタROM202は、例えば書き換え可能な不揮発性メモリである。センタROM202は、ゲーム処理のプログラムに限らず他のプログラムが記憶されていてもよい。またセンタROM202は、センタサーバ200が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【0035】
センタRAM203は、揮発性メモリである。センタRAM203は、ゲーム処理のプログラムの展開領域としてだけでなく、センタサーバ200が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0036】
センタ記録媒体204は、例えばHDD等の、センタサーバ200に着脱可能に接続される記録装置である。本実施形態ではセンタ記録媒体204は、ゲームを利用するユーザやクライアント機器を管理するデータベース、接続された各クライアント機器に提供するゲーム画面の生成に必要となるゲーム上の各種情報を管理するデータベース等として用いられる。
【0037】
センタ通信部205は、センタサーバ200が備える通信インタフェースである。センタ通信部205は、ネットワーク400を介して接続した描画サーバ100やクライアント機器300との間で、データ送受信を行う。なお、センタ通信部205は通信部113と同様に、通信仕様に従ったデータ形式の変換を行う。
【0038】
<画面提供処理>
このような構成をもつ本実施形態のセンタサーバ200の画面提供処理について、図4のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、センタCPU201が、例えばセンタROM202に記憶されている対応する処理プログラムを読み出し、センタRAM203に展開して実行することにより実現することができる。
【0039】
なお、本画面提供処理は、例えばクライアント機器との接続が完了し、該クライアント機器に対してゲームを提供する準備処理が完了した際に開始され、ゲームの毎フレームについて実行されるものとして説明する。また以下の説明では簡単のため、1つのクライアント機器300がセンタサーバ200に接続されている場合について説明するが、本発明の実施はこれに限られるものではない。上述したシステム構成のようにセンタサーバ200に複数のクライアント機器300が接続されている場合は、各クライアント機器300について本画面提供処理を実行すればよい。
【0040】
S401で、センタCPU201は、データ反映処理を実行し、接続されているクライアント機器300に提供するゲーム画面に係る描画パラメータを決定する。データ反映処理は、クライアント機器においてなされた入力(キャラクタの移動指示、カメラ移動指示、ウィンドウ表示指示等)や、ゲーム処理で状態を管理する描画オブジェクトの状態変更等を反映し、該クライアント機器に対して提供するゲーム画面の描画内容を特定する処理である。具体的にはセンタCPU201は、センタ通信部205を介してクライアント機器300においてなされた入力を受信し、前フレームのゲーム画面に用いた描画パラメータを更新する。またゲーム処理で状態を管理する描画オブジェクトは、例えばNPC(Non Player Character)と呼ばれるユーザの操作非対象のキャラクタ、地形等の背景オブジェクト等である。ゲームで状態を管理する描画オブジェクトは、時間経過やユーザの操作対象のキャラクタの動作によって変化する。センタCPU201は、ゲーム処理を実行することにより、時間経過やクライアント機器においてなされた入力に応じて、ゲーム処理で状態を管理する描画オブジェクトについての前フレームの描画パラメータを更新する。
【0041】
S402で、センタCPU201は、ゲーム画面の描画を行わせるGPUを、描画サーバ100が有する描画可能なGPUのうちから決定する。本実施形態ではセンタサーバ200に接続されている描画サーバ100には、第1GPU105、第2GPU106、第3GPU107、及び第4GPU108の4つのGPUが設けられている。センタCPU201は、センタサーバ200に接続されているクライアント機器の各々に対して提供するゲーム画面の生成を、描画サーバ100の有する4つのGPUのいずれかに描画させることを決定する。描画を行わせるGPUの決定は、例えば同時に描画要求を行うゲーム画面についての描画オブジェクト数や必要処理コスト等を考慮して、選択対象のGPUの中から負荷分散するように決定すればよい。なお、本ステップで選択対象となるGPUは、後述する描画サーバ100におけるメモリ検査結果に応じて変化する。
【0042】
S403で、センタCPU201は、S402で決定した、ゲーム画面の描画を行わせるGPUに対しての描画命令を送信する。具体的にはセンタCPU201は、S401のゲーム処理で更新された現フレームのゲーム画面に係る描画パラメータに描画命令を関連付けてセンタ通信部205に伝送し、描画サーバ100に送信させる。なお、描画命令には、ゲーム画面の描画を行わせるGPUを示す情報及び提供するクライアント機器300の識別情報が含まれるものとする。
【0043】
S404で、センタCPU201は、接続されているクライアント機器300に提供するゲーム画面を、描画サーバ100から受信したか否かを判断する。具体的にはセンタCPU201は、ゲーム画面を提供するクライアント機器300の識別情報を有するゲーム画面のデータをセンタ通信部205が受信したか否かを判断する。なお、本実施形態ではクライアント機器300に提供するゲーム画面は、ゲームのフレームごとにクライアント機器300に送信するため、転送量削減を考慮して動画符号化データの1フレームに対応する、符号化された画像データであるものとする。センタCPU201は、センタ通信部205が描画サーバ100からデータを受信した場合、該情報のヘッダ情報を参照し、該データが接続されているクライアント機器300に提供するゲーム画面に対応した符号化された画像データであるか否か否かを判断する。センタCPU201は、接続されているクライアント機器300に提供するゲーム画面を受信したと判断した場合は処理をS405に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【0044】
S405で、センタCPU201は、受信したゲーム画面を接続されているクライアント機器300に送信する。具体的にはセンタCPU201は、受信したゲーム画面をセンタ通信部205に伝送し、接続されているクライアント機器300に対して送信させる。
【0045】
S406で、センタCPU201は、第1GPU105、第2GPU106、第3GPU107、及び第4GPU108のいずれかについて、GPUメモリのビット反転エラーが検出された回数が閾値を超えたか否かを判断する。本実施形態では、後述する画面生成処理で説明するように、描画サーバ100のCPU101は、各GPUのGPUメモリにおいてビット反転エラーが発生した場合に、ビット反転エラー数の情報を、発生したGPUを識別する情報を関連付けてセンタサーバ200に通知する。このためセンタCPU201は、本ステップにおいてまず描画サーバ100からビット反転エラー数の情報をセンタ通信部205が受信したか否かを判断する。またセンタCPU201は、ビット反転エラー数の情報を受信したと判断した場合、さらに該ビット反転エラー数が閾値を超えるか否かを判断する。なお、閾値は、GPUメモリの信頼性が低下したと判断する値として予め設定される値であり、例えばセンタROM202に記憶されているものとする。センタCPU201は、描画サーバ100が有するGPUのいずれかにおいて、GPUメモリのビット反転エラーが検出された回数が閾値を超えたと判断した場合は処理をS407に移し、超えていないと判断した場合は本画面提供処理を完了する。
【0046】
S407で、センタCPU201は、ビット反転エラー数が閾値を超えたGPUメモリを有するGPUを次フレームのゲーム画面の描画を割り当てる選択対象から外す。具体的にはセンタCPU201は、例えば該GPUの識別情報に対して描画を割り当てる選択対象から除外する旨を示す論理型の情報を関連付けてセンタROM202に記憶する。この情報は、S402においてゲーム画面の描画を割り当てるGPUを選択する際に参照される。
【0047】
なお、本実施形態ではセンタCPU201は、ビット反転エラー数が閾値を超えるか否かによってGPUメモリの信頼性を判断するものとして説明するが、本発明の実施はこれに限られなくてもよい。センタCPU201は、例えばビット反転エラーが発生したメモリアドレスの分布の情報を取得し、所定のアドレス範囲におけるビット反転エラー数に応じてGPUメモリの信頼性を評価する形態であってもよい。
【0048】
<画面生成処理>
次に、本実施形態に係る描画サーバ100における、クライアント機器に提供するゲーム画面(符号化された画像データ)を生成する画面生成処理について、図5のフローチャートを参照して詳細を説明する。該フローチャートに対応する処理は、CPU101が、例えばROM102に記憶されている対応する処理プログラムを読み出し、RAM103に展開して実行することにより実現することができる。なお、本画面提供処理は、例えばセンタサーバ200からゲーム画面の描画命令を通信部113が受信したとCPU101が判断した場合に開始されるものとして説明する。
【0049】
S501で、CPU101は、受信したゲーム画面に係る描画パラメータに基づいて、ゲーム画面の描画を行う。具体的にはCPU101は、まず通信部113において受信された描画命令、及び該描画命令に関連付けられている現フレームのゲーム画面に係る描画パラメータをRAM103に格納する。そしてCPU101は、描画命令に含まれる、ゲーム画面の描画を行わせるGPUを示す情報を参照し、該情報により特定されるGPU(対象GPU)に、描画パラメータに対応するゲーム画面を該対象GPUに接続されたVRAMに描画させる。
【0050】
S502で、CPU101は、S501でVRAMに描画されたゲーム画面について、対象GPUに離散コサイン変換(DCT)処理を実行させる。具体的には対象GPUは、ゲーム画面を所定の画素数のブロックに分解し、各ブロックについてDCT処理を実行し、周波数領域のデータに変換する。周波数領域に変換されたゲーム画面は、対象GPUにより量子化されて該対象GPUのGPUメモリに書き込まれる。このとき対象GPUは、量子化されたデータについて所定データ長のビット列ごとにパリティビット(パリティ情報)を付加してGPUメモリに書き込むものとする。なお、本実施形態ではゲーム画面について直接DCT処理を実行するものとして説明するが、上述したようにゲーム画面は動画符号化データの1フレームに対応するデータであるため、ゲーム画面から生成された画像データについてDCT処理を実行するものであってもよい。例えば、動画符号化形式がMPEG形式である場合、対象GPUは前フレームのゲーム画面から動き補償により生成された画像データと、現フレームで生成したゲーム画面との差分画像を生成し、該差分画像についてDCT処理を実行してもよい。
【0051】
S503で、CPU101は、周波数領域に変換されたゲーム画面(量子化ゲーム画面)に対してランレングス符号化処理を実行し、最終的にクライアント機器に提供するゲーム画面のデータを生成する。このとき、CPU101はランレングス符号化を実行するために、対象GPUのGPUメモリから量子化ゲーム画面を読み出してRAM103に格納する。GPUメモリにおいてビット反転エラーが発生した場合、RAM103に格納された量子化ゲーム画面ではパリティ情報との齟齬が発生していることになる。
【0052】
一方、ランレングス符号化処理は、連続するデータのビット列において、同一の値が連続する長さを調査してデータ圧縮を行う処理である。即ち、RAM103に格納された量子化ゲーム画面についてランレングス符号化処理を行う場合、CPU101は所定数のビット列内に含まれる全ての値を参照するため、パリティビット間のデータ列について例えば1が登場した数を把握することができる。つまり、本発明ではCPU101はランレングス符号化におけるビット列における並びの調査を利用し、パリティチェックを行うことができる。
【0053】
本ステップではCPU101は、上述のようにランレングス符号化処理を実行して最終的に提供するゲーム画面の符号化データを生成するとともに、パリティチェックを行い、対象GPUのGPUメモリについてビット反転エラーの発生を検出する。なお、CPU101は、対象GPUのGPUメモリについてビット反転エラーを検出した回数を計数するものとする。
【0054】
S504で、CPU101は、S503で生成した最終的に提供するゲーム画面の符号化データと、対象GPUのGPUメモリについてビット反転エラーを検出した回数を示す情報とを、通信部113に伝送してセンタサーバ200に送信させる。なお、このとき最終的に提供するゲーム画面の符号化データは、描画命令に含まれていたゲーム画面を提供するクライアント機器300の識別情報が関連付けられて送信されるものとする。またビット反転エラーを検出した回数を示す情報は、描画命令に含まれていたゲーム画面を描画するGPUの識別情報が関連付けられて送信されるものとする。
【0055】
このようにすることで、GPUメモリについて専用のチェックプログラムを実行することなく、符号化処理を利用してビット反転エラーの発生を検出することができる。なお、本実施形態では、パリティ情報を付加した量子化ゲーム画面をGPUメモリに書き込むものとして説明したが、GPUメモリに書き込まれるデータはこれに限られるものではない。即ち、本発明におけるGPUメモリのエラーチェックは、ランレングス符号化を適用する直前のデータがパリティ情報を付加された状態でGPUメモリに書き込まれればよい。つまり本発明は、ランレングス符号化の前処理が適用されたデータが、パリティ情報を付加された状態でGPUメモリに書き込まれ、該データを読み出してランレングス符号化を行う形態であれば適用可能である。
【0056】
なお、本実施形態ではGPUメモリを例にとって説明したが、本発明はGPUメモリに限らず、一般的なメモリについても、そのエラーチェックを行う手法として適用可能である。
【0057】
また本実施形態では、描画サーバが複数のGPUを有している例について説明したが、本発明の実施はこの構成に限られない。例えばそれぞれ1つのGPUを有する描画サーバが複数センタサーバに接続される場合、センタサーバはビット反転エラー数が閾値を超えたGPUを有する描画サーバを、ゲーム画面の描画を行う描画サーバの対象から除外する構成であってもよい。また、センタサーバを設けず、クライアント機器300が直接描画サーバ100と接続する構成であってもよい。この場合、CPU101が、ビット反転エラー数が閾値を超えるか否かを判断し、閾値を超えたGPUを、ゲーム画面を描画するGPUの割り当て対象から除外してもよい。
【0058】
なお、上述した実施形態では、GPUメモリのビット反転エラー数が閾値を超えた場合、該GPUメモリを有するGPUに次のフレームのゲーム画面の描画は割り当てないものとして説明したが、GPUの除外方法はこれに限られない。例えば、ビット反転エラー数が閾値を超えた回数をさらに計数し、該閾値を超えた回数が所定回数以上で除外してもよいし、サーバメンテナンス時間に入った際に、ビット反転エラー数が閾値以上のGPUを除外してもよい。
【0059】
以上説明したように、本実施形態の符号化装置は、符号化処理を利用した効率的なメモリ検査を行うことができる。具体的には符号化装置は、検査対象のメモリについてパリティ情報を付加したデータをメモリに書き込んだ後、該データをメモリから読み出してランレングス符号化処理を行って符号化データを生成する。符号化装置は、書き込まれたデータについてビット列を参照して符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する。
【0060】
このようにすることで、ランレングス符号化処理を行う際に、同時にメモリの信頼性をチェックすることができるため、専用のチェックプログラムをスケジューリングする必要なく、信頼性の低いメモリを検出できる。また上述したような形態の描画システムにおいて、効率のよく自動化されたフォールトトレランスを実現することが可能である。

【特許請求の範囲】
【請求項1】
符号化した画像データを出力する描画サーバであって、
GPUを使用して画像を描画する描画手段と、
前記描画手段により描画された前記画像を前記GPUが有するGPUメモリに書き込む書き込み手段と、
前記書き込み手段により前記GPUメモリに書き込まれた前記画像を読み出してランレングス符号化処理を行なって前記符号化した画像データを生成する符号化手段と、を有し、
前記書き込み手段は、前記画像を前記GPUメモリに書き込む際に、該画像にパリティ情報を付加して書き込み、
前記符号化手段は、前記GPUメモリから読み出した前記画像について、ビット列を参照して前記符号化した画像データを生成する際に、該ビット列と前記書き込み手段により付加されたパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする描画サーバ。
【請求項2】
前記書き込み手段は、前記描画手段により描画された前記画像に対して、符号化前処理を適用して前記GPUメモリに書き込むことを特徴とする請求項1に記載の描画サーバ。
【請求項3】
前記符号化前処理は、離散コサイン変換処理を含むことを特徴とする請求項2に記載の描画サーバ。
【請求項4】
前記符号化した画像データは、動画符号化データの1フレームに対応するデータであることを特徴とする請求項1乃至3のいずれか1項に記載の描画サーバ。
【請求項5】
前記符号化手段によりビット反転エラーが検出された回数を計数する計数手段と、
前記計数手段により計数されたビット反転エラーが検出された回数を、該ビット反転エラーが検出されたGPUを示す情報を関連付けて外部装置に通知する通知手段と、
をさらに有することを特徴とする請求項1乃至4のいずれか1項に記載の描画サーバ。
【請求項6】
請求項5に記載の描画サーバが1以上接続されたセンタサーバであって、
クライアント機器が接続されたことを検出する検出手段と、
前記検出手段により検出されたクライアント機器に対して提供する符号化した画像データの生成を、前記1以上の描画サーバが有するGPUのうちのいずれかに割り当てる割り当て手段と、
前記割り当て手段により接続されているクライアント機器に対して割り当てられたGPUを有する描画サーバから、前記符号化した画像データを受信して該クライアント機器に送信する送信手段と、を有し、
前記割り当て手段は、前記符号化した画像データの生成を割り当てたGPUについてビット反転エラーが検出された回数を該GPUを有する描画サーバから受信し、該回数が閾値を超える場合は、該GPUを前記符号化した画像データの生成を割り当てるGPUから除外する
ことを特徴とするセンタサーバ。
【請求項7】
パリティ情報を付加したデータをメモリに書き込む書き込み手段と、
前記書き込み手段により書き込まれたデータを前記メモリから読み出してランレングス符号化処理を行って符号化データを生成する符号化手段と、を有し、
前記符号化手段は、前記書き込まれたデータについてビット列を参照して前記符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする符号化装置。
【請求項8】
符号化した画像データを出力する描画サーバの制御方法であって、
前記描画サーバの描画手段が、GPUを使用して画像を描画する描画工程と、
前記描画サーバの書き込み手段が、前記描画工程において描画された前記画像を前記GPUが有するGPUメモリに書き込む書き込み工程と、
前記描画サーバの符号化手段が、前記書き込み工程において前記GPUメモリに書き込まれた前記画像を読み出してランレングス符号化処理を行なって前記符号化した画像データを生成する符号化工程と、を有し、
前記書き込み手段は前記書き込み工程において、前記画像を前記GPUメモリに書き込む際に、該画像にパリティ情報を付加して書き込み、
前記符号化手段は前記符号化工程において、前記GPUメモリから読み出した前記画像について、ビット列を参照して前記符号化した画像データを生成する際に、該ビット列と前記書き込み工程において付加されたパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする描画サーバの制御方法。
【請求項9】
請求項5に記載の描画サーバが複数接続されたセンタサーバの制御方法であって、
前記センタサーバの検出手段が、クライアント機器が接続されたことを検出する検出工程と、
前記センタサーバの割り当て手段が、前記検出工程において検出されたクライアント機器に対して提供する符号化した画像データの生成を、前記複数の描画サーバが有するGPUのうちのいずれかに割り当てる割り当て工程と、
前記センタサーバの送信手段が、前記割り当て工程において接続されているクライアント機器に対して割り当てられたGPUを有する描画サーバから、前記符号化した画像データを受信して該クライアント機器に送信する送信工程と、を有し、
前記割り当て手段は前記割り当て工程において、前記符号化した画像データの生成を割り当てたGPUについてビット反転エラーが検出された回数を該GPUを有する描画サーバから受信し、該回数が閾値を超える場合は、該GPUを前記符号化した画像データの生成を割り当てるGPUから除外する
ことを特徴とするセンタサーバの制御方法。
【請求項10】
書き込み手段が、パリティ情報を付加したデータをメモリに書き込む書き込み工程と、
符号化手段が、前記書き込み工程において書き込まれたデータを前記メモリから読み出してランレングス符号化処理を行って符号化データを生成する符号化工程と、を有し、
前記符号化手段は前記符号化工程において、前記書き込まれたデータについてビット列を参照して前記符号化データを生成する際に、該ビット列と付加されているパリティ情報とを比較してビット反転エラーを検出する
ことを特徴とする符号化方法。
【請求項11】
コンピュータを、請求項1乃至5のいずれか1項に記載の描画サーバの各手段として機能させるためのプログラム。
【請求項12】
コンピュータを、請求項6に記載のセンタサーバの各手段として機能させるためのプログラム。
【請求項13】
コンピュータを、請求項7に記載の符号化装置の各手段として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2013−101580(P2013−101580A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2011−277628(P2011−277628)
【出願日】平成23年12月19日(2011.12.19)
【出願人】(592044813)株式会社スクウェア・エニックス・ホールディングス (115)
【Fターム(参考)】