專利名稱:使用多個處理器的圖像壓縮加速的制作方法
使用多個處理器的圖像壓縮加速
背景技術(shù):
雖然計算機曾經(jīng)被隔離并具有最少的或很少的與其他計算機的交互,但是,當(dāng)今的計算機通過諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)之類的通信網(wǎng)絡(luò)與各種其他計算機進行交互。隨著因特網(wǎng) 的廣泛發(fā)展,計算機之間的連通性變得越來越重要,并開啟了許多新的應(yīng)用和技術(shù)。大規(guī)模的網(wǎng)絡(luò)的發(fā)展,以及低成本的個人計算機的廣泛的可用性,從根本上改變了許多人工作、交互、通信和玩的方式。一種聯(lián)網(wǎng)的越來越流行的形式一般可以被稱為虛擬計算系統(tǒng),其可以使用諸如遠程桌面協(xié)議(RDP)、獨立計算體系結(jié)構(gòu)(ICA)等等之類的協(xié)議,來通過遠程會話與遠程客戶機共享桌面及其他應(yīng)用程序。這樣的計算系統(tǒng)通常將對鍵盤鍵的按壓和鼠標點擊或選擇從客戶端傳輸?shù)椒?wù)器,并通過網(wǎng)絡(luò)連接(例如,因特網(wǎng))在相反方向?qū)⑵聊桓轮欣^回去。 如此,用戶具有好像他們的機器作為LAN的一部分來操作的體驗,當(dāng)在現(xiàn)實中客戶端設(shè)備只發(fā)送如在服務(wù)器側(cè)顯示的應(yīng)用程序的屏幕截圖在。壓縮算法對將遠程會話所使用的帶寬縮小到通過LAN、無線LAN (wLAN)和WAN進行傳輸?shù)募墑e很重要。這些壓縮算法在服務(wù)器上的處理時間與會話所需的較低的帶寬之間折發(fā)。過高的處理時間量會抑制服務(wù)器的可縮放性并延長編碼幀所需的時間,這會降低遠程會話的總體幀率(FPQ。低的FPS會對用戶體驗造成負面影響,因為會話可能感覺不平穩(wěn),并感覺沒有響應(yīng)。當(dāng)前編碼系統(tǒng)缺乏利用許多現(xiàn)代的計算機中存在的多個處理器或處理核的方式。 這種處理資源的最大化的缺乏導(dǎo)致壓縮時間高于應(yīng)有的壓縮時間。
發(fā)明內(nèi)容
在一個實施例中,通過使用每個核地分配物理中央處理單元(CPU)線程的多處理器(或核)工作管理器,可以利用多個處理器的資源。將要被編碼的圖像被分成一系列的切片一與圖像相同寬度的矩形條。工作管理器動態(tài)地平衡工作并將工作分配到可用的核, 以及收集完成通知以允許最終的已壓縮的圖像切片被重新裝配到連貫的已壓縮的圖像。工作管理器將切片發(fā)送到可用的處理器,如將切片分派到第一可用的處理器。向其分派了切片的處理器獨立地壓縮切片。工作管理器從每一個相應(yīng)的核接收每一個切片的完成通知, 并將那些已壓縮的切片裝配為已壓縮的圖像。通過利用多個處理器或核,加快了壓縮速度。通過分割圖像并將圖像的切片分配到不同的核,減少緩存顛簸(thrashing)。有各種用于動態(tài)地將切片的壓縮工作負荷分配到不同的處理器的技術(shù)??梢詫崿F(xiàn)對應(yīng)的技術(shù)來解壓縮已壓縮的圖像。那些本技術(shù)技術(shù)人員可以理解,本發(fā)明的一個或多個各個方面可包括,但不僅限于,用于實行本公開的此處引用的各方面的電路和/或編程;電路和/或編程可以幾乎是被配置成取決于系統(tǒng)設(shè)計人員的設(shè)計選擇而達成此處引用的各方面的硬件、軟件和/或固件的任何組合。
前面的內(nèi)容是小結(jié),如此,根據(jù)需要,包含簡述、概括,省略了詳細內(nèi)容。本領(lǐng)域的技術(shù)人員將理解,概述只是說明性的,而不以任何方式作出限制。
將參考各個附圖進一步描述根據(jù)此說明書的系統(tǒng)、方法,以及計算機可讀介質(zhì),其中圖1示出了其中可以具體化此處所描述的多處理器圖像編碼的示例性通用計算環(huán)境。圖2描繪了用于實施本公開的各方面的操作環(huán)境。圖3示出了通過使用多處理器圖像編碼的遠程桌面協(xié)議(RDP)進行通信的客戶機和服務(wù)器。圖4示出了用于多處理器圖像編碼的示例性操作過程。
具體實施例方式圖1是其中可以使用此處所描述的技術(shù)的通用計算設(shè)備的框圖。計算系統(tǒng)環(huán)境 120只是合適的計算環(huán)境的一個示例,并且不旨在對所公開的主題的使用范圍或功能提出任何限制。也不應(yīng)該將計算環(huán)境120解釋為對示例性操作環(huán)境120中示出的任一組件或其組合有任何依賴性或要求。在一些實施例中,各種所描繪的計算元件可包括被配置成實例化本發(fā)明的特定方面的電路。例如,本公開中使用的術(shù)語電路可包括被配置成通過固件或開關(guān)來執(zhí)行功能的專用硬件組件。在其他示例實施例中,術(shù)語電路可包括通過體現(xiàn)可操作以執(zhí)行功能的邏輯的軟件指令配置的通用處理單元、存儲器等等。在其中電路包括硬件和軟件的組合的示例實施例中,實施者可以編寫體現(xiàn)邏輯的源代碼,且源代碼可以被編譯為可以由通用處理單元處理的機器可讀代碼。由于所屬領(lǐng)域技術(shù)人員可以理解,現(xiàn)有技術(shù)已經(jīng)發(fā)展到在硬件、軟件或硬件/軟件的組合之間差別微小的程度,為實現(xiàn)特定功能而選擇硬件還是軟件是交由實施者處理的設(shè)計選擇。更具體而言,本領(lǐng)域技術(shù)人員可以理解,可以將軟件進程轉(zhuǎn)換成等效的硬件結(jié)構(gòu),也可以將硬件結(jié)構(gòu)本身轉(zhuǎn)換成等效的軟件進程。如此, 選擇硬件實現(xiàn)還是軟件實現(xiàn)是一種設(shè)計選擇,并交由實施者處理。計算機141通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可以被計算機141訪問的任何可用的介質(zhì),并包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。系統(tǒng)存儲器122包括易失性和/或非易失性存儲器形式的計算機存儲介質(zhì),如只讀存儲器(ROM) 123和隨機存取存儲器(RAM) 160。基本輸入/輸出系統(tǒng)IM(BIC)Q通常存儲在 ROM 123中,包含了諸如在啟動過程中幫助在計算機141內(nèi)的元件之間傳輸信息的基本例程。RAM 160通常包含處理單元159可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非限制,圖1示出了操作系統(tǒng)125、應(yīng)用程序126、其他程序模塊127,以及程序數(shù)據(jù)128。計算機141也可以包括其他可移動的/不可移動的,易失性/非易失性的計算機存儲介質(zhì)。只作為示例,圖1示出了讀寫不可移動、非易失性磁性介質(zhì)的硬盤驅(qū)動器138,讀寫可移動、非易失性磁盤IM的磁盤驅(qū)動器139,以及讀寫諸如CD ROM或其他光學(xué)介質(zhì)之類的可移動的,非易失性光盤153的光盤驅(qū)動器140??梢栽谑纠圆僮鳝h(huán)境中使用的其他可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器138通常由不可移動存儲器接口,諸如接口 Π4連接至系統(tǒng)總線121,磁盤驅(qū)動器139和光盤驅(qū)動器140通常由可移動存儲器接口,諸如接口 135連接至系統(tǒng)總線121。上文所討論的并且在圖1中所示出的驅(qū)動器以及它們的相關(guān)聯(lián)的計算機存儲介質(zhì),為計算機141提供了計算機可讀的指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊及其他數(shù)據(jù)的存儲。例如, 在圖1中,硬盤驅(qū)動器138被示為存儲了操作系統(tǒng)158、應(yīng)用程序157,其他程序模塊156, 以及程序數(shù)據(jù)155。注意,這些組件可以與操作系統(tǒng)125、應(yīng)用程序126、其他程序模塊127 和程序數(shù)據(jù)1 相同,也可以與它們不同。此處給操作系統(tǒng)158、應(yīng)用程序157、其他程序模塊156以及程序數(shù)據(jù)155提供了不同的編號,以說明至少它們是不同的副本。用戶可以通過諸如鍵盤151和指示設(shè)備152(通常被稱為鼠標、軌跡球或觸摸板)之類的輸入設(shè)備向計算機141中輸入命令和信息。其他輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲手柄、 圓盤式衛(wèi)星天線、掃描儀等等。這些和其他輸入設(shè)備通常通過耦合至系統(tǒng)總線的用戶輸入接口 136連接至處理單元159,但也可以由其他接口和總線結(jié)構(gòu),例如并行端口、游戲端口或通用串行總線(USB)來連接。監(jiān)視器142或其他類型的顯示設(shè)備也通過接口,例如視頻接口 132,連接至系統(tǒng)總線121。除監(jiān)視器之外,計算機還可以包括可以通過輸出外圍接口 133連接的諸如揚聲器144和打印機143之類的其他外圍輸出設(shè)備。計算機141可以使用到一個或多個遠程計算機(如遠程計算機146)的邏輯連接, 以在聯(lián)網(wǎng)環(huán)境中操作。遠程計算機146可以是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他公共網(wǎng)絡(luò)節(jié)點,通常包括上文參考計算機141所描述的許多或全部元件,雖然圖1中只示出了存儲器設(shè)備147。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN) 145和廣域網(wǎng) (WAN) 149,但是,也可以包括其他網(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ò)接口或適配器137連接至LAN 145。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機141通常包括調(diào)制解調(diào)器150或用于通過例如因特網(wǎng)等WAN 149建立通信的其他裝置。調(diào)制解調(diào)器150可以是內(nèi)置或外置的,它可以經(jīng)由用戶輸入接口 136或其他適當(dāng)?shù)臋C制連接至系統(tǒng)總線121。在聯(lián)網(wǎng)環(huán)境中,參考計算機141 所描述的程序模塊,或其某些部分,可以存儲在遠程存儲器存儲設(shè)備中。作為示例而非限制,圖1示出了駐留在存儲器設(shè)備147上的遠程應(yīng)用程序148。可以理解,所示出的網(wǎng)絡(luò)連接只是示例性的,也可以使用用于在計算機之間建立通信鏈路的其他裝置?,F(xiàn)在參考圖2,它一般性地示出了其中可以實現(xiàn)本公開的各方面的示例環(huán)境。所屬領(lǐng)域技術(shù)人員可以理解,圖2所描繪的示例元件提供用于描述本公開的操作框架。因此,在某些實施例中,取決于不同的實現(xiàn)方案,環(huán)境的物理布局可以不同。如此,示例操作框架被視為只是說明性的,決不限制權(quán)利要求的范圍。所屬領(lǐng)域技術(shù)人員也可以理解,下面的討論是介紹性的,在圖3到圖8的操作過程的討論內(nèi)比較詳細地描述了由圖2所描繪的元件。一般而言,圖2描繪了可以被配置成包括本公開的各方面的終端服務(wù)器環(huán)境的高級別總覽。參考該圖,描繪了服務(wù)器204,其可包括被配置成實現(xiàn)終端服務(wù)器以及例如三個示例客戶機201、202以及203 (盡管描繪了三個客戶機,但是,在各實施例中,服務(wù)器204可以服務(wù)于較多或較少的客戶機)的電路。示例客戶機201-203可包括由被配置成將用戶輸入定向到服務(wù)器204并顯示由服務(wù)器204所生成的用戶界面信息的硬件實現(xiàn)的計算機終端。在其他實施例中,客戶機201-203可以是包括與圖1的計算機20的那些元件類似的元件的計算機。在這些示例實施例中,客戶機201-203可包括被配置成實施操作系統(tǒng)的電路和被配置成仿真終端的功能的電路。在這些示例中,所屬領(lǐng)域技術(shù)人員可以理解,被配置成實現(xiàn)操作系統(tǒng)的電路也可以包括被配置成仿真終端的電路。在所描繪的示例中,服務(wù)器204可以被配置成生成用于連接客戶機201、202和203 的一個或多個會話,如會話1到N(其中,N是大于1的整數(shù))。簡單來說,本公開的示例實施例中的會話一般可以包括由多個子系統(tǒng)(例如,軟件代碼)實現(xiàn)的操作環(huán)境,這些子系統(tǒng)被配置成實現(xiàn)執(zhí)行環(huán)境并與操作系統(tǒng)214的內(nèi)核218進行交互。例如,會話可包括諸如桌面之類的外殼和用戶界面、跟蹤桌面內(nèi)的鼠標移動的子系統(tǒng)、將對圖標的鼠標點擊轉(zhuǎn)換為實現(xiàn)程序的實例的命令的子系統(tǒng)等等。在另一示例實施例中,會話可包括應(yīng)用程序。在此示例中,在呈現(xiàn)應(yīng)用程序時,仍可以生成桌面環(huán)境,其對用戶隱藏。此示例中的會話可包括與上文所描述的會話類似的子系統(tǒng)。一般而言,當(dāng)例如服務(wù)器204通過網(wǎng)絡(luò)連接從諸如客戶機201之類的客戶機接收連接請求時,會話可以由服務(wù)器204逐個用戶地生成。一般而言,連接請求可以首先由輸送邏輯210來處理,輸送邏輯210可以例如由服務(wù)器204的電路來實現(xiàn)。在某些實施例中,輸送邏輯210可以包括網(wǎng)絡(luò)適配器、固件以及軟件,它們可以被配置成偵聽連接消息,并將它們轉(zhuǎn)發(fā)到引擎212。如圖2所示,當(dāng)生成會話時,輸送邏輯210 可包括每一個會話的協(xié)議堆棧實例。一般而言,每一個協(xié)議堆棧實例都可以被配置成將用戶界面輸出路由到相關(guān)聯(lián)的客戶機,并將從相關(guān)聯(lián)的客戶機接收到的用戶輸入路由到適當(dāng)?shù)臅捄藢?。如圖2所描繪的,在會話生成過程中,引擎212可以被配置成獲得會話的許可證。 例如,在一個示例實施例中,引擎212可以在會話生成過程期間從客戶機201中接收許可證。在其他示例實施例中,引擎212可以從許可證數(shù)據(jù)庫222中接收許可證的副本。在本公開的某些實施例中,許可證數(shù)據(jù)庫222可包括關(guān)系型數(shù)據(jù)庫管理程序,該程序可以在諸如圖1的計算機20之類的計算機的操作系統(tǒng)上執(zhí)行。在包括許可證數(shù)據(jù)庫222的一示例實施例中,數(shù)據(jù)庫可以存儲一個或多個許可證,當(dāng)客戶機試圖從服務(wù)器204獲取會話時可以檢查這些許可證。在另一實施例中,每一個許可證本身都可以與帳戶標識符相關(guān)聯(lián),例如, 用戶名/密碼組合、智能卡標識符等等,并且,只有在存在正確的帳戶標識符的情況下才檢查每一個許可證。一般而言,服務(wù)器204可以生成的連接的數(shù)量可以取決于控制服務(wù)器204 的實體從服務(wù)供應(yīng)商購買的許可證的數(shù)量。如果例如實體已經(jīng)購買了一個許可證,那么,服務(wù)器204可以被配置成只允許一個會話。在此示例中,如果許可證與帳戶標識符相關(guān)聯(lián),那么,只有提供了正確的帳戶標識符的用戶才可以獲取會話。在本公開的示例實施例中,在許可證可以被使用之前,可以由服務(wù)供應(yīng)商262驗證每一個許可證。例如,在示例實施例中,服務(wù)供應(yīng)商262可以充當(dāng)授權(quán)和激活許可證和服務(wù)器的證書管理機構(gòu)。在這些實施例中,服務(wù)供應(yīng)商262可以確保許可證不被盜竊、復(fù)制或盜版。服務(wù)供應(yīng)商262也可以通過將許可證的副本存儲在數(shù)據(jù)庫中并將許可證與服務(wù)器 204與相關(guān)聯(lián)來確保許可證只能供購買了許可證的服務(wù)器204使用。如圖2所示,在本公開的一示例實施例中,配置管理器2 可包括計算機可讀指令,這些計算機可讀指令在被執(zhí)行時,實例化在會話創(chuàng)建進程期間可以接收許可證并通過與諸如會話管理器216之類的各種子系統(tǒng)接口來確定新衍生的會話的服務(wù)級別的進程。在一個實施例中,會話管理器216可以被配置成通過,例如,為會話空間生成會話標識符;將會話標識符添加到表中;向會話空間分配存儲器;以及,在被分配給會話空間的存儲器中生成系統(tǒng)環(huán)境變量以及子系統(tǒng)進程的實例,來初始化和管理每一個會話。如圖2所示,在一個實施例中,會話管理器216可以實例化可包括諸如會話核244之類的內(nèi)核模式部分的諸如運行時子系統(tǒng)240之類的環(huán)境子系統(tǒng)。例如,在一個實施例中,環(huán)境子系統(tǒng)可以被配置成向應(yīng)用程序展示服務(wù)的子集,并提供到操作系統(tǒng)214的內(nèi)核218的接入點。如圖2所示,在某些實施例中,內(nèi)核218可包括安全子系統(tǒng)250和資源管理器256。在一示例實施例中,安全子系統(tǒng)250可以通過例如執(zhí)行運行時對象保護來實施服務(wù)器204的安全策略。在這些實施例中,一個實施例中的資源管理器256可以響應(yīng)于來自運行時子系統(tǒng)240的請求,創(chuàng)建和終止進程和線程。更具體而言,在一個實施例中,運行時子系統(tǒng)240可以請求線程的執(zhí)行, 會話核244可以將請求發(fā)送到內(nèi)核218的執(zhí)行程序,以為線程分配存儲器,并為它們調(diào)度執(zhí)行時間。繼續(xù)圖2的描述,在一個實施例中,會話核244可包括圖形顯示界面M6 (⑶I)和輸入子系統(tǒng)252。在一示例實施例中,輸入子系統(tǒng)252可以被配置成通過與會話相關(guān)聯(lián)的協(xié)議堆棧實例來接收來自客戶機201的用戶輸入,并將輸入傳輸?shù)綍捄藢?。在某些實施例中,用戶輸入可以包括表示絕對和/或相對鼠標移動命令、鼠標坐標、鼠標點擊的信號; 鍵盤信號;游戲桿移動信號等等。用戶輸入,例如,對圖標的鼠標雙擊,可以由會話核244接收,輸入子系統(tǒng)252可以被配置成確定圖標位于與雙擊相關(guān)聯(lián)的坐標處。然后,輸入子系統(tǒng) 252可以被配置成將通知發(fā)送到可以為與圖標相關(guān)聯(lián)的應(yīng)用程序執(zhí)行進程的運行時子系統(tǒng) 240。除接收來自客戶機201的輸入之外,還可以從應(yīng)用程序和/或桌面接收繪制命令, 并由GDI 246對它們進行處理。一般而言,GDI 246可包括可以生成圖形對象繪制命令的進程。在此示例實施例中,⑶I 246可以被配置成將命令傳遞到可以為會話實例化顯示驅(qū)動程序的遠程顯示子系統(tǒng)254。在一示例實施例中,遠程顯示子系統(tǒng)2M可以被配置成包括虛擬顯示驅(qū)動程序,該虛擬顯示驅(qū)動器可以不與在物理上附接到服務(wù)器204的顯示器相關(guān)聯(lián),例如,服務(wù)器204可以無頭地運行。在此實施例中,虛擬顯示驅(qū)動程序可以被配置成接收繪制命令,并通過與會話相關(guān)聯(lián)的堆棧實例,將它們傳輸?shù)娇蛻魴C201。圖3示出了通過遠程會話進行通信的客戶機316和服務(wù)器302,其中,服務(wù)器使用它發(fā)送到客戶機的圖像310的多處理器壓縮??蛻魴C316與服務(wù)器302經(jīng)由遠程會話通信,這是由服務(wù)器302上的遠程服務(wù)器 304通過通信網(wǎng)絡(luò)314與客戶機316上的遠程客戶機318通信來實現(xiàn)的。遠程客戶機318 將諸如鼠標移動或鍵擊之類的輸入命令發(fā)送到遠程服務(wù)器304,該遠程服務(wù)器304對它們進行解釋,并向客戶機318發(fā)送對應(yīng)于該輸入的結(jié)果的圖像數(shù)據(jù)310。例如,客戶機316可以發(fā)出鼠標移動和點擊以打開視頻。服務(wù)器304將接收此輸入信息,確定作為結(jié)果視頻將被播放,并將得到的圖像310,以及對應(yīng)于正在被播放的該視頻的可能的音頻發(fā)送到客戶機 318,以便顯示在顯示設(shè)備320上。服務(wù)器302通常壓縮它發(fā)送到客戶機316的圖像310,以便節(jié)省帶寬。在本系統(tǒng)上,服務(wù)器302將每一個圖像310發(fā)送到工作管理器306,該工作管理器306跨多個處理器308或服務(wù)器302上存在的核中的每一個管理每一個圖像310的壓縮。工作管理器306將接收圖像310,并將它分割為一個或多個切片312。典型的遠程會話壓縮算法可以對瓦片 (例如,6虹64像素方塊)或條帶(例如,1680x2像素矩形)進行操作,切片312通常是圖像 310的大得多的部分(例如,1680xU8像素)。切片312可以被選擇以便避免處理器308的任何緩存顛簸問題。在壓縮的過程中,可以進一步將切片312分割為瓦片或條帶,但是,切片312是被分配給處理器308的單位,如此,一個切片312內(nèi)的所有瓦片或條帶仍保持分配給該核。工作管理器306維護它用來壓縮圖像310的與每一個處理器308相關(guān)聯(lián)的線程。 隨著工作管理器306生成切片312,它將每一個切片分派到線程中的一個。工作管理器306 可以使用各種技術(shù)來最大化線程分派的效率,如通過將切片312分配給第一個可用的線程、使多個切片312在一線程上排隊,以使得該線程決不缺少要壓縮的切片312。當(dāng)在其對應(yīng)的處理器308上執(zhí)行線程時,然后,壓縮切片312。在一個實施例中, 通過行程編碼(RLE)壓縮方案,壓縮切片312。一旦壓縮了切片312,工作管理器306就接收這樣的指示。當(dāng)工作管理器306接收到給定圖像310中的每一個切片312被壓縮的指示時,它將壓縮的圖像提供給遠程服務(wù)器304,遠程服務(wù)器304跨通信網(wǎng)絡(luò)314將它傳輸?shù)竭h程客戶機318。遠程客戶機318接收到壓縮的圖像,并指示客戶機316在顯示設(shè)備320上顯示接收到的圖像。切片312已經(jīng)被壓縮的指示可以包括指向已壓縮的切片312駐留的存儲器位置的指針。在此實施例中,工作管理器306可以對這些指針排序,以便第一指針指向圖像的開始,最后一個指針指向圖像的末尾,兩者之間的任何指針都被相應(yīng)地排序。切片312可以按照任何順序完成。正是工作管理器306以任何順序接收這些切片312,在一個實施例中,它構(gòu)建指向已壓縮的切片312的壓縮輸出緩沖區(qū)的指針的有序列表。一旦圖像的所有切片312已經(jīng)被壓縮,則該圖像被視為完全被壓縮。在一個實施例中,工作管理器306可以檢索每一個已壓縮的切片312,然后,將已壓縮的圖像(由那些已壓縮的切片312組成)存儲在存儲器的相鄰的范圍中。在一個實施例中,由客戶機從已壓縮的切片312裝配已壓縮的圖像。服務(wù)器向客戶機發(fā)送每一個已壓縮的切片312以及關(guān)于它屬于哪個圖像以及它在圖像內(nèi)屬于哪里的某種指示,客戶機從該信息裝配圖像。在一個實施例中,服務(wù)器在發(fā)送另一個圖像之前結(jié)束發(fā)送一個圖像,如此,信息可以包括切片312的總數(shù)以及目前發(fā)送的切片312是哪一個切片 312(如總共五個切片312中的第二個,或者在已經(jīng)通知客戶機總共有五個切片312時信息僅包括第二切片31 。在一個實施例中,服務(wù)器可以向客戶機發(fā)送來自交錯的多個圖像的切片312,如此,對于每一個切片312的指示可以包括它屬于哪一個圖像以及它是圖像的哪一部分(例如,圖像15的總共五個切片312中的第二個)。在一個實施例中,遠程服務(wù)器是同步的。在它將圖像分派到工作管理器306之后, 它同步地阻塞(block),等待圖像被壓縮,并接收已壓縮的圖像的輸出。在一個實施例中,遠程服務(wù)器是異步的。遠程服務(wù)器將圖像分派到工作管理器 306,然后,立即進行進一步處理,如解析接收到的客戶機輸入或生成第二圖像供工作管理器306壓縮。它稍后從工作管理器306接受異步完成通知,包括圖像已經(jīng)被壓縮的指示或經(jīng)過壓縮的圖像本身。
圖4示出了用于在多處理器系統(tǒng)上壓縮圖像供通過遠程會話傳輸?shù)氖纠圆僮鬟^程。多處理器系統(tǒng)可以具有多個處理核或多個離散的處理器。在一個實施例中,圖像包括遠程會話幀,如應(yīng)用程序窗口或可包括應(yīng)用程序窗口的整個桌面。在一個實施例中,圖像包括位圖。在一個實施例中,圖像具有寬度,每一個瓦片的寬度都等于圖像的寬度。操作402描繪了將圖像分割為多個切片。在一個實施例中,圖像是矩形,而每一個切片也是矩形,并與圖像具有相同水平尺寸一即寬度。操作404描繪了對于至少兩個處理器的每一個,逐個處理器地關(guān)聯(lián)線程。工作管理器可以為每一個處理器維護它在壓縮圖像時所使用的線程。操作406描繪了將每一個切片分配給相關(guān)聯(lián)的線程。工作管理器可以使用各種技術(shù)來最大化可用的處理器資源。例如,在一個實施例中,將切片分配到相關(guān)聯(lián)的線程包括將切片分配到對應(yīng)于具有未使用的處理資源的處理器的相關(guān)聯(lián)的線程。操作408描繪了對于每一個切片,接收切片已經(jīng)被處理的指示。在一個實施例中, 切片已經(jīng)被處理的指示包括指向?qū)?yīng)的已壓縮的輸出緩沖區(qū)的指針。操作410描繪了將切片裝配成第二圖像,該第二圖像對應(yīng)于正在被壓縮的圖像??蛇x操作412描繪了根據(jù)遠程會話協(xié)議將第二圖像發(fā)送到客戶機。在一個實施例中,遠程會話協(xié)議包括遠程桌面協(xié)議(RDP)。在一個實施例中,從遠程會話堆棧接收圖像,遠程會話堆棧在提供圖像時同步地阻塞,而操作412包括向遠程會話堆棧發(fā)送圖像已經(jīng)被壓縮的指示。結(jié)論盡管是結(jié)合如各種圖形所示的優(yōu)選方面來描述本公開的,但是,應(yīng)該理解,可以使從其中其他類似的方面,或可以對所描述的各方面進行修改和添加,以便執(zhí)行本公開的相同功能,而不會產(chǎn)生偏離。因此,本發(fā)明不應(yīng)該僅限于任何單個方面,而是應(yīng)該在根據(jù)所附權(quán)利要求書的廣度和范圍內(nèi)解釋。例如,此處所描述的各種過程可以利用硬件或軟件,或者,利用兩者的組合來實現(xiàn)。因此,所公開的實施例的方法和裝置,或其某些方面或部分,也可以以在有形介質(zhì)(如軟盤、CD-ROM、硬盤驅(qū)動器,或任何其他機器可讀存儲介質(zhì))中實現(xiàn)的程序代碼(即,指令)的形式來實現(xiàn)。當(dāng)程序代碼被加載到諸如計算機之類的機器中并由它們執(zhí)行時,機器變?yōu)橛糜谒_的實施例的裝置。除此處顯式地闡述的特定實現(xiàn)之外, 通過考慮此處所公開的說明書,其他方面和實現(xiàn)將對本領(lǐng)域的技術(shù)人員顯而易見。說明書和所示出的實現(xiàn)只被視為示例。
權(quán)利要求
1.一種用于在具有多個處理器的系統(tǒng)上壓縮圖像(310)的方法,包括 將所述圖像分割為多個切片(312) (402);對于至少兩個處理器(308)中的每一個,逐個處理器地關(guān)聯(lián)線程G04);將每一個切片分配到相關(guān)聯(lián)的線程006);對于每一個切片,接收所述切片已經(jīng)被處理的指示G08);以及將所述切片裝配成第二圖像,所述第二圖像對應(yīng)于正在被壓縮的所述圖像(410)。
2.如權(quán)利要求1所述的方法,其特征在于,還包括 根據(jù)遠程會話協(xié)議將所述第二圖像發(fā)送到客戶機。
3.如權(quán)利要求1所述的方法,其特征在于,所述圖像包括遠程會話幀。
4.如權(quán)利要求1所述的方法,其特征在于,所述圖像具有寬度,每一個瓦片的寬度都等于所述圖像的所述寬度。
5.如權(quán)利要求1所述的方法,其特征在于,還包括通過遠程會話,跨通信網(wǎng)絡(luò)將所述第二圖像發(fā)送到客戶機。
6.如權(quán)利要求5所述的方法,其特征在于,所述遠程會話包括遠程桌面協(xié)議(RDP)。
7.如權(quán)利要求5所述的方法,其特征在于,從遠程會話堆棧接收所述圖像,所述遠程會話堆棧在提供所述圖像時同步地阻塞,還包括向所述遠程會話堆棧發(fā)送所述圖像已經(jīng)被壓縮的指示。
8.如權(quán)利要求5所述的方法,其特征在于,從遠程會話堆棧接收所述圖像,所述遠程會話堆棧在提供所述圖像時異步地阻塞,還包括向所述遠程會話堆棧發(fā)送所述圖像已經(jīng)被壓縮的指示。
9.如權(quán)利要求1所述的方法,其特征在于,將切片分配到相關(guān)聯(lián)的線程包括 將切片分配到對應(yīng)于具有未使用的處理資源的處理器的相關(guān)聯(lián)的線程。
10.如權(quán)利要求1所述的方法,其特征在于,所述切片已經(jīng)被處理的指示包括指向?qū)?yīng)的已壓縮的輸出緩沖區(qū)的指針。
11.如權(quán)利要求1所述的方法,其特征在于,所述圖像包括位圖。
12.一種用于壓縮圖像(31)的系統(tǒng),包括 多個處理器(308);存儲了計算機可讀指令的至少一個存儲器,當(dāng)指令在所述多個處理器中的一個處理器上執(zhí)行時,使所述處理器執(zhí)行下列操作將所述圖像分割為多個切片(312) (402);對于所述多個處理器中的至少兩個處理器中的每一個,逐個處理器地關(guān)聯(lián)線程 (404);將每一個切片分配到相關(guān)聯(lián)的線程006); 對于每一個切片,接收所述切片已經(jīng)被處理的指示G08);以及將每一個已處理的切片發(fā)送到客戶機G10)。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,將每一個已處理的切片發(fā)送到客戶機包括發(fā)送每一個切片以及該切片表示所述圖像的什么部分的對應(yīng)的指示。
14.如權(quán)利要求12所述的系統(tǒng),其特征在于,將每一個已處理的切片發(fā)送到客戶機包括向所述客戶機發(fā)送已壓縮的圖像,所述已壓縮的圖像包括每一個切片。
15.如權(quán)利要求12所述的系統(tǒng),其特征在于,將每一個已處理的切片發(fā)送到客戶機包括通過遠程會話將每一個已處理的切片發(fā)送到所述客戶機。
全文摘要
公開了用于加速多處理器計算機上的圖像壓縮的系統(tǒng)、方法以及計算機可讀介質(zhì)。在一個實施例中,圖像被分成多個切片,每一個切片都具有與圖像相同的寬度。這些切片被提供給為每一個處理器維護線程的工作管理器。工作管理器將每一個切片分配到線程供以高效的方式進行處理(如對應(yīng)于第一可用的處理器的線程),當(dāng)接收到每一個切片的切片已經(jīng)被壓縮的指示時,工作管理器裝配壓縮的圖像。
文檔編號G06F15/163GK102378976SQ201080016209
公開日2012年3月14日 申請日期2010年4月1日 優(yōu)先權(quán)日2009年4月1日
發(fā)明者N·Y·阿布多, V·A·阿爾布 申請人:微軟公司