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