專利名稱:高速緩存方法
技術領域:
本發明涉及高速緩存方法,并且特別涉及用于弱功能(thin)客戶機服務器計算機系統的高速緩存方法。
背景技術:
弱功能客戶機服務器計算機系統是其中計算機應用程序安裝在服務器設備上而不安裝在客戶設備上的計算機系統。允許客戶設備利用弱功能客戶機顯示協議(也稱為遠程幀緩沖技術)遠程運行這些應用程序。該弱功能客戶機顯示協議是計算機程序,包括裝載在服務器設備上的一部分和裝載在客戶設備上的另一部分。客戶程序是所謂的弱功能程序,因為它具有小的碼尺寸并因而要求相對少的客戶設備的資源(存儲器和處理能力)。此系統允許相對簡單的、便宜的客戶設備接入非常強大的服務器服務。
一個這樣的弱功能客戶機顯示協議是虛擬網絡計算(VNC)并且包括彼此通信的弱功能服務器程序“VNC服務器”和弱功能客戶程序“VNC瀏覽器(VNC viewer)”,因此客戶設備傳送命令給服務器設備,該服務器設備在所謂的更新區域中處理這些命令并且生成更新信息或幀緩沖數據。這是客戶設備上屏幕更新所必需的基本單元,它可以采取視窗的形式。更新區域被從服務器設備傳送到弱功能客戶設備。有效地,該協議的顯示側命令客戶設備將長方形的像素數據放在客戶機屏幕上的給定x,y位置上。
弱功能客戶機服務器的計算機系統具有的問題是具有在服務器和客戶設備之間傳送的相當大的數據量,并且這能夠在系統中導致延遲,特別地在從該服務器設備檢索數據的客戶設備中導致延遲。
對于不同的數據碼型,使用不同的編碼算法并且也通過目標認知高速緩存方法(object aware cache method),已獲得從弱功能服務器到弱功能客戶機的更有效的幀緩沖數據的傳輸,諸如在1996年3月16日由Citrix Systems的“Independent Computing ArchitectureTechnical Paper”和Adaptive Internet Protocol(自適應網際協議)中所描述的。但是,這些方法是軟件平臺相關的,并因而取決于在計算機上運行的操作系統,如果不修改是無法普遍采用的。諸如VNC的非目標認知協議是優選的。
為了在因特網環境中在設備之間更有效的通信,已經提出了高速緩存方法,但是這些方法不能容易地應用到弱功能客戶機服務器系統,因為因特網和弱功能客戶機服務器計算機系統的特性是完全不同的。例如,代理服務器上的高速緩存減少了接入到環球信息網(WorldWide Web)的感覺到的響應時間。它們選擇用于高速緩存的文件的子集,但是必須采取額外的步驟以保持高速緩存文件的一致性。
發明內容
本發明的一個目的是改進弱功能客戶機服務器計算機系統的效率以及加速數據傳送。本發明由獨立權利要求來限定;從屬權利要求定義有利的實施例。
最好,消息包括標題,所述標題包括含有相應于命令“高速緩存”、“未高速緩存”、“已高速緩存”(cached)之一的指示的高速緩存指示字段和包含高速緩存地址的序列識別字段,高速緩存地址諸如匹配鍵碼(key)的地址或者合適的新地址。
鍵碼包括壓縮的編碼的更新-顯示數據的碼字的組合長度。壓縮編碼最好利用離散余弦變換(DCT),特別是利用2D-DCT,將數據從空間域轉移到頻域。
一個實施例還包括例如通過JPEG編碼和熵編碼來量化該數據。
根據本發明的優選實施例,檢查編碼數據的尺寸,例如,該編碼數據的高度和寬度的維數,如果該尺寸小于預定級別,則不進行高速緩存。尺寸還可以用作初步比較步驟。如果發現鍵碼之間的對應關系,則由客戶設備顯示在本地已高速緩存的數據。如果發現一個以上的對應關系,則比較碼字。如果已從客戶設備中丟失數據,則可以發回一個重發消息給服務器設備。
利用在服務器中進行的比較以及用于每個更新區域以簡化計算的幀內編碼,本發明能夠提供方便的、快速的和相對經濟有效的方式來濾除非侯選區域。
為了更好地理解本發明和表示如何可以實施本發明,現在將參考附圖,其中
圖1是應用于弱功能客戶機服務器計算機系統的服務器和客戶機的本發明方法的流程圖;圖2是說明為圖1的方法生成區域鍵碼的方法的流程圖;圖3是在圖2的區域鍵碼生成中數據塊壓縮的示意示例;圖4表示與圖1-3的方法一起使用的消息格式;圖5說明對于第一種實例情況的本發明方法的一部分;圖6說明對于第二種實例情況的本發明方法的一部分;圖7說明對于第三種實例情況的本發明方法的一部分;圖8說明本發明方法的一個示例;圖9說明本發明方法的另一個示例。
具體實施例方式
在圖1的流程圖中,運行弱功能服務器程序。這是典型“VNC服務器”,但是其它類似的程序也是有效的。進行下列步驟在服務器SE中A.更新-顯示數據或者更新區域具有高度H和寬度W并且表示為源數據1。
B.編碼源數據1,以生成碼字,如將結合圖2和3所述的。
C.檢查編碼的源數據的寬度和高度。
D.如果寬度和高度小于閾值,則消息標題的高速緩存字段被設置為“未高速緩存”(如果更新非常小,從高速緩存中沒有獲得益處。)。
這個情形表示在圖5中,如將在稍后描述的。
E.序列識別SID被設置為空(NULL)并且隨后發送更新消息給客戶機,參見在下面敘述的步驟P。
G.如果寬度和高度大于閾值,則消息標題的高速緩存字段被設置為“高速緩存”。
這個情形表示在下面描述的圖6中。
H.區域鍵碼RKEY代表通過組合碼字的尺寸、使用下面相對于圖2敘述的方法生成的數據/圖像特征標記(signature)。
I.服務器隨后檢查以前是否已經高速緩存任何更新的區域以及高速緩存區域的寬度和高度是否匹配更新的區域。
J.如果在那之前未高速緩存更新的區域,則服務器將獲得下一個可用的序列識別SBD,而且相應地通過在消息標題中設置SID字段和設置消息標題的高速緩存字段為“高速緩存”來格式化將發送給客戶機的消息。
K.服務器保持消息(包括SID、RKEY和壓縮數據的碼字)的副本,并且傳送該消息給客戶機,參見下面的步驟P。
L.如果在那之前已高速緩存了更新的區域,則在服務器相對匹配高速緩存鍵碼檢查RKEY時將意識到此。
M.如果沒有識別匹配區域鍵碼RKEY,則重復步驟J,并且利用代表更新區域的壓縮數據將新消息發送給客戶機。
N.如果只發現一個匹配,則高速緩存字段被設置為“已高速緩存”并且相應的SID被發送給客戶機,而不發送壓縮數據的碼字。
這表示在下面將描述的圖7中。
O.如果發現一個以上的區域鍵碼RKEY匹配,則將壓縮數據的新碼字與在本地高速緩存器中的碼字進行比較,并且在識別匹配碼字時,將高速緩存字段設置為“已高速緩存”,而且發送該相應的SID而不發送壓縮數據的碼字。
P.從服務器中發送該消息。
在客戶機CL中Q.由客戶機接收該消息。
R.客戶機首先檢查該消息的高速緩存字段,以確定是否高速緩存這個更新的區域。
S.如果高速緩存字段被設置為“高速緩存”,客戶機保持更新區域的碼字的副本并且解碼碼字,而且移到步驟V。
T.如果高速緩存字段被設置為“不高速緩存”,則客戶機解碼該消息中的碼字,但是不保存它,并且移到步驟V。
U.如果高速緩存字段被設置為“已高速緩存”,則客戶機從客戶機高速緩存中檢索高速緩存的碼字并且解碼這些碼字,而且移到步驟V。
V.顯示解碼的更新區域。
在圖2的上部使用編碼表示從更新的區域源數據1中生成區域鍵碼6,而圖2的下面部分表示編碼數據的后續解碼。源數據1(即,代表更新區域特征標記的數據或者圖像)通過正向離散余弦變換FDCT 2進行壓縮并且在3進行量化。然后在4對它進行熵編碼并且在5組合這些碼字的尺寸以生成鍵碼6。然后將此復制到服務器的高速緩沖存儲器7,并將序列識別指示符8遞增1。這表示在圖1的頂部。
在9通過熵解碼在適當時候解碼該數據,在10去量化,并且在11解壓縮,以形成解碼數據12。每次遞增序列生成器13,以指向高速緩存14的不同位置。
圖3表示原始的源圖像數據的編碼,原始的源圖像數據被分組為塊31,包括在8×8格柵(grid)中的64個兩位數的格柵。正向DCT處理過程用于將該塊解壓縮為64個正交信號(稱為DCT系數(coefficient))。一個系數在兩維中具有零頻率,并且這被稱為DC系數。其它的63個系數是AC系數。在丟棄視覺上無意義的信息和量化以及熵處理之后,結果是壓縮的碼字32,包括總數為35比特的一串二進制字。在對于源圖像使用8比特壓縮的這個例子中,壓縮比率大約是15∶1。
圖4代表從服務器傳送到客戶機的消息的格式。它具有由高速緩存字段21(“高速緩存”,“不高速緩存”或者“已高速緩存”)和序列識別字段SID 22形成的消息標題20。它還具有消息字段23,包括壓縮消息的碼字。
圖5說明在服務器命令“不高速緩存”時的情況下圖4的消息的組成。這個組成例如可能在更新區域的維數低于閾值時出現,以使得它不值得高速緩存。在標題中高速緩存字段21被設置為“不高速緩存”和SID字段22被設置為“空”,并且壓縮碼字附加在消息字段23中。
圖6說明在服務器命令“高速緩存”時的情況下圖4的消息組成。
這個組成在更新區域的維數高于該閾值時出現。在標題中高速緩存字段21被設置用于“高速緩存”和SID字段22被設置為“N”,并且壓縮碼字附在消息字段23中。
圖7說明在服務器命令“已高速緩存”時的情況下圖4的消息組成。
在這種情況下,消息標題20包括高速緩存字段21中的指示“已高速緩存”和SID字段22中的“M”,并且不附上壓縮碼字,因為在這個情形下它們可以在客戶設備上從本地高速緩存中進行檢索,因此節省服務器和客戶機之間的傳輸頻帶寬度并且改進系統的速度和效率。
圖8說明在時間線上系統如何對由圖5至7表示的每一種情況作出反應。
在服務器設備中生成第一更新區域數據1a,和在①中維數低于閾值,并且服務器命令“不高速緩存”。生成圖5中所示的消息并且通過計算機網絡將此消息發送給客戶設備,而且相應地在客戶機顯示器上顯示更新區域。這個情況標記為實例I。
短時間之后生成第二更新區域數據1b。更新區域1b的維數高于閾值,并且區域鍵碼RKEY被生成以及與服務器的高速緩存緩沖器的內容進行比較(參見圖2中的7)。這個情況表示為②。在⑦,以前未高速緩存,并因此將消息“高速緩存”與該數據一起發送給客戶機。這個情況標記為實例II。在④,在高速緩存7中找到相應健碼。檢索SID并且在帶有適當SID但是沒有該數據的消息中將消息“已高速緩存”發送給客戶設備,以節省傳輸空間與時間。這個情況標記為實例III。
典型地SID號碼從1至999循環,以節省存儲器空間,同時保證存儲最新的更新區域數據。
如果只有兩個高速緩存緩沖器是可用的,則圖9的情形適用并且保持循環表以高速緩存最近2個更新區域。例如,消息A是情況II消息“高速緩存”(因為沒有以前的高速緩存)。因此高速緩存緩沖器14在第一高速緩存位置25中存儲A。然后生成消息B,并且這是實例I消息“不高速緩存”,因此不存儲B,而且第二高速緩存位置26是空的。消息C是另一個實例II消息“高速緩存”,并因此現在C存儲在高速緩存位置26中。消息D也是實例II,并因此D代替位置25中的A。
隨后又接收消息C,這是實例III消息“已高速緩存”,因為服務器檢測到與已高速緩存的消息C相對應。因此,給客戶設備的消息包括用于位置26的SID,以便從本地高速緩存14中檢索相應的數據。同樣地,在重發消息D時,找到對應關系并且實例III消息命令客戶機從本地高速緩存緩沖器14中檢索位置25中的數據。
應該注意,上述實施例說明而不是限定本發明,并且本領域的技術人員將能夠設計許多替代實施例而不偏離所附權利要求書的范圍。在權利要求書中,放置在括弧中的任何參考記號不應該解釋為限制權利要求。單詞“包括”不排除在權利要求中列出的單元或者步驟之外的單元或者步驟的存在。在單元前的單詞“一個”不排除存在多個這樣的單元。本發明能夠利用包括幾個不同的單元的硬件來實現,并且能夠利用適當編程的計算機來實現。在列舉幾個裝置的設備權利要求中,這些裝置之中的幾個裝置能夠利用同一個硬件產品來實現。唯一的事實是在互相不同的從屬權利要求中敘述了某些措施手段,這并不表明這些措施手段的組合不能有利使用。
權利要求
1.一種從弱功能服務器設備向弱功能客戶設備發送更新-顯示數據的方法,所述方法包括以下步驟生成代表將要發送的新的更新-顯示數據(1)的鍵碼(6);比較新生成的鍵碼與先前生成的一個鍵碼或多個鍵碼;和編輯將發送給客戶設備的消息,其中根據比較步驟的結果來設置所述消息,以便向客戶設備識別是否已高速緩存、將高速緩存或將不高速緩存所述更新-顯示數據(1)。
2.根據權利要求1的方法,其中所述消息包括標題(20),所述標題(20)包括高速緩存指示字段(21)和序列識別字段(22)。
3.根據權利要求2的方法,其中所述高速緩存指示字段包含相應于以下多個命令之一的指示“高速緩存”;“不高速緩存”和“已高速緩存”,并且所述序列識別字段(22)包括高速緩存地址。
4.根據權利要求3的方法,其中當所述命令是“已高速緩存”時,所述高速緩存地址是匹配鍵碼的地址。
5.根據權利要求3的方法,其中當所述命令是“高速緩存”時,所述高速緩存地址是新地址。
6.根據權利要求1的方法,其中通過變換編碼所述更新-顯示數據(1)來生成所述鍵碼。
7.根據權利要求6的方法,其中所述鍵碼包括編碼的更新-顯示數據(1)的所有碼字的組合長度。
8.根據權利要求2的方法,還包括以下初始步驟檢查所述更新-顯示數據(1)的尺寸;和在所述更新-顯示數據(1)的尺寸小于預定值時,將所述高速緩存指示字段設置為“不高速緩存”。
9.根據權利要求1的方法,其中所述比較步驟還包括首先比較新的更新-顯示數據(1)的尺寸和已高速緩存的更新-顯示數據的尺寸。
10.根據權利要求8的方法,其中所述更新-顯示數據(1)的尺寸包括所述數據(1)的寬度和高度。
11.根據權利要求1的方法,還包括以下步驟如果在高速緩存數據中識別一個以上的匹配鍵碼,比較新的更新-顯示數據(1)與已高速緩存的更新-顯示數據的碼字。
12.根據權利要求2的方法,其中如果序列識別字段(22)標記從客戶機存儲器中丟失數據,所述客戶設備發送傳送碼字消息給所述服務器。
13.一種弱功能客戶機服務器計算機系統,適于執行權利要求1的方法。
14.一種計算機軟件,用于允許處理器執行權利要求1的方法。
15.一種數據載體,包括根據權利要求14的計算機軟件。
16.一種計算機系統,包括服務器設備,具有高速緩沖存儲器;序列識別發生器,用于識別高速緩沖存儲器地址;源數據編碼器;鍵碼發生器,用于生成代表編碼的源數據的鍵碼;比較器,用于比較生成的鍵碼與一個或多個已高速緩存的鍵碼;消息發生器,鏈接到所述比較器,用于根據所述比較器的輸出來生成不同的消息;發射機,用于發送消息給客戶設備;所述客戶設備具有接收機,用于從服務器接收消息;高速緩沖存儲器;消息閱讀器;和顯示器。
全文摘要
一種從弱功能服務器設備向弱功能客戶設備發送更新-顯示數據(1)的方法,該方法包括以下步驟生成代表將發送的新的更新-顯示數據(1)的(短)鍵碼;比較新生成的鍵碼與先前生成的一個鍵碼或者多個鍵碼;編輯將發送給客戶設備的消息;該消息包括標題和代表更新-顯示數據的碼字,其中該標題根據比較步驟的結果進行設置,以便向客戶機識別是否已高速緩存、將高速緩存或將不高速緩存該更新-顯示數據。最好使用DCT編碼。使用這種方法的弱功能客戶機服務器計算機系統更快并且更有效。
文檔編號H04N7/24GK1547851SQ02816722
公開日2004年11月17日 申請日期2002年8月16日 優先權日2001年8月27日
發明者M·-C·陳, C·-F·霍, M -C 陳, せ 申請人:皇家飛利浦電子股份有限公司