TWI721060B - 用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備、方法及系統 - Google Patents
用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備、方法及系統 Download PDFInfo
- Publication number
- TWI721060B TWI721060B TW105140268A TW105140268A TWI721060B TW I721060 B TWI721060 B TW I721060B TW 105140268 A TW105140268 A TW 105140268A TW 105140268 A TW105140268 A TW 105140268A TW I721060 B TWI721060 B TW I721060B
- Authority
- TW
- Taiwan
- Prior art keywords
- translation
- address
- pasid
- entry
- address translation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Abstract
用於可縮放I/O裝置虛擬化之位址轉譯的本發明實施例被敘述。於一實施例中,設備包括PASID表查找電路。PASID表查找電路是用以在PASID表中找到PASID條目。PASID條目是包括PASID處理模式(PPM)指示符以及指向第一轉譯結構的第一指標。PPM指示符是指明複數個轉譯類型中的一者,複數個轉譯類型中的該一者使用第一轉譯結構。
Description
本發明係有關於資訊處理的領域,更特別地是有關於資訊處理系統中的虛擬化領域。
通常,資訊處理系統中的虛擬化概念允許一或多個操作系統(每個OS)的多個實例在單一資訊處理系統上運行,即使每個OS被設計為對系統以及它的資源進行完全的直接控制。虛擬化通常藉由使用軟體(例如,虛擬機監視器(VMM)或超管理器(hypervisor))來實現,用以向每個OS呈現具有虛擬資源(包括一或多個虛擬處理器)的虛擬機(VM),所述虛擬資源為OS可以完全地和直接地控制,而VMM維護用於實施虛擬化策略的系統環境,例如在VM(虛擬環境)之間共享和/或分配實體資源。
100‧‧‧系統
110‧‧‧SOC
112‧‧‧處理器
114‧‧‧記憶體控制器
116‧‧‧主機結構控制器
120‧‧‧系統記憶體
130‧‧‧圖形處理器
132‧‧‧顯示
140‧‧‧I/O控制器
142‧‧‧I/O記憶體管理單元(IOMMU)
144‧‧‧I/O裝置
146‧‧‧NIC
148‧‧‧資訊儲存裝置
149‧‧‧儲存裝置控制器
150‧‧‧硬體加速器
200‧‧‧處理器
210‧‧‧儲存單元
220‧‧‧指令單元
230‧‧‧執行單元
240‧‧‧控制單元
250‧‧‧記憶體管理單元(MMU)
252‧‧‧轉譯旁看緩衝器
254‧‧‧分頁步行硬體
300‧‧‧IOMMU
310‧‧‧根表查找電路
312‧‧‧根表指標儲存位置
314‧‧‧根表
316‧‧‧根條目
320‧‧‧上下文表查找電路
324‧‧‧上下文表
326‧‧‧上下文條目
330‧‧‧PASID表查找電路
334‧‧‧PASID表
336‧‧‧PASID條目
400‧‧‧PASID條目
410‧‧‧第一層級轉譯指標
420‧‧‧第二層級轉譯指標
430‧‧‧PASID處理模式(PPM)欄位
500‧‧‧方法
510、520、522、524、530、532、534、536、538、540、542、544、546、548、550、552、554、556、558、560、562、564、566、568、570、572、574、576、578、580、582、584、586、588‧‧‧方塊
本發明以舉例的方式闡明而不是限制於下列圖式。
圖1根據本發明實施例示出包括用於輸入/輸出裝置之可縮放虛擬化之位址轉譯的系統。
圖2示出圖1之系統中的處理器。
圖3根據本發明實施例示出輸入/輸出記憶體管理單元。
圖4根據本發明實施例示出PASID條目格式。
圖5根據本發明實施例示出用於輸入/輸出裝置之可縮放虛擬化之位址轉譯的方法。
用於輸入/輸出裝置之可縮放虛擬化之位址轉譯的本發明實施例被敘述。在這敘述中,數個特定細節(諸如,組件和系統組態)可以闡述以便更全面地理解本發明。然而,本領域技術人員應當理解到可以在沒有這些具體細節的情況下實施本發明。此外,一些眾所周知的結構、電路及其它特徵沒有詳細示出,以避免不必要地模糊本發明。
在下面的描述中,「一實施例」、「實施例」、「範例性實施例」、「各種實施例」等表示如此敘述的本發明實施例可以包括特定的特徵、結構或特性,但是不止一個實施例可能並不是每個實施例都必然地包括特定的特徵、結構或特性。此外,一些實施例可具有針對其他實施例描述的一些、全部特徵或不具有針對其他實施例描述的特徵。
如在本文之敘述及申請專利範圍使用的且除非以其它
方式指明,使用用以敘述一般元件之一般形容詞「第一」、「第二」、「第三」等等僅指示元件的特定實例或類似元素之不同實例,並且不旨在暗示如此描述的元件必須以特別的順序,無論是時間、空間、排名或以在任何其他方式。
此外,用語「位元」、「旗標」、「欄位」、「條目」、「指示符」等可以用於描述暫存器、表、資料庫中的儲存位置之任何類型或內容,或其他資料結構,無論是以硬體還是軟體實施,但並不意味著將本發明實施例限制在任何特定類型的儲存位置或任何特定儲存位置內的位元數或其他元素。用語“清除”可以用來指示儲存或以其他方式導致零的邏輯值被儲存在儲存位置,以及用語「設定」可以用於指示儲存或以其他方式導致一個、所有或一些其他指定值的邏輯值儲存在儲存位置;然而,這些用語並不意味著將本發明的實施例限制為任何特定的邏輯約定,因為在本發明的實施例中可以使用任何邏輯約定。
此外,如本發明實施例之敘述中使用的,用語之間的「/」字符可能意味著實施例可以包括或使用、和/或根據第一用語和/或第二用語(和/或任何其他附加用語)來實施。
如在先前技術中的敘述,資訊處理系統可提供資源的虛擬化。這些資源可能包括輸入/輸出(I/O)裝置,其中I/O裝置的定義可包括控制器(諸如匯流排、互連和/或結構控制器、網路介面控制器(NIC)等)、處理器/
加速器(諸如,圖形處理器、加密和/或壓縮加速器等)以及可能定址在系統中的任何其他資源。各種虛擬化方案和使用已經開發並持續開發,包括那些具有許多(數百到數千或更多)VM或其他容器(例如,OS管理的單獨的和/或隔離的執行環境),其中任何數目之I/O裝置可在各種時間由任何數目之VM或容器使用和/或共享。因此,本發明的實施例可能期望提供I/O設備的有效和可縮放的虛擬化。
圖1示出系統100,資訊處理系統包括本發明實施例之用於I/O裝置之可縮放虛擬化之位址轉譯。系統100可表示任何類型之資訊處理系統,諸如伺服器、桌上型電腦、可攜式電腦、機上盒、諸如平板或智慧型手機的手持裝置或嵌入式控制系統。系統100包括處理器112、記憶體控制器114、主機結構控制器116、I/O控制器140、I/O記憶體管理單元(IOMMU)142、系統記憶體120、圖形處理器130及硬體加速器150。實施本發明之系統可以包括這些組件中的每一個和任何其它組件或其他元件的任何數目,諸如附加的外圍裝置和/或I/O裝置。本系統或任何系統實施例中的任何或全部組件或其他元件可以透過任何數目的匯流排、點對點或其它有線或無線介面或連接來彼此連接、耦合或以其他方式彼此通訊,除非另有指明。系統100之任何組件或其它部分(無論顯示於圖1或未顯示於圖1)可被整合或以其它方式包括在單一晶片(系統單晶片或SOC)、晶粒、基板或封裝上或中,諸如
SOC 110。
系統記憶體120可以為動態隨機存取記憶體(DRAM)或處理器112可讀的任何其它類型的介質。記憶體控制器114可表示用於存取、維持和/或以其它方式控制系統記憶體120之任何電路或組件。主機結構控制器116可表示用於控制處理器和/或其他系統組件可以通訊的互連網路或結構的任何電路或組件。圖形處理器130可包括任何處理器或其它用來處理用於顯示132之圖形資料的其它組件。硬體加速器150可表示任何密碼單元、壓縮或處理器可以卸載諸如加密或壓縮演算法的硬體加速之類的功能的任其他加速器。
I/O控制器140可表示任何包括或透過周邊裝置、輸入/輸出(I/O)或其它組件或裝置(諸如,I/O裝置144(例如,觸控螢幕、鍵盤、麥克風、揚聲器、其它音訊裝置、相機、視訊或其它媒體裝置、動態或其它感測器、用於全球定位或其它資訊之接收器))之電路或組件(諸如晶片組組件),NIC 146和/或資訊儲存裝置148可連接至或耦合至處理器112。資訊儲存裝置148可表示任何一或多個組件,包括任何一種類型的持續或非揮發性記憶體或儲存器,諸如快閃記憶體和/或固態、磁性或光碟驅動器,並且可以包括其自己的控制器149。
處理器112可表示全部或部分的硬體組件,其包括一或多個處理器或整合在單一基板上或封裝在單一封裝內的處理器核心,在任何組合中,上述的每一者可包括多執行
線程和/或多個執行核心。表示為處理器112或在處理器112中的每一處理器可為任何類型的的處理器,包括通用微處理器(諸如,Intel®Core®處理器系列中的處理器或Intel®公司或其他公司的其他處理器系列)、特殊用途處理器、或微控制器、或其中本發明實施例可被實施之資訊處理系統中的任何其它裝置或組件。處理器112可被架構或設計為根據任何指令集架構(ISA)操作,有藉由或沒有藉由微碼控制。
處理器112可支援根據任何方案的虛擬化。例如,處理器112可操作在兩個模式-軟體直接地在硬體或任何虛擬化環境外側上運行的第一模式,以及其中軟體以其預期的特權級執行但是在由在第一模式運行之VMM所承載的虛擬環境內的第二模式。在虛擬環境中,某些事件、操作和情況(諸如,中斷、異常和嘗試存取特權暫存器或資源)可能會被攔截,即導致處理器退出虛擬環境(VM退出),使得VMM可以操作(例如)以實現虛擬化策略。處理器可以支援用於建立、輸入(VM條目)、退出和維護虛擬環境的指令,並且可以包括指示或控制處理器的虛擬化能力的暫存器位元或其他結構。
圖2示出處理器200,其可表示圖1中處理器112之實施例或圖1中處理器112之多核心處理器實施例之執行核心。處理器200可包括儲存單元210、指令單元220、執行單元230、控制單元240以及記憶體管理單元(MMU)250。處理器200也可包括圖1中未示出的任何
其它電路、結構或邏輯。
儲存單元210可包括處理器200內可使用於任何目的之任何類型之儲存之任何組合;例如,其可包括任何數目之可讀取、可寫入和/或可讀取寫入暫存器、緩衝器和/或快取(使用任何記憶體或儲存技術實施),其中儲存能力資訊、組態資訊、控制資訊、狀態資訊、性能資訊、指令、資料以及在處理器200之操作中可用的任何其他資訊,以及可用於存取這種儲存器和/或導致或支援與存取這種儲存器相關聯的各種操作和/或組態的電路。
指令單元220可包括任何電路、邏輯、結構和/或其它硬體,諸如用以提取、接收、解碼、解讀、排程和/或處置由處理器200執行之指令的指令解碼器。任何指令格式可被用於本發明範圍內;例如包括運算碼及一或多個運算碼之指令,其中運算碼可被解碼為一或多個微指令或由執行單元230執行的微操作。運算元或其它參數可以直接、間接地或根據任何其他方法隱含地與指令相關聯。
執行單元230可包括用於處理資料和執行指令、微指令和/或微操作的任何電路、邏輯、結構和/或其他硬體,諸如算術單元、邏輯單元、浮點單元、移位器等等。執行單元230可表示任何一或多個實體或邏輯上不同的執行單元。
控制單元240可包括用以控制單元和處理器200之其它元件之操作以及轉移資料至處理器200內、處理器200中和處理器200外的任何微碼、韌體、電路、邏輯、結構
和/或硬體。控制單元240可以使處理器200執行或參與本發明的方法實施例的執行,例如下面描述的方法實施例,例如藉由使處理器200使用執行單元230和/或任何其他資源來執行由指令單元220接收的指令和微指令或從由指令單元220接收的指令衍生的微操作。由執行單元230執行的指令可基於儲存在儲存單元210中的控制和/或組態資訊變化。
MMU 250可包括用以管理系統記憶體之任何電路、邏輯、指令、結構和/或其它硬體,諸如根據任何所需方案和系統記憶體之保護提供給實體記憶體之虛擬化。於一實施例中,MMU 250支援使用虛擬記憶體提供軟體(包括在VM中運行的軟體),其中軟體具有用於儲存和存取碼的位址空間,其中資料大於系統(例如,系統記憶體120)中實體記憶體之位址空間。處理器200之虛擬記憶體空間可僅限於在處理器上運行的軟體可用的位址位元的數目,而處理器200的實體記憶體空間可能被限製為系統記憶體120的大小。MMU 250支援諸如分頁之記憶體管理方案,以根據需要將執行的軟體的碼和資料進和出系統記憶體120。作為方案的一部分,軟體可使用未轉譯位址存取處理器之虛擬記憶體空間,未轉譯位址由處理器轉譯為處理器可使用來存取處理器之實體記憶體空間的轉譯的位址。
因此,MMU 250可包括轉譯旁看緩衝器252,其根據任何已知記憶體管理技術(諸如,分頁)以儲存將虛擬、
邏輯、線性或其它未轉譯位址轉譯為實體或其它轉譯的位址之轉譯。為了執行這些位址轉譯,MMU 250可以包括分頁步行硬體254來參考儲存在處理器200、系統記憶體130、圖1未顯示之系統100中的儲存位置和/或任何這些位置的組合中的一或多個資料結構。這些資料結構可以包括分頁目錄、分頁表及根據任何已知分頁架構之其他分頁資料結構。每個這樣的分頁資料結構以及TLB 252可以包括(或具有與單獨或群組之條目相關聯)一或多個位元或其他指示符以用於指示和強制執行各種許可(例如,讀取、寫入或執行),其可以定義或限制對記憶體的分頁(或其他區域)的存取。
處理器與MMU 250的虛擬化功能可以提供建立和維護容器的各種方案,其中容器可以是由超管理器、VMM、OS或任何其他系統或主機軟體建立和維護的任何執行或處理環境。任何平台、系統或機器,包括如圖1所示之系統100中的「裸金屬」平台以及從裸金屬平台抽出的任何VM或其他容器,一或多個容器從其中抽出可稱為主機(host或host machine),以及從主機抽出的每個VM或其他這樣的容器可以被稱為來賓或來賓機(guest或guest machine)。因此,用語「主機軟體」可以是指可以在主機上運行、執行或以其他方式操作並且創建、維護和/或以其他方式管理一或多個容器的任何超管理器、VMM、OS或任何其他軟體,用語「來賓軟體」可以是任何OS、系統、應用、使用者或其他可以在來賓機上運
行、執行或以其它方式操作的軟體。注意在分層容器架構中,軟體可為主機軟體和來賓軟體兩者。例如,在裸金屬平台上運行之第一VMM可建立第一VM,其中第二VMM可運行及建立從第一VM抽出的第二VM,在這種情況下,第二VMM是主機軟體和來賓軟體。
為了方便起見,使用用語「容器處理」可以意味著任何上下文、任務、應用、軟體、特權處理,非特權處理、內核模式處理、監督者模式處理、使用者模式處理或任何其他處理運行在容器內或可運行在容器內。容器可具有位址空間(容器位址空間或來賓位址空間),其不同於系統位址空間(例如,系統記憶體120之位址空間)或主機位址空間(例如,主機之位址空間)。可以將系統位址空間直接存取的位址(即,沒有轉譯)稱為主機實體位址(HPA)。對於隔離、保護或任何其他目的,任何容器位址空間可能與任何其他容器位址空間不同。因此,每個容器處理可以使用要轉譯、過濾或以其他方式處理HPA的位址存取記憶體,而不是轉譯、過濾或以其他方式處理任何其他容器。容器位址的轉譯/處理的差異可能是由於容器位址空間的虛擬化和隔離(例如,來賓軟體可能使用被轉譯為被轉譯為HPA的來賓實體位址空間(GPA)的來賓虛擬位址(GVA))並且還可能是由於使用各種不同類型的容器(例如,VM、OS管理的容器等)和/或不同的容器架構(例如,包括承載多個VM的VM之分層架構、承載多個OS管理的容器之VM等)。
由容器處理使用以存取記憶體的位址(容器位址)可以是許多不同類型的位址中的一者,包括HPA、虛擬位址來賓實體位址(GPA)、來賓虛擬位址(GVA)、直接記憶體存取(DMA)位址等等,並且可以通過任何一或多種技術、類型、層級、層、輪和/或轉譯、過濾和/或處理步驟中的一或多種組合,使用各種資料結構(例如,頁表、擴展頁表、巢套頁表、DMA轉譯表、記憶體存取濾波器、記憶體類型濾波器、記憶體許可濾波器等)中的任何一個,以產生HPA和/或出現故障、錯誤或任何其他類型的判定不允許所請求的存取。各種方案可以包括容器的分層和/或巢套(例如,託管運行來賓OS之VM的VMM、支持多個容器的來賓OS;託管多個VM的VMM,每個VM運行來賓OS等),涉及位址轉譯技術的各種組合。
藉由向系統軟體報告支持的「命令入口網站」的數目,系統100中的I/O裝置中的每個實體功能可以由一或多個客戶(例如,容器、容器處理、主機處理等)變得可用和/或可共享,其中命令入口網站是命令介面,客戶可以透過所述命令介面向I/O裝置(例如,透過入口網站驅動器)提交工作請求。例如,NIC(例如,NIC 146)的命令入口網站可以是配對的傳送佇列和接收佇列;InfiniBand、遠端DMA(RDMA)或其他主機結構控制器(例如,主機結構控制器116)的命令入口網站可以是佇列對;用於非揮發性記憶體快速(NVMe)或其他儲存裝
置控制器(例如,儲存裝置控制器149)的命令入口網站可以是命令佇列;用於圖形處理單元(GPU)的命令入口網站,GPU(GPGPU)上的通用計算或其他加速器(例如,硬體加速器150))可以是可排程的上下文,通過工作提交;等等。命令入口網站可以區分為「管理入口網站」,作為客戶提交工作的介面,其中管理入口網站是容器主機設置或組態命令入口網站的介面。
根據本發明之實施例I/O裝置可向主機軟體報告其支持供使用的一或多個命令入口網站以及它支持多少入口網站,透過其根據系統匯流排或互連規格提供的能力/屬性資訊(例如,透過添加到周邊組件互連快速(PCIe)規範的新功能),藉由用於實體功能的裝置驅動器,或者根據用於報告實體功能能力/屬性的任何其它已知技術。
然後,主機軟體可以使用I/O裝置的管理入口網站(portal)向客戶端分配、映射和/或分配每個命令入口網站。所述分配包括將處理位址空間識別符(PASID)分配給命令入口網站,其中PASID相應於與客戶端相關聯的位址空間。於一實施例中,PASID可以是由PCIe規範定義並由I/O裝置產生的異動中的轉譯層封包(TLP)前綴標頭攜帶的20位元標籤。在命令入口網站的分配完成後,客戶可以根據任何已知的方法向其提交工作請求。
圖3根據本發明實施例示出用於I/O裝置之可縮放虛擬化之位址轉譯的IOMMU 300。諸如IOMMU 300之IOMMU可表示圖1中IOMMU 142的實施例和/或可被整
合至諸如I/O控制器140之I/O控制器、諸如處理器112之處理器和/或諸如SOC 110之SOC中。根據本發明實施例之IOMMU支援將任何類型的I/O裝置之命令入口網站有效且可縮方地分配給任何類型的客戶端,藉由提供要執行的HPA位址轉譯的各種類型的客戶端位址,其中要執行的轉譯類型基於與I/O異動相關聯的PASID來判定,如下面進一步描述的。
IOMMU 300可包括根表查找電路310以找出在根表(諸如,根表314)中的條目。根表314可為在IOMMU 300之本地記憶體中、在系統記憶體120中和/或系統100中的其他地方的資料結構,其中一或多個根條目(例如,根條目316)可被儲存尸根表314可具有儲存在根表指標儲存位置312之根表基地位址。根表查找電路310可包括用以添加根表索引至根表基地位址之電路,其中根表索引可相應於實施例中的匯流排數目,其中I/O裝置之識別符可包括匯流排數目。例如,在包括PCIe匯流排之系統中的I/O裝置可藉由系統組態軟體或韌體分配匯流排號碼、裝置號碼和功能號碼(BDF)。
IOMMU 300也可包括上下文表查找電路320以找出在上下文表(諸如,上下文表324)中的條目。上下文表324可為在IOMMU 300之本地記憶體中、在系統記憶體120中和/或系統100中的其他地方的資料結構,其中一或多個上下文條目(例如,上下文條目326)可被儲存。本發明之實施例可包括任何數目的上下文表,各具有任何數
目的上下文條目位置。上下文表324可具有儲存在根條目位置(例如,根條目316)中的上下文表基地位址。上下文表查找電路320可包括用以添加上下文表索引至上下文表基地位址之電路,其中上下文表索引可相應於實施例中的裝置和功能數目,其中I/O裝置之識別符可包括裝置和功能數目(例如,PCIe BDF)。
IOMMU 300也可包括PASID表查找電路330以找出在PASID表(諸如,PASID表334)中的條目。PASID表334可為在IOMMU 300之本地記憶體中、在系統記憶體120中和/或系統100中的其他地方的資料結構,其中一或多個PASID條目(例如,PASID條目336)可被儲存。本發明之實施例可包括任何數目的PASID表,各具有任何數目的PASID條目位置。PASID表334可具有儲存在上下文條目位置(例如,上下文條目326)中的PASID表基地位址。PASID表查找電路330可包括用以添加PASID表索引至PASID表基地位址之電路,其中PASID表索引可相應於PASID。
每一PASID條目可包括任何數目之欄位以便轉譯由命令入口網站發起的異動可以攜帶或以其他方式關聯的各種位址類型中的任何一種。圖4根據本發明實施例示出PASID條目格式400。
PASID條目400包括第一層級轉譯指標410、第二層級轉譯指標420以及PASID處理模式(PPM)欄位430。第一層級轉譯指標410可以為指向第一層級轉譯資料結構
的指標,例如儲存在系統記憶體120中的頁表之第一階層。第二層級轉譯指標420可以為指向第二層級轉譯資料結構的指標,例如儲存在系統記憶體120中的頁表之第二階層。PPM欄位可儲存PPM指示符以指明要執行各種轉譯模式中的哪一種。例如,轉譯之第一模式可僅使用第一層級轉譯資料結構,轉譯之第二模式可僅使用第二層級轉譯資料結構,以及第三模式可根據巢套或擴展轉譯技術使用第一層級和第二層級轉譯資料結構兩者。因此,主機軟體可以為每個PASID條目編程PPM欄位,使得可以在每個PASID粒度上使用各種轉譯技術,並且可以將任何命令入口網站分配給各種類型的客戶,每個客戶使用任何的各種類型的位址(例如,受限制的HPA、GPA、虛擬、GVA、DMA等)。
因此,由系統100中的I/O裝置攜帶或以其他方式與異動相關聯的PASID可被IOMMU 300用於發起任何類型之各種類型的位址轉譯。I/O異動可以是記憶體讀取、記憶體寫入、原子記憶體讀取/寫入或包括存取系統記憶體的任何其他異動。
作為第一範例,I/O裝置可以是被分配用於與主機應用在共享虛擬記憶體空間中操作的具有使用者模式能力的裝置,I/O裝置具有已經被配置了第一PASID的命令入口網站。命令入口網站可發起包括被存取之記憶體位址的I/O異動,I/O裝置的識別符(例如,BDF)和第一PASID,IOMMU可從該識別符找出第一PASID條目。第
一PASID條目可包括指向第一層級轉譯結構之指標,該第一層級轉譯結構是將虛擬位址(在處理器112之虛擬位址空間中)轉譯為HPA的頁表階層。第一PASID條目也可包括指明僅第一層級轉譯被執行的PPM。因此,包括在I/O異動中且與I/O異動相關聯的記憶體位址可為虛擬位址。
作為第二範例,I/O裝置可具有配置給VM以及其中第二PASID已被分配的命令入口網站。命令入口網站可發起包括被存取之記憶體位址的I/O異動,I/O裝置的識別符(例如,BDF)和第二PASID,IOMMU可從該識別符找出第二PASID條目。第二PASID條目可包括指向第二層級轉譯結構之指標,該第二層級轉譯結構是將GPA(在VM之實體位址空間中)轉譯為HPA的頁表階層。第二PASID條目也可包括指明僅第二層級轉譯被執行的PPM。因此,包括在I/O異動中且與I/O異動相關聯的記憶體位址可為GPA。
作為第三範例,I/O裝置可具有配置給在VM中的OS管理的容器以及其中第三PASID已被分配的命令入口網站。命令入口網站可發起包括被存取之記憶體位址的I/O異動,I/O裝置的識別符(例如,BDF)和第三PASID,IOMMU可從該識別符找出第三PASID條目。第三PASID條目可包括指向第一層級轉譯結構之第一指標以及指向第二層級轉譯結構之第二指標,所述第一轉譯結構為用以轉譯虛擬位址(在容器之虛擬位址空間中)為GPAs(在
VM之實體位址空間中)的頁表階層,所述第二轉譯結構為用以轉譯GPAs(在VM之實體位址空間中)為HPAs的頁表階層。第三PASID條目也可包括PPM,其指明延伸的或巢套的轉譯(使用第一層級和第二層級轉譯結構兩者)將被執行。因此,包括在I/O異動中且與I/O異動相關聯的記憶體位址可為GVA。
作為第四範例,I/O裝置可具有配置給在受限的HPA內之操作以及其中第四PASID已被分配的命令入口網站。命令入口網站可發起包括被存取之記憶體位址的I/O異動,I/O裝置的識別符(例如,BDF)和第四PASID,IOMMU可從該識別符找出第四PASID條目。第四PASID條目可包括指向轉譯結構之指標,所述轉譯結構是濾波器,用於限制對一或多個HPAs範圍的存取。第四PASID條目也可包括PPM,其指明轉譯使用HPA濾波器被執行。因此,包括在I/O異動中且與I/O異動相關聯的記憶體位址可為HPA。
作為第五範例,I/O裝置可具有配置給在具有映射至HPA位址空間之DMA位址空間之基於OS容器內之操作以及其中第五PASID已被分配的命令入口網站。命令入口網站可發起包括被存取之記憶體位址的I/O異動,I/O裝置的識別符(例如,BDF)和第五PASID,IOMMU可從該識別符找出第五PASID條目。第五PASID條目可包括指向為HPA映射結構的DMA位址的轉譯結構的指標。第五PASID條目也可包括PPM,其指明轉譯使用DMA映
射結構被執行。因此,包括在I/O異動中且與I/O異動相關聯的記憶體位址可為DMA位址。
本發明之實施例可以藉由上下文條目中的轉譯類型欄位來支持向後兼容性,其中轉譯類型欄位可以由主機軟體來組態以指名轉譯類型。第一轉譯類型(例如,可縮放I/O虛擬化)可以用於使IOMMU能夠根據本發明之實施例,例如藉由阻隔不攜帶或包括PASID的I/O異動。第二轉譯類型(例如,單根I/O虛擬化或SR-IOV)可以用於使IOMMU能夠根據不同的架構進行操作(例如,PCIe SR-IOV),例如,藉由支持(根據先前已知的技術)不攜帶或包括PASID的I/O異動。
本發明之各種實施例也可包括(在IOMMU中)對於每個命令入口網站的可縮放中斷資源配置的支持。例如,由主機軟體之命令入口網站之組態可以包括將中斷訊息位址/資料值對分配給命令入口網站。I/O裝置可以使用本地或實施方式指明的儲存來儲存每個命令入口網站的中斷消息位址/資料值。例如,對於GPU上下文,可將中斷訊息位址/資料值保存在記憶體中,作為上下文監督狀態的一部分,其由與排程GPU上下文有關的GPU載入。
然後,與產生的中斷(或其他事件)有關,命令入口網站可以使用位址/資料值對執行發布的寫入,主機軟體已經組態所述IOMMU以產生適當類型的中斷。中斷類型可包括主機內核(針對邏輯處理器的內核中斷)、虛擬內核(針對虛擬處理器的內核中斷)、主機使用者(針對主
機應用線程的使用者中斷)、虛擬使用者(針對來賓應用線程的使用者中斷)等等。
替代地,I/O裝置之實體功能可支持本身擁有的表結構,其中每個調度可組態為多個命令入口網站之一的中斷資源(即,每個命令入口網站可以使用表中的一或多個條目)。主機軟體可以使用中斷訊息位址/資料值對每個條目進行編程,以指明中斷的類型。
支持本發明實施例的軟體可以包括VMM或其他系統軟體、可縮放I/O管理器、裝置驅動器和命令入口網站驅動器。VMM或其他系統軟體可以建立、維護和/或管理容器;將I/O裝置資源映射到客戶端;並根據可縮放I/O管理器的要求編程IOMMU資源(包括轉譯結構和中斷資源)。
根據本發明的實施例,可縮放I/O管理器可以操作為系統軟體的層或其他部分以檢測、配置和組態可縮放的I/O資源,並且向客戶配置命令入口網站。它與裝置的互動係透過與裝置驅動器的介面進行提取。
裝置驅動器可以與I/O裝置的每個實體功能相關聯,並且可以作為主機OS或VMM I/O軟體堆疊的一部分被載入/執行。其可接受來自系統軟體或可縮放I/O管理器軟體堆疊的請求,以幫助組態裝置而支持可縮放I/O。例如,它可以透過管理入口網站編程裝置來執行命令入口網站之列舉和/或組態的請求。例如,其可透過管理入口網站執行一個請求,以將PASID和中斷訊息位址/
資料對值分配給命令入口網站。
命令入口網站驅動器可以實施為用於內核客戶的內核模式驅動器或用於可以分配和映射命令入口網站的使用者客戶的使用者模式驅動器。它具有對命令入口網站的指明硬體/軟體介面、裝置支持的工作請求完成方案(例如,內核中斷、使用者中斷、旗號等)、任何共享工作佇列和/或任何由裝置之持的佇列指令。
圖5根據本發明實施例示出用於I/O裝置之可縮放虛擬化之位址轉譯的方法500。雖然本發明之方法實施例在這方面不受限制,可以參考圖1、圖2、圖3和圖4的元件來幫助描述圖5的方法實施例。方法500的各個部分可以由諸如係統100的系統的硬體、韌體、軟體和/或使用者來執行。
在方法500之方塊510中,主機軟體可以在資訊處理系統(例如,系統100)上建立一或多個容器。
在方塊520中,可以組態系統中任何數目的I/O設備所支持的任何數目的命令入口網站,包括在方塊522中為每個命令入口網站分配PASID,並且在方塊524中分配了一個中斷訊息位址/資料值對給每個命令入口網站。
在方塊530中,IOMMU(例如,IOMMU 300)可被組態,包括,在方塊532中編程任何數目的根條目;在方塊534中,編程任何數目的上下文條目;在方塊536中,編程任何數目的PASID條目。在方塊538中,繼續執行系統100上的任何一或多個處理。
在方塊540中,第一記憶體存取異動可由第一命令入口網站發起。在方塊542中,IOMMU可以使用來自第一異動的第一請求者識別符和第一PASID以找出第一PASID條目。在方塊544中,IOMMU可以使用第一PASID條目中的第一PPM來判定由第一異動提供的第一位址是使用第一PASID條目中的第一指針指向的第一轉譯結構進行轉譯,其中第一位址是虛擬位址以及第一轉譯結構是將虛擬位址轉譯為HPA的頁表階層。在方塊546中,執行轉譯。在方塊548中,繼續執行系統100上的任何一或多個處理。
在方塊550中,第二記憶體存取異動可由第二命令入口網站發起。在方塊552中,IOMMU可以使用來自第二異動的第二請求者識別符和第二PASID以找出第二PASID條目。在方塊554中,IOMMU可以使用第二PASID條目中的第二PPM來判定由第二異動提供的第二位址是使用第二PASID條目中的第二指針指向的第二轉譯結構進行轉譯,其中第二位址是GPA以及第二轉譯結構是將GPA轉譯為HPA的擴展頁表階層。在方塊556中,執行轉譯。在方塊558中,繼續執行系統100上的任何一或多個處理。
在方塊560中,第三記憶體存取異動可由第三命令入口網站發起。在方塊562中,IOMMU可以使用來自第三異動的第三請求者識別符和第三PASID以找出第三PASID條目。在方塊564中,IOMMU可以在第三PASID
條目中使用第三PPM來判定由第三異動提供的第三位址是否分別使用在第三PASID條目中的第三轉譯結構和第四轉譯結構按照第三指標和第四指標指向的巢套方案進行轉譯,其中第三位址是GVA,第三轉譯結構是將GVAs轉譯為GPA的頁表階層,以及第四轉譯結構是將GPA轉譯為HPA的巢套或擴展頁表階層。在方塊566中,執行轉譯。在方塊568中,繼續執行系統100上的任何一或多個處理。
在方塊570中,第四記憶體存取異動可由第四命令入口網站發起。在方塊572中,IOMMU可以使用來自第四異動的第四請求者識別符和第四PASID以找出第四PASID條目。在方塊574中,IOMMU可以使用第四PASID條目中的第四PPM來判定由第四異動提供的第四位址是使用第四PASID條目中的第五指針指向的第五轉譯結構進行轉譯,其中第四位址是HPA以及第五轉譯結構是一個HPA濾波器,其用於限制對一系列HPA位址的存取。在方塊576中,執行濾波。在方塊578中,繼續執行系統100上的任何一或多個處理。
在方塊580中,第五記憶體存取異動可由第五命令入口網站發起。在方塊582中,IOMMU可以使用來自第五異動的第五請求者識別符和第五PASID以找出第五PASID條目。在方塊584中,IOMMU可以使用第五PASID條目中的第五PPM來判定由第五異動提供的第五位址是使用第五PASID條目中的第六指針指向的第六轉
譯結構進行轉譯,其中第五位址是虛擬位址以及第六轉譯結構是用以將DMA位址轉譯為HPA之DMA映射。在方塊586中,執行轉譯。在方塊588中,繼續執行系統100上的任何一或多個處理。
在本發明的各種實施例中,圖4中所示的方法可以以不同的順序執行,其中所示的方塊組合或省略、添加附加的方塊,或者與重新排序的、組合的、省略的或附加的方塊的組合。再者,本發明之實施例之方法不限制於方法400或其變化。本文中未描述的許多其它方法實施例(以及設備、系統和其他實施例)在本發明的範圍內是可能的。
本發明之實施例或實施例的一部分(如上所述)可儲存在任何形式的機器可讀取媒體。例如,方法400之全部或一部分可以實施在儲存於由處理器可讀的媒體上的軟體或韌體指令中,其當由處理器執行時,該指令使處理器執行本發明的實施例。此外,本發明的各方面可以實施在儲存在機器可讀取媒體上的資料中,其中資料表示可用於製造處理器或其他組件的全部或部分的設計或其他資訊。
因此,用於可縮放I/O裝置虛擬化之位址轉譯的本發明實施例已經被敘述。雖然已經描述並且在附圖中示出了某些實施例,但是應當理解,此種實施例僅僅是說明性的而不是限制性的廣泛發明,並且本發明不限於所示出和描述的具體結構和配置,因為在研究本發明後,本領域具通常知識者可能會發生各種其他修改。在諸如此類的技術領域中,如果增長速度快,並且不容易預見進一步的進步,
所公開的實施例可以容易地在配置和細節上進行修改,這是藉由在不脫離本發明之原理或所附申請專利範圍的範圍的情況下實現技術進步。
100:系統
110:SOC
112:處理器
114:記憶體控制器
116:主機結構控制器
120:系統記憶體
130:圖形處理器
132:顯示
140:I/O控制器
142:I/O記憶體管理單元(IOMMU)
144:I/O裝置
146:NIC
148:資訊儲存裝置
149:儲存裝置控制器
150:硬體加速器
Claims (16)
- 一種用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備,包含:處理位址空間識別符(PASID)表查找電路,其用以使用來自記憶體存取異動中的PAISD在PASID表中找出PASID條目,其中該PASID係分配給命令入口網站,客戶透過該命令入口網站向輸入/輸出裝置提交工作請求;該PASID條目包括PASID處理模式(PPM)指示符、指向第一轉譯結構的第一指標、以及指向第二轉譯結構的第二指標;其中該PPM指示符係用以指明在位址轉譯中使用三種轉譯模式中的哪一種,該三種轉譯模式包括僅使用該第一轉譯結構的第一模式、僅使用該第二轉譯結構的第二模式、以及使用該第一轉譯結構和該第二轉譯結構兩者的第三模式;以及上下文表查找電路,其與該PASID表查找電路連接,該上下文表查找電路用以在上下文表中找出上下文條目,該上下文條目指向該PASID表並包括轉譯類型欄位,以指明是否在不包括該PASID時阻隔該記憶體存取異動,或者在該記憶體存取異動不包括該PASID時啟用單根輸入/輸出虛擬化。
- 如申請專利範圍第1項所述之位址轉譯設備,更包含用以在根表中找出根條目的根表查找電路,該根條目指向該上下文表。
- 如申請專利範圍第1項所述之位址轉譯設備,其中該位址轉譯係被執行在來自該記憶體存取異動之位址上。
- 如申請專利範圍第1項所述之位址轉譯設備,其中該位址轉譯係從虛擬位址至主機實體位址。
- 如申請專利範圍第1項所述之位址轉譯設備,其中該位址轉譯係從來賓實體位址至主機實體位址。
- 如申請專利範圍第1項所述之位址轉譯設備,其中該位址轉譯係包括主機實體位址過濾。
- 如申請專利範圍第1項所述之位址轉譯設備,其中該位址轉譯係從直接記憶體存取位址至主機實體位址。
- 如申請專利範圍第1項所述之位址轉譯設備,其中該位址轉譯係從來賓虛擬位址至主機實體位址。
- 一種用於輸入/輸出裝置之可縮放虛擬化的位址轉譯方法,包含:將處理位址空間識別符(PASID)分配給命令入口網站,客戶透過該命令入口網站向輸入/輸出裝置提交工作請求;在上下文表中找出上下文條目,該上下文條目指向該PASID表;基於在該上下文條目中的轉譯類型欄位判定是否在不包括該PASID時阻隔該記憶體存取異動,或者在該記憶體存取異動不包括該PASID時啟用單根輸入/輸出虛擬化; 使用該PASID在該PASID表中的PASID條目中找出PASID條目,該PASID條目包括PASID處理模式(PPM)指示符、指向第一轉譯結構的第一指標、以及指向第二轉譯結構的第二指標,其中該PPM指示符係用以指明在位址轉譯中使用三種轉譯模式中的哪一種,該三種轉譯模式包括僅使用該第一轉譯結構的第一模式、僅使用該第二轉譯結構的第二模式、以及使用該第一轉譯結構和該第二轉譯結構兩者的第三模式;以及,在該指明的模式下執行該位址轉譯。
- 如申請專利範圍第9項所述之位址轉譯方法,更包含在根表中找出根條目,該根條目指向該上下文表。
- 如申請專利範圍第9項所述之位址轉譯方法,其中該位址轉譯係從虛擬位址至主機實體位址。
- 如申請專利範圍第9項所述之位址轉譯方法,其中該位址轉譯係從來賓實體位址至主機實體位址。
- 如申請專利範圍第9項所述之位址轉譯方法,其中該位址轉譯係包括主機實體位址過濾。
- 如申請專利範圍第9項所述之位址轉譯方法,其中該位址轉譯係從直接記憶體存取位址至主機實體位址。
- 如申請專利範圍第9項所述之位址轉譯方法,其中該位址轉譯係從來賓虛擬位址至主機實體位址。
- 一種用於輸入/輸出裝置之可縮放虛擬化的位址轉譯系統,包含:系統記憶體; 輸入/輸出裝置,其與該系統記憶體連接,該輸入/輸出裝置用以發起異動至系統記憶體;以及輸入/輸出記憶體管理單元,其與該輸入/輸出裝置連接,該輸入/輸出記憶體管理單元包括:處理位址空間識別符(PASID)表查找電路,該PASID表查找電路使用來自該異動之PASID在PASID表中找出PASID條目,其中該PASID係分配給命令入口網站,客戶透過該命令入口網站向輸入/輸出裝置提交工作請求;該PASID條目包括PASID處理模式(PPM)指示符、指向第一轉譯結構之第一指標、以及指向第二轉譯結構的第二指標,其中該PPM指標用以指明在位址轉譯中使用三種轉譯模式中的哪一種,該三種轉譯模式包括僅使用該第一轉譯結構的第一模式、僅使用該第二轉譯結構的第二模式、以及使用該第一轉譯結構和該第二轉譯結構兩者的第三模式;以及上下文表查找電路,其與該PASID表查找電路連接,該上下文表查找電路用以在上下文表中找出上下文條目,該上下文條目指向該PASID表並包括轉譯類型欄位,以指明是否在不包括該PASID時阻隔該記憶體存取異動,或者在該記憶體存取異動不包括該PASID時啟用單根輸入/輸出虛擬化。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/994,393 US10509729B2 (en) | 2016-01-13 | 2016-01-13 | Address translation for scalable virtualization of input/output devices |
US14/994,393 | 2016-01-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201732607A TW201732607A (zh) | 2017-09-16 |
TWI721060B true TWI721060B (zh) | 2021-03-11 |
Family
ID=59275693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105140268A TWI721060B (zh) | 2016-01-13 | 2016-12-06 | 用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備、方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10509729B2 (zh) |
TW (1) | TWI721060B (zh) |
WO (1) | WO2017123369A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0624582D0 (en) * | 2006-12-08 | 2007-01-17 | Visible Computing Ltd | USB autorun devices |
EP3314366A4 (en) * | 2015-06-24 | 2019-02-20 | INTEL Corporation | Systems and methods for isolating input / output computer resources |
WO2017049590A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Systems and methods for input/output computing resource control |
US10671419B2 (en) * | 2016-02-29 | 2020-06-02 | Red Hat Israel, Ltd. | Multiple input-output memory management units with fine grained device scopes for virtual machines |
US11042496B1 (en) * | 2016-08-17 | 2021-06-22 | Amazon Technologies, Inc. | Peer-to-peer PCI topology |
US20180088978A1 (en) * | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
WO2018176360A1 (en) | 2017-03-31 | 2018-10-04 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10528478B2 (en) * | 2017-05-30 | 2020-01-07 | Ati Technologies Ulc | Page table management for differing virtual and physical address page alignment |
CN110235098B (zh) * | 2017-12-26 | 2021-06-22 | 华为技术有限公司 | 存储系统访问方法及装置 |
US11036645B2 (en) | 2018-06-26 | 2021-06-15 | Red Hat, Inc. | Secure userspace networking for guests |
US11474916B2 (en) | 2018-08-22 | 2022-10-18 | Intel Corporation | Failover of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture |
EP3899719A4 (en) | 2018-12-21 | 2022-07-06 | INTEL Corporation | VIRTUALIZATION OF PROCESS ADDRESS SPACE IDENTIFIERS USING HARDWARE PALL INDICATORS |
EP4268081A1 (en) * | 2020-12-24 | 2023-11-01 | INTEL Corporation | Apparatus and method for extending enqueue command instructions to general-purpose commands to reduce context-switching in virtualization environment |
US20220308909A1 (en) * | 2021-03-29 | 2022-09-29 | Red Hat, Inc. | Exposing untrusted devices to virtual machines |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8060722B2 (en) * | 2009-03-27 | 2011-11-15 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
US20130080714A1 (en) * | 2011-09-28 | 2013-03-28 | Andrew G. Kegel | I/o memory translation unit with support for legacy devices |
US20140068137A1 (en) * | 2012-08-29 | 2014-03-06 | Andrew G. Kegel | Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine |
US8856789B2 (en) * | 2012-09-06 | 2014-10-07 | Assured Information Security, Inc. | Facilitating execution of a self-modifying executable |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4943913A (en) * | 1988-02-10 | 1990-07-24 | International Business Machines Corporation | Operating system accessing control blocks by using home address space segment table to control instruction and operand fetch and store operations |
US6604184B2 (en) * | 1999-06-30 | 2003-08-05 | Intel Corporation | Virtual memory mapping using region-based page tables |
US7124170B1 (en) * | 1999-08-20 | 2006-10-17 | Intertrust Technologies Corp. | Secure processing unit systems and methods |
US6600493B1 (en) * | 1999-12-29 | 2003-07-29 | Intel Corporation | Allocating memory based on memory device organization |
US6718361B1 (en) | 2000-04-07 | 2004-04-06 | Network Appliance Inc. | Method and apparatus for reliable and scalable distribution of data files in distributed networks |
US6907510B2 (en) * | 2002-04-01 | 2005-06-14 | Intel Corporation | Mapping of interconnect configuration space |
US7296267B2 (en) * | 2002-07-12 | 2007-11-13 | Intel Corporation | System and method for binding virtual machines to hardware contexts |
US8843727B2 (en) | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7444493B2 (en) | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US7725305B2 (en) | 2006-06-08 | 2010-05-25 | Microsoft Corporation | Partial virtualization on computing device |
US8561061B2 (en) | 2007-05-14 | 2013-10-15 | Vmware, Inc. | Adaptive dynamic selection and application of multiple virtualization techniques |
US8793117B1 (en) | 2008-04-16 | 2014-07-29 | Scalable Network Technologies, Inc. | System and method for virtualization of networking system software via emulation |
KR20100021868A (ko) * | 2008-08-18 | 2010-02-26 | 삼성전자주식회사 | 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법 |
US8321878B2 (en) | 2008-10-09 | 2012-11-27 | Microsoft Corporation | Virtualized storage assignment method |
US9535849B2 (en) | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8291135B2 (en) | 2010-01-15 | 2012-10-16 | Vmware, Inc. | Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode |
US8473947B2 (en) | 2010-01-18 | 2013-06-25 | Vmware, Inc. | Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions |
US9213567B2 (en) | 2010-10-01 | 2015-12-15 | Futurewei Technologies, Inc. | System and method for controlling the input/output of a virtualized network |
US20120246381A1 (en) | 2010-12-14 | 2012-09-27 | Andy Kegel | Input Output Memory Management Unit (IOMMU) Two-Layer Addressing |
US20120167082A1 (en) | 2010-12-23 | 2012-06-28 | Sanjay Kumar | Direct sharing of smart devices through virtualization |
US8521941B2 (en) * | 2010-12-28 | 2013-08-27 | Plx Technology, Inc. | Multi-root sharing of single-root input/output virtualization |
US8533713B2 (en) | 2011-03-29 | 2013-09-10 | Intel Corporation | Efficent migration of virtual functions to enable high availability and resource rebalance |
US9519781B2 (en) | 2011-11-03 | 2016-12-13 | Cyphort Inc. | Systems and methods for virtualization and emulation assisted malware detection |
US10387324B2 (en) * | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
US9880867B2 (en) | 2013-12-06 | 2018-01-30 | Vmware, Inc. | Method and subsystem for data exchange between a guest operating system and a virtualization layer |
US9471494B2 (en) | 2013-12-20 | 2016-10-18 | Intel Corporation | Method and apparatus for cache line write back operation |
WO2015130837A1 (en) * | 2014-02-25 | 2015-09-03 | Dynavisor, Inc. | Dynamic information virtualization |
US9645766B1 (en) | 2014-03-28 | 2017-05-09 | EMC IP Holding Company LLC | Tape emulation alternate data path |
US20150319250A1 (en) | 2014-04-30 | 2015-11-05 | Anil Vasudevan | Technologies for accelerating network virtualization |
CN105993004B (zh) * | 2014-07-21 | 2019-04-02 | 上海兆芯集成电路有限公司 | 转译后备缓冲器、操作其的方法以及包含其的处理器 |
US9952987B2 (en) | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
US10007619B2 (en) * | 2015-05-29 | 2018-06-26 | Qualcomm Incorporated | Multi-threaded translation and transaction re-ordering for memory management units |
US9645939B2 (en) | 2015-06-26 | 2017-05-09 | Intel Corporation | Hardware apparatuses and methods for distributed durable and atomic transactions in non-volatile memory |
US10303498B2 (en) | 2015-10-01 | 2019-05-28 | Microsoft Technology Licensing, Llc | Performance optimizations for emulators |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US10346306B2 (en) | 2016-04-02 | 2019-07-09 | Intel Corporation | Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions |
US9886303B2 (en) | 2016-06-15 | 2018-02-06 | International Business Machines Corporation | Specialized micro-hypervisors for unikernels |
US11442760B2 (en) | 2016-07-01 | 2022-09-13 | Intel Corporation | Aperture access processors, methods, systems, and instructions |
US10437616B2 (en) | 2016-12-31 | 2019-10-08 | Intel Corporation | Method, apparatus, system for optimized work submission to an accelerator work queue |
-
2016
- 2016-01-13 US US14/994,393 patent/US10509729B2/en active Active
- 2016-12-06 TW TW105140268A patent/TWI721060B/zh not_active IP Right Cessation
- 2016-12-13 WO PCT/US2016/066375 patent/WO2017123369A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8060722B2 (en) * | 2009-03-27 | 2011-11-15 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
US20130080714A1 (en) * | 2011-09-28 | 2013-03-28 | Andrew G. Kegel | I/o memory translation unit with support for legacy devices |
US20140068137A1 (en) * | 2012-08-29 | 2014-03-06 | Andrew G. Kegel | Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine |
US8856789B2 (en) * | 2012-09-06 | 2014-10-07 | Assured Information Security, Inc. | Facilitating execution of a self-modifying executable |
Also Published As
Publication number | Publication date |
---|---|
TW201732607A (zh) | 2017-09-16 |
US20170199827A1 (en) | 2017-07-13 |
WO2017123369A1 (en) | 2017-07-20 |
US10509729B2 (en) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI721060B (zh) | 用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備、方法及系統 | |
JP6110038B2 (ja) | 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション | |
TWI722071B (zh) | 虛擬機器之間的中斷 | |
US20130262736A1 (en) | Memory types for caching policies | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
US11907542B2 (en) | Virtualized-in-hardware input output memory management | |
US20160239333A1 (en) | Apparatus and method for scheduling graphics processing unit workloads from virtual machines | |
US20120159039A1 (en) | Generalized Control Registers | |
JP2013500525A (ja) | I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減 | |
TW201346730A (zh) | 虛擬化中斷優先順序及遞送之技術 | |
WO2014105160A1 (en) | Logging in secure enclaves | |
US11836091B2 (en) | Secure memory access in a virtualized computing environment | |
US20230418762A1 (en) | Unified address translation for virtualization of input/output devices | |
US9875132B2 (en) | Input output memory management unit based zero copy virtual machine to virtual machine communication | |
US10013199B2 (en) | Translation bypass by host IOMMU for systems with virtual IOMMU | |
US20170220466A1 (en) | Sharing a guest physical address space among virtualized contexts | |
US20190026231A1 (en) | System Memory Management Unit Architecture For Consolidated Management Of Virtual Machine Stage 1 Address Translations | |
US7389398B2 (en) | Methods and apparatus for data transfer between partitions in a computer system | |
US11150928B2 (en) | Hypervisor translation bypass | |
US20230032586A1 (en) | Scalable access control checking for cross-address-space data movement | |
US20230185593A1 (en) | Virtual device translation for nested virtual machines | |
US11132146B2 (en) | Technique for efficiently allowing simultaneous access to resources in a computing system | |
US11009841B2 (en) | Initialising control data for a device | |
CN113849427A (zh) | 用于处理器中的细粒度地址空间选择的系统、装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |