以下図面により本発明の実施の形態について説明する。
図1は、本発明の実施形態に係るサーバ装置10およびそのクライアント装置20a,20b,…を備えたシン・クライアント・システムの構成を示すブロック図である。
このシン・クライアント・システムは、LAN(Local Area Network)やWAN(Wide Area Network)からなるネットワークN上に接続されたサーバ装置10および複数のクライアント装置20a,20b,…を備える。
サーバ装置10は、文書作成処理プログラム,表計算処理プログラム,メール処理プログラム,インターネット接続処理プログラム、Web表示プログラムなど、複数のアプリケーションプログラムを有し、当該サーバ装置10に接続されたクライアント装置20a,20b,…からの操作入力信号に応じて起動しその処理を実行する。
このサーバ装置10において、クライアント装置20a,20b,…からの操作入力信号に応じたアプリケーションプログラムの実行に伴い生成された表示出力用の描画データは、アクセラレータ回路101a,101b,…によって転送用の描画データに変換されると共に、当該描画データの内容やクライアント装置20a,20b,…との通信状態に応じた最適な圧縮方式で圧縮そして暗号化され、アクセス元のクライアント装置20a,20b,…へ送信(転送)される。
そして、クライアント装置20a,20b,…では、前記サーバ装置10から転送された描画データが、各クライアント装置内のアクセラレータ回路(回路ボード)21a,21b,…においてデコードされ、その表示部に表示される。
つまり、このシン・クライアント・システムにおける各クライアント装置20a,20b,…は、何れもキーボード及びマウスなどのユーザ操作に応じた入力機能とLCD表示部及びプリンタなどの出力機能のみを有し、独自のアプリケーション機能やデータファイルの管理機能を一切持っていない。
そして、クライアント装置20a,20b,…からの操作入力信号に応じてサーバ装置10にて起動実行される各種の処理に伴い生成されたデータファイルは、当該サーバ装置10内あるいは該サーバ装置10にて接続管理される磁気ディスクなどの記憶装置にユーザアカウント毎あるいは共有ファイルとして記憶され保存される。
ここで、前記サーバ装置10における転送用描画データの生成機能について、その概要を説明する。
サーバ装置10では、クライアント装置20との接続に伴い当該クライアント装置20からその表示デバイスの仕様情報(表示画面サイズH(縦ピクセル数)×W(横ピクセル数)・表示可能色数・仮想表示倍率α)、およびデコード可能圧縮方式情報、暗号化設定有無情報を受け取る。
ここで、クライアント装置20の表示デバイスに関する仮想表示倍率αとは、当該表示デバイスの実際の表示画面サイズに対して、サーバ装置10によって表示データを生成させるべきより広い領域の仮想の表示画面サイズを設定するための該実際の表示画面サイズとの比率からなる倍率である。例えばクライアント装置20の実際の表示画面サイズが小型の320×240ドット(ピクセル)であり、サーバ装置10において表示データをVGAサイズの640×480ドット(ピクセル)で生成させたい場合に、仮想表示倍率α=2となる。
これに基づきサーバ装置10は、実行中のアプリケーションによって描画される表示データを、先ずクライアント装置20の表示画面サイズ(H×W)をα倍した例えばVGAサイズの仮想表示領域(フレームバッファ)に生成する。そして、この仮想表示領域(フレームバッファ)に生成した表示データをクライアント装置20の表示画面サイズ(H×W)と表示指定位置に合わせて切り出す(リアル表示)かまたは全体を合わせて縮小する(全体表示)ことで、該クライアント装置20に対する表示データを生成する。
これにより、クライアント装置20の表示画面サイズが例えば320×240ドットと小型のPDAサイズであったとしても、サーバ装置10では例えばVGAサイズの仮想表示領域(フレームバッファ)に描画した表示データを基にクライアント装置20用の表示データを生成して転送するので、特に、メニューアイコンやツールバーなどのユーザ操作のための領域が小型な表示画面内を広く占有してしまうことなく、見易い表示を行わせることができる。
図2は、前記シン・クライアント・システムにおけるサーバ装置10の回路構成を示すブロック図である。
サーバ装置10は、コンピュータとしてのCPU102を備え、このCPU102には、バスインターフェース112及び高速バス103を介してROM104、RAM105、表示装置106が接続されると共に、前記アクセラレータ回路(回路ボード)101が接続される。このアクセラレータ回路101には、当該アクセラレータ回路101のワークメモリとしてVRAM107が搭載されて接続される。
また、CPU102には、ノーマルバス108を介してキーボードなどの入力部109、外部記憶HDD(Hard Disk Drive)110、クライアント装置20との送受信制御部111が接続される。
CPU102は、ROM104に予め記憶されているシステムプログラムや種々のアプリケーションプログラムに従ってRAM105を作業用メモリとし回路各部の動作を制御するもので、入力部109からのキー入力信号や送受信制御部111を介して受信されるクライアント装置20からのユーザ操作に応じた処理指令信号などに応じて前記種々のプログラムが起動・実行される。
このサーバ装置10において、クライアント装置20からのユーザ指令信号に応じて起動・実行されるアプリケーションプログラムに従い生成された種々のデータは、例えばそのユーザIDに対応付けられて外部記憶HDD110に記憶され、また表示用の描画データは、アクセラレータ回路(回路ボード)101においてVRAM107を使用して転送用の表示データとして生成され、最適圧縮・暗号化された後、送受信制御部111からクライアント装置20へ転送されて表示出力される。
図3は、前記シン・クライアント・システムのサーバ装置10におけるアクセラレータ回路101の回路構成を示すブロック図である。
このアクセラレータ回路101は、前記サーバCPU102からの高速バス103に接続されるインターフェース回路(I/F回路)11aを有し、このI/F回路11aには、アクセス調停回路11b1およびDRAMアクセス回路11b2を介してVRAM107が接続される。
VRAM107には、各クライアント装置20a,20b,…からの操作指令信号に応じてCPU102により起動・実行される各アプリケーションプログラムに従い生成された表示用の描画データが、各クライアント装置20a,20b,…毎に現表示データ107a、前表示データ107c、該クライアント装置20a,20b,…の表示画面サイズに合わせてスケーリングされたスケーリング後表示データ107bとして割り当てられて記憶されると共に、各表示データ107a〜107cに基づいてタイル分割・比較圧縮・暗号化された転送用の表示データがアクセラレータ処理データ107bや暗号化データ107eとして記憶される。
さらに、I/F回路11aと前記アクセス調停回路11b1との間には、生成された表示用の描画データ(現描画データ107a)からその転送用の表示データを生成するためのスケーリング回路11c、タイル分割判定回路11d、比較圧縮回路11e、暗号化回路11fが接続される。スケーリング回路11c、タイル分割判定回路11dには、高速バスインターフェース101aを介してCPU102から処理開始の指令が入力される。
スケーリング回路11cは、クライアント装置20a,20b,…毎の操作指令信号に応じたアプリケーションプログラムに従い前記仮想表示領域としてのVGAサイズのフレームバッファ上に生成された描画データを、当該クライアント装置20a,20b,…毎の表示画面サイズに合わせて縮小するもので、このスケーリング回路11cによりサイズ調整処理された描画データは、アクセス調停回路11b1からDRAMアクセス回路11b2を介してVRAM107内にスケーリング後表示データ107bとして格納される。
タイル分割判定回路11dは、前記VRAM107から読み出される表示用の描画データ(現表示データ107aやスケーリング後表示データ107b)を、その領域サイズに応じて判定されるタイル分割数(1タイルあたりの縦×横ピクセル数)を設定してタイル分割するもので、VRAM107から読み出された例えばクライアント装置20a用の描画データ(現表示データ107a)の画像サイズが、320×240ピクセルである場合には、1タイル(T)あたり8×8ピクセルに設定されてタイル分割される。
なお、このタイル分割による1タイル(T)あたりの領域設定サイズは、16×16ピクセルや32×32ピクセルなど、描画データの画像サイズに適宜合わせて判定される。
比較圧縮回路11eは、前記VRAM107から読み出される現表示データ107aやスケーリング後表示データ107bについて、先ず、前記タイル分割判定回路11dにより分割された1タイル(T)単位で同VRAM107から読み出される前表示データ107cと比較し、変化(差分)のない画像ピクセルを書き換え不要な透過色データSに変換するもので、この1タイル(T)単位での画像比較による未変化画像ピクセルの透過色データSへの変換が表示データの横方向に1ブロック分終了する毎にクライアント装置20の圧縮指定の有無に応じて最適圧縮処理されアクセラレータ処理データ107dとしてVRAM107に記憶される。さらに、同クライアント装置20の暗号化指定の有無に応じて暗号化回路11fにより暗号化され、暗号化データ107eとしてVRAM107に記憶される。
この暗号化データ107aはクライアント装置20への転送用の表示データとして前記CPU102により読み出され、該クライアント装置20へ転送される。
この場合、1タイル(T)の全画像ピクセルが透過色データSに変換された画像タイルについては、クライアント装置20aへ転送されない。
そして、このアクセラレータ回路101には、各クライアント装置(Cn)20a,20b,…毎の管理情報を格納するためのクライアント管理情報メモリ11Mが備えられ、その管理情報としては、当該クライアント装置20の表示画面サイズ(表示構造:H×W)、表現可能色数、仮想表示倍率(α)、前記VRAM107における現表示データ107aのアドレス、前表示データ107cのアドレス、暗号化データ(結果ファイル)107eのアドレス、アクセラレータ処理データ(差圧縮データ)107dのアドレスおよびそのバイト数、さらに暗号化の有無を示す暗号化ON/OFFデータが記憶される。これらの情報はアクセラレータ回路101の動作を規定する初期値であり、アクセラレータ回路101を動作させる前に予めCPU102より設定される。
図4は、前記サーバ装置10におけるアクセラレータ回路101内のスケーリング回路11cの回路構成を示すブロック図である。
このスケーリング回路11cには、クライアント装置20からの全体表示の指定の有無に応じてCPU102により出力されるスケーリングON/OFFデータが格納されるスケーリングON/OFFレジスタC1、スケーリングONである場合にそのスケーリング率(1/α:仮想表示倍率)が同CPU102により設定記憶されるスケーリング率設定レジスタC2が備えられる。
スケーリングON/OFFレジスタC1にスケーリングOFFのデータが格納された場合には、このスケーリング回路11cによるスケーリング処理は行われず、比較圧縮回路11eに対して起動信号が出力される。
一方、スケーリングON/OFFレジスタC1にスケーリングONのデータが格納された場合には、読み出しライン数選択回路C3が起動される。この読み出しライン数選択回路C3は、前記スケーリング率設定レジスタC2に設定記憶されたスケーリング率(1/α:仮想表示倍率)に従って、現表示データ107aから1回のスケーリング演算処理につき読み出すライン数を選択するもので、クライアント装置20により指定された仮想表示倍率αが2倍である場合には2ライン、4倍である場合には4ライン、8倍である場合には8ラインとして選択される。
表示データ読み出し回路C4は、VRAM107内に描画生成されている現表示データ107aを、前記読み出しライン数選択回路C3により選択された読み出しライン数(2,4,8ライン)ずつ読み出して1280×8ライン・バッファC5に格納する。
なお、現表示データ107aのメモリ領域は最大で例えば1280×800ドットに設定され、これをフレームバッファとし、クライアント装置20から指定された当該クライアント装置20の表示画面サイズ(表示構造:H×W)を仮想表示倍率(α)に応じて拡大した領域(Hα×Wα:例えばVGAサイズ)に対して表示データが生成描画される。
そして、前記現表示データ107aから読み出されて1280×8ライン・バッファC5に格納された2,4,8ライン分の表示データは、スケーリング演算回路C6に出力される。
図5は、前記アクセラレータ回路101におけるスケーリング回路11c内のスケーリング演算回路C6の回路構成を示すブロック図である。
このスケーリング演算回路C6には、前記スケーリング率設定レジスタC2に設定されたスケーリング率(1/α)に応じて前記1280×8ライン・バッファC5に格納されたαライン分の表示データを縦ピクセル数として指定するための縦ピクセル数レジスタC61、同縦ピクセル数に応じた横ピクセル数とその位置を指定するための横ピクセル・位置レジスタC62が備えられる。
読み出しエリア選択回路C63は、前記縦ピクセル数レジスタC61および横ピクセル・位置レジスタC62にて指定される縦ピクセル×横ピクセルとその範囲(スケーリング率1/4の場合は4×4(最初1〜4)ピクセル)を前記1280×8ライン・バッファC5に格納されたαライン分の表示データからスケーリング単位として選択的に読み出すもので、この読み出しエリア選択回路C63により読み出されたスケーリング単位の表示データ(1/α=1/4の場合4×4ピクセル)は、スケーリング単位バッファC64に格納される。
そして、このスケーリング単位バッファC64に格納されたスケーリング単位の表示データは、ピクセル読み出し回路C65によって1ピクセルずつ読み出され、足し算回路C66により各ピクセルデータが加算され足し算結果バッファC67に格納される。
前記足し算回路C66において1ピクセルの足し算処理が行われる毎に+1加算器C68によってピクセルカウンタC69がカウントアップされ、このピクセルカウンタC69でのカウント値がピクセル数判断回路C610によって前記スケーリング単位のピクセル数(4×4ピクセルの場合“16”)に到達したか否か判断される。
そして、このピクセル数判断回路C610において、未だスケーリング単位のピクセル数に到達しないと判断される状態では、前記ピクセル読み出し回路C65による前記スケーリング単位バッファC64からの1ピクセルデータの読み出し・加算処理が繰り返し行われる。
この後、前記ピクセル数判断回路C610において、前記ピクセルカウンタC69でのカウント値が前記スケーリング単位のピクセル数に到達したと判断されると、前記足し算結果バッファC67に格納されたスケーリング単位での全ピクセルデータの足し算結果が割り算回路C611に出力され、前記スケーリング率(1/α)に応じて割る数選択回路C612により選択される割る数(1/2の場合“4”、1/4の場合“16”、1/8の場合“64”)によって除算される。
これにより、前記スケーリング単位バッファC64に格納されたスケーリング単位の例えば4×4ピクセルデータが1ピクセルデータにスケーリングされて1/4(=1/α)に縮小されるもので、この割り算回路C611により得られたスケーリング単位での1/α縮小後の1ピクセルデータは、前記横ピクセル・位置レジスタC62での横ピクセル読み出し位置に従い書き込みエリア指定回路C613によってその先頭位置から順次指定されるライン・バッファC7上の指定エリアに記憶される。
このライン・バッファC7に対して、1スケーリング単位での1/α縮小後の1ピクセルデータが記憶されると、横ピクセル数終了判断回路C8によって前記スケーリング演算回路C6での1スケーリング単位のスケーリング処理が前記1280×8ライン・バッファC5に読み出されたαライン分の表示データの全ピクセルデータにつき終了したか否か判断される。
そして、この横ピクセル数終了判断回路C8によって、前記スケーリング演算回路C6での1スケーリング単位のスケーリング処理が前記1280×8ライン・バッファC5に読み出されたαライン分の表示データの全ピクセルデータにつき終了してないと判断された場合には、横ピクセル数更新回路C9によって前記横ピクセル・位置レジスタC62にセットする横ピクセル・位置がαピクセル分更新され、前記1280×8ライン・バッファC5に読み出されているαライン分の表示データのうちの次の1スケーリング単位の表示データ(α×αピクセル)が選択されてスケーリング単位バッファC64に格納され、前記同様の1/αスケーリング処理が行われる。
これにより、前記1280×8ライン・バッファC5に読み出されているαライン分の表示データが順次1スケーリング単位の表示データ(α×αピクセル)ずつ1/αスケーリング処理されてライン・バッファC7の先頭から順に格納される。
この後、前記横ピクセル数終了判断回路C8によって、前記スケーリング演算回路C6での1スケーリング単位のスケーリング処理が前記1280×8ライン・バッファC5に読み出されたαライン分の表示データの全ピクセルデータにつき終了したと判断されると、スケーリング後表示データ書き込み回路C10によって前記ライン・バッファC5に格納されている1/αスケーリング処理後の1ラインの表示データが、VRAM107内のスケーリング後表示データ107bとして格納される。
こうして、前記1280×8ライン・バッファC5に読み出されたαライン分の表示データについて、1/αにスケーリングされた1ラインの表示データがスケーリング後表示データ107bとして格納されると、ライン数終了判断回路C11によって前記現表示データ107aのライン数を1/αにした全ライン数分の1/αスケーリング後表示データ107bが得られたか否か判断される。
このライン数終了判断回路C11において、現表示データ107aのライン数を1/αにした全ライン数分の1/αスケーリング後表示データ107bが得られていないと判断されると、縦ライン更新回路C12によって前記表示データ読み出し回路C4に対する現表示データ107aの読み出し対象ライン数がαライン分更新され、1280×8ライン・バッファC5に対し次のαライン分の表示データが読み出されて前記同様の1/αスケーリング処理が行われる。
そして、前記ライン数終了判断回路C11によって前記現表示データ107aのライン数を1/αにした全ライン数分の1/αスケーリング後表示データ107bが得られたと判断されると、比較圧縮回路11eに起動信号が出力される。
つまり、このスケーリング回路11cでは、クライアント装置20の表示画面サイズ(H×W)を仮想表示倍率(α)で拡大した領域(Hα×Wα)のフレームバッファとして現表示データ107aが描画生成されている状態で、当該現表示データ107aを前記クライアント装置20の表示画面サイズ(H×W)に合わせた1/αにスケーリングして縮小するもので、このようにクライアント装置20の表示画面サイズ(H×W)に合わせて単純縮小された全体表示のスケーリング後表示データ107bは、タイル分割判定回路11dにより得られるタイル分割数に応じてタイル分割され、比較圧縮回路11eによって当該分割されたタイル単位で前回描画時にクライアント装置20へ転送表示させた前表示データ107cの同タイル領域と比較され、その画像データに差分のあるタイル領域(実質書き換えられた領域)の画像データのみ圧縮、そして暗号化回路11fによって暗号化され、暗号化データ107eとしてその表示領域上での位置やサイズそして圧縮方式などの情報が付加されてクライアント装置20へ転送される。
なお、クライアント装置20が暗号化処理された表示データに対応していない場合には、前記暗号化回路11fによる暗号化処理前、つまり前記比較圧縮回路11eによる圧縮処理直後のタイル単位の表示データがアクセラレータ処理データ107dとしてVRAM107に記憶され、前記同様にその表示領域上での位置やサイズそして圧縮方式などの情報が付加されてクライアント装置20へ転送される。
一方、クライアント装置20からの全体表示の指定無しに基づいてCPU102によりスケーリングOFFのデータがスケーリングON/OFFレジスタC1に格納された場合には、前記スケーリング処理による全体表示の縮小処理は行われない。そして、クライアント装置20の表示画面サイズ(H×W)を仮想表示倍率(α)で拡大した領域(Hα×Wα)のフレームバッファにて描画生成された表示データのうち、当該クライアント装置20からの指定位置とその表示画面サイズ(H×W)に対応した領域部分の表示データが切り出されて現表示データ107aとされ、前記タイル分割判定回路11d、比較圧縮回路11e、暗号化回路11fでの各処理を経て、前表示データ107cとその画像データに差分のある分割タイル領域(実質書き換えられた領域)の画像データのみ圧縮・暗号化され、その表示領域上での位置やサイズそして圧縮方式などの情報が付加されてクライアント装置20へ転送される。
次に、前記構成のシン・クライアント・システムのサーバ装置10のCPU102によって実行される制御処理について説明する。
図6は、前記シン・クライアント・システムのサーバ装置10における全体の動作制御を示すフローチャートである。
サーバ装置10の電源が立ち上げられると、回路各部の作業用メモリやレジスタのクリア処理など、初期設定が行われる(ステップS1)。
クライアント装置20a,20b,…から本サーバ装置10に対して接続・認証要求信号が受信されると(ステップS2)、当該接続要求元のクライアント装置20a,20b,…に対するID,パスワードなどの確認照合に基づいた認証処理が実行される(ステップS3)。
これに伴い、接続要求元のクライアント装置20a,20b,…からその表示画面サイズ(表示構造:H×W)、表現可能色数、仮想表示倍率(最大倍率:α)、圧縮方式の指定情報、暗号化の有無情報が受信され、アクセラレータ回路101内のクライアント管理情報メモリ11Mに対して保存される(ステップS4)。
そして認証OKと判断されると(ステップS5)、この認証OKと判断されたクライアント装置20a,20b,…のIDが発行される(ステップS6)。
すると、接続認証されたクライアント装置20に対応して前記クライアント管理情報メモリ11Mに保存された表示画面サイズ(表示構造:H×W)および仮想表示倍率(最大倍率:α)に従って、当該表示画面サイズ(H×W)の仮想表示倍率(α)倍を表示データの生成領域とするフレームバッファがVRAM107内の現表示データ107aの領域に確保され(ステップS7)、アクセラレータ回路101内のスケーリング回路11cやタイル分割判定回路11d、比較圧縮回路11e、暗号化回路11fにおける各種レジスタが初期設定される(ステップS8)。
そして、接続クライアント別の転送サーバ処理(図7参照)のスレッドが起動されて、クライアント装置20a,20b,…からの種々の要求に応じたアプリケーションの起動・実行、およびこれに伴うデータの生成・送受信処理が行われる(ステップSA)。
前記接続処理中のクライアント装置20から切断(スレッド終了)の要求が受信されると(ステップS9)、当該切断要求元のクライアント装置20との間でのデータの生成・送受信処理が終了される(ステップS10)。
この後、本サーバ装置10のシャットダウンなどに伴って各クライアント装置20a,20b,…に対してのサービス終了(プロセス終了)が判断されると(ステップS11)、接続中の全てのクライアント装置20a,20b,…との間でのデータの生成・送受信処理が終了される(エンド)。
図7は、前記サーバ装置10でのサーバ処理に伴うクライアント別転送サーバ処理(ステップSA)を示すフローチャートである。
この転送サーバ処理では、接続中のクライアント装置20a,20b,…からの種々の要求に応じたアプリケーションが起動・実行されて、これに伴うデータの生成・送受信処理が行われる際に、CPU102によって当該クライアント装置20に応じた表示データの描画命令が発生されると(ステップA1)、該クライアント装置20から本サーバ装置10に対して、前記フレームバッファ(107a)に描画生成された表示データの全領域(Hα×Wα)をクライアント装置20の表示画面サイズ(H×W)にスケーリングして転送表示させるための全体表示命令が受信されているか、または同描画生成された表示データの全領域(Hα×Wα)のうちクライアント装置20からの指定位置で且つその表示画面サイズ(H×W)に合わせてそのまま切り出した指定部分の表示データを転送表示させるためのリアル表示命令が受信されているかが判断される(ステップA2)。
ここで、クライアント装置20から本サーバ装置10に対してリアル表示命令が受信されていると判断されると(ステップA2(NO))、前記フレームバッファ(107a)に描画生成された表示データの全領域(Hα×Wα)のうち当該クライアント装置20からの指定位置(X,Y:始点座標)を基準にその表示画面サイズ(H×W)に合わせてそのまま切り出されたクライアント表示領域(x,y:w×h)の表示データについて、前表示データ107cとして記憶されている前回の表示描画時における同クライアント表示領域(x0,y0:w0×h0)の表示データとの比較により(ステップA3)、その画像変化部分の矩形領域(x2,y2:w2×h2)が算出される(ステップA4)。
そして、前回の表示描画時に切り出されたクライアント表示領域(x0,y0:w0×h0)と今回切り出されたクライアント表示領域(x,y:w×h)とが同一の領域である、つまりリアル表示として命令された表示領域が同じ領域であると判断されると(ステップA5(YES))、前記画像変化部分の矩形領域(x2,y2:w2×h2)に対応する今回描画の表示データのみ現表示データ107aとしてVRAM107にコピーされる(ステップA6)。
一方、前回の表示描画時に切り出されたクライアント表示領域(x0,y0:w0×h0)と今回切り出されたクライアント表示領域(x,y:w×h)とが異なる領域である、つまりリアル表示として命令された表示領域がスクロールによって異なる領域になったと判断されると(ステップA5(NO))、その今回切り出されたスクロール後のクライアント表示領域(x1,y1:w1×h1)(=x,y:w×h)に対応する表示データが現表示データ107aとしてVRAM107にコピーされる(ステップA7)。
すなわち、前記リアル表示命令によるステップA2〜A7の処理では、クライアント装置20の表示画面サイズ(H×W)をその仮想表示倍率(α)で拡大した、例えばVGAサイズの表示領域(hα×wα)に生成描画した表示データのうち、当該クライアント装置20からの指定位置座標(x,y)を基準にその表示画面サイズ(h×w)に合わせてそのまま切り出した表示データについて、前回生成描画した同切り出し領域の表示データと画像変化のあった矩形領域の表示データを、アクセス元のクライアント装置20へ転送して書き換え表示させるべき更新表示データとしてVRAM107内の現表示データ107aにコピーする。
一方、前記ステップA2において、クライアント装置20から本サーバ装置10に対し、前記フレームバッファ(107a)に描画生成された表示データの全領域(Hα×Wα)を該クライアント装置20の表示画面サイズ(H×W)にスケーリングして転送表示させるための全体表示命令が受信されていると判断されると(ステップA2(YES))、その全描画領域(x,y:hα×wα)の表示データがそのまま現表示データ107aとしてVRAM107にコピーされる(ステップA8)。
すると、アクセラレータ回路101内のクライアント管理情報メモリ11Mに保存された仮想表示倍率(α)がそのスケーリング回路11c内のスケーリング率設定レジスタC2にセットされると共に(ステップA9)、スケーリングON/OFFレジスタC1に対してスケーリングONフラグがセットされ(ステップA10)、当該スケーリング回路11cによるスケーリングの開始が指示される(ステップA11)。
これにより、スケーリング回路11cでは、クライアント装置20の表示画面サイズ(H×W)のα(仮想表示倍率)倍としてフレームバッファ(107a)に描画生成された表示データの全描画領域(x,y:hα×wα)が、スケーリング率αに従って1/αに縮小スケーリングされ、クライアント装置20の表示画面サイズ(h×w)に合わせた全体表示の表示データが生成されると共に、当該クライアント装置20へ転送して書き換え表示させるべき更新表示データとしてVRAM107内のスケーリング後表示データ107bに格納される。
このように、前記リアル表示命令に従ったソフト処理によって、例えばVGAサイズの表示領域(hα×wα)にて描画された表示データからクライアント装置20の表示画面サイズ(h×w)に合わせてそのまま切り出されて生成された更新表示データが現表示データ107aとしてVRAM107内に格納されるか(ステップA2〜A7)、または前記全体表示命令に従ったスケーリング回路11cの動作によって、例えばVGAサイズの表示領域(hα×wα)にて描画された表示データからクライアント装置20の表示画面サイズ(h×w)に合わせて縮小スケーリングされて生成された更新表示データがスケーリング後表示データ107bとしてVRAM107内に格納されると(ステップA2→A8〜A11)、前記現表示データ107aとして格納されたリアル表示の更新表示データか、または前記スケーリング後表示データ107bとして格納された全体表示の更新表示データを基に、アクセラレータ回路101(タイル分割判定回路11d、比較圧縮回路11e、暗号化回路11f)での転送すべき表示データの生成処理が開始される。
すると前記更新表示データは、タイル分割判定回路11dにより得られるタイル分割数に応じてタイル分割され、比較圧縮回路11eによって当該分割されたタイル単位で前回描画時にクライアント装置20へ転送表示させた前表示データ107cの同タイル領域と比較され、その画像データに差分のあるタイル領域(実質書き換えられた領域)の画像データのみ圧縮されてアクセラレータ処理データ107dとしてVRAM107内に記憶される。さらに、クライアント管理情報メモリ11Mに暗号化ONのフラグがセットされている場合には暗号化回路11fによって暗号化処理され、暗号化データ107eとしてVRAM107内に記憶される(ステップA12,A13)。
こうして、分割されたタイル単位で画像データに差分のあるタイル領域の更新表示データのみ圧縮・暗号化処理された暗号化データ107eは、アクセラレータ処理終了データとして読み込まれ、クライアント装置10の表示領域(h×w)上での位置情報(座標)、圧縮方式、そして転送先のクライアントIDをヘッダ付加した1タイルの転送データとして通信パケットが生成され(ステップA14)、このヘッダが示すIDのクライアント装置20へ送信転送される(ステップA15)。なお、このステップA15において、1タイル(T)の全画像ピクセルが透過色データSに変換された画像タイルについては、クライアント装置20への送信転送処理は行わない。
前記例では、リアル表示命令及び全体表示命令に対応した前表示データ107cの格納領域をVRAM107内に共通に設けた構成で説明した。他の例として、リアル表示命令及び全体表示命令に対応した前表示データの格納領域をVRAM107内に夫々独立して設けてもよい。このような構成とすることにより、アクセラレータ回路101における比較圧縮回路11eは、リアル表示命令の場合はリアル表示命令に対応した格納領域より前表示データを読み出して現表示データと比較し、また、全体表示命令の場合は全体表示命令に対応した格納領域より前表示データを読み出して現表示データと比較し、前表示データと差分のあるタイル領域の画像データのみを圧縮してアクセラレータ処理データ107dとしてVRAM107内に記憶させる。この構成によれば、全体表示とリアル表示を相互に切り替えた直後であっても、現表示データと前表示データとの差分を検出することができ、クライアント装置20へ転送するデータ量を少なくすることができる。なお、この場合、クライアント装置20にも全体表示及びリアル表示の場合で夫々前画面の表示データが記憶されているものとする。
そして、前記ステップA14において読み込まれたアクセラレータ処理終了データについて、分割された全てのタイルデータについての通信パケット生成・転送処理が終了していないと判断された場合には(ステップA16(NO))、当該アクセラレータ処理終了データの次データの読み込み、通信パケット生成処理が繰り返され(ステップA14)、順次同ヘッダが示すIDのクライアント装置20への送信転送処理が行われる(ステップA15)。
この後、全てのアクセラレータ処理終了データについてクライアント装置20への送信転送処理が行われたと判断されると(ステップA16(YES))、接続中のクライアント装置20から接続終了の信号が受信されたか否か判断される(ステップA17)。
そして、接続終了ではないと判断される状態では、前記ステップA1からの処理に戻り、次の表示データの描画生成待機状態となり(ステップA17→A1)、接続終了であると判断された場合には、当該接続要求元のクライアント装置20との間でのデータの生成・送受信処理が終了される(ステップA18)。
図8は、前記サーバ装置10での転送サーバ処理に伴うリアル表示命令に応じた転送表示データの生成手順イメージ(その1)を示す図である。
この図8におけるリアル表示命令に応じた転送表示データの生成手順イメージ(その1)では、例えばVGAサイズのフレームバッファ(hα×wα)上でクライアント装置20の表示画面サイズ(h×w)とその表示指定位置(x,y)に応じて切り出される現描画領域(x,y:h×w)が前描画領域(x0,y0:h0×w0)と同位置で当該現描画領域の画像データ全域が書き換えられている場合を示すもので、この場合、フレームバッファ(hα×wα)から切り出された現描画領域(x,y:h×w)の表示データがそのまま現描画データとして書き込まれ、アクセラレータ回路101によって分割タイル単位での前描画データとの差分抽出、差分無しピクセルデータの書き換え不要を示す透過色データへの変換、そしてその暗号化処理が行われ、クライアント装置20へ転送されてその表示装置(h×w)27に表示される(図13(A)→図13(B)参照)。
図9は、前記サーバ装置10での転送サーバ処理に伴うリアル表示命令に応じた転送表示データの生成手順イメージ(その2)を示す図である。
この図9におけるリアル表示命令に応じた転送表示データの生成手順イメージ(その2)では、例えばVGAサイズのフレームバッファ(hα×wα)上でクライアント装置20の表示画面サイズ(h×w)とその表示指定位置(x,y)に応じて切り出される現描画領域(x,y:h×w)が前描画領域(x0,y0:h0×w0)と同位置で当該現描画領域の一部領域(x2,y2:h2×w2)が書き換えられている場合を示すもので、この場合、フレームバッファ(hα×wα)から切り出された現描画領域(x,y:h×w)のうち画像変化の一部領域(x2,y2:h2×w2)の表示データが現描画データとして書き込まれ、アクセラレータ回路101によって分割タイル単位での前描画データとの差分抽出、差分無しピクセルデータの書き換え不要を示す透過色データへの変換、そしてその暗号化処理が行われ、クライアント装置20へ転送されてその表示装置(h×w)27上の同部分領域(x2,y2:h2×w2)が書き換えられて表示される。
図10は、前記サーバ装置10での転送サーバ処理に伴うリアル表示命令に応じた転送表示データの生成手順イメージ(その3)を示す図である。
この図10におけるリアル表示命令に応じた転送表示データの生成手順イメージでは、例えばVGAサイズのフレームバッファ(hα×wα)上でクライアント装置20の表示画面サイズ(h×w)とその表示指定位置(x,y)に応じて切り出される現描画領域(x1,y1:h1×w1)が前描画領域(x0,y0:h0×w0)からスクロール指示されて異なる表示領域となり当該スクロールされた現描画領域の画像データ全域が書き換えられている場合を示すもので、この場合、フレームバッファ(hα×wα)から切り出された現描画領域(x1,y1:h1×w1)の表示データがそのまま現描画データとして書き込まれ、アクセラレータ回路101によって分割タイル単位での前描画データとの差分抽出、差分無しピクセルデータの書き換え不要を示す透過色データへの変換、そしてその暗号化処理が行われ、クライアント装置20へ転送されてその表示装置(h×w)27に表示される(図13(A)→図13(C)参照)。
図11は、前記サーバ装置10での転送サーバ処理に伴う全体表示命令に応じた転送表示データの生成手順イメージを示す図である。
この図11における全体表示命令に応じた転送表示データの生成手順イメージでは、例えばVGAサイズのフレームバッファ(hα×wα)に描画生成された表示データが、スケーリング回路11cによってクライアント装置20の表示画面サイズ(h×w)までスケーリング縮小されて現描画データとして書き込まれ、アクセラレータ回路101によって分割タイル単位での前描画データとの差分抽出、差分無しピクセルデータの書き換え不要を示す透過色データへの変換、そしてその暗号化処理が行われ、クライアント装置20へ転送されてその表示装置(h×w)27に表示される(図13(D)→図13(E)参照)。
図12は、前記サーバ装置10での転送サーバ処理に伴い生成されたアクセラレータ処理終了データの転送データフォーマットである。
前記サーバ装置10での転送サーバ処理に伴い生成されたアクセラレータ処理終了データの通信パケットは、その圧縮(エンコード)方式、パケット通し番号(No.)、始点位置情報(X,Y)、画像サイズ(H,W)、エンコード情報、透過色コード、データ長、そして転送先のクライアントIDをヘッダ付加した転送データとして作成され、このヘッダが示すIDのクライアント装置20へ送信転送される。
図13は、前記サーバ装置10での転送サーバ処理に伴うクライアント装置20に対しての表示データ生成状態を示す図であり、同図(A)(B)(C)は当該クライアント装置20からのリアル表示命令に従った表示データ生成状態を示す図、同図(D)(E)は当該クライアント装置20からの全画面表示命令に従った表示データ生成状態を示す図である。
したがって、前記構成のサーバ装置10によれば、接続中のクライアント装置20から表示画面サイズ(H×W)、およびその表示画面サイズ(H×W)を例えばVGAサイズとするための仮想表示倍率(α)の各クライアント管理情報(11M)が受信されると、図13(A)に示すように、当該クライアント装置20の表示画面サイズ(H×W)を仮想表示倍率(α)で拡大した描画領域(hα×wα:フレームバッファ)に対して動作中のアプリケーション処理によって生成された表示データGが描画される。そして、前記クライアント装置20から表示位置情報(x,y)を伴うリアル表示命令が受信されている場合には、前記描画領域(hα×wα)上の表示位置情報(x,y)を始点座標とする前記クライアント装置20の表示画面サイズ(H×W)に対応した領域の表示データG1がそのまま切り出され、アクセラレータ処理の後、同クライアント装置20へ転送されて、図13(B)(あるいはスクロール後の図13(C))に示すように表示出力され、また、前記クライアント装置20から全体表示命令が受信されている場合には、図13(D)に示すように、前記描画領域(hα×wα)上の全体表示データがスケーリング回路11cによって前記クライアント装置20の表示画面サイズ(H×W)に合わせてスケーリング(縮小)され、アクセラレータ処理の後、同クライアント装置20へ転送されて、図13(E)に示すように全画面表示データGsとして表示出力されるので、接続されたクライアント装置20がPDAなどであってその表示画面サイズがVGAサイズより縦横とも大幅に狭い場合でも、表示画面内を例えば表表示画面におけるメニューアイコンやツールバーなど、ユーザ操作のための領域が広く占有することなく、本来のデータ表示領域(セル領域)を出来るだけ広く見易く表示できるよう表示データを生成してクライアント装置20へ転送することができる。
図14は、前記シン・クライアント・システムにおけるクライアント装置20の回路構成を示すブロック図である。
クライアント装置20は、コンピュータとしてのCPU22を備え、このCPU22には、バス23を介してROM24、RAM25が接続されると共に、アクセラレータ回路21が接続される。このアクセラレータ回路21にはVRAM26が搭載され、このVRAM26に対して前記サーバ装置10から転送されて書き込まれた描画データが表示装置27に出力されて表示される。
また、CPU22には、バス23を介してキーボードなどの入力部28、外部記憶HDD(Hard Disk Drive)29、認証デバイス,バーコードリーダー,CCDカメラ,プリンタ,無線デバイスなどの各種の外部機器30を接続するためのUSB/パラレル/シリアルインターフェース31、前記サーバ装置10との送受信制御部(有線/無線)32が接続される。
入力部28には、前記サーバ装置10におけるアプリケーション処理により描画され本クライアント装置20へ転送される表示データを、その表示データの描画領域全体を当該クライアント装置20の表示画面サイズ(H×W)に合わせてスケーリングして転送させるための全体表示命令用の「全体表示」キー28a、表示データの描画領域全体のうちユーザ操作により指定された位置で当該クライアント装置20の表示画面サイズ(H×W)に対応した分の描画領域をそのまま切り出して転送させるためのリアル表示命令用の「リアル表示」キー28bが備えられる。
CPU22は、ROM24に予め記憶されているシステムプログラムに従ってRAM25を作業用メモリとし回路各部の動作を制御するもので、入力部28からのキー入力信号や送受信制御部32を介して受信されるサーバ装置10からのアプリケーション応答信号,転送描画データなどに応じて前記システムプログラムが起動・実行される。
このクライアント装置20において、前記サーバ装置10におけるアプリケーションプログラムを実行させて生成した種々のデータは、適宜、外部記憶HDD29に読み込ませて記憶させ、また生成転送された表示用の描画データは、アクセラレータ回路21においてデコードされてVRAM26に書き込まれ表示装置27で表示出力される。
このクライアント装置20に対してサーバ装置10により描画生成されて転送されてくる表示用の描画データは、当該描画データの更新に応じてそれ以前の描画データと異なる(差分のある)部分の描画データのみ抽出されてその描画位置情報と共に転送されるので、こちらのクライアント装置20側では、アクセラレータ回路21において圧縮や暗号化がデコードされた表示用描画データをその描画位置情報に従いVRAM26内のフレームバッファ26aに書き込んで書き換えするだけで表示の更新が行われる。
図15は、前記シン・クライアント・システムのクライアント装置20における全体の動作制御を示すフローチャートである。
電源が投入されると、各種の初期設定処理が行われ、例えば当該クライアント装置20の表示機能に関しサーバ装置10へ通知するための管理情報[領域指定情報(幅W、高さH、表示可能色数、仮想表示倍率(最大倍率α))、エンコード情報(圧縮有無/暗号化有無)]が設定される(ステップJ1)。
すると、サーバ装置10に対して前記クライアント管理情報と共に接続・認証の要求信号が送信される(ステップJ2,J3)。
そして、サーバ装置10から認証OKの信号が通知されると共に発行されたクライアントIDが受信されて当該サーバ装置10との接続情報処理が確立されると(ステップJ4→J5)、図16における接続サーバ装置10との通信制御処理(ステップJK)に移行され、本クライアント装置20からの種々の要求に応じたサーバ装置10でのアプリケーションの起動・実行、およびこれに伴うデータの生成・送受信処理が行われる。
この後、ユーザ操作に応じてサーバ装置10との接続終了が指示されるか、または該サーバ装置10から接続終了信号が受信されると(ステップJ6)、当該サーバ装置10との間での通信制御処理が終了される(ステップJ7)。
図16は、前記クライアント装置20におけるサーバ装置10との通信制御処理(ステップJK)を示し、同図(A)はクライアント装置20の通信制御処理を示すフローチャート、同図(B)はそのサーバ装置10に対しての送信プロトコルである。
サーバ装置10との接続が確立されると、イベント発生待ちの状態になる(ステップK1)。
サーバ装置10のアプリケーション処理により例えばVGAサイズで生成描画される表示データについて、本クライアント装置20の表示画面サイズ(H×W)にスケーリングした全体表示を行わせるために、入力部28における「全体表示」キー28aが操作されると(ステップK3)、送信プロトコルとして本クライアントIDに対応付けするイベント種類として全体表示命令を示す“全体”がセットされ(ステップK4→K8)、表示画面サイズ(H×W)および仮想表示倍率(α)のデータを付加した送信データが生成されて(ステップK15)パケット通信処理され(ステップK16)、転送命令によってサーバ装置10へ送信される(ステップK17)。
また、サーバ装置10のアプリケーション処理により例えばVGAサイズで生成描画される表示データについて、そのうちユーザ任意の位置で本クライアント装置20の表示画面サイズ(H×W)に合わせて切り出したリアル表示を行わせるために、入力部28における「リアル表示」キー28bが操作されると(ステップK3→K4)、送信プロトコルとして本クライアントIDに対応付けするイベント種類としてリアル表示命令を示す“リアル”がセットされ、表示位置を示す始点座標(X,Y)およびクライアント装置20の表示画面サイズ(H×W)および仮想表示倍率(α)のデータを付加した(ステップK5〜K7)送信データが生成されて(ステップK15)パケット通信処理され(ステップK16)、転送命令によってサーバ装置10へ送信される(ステップK17)。
そして、入力部28にけるキーボードが操作されることでそのキーコードがCPU22に受信されると(ステップK9→K10)、送信プロトコルとして本クライアントIDに対応付けするイベント種類として“Key”がセットされ、受信されたキーコードのデータを付加した送信データが生成されて(ステップK15)パケット通信処理され(ステップK16)、転送命令によってサーバ装置10へ送信される(ステップK17)。
また、入力部28にけるマウス/タッチパネルが操作されることでCPU22において表示画面上の指定座標が検出されたり、左右ホイールのクリック信号が受信されたり、あるいは上下左右方向へのスクロール信号が受信されたりすると(ステップK11→K12)、送信プロトコルとして本クライアントIDに対応付けするイベント種類として“Mouse”や“スクロール”がセットされ、前記指定座標を表すX,Y座標や左右クリックのデータあるいはスクロール方向のデータを付加した送信データが生成されて(ステップK15)パケット通信処理され(ステップK16)、転送命令によってサーバ装置10へ送信される(ステップK17)。
また、USB/パラレル/シリアルインターフェース31を介して各種の外部機器が接続されることでその外部機器からのデータがCPU22に受信されると(ステップK13→K14)、この受信されたデータがプロトコル変換されて送信データとして生成されると共に(ステップK15)パケット通信処理され(ステップK16)、転送命令によってサーバ装置10へ送信される(ステップK17)。
さらに、前記サーバ装置10から送信転送された表示用の描画データがネットワークN(LAN)を介して受信されると(ステップK2)、アクセラレータ回路21において、TCP−IPのプロトコルヘッダが解析され暗号化データである場合には(ステップK18)復号化されると共に(ステップK19)、指定の圧縮方式に応じて解凍処理される(ステップK20)。
そして、前記受信デコードされた表示用描画データの表示位置を示す座標および領域サイズが取得され(ステップK21)、これに従いVRAM26内の表示用フレームバッファ26aの対応する領域が書き換えられる(ステップK22)。
すると、前記アクセラレータ回路21において表示命令が出力され、VRAM26に書き込まれた表示用の描画データに基づき表示画面データの更新が行われる(ステップK23)。
これにより、クライアント装置20から表示位置情報(x,y)を伴うリアル表示命令が送信された場合には、図13(A)で示したように、サーバ装置10において、仮想表示倍率(α)に従って生成描画された例えばVGAサイズの描画領域(hα×wα)の表示データ(G)から表示位置情報(x,y)を始点座標とする当該クライアント装置20の表示画面サイズ(H×W)に対応した領域の表示データ(G1)がそのまま切り出されて、図13(B)あるいは(C)で示したようにクライアント装置20へ転送表示され、また、クライアント装置20から全体表示命令が送信された場合には、図13(D)で示したように、サーバ装置10において、前記描画領域(hα×wα)上の全体表示データ(G)が当該クライアント装置20の表示画面サイズ(H×W)に合わせてスケーリング(縮小)され、図13(E)で示したようにクライアント装置20へ転送表示されるので、クライアント装置20がPDAなどであってその表示画面サイズがVGAサイズより縦横とも大幅に狭い場合でも、表示画面内を例えば表表示画面におけるメニューアイコンやツールバーなど、ユーザ操作のための領域が広く占有することなく、本来のデータ表示領域(セル領域)を出来るだけ広く見易く表示できるようになる。
なお、前記実施形態では、クライアント装置20a,20b,…によって予め設定された仮想表示倍率(α)に従って、サーバ装置10により当該クライアント装置20の表示画面サイズ(H×W)を仮想表示倍率(α)倍にした、例えばVGAサイズの描画領域を設定して表示データを描画生成する構成としたが、仮想表示倍率(α)は各クライアント装置20a,20b,…のユーザによって任意に設定する構成としてもよく、あるいはサーバ装置10において、前記VGAサイズなど一定の大きさの描画領域に拘らず、クライアント装置20a,20b,…の表示画面サイズ(H×W)を所定の倍率で拡大して設定した描画領域に表示データを描画生成する構成としてもよい。
前記実施形態において記載したサーバ装置10による各処理の手法、すなわち、図6のフローチャートに示す全体動作制御処理、図15のフローチャートに示すクライアント別転送サーバ処理等の各手法は、何れもコンピュータに実行させることができるプログラムとして、メモリカード(ROMカード、RAMカード等)、磁気ディスク(フロッピディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の外部記録媒体に格納して配布することができる。そして、サーバ装置10のコンピュータ(CPU102)は、この外部記録媒体に記憶されたプログラムを記憶装置(110)に読み込み、この読み込んだプログラムによって動作が制御されることにより、前記実施形態において説明したクライアント装置20からの全体表示命令やリアル表示命令に応じた描画更新時の表示用描画データの生成処理およびその転送処理を実現し、前述した手法による同様の処理を実行することができる。
また、前記各手法を実現するためのプログラムのデータは、プログラムコードの形態として通信ネットワーク(LAN)N上を伝送させることができ、この通信ネットワーク(LAN)Nに接続されたコンピュータ装置(プログラムサーバ)から前記のプログラムデータを送受信制御部111を介して取り込んで記憶装置(110)に記憶させ、前述したクライアント装置20からの全体表示命令やリアル表示命令に応じた描画更新時の表示用描画データの生成処理およびその転送処理を実現することもできる。
なお、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。