CN101203838B - 直接存储器存取转换的地址窗口支持 - Google Patents
直接存储器存取转换的地址窗口支持 Download PDFInfo
- Publication number
- CN101203838B CN101203838B CN2006800221864A CN200680022186A CN101203838B CN 101203838 B CN101203838 B CN 101203838B CN 2006800221864 A CN2006800221864 A CN 2006800221864A CN 200680022186 A CN200680022186 A CN 200680022186A CN 101203838 B CN101203838 B CN 101203838B
- Authority
- CN
- China
- Prior art keywords
- dma
- address
- project
- circuit
- remaps
- 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
- 238000013519 translation Methods 0.000 title claims abstract description 41
- 238000006243 chemical reaction Methods 0.000 claims description 55
- 238000003860 storage Methods 0.000 claims description 46
- 238000000034 method Methods 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 26
- 230000033228 biological regulation Effects 0.000 claims description 10
- 230000014616 translation Effects 0.000 abstract description 36
- 230000007246 mechanism Effects 0.000 abstract description 11
- 230000008569 process Effects 0.000 description 16
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 210000001503 joint Anatomy 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000003319 supportive effect Effects 0.000 description 2
- 241000196324 Embryophyta Species 0.000 description 1
- 241000116629 Ferula sumbul Species 0.000 description 1
- ZKGNPQKYVKXMGJ-UHFFFAOYSA-N N,N-dimethylacetamide Chemical compound CN(C)C(C)=O.CN(C)C(C)=O ZKGNPQKYVKXMGJ-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000005622 photoelectricity Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
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
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
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)
- Bus Control (AREA)
Abstract
本文公开了一种设备。该设备包括重新映射电路以便于一个或多个I/O装置为直接存储器存取(DMA)事务处理存取存储器装置。重新映射电路包括一种转换机制以经基于地址窗口的转换对I/O DMA事务处理执行存储器地址转换。
Description
技术领域
本发明一般涉及微处理器,更具体地说,本发明涉及输入/输出(I/O)虚拟化。
背景技术
随着微处理器体系结构变得越来越复杂以支持高性能应用程序,I/O管理提出了挑战。解决I/O管理问题的现有技术有许多缺点。一种技术使用只有软件的I/O虚拟化来支持虚拟机(VM)I/O。此技术具有有限的功能、性能和鲁棒性。
客户操作系统(OS)和应用程序所看到的功能受VM监控器(VMM)软件中模拟的虚拟装置支持的功能限制。客户I/O操作由VMM捕获,并在提交到基础物理装置硬件前被代理或模拟,从而导致性能差。
另外,硬件装置的所有或部分装置驱动程序作为部分特权VMM软件运行,这可能对平台的整体鲁棒性有负面影响。使用专用转换结构的技术只能支持特定的装置或有限的使用模型。通用I/O存储器管理部件只对大小或复杂性有限的I/O虚拟地址空间提供支持。
发明内容
根据第一实施例,本发明提供了一种设备,包括重新映射电路,以便于一个或多个输入/输出I/O装置使用直接存储器存取DMA事务来访问存储器装置,所述重新映射电路包括第一转换机构,以通过基于地址窗口的转换来对I/O DMA事务执行存储器地址转换,其中第一转换机构包括地址窗口指针表AWPTR以执行所述基于地址窗口的转换,以及所述AWPTR包括至少一个项目,所述项目包含至少一个地址窗口AW的地址窗口页表AWPT的基址。
根据第二实施例,本发明提供了一种方法,包括:
在重新映射电路从请求输入/输出I/O装置接收直接存储器存取DMA请求;
确定是否容许完成所述DMA请求;
如果容许所述存取,则在存储器中将装置物理地址DPA转换成主机物理地址HPA;
找到所述DPA的相关联地址窗口AW指针表项目索引;以及
在所述索引处查找所述AW指针表项目。
根据第三实施例,本发明提供了一种计算机系统,包括:
主存储器装置;
一个或多个输入/输出I/O装置,通过直接存储器存取DMA来访问所述主存储器装置;以及
存储器控制器,耦合到所述主存储器装置,具有DMA重新映射电路,以便于所述一个或多个I/O装置访问所述主存储器装置,所述DMA重新映射电路包括:
第一转换机构,通过基于地址窗口的转换来对I/O DMA事务执行存储器地址转换;
其中第一转换机构包括表AWPTR以执行所述基于地址窗口的转换,所述AWPTR包括至少一个项目,所述项目包括AW的AWPT的基址。
附图说明
通过下面给出的详细说明和本发明各种实施例的附图,将更全面地理解本发明。然而,附图不应视为将本发明局限于具体实施例,而只是为了便于说明和理解。
图1示出计算机系统的一个实施例;
图2示出输入/输出(I/O)装置指定的一个实施例;
图3示出使用直接存储器存取(DMA)重新映射的虚拟化的一个实施例;
图4示出I/O地址转换的一个实施例;
图5示出DMA重新映射结构的一个实施例;
图6示出地址窗口页表项目格式的一个实施例;
图7示出基于地址窗口的DMA地址转换进程的一个实施例;
图8示出地址窗口表格式的一个实施例;
图9示出地址窗口刷新寄存器的一个实施例;
图10示出地址窗口刷新寄存器格式的一个实施例;
图11示出DMA转换的一个实施例的流程图;以及
图12示出计算机系统的另一个实施例。
具体实施方式
下面描述实现基于地址窗口的转换的直接存储器存取(DMA)转换体系结构。在说明书中提到“一个实施例”或“实施例”是指结合该实施例描述的特定特性、结构或特征包括在本发明的至少一个实施例中。在说明书中各个位置出现的短语“在一个实施例中”不一定全部都指同一实施例。
在下面的描述中,阐述了许多细节。然而,本领域的技术人员将明白,本发明可在没有这些具体细节的情况下实施。其它情况下,熟知的结构和装置以框图形式显示,而不是详细显示,以免混淆本发明。
图1示出计算机系统100的一个实施例。计算机系统100包括处理器110、处理器总线120、存储器控制中心(MCH)130、系统存储器140、输入/输出控制中心(ICH)150、外围总线155、海量存储器装置/接口170以及输入/输出装置1801到180K和185。注意,系统100可包括比上述更多或更少的单元。
处理器110表示任一类型体系结构的中央处理器,诸如嵌入式处理器、移动处理器、微控制器、数字信号处理器、超标量处理器、多线程处理器、多核处理器、向量处理器、单指令多数据(SIMD)计算机、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超长指令字(VLIW)或混合体系结构。
处理器总线120提供接口信号,以允许处理器110与例如MCH 130等其它处理器或装置通信。处理器总线120可支持单处理器或多处理器配置。处理器总线120可以为并行、顺序、流水线、异步、同步或其任意组合。
MCH 130提供存储器和输入/输出装置诸如系统存储器140和ICH150的控制和配置。MCH 130可集成到芯片组中,该芯片组集成了多个功能,诸如隔离执行模式、主机到外围总线接口、存储器控制。MCH130直接或经ICH 150对接到外围总线155。为清晰起见,未显示所有外围总线。预期系统100还可包括诸如外围组件互连(PCI)、PCIExpress、加速图形端口(AGP)、工业标准体系结构(ISA)总线和通用串行总线(USB)等外围总线。
MCH 130包括直接存储器存取(DMA)重新映射电路135。在I/O事务中,DMA重新映射电路135将I/O装置(例如,I/O装置1801到180K和185之一)映射到系统存储器140中的一个域。I/O事务一般为DMA请求。DMA重新映射电路135提供硬件支持,以便于或增强I/O装置指定和/或管理。DMA重新映射电路135还可包括在除MCH 130外的任何芯片组中,诸如ICH 150。它也可部分或完全实现在处理器110中,或者实现为单独的处理器或与其它处理器或装置的协处理器。
系统存储器140存储系统代码和数据。系统存储器140一般用动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)实现。系统存储器可包括实现本发明一个实施例的程序代码或代码段。系统存储器包括操作系统(OS)142或一部分OS或内核及I/O驱动程序145。OS142或I/O驱动程序145中的任一单元可通过硬件、软件、固件、微代码或其任意组合实现。系统存储器140还可包括未示出的其它程序或数据。
ICH 150具有设计为支持I/O功能的多个功能。ICH 150也可与MCH 130一起或与其分开集成到芯片组中,以执行I/O功能。ICH 150可包括多个接口和I/O功能,诸如PCI总线接口,以对接到外围总线155、处理器接口、中断控制器、直接存储器存取(DMA)控制器、电源管理逻辑、计时器、系统管理总线(SMBus)、通用串行总线(USB)接口、海量存储器接口、低引脚数(LPC)接口等。
海量存储器装置/接口170提供诸如代码、程序、文件、数据、应用程序及操作系统等档案信息的存储。海量存储器装置/接口170可对接到压缩盘(CD)ROM 172、数字视频/多功能盘(DVD)173、软盘驱动器174、硬盘驱动器176以及任何其它磁或光存储装置。海量存储器装置/接口170提供一种读取机器可存取介质的机制。机器可存取介质可包含执行如下所述任务的计算机可读程序代码。
I/O装置1801到180K可包括执行包括DMA请求等I/O功能的任何I/O装置。它们对接到外围总线155。I/O装置1801到180K的示例包括用于输入装置(例如,键盘、鼠标、跟踪球、定点装置)的控制器、媒体卡(例如,音频、视频、图形)、网卡以及任何其它外围控制器。I/O装置185直接对接到ICH 150。外围总线155是支持I/O事务的任何总线。外围总线155的示例包括PCI总线、PCI Express等。
本发明一个实施例的单元可通过硬件、固件、软件或其任意组合实现。术语“硬件”一般指具有物理结构的单元,诸如电、电磁、光、光电、机械、机电部件等。术语“软件”一般指逻辑结构、方法、过程、程序、例程、进程、算法、公式、函数、表达式等。术语“固件”一般指在硬件结构(例如,闪存、只读存储器、可擦除只读存储器)中实现或包含的逻辑结构、方法、过程、程序、例程、进程、算法、公式、函数、表达式等。固件的示例可包括微代码、可写控制存储器、微程序设计结构。当用软件或固件实现时,本发明实施例的单元实质上是执行必需任务的代码段。软件/固件可包括执行在本发明一个实施例中所述操作的实际代码,或者模拟或模仿该操作的代码。程序或代码段可存储在处理器或机器可存取介质中,或者通过传输介质,由载波中包含的计算机数据信号或由载波调制的信号传输。“处理器可读或可存取介质”或“机器可读或可存取介质”可包括任何可存储、传输或传送信息的介质。处理器可读或机器可存取介质的示例包括电子电路、半导体存储器件、只读存储器(ROM)、闪存、可擦除ROM(EROM)、软盘、压缩盘(CD)ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可包括任何可通过诸如电子网络信道、光纤、空气、电磁、RF链路等传输介质传播的信号。代码段可经诸如因特网、内联网等计算机网络下载。机器可存取介质可包含在制品中。机器可存取介质可包括当由机器存取时使机器执行下文所述操作的数据。机器可存取介质还可包括嵌入其中的程序代码。程序代码可包括执行下文所述操作的机器可读代码。术语“数据”这里是指为机器可读目的而编码的任何类型信息。因此,它可包括程序、代码、数据、文件等。
所有或部分本发明实施例可通过硬件、软件或固件或其任意组合实现。硬件、软件或固件单元可具有相互耦合的几个模块。硬件模块通过机械、电、光、电磁或任何物理连接耦合到另一模块。软件模块通过函数、过程、方法、子程序或子例程调用、跳转、链接、参数、变量及变元传递、函数返回等耦合到另一模块。软件模块耦合到另一模块以接收变量、参数、变元、指针等,和/或生成或传递结果、更新的变量、指针等。固件模块通过上述硬件和软件耦合方法的任意组合耦合到另一模块。硬件、软件或固件模块可耦合到另一硬件、软件或固件模块中的任一个。模块还可以是与运行在平台上的操作系统交互作用的软件驱动程序或接口。模块还可以是配置、设置、初始化、向硬件装置发送数据和从硬件装置接收数据的硬件驱动程序。设备可包括硬件、软件和固件模块的任意组合。
本发明的一个实施例可描述为通常示为流程图、流程框图、结构图或框图的进程。虽然流程图可将操作描述为顺序进程,但其中许多操作可并行或并发执行。另外,操作的顺序可重新布置。进程在其操作完成时终止。进程可对应于方法、程序、过程、制造或加工方法等。
在标准计算平台中,I/O子系统组件用作单个域的一部分,并且由操作系统软件管理。本发明的一个实施例提供了将计算平台中的I/O装置指定给多个域所需的硬件支持。
域被抽象地定义为平台中的隔离环境,主机物理存储器的子集被分配给域。主机物理存储器包括在系统存储器140中。允许对分配给域的物理存储器进行直接存取的I/O装置被称为域的指定装置。域的隔离属性是通过阻止未指定给它的资源存取其物理存储器而实现的。通过确保所有I/O装置都指定给某个域(可能是默认域),并通过限制每个指定装置只存取分配给其域的物理存储器,可支持多个隔离的域。域可共享资源(例如,存储器、I/O装置),或者完全彼此隔离,这凭执行分区的软件或其它实体自行处理。
每个域具有物理存储器视图或物理地址空间,这可能与物理存储器系统视图不同。由域的资源用于存取其物理地址空间的地址称为客户物理地址(GPA)。主机物理地址(HPA)是指用于存取存储器的系统物理地址。如果域的GPS中的一个或多个必须转换到新的HPA,而新的HPA与存取其分配的系统物理存储器的GPA不同,则域被认为已重新定位。如果域的所有客户物理地址与用于存取其分配的系统物理存储器的主机物理地址都相同,则域被称为未重新定位。已重新定位和未重新定位的域均可分配有可用系统物理存储器的子集,并且可被阻止存取存储器的某些部分。物理存储器保护和分区需要一种物理地址转换机制和一种保护机制,这些机制可验证由包括处理器和I/O装置等域的指定装置生成的客户物理地址,并将它转换成有效的主机物理地址。DMS重新映射电路135提供这种支持。
为将I/O装置指定给域,对于来自平台中所有I/O装置的DMA请求应用物理地址转换和保护。为简明起见,I/O装置DMA请求的物理地址转换功能称为DMA重新映射。在下面的论述中,应理解,术语“重新映射”除了将地址从一个地址空间映射到另一个地址空间(例如,客户物理地址到主机物理地址)外,还包括保护机制。
图2示出了I/O装置指定的一个实施例。I/O装置指定是将I/O装置映射到系统存储器140中的域。映射由DMA重新映射电路135支持。例如,装置A 210映射到系统存储器140中的域1240。域1可具有用于装置A 210的两个驱动程序242和244。
DMA映射电路135包括寄存器组220、DMA重新映射结构222和逻辑电路224。寄存器组220包括多个寄存器,其提供由DMA重新映射结构222、逻辑电路224和I/O装置的程序或驱动程序使用的控制或状态信息。DMA重新映射结构222提供在适当域中客户物理地址到主机物理地址的重新映射或地址转换中使用的基本结构、存储器或表。逻辑电路224包括执行重新映射或地址转换操作和其它对接功能的电路。DMA重新映射电路135可具有不同的实现,以支持不同的配置和为重新映射或地址转换操作提供不同的能力。
使用DMA重新映射电路135的I/O装置指定和/或管理提供了多种使用或应用。两个有用的应用是OS鲁棒性应用和虚拟化应用。
OS鲁棒性应用:域隔离对于操作系统软件具有多种使用。例如,OS可在存储器中定义包含其关键代码和数据结构的域,并限制系统中所有I/O装置存取此域。这使OS可限制装置驱动程序通过不正确的装置编程而对数据和代码造成错误或无意的破坏,或者限制某些种类的装置故障,从而改进其鲁棒性。或者,OS可允许可信装置的子集存取存储器中的关键代码和数据结构,但不允许从其它装置存取。
在另一种使用中,OS可使用域更好地管理从传统32位PCI装置到高位存储器(4GB以上)的DMA。这是通过如下方式实现的:将32位装置分配给一个或多个域,并将I/O物理地址转换机制编程为将DMA从这些装置重新映射到高位存储器。没有这种支持,软件必须借助于通过OS弹跳缓冲器进行数据复制。
在一个更有关的使用中,OS可通过创建多个域并将一个或多个I/O装置指定给各个域来管理I/O。在这种使用中,装置驱动程序显式地向OS登记其I/O缓冲器,并且OS将这些I/O缓冲器指定给特定域,使用硬件来实施DMA域保护。在此模型中,OS将I/O地址转换和保护机制用作I/O存储器管理部件(I/O MMU)。
虚拟化应用:虚拟化技术允许在单个系统上创建一个或多个虚拟机(VM)。每个VM可利用基础物理硬件资源同时运行。虚拟机允许多个操作系统实例运行在同一处理器上,提供了诸如系统强化、传统迁移、活动分区和安全性等优点。
虚拟化体系结构一般涉及两个主要种类的软件组件:(a)虚拟机监控程序(VMM)和(b)虚拟机(VM)。VMM软件层在最高特权级运行,并具有基础系统硬件的全部所有权。VMM允许VM共享基础硬件,并且还提供VM之间的隔离。
通过使用DMA重新映射电路135将I/O装置直接指定给VM,可消除I/O虚拟化只有软件方法的限制。用装置的直接指定,指定I/O装置的驱动程序只运行在其指定到的VM中,并被允许直接与装置硬件交互作用,而不捕获到VMM。硬件支持实现了DMA重新映射,而在VMM中无需装置特定的知识。
在此模型中,VMM将其自身限制为控制功能,其中它显式地进行建立和拆毁对VM的装置指定。不同于在I/O虚拟化只有软件方法的情况下对客户I/O存取捕获到VMM,VMM只需要客户I/O存取捕获,以保护影响系统功能的特定资源,诸如装置配置空间存取、中断管理等。
为支持I/O装置到VM的直接指定,VMM从I/O装置管理DMA。VMM可将其自身映射到一个域,并将每个VM映射到一个独立的域。I/O装置可被指定给域,并且由DMA重新映射电路135提供的物理地址转换硬件可用于允许从I/O装置只到指定给指定VM域的物理存储器的DMA。对于在物理存储器中可重新定位的VM(即,GPA与HPA不同),DMA重新映射电路135可编程为进行必需的GPA到HAP转换。
用I/O装置指定的硬件支持,VMM实现可选择只有软件的I/O虚拟化方法与直接装置指定的组合,以便向VM呈现I/O装置资源。
图3示出了使用DMA重新映射的虚拟化的一个实施例。虚拟化包括两个装置A 310和B 312、DMA重新映射电路135、VMM或宿主OS 320、VM0 340以及VMn 360。两个装置A 310和B 312是分别由两个VM 340和360支持的两个I/O装置。DMA重新映射电路135将这两个装置直接映射到相应的VM 340和360,无需VMM或宿主OS320的特定知识。支持的I/O装置和VM可更多或更少。
VMM或宿主OS 320为它在其上执行的平台或系统的基础硬件提供支持。VM 340和360具有类似的体系结构组件,但相互完全隔离。它们对接到VMM或宿主OS 320,以存取系统硬件。VM 340包括应用程序342和344。支持的应用程序可更多或更少。它具有客户OS 346和装置A驱动程序350。装置A驱动程序350是驱动、控制、对接或支持装置A 310的驱动程序。类似地,VM 360包括应用程序362和364。支持的应用程序可更多或更少。它具有客户OS 366和装置B驱动程序370。客户OS 366可与VM 340中的客户OS 346相同或不同。装置B驱动程序370是驱动、控制、对接或支持装置B 312的驱动程序。
由DMA重新映射电路135提供的DMA重新映射体系结构便于I/O装置指定到任意数量的域。每个域具有可与系统物理地址空间不同的物理地址空间。DMA重新映射提供来自I/O装置的DMA请求中的客户物理地址(GPA)到分配给其域的对应主机物理地址(HPA)的变换。
为支持它,平台可支持一个或多个I/O物理地址转换硬件部件。每个转换硬件部件支持源于其硬件范围内的I/O事务的重新映射。例如,桌面芯片组实现可显露单个DMA重新映射硬件部件,该部件转换在存储器控制中心(MCH)组件的所有I/O事务。具有一个或多个核芯片组组件的服务器平台可支持每个组件中的独立转换硬件部件,每个部件转换源于其I/O分级结构内的DMA请求。该体系结构支持这些硬件部件可共享系统存储器中的相同转换数据结构或者根据软件编程使用独立结构的配置。
芯片组DMA重新映射电路135将DMA请求中的地址视为客户物理地址(GPA)。DMA重新映射电路135可将地址转换功能应用于输入地址,以在诸如窥探处理器高速缓存或转发到存储器控制器等进一步硬件处理前,将它转换成主机物理地址(HPA)。
在虚拟化上下文中,由DMA重新映射电路135实现的地址转换功能取决于VMM支持的物理存储器管理。例如,在软件将主机物理存储器分配为连续区域的使用中,将GPA转换成HPA的DMA转换可以为简单的偏移相加。在VMM在页粒度管理物理存储器的使用中,DMA重新映射电路135可使用存储器常驻地址转换数据结构。
图4示出了I/O地址转换的一个实施例。I/O地址转换包括两个I/O装置1 410和2 412、DMA重新映射电路135、物理存储器420以及客户视图430。I/O装置1 410和2 412被指定给两个单独的域。它们执行到地址DMA_ADR的I/O请求或DMA请求。
DMA重新映射电路135将这两个装置映射到在物理存储器420中分配的对应域。物理存储器420被分区成存储器段422与424以及存储器段426与428。更多或更少的已分配存储器段可指定给一个或多个域。在图4中,存储器段422与424被指定给域1 422并对应于装置1 410,并且存储器段424与428被指定给域2 444并对应于装置1412。在图4所示的示例中,装置1 410映射到域1 422,并且装置2 412映射或指定到域2 428。
客户视图430是来自客户I/O装置的逻辑视图。它包括域1 442和域2 444。域1 442对应于物理存储器420中的两个存储器段422与424。域2 444对应于两个存储器段426与428。对于特定客户,域可以是物理存储器的客户视图430的已分配部分。每个域可被指定给一个或多个I/O装置。来自装置1 410的DMA_ADR地址被映射到位于域1 442从0到L的地址空间内的DMA_ADR1。类似地,来自装置2 412的DMA_ADR地址被映射到位于域2 444从0到K的地址空间内的DMA_ADR2。
负责创建和管理域的软件为两个域分配物理存储器420,并在DMA重新映射电路135中建立GPA到HPA地址转换功能。DMA重新映射电路135将装置410与412生成的GPA转换成适当的HPA。
图5示出了DMA重新映射结构222的一个实施例。DMA重新映射结构222接收源标识符510,并包括根表520、多个上下文表(显示了两个5300与530m)以及多个地址转换结构(显示了两个5400与540m)。重新映射结构222从I/O装置接收源标识符510和客户物理地址,并将指定域中的客户物理地址转换成主机物理地址。该转换可使用以分级结构方式布置的转换表执行。转换机制从根表520开始,并遍历或走过上下文表(例如,5300与530m)和地址转换结构(例如,5400与540m)。
在DMA重新映射电路135出现的I/O事务的请求方身份确定始发装置和始发I/O装置被指定到的域。源标识符510是标识I/O事务始发方的属性。DMA重新映射电路135可以实现特定方式确定事务的源标识符510。例如,一些I/O总线协议可将始发装置身份作为每个I/O事务的一部分提供。在其它情况下,诸如对于芯片组集成装置,可基于芯片组的体系结构或实现而暗示源标识符510。
对于PCI Express装置,源标识符510被映射到作为I/O事务标题一部分提供的请求方标识符。装置的请求方标识符包括由配置软件指定的其PCI总线/装置/功能编号,并唯一地标识发起I/O请求的硬件功能。在一个实施例中,源标识符510包括功能编号512、装置编号514和总线编号516。在图5所示的示例中,功能编号512是K位宽,装置编号514是L位宽,并且总线编号516是M位宽。总线编号516标识在其上生成I/O事务的总线。装置编号514标识在所标识总线上的特定装置。功能编号512标识I/O装置的特定功能。源标识符510用于索引或查找根表520和上下文表(例如,5300和530m)。在图5所示的示例中,通过DMA重新映射结构222的其路径被示为用于分别使用总线0和总线m的两个I/O事务。
对于PCI Express装置,根表520存储由源标识符510或源标识符510的总线编号516索引的根项目5250到5252^M-1。根项目用作顶层结构,以将特定总线上的装置映射到其相应的父域。根项目0 5250对应于使用总线0的I/O事务。根项目m 525m对应于使用总线m的I/O事务。根项目0 5250与525m分别指向上下文表5300与530m。在一个实施例中,这些项目提供对应上下文表的基地址。
上下文表530(例如,5300与530m)存储由根项目引用的上下文项目535(例如,5350与535m)。上下文项目535将I/O装置映射到其对应的域。装置编号514和功能编号512用于获得与I/O事务对应的上下文项目。在一个实施例中,它们形成索引以指向或引用由对应根项目引用的上下文表。在所有上下文表中有2M*2L*2K或2M+L+K个上下文项目。在一个实施例中,K=3,L=5,并且M=8,产生了总共64K个项目,组织成2M(28=256)个上下文表。在图4所示的示例中,用于两个I/O事务的两个上下文项目是上下文表5300中的上下文项目5350和上下文表530m中的上下文项目535m。上下文项目5350和535m分别指向地址转换结构5400和540m。
地址转换结构540(例如,5400与540m)提供使用对应于I/O事务的客户物理地址到主机物理地址的地址转换。每个地址转换结构可以为分别对应于使用多表、单表和基本/绑定转换的三种转换机制的多表550、单表560或基本/绑定570。在下面的描述中,使用常规页面大小4KB。正如本领域的技术人员所熟知的一样,还可使用任何其它大小。
为提供DMA重新映射电路135的软件灵活控制,DMA重新映射电路135具有图2所示的寄存器组220中包括的多个寄存器。寄存器组220通过基地址寄存器(BAR)位于主机物理地址空间中。转换硬件BAR以实现相关方式显露给软件。在芯片组集成装置之一诸如存储器控制器装置中,这可显露为PCI配置空间寄存器。在一个实施例中,BAR提供最小4K地址窗口。寄存器组220中的寄存器可具有多个字段。字段可被断言或否定。在字段只由单个位组成时,断言表示该位被设为定义的逻辑状态(例如,真,逻辑1),并且否定表示该位被复位为定义的逻辑状态,该状态是断言状态的互补(例如,假,逻辑0)。在下文中,断言或否定状态的使用是任意的。字段可被断言以指示第一状态,并且可被否定以指示第二状态,或反之亦然。
寄存器中的字段可由DMA重新映射电路135和/或软件进行编程、初始化或配置。它也可对应于专用硬件电路或由数据结构、函数、例程或方法实现的功能。在下文中,字段被分组到寄存器中。在下面寄存器中这些字段或位的分组、格式化或组织是为了便于说明。可使用其它方式分组、格式化或组织这些字段。字段也可复制在不止一个寄存器中。寄存器可具有比所述字段更多或更少的字段。另外,寄存器可以多种方式实现,包括作为存储单元或内存单元。
上述DMA重新映射体系结构包括如图5所示使用单级或多级页表(TLB)转换的DMA。此类体系结构适用于传统软件使用(例如,其中OS或VMM不知道驱动程序DMA使用)。此外,单级或多级页表转换可为大多数I/O装置提供良好到一般的DMA性能(根据DMA吞吐量测量)。然而,此类系统具有限制。
一个限制是,对于其性能取决于保证的最坏情况(等时)DMA性能的I/O装置而言,由多个顺序存储器存取为有关TLB未中的走页而引入的最坏情况等待时间是禁止的。这些类型装置的示例包括支持等时DMA的PCI Express装置(如高性能音频控制器)、图形装置的显示引擎以及USB控制器装置。
另一个限制是,对于可能更了解驱动程序DMA使用的非传统软件使用(例如,较新的OS和VMM),当前体系结构未提供任何部件使软件提供DMA使用提示,以改进DMA重新映射性能。
最后,用于走页的存储器存取等待时间例如随着平台配置移到在处理器复合体内实现的存储器控制器而增大。
基于地址窗口的DMA地址转换
基于上述DMA重新映射体系结构的限制,DMA重新映射电路135配置为除了基于单级和多级页表的地址转换外,还支持基于地址窗口的地址转换。因此,每个DMA重新映射电路135可支持多个地址窗口,其中所支持的地址窗口的确切数量随硬件实现而变化。在一个实施例中,系统固件为每个DMA重新映射电路135指定一个地址窗口(AW)范围(开始和结束AW编号)。
在又一实施例中,除了现有重新映射电路135高速缓存结构外,芯片组还支持附加的高速缓存结构。这些附加的结构称作为地址窗口转换而实现的AWPTR表。下面将更详细地论述AWPTR表。
根据一个实施例,装置物理地址(DPA)是指由I/O装置在其DMA请求中规定的目标地址。在一个实施例中,DPA地址空间跨越计算机系统中的所有I/O装置,并再分成多个AW。在此类实施例中,每个AW覆盖DPA空间的连续2MB区域。例如,AW0可覆盖DPA 0到2MB,AW1可覆盖DPA 2MB到4MB等。给定任一DPA,相关联的AW编号通过检查DPA中的位确定(例如,AW#:=DPA[63:21])。
在又一实施例中,每个AW由存储器中称为地址窗口页表(AWPT)的DPA到HPA转换结构描述。AWPT中的项目称为AW页表项目(AWPTE)。每个AWPTE为AW内的4KB区域(称为槽)提供转换。因此,在一个AW中有512个槽,并且与每个AW相关联的AWPT为4KB大小(具有512个AWPTE)。根据一个实施例,AWPTE为64位大小,并具有如图6所示的格式。在一个实施例中,AWPTE包括存取控制位,诸如规定是否允许对用于存取AWPTE的DPA进行读访问和/或写访问的位(“读”和“写”)。在一个实施例中,地址字段(“ADDR”)规定DPA中的位子集到HPA的映射。在一个实施例中,其余位(例如,位[11:0])可不经修改而从DAP传递到HPA。许多其它配置是可能的,并不限制本发明的范围。
系统软件可将一个或多个AW绑定到特定I/O装置。为此,驱动程序向绑定到装置的AW登记其DMA缓冲器(例如,在主机物理地址空间中)以生成DPA映射。装置的驱动程序使用其DPA向装置硬件标识其目标缓冲器。来自装置的DMA请求中的地址是由重新映射电路135基于绑定到装置的AW和地址窗口的DPA到HPA转换而转换的DPA。
图7示出了在有地址窗口的情况下转换DMA地址的进程的一个实施例。图7示出了使用AWPT和AWPTR表提供转换。在一个实施例中,重新映射电路135中的AWPTR表具有与其重新映射电路135支持的地址窗口数量一样多的项目。AWPTR表中的项目与在其重新映射电路135上配置的特定AW相关联。
此外,每个AWPTR表项目包括特定AW的HPA到AWPT的基址。每个AWPTR表项目标记有相关联AW被分配到的I/O装置的装置ID。在一个实施例中,AWPTR表结构经过存储器映射来允许软件修改其中的项目。AWPTR表的基址称为AWPTR_TABLE_BASE。AWPTR表项目称为AWPTR,并且高速缓存中特定索引处的特定项目被标注为AWPTR[INDEX]。
图8示出了实现两个重新映射电路135的芯片组的AWPTR表结构的一个实施例,其中每个电路配置为支持两个AW(分别为4到5和6到7)。根据一个实施例,虽然AWPTR表存储在寄存器中,但表对软件呈现为常驻在由AWPTR_TABLE_BASE规定的地址。
此外,在一个实施例中,AWPTR表中的每个项目包括有效、标记和数据字段。有效字段指示项目是否有效。在另一实施例中,不存在有效位,并且重新映射电路135将所有AWPTR表项目视为有效。标记字段指示项目关联到的特定装置ID。例如,在图8中,软件已将AW 4绑定到具有装置ID 11的I/O装置,并且将AW 6绑定到具有装置ID 18的I/O装置。在一个实施例中,始发存取(例如,确定装置ID)的装置标识可包括有关总线、装置和装置内功能的信息。DMA请求的始发方在本文称为“装置”或“请求I/O装置”,并由“装置ID”标识。然而,应理解,在其它实施例中,单个物理装置可由一个或多个装置ID标识。
根据又一实施例,重新映射电路135支持称为AW_FLUSH寄存器的一组16位存储器映射寄存器。图9示出了AW_FLUSH刷新寄存器的一个实施例。AW_FLUSH刷新寄存器实现为一种机制,以便软件使可由重新映射电路135的一个或多个单元高速缓存的转换无效。在一个实施例中,为重新映射电路135支持的每个AW实现一个AW_FLUSH刷新寄存器。
在一个实施例中,此存储器映射寄存器范围的基址(AW_FLUSH_BASE)由平台固件初始化。例如,如图9所示,如果芯片组组件支持两个重新映射电路135,并且重新映射电路135分别支持AW 4到5和6到7,则芯片组支持总共4个AW_FLUSH寄存器。图10示出了用于每个AW_FLUSH寄存器的格式的一个实施例。
再参照图7,如果在用于I/O装置的上下文项目中已规定,则发生基于地址窗口的转换。在一个实施例中,上下文项目可由重新映射电路135高速缓存,排除了存取存储器以作出此确定的需要。在又一实施例中,上下文项目高速缓存结构可由软件直接存取,使软件可以预填充高速缓存以减少第一次存取上下文项目的等待时间。这样,软件能保证特定装置的最坏情况存储器存取行为限于单次存储器存取,如下所述。
如果规定基于地址窗口的转换,则重新映射电路135进行检验以确定DMA请求中的DPA所属的AW是否为绑定到规定装置的AW之一。根据一个实施例,重新映射电路135通过先找到对应于DMA请求中DPA的地址窗口编号(AW#)(例如,通过AW#=DPA[(HAW-1):21]计算得出,其中HAW是系统的支持物理地址宽度)来执行此检验。
随后,确定该AW#是否分配给转换该DMA请求的重新映射电路135。如果AW#未分配给重新映射电路135,则发生转换故障。在一个实施例中,转换故障可生成处理器的中断。在另一实施例中,管理重新映射电路135的软件负责定期轮询重新映射电路135,以确定是否已发生了任何转换故障。如果AW#有效,则找到相关联AW表项目索引(通过INDEX=AW#-START_AW计算得出)。接着,存取在AWPTR[INDEX]处的AW表项目,并确定它是否标记有DMA请求中的装置ID。如果检验成功,则AWPTR值指示AW页表的基址。DPA[21:12]字段中的值用于取AW页表中的适当AWPTE。
基于AWPTE的编程,DMA请求被完成到在AWPTE中规定的HPA,或者它被阻止。AWPTE处理类似于在重新映射电路135中如何为所述的多级I/O页表处理叶PTE。在一个实施例中,如果转换成功,它由重新映射电路135在I/O转换后备缓冲器(I/O TLB)高速缓存。
如上所述,除了基于单级和多级页表的地址转换外,重新映射电路135还执行基于地址窗口的转换。图11是一个流程图,示出了重新映射电路135执行基于地址窗口的转换和基于单级和多级页表的地址转换的操作的一个实施例。
在处理框1110,I/O装置生成DMA请求。在处理框1120,DMA请求经重新映射电路135以常规方式处理。在判定框1130,确定在I/OTLB中是否找到在DMA请求中规定的地址的转换(例如,标记有事务中的装置ID)。如果在I/O TLB中找到了在DMA请求中规定的地址的转换,则在处理框1140,完成转换而无需任何存储器存取。这包括可使用单级或多级页表或通过地址窗口转换的DMA。
如果在I/O TLB中未找到在DMA请求中规定的地址的转换(例如,检测到未中),则在处理框1150,查找上下文高速缓存以确定装置的转换行为。在判定框1160,确定是否要通过单级或多级页表阻止或处理转换。如果要通过单级或多级页表阻止或处理转换,则在处理框1170,按照在如上参照图1-5所述的常规重新映射电路135体系结构中所述的处理该请求。然而,如果不通过单级或多级页表阻止或处理转换,则装置的上下文项目规定基于地址窗口的转换。因此,在处理框1180,按照如上参照图7所述的执行基于地址窗口的转换。
图12示出了计算机系统100的另一实施例。在此实施例中,芯片组包括与单独的MCH和ICH相对的单个控制中心1230。另外,存储器控制位于处理器110中。因此,系统存储器140耦合到处理器110。在一个实施例中,重新映射电路135包括在控制中心1230中。在另一实施例中,重新映射电路135包括在处理器110或系统存储器140中。
上述重新映射体系结构实现了类似于多级页表的4K粒度DMA地址转换,并仍提供了限制于与单个存储器查找相关联的开销的最坏情况性能保证。
尽管在阅读了上述说明后,本领域的技术人员将毫无疑问地明白本发明的许多变化和修改,但要理解,通过图示显示和描述的任何具体实施例决不可视为限制。因此,对各种实施例细节的引用无意限制权利要求书的范围,在其自身中只叙述了被视为本发明的那些特性。
Claims (22)
1.一种用于输入/输出I/O虚拟化的设备,包括重新映射电路,以便于一个或多个输入/输出I/O装置使用直接存储器存取DMA事务来访问存储器装置,所述重新映射电路包括第一转换机构,以通过基于地址窗口的转换来对I/O DMA事务执行存储器地址转换,其中第一转换机构包括地址窗口指针表AWPTR以执行所述基于地址窗口的转换,以及所述AWPTR包括至少一个项目,所述项目包含至少一个地址窗口AW的地址窗口页表AWPT的基址。
2.如权利要求1所述的设备,还包括第二转换机构以通过单级页表和多级页表中至少一个来对I/O DMA事务执行存储器地址转换。
3.如权利要求1所述的设备,其中每个AWPTR项目标记有指示相关联AW被分配到的I/O装置的装置ID。
4.如权利要求3所述的设备,其中所述装置ID还包括指示总线、I/O装置和所述I/O装置内功能中至少一项的信息。
5.如权利要求1所述的设备,其中每个AWPT项目为所述AW内的4KB区域提供转换。
6.如权利要求1所述的设备,其中每个AWPT项目包括存取控制位,所述存取控制位规定是否允许对用于存取所述AWPT项目的装置物理地址进行读访问或写访问。
7.一种用于输入/输出I/O虚拟化的方法,包括:
在重新映射电路从请求输入/输出I/O装置接收直接存储器存取DMA请求;
确定是否容许完成所述DMA请求;
如果容许完成所述DMA请求,则在存储器中将装置物理地址DPA转换成主机物理地址HPA;
找到所述DPA的相关联地址窗口AW指针表项目索引;以及
在所述索引处查找所述AW指针表项目。
8.如权利要求7所述的方法,其中确定是否容许完成所述DMA请求包括:
计算与所述DPA相关联的被请求地址窗口AW;
确定所述被请求AW是否绑定到所述重新映射电路;以及
确定所述被请求AW是否绑定到所述请求I/O装置。
9.如权利要求8所述的方法,其中如果确定所述被请求AW未绑定到所述请求I/O装置,则发生转换故障。
10.如权利要求8所述的方法,其中如果确定所述被请求AW未绑定到所述重新映射电路,则发生转换故障。
11.如权利要求7所述的方法,还包括确定所述AW指针表项目是否标记有对应于所述请求I/O装置的装置ID。
12.如权利要求7所述的方法,还包括存取存储器中与所述AW指针表项目和所述DPA相关联的AW页表项目AWPTE。
13.如权利要求12所述的方法,还包括使用所述AWPTE计算与所述DPA相关联的所述HPA。
14.如权利要求13所述的方法,还包括:
基于所述AWPTE中至少一个容许位和所述DMA请求的类型,确定是否允许完成所述DMA请求;以及
如果在所述至少一个容许位不允许所述DMA请求的类型,则阻止完成所述DMA请求。
15.如权利要求7所述的方法,还包括高速缓存所完成的转换。
16.一种计算机系统,包括:
主存储器装置;
一个或多个输入/输出I/O装置,通过直接存储器存取DMA来访问所述主存储器装置;以及
存储器控制器,耦合到所述主存储器装置,具有DMA重新映射电路,以便于所述一个或多个I/O装置访问所述主存储器装置,所述DMA重新映射电路包括:
第一转换机构,通过基于地址窗口的转换来对I/O DMA事务执行存储器地址转换;
其中第一转换机构包括地址窗口指针表AWPTR以执行所述基于地址窗口的转换,所述AWPTR包括至少一个项目,所述项目包括至少一个地址窗口AW的地址窗口页表AWPT的基址。
17.如权利要求16所述的计算机系统,还包括第二转换机构,以通过单级页表和多级页表中至少一个来对I/O DMA事务执行存储器地址转换。
18.如权利要求16所述的计算机系统,其中所述主存储器装置再分成至少一个地址窗口AW。
19.如权利要求18所述的计算机系统,其中所述主存储器装置还包括AW页表AWPT,所述AWPT定义装置物理地址DPA到主机物理地址HPA的转换。
20.如权利要求19所述的计算机系统,其中所述AWPT包括至少一个AW页表项目AWPTE,所述AWPTE为所述AW内的至少一个地址提供转换。
21.如权利要求18所述的计算机系统,其中所述至少一个AW中的每个被绑定到一个I/O装置。
22.如权利要求16所述的计算机系统,其中每个AWPTR项目标记有指示相关联AW被分配到的I/O装置的装置ID。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/157,675 | 2005-06-21 | ||
US11/157,675 US20060288130A1 (en) | 2005-06-21 | 2005-06-21 | Address window support for direct memory access translation |
PCT/US2006/024515 WO2007002425A1 (en) | 2005-06-21 | 2006-06-20 | Address window support for direct memory access translation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101203838A CN101203838A (zh) | 2008-06-18 |
CN101203838B true CN101203838B (zh) | 2010-06-23 |
Family
ID=36992652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800221864A Active CN101203838B (zh) | 2005-06-21 | 2006-06-20 | 直接存储器存取转换的地址窗口支持 |
Country Status (7)
Country | Link |
---|---|
US (2) | US20060288130A1 (zh) |
KR (1) | KR101060395B1 (zh) |
CN (1) | CN101203838B (zh) |
DE (1) | DE112006001642T5 (zh) |
GB (1) | GB2441084A (zh) |
TW (1) | TWI363967B (zh) |
WO (1) | WO2007002425A1 (zh) |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8706942B2 (en) * | 2004-12-29 | 2014-04-22 | Intel Corporation | Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices |
US7756943B1 (en) * | 2006-01-26 | 2010-07-13 | Symantec Operating Corporation | Efficient data transfer between computers in a virtual NUMA system using RDMA |
US7739474B2 (en) * | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US7426627B2 (en) * | 2006-03-10 | 2008-09-16 | Microsoft Corporation | Selective address translation for a resource such as a hardware device |
US7840398B2 (en) * | 2006-03-28 | 2010-11-23 | Intel Corporation | Techniques for unified management communication for virtualization systems |
US7685371B1 (en) * | 2006-04-19 | 2010-03-23 | Nvidia Corporation | Hierarchical flush barrier mechanism with deadlock avoidance |
TWI334592B (en) * | 2006-10-26 | 2010-12-11 | Via Tech Inc | Chipset, northbridge and disk data access method |
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 |
US7707383B2 (en) | 2006-11-21 | 2010-04-27 | Intel Corporation | Address translation performance in virtualized environments |
US7685401B2 (en) | 2006-12-27 | 2010-03-23 | Intel Corporation | Guest to host address translation for devices to access memory in a partitioned system |
US8677457B2 (en) | 2007-02-09 | 2014-03-18 | Marvell World Trade Ltd. | Security for codes running in non-trusted domains in a processor core |
US8250254B2 (en) * | 2007-07-31 | 2012-08-21 | Intel Corporation | Offloading input/output (I/O) virtualization operations to a processor |
US8161243B1 (en) | 2007-09-28 | 2012-04-17 | Intel Corporation | Address translation caching and I/O cache performance improvement in virtualized environments |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
JP5028304B2 (ja) * | 2008-03-11 | 2012-09-19 | 株式会社日立製作所 | 仮想計算機システム及びその制御方法 |
US8918657B2 (en) | 2008-09-08 | 2014-12-23 | Virginia Tech Intellectual Properties | Systems, devices, and/or methods for managing energy usage |
US20100169673A1 (en) * | 2008-12-31 | 2010-07-01 | Ramakrishna Saripalli | Efficient remapping engine utilization |
US20100228943A1 (en) * | 2009-03-04 | 2010-09-09 | Freescale Semiconductor, Inc. | Access management technique for storage-efficient mapping between identifier domains |
US8473644B2 (en) * | 2009-03-04 | 2013-06-25 | Freescale Semiconductor, Inc. | Access management technique with operation translation capability |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US9213661B2 (en) * | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8468284B2 (en) | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8683108B2 (en) | 2010-06-23 | 2014-03-25 | International Business Machines Corporation | Connected input/output hub management |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8621112B2 (en) | 2010-06-23 | 2013-12-31 | International Business Machines Corporation | Discovery by operating system of information relating to adapter functions accessible to the operating system |
US8566480B2 (en) | 2010-06-23 | 2013-10-22 | International Business Machines Corporation | Load instruction for communicating with adapters |
US8549182B2 (en) | 2010-06-23 | 2013-10-01 | International Business Machines Corporation | Store/store block instructions for communicating with adapters |
US8504754B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Identification of types of sources of adapter interruptions |
US8650335B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Measurement facility for adapter functions |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US8918573B2 (en) | 2010-06-23 | 2014-12-23 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US8745292B2 (en) | 2010-06-23 | 2014-06-03 | International Business Machines Corporation | System and method for routing I/O expansion requests and responses in a PCIE architecture |
US8416834B2 (en) | 2010-06-23 | 2013-04-09 | International Business Machines Corporation | Spread spectrum wireless communication code for data center environments |
US8510599B2 (en) | 2010-06-23 | 2013-08-13 | International Business Machines Corporation | Managing processing associated with hardware events |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8650337B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US8639858B2 (en) * | 2010-06-23 | 2014-01-28 | International Business Machines Corporation | Resizing address spaces concurrent to accessing the address spaces |
US8677180B2 (en) | 2010-06-23 | 2014-03-18 | International Business Machines Corporation | Switch failover control in a multiprocessor computer system |
US8417911B2 (en) | 2010-06-23 | 2013-04-09 | International Business Machines Corporation | Associating input/output device requests with memory associated with a logical partition |
US8671287B2 (en) | 2010-06-23 | 2014-03-11 | International Business Machines Corporation | Redundant power supply configuration for a data center |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8478922B2 (en) | 2010-06-23 | 2013-07-02 | International Business Machines Corporation | Controlling a rate at which adapter interruption requests are processed |
US8656228B2 (en) | 2010-06-23 | 2014-02-18 | International Business Machines Corporation | Memory error isolation and recovery in a multiprocessor computer system |
US8505032B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Operating system notification of actions to be taken responsive to adapter events |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8392628B2 (en) * | 2010-07-16 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Sharing memory spaces for access by hardware and software in a virtual machine environment |
US20120036302A1 (en) * | 2010-08-04 | 2012-02-09 | International Business Machines Corporation | Determination of one or more partitionable endpoints affected by an i/o message |
US9146863B2 (en) * | 2010-12-08 | 2015-09-29 | International Business Machines Corporation | Address translation table to enable access to virtualized functions |
US8631212B2 (en) | 2011-09-25 | 2014-01-14 | Advanced Micro Devices, Inc. | Input/output memory management unit with protection mode for preventing memory access by I/O devices |
WO2013048943A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Active state power management (aspm) to reduce power consumption by pci express components |
US8881145B2 (en) * | 2011-12-15 | 2014-11-04 | Industrial Technology Research Institute | System and method for generating application-level dependencies in one or more virtual machines |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9256531B2 (en) * | 2012-06-19 | 2016-02-09 | Samsung Electronics Co., Ltd. | Memory system and SoC including linear addresss remapping logic |
US9164804B2 (en) | 2012-06-20 | 2015-10-20 | Memory Technologies Llc | Virtual memory module |
US9116820B2 (en) | 2012-08-28 | 2015-08-25 | Memory Technologies Llc | Dynamic central cache memory |
US9183041B2 (en) * | 2012-09-21 | 2015-11-10 | International Business Machines Corporation | Input/output traffic backpressure prediction |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
CN104021127A (zh) * | 2013-03-01 | 2014-09-03 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
US9754870B2 (en) * | 2013-07-10 | 2017-09-05 | Kinsus Interconnect Technology Corp. | Compound carrier board structure of flip-chip chip-scale package and manufacturing method thereof |
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 |
US9798567B2 (en) | 2014-11-25 | 2017-10-24 | The Research Foundation For The State University Of New York | Multi-hypervisor virtual machines |
US9563572B2 (en) | 2014-12-10 | 2017-02-07 | International Business Machines Corporation | Migrating buffer for direct memory access in a computer system |
WO2016114144A1 (ja) * | 2015-01-16 | 2016-07-21 | 日本電気株式会社 | 計算機、デバイス制御システムおよびデバイス制御方法 |
US9720838B2 (en) | 2015-03-27 | 2017-08-01 | Intel Corporation | Shared buffered memory routing |
US9824015B2 (en) * | 2015-05-29 | 2017-11-21 | Qualcomm Incorporated | Providing memory management unit (MMU) partitioned translation caches, and related apparatuses, methods, and computer-readable media |
US10120709B2 (en) * | 2016-02-29 | 2018-11-06 | Red Hat Israel, Ltd. | Guest initiated atomic instructions for shared memory page host copy on write |
US10496388B2 (en) * | 2016-03-24 | 2019-12-03 | Intel Corporation | Technologies for securing a firmware update |
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 |
US10394711B2 (en) * | 2016-11-30 | 2019-08-27 | International Business Machines Corporation | Managing lowest point of coherency (LPC) memory using a service layer adapter |
WO2018176360A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
US11016798B2 (en) | 2018-06-01 | 2021-05-25 | The Research Foundation for the State University | Multi-hypervisor virtual machines that run on multiple co-located hypervisors |
CN110941565B (zh) * | 2018-09-25 | 2022-04-15 | 北京算能科技有限公司 | 用于芯片存储访问的内存管理方法和装置 |
CN109947671B (zh) * | 2019-03-05 | 2021-12-03 | 龙芯中科技术股份有限公司 | 一种地址转换方法、装置、电子设备及储存介质 |
CN113961488A (zh) * | 2021-10-22 | 2022-01-21 | 上海兆芯集成电路有限公司 | 将虚拟地址重映射至物理地址的方法及地址重映射单元 |
CN117331861B (zh) * | 2023-11-28 | 2024-03-22 | 珠海星云智联科技有限公司 | 直接内存映射方法、装置、设备、集群以及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4891752A (en) * | 1987-03-03 | 1990-01-02 | Tandon Corporation | Multimode expanded memory space addressing system using independently generated DMA channel selection and DMA page address signals |
US5890220A (en) * | 1991-02-05 | 1999-03-30 | Hitachi, Ltd. | Address conversion apparatus accessible to both I/O devices and processor and having a reduced number of index buffers |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5522075A (en) | 1991-06-28 | 1996-05-28 | Digital Equipment Corporation | Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces |
JP3264319B2 (ja) * | 1997-06-30 | 2002-03-11 | 日本電気株式会社 | バスブリッジ |
US20020108025A1 (en) | 1998-10-21 | 2002-08-08 | Nicholas Shaylor | Memory management unit for java environment computers |
US7114056B2 (en) * | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
US7117342B2 (en) * | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
US6339803B1 (en) * | 1999-02-19 | 2002-01-15 | International Business Machines Corporation | Computer program product used for exchange and transfer of data having a queuing mechanism and utilizing a queued direct input-output device |
US7254806B1 (en) * | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
US20020103889A1 (en) | 2000-02-11 | 2002-08-01 | Thomas Markson | Virtual storage layer approach for dynamically associating computer storage with processing hosts |
US6678825B1 (en) * | 2000-03-31 | 2004-01-13 | Intel Corporation | Controlling access to multiple isolated memories in an isolated execution environment |
US6907600B2 (en) * | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
US6665759B2 (en) * | 2001-03-01 | 2003-12-16 | International Business Machines Corporation | Method and apparatus to implement logical partitioning of PCI I/O slots |
US6820207B2 (en) * | 2001-03-01 | 2004-11-16 | International Business Machines Corporation | Method for rebooting only a specific logical partition in a data processing system as per a request for reboot |
US6839892B2 (en) | 2001-07-12 | 2005-01-04 | International Business Machines Corporation | Operating system debugger extensions for hypervisor debugging |
US7158972B2 (en) | 2001-12-11 | 2007-01-02 | Sun Microsystems, Inc. | Methods and apparatus for managing multiple user systems |
US6804741B2 (en) * | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
US7058768B2 (en) * | 2002-04-17 | 2006-06-06 | Microsoft Corporation | Memory isolation through address translation data edit control |
US6986006B2 (en) * | 2002-04-17 | 2006-01-10 | Microsoft Corporation | Page granular curtained memory via mapping control |
US6725284B2 (en) * | 2002-04-25 | 2004-04-20 | International Business Machines Corporation | Logical partition hosted virtual input/output using shared translation control entries |
US6941436B2 (en) * | 2002-05-09 | 2005-09-06 | International Business Machines Corporation | Method and apparatus for managing memory blocks in a logical partitioned data processing system |
US7089377B1 (en) | 2002-09-06 | 2006-08-08 | Vmware, Inc. | Virtualization system for computers with a region-based memory architecture |
US6895491B2 (en) * | 2002-09-26 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US20040098544A1 (en) | 2002-11-15 | 2004-05-20 | Gaither Blaine D. | Method and apparatus for managing a memory system |
US7900017B2 (en) * | 2002-12-27 | 2011-03-01 | Intel Corporation | Mechanism for remapping post virtual machine memory pages |
US7069413B1 (en) * | 2003-01-29 | 2006-06-27 | Vmware, Inc. | Method and system for performing virtual to physical address translations in a virtual machine monitor |
US7111145B1 (en) | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7103808B2 (en) * | 2003-04-10 | 2006-09-05 | International Business Machines Corporation | Apparatus for reporting and isolating errors below a host bridge |
US7117385B2 (en) * | 2003-04-21 | 2006-10-03 | International Business Machines Corporation | Method and apparatus for recovery of partitions in a logical partitioned data processing system |
US9020801B2 (en) * | 2003-08-11 | 2015-04-28 | Scalemp Inc. | Cluster-based operating system-agnostic virtual computing system |
US20050044301A1 (en) | 2003-08-20 | 2005-02-24 | Vasilevsky Alexander David | Method and apparatus for providing virtual computing services |
JP2007508623A (ja) | 2003-10-08 | 2007-04-05 | ユニシス コーポレーション | 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ |
US7467381B2 (en) * | 2003-12-16 | 2008-12-16 | Intel Corporation | Resource partitioning and direct access utilizing hardware support for virtualization |
US20060010276A1 (en) * | 2004-07-08 | 2006-01-12 | International Business Machines Corporation | Isolation of input/output adapter direct memory access addressing domains |
US7398427B2 (en) * | 2004-07-08 | 2008-07-08 | International Business Machines Corporation | Isolation of input/output adapter error domains |
US7266631B2 (en) * | 2004-07-29 | 2007-09-04 | International Business Machines Corporation | Isolation of input/output adapter traffic class/virtual channel and input/output ordering domains |
US7009871B1 (en) * | 2004-08-18 | 2006-03-07 | Kabushiki Kaisha Toshiba | Stable memory cell |
US7340582B2 (en) * | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
US7444493B2 (en) * | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US7334107B2 (en) * | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
US8843727B2 (en) * | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
DE602004027516D1 (de) | 2004-12-03 | 2010-07-15 | St Microelectronics Srl | Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür |
US8706942B2 (en) * | 2004-12-29 | 2014-04-22 | Intel Corporation | Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices |
US7308551B2 (en) * | 2005-02-25 | 2007-12-11 | International Business Machines Corporation | System and method for managing metrics table per virtual port in a logically partitioned data processing system |
US7428626B2 (en) * | 2005-03-08 | 2008-09-23 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
US7334076B2 (en) * | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US7415035B1 (en) * | 2005-04-04 | 2008-08-19 | Sun Microsystems, Inc. | Device driver access method into a virtualized network interface |
US7353360B1 (en) * | 2005-04-05 | 2008-04-01 | Sun Microsystems, Inc. | Method for maximizing page locality |
US7225287B2 (en) * | 2005-06-01 | 2007-05-29 | Microsoft Corporation | Scalable DMA remapping on a computer bus |
-
2005
- 2005-06-21 US US11/157,675 patent/US20060288130A1/en not_active Abandoned
-
2006
- 2006-06-20 DE DE112006001642T patent/DE112006001642T5/de not_active Ceased
- 2006-06-20 CN CN2006800221864A patent/CN101203838B/zh active Active
- 2006-06-20 WO PCT/US2006/024515 patent/WO2007002425A1/en active Application Filing
- 2006-06-20 TW TW095122090A patent/TWI363967B/zh active
- 2006-06-20 GB GB0722953A patent/GB2441084A/en not_active Withdrawn
- 2006-06-20 KR KR1020077029979A patent/KR101060395B1/ko active IP Right Grant
-
2009
- 2009-12-29 US US12/648,461 patent/US7984203B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4891752A (en) * | 1987-03-03 | 1990-01-02 | Tandon Corporation | Multimode expanded memory space addressing system using independently generated DMA channel selection and DMA page address signals |
US5890220A (en) * | 1991-02-05 | 1999-03-30 | Hitachi, Ltd. | Address conversion apparatus accessible to both I/O devices and processor and having a reduced number of index buffers |
Also Published As
Publication number | Publication date |
---|---|
GB0722953D0 (en) | 2008-01-02 |
TW200712893A (en) | 2007-04-01 |
WO2007002425A1 (en) | 2007-01-04 |
DE112006001642T5 (de) | 2008-05-08 |
US20060288130A1 (en) | 2006-12-21 |
US20100100648A1 (en) | 2010-04-22 |
TWI363967B (en) | 2012-05-11 |
CN101203838A (zh) | 2008-06-18 |
GB2441084A (en) | 2008-02-20 |
US7984203B2 (en) | 2011-07-19 |
KR101060395B1 (ko) | 2011-08-29 |
KR20080012988A (ko) | 2008-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101203838B (zh) | 直接存储器存取转换的地址窗口支持 | |
CN100593160C (zh) | 利用覆盖较大地址空间的转换表的地址转换性能增强 | |
CN100585574C (zh) | 对于直接存储器存取地址转换的高速缓存支持 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
CN101031893B (zh) | 使用分层转换表对输入/输出设备的地址转换 | |
JP5911985B2 (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
CN104364775B (zh) | 具有段偏移寻址的专用存储器访问路径 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
US8166276B2 (en) | Translate and verify instruction for a processor | |
KR101563659B1 (ko) | 집성된 소페이지들을 사용한 페이지 사이즈 확장 | |
US9152570B2 (en) | System and method for supporting finer-grained copy-on-write page sizes | |
US10346306B2 (en) | Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions | |
TWI516930B (zh) | 對一範圍之分錄進行轉譯後備緩衝器無效化的方法與裝置 | |
CN109690484A (zh) | 在虚拟机进入时转换 | |
US20140108701A1 (en) | Memory protection unit in a virtual processing environment | |
US20110010483A1 (en) | Memory protection unit in a virtual processing environment | |
CN102906716A (zh) | 依据适配器的多个地址空间 | |
CN102906721A (zh) | 与访问地址空间并行地对地址空间调整大小 | |
JP2011509478A (ja) | 構成の仮想トポロジの変化 | |
CN102947808A (zh) | 用于适配器函数的转换格式的运行时确定 | |
Achermann | On memory addressing | |
US20240354261A1 (en) | Dynamic direct memory access mapping for peripheral devices | |
US20230023329A1 (en) | System, apparatus and method for fine-grain address space selection in a processor | |
Laux Jr et al. | Back to the Past: When Segmentation Is More Efficient Than Paging | |
WO2023064590A1 (en) | Software indirection level for address translation sharing |
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 |