CN102498478A - 在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu - Google Patents
在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu Download PDFInfo
- Publication number
- CN102498478A CN102498478A CN201080041194XA CN201080041194A CN102498478A CN 102498478 A CN102498478 A CN 102498478A CN 201080041194X A CN201080041194X A CN 201080041194XA CN 201080041194 A CN201080041194 A CN 201080041194A CN 102498478 A CN102498478 A CN 102498478A
- Authority
- CN
- China
- Prior art keywords
- address
- conversion
- passenger plane
- steering logic
- request
- 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
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/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/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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Abstract
一种用于控制由I/O设备向计算机系统的系统存储器发出的请求的IOMMU,包括控制逻辑和高速缓存存储器。该控制逻辑可转换在来自该I/O设备的请求中接收到的地址。如果所述请求包括具有进程地址空间标识符(PASID)前缀的事务层协议(TLP)封装,则所述控制逻辑可执行两级客机转换。因此,所述控制逻辑可访问所述客机页表集以转换所述请求中接收到的地址。最后客机页表中的指针指向嵌套的页表集中的第一表。所述控制逻辑可使用最后客机页表中的指针访问所述嵌套的页表集以获得与系统存储器中的物理页对应的系统物理地址(SPA)。所述高速缓存存储器存储完成的转换。
Description
技术领域
本发明涉及计算机系统领域,尤其涉及用于输入/输出(I/O)设备的存储器管理单元。
背景技术
在现代社会中,普遍存在着各种类型的计算机系统,包括个人电脑(PC)、工作站、服务器、各种个人数字助理(PDA)设备等等。这些计算机系统中,即使不是所有的话,也有大部分实现了处理器访问存储器的存储器管理功能。通常,存储器管理功能包括从各进程使用的虚拟地址空间向跨越实际系统存储器的物理地址空间的地址转换以及各种存储保护(例如,只读、读/写、权限级别需求等等)。存储器管理功能具有多种用途:保护各进程所占用的存储器不被其它未经授权的进程访问;在物理存储器系统没有那么大的情况下允许各进程占用大的虚拟空间;在进程不参与的情况下给可用的物理存储器重新分配虚拟地址;等等。
当处理器地址被频繁转换时,计算机系统中输入/输出(I/O)设备使用的地址通常不被转换。也就是说,I/O设备使用物理地址访问存储器。在单操作系统(OS)的计算机系统中,例如在大多数PC中,OS控制其它进程(应用程序和OS服务)对I/O设备的访问。因此,OS可控制哪一进程可在任一给定点及时访问给定设备,并可至少某些程度上控制设备访问的地址。然而,在可能有多个客机OS运行在虚拟机监视器上的虚拟机系统中,这样的机制变得更加复杂和繁琐。此外,设备对物理地址的使用降低了系统的整体安全性,因为流氓设备(或由恶意软件代理商编程的设备)可无障碍地访问存储器。
在虚拟化系统中,在I/O设备访问物理存储器时许多应用程序可在虚拟存储器中运行。在某些系统中,虚拟机管理器可拦截并转换I/O设备将使用的地址。然而,此方法可能很繁琐并且指令密集,导致系统性能退化或至少降低由使用诸如计算卸载引擎等I/O设备获得的效果。
发明内容
本发明公开了使用两级转换的IOMMU的各种实施方式。在一个实施方式中,用于控制I/O设备向计算机系统的系统存储器提出的请求的IOMMU包括控制逻辑和高速缓冲存储器。控制逻辑可配置成转换在来自I/O设备的请求中接收到的地址。如果该请求包括带有进程地址空间标识符(PASID)前缀的事务层协议(TLP)包,则该控制逻辑配置成执行两级客机转换(guest translation)。请求中PASID前缀的出现表明所接收的地址为客机虚拟地址(GVA)。因此,为实现两级客机转换,控制逻辑可配置成访问客机页表集以转换在该请求中接收到的地址。在嵌套页表集中最后的客机页表中的指针指向第一页表。该控制逻辑配置成使用该最后的客机页表中的指针访问该嵌套的页表集以获得与系统存储器中的物理页对应的系统的物理地址(SPA)。高速缓冲存储器可配置成存储可用于后续转换的已完成的转换。
附图说明
图1为计算机系统的一个实施方式的高层(high level)视图的结构图。
图2为计算机系统的另一实施方式的结构图。
图3为描述图1中I/O转换表集的一个实施方式的示意图。
图4为图3中示出的设备表的表项目的一个实施方式的示意图。
图5为描述客机虚拟地址转换机制的更详细方面的示意图。
图6为描述图1到图5中示出的计算机系统的实施方式的操作的流程图。
图7为进程地址空间标识符(PASID)前缀的一个实施方式的示意图。
图8A为说明用于PCIe互连的事物层协议(TLP)包的一个实施方式的示意图。
图8B为说明用于PCIe互连的TLP PASID前缀的一个实施方式的示意图。
虽然本发明可容许各种修改和替换形式,附图中示出了作为示例的具体的实施方式,并将在下面详细描述。然而,应理解的是,附图以及对其的详细描述不意欲将本发明的范围限制在所公开的特定形式,正相反,其目的在于覆盖落入所附权利要求所限定的本发明的精神和范围内的所有变型、等同方式和替换方式。应注意,“可”字以许可的意义(即,有可能、能够)而不是强制意义(即,必须)贯穿本申请。
具体实施方式
现在参考图1,图1示出了阐述计算机系统10的一个实施方式的简化的高层视图的结构图。在图解的实施方式中,系统10包括一个或多个处理器12、包含一个或多个转换后备缓冲器(TLB)16的存储器管理单元14、存储器控制器(MC)18、存储器20、可包含一个或多个I/O TLB(I/OTLB)24的一个或多个I/O设备22、以及可包含表辅助工具(tablewalker)28、高速缓冲存储器30、控制寄存器32和控制逻辑34的I/O MMU(IOMMU)26。处理器12联接到MMU 14,MMU 14联接到存储控制器18。I/O设备22联接到IOMMU 26,IOMMU 26联接到存储控制器18。在IOMMU 26内,表辅助工具28、CACHE 30、控制寄存器32和控制逻辑34彼此互联。
如下所进一步描述的,IOMMU 26可包括各种特征以简化系统10中的虚拟化。下面的描述将涉及管理虚拟机(调度其在基础硬件上的执行)、控制对各种系统资源的访问等等的虚拟机监视器(VMM)。应注意的是,VMM有时也指代管理程序(hypervisor)。在图示的实施方式中,处理器12执行在虚拟环境中的软件。相应地,示出了三个虚拟机100A、100B、100C(例如,VM客机1-3)和VMM 106。在给定实施方式中虚拟机的数量可以变化,并在虚拟机由用户开启和停止时可在使用过程中动态改变。在图示的实施方式中,虚拟机100A包括一个或多个客机应用程序102和客户操作系统(OS)104。由于OS 104控制由VMM 106为其创建的虚拟机而不是系统10的物理硬件,因此OS 104被称为“客机”OS。类似地,VM 100B和VM 100C也可各自包括一个或多个客机应用程序和客机OS。
通常,虚拟机中的应用程序使用客机虚拟地址空间并因此使用客机虚拟地址(GVA)。各个虚拟机中的客机OS可管理虚拟机中GVA到客机“物理”地址(GPA)的映射。如果客机OS直接在系统10的硬件上运行,没有VMM,则由客机OS产生的物理地址实际为系统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的存储器请求提供存储器管理。通常,存储器管理可包括从一种类型的虚拟地址(即,可由软件使用的地址)向物理地址(即,可由存储器控制器使用的地址)的地址转换和存储器保护。存储器保护可控制在一定级别的粒度(例如,页)上对存储器的读和/或写访问,以及各种其它属性,如权限级别需求、缓存能力和缓存控制(例如,写通过或写回)、一致性(coherency)等等。任何成组的存储器保护都可以各种不同的实施方式实现。在某些实施方式中,由IOMMU 26实现的存储器保护至少在某些方面可以不同于由MMU 14实现的存储器保护。在一个实施方式中,由IOMMU 26实现的存储器保护可定义为使得存储IOMMU 26所使用的转换数据的转换表与存储MMU 14所使用的转换数据的转换表可共享(虽然为了方便讨论在图1中分别示出)。如下进一步所述的,在一些共享转换表信息的实施方式中,当提升(promote)特定页时,例如当权限改变时,表的重新遍历(re-walk)是必要的,以更新当前不可靠的转换页表。根据需要,其它的实施方式可能不在IOMMU 26和MMU 14之间共享转换表。
通常,I/O设备22可配置成发布例如存储器读和写请求等存储器请求以访问存储器20中的存储器单元,并且在某些情况下,可配置成发布转换请求。例如,存储器请求可为直接存储器存取(DMA)读或写操作的一部分。DMA操作可由处理器12执行的软件发起,处理器12对I/O设备22直接或间接编程以执行DMA操作。基于在处理器上执行的软件所运行的地址空间,I/O设备22可具有与该地址空间对应的地址以访问存储器20。例如,处理器12上执行的客机应用程序(例如,应用程序102)可提供带有GVA的I/O设备22,而处理器12上执行的客机OS(例如,OS 104)可向I/O设备22提供GPA。在任一情况下,当I/O设备22请求存储器访问时,可由IOMMU 26将客机地址转换为相应的系统物理地址(SPA)以访问存储器,并且系统物理地址可提供给存储器控制器18以用于访问。也就是说,IOMMU26可修改由I/O设备22提供的存储器请求以将请求中的所述接收到的地址改变(即,转换)为SPA,并且存储器请求可转送到存储器控制器18以访问存储器20。
在不同的实施方式中,IOMMU 26可基于其从I/O设备接收到的地址的类型提供一级转换、两级转换或没有转换(no translation)。尤其是,IOMMU 26可执行一级嵌套转换或两级客机转换。也就是说,IOMMU 26可提供GPA到SPA转换(一级)和GVA到SPA转换(两级)。因此,如上所述,请求(requesting)存储器访问时,客机应用程序可将GVA地址直接地提供给I/O设备,从而不必使用常规的VMM拦截和转换。此功能性可使得诸如计算卸载(compute offload)、用户级I/O和加速I/O设备等高层计算结构能在虚拟系统中更无缝地使用。注意到,虽然已记载了一级、两级或没有转换,可以预见到在其它实施方式中使用附加级别的地址空间。在这样的实施方式中,可由IOMMU 26执行附加级别的转换(即,多级转换)以容纳附加的地址空间。
如下面更详细地描述的,IOMMU 26必须具有识别其在给定的请求中接收到的地址的类型的方法。因此,例如,在I/O设备经由诸如快速PCI(PCIe)互连器等标准外围总线连接到IOMMU 26的实施方式中,进程地址空间标识符(PASID)可通过事务层协议(TLP)前缀传送到IOMMU 26。
IOMMU 26可使用诸如存储在存储器20中的一或多个I/O转换表集36之类的多个数据结构来转换来自I/O设备22的存储器和转换请求的地址。通常,转换表可为能用于将地址从一种类型转换到另一种类型的转换数据的表。转换表可以任何方式存储转换数据。例如,在一个实施方式中,I/O转换表36可包括与在x86和AMD64TM指令集结构中定义的那些页表类似的页表。基于转换级别,客机虚拟地址位或客机物理地址的各种子集可用于索引表的级别,每一级可以是转换终点(即,为转换存储实际页码)或可指向另一个表(由另一组地址位索引的)。页可以是转换(即,在所述虚拟页中的每一个地址转换到相同的物理页)单位。页可以有不同的大小,从4千字节到数兆字节甚至数千兆字节。
此外,I/O转换表36可包括将I/O设备映射到页表集(例如,通过设备标识符)的设备表(如图3所示)。设备标识符(ID)可以多种方式定义,并且可取决于连接设备的外围互连。例如,外围组件互连(PCI)设备可从总线号、设备号和功能号(BDF)形成设备ID。HyperTransportTM(HT)设备可使用总线号和单元ID形成设备ID。如下面要进一步说明的,设备表可包括多个由设备ID索引的条目,每一个条目可包括指向由具有相应的设备ID的设备所使用的页表集的指针。此外,在I/O设备直接指定到进程或在与用户进程相同的地址空间中运行计算的情况下,所述进程地址空间被识别并提供给IOMMU 26以实施存储器隔离保护。在一些实施方式中,设备表可进一步包括指向中断再映射表(如图3所示)的指针,以重新映射所述设备的中断。因此,总的来说,从GVA或GPA到SPA的转换可存储在一个或多个转换表中的一个或多个条目中,有些所述条目可以与其它转换共享。从条目到条目遍历或“游走(walking)”所述表可以是识别所述虚拟地址的转换的一部分。在一个实施方式中,转换表36可包括上面提及的中断再映射表。
具体地,图1中阐述的IOMMU 26可包括表辅助工具(walker)28以便为给定存储器请求的转换搜索I/O转换表36。表辅助工具28可生成存储器请求,例如读存储器请求,以从所述转换表36读取转换数据。在图1中由虚线箭头38和40示出转换表读取。
为了便于更快速的转换,IOMMU 26可高速缓存一些转换数据。例如,高速缓存30可为与高速缓存先前转换的结果的TLB类似的高速缓存形式,将客机虚拟页码和客机物理页码映射到系统物理页码和相应的转换数据。如果对给定的存储器请求的转换在高速缓存30中没有发现,表辅助工具28就会被调用。在各种实施方式中,表辅助工具28可以以硬件,或微控制器或其它处理器和相应的可执行代码(例如,以IOMMU 26中的只读存储器(ROM))实现。此外,可包括作为高速缓存30的一部分的其它高速缓存来高速缓存页表或其部分、和/或设备表或其部分。相应地,IOMMU 26可包括一个或多个存储器来存储从存储在存储器20中的转换数据读取或派生的转换数据。
控制逻辑34可配置为访问高速缓存30以检测给定的存储器请求转换的命中/错失,并可调用表辅助工具28。控制逻辑34也可配置为修改来自具有转换地址的I/O设备的存储器请求,并向上游朝向存储器控制器18转发请求。此外,控制逻辑34可控制IOMMU 26中编程进控制寄存器32中的各种功能。例如,在此实施方式中,控制寄存器32可以定义存储器的一个区域为指令队列42,以使存储器管理软件向IOMMU 26传达控制指令。控制逻辑34可配置为从指令队列42读取控制指令并执行该控制指令。类似地,控制寄存器32可定义存储器的另一个区域为事件日志缓冲区44。控制逻辑34可检测各种事件,并将它们写入事件日志缓冲区44。这些事件可包括控制逻辑34检测到的与IOMMU 26的转换和/或其它功能相关的各种错误。控制逻辑34也可实现IOMMU 26的其它功能。
I/O设备22可包括在计算机系统10和其它设备之间通信、为计算机系统10提供人机界面、提供存储(例如,磁盘驱动器、光盘(CD)或数字视频光盘(DVD)驱动器、固态存储等)和/或为计算机系统10提供增强功能的任何设备。例如,I/O设备22可包括下述器件中的一个或多个:网络接口卡、集成网络接口功能、调制解调器、视频加速器、音频卡或集成音频硬件、硬盘或软盘驱动器或驱动控制器、接入到诸如键盘、鼠标、图形输入板等用户输入设备的硬件、用于视频显示器的视频控制器、打印机接口硬件、桥接诸如PCI、PCIe、PCI-X、USB、火线、SCSI(小型计算机系统接口)等一个或多个外设接口的桥、声卡和诸如GPIB或场总线接口卡等多种数据采集卡等。术语“外围设备”也可用于形容某些I/O设备。
在某些情况下,一个或多个所述I/O设备22可包括诸如IOTLB 24的IOTLB和/或MMU(例如,图2的私用MMU 23D)等IOTLB。这些IOTLB可称为“远程IOTLB”,因为它们位于IOMMU 26外部。在这样的情况下,已被转换的地址可以以某种方式标记,这样IOMMU 26不会试图再次转换存储器请求。在一个实施方式中,转换的地址可简单标记为“预转换的”。
存储器控制器18可包括被设计为存储器20和系统10的其它部分之间提供接口(interface)的任何电路。存储器20可包括诸如一个或多个RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、DDR SDRAM、静态RAM等任何半导体存储器。存储器20可分布在系统中,从而可能有多个存储器控制器18。
MMU 14可包括用于源自处理器12的存储器请求的存储器管理单元。MMU可包括TLB 16以及表辅助(table walk)功能。当转换由MMU14执行时,MMU 14可向CPU转换表50生成转换存储器请求(如图1中的虚线箭头46和48所示)。CPU转换表50可存储由处理器12实施的指令集结构中定义的转换数据。
处理器12可包括执行任何所需的指令集结构的任何处理器硬件。在一个实施方式中,处理器12执行x86结构,特别是执行AMD64TM结构。各种实施方式可以是超流水线和/或超标量体系结构。包括一个以上处理器12的实施方式可以离散地实施,或实施为芯片多处理器(CMP)和/或芯片多线程(CMT)处理器。
系统10说明了系统的高层功能,实际的物理实现可以采取多种形式。例如,MMU 14通常集成到每一个处理器12中。虽然示出了存储器20,但在某些实施方式中,存储器系统可以是分布式的存储器系统,其中所述存储器地址空间被映射到与在物理上(physically)分离的存储器控制器联接的多个在物理上分离的存储器。IOMMU 26可放置在沿源自I/O的存储器请求和存储器20之间的路径的任何地方,并且可以有一个以上的IOMMU。进一步地,IOMMU可位于所述系统的不同部分的不同点上。
图2是在处理器节点之间使用HyperTransportTM(HT)相干链路61以及在处理器节点和I/O设备之间使用HT I/O链路(例如,70A和70B)的系统的实施方式的一个实例。更特别地,在一个实施方式中,可在I/O集线器和与其它外围互连桥接的I/O设备之间使用HT I/O链路(例如,71A)。此外,其它任何相干链路可在处理器节点之间使用和/或任何其它I/O互连可在处理器节点和I/O设备之间使用。例如,在各种实施方式中,I/O链路71B、71C和71D可以是PCIe链路。此外,另一实例可包括在传统的PC设计中的联接到北桥(Northbridge)的处理器,其中北桥进一步联接到存储器和一个或多个I/O互连。
参考图2所示的实施方式,系统10a包括处理节点60A-60B,处理节点60A-60B分别包括进一步包括MMU 14A-14B的处理器12A-12B。处理器节点60A-60B还包括存储器控制器18A-18B。处理器12A-12B中每一个可为上述处理器12的实例。类似地,MMU 14A-14B和存储器控制器18A-18B中的每一个可以是图1中所示的MMU 14和存储器控制器18的实例。在所示的实施方式中,MMU功能被并入处理器中。
系统10a包括分布式存储器系统,该分布式存储器系统包括存储器20A-20B。所述系统物理地址空间可以分布在存储器20A-20B上。相应地,指定给定地址的给定存储器请求被路由到与存储器20A或20B联接的存储器控制器18A或18B,该指定地址被分配给该存储器20A或20B。
来自I/O设备(例如,图2中所示与I/O集线器62A-62B联接的I/O设备22A-22D)的存储器请求可以不全部采取相同的路径到达将服务所述请求的存储器控制器18A-18B。例如,I/O设备22A-22B可传输存储器请求至I/O集线器62A,I/O集线器62A传输存储器请求至处理节点60A。如果将给定存储器请求的地址分配给存储器20B,则处理节点60A可将给定的存储器请求传输到处理节点60B,使得存储器控制器18B可接收并处理该请求。I/O设备22C-22D可将存储器请求传输给I/O集线器62B,I/O集线器62B可传输该请求至处理节点60B。如果给定存储器请求的地址被分配给存储器20A,则处理节点60B可将所述给定存储器请求传输给处理节点60A。
IOMMU可以置于沿源自I/O的存储器请求和存储器20之间的路径的任何地方。在所示的实施方式中,IOMMU 26A-26B包括在I/O集线器62A-62B中。因此,源自与相应的集线器联接的I/O设备的任何存储器请求可由I/O集线器中的IOMMU转换。其它实施方式可以将IOMMU置于从I/O设备内的IOTLB到处理节点60A-60B中的IOMMU,或者甚至是位于存储器控制器18A-18B处的IOMMU等不同的地方。进一步地,IOMMU可位于系统的不同部分的不同点。例如,在有些实施方式中,如图所示,I/O设备可为可包括本地存储器24D的设备。相应地,I/O设备22D还包括本地/私用MMU 23D。
转到图3,示出了说明I/O转换表36的一个实施方式的图。具体地,I/O转换表36可包括设备表36A、中断再映射表36B和两个I/O页表集(例如,36C和36D)。图3还示出了控制寄存器32之一(控制寄存器32A)。所述控制寄存器32A可存储设备表36A的基地址。
设备表36A包括由分配给所述设备的设备ID索引的多个条目。因此,给定的设备对应于设备表36A中的条目之一(除非所述设备有多个设备ID,或者除非所述设备的流量与其它在桥接设备处聚集并且所述流量以所述桥的设备ID传输)。设备表条目可包括各种数据。图4示出了一个示例性的设备表条目325的部分,并在下面更详细地进行说明。
给定的设备表条目325可包括指向I/O页表36C和36D的指针(由箭头301和302表示)。所述指针可指向为用于在I/O页表36C或36D中进行转换搜索的出发点的页表。如图所示,初始页表可包括如上所述以分层方式指向其它页表的指针。如下面进一步说明的,根据所实施的转换过程,有些页表可由PASID索引,而其它页表可使用所述客机虚拟地址或要转换的客机物理地址的各个位索引。
设备表条目325也可包括指向中断再映射表36B(由箭头304表示)的指针。在中断请求由设备传输时,可使用中断再映射数据,并可由中断ID索引。中断ID可包括识别所请求的中断的数据,并可根据用来传输所述中断请求的机制而变化。
应注意的是,虽然示出了一个设备表36A,但如果需要,可保持多个设备表。控制寄存器32A中的设备表基地址可改变为指向其它设备表。此外,如果需要,设备表可为分层的,类似于上述记载的页表。类似地,虽然示出的是一个中断再映射表36B,但可有多个中断映射表,例如在设备表36A中多达每一个条目有一个中断映射表。也可有多个页表集,例如在设备表36A中直至每一个条目有一页表集。应注意的是,虽然彼此独立,但其它的实施方式可以没有中断再映射功能而实现I/O转换功能。
在图示的实施方式中,I/O转换表36C和36D可以支持一级和两级客机转换的各种组合。如虚线所示,当转换是客机(即,两级)转换(由虚线表示)时,就遵循以箭头301开始的路径。然而,当客机转换无效时,就只遵循以箭头302开始的实线路径。
更特别地,当从一个I/O设备接收到存储器访问请求或包括GVA的转换请求时,访问与所述请求的设备ID对应的设备表条目。尤其是,通过定义,发布GVA的I/O设备通过包含PASID前缀指示所述GVA,发布GPA的I/O设备通过省略所述PASID前缀指示所述GPA。如下面结合图5的说明更详细地说明的,使用指向GCR3表307的基地址的SPA指针(例如,301),可以使用PASID索引到GCR3表307以区分在给定设备上运行的一个或多个进程。在GCR3表307内的条目可包括指向GCR3页表311的基(base)的GPA指针。然而,这一GPA和所述表中的所有随后的GPA指针可以例如使用转换逻辑和诸如表333和335等页表集而转换为SPA,以访问存储器中的下一页表。这一转换机制在图3中以GPA/SPA转换单元309A、309B、309C和309D表示。所述请求的GVA的一些位数可用于到GCR3页表311的索引。在一个实施方式中,311中的相应条目可包括指向页映射四级(PML4)页表313的基的GPA指针。每一个嵌套页表中的后续地址也可为指向下一页表的基地址的GPA,或者在是最后一个页表的情况下(如315),该条目可包括指向物理存储器页的GPA指针。这些表(例如,313,315)中的每一个也可由I/O请求的GVA索引。最终转换(SPA)可通过连接GVA的一部分(例如,最后几个位)和存储器317中的物理页的SPA而实现。
这样,在两级的客机转换中,客机转换表和嵌套转换表都可使用。但是,如果GPA是I/O设备提供的,则通过使用提供主机转换页表36D的基地址的指针302执行一级转换。更具体地,设备表条目中的客机信息被忽略,可使用其它页表路径条目信息(如图4所示)来访问相应的主机转换页表。在各种级别的转换中,可使用GPA的位的不同子集索引到每一个连续的页表中。具体地,指针302可以是指向PML 4页表333的基的SPA指针。与客机页表36C相比,在主机页表36D中的每一个指针可为指向下一页表的基的SPA。由PML4页表333中的GPA索引的条目包括指向PML3/2页表335的基的SPA指针。根据实际的页表级(即3或2),在表335的条目中的指针可以是指向下一表的SPA指针,或是物理存储器页337的SPA。相应地,最终转换(SPA)可通过连接GPA的一部分(例如,最后几位)和存储器337中的物理页的SPA而得到。
为了保持存储器隔离,在一个实施方式中,在访问每一个后续页表时,可以检查权限,如果有权限不一致或页不存在,IOMMU 26就可中止转换和/或查找并内部地发出页故障并记录错误。在其它实施方式中,在每一个阶段,IOMMU可只积累任何错误并在转换结束时丢弃该转换、发出页故障并记录错误,或其中的某些组合。
转到图4,其示出了示例型设备表条目的一个实施方式的图。应注意的是,图4的实施方式所示的域可与中断再映射和/或地址转换有关,并可在各种实施方式中提供用于其它目的的其它域。在所示的实施方式中,设备表条目325是一个256位的条目。然而,其它的实施方式可实现所述域及其它域的超集、所述域的子集、或与其它域相结合的子集。因此,根据需要,设备表条目325可以是任意数目的位。一个域可包括一或多位,在由IOMMU 26解释时,所述位的编码被赋予特别的意义。如果一个域是单一位,那么对这一实施方式来说,该域可被称为位(bit)。然而,在其它的实施方式中,对类似的用途可以用多位的域。对这一实施方式,图4中示出了具有位数范围的多位的域。
可在保留域和其它域中提供各种具体的中断控制位以监控某些特定的中断是否被封锁或未经修改而通过。由包括用于所述设备的GAPIC表的基地址的SPA的GAPICTableRtPtr域提供对客机高级可编程中断控制(GAPIC)的支持,中断表指针域(IntTablePtr)可存储上述中断再映射表的基地址。中断表长度(IntTableLen)指定中断表的范围(extent)。中断表长度域可编码为几个可能的长度(如,在一个实施方式中,个数为1-2048中的2的乘方的条目)。如果对中断信息中检测到I/O页故障,就可使用IG位来指示是否在事件日志缓冲区44中创建事件日志条目。中断有效(IV)位可指示与中断相关的域是否有效。如果所述域无效的,则IOMMU 26通过所有中断不进行修改。
客机CR3(GCR3)表的根指针(GCR3TableRtPtr)域可包括用于I/O设备的客机CR3表的SPA。外设页服务请求(PPR)位指示外设是否可发出IOMMU转换为外设页服务请求日志条目的外设页服务请求或请求是否作为错误处理。应注意的是,虽然在示出的实施方式中GCR3TableRtPtr分解成多个域,但在其它实施方式中,GCR3TableRtPtr可以是一个连续的域,或根据需要而不同地分解。
SysMgt域可进行编码以提供在系统管理范围内的进一步的通信控制。具体地,在一个实施方式中,SysMgt域可编码为:阻止在该范围内的请求;转发在范围内的未经修改(仅发布的(posted)写)的请求;转发未经修改(仅发布的写)的映射到INTx信息的请求;或使用I/O页表转换请求。IoCtl域可编码,以提供在I/O空间范围内的进一步的通信控制。具体地,在一个实施方式中,IoCtl域可编码为:阻止在该范围内的请求;转发未经修改的请求;或使用I/O页表转换请求。然而,在一个实施方式中,这些域中的某些(如SysMgt、IoCtl)可只与GPA-SPA转换有关而不应用于GVA-SPA转换。
域ID用来标记高速缓存30条目和IOMMU 26内的任何其它高速缓存条目,以使不同的设备区分它们的转换数据。如果设备共享转换表,它们就有相同的域ID来共享高速缓存条目。域ID完全由软件控制,因此可允许灵活的控制软件(例如,虚拟机监视器或在非虚拟机实现中的操作系统)以将I/O设备组合到域以共享转换数据或隔开所述设备。例如,分配到给定虚拟机的设备可具有相同的域ID,不同的域ID可用于不同的虚拟机。这样,可创建分离设备和分组设备的任意组合。
在一个实施方式中,客机CR3的水平位(GLX)指定GCR3查找的类型(即一级或两级GCR3页表)将由IOMMU执行。客机转换有效(GV)位确定是进行两级(即嵌套级和客机级)转换还是一级(例如,主机)转换。在一个实施方式中,当GV位清零时,GLX位和GCR3TableRtPtr域被忽略。
页表指针(PageTablePtr)是指向主机转换页表36D的指针。当I/O设备提供GPA时,可使用该指针。模式域(Mode)可编码为指示设备的I/O页表的深度和转换是否完全禁用。例如,对于提供SPA和标记请求为预转换的设备,相应的设备条目可将该域编码为禁用转换。其它的编码可指示在该页表分级中的级别,在该级别,转换开始用于映射到这一条目的请求。TV位指示页转换数据是否有效,V位指示条目80是否有效。
参考图5,示出了更详细地描述客机虚拟地址转换机制的方面的图。如上所述,设备表36A可包括许多条目(DTE),每个条目包括GCR3TableRtPtr域。如果对该条目来说客机转换有效,则该域将包括指向存储器中的客机CR3表501的SPA指针。如图所示,GCR3表501可由与设备的请求关联的PASID值索引。如上所述,根据所使用的I/O互连的类型,可以多种方式获得设备PASID。图7中示出了PASID前缀的一个实施方式。此PASID前缀可用于使用前缀的各种标准的总线结构中。图8中示出了用于PCIe互连的TLP PASID前缀。相应地,图7中的PASID前缀可用于图8中的实施方式中以识别给定设备中的进程。
如图所示,GCR3表501有两个条目,每一条目包括GCR3基指针,如上所述,GCR3基指针可以是指向客机页表503和505的GPA指针。在所示的实施方式中,客机页表503和505可由I/O请求的GVA索引。此外,客机页表503和505中的每个有效条目可包括指向各自的页映射四级表的基地址的GPA指针。
在一个实施方式中,GCR3表501必须在存储器中连续。因此,在有大量PASID的系统中,存储器管理可能会变得复杂。相应地,在替代的实施方式中,GCR3表可以分层的方式来实现。例如,可使用一个或多个第二级GCR3表(未示出)。在这样的实施方式中,第一级GCR3表可以是GCR3基表并可以使用PASID位的第一子集来索引。第一级GCR3表中的给定条目可包括指向各自的第二级GCR3表的GPA指针。第二级GCR3表可使用PASID的第二子集索引。第二级GCR3表的每一条目可包括指向诸如表503或505等客机页表的GPA指针。因此,执行一级还是两级GCR3表的选择可取决于使用的PASID的数量。应注意的是,在不同的实施方式中,根据需要,PASID位的子集可以是非重叠的或者重叠的。
转到图6,其示出了描述图1至图5中所示的系统的实施方式的操作方面的流程图。一起参考图1-图6,从图6的块601开始,IOMMU 26接收到I/O请求。例如,所述请求可为例如代表VM应用程序之一(例如102)的诸如DMA访问之类I/O存储器访问请求。可选地,所述请求可为诸如ATS之类的转换请求,该转换请求例如由具有例如远程IOTLB的I/O设备提供的。如果所述请求不是存储器请求,如图所示,操作前进到块604。但是,如果所述请求是存储器请求,则IOMMU 26可确定所述请求是否标记为预转换(块602),例如就像在I/O设备带有板载MMU的情况下一样。在这种情况下,地址可为SPA,不需要任何转换。如果所述请求被标记为预转换,IOMMU 26可将所述请求提供给存储器控制器18(块603)。
回到块602,如果所述请求没有标记为预转换或如果所述请求是转换清求,IOMMU 26可在高速缓存30内对转换进行查找(块604)。如果所述转换存在,IOMMU 26可将所述转换提供给请求者,或将所述转换连同请求一起提供给存储器控制器18(块603)。
然而,如果高速缓存30中没有所述转换(块604),与控制逻辑34关联的表辅助工具28可访问I/O转换表36。更特别地,表辅助工具28可访问设备表基址寄存器32A以获得存储器20的设备表基地址。表辅助工具28可使用设备ID来索引到设备表36A(块605)。如果所述请求包含PASID值(块606),表辅助工具28可执行两级客机转换。更特别地,在一个实施方式中,如果I/O请求包括TLP PASID前缀,则与所述请求关联的地址为GVA。从而执行了两级转换。表辅助工具28可使用设备表条目中的GCR3控制位和GCR3TableRtPtr地址以在存储器中找到GCR3表(块607)。
如上所述,在一种实施方式中,GCR3TableRtPtr地址可为SPA。表辅助工具28可使用GPA指针以定位相应的GCR3和客机表以及PASID以索引所述GCR3表。如块614所示以及如上所述,每一个GPA指针可由IOMMU 26通过使用例如主机转换页表36D进行转换。所述请求的GVA位的某些子集可用于索引客机页表。最后的客机页表可包括指向主机页映射四级表的基地址的GPA指针。在一种实施方式中,访问每一个连续的客机表时检查权限,任何失败的权限可生成页故障或其它错误(块608)。
然后,表辅助工具28可使用在每一在先页表的每一条目中的GPA指针依次找到主机转换表36D。在页表的各个层次,可使用请求的GVA位的不同子集来索引到每一个主机转换页表。如上所述,一旦访问到最后的页表,相应的条目可包含存储器中的物理页的GPA。表辅助工具28可将该GPA转换成SPA(块609)。然后,表辅助工具28可连接物理存储器页的SPA和GVA的最后几位以获得最终转换地址(块610)。如果所述请求是存储器请求,表辅助工具28可将转换地址与所述请求一起提供给存储器控制器18。可选地,如果所述请求是转换请求,表辅助工具可将转换提供给请求的I/O设备。表辅助工具28也可将转换存储在高速缓存30中,以在未来的转换查找中使用(块611)。
再次参考块606,如果所述请求不包括PASID,那么所述请求的地址是GPA。在这种情况下,表辅助工具28可使用设备表条目中的PageTableRtPtr地址来执行一级转换,以在存储器中找到主机转换页表36D(块612)。以与上面所述类似的方式,表辅助工具28可使用指向用于I/O设备的主机页映射四级表的基地址的SPA指针。然而,与客机转换相比,当使用主机转换页表执行一级转换时,指向下一页表/存储器物理地址的每个指针为SPA。因此,表辅助工具28可使用在每一在先页表的每一条目中的SPA指针依次找到主机转换表。在主机页表的各个层次,可使用请求的GPA位的不同子集来索引到每一个主机转换页表。如上所述,一旦访问到最后的页表,相应的条目可包含存储器中的物理页的SPA(块613)。表辅助工具28可连接物理存储器页的SPA和所述请求的GPA的最后几位以获得最终转换地址(块610)。
参考图7,示出了PASID前缀有效载荷(payload)的一个实施方式的图。如图所示,所述PASID前缀有效载荷701包括24位。在所示的实施方式中,位[15:0]为客机进程地址空间ID,位[21:16]预留,位22为执行/不执行许可,位23为用户/超级用户指令。应注意的是在其它实施方式中,位的位置和定义可以不同。应注意的是在其它实施方式中,位的位置和定义可以不同。同样应注意的是,在其它实施方式中,其它位可用于表示其它特性。例如,所述位可表示缓存一致性和特定的安全性能。
在一个实施方式中,PASID位与请求器/设备ID一起唯一地标识与事务关联的地址空间。执行/不执行位在置位时可表示存储器的指示范围可包括可由请求函数执行的编码,在清零时可表示没有可由所述请求函数执行的编码。用户/超级用户位在置位时可表示指示的存储器范围可包含可由实体(entity)以用户或超级用户模式访问的信息。相反地,清零位可表示指示的存储器范围可包含仅可由实体以超级用户模式访问的信息。
如上所述,许多标准外围总线结构可预留前缀。因此,所述PASID前缀有效载荷701可用于传送控制I/O设备的进程的进程标识符。如下面将结合图8A和8B的描述更详细描述的,外围总线/互连可为PCIe互连。因此,PASID前缀701可用于PCIe事务层协议封装结构。
参考图8A,示出了根据PCIe规范的示例型TLP封装的一个实施方式的图。PCIe使用基于封装的协议在PCIe链路上彼此通信的两个设备的事务层之间交换信息。PCIe支持下列基本事务类型:存储器、I/O、结构和消息。支持的用于存储器请求的两个寻址格式为:32位和64位。相应地,如图8A中所示,TLP封装801包括一或多个可选的TLP前缀、TLP报头、数据有效载荷(对于某些类型的封装)以及可选的TLP概要(digest)。关于封装域和位的定义的详细信息可参考可从PCI-SIG获得的PCI Express规范的最新版本。然而,图8B以及下面的描述更详细地示出了TLP前缀的一个特定实施方式。
参考图8B,示出了根据PCIe规范的TLP PASID前缀的一个实施方式的图。与图7中的前缀类似,所述TLP前缀851包括如上所述的16位PASID域,6位预留域,如上所述的可执行位,如上所述的用户位,4位类型域,指示前缀为端到端的1位域,以及格式域。如图所示,格式域可与100b编码一起编码以指示所述TLP前缀为TLP前缀。类型域可编码为指示所述前缀为PASID前缀。应注意的是在其它实施方式中,所述TLP前缀可包括其它域和所述域中的其它位数。
综上所述,在一个实施方式中,导致来自缓存30条目的客机权限不足的ATS(即转换)请求或存储器参考可能是基于过时的(stale)信息。在替换或丢弃缓存的信息的过程中,IOMMU 26在使用缓存的客机转换信息检测到非法访问时,必须重新遍历(rewalk)所述客机页表以使用从存储器读取的新信息重新计算访问权限。嵌套的页表可读取作为所述客机页表重新遍历的结果。如果获取的信息包括不允许访问的权限控制则IOMMU 26访问失败,否则IOMMU 26可允许请求的访问。ATS转换请求一直返回计算的访问权限。重新遍历可能需要客机和嵌套转换的完整遍历。
应注意的是,在实现PCIe设备的实施方式中转换地址时,IOMMU 26可能需要在处理器内部语义和PCIe语义之间进行转化。各种页表包括存在(present)位(P)和读/写位(R/W),ATS请求包括无写操作(no-write)提示,并且ATS响应需要独立的读(R)和写(W)权限位。在一个实施方式中,IOMMU 26可提供与处理器内长页表语义一致的ATS响应以提升权限。通常,IOMMU 26应基于高速缓存30中的值返回结果。ATS请求的特殊情况是对于页来说,系统软件可能在未向IOMMU 26发布无效指令的情况下已经提升访问权限。在一个实施方式中,当其降低访问权限时需要系统软件发布无效指令(包括将不出现的页标记为P=0)。具体地,在消除写或执行权限后、将P从出现改为不出现后、或将U/S从用户改为超级用户后软件必须无效。
应注意的是,上述实施方式可以硬件、软件或两者的结合来实现。此外,上述硬件组件中的各种组件可先使用以硬件定义语言编写的软件设计。相应地,用于实现上述实施方式的任何指令被存储在各种类型的存储中。因此,各种实施方式可进一步包括在计算机可读存储媒介上存储根据前述描述实现的指令和/或数据。一般来说,计算机可读存储媒介可包括诸如磁性介质或光学介质(例如磁盘、CD-ROM、DVD)的存储介质或存储器介质、诸如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等)和ROM等易失性或非易失性介质等等。
虽然已经相当详细地说明了上述实施方式,但对本领域的技术人员而言,一旦充分理解了上述公开,无数的变化和修改将变得很明显。旨在将下面的权利要求书解释为包括所有这些变化和修改。
Claims (21)
1.一种用于控制由I/O设备向计算机系统的系统存储器发出的请求的输入/输出(I/O)存储器管理单元(IOMMU),所述IOMMU包括:
配置为转换在来自所述I/O设备的请求中接收到的地址的控制逻辑,其中响应于在所述请求中对包括进程地址空间标识符(PASID)前缀的事务层协议(TLP)封装的接收,所述控制逻辑配置成执行两级客机转换;
其中所述控制逻辑配置成访问客机页表集以转换所述请求中接收到的所述地址,其中最后的客机页表中的指针指向嵌套的页表集中的第一表;以及
其中所述控制逻辑配置成使用所述最后的客机页表中的指针访问所述嵌套的页表集以获得与所述系统存储器中的物理页对应的系统物理地址(SPA);
联接到所述控制逻辑并配置成存储完成的转换的高速缓存。
2.根据权利要求1所述的IOMMU,其中,所述客机页表集包括具有一个或多个条目的设备表,其中每个条目配置成存储指向所述客机表集的第一客机转换表的指针,并且其中所述指针包括SPA,所述SPA与由在所述计算机系统的处理器中执行的虚拟存储器监视器(VMM)映射的地址空间对应。
3.根据权利要求2所述的IOMMU,其中,指向所述嵌套的页表集中的第一表的所述指针包括客机物理地址(GPA),所述客机物理地址(GPA)与由在所述处理器上的虚拟机(VM)中执行的客机操作系统所映射的地址空间对应。
4.根据权利要求2所述的IOMMU,其中,在所述请求中接收到的所述地址包括客机虚拟地址(GVA),其中GVA对应于由在所述处理器上的虚拟机(VM)中执行的客机应用程序所映射的地址空间,其中所述控制逻辑配置成使用所述两级客机转换将所述GVA转换成SPA。
5.根据权利要求1所述的IOMMU,其中,所述TLP封装包括具有前缀域、报头域、数据有效载荷域和可选的概要域的封包,并且其中所述TLP封装在外围组件快速互连(PCIe)链路上从所述I/O设备传送到所述IOMMU。
6.根据权利要求1所述的IOMMU,其中,所述控制逻辑进一步配置成将在所述I/O请求中接收到的地址位子集与对应于所述系统存储器中的物理页的所述SPA连接起来以提供最终的转换地址。
7.根据权利要求2所述的IOMMU,其中,响应于TLP封装中没有PASID前缀的I/O请求的接收,所述控制逻辑配置成执行一级转换,其中控制逻辑配置成访问用于给定请求的所述设备表条目中的另一指针,其中所述另一指针包括指向主机转换页表集的指针。
8.根据权利要求7所述的IOMMU,其中,所述主机转换页表中的至少一些包括具有指向下一连续的主机转换页表的SPA指针的条目。
9.一种系统,包括:
处理器;
联接到所述处理器并配置为存储转换数据的系统存储器;
配置为生成用于访问所述系统存储器的请求的至少一个I/O设备;
联接到所述I/O设备和所述系统存储器的I/O存储器管理单元(IOMMU),所述IOMMU包括:
配置为转换在来自I/O设备的请求中接收到的地址的控制逻辑,其中响应于所述请求中对包括进程地址空间标识符(PASID)前缀的事务层协议(TLP)封装的接收,所述控制逻辑配置成执行两级客机转换;
其中所述控制逻辑配置成访问客机页表集以转换所述请求中接收到的所述地址,其中最后的客机页表中的指针指向嵌套的页表集中的第一表;以及
其中所述控制逻辑配置成使用所述最后的客机页表中的指针访问所述嵌套的页表集以获得与所述系统存储器中的物理页对应的系统物理地址(SPA);
联接到所述控制逻辑并配置成存储完成的转换的高速缓存存储器。
10.根据权利要求9所述的系统,其中,所述控制逻辑配置成在执行任何转换前搜索用于转换的高速缓存存储器,并且其中响应于对页级别权限已经改变的确定,所述控制逻辑进一步配置成执行所述转换以获得最终转换地址。
11.根据权利要求9所述的系统,其中,所述系统存储器映射到多个地址空间,其中所述多个地址空间包括:与在所述处理器上执行的虚拟存储器监视器(VMM)所映射的地址空间对应的所述SPA、与在所述处理器的虚拟机(VM)上执行的客机操作系统所映射的地址空间对应的客机物理地址(GPA)、和与在所述处理器的虚拟机(VM)上执行的客机应用程序所映射的地址空间对应的客机虚拟地址(GVA)。
12.根据权利要求11所述的系统,其中,包括所述GVA的I/O请求通过包含所述TLP PASID前缀指示所述GVA,并且包括所述GPA的I/O请求通过省略所述TLP PASID前缀指示所述GPA。
13.根据权利要求9所述的系统,其中,在所述请求中接收到的地址包括GVA,其中所述控制逻辑配置成使用所述两级客机转换将所述GVA转换成SPA。
14.根据权利要求9所述的系统,其中,所述TLP封装包括具有所述前缀域、报头域、数据有效载荷域和可选的概要域的封包,其中所述TLP封装在外围组件快速互连(PCIe)链路上从所述I/O设备传送到所述IOMMU。
15.一种用于控制由I/O设备向计算机系统的系统存储器发出的请求的输入/输出(I/O)存储器管理单元(IOMMU),所述IOMMU包括:
配置为转换在来自I/O设备的请求中接收到的地址的控制逻辑,其中响应于所述请求中对包括进程地址空间标识符(PASID)前缀的事务层协议(TLP)封装的接收,所述控制逻辑配置成使用存储在系统存储器中的转换数据执行两级客机转换;
其中所述转换数据包括:
设备数据结构中的一个或多个设备表条目;以及
包括客机页数据结构集和嵌套的页数据结构集的I/O页数据结构第一集合。
其中所述控制逻辑进一步配置成:
使用对应于生成所述请求的I/O设备的设备标识符为给定的请求选择设备数据结构条目;
使用来自所选的设备数据结构条目中的指针访问所述客机转换数据结构集;以及
使用来自最后的客机转换数据结构的指针访问所述嵌套的页数据结构集;以及
联接到所述控制逻辑并配置成存储完成的转换的高速缓存存储器。
16.一种使用输入/输出存储器管理单元(IOMMU)控制发往计算机系统的系统存储器的输入/输出(I/O)请求的方法,所述方法包括:
将转换数据存储在计算机系统的所述系统存储器中,其中所述转换数据包括客机页表集和嵌套的页表集;
控制逻辑转换在来自I/O设备的请求中接收到的地址,其中响应于在所述请求中对包括进程地址空间标识符(PASID)前缀的事务层协议(TLP)封装的接收,所述控制逻辑配置成执行两级客机转换;
所述控制逻辑访问所述客机页表集以转换在所述请求中接收到的地址,其中最后的客机页表中的指针指向所述嵌套的页表集中的第一表;以及
其中所述控制逻辑使用所述最后的客机页表中的指针访问所述嵌套的页表集以获得与所述系统存储器中的物理页对应的系统物理地址(SPA);以及
所述控制逻辑在高速缓存存储器中存储完成的转换。
17.根据权利要求16所述的方法,其中,所述TLP封装包括具有前缀域、报头域、数据有效载荷域和可选的概要域的封包,其中所述TLP封装在外围组件快速互连(PCIe)链路上从I/O设备传送到所述IOMMU。。
18.根据权利要求16所述的方法,其中,在所述I/O请求中接收到的所述地址包括与由在所述计算机系统的处理器上的虚拟机(VM)中执行的客机应用程序所映射的地址空间对应的客机虚拟地址(GVA)。
19.根据权利要求16所述的方法,其中,所述控制逻辑响应于对不包括具有TLP PASID前缀的TLP封装的I/O请求的接收执行一级转换。
20.根据权利要求19所述的方法,其中,在不包括具有TLP PASID前缀的所述TLP封装的所述I/O请求中接收到的所述地址包括与由在所述计算机系统的处理器上的虚拟机(VM)内执行的客机操作系统所映射的地址空间对应的客机物理地址(GPA)。
21.一种包括由计算机系统上的可执行程序运行的数据结构的计算机可读存储媒介,所述程序在所述数据结构上运行以执行进程的一部分来构成包括由所述数据结构描绘的电路的集成电路,所述数据结构中所描绘的所述电路包括:
配置为转换在来自I/O设备的请求中接收到的地址的控制逻辑,其中响应于所述请求中对包括进程地址空间标识符(PASID)前缀的事务层协议(TLP)封装的接收,所述控制逻辑配置成执行两级客机转换;
其中所述控制逻辑配置成访问客机页表集以转换所述请求中接收到的所述地址,其中最后的客机页表中的指针指向嵌套的页表集中的第一页表;以及
其中所述控制逻辑配置成使用所述最后的客机页表中的指针访问所述嵌套的页表集以获得与所述系统存储器中的物理页对应的系统物理地址(SPA);
联接到所述控制逻辑并配置成存储完成的转换的高速缓存。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/508,890 | 2009-07-24 | ||
US12/508,890 US9535849B2 (en) | 2009-07-24 | 2009-07-24 | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
PCT/US2010/043168 WO2011011768A1 (en) | 2009-07-24 | 2010-07-24 | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102498478A true CN102498478A (zh) | 2012-06-13 |
CN102498478B CN102498478B (zh) | 2015-04-29 |
Family
ID=43013181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080041194.XA Active CN102498478B (zh) | 2009-07-24 | 2010-07-24 | 在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu |
Country Status (7)
Country | Link |
---|---|
US (1) | US9535849B2 (zh) |
EP (1) | EP2457165B1 (zh) |
JP (1) | JP5680642B2 (zh) |
KR (1) | KR101575827B1 (zh) |
CN (1) | CN102498478B (zh) |
IN (1) | IN2012DN00935A (zh) |
WO (1) | WO2011011768A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104685479A (zh) * | 2012-08-29 | 2015-06-03 | 超威半导体公司 | 客户虚拟机内的虚拟输入/输出存储器管理单元 |
CN105074663A (zh) * | 2013-03-12 | 2015-11-18 | 高通股份有限公司 | 按需选择性地启用虚拟机监测器的操作的方法和装置 |
CN109643290A (zh) * | 2016-10-01 | 2019-04-16 | 英特尔公司 | 用于具用扩展分段的面向对象的存储器管理的技术 |
CN109698845A (zh) * | 2017-10-20 | 2019-04-30 | 华为技术有限公司 | 数据传输的方法、服务器、卸载卡及存储介质 |
CN110291510A (zh) * | 2017-02-24 | 2019-09-27 | 超威半导体公司 | 流转换后备缓冲器 |
CN111290829A (zh) * | 2020-01-15 | 2020-06-16 | 海光信息技术有限公司 | 访问控制模组、虚拟机监视器及访问控制方法 |
CN112395220A (zh) * | 2020-11-18 | 2021-02-23 | 海光信息技术股份有限公司 | 共享存储控制器的处理方法、装置、系统及存储控制器 |
CN114077397A (zh) * | 2020-08-11 | 2022-02-22 | 美光科技公司 | 基于用户进程标识符的地址转译 |
CN114201269A (zh) * | 2022-02-18 | 2022-03-18 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8327055B2 (en) * | 2010-04-12 | 2012-12-04 | International Business Machines Corporation | Translating a requester identifier to a chip identifier |
US8341340B2 (en) * | 2010-07-21 | 2012-12-25 | Seagate Technology Llc | Multi-tier address mapping in flash memory |
US20120246381A1 (en) * | 2010-12-14 | 2012-09-27 | Andy Kegel | Input Output Memory Management Unit (IOMMU) Two-Layer Addressing |
US9606936B2 (en) * | 2010-12-16 | 2017-03-28 | Advanced Micro Devices, Inc. | Generalized control registers |
US9916257B2 (en) * | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
EP2756438B1 (en) * | 2011-09-13 | 2020-11-11 | Facebook, Inc. | Software cryptoprocessor |
US8719464B2 (en) * | 2011-11-30 | 2014-05-06 | Advanced Micro Device, Inc. | Efficient memory and resource management |
US20130262736A1 (en) * | 2012-03-30 | 2013-10-03 | Ati Technologies Ulc | Memory types for caching policies |
US9081706B2 (en) * | 2012-05-10 | 2015-07-14 | Oracle International Corporation | Using a shared last-level TLB to reduce address-translation latency |
US20130318276A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US20130318280A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US20140052899A1 (en) * | 2012-08-18 | 2014-02-20 | Yen Chih Nan | Memory address translation method for flash storage system |
US9069690B2 (en) * | 2012-09-13 | 2015-06-30 | Intel Corporation | Concurrent page table walker control for TLB miss handling |
KR101934519B1 (ko) | 2012-11-26 | 2019-01-02 | 삼성전자주식회사 | 저장 장치 및 그것의 데이터 전송 방법 |
US20140201408A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9378161B1 (en) | 2013-01-17 | 2016-06-28 | Xockets, Inc. | Full bandwidth packet handling with server systems including offload processors |
US9477603B2 (en) | 2013-09-05 | 2016-10-25 | Facebook, Inc. | System and method for partitioning of memory units into non-conflicting sets |
US9983894B2 (en) | 2013-09-25 | 2018-05-29 | Facebook, Inc. | Method and system for providing secure system execution on hardware supporting secure application execution |
US10049048B1 (en) | 2013-10-01 | 2018-08-14 | Facebook, Inc. | Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor |
US9239804B2 (en) * | 2013-10-03 | 2016-01-19 | Advanced Micro Devices, Inc. | Back-off mechanism for a peripheral page request log |
US9747450B2 (en) | 2014-02-10 | 2017-08-29 | Facebook, Inc. | Attestation using a combined measurement and its constituent measurements |
US9734092B2 (en) | 2014-03-19 | 2017-08-15 | Facebook, Inc. | Secure support for I/O in software cryptoprocessor |
CN105765545B (zh) * | 2014-07-15 | 2018-10-12 | 华为技术有限公司 | PCIe I/O设备共享方法及设备与互联系统 |
US20160077981A1 (en) * | 2014-09-12 | 2016-03-17 | Advanced Micro Devices, Inc. | Method and Apparatus for Efficient User-Level IO in a Virtualized System |
US9632948B2 (en) | 2014-09-23 | 2017-04-25 | Intel Corporation | Multi-source address translation service (ATS) with a single ATS resource |
KR102320044B1 (ko) * | 2014-10-02 | 2021-11-01 | 삼성전자주식회사 | Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템 |
US10013385B2 (en) * | 2014-11-13 | 2018-07-03 | Cavium, Inc. | Programmable validation of transaction requests |
JP6070732B2 (ja) * | 2015-01-27 | 2017-02-01 | 日本電気株式会社 | 入出力制御装置、入出力制御システム、入出力制御方法、および、プログラム |
US9495303B2 (en) * | 2015-02-03 | 2016-11-15 | Intel Corporation | Fine grained address remapping for virtualization |
CN104598298A (zh) * | 2015-02-04 | 2015-05-06 | 上海交通大学 | 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法 |
CN104698709A (zh) * | 2015-04-01 | 2015-06-10 | 上海天马微电子有限公司 | 一种阵列基板和液晶显示面板 |
US10089275B2 (en) * | 2015-06-22 | 2018-10-02 | Qualcomm Incorporated | Communicating transaction-specific attributes in a peripheral component interconnect express (PCIe) system |
EP3314366A4 (en) * | 2015-06-24 | 2019-02-20 | INTEL Corporation | Systems and methods for isolating input / output computer resources |
US10102116B2 (en) | 2015-09-11 | 2018-10-16 | Red Hat Israel, Ltd. | Multi-level page data structure |
CN108351829B (zh) * | 2015-09-25 | 2022-06-28 | 英特尔公司 | 用于输入/输出计算资源控制的系统和方法 |
US9852107B2 (en) * | 2015-12-24 | 2017-12-26 | Intel Corporation | Techniques for scalable endpoint addressing for parallel applications |
US10509729B2 (en) * | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US10055807B2 (en) | 2016-03-02 | 2018-08-21 | Samsung Electronics Co., Ltd. | Hardware architecture for acceleration of computer vision and imaging processing |
US10762030B2 (en) | 2016-05-25 | 2020-09-01 | Samsung Electronics Co., Ltd. | Storage system, method, and apparatus for fast IO on PCIE devices |
EP3338194B1 (en) | 2016-05-31 | 2022-12-07 | Avago Technologies International Sales Pte. Limited | Multichannel input/output virtualization |
US10048881B2 (en) * | 2016-07-11 | 2018-08-14 | Intel Corporation | Restricted address translation to protect against device-TLB vulnerabilities |
US10241931B2 (en) * | 2016-07-29 | 2019-03-26 | Advanced Micro Devices, Inc. | Controlling access to pages in a memory in a computing device |
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 |
US10120813B2 (en) * | 2017-03-08 | 2018-11-06 | Arm Limited | Address translation |
US10380039B2 (en) | 2017-04-07 | 2019-08-13 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10528474B2 (en) * | 2017-09-06 | 2020-01-07 | International Business Machines Corporation | Pre-allocating cache resources for a range of tracks in anticipation of access requests to the range of tracks |
WO2019132976A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Unified address translation for virtualization of input/output devices |
US20190227942A1 (en) * | 2018-01-24 | 2019-07-25 | Dell Products, Lp | System and Method to Handle I/O Page Faults in an I/O Memory Management Unit |
US10990436B2 (en) * | 2018-01-24 | 2021-04-27 | Dell Products L.P. | System and method to handle I/O page faults in an I/O memory management unit |
US11157635B2 (en) * | 2018-04-08 | 2021-10-26 | Qualcomm Incorporated | Secure interface disablement |
US20190114195A1 (en) * | 2018-08-22 | 2019-04-18 | Intel Corporation | Virtual device composition in a scalable input/output (i/o) virtualization (s-iov) architecture |
JP7158493B2 (ja) | 2018-11-01 | 2022-10-21 | 株式会社クラレ | 照光繊維 |
US10929310B2 (en) | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
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 |
US10853263B1 (en) | 2019-07-23 | 2020-12-01 | Ati Technologies Ulc | Unified kernel virtual address space for heterogeneous computing |
US11422944B2 (en) * | 2020-08-10 | 2022-08-23 | Intel Corporation | Address translation technologies |
US20210004338A1 (en) * | 2020-09-21 | 2021-01-07 | Pratik Marolia | Pasid based routing extension for scalable iov systems |
US11775210B2 (en) * | 2020-10-14 | 2023-10-03 | Western Digital Technologies, Inc. | Storage system and method for device-determined, application-specific dynamic command clustering |
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 |
US11797178B2 (en) * | 2021-07-16 | 2023-10-24 | Hewlett Packard Enterprise Development Lp | System and method for facilitating efficient management of data structures stored in remote memory |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075147A1 (en) * | 2004-09-30 | 2006-04-06 | Ioannis Schoinas | Caching support for direct memory access address translation |
US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
US20080120487A1 (en) * | 2006-11-21 | 2008-05-22 | Ramakrishna Saripalli | Address translation performance in virtualized environments |
CN101203838A (zh) * | 2005-06-21 | 2008-06-18 | 英特尔公司 | 直接存储器存取转换的地址窗口支持 |
CN101292228A (zh) * | 2005-08-23 | 2008-10-22 | 高通股份有限公司 | 转换后备缓冲器的锁定指示符 |
US20090187697A1 (en) * | 2008-01-22 | 2009-07-23 | Serebrin Benjamin C | Execute-Only Memory and Mechanism Enabling Execution From Execute-Only Memory for Minivisor |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04308953A (ja) * | 1991-04-05 | 1992-10-30 | Kyocera Corp | 仮想アドレス計算機装置 |
US6856420B1 (en) * | 2000-07-31 | 2005-02-15 | Hewlett-Packard Development Company, L.P. | System and method for transferring data within a printer |
US8041878B2 (en) * | 2003-03-19 | 2011-10-18 | Samsung Electronics Co., Ltd. | Flash file system |
US7444493B2 (en) * | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US7225287B2 (en) * | 2005-06-01 | 2007-05-29 | Microsoft Corporation | Scalable DMA remapping on a computer bus |
US7793067B2 (en) * | 2005-08-12 | 2010-09-07 | Globalfoundries Inc. | Translation data prefetch in an IOMMU |
US7543131B2 (en) * | 2005-08-12 | 2009-06-02 | Advanced Micro Devices, Inc. | Controlling an I/O MMU |
US7548999B2 (en) * | 2006-01-17 | 2009-06-16 | Advanced Micro Devices, Inc. | Chained hybrid input/output memory management unit |
US7734842B2 (en) * | 2006-03-28 | 2010-06-08 | International Business Machines Corporation | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
US7636800B2 (en) * | 2006-06-27 | 2009-12-22 | International Business Machines Corporation | Method and system for memory address translation and pinning |
US7873770B2 (en) * | 2006-11-13 | 2011-01-18 | Globalfoundries Inc. | Filtering and remapping interrupts |
US7849287B2 (en) * | 2006-11-13 | 2010-12-07 | Advanced Micro Devices, Inc. | Efficiently controlling special memory mapped system accesses |
US8032897B2 (en) * | 2007-07-31 | 2011-10-04 | Globalfoundries Inc. | Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization |
US8145876B2 (en) * | 2007-08-06 | 2012-03-27 | Advanced Micro Devices, Inc. | Address translation with multiple translation look aside buffers |
US8352705B2 (en) * | 2008-01-15 | 2013-01-08 | Vmware, Inc. | Large-page optimization in virtual memory paging systems |
US8180944B2 (en) * | 2009-01-26 | 2012-05-15 | Advanced Micro Devices, Inc. | Guest interrupt manager that records interrupts for guests and delivers interrupts to executing guests |
-
2009
- 2009-07-24 US US12/508,890 patent/US9535849B2/en active Active
-
2010
- 2010-07-24 KR KR1020127004961A patent/KR101575827B1/ko active IP Right Grant
- 2010-07-24 IN IN935DEN2012 patent/IN2012DN00935A/en unknown
- 2010-07-24 JP JP2012521868A patent/JP5680642B2/ja active Active
- 2010-07-24 EP EP10738112.1A patent/EP2457165B1/en active Active
- 2010-07-24 WO PCT/US2010/043168 patent/WO2011011768A1/en active Application Filing
- 2010-07-24 CN CN201080041194.XA patent/CN102498478B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075147A1 (en) * | 2004-09-30 | 2006-04-06 | Ioannis Schoinas | Caching support for direct memory access address translation |
CN101203838A (zh) * | 2005-06-21 | 2008-06-18 | 英特尔公司 | 直接存储器存取转换的地址窗口支持 |
CN101292228A (zh) * | 2005-08-23 | 2008-10-22 | 高通股份有限公司 | 转换后备缓冲器的锁定指示符 |
US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
US20080120487A1 (en) * | 2006-11-21 | 2008-05-22 | Ramakrishna Saripalli | Address translation performance in virtualized environments |
US20090187697A1 (en) * | 2008-01-22 | 2009-07-23 | Serebrin Benjamin C | Execute-Only Memory and Mechanism Enabling Execution From Execute-Only Memory for Minivisor |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104685479A (zh) * | 2012-08-29 | 2015-06-03 | 超威半导体公司 | 客户虚拟机内的虚拟输入/输出存储器管理单元 |
CN105074663A (zh) * | 2013-03-12 | 2015-11-18 | 高通股份有限公司 | 按需选择性地启用虚拟机监测器的操作的方法和装置 |
CN105074663B (zh) * | 2013-03-12 | 2018-08-28 | 高通股份有限公司 | 按需选择性地启用虚拟机监测器的操作的方法和装置 |
US10310882B2 (en) | 2013-03-12 | 2019-06-04 | Qualcomm Incorporated | Algorithm and apparatus to deploy virtual machine monitor on demand |
CN109643290A (zh) * | 2016-10-01 | 2019-04-16 | 英特尔公司 | 用于具用扩展分段的面向对象的存储器管理的技术 |
CN109643290B (zh) * | 2016-10-01 | 2024-03-19 | 英特尔公司 | 用于具用扩展分段的面向对象的存储器管理的技术 |
CN110291510A (zh) * | 2017-02-24 | 2019-09-27 | 超威半导体公司 | 流转换后备缓冲器 |
CN110291510B (zh) * | 2017-02-24 | 2023-12-08 | 超威半导体公司 | 流转换后备缓冲器 |
CN109698845B (zh) * | 2017-10-20 | 2020-10-09 | 华为技术有限公司 | 数据传输的方法、服务器、卸载卡及存储介质 |
CN109698845A (zh) * | 2017-10-20 | 2019-04-30 | 华为技术有限公司 | 数据传输的方法、服务器、卸载卡及存储介质 |
CN111290829B (zh) * | 2020-01-15 | 2023-05-02 | 海光信息技术股份有限公司 | 访问控制模组、虚拟机监视器及访问控制方法 |
CN111290829A (zh) * | 2020-01-15 | 2020-06-16 | 海光信息技术有限公司 | 访问控制模组、虚拟机监视器及访问控制方法 |
CN114077397A (zh) * | 2020-08-11 | 2022-02-22 | 美光科技公司 | 基于用户进程标识符的地址转译 |
US11734191B2 (en) | 2020-08-11 | 2023-08-22 | Micron Technology, Inc. | User process identifier based address translation |
CN112395220A (zh) * | 2020-11-18 | 2021-02-23 | 海光信息技术股份有限公司 | 共享存储控制器的处理方法、装置、系统及存储控制器 |
CN112395220B (zh) * | 2020-11-18 | 2023-02-28 | 海光信息技术股份有限公司 | 共享存储控制器的处理方法、装置、系统及存储控制器 |
CN114201269A (zh) * | 2022-02-18 | 2022-03-18 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR101575827B1 (ko) | 2015-12-08 |
EP2457165A1 (en) | 2012-05-30 |
CN102498478B (zh) | 2015-04-29 |
US20110022818A1 (en) | 2011-01-27 |
IN2012DN00935A (zh) | 2015-04-03 |
JP2013500524A (ja) | 2013-01-07 |
US9535849B2 (en) | 2017-01-03 |
EP2457165B1 (en) | 2018-07-04 |
WO2011011768A1 (en) | 2011-01-27 |
KR20120044370A (ko) | 2012-05-07 |
JP5680642B2 (ja) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102498478B (zh) | 在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu | |
CN102473139B (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
US7613898B2 (en) | Virtualizing an IOMMU | |
US7809923B2 (en) | Direct memory access (DMA) address translation in an input/output memory management unit (IOMMU) | |
US7673116B2 (en) | Input/output memory management unit that implements memory attributes based on translation data | |
CN104685479A (zh) | 客户虚拟机内的虚拟输入/输出存储器管理单元 | |
JP2024508882A (ja) | データ移動を容易にするために複数のアドレス空間をサポートする方法、システム及び装置 | |
US20220269621A1 (en) | Providing Copies of Input-Output Memory Management Unit Registers to Guest Operating Systems | |
US20220308756A1 (en) | Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory | |
KR20180041037A (ko) | 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법 | |
US11494211B2 (en) | Domain identifier and device identifier translation by an input-output memory management unit | |
CN114207596A (zh) | 将中断从输入-输出存储器管理单元提供到访客操作系统 | |
US20200387326A1 (en) | Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit | |
US11698860B2 (en) | Method, system, and apparatus for supporting multiple address spaces to facilitate data movement | |
US20230418773A1 (en) | Device, system, and method for inspecting direct memory access requests | |
US20230103000A1 (en) | Hardware managed address translation service for integrated devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |