CN104685479A - 客户虚拟机内的虚拟输入/输出存储器管理单元 - Google Patents
客户虚拟机内的虚拟输入/输出存储器管理单元 Download PDFInfo
- Publication number
- CN104685479A CN104685479A CN201380049432.5A CN201380049432A CN104685479A CN 104685479 A CN104685479 A CN 104685479A CN 201380049432 A CN201380049432 A CN 201380049432A CN 104685479 A CN104685479 A CN 104685479A
- Authority
- CN
- China
- Prior art keywords
- virtual
- client
- address
- guest
- equipment
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
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/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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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
Abstract
虚拟输入/输出存储器管理单元(IOMMU)经配置在与输入/输出(I/O)设备关联的存储器请求周围提供防火墙。虚拟IOMMU使用包括客户页表、主机页表和一般控制寄存器(即,GCR3)表的数据结构。客户页表在硬件中实施以便支持虚拟IOMMU的速度需求。使用存储在设备表中的虚拟设备ID参数对GCR3表索引。
Description
背景
技术领域
所公开的实施方案一般涉及计算机系统,并具体涉及输入/输出(I/O)设备的存储器管理单元。
背景技术
在现代社会中,各种类型的计算机系统是十分普遍的,包括个人计算机(PC)、工作站、服务器、各种个人数字助理(PDA)设备等。这些计算机系统中的大多数,如果不是所有的话,已经实现了用于处理器访问存储器的存储器管理功能。通常,存储器管理功能包括从每个进程使用的虚拟地址空间到跨越真实系统存储器的物理地址空间的地址转换,以及各种存储器保护(例如,只读、读/写、特权层次需求等等)。存储器管理功能具有多种用途,诸如保护每个进程所使用的存储器不被其他进程进行未授权的访问、即使物理存储器系统没有那么大也允许进程使用大虚拟空间以及将虚拟地址再定位到可用物理存储器而没有进程的参与等等。
如同被经常转换的处理器地址,还可转换计算机系统中输入/输出(I/O)设备所使用的地址。即,I/O设备可使用虚拟地址而不是物理地址以访问存储器。由于使用虚拟地址改善系统的整体安全性,因此在现今系统中设备优选地使用虚拟地址而不是物理地址。非法设备(或由恶意软件代理编程的设备)对物理地址的使用将导致受阻的存储器访问。
在单个操作系统(OS)计算机系统中,诸如大多数PC,OS控制其它进程(应用和OS服务)到I/O设备的访问。因此,OS可控制哪一进程在任何给定时间点访问给定设备,并且可至少一定程度上控制设备访问的地址。虚拟机器系统更加复杂,因为它们具有在虚拟机监视器上运行的多个客户OS。在虚拟化系统中,许多应用和I/O设备通过使用虚拟地址访问物理存储器。I/O存储器单元耦合到I/O设备和系统存储器,其中IOMMU经配置将设备存储器请求中的虚拟地址转换为物理地址,以访问物理系统存储器。
现代计算环境包括虚拟机(VM)环境,其中多个VM可作为分离的逻辑操作实体在单个处理器系统上执行。通常,这些逻辑上分离的VM共享处理器系统的共同资源,诸如硬件设备和设备驱动器。为了管理这些多个VM的共存并实现与共同资源以及在这些VM之间交换信息,VM环境通常使用虚拟机监视器(VMM)或超级监督者。
安全性和稳定性为大多数计算机系统中的重要问题,并且特别是对于VM环境。在传统计算机系统中,外围设备以及它们所关联的设备驱动器具有到存储器的自由及不受限制的访问。该种不受限制的访问意味着损坏或者发生故障的设备或设备驱动器可在存储器中的任何位置中写入,无论该存储器位置是否已被闲置出以被该外围使用。如果被闲置用于操作系统使用的存储器位置被发生故障的设备重写,则将几乎不可避免地导致系统崩溃。计算机系统使用者需要稳定性,并且寻求使由于存储器损坏而导致的系统崩溃最小化。
发明内容
需要在分配到每个外围设备及其关联驱动器的存储器周围构造防火墙,以防止不正当的存储器访问。进一步需要的是VM内的虚拟IOMMU,以防止VM环境中的不正当存储器访问。进一步需要的是实施该类防火墙,使得所得输入/输出响应适当地快速。
在一些实施方案中,提供了客户VM内的虚拟化IOMMU。虚拟IOMMU使用包括客户页表、主机页表和一般控制寄存器(即,GCR3)表的数据结构。客户页表在硬件中实施以便支持虚拟IOMMU的速度需求。使用存储在设备表中的虚拟设备ID参数对GCR3表索引。客户页表和主机页表的格式完全相同,其中设备表中的控制位用于在不同的客户页表用途之间进行区分。
下面参考随附附图详细描述所公开实施方案的进一步实施方案、特征和优点以及各种实施方案的结构和操作。
附图说明
并入本文并组成说明书的部分的随附附图示出所公开的实施方案,并与描述一起进一步用来解释所公开实施方案的原理以及使相关领域技术人员作出并使用所公开的实施方案。
图1根据一些实施方案示出计算机系统。
图2根据一些实施方案示出IOMMU体系结构。
图3根据一些实施方案提供示出输入/输出(I/O)设备使用虚拟IOMMU访问存储器的方法的流程图。
所公开实施方案的特征和优点从下面结合附图时阐明的详细描述中变得更加明显,其中贯穿全文的相同参考符号指示相应的元件。在附图中,相同的数字通常指示完全相同、功能上相似和/或结构上相似的元件。通过相应参考数字中的最左数位指示元件首次出现的附图。
具体实施方式
通过背景的方式,诸如虚拟化和虚拟的术语根据它们在计算领域中的含义来使用。具体地,虚拟化是指用于隐藏底层资源的物理特性以便简化方法的技术,其中系统、应用和终端用户可通过该方法与那些资源交互。例如,虚拟化允许单个物理资源(例如,存储器)作为多个逻辑资源出现。因此,虚拟化技术允许单个计算机能够运行许多虚拟机,其中每个虚拟机似乎具有对其可用的单个计算机的整套资源,并且没有到其他虚拟机的任何明显的资源重叠。
参考图1,所示出的方框图根据一些实施方案示出计算机系统10的简化的、高层次视图。如图1所示,系统10包括一个或多个处理器12、包括一个或多个转换后备缓冲器(TLB)16的存储器管理单元14、存储器控制器(MC)18、存储器20、可包括一个或多个I/O TLB(IOTLB)24的一个或多个I/O设备22以及可包括表遍历器(walker)28、高速缓存30、控制寄存器32和控制逻辑34的I/O MMU(IOMMU)26。处理器12耦合到MMU 14,其耦合到存储器控制器18。I/O设备22耦合到IOMMU 26,其耦合到存储器控制器18。表遍历器28、高速缓存30、控制寄存器32和控制逻辑34在IOMMU 26内耦合在一起。
如下面所进一步描述,IOMMU 26可包括各种特征以简化系统10中的虚拟化。下面的描述将参考虚拟机监视器(VMM),其管理虚拟机(调度它们在底层硬件上的执行)、控制到各种系统资源的访问等等。应注意,VMM有时也被称为超级监督者。在所示出的实施方案中,处理器12正在虚拟化环境中执行软件。因此,示出了三个虚拟机100A、100B和100C(例如,VM 1-3)和VMM 106。在给定的实施方案中,虚拟机100的数目可变化,并且可随着用户启动和停止虚拟机在使用期间动态地改变。在所示出的实施方案中,虚拟机100A包括一个或多个客户应用102和客户操作系统(OS)104。由于OS 104控制通过VMM 106为其创建的虚拟机100,而不是系统10的物理硬件,因此OS 104被称为“客户”OS。类似地,VM 100B和VM 100C还可每个包括一个或多个客户应用102和客户OS 104。
通常,虚拟机100中的应用102使用客户虚拟地址空间,并因此使用客户虚拟地址(GVA)。每个虚拟机100中的客户OS 104可管理虚拟机100中GVA到客户“物理”地址(GPA)的映射。如果客户OS 104直接在系统10硬件上运行,在没有VMM的情况下,则客户OS 104所生成的物理地址确实是系统10中存储器位置的系统物理地址(SPA)。然而,在虚拟机环境中,VMM 106可管理从GPA到SPA的映射。因此,当处理器12执行存储器请求时,客户OS 104可管理GVA到GPA(其可进一步被VMM 106映射到SPA)的映射。
如图1所示,从I/O设备22到存储器20的路径至少部分与处理器12到存储器20的路径分离。具体地,从I/O设备22到存储器20的路径不经过MMU 14,而是相反地通过IOMMU 26。因此,MMU 14对源自I/O设备22的存储器请求可不提供存储器管理。通常,存储器管理可包括从一种类型的虚拟地址(即,可通过软件使用的地址)到物理地址(即,可通过存储器控制器使用的地址)的地址转换以及存储器保护。存储器保护可控制在某些粒度层次的到存储器的读和/或写访问(例如,页面),以及各种其它属性,诸如特权层次需求、高速缓存性和缓存控制(例如,直写或回写)、一致性等等。可在各种实施方案中实施任何组的存储器保护。在一些实施方案中,通过IOMMU 26实施的存储器保护至少在某些方面可不同于通过MMU14实施的存储器保护。在一个实施方案中,可定义通过IOMMU 26实施的存储器保护,以便可共享存储由IOMMU 26和MMU 14所使用的转换数据的转换表(尽管为便于讨论在图1中被分离地示出)。如下面所进一步描述,在共享转换表信息的一些实施方案中,当已经推广特定页时,诸如当特权改变时,表再遍历可为必需的,以便更新此时可能不可靠的转换页表。根据需要,其他实施方案可不在IOMMU 26和MMU 14之间共享转换表。
通常,I/O设备22可经配置发出存储器请求,诸如存储器读和写请求,以访问存储器20中的存储器位置,以及在某些情况下发出转换请求。例如,存储器请求可为直接存储器访问(DMA)读或写操作的部分。DMA操作可由处理器12执行的软件启动,从而直接或间接地对I/O设备22编程以执行DMA操作。根据在处理器上执行的软件运行的地址空间,I/O设备22可提供有对应于该地址空间的地址,以访问存储器20。例如,在处理器12上执行的客户应用(例如,应用102)可提供给I/O设备22GVA,而在处理器12上执行的客户OS(例如,OS 104)可将GPA提供到I/O设备22。在任何一种情况下,当I/O设备22请求存储器访问时,可通过IOMMU 26将客户地址转换为相应SPA以访问存储器,并且可将系统物理地址提供到存储器控制器18以用于访问。即,IOMMU 26可修改源自I/O设备22的存储器请求以将所接收的请求中的地址改变(即,转换)为SPA,并可将存储器请求转发到存储器控制器18以访问存储器20。
在各种实施方案中,IOMMU 26可根据其从I/O设备接收的地址的类型提供一层、二层转换或不提供转换。更具体地,IOMMU 26可执行一层嵌套转换或两层客户转换。即,IOMMU 26可提供GPA到SPA转换(一层)以及GVA到SPA转换(两层)两者。因此,如上所述,当请求存储器访问时,客户应用102可将GVA地址直接提供给I/O设备22,从而使传统的VMM拦截和转换成为不必要的。该功能可允许诸如计算卸载、用户级I/O和加速I/O设备的先进计算体系结构更加无缝地用于虚拟化系统中。应注意的是,虽然描述了一层、两层转换或没有转换,但设想的是在其它实施方案中,可使用附加的地址空间层次。在该类实施方案中,可通过IOMMU 26执行附加的转换层次(即,多层次转换),以适应附加的地址空间。
如下面所更详细地描述,IOMMU 26具有识别其正在接收给定请求中哪种类型的地址的方式。因此,在I/O设备22经由标准外围总线耦合到IOMMU 26的实施方案中,诸如PCI express(PCIe)互连,例如,可将进程地址空间标识符(PASID)使用事务层协议(TLP)前缀发送到IOMMU26。
IOMMU 26可使用多个数据结构,诸如存储在存储器20中的一组或多组I/O转换表36,以转换存储器的地址以及来自I/O设备22的转换请求。通常,转换表36可为转换数据表,该转换数据可用于将地址从一种类型转换为另一种类型。转换表36可以以任何方式存储转换数据。例如,在一个实施方案中,I/O转换表36可包括类似于那些在x86和AMD64TM指令集体系结构中定义的页表的页表。根据转换层次,客户虚拟地址位或客户物理地址的各种子集可用于索引表36的层次,并且每个层次可为转换的末端(即,为转换存储真实页码)或者可指向(通过另一组地址位索引的)另一个表。页可为转换的单位(即,虚拟页中的每个地址转换为相同的物理页)。页可具有变化的大小,例如,从4千字节直到兆字节或甚至千兆字节。
此外,I/O转换表36可包括将I/O设备(例如,通过设备标识符)映射到页表集的设备表(如图3所示)。设备标识符(ID)可以以多种方式定义,并且可取决于附连设备的外围设备互连。例如,外围部件互连(PCI)设备可从总线号、设备号和功能号(BDF)形成设备ID。HyperTransportTM(HT)设备可使用总线号和单元ID以形成设备ID。如下面进一步所述,设备表可包括由设备ID索引的多个条目,并且每个条目可包括到由具有相应设备ID的设备使用的页表集的指针。另外,在I/O设备22被直接分配到进程或在I/O设备22可在与用户进程相同的地址空间中运行计算的情况下,识别进程地址空间并将其提供到IOMMU26以增强存储器隔离保护。在一些实施方案中,设备表可进一步包括到中断再映射表(例如,如图3所示)的指针,以再映射设备的中断。因此,通常可在一个或多个转换表36中的一个或多个条目中存储从GVA或GPA到SPA的转换,并且条目中的一些可以与其它转换共享。从条目到条目的遍历或“遍历”表可为识别虚拟地址的转换的部分。在一个实施方案中,转换表36可包括以上所述的中断再映射表。
具体地,图1中所示的IOMMU 26可包括表遍历器28以便为给定的存储器请求的转换搜索I/O转换表36。表遍历器28可生成例如读存储器请求的存储器请求,以从转换表36读转换数据。在图1中由虚线箭头38和40示出转换表读取。
为了便于更快速的转换,IOMMU 26可高速缓存一些转换数据。例如,高速缓存30可以是类似于高速缓存以前转换的结果的TLB(或IOTLB)的高速缓存形式,将客户虚拟页码和客户物理页码映射到系统物理页码和相应的转换数据。如果对于给定的存储器请求,没有在高速缓存30中发现转换,则可调用表遍历器28。在各种实施方案中,表遍历器28可以以硬件或微控制器或其它处理器和相应可执行代码(例如,在IOMMU 26中的只读存储器(ROM)中)实施。此外,作为高速缓存30的一部分的其它高速缓存可被包括以高速缓存页表或其部分和/或设备表或其部分。相应地,IOMMU 26可包括一个或多个存储器以存储从存储在存储器20中的转换数据读取或派生的转换数据。
图2根据一些实施方案示出IOMMU体系结构的进一步细节。例如,高速缓存30可包括I/O页表252、设备表228和中断再映射表(IRT)226的高速缓存版本。高速缓存30还可包括GCR3表242的高速缓存版本。控制寄存器32可包括设备表基址寄存器(DTBR)204、系统管理中断(SMI)过滤寄存器206、硬件错误寄存器208、事件计数器寄存器212、命令缓冲区基址寄存器(CBBR)214、事件日志基址寄存器(ELBR)216和页请求日志基址寄存器(PRLBR)218。尽管高速缓存30被示出为在IOMMU26内部,然而实施方案的范围不局限于该位置。另外,实施方案包括位于IOMMU 26之外的高速缓存30。在和I/O设备连接的时候,如果检测到IOMMU 210,则软件启动建立必需控制和数据结构的进程。例如,当建立IOMMU 210时,IOMMU 210可包括客户虚拟高级可编程中断控制器(APIC)日志202、设备表基址寄存器(DTBR)204、系统管理中断(SMI)过滤寄存器206、硬件错误寄存器208、事件计数器寄存器212、命令缓冲区基址寄存器(CBBR)214、事件日志基址寄存器(ELBR)216和页请求日志基址寄存器(PRLBR)218。进一步地,在初始化建立期间,IOMMU 210可包括运算符,以用于选择合适的客户页表的基址指针寄存器表。基址指针寄存器表可以是例如控制寄存器3(CR3)242,其被x86微处理器进程使用以通过为当前任务定位页目录和页表从虚拟地址转换物理地址。
在一个示例中,客户CR3(GCR3)变化可建立新的转换集,并且因此处理器12可自动地使与先前文本关联的TLB条目无效。此外,IOMMU 210可与一个或多个TLB(未示出)关联以缓存地址转换,该地址转换用于实现随后的转换,而不需要执行页表遍历。可将来自设备表的地址传送到IOMMU 210。
一旦建立了数据结构,IOMMU 210可开始控制DMA操作访问、中断再映射、地址转换等等。
IOMMU 210可使用存储器管理I/O(MMIO),以指示支持两层转换。当确定支持两层转换时,通过对合适的设备表条目(DTE)编程来激活两层转换。在嵌套分页中,与DTE关联的事务可包括页表根指针,其指向存储器220中I/O页表252的数据结构的根。
在一些实施方案中,IOMMU 210包括客户虚拟高级可编程中断控制器(APIC)构造224。其他实施方案包括具有经设计支持虚拟化客户APIC的体系结构特征的IOMMU。
系统200还可包括存储器220,其包括附加的存储器块(未示出)。存储器控制器(未示出)可在分离的芯片上或者可被集成在处理器硅上。配置存储器220以使DMA和处理器活动与存储器控制器通信。
在一个示例中,存储器220包括I/O页表252、设备表228、中断再映射表(IRT)226、命令缓冲区232、事件日志234和主机转换模块,诸如超级监督者。IOMMU 210中还包括I/O页表252、设备表228、中断再映射表(IRT)226的高速缓存版本。还可在IOMMU 210中高速缓存GCR3表242,同时还可在一些实施方案中高速缓存虚拟APIC 224。存储器220还可包括并发运行的一个或多个客户OS,诸如客户OS1和客户OS2。超级监督者和客户OS1和OS2为操作用于虚拟化系统的软件构造。
由于IOMMU 210即硬件设备被允许做超级监督者在传统方法下必须要做的事情,因此客户OS更加直接地连接到系统200中的I/O设备。
进一步地,可启动IOMMU 210和存储器220,以使DTBR 204指向设备表228的起始索引。进一步地,CBBR 214与命令缓冲区232的起始索引关联,以使IOMMU 210可读取和消耗存储在命令缓冲区232中的命令。ELBR 216指向事件日志234的起始索引。PRLBR 218指向外围页服务请求(PPSR)表236的起始索引。
IOMMU 210可使用基于存储器的队列,以用于在IOMMU 210和诸如CPU的系统处理器之间交换命令和状态信息。在图2中通过命令缓冲区232表示命令队列。通过每个有效的IOMMU 210实施命令缓冲区232和事件日志234。此外,每个IOMMU 210可实施I/O页服务请求队列。
在一个示例中,当被启用时,IOMMU 210拦截自下游设备到达的请求(可使用例如HyperTransportTM链接或基于PCI的通信对其进行传送)、执行权限检查和关于请求的地址转换以及经由HyperTransportTM链接将上游转换版本发送到存储器220空间。可不变地传递其它请求。
IOMMU 210可从存储器220中的表读取以执行其权限检查、中断再映射和地址转换。为了保证无死锁操作,IOMMU 210对设备表228、I/O页表252和中断再映射表226的存储器访问可使用等时虚拟通道并且可仅引用存储器220中的地址。通过IOMMU 210创立的到命令缓冲区232、事件日志条目234和可选请求队列条目(未示出)的其它存储器读取可使用正常虚拟通道。
如果IOMMU 210为其处理的每个设备请求执行完整的表查找进程,则系统性能可被大幅度地减小。因此,IOMMU 210的实施被期望为IOMMU 210的存储器中的表的内容维持内部高速缓存。在操作期间,IOMMU 210可使用系统软件,以便当其更新由IOMMU 210高速缓存的表条目时发送合适的无效命令。
在一个示例中,IOMMU 210以使用正常虚拟通道的能力写入存储器220中的事件日志234。IOMMU 210可以可选择地写入存储器220中的外围页服务请求队列236。到存储器中的外围页服务请求队列236的写入还可使用正常虚拟通道。
在一个示例中,当系统处理器CPU使用故障机制时,IOMMU210在存储器中提供请求队列以服务外围页请求。任何I/O设备可从IOMMU210请求转换,并且IOMMU 210可响应有成功的转换或页错误。
主机OS还可为I/O设备启动的访问执行转换。当IOMMU 210转换通过I/O设备访问的存储器地址时,主机OS可通过构造指定所需转换的I/O页表来建立其自己的页表。主机OS可在指向最新构造的I/O页表的设备表中创建条目,并且可通知IOMMU最新更新的设备条目。此时,可将(例如,来自显卡或其他I/O设备的)相应IOMMU I/O表和主机OS I/O表映射到相同的表。
可在处理器I/O页表和存储器I/O页表中更新主机OS关于页保护或转换执行的任何改变。
在一个示例中,IOMMU 210经配置执行传统上由示例性超级监督者执行的I/O任务。该布置减少保护、隔离、中断再映射和地址转换的超级监督者干涉的需要。然而,当发生通过IOMMU 210不可处理的页错误时,IOMMU 210可请求通过超级监督者的干涉,以进行解决。然而,一旦解决了冲突,IOMMU 210可继续最初的任务,而再次没有超级监督者干涉。
超级监督者可使用嵌套转换层以分离和隔离客户VM1和VM2。I/O设备可被直接分配到任何并发运行的客户VM,以使I/O设备被容纳到各自VM中的任一个的存储器空间。进一步地,I/O设备22不能够损坏或查看属于超级监督者或者另一个VM的存储器或其它I/O设备。在客户VM内,存在内核地址空间和若干进程(用户)地址空间。可使用嵌套转换信息而无需使用客户转换层授予I/O设备内核特权,以使其具有到客户VM存储器的整个内容的相对自由访问。
为了实现用户层次(进程)I/O和高级计算模型,可实施客户转换层以用于客户进程和I/O的分离和隔离。在IOMMU 210中使用客户转换,可将任何I/O设备直接分配到客户VM中的进程,或者I/O设备可在与用户进程相同的地址空间中运行计算。进程地址空间可被识别到IOMMU 210,以便将使用恰当的转换表。即,每个存储器事务可被标记有进程地址空间ID(PASID)。更具体地,示例PASID可用于识别x86标准客户VM内的应用地址空间。可在I/O设备上使用PASID以隔离存在于共享的本地存储器中的并存环境。
可通过IOMMU 210使用设备ID以为地址转换或中断再映射操作选择嵌套映射表。同时,PASID和设备ID用于唯一地识别应用地址空间。
如上所指出,出于稳定性和安全性原因,期望将I/O设备22的访问限制为仅已被授权给该I/O设备22的那部分存储器。该普遍的需求在虚拟化环境中同样适用。在虚拟化环境中,超级监督者位于软件栈的底部(即,邻近硬件),并且是超级监督者控制实际的物理硬件。通过其对实际物理硬件的控制,超级监督者从而为超级监督者上面的每个软件块创建专用硬件块的假象,即使硬件可实际上不存在。因此,凭借超级监督者,每个操作系统似乎具有其自己到所要求硬件的所需访问,并且因此每个操作系统正常地操作。除了满足每个操作系统的硬件需求,超级监督者还可保持某些硬件部分为隐秘的,并从每个操作系统隐藏。因此,超级监督者能够为这些操作系统中的每个维护非重叠视图。
也被称为客户操作系统的操作系统具有相同的(即,安全性和稳定性)设备驱动器访问相关问题,但具有一个重要的区别。该区别在于客户操作系统不具有直接硬件访问或控制。相反,如上所指出,超级监督者具有在IOMMU 210中进行主机硬件转换的责任。换句话说,主机硬件转换信息对超级监督者可用,但该种信息对客户操作系统不可用。因此,在虚拟化环境中,客户操作系统不可在I/O设备和I/O设备驱动器周围构建防火墙,以便确保将硬件访问限制到所授权的域。
在虚拟化环境中为I/O设备构造防火墙的一种方法为使用虚拟化技术,以创建IOMMU 210的软件版本。然而,由于该种软件实施的相当大的开销,该种方法将导致不可接受的缓慢解决方案。进一步增加防火墙的软件实施的不可接受性的是存在软件根本不可干涉的某些事件。例如,对于设备驱动器正确地运行而设备本身发生故障或被病毒等等损坏的情境,软件不可干涉。具体地,由于软件根本不具有控制机制以构建该种保护机制,因此软件不可隔离结果硬件访问。
继续参考图1并再次参考图1,在一些实施方案中,客户OS 104提供有用于客户VM 100内虚拟IOMMU的硬件支持。该硬件方法允许客户VM 100在I/O设备22周围建立所需防火墙,以使I/O设备22可仅读取和写入到其授权存储器,并从而不可损坏任何其它存储器。超级监督者106通常使用嵌套转换层以分离并隔离客户VM 100。被直接分配到客户VM 100的I/O设备22被限制到该虚拟机的存储器空间。I/O设备22不能够损坏或查看属于超级监督者或者另一个虚拟机的存储器或外围设备。在客户虚拟机内,存在内核地址空间和若干进程(用户)地址空间。通常使用嵌套转换信息授予I/O设备22内核特权,以使其具有到客户虚拟机存储器的整个内容的相对自由访问。为了实现用户层次(进程)I/O和高级计算模型,引入客户转换层以用于客户进程和I/O的分离和隔离。在虚拟IOMMU中使用客户转换,可将I/O设备22直接分配到客户虚拟机中的进程,或者GPU可在与用户进程相同的地址空间中运行计算。
在一些实施方案中,虚拟IOMMU使用包括客户页表254、主机页表256和GCR3表242的数据结构。虚拟IOMMU接收来自I/O设备22的存储器请求。该种存储器请求包括与I/O设备22关联的客户虚拟地址。通过使用客户页表254将客户虚拟地址转换为客户物理地址。客户OS 104维护客户页表254。通过主机页表256将客户物理地址转换为系统物理地址。超级监督者106维护主机页表256。
因此,客户页表254强制实施或验证通过I/O设备22在其存储器请求中正确客户虚拟地址的使用。具体地,客户页表254确保客户虚拟地址在通过与I/O设备22关联的客户OS 104授权的地址的有效范围内。如果客户虚拟地址没有落入通过与I/O设备22关联的客户OS 104授权的地址的有效范围内,那么将阻止存储器请求通过客户页表254访问错误的客户虚拟地址。
客户页表254在硬件中实施以便支持虚拟IOMMU的速度需求,并且客户页表254在硬件中提供防火墙的强制实施。使用存储在设备表228中的虚拟设备ID参数对GCR3表242索引。虚拟设备ID参数与I/O设备22关联。基于虚拟IOMMU中GCR3表242中的索引条目访问客户页表254。
在一些实施方案中,客户页表254和主机页表256的格式完全相同,并且设备表228中的控制位用于在虚拟IOMMU中的不同的客户页表254用途之间进行区分。
在虚拟IOMMU的该实施方案中,使用硬件和软件两种方法实现组成部分的虚拟化。如所指出,使用硬件实现客户页表254,以确保在满意的时间表上执行地址转换。使用传统的软件方法完成虚拟IOMMU中其它组成部分的虚拟化(例如,主机页表256、设备表228、控制、配置和错误报告寄存器204、206、208、212、214、216、218、日志202、222、234、236和中断再映射表226)。这些特定的元素不是特别地性能敏感,并且因此软件虚拟化的使用中隐含的开销不呈现实施虚拟IOMMU的任何困难。
关于GCR3表242的修改,该表被重新运用为虚拟GCR3表。在其传统配置中,GCR3表242经设计支持GPGPU(即,图形处理单元上的通用计算)计算。在该传统配置中,由PASID(进程地址空间ID)索引GCR3表242。在一些实施方案中,由虚拟设备ID索引GCR3表242。可通过在设备表228中放置虚拟设备ID来完成该种索引布置。还可使用其它索引方法,如本领域普通技术人员所能识别的。
图3根据一些实施方案提供在来自I/O设备22的存储器请求周围放置防火墙的方法的流程图。应理解的是,可以用不同的顺序执行所示出的操作,并且在一些实例中可不要求所有的操作。还应进一步理解的是,可通过一个或多个处理器执行该方法,该处理器读取并执行在机器可读介质上存储的指令。
进程在步骤310处开始。在步骤310中,虚拟IOMMU接收通过输入/输出(I/O)设备的存储器请求。存储器请求包括客户虚拟地址。在一些实施方案中,虚拟IOMMU为IOMMU 210的虚拟实施。在一些实施方案中,地址转换信息包括I/O页表条目、设备表条目和中断再映射表信息中的一个或多个。
在步骤320中,虚拟IOMMU(例如,虚拟实施的IOMMU 210)中的客户页表(例如,客户页表254)将客户虚拟地址转换为客户物理地址。通过客户OS(例如,OS 104)维护客户页表254。
在步骤330中,虚拟IOMMU 210中的主机页表(例如,主机页表256)将客户物理地址转换为系统物理地址。通过超级监督者(例如,超级监督者106)维护主机页表256。
在步骤340中,验证客户虚拟地址以确定其是否在通过客户OS104为I/O设备(例如,I/O设备22)授权的地址的有效范围内。
在步骤350中,如果客户虚拟地址不在客户OS 104为I/O设备22授权的地址的有效范围内,那么可阻止存储器请求在虚拟机上执行。
在步骤360中,方法300结束。
所描述的实施方案以及说明书中对“一些实施方案”的引用是指所描述的实施方案可包括特定的特征、结构或特性,但每个实施方案可不必须包括特定的特征、结构或特性。此外,这些短语不是必须参考相同的实施方案。进一步地,当结合特定实施方案描述特定的特征、结构或特性时,应当理解的是,无论是否详细描述,结合其他实施方案实施该类特征、结构或特性是在本领域技术人员的知识范围内的。
本发明的实施方案可以在硬件、固件、软件或者其任何组合中实施。本发明的实施方案也可被实施作为存储在机器可读介质上的指令,该指令可被一个或多个处理器读取和执行。例如,可通过存储在机器可读介质上的指令仿真虚拟IOMMU,该指令可被一个或多个处理器读取和执行。机器可读介质可包括用于以机器(例如计算设备)可读的形式存储或传输信息的任何机制。例如,机器可读介质可包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储媒介;光存储媒介;闪存设备;电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等等)以及其他。进一步地,固件、软件、程序、指令在本文中可被描述为执行特定动作。然而,应当理解的是,该类描述仅仅是为了方便,并且事实上该类动作是由执行固件、软件、程序、指令等等的计算设备、处理器、控制器或其他设备产生的。
以上已经在示出指定功能及其关系的实施的功能构建块的帮助下描述了实施方案。为了方便地描述,本文已经任意地定义了这些功能构建块的界限。可定义可选的界限,只要指定功能及其关系被正确地执行。
具体实施方案的前述描述将完全地披露本发明主题的一般性质,以使通过应用本领域内的知识,而不需要过多的实验,其他人可容易地在不偏离本发明主题的一般概念的情况下修改和/或改造该类具体实施方案的各种应用。因此,基于本文所呈现的教导和引导,该类改造和修改旨在在所公开实施方案的等效意义和范围内。应当理解的是,本文的措词和术语是为了描述而非限制的目的,以使本说明书的术语或措辞由本领域技术人员根据教导和引导来解释。
Claims (20)
1.一种方法,其包括:
由虚拟I/O存储器管理单元(IOMMU)接收通过输入/输出(I/O)设备的存储器请求,其中所述存储器请求包括客户虚拟地址;
使用客户页表通过所述虚拟IOMMU将所述客户虚拟地址转换为客户物理地址,通过客户OS(操作系统)维护所述客户页表;以及
使用主机页表通过所述虚拟IOMMU将所述客户物理地址转换为系统物理地址,通过超级监督者维护所述主机页表。
2.根据权利要求1所述的方法,其中以硬件形式实施所述客户页表。
3.根据权利要求1所述的方法,其还包括:
识别通过与所述I/O设备关联的虚拟设备ID索引的一般控制寄存器(GCR3)表中的条目,其中在所述虚拟IOMMU中的设备表中存储所述虚拟设备ID。
4.根据权利要求3所述的方法,其还包括:
基于所述GCR3表中的所述条目访问所述客户页表。
5.根据权利要求1所述的方法,其还包括:
使用软件虚拟化所述虚拟IOMMU中的所述设备表。
6.根据权利要求1所述的方法,其还包括:
使用软件虚拟化与所述虚拟IOMMU关联的控制寄存器、配置寄存器、错误报告寄存器、日志和中断再映射表中的至少一个。
7.根据权利要求1所述的方法,其还包括:
为所述主机页表和所述客户页表使用完全相同的格式;以及
在所述设备表中使用控制位,以便将所述客户页表的用途区分为虚拟化模式中的主机表。
8.根据权利要求1所述的方法,其还包括:
通过所述虚拟IOMMU验证所述客户虚拟地址,以便确定所述客户虚拟地址是否在由所述客户OS为所述I/O设备授权的地址的有效范围内;以及
如果所述客户虚拟地址不在由所述客户OS为所述I/O设备授权的地址的有效范围内,则阻止所述存储器请求访问所述客户虚拟地址。
9.根据权利要求1所述的方法,其还包括:
通过所述超级监督者管理虚拟机,所述虚拟机经配置支持所述客户OS的操作。
10.一种装置,其包括:
虚拟IOMMU,其经配置接收I/O设备所传输的存储器请求,其中所述存储器请求包括客户虚拟地址,并且其中所述虚拟IOMMU包括数据结构,所述数据结构包括:
客户页表,其经配置将所述客户虚拟地址转换为客户物理地址,通过客户OS维护所述客户页表;以及
主机页表,其经配置将所述客户物理地址转换为系统物理地址,通过超级监督者维护所述主机页表。
11.根据权利要求10所述的装置,其中以硬件形式实施所述客户页表。
12.根据权利要求10所述的装置,其还包括:
GCR3表,其经配置由与所述I/O设备关联的虚拟设备ID索引,其中在所述虚拟IOMMU中的设备表中存储所述虚拟设备ID。
13.根据权利要求12所述的装置,其中所述客户页表经配置以基于所述GCR3表中的所述索引条目进行访问。
14.根据权利要求10所述的装置,其中所述设备表经配置以使用软件在所述虚拟IOMMU中进行虚拟化。
15.根据权利要求10所述的装置,其中使用软件虚拟化与所述虚拟IOMMU关联的控制寄存器、配置寄存器、错误报告寄存器、日志和中断再映射表中的至少一个。
16.根据权利要求10所述的装置,其中:
所述主机页表和所述客户页表使用完全相同的格式;以及
所述设备表使用控制位,以便将所述客户页表的用途区分为虚拟化模式中的主机表。
17.根据权利要求10所述的装置,其中所述虚拟IOMMU经配置验证所述客户虚拟地址,以便确定所述客户虚拟地址是否在通过所述客户OS为所述I/O设备授权的地址的有效范围内。
18.根据权利要求10所述的装置,其中当所述客户虚拟地址不在通过所述客户OS为所述I/O设备授权的地址的有效范围内时,所述客户OS阻止所述存储器请求的执行。
19.根据权利要求10所述的装置,其还包括:
虚拟机,其经配置支持所述客户OS的操作,其中通过所述超级监督者管理所述虚拟机。
20.一种上面存储有指令的计算机可读存储设备,其中通过计算设备执行所述
指令导致所述计算设备仿真装置,所述装置包括:
虚拟IOMMU,其经配置接收通过I/O设备传输的存储器请求,其中所述存储器请求包括客户虚拟地址,并且其中所述虚拟IOMMU包括数据结构,所述数据结构包括:
客户页表,其经配置将所述客户虚拟地址转换为客户物理地址,通过客户OS维护所述客户页表;以及
主机页表,其经配置将所述客户物理地址转换为系统物理地址,通过超级监督者维护所述主机页表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/597,575 | 2012-08-29 | ||
US13/597,575 US9424199B2 (en) | 2012-08-29 | 2012-08-29 | Virtual input/output memory management unit within a guest virtual machine |
PCT/US2013/056856 WO2014036004A1 (en) | 2012-08-29 | 2013-08-27 | Virtual input/output memory management unit wihtin a guest virtual machine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104685479A true CN104685479A (zh) | 2015-06-03 |
CN104685479B CN104685479B (zh) | 2018-04-17 |
Family
ID=49213080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380049432.5A Active CN104685479B (zh) | 2012-08-29 | 2013-08-27 | 客户虚拟机内的虚拟输入/输出存储器管理单元 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9424199B2 (zh) |
EP (1) | EP2891067B1 (zh) |
JP (1) | JP6110946B2 (zh) |
KR (1) | KR101950000B1 (zh) |
CN (1) | CN104685479B (zh) |
IN (1) | IN2015DN01637A (zh) |
WO (1) | WO2014036004A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991057A (zh) * | 2017-04-11 | 2017-07-28 | 深信服科技股份有限公司 | 一种共享显卡虚拟化中内存的调用方法及虚拟化平台 |
CN107193759A (zh) * | 2017-04-18 | 2017-09-22 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
CN107515775A (zh) * | 2016-06-15 | 2017-12-26 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN109074321A (zh) * | 2016-04-16 | 2018-12-21 | 威睿公司 | 用于保护虚拟计算实例的存储页的技术 |
CN109564551A (zh) * | 2016-07-21 | 2019-04-02 | 超威半导体公司 | 在没有页面故障的情况下分配物理页面到虚拟存储器中的稀疏数据集 |
CN111108486A (zh) * | 2017-09-19 | 2020-05-05 | 微软技术许可有限责任公司 | 嵌套管理程序存储器虚拟化 |
WO2020154924A1 (zh) * | 2019-01-29 | 2020-08-06 | 华为技术有限公司 | 电子设备和地址访问方法 |
CN111737176A (zh) * | 2020-05-11 | 2020-10-02 | 福州瑞芯微电子股份有限公司 | 一种基于pcie数据的同步装置及驱动方法 |
CN112602060A (zh) * | 2018-08-30 | 2021-04-02 | 美光科技公司 | 计算机处理器中的虚拟机寄存器 |
CN112612574A (zh) * | 2020-12-18 | 2021-04-06 | 海光信息技术股份有限公司 | 输入输出设备的内存访问管理单元、系统及地址转换方法 |
CN115460172A (zh) * | 2022-08-22 | 2022-12-09 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182349A (zh) * | 2013-05-27 | 2014-12-03 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
US9547603B2 (en) * | 2013-08-28 | 2017-01-17 | Wisconsin Alumni Research Foundation | I/O memory management unit providing self invalidated mapping |
US9983893B2 (en) | 2013-10-01 | 2018-05-29 | Red Hat Israel, Ltd. | Handling memory-mapped input-output (MMIO) based instructions using fast access addresses |
US9916173B2 (en) * | 2013-11-25 | 2018-03-13 | Red Hat Israel, Ltd. | Facilitating execution of MMIO based instructions |
US9135437B1 (en) * | 2014-03-24 | 2015-09-15 | Amazon Technologies, Inc. | Hypervisor enforcement of cryptographic policy |
US9690720B2 (en) | 2014-06-03 | 2017-06-27 | Qualcomm Incorporated | Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device |
US9632953B2 (en) | 2014-06-03 | 2017-04-25 | Qualcomm Incorporated | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers |
US9703726B2 (en) * | 2014-06-24 | 2017-07-11 | Bitdefender IPR Management Ltd. | Systems and methods for dynamically protecting a stack from below the operating system |
US20160077981A1 (en) * | 2014-09-12 | 2016-03-17 | Advanced Micro Devices, Inc. | Method and Apparatus for Efficient User-Level IO in a Virtualized System |
AU2015336065A1 (en) | 2014-10-20 | 2017-05-04 | Pharmaceutical Manufacturing Research Services, Inc. | Extended release abuse deterrent liquid fill dosage form |
US9772962B2 (en) | 2015-05-28 | 2017-09-26 | Red Hat Israel, Ltd. | Memory sharing for direct memory access by a device assigned to a guest operating system |
US9720846B2 (en) | 2015-05-28 | 2017-08-01 | Red Hat Israel, Ltd. | Memory swap for direct memory access by a device assigned to a guest operating system |
US10152612B2 (en) | 2015-09-25 | 2018-12-11 | Intel Corporation | Cryptographic operations for secure page mapping in a virtual machine environment |
US10216533B2 (en) | 2015-10-01 | 2019-02-26 | Altera Corporation | Efficient virtual I/O address translation |
US9959214B1 (en) * | 2015-12-29 | 2018-05-01 | Amazon Technologies, Inc. | Emulated translation unit using a management processor |
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US9846610B2 (en) | 2016-02-08 | 2017-12-19 | Red Hat Israel, Ltd. | Page fault-based fast memory-mapped I/O for virtual machines |
US10073710B2 (en) | 2016-02-25 | 2018-09-11 | Red Hat Israel, Ltd. | Host-driven application memory protection for virtual machines |
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 |
US11150928B2 (en) * | 2016-06-08 | 2021-10-19 | Red Hat Israel, Ltd. | Hypervisor translation bypass |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10162764B2 (en) | 2016-07-18 | 2018-12-25 | International Business Machines Corporation | Marking page table/page status table entries to indicate memory used to back address translation structures |
US10169243B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
US10176006B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
US10282305B2 (en) | 2016-07-18 | 2019-05-07 | International Business Machines Corporation | Selective purging of entries of structures associated with address translation in a virtualized environment |
US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing purging of structures associated with address translation |
US10802986B2 (en) | 2016-07-18 | 2020-10-13 | International Business Machines Corporation | Marking to indicate memory used to back address translation structures |
US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
US10241924B2 (en) | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
US10140214B2 (en) | 2016-08-29 | 2018-11-27 | Red Hat Israel, Ltd. | Hypervisor translation bypass by host IOMMU with virtual machine migration support |
US10176122B2 (en) | 2016-10-19 | 2019-01-08 | Advanced Micro Devices, Inc. | Direct memory access authorization in a processing system |
US10013199B2 (en) | 2016-11-15 | 2018-07-03 | Red Hat Israel, Ltd. | Translation bypass by host IOMMU for systems with virtual IOMMU |
US10013388B1 (en) * | 2016-12-19 | 2018-07-03 | Amazon Technologies, Inc. | Dynamic peer-to-peer configuration |
US10635479B2 (en) * | 2016-12-19 | 2020-04-28 | Bitdefender IPR Management Ltd. | Event filtering for virtual machine security applications |
KR101716715B1 (ko) * | 2016-12-27 | 2017-03-15 | 주식회사 티맥스클라우드 | 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 |
US10228981B2 (en) * | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US11469953B2 (en) | 2017-09-27 | 2022-10-11 | Intel Corporation | Interworking of legacy appliances in virtualized networks |
CN116260776A (zh) * | 2017-10-24 | 2023-06-13 | 英特尔公司 | 硬件辅助的虚拟交换机 |
US11698866B2 (en) * | 2017-12-29 | 2023-07-11 | Intel Corporation | Unified address translation for virtualization of input/output devices |
US11036645B2 (en) * | 2018-06-26 | 2021-06-15 | Red Hat, Inc. | Secure userspace networking for guests |
US10853271B2 (en) * | 2018-08-03 | 2020-12-01 | Arm Limited | System architecture with query based address translation for access validation |
US10754796B2 (en) | 2018-08-29 | 2020-08-25 | Red Hat, Inc. | Efficient user space driver isolation by CPU page table switching |
US10983926B2 (en) | 2018-08-29 | 2021-04-20 | Red Hat, Inc. | Efficient userspace driver isolation for virtual machines |
US10809929B2 (en) | 2018-11-30 | 2020-10-20 | International Business Machines Corporation | Combined hardware/software-enforced segmentation of multi-tenant memory/storage systems |
KR102634986B1 (ko) * | 2019-01-08 | 2024-02-07 | 한국전자통신연구원 | 가상화 환경에서의 프로그램 전송 장치 및 방법 그리고 이를 포함하는 시스템 |
US11023397B2 (en) * | 2019-03-25 | 2021-06-01 | Alibaba Group Holding Limited | System and method for monitoring per virtual machine I/O |
US11036649B2 (en) | 2019-04-04 | 2021-06-15 | Cisco Technology, Inc. | Network interface card resource partitioning |
US11494211B2 (en) * | 2019-04-22 | 2022-11-08 | Advanced Micro Devices, Inc. | Domain identifier and device identifier translation by an input-output memory management unit |
US10909053B2 (en) * | 2019-05-27 | 2021-02-02 | Advanced Micro Devices, Inc. | Providing copies of input-output memory management unit registers to guest operating systems |
US20200387326A1 (en) * | 2019-06-10 | 2020-12-10 | Advanced Micro Devices, Inc. | Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit |
US10891238B1 (en) * | 2019-06-28 | 2021-01-12 | International Business Machines Corporation | Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context |
US10970224B2 (en) | 2019-06-28 | 2021-04-06 | International Business Machines Corporation | Operational context subspaces |
US11074195B2 (en) | 2019-06-28 | 2021-07-27 | International Business Machines Corporation | Access to dynamic address translation across multiple spaces for operational context subspaces |
US11176056B2 (en) | 2019-06-28 | 2021-11-16 | International Business Machines Corporation | Private space control within a common address space |
US11042495B2 (en) * | 2019-09-20 | 2021-06-22 | Advanced Micro Devices, Inc. | Providing interrupts from an input-output memory management unit to guest operating systems |
US11301402B2 (en) * | 2020-04-30 | 2022-04-12 | Red Hat, Inc. | Non-interrupting portable page request interface |
EP4268085A4 (en) * | 2020-12-22 | 2024-04-10 | Intel Corp | PROCESSOR CIRCUITRY TO EXECUTE AN INPUT-OUTPUT TRANSLATION VIRTUAL ADDRESS INSTRUCTION |
US11860792B2 (en) | 2021-05-04 | 2024-01-02 | Red Hat, Inc. | Memory access handling for peripheral component interconnect devices |
US11900142B2 (en) | 2021-06-16 | 2024-02-13 | Red Hat, Inc. | Improving memory access handling for nested virtual machines |
CN113868174B (zh) * | 2021-10-11 | 2024-02-06 | 摩尔线程智能科技(北京)有限责任公司 | 验证平台搭建方法、装置及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206687A1 (en) * | 2005-03-08 | 2006-09-14 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
JP2008097173A (ja) * | 2006-10-10 | 2008-04-24 | Renesas Technology Corp | データプロセッサ |
US20080114916A1 (en) * | 2006-11-13 | 2008-05-15 | Hummel Mark D | Filtering and Remapping Interrupts |
US20090013149A1 (en) * | 2007-07-05 | 2009-01-08 | Volkmar Uhlig | Method and apparatus for caching of page translations for virtual machines |
US20100161847A1 (en) * | 2008-12-18 | 2010-06-24 | Solarflare Communications, Inc. | Virtualised interface functions |
JP2010237788A (ja) * | 2009-03-30 | 2010-10-21 | Fujitsu Ltd | サーバ装置、計算機システム、プログラム及び仮想計算機移動方法 |
JP2012079260A (ja) * | 2010-10-06 | 2012-04-19 | Nec Corp | コンピュータ装置及びメモリリソース割当て方法 |
WO2012058364A2 (en) * | 2010-10-29 | 2012-05-03 | Unisys Corporation | Secure partitioning with shared input/output |
CN102473139A (zh) * | 2009-07-24 | 2012-05-23 | 超威半导体公司 | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 |
CN102498478A (zh) * | 2009-07-24 | 2012-06-13 | 超威半导体公司 | 在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu |
WO2012082864A1 (en) * | 2010-12-14 | 2012-06-21 | Advanced Micro Devices, Inc. | Input output memory management unit (iommu) two-layer addressing |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8443156B2 (en) * | 2009-03-27 | 2013-05-14 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US8271450B2 (en) * | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
-
2012
- 2012-08-29 US US13/597,575 patent/US9424199B2/en active Active
-
2013
- 2013-08-27 IN IN1637DEN2015 patent/IN2015DN01637A/en unknown
- 2013-08-27 KR KR1020157007195A patent/KR101950000B1/ko active IP Right Grant
- 2013-08-27 EP EP13763349.1A patent/EP2891067B1/en active Active
- 2013-08-27 WO PCT/US2013/056856 patent/WO2014036004A1/en unknown
- 2013-08-27 CN CN201380049432.5A patent/CN104685479B/zh active Active
- 2013-08-27 JP JP2015529940A patent/JP6110946B2/ja active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206687A1 (en) * | 2005-03-08 | 2006-09-14 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
JP2008097173A (ja) * | 2006-10-10 | 2008-04-24 | Renesas Technology Corp | データプロセッサ |
US20080114916A1 (en) * | 2006-11-13 | 2008-05-15 | Hummel Mark D | Filtering and Remapping Interrupts |
US20090013149A1 (en) * | 2007-07-05 | 2009-01-08 | Volkmar Uhlig | Method and apparatus for caching of page translations for virtual machines |
US20100161847A1 (en) * | 2008-12-18 | 2010-06-24 | Solarflare Communications, Inc. | Virtualised interface functions |
JP2010237788A (ja) * | 2009-03-30 | 2010-10-21 | Fujitsu Ltd | サーバ装置、計算機システム、プログラム及び仮想計算機移動方法 |
CN102473139A (zh) * | 2009-07-24 | 2012-05-23 | 超威半导体公司 | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 |
CN102498478A (zh) * | 2009-07-24 | 2012-06-13 | 超威半导体公司 | 在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu |
JP2012079260A (ja) * | 2010-10-06 | 2012-04-19 | Nec Corp | コンピュータ装置及びメモリリソース割当て方法 |
WO2012058364A2 (en) * | 2010-10-29 | 2012-05-03 | Unisys Corporation | Secure partitioning with shared input/output |
WO2012082864A1 (en) * | 2010-12-14 | 2012-06-21 | Advanced Micro Devices, Inc. | Input output memory management unit (iommu) two-layer addressing |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109074321A (zh) * | 2016-04-16 | 2018-12-21 | 威睿公司 | 用于保护虚拟计算实例的存储页的技术 |
CN109074321B (zh) * | 2016-04-16 | 2023-06-30 | 威睿公司 | 用于保护虚拟计算实例的存储器的方法和系统 |
US11182190B2 (en) | 2016-06-15 | 2021-11-23 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
CN107515775A (zh) * | 2016-06-15 | 2017-12-26 | 华为技术有限公司 | 一种数据传输方法及装置 |
US11922202B2 (en) | 2016-06-15 | 2024-03-05 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
CN109564551A (zh) * | 2016-07-21 | 2019-04-02 | 超威半导体公司 | 在没有页面故障的情况下分配物理页面到虚拟存储器中的稀疏数据集 |
CN106991057B (zh) * | 2017-04-11 | 2020-09-11 | 深信服科技股份有限公司 | 一种共享显卡虚拟化中内存的调用方法及虚拟化平台 |
CN106991057A (zh) * | 2017-04-11 | 2017-07-28 | 深信服科技股份有限公司 | 一种共享显卡虚拟化中内存的调用方法及虚拟化平台 |
CN107193759A (zh) * | 2017-04-18 | 2017-09-22 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
WO2018192160A1 (zh) * | 2017-04-18 | 2018-10-25 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
CN111108486A (zh) * | 2017-09-19 | 2020-05-05 | 微软技术许可有限责任公司 | 嵌套管理程序存储器虚拟化 |
CN111108486B (zh) * | 2017-09-19 | 2023-10-03 | 微软技术许可有限责任公司 | 嵌套管理程序存储器虚拟化 |
CN112602060A (zh) * | 2018-08-30 | 2021-04-02 | 美光科技公司 | 计算机处理器中的虚拟机寄存器 |
CN113168380A (zh) * | 2019-01-29 | 2021-07-23 | 华为技术有限公司 | 电子设备和地址访问方法 |
CN113168380B (zh) * | 2019-01-29 | 2022-09-09 | 华为技术有限公司 | 电子设备和地址访问方法 |
WO2020154924A1 (zh) * | 2019-01-29 | 2020-08-06 | 华为技术有限公司 | 电子设备和地址访问方法 |
CN111737176A (zh) * | 2020-05-11 | 2020-10-02 | 福州瑞芯微电子股份有限公司 | 一种基于pcie数据的同步装置及驱动方法 |
CN112612574A (zh) * | 2020-12-18 | 2021-04-06 | 海光信息技术股份有限公司 | 输入输出设备的内存访问管理单元、系统及地址转换方法 |
CN112612574B (zh) * | 2020-12-18 | 2023-09-26 | 海光信息技术股份有限公司 | 输入输出设备的内存访问管理单元、系统及地址转换方法 |
CN115460172A (zh) * | 2022-08-22 | 2022-12-09 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
CN115460172B (zh) * | 2022-08-22 | 2023-12-05 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
JP2015526829A (ja) | 2015-09-10 |
EP2891067B1 (en) | 2019-02-27 |
KR101950000B1 (ko) | 2019-02-19 |
KR20150048173A (ko) | 2015-05-06 |
WO2014036004A1 (en) | 2014-03-06 |
US20140068137A1 (en) | 2014-03-06 |
EP2891067A1 (en) | 2015-07-08 |
JP6110946B2 (ja) | 2017-04-05 |
US9424199B2 (en) | 2016-08-23 |
IN2015DN01637A (zh) | 2015-07-03 |
CN104685479B (zh) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104685479A (zh) | 客户虚拟机内的虚拟输入/输出存储器管理单元 | |
US7613898B2 (en) | Virtualizing an IOMMU | |
KR101782398B1 (ko) | 보안된 가상 머신간 공유된 메모리 통신을 위한 기술 | |
CN103842976B (zh) | 具有保护模式以防止i/o装置进行存储器访问的输入/输出存储器管理单元 | |
US7873770B2 (en) | Filtering and remapping interrupts | |
US7849287B2 (en) | Efficiently controlling special memory mapped system accesses | |
CN102473139B (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
CN104040518B (zh) | 高效存储器和资源管理 | |
JP5611622B2 (ja) | バーチャルマシーンシステムの物理的メモリのバーチャル化 | |
CN1991808B (zh) | 用于访客访问存储器映射的设备的方法和装置 | |
CN102906702B (zh) | 对适配器的地址空间的访客端访问 | |
AMD et al. | Technology (IOMMU) specification | |
TW202111587A (zh) | 用於容許安全通訊之積體電路、方法及製造物件 | |
DK2430556T3 (en) | Enabling / disabling adapters in a computer environment | |
CN101004726A (zh) | 直接传送中断到虚拟处理器 | |
MX2012014534A (es) | Espacios de multiples direcciones por adaptador. | |
KR20080080594A (ko) | 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행 | |
CN103984591A (zh) | 计算机虚拟化系统的PCI设备INTx中断投递方法 | |
US20170249106A1 (en) | Multiple input-output memory management units with fine grained device scopes for virtual machines | |
JP2024508882A (ja) | データ移動を容易にするために複数のアドレス空間をサポートする方法、システム及び装置 | |
US11494211B2 (en) | Domain identifier and device identifier translation by an input-output memory management unit | |
Averlant et al. | An abstraction model and a comparative analysis of Intel and ARM hardware isolation mechanisms | |
US20220222340A1 (en) | Security and support for trust domain operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |