サーバ、サーバ制御方法、及びサーバ制御プログラム
【課題】画面転送システムにおいて、描画コマ数と応答性を両立する。
【解決手段】サーバは、第1データ及び第2データを記憶し、第1の指示に応じて第1データを出力し、第2の指示に応じて第2データを出力するバッファと、バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第Nの処理を行う第1処理部〜第N処理部と、第1の指示に応じてバッファが第1データを出力した後、第1の処理〜第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、第2のデータを、第1の処理〜第Nの処理各々を開始する第2-1時刻〜第2-N時刻を推定する推定部と、第1-1時刻と第2-1時刻との関係〜第1-N時刻と第2-N時刻との関係各々が所定の関係を満たす場合、第2の指示を行い、満たさない場合には第2の指示を行わないようにバッファを制御する制御部とを備える。
【解決手段】サーバは、第1データ及び第2データを記憶し、第1の指示に応じて第1データを出力し、第2の指示に応じて第2データを出力するバッファと、バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第Nの処理を行う第1処理部〜第N処理部と、第1の指示に応じてバッファが第1データを出力した後、第1の処理〜第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、第2のデータを、第1の処理〜第Nの処理各々を開始する第2-1時刻〜第2-N時刻を推定する推定部と、第1-1時刻と第2-1時刻との関係〜第1-N時刻と第2-N時刻との関係各々が所定の関係を満たす場合、第2の指示を行い、満たさない場合には第2の指示を行わないようにバッファを制御する制御部とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、サーバ、サーバ制御方法、及びサーバ制御プログラムに関する。
【背景技術】
【0002】
ネットワークを介して接続されたサーバ端末からクライアント端末に対してサーバ端末の画面の情報をパケット化してリアルタイムで配信する「画面転送システム」がある。クライアント端末は、サーバ端末が保持する画面領域の一部または全部の領域における画面情報を受け取り表示する。
【0003】
画面転送システムを構築する際には、サーバ端末が保持する画面領域全体の内容を一定時間おきにパケット化して各クライアント端末に向けて配信するという方法と、画面領域において描画状態に変化が生じるごとに、その差分となる情報のみを変化が生じた領域の情報とともに配信するという方法がある。差分を配信する後者の方法では、描画状態の変化に応じて必要な部分のみのデータ生成が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができる。
【0004】
画面領域において最新の描画状態を得るための上述の差分を画面更新と呼ぶ。直前の描画状態が記憶されたフレームバッファに対し画面更新を反映させることにより、最新の描画状態を得ることができる。
【0005】
ここで、画像転送システムにおいて、画面情報を転送する動作を簡単に説明する。サーバは、サーバのフレームバッファから画像更新を出力し、その画面更新を圧縮し、送信する。また、クライアントは、サーバが送信した画面更新を受け取ると、その画面更新を伸長して画面に表示する。
【0006】
画面転送システムでは、十分な描画コマ数と応答性を両立することが重要な課題である。
【0007】
描画コマ数(フレームレート)とは、クライアント端末にて単位時間あたりに描画される画面更新の回数である。描画コマ数が高いと画面表示が滑らかに表示される。
【0008】
応答性とは、クライアント端末でクリック等の操作がなされてから、その操作に対応するサーバ端末上の画面変化に対し圧縮・送信・伸張などの一連の処理が施され、最終的にクライアント端末に反映されるまでの時間(応答時間)に相当する。応答性が不十分であると、ユーザが、操作結果を確認するまでの待機時間が長くなり、作業効率が低下する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−246153号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
ここで、描画コマ数を向上させるためには、フレームバッファから画面更新を出力する頻度を上げることが必要である。しかしながら、フレームバッファから画面更新を出力する頻度を不用意に上げると、応答性が劣化する場合がある。例えば、フレームバッファから出力した画面更新について、圧縮処理に移ろうとしても、直近にフレームバッファから出力した画面更新について圧縮処理を実行中の場合、その圧縮処理が完了するまでの待ち時間が発生する。このように、処理と処理の間の待ち時間が発生すると、フレームバッファから更新画像を出力してから、画面に表示するまでの時間が長くなり、応答性が劣化することになる。したがって、描画コマ数と応答性とを両立するためには、フレームバッファから画面更新を出力するタイミングを適切に選択する必要がある。
【0011】
本発明の一実施形態では、描画コマ数と応答性とを両立するサーバを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の一観点にかかるサーバは、少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファと、前記バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理部〜第N処理部と、前記第1の指示に応じて前記バッファが前記第1データを出力した後、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定部と、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファを制御する制御部と、を備える。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施形態にかかる画面転送システムを示すブロック図。
【図2】描画命令の例を示す図。
【図3】領域情報を説明するための図。
【図4】画面更新の領域情報の一例を示す。
【図5】圧縮処理前後の記憶部106の記憶状態を示す表。
【図6】送信処理前後の記憶部106の記憶状態を示す表。
【図7】伸長処理前後の記憶部106の記憶状態を示す表。
【図8】判断部104の1度目の判断時点における記憶部106の記憶状態を示す表。
【図9】判断部104の1度目の判断時点におけるバッファ101が保持する画面更新を示す図。
【図10】判断部104の1度目の判断時点における推定される処理時間を示す図。
【図11】判断部104の2度目の判断時点における記憶部106の記憶状態を示す表。
【図12】判断部104の2度目の判断時点におけるバッファ101が保持する画面更新を示す図。
【図13】判断部104の2度目の判断時点における推定される処理時間を示す図。
【図14】判断部104の3度目の判断時点における記憶部106の記憶状態を示す表。
【図15】判断部104の3度目の判断時点におけるバッファ101が保持する画面更新を示す図。
【図16】判断部104の3度目の判断時点における推定される処理時間を示す図。
【図17】画面更新の出力を早すぎるタイミングで実行した場合の、応答性劣化を説明する図。
【図18】画面更新の出力を早すぎるタイミングで実行した場合の、描画コマ数劣化を説明する図。
【図19】画面更新を出力するか否かの判断の際に、閾値Thを用いた条件で判断することによる効果を説明する図。
【図20】第1の実施形態の変形例のサーバを示すブロック図。
【図21】第1の実施形態のサーバの構成を示すブロック図。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【0015】
本発明の実施形態にかかるサーバは、少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファと、前記バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理部〜第N処理部と、前記第1の指示に応じて前記バッファが前記第1データを出力した後、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定部と、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファを制御する制御部と、を備える。
【0016】
以下の第1の実施形態では、本発明の実施形態に係るサーバのより具体的構成を説明する。
【0017】
図1に示すように、本実施形態にかかるサーバの第1処理部〜第N処理部の具体例として、まず、処理部が2つの場合(つまり、N=2の場合)として、圧縮部102、送信部103を例に示して説明する。次に、処理部が3つの場合(つまり、N=3の場合)、変換部108、圧縮部102、送信部103を例に示して説明する。以下の例では、N=2と3を例に説明するが、Nは4以上の場合もありうる。
【0018】
また、上述した第1データ及び第2データの例として画面更新を例に説明する。
【0019】
また、上述した第1の指示及び第2の指示の例として、画面更新の出力指示を例に説明する。
【0020】
また、上述したサーバの制御部は、以下の実施形態のサーバ1の判断部103と対応する。
【0021】
<第1の実施形態>
図1は、第1の実施形態にかかる画面転送システムの構成を示すブロック図である。
【0022】
画面転送システムは、サーバ1と、クライアント2とが、ネットワーク3を介して接続されている。本実施形態では、ネットワーク3はIP(Internet Protocol)ネットワークであるとする。
【0023】
図1を用いて、サーバ1の構成を説明する。
【0024】
生成部100は、サーバ1におけるオペレーティングシステム又はアプリケーションの実行状態に応じて、描画命令の生成処理を行う。
【0025】
描画命令とは、クライアント端末2の画面の描画状態を変化させるための命令である。図2は、描画命令の例を示す図である。描画命令は、描画命令の種別を表す描画命令種別と、クライアント端末2の画面の画面領域のうち更新する領域の位置を表す領域情報と、領域情報の更新後の画像情報とを含む命令である。
【0026】
図2で示した描画命令は、ビットマップ描画命令(BITMAP)である。ビットマップ描画命令は、「領域情報で示される領域を画像情報によって上書き更新する」という命令である。
【0027】
領域情報は、画面領域における画像情報の表示位置を示す数値である。図3は、領域情報を説明するための図である。図3に示すように、クライアント端末の画面全体の画面領域の、左上角を(0,0)、右下角を(Width,Height)と表したとする。図3に示す矩形(斜線で示した領域)の領域情報は、表示位置の左上座標(Left,Top)と右下座標(Right,Bottom)とで表すこととなる。図3の例では、(Width,Height)=(640、480)である。また、領域情報は、左上座標(Left,Top)=(100,100)、右下座標(Right,Bottom)=(300,300)である。
【0028】
画像情報は、領域情報に対応する領域の更新後のビットマップデータ(矩形の各画素におけるRGB3色の値など)である。
【0029】
以上の説明では、描画命令として、ビットマップ描画命令を例にとって説明した。しかしながら、描画命令は、その他、「矩形領域間の画面情報のコピーを意味する」矩形コピー描画命令(COPYRECT)などが存在する。
【0030】
バッファ101は、クライアント端末の画面の画面領域の画面情報を保持するための記憶領域を有する。初期状態においては、記憶領域に情報は記憶していない。バッファ101は、生成部100から描画命令を受け取るごとに、記憶領域に描画命令を反映させ、画面情報を更新する。つまり、描画命令の領域情報に対応する記憶領域の内容を、描画命令の画像情報によって更新する。描画命令の領域情報に対応する記憶領域に、すでに画面情報が記憶されている場合は、重なる領域の古い画面情報が新しい画面情報によって上書きされる。これにより常に最新の画面情報が保持された状態が保たれる。
【0031】
また、バッファ101は、画面更新の出力指示を受け取ると、前回の画面更新の出力時と現時点との画面情報の差分(この差分を、画面更新と称する。)を出力する。バッファ101は、前回出力時から現時点までに行われた画面情報の更新が行われた領域の情報(画面更新の領域情報と称する。)を保持している。画面更新の領域情報は、描画命令を反映させるごとに更新される。この画面更新の領域情報は、バッファ101が画面更新を出力するごとに、クリアされる。
【0032】
圧縮部102は、画面更新の圧縮処理を行う。つまり、画面更新に含まれる画像情報に対し、ZLIBやJPEG等の圧縮処理を施す。
【0033】
送信部103は、画面更新の伝送処理を行う。入力された画面更新をネットワーク上において伝送可能な形式に変換して、クライアント端末2の受信部201との間で伝送処理を行う。ここで、送信部103が行う画面更新の伝送処理時間を定義しておく。本実施形態では、画面更新の伝送処理時間とは、送信部103が、画面更新の入力を受けてから、クライアント端末201の受信部201に画面更新が届くまでの時間であるとする。
【0034】
判断部104は、定期的なタイミングで、バッファ101に対し画面更新の出力指示を出すか否かを判断する。判断部104は、推定部105が推定する処理開始時刻や処理終了時刻に基づき、判断を行う。例えば、現時点で、バッファ101が保持する画面更新を出力した場合に、当該画面更新の圧縮処理が完了する時刻と、現時点で、送信部102が伝送処理中である画面更新の伝送処理が完了する時刻とに基づき、バッファ101が保持する画面更新を圧縮後、待ち時間なく伝送処理に移れると判断した場合、画面更新の出力指示を出すと判断する。尚、判断部104は、定期的なタイミングでなく、任意のタイミングで判断を実行して良い。判断部104の動作の詳細は後述する。
【0035】
推定部105は、圧縮部102、送信部103、伸張部202において行われる各処理部の処理開始時刻と処理終了時刻の推定を行う。推定に当たっては、記憶部107から得る各処理部の処理状態(詳細は後述する)と、バッファ101から得るその時々の画面更新の領域情報とを利用する。推定部105の動作の詳細は後述する。
【0036】
記憶部106は、圧縮部102、送信部103、伸張部202各々の処理状態を記憶する。各処理状態は、各処理部が処理実行中であるか否かを示すフラグと、各処理部が処理中のデータ(画面更新)のデータサイズと、当該処理の処理開始時刻とから構成される。処理状態の情報の詳細は後述する。
【0037】
受信部107は、クライアント端末2から伸張部202の処理状態に関する情報を受信する。
【0038】
次に、クライアント端末2の構成を説明する。
【0039】
受信部201は、ネットワーク3を介してサーバ1から画面更新を受信する。
【0040】
伸張部202は、画面更新に含まれる圧縮された画像情報に対して伸張処理を行う。
【0041】
表示部203は、ユーザに対して、画面情報を提示する。具体的には、表示部203は、画面領域全体の画面情報を格納するための記憶領域(フレームバッファ)を有し、そして、画面更新を受け取ると、画面更新の領域情報が示す記憶領域上の画面情報を画像情報で上書き更新する。
【0042】
送信部204は、伸張部202の処理状態を、ネットワーク3を介してサーバ1へ送信する。
【0043】
以上、図1を用いて、サーバ1とクライアント端末2の構成を説明した。
【0044】
次に、サーバ1とクライアント端末2から構成される画面転送システムにおける動作を説明する。
【0045】
画面転送システムにおける動作として、第1に、生成部100が、描画命令を生成してから、バッファ101の情報を更新するまでの動作を説明する。第2に、バッファ101が、画面更新の出力指示を受けた場合に、画面更新を出力し、クライアント端末2が当該画面更新を反映した画面を表示するまでの動作の流れを説明する。第3に、バッファ101が、画面更新を出力するか否かを判断する動作の詳細について、説明する。
【0046】
まず、第1に、生成部100が、生成部100が、描画命令を生成してから、バッファ101の画面情報を更新するまでの動作を説明する。
【0047】
画面転送の実行が開始されると、生成部100は、サーバ1のオペレーティングやアプリケーション(図示は省略。)の実行状態に応じて描画命令(描画命令の例は図2で示した。)を生成する。生成部100は、描画命令をバッファ101へ出力する。
【0048】
バッファ101は、画面転送の実行開始直後は、記憶領域に画面情報を有さない状態である。バッファ101は、描画命令を受け取ると、記憶領域のうち、描画命令の領域情報が示す位置の情報を、描画命令によって更新する。また、バッファ101は、画面情報の更新が、一度以上行われた領域の情報(画面更新の領域情報)を保持する。
【0049】
図4は、画面更新の領域情報の一例を示す。
【0050】
図4(a)は、画面転送の実行開始後、最初に、描画命令を受け取った後に、バッファ100が記憶する画面更新の領域情報と画面情報の例である。図4(a)の例では、描画命令の領域情報が、(Left,Top,Right,Bottom)=(100,100,400,300)である場合を示す。このように、初回の入力では、受け取った全ての情報が記憶される。
【0051】
図4(b)は、2回目の描画命令を受け取った後に、バッファ100が記憶する画面更新の領域情報と画面情報の例である。図4(b)の例では、2回目の描画命令の領域情報が(Left,Top,Right,Bottom)=(200,200,600,400)である場合を示している。
【0052】
2回目以降の入力では、既に記憶された情報の領域と新たに記憶する情報の領域とが重複する場合がある。図4(b)に示すように、重複する領域がある場合、重複する部分を新しい情報によって上書き更新する。図4(b)の例では、重複する領域は、(Left,Top,Right,Bottom)=(200,200,400,300)の領域である。その重複する領域が、2回目の描画命令の情報によって更新される。尚、既に記憶された情報の領域と重複しない領域についての情報についても、記憶される。図4(b)の例では、(Left,Top,Right,Bottom)=(100,100,400,200),(100,200,200,300),(200,200,600,400)の領域である。
【0053】
このように、生成部100で描画命令が生成されるごとに、バッファ101の内容は逐一更新される。バッファ101の内容の更新は、判断部104から、画面更新の出力指示を受け取るまで繰り返し実行される。
【0054】
次に、バッファ101が、画面更新の出力指示を受けてから、画面更新を出力し、クライアント端末2が当該画面更新を反映した画面を表示するまでの動作の流れを説明する。尚、バッファ101が、画面更新を出力するか否かの決定は、判断部104が行うが、その動作の詳細は後述する。
【0055】
バッファ101は、画面更新の出力指示を受け取ると、前回出力時から今までに記憶した最新の画面情報と、その領域の情報を圧縮部102に画面更新として出力する。画面更新の出力が完了すると、これまでに記憶した画面情報とその領域の情報をクリアする。バッファ101は、以降は、また1から、生成部100から受け取った描画命令を記憶していく。
【0056】
圧縮部102は画面更新を受け取ると、その画面更新に含まれる画像情報に圧縮処理を施す。また、圧縮部102は、圧縮処理を行う際に、圧縮処理を行う対象の画面更新のデータサイズを記憶部106に通知する。
【0057】
記憶部106は、圧縮部102から、画面更新のデータサイズを受け取ると、圧縮処理が実行中であることを示すフラグ(実行状態)をオン(処理中)にする。また、受け取ったデータサイズと、現在の時刻を処理開始時刻として記憶する。ここで、現在の時刻とは、例えばサーバ1が起動してから現在の経過秒数(単位:ミリ秒)などである。
【0058】
ここで、画面更新のデータサイズの算出方法の一例を説明する。
【0059】
バッファ101が出力した画面更新が、図4(b)の示すものであったとする。画面更新の総画素数は、この画面更新が占める領域の面積に等しい。図4(b)の例では、画面更新が占める面積(総画素数)は、(400−100)×(200−100)+(200−100)×(300−200)+(600−200)×(400−200)=30000+10000+80000=120000である。本実施形態では、1画素あたりのデータサイズを3バイトとする。両者の積により、画面更新のデータサイズは、360キロバイトと計算できる。(なお、簡便のため1キロバイト=1000バイトとしている。)
記憶部106が、圧縮部102から、画面更新のデータサイズを受け取った場合に、記憶した情報を図5(a)に示す。図5(a)では、圧縮処理が処理中であり、画面更新のデータサイズは360キロバイトであり、圧縮処理の処理開始時刻が100000 である例を示している。
【0060】
圧縮部102は、圧縮処理を完了すると、記憶部106に圧縮完了通知をする。記憶部106は、圧縮完了通知を受けとると、圧縮処理が実行中であることを示すフラグをオフにする。また、データサイズと処理開始時刻を削除する。図5(b)に、記憶部106が圧縮完了通知を受け取った後の記憶状態を示す。
【0061】
また、圧縮部102は、圧縮処理を完了すると、圧縮後の画面更新を送信部103に渡し、伝送処理を依頼する。
【0062】
送信部103は、圧縮後の画面更新を受け取ると伝送処理を施す。伝送処理を施す前に、送信部103は、圧縮後の画面更新のデータサイズを記憶部106に通知する。記憶部106は、圧縮後の画面更新のデータサイズを受け取ると、伝送処理が実行中であることを示すフラグ(実行状態)をオン(処理中)にする。また、データサイズと、現在の時刻を処理開始時刻として記憶する。記憶部106が記憶された情報の例を図6(a)に示す。図6(a)の例では、圧縮後の画面更新のデータサイズが、120キロバイトであり、処理開始時刻が100100である場合を示している。
【0063】
送信部103は、圧縮後の画面更新のデータサイズを記憶部106に通知後、圧縮後の画面更新にTCP/IPの各ヘッダを付与し、クライアント端末2に向けてネットワーク3へ送出する。
【0064】
送信部103は伝送処理を完了すると、記憶部106に伝送処理完了通知を行う。記憶部106は、伝送処理完了通知を受けると、伝送処理が実行中であることを示すフラグをオフにし、データサイズと処理開始時刻を削除する。伝送処理完了通知後の記憶部106の記憶状態を図6(b)に示す。
【0065】
クライアント端末2の受信部201は、伝送処理において画面更新を受け取ると、伸張部202に渡し、伸張を依頼する。
【0066】
伸張部202は、画面更新を受け取ると、その画面更新に含まれる画像情報に伸張処理を施す。
【0067】
伸張部202は、伸長処理を実行する前に、伸長処理を施す対象となる画面更新のデータサイズを送信部204に渡し、サーバ1への通知を依頼する。送信部204は、データサイズにTCP/IPの各ヘッダを付与し、データサイズをサーバ1へと送出する。
サーバ1の受信部107は、データサイズを受信すると、ヘッダを除去する。そして、記憶部106へデータサイズを通知する。記憶部106は、データサイズを受け取ると、伸張処理が実行中であることを示すフラグをオンにする。また、伸長処理を施す対象となる画面更新のデータサイズを記憶し、現在の時刻を処理開始時刻として記憶する。図7(a)は、伸長処理が実行中の際に、記憶部106に記憶された情報の例である。図7(a)では、伸張前の画面更新のデータサイズとして120キロバイト、処理開始時刻として100300が記憶されている。
【0068】
伸張部202は伸張処理を完了すると、伸長処理完了通知を、送信部204を介して、サーバ1の記憶部106に通知する。記憶部106は、伸長処理完了通知を受け取ると、伸張処理が実行中であることを示すフラグをオフにし、データサイズと処理開始時刻を削除する。伸長処理完了通知を受け取った後の記憶部106の状態を図7(b)に示す。
【0069】
伸張部202は、伸張が完了した画面更新を表示部203に渡し、表示を依頼する。
【0070】
表示部203は、画面領域全体の画面情報を保持する記憶領域を有しており、画面更新の領域情報が示す領域の情報を、伸張後の画像情報で上書き更新する。表示部203の状態はユーザに視覚的に提示される。
【0071】
以上、バッファ101が、画面更新の出力指示を受けてから、画面更新を出力し、クライアント端末2が当該画面更新を反映した画面を表示するまでの動作の流れを説明した。
【0072】
なお、圧縮部102、送信部103、伸張部202はいずれも並列的に動作が可能である。つまり、例えば圧縮部102が圧縮後の画面更新を送信部103に渡したすぐ後に、バッファ101から新たな画面更新が渡されれば、たとえ送信部103が先の画面更新の伝送処理中であったとしても、新たな画面更新の圧縮処理を実行することが可能である。
【0073】
次に、判断部104が、バッファ101に、画面更新を出力させるか否かを判断する動作の詳細について、説明する。
【0074】
判断部104は、任意のタイミングで、バッファ101に画面更新の出力指示を出すか否かの判断を行う。例えば一定時間間隔ごとに判断を開始してよい。
【0075】
以下では、3つの時刻で判断する例を説明する。第1の時刻は、100400であり、第2の時刻は、100500であり、第3の時刻は、100540であるとする。
【0076】
まず、第1の時刻である、100400の時点で、判断する例を説明する。
【0077】
まず、判断部104は、推定部105に対し、次の二種類の時刻を推定するよう要求する。一つ目は、現在処理の実行中である最新の画面更新に施される圧縮処理、伝送処理、伸張処理のそれぞれの処理終了時刻である。ここで、最新の画面更新とは、現時点から直近の時点で、バッファが出力した画面更新である。それぞれα1、α2、α3と示す。二つ目は、もし今、バッファ101から画面更新が出力されたと仮定したときに、当該の画面更新に施される圧縮処理、伝送処理、伸張処理のそれぞれの処理開始時刻である。それぞれβ1、β2、β3と示す。
【0078】
推定部105は、推定の要求を受け取ると、上述の二種類の時刻を次の手順により推定する。
【0079】
まず、一つ目の時刻(α1、α2、α3)について説明する。始めに、推定部105は、記憶部106に対し情報の読み出しを依頼する。図8に、記憶部106が記憶している情報の例を示す。
【0080】
図8は、圧縮部102が、画面更新1001を処理中で、伸張部202が画面更新1002を処理中である様子が示されている。
【0081】
推定部105は、図8の情報から、現在処理中の最新の画面更新の、圧縮処理、伝送処理、伸張処理のそれぞれの処理終了時刻を推定する。
【0082】
本実施形態では、推定部105は、以下の値を有しているものとする。
【0083】
・圧縮部102の平均処理所要時間:TC(ミリ秒/キロバイト)
・送信部103の平均処理所要時間:TT(ミリ秒/キロバイト)
・伸張部202の平均処理所要時間:TD(ミリ秒/キロバイト)
・圧縮部102の平均圧縮率:C(%)
また、本実施形態においては、TC=0.8ミリ秒/キロバイト、TT=3.2ミリ秒/キロバイト、TD=4.8ミリ秒/キロバイト、C=50%であるとする。
【0084】
推定部105は、推定部105が有する上述した値を用いて、最新の画面更新、すなわち画面更新1001に対する処理終了時刻を、以下の方法で推定する。
【0085】
推定部105は、圧縮処理終了時刻を、圧縮処理開始時刻+圧縮前データサイズ×TCと推定する。上記の例では、α1=100360+100×0.8=100440と推定する。推定部105は、伝送処理終了時刻を、伝送処理開始時刻+圧縮後データサイズ×TTと推定する。伝送処理開始時刻は圧縮処理終了時刻に等しく、また圧縮後データサイズは圧縮前データサイズ×Cとみなす。上記の例では、α2=100440+100×50÷100×3.2=100600と推定する。推定部105は、伸張処理開始時刻を、伸張処理開始時刻+圧縮後データサイズ×TDと推定する。伸張処理開始時刻は伝送処理終了時刻に等しいとみなす。上記の例では、α3=100600+100×50÷100×4.8=100840と推定する。
【0086】
次に、二つ目の時刻(β1、β2、β3)について説明する。
【0087】
始めに、推定部105はバッファ101に対し、現在記憶している画面更新の領域情報の読み出しを依頼する。例を図9に示す。図9の例では、バッファ101は現在記憶している画面更新の領域情報として、(Left,Top,Right,Bottom)=(100,100,350,200)を推定部105に返す。
【0088】
推定部105は、もし今、バッファ101から画面更新が出力されたと仮定したときに、この画面更新に施されるであろう圧縮処理、伝送処理、伸張処理のそれぞれの処理開始時刻を推定する。
【0089】
まず、この画面更新のデータサイズを算出する。画素数は(350−100)×(200−100)=250000である。この値に、1画素あたりのバイト数として3バイトを乗じ、データサイズを75キロバイトと算出する。さらに上述のTC、TT、Cを用いて各処理の開始時刻を推定する。圧縮処理開始時刻は現在の時刻を取得し、それをそのまま利用する。現在時刻は、100400であるとしたので、β1=100400とする。伝送処理開始時刻は圧縮処理終了時刻に等しいとみなし、β2=100400+75×0.8=100460と推定する。伸張処理開始時刻は伝送処理終了時刻に等しいとみなし、β3=100460+75×50÷100×3.2=100580と推定する。
【0090】
推定部105が、(α1、α2、α3)と(β1、β2、β3)を算出すると、判断部104は、これらを用いて、バッファ101に画面更新の出力指示を出すか否かを判断する。
【0091】
判断部105は、α1≦β1、α2≦β2、α3≦β3の三つの条件がすべて真となる場合に、出力指示を出すと判断し、それ以外の場合には、出力指示を出さないと判断する。
【0092】
以上の例では、α1=100440、β1=100400であるため、条件を満たしていない。したがって、判断部104はバッファ101に画面更新の出力指示を出さないと判断する。
【0093】
図10に、以上説明した例における、推定時刻である(α1、α2、α3)と(β1、β2、β3)との関係を示す。
【0094】
図10では、時間軸に沿った各処理の処理状態を示している。図中の四角は、各処理部が処理中である様子を意味する。四角内の数字は各処理の所要時間である。もし現在時刻100400(図中右側の矢印)において、バッファ101からの画面更新の出力指示を行ったと仮定すると、その時点で圧縮部102は前の画面更新を処理実行中であるため、新たな画面更新の圧縮処理に即座に取りかかることができない。その結果、応答性が低下する。つまり、α1≦β1の条件を満たしていないと、応答性が低下する。したがって、判断部104は、第1の時点(100400)では画面更新の出力指示を行うべきでないと判断する。
【0095】
判断部104の処理は以上で終了する。既に述べたように、判断部104の判断処理は、任意のタイミングで繰り返し行われる。
【0096】
以下では、上記の判断終了時から100ミリ秒が経過した第2の時刻(時刻100500)で、再び判断部104の判断処理が開始したときの処理の流れを述べる。
【0097】
先程と同様、判断部104は、二種類の時刻を推定するよう推定部105に要求する。
【0098】
推定部105が行う、一つ目の時刻(α1、α2、α3)の推定について説明する。
【0099】
始めに、推定部105は、記憶部106に対し情報の読み出しを依頼する。図11に、記憶部106が記憶している情報の例を示す。図11に示すように、前述した判断時点(時刻100400)では、圧縮処理中だった画面更新(画面更新1101)が、伝送処理に移っている。また、図11には、伸張部202は、画面更新1102を引き続き伸張処理を継続している様子が示されている。
【0100】
推定部105は、記憶部106の情報から、現在処理の実行中である最新の画面更新、すなわち画面更新1101についてα1、α2、α3を推定する。圧縮処理終了時刻については既に圧縮処理が終了しているため計算を行わない。伝送処理終了時刻は、伝送処理開始時刻+圧縮後データサイズ×TTで算出し、推定する。α2=100440+50×3.2=100600と推定できる。伸張処理終了時刻は、伸張処理開始時刻+圧縮後データサイズ×TDと推定する。ここで、伸張処理開始時刻は、伝送処理終了時刻と推定し、算出する。α3=100600+50×4.8=100840と推定できる。
【0101】
次に、推定部105が行う、二つ目の時刻(β1、β2、β3)の推定について説明する。
【0102】
始めに、推定部105はバッファ101に対し、現在記憶している画面更新の領域情報の読み出しを依頼する。例を図12に示す。図9と図12を比較するとわかるとおり、前述した判断時点(時刻100400)と比較して、現時点(時刻100500)では、描画命令が追加で発生しており、バッファ101のデータ量が増加している。
【0103】
図12に示すように、バッファ101は、現在記憶している画面更新の領域情報として、(Left,Top,Right,Bottom)=(100,100,350,200),(200,200,400,300)を推定部105に渡す。推定部105は、前述した算出方法と同様の方法で、β1、β2、β3を推定する。
【0104】
画素数は、画面行使の領域情報から、(350−100)×(200−100)+(400−200)×(300−200)=450000と算出できる。データサイズは、算出した画素数に、1画素あたりのバイト数として3バイトを乗じ、135キロバイトと算出できる。圧縮処理開始時刻は現在の時刻をそのまま利用し、β1=100500とする。伝送処理開始時刻は圧縮処理終了時刻に等しいとみなす。β2=100500+135×0.8=100608と推定できる。伸張処理開始時刻は伝送処理終了時刻に等しいとみなす。β3=100608+135×50÷100×3.2=100824と推定できる。
【0105】
判断部104は、以上の二種類の時刻の推定値(α1、α2、α3)と(β1、β2、β3)を用いて、バッファ101に画面更新の出力指示を出すか否かを判断する。今回はα1の計算を行わなかったが、α1はすでに経過している。したがって、α1≦β1は真とみなすことができる。また、α2=100600、β2=100608であるため、α2≦β2の条件は真である。しかし、α3=100840、β3=100824であるため、α3≦β3の条件は真でない。したがって、判断部104はバッファ101に画面更新の出力指示を出さないと判断する。
【0106】
図13に、以上説明した、(α1、α2、α3)と(β1、β2、β3)との間の関係を示す。もし、現在時刻100500において、バッファ101からの画面更新の出力指示を行ったと仮定する。この場合、現時点で、圧縮部102は処理実行中でないため、新たな画面更新の圧縮処理に即座に取りかかることができる。また、送信部103は、現時点では伝送処理中だが、圧縮処理の完了時点(β2)では、処理が完了(α2の時点で完了)していると推定できる。したがって、圧縮処理完了後、すぐに、新たな画面更新の送信処理に取りかかることができる。しかし、伸張部202は、新たな画像更新の伝送処理が完了すると推定される時刻(β3)において、処理実行中であると推定される(β3<α3)。したがって、新たな画像更新の伝送処理完了後、すぐに、新伸張処理に取りかかることができない。したがって、判断部104は、この時点では、バッファ101から画面更新の出力指示を行うべきでないと判断する。
【0107】
判断部104の処理は以上で終了する。
【0108】
以下では、上記の判断終了時からさらに40ミリ秒が経過した第3の時刻(時刻100540)で、再び判断部104の判断処理が開始したときの処理の流れを説明する。
【0109】
以前の判断と同様、判断部104は、二種類の時刻を推定するよう推定部105に要求する。
【0110】
まず、一つ目の時刻(α1、α2、α3)の推定について説明する。
【0111】
図14に、時刻100540における、記憶部106が保持する情報を示す。
【0112】
図14に示す通り、圧縮処理、伝送処理、伸長処理それぞれの処理状態は、前回の判断時点(時刻100500)から変化していないものとする。つまり、伝送処理、伸長処理が処理を継続して行っている。
【0113】
推定部105は、α1、α2、α3を推定する。推定部105は、今回のように、記憶部106の状態に変化がないことを検出した場合は、α1、α2、α3の推定を省略し、前回の推定結果をそのまま再利用することができる。その結果、α1は推定値なし、α2=100600、α3=100840との推定結果を得る。
【0114】
次に、二つ目の時刻(β1、β2、β3)の推定について説明する。
【0115】
図15に、時刻100540における、バッファ101の状態を示す。
【0116】
図12と図15を比較するとわかるとおり、現時点(100540)と、以前判断した時点(100500)との間に、描画命令の追加発生はなく、バッファ101の状態に変化がない。
【0117】
したがって、推定部105は、データ量として、前回算出した値と同様135キロバイトを得る。また、圧縮処理開始時刻は、現在の時刻をそのまま利用し、β1=100540とする。伝送処理開始時刻は圧縮処理終了時刻に等しいとみなし、β2=100540+135×0.8=100648と推定する。伸張処理開始時刻は伝送処理終了時刻に等しいとみなし、β3=100648+135×50÷100×3.2=100864と推定する。
【0118】
判断部104は、以上の二種類の時刻の推定値を用いて、バッファ101に画面更新の出力指示を出すか否かを判断する。前回の判断時と同様の理由で、α1≦β1は真と判断できる。α2=100600、β2=100648であるため、α2≦β2の条件は真である。α3=100840、β3=100864であるため、α3≦β3の条件は真である。全ての条件が真となったため、判断部104はバッファ101に画面更新の出力指示を出すと判断する。
【0119】
図16に、以上説明した、(α1、α2、α3)と(β1、β2、β3)との間の関係を示す。
【0120】
図16に示す通り、現在時刻100540において、バッファ101からの画面更新の出力指示を行ったと仮定すると、当該の画面更新に対する各処理が完了した時点で次の処理に即座に移れるようになっていることが分かる。
【0121】
判断部104は、バッファ101に対し、画面更新の出力指示を行う。以上で判断部104の処理は終了する。
【0122】
以上が、本実施形態の動作説明である。
【0123】
以上、本実施の形態によれば、判断部104は、繰り返し、判断を実行し、β1、β2、β3それぞれが、α1、α2、α3それぞれを初めて上回った時点で、バッファ101に対して、画面更新の出力指示を行っている。β1、β2、β3それぞれが、α1、α2、α3それぞれを上回った時点で、バッファ101に対する出力指示を行っているため、並列的に動作可能な、画面更新に施される一連の処理(圧縮→伝送→伸張)において、各処理を終えた画面更新が即座に次の処理へ移行することができる。また、「初めて」上回った時点で、出力指示を行うこととしているため、画面更新の出力頻度も高い状態を維持できる。また、ボトルネックの処理部(本実施形態では伸張部202)が処理を行っていない時間を最小限に抑えることができる。したがって、応答性と描画コマ数の両立を実現できる。
【0124】
より具体的に説明する。
【0125】
図17に示すように、もし本実施形態で決定した出力指示のタイミングよりも早いタイミングで出力指示を行った場合、処理後の画面更新が即座に次の処理に移行できず、余計な待ち時間が発生することになる(応答性が悪化する)。
【0126】
図18に示すように、本実施形態で決定した出力指示のタイミングよりも遅いタイミングで出力指示を行った場合、ボトルネックの処理部が処理を行っていない時間が生じることになる(描画コマ数が悪化することになる)。
【0127】
本実施形態によれば、一連の処理が全て完了するまでの所要時間を小さくしたいという要求と、単位時間あたりに行われる一連の処理の回数を大きくしたいという要求を、同時に満たすことが可能になる。つまり、描画コマ数と応答性を両立することが可能になる。
【0128】
また、本実施形態では、判断部104が判断処理を繰り返し実行するものとした。前述の通り、画面転送では画面変化が生じた場合にのみ送出すべきデータが発生するため、ある時点において、以降将来にどのような画面変化が生じるかは予測できない。判断処理を繰り返し行うという本実施形態の動作は、このような特殊なデータの発生パターンを有する画面転送において効果的にバッファ101からの出力タイミングを決定することができる。
【0129】
なお、本実施形態では、一つ目の時刻(α1、α2、α3)と二つ目の時刻(β1、β2、β3)を全て推定した後に判断処理を行っているが、必ずしも全てを推定してから判断を行わなくともよい。例えば、始めにα1とβ1のみの推定を行ってからα1≦β1の真偽を確かめ、真の場合にのみα2とβ2の推定を行い、さらにα2≦β2が真の場合にのみα3とβ3の推定を行いα3≦β3の真偽を確かめる、といった手順であってもよい。こうした手順を採用すれば、一度に全てを推定するよりも少ない計算量で同等の判断をすることができる。
【0130】
また、本実施形態では、推定部105が、各処理部の平均処理所要時間(TC、TT、TD)や圧縮率(C)を事前に有しているものとして説明したが、これに限られない。例えば、画面転送の開始時に試験的に圧縮処理や伝送処理、伸張処理を行い、その所要時間や圧縮率からTC、TT、TD、Cを決定してよい。また、画面転送の実施の任意のタイミングで、各処理部の処理の所要時間や圧縮率の実績を求め、TC、TT、TD、Cを適宜更新してもよい。また、TC、TT、TD、Cを決定する際に、サーバ1やクライアント端末2のCPU性能などの値を反映してもよい。また、TC、TT、TD、Cを決定する際に、ネットワーク3の通信帯域やRTT(Round Trip Time)を測定し決定に反映してよい。こうした手順を採用すれば、画面転送を実行する環境ごとに異なる端末性能やネットワーク性能に適応することができる。
【0131】
また、本実施形態では、判断処理を定期的に行うこととして説明したが、判断処理のタイミングは任意でよい。
【0132】
例えば、バッファ101おいて少なくとも一度以上更新が行われた領域が増えたことを検出したときに、判断部104に対し判断処理の開始を依頼してもよい。判断部104は、周期的なタイミングで判断処理を行うのに加えて、バッファ101から依頼があった際に追加的に判断処理を行う。バッファ101において少なくとも一度以上更新が行われた領域が拡大した場合、バッファ101が出力する画面更新のデータサイズが増加する。その結果、圧縮処理、伝送処理、伸張処理の処理時間は大きくなることが予期される。つまり、β1、β2、β3の値が増加する。したがって、α1≦β1、α2≦β2、α3≦β3の条件が成立する可能性が高くなる。したがって、このようなタイミングで判断処理を行うことで、バッファ101からの出力指示を、より適切なタイミングで行える。
【0133】
また、本実施形態では、α1≦β1、α2≦β2、α3≦β3の三つの条件が真の場合、つまり、バッファが記憶している画面更新の圧縮処理、伝送処理、伸長処理各々の処理の推定開始時刻であるβ1、β2、β3が、直近に出力した画面更新の圧縮処理、伝送処理、伸長処理各々の処理完了時刻であるα1、α2、α3と同一か、後になるように条件を設定した。しかしながら、必ずしも、各処理の推定開始時刻が、各処理の推定完了時刻と同一か、後になる必要はない。
【0134】
例えば適当な閾値Thを設けて、α1≦β1、α2≦β2、α3≦β3の三つの条件の代わりに、条件をα1≦β1+Th、α2≦β2+Th、α3≦β3+Thの三つの条件としてもよい。この条件では、各処理の推定開始時刻が、推定完了時刻以前となる場合がある。この場合、推定開始時刻から推定完了時刻まで、処理の待ち時間が、多少生じることにはなるが、待ち時間は、Th以内である。したがって、応答性と描画コマ数の両立を実現できる。尚、閾値Thの値は、圧縮処理、伝送処理、伸長処理それぞれの条件毎に異なる値としてもよい。
【0135】
こうしたやり方は、判断処理を周期Tで定期的に行う場合において、描画コマ数と応答性の両立をより向上できる。図19を用いて説明する。
【0136】
ある時刻tでの判断処理においてβ3がα3をわずかに上回らなかった場合、次の判断の時刻t´=t+Tでは、β3がα3を大きく上回ることとなる。条件を、α1≦β1+Th、α2≦β2+Th、α3≦β3+Thとしておけば、このようにβ3がα3をわずかに上回る場合であっても、画面更新の出力を実行すると判断できる。この場合、応答性はわずかに劣化するが、描画コマ数の劣化を防ぐことができ、応答性と描画コマ数の両立を実現できる。
【0137】
特に、Th=T/2と定めた場合は、応答性と描画コマ数の両立のために、より適切な判断ができる。つまり、この条件を定めた場合、バッファが記憶する画面更新の、ボトルネックとなる処理部の処理開始時刻と、直近にバッファが出力した画面更新のボトルネックとなる処理部の処理完了時刻とが最も近づくタイミングで、バッファの更新画像を出力することができるようになる。ここで、ボトルネックとなる処理部とは、α1≦β1+Th、α2≦β2+Th、α3≦β3+Thの条件を、最後の時刻に満たす処理部である。
【0138】
例えば、ボトルネックとなる処理部が、伸長部である場合を考える。この場合、α3≦β3+Thの条件を最後に満たす。時刻tでの判断処理で、α1≦β1+T/2、α2≦β2+T/2、α3≦β3+T/2すべてが成立した場合、その後どのような画面変化が生じようとも、時刻t´(t´=t+T)においては、|β3´−α3´|≧|β3−α3|が成立することとなる。(ここで、時刻t´での、α1、β1をそれぞれα1´とβ1´と表現した。この|β3´−α3´|≧|β3−α3|であることが、
時刻tで、バッファが記憶する画面更新の、ボトルネックとなる処理部の処理開始時刻と、直近にバッファが出力した画面更新のボトルネックとなる処理部の処理完了時刻とが最も近づくタイミングであることを示す。このような判断をできることで、応答性と描画コマ数の両立をより向上できる。
【0139】
なお、本実施形態では、圧縮→伝送→伸張という三ステップの処理が行われる構成としたが、必ずしもこれに限らなくともよい。2のステップの処理以下であっても、4ステップの処理以上であっても適用できる。
【0140】
例えば、新規の四ステップ目の処理部を追加してもよい。例を図20に示す。図では、サーバ1は変換部108をさらに有し、バッファ101から出力された画面更新に対し、色数の変換処理(例えば32ビット色から24ビット色への減色処理)を行う。この場合は、記憶部106は変換部108の実行状態やデータサイズ、処理開始時刻を記憶するための領域をさらに有し、変換部108は変換処理の開始時と終了時に記憶部106の状態を更新する。さらに推定部105は変換部108の変換処理の処理開始時刻と処理終了時刻の推定を併せておこなう。さらに判断部104は、現在処理の実行中である最新の画面更新に施される変換処理、圧縮処理、伝送処理、伸張処理のそれぞれの処理終了時刻をそれぞれα1、α2、α3、α4とし、また、バッファ101から画面更新が出力されたと仮定したときに当該の画面更新に施される変換処理、圧縮処理、伝送処理、伸張処理のそれぞれの処理開始時刻をそれぞれβ1、β2、β3、β4とした上で、各値の推定値に基づき、α1≦β1、α2≦β2、α3≦β3、α4≦β4の全ての条件が真となる場合にバッファ101へ出力指示を行うと判断する。このような構成であっても、描画コマ数と応答性との両立を実現できる。
【0141】
また、処理の数は、3ステップより少なくてもよい。この場合、いずれかの処理部の処理所要時間をゼロと近似し、その処理部に関する通知や推定、判断の手続きを省略してもよい。例えば伸張部202に関する手続きを省略した場合は、本発明の実施をサーバ1の内部に閉じた構成とすることが可能である。このときの構成を図21に示す。このように画面更新に対する一連の処理を行う処理部がサーバ1にのみ存在する場合は、クライアント端末2の状態を受信する受信107は不要である。この場合は、記憶部106は圧縮処理と送信処理のみの実行状態やデータサイズ、処理開始時刻を記憶する。判断部104は、現在処理の実行中である最新の画面更新に施される圧縮処理、送信処理のそれぞれの処理終了時刻をそれぞれα1、α2とし、また、バッファ101から画面更新が出力されたと仮定したときに当該の画面更新に施される圧縮処理、送信処理のそれぞれの処理開始時刻をβ1、β2とした上で、各値の推定値に基づき、α1≦β1、α2≦β2の両方の条件が真となる場合にバッファ101へ出力指示を行うと判断する。このような構成であっても、描画コマ数と応答性との両立を実現できる。
【0142】
また、本実施形態では、圧縮処理、伝送処理、伸張処理を例に説明したが、これらの処理に限らず、本実施形態は適用できる。また、本実施形態では、画面転送システムを例に説明したが、これに限られない。転送されるデータは、画面更新に限られない。適宜更新される更新データに対して、並列的に施される一連の処理を実行するシステムや装置に適用できる。
【0143】
サーバ1は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、生成部100、バッファ101、圧縮部102、送信部103、判断部104、推定部105、記憶部106、受信部107は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、サーバ1は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、記憶部106は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはCD−R、CD−RW、DVD−RAM、DVD−Rなどの記憶媒体などを適宜利用して実現することができる。
【0144】
以上説明した少なくとも1つの実施形態の効果は、描画コマ数と応答性を両立する画面転送システムを提供することができることである。
【0145】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0146】
1・・・サーバ、2・・・クライアント端末、3・・・ネットワーク、100・・・生成部、101・・・バッファ、102・・・圧縮部、103・・・送信部、104・・・判断部、105・・・推定部、106・・・記憶部、107・・・受信部、108・・・変換部、201・・・受信部、202・・・伸長部、203・・・表示部、204・・・送信部。
【技術分野】
【0001】
本発明の実施形態は、サーバ、サーバ制御方法、及びサーバ制御プログラムに関する。
【背景技術】
【0002】
ネットワークを介して接続されたサーバ端末からクライアント端末に対してサーバ端末の画面の情報をパケット化してリアルタイムで配信する「画面転送システム」がある。クライアント端末は、サーバ端末が保持する画面領域の一部または全部の領域における画面情報を受け取り表示する。
【0003】
画面転送システムを構築する際には、サーバ端末が保持する画面領域全体の内容を一定時間おきにパケット化して各クライアント端末に向けて配信するという方法と、画面領域において描画状態に変化が生じるごとに、その差分となる情報のみを変化が生じた領域の情報とともに配信するという方法がある。差分を配信する後者の方法では、描画状態の変化に応じて必要な部分のみのデータ生成が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができる。
【0004】
画面領域において最新の描画状態を得るための上述の差分を画面更新と呼ぶ。直前の描画状態が記憶されたフレームバッファに対し画面更新を反映させることにより、最新の描画状態を得ることができる。
【0005】
ここで、画像転送システムにおいて、画面情報を転送する動作を簡単に説明する。サーバは、サーバのフレームバッファから画像更新を出力し、その画面更新を圧縮し、送信する。また、クライアントは、サーバが送信した画面更新を受け取ると、その画面更新を伸長して画面に表示する。
【0006】
画面転送システムでは、十分な描画コマ数と応答性を両立することが重要な課題である。
【0007】
描画コマ数(フレームレート)とは、クライアント端末にて単位時間あたりに描画される画面更新の回数である。描画コマ数が高いと画面表示が滑らかに表示される。
【0008】
応答性とは、クライアント端末でクリック等の操作がなされてから、その操作に対応するサーバ端末上の画面変化に対し圧縮・送信・伸張などの一連の処理が施され、最終的にクライアント端末に反映されるまでの時間(応答時間)に相当する。応答性が不十分であると、ユーザが、操作結果を確認するまでの待機時間が長くなり、作業効率が低下する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−246153号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
ここで、描画コマ数を向上させるためには、フレームバッファから画面更新を出力する頻度を上げることが必要である。しかしながら、フレームバッファから画面更新を出力する頻度を不用意に上げると、応答性が劣化する場合がある。例えば、フレームバッファから出力した画面更新について、圧縮処理に移ろうとしても、直近にフレームバッファから出力した画面更新について圧縮処理を実行中の場合、その圧縮処理が完了するまでの待ち時間が発生する。このように、処理と処理の間の待ち時間が発生すると、フレームバッファから更新画像を出力してから、画面に表示するまでの時間が長くなり、応答性が劣化することになる。したがって、描画コマ数と応答性とを両立するためには、フレームバッファから画面更新を出力するタイミングを適切に選択する必要がある。
【0011】
本発明の一実施形態では、描画コマ数と応答性とを両立するサーバを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の一観点にかかるサーバは、少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファと、前記バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理部〜第N処理部と、前記第1の指示に応じて前記バッファが前記第1データを出力した後、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定部と、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファを制御する制御部と、を備える。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施形態にかかる画面転送システムを示すブロック図。
【図2】描画命令の例を示す図。
【図3】領域情報を説明するための図。
【図4】画面更新の領域情報の一例を示す。
【図5】圧縮処理前後の記憶部106の記憶状態を示す表。
【図6】送信処理前後の記憶部106の記憶状態を示す表。
【図7】伸長処理前後の記憶部106の記憶状態を示す表。
【図8】判断部104の1度目の判断時点における記憶部106の記憶状態を示す表。
【図9】判断部104の1度目の判断時点におけるバッファ101が保持する画面更新を示す図。
【図10】判断部104の1度目の判断時点における推定される処理時間を示す図。
【図11】判断部104の2度目の判断時点における記憶部106の記憶状態を示す表。
【図12】判断部104の2度目の判断時点におけるバッファ101が保持する画面更新を示す図。
【図13】判断部104の2度目の判断時点における推定される処理時間を示す図。
【図14】判断部104の3度目の判断時点における記憶部106の記憶状態を示す表。
【図15】判断部104の3度目の判断時点におけるバッファ101が保持する画面更新を示す図。
【図16】判断部104の3度目の判断時点における推定される処理時間を示す図。
【図17】画面更新の出力を早すぎるタイミングで実行した場合の、応答性劣化を説明する図。
【図18】画面更新の出力を早すぎるタイミングで実行した場合の、描画コマ数劣化を説明する図。
【図19】画面更新を出力するか否かの判断の際に、閾値Thを用いた条件で判断することによる効果を説明する図。
【図20】第1の実施形態の変形例のサーバを示すブロック図。
【図21】第1の実施形態のサーバの構成を示すブロック図。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【0015】
本発明の実施形態にかかるサーバは、少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファと、前記バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理部〜第N処理部と、前記第1の指示に応じて前記バッファが前記第1データを出力した後、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定部と、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファを制御する制御部と、を備える。
【0016】
以下の第1の実施形態では、本発明の実施形態に係るサーバのより具体的構成を説明する。
【0017】
図1に示すように、本実施形態にかかるサーバの第1処理部〜第N処理部の具体例として、まず、処理部が2つの場合(つまり、N=2の場合)として、圧縮部102、送信部103を例に示して説明する。次に、処理部が3つの場合(つまり、N=3の場合)、変換部108、圧縮部102、送信部103を例に示して説明する。以下の例では、N=2と3を例に説明するが、Nは4以上の場合もありうる。
【0018】
また、上述した第1データ及び第2データの例として画面更新を例に説明する。
【0019】
また、上述した第1の指示及び第2の指示の例として、画面更新の出力指示を例に説明する。
【0020】
また、上述したサーバの制御部は、以下の実施形態のサーバ1の判断部103と対応する。
【0021】
<第1の実施形態>
図1は、第1の実施形態にかかる画面転送システムの構成を示すブロック図である。
【0022】
画面転送システムは、サーバ1と、クライアント2とが、ネットワーク3を介して接続されている。本実施形態では、ネットワーク3はIP(Internet Protocol)ネットワークであるとする。
【0023】
図1を用いて、サーバ1の構成を説明する。
【0024】
生成部100は、サーバ1におけるオペレーティングシステム又はアプリケーションの実行状態に応じて、描画命令の生成処理を行う。
【0025】
描画命令とは、クライアント端末2の画面の描画状態を変化させるための命令である。図2は、描画命令の例を示す図である。描画命令は、描画命令の種別を表す描画命令種別と、クライアント端末2の画面の画面領域のうち更新する領域の位置を表す領域情報と、領域情報の更新後の画像情報とを含む命令である。
【0026】
図2で示した描画命令は、ビットマップ描画命令(BITMAP)である。ビットマップ描画命令は、「領域情報で示される領域を画像情報によって上書き更新する」という命令である。
【0027】
領域情報は、画面領域における画像情報の表示位置を示す数値である。図3は、領域情報を説明するための図である。図3に示すように、クライアント端末の画面全体の画面領域の、左上角を(0,0)、右下角を(Width,Height)と表したとする。図3に示す矩形(斜線で示した領域)の領域情報は、表示位置の左上座標(Left,Top)と右下座標(Right,Bottom)とで表すこととなる。図3の例では、(Width,Height)=(640、480)である。また、領域情報は、左上座標(Left,Top)=(100,100)、右下座標(Right,Bottom)=(300,300)である。
【0028】
画像情報は、領域情報に対応する領域の更新後のビットマップデータ(矩形の各画素におけるRGB3色の値など)である。
【0029】
以上の説明では、描画命令として、ビットマップ描画命令を例にとって説明した。しかしながら、描画命令は、その他、「矩形領域間の画面情報のコピーを意味する」矩形コピー描画命令(COPYRECT)などが存在する。
【0030】
バッファ101は、クライアント端末の画面の画面領域の画面情報を保持するための記憶領域を有する。初期状態においては、記憶領域に情報は記憶していない。バッファ101は、生成部100から描画命令を受け取るごとに、記憶領域に描画命令を反映させ、画面情報を更新する。つまり、描画命令の領域情報に対応する記憶領域の内容を、描画命令の画像情報によって更新する。描画命令の領域情報に対応する記憶領域に、すでに画面情報が記憶されている場合は、重なる領域の古い画面情報が新しい画面情報によって上書きされる。これにより常に最新の画面情報が保持された状態が保たれる。
【0031】
また、バッファ101は、画面更新の出力指示を受け取ると、前回の画面更新の出力時と現時点との画面情報の差分(この差分を、画面更新と称する。)を出力する。バッファ101は、前回出力時から現時点までに行われた画面情報の更新が行われた領域の情報(画面更新の領域情報と称する。)を保持している。画面更新の領域情報は、描画命令を反映させるごとに更新される。この画面更新の領域情報は、バッファ101が画面更新を出力するごとに、クリアされる。
【0032】
圧縮部102は、画面更新の圧縮処理を行う。つまり、画面更新に含まれる画像情報に対し、ZLIBやJPEG等の圧縮処理を施す。
【0033】
送信部103は、画面更新の伝送処理を行う。入力された画面更新をネットワーク上において伝送可能な形式に変換して、クライアント端末2の受信部201との間で伝送処理を行う。ここで、送信部103が行う画面更新の伝送処理時間を定義しておく。本実施形態では、画面更新の伝送処理時間とは、送信部103が、画面更新の入力を受けてから、クライアント端末201の受信部201に画面更新が届くまでの時間であるとする。
【0034】
判断部104は、定期的なタイミングで、バッファ101に対し画面更新の出力指示を出すか否かを判断する。判断部104は、推定部105が推定する処理開始時刻や処理終了時刻に基づき、判断を行う。例えば、現時点で、バッファ101が保持する画面更新を出力した場合に、当該画面更新の圧縮処理が完了する時刻と、現時点で、送信部102が伝送処理中である画面更新の伝送処理が完了する時刻とに基づき、バッファ101が保持する画面更新を圧縮後、待ち時間なく伝送処理に移れると判断した場合、画面更新の出力指示を出すと判断する。尚、判断部104は、定期的なタイミングでなく、任意のタイミングで判断を実行して良い。判断部104の動作の詳細は後述する。
【0035】
推定部105は、圧縮部102、送信部103、伸張部202において行われる各処理部の処理開始時刻と処理終了時刻の推定を行う。推定に当たっては、記憶部107から得る各処理部の処理状態(詳細は後述する)と、バッファ101から得るその時々の画面更新の領域情報とを利用する。推定部105の動作の詳細は後述する。
【0036】
記憶部106は、圧縮部102、送信部103、伸張部202各々の処理状態を記憶する。各処理状態は、各処理部が処理実行中であるか否かを示すフラグと、各処理部が処理中のデータ(画面更新)のデータサイズと、当該処理の処理開始時刻とから構成される。処理状態の情報の詳細は後述する。
【0037】
受信部107は、クライアント端末2から伸張部202の処理状態に関する情報を受信する。
【0038】
次に、クライアント端末2の構成を説明する。
【0039】
受信部201は、ネットワーク3を介してサーバ1から画面更新を受信する。
【0040】
伸張部202は、画面更新に含まれる圧縮された画像情報に対して伸張処理を行う。
【0041】
表示部203は、ユーザに対して、画面情報を提示する。具体的には、表示部203は、画面領域全体の画面情報を格納するための記憶領域(フレームバッファ)を有し、そして、画面更新を受け取ると、画面更新の領域情報が示す記憶領域上の画面情報を画像情報で上書き更新する。
【0042】
送信部204は、伸張部202の処理状態を、ネットワーク3を介してサーバ1へ送信する。
【0043】
以上、図1を用いて、サーバ1とクライアント端末2の構成を説明した。
【0044】
次に、サーバ1とクライアント端末2から構成される画面転送システムにおける動作を説明する。
【0045】
画面転送システムにおける動作として、第1に、生成部100が、描画命令を生成してから、バッファ101の情報を更新するまでの動作を説明する。第2に、バッファ101が、画面更新の出力指示を受けた場合に、画面更新を出力し、クライアント端末2が当該画面更新を反映した画面を表示するまでの動作の流れを説明する。第3に、バッファ101が、画面更新を出力するか否かを判断する動作の詳細について、説明する。
【0046】
まず、第1に、生成部100が、生成部100が、描画命令を生成してから、バッファ101の画面情報を更新するまでの動作を説明する。
【0047】
画面転送の実行が開始されると、生成部100は、サーバ1のオペレーティングやアプリケーション(図示は省略。)の実行状態に応じて描画命令(描画命令の例は図2で示した。)を生成する。生成部100は、描画命令をバッファ101へ出力する。
【0048】
バッファ101は、画面転送の実行開始直後は、記憶領域に画面情報を有さない状態である。バッファ101は、描画命令を受け取ると、記憶領域のうち、描画命令の領域情報が示す位置の情報を、描画命令によって更新する。また、バッファ101は、画面情報の更新が、一度以上行われた領域の情報(画面更新の領域情報)を保持する。
【0049】
図4は、画面更新の領域情報の一例を示す。
【0050】
図4(a)は、画面転送の実行開始後、最初に、描画命令を受け取った後に、バッファ100が記憶する画面更新の領域情報と画面情報の例である。図4(a)の例では、描画命令の領域情報が、(Left,Top,Right,Bottom)=(100,100,400,300)である場合を示す。このように、初回の入力では、受け取った全ての情報が記憶される。
【0051】
図4(b)は、2回目の描画命令を受け取った後に、バッファ100が記憶する画面更新の領域情報と画面情報の例である。図4(b)の例では、2回目の描画命令の領域情報が(Left,Top,Right,Bottom)=(200,200,600,400)である場合を示している。
【0052】
2回目以降の入力では、既に記憶された情報の領域と新たに記憶する情報の領域とが重複する場合がある。図4(b)に示すように、重複する領域がある場合、重複する部分を新しい情報によって上書き更新する。図4(b)の例では、重複する領域は、(Left,Top,Right,Bottom)=(200,200,400,300)の領域である。その重複する領域が、2回目の描画命令の情報によって更新される。尚、既に記憶された情報の領域と重複しない領域についての情報についても、記憶される。図4(b)の例では、(Left,Top,Right,Bottom)=(100,100,400,200),(100,200,200,300),(200,200,600,400)の領域である。
【0053】
このように、生成部100で描画命令が生成されるごとに、バッファ101の内容は逐一更新される。バッファ101の内容の更新は、判断部104から、画面更新の出力指示を受け取るまで繰り返し実行される。
【0054】
次に、バッファ101が、画面更新の出力指示を受けてから、画面更新を出力し、クライアント端末2が当該画面更新を反映した画面を表示するまでの動作の流れを説明する。尚、バッファ101が、画面更新を出力するか否かの決定は、判断部104が行うが、その動作の詳細は後述する。
【0055】
バッファ101は、画面更新の出力指示を受け取ると、前回出力時から今までに記憶した最新の画面情報と、その領域の情報を圧縮部102に画面更新として出力する。画面更新の出力が完了すると、これまでに記憶した画面情報とその領域の情報をクリアする。バッファ101は、以降は、また1から、生成部100から受け取った描画命令を記憶していく。
【0056】
圧縮部102は画面更新を受け取ると、その画面更新に含まれる画像情報に圧縮処理を施す。また、圧縮部102は、圧縮処理を行う際に、圧縮処理を行う対象の画面更新のデータサイズを記憶部106に通知する。
【0057】
記憶部106は、圧縮部102から、画面更新のデータサイズを受け取ると、圧縮処理が実行中であることを示すフラグ(実行状態)をオン(処理中)にする。また、受け取ったデータサイズと、現在の時刻を処理開始時刻として記憶する。ここで、現在の時刻とは、例えばサーバ1が起動してから現在の経過秒数(単位:ミリ秒)などである。
【0058】
ここで、画面更新のデータサイズの算出方法の一例を説明する。
【0059】
バッファ101が出力した画面更新が、図4(b)の示すものであったとする。画面更新の総画素数は、この画面更新が占める領域の面積に等しい。図4(b)の例では、画面更新が占める面積(総画素数)は、(400−100)×(200−100)+(200−100)×(300−200)+(600−200)×(400−200)=30000+10000+80000=120000である。本実施形態では、1画素あたりのデータサイズを3バイトとする。両者の積により、画面更新のデータサイズは、360キロバイトと計算できる。(なお、簡便のため1キロバイト=1000バイトとしている。)
記憶部106が、圧縮部102から、画面更新のデータサイズを受け取った場合に、記憶した情報を図5(a)に示す。図5(a)では、圧縮処理が処理中であり、画面更新のデータサイズは360キロバイトであり、圧縮処理の処理開始時刻が100000 である例を示している。
【0060】
圧縮部102は、圧縮処理を完了すると、記憶部106に圧縮完了通知をする。記憶部106は、圧縮完了通知を受けとると、圧縮処理が実行中であることを示すフラグをオフにする。また、データサイズと処理開始時刻を削除する。図5(b)に、記憶部106が圧縮完了通知を受け取った後の記憶状態を示す。
【0061】
また、圧縮部102は、圧縮処理を完了すると、圧縮後の画面更新を送信部103に渡し、伝送処理を依頼する。
【0062】
送信部103は、圧縮後の画面更新を受け取ると伝送処理を施す。伝送処理を施す前に、送信部103は、圧縮後の画面更新のデータサイズを記憶部106に通知する。記憶部106は、圧縮後の画面更新のデータサイズを受け取ると、伝送処理が実行中であることを示すフラグ(実行状態)をオン(処理中)にする。また、データサイズと、現在の時刻を処理開始時刻として記憶する。記憶部106が記憶された情報の例を図6(a)に示す。図6(a)の例では、圧縮後の画面更新のデータサイズが、120キロバイトであり、処理開始時刻が100100である場合を示している。
【0063】
送信部103は、圧縮後の画面更新のデータサイズを記憶部106に通知後、圧縮後の画面更新にTCP/IPの各ヘッダを付与し、クライアント端末2に向けてネットワーク3へ送出する。
【0064】
送信部103は伝送処理を完了すると、記憶部106に伝送処理完了通知を行う。記憶部106は、伝送処理完了通知を受けると、伝送処理が実行中であることを示すフラグをオフにし、データサイズと処理開始時刻を削除する。伝送処理完了通知後の記憶部106の記憶状態を図6(b)に示す。
【0065】
クライアント端末2の受信部201は、伝送処理において画面更新を受け取ると、伸張部202に渡し、伸張を依頼する。
【0066】
伸張部202は、画面更新を受け取ると、その画面更新に含まれる画像情報に伸張処理を施す。
【0067】
伸張部202は、伸長処理を実行する前に、伸長処理を施す対象となる画面更新のデータサイズを送信部204に渡し、サーバ1への通知を依頼する。送信部204は、データサイズにTCP/IPの各ヘッダを付与し、データサイズをサーバ1へと送出する。
サーバ1の受信部107は、データサイズを受信すると、ヘッダを除去する。そして、記憶部106へデータサイズを通知する。記憶部106は、データサイズを受け取ると、伸張処理が実行中であることを示すフラグをオンにする。また、伸長処理を施す対象となる画面更新のデータサイズを記憶し、現在の時刻を処理開始時刻として記憶する。図7(a)は、伸長処理が実行中の際に、記憶部106に記憶された情報の例である。図7(a)では、伸張前の画面更新のデータサイズとして120キロバイト、処理開始時刻として100300が記憶されている。
【0068】
伸張部202は伸張処理を完了すると、伸長処理完了通知を、送信部204を介して、サーバ1の記憶部106に通知する。記憶部106は、伸長処理完了通知を受け取ると、伸張処理が実行中であることを示すフラグをオフにし、データサイズと処理開始時刻を削除する。伸長処理完了通知を受け取った後の記憶部106の状態を図7(b)に示す。
【0069】
伸張部202は、伸張が完了した画面更新を表示部203に渡し、表示を依頼する。
【0070】
表示部203は、画面領域全体の画面情報を保持する記憶領域を有しており、画面更新の領域情報が示す領域の情報を、伸張後の画像情報で上書き更新する。表示部203の状態はユーザに視覚的に提示される。
【0071】
以上、バッファ101が、画面更新の出力指示を受けてから、画面更新を出力し、クライアント端末2が当該画面更新を反映した画面を表示するまでの動作の流れを説明した。
【0072】
なお、圧縮部102、送信部103、伸張部202はいずれも並列的に動作が可能である。つまり、例えば圧縮部102が圧縮後の画面更新を送信部103に渡したすぐ後に、バッファ101から新たな画面更新が渡されれば、たとえ送信部103が先の画面更新の伝送処理中であったとしても、新たな画面更新の圧縮処理を実行することが可能である。
【0073】
次に、判断部104が、バッファ101に、画面更新を出力させるか否かを判断する動作の詳細について、説明する。
【0074】
判断部104は、任意のタイミングで、バッファ101に画面更新の出力指示を出すか否かの判断を行う。例えば一定時間間隔ごとに判断を開始してよい。
【0075】
以下では、3つの時刻で判断する例を説明する。第1の時刻は、100400であり、第2の時刻は、100500であり、第3の時刻は、100540であるとする。
【0076】
まず、第1の時刻である、100400の時点で、判断する例を説明する。
【0077】
まず、判断部104は、推定部105に対し、次の二種類の時刻を推定するよう要求する。一つ目は、現在処理の実行中である最新の画面更新に施される圧縮処理、伝送処理、伸張処理のそれぞれの処理終了時刻である。ここで、最新の画面更新とは、現時点から直近の時点で、バッファが出力した画面更新である。それぞれα1、α2、α3と示す。二つ目は、もし今、バッファ101から画面更新が出力されたと仮定したときに、当該の画面更新に施される圧縮処理、伝送処理、伸張処理のそれぞれの処理開始時刻である。それぞれβ1、β2、β3と示す。
【0078】
推定部105は、推定の要求を受け取ると、上述の二種類の時刻を次の手順により推定する。
【0079】
まず、一つ目の時刻(α1、α2、α3)について説明する。始めに、推定部105は、記憶部106に対し情報の読み出しを依頼する。図8に、記憶部106が記憶している情報の例を示す。
【0080】
図8は、圧縮部102が、画面更新1001を処理中で、伸張部202が画面更新1002を処理中である様子が示されている。
【0081】
推定部105は、図8の情報から、現在処理中の最新の画面更新の、圧縮処理、伝送処理、伸張処理のそれぞれの処理終了時刻を推定する。
【0082】
本実施形態では、推定部105は、以下の値を有しているものとする。
【0083】
・圧縮部102の平均処理所要時間:TC(ミリ秒/キロバイト)
・送信部103の平均処理所要時間:TT(ミリ秒/キロバイト)
・伸張部202の平均処理所要時間:TD(ミリ秒/キロバイト)
・圧縮部102の平均圧縮率:C(%)
また、本実施形態においては、TC=0.8ミリ秒/キロバイト、TT=3.2ミリ秒/キロバイト、TD=4.8ミリ秒/キロバイト、C=50%であるとする。
【0084】
推定部105は、推定部105が有する上述した値を用いて、最新の画面更新、すなわち画面更新1001に対する処理終了時刻を、以下の方法で推定する。
【0085】
推定部105は、圧縮処理終了時刻を、圧縮処理開始時刻+圧縮前データサイズ×TCと推定する。上記の例では、α1=100360+100×0.8=100440と推定する。推定部105は、伝送処理終了時刻を、伝送処理開始時刻+圧縮後データサイズ×TTと推定する。伝送処理開始時刻は圧縮処理終了時刻に等しく、また圧縮後データサイズは圧縮前データサイズ×Cとみなす。上記の例では、α2=100440+100×50÷100×3.2=100600と推定する。推定部105は、伸張処理開始時刻を、伸張処理開始時刻+圧縮後データサイズ×TDと推定する。伸張処理開始時刻は伝送処理終了時刻に等しいとみなす。上記の例では、α3=100600+100×50÷100×4.8=100840と推定する。
【0086】
次に、二つ目の時刻(β1、β2、β3)について説明する。
【0087】
始めに、推定部105はバッファ101に対し、現在記憶している画面更新の領域情報の読み出しを依頼する。例を図9に示す。図9の例では、バッファ101は現在記憶している画面更新の領域情報として、(Left,Top,Right,Bottom)=(100,100,350,200)を推定部105に返す。
【0088】
推定部105は、もし今、バッファ101から画面更新が出力されたと仮定したときに、この画面更新に施されるであろう圧縮処理、伝送処理、伸張処理のそれぞれの処理開始時刻を推定する。
【0089】
まず、この画面更新のデータサイズを算出する。画素数は(350−100)×(200−100)=250000である。この値に、1画素あたりのバイト数として3バイトを乗じ、データサイズを75キロバイトと算出する。さらに上述のTC、TT、Cを用いて各処理の開始時刻を推定する。圧縮処理開始時刻は現在の時刻を取得し、それをそのまま利用する。現在時刻は、100400であるとしたので、β1=100400とする。伝送処理開始時刻は圧縮処理終了時刻に等しいとみなし、β2=100400+75×0.8=100460と推定する。伸張処理開始時刻は伝送処理終了時刻に等しいとみなし、β3=100460+75×50÷100×3.2=100580と推定する。
【0090】
推定部105が、(α1、α2、α3)と(β1、β2、β3)を算出すると、判断部104は、これらを用いて、バッファ101に画面更新の出力指示を出すか否かを判断する。
【0091】
判断部105は、α1≦β1、α2≦β2、α3≦β3の三つの条件がすべて真となる場合に、出力指示を出すと判断し、それ以外の場合には、出力指示を出さないと判断する。
【0092】
以上の例では、α1=100440、β1=100400であるため、条件を満たしていない。したがって、判断部104はバッファ101に画面更新の出力指示を出さないと判断する。
【0093】
図10に、以上説明した例における、推定時刻である(α1、α2、α3)と(β1、β2、β3)との関係を示す。
【0094】
図10では、時間軸に沿った各処理の処理状態を示している。図中の四角は、各処理部が処理中である様子を意味する。四角内の数字は各処理の所要時間である。もし現在時刻100400(図中右側の矢印)において、バッファ101からの画面更新の出力指示を行ったと仮定すると、その時点で圧縮部102は前の画面更新を処理実行中であるため、新たな画面更新の圧縮処理に即座に取りかかることができない。その結果、応答性が低下する。つまり、α1≦β1の条件を満たしていないと、応答性が低下する。したがって、判断部104は、第1の時点(100400)では画面更新の出力指示を行うべきでないと判断する。
【0095】
判断部104の処理は以上で終了する。既に述べたように、判断部104の判断処理は、任意のタイミングで繰り返し行われる。
【0096】
以下では、上記の判断終了時から100ミリ秒が経過した第2の時刻(時刻100500)で、再び判断部104の判断処理が開始したときの処理の流れを述べる。
【0097】
先程と同様、判断部104は、二種類の時刻を推定するよう推定部105に要求する。
【0098】
推定部105が行う、一つ目の時刻(α1、α2、α3)の推定について説明する。
【0099】
始めに、推定部105は、記憶部106に対し情報の読み出しを依頼する。図11に、記憶部106が記憶している情報の例を示す。図11に示すように、前述した判断時点(時刻100400)では、圧縮処理中だった画面更新(画面更新1101)が、伝送処理に移っている。また、図11には、伸張部202は、画面更新1102を引き続き伸張処理を継続している様子が示されている。
【0100】
推定部105は、記憶部106の情報から、現在処理の実行中である最新の画面更新、すなわち画面更新1101についてα1、α2、α3を推定する。圧縮処理終了時刻については既に圧縮処理が終了しているため計算を行わない。伝送処理終了時刻は、伝送処理開始時刻+圧縮後データサイズ×TTで算出し、推定する。α2=100440+50×3.2=100600と推定できる。伸張処理終了時刻は、伸張処理開始時刻+圧縮後データサイズ×TDと推定する。ここで、伸張処理開始時刻は、伝送処理終了時刻と推定し、算出する。α3=100600+50×4.8=100840と推定できる。
【0101】
次に、推定部105が行う、二つ目の時刻(β1、β2、β3)の推定について説明する。
【0102】
始めに、推定部105はバッファ101に対し、現在記憶している画面更新の領域情報の読み出しを依頼する。例を図12に示す。図9と図12を比較するとわかるとおり、前述した判断時点(時刻100400)と比較して、現時点(時刻100500)では、描画命令が追加で発生しており、バッファ101のデータ量が増加している。
【0103】
図12に示すように、バッファ101は、現在記憶している画面更新の領域情報として、(Left,Top,Right,Bottom)=(100,100,350,200),(200,200,400,300)を推定部105に渡す。推定部105は、前述した算出方法と同様の方法で、β1、β2、β3を推定する。
【0104】
画素数は、画面行使の領域情報から、(350−100)×(200−100)+(400−200)×(300−200)=450000と算出できる。データサイズは、算出した画素数に、1画素あたりのバイト数として3バイトを乗じ、135キロバイトと算出できる。圧縮処理開始時刻は現在の時刻をそのまま利用し、β1=100500とする。伝送処理開始時刻は圧縮処理終了時刻に等しいとみなす。β2=100500+135×0.8=100608と推定できる。伸張処理開始時刻は伝送処理終了時刻に等しいとみなす。β3=100608+135×50÷100×3.2=100824と推定できる。
【0105】
判断部104は、以上の二種類の時刻の推定値(α1、α2、α3)と(β1、β2、β3)を用いて、バッファ101に画面更新の出力指示を出すか否かを判断する。今回はα1の計算を行わなかったが、α1はすでに経過している。したがって、α1≦β1は真とみなすことができる。また、α2=100600、β2=100608であるため、α2≦β2の条件は真である。しかし、α3=100840、β3=100824であるため、α3≦β3の条件は真でない。したがって、判断部104はバッファ101に画面更新の出力指示を出さないと判断する。
【0106】
図13に、以上説明した、(α1、α2、α3)と(β1、β2、β3)との間の関係を示す。もし、現在時刻100500において、バッファ101からの画面更新の出力指示を行ったと仮定する。この場合、現時点で、圧縮部102は処理実行中でないため、新たな画面更新の圧縮処理に即座に取りかかることができる。また、送信部103は、現時点では伝送処理中だが、圧縮処理の完了時点(β2)では、処理が完了(α2の時点で完了)していると推定できる。したがって、圧縮処理完了後、すぐに、新たな画面更新の送信処理に取りかかることができる。しかし、伸張部202は、新たな画像更新の伝送処理が完了すると推定される時刻(β3)において、処理実行中であると推定される(β3<α3)。したがって、新たな画像更新の伝送処理完了後、すぐに、新伸張処理に取りかかることができない。したがって、判断部104は、この時点では、バッファ101から画面更新の出力指示を行うべきでないと判断する。
【0107】
判断部104の処理は以上で終了する。
【0108】
以下では、上記の判断終了時からさらに40ミリ秒が経過した第3の時刻(時刻100540)で、再び判断部104の判断処理が開始したときの処理の流れを説明する。
【0109】
以前の判断と同様、判断部104は、二種類の時刻を推定するよう推定部105に要求する。
【0110】
まず、一つ目の時刻(α1、α2、α3)の推定について説明する。
【0111】
図14に、時刻100540における、記憶部106が保持する情報を示す。
【0112】
図14に示す通り、圧縮処理、伝送処理、伸長処理それぞれの処理状態は、前回の判断時点(時刻100500)から変化していないものとする。つまり、伝送処理、伸長処理が処理を継続して行っている。
【0113】
推定部105は、α1、α2、α3を推定する。推定部105は、今回のように、記憶部106の状態に変化がないことを検出した場合は、α1、α2、α3の推定を省略し、前回の推定結果をそのまま再利用することができる。その結果、α1は推定値なし、α2=100600、α3=100840との推定結果を得る。
【0114】
次に、二つ目の時刻(β1、β2、β3)の推定について説明する。
【0115】
図15に、時刻100540における、バッファ101の状態を示す。
【0116】
図12と図15を比較するとわかるとおり、現時点(100540)と、以前判断した時点(100500)との間に、描画命令の追加発生はなく、バッファ101の状態に変化がない。
【0117】
したがって、推定部105は、データ量として、前回算出した値と同様135キロバイトを得る。また、圧縮処理開始時刻は、現在の時刻をそのまま利用し、β1=100540とする。伝送処理開始時刻は圧縮処理終了時刻に等しいとみなし、β2=100540+135×0.8=100648と推定する。伸張処理開始時刻は伝送処理終了時刻に等しいとみなし、β3=100648+135×50÷100×3.2=100864と推定する。
【0118】
判断部104は、以上の二種類の時刻の推定値を用いて、バッファ101に画面更新の出力指示を出すか否かを判断する。前回の判断時と同様の理由で、α1≦β1は真と判断できる。α2=100600、β2=100648であるため、α2≦β2の条件は真である。α3=100840、β3=100864であるため、α3≦β3の条件は真である。全ての条件が真となったため、判断部104はバッファ101に画面更新の出力指示を出すと判断する。
【0119】
図16に、以上説明した、(α1、α2、α3)と(β1、β2、β3)との間の関係を示す。
【0120】
図16に示す通り、現在時刻100540において、バッファ101からの画面更新の出力指示を行ったと仮定すると、当該の画面更新に対する各処理が完了した時点で次の処理に即座に移れるようになっていることが分かる。
【0121】
判断部104は、バッファ101に対し、画面更新の出力指示を行う。以上で判断部104の処理は終了する。
【0122】
以上が、本実施形態の動作説明である。
【0123】
以上、本実施の形態によれば、判断部104は、繰り返し、判断を実行し、β1、β2、β3それぞれが、α1、α2、α3それぞれを初めて上回った時点で、バッファ101に対して、画面更新の出力指示を行っている。β1、β2、β3それぞれが、α1、α2、α3それぞれを上回った時点で、バッファ101に対する出力指示を行っているため、並列的に動作可能な、画面更新に施される一連の処理(圧縮→伝送→伸張)において、各処理を終えた画面更新が即座に次の処理へ移行することができる。また、「初めて」上回った時点で、出力指示を行うこととしているため、画面更新の出力頻度も高い状態を維持できる。また、ボトルネックの処理部(本実施形態では伸張部202)が処理を行っていない時間を最小限に抑えることができる。したがって、応答性と描画コマ数の両立を実現できる。
【0124】
より具体的に説明する。
【0125】
図17に示すように、もし本実施形態で決定した出力指示のタイミングよりも早いタイミングで出力指示を行った場合、処理後の画面更新が即座に次の処理に移行できず、余計な待ち時間が発生することになる(応答性が悪化する)。
【0126】
図18に示すように、本実施形態で決定した出力指示のタイミングよりも遅いタイミングで出力指示を行った場合、ボトルネックの処理部が処理を行っていない時間が生じることになる(描画コマ数が悪化することになる)。
【0127】
本実施形態によれば、一連の処理が全て完了するまでの所要時間を小さくしたいという要求と、単位時間あたりに行われる一連の処理の回数を大きくしたいという要求を、同時に満たすことが可能になる。つまり、描画コマ数と応答性を両立することが可能になる。
【0128】
また、本実施形態では、判断部104が判断処理を繰り返し実行するものとした。前述の通り、画面転送では画面変化が生じた場合にのみ送出すべきデータが発生するため、ある時点において、以降将来にどのような画面変化が生じるかは予測できない。判断処理を繰り返し行うという本実施形態の動作は、このような特殊なデータの発生パターンを有する画面転送において効果的にバッファ101からの出力タイミングを決定することができる。
【0129】
なお、本実施形態では、一つ目の時刻(α1、α2、α3)と二つ目の時刻(β1、β2、β3)を全て推定した後に判断処理を行っているが、必ずしも全てを推定してから判断を行わなくともよい。例えば、始めにα1とβ1のみの推定を行ってからα1≦β1の真偽を確かめ、真の場合にのみα2とβ2の推定を行い、さらにα2≦β2が真の場合にのみα3とβ3の推定を行いα3≦β3の真偽を確かめる、といった手順であってもよい。こうした手順を採用すれば、一度に全てを推定するよりも少ない計算量で同等の判断をすることができる。
【0130】
また、本実施形態では、推定部105が、各処理部の平均処理所要時間(TC、TT、TD)や圧縮率(C)を事前に有しているものとして説明したが、これに限られない。例えば、画面転送の開始時に試験的に圧縮処理や伝送処理、伸張処理を行い、その所要時間や圧縮率からTC、TT、TD、Cを決定してよい。また、画面転送の実施の任意のタイミングで、各処理部の処理の所要時間や圧縮率の実績を求め、TC、TT、TD、Cを適宜更新してもよい。また、TC、TT、TD、Cを決定する際に、サーバ1やクライアント端末2のCPU性能などの値を反映してもよい。また、TC、TT、TD、Cを決定する際に、ネットワーク3の通信帯域やRTT(Round Trip Time)を測定し決定に反映してよい。こうした手順を採用すれば、画面転送を実行する環境ごとに異なる端末性能やネットワーク性能に適応することができる。
【0131】
また、本実施形態では、判断処理を定期的に行うこととして説明したが、判断処理のタイミングは任意でよい。
【0132】
例えば、バッファ101おいて少なくとも一度以上更新が行われた領域が増えたことを検出したときに、判断部104に対し判断処理の開始を依頼してもよい。判断部104は、周期的なタイミングで判断処理を行うのに加えて、バッファ101から依頼があった際に追加的に判断処理を行う。バッファ101において少なくとも一度以上更新が行われた領域が拡大した場合、バッファ101が出力する画面更新のデータサイズが増加する。その結果、圧縮処理、伝送処理、伸張処理の処理時間は大きくなることが予期される。つまり、β1、β2、β3の値が増加する。したがって、α1≦β1、α2≦β2、α3≦β3の条件が成立する可能性が高くなる。したがって、このようなタイミングで判断処理を行うことで、バッファ101からの出力指示を、より適切なタイミングで行える。
【0133】
また、本実施形態では、α1≦β1、α2≦β2、α3≦β3の三つの条件が真の場合、つまり、バッファが記憶している画面更新の圧縮処理、伝送処理、伸長処理各々の処理の推定開始時刻であるβ1、β2、β3が、直近に出力した画面更新の圧縮処理、伝送処理、伸長処理各々の処理完了時刻であるα1、α2、α3と同一か、後になるように条件を設定した。しかしながら、必ずしも、各処理の推定開始時刻が、各処理の推定完了時刻と同一か、後になる必要はない。
【0134】
例えば適当な閾値Thを設けて、α1≦β1、α2≦β2、α3≦β3の三つの条件の代わりに、条件をα1≦β1+Th、α2≦β2+Th、α3≦β3+Thの三つの条件としてもよい。この条件では、各処理の推定開始時刻が、推定完了時刻以前となる場合がある。この場合、推定開始時刻から推定完了時刻まで、処理の待ち時間が、多少生じることにはなるが、待ち時間は、Th以内である。したがって、応答性と描画コマ数の両立を実現できる。尚、閾値Thの値は、圧縮処理、伝送処理、伸長処理それぞれの条件毎に異なる値としてもよい。
【0135】
こうしたやり方は、判断処理を周期Tで定期的に行う場合において、描画コマ数と応答性の両立をより向上できる。図19を用いて説明する。
【0136】
ある時刻tでの判断処理においてβ3がα3をわずかに上回らなかった場合、次の判断の時刻t´=t+Tでは、β3がα3を大きく上回ることとなる。条件を、α1≦β1+Th、α2≦β2+Th、α3≦β3+Thとしておけば、このようにβ3がα3をわずかに上回る場合であっても、画面更新の出力を実行すると判断できる。この場合、応答性はわずかに劣化するが、描画コマ数の劣化を防ぐことができ、応答性と描画コマ数の両立を実現できる。
【0137】
特に、Th=T/2と定めた場合は、応答性と描画コマ数の両立のために、より適切な判断ができる。つまり、この条件を定めた場合、バッファが記憶する画面更新の、ボトルネックとなる処理部の処理開始時刻と、直近にバッファが出力した画面更新のボトルネックとなる処理部の処理完了時刻とが最も近づくタイミングで、バッファの更新画像を出力することができるようになる。ここで、ボトルネックとなる処理部とは、α1≦β1+Th、α2≦β2+Th、α3≦β3+Thの条件を、最後の時刻に満たす処理部である。
【0138】
例えば、ボトルネックとなる処理部が、伸長部である場合を考える。この場合、α3≦β3+Thの条件を最後に満たす。時刻tでの判断処理で、α1≦β1+T/2、α2≦β2+T/2、α3≦β3+T/2すべてが成立した場合、その後どのような画面変化が生じようとも、時刻t´(t´=t+T)においては、|β3´−α3´|≧|β3−α3|が成立することとなる。(ここで、時刻t´での、α1、β1をそれぞれα1´とβ1´と表現した。この|β3´−α3´|≧|β3−α3|であることが、
時刻tで、バッファが記憶する画面更新の、ボトルネックとなる処理部の処理開始時刻と、直近にバッファが出力した画面更新のボトルネックとなる処理部の処理完了時刻とが最も近づくタイミングであることを示す。このような判断をできることで、応答性と描画コマ数の両立をより向上できる。
【0139】
なお、本実施形態では、圧縮→伝送→伸張という三ステップの処理が行われる構成としたが、必ずしもこれに限らなくともよい。2のステップの処理以下であっても、4ステップの処理以上であっても適用できる。
【0140】
例えば、新規の四ステップ目の処理部を追加してもよい。例を図20に示す。図では、サーバ1は変換部108をさらに有し、バッファ101から出力された画面更新に対し、色数の変換処理(例えば32ビット色から24ビット色への減色処理)を行う。この場合は、記憶部106は変換部108の実行状態やデータサイズ、処理開始時刻を記憶するための領域をさらに有し、変換部108は変換処理の開始時と終了時に記憶部106の状態を更新する。さらに推定部105は変換部108の変換処理の処理開始時刻と処理終了時刻の推定を併せておこなう。さらに判断部104は、現在処理の実行中である最新の画面更新に施される変換処理、圧縮処理、伝送処理、伸張処理のそれぞれの処理終了時刻をそれぞれα1、α2、α3、α4とし、また、バッファ101から画面更新が出力されたと仮定したときに当該の画面更新に施される変換処理、圧縮処理、伝送処理、伸張処理のそれぞれの処理開始時刻をそれぞれβ1、β2、β3、β4とした上で、各値の推定値に基づき、α1≦β1、α2≦β2、α3≦β3、α4≦β4の全ての条件が真となる場合にバッファ101へ出力指示を行うと判断する。このような構成であっても、描画コマ数と応答性との両立を実現できる。
【0141】
また、処理の数は、3ステップより少なくてもよい。この場合、いずれかの処理部の処理所要時間をゼロと近似し、その処理部に関する通知や推定、判断の手続きを省略してもよい。例えば伸張部202に関する手続きを省略した場合は、本発明の実施をサーバ1の内部に閉じた構成とすることが可能である。このときの構成を図21に示す。このように画面更新に対する一連の処理を行う処理部がサーバ1にのみ存在する場合は、クライアント端末2の状態を受信する受信107は不要である。この場合は、記憶部106は圧縮処理と送信処理のみの実行状態やデータサイズ、処理開始時刻を記憶する。判断部104は、現在処理の実行中である最新の画面更新に施される圧縮処理、送信処理のそれぞれの処理終了時刻をそれぞれα1、α2とし、また、バッファ101から画面更新が出力されたと仮定したときに当該の画面更新に施される圧縮処理、送信処理のそれぞれの処理開始時刻をβ1、β2とした上で、各値の推定値に基づき、α1≦β1、α2≦β2の両方の条件が真となる場合にバッファ101へ出力指示を行うと判断する。このような構成であっても、描画コマ数と応答性との両立を実現できる。
【0142】
また、本実施形態では、圧縮処理、伝送処理、伸張処理を例に説明したが、これらの処理に限らず、本実施形態は適用できる。また、本実施形態では、画面転送システムを例に説明したが、これに限られない。転送されるデータは、画面更新に限られない。適宜更新される更新データに対して、並列的に施される一連の処理を実行するシステムや装置に適用できる。
【0143】
サーバ1は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、生成部100、バッファ101、圧縮部102、送信部103、判断部104、推定部105、記憶部106、受信部107は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、サーバ1は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、記憶部106は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはCD−R、CD−RW、DVD−RAM、DVD−Rなどの記憶媒体などを適宜利用して実現することができる。
【0144】
以上説明した少なくとも1つの実施形態の効果は、描画コマ数と応答性を両立する画面転送システムを提供することができることである。
【0145】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0146】
1・・・サーバ、2・・・クライアント端末、3・・・ネットワーク、100・・・生成部、101・・・バッファ、102・・・圧縮部、103・・・送信部、104・・・判断部、105・・・推定部、106・・・記憶部、107・・・受信部、108・・・変換部、201・・・受信部、202・・・伸長部、203・・・表示部、204・・・送信部。
【特許請求の範囲】
【請求項1】
少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファと、
前記バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理部〜第N処理部と、
前記第1の指示に応じて前記バッファが前記第1データを出力した後、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定部と、
前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファを制御する制御部と、
を備えるサーバ。
【請求項2】
前記第1処理部〜前記第N処理部は、前記第1データに対して、第m処理部が第mの処理(m=1〜Nいずれかの整数)を実行するタイミングと重複するタイミングで、前記第2データに対して、第n処理部(n=m−1以下の整数)が、第nの処理を実行できる請求項1記載のサーバ。
【請求項3】
前記所定の関係は、前記第1-1時刻と前記第2-1時刻との差〜前記第1-N時刻と前記第2-N時刻との差各々が、所定の閾値以下である請求項2記載のサーバ。
【請求項4】
前記所定の閾値は、前記第1-1時刻と前記第2-1時刻との差〜前記第1-N時刻と前記第2-N時刻との差各々のうち最も大きな値が、正であって、かつもっとも0に近い値となる値である請求項3記載のサーバ。
【請求項5】
前記推定部は、第1時点で推定した、前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻に関して、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たさない場合には、前記第1時点以後の第2時点に、再度、前記第1-1時刻〜前記第N-1時刻と前記第2-1時刻〜前記第2-N時刻とを推定し、
前記制御部は、前記第2時点に推定した前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻に関して、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わない請求項3記載のサーバ。
【請求項6】
前記第2時点と前記第1時点との差がTである場合、
前記所定の閾値はT/2である
請求項5記載のサーバ。
【請求項7】
前記推定部は、前記第1-1時刻〜前記第1-N時刻と、前記第2-1時刻〜前記第2-N時刻とを、所定の周期T毎に推定し、
前記所定の閾値は、T/2以下である請求項3記載のサーバ。
【請求項8】
前記所定の閾値は、0以下である請求項3記載のサーバ。
【請求項9】
前記第2データは、前記バッファが前記第1データを出力以後に記憶したデータである請求項2記載のサーバ。
【請求項10】
前記第2-1時刻〜前記第2-N時刻は、前記第2データに基づき、推定する請求項9記載のサーバ。
【請求項11】
前記第1データ及び前記第2データは、ネットワークを介して接続されたクライアント端末が表示する画面情報を更新する情報である請求項2記載のサーバ。
【請求項12】
前記第1〜前記第N処理部は、圧縮処理部と送信処理部を含む請求項1記載のサーバ。
【請求項13】
前記クライアント端末は、前記第Nの処理を行った前記第1データ及び前記第2データに対して、第N+1の処理を行う第N+1処理部を有し、
前記推定部は、前記第1データを、前記第N+1処理部が、前記第N+1の処理を完了する第1-(N+1)時刻と、前記第2データを、前記第N+1の処理部が、前記第N+1の処理を開始する第2-(N+1)時刻とを推定し、
前記制御部は、更に、前記第1-(N+1)時刻と前記第2-(N+1)との差が、前記所定の閾値以下である場合に、前記バッファに対して前記第2データを出力する指示を行い、前記所定の閾値より大きい場合に、前記バッファに対して前記第2データを出力する指示を行わないように前記バッファを制御する請求項3記載のサーバ。
【請求項14】
前記第N+1の処理部は、伸長処理部であり、前記第N+1の処理は、前記圧縮処理で圧縮された前記第1データ及び前記第2データに対して伸長する伸長処理である請求項13記載のサーバ。
【請求項15】
前記推定部は、前記バッファが前記第2データとして新たにデータを記憶したタイミングで、前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻を推定する請求項9記載のサーバ。
【請求項16】
前記推定部は、前記第2-1時刻〜前記第2-N時刻を推定する以前に、前記第1データに関して、前記第1-1時刻〜前記第1-N時刻いずれかを推定していた場合、前記第1-1時刻〜前記第1-N時刻を推定する際、以前推定した、前記第1-1時刻〜前記第1-N時刻を利用して推定する請求項1記載のサーバ。
【請求項17】
前記推定部は、前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻を推定する際、前記ネットワークの状態を考慮して推定する請求項1記載のサーバ。
【請求項18】
少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファステップと、
前記バッファステップで出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理ステップ〜第N処理ステップと、
前記第1の指示に応じて前記バッファステップで前記第1データを出力した後、前記第1処理ステップ〜前記第N処理ステップ各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理ステップ〜前記第N処理ステップ各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定ステップと、
前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファステップを制御する制御ステップと、
を備えるサーバ制御方法。
【請求項19】
少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファ機能と、
前記バッファ機能で出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理機能〜第N処理機能と、
前記第1の指示に応じて前記バッファ機能で前記第1データを出力した後、前記第1処理機能〜前記第N処理機能各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理機能〜前記第N処理機能各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定機能と、
前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファ機能を制御する制御機能と、
を備えるサーバ制御プログラム。
【請求項1】
少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファと、
前記バッファが出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理部〜第N処理部と、
前記第1の指示に応じて前記バッファが前記第1データを出力した後、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理部〜前記第N処理部各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定部と、
前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファを制御する制御部と、
を備えるサーバ。
【請求項2】
前記第1処理部〜前記第N処理部は、前記第1データに対して、第m処理部が第mの処理(m=1〜Nいずれかの整数)を実行するタイミングと重複するタイミングで、前記第2データに対して、第n処理部(n=m−1以下の整数)が、第nの処理を実行できる請求項1記載のサーバ。
【請求項3】
前記所定の関係は、前記第1-1時刻と前記第2-1時刻との差〜前記第1-N時刻と前記第2-N時刻との差各々が、所定の閾値以下である請求項2記載のサーバ。
【請求項4】
前記所定の閾値は、前記第1-1時刻と前記第2-1時刻との差〜前記第1-N時刻と前記第2-N時刻との差各々のうち最も大きな値が、正であって、かつもっとも0に近い値となる値である請求項3記載のサーバ。
【請求項5】
前記推定部は、第1時点で推定した、前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻に関して、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たさない場合には、前記第1時点以後の第2時点に、再度、前記第1-1時刻〜前記第N-1時刻と前記第2-1時刻〜前記第2-N時刻とを推定し、
前記制御部は、前記第2時点に推定した前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻に関して、前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わない請求項3記載のサーバ。
【請求項6】
前記第2時点と前記第1時点との差がTである場合、
前記所定の閾値はT/2である
請求項5記載のサーバ。
【請求項7】
前記推定部は、前記第1-1時刻〜前記第1-N時刻と、前記第2-1時刻〜前記第2-N時刻とを、所定の周期T毎に推定し、
前記所定の閾値は、T/2以下である請求項3記載のサーバ。
【請求項8】
前記所定の閾値は、0以下である請求項3記載のサーバ。
【請求項9】
前記第2データは、前記バッファが前記第1データを出力以後に記憶したデータである請求項2記載のサーバ。
【請求項10】
前記第2-1時刻〜前記第2-N時刻は、前記第2データに基づき、推定する請求項9記載のサーバ。
【請求項11】
前記第1データ及び前記第2データは、ネットワークを介して接続されたクライアント端末が表示する画面情報を更新する情報である請求項2記載のサーバ。
【請求項12】
前記第1〜前記第N処理部は、圧縮処理部と送信処理部を含む請求項1記載のサーバ。
【請求項13】
前記クライアント端末は、前記第Nの処理を行った前記第1データ及び前記第2データに対して、第N+1の処理を行う第N+1処理部を有し、
前記推定部は、前記第1データを、前記第N+1処理部が、前記第N+1の処理を完了する第1-(N+1)時刻と、前記第2データを、前記第N+1の処理部が、前記第N+1の処理を開始する第2-(N+1)時刻とを推定し、
前記制御部は、更に、前記第1-(N+1)時刻と前記第2-(N+1)との差が、前記所定の閾値以下である場合に、前記バッファに対して前記第2データを出力する指示を行い、前記所定の閾値より大きい場合に、前記バッファに対して前記第2データを出力する指示を行わないように前記バッファを制御する請求項3記載のサーバ。
【請求項14】
前記第N+1の処理部は、伸長処理部であり、前記第N+1の処理は、前記圧縮処理で圧縮された前記第1データ及び前記第2データに対して伸長する伸長処理である請求項13記載のサーバ。
【請求項15】
前記推定部は、前記バッファが前記第2データとして新たにデータを記憶したタイミングで、前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻を推定する請求項9記載のサーバ。
【請求項16】
前記推定部は、前記第2-1時刻〜前記第2-N時刻を推定する以前に、前記第1データに関して、前記第1-1時刻〜前記第1-N時刻いずれかを推定していた場合、前記第1-1時刻〜前記第1-N時刻を推定する際、以前推定した、前記第1-1時刻〜前記第1-N時刻を利用して推定する請求項1記載のサーバ。
【請求項17】
前記推定部は、前記第1-1時刻〜前記第1-N時刻及び前記第2-1時刻〜前記第2-N時刻を推定する際、前記ネットワークの状態を考慮して推定する請求項1記載のサーバ。
【請求項18】
少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファステップと、
前記バッファステップで出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理ステップ〜第N処理ステップと、
前記第1の指示に応じて前記バッファステップで前記第1データを出力した後、前記第1処理ステップ〜前記第N処理ステップ各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理ステップ〜前記第N処理ステップ各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定ステップと、
前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファステップを制御する制御ステップと、
を備えるサーバ制御方法。
【請求項19】
少なくとも第1データ及び第2データを記憶し、第1の指示に応じて前記第1データを出力し、第2の指示に応じて前記第2データを出力するバッファ機能と、
前記バッファ機能で出力した第1及び第2データに対して、それぞれ第1の処理〜第N(Nは、2以上の整数)の処理を第1の処理〜第Nの処理の順番で処理を行う第1処理機能〜第N処理機能と、
前記第1の指示に応じて前記バッファ機能で前記第1データを出力した後、前記第1処理機能〜前記第N処理機能各々において、前記第1の処理〜前記第Nの処理各々を完了する第1-1時刻〜第1-N時刻と、前記第2のデータを、前記第1処理機能〜前記第N処理機能各々において、前記第1の処理〜前記第Nの処理各々を開始する第2-1時刻〜第2-N時刻とを推定する推定機能と、
前記第1-1時刻と前記第2-1時刻との関係〜前記第1-N時刻と前記第2-N時刻との関係各々が所定の関係を満たす場合、前記第2の指示を行い、満たさない場合には前記第2の指示を行わないように前記バッファ機能を制御する制御機能と、
を備えるサーバ制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2013−26931(P2013−26931A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−161406(P2011−161406)
【出願日】平成23年7月22日(2011.7.22)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願日】平成23年7月22日(2011.7.22)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]