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

虛擬客戶機(jī)計(jì)算環(huán)境中的命令的硬件處理的制作方法

文檔序號:6569224閱讀:256來源:國知局
專利名稱:虛擬客戶機(jī)計(jì)算環(huán)境中的命令的硬件處理的制作方法
技術(shù)領(lǐng)域
本發(fā)明通常涉及虛擬客戶機(jī)計(jì)算環(huán)境,例如,Microsoft Windows Terminal Services (終端服務(wù))環(huán)境,更具體地,本發(fā)明涉及在這種環(huán)境中的 命令的硬件處理,例如,在這種環(huán)境中的圖形硬件對圖形相關(guān)命令的處理 (Microsoft和Windows是Microsoft公司在美國、其它國家,或者在美國與 其它國家中的商標(biāo))。
背景技術(shù)
通常,公司機(jī)構(gòu)均擁有數(shù)十、數(shù)百、或者成千上萬的計(jì)算機(jī)用戶。歷史 上,每一個計(jì)算機(jī)用戶均具有他或她自己的客戶機(jī)計(jì)算設(shè)備。通常,所有計(jì) 算機(jī)用戶的客戶機(jī)計(jì)算設(shè)備經(jīng)由網(wǎng)絡(luò)互相連接,這在很大程度上減輕了對設(shè) 備的管理。然而,通常,在客戶機(jī)計(jì)算設(shè)備自身上仍需某些維護(hù)工作,這意 味著管理員和其他信息技術(shù)(IT)人員必須周期性地訪問每一客戶機(jī)計(jì)算設(shè) 備,這是非常耗費(fèi)時間以及非常昂貴的。而且,向每一計(jì)算機(jī)用戶提供單獨(dú) 的計(jì)算設(shè)備,本身也需要很高的代價。
因此,近期,許多公司機(jī)構(gòu)已把它們的計(jì)算資源移植到終端服務(wù)型環(huán)境, 其在此處被稱為虛擬客戶機(jī)計(jì)算環(huán)境。在這些類型的環(huán)境中,中央服務(wù)器計(jì) 算設(shè)備掌管大量的計(jì)算機(jī)用戶,并且向每一用戶賦予運(yùn)行在服務(wù)器計(jì)算設(shè)備 上的操作系統(tǒng)中的單獨(dú)的對話。每一計(jì)算機(jī)用戶仍具有一個客戶機(jī)計(jì)算設(shè)備, 然而,這種客戶機(jī)計(jì)算設(shè)備主要用作簡易型終端(dumb terminal )。用戶在客 戶機(jī)計(jì)算設(shè)備處提供輸入,并且客戶機(jī)計(jì)算設(shè)備向用戶提供輸出,而在服務(wù) 器計(jì)算設(shè)備處執(zhí)行所有應(yīng)用程序處理。這種虛擬客戶機(jī)計(jì)算環(huán)境的例子包括 Microsoft Windows Terminal Services環(huán)境,即來自于于佛羅里達(dá),F(xiàn)ort Lauderdale的Citrix Systems的虛擬客戶機(jī)計(jì)算環(huán)境。
虛擬客戶機(jī)計(jì)算環(huán)境的優(yōu)越性至少有兩個原因。首先,由于計(jì)算機(jī)用戶 的客戶機(jī)計(jì)算設(shè)備僅執(zhí)行輸入/輸出功能,所以計(jì)算機(jī)用戶的客戶機(jī)計(jì)算設(shè) 備不必特別復(fù)雜。從而,每個用戶的開銷實(shí)質(zhì)上減少了。例如,取代擁有最新的和昂貴的處理器以及其它硬件組件,客戶機(jī)計(jì)算設(shè)備可以具有較便宜的 和較慢的處理器以及其它較便宜的硬件組件。整體性能并未下降,因?yàn)樵诜?務(wù)器計(jì)算設(shè)備處而不是在客戶機(jī)計(jì)算設(shè)備處執(zhí)行主要的應(yīng)用程序處理。
第二,基本上在服務(wù)器計(jì)算設(shè)備自身,而不是在客戶機(jī)計(jì)算設(shè)備處進(jìn)行 對這種多用戶系統(tǒng)的維護(hù)。例如,對存儲器、處理能力、硬盤驅(qū)動器存儲器 等進(jìn)行的升級均通過在服務(wù)器計(jì)算設(shè)備而不是在客戶機(jī)計(jì)算設(shè)備處增加這些
資源來來提供。因此,減小了 IT人員所承受的維護(hù)開銷,因?yàn)镮T人員不必 訪問每一客戶機(jī)計(jì)算設(shè)備來執(zhí)行許多常規(guī)的維護(hù)任務(wù)。
使用虛擬客戶機(jī)計(jì)算環(huán)境的一個缺點(diǎn)是在圖形處理領(lǐng)域。通常,至少部 分地由專用圖形硬件,而不僅僅在軟件中執(zhí)行復(fù)雜的圖形處理。根據(jù)諸如 OpenGL的標(biāo)準(zhǔn)對圖形相關(guān)命令進(jìn)行了標(biāo)準(zhǔn)化。運(yùn)行在計(jì)算設(shè)備上的應(yīng)用程 序向運(yùn)行在計(jì)算設(shè)備上的操作系統(tǒng)提供這種圖形相關(guān)命令。操作系統(tǒng)依次把 這些命令傳遞給計(jì)算設(shè)備的圖形硬件,其對這些命令進(jìn)行處理,以在計(jì)算設(shè) 備的顯示設(shè)備上顯示或者返回向應(yīng)用程序報(bào)告。使用專用圖形硬件處理圖形 相關(guān)命令提供了與如果在軟件中處理這種圖形相關(guān)命令、即像任何其它軟件 那樣由計(jì)算設(shè)備的處理器、而不由專門的硬件來輔助處理這種圖形相關(guān)命令 的情況相比通常要快若干量級的圖形處理。
然而,不能很好地令虛擬客戶機(jī)計(jì)算環(huán)境利用專用圖形硬件處理圖形相 關(guān)命令。如果把圖形硬件定位在客戶機(jī)計(jì)算設(shè)備本身處,則其不能夠由運(yùn)行 在服務(wù)器計(jì)算設(shè)備上的虛擬客戶機(jī)計(jì)算環(huán)境中的客戶機(jī)應(yīng)用程序使用。其原 因在于,客戶機(jī)應(yīng)用程序運(yùn)行在服務(wù)器計(jì)算設(shè)備上提供的操作系統(tǒng)的范圍內(nèi), 因而無法訪問對客戶機(jī)計(jì)算設(shè)備本身上的用于處理圖形相關(guān)命令的圖形硬 件。而且,即使這種訪問是可能的,向客戶機(jī)計(jì)算設(shè)備添加昂貴的圖形硬件, 首先有悖于擁有虛擬客戶機(jī)計(jì)算環(huán)境的初衷,即通過把客戶機(jī)計(jì)算設(shè)備主要 用作簡易型終端來節(jié)省開銷。
另外,如果把圖形硬件設(shè)置在服務(wù)器計(jì)算設(shè)備處,則通常不能由運(yùn)行在 服務(wù)器計(jì)算設(shè)備上的虛擬客戶機(jī)計(jì)算環(huán)境中的客戶機(jī)應(yīng)用程序來使用。例如, 在Microsoft Windows⑧環(huán)境中,僅可以由運(yùn)行在服務(wù)器計(jì)算設(shè)備上的服務(wù)器 應(yīng)用程序直接訪問圖形硬件,而不能由運(yùn)行在服務(wù)器計(jì)算設(shè)備上的虛擬客戶 機(jī)計(jì)算環(huán)境中的客戶機(jī)應(yīng)用程序來訪問。
在來自紐約的Armonk的International Business Machines 7>司的;果度計(jì)算可視化(DCV)產(chǎn)品中找到Linux@環(huán)境中解決這一問題的方案。(Linux為 Linux Torvalds在美國、其它國家,或者在美國與其它國家中的注冊商標(biāo))。 DCV通常允許運(yùn)行在服務(wù)器計(jì)算設(shè)備上的虛擬客戶機(jī)計(jì)算環(huán)境中的客戶機(jī) 應(yīng)用程序服務(wù)器計(jì)算設(shè)備的圖形硬件,甚至在把這種程序的輸出顯示在客戶 機(jī)計(jì)算設(shè)備處而不是顯示在服務(wù)器計(jì)算設(shè)備處的情況下。DCV利用了各種處 理間通信(IPC)機(jī)制,以便客戶機(jī)應(yīng)用程序可以把圖形相關(guān)命令傳送至服務(wù) 器計(jì)算設(shè)備的圖形硬件,然后,把針對圖形相關(guān)命令的響應(yīng)傳送回所述程序 本身,或者將其顯示在客戶機(jī)計(jì)算設(shè)備處。
然而,已發(fā)現(xiàn)DCV在Microsoft Windows⑧環(huán)境中的圖形相關(guān)命令處理中 提供并非最佳的性能。為客戶機(jī)計(jì)算設(shè)備的利益訪問服務(wù)器計(jì)算設(shè)備的圖形 硬件旨在增強(qiáng)圖形性能,所以DVC的非最佳性能意味著DCV不是足夠解決 這一問題的方案。

發(fā)明內(nèi)容
本發(fā)明涉及虛擬客戶機(jī)計(jì)算環(huán)境中的命令的硬件處理,例如通過圖形硬 件對圖形相關(guān)命令的處理。
根據(jù)第一方面,提供了一種服務(wù)器計(jì)算設(shè)備,該服務(wù)器計(jì)算設(shè)備包含圖 形硬件、第一和第二隊(duì)列、虛擬客戶機(jī)計(jì)算環(huán)境以及服務(wù)器計(jì)算環(huán)境。圖形 硬件用于把圖形相關(guān)命令處理為圖形相關(guān)命令響應(yīng)。虛擬客戶機(jī)計(jì)算環(huán)境用 于與通信地耦合于服務(wù)器計(jì)算設(shè)備的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備進(jìn)行交互。所述虛 擬客戶機(jī)計(jì)算環(huán)境包括發(fā)布圖形相關(guān)命令的編碼應(yīng)用。該編碼應(yīng)用包括接收 圖形相關(guān)命令并且把圖形相關(guān)命令放置在第 一隊(duì)列上的第 一線程。所述編碼 應(yīng)用還包括從第二隊(duì)列接收圖形相關(guān)命令響應(yīng)并且把圖形相關(guān)命令響應(yīng)傳送 給遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的顯示設(shè)備的第二線程。服務(wù)器計(jì)算環(huán)境用于管理虛 擬客戶機(jī)計(jì)算環(huán)境,并且包括解碼應(yīng)用。該解碼應(yīng)用包括第三線程,該第三 線程從第 一 隊(duì)列接收圖形相關(guān)命令、把圖形相關(guān)命令傳送給圖形硬件以進(jìn)行 處理、從圖形硬件接收圖形相關(guān)命令響應(yīng)、以及把圖形相關(guān)命令響應(yīng)放置在 第二隊(duì)列上。
優(yōu)選地提供這種能力允許運(yùn)行在基于Microsoft Windows⑧的服務(wù)器計(jì) 算設(shè)備上的虛擬客戶機(jī)計(jì)算環(huán)境中的客戶機(jī)應(yīng)用程序來掌控這種服務(wù)器計(jì)算 設(shè)備的圖形硬件,有利于客戶機(jī)計(jì)算設(shè)備。這種掌控優(yōu)選地提供接近下述性能實(shí)現(xiàn)了好象把圖形硬件安裝在客戶機(jī)計(jì)算設(shè)備本身上,并且可以由客戶 機(jī)應(yīng)用程序來訪問。 ,
根據(jù)第二方面,提供了一種包含硬件、虛擬客戶機(jī)計(jì)算環(huán)境以及服務(wù)器 計(jì)算環(huán)境的服務(wù)器計(jì)算設(shè)備。所述硬件用于與能夠僅在軟件中實(shí)現(xiàn)相比更快 地把具體命令處理為響應(yīng)。虛擬客戶機(jī)計(jì)算環(huán)境用于與通信地耦合于服務(wù)器 計(jì)算設(shè)備的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備進(jìn)行交互并且用于發(fā)布具體命令,而且虛擬 客戶機(jī)計(jì)算環(huán)境包括第一線程和第二線程。所述服務(wù)器計(jì)算環(huán)境用于管理虛 擬客戶機(jī)計(jì)算環(huán)境,并且包括第三線程。第一線程用于接收在虛擬客戶機(jī)計(jì) 算環(huán)境中發(fā)布的具體命令,并且把它們放置在第一隊(duì)列上。第二線程用于從 第二隊(duì)列接收響應(yīng),并且把它們傳送給遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的相應(yīng)硬件。第 三線程用于從第一隊(duì)列接收具體命令,把它們傳送給硬件以進(jìn)行處理、從硬 件接收響應(yīng)、以及把它們放置在第二隊(duì)列上。
根據(jù)第三方面,提供了一種方法,該方法包含通過服務(wù)器計(jì)算設(shè)備的虛 擬客戶機(jī)計(jì)算環(huán)境的第一線程接收運(yùn)行在服務(wù)器計(jì)算設(shè)備的虛擬客戶機(jī)計(jì)算
環(huán)境中的編碼應(yīng)用所發(fā)布的圖形相關(guān)命令。虛擬客戶機(jī)計(jì)算環(huán)境用于與通信 地耦合于服務(wù)器計(jì)算設(shè)備的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備進(jìn)行交互。服務(wù)器計(jì)算環(huán)境 用于管理虛擬客戶機(jī)計(jì)算環(huán)境。第 一線程把圖形相關(guān)命令放置在第 一 隊(duì)列上。 服務(wù)器計(jì)算環(huán)境的第三線程從第一隊(duì)列接收圖形相關(guān)命令。第三線程把圖形 相關(guān)命令傳送給服務(wù)器計(jì)算設(shè)備的圖形硬件,以處理成圖形相關(guān)命令響應(yīng)。 第三線程從圖形硬件接收圖形相關(guān)命令響應(yīng),并且將其放置在第二隊(duì)列上。 虛擬客戶機(jī)計(jì)算環(huán)境的第二線程從第二隊(duì)列接收圖形相關(guān)命令響應(yīng),并且將
其傳送給遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的顯示設(shè)備。
根據(jù)第四方面,提供了一種制造產(chǎn)品,該產(chǎn)品包括計(jì)算機(jī)可讀媒介、以 及該媒介中的第一、第二和第三裝置。所述媒介可以是可記錄的數(shù)據(jù)存儲媒 介、調(diào)制的載波信號、或者另外類型的計(jì)算機(jī)可讀媒介。第一裝置用于接收 在虛擬客戶機(jī)計(jì)算環(huán)境中發(fā)布的命令,并且把這些命令放置在第一隊(duì)列上。 第二裝置用于從第二隊(duì)列接收響應(yīng),并且把它們傳送給與虛擬客戶機(jī)計(jì)算環(huán) 境相關(guān)的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的相應(yīng)硬件。第三裝置用于從第一隊(duì)列接收命 令、把它們傳送給硬件以處理成響應(yīng)、從硬件接收響應(yīng)、并且把它們放置在 第二隊(duì)列上。
本發(fā)明的實(shí)施例提供了優(yōu)于現(xiàn)有技術(shù)的優(yōu)點(diǎn)。與以上所描述的深度計(jì)算可視化(DCV)現(xiàn)有技術(shù)相同,本發(fā)明的實(shí)施例控制由運(yùn)行在服務(wù)器計(jì)算設(shè) 備上的客戶機(jī)應(yīng)用程序所使用的服務(wù)器計(jì)算設(shè)備處的圖形硬件,用于在遠(yuǎn)程 客戶機(jī)計(jì)算設(shè)備的顯示設(shè)備上顯示信息。然而,本發(fā)明的實(shí)施例固有的體系 結(jié)構(gòu)提供了優(yōu)于DCV和其它現(xiàn)有技術(shù)的明顯性能增益。例如,如以上所描述 的線程和隊(duì)列的具體使用向本發(fā)明的實(shí)施例提供了優(yōu)于DCV和其它現(xiàn)有技 術(shù)的明顯性能改進(jìn)。
通過閱讀以下的詳細(xì)描述,并且參照附圖,本發(fā)明的更多其它優(yōu)點(diǎn)、方 面以及實(shí)施例將變得十分明顯。


現(xiàn)在,將僅以舉例的方式,并且參照以下的附圖,描述
具體實(shí)施例方式
圖1是根據(jù)本發(fā)明的實(shí)施例的、用于實(shí)現(xiàn)虛擬客戶機(jī)計(jì)算環(huán)境的計(jì)算機(jī) 體系結(jié)構(gòu)的圖。
圖2是根據(jù)本發(fā)明的實(shí)施例的、用于在虛擬客戶機(jī)計(jì)算環(huán)境中實(shí)現(xiàn)高性 能圖形相關(guān)命令處理的服務(wù)器計(jì)算設(shè)備的體系結(jié)構(gòu)的圖。
圖3是根據(jù)本發(fā)明的實(shí)施例的、可以在圖2的計(jì)算機(jī)體系結(jié)構(gòu)中使用的 隊(duì)列的圖。
圖4是根據(jù)本發(fā)明的實(shí)施例的、可以在圖3的隊(duì)列中使用的隊(duì)列項(xiàng)的圖。 圖5A、 5B、 5C以及5D是根據(jù)本發(fā)明的各種實(shí)施例的、用于在虛擬客 戶機(jī)計(jì)算環(huán)境中實(shí)現(xiàn)高性能圖形相關(guān)命令處理的方法的流程圖。
具體實(shí)施例方式
在以下對本發(fā)明的示范性實(shí)施例的詳細(xì)描述中,參考形成其一部分的附 圖,在附圖中,通過可以實(shí)現(xiàn)本發(fā)明的說明具體示范實(shí)施例來示出。詳盡地 描述對這些實(shí)施例以便使本技領(lǐng)域技術(shù)人員能夠?qū)嵺`本發(fā)明。在不背離本發(fā) 明的構(gòu)思或者范圍的情況下,也可以使用其它的實(shí)施例,并且可以進(jìn)行邏輯 的、機(jī)械的以及其它改動。因此,以下的詳細(xì)描述不是限制性的,本發(fā)明的 范圍僅由所附權(quán)利要求來定義。
圖1示出根據(jù)本發(fā)明的實(shí)施例的、用于實(shí)現(xiàn)虛擬客戶機(jī)計(jì)算環(huán)境的計(jì)算 機(jī)體系結(jié)構(gòu)100。所述虛擬客戶機(jī)計(jì)算環(huán)境可以是Microsoft Windows Terminal Services環(huán)境,即4弗羅里達(dá)、Fort Lauderdale的Citrix Systems公司所提供的虛擬客戶機(jī)計(jì)算環(huán)境;或者另外類型的終端服務(wù)或者虛擬客戶機(jī)計(jì) 算環(huán)境。計(jì)算機(jī)體系結(jié)構(gòu)100包括服務(wù)器計(jì)算設(shè)備102和遠(yuǎn)程客戶機(jī)計(jì)算設(shè) 備104。
服務(wù)器計(jì)算設(shè)備102包括虛擬客戶機(jī)計(jì)算環(huán)境108和服務(wù)器計(jì)算環(huán)境 110,它們主要是軟件應(yīng)用;以及處理器114、圖形硬件116和通常在服務(wù)器 計(jì)算設(shè)備中發(fā)現(xiàn)的然而為了便于說明未在圖1中對它們描述的其它類型的硬 件。虛擬客戶機(jī)計(jì)算環(huán)境108對應(yīng)于遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104。在遠(yuǎn)程客戶 機(jī)計(jì)算設(shè)備104處執(zhí)行遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的用戶的全部或者基本全部 的輸入和輸出。但在,虛擬客戶機(jī)計(jì)算環(huán)境108中實(shí)現(xiàn)對這種輸入的全部或 者基本全部的處理以提供這種輸出。于是,可以假定虛擬客戶機(jī)計(jì)算環(huán)境108 與經(jīng)由網(wǎng)絡(luò)或者其它機(jī)制通信地耦合于服務(wù)器計(jì)算設(shè)備102的遠(yuǎn)程客戶機(jī)計(jì) 算設(shè)備104進(jìn)行交互。盡管圖1中僅描述了一個虛擬客戶機(jī)計(jì)算環(huán)境和一個 遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104,但實(shí)際上,通常將存在一個以上這種計(jì)算環(huán)境和 一個以上這種客戶機(jī)計(jì)算設(shè)備。
虛擬客戶機(jī)計(jì)算環(huán)境108運(yùn)行作為操作系統(tǒng)中的對話。于是,客戶機(jī)應(yīng) 用程序、例如客戶機(jī)應(yīng)用112運(yùn)行在針對遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的計(jì)算機(jī) 用戶的計(jì)算環(huán)境108中。在一個實(shí)施例中,虛擬客戶機(jī)計(jì)算環(huán)境108可以運(yùn) 行在服務(wù)器計(jì)算設(shè)備102的其自己的分區(qū)中。服務(wù)器計(jì)算環(huán)境110是針對所 有虛擬客戶機(jī)計(jì)算環(huán)境的管理環(huán)境,因此管理虛擬客戶機(jī)計(jì)算環(huán)境108。例 如,服務(wù)器計(jì)算環(huán)境110可以負(fù)責(zé)管理諸如運(yùn)行在其中的客戶機(jī)應(yīng)用程序的 虛擬客戶機(jī)計(jì)算環(huán)境的執(zhí)行與管理,也可以負(fù)責(zé)這種虛擬客戶機(jī)計(jì)算環(huán)境的 安裝與刪除。在一個實(shí)施例中,服務(wù)器計(jì)算環(huán)境110可以運(yùn)行在服務(wù)器計(jì)算 設(shè)備102的其自己的部分中。
因此,用戶與遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104進(jìn)行交互,好像客戶機(jī)應(yīng)用112 是運(yùn)行在安裝于遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104上的操作系統(tǒng)上的那樣。然而,實(shí) 際上,操作系統(tǒng)被安裝在服務(wù)器計(jì)算設(shè)備102上。使用諸如處理器114和圖 形硬件116的服務(wù)器計(jì)算設(shè)備102的硬件資源,把來自用戶的輸入從遠(yuǎn)程客 戶機(jī)計(jì)算設(shè)備104傳遞到虛擬客戶機(jī)計(jì)算環(huán)境108,以由客戶機(jī)應(yīng)用112和 該環(huán)境108中的其它應(yīng)用處理。然后,把向用戶的輸出從客戶機(jī)應(yīng)用112以 及環(huán)境108中的其它應(yīng)用傳遞給遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104,例如,在遠(yuǎn)程客 戶機(jī)計(jì)算設(shè)備104中可將其顯示在遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的顯示設(shè)備106上。
于是,遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104用作簡易型終端。在虛擬客戶機(jī)計(jì)算環(huán) 境108中,客戶機(jī)計(jì)算設(shè)備104從用戶那里接收輸入,并且向用戶顯示輸出, 但在服務(wù)器計(jì)算設(shè)備102處處理輸入和輸出本身。因此,例如,在需要對處 理能力進(jìn)行升級的情況下,僅需對服務(wù)器計(jì)算設(shè)備102的硬件進(jìn)行升級,而 不需要對遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的硬件進(jìn)行升級。還由圖1的計(jì)算機(jī)體系 結(jié)構(gòu)100實(shí)現(xiàn)通??蓺w結(jié)于終端服務(wù)和其它類型的虛擬客戶機(jī)計(jì)算環(huán)境的其 它優(yōu)點(diǎn)。因此,虛擬客戶機(jī)計(jì)算環(huán)境108是這樣一種虛擬環(huán)境其中,不將 其設(shè)置在計(jì)算機(jī)用戶本身的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104處,而將其設(shè)置在通常 不可由計(jì)算機(jī)用戶物理地訪問的服務(wù)器計(jì)算設(shè)備102處。
圖2更詳細(xì)地示出了根據(jù)本發(fā)明的實(shí)施例的、用于通過運(yùn)行在虛擬客戶 機(jī)計(jì)算環(huán)境中的客戶機(jī)應(yīng)用程序?qū)崿F(xiàn)高性能圖形處理的服務(wù)器計(jì)算設(shè)備102 的體系結(jié)構(gòu)。虛擬客戶機(jī)計(jì)算環(huán)境108包括作為軟件的編碼應(yīng)用202。服務(wù) 器計(jì)算環(huán)境110包括也是軟件的解碼應(yīng)用204。服務(wù)器計(jì)算設(shè)備102還包括 在虛擬客戶機(jī)計(jì)算環(huán)境108與服務(wù)器計(jì)算環(huán)境IIO之間共享的第一隊(duì)列210 和第二隊(duì)列212。在本發(fā)明的一個實(shí)施例中,可以通過傳統(tǒng)的Microsoft Windows⑧應(yīng)用編程接口 (API)創(chuàng)建隊(duì)列210和212。編碼應(yīng)用202包括第 一線程206和第二線程208,而解碼應(yīng)用204包括第三線程214。線程是較大 處理或者程序的部分。因此,線程206和208是編碼應(yīng)用202的部分,而線 程214是解碼應(yīng)用204的部分。應(yīng)用202和204共享隊(duì)列210和212。
圖2的體系結(jié)構(gòu)運(yùn)作如下。線程206從編碼應(yīng)用202中接收圖形相關(guān)命 令。圖形相關(guān)命令可以是這樣一個命令與基本上或完全在諸如處理器114 所執(zhí)行的軟件中相比,圖形硬件116可以更快地將該命令處理為圖形相關(guān)命 令響應(yīng)。即,圖形硬件對圖形相關(guān)命令進(jìn)行處理以提供最大的性能益處。圖 形相關(guān)命令可以是OpenGL圖形相關(guān)命令,或者另外類型的圖形相關(guān)命令。
編碼應(yīng)用202的第一線程206把圖形相關(guān)命令放置在第一隊(duì)列210上, 由箭頭218來表示。如果把圖形相關(guān)命令放置在第一隊(duì)列210上致使隊(duì)列210 變?yōu)榉强眨?,如果在線程206把圖形相關(guān)命令放置在隊(duì)列210上之前隊(duì)列 210為空,則第一線程206也喚醒解碼應(yīng)用204的第三線程214。然后,線程 214從第一隊(duì)列210接收,或消費(fèi)圖形相關(guān)命令,由箭頭220來表示。
線程214把圖形相關(guān)命令傳送給圖形硬件116,由箭頭222來表示,然后圖形硬件116把該命令處理為圖形相關(guān)命令響應(yīng)。例如,與諸如由處理器
114把命令處理為響應(yīng)的常規(guī)軟件相比,圖形硬件116可以更快地把圖形相關(guān) 命令處理為圖形相關(guān)命令響應(yīng)。線程214從圖形硬件116接收圖形相關(guān)命令 響應(yīng),也由箭頭222來表示。
解碼應(yīng)用204的第三線程214把圖形相關(guān)命令響應(yīng)放置在第二隊(duì)列212 上,由箭頭224來表示。如果把圖形相關(guān)命令放置在第二隊(duì)列212上致使隊(duì) 列212變?yōu)榉强?,即,如果在線程214把圖形相關(guān)命令響應(yīng)放置在隊(duì)列212 上之前隊(duì)列212為空,則第三線程214也喚醒編碼應(yīng)用202的第二線程208。 然后,線程208從第二隊(duì)列212接收或消費(fèi)圖形相關(guān)命令響應(yīng),由箭頭226 來表示。線程208把圖形相關(guān)命令響應(yīng)傳送給遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的顯 示設(shè)備106,由箭頭228來表示。例如,如果響應(yīng)是將在顯示設(shè)備106上顯 示的位圖,則線程208把響應(yīng)傳送給顯示設(shè)備106。
按這一方式,圖2中所描述的本發(fā)明的實(shí)施例通過圖形硬件116提供了 增強(qiáng)的圖形相關(guān)命令處理,用于由遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的顯示設(shè)備106 最終顯示,盡管未把顯示設(shè)備106直接連接于圖形硬件116。與已經(jīng)描述的 現(xiàn)有技術(shù)的深度計(jì)算可視化(DCV)相比,圖2的實(shí)施例使用了三個線程206、 208和214以及兩個隊(duì)列210和212,如已經(jīng)描述過的。對這三個線程206、 208和214以及這兩個隊(duì)列210和212的使用向圖2的實(shí)施例提供了優(yōu)于DCV 現(xiàn)有技術(shù)以及優(yōu)于其它現(xiàn)有技術(shù)的性能優(yōu)勢。
現(xiàn)在,針對圖2的服務(wù)器計(jì)算設(shè)備102的體系結(jié)構(gòu)的操作,描述幾種具 體情況以及特殊和更一般的方面。首先,第一隊(duì)列210可能全滿,以便第一 線程206不能夠把更多圖形相關(guān)命令放置在第一隊(duì)列210上。在這種情況下, 第一線程206鎖定或等待,直至第一隊(duì)列210不再為全滿,以便其那個再次 放置更多的圖形相關(guān)命令到第 一 隊(duì)列210上。當(dāng)?shù)谌€程214從第 一 隊(duì)列210 接收或消費(fèi)圖形相關(guān)命令時,第一隊(duì)列210變?yōu)榉菨M。當(dāng)?shù)谌€程214從隊(duì) 列210接收或消費(fèi)導(dǎo)致隊(duì)列210從滿過渡為非滿的命令時,在一個實(shí)施例中 其喚醒第一線程206,以指示第一線程206:其可以再次把命令放置在第一隊(duì) 列210上??梢酝ㄟ^發(fā)送傳統(tǒng)的線程間的Microsoft Windows⑧事件來實(shí)現(xiàn)在 本發(fā)明的 一個實(shí)施例中所實(shí)現(xiàn)的喚醒線程。
其次,相類似,第二隊(duì)列212可能全滿,以便第三線程214不能夠把更 多的圖形相關(guān)命令響應(yīng)放置在第二隊(duì)列212上。在這種情況下,第三線程214鎖定或等待,直至第二隊(duì)列212不再為全滿,以便其可以再次把更多的圖形 相關(guān)命令響應(yīng)放置在第二隊(duì)列212上。當(dāng)?shù)诙€程208從第二隊(duì)列212接收 或消費(fèi)圖形相關(guān)命令響應(yīng)時,第二隊(duì)列212變?yōu)榉菨M。當(dāng)?shù)诙€程208從隊(duì) 列212接收或消費(fèi)導(dǎo)致隊(duì)列212從滿過渡為非滿的響應(yīng)時,在一個實(shí)施例中, 其喚醒第三線程214,以指示第三線程214:其可以再次把響應(yīng)放置在第二隊(duì) 歹寸212上。
第三,注意,在圖2的實(shí)施例中,沒有規(guī)定將第二隊(duì)列212中的圖形相 關(guān)命令響應(yīng)與提供于第一隊(duì)列210中的圖形相關(guān)命令相關(guān)聯(lián)。其原因在于, 可以把圖形相關(guān)命令、例如具體的OpenGL圖形相關(guān)命令劃分成兩個范疇 異步命令和同步命令。前者是生成圖形相關(guān)命令的編碼應(yīng)用202不要求響應(yīng) 的命令。這種命令可以包括返回空的那些命令,具體地講,它們是大部分 OpenGL圖形相關(guān)命令,以及在OpenGL SwapBuffers命令的特定情況下,其 返回與編碼應(yīng)用202相關(guān)的圖形硬件幀緩沖區(qū)的內(nèi)容。該幀緩沖區(qū)被發(fā)送給 顯示設(shè)備106,但編碼應(yīng)用202不需要被通知這種情況已經(jīng)發(fā)生。因此,第 二線程208異步地消費(fèi)來自第二隊(duì)列212的SwapBuffers命令的響應(yīng)。
因此,由于大多數(shù)圖形相關(guān)命令通常為異步命令,所以無需把在第二隊(duì) 列212中中提供的的圖形相關(guān)命令響應(yīng)與在第一隊(duì)列210中提供的圖形相關(guān) 命令相關(guān)聯(lián)??梢元?dú)立于圖形相關(guān)命令來處理圖形相關(guān)命令響應(yīng),而且后者 不必與前者同步。換句話說,編碼應(yīng)用202的第一線程206和第二線程208 至少基本上獨(dú)立于大多數(shù)圖形相關(guān)命令而操作。當(dāng)?shù)谝痪€程206接收到圖形 相關(guān)命令時,其把它們放置在第一隊(duì)列210上,而當(dāng)?shù)诙€程208從第二隊(duì) 列212接收到圖形相關(guān)命令響應(yīng)時,其把它們傳遞給顯示設(shè)備106。因此, 前者的行為與后者的行為無關(guān)聯(lián)。
然而,某些圖形相關(guān)命令確實(shí)是同步的。同步命令是生成命令的編碼應(yīng) 用202要求它們返回值的那些命令。同步的圖形相關(guān)命令相對不頻繁地出現(xiàn)。 因此,當(dāng)遇到這種命令時,使用下列機(jī)制。當(dāng)?shù)谝痪€程206把同步的圖形相 關(guān)命令放置在第一隊(duì)列210時,其鎖定并且等待對該命令的響應(yīng)到達(dá)第二隊(duì) 列212。當(dāng)?shù)诙€程208從第二隊(duì)列212接收或消費(fèi)同步命令響應(yīng)時,其例 如,通過使用本領(lǐng)域技術(shù)人員可意識到的Microsoft Windows 消息事件,來 向第一線程206發(fā)信號或者通知,由箭頭230來表示。第一線程206相應(yīng)地 被喚醒,從第二隊(duì)列212中讀取(可以由第二線程208來提供的)結(jié)果,然后,將其返回至編碼應(yīng)用202中。4巴這一處理或才幾制稱為線程206和208之 間的會合。
第四,注意,除了編碼應(yīng)用202的第一線程206外,還需要第二線程208, 如下。盡管第一線程206鎖定直到可得到同步命令的結(jié)果,然而其不處理在 第二隊(duì)列212中提供的響應(yīng),而線程208處理在第二隊(duì)列212中提供的響應(yīng), 因?yàn)橹T如SwapBuffers命令的異步命令也可能返回響應(yīng)。在令異步命令在隊(duì)列 210中排隊(duì)之后,線程206立即向編碼應(yīng)用202返回處理器控制,而且不保 證編碼應(yīng)用202將致使處理器控制再次執(zhí)行線程206以處理對異步命令的響 應(yīng)。因此,提供了第二線程208,以便可以以及時的方式處理異步命令所生 成的響應(yīng)。
第五,總的來說,注意,在本發(fā)明的一個實(shí)施例中,對于每一虛擬客戶 機(jī)計(jì)算環(huán)境中的每一編碼應(yīng)用,存在著一對線程206和208。編碼應(yīng)用202 是在其中其產(chǎn)生諸如OpenGL圖形相關(guān)命令的圖形相關(guān)命令的編碼器。解碼 應(yīng)用204為是在其中其繪制(rendering)這些命令以產(chǎn)生諸如位圖或者圖形 繪制狀態(tài)的響應(yīng)的解碼器。
由于具體地大多數(shù)OpenGL圖形相關(guān)命令是異步的,所以一旦編碼應(yīng)用 產(chǎn)生了所述命令,其不需要等待命令的完成來繼續(xù)其處理。編碼應(yīng)用202可 以簡單地使命令在第一隊(duì)列210中排隊(duì),用于由解碼應(yīng)用204進(jìn)行以后的處 理。相類似,如已經(jīng)描述過的,解碼應(yīng)用204可以異步地把圖形相關(guān)命令處 理為圖形相關(guān)命令響應(yīng),使響應(yīng)在第二隊(duì)列212中排隊(duì),用于由編碼應(yīng)用202 進(jìn)行以后的處理。
圖3描述了根據(jù)本發(fā)明的實(shí)施例的、可用作隊(duì)列210或者隊(duì)列212的代 表性隊(duì)列302。相關(guān)于生產(chǎn)線程310和消費(fèi)線程312來描述隊(duì)列302。在把隊(duì) 列302用作隊(duì)列210的情況下,第一線程206是生產(chǎn)線程310,第三線程214 是消費(fèi)線程312。在把隊(duì)列302用作隊(duì)列212的情況下,第三線程214是生 產(chǎn)線程310,第二線程208是消費(fèi)線程312。
隊(duì)列302具有多個隊(duì)列項(xiàng)304A、 304B、 304C、…、304N,將它們統(tǒng)稱 為隊(duì)列項(xiàng)304。隊(duì)列項(xiàng)304中的每一個隊(duì)列項(xiàng)能夠在隊(duì)列302實(shí)現(xiàn)了隊(duì)列210 的情況下存儲圖形相關(guān)命令,或者在隊(duì)列302實(shí)現(xiàn)了隊(duì)列212的情況下存儲 圖形相關(guān)命令響應(yīng)。存在著與隊(duì)列302相關(guān)的兩個指針頭指針306和尾指 針308。頭指針306通常指向其中可以放置命令或者命令響應(yīng)的下一個為空的隊(duì)列項(xiàng),而尾指針308通常指向包含將被消費(fèi)的下一個命令或者命令響應(yīng) 的隊(duì)列項(xiàng)。
然而,尾指針308將指向在隊(duì)列302完全為空的情況下的空隊(duì)列項(xiàng)。在 這種情況下,尾指針308指向與頭指針306所指向的相同的空隊(duì)列項(xiàng),以便 當(dāng)尾指針308指向空隊(duì)列項(xiàng)而且頭指針306和尾指針308均指向相同的空隊(duì) 列項(xiàng)時,知道隊(duì)列完全為空。于是,當(dāng)?shù)谝淮伍_始時,隊(duì)列302為空,頭指 針306和尾指針308均指向第一隊(duì)列項(xiàng)304A。而且,注意,頭指針306將指 向在隊(duì)列302完全為空的情況下的被占據(jù)隊(duì)列項(xiàng)。在這種情況下,頭指針306 指向與尾指針308所指向的相同的被占據(jù)隊(duì)列項(xiàng),以便當(dāng)頭指針306指向被 占據(jù)隊(duì)列項(xiàng)而且頭指針306和尾指針308均指向相同的被占據(jù)隊(duì)列項(xiàng)時,知 道隊(duì)列完全為空。
當(dāng)生產(chǎn)線程310將要把命令或者響應(yīng)放置在隊(duì)列項(xiàng)中時,其把命令或者 響應(yīng)放置在頭指針306所指向的隊(duì)列項(xiàng)中,并且把頭指針306在本發(fā)明的一 個實(shí)施例中向右(或者在另一個實(shí)施例中向左)前進(jìn)一個隊(duì)列項(xiàng)。在頭指針 306已經(jīng)指向最后一個隊(duì)列項(xiàng)304N的情況下,頭指針306回轉(zhuǎn),以指向第一 隊(duì)列項(xiàng)304A。注意,如果所述隊(duì)列為空,則生產(chǎn)線程310僅把命令或者響應(yīng) 放置在頭指針306所指向的隊(duì)列項(xiàng)中。
然而,在把命令或者響應(yīng)放置在隊(duì)列302中之后,生產(chǎn)線程310總是把 頭指針306向右(或者在另一個實(shí)施例中向左)前進(jìn)至下一個隊(duì)列項(xiàng),甚至 是在下一個隊(duì)列項(xiàng)為滿時。其原因在于,按先進(jìn)先出(FIFO)的方式放置和 消費(fèi)命令和響應(yīng)。實(shí)現(xiàn)了把頭指針306向右(或者在另一個實(shí)施例中向左) 前進(jìn)至下一個隊(duì)列項(xiàng),甚至是在這一項(xiàng)為滿時,因?yàn)槿绻麧M或被占據(jù),則這 下一個隊(duì)列項(xiàng)將是消費(fèi)線程312所消費(fèi)的下一個隊(duì)列項(xiàng),以便這一隊(duì)列項(xiàng)是 將變?yōu)橄乱粋€為空的項(xiàng)。即,在這樣一種情況下,保證了尾指針308將指向 這下一個隊(duì)列項(xiàng)。
當(dāng)消費(fèi)線程312將要接收或消費(fèi)在隊(duì)列項(xiàng)中的命令或者響應(yīng)時,其接收 或消費(fèi)由尾指針308所指向的命令或者響應(yīng),并且把尾指針308在本發(fā)明的 一個實(shí)施例中向右(或者在另一個實(shí)施例中向左)前進(jìn)一個隊(duì)列項(xiàng)。在尾指 針308已經(jīng)指向最后一個隊(duì)列項(xiàng)304N的情況下,則尾指針308回轉(zhuǎn)以指向 第一隊(duì)列項(xiàng)304A。注意,如果所述隊(duì)列項(xiàng)被占據(jù),則消費(fèi)線程312僅從由尾 指針308所指向的隊(duì)列項(xiàng)接收或消費(fèi)命令或者響應(yīng)。然而,在從隊(duì)列302接收或消費(fèi)命令或者響應(yīng)之后,消費(fèi)線程312總是 把尾指針308向右(或者在另一個實(shí)施例中向左)前進(jìn)至下一個隊(duì)列項(xiàng),即 使下一個隊(duì)列項(xiàng)為空。如以上所描述的,其原因在于,按FIFO方式放置和消 費(fèi)命令和響應(yīng)。實(shí)現(xiàn)了把尾指針308向右(或者在另一個實(shí)施例中向左)前 進(jìn)至下一個隊(duì)列項(xiàng)即使在這一項(xiàng)為空,因?yàn)檫@下一個隊(duì)列項(xiàng)如果空則將是由 生產(chǎn)線程310把另一個命令或者響應(yīng)放置在其中的下一個隊(duì)列項(xiàng),以便這一 隊(duì)列項(xiàng)將變?yōu)楸徽紦?jù)或滿。即,在這樣一種情況下,保證了頭指針306將指 向這下一個隊(duì)列項(xiàng)。
在本發(fā)明的另一個實(shí)施例中,當(dāng)頭指針306和尾指針308指向相同的隊(duì) 列項(xiàng)時,把隊(duì)列302視為空,當(dāng)遞增頭指針306將使其等于或者大于尾指針 308時,把P人列302視為滿。因此,在本發(fā)明的這一實(shí)施例中,如果這樣做 將使頭指針306等于尾指針308,則線程將不遞增頭指針306。與實(shí)現(xiàn)本發(fā)明 有關(guān)的,可以使用先前章節(jié)中所描述的實(shí)施例,可以使用這一章節(jié)中所描述 的實(shí)施例,也可以使用本發(fā)明的另外的實(shí)施例。
注意,隊(duì)列308的頭指針306和尾指針308的前進(jìn)可期望地是同步的, 本領(lǐng)域4支術(shù)人員可以意識到,其可以通過4吏用Microsoft Windows API InterlockedCompareExchangePointer()來實(shí)現(xiàn)。不允許生產(chǎn)線程310把一個項(xiàng) 添加給滿隊(duì)列,而且不允許消費(fèi)線程312從空隊(duì)列消費(fèi)一個項(xiàng)。為此,指針 306和308的前進(jìn)或移動的同步化是可期望的。
圖4描述了根據(jù)本發(fā)明的實(shí)施例的、可以用作隊(duì)列302的隊(duì)列項(xiàng)304中
任何一個的代表性隊(duì)列項(xiàng)402。隊(duì)列項(xiàng)402由大量字節(jié)404A、404B、404C.....
404M構(gòu)成,將它們統(tǒng)稱為字節(jié)404。在一個實(shí)施例中,^使用前兩個字節(jié)404A 和404B表示圖形相關(guān)命令或者圖形相關(guān)命令響應(yīng)的4乘作碼(opcode) 406。 例如,由為被賦予兩個字節(jié)長的無符號短整數(shù)的操作碼來標(biāo)識OpenGL命令 和響應(yīng)。使用其余字節(jié)404C至字節(jié)404M來表示圖形相關(guān)命令和命令響應(yīng)的 參數(shù)408,其取決于所討論的命令或者響應(yīng)在數(shù)量與格式上變化。例如, OpenGL命令glVertex3fv使用了每個GLfloat類型的三個參數(shù)。
在一個實(shí)施例中,隊(duì)列項(xiàng)402具有固定的大小,而不管其所持有的圖形 相關(guān)命令或者命令響應(yīng)的類型如何,以至于隊(duì)列項(xiàng)402可能沒有使用所有字 節(jié)404用于給定的命令或者響應(yīng)。換種說法,某些圖形相關(guān)命令和命令響應(yīng) 可能長于其它命令和命令響應(yīng)。因此,在這一實(shí)施例中的隊(duì)列項(xiàng)402被設(shè)置大小以容納最大圖形相關(guān)命令或者命令響應(yīng),因此保證了當(dāng)需要時,隊(duì)列 項(xiàng)402可以容納任何圖形相關(guān)命令或者命令響應(yīng)。圖5A、 5B、 5C以及5D分別描述了根據(jù)本發(fā)明的不同實(shí)施例的、用于 在虛擬客戶機(jī)計(jì)算環(huán)境中實(shí)現(xiàn)高性能圖形相關(guān)命令處理的方法500、 520、 540 以及560。方法500、 520、 540以及560 —起形成用于實(shí)現(xiàn)這種高性能圖形 相關(guān)命令處理的單個方法。然而,方法500、 520、 540以及560基本上可以 彼此同時執(zhí)行,并且相對地4皮此獨(dú)立。是否執(zhí)行方法500、 520、 540以及560, 很大程度上分別取決于是否存在要放置到第一隊(duì)列210中的命令、第一隊(duì)列 210中是否存在將被消費(fèi)的命令、是否存在要放置到第二隊(duì)列212中的響應(yīng)、 以及在第二隊(duì)列212中是否存在將被消費(fèi)的響應(yīng)。首先參照圖5A,當(dāng)?shù)谝痪€程206接收到可以在虛擬客戶機(jī)計(jì)算環(huán)境108 中例如通過運(yùn)行在其中的編碼應(yīng)用202發(fā)布的圖形相關(guān)命令(502)時,執(zhí)行 方法500。第一線程206試圖把所述圖形相關(guān)命令放置在第一隊(duì)列210上(504)。如果由第一隊(duì)列210的頭指針?biāo)赶虻年?duì)列項(xiàng)為滿(506),則第一 線程206鎖定直至第三線程214將其喚醒(508 )。在某一時刻,這一隊(duì)列項(xiàng) 為空或變成空,以便第一線程206把命令放置在由頭指針?biāo)赶虻年?duì)列項(xiàng)處(510)。然后,第一線程206把頭指針前進(jìn)至第一隊(duì)列210中的下一個隊(duì)列 項(xiàng)(512)。如果由在部分510中的頭指針?biāo)赶虻年?duì)列項(xiàng)處的命令的放置致使隊(duì)列 210變?yōu)榉强?即,隊(duì)列210先前為空,現(xiàn)在為非空)(514),則第一線程206 也可以喚醒第三線程214 (516),以便第三線程214消費(fèi)這一命令。然后, 方法500結(jié)束(518),但每次當(dāng)均由第一線程206接收圖形相關(guān)命令以放置 在第一隊(duì)列210上時重復(fù)。即,每次當(dāng)編碼應(yīng)用進(jìn)入第一線程206,以發(fā)布 圖形相關(guān)命令時,重復(fù)方法500。接下來參照圖5B,當(dāng)?shù)谌€程214將要從第一隊(duì)列210接收圖形相關(guān)命 令時,執(zhí)行方法520。方法520被描述為當(dāng)?shù)谌€程214試圖從第一隊(duì)列 210接收圖形相關(guān)命令時,開始執(zhí)行(522)。于是,如果由隊(duì)列210的尾指 針?biāo)赶虻年?duì)列項(xiàng)為空(524),則第三線程214鎖定直至第一線程206將其 喚醒(526),以指示目前第一隊(duì)列210上存在將被消費(fèi)的命令。于是,實(shí) 際上,方法520開始于部分526,因?yàn)槠渥畛跷幢粏拘阎钡皆诘谝魂?duì)列210 上存在一個命令。但為了圖示與圖5A的方法500的一致性和對應(yīng)性,圖5B中方法520被描述為通過試圖在部分522中從隊(duì)列210接收圖形相關(guān)命令 來開始。因此,最終第三線程214接收到由尾指針?biāo)赶虻年?duì)列項(xiàng)處的命令 (528 )。命令的接收消費(fèi)了來自該隊(duì)列項(xiàng)的命令,以便接下來這一隊(duì)列項(xiàng)變 為空。第三線程214把尾指針前進(jìn)至第一隊(duì)列210中的下一個隊(duì)列項(xiàng)((530)。 另外,如果由尾指針?biāo)赶虻年?duì)列項(xiàng)處的命令的接收致使隊(duì)列210變?yōu)榉菨M (即,其先前為滿,而目前不再為滿)(532 ),則第三線程214喚醒在圖5A 的方法500的部分508中可能一直鎖定的第一線程206 ( 534 )。第三線程214 最終把圖形相關(guān)命令傳送給圖形硬件116用于處理(536 )。然后,第三線程 214重復(fù)開始于522的方法520。即,第三線程214可在某一時刻接收第一隊(duì) 列210中的所有命令,以便其在部分526處鎖定。接下來,參照圖5C,當(dāng)?shù)谌€程214從圖形硬件116接收到圖形相關(guān)命 令響應(yīng)時(542),執(zhí)行方法540。第三線程214與圖5B中的方法520同時執(zhí) 行方法540。于是,在方法520的部分526中的第三線程214的鎖定意^^木著 其相對于方法520鎖定,而不是相對于圖5C的方法540鎖定。相類似,在方 法540的部分548中的第三線程214的鎖定意味著其相對于方法540鎖定, 而不是相對于圖5B的方法520鎖定。第三線程214試圖把圖形相關(guān)命令響應(yīng)放置在第二隊(duì)列212上(544)。 如果由第二隊(duì)列212的頭指針?biāo)赶虻年?duì)列項(xiàng)為滿(546),則第三線程214 鎖定,直至第二線程208將其喚醒(548)。在某一時刻,這一隊(duì)列項(xiàng)為空或 者變?yōu)榭眨员愕谌€程214把響應(yīng)放置在由頭指針?biāo)赶虻年?duì)列項(xiàng)處 (550 )。然后,第三線程214把頭指針前進(jìn)至第二隊(duì)列212中的下一個隊(duì)列 項(xiàng)(552)。如果在部分550中由頭指針?biāo)赶虻年?duì)列項(xiàng)處的響應(yīng)的放置致使第二隊(duì) 列212變?yōu)榉强?即,隊(duì)列212先前為空,現(xiàn)在為不空)(554),則第三線程 214也可以喚醒第二線程208( 556 ),以便第二線程208消費(fèi)這一響應(yīng)。然后, 方法540結(jié)束(558 ),但每次當(dāng)由第三線程214接收圖形相關(guān)命令響應(yīng)以放 置在第二隊(duì)列212上時重復(fù)。即,每次當(dāng)?shù)谌€程214從圖形硬件116接收 響應(yīng)時,重復(fù)方法540。最后參照圖5D,當(dāng)?shù)诙€程208將要從第二隊(duì)列212接收圖形相關(guān)命令 響應(yīng)時,執(zhí)行方法560。方法560被描述為當(dāng)?shù)诙€程208試圖從第二隊(duì)列212接收圖形相關(guān)命令響應(yīng)時,開始執(zhí)行(562)。于是,如果由隊(duì)列212 的尾指針?biāo)赶虻年?duì)列項(xiàng)為空(564 ),則第二線程208鎖定直至第三線程214 將其喚醒(566),以指示目前第二隊(duì)列212上存在將被消費(fèi)的響應(yīng)。于是, 實(shí)際上,方法560開始于部分566,因?yàn)槠渥畛跷碸^皮喚醒直到在第二隊(duì)列212 上存在命令。但為了圖示與圖5C的方法540的一致性和對應(yīng)性,圖5D中方 法560被描述為通過試圖在部分562中從隊(duì)列212接收圖形相關(guān)命令響應(yīng) 來開始。因此,最終第二線程208接收到由尾指針?biāo)赶虻年?duì)列項(xiàng)處的響應(yīng) (568 )。響應(yīng)的接收消費(fèi)了來自該隊(duì)列項(xiàng)的響應(yīng),以便接下來這一隊(duì)列項(xiàng)變 為空。第二線程208把尾指針前進(jìn)至第二隊(duì)列212中的下一個隊(duì)列項(xiàng)(570)。 另外,如果由尾指針?biāo)赶虻年?duì)列項(xiàng)處的響應(yīng)的接收致使隊(duì)列212變?yōu)榉菨M (即,其先前為滿,而目前不再為滿)(572),則第二線程208喚醒在圖5C 的方法540的部分548中可能一直鎖定的第三線程214 (574)。第二線程208 最終把圖形相關(guān)命令響應(yīng)傳送給遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備104的顯示設(shè)備106 (576)。然后,第二線程208重復(fù)開始于562的方法560。即,第二線程208 可在某一時刻接收到隊(duì)列212中的所有命令,以便其在部分566處鎖定。注意,盡管此處說明和描述了一些具體的實(shí)施例,但本領(lǐng)域技術(shù)人員將 會意識到,可以使用任何所設(shè)計(jì)的可達(dá)到同樣目的設(shè)置替代所描述的具體實(shí) 施例。因此,本申請旨在覆蓋本發(fā)明的實(shí)施例的任何修改或者變通形式。例 如,此處,針對把圖形相關(guān)命令處理為圖形相關(guān)命令響應(yīng)的圖形硬件,大體 上描述了本發(fā)明的一些實(shí)施例。然而,本發(fā)明的其它實(shí)施例也適合于把其它發(fā)明僅受限于所述權(quán)利要求及其等效的要求。
權(quán)利要求
1. 一種服務(wù)器計(jì)算設(shè)備,包含圖形硬件,用于把圖形相關(guān)命令處理為圖形相關(guān)命令響應(yīng);第一隊(duì)列和第二隊(duì)列;虛擬客戶機(jī)計(jì)算環(huán)境,用于與通信地耦合于所述服務(wù)器計(jì)算設(shè)備的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備進(jìn)行交互,并且包含編碼應(yīng)用,用于發(fā)布所述圖形相關(guān)命令,包含第一線程,用于接收所述圖形相關(guān)命令,并且把所述圖形相關(guān)命令放置在所述第一隊(duì)列上;以及,第二線程,用于從所述第二隊(duì)列接收所述圖形相關(guān)命令響應(yīng),并且把所述圖形相關(guān)命令響應(yīng)傳送給所述遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的顯示設(shè)備;服務(wù)器計(jì)算環(huán)境,用于管理所述虛擬客戶機(jī)計(jì)算環(huán)境,并且包含解碼應(yīng)用,其包含第三線程,該第三線程從所述第一隊(duì)列接收所述圖形相關(guān)命令、把所述圖形相關(guān)命令傳送給所述圖形硬件以進(jìn)行處理、從所述圖形硬件接收所述圖形相關(guān)命令響應(yīng)、以及把所述圖形相關(guān)命令響應(yīng)放置在所述第二隊(duì)列上。
2. 根據(jù)權(quán)利要求1所述的服務(wù)器計(jì)算設(shè)備,其中,與所述圖形相關(guān)命令 的軟件處理相比,所述圖形硬件能夠更快地處理所述圖形相關(guān)命令。
3. 根據(jù)權(quán)利要求1或2所述的服務(wù)器計(jì)算設(shè)備,其中,所述圖形相關(guān)命 令是OpenGL命令。
4. 根據(jù)權(quán)利要求l、 2或3所述的服務(wù)器計(jì)算設(shè)備,其中,所述第一隊(duì) 列包含多個隊(duì)列項(xiàng),所述第一線程將把所述圖形相關(guān)命令之一放置在由頭指 針?biāo)赶虻年?duì)列項(xiàng)處,以便把所述頭指針移向下一個可用隊(duì)列項(xiàng),并且所述 第三線程將接收由尾指針?biāo)赶虻年?duì)列項(xiàng)處的所述圖形相關(guān)命令之一 ,以便 把所述尾指針移向包含所述圖形相關(guān)命令之一的下一個隊(duì)列項(xiàng)。
5. 根據(jù)權(quán)利要求1至4中任何一項(xiàng)所述的服務(wù)器計(jì)算設(shè)備,其中,所述 第二隊(duì)列包含多個隊(duì)列項(xiàng),所述第三線程將把所述圖形相關(guān)命令響應(yīng)之一放 置在由頭指針?biāo)赶虻年?duì)列項(xiàng)處,以便把所述頭指針移向下一個可用隊(duì)列項(xiàng), 并且所述第二線程將接收由尾指針?biāo)赶虻年?duì)列項(xiàng)處的所述圖形相關(guān)命令響 應(yīng)之一,以便把所述尾指針移向包含所述圖形相關(guān)命令響應(yīng)之一的下一個隊(duì)列項(xiàng)。
6. 根據(jù)權(quán)利要求1至5中任何一項(xiàng)所述的服務(wù)器計(jì)算設(shè)備,其中,所述 圖形相關(guān)命令包含同步的圖形相關(guān)命令,所述第 一線程將把所述同步的圖形 相關(guān)命令放置在所述第一隊(duì)列上并且等待直至所述第二線程已經(jīng)從所述第二 隊(duì)列接收到與所述同步的圖形相關(guān)命令相關(guān)的圖形相關(guān)命令響應(yīng),才把任何 進(jìn)一 步的圖形相關(guān)命令放置在所述第 一 隊(duì)列上。
7. —種服務(wù)器計(jì)算設(shè)備,包含硬件,用于與能夠僅在軟件中實(shí)現(xiàn)相比更快地實(shí)現(xiàn)把具體命令處理為響應(yīng);虛擬客戶機(jī)計(jì)算環(huán)境,用于與通信地耦合于所述服務(wù)器計(jì)算設(shè)備并且發(fā) 布所述具體命令的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備進(jìn)行交互,并且包含第一線程,用于接收在所述虛擬客戶機(jī)計(jì)算環(huán)境中發(fā)布的具體命令, 并且把所述具體命令放置在第一隊(duì)列上;以及第二線程,用于從第二隊(duì)列接收所述響應(yīng),并且把所述響應(yīng)傳送給 所述遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的相應(yīng)硬件;服務(wù)器計(jì)算環(huán)境,用于管理所述虛擬客戶機(jī)計(jì)算環(huán)境,并且包含第三線程,用于從所述第一隊(duì)列接收所述具體命令、把所述具體命 令傳送給所述硬件用以處理、從所述硬件接收所述響應(yīng)、并且把所述響應(yīng)放 置在所述第二隊(duì)列上。
8. 根據(jù)權(quán)利要求7所述的服務(wù)器計(jì)算設(shè)備,其中,所述虛擬客戶機(jī)計(jì)算 環(huán)境包含包括所述第一和第二線程的編碼應(yīng)用。
9. 根據(jù)權(quán)利要求7或8所述的服務(wù)器計(jì)算設(shè)備,其中,所述服務(wù)器計(jì)算 環(huán)境包含包括所述第三線程的解碼應(yīng)用。
10. 根據(jù)權(quán)利要求7、 8或9所述的服務(wù)器計(jì)算設(shè)備,其中,所述硬件是 圖形硬件,而且所述具體命令是圖形相關(guān)命令。
11. 一種方法,包含通過服務(wù)器計(jì)算設(shè)備的虛擬客戶機(jī)計(jì)算環(huán)境的第一線程接收由運(yùn)行在所 述服務(wù)器計(jì)算設(shè)備的虛擬客戶機(jī)計(jì)算環(huán)境中的編碼應(yīng)用所發(fā)布的圖形相關(guān)命 令,所述虛擬客戶機(jī)計(jì)算環(huán)境用于與通信地耦合于所述服務(wù)器計(jì)算設(shè)備的遠(yuǎn) 程客戶機(jī)計(jì)算設(shè)備進(jìn)行交互,所述服務(wù)器計(jì)算環(huán)境用于管理所述虛擬客戶機(jī) 計(jì)算環(huán)境;所述第 一線程把所述圖形相關(guān)命令放置在第 一隊(duì)列上; 所述服務(wù)器計(jì)算環(huán)境的第三線程從所述第一隊(duì)列接收所述圖形相關(guān)命令;所述第三線程把所述圖形相關(guān)命令傳送給所述服務(wù)器計(jì)算設(shè)備的圖形硬件,以處理成圖形相關(guān)命令響應(yīng);所述第三線程從所述圖形硬件接收所述圖形相關(guān)命令響應(yīng); 所述第三線程把所述圖形相關(guān)命令響應(yīng)放置在第二隊(duì)列上; 所述虛擬客戶機(jī)計(jì)算環(huán)境的第二線程從所述第二隊(duì)列接收所述圖形相關(guān)命令響應(yīng);以及所述第二線程把所述圖形相關(guān)命令響應(yīng)傳送給所述遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備 的顯示設(shè)備。
12. 根據(jù)權(quán)利要求11所述的方法,其中,所述第一線程把所述圖形相關(guān) 命令放置在所述第 一 隊(duì)列上包含所述第 一線程的下列操作把所述圖形相關(guān)命令放置在由頭指針?biāo)赶虻乃龅?一隊(duì)列的隊(duì)列項(xiàng)處;在把所述圖形相關(guān)命令放置在所述隊(duì)列項(xiàng)處致使所述第一隊(duì)列變?yōu)榉强?的情況下,喚醒所述第三線程;把所述頭指針前進(jìn)至下一個隊(duì)列項(xiàng);以及在所述第一隊(duì)列為全滿的情況下,鎖定直至所述第一隊(duì)列的另一個隊(duì)列 項(xiàng)變?yōu)榭铡?br> 13. 根據(jù)權(quán)利要求11或12所述的方法,其中,所述第三線程從所述第 一隊(duì)列接收所述圖形相關(guān)命令包含所述第三線程的下列操作從由尾指針?biāo)赶虻乃龅?一 隊(duì)列的隊(duì)列項(xiàng)接收所述圖形相關(guān)命令; 在從所述隊(duì)列項(xiàng)接收所述圖形相關(guān)命令致使所述第 一 隊(duì)列變?yōu)榉菨M的情 況下,喚醒所述第一線程;把所述尾指針前進(jìn)至下一個隊(duì)列項(xiàng);以及,在所述第一隊(duì)列為全空的情況下,鎖定直至所述第一隊(duì)列的另一個隊(duì)列 項(xiàng)變?yōu)榉强铡?br> 14. 根據(jù)權(quán)利要求ll、 12或13所述的方法,其中,所述第三線程把所 述圖形相關(guān)命令響應(yīng)放置在所述第二隊(duì)列上包含所述第三線程的下列操作把所述圖形相關(guān)命令響應(yīng)放置在由頭指針?biāo)赶虻乃龅诙?duì)列的隊(duì)列項(xiàng)處;在把所述圖形相關(guān)命令響應(yīng)放置在所述隊(duì)列項(xiàng)處致使所述第二隊(duì)列變?yōu)?非空的情況下,喚醒所述第二線程;把所述頭指針前進(jìn)至下一個隊(duì)列項(xiàng);以及在所述第二隊(duì)列為全滿的情況下,鎖定直至所述第二隊(duì)列的另一個隊(duì)列 項(xiàng)變?yōu)榭铡?br> 15. 根據(jù)權(quán)利要求ll、 12、 13或14所述的方法,其中,所述第二線程 從所述第二隊(duì)列接收所述圖形相關(guān)命令響應(yīng)包含所述第二線程的下列操作從由尾指針?biāo)赶虻乃龅诙?duì)列的隊(duì)列項(xiàng)接收所述圖形相關(guān)命令響應(yīng);在從所述隊(duì)列項(xiàng)接收所述圖形相關(guān)命令響應(yīng)致使所述第二隊(duì)列變?yōu)榉菨M 的情況下,喚醒所述第三線程;把所述尾指針前進(jìn)至下一個隊(duì)列項(xiàng);以及,在所述第二隊(duì)列為全空的情況下,鎖定直至所述第二隊(duì)列的另一個隊(duì)列 項(xiàng)變?yōu)榉强铡?br> 16. 根據(jù)權(quán)利要求11至15中任何一項(xiàng)所述的方法,還包含 在所述第一線程把所述圖形相關(guān)命令放置在所述第一隊(duì)列上之后所述第 一線程確定所述圖形相關(guān)命令是同步的圖形相關(guān)命令; 作為響應(yīng),所述第一線程鎖定,以便所述第一線程不把任何進(jìn)一步 的圖形相關(guān)命令放置在所述第 一 隊(duì)列上;在所述第二線程從所述第二隊(duì)列接收所述圖形相關(guān)命令響應(yīng)之后所述第二線程確定所述圖形相關(guān)命令響應(yīng)是同步的圖形相關(guān)命令響應(yīng);以及作為響應(yīng),所述第二線程喚醒所述第一線程,以便所述第一線程可 以再次開始把任何進(jìn)一步的圖形相關(guān)命令放置在所述第 一 隊(duì)列上。
17. 根據(jù)權(quán)利要求11至16中任何一項(xiàng)所述的方法,其中,所述圖形相 關(guān)命令是OpenGL命令。
18. 根據(jù)權(quán)利要求11至17中任何一項(xiàng)所述的方法,其中,與軟件處理 相比,圖形硬件能夠更快地處理所述圖形相關(guān)命令。
19. 一種制造產(chǎn)品,包含 計(jì)算機(jī)可讀媒介;所述媒介中的第一裝置,用于接收在虛擬客戶機(jī)計(jì)算環(huán)境中發(fā)布的命令,并且把所述命令放置在第 一隊(duì)列上;所述J;某介中的第二裝置,用于從第二隊(duì)列接收響應(yīng),并且把所述響應(yīng)傳 送給與所述虛擬客戶機(jī)計(jì)算環(huán)境相關(guān)的遠(yuǎn)程客戶機(jī)計(jì)算設(shè)備的相應(yīng)硬件;以 及所述媒介中的第三裝置,用于從所述第一隊(duì)列接收所述命令、將所述命 令傳送給所述硬件以把所述命令處理為響應(yīng)、從所述硬件接收所述響應(yīng)、并 且把所述響應(yīng)放置在所述第二隊(duì)列上。
20. 根據(jù)權(quán)利要求19所述的方法,其中,所述硬件是圖形硬件,并且所 述命令是圖形相關(guān)命令。
21. —種包含程序代碼裝置的計(jì)算機(jī)程序產(chǎn)品,當(dāng)令所述程序運(yùn)行在計(jì) 算機(jī)上時,所述程序代碼裝置適合于執(zhí)行根據(jù)權(quán)利要求11至18中任何一項(xiàng) 所述的方法。
全文摘要
由虛擬客戶機(jī)計(jì)算環(huán)境中的硬件處理命令,例如由圖形硬件處理圖形相關(guān)命令。服務(wù)器計(jì)算設(shè)備包括圖形硬件、虛擬客戶機(jī)計(jì)算環(huán)境、以及服務(wù)器計(jì)算環(huán)境。圖形硬件把圖形相關(guān)命令處理為響應(yīng)。所述虛擬客戶機(jī)計(jì)算環(huán)境包括發(fā)布命令的編碼應(yīng)用。服務(wù)器計(jì)算環(huán)境包括解碼應(yīng)用。編碼應(yīng)用包括第一線程,該第一線程接收命令,并且把它們放置在第一隊(duì)列上。編碼應(yīng)用包括第二線程,該第二線程從第二隊(duì)列接收響應(yīng),并且把響應(yīng)傳送給遠(yuǎn)程顯示設(shè)備。解碼應(yīng)用包括第三線程,該第三線程從第一隊(duì)列接收命令、把命令傳送給圖形硬件、從圖形硬件接收響應(yīng)、以及把響應(yīng)放置在第二隊(duì)列上。
文檔編號G06F9/46GK101288050SQ200680038186
公開日2008年10月15日 申請日期2006年10月12日 優(yōu)先權(quán)日2005年10月15日
發(fā)明者伍錦倫, 保羅·肖, 斯科特·派珀, 維卡斯·阿盧瓦利亞, 維諾德·梅農(nóng) 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
新蔡县| 马尔康县| 河曲县| 沅江市| 巧家县| 营口市| 绥江县| 邢台县| 威远县| 格尔木市| 林西县| 顺义区| 望都县| 南开区| 岱山县| 靖边县| 仁化县| 信丰县| 贵定县| 开化县| 宝应县| 慈利县| 通山县| 浏阳市| 洪湖市| 信丰县| 西乌珠穆沁旗| 和顺县| 玉田县| 乌什县| 玉门市| 砚山县| 黄石市| 莫力| 石台县| 沙坪坝区| 青田县| 科技| 芮城县| 永川市| 仙游县|