TW201407536A - 基於伺服器之圖形處理技術 - Google Patents

基於伺服器之圖形處理技術 Download PDF

Info

Publication number
TW201407536A
TW201407536A TW102115783A TW102115783A TW201407536A TW 201407536 A TW201407536 A TW 201407536A TW 102115783 A TW102115783 A TW 102115783A TW 102115783 A TW102115783 A TW 102115783A TW 201407536 A TW201407536 A TW 201407536A
Authority
TW
Taiwan
Prior art keywords
guest
display device
given
host
instance
Prior art date
Application number
TW102115783A
Other languages
English (en)
Other versions
TWI506586B (zh
Inventor
Frank Diard
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201407536A publication Critical patent/TW201407536A/zh
Application granted granted Critical
Publication of TWI506586B publication Critical patent/TWI506586B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Digital Computer Display Output (AREA)
  • Computer And Data Communications (AREA)

Abstract

本發明揭示基於伺服器之圖形處理技術,包括從一中介層傳送圖形命令至一客端顯示裝置介面,其中該中介層及該客端顯示裝置介面正執行於一客端虛擬機器之一給定例項中。該客端顯示裝置介面以對應的函式呼叫而回呼至該中介層。該等函式呼叫透過一主客通信管理器的一通信通道而從該中介層傳送到一主端顯示裝置介面,其中該主端顯示裝置介面及主客通信管理器正執行於一主端虛擬機器管理器中。

Description

基於伺服器之圖形處理技術
本發明是有關於一種圖形處理技術,特別是有關於一種基於伺服器之圖形處理技術。
計算系統對於現代社會的發展具有相當大的貢獻並用在許多應用中以達成有利的結果。許多裝置,諸如桌上型個人電腦(PC)、膝上型PC、平板PC、筆記型電腦、智慧型手機、伺服器及諸如此類,已在大部分的娛樂、教育、商業及科學等領域上幫助提高生產力及降低傳遞及分析資料的成本、增加電子內容的消費及諸如此類。計算系統的開發面向包括主從式計算平台(client-server computing platform)、虛擬機器計算平台(virtual machine computing platform)、及雲端計算平台(cloud computing platform)、及其上的圖形處理。
對於使用大量圖形的應用程式,諸如多玩家線上電腦遊戲,Windows作業系統(operating system,OS)以全螢幕模式執行應用程式的每個例項。全螢幕模式是一種專用模式,致使執行之應用程式的另一例項因為第一例項正以全螢幕執行而無法輸出顯示框(display frame)。因此,即使在具有多個圖形處理單元的伺 服器上,一應用程式的多個例項也因為第一應用程式將以全螢幕模式執行而無法同時執行。同樣地,即使在虛擬機器實作上,在客端作業系統上執行的第一應用程式也將以全螢幕執行,並防止在其他客端裝置上執行的其他應用程式輸出顯示框。然而,隨著多處理器及/或多核心CPU及/或GPU伺服器裝置的普及盛行,有利的是能夠執行多個使用大量圖形的應用程式或相同應用程式的若干例項。因此,仍需要改良主從式計算平台、虛擬機器計算平台、及雲端計算平台上的圖形處理技術。
參考以下說明及附圖(用來圖解本發明有關基於伺服器之圖形處理技術的具體實施例),即可充分瞭解本發明。
在一具體實施例中,基於伺服器之圖形處理方法包括藉由執行時間應用程式設計介面(runtime application programming interface)的給定例項(given instance),接收複數個圖形命令。透過客端中介層(guest shim layer)的給定例項,將來自執行時間應用程式設計介面之給定例項的複數個圖形命令傳送至客端顯示裝置介面(guest display device interface)的給定例項。回應於複數個圖形命令,客端顯示裝置介面的給定例項以函式呼叫(function call)而回呼至客端中介層的給定例項。執行時間應用程式設計介面的給定例項、客端中介層的給定例項及客端顯示裝置介面的給定例項係在客端作業系統之給定例項的控制下執行。透過主客通信管理器(host guest communication manager,HGCM)的通信通道(communication channel),將函式呼叫從客端中介層的給定例項發送至主端顯示裝置介面(host display device interface)。主 端顯示裝置介面決定所接收之每個函式呼叫的彩現環境(rendering context)。主端顯示裝置介面將給定彩現環境的每個函式呼叫發送至替換程式層(thunk layer)的給定例項。主客通信管理器、主端顯示裝置介面及替換程式層的給定例項係在主端作業系統的控制下執行。
該方法還包括利用執行時間應用程式設計介面的不 同例項(different instance)接收不同複數個圖形命令。透過客端中介層的不同例項,將來自執行時間應用程式設計介面之不同例項的不同複數個圖形命令傳送至客端顯示裝置介面的不同例項。回應於不同複數個圖形命令,客端顯示裝置介面的不同例項以不同函式呼叫而回呼至客端中介層的不同例項。執行時間應用程式設計介面的不同例項、客端中介層的不同例項及客端顯示裝置介面的不同例項係在客端作業系統之不同例項的控制下執行。透過主客通信管理器的不同通信通道,將來自客端中介層之不同例項的不同函式呼叫發送至主端顯示裝置介面。藉由主端顯示裝置介面將不同彩現環境的每個不同函式呼叫發送至替換程式層的不同例項。替換程式層的不同例項係在主端作業系統的控制下執行。
在另一具體實施例中,基於伺服器之圖形處理技術 包括回應於執行時間應用程式設計介面的給定例項從給定應用程式接收第一圖形命令,而載入客端中介層的給定例項。回應於載入客端中介層的給定例項,載入回呼至客端中介層的給定例項之客端顯示裝置介面的給定例項。客端中介層、客端顯示裝置介面及執行時間應用程式設計介面係在虛擬機器客端作業系統的控制下執行。回應於載入客端中介層的給定例項,中介層的給定例項 向主客通信管理器請求在客端中介層的給定例項及主端顯示裝置介面之間的通信通道。回應於通信通道的請求,主客通信管理器載入主端顯示裝置介面及建立在中介層的給定例項及主端顯示裝置介面之間的通信通道。回應於載入主端顯示裝置介面,主端顯示裝置介面載入替換程式層的給定例項。主客通信管理器、主端顯示裝置介面及替換程式層係在虛擬機器管理器(virtual machine manager)主端作業系統的控制下執行。回應於載入主端顯示裝置介面,主端顯示裝置介面亦建立在客端中介層的給定例項及通信耦合至給定圖形處理單元之替換程式層的給定例項之間的給定彩現環境。
之後,透過客端中介層的給定例項,將圖形命令從 執行時間應用程式設計介面的給定例項傳送至客端顯示裝置介面的給定例項。客端顯示裝置介面的給定例項基於一組圖形命令以一或多個函式呼叫而回呼至客端中介層的給定例項。一或多個函式呼叫透過通信通道從客端中介層的給定例項發送至主端顯示裝置介面。主端顯示裝置介面決定所接收之每個函式呼叫的給定彩現環境。給定彩現環境的每個函式呼叫藉由主端顯示裝置介面發送至替換程式層的給定例項。
在又另一具體實施例中,當應用程式開始在給定虛 擬機器客端中執行時,基於伺服器之圖形處理方法插入(inject)包括進入點(entry point)的應用程式初始化常式(application initialization routine),該進入點將顯示裝置介面的搜尋路徑(search path)變更為客端中介層的搜尋路徑。在變更的搜尋路徑載入客端中介層以在給定虛擬機器客端中執行。回應於載入客端中介層, 載入回呼至客端中介層的客端顯示裝置介面,以在給定虛擬機器客端中執行。回應於載入客端中介層,向在虛擬機器管理主端中執行的主客通信管理器請求在客端中介層及主端顯示裝置介面之間的通信通道。回應於通信通道的請求,載入要在虛擬機器管理主端中執行的主端顯示裝置介面及建立在中介層及主端顯示裝置介面之間的通信通道。回應於載入主端顯示裝置介面,載入替換程式層的給定例項以在虛擬機器管理主端中執行,其中替換程式層的給定例項通信耦合至給定圖形處理單元。回應於載入主端顯示裝置介面,給定彩現環境亦在虛擬機器客端的給定例項及替換程式層的給定例項之間建立。
提供本發明內容以便以簡化的形式介紹一系列概 念,將在下文「實施方式」中進一步說明這些概念。本發明內容並非用來鑑定本發明的關鍵特徵或必要特徵,亦非用來限制本發明的範疇。
100‧‧‧主從式或雲端計算平台
105-115‧‧‧使用者裝置
120‧‧‧網路
125‧‧‧伺服器裝置
130‧‧‧中央處理單元(CPU)
135-140‧‧‧圖形處理單元(GPU)
145‧‧‧記憶體
150‧‧‧網路介面
155‧‧‧通信鏈路
210‧‧‧主端作業系統
220‧‧‧虛擬機器管理(VMM)主端應用程式
230-250‧‧‧虛擬機器(VM)客端作業系統
305‧‧‧使用者應用程式
310‧‧‧應用程式初始化公用程式/應用程式初始化常式
315‧‧‧執行時間應用程式設計介面(API)
320‧‧‧客端中介層
325‧‧‧客端顯示裝置介面(DDI)
330‧‧‧主客通信管理器(HGCM)
335‧‧‧主端DDI
340‧‧‧替換程式層
345‧‧‧作業系統(OS)核心模式驅動程式
350‧‧‧裝置專用核心模式驅動程式
355‧‧‧圖形處理單元(GPU)
360‧‧‧編碼器
365‧‧‧網路介面
本發明之具體實施例藉由舉例而非限制,以附圖的各個圖式進行解說,其中相似參考數字代表相似元件。
圖1根據本發明之一具體實施例,顯示主從式或雲端計算平台之硬體層級表示法的方塊圖。
圖2根據本發明之一具體實施例,顯示主從式或雲端計算平台之虛擬機器表示法的方塊圖。
圖3根據本發明之一具體實施例,顯示主從式或雲端計算平台之彩現函式層級之虛擬機器表示法的方塊圖。
圖4A-4E根據本發明之一具體實施例,顯示主從式或 基於雲端計算之圖形處理方法的流程圖。
接著將詳細參考本發明的具體實施例,其實例以附圖解說。儘管本發明將結合這些具體實施例加以說明,但應明白,這些具體實施例並非用來限制本發明於其中。相反地,本發明旨在涵蓋替代方案、修改、及等效物,這些均包括在如隨附申請專利範圍所界定的本發明範疇中。再者,在以下本發明「實施方式」中,提出許多特定細節以徹底瞭解本發明。然而,應明白,本發明可在沒有這些特定細節的情況下實行。在其他實例中,為避免不必要地模糊本發明諸面向,未詳細描述熟知的方法、過程、組件、及電路。
本發明以下一些具體實施例就一或多個電子裝置中資料操作的常式、模組、邏輯區塊、及其他符號表示法提出討論。這些說明及表示法係熟習本技術者所使用的方法,以最有效的方式將其運作本質傳達給其他熟習本技術者。常式、模組、邏輯區塊及/或諸如此類在此且大致上被設想為造成所要結果之程序或指令的自相一致序列。此等程序是包括物理量之物理操控的程序。這些物理操控通常(但並非一定)採取可在電子裝置中加以儲存、傳送、比較、及以其他方式操控之電信號或磁信號的形式。為了方便之故及參考一般用法,關於本發明具體實施例,將這些信號稱為資料、位元、值、元件、符號、字元、條件項、數字、字串及/或諸如此類。
然而,應明白,應將所有這些術語解譯為參考物理 操控及物理量且僅為方便的標記且應就本技術中常用術語加以解譯。除非以下討論明白無誤地另外明確說明,否則應明白,透過本發明討論,利用術語諸如「接收」及/或諸如此類的討論是指操控及轉變資料之電子裝置(諸如電子計算裝置)的動作及程序。資料係表示為電子裝置之邏輯電路、暫存器、記憶體及/或諸如此類中的物理(如,電子)量,並轉變成同樣表示為電子裝置中物理量的其他資料。
在本申請案中,使用反意連詞旨在包括連接詞。使用定冠詞或不定冠詞並非用來指示基數。尤其,提及「此」物體或「一」物體旨在亦表示可能複數個此類物體的一個。亦應明白,本文使用的措辭及術語是為了說明之故,且不應視為限制性。
參考圖1,根據本發明之一具體實施例,顯示主從式或雲端計算平台之硬體層級表示法的方塊圖。主從式或雲端計算平台100包括複數個使用者裝置105-115,其由一或多個網路120通信耦合至一或多個伺服器裝置125。在雲端計算平台中,經由網路將硬體資源、軟體、及資訊作為公用程式提供給使用者裝置。因此,雲端計算平台遞送計算作為服務而非產品。使用者裝置透過網頁瀏覽器或輕量桌上型電腦或行動應用存取基於雲端之資源。雲端計算平台實現裝置及位置獨立、虛擬化、多租戶、可靠性、效能、安全性、維護、基礎建設會聚、共用服務及/或諸如此類,以伺服可能波動、無法預測及/或諸如此類的要求。
每個伺服器125可包括一或多個處理單元130-140、一或多個計算裝置可讀媒體(如,記憶體)145、一或多個網路介面 150及/或諸如此類,其等由一或多個通信鏈路(communication link)155通信耦合在一起。在一實作中,伺服器包括:中央處理單元(CPU)130;非揮發性記憶體,諸如唯讀記憶體(read-only memory,ROM);磁性硬碟機及/或諸如此類;揮發性記憶體,諸如隨機存取記憶體;一或多個網路介面卡,用於將伺服器125通信耦合至一或多個網路120;及複數個圖形處理單元135-140。
在伺服器裝置125上執行的應用程式可彩現(render) 要在使用者裝置105之顯示器上輸出的顯示框。顯示框資料在伺服器125編碼以進行壓縮及在一或多個網路120上傳輸至使用者裝置105。使用者裝置105解碼顯示框資料及將其輸出於附接至使用者裝置105的顯示器上。在一實作中,應用程式可以是使用大量圖形的應用程式,諸如多玩家電腦遊戲或諸如此類。
現在參考圖2,顯示主從式或雲端計算平台的虛擬機 器表示法。伺服器125之執行計算裝置可執行指令(computing device executable instruction)的一或多個處理器實作(implement)主端作業系統210、虛擬機器管理主端應用程式(virtual machine management host application,VMM host application)220、及複數個虛擬機器客端作業系統(virtual machine guest operating system,VM guest OS)230-250。在一實作中,主端作業系統210可以是Microsoft(Redmond,Washington,USA)的Windows 7作業系統。 VMM主端應用程式220係執行為主端作業系統210的應用程式。在一實作中,虛擬機器管理主端應用程式220可以是Oracle(Redwood Shores,California,USA)的VirtualBox。複數個VM客端作業系統230-250以由VMM主端應用程式220實作的虛擬機器執行。在一實 作中,每個VM客端作業系統220-250可以是Windows 7作業系統的例項。一或多個使用者裝置105-115之每一者可透過VM客端作業系統220-250的對應例項,通信耦合至伺服器125而作為客端。
現在參考圖3,根據本發明之一具體實施例,顯示主 從式或雲端計算平台之彩現函式層級之虛擬機器表示法的方塊圖。伺服器裝置包括用於在相應虛擬客端作業系統240的控制下執行的複數個客端的每一者的應用程式、驅動程式、公用程式及諸如此類。伺服器裝置亦包括用於在(虛擬機器管理)主端作業系統210的控制下執行的一或多個主端的每一者的虛擬機器監控主端應用程式、及驅動程式、公用程式及諸如此類。在一實作中,VM客端作業系統240控制以下項目的執行:使用者應用程式305、應用程式初始化公用程式(application initialization utility)310、執行時間應用程式設計介面(runtime application programming interface,runtime API)315、客端中介層320及客端顯示裝置介面(guest display device interface,guest DDI)325。VMM主端作業系統210控制以下項目的執行:主客通信管理器330、主端DDI 335、替換程式層340、OS核心模式驅動程式(OS kernel mode driver)345、裝置專用核心模式驅動程式(device specific kernel mode driver)350。
在一實作中,對於每個彩現環境,客端可包括使用 者應用程式305之一例項、應用程式初始化公用程式310、執行時間應用程式設計介面315、客端中介層320、客端DDI 325、替換程式層340、OS核心模式驅動程式345、裝置專用核心模式驅動程式350、及給定GPU 355。主客通信管理器330及主端DDI 335在複數 個客端上共用。儘管圖3圖解單一客端,但應明白,在一伺服器裝置上通常實作複數個客端。
當應用程式305開始在VM客端作業系統240上執行 時,即插入應用程式初始化常式310。在一實作中,應用程式初始化常式310是較短動態連結函式庫(short dynamic linked library)(如,appin.dll)。插入應用程式305中的應用程式初始化常式310包括一些進入點,其中之一包括呼叫(如,set_dll_searchpath())以變更顯示裝置介面的搜尋路徑。在初始化期間,顯示裝置介面的搜尋路徑(如,c:\windows\system32\…\umd.dll)變更為客端中介層320的搜尋路徑(如,c:\…\vmm\…\umd.dll)。因此,執行時間API 315將在不同路徑中搜尋DDI,因而導致執行時間API 315載入客端中介層320。在一實作中,客端中介層320是獨立函式庫。客端中介層函式庫320具有習用顯示裝置介面的相同進入點。
在初始化期間,客端中介層320載入客端DDI 325。 在一實作中,客端DDI 325可以是使用者模式驅動程式動態連結函式庫(user mode driver dynamic linked library)(nvd3dUMD.dll)。當呼叫進入客端中介層320的適用進入點(如,OpenAdapter())時,執行時間API 315將一或多個指標(pointer)傳送至客端中介層320。傳送至客端中介層320的指標回呼至執行時間API 315。客端中介層320儲存從執行時間API 315接收的指標。藉由傳送回呼至客端中介層320之區域函式(local function)的指標,客端中介層320載入及初始化客端DDI 325。客端DDI 325亦傳回一或多個指向資料結構的指標至客端中介層320。從客端DDI 325傳回至客端中介層320的指標可包括一或多個指向命令緩衝區(command buffer)的指標。由 客端DDI 325傳回的資料結構指標係由客端中介層320儲存。因此,客端DDI 325能夠初始化而不用詢問執行時間API 315。
在初始化期間,每個客端中介層320亦向主客通信管 理器330請求通信通道(如,管線(pipe)、通訊端(socket))。在建立通信通道時,即建立映射以使一給定客端的彩現環境與主端的一給定GPU硬體相關聯。在一實作中,主客通信管理器將識別彩現環境映射的符記識別符(token identifier,token ID)傳回至客端中介層320。客端中介層320亦請求主客通信管理器330載入主端DDI 335。客端中介層320另外請求替換程式層340、OS核心模式驅動程式345及/或裝置專用使用者模式驅動程式350之二進位檔案的複製。做為回應,主客通信管理器330擷取替換程式層340、OS核心模式驅動程式345及/或裝置專用使用者模式驅動程式350的二進位並在通信通道上將其傳回至客端中介層320。客端中介層320將替換程式層340、OS核心模式驅動程式345及/或裝置專用使用者模式驅動程式350的二進位(下文稱為「主端堆疊二進位(host stack binary)」)儲存在記憶體(如,虛擬磁碟)中,以用於決定適用資料結構的格式,使得客端中介層320發送的命令匹配主端堆疊所利用的格式。主端堆疊二進位中所參考的資料結構細節可包括所利用的特定緩衝區、其位置及諸如此類。主端DDI 335、替換程式層340、OS核心模式驅動程式345及/或裝置專用核心模式驅動程式350亦建立一記憶體分配,以儲存用於將彩現命令透過堆疊從客端應用程式向下傳送至裝置專用核心模式驅動程式之資料結構。
之後,在彩現期間,應用程式305發送各種命令至執 行時間API 315。這些命令可包括諸如繪製三角形、變更顏色、設 定紋理(texture)及/或諸如此類的命令。在一實作中,來自應用程式305的命令可以是DirectX命令。執行時間API 315可在以命令呼叫至客端中介層320之前確認這些命令。執行時間API 315可實質上根據Microsoft公司的習用執行時間API(如,d3d9.dll)而操作。客端中介層320繼而以命令呼叫至客端DDI 325。客端DDI 325將命令函式呼叫轉變成命令緩衝區中根據主端堆疊二進位之所儲存複製之複製所分配的位元組碼呼叫。在設定命令緩衝區後,利用在初始化階段中指定的回呼,將包括指向命令緩衝區之指標的一或多個函式呼叫從客端DDI 325轉遞(forward)至客端中介層320。包括指向命令緩衝區之指標的函式呼叫由客端中介層320透過主客通信管理器330轉遞至主端DDI 335。遠端程序呼叫在客端及主端之間的管線(在初始化主客通信管理器時設定)上投送。在一實作中,客端中介層320將與彩現環境相關聯的符記ID連同來自客端DDI 325的呼叫一起傳送至主端DDI 335。
主端DDI 335決定從客端中介層320接收之函式呼叫 的彩現環境。在一實作中,主端DDI 335利用符記ID作為定義對應客端之彩現環境的資料結構的控制碼(handle)。主端DDI 335繼而透過替換程式層340將函式呼叫轉遞至作業系統核心模式驅動程式345。做為回應,作業系統核心模式驅動程式345與裝置專用核心模式驅動程式350來排程(schedule)函式呼叫所包括的函式指標(function pointer)中的命令緩衝區,以由給定GPU 355執行函式呼叫。裝置專用核心模式驅動程式350設定GPU 355的命令暫存器以執行圖形命令,及控制GPU 355對其之執行。在一實作中,替換程式層340可實質上相同於Microsoft公司的習用替換程式層(如,GDI32.dll)而操作。OS核心模式驅動程式345可實質上相同於 Microsoft公司的習用OS核心模式驅動程式(如,dxgkrnl.sys)而操作。在一實作中,裝置專用核心模式驅動程式可實質上相同於Nvidia公司(Santa Clara,California)的習用裝置專用核心模式驅動程式(如,kmd.sys)而操作。
對於顯示相關的函式呼叫(如,Present()),主端DDI 335在彩現框資料傳回主端DDI 335時,投送彩現框資料(rendered frame data)至編碼器、相關聯的API及驅動程式360(以下簡稱為編碼器)。彩現框資料由主端DDI 335投送至編碼器360,而非投送回到客端中介層、客端DDI、執行時間API及應用程式。編碼器360編碼彩現框資料以壓縮該資料。壓縮之資料接著從編碼器360發送至網路介面、相關聯的API及驅動程式365(下文簡稱為「網路介面」),以用於傳輸至適當的使用者裝置105-115。在一實作中,編碼器360可以是習用的編碼器,諸如H.264編碼器。
在替換程式層340、OS核心模式驅動程式345及裝置 專用核心模式驅動程式350層級,函式呼叫僅是彩現工作且無全螢幕模式之意義。主端DDI 335可以是若干主客通信管理器會話(host-guest communication manager session)(這是指若干客端VM可與主端中的相同組件交談)的目標。按照主端中組件排程的方式,這些組件不需要變成全螢幕。然而,在VM客端作業系統240中執行的應用程式305正以全螢幕執行但在螢幕上並不顯示任何內容。事實上,VM客端作業系統240不需要往回從VMM主端作業系統210接收彩現影像。
現在參考圖4A-4E,根據本發明之一具體實施例,顯 示基於主從式或雲端計算之圖形處理方法。該方法可實作為一或多個計算裝置可執行指令集(如,電腦程式、公用程式、驅動程式、常式),其係儲存於一或多個計算裝置可讀媒體(如,電腦記憶體)中且由一或多個處理單元(如,CPU、GPU)執行。
方法在402始於執行時間應用程式設計介面從在虛 擬機器客端作業系統的控制下執行的應用程式接收圖形命令。在404,回應於執行時間API接收第一圖形命令,載入客端中介層。 在406,在載入客端中介層後,客端中介層向主客通信管理器請求至主端顯示裝置介面的通信通道(如,管線、通訊端)。在虛擬機器管理主端OS的控制下載入主客通信管理器。在408,如果尚未載入主端DDI,則主客通信管理器載入主端DDI,及回應於客端中介層的請求,建立客端中介層及主端DDI之間的通信通道(如,管線、通訊端)。在410,主客通信管理器關聯在該客端中介層及替換程式層的該等給定例項之間的彩現環境(如,介面卡(adaptor))。在412,載入用於相關聯彩現環境的替換程式層。在414,在載入替換程式層後,由替換程式層分配一或多個命令緩衝區。在416,在載入替換程式層後,載入OS核心模式驅動程式。在418,在載入OS核心模式驅動程式後,載入用於給定圖形處理單元(GPU)的裝置專用核心模式驅動程式。
在420,客端中介層透過主客通信管理器向主端DDI請求替換程式層、OS核心模式驅動程式及/或裝置專用核心模式驅動程式(下文稱為「主端堆疊」)之二進位的複製。在422,主端DDI透過主客通信管理器將主端堆疊二進位的複製傳回客端中介層。在424,客端中介層剖析(parse)主端堆疊二進位以決定由替換程式 層分配之一或多個指向命令緩衝區的指標。
在一實作中,VirtualBox包括提供主客通信管理器的 軟體開發套件(software development kit,SDK)。主客通信管理器提供在客端中可由中介層呼叫主端DDI的暫存(registering)。照慣例,VirtualBox亦有其自己的圖形驅動程式(如,使用者模式及核心模式)以在中央處理單元上進行基於軟體的彩現。然而,中央處理單元上之基於軟體的彩現比起圖形處理單元上之基於硬體的圖形彩現,提供實質上較低的彩現效能。因此,本發明具體實施例利用VirtualBox的主客通信管理器而非VirtualBox的圖形驅動程式。
在426,在載入客端中介層及將一或多個指向命令緩 衝區的指標傳送至客端DDI後,客端中介層載入客端顯示裝置介面使用者模式驅動程式(guest display device interface user mode driver)。在428,在載入客端DDI後,客端DDI以指向對應資料結構的指標將彩現函式(rendering function)的回呼(callback)傳回客端中介層。針對在虛擬機器客端OS之例項的控制下執行的每個應用程式,重複402-428的程序。
在430,執行時間API以所接收的圖形命令呼叫至客 端中介層。在432,客端中介層以所接收的圖形命令呼叫至客端DDI。在434,客端DDI處理所接收的圖形命令,其包括以來自彩現命令的引數(argument)填充一或多個命令緩衝區。在436,在客端DDI處理一組一或多個對應的彩現命令後,客端DDI以適當的函式呼叫而回呼至客端中介層。函式呼叫可以是彩現函式、呈現函 式(present function)及/或諸如此類。如果函式為彩現函式,則呼叫包括一或多個指向命令緩衝區的指標。在438,客端中介層透過由主客通信管理器提供的通信通道,自客端DDI發送具有符記ID(如,控制碼)的函式呼叫至主端DDI。針對在虛擬機器客端OS的不同例項的控制下執行的每個應用程式執行430-438的程序。
在一實作中,執行時間API可接收每個彩現框大約 100-300個圖形命令。客端DDI以每個彩現框大約2-6個函式呼叫而回呼。圖形命令的參數(parameter)由客端DDI直接載入VMM主端作業系統記憶體空間的命令緩衝區(OS核心模式驅動程式及/或裝置專用核心模式驅動程式可直接存取)中,不用另外進行記憶體存取。因此,將在中介層及主端DDI之間的通信通道限制在2-6個函式呼叫,而非100-300個圖形命令。
在440,主端DDI決定與從客端中介層例項所接收之 每個函式呼叫之符記ID相關聯的彩現環境。在442,主端DDI將給定彩現環境的每個函式呼叫發送至替換程式層的對應例項。在444,給定替換程式層將函式呼叫發送至OS核心模式驅動程式。在446,OS核心模式驅動程式將函式呼叫發送至裝置專用核心模式驅動程式。在448,OS核心模式驅動程式藉由設定GPU的命令暫存器來排程函式呼叫以執行函式呼叫。由相關聯彩現環境的替換程式層、OS核心模式驅動程式及裝置專用模式驅動程式的對應例項執行440-448的程序。
在450,如果函式呼叫係為呈現函式,則GPU輸出彩 現框資料至裝置專用核心模式驅動程式。在452,裝置專用核心模 式驅動程式透過OS核心模式驅動程式及替換程式層傳回彩現框資料至主端DDI。在454,主端DDI傳送彩現框資料至用於編碼的編碼器以壓縮彩現框資料。在456,編碼器傳送編碼壓縮框資料至網路介面以傳輸至使用者裝置。
本發明具體實施例有利地使若干圖形應用程式同時 執行於具有若干圖形處理單元的伺服器計算裝置上。具體實施例有利地使圖形處理單元主從式平台及雲端計算平台的密度增加。 根據本發明具體實施例,主客通信相對較低且快速,這對於效能很有利。在一實作中,從客端OS至主端OS的呼叫以大約0.3ms或0.3ms以下的往返時間發生。客端實體位址可與在基本OS上執行之GPU的實體位址重疊,使得其中沒有複製,這對於效能亦很有利。根據本發明具體實施例,應用程式看見正版作業系統檔案,這對於反詐欺技術及數位權利管理技術十分穩當。應用程式具有以全螢幕執行的觀感,這對於效能亦很利。使用者模式驅動程式以虛擬機器執行,其可針對核心(core)、執行緒(thread)、及/或諸如此類進行覆蓋(cap)、固定(pin)、調節(throttle)及/或諸如此類。 編碼可在主端中滿足彩現目標,這對於效能亦很利。虛擬機器驅動程式可報告l/n FB大小,其中n是虛擬機器數量。在附接為遠端控制DX彩現裝置(headless DX rendering device)時,可由任何GPU(包括遠端控制Tesla)進行彩現。
已為了圖解及說明而提出本發明具體實施例的以上 描述。以上描述的目的不在詳盡窮舉或限制本發明於所揭示的精確形式,且顯然可按照以上教示進行許多修改及變化。具體實施例的選擇與說明係為了對本發明的原理及實際應用提出最好的解 說,藉此讓熟習本技術者以適於所想特定用途的各種修改,充分利用本發明及各種具體實施例。預期本發明範疇係由本文隨附申請專利範圍及其等效物所定義。

Claims (12)

  1. 一種方法,其包含:藉由一執行時間應用程式設計介面的一給定例項,接收複數個圖形命令;透過一客端中介層的一給定例項,將來自該執行時間應用程式設計介面之該給定例項的該複數個圖形命令傳送至一客端顯示裝置介面的一給定例項;回應於該複數個圖形命令,以一函式呼叫從該客端顯示裝置介面的該給定例項回呼至該客端中介層的該給定例項,其中該執行時間應用程式設計介面的該給定例項、該客端中介層的該給定例項及該客端顯示裝置介面的該給定例項係在一客端作業系統的一給定例項的控制下執行;及透過一主客通信管理器的一通信通道,將該函式呼叫從該客端中介層的該給定例項發送至一主端顯示裝置介面,其中該主客通信管理器及該主端顯示裝置介面係在一主端作業系統的控制下執行。
  2. 如申請專利範圍第1項所述之方法,另外包含:藉由該執行時間應用程式設計介面的一不同例項,接收不同複數個圖形命令;透過該客端中介層的一不同例項,將來自該執行時間應用程式設計介面之該不同例項的該不同複數個圖形命令傳送至該客端顯示裝置介面的一不同例項;回應於該不同複數個圖形命令,以一不同函式呼叫,從該客端顯示裝置介面的該不同例項回呼至該客端中介層的該不同例項, 其中該執行時間應用程式設計介面的該不同例項、該客端中介層的該不同例項及該客端顯示裝置介面的該不同例項係在一客端作業系統的一不同例項的控制下執行;透過該主客通信管理器的一不同通信通道,將來自該客端中介層之該不同例項的該不同函式呼叫發送至該主端顯示裝置介面。
  3. 如申請專利範圍第1項所述之方法,另外包含藉由該客端顯示裝置介面的該給定例項,將該給定複數個圖形命令處理成給定函式呼叫,包括以來自該給定複數個圖形命令的參數載入一或多個命令緩衝區。
  4. 如申請專利範圍第1項所述之方法,其中該客端中介層不是包括該主客通信管理器之一虛擬機器管理器之一顯示裝置介面使用者模式驅動程式。
  5. 如申請專利範圍第1項所述之方法,其中該客端顯示裝置介面不是包括該主客通信管理器之一虛擬機器管理器之一顯示裝置介面使用者模式驅動程式。
  6. 如申請專利範圍第1項所述之方法,其中該複數個圖形命令、該客端中介層的該給定例項、該客端顯示裝置介面的該給定例項、該函式呼叫及該通信通道與一給定環境(given context)相關聯。
  7. 如申請專利範圍第1項所述之方法,另外包含:當一應用程式開始在一給定虛擬機器客端中執行時,插入包 括一進入點的一應用程式初始化常式,該進入點將該顯示裝置介面的該給定例項的一搜尋路徑變更為該客端中介層的該給定例項的一搜尋路徑;在該變更的搜尋路徑載入該客端中介層的該給定例項以在該給定虛擬機器客端中執行;回應於載入該客端中介層的該給定例項,載入回呼至該客端中介層的該給定例項的該客端顯示裝置介面的該給定例項,以在該給定虛擬機器客端中執行;回應於載入該客端中介層的該給定例項,向在一虛擬機器管理主端中執行的一主客通信管理器請求在該客端中介層的該給定例項及該主端顯示裝置介面之間的一通信通道;及回應於載入該主端顯示裝置介面,建立用於該虛擬機器客端的該給定例項的該給定環境。
  8. 如申請專利範圍第7項所述之方法,其中載入該客端顯示裝置介面的該給定例項包括用指向對應資料結構的指標,將彩現函式的回呼從該客端顯示裝置介面的該給定例項傳回到該客端中介層的該給定例項。
  9. 如申請專利範圍第7項所述之方法,其中該主客通信管理器包含VirtualBox的一軟體開發套件。
  10. 如申請專利範圍第7項所述之方法,其中該中介層的該給定例項包含一使用者模式驅動程式動態連結函式庫。
  11. 如申請專利範圍第10項所述之方法,另外包含: 藉由該客端中介層的該給定例項,向該主端顯示裝置介面請求該虛擬機器管理主端之一二進位主端彩現堆疊(binary host rendering stack)的至少一部分;從該主端顯示裝置介面將該二進位主端彩現堆疊之所請求的該部分接收至該客端中介層的該給定例項;及藉由該中介層的該給定例項,剖析該二進位主端彩現堆疊之所請求的該部分,以決定所分配的命令緩衝區。
  12. 如申請專利範圍第11項所述之方法,另外包含:藉由一執行時間應用程式設計介面接收複數個圖形命令;透過該客端中介層,從該執行時間應用程式設計介面將該複數個圖形命令傳送至該客端顯示裝置介面;回應於該複數個圖形命令,以一函式呼叫,從該客端顯示裝置介面回呼至該客端中介層的該給定例項;及透過該主客通信管理器的該通信通道,將該函式呼叫從客端中介層發送至該主端顯示裝置介面。
TW102115783A 2012-05-02 2013-05-02 基於伺服器之圖形處理技術 TWI506586B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/462,801 US9311169B2 (en) 2012-05-02 2012-05-02 Server based graphics processing techniques

Publications (2)

Publication Number Publication Date
TW201407536A true TW201407536A (zh) 2014-02-16
TWI506586B TWI506586B (zh) 2015-11-01

Family

ID=49384668

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102115783A TWI506586B (zh) 2012-05-02 2013-05-02 基於伺服器之圖形處理技術

Country Status (4)

Country Link
US (1) US9311169B2 (zh)
CN (1) CN103383644A (zh)
DE (1) DE102013208041A1 (zh)
TW (1) TWI506586B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI811560B (zh) * 2020-08-17 2023-08-11 宏碁股份有限公司 資源整合系統及資源整合方法
US11995471B2 (en) 2020-08-17 2024-05-28 Acer Incorporated Resource integration system and resource integration method

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542715B2 (en) 2012-05-02 2017-01-10 Nvidia Corporation Memory space mapping techniques for server based graphics processing
US9805439B2 (en) 2012-05-02 2017-10-31 Nvidia Corporation Memory space mapping techniques for server based graphics processing
KR20140027741A (ko) * 2012-08-27 2014-03-07 한국전자통신연구원 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치
US10118095B2 (en) * 2012-12-14 2018-11-06 Nvidia Corporation Implementing a remote gaming server on a desktop computer
JP6437579B2 (ja) * 2014-06-26 2018-12-12 インテル コーポレイション 仮想化環境におけるインテリジェントgpuスケジューリング
JP6472881B2 (ja) * 2014-11-12 2019-02-20 インテル コーポレイション グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション
US20160205172A1 (en) * 2015-01-08 2016-07-14 Futurewei Technologies, Inc. Offloading graph based computations to a backend device
US10970129B2 (en) 2015-09-22 2021-04-06 Intel Corporation Intelligent GPU scheduling in a virtualization environment
EP3355188B1 (en) 2017-01-31 2021-08-25 OpenSynergy GmbH Instrument display on a car dashboard by checking frames of a gui by a realtime os
US10719760B2 (en) * 2017-04-09 2020-07-21 Intel Corporation Neural network scheduling mechanism
CN112363796B (zh) * 2020-10-19 2022-11-11 海光信息技术股份有限公司 一种虚拟机共享内存分配方法、装置及电子设备

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4733222A (en) 1983-12-27 1988-03-22 Integrated Touch Arrays, Inc. Capacitance-variation-sensitive touch sensing array system
JPH0786839B2 (ja) 1990-02-13 1995-09-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチタスク式データ処理システム
US6886168B2 (en) * 2000-01-20 2005-04-26 Q3Dm, Llc Method and system for extensible data processing
AU2002314450A1 (en) 2001-03-23 2002-10-08 Popwire.Com Method and apparatus for streaming video
US7424717B2 (en) * 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US7287256B1 (en) * 2003-03-28 2007-10-23 Adobe Systems Incorporated Shared persistent objects
US7782325B2 (en) 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US7644407B2 (en) * 2004-03-05 2010-01-05 Intel Corporation Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US7650603B2 (en) * 2005-07-08 2010-01-19 Microsoft Corporation Resource management for virtualization of graphics adapters
US20070067535A1 (en) 2005-09-20 2007-03-22 Ta-Wei Liu Motherboard capable of selectively supporting dual graphic engine
US20070168872A1 (en) * 2006-01-19 2007-07-19 Raytheon Company Multi-monitor, multi-JVM java GUI infrastructure with layout via XML
US7768517B2 (en) 2006-02-21 2010-08-03 Nvidia Corporation Asymmetric multi-GPU processing
US8756616B2 (en) * 2006-12-29 2014-06-17 Core Wireless Licensing S.A.R.L. System and method for reducing the static footprint of mixed-language JAVA classes
US8065687B2 (en) 2007-01-05 2011-11-22 Moka5, Inc. Bypass virtualization
US8276167B2 (en) * 2007-03-21 2012-09-25 International Business Machines Corporation Distributed pluggable middleware services
US20080244682A1 (en) 2007-03-26 2008-10-02 General Instrument Corporation Method for enhancing features offered by a software application residing on a set top terminal
US8607013B2 (en) 2007-10-30 2013-12-10 Vmware, Inc. Providing VMM access to guest virtual memory
US8176434B2 (en) * 2008-05-12 2012-05-08 Microsoft Corporation Virtual desktop view scrolling
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8503468B2 (en) 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
US20100125529A1 (en) 2008-11-19 2010-05-20 Venkatesh Srinivasan Remote Rental of Digital Content Peripheral Storage Entities
US20110063304A1 (en) 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
TW201115501A (en) 2009-10-23 2011-05-01 Shih-Chieh Su A method and apparatus for video data coding using graphic processors and central proceesors
US20110102443A1 (en) 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
EP2383648B1 (en) 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
US8499288B2 (en) 2010-05-19 2013-07-30 Microsoft Corporation User interface analysis management
CN102254292A (zh) * 2010-05-20 2011-11-23 盛乐信息技术(上海)有限公司 远程3d指令渲染系统及方法
US20110292057A1 (en) 2010-05-26 2011-12-01 Advanced Micro Devices, Inc. Dynamic Bandwidth Determination and Processing Task Assignment for Video Data Processing
US8522254B2 (en) 2010-06-25 2013-08-27 International Business Machines Corporation Programmable integrated processor blocks
JP4818450B1 (ja) 2010-06-30 2011-11-16 株式会社東芝 グラフィクスプロセッシングユニットおよび情報処理装置
GB2483300A (en) 2010-09-06 2012-03-07 Fonleap Ltd Transferring virtual machine state between host systems with common portions using a portable device
US8499305B2 (en) 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
CN103270492B (zh) 2010-12-15 2016-08-17 国际商业机器公司 用于网络使能应用的硬件加速图形的方法和系统
US20120222051A1 (en) * 2011-02-25 2012-08-30 Microsoft Corporation Shared resource access verification
US9600350B2 (en) 2011-06-16 2017-03-21 Vmware, Inc. Delivery of a user interface using hypertext transfer protocol
US8941671B2 (en) * 2012-01-13 2015-01-27 Microsoft Corporation Para-virtualized domain, hull, and geometry shaders
US20130265271A1 (en) 2012-04-06 2013-10-10 Silicon Integrated Systems Corp. Method of reducing computation of palm rejection by projecting touch data
US9134396B2 (en) 2012-04-17 2015-09-15 Synaptics Incorporated Reducing bending effects in touch sensor devices
US9542715B2 (en) 2012-05-02 2017-01-10 Nvidia Corporation Memory space mapping techniques for server based graphics processing
US20140009576A1 (en) 2012-07-05 2014-01-09 Alcatel-Lucent Usa Inc. Method and apparatus for compressing, encoding and streaming graphics
CN104822429A (zh) 2012-11-28 2015-08-05 辉达公司 掌上游戏机

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI811560B (zh) * 2020-08-17 2023-08-11 宏碁股份有限公司 資源整合系統及資源整合方法
US11995471B2 (en) 2020-08-17 2024-05-28 Acer Incorporated Resource integration system and resource integration method

Also Published As

Publication number Publication date
US9311169B2 (en) 2016-04-12
DE102013208041A1 (de) 2013-11-07
TWI506586B (zh) 2015-11-01
US20130293557A1 (en) 2013-11-07
CN103383644A (zh) 2013-11-06

Similar Documents

Publication Publication Date Title
TWI506586B (zh) 基於伺服器之圖形處理技術
US9542715B2 (en) Memory space mapping techniques for server based graphics processing
CN109643291B (zh) 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US9805439B2 (en) Memory space mapping techniques for server based graphics processing
US8629878B2 (en) Extension to a hypervisor that utilizes graphics hardware on a host
US8405666B2 (en) Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US8463980B2 (en) Shared memory between child and parent partitions
US9734546B2 (en) Split driver to control multiple graphics processors in a computer system
US9063793B2 (en) Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes
US11957974B2 (en) System architecture for cloud gaming
US8654134B2 (en) Command remoting
US11550632B2 (en) Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
US11727632B2 (en) Shader binding management in ray tracing
US9613390B2 (en) Host context techniques for server based graphics processing
US10089264B2 (en) Callback interrupt handling for multi-threaded applications in computing environments
US9041719B2 (en) Method and system for transparently directing graphics processing to a graphical processing unit (GPU) of a multi-GPU system
CN114972607B (zh) 加速图像显示的数据传输方法、装置及介质
EP3301574B1 (en) Method for managing graphic cards in a computing system
US20240062450A1 (en) Cloud Image Rendering for Concurrent Processes
US20180300844A1 (en) Data processing
Li et al. Graphic acceleration mechanism for multiple desktop system based on virtualization technology
US20230186545A1 (en) Systems and methods for improved efficient e-sports spectator mode through use of gpu attached non-volatile memory
US20130328865A1 (en) Apparatus and method for graphic offloading based on virtual machine monitor
Chen et al. MSA: A Novel App Development Framework for Transparent Multi-Screen Support on Android Apps