專利名稱:算法執(zhí)行輸出高速緩存的制作方法
技術(shù)領(lǐng)域:
本申請涉及遠(yuǎn)程呈現(xiàn)會話服務(wù),尤其涉及使用算法執(zhí)行輸出高速緩存的遠(yuǎn)程呈現(xiàn)會話服務(wù)。相關(guān)申請的交叉引用本申請根據(jù)35U. S.C. § 119(e)要求在2010年3月2日提交的美國臨時專利申請 61/275,700的權(quán)益,其內(nèi)容通過整體引用結(jié)合于此。
背景技術(shù):
雖然計算機曾經(jīng)一度是孤立的并且與其他計算機具有最小的或很少的交互,但是現(xiàn)在計算機通過局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、撥號連接等等與各種各樣的其他計算機進行交互。隨著因特網(wǎng)的廣泛增長,計算機之間的連接已經(jīng)變得更加重要并且已經(jīng)開發(fā)了許多新的應(yīng)用程序和技術(shù)。大規(guī)模網(wǎng)絡(luò)的增長以及低成本個人計算機的廣泛可用性已經(jīng)從根本上改變了許多人工作、交互、通信、以及玩樂的方式。聯(lián)網(wǎng)的一種日益增加的流行形式一般被稱為遠(yuǎn)程呈現(xiàn),其能使用諸如遠(yuǎn)程桌面協(xié)議(RDP)、獨立計算體系結(jié)構(gòu)(ICA)、以及其他協(xié)議等協(xié)議與遠(yuǎn)程客戶機共享桌面和其他應(yīng)用程序。這樣的計算系統(tǒng)通常將來自客戶機的鍵盤按壓和鼠標(biāo)點擊或選擇傳送到服務(wù)器, 通過網(wǎng)絡(luò)連接(例如,因特網(wǎng))將屏幕更新轉(zhuǎn)播回其他方向。由此,當(dāng)實際上客戶機設(shè)備僅僅被發(fā)送如在服務(wù)器方上出現(xiàn)的應(yīng)用的屏幕截圖時,用戶具有好像他們的機器正在本地地執(zhí)行應(yīng)用的體驗。遠(yuǎn)程呈現(xiàn)會話服務(wù)器可以與多個客戶機進行并發(fā)遠(yuǎn)程呈現(xiàn)會話。這些多個客戶機可以是每個發(fā)送相同數(shù)據(jù)。例如,在多個客戶機會話欲顯示同一屏幕保護程序(例如,帶有靜態(tài)徽標(biāo)的黑色)的情形中。為了將該圖像數(shù)據(jù)發(fā)送到每一個客戶機,需要服務(wù)器為每一個客戶機會話獨立地編碼該圖形數(shù)據(jù),導(dǎo)致使用服務(wù)器處理資源來執(zhí)行冗余任務(wù)。
發(fā)明內(nèi)容
因此,減少服務(wù)器處理資源的冗余使用的數(shù)量將是一種進步。與多個客戶機進行并發(fā)遠(yuǎn)程呈現(xiàn)會話的遠(yuǎn)程呈現(xiàn)會話服務(wù)器,為要發(fā)給客戶機的每個圖像生成一簽名。該遠(yuǎn)程呈現(xiàn)服務(wù)器還維持一包括簽名和已壓縮圖像對的簽名表。每個簽名和已壓縮圖像對對應(yīng)一個圖像。也就說,簽名是從一圖像中生成的,而已壓縮圖像是從同一圖像中生成的。遠(yuǎn)程呈現(xiàn)會話服務(wù)器對照該簽名表檢查簽名。在遠(yuǎn)程呈現(xiàn)會話服務(wù)器確定在該簽名和簽名表中的一簽名之間有匹配的情形中,它向客戶機發(fā)送在生成該匹配的簽名表中的對應(yīng)于該簽名的已壓縮圖像。這樣做的時候,遠(yuǎn)程呈現(xiàn)會話服務(wù)器可以避免冗余地壓縮該圖像。在遠(yuǎn)程呈現(xiàn)會話服務(wù)器確定在該簽名和簽名表中的簽名之間沒有匹配的情形中, 它壓縮該圖像,并將包括該簽名和所得的壓縮圖像的對存儲在簽名表中。這樣做的時候,遠(yuǎn)程呈現(xiàn)會話服務(wù)器可以避免將來它如果再次遇到那圖像時進行冗余的工作。遠(yuǎn)程呈現(xiàn)會話服務(wù)器向客戶機發(fā)送已壓縮圖像。
當(dāng)在此揭示的主實施例引用將這些技術(shù)應(yīng)用到要被跨并行遠(yuǎn)程呈現(xiàn)會話發(fā)送的圖像時,本領(lǐng)域技術(shù)人員可以理解這些技術(shù)可以被更寬地應(yīng)用到其中服務(wù)器正發(fā)送必須在發(fā)送到多個客戶機之前被處理的數(shù)據(jù)的情景,不管那些客戶機會話是否是并行的??梢赃M一步理解,這些技術(shù)也可以被應(yīng)用到更一般的情景,其中可能相同的數(shù)據(jù)被計算設(shè)備上的多個組件處理,并且處理那數(shù)據(jù)的輸出可以被簽名,且被該多個組件訪問。本領(lǐng)域技術(shù)人員將理解,本發(fā)明的一個或多個方面可包括但不限于用于實現(xiàn)本發(fā)明的本文所述方面的電路和/或編程;該電路和/或編程實質(zhì)上可以是被配置成實現(xiàn)本文所述方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計者的設(shè)計選擇。以上是概述,并且因此必然包含細(xì)節(jié)的簡化、一般化及省略。本領(lǐng)域技術(shù)人員將明白,本概述只是說明性的并且決不旨在是限制性的。
參考附圖來進一步描述用于算法執(zhí)行輸出高速緩存的系統(tǒng)、方法和計算機可讀介質(zhì),附圖中圖1示出了可在其中體現(xiàn)了在此描述的技術(shù)的示例性通用計算環(huán)境。圖2描繪其中可實現(xiàn)本公開的各方面的示例遠(yuǎn)程呈現(xiàn)會話服務(wù)器。圖3示出了算法執(zhí)行輸出高速緩存的示例操作過程。圖4A描述了在不使用算法執(zhí)行輸出高速緩存進行操作的服務(wù)器上的多個遠(yuǎn)程呈現(xiàn)會話進程。圖4B描述了在使用算法執(zhí)行輸出高速緩存進行操作的服務(wù)器上的多個遠(yuǎn)程呈現(xiàn)會話進程。
具體實施例方式圖1是在其中可實現(xiàn)在此描述的技術(shù)的通用計算設(shè)備的框圖。計算系統(tǒng)環(huán)境120 只是合適的計算環(huán)境的一個示例,并且不旨在對所公開的主題的使用范圍或功能提出任何限制。也不應(yīng)該將計算環(huán)境120解釋為對示例性操作環(huán)境120中示出的任一組件或其組合有任何依賴性或要求。在某些實施方式中,所描繪的各種計算元素可包括被配置成實例化本公開的各具體方面的電路。例如,本公開中使用的術(shù)語電路可包括被配置成執(zhí)行固件或開關(guān)的功能的專用硬件組件。在其他示例實施方式中,術(shù)語電路可包括由實施可用于執(zhí)行功能的邏輯的軟件指令配置的通用處理單元、存儲器等。在電路包括硬件與軟件組合的示例實施方式中,實現(xiàn)者可編寫實施邏輯的源代碼且該源代碼可被編譯成可由通用處理單元處理的機器可讀代碼。因為本領(lǐng)域技術(shù)人員可以明白現(xiàn)有技術(shù)已經(jīng)進化到硬件、軟件或硬件/軟件組合之間幾乎沒有差別的地步,因而選擇硬件或是軟件來實現(xiàn)具體功能是留給實現(xiàn)者的設(shè)計選擇。更具體地,本領(lǐng)域技術(shù)人員可以明白軟件進程可被變換成等價的硬件結(jié)構(gòu),而硬件結(jié)構(gòu)本身可被變換成等價的軟件進程。因此,對于硬件實現(xiàn)還是軟件實現(xiàn)的選擇是設(shè)計選擇并留給實現(xiàn)者。計算機141通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算機 141訪問的任何可用介質(zhì),并且包括易失性與非易失性介質(zhì)、可移動與不可移動介質(zhì)兩者。 系統(tǒng)存儲器22包括易失性和/或非易失性存儲器形式的計算機可讀存儲介質(zhì),如只讀存儲器(ROM) M和隨機存取存儲器(RAM) 25?;据斎?輸出系統(tǒng)沈¢10 包括如在啟動時幫助在計算機141內(nèi)的元件之間傳輸信息的基本例程,它通常儲存在ROM M中。RAM 25通常包含處理單元21可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非限制,圖1示出操作系統(tǒng)35、應(yīng)用程序36、其他程序模塊37和程序數(shù)據(jù)38。計算機141還可以包括其他可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。僅作為示例,圖1示出了從不可移動、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動器 27,從可移動、非易失性磁盤四中讀取或向其寫入的磁盤驅(qū)動器28,以及從諸如⑶ROM或其他光學(xué)介質(zhì)等可移動、非易失性光盤31中讀取或向其寫入的光盤驅(qū)動器30??梢栽谑纠圆僮鳝h(huán)境中使用的其他可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器27 通常由諸如接口 32等不可移動存儲器接口連接至系統(tǒng)總線23,而磁盤驅(qū)動器28和光盤驅(qū)動器30通常通過諸如接口 33和34等可移動存儲器接口連接至系統(tǒng)總線23。以上討論并在圖1中示出的驅(qū)動器及其相關(guān)聯(lián)的計算機存儲介質(zhì)為計算機141提供了對計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲。在圖1中,例如,硬盤驅(qū)動器27被示為存儲操作系統(tǒng)35、應(yīng)用程序36、其他程序模塊37和程序數(shù)據(jù)38。注意,這些組件可以與RAM25中描述的操作系統(tǒng)35、應(yīng)用程序36、其他程序模塊37和程序數(shù)據(jù)38相同, 也可以與它們不同。至少,他們是不同拷貝。用戶可以通過輸入設(shè)備,諸如鍵盤40和定點設(shè)備42 (通常被稱為鼠標(biāo)、跟蹤球或觸摸墊),向計算機141輸入命令和信息。其他輸入設(shè)備(未示出)可以包括麥克風(fēng)、游戲桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些和其他輸入設(shè)備通常由耦合至系統(tǒng)總線的用戶輸入接口 46連接至處理單元21,但也可以由其他接口和總線結(jié)構(gòu),諸如并行端口、游戲端口或通用串行總線(USB),來連接。監(jiān)視器47或其他類型的顯示設(shè)備也經(jīng)由接口,諸如視頻接口 48,連接至系統(tǒng)總線23。除監(jiān)視器以外,計算機也可以包括其他外圍輸出設(shè)備,諸如揚聲器和打印機,它們可以通過輸出外圍接口 46 連接。計算機141可使用至一個或多個遠(yuǎn)程計算機,諸如遠(yuǎn)程計算機49的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計算機49可以是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見網(wǎng)絡(luò)節(jié)點,并且通常包括以上關(guān)于計算機141所描述的許多或所有元件,但在圖1 中僅示出了存儲器存儲設(shè)備50,其將應(yīng)用程序36’存儲在介質(zhì)上。圖1中所示的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN) 52,但也可以包括其他網(wǎng)絡(luò)。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時,計算機141通過網(wǎng)絡(luò)接口或適配器53連接至LAN 51。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機141通常包括調(diào)制解調(diào)器M或用于通過諸如因特網(wǎng)等WAN 52建立通信的其他裝置。調(diào)制解調(diào)器M可以是內(nèi)置或外置的,它可以經(jīng)由用戶輸入接口 46或其他適當(dāng)?shù)臋C制連接至系統(tǒng)總線23。在網(wǎng)絡(luò)化環(huán)境中,相對于計算機141所描述的程序模塊或其部分可被儲存在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例而非限制,圖1示出駐留在存儲器設(shè)備50上的遠(yuǎn)程應(yīng)用程序36’??梢岳斫猓镜木W(wǎng)絡(luò)連接是示例性的,且可以使用在計算機之間建立通信鏈路的其他手段。計算機141也可以具有主適配器55,其通過SCSI總線56連接到存儲設(shè)備62?,F(xiàn)在參照圖2,其一般描繪其中可實現(xiàn)本公開的各方面的示例環(huán)境。本領(lǐng)域技術(shù)人員可理解,示出圖2所描繪的示例元件是為了提供用于描述本公開的操作框架。因此,在一些實施例中,每個環(huán)境的物理布局可取決于不同的實現(xiàn)方案而有所不同。因此,該示例操作框架將僅被視為說明性的且不以任何方式限制權(quán)利要求的范圍。本領(lǐng)域技術(shù)人員還可理解,以下討論是介紹性的,且圖2描繪的元件在由圖3描繪的操作過程的討論內(nèi)更詳細(xì)地描述。一般地,圖2描繪了可被配置成包括本公開的各方面的服務(wù)器環(huán)境的高級概覽。 參照該圖,描繪了服務(wù)器204,其可包括配置成實現(xiàn)遠(yuǎn)程呈現(xiàn)會話服務(wù)器的電路,或者在其他實施例中,服務(wù)器204可包括配置成支持遠(yuǎn)程桌面連接的電路。在所描繪的示例中,服務(wù)器204可被配置成生成用于連接客戶機的一個或多個會話,諸如會話1到N(其中N是大于 2的整數(shù))。簡言之,在本公開的示例實施例中,會話一般可包括由配置成與服務(wù)器204的內(nèi)核214交互的多個子系統(tǒng)(例如,軟件代碼)實現(xiàn)的操作環(huán)境。例如,會話可包括實例化諸如桌面窗口之類的用戶界面的進程、跟蹤該窗口內(nèi)的鼠標(biāo)移動的子系統(tǒng)、將圖標(biāo)上的鼠標(biāo)點擊翻譯成實現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)等。會話可由服務(wù)器204在逐用戶基礎(chǔ)上生成, 例如在服務(wù)器204通過網(wǎng)絡(luò)連接接收來自客戶機201的連接請求時由服務(wù)器204生成。一般而言,連接請求首先可由傳輸邏輯210處理,傳輸邏輯210例如可由服務(wù)器204的電路實現(xiàn)。傳輸邏輯210在一些實施例中可包括網(wǎng)絡(luò)適配器、可被配置成接收連接消息并將其轉(zhuǎn)發(fā)給引擎212的固件和軟件。如圖2所示,傳輸邏輯210在一些實施例中可包括每個會話的協(xié)議棧實例。一般而言,每個協(xié)議棧實例可被配置成將用戶界面輸出路由到客戶機,以及將從客戶機接收到的用戶輸入路由到與其會話相關(guān)聯(lián)的會話核心M4。繼續(xù)圖2的一般性描述,引擎212在本發(fā)明的一些示例實施例中可被配置成處理對會話的請求;確定每個會話的功能;通過為會話分配物理資源集來生成會話;以及實例化會話的協(xié)議棧實例。在一些實施例中,引擎212可由能實現(xiàn)上述操作過程中的一部分的專門電路組件來實現(xiàn)。例如,該電路在一些示例實施例中可包括存儲器以及配置成執(zhí)行實現(xiàn)引擎212的代碼的處理器。如圖2所描繪地,在一些情況下,引擎212可接收連接請求并確定例如許可是可用的,并且可為該請求生成會話。在服務(wù)器204是包括遠(yuǎn)程桌面能力的遠(yuǎn)程計算機的情形中,引擎212可被配置成響應(yīng)于連接請求生成會話而不檢查許可。如圖2 所示,會話管理器216可被配置成接收來自引擎212的消息,并且響應(yīng)于該消息,會話管理器216可將會話標(biāo)識符添加到表中;向該會話標(biāo)識符指派存儲器;以及在指派給該會話標(biāo)識符的存儲器中生成系統(tǒng)環(huán)境變量和子系統(tǒng)進程實例。如圖2所示,會話管理器216可實例化諸如運行時子系統(tǒng)240之類的環(huán)境子系統(tǒng), 該子系統(tǒng)可包括諸如會話核心244之類的內(nèi)核模式部分。例如,環(huán)境子系統(tǒng)在一實施例中被配置成將一些服務(wù)子集暴露給應(yīng)用程序并向操作系統(tǒng)214的內(nèi)核提供接入點。在示例實施例中,運行時子系統(tǒng)240可控制進程和線程的執(zhí)行,并且會話核心244可向內(nèi)核214的執(zhí)行程序發(fā)送請求以向線程分配存儲器并調(diào)度執(zhí)行它們的時間。在一實施例中,會話核心244 可包括圖形顯示界面246 (⑶I)、安全子系統(tǒng)250和輸入子系統(tǒng)252。在這些實施例中,輸入子系統(tǒng)252可被配置成經(jīng)由與該會話相關(guān)聯(lián)的協(xié)議棧實例接收來自客戶機201的用戶輸入并將該輸入傳送給合適會話的會話核心對4。用戶輸入在一些實施例中可包括指示絕對和 /或相對鼠標(biāo)移動命令、鼠標(biāo)坐標(biāo)、鼠標(biāo)點擊、鍵盤信號、操縱桿移動信號等的信號。例如圖標(biāo)上的鼠標(biāo)雙擊的用戶輸入可被會話核心244接收,并且輸入子系統(tǒng)252可被配置成確定圖標(biāo)位于與該雙擊相關(guān)聯(lián)的坐標(biāo)處。輸入子系統(tǒng)252隨后可被配置成向可執(zhí)行與該圖標(biāo)相關(guān)聯(lián)的應(yīng)用的進程的運行時子系統(tǒng)240發(fā)送通知。除了接收來自客戶機201的輸入之外,可從應(yīng)用和/或桌面接收繪制命令并由GDI 246來處理。⑶I 246 —般可包括能生成圖形對象繪制命令的進程。⑶1246在該示例實施例中可被配置成將其輸出傳遞給遠(yuǎn)程顯示子系統(tǒng)254,在那里,針對附連到該會話的顯示驅(qū)動器,命令被格式化。在某些示例實施例中,一個或多個物理顯示器可被附連到服務(wù)器204, 例如在遠(yuǎn)程桌面情形中。在這些示例實施例中,遠(yuǎn)程顯示子系統(tǒng)2M可被配置成鏡像由遠(yuǎn)程計算機系統(tǒng)的顯示驅(qū)動器呈現(xiàn)的繪制命令,并經(jīng)由與該會話相關(guān)聯(lián)的棧實例將鏡像信息傳送給客戶機201。在服務(wù)器204是遠(yuǎn)程呈現(xiàn)會話服務(wù)器的另一示例實施例中,遠(yuǎn)程顯示子系統(tǒng)2M可被配置成包括可不與物理上附連到服務(wù)器204的顯示器相關(guān)聯(lián)的虛擬顯示驅(qū)動器,例如服務(wù)器204可無頭地(headless)運行。遠(yuǎn)程顯示子系統(tǒng)邪4在該實施例中可被配置成接收針對一個或多個虛擬顯示器的繪制命令并將它們經(jīng)由與該會話相關(guān)聯(lián)的棧實例傳送給客戶機201。在本公開的實施例中,遠(yuǎn)程顯示子系統(tǒng)2M可被配置成確定每個顯示驅(qū)動器的顯示分辨率,例如確定與虛擬顯示器相關(guān)聯(lián)的虛擬顯示驅(qū)動器的顯示分辨率或與物理顯示器相關(guān)聯(lián)的顯示驅(qū)動器的顯示分辨率;以及經(jīng)由相關(guān)聯(lián)的協(xié)議棧實例將分組路由到客戶機201。在一些示例實施例中,會話管理器216可附加地實例化與該會話的會話標(biāo)識符相關(guān)聯(lián)的可被配置成處理該會話的登入和登出的登錄進程的實例。在這些示例實施例中,指示與登錄進程相關(guān)聯(lián)的圖形用戶界面的繪制命令可被傳送給客戶機201,在那里,客戶機 201的用戶可向登錄屏幕輸入賬號標(biāo)識符(例如用戶名/ 口令組合)、智能卡標(biāo)識符、和/ 或生物測定信息。該信息可被傳送給服務(wù)器204并被路由至引擎212以及會話核心244的安全子系統(tǒng)250。例如,在某些示例實施例中,引擎212可被配置成確定用戶賬號是否與許可相關(guān)聯(lián);并且安全子系統(tǒng)250可被配置成生成該會話的安全令牌。圖3描述了算法執(zhí)行輸出高速緩存的操作過程的示例。此處揭示的操作過程涉及遠(yuǎn)程呈現(xiàn)會話實例,但是可以理解它們可以被應(yīng)用到其他情況,如發(fā)明內(nèi)容中討論的。操作302描述了確定第一數(shù)據(jù)的第一簽名,該第一數(shù)據(jù)要被發(fā)送給第一客戶機。 該第一數(shù)據(jù)可以包括第一數(shù)據(jù)集。在一個實施例中,該第一數(shù)據(jù)包括一圖像。該第一數(shù)據(jù)可以包括一圖像,如在遠(yuǎn)程呈現(xiàn)會話過程中。當(dāng)遠(yuǎn)程呈現(xiàn)會話服務(wù)器跨遠(yuǎn)程呈現(xiàn)會話將數(shù)據(jù)發(fā)送給一客戶機時,一些數(shù)據(jù)包括圖像——要發(fā)送給該客戶機的幀。此外,遠(yuǎn)程呈現(xiàn)會話服務(wù)器可以將幀細(xì)分成多個瓦片(tile)(諸如,為改善客戶機端高速緩存,如果已經(jīng)向該客戶機發(fā)送了一瓦片并已經(jīng)存儲了它,則當(dāng)它被遇見時,不向該客戶機再次發(fā)送該瓦片,而是通過向客戶機發(fā)送顯示它已高速緩存的該瓦片的指示來節(jié)省帶寬)。在一個實例中,該第一數(shù)據(jù)包括遠(yuǎn)程呈現(xiàn)會話中的瓦片。在一個實例中,該第一數(shù)據(jù)包括用基于歷史的壓縮器壓縮的數(shù)據(jù)。也就是,數(shù)據(jù)元素η可以用一個操作或一個算法來壓縮,其將數(shù)據(jù)元素η作為輸入且在此操作下壓縮結(jié)果為數(shù)據(jù)元素n-1 (對于數(shù)據(jù)元素η-1,操作進而將數(shù)據(jù)元素η-1作為輸入且在相同操作或過程下壓縮結(jié)果為數(shù)據(jù)元素η-2,以此類推)。在簽名表(其包括在諸如圖1的RAM25的存儲器地址等存儲器位置中存儲第一數(shù)據(jù)和它所對應(yīng)簽名的對的表,如以下更詳細(xì)描述)包括散列表的實施例中,確定第一數(shù)據(jù)的第一簽名包括在該第一數(shù)據(jù)上執(zhí)行散列函數(shù)。該散列函數(shù)的數(shù)據(jù)接著可以被看作第一簽名并插入散列表,作為第一數(shù)據(jù)的密鑰。在一個實例中,操作302還包括確定第一簽名和簽名表的第二簽名抵觸,該第二簽名對應(yīng)于第二已壓縮數(shù)據(jù),并用第一已壓縮數(shù)據(jù)代替該第二已壓縮數(shù)據(jù)。當(dāng)簽名包含比它對應(yīng)的數(shù)據(jù)更少的位時,那么一個簽名必須對應(yīng)多個數(shù)據(jù)成員。給定在簽名表中有沖突可能性——當(dāng)兩個共享相同簽名的不同的已壓縮數(shù)據(jù)要被存儲的情況。在這種情況下,如上所述,可實施最近使用的(MRU)算法,其中簽名表中新使用的數(shù)據(jù)(上述第一已壓縮數(shù)據(jù))代替老數(shù)據(jù)(上述第二已壓縮數(shù)據(jù))時。操作304描述了確定簽名表不包括第一簽名。當(dāng)?shù)谝粩?shù)據(jù)沒有被先前壓縮,那么該第一數(shù)據(jù)將沒有被存儲在簽名表中。因此,如果該第一簽名沒有被存儲在簽名表中,那么可以確定該第一數(shù)據(jù)先前沒有被壓縮,因此沒有高速緩存的第一已壓縮數(shù)據(jù),并且在被在發(fā)送到客戶機之前該第一數(shù)據(jù)將當(dāng)前被壓縮。操作306描述從第一數(shù)據(jù)確定第一已壓縮數(shù)據(jù)。可以諸如通過對第一數(shù)據(jù)執(zhí)行聯(lián)合圖像專家組(JPEG)壓縮來產(chǎn)生對應(yīng)的第一已壓縮數(shù)據(jù)來確定。操作308描述將第一已壓縮數(shù)據(jù)發(fā)送到第一客戶機。這可以諸如通過遠(yuǎn)程呈現(xiàn)會話協(xié)議跨諸如因特網(wǎng)等通信網(wǎng)絡(luò)來完成。操作310描述在簽名表中存儲第一簽名和第一已壓縮數(shù)據(jù)。在簽名表包括散列表的實例中,第一簽名可以包括密鑰,且第一已壓縮數(shù)據(jù)可以包括存儲在中桶的對應(yīng)于該密鑰的數(shù)據(jù)。可以存儲對,包括用第一算法或進程處理第一數(shù)據(jù)的結(jié)果以及第一簽名。本領(lǐng)域技術(shù)人員可以理解,這個操作過程不暗示操作的嚴(yán)格順序,且其各種排列可以被用來實施本技術(shù),可以討論本操作以提供示例。例如,操作310(服務(wù)器側(cè)高速緩存) 發(fā)生在操作308(向客戶機發(fā)送已壓縮數(shù)據(jù))之前,本技術(shù)可以起作用。操作312描述確定第二數(shù)據(jù)的第二簽名,該第二數(shù)據(jù)要被發(fā)送給第二客戶機,基于簽名表,確定該第二簽名匹配第一簽名;并向第二客戶發(fā)送第一已壓縮數(shù)據(jù)。在已高速緩存了第一已壓縮數(shù)據(jù)的情況下,當(dāng)遇到與第一數(shù)據(jù)匹配的新數(shù)據(jù)時,該新數(shù)據(jù)不需要被壓縮,但可以從簽名表中檢索第一已壓縮數(shù)據(jù),從而節(jié)省了計算資源。例如,可以接收要被發(fā)送到其中進行了遠(yuǎn)程呈現(xiàn)會話的第二客戶機的第二數(shù)據(jù)。 在第一數(shù)據(jù)由第一遠(yuǎn)程呈現(xiàn)會話進程始發(fā)的實施例中,第二數(shù)據(jù)可以由第二遠(yuǎn)程呈現(xiàn)會話進程始發(fā)。通過本技術(shù),這兩個進程可以共享來自遠(yuǎn)程呈現(xiàn)會話瓦片化進程的相同輸出,該瓦片化過程將要壓縮的圖像作為輸入,并從它產(chǎn)生包含一個或多個瓦片(可能已壓縮)的輸出,以發(fā)送到遠(yuǎn)程呈現(xiàn)會話中的客戶機。那些瓦片接著被高速緩存在第一遠(yuǎn)程呈現(xiàn)會話進程與其對應(yīng)客戶機之間的客戶機側(cè),從而減少了實現(xiàn)那遠(yuǎn)程呈現(xiàn)會話的帶寬需求。當(dāng)?shù)谝贿h(yuǎn)程呈現(xiàn)會話進程確定客戶機已經(jīng)被發(fā)送了一特定瓦片(并因此把它存儲在客戶機側(cè)高速緩存中),不是再次發(fā)送該瓦片,而是向客戶機發(fā)送從其高速緩存獲取該特定瓦片的指示(該指示需要比發(fā)送該瓦片更小的帶寬,這個技術(shù)減少了帶寬使用)。返回討論已此接收到的第二數(shù)據(jù),為這個第二數(shù)據(jù)確定第二簽名,并接著可以對照簽名表檢查該第二簽名。在這個操作中,確定第二簽名匹配已經(jīng)存儲在簽名表中的第一簽名。例如,在簽名表包括散列表的實例中,這可以通過把第二簽名用作簽名表的密鑰并確定那數(shù)據(jù)(此處,第一已壓縮數(shù)據(jù))存在于對應(yīng)的桶中來實現(xiàn)。由于第一簽名和第二簽名匹配,那指示了第一數(shù)據(jù)和第二數(shù)據(jù)匹配,并且,如果從該第二數(shù)據(jù)確定了第二已壓縮數(shù)據(jù),則它將匹配第一已壓縮數(shù)據(jù)。因此,從第二數(shù)據(jù)產(chǎn)生第二已壓縮數(shù)據(jù)的工作可以被避免,并使用第一已壓縮數(shù)據(jù)(匹配第二已壓縮數(shù)據(jù)),并將其發(fā)送到第二客戶機。以此方式,已壓縮數(shù)據(jù)的高速緩存可以跨由服務(wù)器進行的多個遠(yuǎn)程呈現(xiàn)會話。在一實例中,一旦確定第二簽名匹配第一簽名,就可以進行檢查以確定第一已壓縮數(shù)據(jù)能匹配第二已壓縮數(shù)據(jù),且這個簽名的匹配不僅僅是(在散列表實施例中)沖突的結(jié)果。在實施例中,這包括,基于確定第二簽名匹配第一簽名,用第二操作(或算法)來處理用第一操作(或算法)處理第一數(shù)據(jù)的結(jié)果。例如,在遠(yuǎn)程呈現(xiàn)會話上下文中,第一操作可以是瓦片化操作,其把會話中要發(fā)送的圖像作為輸入,并產(chǎn)生包括那些圖像的已壓縮瓦片(或僅一個這樣的已壓縮瓦片)的第一數(shù)據(jù)集。接著第二操作可以是將已壓縮諸瓦片傳遞到遠(yuǎn)程呈現(xiàn)會話的客戶機的操作。在第一簽名匹配第二簽名的情形中,可以確定用第一操作來處理第一數(shù)據(jù)集的結(jié)果將與用第一操作來處理第二數(shù)據(jù)集的結(jié)果匹配(在該實例中,第二數(shù)據(jù)集不需要用第一操作來處理,因為第一簽名匹配第二簽名)。接著,這個第一數(shù)據(jù)集可以用第二操作來處理,并在發(fā)送到當(dāng)前遠(yuǎn)程呈現(xiàn)會話的客戶機之前,存儲在諸如圖1的通信地耦合到計算設(shè)備的CPU的RAM25的地址的存儲器位置。圖4A描述了在不使用算法執(zhí)行輸出高速緩存進行操作的服務(wù)器上的多個遠(yuǎn)程呈現(xiàn)會話進程??梢岳斫?,圖4A和4B的元素被邏輯地顯示,并且不一定意味著每個單獨元素必須是服務(wù)器的單獨元素或組件。服務(wù)器402包括遠(yuǎn)程呈現(xiàn)會話進程4(Ma、圖像編碼器406a、遠(yuǎn)程呈現(xiàn)會話傳送器 408a、呈現(xiàn)會話進程404b、圖像編碼器406b、遠(yuǎn)程呈現(xiàn)會話傳送器408b。遠(yuǎn)程呈現(xiàn)會話進程 404a與客戶機計算設(shè)備410a進行遠(yuǎn)程呈現(xiàn)會話,而遠(yuǎn)程呈現(xiàn)會話進程404b與客戶機計算設(shè)備410b進行遠(yuǎn)程呈現(xiàn)會話。服務(wù)器402以及客戶機計算設(shè)備410a和410b的每一個可以包括圖1的計算設(shè)備141。遠(yuǎn)程呈現(xiàn)會話進程40 和404b可能向它們各自的客戶機410a和410b發(fā)送完全相同的圖像(例如,全黑屏,或示出缺省壁紙的缺省桌面配置),但是編碼器406a和40 兩者必須單獨編碼這些圖像,因為它們每一個缺乏充分利用另一個可能已經(jīng)執(zhí)行了的進程的途徑。這種在編碼器之間共享能力的缺乏導(dǎo)致使用服務(wù)器處理資源執(zhí)行冗余工作。圖4B描述了在使用算法執(zhí)行輸出高速緩存進行操作的服務(wù)器上的多個遠(yuǎn)程呈現(xiàn)會話進程。在此,當(dāng)遠(yuǎn)程呈現(xiàn)會話進程40 向編碼器406a發(fā)送要被編碼的圖像時,它首先由高速緩存管理器41 處理。高速緩存管理器41 取得該圖像的簽名,接著對照簽名表414 檢查該簽名。如果有匹配,則高速緩存管理器41 從簽名表414檢索對應(yīng)于該簽名的編碼圖像。如果給定該圖像作為輸入,則此所檢索的編碼圖像就應(yīng)該是編碼器406a的輸出。由于編碼器406a的關(guān)于該圖像的輸出是已知的,而無需使用處理器資源來編碼該圖像,因此該編碼圖像可以被高速緩存管理器41 發(fā)送到遠(yuǎn)程呈現(xiàn)會話傳送器408a,在那里它被傳送到客戶機410a。這樣做節(jié)省了處理器資源的使用??梢杂^察到,所描述的數(shù)據(jù)流是示例性的,且本領(lǐng)域技術(shù)人員可以理解其他實例。 例如,高速緩存管理器41 不需要自己從簽名表414檢索編碼圖像,并接著將它發(fā)送到遠(yuǎn)程呈現(xiàn)會話傳送器408a,而在一個實例中,可以指令與簽名表414相關(guān)聯(lián)的一進程將該編碼圖像直接發(fā)送到遠(yuǎn)程呈現(xiàn)會話傳送器408a。當(dāng)在簽名表中沒有該簽名的匹配,該圖像可以接著被發(fā)送到編碼器406a來產(chǎn)生編碼圖像。接著可以將高速緩存管理器41 產(chǎn)生的簽名和編碼器406a產(chǎn)生的編碼圖像存儲在簽名表414中,以使得將來從新圖像中發(fā)現(xiàn)當(dāng)對該簽名的匹配時,可以通過從簽名表 414中獲取對應(yīng)編碼圖像來節(jié)省處理資源。編碼器406a也可以將編碼圖像發(fā)送到遠(yuǎn)程呈現(xiàn)會話傳送器408a,后者進而根據(jù)遠(yuǎn)程呈現(xiàn)會話協(xié)議將其發(fā)送到410a。遠(yuǎn)程呈現(xiàn)會話進程404b與遠(yuǎn)程呈現(xiàn)會話進程40 操作類似。由于遠(yuǎn)程呈現(xiàn)會話進程40 與遠(yuǎn)程呈現(xiàn)會話進程404b兩者共享簽名表414,在圖像被編碼器406a或406b編碼的情形中,編碼圖像對遠(yuǎn)程呈現(xiàn)會話進程404b與遠(yuǎn)程呈現(xiàn)會話進程40 兩個的流都可用。通過這種簽名表414的共享,在服務(wù)的遠(yuǎn)程呈現(xiàn)會話之間避免了冗余編碼。結(jié)論盡管已經(jīng)結(jié)合各附圖所示的較佳方面描述了本發(fā)明,但要理解,可使用其它相似方面或者可對所述方面進行修改或添加來執(zhí)行本發(fā)明的相同功能而不脫離本發(fā)明。因此, 本發(fā)明應(yīng)當(dāng)不限于任何單個方面,而應(yīng)按照所附權(quán)利要求書的廣度與范圍來解釋。例如,本文描述的各種過程可用硬件或軟件、或兩者的組合來實現(xiàn)。因此,所公開的各實施例的方法和裝置或其某些方面或部分可采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其他機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式。當(dāng)程序代碼被加載到諸如計算機等機器并由其執(zhí)行時,該機器變?yōu)楸慌渲贸蓪嵤┧_的各實施例的裝置。除了此處明確闡述的具體實現(xiàn)之外,考慮此處所公開的說明書,其它方面和實現(xiàn)將對本領(lǐng)域的技術(shù)人員是顯而易見的。說明書和所示實現(xiàn)旨在僅被認(rèn)為是示例。
權(quán)利要求
1.一種用于在計算機上處理多個輸入數(shù)據(jù)集中的數(shù)據(jù)的方法,包括 為第一數(shù)據(jù)集確定第一簽名(302);確定簽名表不包括所述第一簽名;用第一操作處理所述第一數(shù)據(jù)集以產(chǎn)生第一結(jié)果(306);將包括所述第一結(jié)果和所述第一簽名的對存儲在存儲于第一存儲器位置中的簽名表 (414)中;用第二操作處理所述第一結(jié)果以產(chǎn)生第二結(jié)果GOSa); 將所述第二結(jié)果存儲在第二存儲器位置; 為第二數(shù)據(jù)集Gl2b)確定第二簽名;基于確定所述第二簽名與所述第一簽名匹配,用所述第二操作處理所述第一結(jié)果以產(chǎn)生第三結(jié)果GOSb);以及將所述第三年結(jié)果存儲在第三存儲器位置。
2.如權(quán)利要求1所述的方法,其特征在于,存儲用所述第二操作處理所述第一輸入數(shù)據(jù)集的結(jié)果包括根據(jù)遠(yuǎn)程呈現(xiàn)會話協(xié)議將所述第三結(jié)果發(fā)送到客戶機。
3.如權(quán)利要求1所述的方法,其特征在于,所述輸入數(shù)據(jù)集包括遠(yuǎn)程呈現(xiàn)會話數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述輸入數(shù)據(jù)集包括圖像。
5.如權(quán)利要求1所述的方法,其特征在于,所述輸入數(shù)據(jù)集包括用基于歷史的壓縮器壓縮的數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,其特征在于,確定所述第一數(shù)據(jù)集的所述第一簽名包括在所述第一數(shù)據(jù)集上執(zhí)行散列函數(shù)。
7.如權(quán)利要求1所述的方法,還包括 將所述簽名表存儲在非易失性存儲器中。
8.一種系統(tǒng),包括 處理器;通信地耦合到所述處理器的存儲器(22),承載計算機可讀指令,當(dāng)在所述處理器上執(zhí)行所述計算機可讀指令時,使得所述處理器執(zhí)行以下操作,包括 為第一數(shù)據(jù)確定第一簽名(302); 確定簽名表不包括所述第一簽名(304); 將所述第一數(shù)據(jù)壓縮為第一已壓縮數(shù)據(jù)(306); 將所述第一已壓縮數(shù)據(jù)發(fā)送到第一客戶機(312); 為第二數(shù)據(jù)確定第二簽名(312); 確定所述第二簽名與所述第一簽名匹配(312);以及將所述第一已壓縮數(shù)據(jù)發(fā)送到第二客戶機(312);
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,還承載計算機可讀指令,當(dāng)在所述處理器上執(zhí)行所述計算機可讀指令時,使得所述處理器執(zhí)行以下操作,包括將所述第一簽名和已處理的第一輸入數(shù)據(jù)存儲到簽名表中。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,還承載計算機可讀指令,當(dāng)在所述處理器上執(zhí)行計算機可讀指令時,使得所述處理器執(zhí)行以下操作,包括為第二輸入數(shù)據(jù)確定第二簽名,所述第二輸入數(shù)據(jù)要被發(fā)送到第二客戶機; 基于所述簽名表,確定所述第二簽名與所述第一簽名匹配;以及將所述第一已處理數(shù)據(jù)發(fā)送到所述第二客戶機。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,還承載計算機可讀指令,當(dāng)在所述處理器上執(zhí)行計算機可讀指令時,使得所述處理器執(zhí)行以下操作,包括將所述簽名表存儲在非易失性存儲器中。
12.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述簽名表包括散列表,并且為所述第一輸入數(shù)據(jù)確定所述第一簽名包括在所述第一輸入數(shù)據(jù)上執(zhí)行散列函數(shù)。
13.如權(quán)利要求13所述的系統(tǒng),其特征在于,還承載計算機可讀指令,當(dāng)在所述處理器上執(zhí)行計算機可讀指令時,使得所述處理器執(zhí)行以下操作,包括確定所述第一簽名和簽名表的第二簽名抵觸,所述第二簽名對應(yīng)于第二已壓縮數(shù)據(jù);以及用所述第一已壓縮數(shù)據(jù)代替所述第二已壓縮數(shù)據(jù)。
14.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述第一輸入數(shù)據(jù)包括圖像。
全文摘要
揭示了算法執(zhí)行輸出高速緩存的技術(shù)。與多個客戶機進行并發(fā)遠(yuǎn)程呈現(xiàn)會話的遠(yuǎn)程呈現(xiàn)會話服務(wù)器,為要發(fā)給客戶機的每個圖像生成一簽名。該遠(yuǎn)程呈現(xiàn)服務(wù)器還維持一包括簽名對和已壓縮圖像的簽名表。每個簽名和已壓縮圖像對對應(yīng)于輸入數(shù)據(jù)(即,簽名從圖像生成,已壓縮圖像從相同圖像生成)。遠(yuǎn)程呈現(xiàn)會話服務(wù)器對照該簽名表檢查簽名。在該遠(yuǎn)程呈現(xiàn)會話服務(wù)器確定在該簽名和簽名表中的一簽名之間有匹配的情形中,它向客戶機發(fā)送在生成該匹配的簽名表中的對應(yīng)于該簽名的已壓縮圖像。這樣做的時候,遠(yuǎn)程呈現(xiàn)會話服務(wù)器可以避免冗余地壓縮第二圖像。
文檔編號H04L29/06GK102195968SQ20111005694
公開日2011年9月21日 申請日期2011年3月1日 優(yōu)先權(quán)日2010年3月2日
發(fā)明者S·戈爾, W·R·施邁德 申請人:微軟公司