欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)壓縮的制作方法

文檔序號(hào):6516141閱讀:238來(lái)源:國(guó)知局
專利名稱:數(shù)據(jù)壓縮的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及數(shù)據(jù)壓縮領(lǐng)域,尤其涉及用于數(shù)據(jù)壓縮的系統(tǒng)、服務(wù)器、方法和計(jì)算機(jī)可讀媒質(zhì)。
背景技術(shù)
用戶能夠以日益增長(zhǎng)的各種方式訪問(wèn)越來(lái)越多的數(shù)據(jù)。例如,用戶可訪問(wèn)網(wǎng)站,并接收音樂(lè)會(huì)事件的廣播,即網(wǎng)播(webcast)。另外,用戶可使用無(wú)線電話通過(guò)無(wú)線網(wǎng)絡(luò)訪問(wèn)游戲和其它應(yīng)用程序。為向用戶提供這一數(shù)據(jù),數(shù)據(jù)可通過(guò)網(wǎng)絡(luò)從服務(wù)器流向客戶機(jī)以供客戶機(jī)呈現(xiàn)。用戶然后可與所呈現(xiàn)的數(shù)據(jù)交互,如通過(guò)觀看影片、聽歌曲等等。
流傳送數(shù)據(jù)向用戶提供了增加的功能,使得用戶可快速地接收數(shù)據(jù)。如果沒有流傳送,如果需要在由客戶機(jī)輸出之前從服務(wù)器接收所有的數(shù)據(jù)量,則用戶會(huì)在客戶機(jī)上呈現(xiàn)數(shù)據(jù)時(shí)經(jīng)受延遲。通過(guò)流傳送數(shù)據(jù),可減少用戶所遇到的延遲。數(shù)據(jù)流傳送可用于提供數(shù)據(jù)的“實(shí)時(shí)”呈現(xiàn)。
為流傳送數(shù)據(jù),一般使用分組以流傳送或連續(xù)的方式將數(shù)據(jù)從服務(wù)器發(fā)送,以當(dāng)數(shù)據(jù)到達(dá)時(shí)在客戶機(jī)上呈現(xiàn),這與在包括數(shù)據(jù)的整個(gè)文件在客戶機(jī)上可用之前不呈現(xiàn)數(shù)據(jù)相反。流傳送可用于各種類型的數(shù)據(jù),如視頻數(shù)據(jù)、音頻數(shù)據(jù)、媒體數(shù)據(jù)等等。視頻數(shù)據(jù)流提供了“移動(dòng)圖像”的序列,這些圖像被發(fā)送,并在到達(dá)時(shí)被呈現(xiàn)。類似地,音頻數(shù)據(jù)流提供了當(dāng)音頻數(shù)據(jù)到達(dá)時(shí)播放的聲音數(shù)據(jù)。媒體數(shù)據(jù)流包括音頻和視頻數(shù)據(jù)兩者。
可壓縮流傳送數(shù)據(jù)以有效地將數(shù)據(jù)通過(guò)網(wǎng)絡(luò)從服務(wù)器流到客戶機(jī),并提高流數(shù)據(jù)的效用。例如,通信上將服務(wù)器耦合至客戶機(jī)的網(wǎng)絡(luò)可具有有限的帶寬。有限帶寬會(huì)限制在任何一個(gè)時(shí)刻從服務(wù)器傳遞到客戶機(jī)的數(shù)據(jù)量,并因此限制了在通過(guò)網(wǎng)絡(luò)流傳送數(shù)據(jù)時(shí)向客戶機(jī)提供的功能。例如,由于有限的帶寬,流傳送的視頻數(shù)據(jù)可被限制到較低的分辨率,而如果使用了更高帶寬的網(wǎng)絡(luò),情況則相反。因此,期望較高分辨率流視頻數(shù)據(jù)的用戶可能被強(qiáng)迫購(gòu)買較高帶寬的連接。通過(guò)壓縮流數(shù)據(jù),可在任何一個(gè)時(shí)刻通過(guò)低帶寬網(wǎng)絡(luò)傳輸更多的數(shù)據(jù),并因此提高流數(shù)據(jù)的效用。
然而,當(dāng)壓縮數(shù)據(jù)時(shí),會(huì)遇到另外的問(wèn)題,這與壓縮整個(gè)數(shù)據(jù)集相反,如塊壓縮。例如,為一次壓縮整個(gè)影片,壓縮例程可檢查構(gòu)成該影片的整個(gè)數(shù)據(jù)量,以壓縮數(shù)據(jù)。壓縮例程可提供遍及構(gòu)成該影片的數(shù)據(jù)所包括的常見序列的表示。然而,可提供流數(shù)據(jù)用于數(shù)據(jù)的“實(shí)時(shí)”呈現(xiàn)。因此,可能有有限量的時(shí)間來(lái)分析流數(shù)據(jù),以提供客戶機(jī)對(duì)數(shù)據(jù)的實(shí)時(shí)呈現(xiàn)。另外,在任何一個(gè)時(shí)候可能有有限量的數(shù)據(jù)可用于壓縮以提供公共序列的表示。
因此,對(duì)數(shù)據(jù)壓縮有不斷的需求。

發(fā)明內(nèi)容
描述了數(shù)據(jù)壓縮。在一個(gè)示例性實(shí)施例中,壓縮模塊由服務(wù)器執(zhí)行,以壓縮流到客戶機(jī)的數(shù)據(jù),如響應(yīng)于來(lái)自客戶機(jī)的遠(yuǎn)程訪問(wèn)請(qǐng)求而發(fā)送的數(shù)據(jù)、終端服務(wù)環(huán)境中的數(shù)據(jù)等等。壓縮模塊采用包括先前流到客戶機(jī)的數(shù)據(jù)的歷史緩沖區(qū)。當(dāng)被執(zhí)行時(shí),壓縮模塊將要流傳送的數(shù)據(jù)中的序列與歷史緩沖區(qū)中的一個(gè)或多個(gè)序列相比較,以找出匹配的序列。為在歷史緩沖區(qū)中定位序列,采用了具有多個(gè)條目的查找表,每一個(gè)條目都可由多個(gè)索引之一發(fā)現(xiàn)。每一條目涉及歷史緩沖區(qū)中是否有對(duì)應(yīng)的索引,如果有,則還引用歷史緩沖區(qū)中該對(duì)應(yīng)索引的一個(gè)或多個(gè)位置。因此,壓縮模塊可使用要流傳送的數(shù)據(jù)中的一初始序列作為查找表中的索引,以找出歷史緩沖區(qū)中的匹配索引。數(shù)據(jù)中的該匹配序列然后可用描述歷史緩沖區(qū)的匹配序列的位置和長(zhǎng)度的表示來(lái)替換,以形成流到客戶機(jī)的經(jīng)壓縮的數(shù)據(jù)。
在另一實(shí)現(xiàn)中,一種方法包括接收指示用于通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)從服務(wù)器提供的終端服務(wù)傳遞到客戶機(jī)的資源的可用性的反饋,以及響應(yīng)于該反饋調(diào)整用于壓縮數(shù)據(jù)的壓縮例程的一個(gè)或多個(gè)參數(shù)。
在另外一個(gè)實(shí)現(xiàn)中,一種方法包括在服務(wù)器處從客戶機(jī)接收對(duì)通過(guò)服務(wù)器遠(yuǎn)程訪問(wèn)可用應(yīng)用程序或文件的請(qǐng)求。確定用于響應(yīng)于該請(qǐng)求通過(guò)網(wǎng)絡(luò)傳遞數(shù)據(jù)的資源的可用性?;诖_定的可用性調(diào)整用于壓縮數(shù)據(jù)的壓縮例程的一個(gè)或多個(gè)參數(shù)。


圖1是示出數(shù)據(jù)通過(guò)網(wǎng)絡(luò)從服務(wù)器流到客戶機(jī)的環(huán)境的一個(gè)示例性實(shí)現(xiàn)的說(shuō)明。
圖2是更詳細(xì)地示出圖1的服務(wù)器和客戶機(jī)的示例性實(shí)現(xiàn)的說(shuō)明。
圖3是描述配置用于流傳送數(shù)據(jù)供壓縮的示例性過(guò)程的流程圖。
圖4是描述一個(gè)示例性過(guò)程的流程圖,其中,被配置成包括對(duì)要流傳送的分組的引用的圖3的查找表用于壓縮分組。
圖5是描述一個(gè)示例性過(guò)程的流程圖,其中,圖4的已壓縮分組由客戶機(jī)通過(guò)執(zhí)行一解壓模塊來(lái)解壓。
圖6是一個(gè)示例性實(shí)現(xiàn)的說(shuō)明,其中,在歷史緩沖區(qū)中使用一滑動(dòng)窗以包括要流傳送的數(shù)據(jù)。
圖7是描述其中進(jìn)一步優(yōu)化流數(shù)據(jù)的壓縮的一個(gè)示例性實(shí)現(xiàn)的過(guò)程的流程圖。
圖8是一個(gè)示例性實(shí)現(xiàn)的說(shuō)明,其中,優(yōu)化序列的壓縮以進(jìn)一步優(yōu)化數(shù)據(jù)壓縮。
圖9是一個(gè)示例性實(shí)現(xiàn)的系統(tǒng)的說(shuō)明,其中,響應(yīng)于從系統(tǒng)接收的返回動(dòng)態(tài)地調(diào)整壓縮。
在所討論的實(shí)例中,相同的標(biāo)號(hào)用于參照相同的結(jié)構(gòu)和組件。
具體實(shí)施例方式
綜述描述了數(shù)據(jù)壓縮。在一個(gè)示例性實(shí)現(xiàn)中,由服務(wù)器執(zhí)行一壓縮模塊,以壓縮用于從服務(wù)器流到客戶機(jī)的數(shù)據(jù)。該壓縮模塊采用一包括先前流到客戶機(jī)的數(shù)據(jù)的歷史緩沖區(qū)。當(dāng)被執(zhí)行時(shí),該壓縮模塊將要流傳送的數(shù)據(jù)中的序列與歷史緩沖區(qū)中的一個(gè)或多個(gè)序列進(jìn)行比較,以找出匹配序列。為在歷史緩沖區(qū)中定位序列,采用一具有多個(gè)條目的查找表。每一條目可使用多個(gè)索引中的特定一個(gè)來(lái)發(fā)現(xiàn)。每一條目涉及對(duì)應(yīng)的索引是否位于歷史緩沖區(qū)中,并且如果是,則還引用對(duì)應(yīng)索引在歷史緩沖區(qū)中的一個(gè)或多個(gè)位置。因此,壓縮模塊可使用要流傳送的數(shù)據(jù)中的一初始序列,作為查找表中的索引以找出條目。以這一方式,壓縮模塊可快速地定位具有初始序列的歷史緩沖區(qū)中的每一位置,而無(wú)需為要流傳送的數(shù)據(jù)中的每一序列單獨(dú)比較歷史緩沖區(qū)中的每一序列。
如果匹配索引的對(duì)應(yīng)條目引用了多個(gè)位置,則壓縮模塊通過(guò)將每一位置上具有匹配索引的序列與包括初始序列的數(shù)據(jù)中的序列進(jìn)行比較,來(lái)導(dǎo)出匹配序列。數(shù)據(jù)中的該匹配序列然后可用描述歷史緩沖區(qū)中匹配序列的位置和長(zhǎng)度的表示來(lái)表示。然后可形成包括該表示的已壓縮數(shù)據(jù)。已壓縮數(shù)據(jù)然后流到客戶機(jī)??蛻魴C(jī)通過(guò)使用同樣包括先前從服務(wù)器流到客戶機(jī)的數(shù)據(jù)的歷史緩沖區(qū)來(lái)解壓已壓縮數(shù)據(jù)??蛻魴C(jī)通過(guò)執(zhí)行解壓模塊,使用由該表示指示的長(zhǎng)度和位置找出客戶機(jī)歷史緩沖區(qū)中的匹配序列,以重建該數(shù)據(jù)。以這一方式,提供了一種無(wú)損數(shù)據(jù)壓縮技術(shù),使得可在沒有丟失數(shù)據(jù)的情況下壓縮和解壓數(shù)據(jù)。例如,可使用該數(shù)據(jù)壓縮技術(shù)壓縮和解壓視頻數(shù)據(jù),而不會(huì)丟失數(shù)據(jù)部分,由此保留了視頻數(shù)據(jù)的分辨率。
示例性環(huán)境圖1是示出其中數(shù)據(jù)通過(guò)網(wǎng)絡(luò)106從服務(wù)器102流到客戶機(jī)104的環(huán)境100的示例性實(shí)現(xiàn)的說(shuō)明。客戶機(jī)104可用各種方法來(lái)配置。例如,客戶機(jī)104可被配置為能夠通過(guò)網(wǎng)絡(luò)通信的設(shè)備,如所示的臺(tái)式機(jī)、移動(dòng)站、娛樂(lè)設(shè)施、機(jī)頂盒、無(wú)線電話等等。客戶機(jī)104也可涉及操作客戶機(jī)104的個(gè)人和/或?qū)嶓w。換言之,客戶機(jī)104可描述包括用戶和/或機(jī)器的邏輯客戶機(jī)。盡管示出了一個(gè)客戶機(jī)104,然而多個(gè)客戶機(jī)可通信上耦合至網(wǎng)絡(luò)106。網(wǎng)絡(luò)106被示出為因特網(wǎng),并也可包括各種其它網(wǎng)絡(luò),如內(nèi)聯(lián)網(wǎng)、有線或無(wú)線電話網(wǎng)絡(luò)等等。
服務(wù)器102被配置成通過(guò)網(wǎng)絡(luò)106將數(shù)據(jù)流到客戶機(jī)104。服務(wù)器102可提供各種流數(shù)據(jù),以供客戶機(jī)104呈現(xiàn)。在一個(gè)實(shí)現(xiàn)中,服務(wù)器102可提供流到客戶機(jī)104的音樂(lè)會(huì)的網(wǎng)播。當(dāng)由客戶機(jī)104呈現(xiàn)時(shí),用戶可觀看并傾聽網(wǎng)播。在另一實(shí)現(xiàn)中,客戶機(jī)104可接收包括從服務(wù)器102流出的歌曲的數(shù)據(jù),以供客戶機(jī)104輸出。
在另外一個(gè)實(shí)現(xiàn)中,服務(wù)器102也可提供用于遠(yuǎn)程應(yīng)用程序執(zhí)行的終端服務(wù)。例如,服務(wù)器102可包括多個(gè)應(yīng)用程序108(1)、……、108(n)、……、108(N),其中,“n”可以是從2到“N”的任何整數(shù)。應(yīng)用程序108(1)-108(N)中的每一個(gè)在服務(wù)器102上執(zhí)行。服務(wù)器102通過(guò)網(wǎng)絡(luò)106將屏幕信息流到客戶機(jī)104,該屏幕信息是通過(guò)執(zhí)行應(yīng)用程序108(1)-108(N)來(lái)提供的。例如,屏幕信息可包括由操作系統(tǒng)提供的桌面和顯示涉及文字處理程序的執(zhí)行的信息的窗口的顯示,以及由操作系統(tǒng)和/或文字處理程序提供的音頻信息。
從服務(wù)器102流出的屏幕信息由客戶機(jī)104呈現(xiàn),以供用戶觀看。用戶可與客戶機(jī)104交互,以使用客戶機(jī)104的輸入設(shè)備,如鼠標(biāo)108和/或鍵盤110來(lái)提供輸入。輸入可對(duì)應(yīng)于呈現(xiàn)的屏幕信息,如通過(guò)使用鍵盤110提供的用于文字處理程序的文本輸入。輸入通過(guò)網(wǎng)絡(luò)106從客戶機(jī)104傳遞到服務(wù)器102。當(dāng)由服務(wù)器102接收時(shí),輸入可在執(zhí)行多個(gè)應(yīng)用程序108(1)-108(N)時(shí)使用。例如,文字處理程序可接收用于包括在文檔中的文本輸入,并將屏幕信息流到客戶機(jī)104以說(shuō)明該文檔具有包括的文本。通過(guò)執(zhí)行服務(wù)器102上的應(yīng)用程序108(1)-108(N)并將屏幕信息流到客戶機(jī)104,客戶機(jī)104可訪問(wèn)客戶機(jī)104自身上以其它方式可能不可用的功能。
例如,客戶機(jī)104可被配置成“瘦”客戶機(jī),如具有有限的處理和/或存儲(chǔ)器資源。然而,服務(wù)器102可以是特征豐富的,如通過(guò)具有比客戶機(jī)104更多的處理和/或存儲(chǔ)器資源量。因此,服務(wù)器102可執(zhí)行客戶機(jī)104無(wú)法執(zhí)行和/或由客戶機(jī)104以較慢的方式執(zhí)行的應(yīng)用程序。服務(wù)器102通過(guò)向客戶機(jī)104發(fā)送屏幕信息來(lái)向客戶機(jī)104提供一個(gè)或多個(gè)應(yīng)用程序108(1)-108(N)的執(zhí)行結(jié)果,并通過(guò)網(wǎng)絡(luò)106從客戶機(jī)104接收輸入。以這一方式,由服務(wù)器102提供的功能,如處理資源、存儲(chǔ)器資源和多個(gè)應(yīng)用程序108(1)-108(N)可被提供給否則將會(huì)無(wú)法訪問(wèn)該功能的客戶機(jī)104。
為提供服務(wù)器102和客戶機(jī)104之間通過(guò)網(wǎng)絡(luò)的通信,服務(wù)器102和客戶機(jī)104分別實(shí)現(xiàn)遠(yuǎn)程桌面協(xié)議(RDP)112、114。RDP 112、114被設(shè)計(jì)成如上所述地通過(guò)網(wǎng)絡(luò)連接向應(yīng)用程序108(1)-108(N)提供遠(yuǎn)程顯示和輸入能力。例如,RDP可用于允許攜帶從服務(wù)器102到客戶機(jī)104的設(shè)備通信和呈現(xiàn)數(shù)據(jù)的單獨(dú)的虛擬信道,以及從客戶機(jī)104傳遞到服務(wù)器102的經(jīng)加密的輸入。
RDP 112、114可也通過(guò)在服務(wù)器102和客戶機(jī)104上分別包括壓縮和解壓模塊116、118來(lái)提供帶寬的減少。壓縮模塊116可由服務(wù)器102通過(guò)實(shí)現(xiàn)RDP 112來(lái)執(zhí)行,以在數(shù)據(jù)通過(guò)網(wǎng)絡(luò)106流傳送之前壓縮它。類似地,解壓模塊可由客戶機(jī)104通過(guò)實(shí)現(xiàn)RDP 114來(lái)執(zhí)行,以解壓通過(guò)網(wǎng)絡(luò)106從服務(wù)器102流出的已壓縮數(shù)據(jù)。
當(dāng)被執(zhí)行時(shí),壓縮和解壓模塊116、118分別壓縮和解壓通過(guò)網(wǎng)絡(luò)106流傳送的數(shù)據(jù)。如上所述,流數(shù)據(jù)的壓縮和解壓會(huì)導(dǎo)致一個(gè)獨(dú)特的問(wèn)題,與一次壓縮和解壓整個(gè)數(shù)據(jù)集,即塊壓縮相反。例如,數(shù)據(jù)可“實(shí)時(shí)”地流傳送,使得流傳送數(shù)據(jù)時(shí)所遇到的延遲會(huì)降低數(shù)據(jù)的有用性。壓縮和解壓模塊116、118解決了流數(shù)據(jù)的這一獨(dú)特的問(wèn)題,并由此提供了已壓縮數(shù)據(jù)通過(guò)網(wǎng)絡(luò)106的流傳送,如參考圖3到5更詳細(xì)描述的。
通過(guò)使用終端服務(wù)(TS),客戶機(jī)104可訪問(wèn)安裝在服務(wù)器102上的一個(gè)或多個(gè)應(yīng)用程序108(1)-108(N)、執(zhí)行服務(wù)器102上的應(yīng)用程序、以及在客戶機(jī)104上顯示應(yīng)用程序用戶界面(UI)。由于應(yīng)用程序108(1)-108(N)在服務(wù)器102上執(zhí)行,TS允許客戶機(jī)104利用企業(yè)基礎(chǔ)結(jié)構(gòu)資源,而與客戶機(jī)104是否具有執(zhí)行本地在客戶機(jī)104本身上的資源的硬件和軟件無(wú)關(guān)。
盡管在由服務(wù)器102執(zhí)行多個(gè)應(yīng)用程序108(1)-108(N)的終端服務(wù)環(huán)境中描述了客戶機(jī)104,然而客戶機(jī)104也可執(zhí)行多個(gè)應(yīng)用程序120(1)、……、120(m)、……、120(M)中的一個(gè)或多個(gè)。例如,應(yīng)用程序120(1)-120(M)之一可提供一接口,它結(jié)合RDP 114使用,以呈現(xiàn)供用戶觀看的數(shù)據(jù),并從用戶接收輸入,如從鼠標(biāo)108和/或鍵盤110接收輸入。另外,盡管壓縮和解壓模塊116、118被示出為相應(yīng)的RDP 112、114的一部分,然而壓縮和解壓模塊116、118可被配置成獨(dú)立的軟件組件,它們被執(zhí)行來(lái)分別壓縮和解壓流數(shù)據(jù)。
另外,盡管以下討論的部分描述了終端服務(wù)環(huán)境中壓縮的使用,然而此處所描述的壓縮和解壓技術(shù)也可用于各種其它環(huán)境。例如,壓縮和解壓技術(shù)可用于壓縮遠(yuǎn)程訪問(wèn)環(huán)境中使用的數(shù)據(jù)。遠(yuǎn)程訪問(wèn)描述了從遙遠(yuǎn)的距離訪問(wèn)計(jì)算機(jī)或網(wǎng)絡(luò)的能力。例如,企業(yè)的遠(yuǎn)程辦公室可能期望接入企業(yè)網(wǎng)絡(luò),并使用遠(yuǎn)程訪問(wèn)來(lái)獲取諸如通過(guò)電話網(wǎng)絡(luò)、因特網(wǎng)等對(duì)其上包含的文件和應(yīng)用程序的訪問(wèn)權(quán)限。服務(wù)器102可被配置成具有關(guān)聯(lián)的軟件的遠(yuǎn)程訪問(wèn)服務(wù)器,該軟件被設(shè)立以處理遠(yuǎn)程地尋求接入網(wǎng)絡(luò)的客戶機(jī)。在一個(gè)實(shí)現(xiàn)中,遠(yuǎn)程訪問(wèn)服務(wù)器包括用于安全性的防火墻服務(wù)器,以及用于將遠(yuǎn)程訪問(wèn)請(qǐng)求轉(zhuǎn)發(fā)到網(wǎng)絡(luò)的其它部分的路由器。遠(yuǎn)程訪問(wèn)服務(wù)器也可用作虛擬專用網(wǎng)絡(luò)(VPN)的一部分。
圖2是更詳細(xì)地示出圖1的服務(wù)器102和客戶機(jī)104的示例性實(shí)現(xiàn)200的說(shuō)明。服務(wù)器102包括處理器202和存儲(chǔ)器204。RDP 112及其相應(yīng)的壓縮模塊116被示出為在處理器202上執(zhí)行,并可儲(chǔ)存在存儲(chǔ)器204中。類似地,客戶機(jī)104包括處理器206和存儲(chǔ)器208。RDP 114及其相應(yīng)的解壓模塊118被示出為在處理器206上執(zhí)行,并可儲(chǔ)存在存儲(chǔ)器208中。
要從服務(wù)器102流到客戶機(jī)104的數(shù)據(jù)可從各種來(lái)源提供,如執(zhí)行一個(gè)或多個(gè)應(yīng)用程序108(1)-108(N)、從諸如視頻攝像機(jī)、麥克風(fēng)的輸入設(shè)備210接收,等等。壓縮模塊116在服務(wù)器102的處理器202上執(zhí)行,以壓縮流到客戶機(jī)104的數(shù)據(jù)。數(shù)據(jù)可以分組的形式從服務(wù)器102流到客戶機(jī)104。
例如,壓縮模塊116可接收具有給定長(zhǎng)度的未壓縮序列的數(shù)據(jù),并試圖將該序列向下壓縮成一較小的(現(xiàn)在已壓縮)的長(zhǎng)度,如具有更少的字節(jié)、比特等等。壓縮模塊116可通過(guò)用一種表示來(lái)替換序列而在每一分組的基礎(chǔ)上壓縮數(shù)據(jù),該表示在儲(chǔ)存時(shí)使用比被替換的序列更少的存儲(chǔ)器資源,如更少的字節(jié)。
如果壓縮模塊116能夠壓縮序列,則將已壓縮的數(shù)據(jù)發(fā)送到RDP連接的端點(diǎn),即客戶機(jī)104的RDP 114。解壓模塊118由客戶機(jī)104執(zhí)行,以解壓已壓縮數(shù)據(jù)來(lái)重建該數(shù)據(jù)。在壓縮模塊116無(wú)法壓縮數(shù)據(jù)的情況下,數(shù)據(jù)可以未壓縮形式,即文字序列(literal sequence)流到客戶機(jī)104。壓縮模塊116然后可由服務(wù)器102執(zhí)行,以試圖壓縮后一序列。
用于壓縮數(shù)據(jù)的基本操作涉及要壓縮的數(shù)據(jù)中的序列與已在過(guò)去流傳送的序列之間的模式匹配。為實(shí)現(xiàn)這一目的,壓縮模塊116維護(hù)一包含先前流到客戶機(jī)104的數(shù)據(jù)的歷史緩沖區(qū)212。當(dāng)被執(zhí)行時(shí),壓縮模塊116將要流傳送的數(shù)據(jù)中的序列與包括在已流到客戶機(jī)104的數(shù)據(jù)中的一個(gè)或多個(gè)序列進(jìn)行匹配。要流傳送的數(shù)據(jù)中匹配歷史緩沖區(qū)中的序列的序列然后可通過(guò)使用引用歷史緩沖區(qū)212中的匹配序列的一個(gè)或多個(gè)表示來(lái)表示。該表示可以小于即使用更少的存儲(chǔ)器資源用于儲(chǔ)存要壓縮的實(shí)際序列,即匹配序列的存儲(chǔ)器資源。這有效地減少了包括在流數(shù)據(jù)中的數(shù)據(jù)量。
為說(shuō)明使用歷史緩沖區(qū)212的模式匹配的一個(gè)基本實(shí)例,假定歷史緩沖區(qū)212包含以下序列1 2 7 4 5 6 3 9 4 5 1 4 9 1壓縮模塊116在服務(wù)器102的處理器202上執(zhí)行,并接收以下序列4 5 9 7 4 5 6 3 9 4 5 1 4 6當(dāng)被執(zhí)行時(shí),壓縮模塊116找出歷史緩沖區(qū)中匹配要壓縮的數(shù)據(jù)中的序列的最長(zhǎng)序列,即匹配序列。在本情形中,出現(xiàn)在歷史緩沖區(qū)中的匹配序列在下面用粗體顯示。匹配序列是10字節(jié)長(zhǎng),并從離歷史緩沖區(qū)212的起始處三個(gè)字節(jié)之處開始(從左邊開始,并從零算起)。
4 5 9 7 4 5 6 3 9 4 5 1 4 6由此,當(dāng)被執(zhí)行時(shí),壓縮模塊116可通過(guò)將要流傳送的數(shù)據(jù)表示如下來(lái)產(chǎn)生已壓縮數(shù)據(jù)4 5 9(從離緩沖區(qū)的起始處三個(gè)字節(jié)之處開始的長(zhǎng)度為10字節(jié)的匹配)6通過(guò)引用歷史緩沖區(qū)中的匹配序列,服務(wù)器102不需要重新發(fā)送已流到客戶機(jī)104的序列。由此,壓縮模塊116通過(guò)找出要流傳送的數(shù)據(jù)中的重復(fù)模式,并用當(dāng)通過(guò)網(wǎng)絡(luò)106發(fā)送時(shí)使用更少存儲(chǔ)器資源和帶寬的表示來(lái)替換重復(fù)模式,即匹配序列,來(lái)壓縮要流傳送的數(shù)據(jù)。
為解壓已壓縮數(shù)據(jù),客戶機(jī)104包括解壓模塊118和歷史緩沖區(qū)214。與服務(wù)器102的歷史緩沖區(qū)212一樣,客戶機(jī)104的歷史緩沖區(qū)214儲(chǔ)存先前流傳送的數(shù)據(jù)。因此,當(dāng)由客戶機(jī)104執(zhí)行時(shí),解壓模塊118可通過(guò)使用歷史緩沖區(qū)214來(lái)解壓流到客戶機(jī)104的已壓縮數(shù)據(jù)。繼續(xù)前一實(shí)例,假定客戶機(jī)104接收已壓縮數(shù)據(jù),示出如下4 5 9(從離緩沖區(qū)的起始處三個(gè)字節(jié)之處開始的長(zhǎng)度為10字節(jié)的匹配)6基于包括在已壓縮數(shù)據(jù)中的表示,當(dāng)被執(zhí)行時(shí),解壓模塊118可從歷史緩沖區(qū)214中檢索已壓縮序列,它在下面用粗體顯示4 5 9 7 4 5 6 3 9 4 5 1 4 6由此,解壓模塊118可通過(guò)使用歷史緩沖區(qū)214來(lái)解壓已壓縮的串。
服務(wù)器102也可包括查找表216,以找出歷史緩沖區(qū)212中的匹配序列。例如,查找表216可包括多個(gè)條目,其每一個(gè)可由多個(gè)索引的對(duì)應(yīng)的一個(gè)發(fā)現(xiàn)。每一條目描述歷史緩沖區(qū)212中具有對(duì)應(yīng)索引的每一位置。由此,當(dāng)由服務(wù)器102執(zhí)行時(shí),壓縮模塊116可使用查找表216來(lái)快速定位歷史緩沖區(qū)212中的特定序列。對(duì)查找表216和歷史緩沖區(qū)212的進(jìn)一步討論可參考圖3-4找到。
服務(wù)器102也可使用編碼技術(shù)來(lái)進(jìn)一步壓縮流傳送的數(shù)據(jù),如哈夫曼編碼、算術(shù)編碼、前綴編碼和馬爾可夫編碼。例如,要流傳送的數(shù)據(jù)可包括不匹配歷史緩沖區(qū)中的序列的序列。這些序列可被稱為“文字”序列。通過(guò)使用哈夫曼編碼,數(shù)據(jù)中部分或所有文字序列可被壓縮以進(jìn)一步壓縮數(shù)據(jù)。例如,哈夫曼編碼可用一出現(xiàn)頻率表開始,該表關(guān)系到要被進(jìn)一步壓縮的每一文字序列的出現(xiàn)頻率。出現(xiàn)頻率表可從數(shù)據(jù)本身和/或代表性數(shù)據(jù)中生成。例如,文字序列的出現(xiàn)頻率可通過(guò)處理先前流傳送的分組來(lái)獲取,然后用于處理每一后續(xù)分組。
例如,可向每一文字序列分配一唯一地表示該特定文字序列的可變長(zhǎng)度串,如唯一的前綴。該可變長(zhǎng)度串然后被排列成樹以分別編碼和解碼每一文字序列和表示。為編碼文字序列,在樹中定位要編碼的文字序列。樹中用于定位包括該文字序列的葉的分支用于編碼該文字序列,即,提供該文字序列的表示。例如,樹中用于哈夫曼編碼的每一分支可由一輸出字母表的碼元來(lái)標(biāo)記,如比特0和1,使得編碼是從樹的根到要編碼的文字序列的路徑上的分支標(biāo)記的枚舉。解碼每一表示是通過(guò)基于可變長(zhǎng)度串中每一連續(xù)值從其起點(diǎn)開始通過(guò)分支向下遍歷到樹的葉,直到到達(dá)包括文字序列的樹葉為止來(lái)執(zhí)行的。
盡管描述了文字序列的哈夫曼編碼,然而可使用哈夫曼編碼來(lái)進(jìn)一步壓縮各種數(shù)據(jù)。例如,哈夫曼表218可對(duì)文字222序列和后指針(backpointer)224兩者進(jìn)行編碼。如上所述,文字序列包括未在歷史緩沖區(qū)212中找到的序列。因此,通過(guò)使用哈夫曼表218,文字222序列可被壓縮。哈夫曼表218也可用于壓縮后指針224。后指針224描述了歷史緩沖區(qū)212中的特定序列的位置。例如,如上所述,數(shù)據(jù)中匹配歷史緩沖區(qū)212中的序列的序列,即匹配序列,可被描述為“從離緩沖區(qū)的起始處Y字節(jié)之處開始的長(zhǎng)度為X字節(jié)的匹配”。后指針224描述了歷史緩沖區(qū)212中的匹配序列的位置,即Y字節(jié)。哈夫曼表220可用于壓縮匹配序列的長(zhǎng)度226,即X字節(jié)。
為解壓從服務(wù)器102流到客戶機(jī)104的已壓縮數(shù)據(jù),由客戶機(jī)104使用分別對(duì)應(yīng)于服務(wù)器102的哈夫曼表218、220的哈夫曼表228、230來(lái)執(zhí)行解壓模塊。例如,哈夫曼表228可用于解壓文字232序列和后指針,而哈夫曼表230可用于解壓匹配序列的長(zhǎng)度226。對(duì)哈夫曼表的進(jìn)一步討論可參考圖7找到。
服務(wù)器102和客戶機(jī)104也可包括相應(yīng)的最近使用(LRU)表236、238。LRU表236、238的每一個(gè)可用于基于后指針是否為“最近使用”后指針之一來(lái)進(jìn)一步編碼后指針。例如,LRU表236可用于對(duì)最后四個(gè)后指針的每一個(gè)分別提供LRU表示。LRU表示用作在LRU表236中定位特定后指針的索引。以這一方式,重復(fù)的后指針可被進(jìn)一步壓縮。對(duì)LRU表的進(jìn)一步討論可參考圖7找到。
盡管描述了從服務(wù)器102流到客戶機(jī)104的數(shù)據(jù)的壓縮,然而客戶機(jī)104也可壓縮數(shù)據(jù)并將其流回服務(wù)器102。另外,盡管以下討論描述了與從服務(wù)器102流到客戶機(jī)104的分組有關(guān)的數(shù)據(jù)的壓縮,然而可使用各種數(shù)據(jù)集合來(lái)壓縮數(shù)據(jù),如子分組字節(jié)序列、多分組等等。此外,盡管以下討論描述了字節(jié)序列,然而也可構(gòu)想數(shù)據(jù)中的其它序列,如比特。
示例性過(guò)程圖3是描述示例性過(guò)程300的流程圖,其中,配置流數(shù)據(jù)用于壓縮。在塊302,向歷史緩沖區(qū)212添加數(shù)據(jù)。例如,歷史緩沖區(qū)212可包括多個(gè)分組304(1)、304(2),它們通過(guò)網(wǎng)絡(luò)106從圖2的服務(wù)器102流到和/或?qū)⒁鞯娇蛻魴C(jī)104。在另一實(shí)現(xiàn)中,分組304(1)、304(2)可對(duì)應(yīng)于先前通過(guò)執(zhí)行壓縮模塊116處理的數(shù)據(jù)。
服務(wù)器102接收要流傳送的分組304(3)。當(dāng)由服務(wù)器102執(zhí)行時(shí),壓縮模塊116將分組304(3)添加到歷史緩沖區(qū)212,使得歷史緩沖區(qū)包括流傳送的分組304(1)、304(2)和將要流傳送的分組304(3)。
在塊306,當(dāng)由服務(wù)器102執(zhí)行時(shí),壓縮模塊116更新查找表216以引用添加的數(shù)據(jù),即分組304(3)。查找表216被配置成包括多個(gè)索引308(k),其中,“k”可以是從“1”到“K”的任何索引。每一索引308(k)用于發(fā)現(xiàn)查找表216中多個(gè)條目的相應(yīng)的一個(gè)。每一條目涉及多個(gè)索引308(k)的對(duì)應(yīng)的一個(gè)是否位于歷史緩沖區(qū)212中,并且如果是,引用對(duì)應(yīng)的索引308(k)在歷史緩沖區(qū)212中的一個(gè)或多個(gè)位置。例如,多個(gè)條目之一可引用歷史緩沖區(qū)中具有索引308(k)的對(duì)應(yīng)的一個(gè)的多個(gè)位置。多個(gè)位置的每一個(gè)被示出為通過(guò)使用多個(gè)散列鏈310(k)的對(duì)應(yīng)的一個(gè)來(lái)描述。
例如,索引308(k)被示出為具有“4 5”的序列。查找表216中索引308(k)的對(duì)應(yīng)條目,即散列鏈310(k)描述了歷史緩沖區(qū)212中索引308(k)“4 5”的每一位置。例如,分組304(1)在圖3中被示出為具有以下序列0 1 2 3 4 5 6 7分組304(2)在圖3中被示出為具有以下序列8 9 4 5 3 1 3 0要流到圖2的客戶機(jī)104的分組304(3)在圖3中被示出為具有以下序列4 5 6 7 0 8 2 4分組304(1)-304(3)可以在歷史緩沖區(qū)中順序地排列,使得觀察到以下序列0 1 2 3 4 5 6 7 8 9 4 5 3 1 3 0 4 5 6 7 0 8 2 4散列鏈310(k)描述了歷史緩沖區(qū)212中索引308(k)“4 5”的每一位置。每一位置可用各種方法來(lái)描述。例如,當(dāng)從歷史緩沖區(qū)212的起始開始,以數(shù)字零開始計(jì)數(shù)時(shí),位置可被描述為第一類型序列的位置。散列鏈310(k)描述了歷史緩沖區(qū)212中離序列的起始處16字節(jié)之處的索引308(k)“4 5”的第一位置,如在圖3中由從散列鏈310(k)中的“16”到分組304(3)的起始的虛線示出的。類似地,散列鏈310(k)描述了歷史緩沖區(qū)212中離序列的起始處10字節(jié)的索引308(k)“4 5”的第二位置,由圖3中從散列鏈310(k)中的“10”到分組304(2)的第三字節(jié)的虛線示出。此外,散列鏈310(k)包括歷史緩沖區(qū)中4字節(jié)處的索引308(k)“4 5”的第三且最終的位置。由此,查找表216包括索引310(k),如“4 5”,它具有引用描述索引308(k)在歷史緩沖區(qū)212中的每一位置,如4、10、16的散列鏈310(k)。通過(guò)更新查找表216,當(dāng)被執(zhí)行時(shí),壓縮模塊116可壓縮數(shù)據(jù)以用更有效的方式來(lái)流傳送,如下文參考圖4更詳細(xì)描述的。
盡管在圖3中示出每一索引308(k)具有多個(gè)散列鏈310(k)中對(duì)應(yīng)的一個(gè),然而可能會(huì)有索引308(k)沒有對(duì)應(yīng)的散列鏈的情況。例如,在某些情形下,歷史緩沖區(qū)212可能不包括索引。因此,查找表216中對(duì)應(yīng)于該索引的條目可能不包括散列鏈。換言之,該索引的散列鏈的值為零,即,歷史緩沖區(qū)212中沒有包括該對(duì)應(yīng)索引的位置。另外,盡管多個(gè)散列鏈310(k)的每一個(gè)被示出為包括在查找表216中,一個(gè)或多個(gè)散列鏈310(k)可用各種方式來(lái)提供。例如,查找表216中的每一條目可包括指向一對(duì)應(yīng)散列鏈的指針,該對(duì)應(yīng)散列鏈被配置為與查找表216分離的數(shù)組。
圖4是描述了一個(gè)示例性過(guò)程400的流程圖,其中,被配置成包括對(duì)要流傳送的分組304(3)的引用的圖3的查找表216用于壓縮分組304(3)。在塊402,當(dāng)被執(zhí)行時(shí),壓縮模塊116開始將所添加的數(shù)據(jù),即分組304(3)的當(dāng)前指針404指向圖3的塊302處的歷史緩沖區(qū)212。
在塊406,由服務(wù)器102執(zhí)行壓縮模塊116,以找出查找表216中匹配當(dāng)前指針404處的初始序列的索引。例如,壓縮模塊116可使用當(dāng)前指針404處由兩個(gè)字節(jié),如“4 5”組成的初始序列,以找出多個(gè)索引308(k)中匹配該初始序列的那一個(gè)。在本示例中,查找表216的索引308(k)“4 5”匹配歷史緩沖區(qū)212中當(dāng)前指針404處的初始序列“4 5”。索引308(k)具有查找表216中引用描述歷史緩沖區(qū)212中索引“4 5”308(k)的每一位置的散列鏈310(k)的對(duì)應(yīng)的條目。因此,該對(duì)應(yīng)條目描述了歷史緩沖區(qū)212中初始序列的每一位置。
如果匹配索引308(k)的對(duì)應(yīng)條目引用多個(gè)位置,則將歷史緩沖區(qū)中具有索引308(k)“4 5”的每一位置的序列與數(shù)據(jù)中具有當(dāng)前指針404處的初始序列的序列進(jìn)行比較。例如,當(dāng)前指針404處,即歷史緩沖區(qū)212中的位置“16”處的初始序列“4 5”,以及歷史緩沖區(qū)212中位置“10”的序列具有長(zhǎng)度為“2”,即,每一位置上字節(jié)序列中僅前兩個(gè)字節(jié)相互匹配。如上所述,本示例中,散列鏈310(k)中的位置通過(guò)從歷史緩沖區(qū)212的起始開始,從零開始計(jì)數(shù)來(lái)描述。當(dāng)前指針404處的初始序列和歷史緩沖區(qū)212的位置“4”處的序列具有長(zhǎng)度為“4”。換言之,位置“4”處的字節(jié)序列中的四個(gè)字節(jié)與位置“16”處的序列中的四個(gè)字節(jié)相匹配。以這一方式,從計(jì)算的長(zhǎng)度導(dǎo)出匹配序列“4 5 6 7”。為找出最優(yōu)匹配序列,可將散列鏈310(k)中的每一位置與要壓縮的數(shù)據(jù)的序列,即分組304(3)進(jìn)行比較,直到計(jì)算了最大長(zhǎng)度和/或達(dá)到閾值,如參考圖7更詳細(xì)描述的。為優(yōu)化比較,可首先比較序列中的下一字節(jié),如歷史緩沖區(qū)212中初始序列之后的字節(jié)或索引,因?yàn)閺谋容^中已知,前兩個(gè)字節(jié)匹配?;谛蛄兄小跋乱弧弊止?jié)的比較的另外的討論可以參考圖8找到。
在塊408,用形成壓縮數(shù)據(jù)所使用的表示來(lái)表示匹配序列。例如,分組304(3)中的匹配序列“4 5 6 7”可用描述匹配序列的長(zhǎng)度以及匹配序列在歷史緩沖區(qū)212中的位置的表示來(lái)表示。該表示可被格式化為元組,即具有指定的順序的集合,它被格式化為{后指針,長(zhǎng)度}。后指針可將匹配序列的相對(duì)位置描述為歷史緩沖區(qū)中的偏移。例如,后指針可將相對(duì)位置描述為歷史緩沖區(qū)中匹配序列的絕對(duì)位置和當(dāng)前指針404的絕對(duì)位置之間的偏移。在本示例中,匹配序列的絕對(duì)位置是在歷史緩沖區(qū)212的位置4處,而當(dāng)前指針404的絕對(duì)位置是“16”。因此,匹配序列的相對(duì)位置是離當(dāng)前指針404 12字節(jié)之處。長(zhǎng)度描述了匹配序列的長(zhǎng)度,如“4”。由此,分組304(3)可通過(guò)用表示“{12,4}”表示匹配序列“4 5 6 7”來(lái)壓縮,以形成已壓縮數(shù)據(jù),如分組410。在另一實(shí)現(xiàn)中,匹配序列的位置可根據(jù)匹配序列在歷史緩沖區(qū)中的絕對(duì)位置,如位置4來(lái)提供。
由此,查找表216可提供歷史緩沖區(qū)212中的每一索引308(k)的每一位置。因此,當(dāng)執(zhí)行壓縮模塊116時(shí),可在歷史緩沖區(qū)212中找到初始序列的每一位置,而無(wú)需“步查(walk)”歷史緩沖區(qū)212中的每一個(gè)別比特或字節(jié)來(lái)找出匹配序列。由此,壓縮模塊116可有效地壓縮要流傳送的數(shù)據(jù)。
圖5是描述一個(gè)示例性實(shí)現(xiàn)的過(guò)程500的流程圖,其中,圖4的已壓縮數(shù)據(jù)由客戶機(jī)104通過(guò)執(zhí)行解壓模塊128來(lái)解壓。在塊502,客戶機(jī)104接收已壓縮數(shù)據(jù),如分組410,它從圖4的服務(wù)器120流到客戶機(jī)104。
在塊504,當(dāng)被執(zhí)行時(shí),解壓模塊218找出客戶機(jī)104的歷史緩沖區(qū)214中的匹配序列。客戶機(jī)104的歷史緩沖區(qū)214與服務(wù)器102的歷史緩沖區(qū)212一樣可包括從服務(wù)器102流到客戶機(jī)104的數(shù)據(jù)。由此,客戶機(jī)104的歷史緩沖區(qū)214在形成已壓縮數(shù)據(jù),如分組410之前匹配服務(wù)器102的歷史緩沖區(qū)212。因此,當(dāng)被執(zhí)行時(shí),解壓模塊118可根據(jù)描述服務(wù)器歷史緩沖區(qū)212中的匹配序列的長(zhǎng)度和位置的描述來(lái)找出客戶機(jī)104的歷史緩沖區(qū)214中的匹配序列。繼續(xù)上述示例,在位置“12”處找到匹配序列“4 5 6 7”,它是上述的相對(duì)位置。
在塊506,當(dāng)被執(zhí)行時(shí),解壓模塊118用匹配序列替換該表示,以重建數(shù)據(jù)。例如,表示“{12,4}”用匹配字節(jié)序列“4 5 6 7”來(lái)替換,以形成包括序列“4 5 67 0 8 2 4”的分組508,該序列與在圖4的塊408處壓縮的分組304(3)的序列相匹配。例如,已壓縮數(shù)據(jù)可通過(guò)形成包括替換匹配序列的表示的一組新數(shù)據(jù),來(lái)從要流傳送的數(shù)據(jù)中形成。由此,如本示例中所示的,客戶機(jī)104可解壓已壓縮數(shù)據(jù),而不使用查找表216。因此,即使當(dāng)客戶機(jī)104與服務(wù)器102相比減少了硬件和/或軟件資源,所流傳送的已壓縮數(shù)據(jù)也可由客戶機(jī)104解壓。
在分別參考圖3-4所描述的示例性過(guò)程300、400中,配置查找表216,使得多個(gè)索引308(k)的每一個(gè)包括兩個(gè)字節(jié)。因此,可向查找表216提供描述主機(jī)緩沖區(qū)212中的每一兩字節(jié)序列的65,536個(gè)對(duì)應(yīng)條目。這使初始序列可直接在查找表216中使用。換言之,不轉(zhuǎn)換初始序列以用于查找表216來(lái)發(fā)現(xiàn)對(duì)應(yīng)條目。盡管描述了具有兩個(gè)字節(jié)的索引308(k),然而可使用各種不同的索引長(zhǎng)度,如三字節(jié)序列、四字節(jié)序列等等。
圖6是示例性實(shí)現(xiàn)600的說(shuō)明,其中,在歷史緩沖區(qū)212中使用了滑動(dòng)窗來(lái)包括要流傳送的數(shù)據(jù)。在參考圖3所討論的實(shí)現(xiàn)中,向歷史緩沖區(qū)212添加分組304(3)。然后更新查找表216以引用分組304(3)。然而,歷史緩沖區(qū)212可能具有有限量的存儲(chǔ)。因此,采用了滑動(dòng)窗來(lái)包括歷史緩沖區(qū)212中新添加的數(shù)據(jù)。
例如,歷史緩沖區(qū)212可包括序列602,作為圖3的塊302處添加分組304(3)的結(jié)果。本示例中歷史緩沖區(qū)212可儲(chǔ)存最大24字節(jié)。因此,為添加具有八個(gè)字節(jié)的序列604,執(zhí)行壓縮模塊116以從歷史緩沖區(qū)212的起始處移除具有八個(gè)字節(jié)的序列606,并將剩余的序列移動(dòng)到歷史緩沖區(qū)212的起始處。然后在歷史緩沖區(qū)212的末端添加新序列604。通過(guò)移動(dòng)和添加序列,歷史緩沖區(qū)212然后就具有包括新添加序列604的24字節(jié)序列608。
為更新查找表216以反映該序列608,查找表216中散列鏈310(k)的每一位置可具有一減去的數(shù)字,它對(duì)應(yīng)于歷史緩沖區(qū)212中其每一字節(jié)被移位的字節(jié)數(shù)。例如,在本示例中,每一字節(jié)被移位了8字節(jié),以為新序列604留出空間。因此,由多個(gè)散列鏈310(1)-310(k)描述的每一位置具有從位置中減去的“8”,以反映對(duì)應(yīng)索引308(k)在歷史緩沖區(qū)212中的新位置。為從每一散列鏈310(k)中移除不再包括在歷史緩沖區(qū)212的位置,從散列鏈310(k)中移除其值小于零的任何位置。
圖7是描述一個(gè)示例性實(shí)現(xiàn)中的過(guò)程700的流程圖,其中,流數(shù)據(jù)的壓縮被進(jìn)一步優(yōu)化。在上述參考圖3-4討論的過(guò)程300、400中,查找表216被配置成描述歷史緩沖區(qū)212中對(duì)應(yīng)索引308(k)的每一位置,以有效地在歷史緩沖區(qū)212中定位初始序列。在歷史緩沖區(qū)212中找出匹配序列還可被進(jìn)一步優(yōu)化,以進(jìn)一步提高數(shù)據(jù)壓縮的效率。
例如,在塊702,使用查找表并采用閾值找出匹配序列??刹捎酶鞣N閾值。例如,可在歷史緩沖區(qū)的預(yù)定數(shù)量的位置上執(zhí)行找出匹配序列的比較,以限制所執(zhí)行的比較次數(shù)。通過(guò)限制歷史緩沖區(qū)中與要流傳送的數(shù)據(jù)比較的位置的數(shù)量,可限制位置的大小(如,字節(jié)數(shù))。例如,如上所述,歷史緩沖區(qū)212中的匹配序列的位置可被描述為匹配序列的始端或末端與當(dāng)前指針的始端或末端之間的相對(duì)位置,它可通過(guò)后指針來(lái)描述。因此,通過(guò)限制所執(zhí)行的比較的次數(shù),匹配序列將位于“更靠近”當(dāng)前指針的概率就越大。由此,由于這一“靠近”,位置可具有較小的值,如使用更少的字節(jié)。在另一實(shí)現(xiàn)中,可采用閾值,使得具有超過(guò)預(yù)定閾值的值的位置不被考慮在內(nèi),這可再一次有助于限制位置的值的大小。由此,可采用各種閾值,如要搜索的位置的數(shù)量、描述該位置的值的大小、描述每一定位的序列的長(zhǎng)度的值的大小等等。
在判決塊704,確定描述匹配序列的位置的后指針是否包括在最近使用(LRU)表內(nèi)。LRU表可用于儲(chǔ)存最近使用的后指針。如果匹配序列的后指針包括在LRU表中,則可使用對(duì)應(yīng)于LRU表中該后指針的LRU表示來(lái)對(duì)該匹配序列的后指針進(jìn)行編碼。例如,LRU表的深度可以為4,使得最后四個(gè)最近使用的后指針被儲(chǔ)存在LRU表中。LRU中每一后指針具有映射到LRU表的對(duì)應(yīng)的LRU表示。因此,如果后指針包括在LRU表中,則在塊706,可用來(lái)自LRU表的LRU表示對(duì)后指針進(jìn)行編碼。以這一方式,壓縮模塊可著眼于流數(shù)據(jù)中遇到的其它模式,以進(jìn)一步壓縮數(shù)據(jù)。例如,從服務(wù)器流到客戶機(jī)的圖形數(shù)據(jù)可包括在歷史緩沖區(qū)中的相似偏移處重復(fù)的匹配序列。因此,匹配序列可使用包括匹配序列的長(zhǎng)度和位置的表示來(lái)壓縮,通過(guò)使用LRU表示其位置得以進(jìn)一步壓縮。
如果后指針不包括在LRU表中,則在塊708,可使用圖2的哈夫曼表228來(lái)編碼后指針。哈夫曼編碼可用一出現(xiàn)頻率表來(lái)開始,該表涉及要被進(jìn)一步壓縮的每一后指針的出現(xiàn)頻率。向每一后指針?lè)峙湟晃ㄒ坏乇硎驹摵笾羔樀目勺冮L(zhǎng)度串。例如,每一可變長(zhǎng)度串可具有一唯一的前綴。該串然后可被排列成樹,以分別編碼和解碼每一后指針和表示。為編碼后指針,在樹中定位該后指針。樹中用于定位包括后指針的葉的分支用于編碼該字節(jié)序列,即,提供該后指針的表示。例如,樹中用于哈夫曼編碼的每一分支可由一輸出字母表的符號(hào)來(lái)標(biāo)記,如比特0和比特1,使得編碼是對(duì)從樹根到要編碼的后指針的路徑上的分支標(biāo)記的枚舉。解碼每一表示通過(guò)基于串中的每一連續(xù)值,從起源通過(guò)分支向下跟蹤樹到樹葉,直到達(dá)到包括該后指針的樹葉位置來(lái)執(zhí)行。
在塊710,也使用哈夫曼表來(lái)編碼匹配序列的長(zhǎng)度。例如,圖2的哈夫曼表230可用于編碼歷史緩沖區(qū)中的匹配序列的長(zhǎng)度,以進(jìn)一步壓縮數(shù)據(jù)??扇鐚?duì)后指針?biāo)枋龅哪菢訉?duì)長(zhǎng)度進(jìn)行編碼。
在塊712,匹配序列由被配置成元組的表示來(lái)表示,它包括描述歷史緩沖區(qū)中匹配序列的位置以及匹配序列的長(zhǎng)度的后指針。在塊714,采用一代價(jià)函數(shù)來(lái)確定該表示是否比匹配序列更有效,如當(dāng)儲(chǔ)存時(shí)使用更少的存儲(chǔ)器資源和/或當(dāng)流傳送時(shí)使用更少的帶寬。例如,在某些情形中,匹配序列可能比描述歷史緩沖區(qū)中的匹配序列的位置和長(zhǎng)度的表示使用更少的字節(jié)。因此,可采用代價(jià)函數(shù)來(lái)確定是表示還是匹配序列,即數(shù)據(jù)中的文字序列更有效??刹捎酶鞣N代價(jià)函數(shù)。例如,代價(jià)函數(shù)可使用后指針的大小和匹配序列的長(zhǎng)度的乘積。
在判別塊716,如果表示更有效,則在塊718,通過(guò)用該表示來(lái)表示匹配序列來(lái)形成已壓縮數(shù)據(jù)。在塊720,更新當(dāng)前指針,并處理下一初始序列。例如,當(dāng)前指針可按匹配序列的長(zhǎng)度遞增,并且對(duì)數(shù)據(jù)中的下一序列重復(fù)該過(guò)程。一旦當(dāng)前指針遞增通過(guò)了用于流傳送的數(shù)據(jù),將已壓縮的數(shù)據(jù)流到客戶機(jī)。
在判別塊716,如果表示并非更有效,則在塊722,如先前所描述的使用哈夫曼表來(lái)表示匹配序列。在塊720,按匹配序列中的字節(jié)數(shù)遞增當(dāng)前指針,并且對(duì)下一序列繼續(xù)該過(guò)程。
如上所述,哈夫曼表可進(jìn)一步壓縮要流傳送的數(shù)據(jù)。這些哈夫曼表已分別被描述成對(duì)后指針、長(zhǎng)度和文字序列編碼。在另一實(shí)現(xiàn)中,可組合哈夫曼表。例如,如圖2所示,哈夫曼表228可用于編碼文字232字節(jié)序列和后指針234。為在已壓縮流中區(qū)別后指針和文字序列,可分別向后指針和文字序列提供唯一的前綴,如,每一后指針用比特“0”開始,每一文字序列用比特“1”開始。在另一實(shí)現(xiàn)中,可使用同一的索引代碼,通過(guò)將文字序列和后指針組合成單個(gè)字母表,使得后指針和文字序列具有不同的各自的字符,來(lái)對(duì)這兩者進(jìn)行編碼。
諸如上述哈夫曼表等編碼表可用各種方式來(lái)提供。例如,在一個(gè)實(shí)現(xiàn)中,預(yù)配置編碼表以供壓縮和解壓模塊使用,使得不需要對(duì)要流傳送的數(shù)據(jù)的每一分組計(jì)算編碼表。這可用于提高加密過(guò)程的速度。在另一實(shí)現(xiàn)中,以預(yù)定的間隔動(dòng)態(tài)地計(jì)算編碼表。例如,可在每一次接收預(yù)定數(shù)量的分組時(shí)重新計(jì)算編碼表,以更新編碼表。
圖8是一個(gè)示例性實(shí)現(xiàn)800的說(shuō)明,其中,對(duì)序列的壓縮進(jìn)行優(yōu)化以進(jìn)一步優(yōu)化數(shù)據(jù)壓縮。如上所述,服務(wù)器102包括歷史緩沖區(qū)212和查找表216。服務(wù)器102執(zhí)行壓縮模塊116來(lái)壓縮分組304(3)。從歷史緩沖區(qū)212的起始處到其前兩個(gè)字節(jié)相同的最右邊的序列的起始的偏移可被表示為i1=HASH[HASH_SUM(s)]。在所示的示例中,當(dāng)從歷史緩沖區(qū)212的起始處從零開始計(jì)數(shù)時(shí),“s”等于“4 5”,i1=10。從歷史緩沖區(qū)212的起始處到下一最右邊序列的下一偏移可被表示為i2=NEXT[i1]。在圖8所示的示例中,在散列鏈802(k)中,i2=NEXT[10]=4。類似地,從歷史緩沖區(qū)212的起始處的每一連續(xù)的偏移可在散列鏈802(k)中表示,如i3=NEXT[i2]。在所示的示例中,i3=0,因?yàn)樵跉v史緩沖區(qū)212中沒有包括“4 5”的其它序列。
當(dāng)被執(zhí)行時(shí),壓縮模塊116然后可啟動(dòng)一過(guò)程以壓縮從歷史緩沖區(qū)212中的位置16的“4 5”開始的分組304(3)。壓縮模塊116首先可定位歷史緩沖區(qū)212中具有來(lái)自散列鏈802(k)的位置i1=HASH[HASH_SUM(′4′,′5′)]=10的初始序列“4 5”的序列。該位置被儲(chǔ)存,并且NEXT[16]被設(shè)為10,HASH[HASH_SUM(′4′,′5′)被設(shè)為16。通過(guò)首先比較相應(yīng)序列中的下一順序字節(jié),在當(dāng)前位置(16)和位置i1(10)相互比較序列。在本情形中,將分組304(3)中的第三字節(jié)與分組304(2)中的第五字節(jié)進(jìn)行比較以找出匹配。在所示的示例中,下一順序字節(jié)(即,相應(yīng)的序列中的第三字節(jié))是不同的,因?yàn)镠ISTORY[10+3]=′3′,而HISTORY[16+3]=′6′。因此,預(yù)期匹配序列的長(zhǎng)度保持在2,而預(yù)期匹配序列的位置保持在10。
壓縮模塊116然后可在歷史緩沖區(qū)212中從定位查找表216的位置i2=NEXT[i1]=4處的下一序列。由于i2不等于0,有至少兩個(gè)字節(jié)的匹配。相應(yīng)的字節(jié)“4 5”之后的下一順序字節(jié)被如上所述地比較,得到4字節(jié)的匹配。因此,預(yù)期匹配序列的長(zhǎng)度被設(shè)為4,而預(yù)期匹配序列的位置被設(shè)為4。壓縮模塊116然后可在歷史緩沖區(qū)212中從定位散列鏈802(k)的位置i3=NEXT[i2]=0處的另一序列。由于i3等于0,它是散列鏈802(k)的末端,并且不比較任何其它位置。應(yīng)當(dāng)注意,在一個(gè)實(shí)現(xiàn)中,壓縮模塊116不特別地核查散列鏈802(k)的末端。相反,位置“i0”(圖8所示的示例中為16)處的序列被設(shè)為等于i0。因此,當(dāng)?shù)竭_(dá)散列鏈802(k)的末端(iN=NEXT[i{N-1}]=0)時(shí),核查它,并且壓縮模塊116前進(jìn)到i{N+1}=NEXT[iN]=i0。
通過(guò)比較預(yù)期匹配序列長(zhǎng)度之后的“下一”順序字節(jié),可提高比較的速度。例如,在上述示例中,將HISTORY[i0+匹配長(zhǎng)度]與HISTORY[i0+匹配長(zhǎng)度]進(jìn)行比較,當(dāng)歷史緩沖區(qū)212中沒有其它序列用于比較時(shí),然后執(zhí)行每一相應(yīng)位置上的全序列的比較。換言之,在歷史緩沖區(qū)212中的相應(yīng)位置上的相應(yīng)序列中,將每一字節(jié)相互比較。如果全序列比較成功,則導(dǎo)出匹配序列。以這一方式,可獲得歷史緩沖區(qū)212中的序列比較的可測(cè)量的加速。
圖9是一個(gè)示例性實(shí)現(xiàn)的系統(tǒng)900的說(shuō)明,其中,響應(yīng)于從系統(tǒng)接收的反饋動(dòng)態(tài)地調(diào)整壓縮。由于各種各樣的因素,服務(wù)器102和客戶機(jī)104之間通過(guò)網(wǎng)絡(luò)的通信可以變化。例如,客戶機(jī)104可具有有限的軟件和/或硬件資源,使得客戶機(jī)104花費(fèi)比服務(wù)器102壓縮數(shù)據(jù)更長(zhǎng)的時(shí)間來(lái)解壓數(shù)據(jù)。在另一示例中,服務(wù)器102可向多個(gè)客戶機(jī)提供數(shù)據(jù),并因此客戶機(jī)可能比服務(wù)器102為每一客戶機(jī)壓縮數(shù)據(jù)更快地解壓數(shù)據(jù)。通過(guò)調(diào)整先前描述的一個(gè)或多個(gè)壓縮參數(shù),可優(yōu)化服務(wù)器102和客戶機(jī)104之間的通信,使得可考慮服務(wù)器102和104的硬件和/或軟件資源,以及通信上耦合它們的網(wǎng)絡(luò)106的資源。例如,如果服務(wù)器102正在“等候”向客戶機(jī)104發(fā)送已壓縮數(shù)據(jù),則服務(wù)器102可執(zhí)行附加的壓縮計(jì)算以進(jìn)一步壓縮數(shù)據(jù)。
為調(diào)整RDP 112的壓縮模塊116的參數(shù),獲取反饋??墒褂酶鞣N因素作為反饋來(lái)調(diào)整壓縮參數(shù),如通用網(wǎng)絡(luò)特征。例如,來(lái)自網(wǎng)絡(luò)層的指示由于慢鏈路而存在網(wǎng)絡(luò)反壓力(backpressure)的信息可由壓縮模塊116使用來(lái)指示有額外的時(shí)間來(lái)進(jìn)一步壓縮數(shù)據(jù)。因此,壓縮模塊116可被動(dòng)態(tài)地調(diào)整來(lái)花費(fèi)更多的時(shí)間壓縮數(shù)據(jù),以當(dāng)存在反壓力時(shí)減小最終輸出的大小。
在另一示例中,RDP 112可使用歷史緩沖區(qū)904(1)、……、904(h)、……、904(H)的固定池(pool)902。希望發(fā)送數(shù)據(jù)的較高層通過(guò)向池902請(qǐng)求(分配)緩沖區(qū)(如,緩沖區(qū)904(h))、用數(shù)據(jù)填充緩沖區(qū)904(h)(包括壓縮數(shù)據(jù))、然后將已壓縮的數(shù)據(jù)發(fā)送到客戶機(jī)104來(lái)操作。當(dāng)發(fā)送了緩沖區(qū)的內(nèi)容時(shí),緩沖區(qū)904(h)僅被返回到池902,即“釋放”。這一技術(shù)允許RDP 112,尤其是壓縮模塊116能夠基于花費(fèi)了多久將緩沖區(qū)“釋放”回緩沖區(qū)池,來(lái)獲取關(guān)于是有慢連接還是快連接(如,帶寬量)、慢客戶機(jī)還是快客戶機(jī)(如,客戶機(jī)解壓數(shù)據(jù)所花費(fèi)的時(shí)間量)等的反饋,即反壓力信息。
在又一示例中,如果池902的緩沖區(qū)904(1)-904(H)沒有一個(gè)可用,則可通過(guò)調(diào)整各種壓縮閾值以在壓縮上花費(fèi)更多的時(shí)間,來(lái)調(diào)節(jié)壓縮模塊116以“更努力地工作”。一旦網(wǎng)絡(luò)條件改善,也可調(diào)整壓縮模塊116以執(zhí)行更少的壓縮操作,使得數(shù)據(jù)更快速地被發(fā)送出去。例如,如果網(wǎng)絡(luò)106具有相當(dāng)大量的可用帶寬,則可減少所執(zhí)行的壓縮操作的數(shù)量,因?yàn)椴恍枰獕嚎s來(lái)降低傳遞數(shù)據(jù)所花費(fèi)的時(shí)間。以這一方式,可采用一種動(dòng)態(tài)技術(shù),使得基于波動(dòng)的網(wǎng)絡(luò)條件在運(yùn)行時(shí)改變壓縮參數(shù)。在另一實(shí)現(xiàn)中,使用網(wǎng)絡(luò)速度的初始度量來(lái)調(diào)整參數(shù),這些參數(shù)然后貫穿整個(gè)會(huì)話而使用。
如上所述,用于調(diào)整壓縮模塊116的因素也可考慮服務(wù)器102的硬件和/或軟件資源。例如,可考慮服務(wù)器102的負(fù)載(如,服務(wù)器102正提供多少活動(dòng)會(huì)話、圖2的處理器上的負(fù)載等等),并動(dòng)態(tài)調(diào)整壓縮強(qiáng)度以通過(guò)在壓縮上使用更少的CPU來(lái)補(bǔ)償??杀徽{(diào)整的壓縮參數(shù)的一個(gè)示例是搜索窗大小。例如,搜索窗大小可從64K調(diào)整到512K。更大的窗可提供更多相關(guān)壓縮,但是實(shí)現(xiàn)較慢。因此,如果認(rèn)為網(wǎng)絡(luò)慢時(shí),“切換”到大窗是有利的。
用于調(diào)整壓縮模塊116的因素的另一示例是散列鏈中被遍歷來(lái)查找匹配的鏈接數(shù)量可被調(diào)整。例如,步查更長(zhǎng)的鏈鏈接可提高找到更長(zhǎng)匹配的概率,但是可消耗額外的硬件和/或軟件資源來(lái)執(zhí)行匹配。
用于調(diào)整壓縮模塊116的因素的又一示例是指定用于終止搜索的所找到的最長(zhǎng)匹配的閾值。如上所述,該閾值可用于限制找出匹配所執(zhí)行的搜索的量。這一閾值越大,找到更長(zhǎng)匹配的概率越大,并由此可以進(jìn)一步壓縮數(shù)據(jù)。然而,當(dāng)執(zhí)行這一搜索時(shí),也可使用更大量的處理資源。盡管討論了各種因素和參數(shù),各種其它因素和參數(shù)也可如此處所描述地使用。
盡管以對(duì)結(jié)構(gòu)特征和/或方法動(dòng)作專用的語(yǔ)言描述了本發(fā)明,然而可以理解,所附權(quán)利要求書中定義的本發(fā)明不必要局限于所描述的具體特征或動(dòng)作。相反,揭示了具體特征和動(dòng)作作為實(shí)現(xiàn)本發(fā)明的示例性形式。
權(quán)利要求
1.一種方法,包括壓縮數(shù)據(jù)以在終端服務(wù)環(huán)境中傳遞,其特征在于,它通過(guò)以下行動(dòng)來(lái)壓縮數(shù)據(jù)在一查找表中找出一匹配數(shù)據(jù)中的初始序列的索引,其中所述查找表包括多個(gè)條目,每一所述條目可使用多個(gè)所述索引中的特定一個(gè)來(lái)發(fā)現(xiàn);以及每一所述條目涉及一對(duì)應(yīng)的所述索引是否位于一歷史緩沖區(qū)中,并且如果是,則還引用所述歷史緩沖區(qū)中對(duì)應(yīng)的所述索引的一個(gè)或多個(gè)位置;以及如果所述匹配索引的對(duì)應(yīng)的所述條目引用多個(gè)所述位置對(duì)于每一所述位置,將所述位置上具有所述匹配索引的序列與所述數(shù)據(jù)中的序列進(jìn)行比較,所述序列包括所述初始序列;基于每一所述位置上的序列的長(zhǎng)度和位置中的至少一個(gè),從所述比較中導(dǎo)出一匹配序列;以及使用包括所述歷史緩沖區(qū)中的匹配序列的長(zhǎng)度和位置的表示來(lái)表示所述匹配序列。
2.如權(quán)利要求1所述的方法,其特征在于,它還包括對(duì)所述數(shù)據(jù)中的每一所述序列,找出所述查找表中的一個(gè)所述索引;形成包括一個(gè)或多個(gè)所述表示的已壓縮數(shù)據(jù);以及流傳送所述已壓縮數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述匹配索引的對(duì)應(yīng)的所述條目引用一散列鏈,它包括所述歷史緩沖區(qū)中的匹配索引的每一所述位置。
4.如權(quán)利要求1所述的方法,其特征在于,所述初始序列和所述索引的每一個(gè)都由至少兩個(gè)字節(jié)組成。
5.如權(quán)利要求1所述的方法,其特征在于,它還包括形成包括所述表示的已壓縮數(shù)據(jù);以及通過(guò)網(wǎng)絡(luò)流傳送所述已壓縮數(shù)據(jù),其中,所述數(shù)據(jù)被格式化為一個(gè)或多個(gè)分組。
6.如權(quán)利要求1所述的方法,其特征在于,它還包括使用一選自以下組中的編碼技術(shù)對(duì)所述表示的長(zhǎng)度和位置的至少一個(gè)進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
7.如權(quán)利要求1所述的方法,其特征在于如果所述匹配索引的對(duì)應(yīng)的所述條目不引用任何所述位置,則通過(guò)哈夫曼編碼來(lái)編碼所述初始序列;如果所述匹配索引的對(duì)應(yīng)的所述條目引用單個(gè)所述位置將單個(gè)所述位置處具有所述匹配索引的序列與所述數(shù)據(jù)中的序列進(jìn)行比較;基于單個(gè)所述位置處的序列的長(zhǎng)度和位置的至少一個(gè),從所述比較中導(dǎo)出一匹配序列;以及使用包括所述歷史緩沖區(qū)中的匹配序列的長(zhǎng)度和單個(gè)所述位置的表示來(lái)表示所述匹配序列;以及當(dāng)所述數(shù)據(jù)的每一所述序列被表示或被編碼時(shí),流傳送具有所述編碼或所述表示的數(shù)據(jù)。
8.如權(quán)利要求1所述的方法,其特征在于,導(dǎo)出所述匹配序列的所述比較是使用選自以下組中的一個(gè)或多個(gè)閾值來(lái)執(zhí)行的具有要比較的所述匹配索引的所述位置的數(shù)量;描述具有所述匹配索引的每一所述位置的值的大??;以及描述每一所述位置處與所述數(shù)據(jù)中包括所述匹配索引的序列相匹配的序列的長(zhǎng)度的值的大小。
9.如權(quán)利要求1所述的方法,其特征在于,它還包括采用一代價(jià)函數(shù)來(lái)確定所述表示是否在儲(chǔ)存時(shí)比所述匹配序列使用了更少的存儲(chǔ)器,并且如果是,形成包括所述表示的已壓縮數(shù)據(jù)。
10.如權(quán)利要求1所述的方法,其特征在于,它還包括確定所述匹配序列的位置是否與一最近使用(LRU)表中的多個(gè)位置之一相匹配,其中所述LRU表中的每一所述位置具有一對(duì)應(yīng)的所述LRU表示;所述LRU表中的每一所述位置描述了先前經(jīng)流傳送的數(shù)據(jù)中多個(gè)最近使用的序列位置之一;以及如果所述匹配序列的位置被包括在所述LRU表中,則用來(lái)自所述LRU表的對(duì)應(yīng)的所述LRU表示來(lái)編碼所述匹配序列的位置。
11.一個(gè)或多個(gè)包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)所述指令被執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求1所述的方法。
12.一種方法,它包括壓縮數(shù)據(jù)以在終端服務(wù)環(huán)境中傳遞,其特征在于,它通過(guò)執(zhí)行以下行動(dòng)壓縮數(shù)據(jù)向一歷史緩沖區(qū)添加數(shù)據(jù);更新一引用所述歷史緩沖區(qū)的查找表以包括所添加的數(shù)據(jù),其中所述查找表包括多個(gè)條目,每一所述條目可使用多個(gè)索引中的特定一個(gè)來(lái)發(fā)現(xiàn);以及每一所述條目涉及對(duì)應(yīng)的所述索引是否位于所述歷史緩沖區(qū)中,并且如果是,還引用所述歷史緩沖區(qū)中對(duì)應(yīng)的所述索引的一個(gè)或多個(gè)位置;在所述歷史緩沖區(qū)中所添加的數(shù)據(jù)之處開始一當(dāng)前指針;在所述查找表中找出匹配所述當(dāng)前指針處的初始序列的一個(gè)所述索引;如果所述匹配索引的對(duì)應(yīng)的所述條目引用多個(gè)所述位置將每一所述位置上具有所述匹配索引的序列與所添加的輸入數(shù)據(jù)中包括所述初始序列的序列進(jìn)行比較;從所述比較中導(dǎo)出一匹配序列;用包括所述歷史緩沖區(qū)中的匹配序列的位置和長(zhǎng)度的表示來(lái)表示所述匹配序列;采用一代價(jià)函數(shù)來(lái)確定所述表示在儲(chǔ)存時(shí)是否比所述匹配序列使用更少的存儲(chǔ)器空間,如果是,則配置數(shù)據(jù)以包括所述表示,并將所述當(dāng)前指針前進(jìn)所述匹配序列的長(zhǎng)度,否則,配置所述數(shù)據(jù)以包括所述初始序列,并將所述當(dāng)前指針前進(jìn)所述初始序列的長(zhǎng)度;以及當(dāng)所述當(dāng)前指針前進(jìn)通過(guò)所添加的數(shù)據(jù)時(shí),分組化所配置的數(shù)據(jù)用于流傳送。
13.如權(quán)利要求12所述的方法,其特征在于,它還包括使用一選自以下組中的編碼技術(shù)對(duì)所述表示的長(zhǎng)度和位置的至少一個(gè)進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
14.如權(quán)利要求12所述的方法,其特征在于,當(dāng)所述當(dāng)前指針處的初始序列不匹配所述歷史緩沖區(qū)中的任何序列時(shí),對(duì)所述當(dāng)前指針處的初始字節(jié)序列進(jìn)行編碼,以包括在所配置的數(shù)據(jù)中,用于通過(guò)一選自以下組中的編碼技術(shù)來(lái)流傳送哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
15.如權(quán)利要求12所述的方法,其特征在于,它還包括確定所述匹配序列的位置是否與一最近使用(LRU)表中的多個(gè)位置之一相匹配,其中所述LRU表中的每一所述位置具有一對(duì)應(yīng)的所述LRU表示;所述LRU表中的每一所述位置描述了先前經(jīng)流傳送的數(shù)據(jù)中多個(gè)最近使用的序列位置中的一個(gè);以及如果所述匹配序列的位置被包括在所述LRU表中,則用來(lái)自所述LRU表的對(duì)應(yīng)的所述LRU表示來(lái)編碼所述匹配序列的位置。
16.一個(gè)或多個(gè)包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)所述指令被執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求12所述的方法。
17.一種方法,其特征在于,它包括接收反饋,它指示用于通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)從由服務(wù)器提供的終端服務(wù)傳遞到客戶機(jī)時(shí)的資源的可用性;以及響應(yīng)于所述反饋,調(diào)整一用于壓縮所述數(shù)據(jù)的壓縮例程的一個(gè)或多個(gè)參數(shù)。
18.如權(quán)利要求17所述的方法,其特征在于,所述資源選自以下組所述客戶機(jī)的硬件資源;所述客戶機(jī)的軟件資源;所述網(wǎng)絡(luò)的網(wǎng)絡(luò)資源;所述服務(wù)器的硬件資源;所述服務(wù)器的軟件資源;以及其任一組合。
19.一個(gè)或多個(gè)包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)所述指令被執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求17所述的方法。
20.一種方法,其特征在于,它包括在服務(wù)器處從客戶機(jī)接收對(duì)通過(guò)所述服務(wù)器可用的應(yīng)用程序或文件進(jìn)行遠(yuǎn)程訪問(wèn)的請(qǐng)求;響應(yīng)于通過(guò)網(wǎng)絡(luò)的所述請(qǐng)求,確定用于傳遞數(shù)據(jù)的資源的可用性;以及基于所確定的可用性,調(diào)整一用于壓縮所述數(shù)據(jù)的壓縮協(xié)議的一個(gè)或多個(gè)參數(shù)。
21.如權(quán)利要求20所述的方法,其特征在于,所述資源選自以下組所述客戶機(jī)的硬件資源;所述客戶機(jī)的軟件資源;所述網(wǎng)絡(luò)的網(wǎng)絡(luò)資源;所述服務(wù)器的硬件資源;所述服務(wù)器的軟件資源;以及其任一組合。
22.一個(gè)或多個(gè)包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)所述指令被執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求20所述的方法。
23.一種服務(wù)器,其特征在于,它包括一歷史緩沖器,它具有多個(gè)字節(jié);一查找表,它包括多個(gè)條目,每一所述條目可使用多個(gè)索引中特定的一個(gè)來(lái)發(fā)現(xiàn);以及涉及對(duì)應(yīng)的所述索引是否位于所述歷史緩沖區(qū)中,并且如果是,還引用所述歷史緩沖區(qū)中對(duì)應(yīng)的所述索引的一個(gè)或多個(gè)位置;以及一壓縮模塊,它可執(zhí)行以便在所述查找表中找出與用于從終端服務(wù)傳遞到客戶機(jī)的數(shù)據(jù)中的初始序列相匹配的一個(gè)所述索引序列;如果所述匹配索引的對(duì)應(yīng)的所述條目引用多個(gè)所述位置對(duì)于每一所述位置,將所述位置上具有所述匹配索引的序列與所述數(shù)據(jù)中的序列進(jìn)行比較,所述序列包括所述初始序列;基于每一所述位置上的序列的長(zhǎng)度和位置中的至少一個(gè),從所述比較中導(dǎo)出一匹配序列;以及使用包括所述歷史緩沖區(qū)中的匹配序列的長(zhǎng)度和位置的表示來(lái)表示所述匹配序列。
24.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述壓縮模塊還可執(zhí)行以便對(duì)所述數(shù)據(jù)中的每一所述序列,在所述查找表中找出一個(gè)所述索引;形成包括一個(gè)或多個(gè)所述表示的已壓縮數(shù)據(jù);以及流傳送所述已壓縮數(shù)據(jù)。
25.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述匹配索引的對(duì)應(yīng)的所述條目引用一散列鏈,它包括所述歷史緩沖區(qū)中匹配索引的每一所述位置。
26.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述初始序列和所述索引的每一個(gè)都由至少兩個(gè)字節(jié)組成。
27.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述壓縮模塊還可執(zhí)行以便形成包括所述表示的已壓縮數(shù)據(jù);以及分組化所述已壓縮數(shù)據(jù)用于通過(guò)網(wǎng)絡(luò)流傳送,其中,所述數(shù)據(jù)被格式化為一個(gè)或多個(gè)分組。
28.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述壓縮模塊還可執(zhí)行以便通過(guò)一選自以下組中的編碼技術(shù)對(duì)所述表示的長(zhǎng)度和位置的至少一個(gè)進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
29.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述壓縮模塊還可執(zhí)行,以便如果所述匹配索引的對(duì)應(yīng)的所述條目不引用任何所述位置,通過(guò)一選自以下組中的編碼技術(shù)對(duì)所述初始序列進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
30.如權(quán)利要求23所述的服務(wù)器,其特征在于,導(dǎo)出所述匹配序列的所述比較是使用選自以下組中的一個(gè)或多個(gè)閾值來(lái)執(zhí)行的具有要被比較的所述匹配索引的所述位置的數(shù)量;描述具有所述匹配索引的每一所述位置的值的大?。灰约懊枋雒恳凰鑫恢蒙吓c所述數(shù)據(jù)中包括所述匹配索引的序列相匹配的序列的長(zhǎng)度的值的大小。
31.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述壓縮模塊還可執(zhí)行,以便采用一代價(jià)函數(shù)來(lái)確定所述表示在存儲(chǔ)時(shí)是否比所述匹配序列使用更少的存儲(chǔ)器,并且如果是,形成包括所述表示的已壓縮數(shù)據(jù)。
32.如權(quán)利要求23所述的服務(wù)器,其特征在于,所述壓縮模塊還可執(zhí)行,以便確定所述匹配序列的位置是否與一最近使用(LRU)表中的多個(gè)位置中的一個(gè)相匹配,其中所述LRU表中的每一所述位置具有一對(duì)應(yīng)的所述LRU表示;所述LRU表中的每一所述位置描述先前經(jīng)流傳送的數(shù)據(jù)中多個(gè)最近使用的序列位置中的一個(gè);以及如果所述匹配序列的位置被包括在所述LRU表中,則用來(lái)自所述LRU表的對(duì)應(yīng)的所述LRU表示來(lái)編碼所述匹配序列的位置。
33.一種系統(tǒng),其特征在于,它包括一網(wǎng)絡(luò);一服務(wù)器,包括第一歷史緩沖區(qū),它具有多個(gè)字節(jié);一查找表,它包括多個(gè)條目,每一所述條目可使用多個(gè)索引中特定的一個(gè)來(lái)發(fā)現(xiàn),每一所述條目涉及對(duì)應(yīng)的所述索引是否位于所述歷史緩沖區(qū)中,并且如果是,引用所述歷史緩沖區(qū)中對(duì)應(yīng)的所述索引的一個(gè)或多個(gè)位置;以及一壓縮模塊,它可執(zhí)行以便響應(yīng)于一遠(yuǎn)程訪問(wèn)請(qǐng)求,在所述查找表中找出所述數(shù)據(jù)中與當(dāng)前指針處的初始序列相匹配的一個(gè)所述索引;如果所述匹配索引的對(duì)應(yīng)的所述條目引用一個(gè)或多個(gè)所述位置將每一所述位置上具有所述匹配索引的序列與所述數(shù)據(jù)中當(dāng)前指針處的序列進(jìn)行比較;從所述比較中導(dǎo)出一匹配序列;配置數(shù)據(jù)以包括一表示,該表示包括所述第一歷史緩沖區(qū)中所述匹配序列的位置和長(zhǎng)度,并將所述當(dāng)前指針前進(jìn)所述匹配序列的長(zhǎng)度;如果所述匹配索引的對(duì)應(yīng)的所述條目不引用任何所述位置,則配置數(shù)據(jù)以包括所述初始序列,并將所述當(dāng)前指針前進(jìn)所述初始序列的長(zhǎng)度;以及當(dāng)所述當(dāng)前指針前進(jìn)通過(guò)所添加的數(shù)據(jù)時(shí),通過(guò)所述網(wǎng)絡(luò)流傳送所配置的數(shù)據(jù);以及一客戶機(jī),它通信上耦合至所述網(wǎng)絡(luò),并包括第二歷史緩沖區(qū)和一解壓模塊,所述解壓模塊可執(zhí)行,以便通過(guò)基于由所述表示所指示的位置和長(zhǎng)度在所述第二歷史緩沖區(qū)中找出所述匹配序列,來(lái)解壓所述經(jīng)流傳送的數(shù)據(jù)。
34.如權(quán)利要求33所述的系統(tǒng),其特征在于,所述解壓模塊還可由所述客戶機(jī)執(zhí)行以向所述第二歷史緩沖區(qū)添加所解壓的數(shù)據(jù)。
35.如權(quán)利要求33所述的系統(tǒng),其特征在于,所述壓縮模塊還可由所述服務(wù)器執(zhí)行,以通過(guò)一選自以下組中的編碼技術(shù)對(duì)所述表示的長(zhǎng)度和位置的至少一個(gè)進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
36.如權(quán)利要求33所述的系統(tǒng),其特征在于,如果所述匹配索引的對(duì)應(yīng)的所述條目不引用任何所述位置,則所述壓縮模塊還可執(zhí)行,以通過(guò)一選擇以下組中的編碼技術(shù)對(duì)所述初始序列進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
37.如權(quán)利要求33所述的系統(tǒng),其特征在于,所述壓縮模塊還可由所述服務(wù)器執(zhí)行,以確定所述匹配序列的位置是否與一最近使用(LRU)表中的多個(gè)位置中的一個(gè)相匹配,其中所述LRU表中的每一所述位置具有一對(duì)應(yīng)的所述LRU表示;所述LRU表中的每一所述位置描述先前經(jīng)流傳送的數(shù)據(jù)中多個(gè)最近使用的序列位置中的一個(gè);以及如果所述匹配序列的位置被包括在所述LRU表中,則用來(lái)自所述LRU表的對(duì)應(yīng)的所述LRU表示來(lái)編碼所述匹配序列的位置。
38.一種包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),其特征在于,當(dāng)所述指令由計(jì)算機(jī)執(zhí)行時(shí),引導(dǎo)所述計(jì)算機(jī)在一查找表中找出與用于流到客戶機(jī)的數(shù)據(jù)中的一初始序列相匹配的索引,所述數(shù)據(jù)用于生成遠(yuǎn)程地從所述客戶機(jī)執(zhí)行的應(yīng)用程序的用戶界面,其中所述查找表包括多個(gè)條目,每一所述條目可使用多個(gè)所述索引中的特定的一個(gè)來(lái)發(fā)現(xiàn);以及每一所述條目涉及一對(duì)應(yīng)的所述索引是否位于一歷史緩沖區(qū)中;并且如果是,還引用所述歷史緩沖區(qū)中對(duì)應(yīng)的所述索引的一個(gè)或多個(gè)位置;如果所述匹配索引的對(duì)應(yīng)的所述條目引用多個(gè)所述位置對(duì)于每一所述位置,將所述位置上具有所述匹配索引的序列與所述數(shù)據(jù)中的序列相比較,所述序列包括所述初始序列;以及根據(jù)所述比較計(jì)算所述匹配序列的長(zhǎng)度。
39.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述計(jì)算機(jī)可執(zhí)行指令引導(dǎo)所述計(jì)算機(jī)使用一包括所述長(zhǎng)度和位置的表示來(lái)表示所述匹配序列。
40.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述匹配索引的對(duì)應(yīng)的所述條目引用一散列鏈,它包括所述歷史緩沖區(qū)中所述匹配索引的每一所述位置。
41.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述初始序列和所述索引的每一個(gè)都由至少兩個(gè)字節(jié)組成。
42.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述計(jì)算機(jī)可執(zhí)行指令引導(dǎo)所述計(jì)算機(jī)通過(guò)一選自以下組中的編碼技術(shù)對(duì)所述長(zhǎng)度和位置的至少一個(gè)進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
43.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述計(jì)算機(jī)可執(zhí)行指令引導(dǎo)所述計(jì)算機(jī),如果所述匹配索引的對(duì)應(yīng)的所述條目不引用任何位置,則通過(guò)一選擇以下組中的編碼技術(shù)對(duì)所述初始序列進(jìn)行編碼哈夫曼編碼;算術(shù)編碼;前綴編碼;以及馬爾可夫編碼。
44.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述比較是使用選自以下組中的一個(gè)或多個(gè)閾值來(lái)執(zhí)行的具有要被比較的所述匹配索引的所示位置的數(shù)量;描述具有所述匹配索引的每一所述位置的值的大?。灰约懊枋雒恳凰鑫恢蒙吓c所述數(shù)據(jù)中包括所述匹配索引的序列相匹配的序列的長(zhǎng)度的值的大小。
45.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述計(jì)算機(jī)可執(zhí)行指令引導(dǎo)所述計(jì)算機(jī)采用一代價(jià)函數(shù)確定包括所述匹配序列的長(zhǎng)度和位置的表示在儲(chǔ)存時(shí)是否比所述匹配序列使用更少的存儲(chǔ)器,并且如果是,形成包括所述表示的已壓縮數(shù)據(jù)。
46.如權(quán)利要求38所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述計(jì)算機(jī)可執(zhí)行指令引導(dǎo)所述計(jì)算機(jī)確定所述匹配序列的位置是否與一最近使用(LRU)表中的多個(gè)位置中的一個(gè)相匹配,其中所述LRU表中的每一所述位置具有一對(duì)應(yīng)的所述LRU表示;所述LRU表中的每一所述位置描述先前經(jīng)流傳送的數(shù)據(jù)中多個(gè)最近使用的序列位置中的一個(gè);以及如果所述匹配序列的位置被包括在所述LRU表中,則用來(lái)自所述LRU表的對(duì)應(yīng)的所述LRU表示來(lái)編碼所述匹配序列的位置。
全文摘要
描述了流數(shù)據(jù)的壓縮。在一個(gè)實(shí)現(xiàn)中,一種方法包括通過(guò)在一查找表中找出匹配數(shù)據(jù)中一初始序列的索引,壓縮數(shù)據(jù)用于在終端服務(wù)環(huán)境中傳遞。該查找表包括多個(gè)條目。每一條目可使用多個(gè)索引中的特定一個(gè)來(lái)發(fā)現(xiàn)。每一條目涉及對(duì)應(yīng)索引是否位于歷史緩沖區(qū)中,并且如果是,還引用歷史緩沖區(qū)中對(duì)應(yīng)索引的一個(gè)或多個(gè)位置。如果匹配索引的對(duì)應(yīng)條目引用多個(gè)位置,對(duì)每一位置,將具有匹配索引的序列與數(shù)據(jù)中包括初始序列的序列進(jìn)行比較?;诿恳晃恢蒙系男蛄械拈L(zhǎng)度和位置,從比較中導(dǎo)出一匹配序列。該匹配序列使用包括歷史緩沖區(qū)中匹配序列的長(zhǎng)度和位置的表示來(lái)表示。
文檔編號(hào)G06F13/00GK1671103SQ200510009159
公開日2005年9月21日 申請(qǐng)日期2005年2月4日 優(yōu)先權(quán)日2004年3月15日
發(fā)明者A·V·卡達(dá)齊, M·V·斯里格, N·Y·阿布多 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
辛集市| 游戏| 沙田区| 钟山县| 太保市| 荥阳市| 肇州县| 攀枝花市| 东兴市| 中西区| 仙游县| 共和县| 舞钢市| 自贡市| 呈贡县| 容城县| 军事| 新晃| 赤壁市| 察隅县| 原阳县| 潞西市| 湘西| 扎鲁特旗| 顺昌县| 嫩江县| 海丰县| 武穴市| 塔河县| 犍为县| 伽师县| 武威市| 广平县| 正安县| 广南县| 巴彦淖尔市| 泽库县| 修武县| 专栏| 潮安县| 临海市|