用于在虛擬執(zhí)行環(huán)境中進行高效的圖形處理的裝置和方法
【技術領域】
[0001] 概括來講,本發(fā)明涉及計算機處理器的領域。更加具體而言,本發(fā)明涉及一種用于 在虛擬執(zhí)行環(huán)境中進行高效圖形處理的裝置和方法。
【背景技術】
[0002] 虛擬機系統(tǒng)是包括支持一個或多個虛擬機(VM)的虛擬機監(jiān)視器(VMM)的計算機 系統(tǒng)。虛擬機監(jiān)視器是這樣一種軟件程序,其控制物理計算機硬件,并且將在虛擬機(VM) 內執(zhí)行的程序呈現(xiàn)出這些程序是在真正的物理計算機硬件上執(zhí)行的假象。每個VM通常充 當獨立的平臺,其中,該平臺由"客戶"操作系統(tǒng)(0S)控制,"客戶"操作系統(tǒng)即由VMM托管 的0S,其中VMM如同運行在真正的機器上而不是在VM內那樣而執(zhí)行。
[0003] 在一些實施方式中,虛擬執(zhí)行環(huán)境(例如,VMM)由在計算機硬件上本機地 (natively)執(zhí)行的"主機"操作系統(tǒng)(0S)來提供。主機0S可以支持多個不同的客戶0S, 其中每個客戶0S都潛在地運行多個不同的應用程序。在本實施方式中,由主機0S內的邏 輯將由應用程序執(zhí)行的非本機指令截取、解碼并轉換為本機指令。然后,將本機指令的結果 從主機0S提供回應用程序。除了非本機通用指令以外,也可以將非本機圖形指令截取、解 碼并轉換成本機圖形指令以用于在圖形處理單元(GPU)上執(zhí)行。
[0004] 在移動細分市場,通常有多個共存的平臺,并且在一個平臺上運行的應用程序不 能在另一個平臺上運行。如果單個平臺(例如,基于Intel Architecture(IA)的平臺)可 以被配置為無論其原本的目標平臺而運行任何應用程序,則這將具有重要價值。例如前面 討論的平臺虛擬化是實現(xiàn)該愿景的一個可能的解決方案。然而,為了在虛擬平臺上很好地 運行移動應用程序,高效的圖形API轉換對于實現(xiàn)接近于本機用戶體驗非常重要。
【附圖說明】
[0005] 可以結合以下附圖從以下的細節(jié)說明中獲得對本發(fā)明的更好的理解,其中:
[0006] 圖1是具有處理器的計算機系統(tǒng)的實施例的方框圖,其中處理器具有一個或多個 處理器核心和圖形處理器;
[0007] 圖2是處理器的一個實施例的方框圖,其中處理器具有一個或多個處理器核心、 集成的存儲器控制器、以及集成的圖形處理器;
[0008] 圖3是圖形處理器的一個實施例的方框圖,其中,圖形處理器可以是獨立的圖形 處理單元,或者可以是和多個處理核心集成的圖形處理器;
[0009] 圖4是圖形處理器的圖形處理器引擎的實施例的方框圖;
[0010] 圖5是圖形處理器的另一個實施例的方框圖;
[0011] 圖6是包括處理元件陣列的線程執(zhí)行邏輯的方框圖;
[0012] 圖7示出了根據(jù)實施例的圖形處理器執(zhí)行單元的指令格式;
[0013] 圖8是圖形處理器的另一個實施例的方框圖,其中圖形處理器包括圖形管線、媒 體管線、顯示引擎、線程執(zhí)行邏輯、以及渲染輸出管線;
[0014] 圖9A是示出了根據(jù)實施例的圖形處理器命令格式的方框圖;
[0015] 圖9B是示出了根據(jù)實施例的圖形處理器命令序列的方框圖;
[0016] 圖10示出了根據(jù)實施例的數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件構架;
[0017] 圖11示出了包括主機操作系統(tǒng)(0S)和客戶0S的示例性系統(tǒng)構架;
[0018] 圖12示出了包括推測分組發(fā)現(xiàn)邏輯和推測分組執(zhí)行邏輯的本發(fā)明的一個實施 例;
[0019] 圖13A示出了用于處理從客戶0S生成的返回API調用的機制;
[0020] 圖13B示出了本發(fā)明的一個實施例,其中返回API調用被分組以進行推測執(zhí)行;
[0021] 圖14示出了用于生成返回API分組的本發(fā)明的一個實施例;
[0022] 圖15A示出了根據(jù)用于生成返回API分組的本發(fā)明的一個實施例的方法;
[0023] 圖15B示出了根據(jù)本發(fā)明的一個實施例的用于執(zhí)行返回API分組的方法;
[0024] 圖16示出了采用差異化圖形轉換的本發(fā)明的一個實施例;
[0025] 圖17示出了利用傳統(tǒng)圖形API轉換器(GAT)來轉換表面的系統(tǒng);
[0026] 圖18示出了本發(fā)明的一個實施例,其中增強的GAT減少了表面轉換所需的處理;
[0027] 圖19示出了在其中表面組合器按照和應用程序的表面相同的方式進行仿真的系 統(tǒng);
[0028] 圖20示出了本發(fā)明的一個實施例,其中相對于應用程序的表面而對表面組合器 的表面不同地進行處理;
[0029] 圖21示出了用于在主機0S上仿真表面和紋理的系統(tǒng);
[0030] 圖22示出了將客戶的表面轉換成主機紋理的本發(fā)明的一個實施例;
[0031] 圖23示出了在一個實施例中采用的用于將客戶表面轉換成主機紋理的額外的細 節(jié);以及
[0032] 圖24示出了包括用于對表面進行推測分組執(zhí)行、差異化轉換、以及紋理渲染的技 術的一個實施例。
【具體實施方式】
[0033] 在以下描述中,出于解釋的目的闡述了許多具體細節(jié),以便提供對以下描述的本 發(fā)明的實施例的透徹的理解。然而,對于本領域技術人員來說很明顯的是,可以在沒有這些 具體細節(jié)中的一些的情況下實施本發(fā)明的實施例。在其他實例中,以框圖的形式示出了公 知的結構和設備,以避免模糊本發(fā)明的實施例的基本原理。
[0034] 示例性圖形處理器構架和數(shù)據(jù)類型
[0035] 概沭一圖 1-3
[0036] 圖1是根據(jù)實施例的數(shù)據(jù)處理系統(tǒng)100的方框圖。數(shù)據(jù)處理系統(tǒng)100包括一個或 多個處理器102和一個或多個圖形處理器108,并且可以是單處理器桌面系統(tǒng)、多處理器工 作站系統(tǒng)、或具有大量處理器102或處理器核心107的服務器系統(tǒng)。在一個實施例中,數(shù)據(jù) 處理系統(tǒng)100是用在移動、手持或嵌入式設備中的片上系統(tǒng)集成電路(S0C)。
[0037] 數(shù)據(jù)處理系統(tǒng)100的實施例可以包括或被包括在基于服務器的游戲平臺、游戲控 制臺(包括游戲和媒體控制臺)、移動游戲控制臺、手持游戲控制臺、或在線游戲控制臺內。 在一個實施例中,數(shù)據(jù)處理系統(tǒng)100是移動電話、智能電話、平板計算設備或移動互聯(lián)網設 備。數(shù)據(jù)處理系統(tǒng)100也可以包括、耦合于或集成在例如智能手表可穿戴設備、智能眼鏡可 穿戴設備、增強的現(xiàn)實設備、或虛擬現(xiàn)實設備的可穿戴設備內。在一個實施例中,數(shù)據(jù)處理 系統(tǒng)100是具有一個或多個處理器102和由一個或多個圖形處理器108生成的圖形界面的 電視或機頂盒設備。
[0038] 數(shù)據(jù)處理系統(tǒng)100的實施例可以包括或被包括在基于服務器的游戲平臺、游戲控 制臺(包括游戲和媒體控制臺)、移動游戲控制臺、手持游戲控制臺、或在線游戲控制臺內。 在一個實施例中,數(shù)據(jù)處理系統(tǒng)100是移動電話、智能電話、平板計算設備或移動互聯(lián)網設 備。數(shù)據(jù)處理系統(tǒng)100也可以包括、耦合于或集成在例如智能手表可穿戴設備、智能眼鏡可 穿戴設備、增強的現(xiàn)實設備、或虛擬現(xiàn)實設備的可穿戴設備內。在一個實施例中,數(shù)據(jù)處理 系統(tǒng)100是具有一個或多個處理器102和由一個或多個圖形處理器108生成的圖形界面的 電視或機頂盒設備。
[0039] 一個或多個處理器102的每個包括用于處理指令的一個或多個處理器核心107, 其中,當指令被執(zhí)行時,執(zhí)行系統(tǒng)和用戶軟件的操作。在一個實施例中,一個或多個處理器 核心107的每一個被配置為處理特定的指令集109。指令集109可以促成復雜指令集計算 (CISC)、精簡指令集計算(RISC)、或經由超長指令字(VLIW)的計算。多個處理器核心107 的每個都可以處理不同的指令集109,其中,指令集109可以包括用于促成其他指令集仿真 的指令。處理器核心107也可以包括其他處理設備,例如數(shù)字信號處理器(DSP)。
[0040] 在一個實施例中,處理器102包括高速緩存存儲器104。根據(jù)構架,處理器102可 以具有單個內部高速緩存或多個等級的內部高速緩存。在一個實施例中,高速緩存存儲器 在處理器102的多種組件之間被共享。在一個實施例中,處理器102也使用外部高速緩存 (例如,等級3(L3)高速緩存或末級高速緩存(LLC))(未示出),其中所述外部高速緩存可 以使用已知的高速緩存一致性技術而在處理器核心107之間被共享。寄存器文件106另外 包括在處理器102中,其中處理器102可以包括不同類型的寄存器以用于存儲不同類型的 數(shù)據(jù)(例如,整型寄存器、浮點寄存器、狀態(tài)寄存器、以及指令指針寄存器)。一些寄存器可 以是通用寄存器,而其他寄存器可以特定于處理器102的設計。
[0041] 處理器102耦合至處理器總線110以在處理器102和系統(tǒng)100中的其他組件之間 傳輸數(shù)據(jù)信號。系統(tǒng)1〇〇使用包括存儲器控制器集線器116和輸入輸出(I/O)控制器集線 器130的示例性"集線器"系統(tǒng)構架。存儲器控制器集線器116促成存儲器設備和系統(tǒng)100 的其他組件之間的通信,而I/O控制器集線器(ICH) 130提供經由本地I/O總線到I/O設備 的連接。
[0042] 存儲器設備120可以是動態(tài)隨機存取存儲器(DRAM)設備、靜態(tài)隨機存取存儲器 (SRAM)設備、閃速存儲器設備、或具有合適的性能以充當進程存儲器的一些其他存儲器設 備。存儲器120可以存儲數(shù)據(jù)122和指令121以供當處理器102執(zhí)行進程時來使用。存儲 器控制器集線器116也和可選的外部圖形處理器112耦合,其中外部圖形處理器112可以 和處理器102中的一個或多個圖形處理器108通信,以執(zhí)行圖形和媒體操作。
[0043] ICH 130使得外部設備能夠經由高速I/O總線連接至存儲器120和處理器102。 I/O外部設備包括音頻控制器146、固件接口 128、無線收發(fā)器126(例如,Wi-Fi、藍牙)、 數(shù)據(jù)存儲設備124(例如,硬盤驅動器、閃速存儲器等)、以及用于將舊有(例如,個人系統(tǒng) 2(PS/2))設備耦合至系統(tǒng)的舊有I/O控制器。一個或多個通用串行總線(USB)控制器142 連接輸入設備,例如鍵盤和鼠標144組合。網絡控制器134也可以耦合至ICH 130。在一個 實施例中,高性能網絡控制器(未示出)耦合至處理器總線110。
[0044] 圖2是具有一個或多個處理器核心202A-N、集成的存儲器控制器214、以及集成的 圖形處理器208的處理器200的實施例的方框圖。處理器200可以包括額外的核心,該額 外的核心最多為并且包括由虛線方框表示的額外的核心202N。核心202A-N中的每一個包 括一個或多個內部高速緩存單元204A-N。在一個實施例中,每個核心也具有對一個或多個 共享的高速緩存單元206的訪問。
[0045] 內部高速緩存單元204A-N和共享的高速緩存單元206表示處理器200內的高速 緩存存儲器層級。高速緩存存儲器層級可以包括在每個核心內的至少一個等級的指令和數(shù) 據(jù)高速緩存,以及一個或多個等級的共享的中級高速緩存,例如等級2(L2)、等級3(L3)、等 級4 (L4)、或其他等級的高速緩存,其中在外部存儲器之前,最高等級的高速緩存被歸類為 末級高速緩存(LLC)。在一個實施例中,高速緩存一致性邏輯在各個高速緩存單元206和 204A-N之間保持一致性。
[0046] 處理器200也可以包括一組一個或多個總線控制器單元216和系統(tǒng)代理210。一 個或多個總線控制器單元管理一組外部總線,例如一個或多個外部組件互連總線(例如, PCI、PCI Express)。系統(tǒng)代理210提供對各種處理器組件的管理功能性。在一個實施例 中,系統(tǒng)代理210包括用于管理對各種外部存儲器設備(未示出)的訪問的一個或多個集 成的存儲器控制器214。
[0047] 在一個實施例中,核心202A-N中的一個或多個包括對同時的多線程的支持。在這 樣的實施例中,系統(tǒng)代理210包括在處理多線程的處理期間對核心202A-N進行協(xié)調和操作 的組件。系統(tǒng)代理210可以另外包括功率控制單元(PCU),所述功率控制單元包括邏輯和組 件以用于調節(jié)核心202A-N和圖形處理器208的功率狀態(tài)。
[0048] 處理器200另外包括用于執(zhí)行圖形處理操作的圖形處理器208。在一個實施例中, 圖形處理器208與共享的高速緩存單元206耦合,并且與包括一個或多個集成的存儲器控 制器214的系統(tǒng)代理單元210耦合。在一個實施例中,顯示控制器211與圖形處理器208耦 合以將圖形處理器輸出驅動至一個或多個耦合的顯示器。顯示控制器211可以是經由至少 一個互連與圖形處理器耦合的分立模塊,或者可以集成在圖形處理器或系統(tǒng)代理210內。
[0049] 在一個實施例中,使用基于環(huán)的互連單元212以耦合處理器200的內部組件,然而 可以使用可替換的互連單元,例如點對點互連、交換互連、或包括本領域公知的技術在內的 其他技術。在一個實施例中,圖形處理器208經由I/O鏈路213與環(huán)形互連212耦合。
[0050] 示例性I/O鏈路213表示多種I/O互連中的至少一種,其中所述I/O互連包括促 成各種處理器組件和高性能嵌入式存儲器模塊(例如,eDRAM模塊)218之間的通信的包上 I/O互連。在一個實施例中,核心202A-N中的每一個和圖形處理器208都使用嵌入式存儲 器模塊218作為共享的末級高速緩存。
[0051] 在一個實施例中,核心202A-N是執(zhí)行相同指令集構架的同構性核心。在另一實施 例中,核心202A-N在指令集構架(ISA)方面是異構性的,其中,核心202A-N的一個或多個 執(zhí)行第一指令集,而其他核心中的至少一個執(zhí)行第一指令集的子集或不同的指令集。
[0052] 處理器200可以是使用任何數(shù)量的加工技術(例如,互補金屬氧化物半導體 (CMOS)、雙極/互補金屬氧化物半導體(BiCMOS)、或N-型金屬氧化物半導體邏輯(NM0S)) 的一個或多個基板的一部分,或可以在所述基板上實現(xiàn)。此外,處理器200可以在一個或多 個芯片上實現(xiàn),或作為具有除了其他組件之外的示出的組件的片上系統(tǒng)(SOC)集成電路。
[0053] 圖3是圖形處理器300的一個實施例的方框圖,其中,圖形處理器300可以是獨立 的圖形處理單元,或者可以是和多個處理核心集成的圖形處理器。在一個實施例中,圖形處 理器經由存儲器映射I/O接口和圖形處理器上的寄存器通信,并且經由命令而被置入處理 器存儲器。圖形處理器300包括用于訪問存儲器的存儲器接口 314。存儲器接口 314可以 是到本地存儲器、一個或多個內部高速緩存、一個或多個共享的外部高速緩存、和/或到系 統(tǒng)存儲器的接口。
[0054] 圖形處理器300也包括用于將顯示輸出數(shù)據(jù)驅動到顯示設備320的顯示控制器 302。顯示控制器302包括針對一個或多個疊加平面的、用于對視頻或用戶界面元素的多層 的顯示和組合的硬件。在一個實施例中,