的各個(gè)輸入端和輸出端的公共總線或互聯(lián)電線被可操作地耦合。GPU 253和控制器255可經(jīng)由數(shù)字視頻接口(DVI)或一個(gè)或多個(gè)高清多媒體接口(HDMI)連接器和/或電纜或其他適當(dāng)?shù)倪B接器相連接。在另一個(gè)實(shí)例中,網(wǎng)絡(luò)接口 257、LAN接口 221和WAN接口 223可以全部是相同的接口,它們被可操作地連接至主機(jī)首要計(jì)算設(shè)備202和主機(jī)硬件組件251。
[0046]圖3示出主機(jī)計(jì)算設(shè)備的軟件和硬件組件的框圖以及在主機(jī)計(jì)算設(shè)備的各種資源之間的數(shù)據(jù)流。在一些實(shí)施方案中,軟件組件301可包括托管的桌面環(huán)境和應(yīng)用303以及操作系統(tǒng)305。托管的桌面環(huán)境303可以是基于服務(wù)器或基于遠(yuǎn)程的應(yīng)用,其由主機(jī)計(jì)算設(shè)備201代表客戶端設(shè)備240的用戶執(zhí)行。在一些實(shí)施方案中,主機(jī)計(jì)算設(shè)備201可使用諸如由佛羅里達(dá)州勞德代爾堡的Citrix系統(tǒng)公司開(kāi)發(fā)的獨(dú)立計(jì)算結(jié)構(gòu)(ICA)協(xié)議或由華盛頓雷德蒙德的微軟公司開(kāi)發(fā)的遠(yuǎn)程桌面協(xié)議(RDP)的瘦客戶端或遠(yuǎn)程顯示協(xié)議向客戶端計(jì)算設(shè)備顯示輸出數(shù)據(jù)。
[0047]托管的桌面環(huán)境303可包括用戶會(huì)話,該用戶會(huì)話包括遠(yuǎn)程表示層協(xié)議棧。在一些實(shí)施方案中,控制托管的桌面環(huán)境303的進(jìn)程和處理器可操作或執(zhí)行軟件指令和/或數(shù)據(jù)以與在客戶端設(shè)備240上執(zhí)行的代理服務(wù)(未示出)通信。另外,控制托管的桌面環(huán)境303的進(jìn)程和處理器可操作或執(zhí)行軟件指令以傳輸和接收來(lái)自主機(jī)系統(tǒng)存儲(chǔ)器307的其他數(shù)據(jù)和指令。主機(jī)系統(tǒng)存儲(chǔ)器307可包括上述關(guān)于圖2所討論的隨機(jī)存取存儲(chǔ)器(RAM) 205或非易失性存儲(chǔ)器207。
[0048]操作系統(tǒng)軟件305可實(shí)施上述關(guān)于圖1所討論的操作系統(tǒng)123的特征,用于控制數(shù)據(jù)處理設(shè)備的總體操作。另外地或可選地,操作系統(tǒng)軟件305可包括用于實(shí)現(xiàn)托管的桌面環(huán)境與應(yīng)用303和客戶端設(shè)備240之間的傳輸和接收的控制邏輯、數(shù)據(jù)和指令。另外,執(zhí)行該控制邏輯、數(shù)據(jù)和指令的進(jìn)程或處理器可操作或執(zhí)行軟件指令和/或數(shù)據(jù)以傳輸和接收來(lái)自主機(jī)系統(tǒng)存儲(chǔ)器307的其他數(shù)據(jù)和指令。
[0049]托管的桌面環(huán)境和應(yīng)用303可將數(shù)據(jù)和指令傳輸給硬件子組件251的資源和組件。在一些實(shí)施方案中,可經(jīng)由鏈接309和311分別將圖形數(shù)據(jù)和非圖形數(shù)據(jù)從托管的桌面環(huán)境和應(yīng)用303傳輸至圖形處理單元253和控制器255。在其它實(shí)施方案中,類似地可使用單一鏈接諸如,比如,鏈接313將圖形和非圖形數(shù)據(jù)傳輸至控制器255。在一些實(shí)施方案中,也可在托管的桌面環(huán)境與應(yīng)用303和網(wǎng)絡(luò)接口 257之間建立數(shù)據(jù)鏈接315,以便不使用控制器255的資源將數(shù)據(jù)傳輸給客戶端。圖3示出當(dāng)利用操作系統(tǒng)305的諸如硬件驅(qū)動(dòng)器的軟件和固件資源時(shí)的數(shù)據(jù)鏈接309、311、313和315。然而,在一些實(shí)施方案中,數(shù)據(jù)鏈接309,311,313和315可被實(shí)施而依靠這些操作系統(tǒng)資源。一些實(shí)施方案可包括可選的網(wǎng)絡(luò)交換機(jī)330,其是可配置用于處理和按規(guī)定路線發(fā)送數(shù)據(jù)的物理或邏輯設(shè)備。該可選的網(wǎng)絡(luò)交換機(jī)可包括用于上述討論的網(wǎng)絡(luò)接口的多個(gè)端口,該網(wǎng)絡(luò)接口包括LAN接口 221、WAN接P 223和網(wǎng)絡(luò)接口 257。
[0050]上述組件允許圖形數(shù)據(jù)通過(guò)網(wǎng)絡(luò)被傳輸,而不先將圖形數(shù)據(jù)(或通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù))提供給與通用或主機(jī)處理器通信的系統(tǒng)存儲(chǔ)器或以其它方式涉及系統(tǒng)存儲(chǔ)器。系統(tǒng)存儲(chǔ)器可以是,例如,系統(tǒng)RAM(如系統(tǒng)RAM205)、非易失性存儲(chǔ)器(如非易失性存儲(chǔ)器207)或可直接被通用或主機(jī)處理器(如主機(jī)處理器203)使用的其他存儲(chǔ)器。事實(shí)上,如圖3的數(shù)據(jù)流所示,可能受到諸如渲染和處理的進(jìn)一步的處理以用于傳輸?shù)膱D形數(shù)據(jù)可通過(guò)網(wǎng)絡(luò)被直接從硬件組件251的組合的GPU/控制器/網(wǎng)絡(luò)接口傳輸至一個(gè)或多個(gè)客戶端設(shè)備。
[0051]圖4A示出示例性控制器系統(tǒng)結(jié)構(gòu)。具體地說(shuō),該說(shuō)明性的結(jié)構(gòu)提供關(guān)于控制器255的一個(gè)或多個(gè)實(shí)施方案的額外的細(xì)節(jié)??刂破?55的任何部分可在硬件、軟件、固件或其組合或其類似的組件中實(shí)施。例如,控制器255可用片上系統(tǒng)(S0C)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或處理器和存儲(chǔ)器的任何組合實(shí)施。例如,包括控制器255的各種硬件電路塊的實(shí)例可包括圖形數(shù)據(jù)壓縮器401、數(shù)據(jù)包生成器403、數(shù)據(jù)包截取器405、數(shù)據(jù)包插進(jìn)器407、數(shù)據(jù)包再同步器409、連接處理程序411和/或處理器413??刂破?55可包括控制器存儲(chǔ)器415,其可被配置用于存儲(chǔ)由處理器413執(zhí)行的指令和/或數(shù)據(jù)。控制器255還可包括輸入和輸出資源417,其可被配置以接收來(lái)自主機(jī)首要計(jì)算設(shè)備202的任何一個(gè)或多個(gè)組件的、包括圖形和非圖形數(shù)據(jù)的任何數(shù)據(jù)。另外,控制器255可經(jīng)由輸入和輸出模塊417被連接至GPU 253,以及網(wǎng)絡(luò)接口 257 (如果存在的話)。
[0052]進(jìn)一步參考圖4B,其示出促進(jìn)往返主機(jī)首要計(jì)算設(shè)備202和主機(jī)硬件組件251的數(shù)據(jù)通信的軟件組件440的示例性結(jié)構(gòu)。在一些變型中,軟件組件可被實(shí)施為應(yīng)用219中的一個(gè)應(yīng)用,且在一些實(shí)例中,可通過(guò)主機(jī)處理器203被執(zhí)行。軟件組件440可被配置為促進(jìn)來(lái)自主機(jī)計(jì)算設(shè)備201和到客戶端設(shè)備240、242的數(shù)據(jù)通信。另外地和可選地,軟件組件440可被存儲(chǔ)在控制器存儲(chǔ)器315中。軟件組件可被配置了控制器管理器453和VDI (虛擬桌面基礎(chǔ)結(jié)構(gòu))協(xié)議生成器451。在一些實(shí)施方案中,VDI協(xié)議生成器451和控制器管理器453可以是單一應(yīng)用的一部分。通用處理器203可執(zhí)行存儲(chǔ)在主機(jī)存儲(chǔ)器215中的數(shù)據(jù)以調(diào)用控制器管理器453和VDI協(xié)議生成器451。
[0053]VDI協(xié)議生成器451可被配置為生成關(guān)于VDI協(xié)議的數(shù)據(jù)和/或指令。VDI協(xié)議包括諸如ICA(獨(dú)立計(jì)算結(jié)構(gòu))的表示層協(xié)議,例如從佛羅里達(dá)州勞德代爾堡的Citrix系統(tǒng)公司購(gòu)買(mǎi)的ICA和/或任何其它VDI協(xié)議。
[0054]控制器管理器453可被配置為生成數(shù)據(jù)和/或指令以促進(jìn)主機(jī)計(jì)算設(shè)備201的各種資源和控制器255的各種資源之間的通信。
[0055]圖5-7呈現(xiàn)了將硬件渲染的圖形數(shù)據(jù)從主機(jī)計(jì)算設(shè)備201傳遞到客戶端設(shè)備240的說(shuō)明性方法。這些說(shuō)明性方法可在實(shí)施各種硬件和軟件組件或圖1-4描繪的其它資源的一個(gè)或多個(gè)系統(tǒng)上實(shí)施。如上所述,該硬件渲染的圖形數(shù)據(jù)可并入由在主機(jī)計(jì)算設(shè)備201上執(zhí)行的應(yīng)用生成的用于客戶端設(shè)備的顯示輸出。因此,硬件渲染的圖形數(shù)據(jù)可包括需要傳輸至客戶端計(jì)算設(shè)備240的圖形數(shù)據(jù)。
[0056]參考圖5,其示出通過(guò)將圖形數(shù)據(jù)插進(jìn)數(shù)據(jù)流來(lái)將來(lái)自主機(jī)計(jì)算設(shè)備201的圖形數(shù)據(jù)傳輸給客戶端設(shè)備240的方法,在步驟501可生成連接句柄。
[0057]連接句柄可包括關(guān)于主機(jī)計(jì)算設(shè)備201和客戶端設(shè)備240之間的一個(gè)或多個(gè)連接的信息,該一個(gè)或多個(gè)連接使用上面描述的各種網(wǎng)絡(luò)和子網(wǎng)絡(luò)。連接句柄還可包括關(guān)于用于在主機(jī)計(jì)算設(shè)備201和客戶端設(shè)備240和242之間發(fā)送數(shù)據(jù)的遠(yuǎn)程表示協(xié)議的信息。
[0058]在一些實(shí)施方案中,連接句柄可由主機(jī)首要計(jì)算設(shè)備202的一個(gè)或多個(gè)軟件應(yīng)用和/或硬件模塊生成,包括由操作系統(tǒng)213和控制器管理器453生成。一些實(shí)施方案可經(jīng)由特定的硬件尋址消息將連接句柄從控制器管理器453傳遞到控制器255及其資源。在其它實(shí)施方案中,連接句柄可通過(guò)控制器255在軟件和/或硬件中生成,包括通過(guò)連接句柄模塊411生成。
[0059]在步驟503,可生成圖形數(shù)據(jù)包模板(此處也可互換地稱為模板)。圖形數(shù)據(jù)包模板可包括描述在主機(jī)計(jì)算設(shè)備201和一個(gè)或多個(gè)客戶端設(shè)備(如客戶機(jī)240)之間傳輸諸如圖形數(shù)據(jù)的數(shù)據(jù)的包的形成和結(jié)構(gòu)的信息。模板還可包括描述用于在主機(jī)計(jì)算設(shè)備和客戶端設(shè)備240和242之間傳送數(shù)據(jù)的遠(yuǎn)程表示協(xié)議的信息。另外,圖形數(shù)據(jù)包模板可包括描述組件255形成圖形數(shù)據(jù)包的方式的信息。
[0060]模板可用任何機(jī)器可讀語(yǔ)言編寫(xiě),機(jī)器可讀語(yǔ)言包括但不限于諸如可擴(kuò)展標(biāo)記語(yǔ)言(XML)的標(biāo)記語(yǔ)言和/或諸如JavaScript對(duì)象表示法(JSON)或YAML非標(biāo)記語(yǔ)言(YAML)的數(shù)據(jù)序列化格式。在一些實(shí)施方案中,圖形數(shù)據(jù)包模板可由主機(jī)首要計(jì)算設(shè)備202的一個(gè)或多個(gè)軟件應(yīng)用和/或硬件模塊生成,包括由存在于應(yīng)用存儲(chǔ)器219中的控制器管理器353單獨(dú)生成,或與操作系統(tǒng)213協(xié)同工作或結(jié)合生成。在一些實(shí)施方案中,圖形數(shù)據(jù)包模板可通過(guò)控制器255在軟件和/或硬件中生成,包括通過(guò)數(shù)據(jù)包生成器模塊411生成。
[0061]在一些實(shí)施方案中,步驟501和503可被當(dāng)作初始步驟,其在主機(jī)計(jì)算設(shè)備201和客戶端計(jì)算設(shè)備240之間的連接被建立時(shí)發(fā)生。另外地和可選地,在一些實(shí)施方案中,可很少(如,依據(jù)周期性調(diào)度或以被編碼到軟件組件中的特定次數(shù))生成模板并將該模板存儲(chǔ)在主機(jī)計(jì)算設(shè)備201的各個(gè)資源中。在一些變型中,模板可被用于多個(gè)主機(jī)-客戶端通信會(huì)話。因此,步驟501和503的順序可以是可反轉(zhuǎn)的;8卩,可在生成連接句柄之前生成模板。
[0062]在步驟505之前,可確定數(shù)據(jù)的某些部分將被從主機(jī)計(jì)算設(shè)備201傳送到客戶端設(shè)備240。這可能是因?yàn)槔缰皞魉偷臄?shù)據(jù)過(guò)期而需要對(duì)數(shù)據(jù)刷新。另外地和可選地,由于或響應(yīng)于由主機(jī)計(jì)算設(shè)備201或客戶端設(shè)備240或在主機(jī)計(jì)算設(shè)備201或客戶端設(shè)備240上執(zhí)行的某個(gè)動(dòng)作,數(shù)據(jù)部分將被傳送。例如,可確定幀緩沖區(qū)可能需要更新。在一些實(shí)施方案中,幀緩沖區(qū)可包括桌面環(huán)境和/或在桌面環(huán)境上運(yùn)行的應(yīng)用的圖像。
[0063]在步驟505,可以確定將被傳送的數(shù)據(jù)部分是圖形數(shù)據(jù)還是非圖形數(shù)據(jù)。在一些變型中,圖形數(shù)據(jù)可以是需要在諸如GPU 253的渲染器處附加處理、渲染和/或獲得的數(shù)據(jù)。非圖形數(shù)據(jù)可以是可被傳送而不需要不可忽略的附加處理或渲染的數(shù)據(jù)。在一些實(shí)施方案中,軟件組件440的控制器管理器453或一些其它軟件資源可執(zhí)行步驟505的確定。
[0064]例如,將被傳送的數(shù)據(jù)部分可包括PCI數(shù)據(jù),且步驟505的確定可通過(guò)軟件組件440的驅(qū)動(dòng)器(如Citrix的PCI總線驅(qū)動(dòng)器、多路復(fù)用/多路分配驅(qū)動(dòng)器或?yàn)V波器驅(qū)動(dòng)器)執(zhí)行。驅(qū)動(dòng)器可執(zhí)行確定并基于數(shù)據(jù)源給將被傳送的數(shù)據(jù)加上標(biāo)簽(如,圖形數(shù)據(jù)可來(lái)自GPU適配器驅(qū)動(dòng)器,非圖形數(shù)據(jù)可來(lái)自以太網(wǎng)驅(qū)動(dòng)器)。在加上標(biāo)簽后,依據(jù)數(shù)據(jù)是圖形還是非圖形數(shù)據(jù),將被傳送的數(shù)據(jù)可穿過(guò)信道(如PCIe信道)被多路復(fù)用用于處理。處理可包括依據(jù)標(biāo)簽將數(shù)據(jù)放置在兩個(gè)處理隊(duì)列(如,一個(gè)用于圖形數(shù)據(jù)而一個(gè)用于非圖形數(shù)據(jù))中的一個(gè)隊(duì)列中,并在準(zhǔn)備好進(jìn)一步處理時(shí)分派來(lái)自各自隊(duì)列的數(shù)據(jù)(如,來(lái)自圖形數(shù)據(jù)隊(duì)列的