CN103026348B - Iommu架构的tlb支持 - Google Patents
Iommu架构的tlb支持 Download PDFInfo
- Publication number
- CN103026348B CN103026348B CN201180009059.1A CN201180009059A CN103026348B CN 103026348 B CN103026348 B CN 103026348B CN 201180009059 A CN201180009059 A CN 201180009059A CN 103026348 B CN103026348 B CN 103026348B
- Authority
- CN
- China
- Prior art keywords
- information
- cache memory
- group address
- transitional information
- management unit
- 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.)
- Active
Links
- 238000006243 chemical reaction Methods 0.000 claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000013519 translation Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 4
- 230000006872 improvement Effects 0.000 abstract description 2
- 230000002093 peripheral effect Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 26
- 230000008859 change Effects 0.000 description 8
- 230000000875 corresponding effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003801 milling Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- 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/654—Look-ahead translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
实施例容许具有独立于页表结构和格式的改进转换性能的输入/输出内存管理单元(IOMMU)的较小的、较简单的硬件实现。实施例还提供了实现的设备无关的结构和方法,使得软件的通用性更强(较少的特定软件版本,进而降低了开发成本)。
Description
技术领域
本发明总体上涉及计算机系统,尤其涉及输入/输出内存管理单元(IOMMU)。
背景技术
内存管理单元(MMU)能够与中央处理单元(CPU)相关联。例如,CPUMMU被配置为将CPU所使用的虚拟地址转换成与系统内存对应的物理地址,并且CPUMMU验证访问(存在、读、写等),容许与CPU相关联的内存过量使用、重新定位以及保护。
在与x86CPU相关的系统中,近来已经相对地定义了与输入/输出外围设备相关联的输入/输出(IO)MMU。输入/输出内存管理单元(IOMMU)能够响应于与例如外围设备使用的虚拟地址相关联的外围设备请求而从系统内存取回转换信息,以将虚拟地址转换成系统内存的相应物理地址。
IOMMU通常可以包含页表搜索程序逻辑电路,页表搜索程序逻辑电路检验主系统内存的内容以找到必要的转换信息(进行页表搜索)。例如,当外围设备请求信息未高速缓存在IOMMU中(即,“遗漏”)时,页表搜索程序(walker)用于从系统内存获取信息。然而,页表搜索程序的实现复杂,增加了IOMMU芯片或芯片组件的硅面积和功率耗散。IOMMU实现了页表搜索程序,试图基于提供给IOMMU硬件的有限信息实现局部最优(例如,基于最近期使用(LRU)算法来影响高速缓存在IOMMU中的信息)。仅通过硬件实现的这些示例可能会导致过量的转换取出(“页表搜索”)以及过量的转换遗漏,使IO子系统的性能降低并且导致内存等待时间增加。
另外,IOMMU通常配置为读取和解析基于与特定架构相关联的页表入口的格式的信息,将IOMMU限制为特定页表架构,将页表格式提交给硬件设计,并且隐含提交给特定兼容处理器实现。
软件架构/管理的转换后备缓冲器(TLB)高速缓冲存储器也是已知的。软件管理TLB,并且任何页表搜索在软件中完成。软件将入口(entry)装入TLB中,但是没有硬件底层构造支撑软件架构的TLB。此外,当开始装入和/或无效时,软件架构的TLB具有不灵活性,即,当入口装入TLB中时,装入程序具有更换之前入口的效果。
一些IO控制器或外围设备包含由操作系统或管理程序中的设备驱动程序软件管理的简单MMU。例如,典型的图形控制器包含图形卡上的“局部MMU”。在这种情况下,“局部MMU”映射硬件是通过系统软件利用复杂算法控制的,但是每个MMU是唯一的且要求唯一的驱动程序。对于外围设备硬件的改变要求对驱动程序进行改变,抬高了开发成本并且延长了开发周期,最终延迟了上市时间。这还意味着,销售商不能将管理程序的通用驱动程序写入虚拟化系统中,因此在管理程序内必须包含特定的驱动程序,特定驱动程序的选择取决于系统中存在的确切的IO外围设备。这意味着,除了支持操作系统的驱动程序之外,必须为管理程序写和测试另外的驱动程序,再次抬高了开发成本和时间。
需要一种提高IOMMU性能并且提供使软件能为管理程序写入一次并且能用于外围设备内存映射架构的多个实现的标准化接口的方法。
发明内容
本发明的实施例允许IOMMU的较小的、较简单的硬件实现,该IOMMU具有独立于页表结构和格式的改进转换性能。实施例还提供了独立于设备的实现的结构和方法,容许软件的通用性更强(较少的特定软件版本,进而降低了开发成本)。
一个实施例涉及一种方法,包括:在系统的输入/输出(I/O)内存管理单元(IOMMU)处接收预取立即命令。预取立即命令指定地址转换信息,所述地址转换信息包括:(i)虚拟地址,以及(ii)与虚拟地址相关联的转换后物理地址。所述方法进一步包括:至少基于资源状况将所述地址转换信息选择性地存储到与IOMMU相关联的I/O转换后备缓冲器(IOTLB)中。
另一实施例涉及一种系统,包括配置为接收预取立即命令的输入/输出(I/O)内存管理单元(IOMMU)。预取立即命令指定地址转换信息,所述地址转换信息包括:(i)虚拟地址,以及(ii)与虚拟地址相关联的转换后物理地址。与IOMMU相关联的I/O转换后备缓冲器(IOTLB)配置为至少基于资源状况选择性地存储所述地址转换信息。
又一实施例涉及一种存储有计算机可执行指令的有形计算机可读介质,如果计算装置执行所述计算机可执行指令,则所述计算机可执行指令使得所述计算装置执行一种方法,所述方法包括:在系统的输入/输出(I/O)内存管理单元(IOMMU)处接收预取立即命令。预取立即命令指定地址转换信息,所述地址转换信息包含:(i)虚拟地址,以及(ii)与所述虚拟地址相关联的转换后物理地址。所述方法进一步包括:至少基于资源状况将所述地址转换信息选择性地存储到与IOMMU相关联的I/O转换后备缓冲器(IOTLB)中。
下面将参照附图对本发明的进一步的特征和优点以及本发明的各个实施例的结构和操作进行详细的说明。应注意的是,本发明不限于此处所述的特定实施例。本文提供的这些实施例仅用于示例性的目的。基于本文包含的教导,另外的实施例对于相关领域技术人员来说将是显而易见的。
附图说明
附图合并到本文中并且构成了说明书的一部分,附图图示出实施例并且与上面给出的概述和下面给出的实施例的详述一起用于解释本发明的实施例的原理。在附图中:
图1是示出依照实施例包括IOMMU的系统的框图;
图2是示出依照另一实施例的IOMMU的框图;
图3是示出依照另一实施例包括与系统内存交互的IOMMU的系统的框图;
图4是示出依照另一实施例包括与系统内存交互的IOMMU的系统的框图;
图5是示出依照另一实施例用于选择性地存储地址转换信息的方法的流程图;
图6是示出依照另一实施例的IOMMU的框图;
图7是示出依照又一实施例的包括与系统内存交互的IOMMU的系统的框图;
图8是示出依照又一实施例的包括与系统内存交互的IOMMU的系统的框图;
图9是示出依照又一实施例的用于服务地址转换数据请求的方法的流程图;
图10是示出依照又一实施例的包括与系统内存交互的IOMMU的系统的框图;
图11是示出依照又一实施例的包括IOMMU和带有IOTLB的外围设备的系统的框图;以及
图12是示出依照又一实施例包括中断再变换(remap)缓冲器和设备表入口缓冲器的IOMMU的框图。
具体实施方式
本发明的实施例提供了内存管理单元及其应用。在下面的详述中,提到的“一个实施例”、“实施例”、“示例性实施例”等指示所述的实施例可以包括特定的特征、结构或特性,但是每个实施例不必包括特定的特征、结构或特性。而且,这些用语不一定指代相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,无论是否明确说明,认为与其它实施例相结合地实现这些特征、结构或特性是在本领域技术人员的知识范围内。
图1是包括CPU106和与CPU106相关联的CPUMMU108的系统100的框图图解。系统100进一步包括与外围设备110相关联的IOMMU102。尽管此处未示出,在系统100中可构思设有多个IOMMU,恰如构思设有多个CPUMMU108一样(例如,多处理器系统)。
IOMMU102依照一组限定的功能和性能而操作。这些功能和性能与排在系统内存104的队列中且由IOMMU102读取以便由IOMMU102执行/消费的一组命令相关联。
IOMMU102在外围设备110和系统内存104之间转换虚拟/物理地址并且执行中断再变换。中断再变换与地址转换功能相似在于,其转换与再变换中断对应的地址。为了提高IOMMU102的转换/再变换速度,存储在系统内存104中的地址转换/中断再变换信息可高速缓存在IOMMU102中。该过程提高了IOMMU102能够访问转换或再变换信息的速度。
图2是图1中的IOMMU102的更详细的框图图解。IOMMU202包括配置为检验主系统内存104(见图1)的内容的页表搜索程序214。页表搜索程序214还有利于存储/高速缓存于IOMMU102中的信息的定位和取回。页表搜索程序214能够将转换信息插入到高速缓冲存储器中,高速缓冲存储器被称为转换后备缓冲器(TLB)212,还称为输入/输出TLB(IOTLB)212。IOTLB212可用于虚拟地址216和物理地址218之间的地址转换。类似的高速缓存结构可用于中断再变换。
IOMMU102从系统内存104中读取控制待高速缓存信息的填充以及高速缓存在IOMMU102和/或IOTLB212中的转换/再变换信息的无效或冲洗的命令。IOMMU102还能够响应于来自外围设备110的信息请求而自动地从系统内存104装入转换/再变换信息。例如,IOMMU102能够实现硬件页表搜索程序214以执行页表搜索并且从系统内存104的页表中取回物理地址218。当待转换的虚拟地址216未高速缓存在IOTLB212中时,页表搜索能够响应来自外围设备110的包括虚拟地址216的请求。
能够通过硬件和/或软件以各种方式(也称为转换缓冲器策略)来保持和更新IOTLB212中的地址转换/再变换信息。例如,CPU106上的系统软件能够使得由于存储在系统内存104中的相应信息的变化而不再有效的IOMMU102中的高速缓存信息无效。IOMMU102还能够在硬件中实现转换缓冲器策略,使得硬件主要确定高速缓存在IOMMU102中的转换入口的高速缓存以及迁出。能够使高速缓存的转换入口迁出以便为新的信息留出空间。当高速缓存的转换入口不再有效时,必须对高速缓存的转换入口进行冲洗。当要替换IOTLB212中的信息或者这些信息不再有效时,这些以及其它技术能够用于处理IOTLB212中的信息。
IOMMU102能够在接收到来自外围设备110的信息请求之前从系统内存104中预取该信息。预取命令能够实现,例如2008年4月30日提交的题为“TranslationDataPrefetchinanIOMMU”的美国专利申请序列号12/112,611中公开的,该申请的全部内容通过引用并入本文中。预取命令能够指示IOMMU102搜索系统内存104的页表并且预装与例如指定(设备虚拟)地址相关联的转换信息。因此,当请求进入IOMMU102中时,在IOTLB212中可以提供预装的转换信息。
图3是包括IOMMU302和系统内存304的系统300的框图图解。系统300进一步包括页表320和事件登记缓冲器328。在页表320中可访问地址转换信息322。在事件登记缓冲器328中可访问IOMMU入口330。系统300能够另外包括CPU306和CPUMMU308。
关于填充IOMMU高速缓冲存储器,IOMMU302对存储在系统内存304的页表320中的地址转换信息322进行访问和高速缓存。如图所示,IOMMU302的页表搜索程序314进行页表搜索以取回地址转换信息322。然后,地址转换信息322被高速缓存到IOTLB312中。当来自外围设备310的后续请求到达用于地址转换信息322的IOMMU302时,地址转换信息322在IOTLB312中可用以使页表搜索是不必要的。如果请求到达用于在IOTLB312中不再可用的地址转换信息322的IOMMU302,则可以进行后续页表搜索以从页表320中获取地址转换信息322。可选地,系统300能够利用预取立即命令326来更新IOTLB312的内容。
IOMMU302能够读取并消费存储在系统内存304的命令队列324中的命令。IOMMU302因此能够利用命令中传递的信息来对其高速缓冲存储器进行填充。除了填充策略外,由IOMMU302读取的命令实际上能够容许系统软件对高速缓存于IOTLB312中的信息进行无效或更新。例如,无效可与地址转换信息322变化时的条件相关联,使得之前高速缓存于IOTLB312中的地址转换信息不再与变化后的地址转换信息322相对应。
IOMMU302从命令队列324读取的命令能够进一步增加IOMMU302的功能。预取立即命令326能够在预取立即命令326的主体内包含地址转换信息322。然后,IOMMU302能够经由预取立即命令326来接收地址转换信息322。因此,IOMMU302不需要使用页表搜索程序314来搜索页表320以获取地址转换信息322。预取立即命令326中的信息能够直接装入到目标IOTLB312中,而无需执行任何页表搜索。如图所示,页表搜索程序314可用于备份和/或与预取立即命令326结合工作。
预取立即命令326能够实现为IOMMU的新命令或者作为上述预取命令的变体。还可以实现为系统软件将必要信息写入其中的一组MMIO寄存器。
图4是依照本实施例的实现预取立即命令426的系统400的框图图解。系统400与外围设备410相关联,并且可以包括CPU406、CPUMMU408和系统内存404。系统内存404包括页表420、命令队列424以及事件登记缓冲器428。系统内存404还能够与IO页表430相关联。地址转换信息422能够存储在IO页表430中。IO页表430的内部格式无需与页表420的内部格式相同。预取立即命令426将地址转换信息422高速缓存到IOTLB412中。地址转换信息422与虚拟地址416和物理地址418相关联。系统400能够管理命令队列424和预取立即命令426以提供由预取立即命令426使用的地址转换信息422。因此,利用预取立即命令426与IOMMU交互的系统400引入了与数据高速缓存于IOMMU402中相关联的系统400的灵活性和机会。
另外,系统400能够实现在IOTLB412处对地址转换信息422进行高速缓存,而无需使用页表搜索程序414。因此,系统400无需包含与特定硬件实现的页表搜索程序414(如果使用的话)接口的特定系统驱动程序。然而,可构思的是,如果适用,预取立即命令426能够与硬件页表搜索程序414相结合工作以提高总体性能。
图5是依照本实施例基于系统状况选择性地存储地址转换信息的示例性方法560的流程图图解。在步骤570中,IOMMU接收指定地址转换信息的预取立即命令。在步骤572中,通过例如IOMMU或系统来检查系统状况。系统状况可以包括系统的资源状况,所述资源状况可以包括系统资源的可用性、IOTLB中一个或多个空白地址入口的可用性、功率节约和/或睡眠状况、和/或在突出系统请求的情况下系统资源的可用性。资源状况还可以包括存储在IOTLB中的与预取立即命令中指定的地址转换信息对应的一个或多个有效地址入口的优先权、或在预取立即命令中指定的无效指示。
在步骤574中,基于系统状况对是否忽略预取立即命令做出决策。如果决策为不忽略预取立即命令,则方法继续进行到步骤576,并且地址转换信息存储在IOMMU的IOTLB中。然后,方法从步骤576继续进行到步骤578。如果在步骤574处决策为忽略预取立即命令,则方法继续进行到步骤578,并且处理命令队列中的下个IOMMU命令。
预取立即命令的命令格式可以包含转换后物理地址以及包括容许访问指示符和指定(设备虚拟)地址的IOMMU域信息的其它信息。命令格式还可以包含IOTLB存储槽目的地。
IOMMU能够选择性地忽略预取立即命令。例如,IOMMU能够判定出不应当改写IOMMU高速缓冲存储器中的现有入口以及不存在应当插入地址转换的当前可用的IOMMU高速缓冲存储器入口。当请求稍后到达包含于被忽略的预取立即命令中但未插入的地址转换信息的IOMMU时,IOMMU能够进行页表搜索或者请求预取立即命令以获取请求的地址转换信息。如果由于某种原因不方便承兑预取立即命令或者不是承兑预取立即命令的适当时间,则忽略预取立即命令是安全的。
选择性地承兑/忽略预取立即命令使得IOMMU通过在确定是否承兑命令时考虑到资源状况而能够优化系统性能。用于获取并插入地址转换信息的基于硬件的底层构造/机制对于IOMMU的实施例是可用的,并且预取立即命令是在硬件底层结构之上的加速。预取立即命令能够装入地址转换信息,或者命令可被忽略并且能够依靠硬件机制来装入地址转换信息。
为了将地址转换信息提供给IOMMU,预取立即命令提供了IOMMU的页表搜索程序的可选方案。另外,能够实现各种技术以用于将所提供的地址转换信息装入和/或插入到IOMMU的IOTLB中。本文所述的实施例能够与IOMMU的现有功能相结合工作或者超驰IOMMU功能。
在一个实施例中,IOMMU的局部高速缓冲存储器替换算法可用于将所提供的地址转换信息插入到IOMMU的IOTLB中,即,插入到IOMMU的内部地址转换高速缓冲存储器中。通过这种方式,当将所提供的地址转换信息装入/插入到IOTLB中时,IOMMU的IOTLB转换高速缓冲存储器将正常地运作。然而,IOMMU整体上无需页表搜索功能来获取地址转换信息和/或将地址转换信息提供给IOMMU的局部高速缓冲存储器替换算法。
因此,IOMMU的局部高速缓冲存储器替换算法能够处理由于迁出(例如,当在IOTLB中不存在于存储所提供的地址转换信息的自由存储槽时)导致的情形。例如,IOTLB的正常操作可使得已经高速缓存于IOTLB中的地址转换信息被其它所提供的地址转换信息迁出(替换),甚至在使用或请求已经高速缓存的地址转换信息之前。
在另一实施例中,预取立即命令能够包含引导IOMMU以将信息装入IOMMU的IOTLB转换高速缓冲存储器中的特定存储槽中的信息。该信息的装入超驰或替换了用于该预取立即命令的IOMMU转换高速缓冲存储器替换硬件和/或算法。IOTLB的正常操作随后可使得在使用转换信息之前迁出(替换)转换信息。因为系统能够引导IOMMU,系统不存在IOMMU转换高速缓冲存储器替换硬件和/或算法的特定性。
在又一实施例中,IOTLB结构直接暴露于系统软件能够直接操纵内容的例如MMIO空间中,或者通过地址/数据寄存器对而间接暴露于MMIO空间中。
图6是依照本实施例的包括边TLB632的IOMMU602的另一实施例的框图图解。IOMMU602与虚拟地址616、物理地址618和页表搜索程序614相关联。边TLB632独立于IOTLB612。IOMMU602能够将所提供的地址转换信息插入到特定的“边”转换后备缓冲器(边TLB632)中。边TLB632能够由系统软件管理并且能够包含频繁使用的转换。通过利用边TLB632保持频繁使用的转换与IOTLB612分开使得频繁使用的转换不与IOTLB612中的自由槽的其它地址转换竞争。高速缓存于边TLB632中的频繁使用的转换将不会被在IOTLB612上执行的IOMMU602的正常转换高速缓存操作迁出,使得边TLB632“粘着”并且总是可供用于存储地址转换信息。例如,需要在边TLB高速缓冲存储器的入口中存储的地址转换信息的设备直接内存访问(DMA)操作将被迅速转换并且不会由于IOMMU的页面搜索而延迟。
图7是依照本实施例的具有包括IOTLB712和边TLB732的IOMMU702的系统700的框图图解。系统700包括CPU706、CPUMMU708、和系统内存704。系统内存704包括页表720、命令队列724和事件登记缓冲器728。在系统700中,包括虚拟地址716的来自外围设备710的请求到达IOMMU702。IOMMU702判定与物理地址718相关联并且与虚拟地址716相对应的地址转换信息是否高速缓存于IOTLB712和/或边TLB732的IOMMU702中。如果信息在IOMMU702中不可用并且从主系统内存704的页表720可用,则存在IOTLB遗漏(区别于信息不可用的页面出错)。页表搜索程序714可用于访问系统内存704的页表720以获取并提供在IOMMU702处服务请求所需的地址转换信息。另外,系统700能够使用命令队列724来执行预取立即命令726以为边TLB732和IOTLB712提供地址转换信息722,无需等待页表搜索程序714来执行页表搜索。
IOMMU702能够配置为向系统软件和/或系统700提供关于与预取立即命令726相关联的存储器(高速缓冲存储器;例如,IOTLB712和边TLB732)的大小和功能的信息,以使系统软件能够优化存储器高速缓冲存储器的使用。所提供的信息可以包括例如作为高速缓冲存储器的入口及其组织的数量和类型。因此,系统700能够在全局系统级智能地管理IOMMU702的存储器高速缓冲存储器资源。
图8是依照本实施例的具有包括IOTLB812的IOMMU802的系统800的框图图解。系统800包括系统内存804和CPUMMU808。系统内存804包括页表820、命令队列824和事件登记缓冲器828。在图8的实施例中,IOMMU802不包括页表搜索程序,从而节约了功率和芯片不动产。包括虚拟地址816的来自外围设备810的请求到达IOMMU802。IOMMU802判定与虚拟地址816和物理地址818相关联的地址转换信息是否在IOMMU802处可用以服务于来自外围设备810的转换请求。当地址转换信息未高速缓存于IOMMU802处(例如,IOTLB遗漏)时,IOMMU802在事件登记缓冲器828处创建新的IOMMU事件登记入口。事件登记入口向主CPU806发信号表示IOMMU802需要转换信息。主CPU806能够利用预取立即命令826来将地址转换信息822插入到IOTLB812中并且继续执行触发事件的外围设备810的IO操作。边TLB(图8中未示出;参见例如图7)可以包括在IOMMU802中以进一步降低或消除IOTLB遗漏的可能性,这取决于IOMMU802高速缓冲存储器的实现决策和使用模式。
预取立即命令可以包含域信息(设备表入口内容),从而将域信息插入到IOMMU高速缓冲存储器结构中。可选地,插入域信息可以实现为单独的命令,这取决于各种实现特定性。
图9是用于服务来自I/O操作的请求的示例性方法960的流程图图解。在步骤980中,接收到来自请求地址转换信息的I/O操作的请求。在步骤982中,判定与请求相关联的地址转换信息是否已经存储在IOMMU的IOTLB中。如果已经存储了地址转换信息,则方法继续进行到步骤984并且提供所请求的地址转换信息。如果在步骤982中尚未存储地址转换信息,则方法继续进行到步骤986并且创建IOMMU事件登记入口,发信号表示请求地址转换信息。在步骤990中,利用预取立即命令响应于IOMMU事件登记入口而将所请求的地址转换信息插入到一个或多个IOMMU高速缓冲存储器中。在步骤992中,继续执行请求地址转换信息的I/O操作。
图10是具有包括IOMMU事件登记入口1030的事件登记缓冲器1028的系统1000的框图图解。图示的实施例在IOMMU1002中不包括页表搜索程序,从而节约功率和芯片不动产。系统1000包括CPUMMU1008和系统内存1004。系统内存1004包括页表1020、命令队列1024和事件登记缓冲器1028。在系统1000中,来自外围设备1010的请求到达IOMMU1002处。IOMMU1002判定在IOMMU1002处是否可使用地址转换信息以服务来自外围设备1010的转换请求。在地址转换信息未高速缓存于IOMMU1002的情况下(例如,IOTLB遗漏),在事件登记缓冲器1028处创建新的IOMMU事件登记入口1030。IOMMU入口1030向主CPU1006发信号表示IOMMU1002请求转换信息。主CPU1006利用预取立即命令1026以向IOTLB1012提供地址转换信息1022。通过将预取立即命令1026放置到系统内存1004的命令队列1024中来提供转换信息1022。IOMMU1002从命令队列1024中取得预取立即命令1026,并且IOMMU1002执行预取立即命令1026。所提供的地址转换信息1022随后能够利用上述各种填充策略而被插入到IOTLB1012中。
例如,预取立即命令1026可以包括关于IOTLB1012的特定位置的特定存储槽或其它信息。可选地,IOMMU的局部高速缓冲存储器替换算法能够用于将所提供的地址转换信息1022插入到IOTLB1012中。边TLB(未示出)可以包含在IOMMU1002中以进一步降低或消除IOTLB遗漏的可能性,这取决于IOMMU1002高速缓冲存储器的实现决策和使用模式。
可以由于各种原因而使地址转换信息无效和/或从IOMMU的转换高速缓冲存储器中去除地址转换信息。例如,高速缓存于IOMMU中的地址转换信息可能不再与存储在系统内存的页表中的地址转换信息相对应。
在实施例中,INVALIDATE_IOMMU_PAGES命令能够用于指定待无效的地址转换信息或特定地址,使得IOMMU利用局部IOMMU搜索算法来搜索其内部的地址转换高速缓冲存储器以找到任何待无效的一个或多个特定入口。
在另一实施例中,INVALIDATE_IOMMU_PAGES命令能够指示待无效的IOMMU的特定存储槽,而不是待无效的地址。该命令可被构造为INVALIDATE_IOMMU_PAGES命令的变体,或者该命令可被构造为新命令。
在另一实施例中,能够通过发出预取立即命令来实现无效。预取立即命令能够指定所占据的地址转换存储槽,并且指定应当改写所占据的地址转换存储槽中包含的信息。例如,预取立即命令能够包含无效位。当无效位被指示时,引导IOMMU遵守预取立即命令并且改写预先存在的地址转换信息。因此,无效位能够控制IOMMU是否能够选择性地忽略预取立即命令。
在又一实施例中,IOTLB结构直接暴露于例如系统软件能够直接操纵内容的MMIO空间中,能够利用直接访问方法来实现无效。在该实施例中,通过MMIO空间来操纵IOTLB,系统软件能够以其将入口插入到表中相同的方式使入口无效。
尽管通过这些新的命令来扩增在例如主x86处理器上运行的系统软件,能够在易于变化以实现益处的软件中实现所引入的益处。系统软件能够以局部级实现比未改进的硬件机制所能预期或实现的更加复杂、适当、适应的和高效的替换技术。对于一些系统约束,通常是性能灵敏的系统,能够实现具有硬件页表搜索程序的完全的IOMMU以实现本文描述的软件命令和相关的结构。
图11是包括IOMMU1102和具有IOTLB的外围设备1111的系统1100的框图图解。系统1100包括系统内存1104、CPU1106和CPUMMU1108。一些外围设备将利用外围设备内的IOTLB。外围设备的IOTLB能够用作IOMMU1102的IOTLB的逻辑电路延伸。具有IOTLB的外围设备1111能够利用IOMMU1102来执行页表搜索以获取并返回转换信息(例如,PCI-SIGATS地址转换服务)。因此,本文所述的预取立即命令以及其它相关命令和结构与包括具有IOTLB的外围设备1111的这种系统兼容。
这种系统中的具有IOTLB的外围设备1111能够继续使用PCI-SIGATS协议来扩增它们的IOTLB。这种系统中具有IOTLB的外围设备还能够采用此处所述的实施例以扩增其IOTLB。系统软件能够扩增IOMMU和外围设备的IOTLB这两者,并且协议和软件接口能够效率兼容。在实施例中,IOMMU不需要支持ATS协议,简化了设计并且减少了硅面积和功率要求。
图12是IOMMU1202的进一步实施例的框图图解,IOMMU1202包括IOTLB1212、页表搜索程序1214、中断再变换缓冲器1234和设备表入口缓冲器1236。IOMMU1202提供称为中断再变换的特征,其功能与在虚拟地址1216和物理地址1218之间转换的地址转换相似,但是适用于中断。本文所述的技术和实施例因此能够用于中断再变换。能够实现新命令或现有命令的变体以实施中断再变换信息,而不是地址转换。类似地,为了中断再变换信息的无效,能够实现新命令或变体命令。因为相应的表是单独和独立的,是通过IOMMU设备表入口缓冲器1236相关联的,所以能够独立地实现地址转换和中断再变换。因此,IOMMU1202能够进行增强地址转换和中断再变换。
结论
本文所述的实施例能够提高IOMMU实现(产品)的上市时间,降低开发、测试和支持新IOMMU硬件所需的耗费,并且提供容许软件适当地进行全局最优策略决策以在由硬件做出的局部最优策略决策上进行改进的机制。实施例还利用边TLB容许软件管理的“快速路径”转换特征。能够更加高效地(较少的硅面积)实现IO内存管理单元的功能,并且IO能够更快地流过这种系统。具有以及不具有所提出提高方案的多个IOMMU能够由于兼容性原因而共同存在于系统中,即,较老型和较新型的芯片设计能够混合在系统设计中。因为一些实施例不需要页面搜索程序硬件,所得到的IOMMU可以更小并且适配于较小型的FPGA上。因为实施例不需要IOMMU硬连线特定页表的格式,所以实施例能够以各种页表格式(例如,以非x86处理器和格式)工作。
由逻辑电路执行以实现本发明的方案的指令能够以各种编程语言进行编码,诸如C和C++、汇编和/或硬件描述语言(HDL),并且编译到能够由逻辑电路或其它设备执行的目标代码中。
上述实施例可以诸如Verilog、RTL、netlists等硬件描述语言来描述,并且这些描述能够用于最终通过掩膜工件/光掩膜的生成来配置制造过程以生成具体实现如此处所述的本发明的方案的一个或多个硬件设备。
本发明的方案可以整体或部分地存储在计算机可读介质上。存储在计算机可读介质上的指令能够适于使处理器整体地或部分地执行本发明的实施例。
应当理解的是,详述部分而不是概述和摘要部分旨在用于解释权利要求书。概述和摘要部分可以阐述发明人所构思的本发明的一个或多个示例性实施例而不是本发明的全部示例性实施例,并且因此,不意在以任何方式来限制本发明和随附的权利要求书。
Claims (23)
1.一种用于管理计算机系统的内存管理单元的性能的方法,包括:
将第一组地址转换信息存储在位于所述内存管理单元内的第一高速缓冲存储器中;
将第二组地址转换信息选择性地存储在位于所述内存管理单元内的第二高速缓冲存储器中,其中所述第二组地址转换信息比所述第一组地址转换信息更频繁地被访问并且所述第二高速缓冲存储器不受在所述第一高速缓冲存储器上执行的迁出操作的影响。
2.如权利要求1所述的方法,其中,所述第一组地址转换信息、所述第二组地址转换信息或两者包含在预取立即命令中。
3.如权利要求1所述的方法,其中,所述第一组地址转换信息、所述第二组地址转换信息或两者包含:虚拟地址,以及与所述虚拟地址相关联的转换后物理地址。
4.如权利要求1所述的方法,其中,所述内存管理单元为输入/输出(I/O)内存管理单元(IOMMU)。
5.如权利要求1所述的方法,其中,所述第一高速缓冲存储器为边转换后备缓冲器(边TLB)而所述第二高速缓冲存储器为I/O转换后备缓冲器(IOTLB)。
6.如权利要求1所述的方法,进一步包括:
响应于关联于未被存储在所述第一高速缓冲存储器或第二高速缓冲存储器中的第一组地址转换信息、第二组地址转换信息或两者的地址转换信息的请求而创建事件登记入口;以及
响应于所述事件登记入口而将所请求的所述地址转换信息插入到所述第一高速缓冲存储器和所述第二高速缓冲存储器中。
7.如权利要求1所述的方法,进一步包括:
响应于关联于未被存储在所述第一高速缓冲存储器或第二高速缓冲存储器中的第一组地址转换信息、第二组地址转换信息或两者的地址转换信息的请求而利用与所述内存管理单元相关联的页表搜索程序来执行页表搜索;
利用所述页表搜索程序从与所述内存管理单元通信的计算机系统的系统内存中的转换表中获取所请求的所述地址转换信息;以及
利用与所述内存管理单元相关联的高速缓冲存储器替换机制将所请求的所述地址转换信息插入到所述第一高速缓冲存储器、所述第二高速缓冲存储器或两者中。
8.如权利要求1所述的方法,进一步包括:
将所述第一组地址转换信息、所述第二组地址转换信息或两者插入到与所述第一高速缓冲存储器、所述第二高速缓冲存储器或两者相关联的一个或多个指定存储槽中,从而绕过与所述内存管理单元相关联的高速缓冲存储器替换机制。
9.如权利要求1所述的方法,进一步包括:
利用与所述内存管理单元相关联的无效机制来无效与所述第一高速缓冲存储器、所述第二高速缓冲存储器或两者相关联的一个或多个位置,
其中,所述无效响应于指定如下至少一项的无效命令:一个或多个地址入口,一个或多个存储槽或两者的组合。
10.如权利要求1所述的方法,进一步包括:
响应于无效指示来存储第一组地址转换信息、第二组地址转换信息或两者,而不考虑与所述第一组地址转换信息、所述第二组地址转换信息或两者相关联的任何已经存储的地址转换信息。
11.如权利要求1所述的方法,进一步包括:
确定包括所述内存管理单元的计算机系统的资源状况;以及
至少基于所述资源状况将中断再变换信息选择性地存储在与所述内存管理单元相关联的中断再变换缓冲器中。
12.一种计算机系统,包括:
中央处理单元;
与所述中央处理单元通信的系统内存单元;以及
内存管理单元,其与所述系统内存单元通信并被配置为:
将第一组地址转换信息存储在位于所述内存管理单元内的第一高速缓冲存储器中;
将第二组地址转换信息选择性地存储在位于所述内存管理单元内的第二高速缓冲存储器中,其中所述第二组地址转换信息比所述第一组地址转换信息更频繁地被访问并且所述第二高速缓冲存储器不受在所述第一高速缓冲存储器上执行的迁出操作的影响。
13.如权利要求12所述的系统,其中,所述第一组地址转换信息、所述第二组地址转换信息或两者包含在预取立即命令中。
14.如权利要求12所述的系统,其中,所述第一组地址转换信息、所述第二组地址转换信息或两者包含:虚拟地址,以及与所述虚拟地址相关联的转换后物理地址。
15.如权利要求12所述的系统,其中,所述内存管理单元为输入/输出(I/O)内存管理单元(IOMMU)。
16.如权利要求12所述的系统,其中,所述第一高速缓冲存储器为边转换后备缓冲器(边TLB)而所述第二高速缓冲存储器为I/O转换后备缓冲器(IOTLB)。
17.如权利要求12所述的系统,其中,所述内存管理单元进一步配置为:
响应于关联于未被存储在所述第一高速缓冲存储器或所述第二高速缓冲存储器中的所述第一组地址转换信息、所述第二组地址转换信息或两者的地址转换信息的请求而创建事件登记入口;以及
响应于所述事件登记入口将所请求的所述地址转换信息插入到所述第一高速缓冲存储器或所述第二高速缓冲存储器中。
18.如权利要求12所述的系统,其中,所述内存管理单元配置为:
响应于关联于未被存储在所述第一高速缓冲存储器或所述第二高速缓冲存储器中的所述第一组地址转换信息、所述第二组地址转换信息或两者的地址转换信息的请求,利用与所述内存管理单元相关联的页表搜索程序来执行页表搜索;
利用所述页表搜索程序从所述系统内存单元中的转换表中获取所请求的所述地址转换信息;以及
利用与所述内存管理单元相关联的高速缓冲存储器替换机制将所请求的所述地址转换信息插入到所述第一高速缓冲存储器、所述第二高速缓冲存储器或两者中。
19.如权利要求12所述的系统,其中,所述内存管理单元配置为:
将所述第一组地址转换信息、所述第二组地址转换信息或两者插入到与所述第一高速缓冲存储器、所述第二高速缓冲存储器或两者相关联的一个或多个指定存储槽中,从而绕过与所述内存管理单元相关联的高速缓冲存储器替换机制。
20.如权利要求12所述的系统,其中,所述内存管理单元配置为:
利用与所述内存管理单元相关联的无效机制来无效与所述第一高速缓冲存储器、所述第二高速缓冲存储器或两者相关联的一个或多个位置,其中所述无效机制响应于指定如下至少一项的无效命令:一个或多个地址入口以及一个或多个存储槽或两者的组合。
21.如权利要求12所述的系统,其中,所述内存管理单元配置为:
响应于无效指示而存储所所述第一组地址转换信息、所述第二组地址转换信息或两者,而不考虑与所述第一组地址转换信息、所述第二组地址转换信息或两者相关联的任何已经存储的地址转换信息。
22.如权利要求12所述的系统,进一步包括:
中断再变换缓冲器,其与所述内存管理单元相关联并且配置为至少基于资源状况来选择性地存储中断再变换信息。
23.一种内存管理单元,其被配置成:
将第一组地址转换信息存储在位于内存管理单元内的第一高速缓冲存储器中;
将第二组地址转换信息选择性地存储在位于所述内存管理单元内的第二高速缓冲存储器中,其中所述第二组地址转换信息比所述第一组地址转换信息更频繁地被访问并且所述第二高速缓冲存储器不受在所述第一高速缓冲存储器上执行的迁出操作的影响。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/707,341 US8244978B2 (en) | 2010-02-17 | 2010-02-17 | IOMMU architected TLB support |
US12/707,341 | 2010-02-17 | ||
PCT/US2011/025075 WO2011103184A2 (en) | 2010-02-17 | 2011-02-16 | Iommu architected tlb support |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103026348A CN103026348A (zh) | 2013-04-03 |
CN103026348B true CN103026348B (zh) | 2016-03-16 |
Family
ID=44041567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180009059.1A Active CN103026348B (zh) | 2010-02-17 | 2011-02-16 | Iommu架构的tlb支持 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8244978B2 (zh) |
EP (2) | EP2537098B1 (zh) |
JP (1) | JP5650766B2 (zh) |
KR (1) | KR101623514B1 (zh) |
CN (1) | CN103026348B (zh) |
WO (1) | WO2011103184A2 (zh) |
Families Citing this family (54)
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 |
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US8719464B2 (en) * | 2011-11-30 | 2014-05-06 | Advanced Micro Device, Inc. | Efficient memory and resource management |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9152571B2 (en) * | 2012-07-31 | 2015-10-06 | Ati Technologies Ulc | All invalidate approach for memory management units |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
US9064030B2 (en) | 2012-11-29 | 2015-06-23 | International Business Machines Corporation | Tree traversal in a memory device |
US9645934B2 (en) | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
CN105095108A (zh) * | 2014-05-06 | 2015-11-25 | 展讯通信(上海)有限公司 | 输入输出存储器管理单元及控制方法、装置 |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US9323701B2 (en) | 2014-07-29 | 2016-04-26 | Netapp, Inc. | Technique for synchronizing IOMMU memory de-registration and incoming I/O data |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US9542332B2 (en) * | 2014-11-13 | 2017-01-10 | Via Alliance Semiconductor Co., Ltd. | System and method for performing hardware prefetch tablewalks having lowest tablewalk priority |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US11086521B2 (en) | 2015-01-20 | 2021-08-10 | Ultrata, Llc | Object memory data flow instruction execution |
WO2016118564A1 (en) * | 2015-01-20 | 2016-07-28 | Ultrata Llc | Universal single level object memory address space |
CN112214424B (zh) | 2015-01-20 | 2024-04-05 | 乌尔特拉塔有限责任公司 | 对象存储器结构、处理节点、存储器对象存储和管理方法 |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
KR101994952B1 (ko) * | 2015-03-27 | 2019-07-01 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 처리 방법, 메모리 관리 유닛, 및 메모리 제어 장치 |
US9792215B2 (en) | 2015-03-28 | 2017-10-17 | Qualcomm Incorporated | Command-driven translation pre-fetch for memory management units |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US10459847B1 (en) * | 2015-07-01 | 2019-10-29 | Google Llc | Non-volatile memory device application programming interface |
US20170024145A1 (en) * | 2015-07-23 | 2017-01-26 | Qualcomm Incorporated | Address translation and data pre-fetch in a cache memory system |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
US10248337B2 (en) | 2015-12-08 | 2019-04-02 | Ultrata, Llc | Object memory interfaces across shared links |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
CA3006773A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
WO2017100292A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc. | Object memory interfaces across shared links |
US9959214B1 (en) | 2015-12-29 | 2018-05-01 | Amazon Technologies, Inc. | Emulated translation unit using a management processor |
US9727484B1 (en) * | 2016-01-29 | 2017-08-08 | International Business Machines Corporation | Dynamic cache memory management with translation lookaside buffer protection |
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 |
US10386904B2 (en) | 2016-03-31 | 2019-08-20 | Qualcomm Incorporated | Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks |
US10977192B1 (en) * | 2016-04-08 | 2021-04-13 | Amazon Technologies, Inc. | Real-time memory-page state tracking and its applications |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10678702B2 (en) * | 2016-05-27 | 2020-06-09 | Advanced Micro Devices, Inc. | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations |
US10599569B2 (en) | 2016-06-23 | 2020-03-24 | International Business Machines Corporation | Maintaining consistency between address translations in a data processing system |
US10095620B2 (en) * | 2016-06-29 | 2018-10-09 | International Business Machines Corporation | Computer system including synchronous input/output and hardware assisted purge of address translation cache entries of synchronous input/output transactions |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10417140B2 (en) * | 2017-02-24 | 2019-09-17 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
US11157285B2 (en) | 2020-02-06 | 2021-10-26 | International Business Machines Corporation | Dynamic modification of instructions that do not modify the architectural state of a processor |
KR20220078132A (ko) | 2020-12-03 | 2022-06-10 | 삼성전자주식회사 | 어드레스 변환을 수행하는 시스템 온 칩 및 이의 동작 방법 |
CN114238167B (zh) * | 2021-12-14 | 2022-09-09 | 海光信息技术股份有限公司 | 信息预取方法、处理器、电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134633A (en) * | 1997-10-31 | 2000-10-17 | U.S. Philips Corporation | Prefetch management in cache memory |
EP1139222A1 (en) * | 2000-03-31 | 2001-10-04 | Texas Instruments Incorporated | Prefetch for TLB cache |
US6438593B1 (en) * | 1998-05-21 | 2002-08-20 | Lucent Technologies Inc. | Method for information retrieval in broadcast disk systems |
CN101246452A (zh) * | 2007-02-12 | 2008-08-20 | 国际商业机器公司 | 执行快速的mmu模拟的方法和装置、以及全系统模拟器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06124237A (ja) * | 1992-10-13 | 1994-05-06 | Fuji Xerox Co Ltd | アドレス変換バッファ装置 |
US6553477B1 (en) * | 2000-11-06 | 2003-04-22 | Fujitsu Limited | Microprocessor and address translation method for microprocessor |
GB2378277B (en) * | 2001-07-31 | 2003-06-25 | Sun Microsystems Inc | Multiple address translations |
US7089396B2 (en) * | 2002-10-10 | 2006-08-08 | International Business Machines Corporation | Method and profiling cache for management of virtual memory |
US7793067B2 (en) * | 2005-08-12 | 2010-09-07 | Globalfoundries Inc. | Translation data prefetch in an IOMMU |
US7707359B2 (en) * | 2005-12-09 | 2010-04-27 | Oracle America, Inc. | Method and apparatus for selectively prefetching based on resource availability |
US7673116B2 (en) * | 2006-01-17 | 2010-03-02 | Advanced Micro Devices, Inc. | Input/output memory management unit that implements memory attributes based on translation data |
US7904692B2 (en) * | 2007-11-01 | 2011-03-08 | Shrijeet Mukherjee | Iommu with translation request management and methods for managing translation requests |
US8055827B2 (en) * | 2009-01-26 | 2011-11-08 | Advanced Micro Devices, Inc. | Guest interrupt controllers for each processor to aid interrupt virtualization |
-
2010
- 2010-02-17 US US12/707,341 patent/US8244978B2/en active Active
-
2011
- 2011-02-16 KR KR1020127024276A patent/KR101623514B1/ko active IP Right Grant
- 2011-02-16 WO PCT/US2011/025075 patent/WO2011103184A2/en active Application Filing
- 2011-02-16 CN CN201180009059.1A patent/CN103026348B/zh active Active
- 2011-02-16 EP EP11706685.2A patent/EP2537098B1/en active Active
- 2011-02-16 JP JP2012553997A patent/JP5650766B2/ja active Active
- 2011-02-16 EP EP18207073.0A patent/EP3486788A1/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134633A (en) * | 1997-10-31 | 2000-10-17 | U.S. Philips Corporation | Prefetch management in cache memory |
US6438593B1 (en) * | 1998-05-21 | 2002-08-20 | Lucent Technologies Inc. | Method for information retrieval in broadcast disk systems |
EP1139222A1 (en) * | 2000-03-31 | 2001-10-04 | Texas Instruments Incorporated | Prefetch for TLB cache |
CN101246452A (zh) * | 2007-02-12 | 2008-08-20 | 国际商业机器公司 | 执行快速的mmu模拟的方法和装置、以及全系统模拟器 |
Also Published As
Publication number | Publication date |
---|---|
EP3486788A1 (en) | 2019-05-22 |
EP2537098A2 (en) | 2012-12-26 |
EP2537098B1 (en) | 2018-11-21 |
JP2013519965A (ja) | 2013-05-30 |
KR20130009781A (ko) | 2013-01-23 |
WO2011103184A2 (en) | 2011-08-25 |
WO2011103184A3 (en) | 2012-10-11 |
US20110202724A1 (en) | 2011-08-18 |
JP5650766B2 (ja) | 2015-01-07 |
US8244978B2 (en) | 2012-08-14 |
KR101623514B1 (ko) | 2016-05-23 |
CN103026348A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103026348B (zh) | Iommu架构的tlb支持 | |
JP5911985B2 (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
KR102448124B1 (ko) | 가상 주소들을 사용하여 액세스된 캐시 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
US10133677B2 (en) | Opportunistic migration of memory pages in a unified virtual memory system | |
US9430400B2 (en) | Migration directives in a unified virtual memory system architecture | |
US20040117587A1 (en) | Hardware managed virtual-to-physical address translation mechanism | |
US20040117588A1 (en) | Access request for a data processing system having no system memory | |
US20160357482A1 (en) | Migrating pages of different sizes between heterogeneous processors | |
US7003630B1 (en) | Mechanism for proxy management of multiprocessor storage hierarchies | |
US6748496B1 (en) | Method and apparatus for providing cacheable data to a peripheral device | |
US10339054B2 (en) | Instruction ordering for in-progress operations | |
US7734873B2 (en) | Caching of microcode emulation memory | |
US7017024B2 (en) | Data processing system having no system memory | |
US20040117590A1 (en) | Aliasing support for a data processing system having no system memory | |
US11726693B2 (en) | Migrating pages of memory accessible by input-output devices | |
US20040117583A1 (en) | Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme | |
US20040117589A1 (en) | Interrupt mechanism for a data processing system having hardware managed paging of disk data | |
Bhattacharjee et al. | Heterogeneity and Virtualization | |
KR20220058934A (ko) | 변환 색인 버퍼 무효화 |
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 |