CN101031893A - 使用分层转换表对输入/输出设备的地址转换 - Google Patents
使用分层转换表对输入/输出设备的地址转换 Download PDFInfo
- Publication number
- CN101031893A CN101031893A CNA2005800334073A CN200580033407A CN101031893A CN 101031893 A CN101031893 A CN 101031893A CN A2005800334073 A CNA2005800334073 A CN A2005800334073A CN 200580033407 A CN200580033407 A CN 200580033407A CN 101031893 A CN101031893 A CN 101031893A
- Authority
- CN
- China
- Prior art keywords
- page
- address
- physical address
- inlet
- plot
- 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
- 238000013519 translation Methods 0.000 title claims abstract description 83
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000014616 translation Effects 0.000 claims description 79
- 238000003860 storage Methods 0.000 claims description 43
- 238000006243 chemical reaction Methods 0.000 claims description 40
- 230000014509 gene expression Effects 0.000 claims description 38
- 230000007246 mechanism Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 16
- 238000004519 manufacturing process Methods 0.000 claims description 13
- 230000033228 biological regulation Effects 0.000 claims description 12
- 230000007704 transition Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000012512 characterization method Methods 0.000 claims 4
- 238000001914 filtration Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 20
- DLMXFZFNHPGUPW-ANYOKISRSA-N (2s)-2-[n-acetyl-4-[1-(4-hydroxy-2-oxochromen-3-yl)-3-oxobutyl]anilino]-5-amino-5-oxopentanoic acid Chemical compound OC=1C2=CC=CC=C2OC(=O)C=1C(CC(=O)C)C1=CC=C(N([C@@H](CCC(N)=O)C(O)=O)C(C)=O)C=C1 DLMXFZFNHPGUPW-ANYOKISRSA-N 0.000 description 15
- 230000005012 migration Effects 0.000 description 11
- 238000013508 migration Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 238000007689 inspection Methods 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 238000013518 transcription Methods 0.000 description 4
- 230000035897 transcription Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 210000001503 joint Anatomy 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000116629 Ferula sumbul Species 0.000 description 1
- 208000003443 Unconsciousness Diseases 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised 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/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
-
- 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明的实施例是进行地址转换的技术。用规定了客户机物理地址并被一I/O设备所请求的输入/输出(I/O)事务的源标识符索引一个表结构以将该I/O设备映射到指定给该I/O设备域。一个地址转换结构将客户机物理地址转换成对应于I/O事务的主机物理地址。
Description
技术领域
本发明的实施例涉及微处理器领域,尤其涉及输入/输出(I/O)虚拟化。
背景技术
随着微处理器体系结构变得越来越复杂以支持高性能应用,I/O管理也带来了挑战。
解决I/O管理问题的现有技术有很多缺陷。一种技术使用只用软件实现的I/O虚拟化支持虚拟机(VM)I/O。这项技术的功能性、性能和健壮性有限。由客户机操作系统(OS)和应用程序看到的功能性受限于VM监控器(VMM)软件中模拟的虚拟设备所支持的功能性。客户I/O操作被VMM捕获并且在被提交给下层物理设备硬件之前被代理或模拟,导致性能较差。另外,硬件设备的全部或部分设备驱动程序被作为有特权的VMM软件的一部分运行,VMM软件可能对平台整体的健壮性有不利影响。使用专用转换结构的技术只支持特定的设备或有限的应用模型。通用I/O存储器管理单元只提供对有限大小或复杂度的I/O虚拟地址空间的支持。
附图说明
最好参考下面的说明书以及用来说明本发明的实施例的附图理解本发明的实施例。在附图中:
图1是示出了其中实践本发明的一个实施例的系统的简图;
图2是示出了依照本发明的一个实施例的输入/输出(I/O)设备分配的简图;
图3是示出了使用依照本发明的一个实施例的直接存储器存取(DMA,Direct Memory Access)重映射的虚拟化的简图;
图4是示出了依照本发明的一个实施例的I/O地址转换的简图;
图5是示出了依照本发明的一个实施例的DMA重映射结构的简图;
图6是示出了包含依照本发明的一个实施例的公用寄存器的寄存器组的简图;
图7是示出了包含依照本发明的一个实施例的地址过滤寄存器的寄存器组的简图;
图8A是示出了依照本发明的一个实施例的根入口的简图;
图8B是示出了依照本发明的一个实施例的上下文入口的简图;
图8C是示出了依照本发明的一个实施例的页表入口的简图;
图9A是示出了使用依照本发明的一个实施例的多级表的地址转换结构的简图;
图9B是示出了使用依照本发明的一个实施例的单表的地址转换结构的简图;
图9C是示出了使用依照本发明的一个实施例的基址/边界转换的地址转换结构的简图。
具体实施方式
本发明的一个实施例是进行地址转换的技术。由规定了客户机物理地址并由I/O设备所请求的输入/输出(I/O)事务的源标识符索引一个表结构以将I/O设备映射到指定给该I/O设备的域。地址转换结构将客户机物理地址转换成对应于I/O事务的主机物理地址。
在下面的说明中,阐述了大量具体的细节。但是,应该理解没有这些具体细节也能够实践本发明的实施例。在其它例子中,没有展示众所周知的电路、结构和技术以避免掩盖对本发明的理解。
图1示出了可以在其中实践本发明的一个实施例的系统100。系统100包括处理器110、处理器总线120、存储器控制集线器(MCH,Memory Control Hub)130、系统存储器140、输入/输出控制集线器(ICH,Input/Output Control Hub)150、外围总线155、海量存储设备/接口170和输入/输出设备1801到180k以及185。注意系统100可以包括比上述或多或少的元件。
处理器110代表任何类型的体系结构的中央处理单元,例如嵌入式处理器、移动处理器、微控制器、数字信号处理器、超标量计算机、向量处理器、单指令多数据(SIMD,Single Instruction Multiple Data)计算机、复杂指令集计算机(CISC,Complex Instruction Set Computer)、精简指令集计算机(RISC,Reduced Instruction Set Computer)、超长指令字(VLIW,Very Long Instruction Word)或混合体系结构。
处理器总线120提供使处理器110能够和其它处理器或设备(如MCH 130)通信的接口信号。处理器总线120可以支持单处理器或多处理器配置。处理器总线120可以是并行的、串行的、流水线的、异步的、同步的或它们的任意组合。
MCH 130提供了存储器和输入/输出设备(如系统存储器140和ICH 150)的控制和配置。MCH 130可以被集成到集成了隔离执行模式、主机-到-外围总线接口、存储器控制等多种功能性的芯片组中。MCH 130直接或通过ICH 150与外围总线155对接。为清晰起见,并未示出所有的外围总线。预期系统100还可以包括诸如外围部件互连(PCI,Peripheral Component Interconnect)、PCI Express、加速图形端口(AGP、Accelerated Graphics Port)、工业标准体系结构(ISA,Industry Standard Architecture)总线和通用串行总线(USB,UniversalSerial Bus)等外围总线。
MCH 130包括DMA(直接存储器存取,Direct Memory Access)重映射电路135。DMA重映射电路135在I/O事务中将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,Dynamic Random Access Memory)或静态随机存储存取器(SRAM,Static Random Access Memory)实现。系统存储器可以包括实现本发明的一个实施例的程序代码或代码段。系统存储器包括操作系统(OS)142、或OS的一部分、或内核,以及I/O驱动程序145。OS 142或I/O驱动程序145的元件的任何之一都可以用硬件、软件、固件、微代码或它们的任意组合实现。系统存储器140还可以包括没有示出的其它程序或数据。
ICH 150有多个设计用来支持I/O功能的功能性。ICH 150还可以和MCH 130一起或独立于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链路等上面传播的任何信号。代码段可以通过诸如Internet、Intranet等计算机网络下载。机器可访问介质可以被体现在制造商品中。机器可访问介质可以包括当被机器访问时使机器执行下文中所说明的操作的数据。机器可访问介质还可以包括嵌入在其中的程序代码。该程序代码可以包括完成下文中所述操作的机器可读代码。术语“数据”这里指为机器可读目的而编码的任何类型的信息。因此,它可以包括程序、代码、数据、文件等。
本发明的实施例的全部或部分可由硬件、软件、固件或它们的任意组合实现。硬件、软件、或固件元件可以有若干个相互耦合的模块。硬件模块通过机械的、电的、光学的、电磁的或任何物理连接相互耦合。软件模块通过函数、过程、方法、子程序、或子例程调用、跳转、链接、参数、变量和自变量传递、函数返回等与另一模块耦合。软件模块与另一模块耦合以接收变量、参数、自变量、指针等,和/或产生或传递结果、更新的变量、指针等。固件模块通过上述硬件和软件耦合方法的任意组合耦合到另一模块。硬件、软件或固件模块都可以与另一硬件、软件或固件模块中的任何一个相耦合。模块还可以是和运行在平台上的操作系统交互的软件驱动程序或接口。模块还可以是配置、设置、初始化、向硬件设备发送数据和从硬件设备接收数据的硬件驱动程序。一个装置可以包括硬件、软件和固件模块的任意组合。
本发明的一个实施例可以被说明为一个通常被描绘成流程图、程序框图、结构图或框图的过程。尽管流程图可以将操作说明成顺序过程,但很多操作都可以被并行或并发执行。另外,可以重新安排操作的顺序。当过程的操作完成时过程结束。过程可以对应于方法、程序、工序、制造或生产方法等。
在标准的计算平台中,I/O子系统组件作为单个域的一部分运行并且由操作系统软件管理。本发明的一个实施例提供了在计算平台中将I/O设备分配到多个域所需的硬件支持。
域被抽象地定义为平台中为其分配了主机物理存储器的一个子集的隔离环境。主机物理存储器被包括在系统存储器140中。被允许直接访问分配给一域的物理存储器的I/O设备被称为该域的指定设备。域的隔离属性是通过阻塞未分配给该域的资源访问该域的物理存储器而实现的。通过确保所有I/O设备都被指定到某个域(可能是缺省域)并且限制每个被指定的设备只能访问分配给它的域的物理存储器而支持多个隔离的域。
每个域有一个不同于物理存储器系统视图的物理存储器视图,或者物理地址空间。由一个域的资源用来访问它的物理地址空间的地址被称为它的客户机物理地址(GPA,Guest Physical Address)。主机物理地址(HPA,Host Physical Address)指用来访问存储器的系统物理地址。如果一个域的GPA被转换成一个新的HPA以访问它被分配的系统物理存储器,这个域被看作是重新定位过。如果一个域的客户机物理地址空间与系统的主机物理地址空间相同或它的一个子集相同,这个域被称为未重新定位的域。GPA和HPA的逻辑分隔提供了实施存储器保护的基础。它需要能够验证由一个域的指定设备产生的客户机物理地址并将它转换成有效的主机物理地址的物理地址转换和保护机制。DMA重映射电路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.也可以使用不止一个驱动程序。
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可以使用域更好地管理从传统的32-位PCI设备到高端存储器(大于4GB)的DMA。这是通过将32-位设备分配给一个或多个域并对I/O-物理-地址-转换机制编程以将来自这些设备的DMA重新映射到高端存储器。没有这样的支持,软件就不得不求助于通过OS回弹缓冲区进行的数据复制。
在更复杂的用途中,OS可以通过创建多个域并将一个或多个I/O设备分配给各个域而管理I/O。在这个用途中,设备驱动程序明确地向OS注册它们的I/O缓冲区,并且OS使用硬件实施DMA域保护而将这些I/O缓冲区指定到具体的域。在这个模型中,OS使用I/O地址转换和保护机制作为I/O存储管理单元(I/O MMU)。
虚拟化应用:虚拟化技术能够在单个系统上创建一个或多个虚拟机(VM)。每个VM可以利用下层的物理硬件资源同时运行。虚拟机使得多个操作系统实例能够运行在同一处理器上,带来的好处是系统强化、传统迁移、活动划分和安全性。
虚拟化体系结构通常涉及两个主要类别的软件组件:(a)虚拟机监控器(VMM,Virtual Machine Monitor)和(b)虚拟机(VM)。VMM软件层运行在最高特权级上并且具有对下层系统硬件的完整拥有权。VMM使得VM能够共享下层硬件并且仍然提供了VM之间的隔离。
通过使用DMA重映射电路135将I/O设备直接指定给VM能够消除只用软件实现的I/O虚拟化方法的限制。利用设备的直接指定,指定的I/O设备的驱动程序只运行在它被指定到的VM中并且被允许和该设备硬件直接交互而不需要陷入VMM中。硬件支持不需要VMM中的设备专有知识就能够进行DMA重映射。
在这个模型中,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设备只到指定给它的父域的物理存储器的DMA。对于可以被重新定位在物理存储器中(即GPA和HPA不一致)的VM,可以对DMA重映射电路135编程以进行必要的GPA-到-HPA转换。
利用对I/O设备指定的硬件支持,VMM实现可以选择只用软件实现的I/O虚拟化方法和直接设备指定的组合以将I/O设备资源提供给VM。
图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不需要VMM或主机OS 320的具体知识就直接将这两个设备映射到各自的VM 340和360。
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的只用软件方法中,设备A和B驱动程序350和370将驻留在VMM或主机OS 320中。这两个驱动程序的功能性因而受VMM中模拟的功能性所限制。没有DMA重映射支持,VMM不得不提供模拟/代理驱动程序并且客户机OS将使用VMM决定向外界提供的虚拟设备专有的设备驱动程序。它可能是与真实的平台设备无关的设备或者是与真实的平台设备相同的设备。在后者中,VMM代理了真实设备。另外,因为客户机I/O操作被VMM或主机OS 320捕获并且在被提供给下层物理设备硬件之前被代理或模拟,性能也受到了限制。最后,因为设备A和设备B驱动程序350和370的全部或部分都可以被作为有特权的VMM软件的一部分运行,平台的总体健壮性也受到了损害,尤其当这些驱动程序可能产生使VMM或主机OS 320崩溃的错误时。采用DMA重映射电路135,设备A和B驱动程序350和370可以直接和各自的I/O设备310和312交互,因此避免了所有上述限制。
由DMA重映射电路135提供的DMA重映射体系结构促进了将I/O设备指定到任意数量的域。每个域有一个可能不同于系统物理地址空间的物理地址空间。DMA重映射提供了对来自I/O设备的DMA请求中的客户机物理地址(GPA)到分配给它的域的相应的主机物理地址(HPA)的转换。
为了支持这一点,平台可以支持一个或多个I/O物理地址转换硬件单元。每个转换硬件单元支持对起自它自己的硬件范围内的I/O事务的重映射。例如,桌面芯片组实现方式可以暴露转换存储控制器中心(MCH)部件上的所有I/O事务的单个DMA重映射硬件单元。具有一个或多个核心芯片组部件的服务器平台可以支持各个部件中独立的转换硬件单元,各自转换起自它自己的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和客户机视图440。
I/O设备1 410和2 412被指定给两个独立的域。它们进行对地址DMA_ADR的I/O请求或DMA请求。DMA重映射电路135将这两个设备映射到在物理存储器420中分配的相应的域。物理存储器420分配域1 422和424、域2 426和428。可以为这些设备分配或多或少的被分配的存储器段。域1 422和424对应于设备1 410,域2 426和428对应于设备1 412。在图4所示例子中,设备1 410被映射到域1 422,设备2 412被映射或指定给域2 428。
客户机视图440是从客户机I/O设备看到的逻辑视图。它包括域1442和2 444。域1 442对应于物理存储器420中的两个域1 422和424。域2 444对应于两个域2 426和428。从客户机视图440看来,与一个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到530U、以及多个地址转换结构5400到540v。重映射结构222从I/O设备接收源标识符510以及客户机物理地址,并将该客户机物理设备转换到所指定的域中的一主机物理设备。该转换可以用以分层方式布置的转换表完成。转换机制从根表520开始、遍历或穿越上下文表5300到530U、以及地址转换结构5400到540v。
在DMA重映射电路135上出现的I/O事务的请求者身份决定了起始设备及该起始I/O设备被指定到的域。源标识符510是标识I/O事务的发起者的属性。DMA重映射电路135可以用与实现有关的方式决定事务的源标识符510。例如,有些I/O总线协议可以提供起始设备身份作为每个I/O事务的一部分。而在其它情况下,例如对于芯片组集成设备,可以根据芯片组的内部实现方式暗示源标识符510。
对于PCI Express设备,源标识符510被映射到作为I/O事务报头的一部分而提供的请求者标识符。设备的请求者标识符由配置软件分配的PCI Bus/Device/Function(PCI总线/设备/功能)编号组成并且唯一标识发起该I/O请求的硬件功能。在一个实施例中,源标识符510包括功能编号512、设备编号514以及总线编号516。在图5所示例子中,功能编号512是K-比特宽,设备编号514是L-比特宽,总线编号516是M-比特宽。总线编号516标识其上产生I/O事务的总线。设备编号514标识所识别的总线上的具体设备。功能编号512标识由该I/O设备所请求的具体功能。源标识符510被用来索引或查询根表520以及上下文表5300到530U。在图5所示例子中,有两个使用总线0和总线m的I/O事务。
对于PCI Express设备,根表520存储了由源标识符510或者源标识符510的总线编号516索引的根入口5250到525M-1。根入口充当顶层结构以将特定总线上的设备映射到它各自的父域。根入口0 5200对应于使用总线0的I/O事务。根入口m 520m对应于使用总线m的I/O事务。根入口0 5250和525m分别指向上下文表5300和530m。在一个实施例中,这些入口为相应的上下文表提供了基址。
上下文表5300到530U存储了由根入口参考的上下文入口535k’。上下文入口535k’将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。
地址转换结构5400到540v用与I/O事务对应的客户机物理地址提供到主机物理地址的地址转换。各个地址转换结构5400到540v可以是分别与使用多表、单表和基址/边界转换的三种转换机制对应的多表550、单表560或基址/边界570。在下面的说明中,使用了4KB的常规页面大小。如本领域中的技术人员所了解的那样,也可以使用任何其它页面大小。
为了提供对DMA重映射电路135的软件灵活控制,DMA重映射电路135有多个包含在图2中所示寄存器组220中的寄存器。寄存器组220通过基址(BAR,Base Address)寄存器位于主机物理地址空间中。转换硬件BAR寄存器被以与实现方式有关的方式暴露给软件。这可能被暴露为芯片组集成设备之一(如存储控制器设备)中的一PCI配置空间寄存器。在一个实施例中,BAR寄存器提供了最小4K的地址窗口。寄存器组220中的寄存器可以有多个字段。字段可以被断言或否定。当一字段仅由单个比特构成时,断言意味着该比特被设置为规定的逻辑状态(例如,TRUE,逻辑1),而否定意味着该比特被设置为与断言的状态互补的规定逻辑状态(如FALSE,逻辑0)。在下文中,对断言或否定状态的使用是任意的。可以断言一个字段以表示第一状态,否定其以表示第二状态,反之亦然。
可以由DMA重映射电路135和/或软件对寄存器中的字段进行编程、初始化或配置。它还可以对应于专用硬件电路或由数据结构、函数、例程或方法实现的功能性。在下文中,字段被分组成了寄存器。对随后的寄存器中的这些字段或比特的分组、格式化或组织是出于说明目的。可以使用其它方式分组、格式化或组织这些字段。一个字段还可以被复制到多于一个寄存器中。一个寄存器的字段与上述字段相比可以或多或少。另外,可以用多种方式实现寄存器,包括作为存储元件或存储器元件。
图6示出了包含依照本发明的一个实施例的公用寄存器的寄存器组。这些公用寄存器包括存储器类型报告寄存器(MTYPE_REG)610、全局命令寄存器(GCMD_REG)620、根入口表地址寄存器(RTADDR_REG)630以及缺省上下文寄存器(DEF_REG)640。
MTYPE_REG 610报告转换数据结构的存储器类型。它包括错误日志存储器类型(FMT)字段612、页表存储器类型(PMT)字段614、上下文入口表存储器类型(CMT)字段616以及根入口表存储器类型(RMT)字段618。
FMT字段612表示错误日志区是否是可缓存的。当被否定时,它表示错误日志区不被缓存。当被断言时,它表示错误日志区在一个可缓存区中。PMT字段614表示页表是否是可缓存的。当被否定时,它表示页表在未被缓存的存储区中。当被断言时,它表示页表在可缓存区中。CMT字段616表示上下文表是否是可缓存的。当被否定时,它表示上下文表在未被缓存的存储区中表示上下文表在可缓存区中。RMT字段618表示根表是否是可缓存的。当被否定时,它表示根表在未被缓存的存储区中。当为真时,它表示根表在可缓存区中。
GCMD_REG 620控制着转换行为。它包括转换硬件启用(HE,Hardware Enable)字段622和写缓冲区清空(WBF,Write Buffer Flush)字段624。
HE字段622是启用或禁用转换硬件的软件可编程控制字段。当被否定时,它表示禁用转换硬件。当被断言时,它表示启用转换硬件。当更新这个字段时,软件应该读回并检查这个字段以确认启用/禁用状态。
WBF字段624用来清空芯片组内部写缓冲区。这样做是为了确保对上下文表或页表的任何更新都不会被保留在任何内部写记录缓冲区中。软件断言这个字段以发出写缓冲区清空命令。逻辑电路224否定它以提供写缓冲区清空完成的指示。软件应该读回并检查该字段被否定定以确认清空完成。
RTADDR_REG 630设置驻留在存储器中的根表的基址。软件应该通过最终写较低的双字(DWORD)对这个寄存器编程。它包括根表基址(RTA,Root Table base Address)字段632和启用上下文入口(ECE,Enable Context Entry)字段634。RTA字段632指向系统存储器中页对齐的、常规大小的根表的基址。常规大小可以是任意适当的预定义的大小。在一个实施例中,常规大小是4KB。DMA重映射电路135可以只实现最低N位,N是(主机地址宽度-12)。该字段的剩余部分可以看作是只读的。ECE字段634是启用或禁用上下文入口的使用的控制字段。这不影响缺省上下文的使用。当被否定时,它表示禁用上下文入口的使用。DMA请求被基于对缺省寄存器的编程而处理。当被断言时,它表示启用上下文入口的使用以处理DMA请求。根和上下文表被设置在存储器中并且在高位(如从12到63位)中提供了根表的基址。
DEF_REG 640指定了缺省上下文。上下文表中的每个上下文入口规定了如何管理来自特定设备的DMA请求。缺省上下文代表由DMA重映射电路135管理的设备被初始指定到的缺省域,直到软件对设备编程为域映射表并且启用对这些表的查找。例如,在将一个I/O设备热插进系统后,如果这个设备的上下文没有被软件预先编程,该设备就被指定给缺省域直到软件明确地将它指定给另一个域。缺省上下文是通过DEF_REG 640被编程的。
转换硬件如下检查DMA请求中的源标识符。如果上下文入口被启用(如通过全局命令寄存器),到来的DMA请求中的源标识符被用来查找它对应的根入口以及通过根入口查找上下文入口。在这种情况下,DMA被根据对根和上下文入口的编程而处理。如果上下文入口没有被启用,DMA请求被根据DEF_REG 640而处理。
与其它上下文入口类似,可以对缺省上下文编程以实施特定类型的转换功能,例如阻塞、直通、过滤出的地址、使用转换结构转换出的地址等。
DEF_REG 640包括存在(P)字段642、单/多级表(M)字段650、地址空间根(ASR,Address Space Root)字段654、客户机地址宽度(GAW,Guest Address Width)字段656、错误处理字段660以及域标识符(DID,Domain Identifier)字段662。通常,P字段642和M字段650是单比特指示符。
当处理事务时总是应该检查P字段642。当被否定时,它表示通过这个上下文入口的所有事务都被阻塞。当被断言时,它表示根据对其它字段的编程处理通过这个上下文入口的事务。
M字段650用来表示是否使用了多级表转换。当被断言时,它表示用于这个上下文入口比特的单级页表应该被用来索引该页表中的入口。当被否定时,它表示用于这个上下文入口的多级页表应该被用来查找根表中的入口。
ASR字段654是地址空间根的大小对齐的主机物理地址。当使用连续的地址空间时,这个字段包含域的物理地址空间的基址。当使用页表(单级或多级)时,这个字段指向根表的基址。
GAW字段656仅对规定单级或多级页表的上下文入口有效。当使用多级页表时,这个字段表示由DMA重映射电路135用于页表游走(page table walk)的调整后的客户机地址宽度(AGAW,AdjustedGAW)。这个字段中规定的值是DMA重映射电路135支持并且在能力寄存器中报告的AGAW值。能力寄存器是指示重映射电路135所支持的能力的寄存器。当使用单级页表时,这个字段指示域的客户机地址宽度。这个字段中指定的值在单级页表的最小GAW和在能力寄存器中由DMA重映射电路135报告的MGAW之间。
如果DMA重映射电路135检查到这个字段中的值不被下层实现方式所支持,通过这个上下文入口的所有DMA请求都被阻塞并且产生转换错误。通过这个上下文入口处理的并且访问2GAW-1之上(GAW是这个字段中的值)的客户机物理地址的任何DMA请求都被阻塞,并且产生转换错误。
FP字段660启用或禁用对通过这个上下文入口处理的DMA请求的错误的记录。
DID字段662表示缺省域的域标识符。
地址过滤:
基于多级页表结构的地址转换通过使软件能够以常规页面粒度(如4KB)管理存储器而提供了最大的灵活性。但是,多级页表结构带来了最大的地址转换等待时间,因为它需要硬件游走页表。即使硬件实现方式可以利用转换缓存降低转换负担,I/O转换后备总线(TLB,Translation Lookaside Bus)上引发的页面游走等待时间可能不适合于某些类型的I/O流量。例如,来自使用同步信道的PCI-Express设备(如高清晰度音频)以及诸如集成图形的某些芯片组集成设备的DMA请求不能引发不确定的DMA重映射等待时间。
对于支持可能被DMA重映射等待时间负面影响的I/O设备的硬件实现,该体系结构通过DMA地址过滤(而不是地址转换)定义了设备到未重定位域的指定。未重定位域是它的客户机物理地址空间是系统的主机物理地址空间的一个子集的域。地址过滤硬件保持了软件灵活性以管理常规大小(如4KB)页面的主机存储器并且只引发了最小的负担。
对地址过滤的支持是由DMA重映射电路135通过寄存器组220中的能力寄存器报告的。不需要能够对来自所有设备的DMA请求进行地址转换的硬件实现(例如不支持同步信道的那些)来支持地址过滤。如果平台配置需要多个DMA重映射硬件单元,例如每个芯片组部件或PCI-Express根端口一个,并且如果这些单元之一需要地址过滤支持,那么它就被所有的硬件单元支持。
对于地址过滤来说,存储器中分配给未重定位域的页面是通过如图7中所示被称为过滤器位图表(FBT,Filter Bitmap Table)的驻留在存储器中的表而指示的。该体系结构只支持单个未重定位域,因此对每个报告出的DMA-重映射硬件只有单个过滤器位图表。过滤器位图表的位置和大小是通过图7中所示地址过滤器基址和大小寄存器被编程的。位图表的大小被计算为(4KB*2S),其中S是编程到地址过滤器大小寄存器的值。该表中的每个比特代表一个4K的主机页面,其第一个比特代表第一个4K的主机物理地址空间。过滤器比特图表最小是4KB,它映射主机存储器的第一个128MB的区域。
其DMA请求只能被硬件进行地址过滤的设备由平台固件报告给软件。对这些设备的上下文入口的任何编程都应该确保它被设置为地址过滤,而不是阻塞,以允许直通或对DMA请求进行地址转换。
可以通过将相应的上下文入口编程为表示地址过滤而将其DMA请求还可以被进行地址转换或地址过滤的I/O设备指定给未定位域。同样,可以通过将缺省上下文寄存器编程为表示地址过滤而使未重定位域与缺省域相同。
如果上下文入口被编程为表示地址过滤,那么上下文入口字段的其余部分(即除Valid,Present和Pass-through字段以外的字段)被DMA重映射电路135忽略。
通过规定了地址过滤的上下文入口处理的DMA请求由DMA重映射电路135如下处理:
1.验证DMA请求以确保它通过普通芯片组DMA地址解码逻辑访问存储器。如果该DMA请求被解码为端-到-端,就阻塞该DMA请求。
2.如果是对存储器的DMA请求,验证DMA请求所指向的存储器位置是否在4K的页面内。
3.如果通过了上面两个检查,验证DMA请求中的GPA是否在未重定位域的地址空间内。阻塞试图访问在地址(2(P+27)-1)之上的存储器位置的任何DMA请求,其中P是被编程在过滤器位图大小寄存器中的值。
4.如果通过了所有上述检查,DMA重映射电路135在过滤器位图表中的比特偏移[GPA>>12]处查找与由该DMA请求所访问的页面对应的位字段。如果该位被清除,就正常处理该DMA请求。如果该位被置上,就阻塞该DMA请求。
图7示出了包含依照本发明的一个实施例的地址过滤寄存器的寄存器组220。寄存器组220包括过滤器大小寄存器(FSIZE_REG)710、过滤器基址寄存器(FBASE_REG)720、过滤器控制寄存器(FCTL_REG)730以及过滤器错误寄存器(FFLT_REG)740。
FSIZE_REG 710表示地址过滤位图表的大小。如果DMA重映射电路135不支持地址过滤,这个寄存器被看作是保留的(即,写被忽略,而读返回0)。它包括过滤器表大小(FTS,Filter Table Size)字段712和过滤器位图存储器类型(BMT,Bitmap Memory Type)字段715。BMT字段715表示位图区是否是可高速的。当被否定时,它表示位图区不被缓存。对这个字段的写被忽略。当被断言时,它表示位图区在可缓存区中。FTS字段712表示地址过滤器表的大小。该大小是由下面的公式计算出的:TableSize=4K*2FSIZE_REG字节。例如,0000h:4KB的表支持128MB存储器,0001h:8KB表支持256MB主存储器,0005h:128KB表支持4G主存储器,等。
FBASE_REG 720保存了到地址过滤位图表的基址的指针。如果DMA重映射电路135不支持地址过滤,这个寄存器被当作保留(如,写被忽略,读返回0)。它包括过滤器表基址(FTB,Filter Table Base)字段725。FTB字段725是到存储器中地址过滤器表的基址的指针。该表是大小对齐的。最小的表大小是支持4GB寻址能力的128K。
FCTL_REG 730控制对地址过滤器位图表的缓存。如果DMA重映射电路135不支持地址过滤,这个寄存器被当作保留(如,写被忽略,读返回0)。它包括过滤器硬件启用(FHE,Filter Hardware Enable)字段732、写缓冲区清空(WBF)字段734、过滤器缓存使无效(FCI,FilterCache Invalidate)字段736以及过滤器表保护(FTP,Filter Table Protect)字段738。FHE字段732是启用或禁用地址过滤硬件的软件可编程控制字段。当被否定时,它表示禁用地址过滤硬件。否则被进行地址过滤的任何DMA请求都被当作直通处理。当被断言时,它表示启用地址过滤硬件。在通过这个字段启用地址过滤硬件之前对过滤器基址和大小寄存器进行编程。WBF字段734用来清空芯片组内部写缓冲区。这样做是为了确保过滤器位图表更新不被保存在任何内部写记录缓冲区中。软件断言这个字段以发出写缓冲区清空命令。DMA重映射电路135对其求反以提供对写缓冲区清空完成的指示。软件应该读回并检查该字段被否定以确认清空完成。FCI字段736使地址过滤器位图缓存无效。软件断言这个字段以请求地址过滤器缓存无效。DMA重映射电路135对它求反以指示使无效完成。软件应该读回并检查这个字段被否定以确认无效完成。FTP字段738表示保护地址过滤器位图区。当它被软件断言时,硬件启动保护来自DMA访问的地址过滤器位图区。软件应该读回该字段并检查它被断言以确保该地址过滤器位图区得到了保护。当它被软件求反时,DMA重映射电路135停止保护来自DMA访问的地址过滤器位图区。
FFLT_REG报告地址过滤硬件检测到的错误。如果DMA重映射电路135不支持地址过滤,这个寄存器被当作保留(如,写被忽略,读返回0)。它包括错误地址(FA,Faulting Address)字段742、类型(T)字段744和有效(V)字段746。FA字段742是出错的DMA请求所访问的位置的帧地址。T字段744表示出错的DMA请求的存储器访问类型。当被否定时,它表示DMA写。当被断言时,它表示DMA读请求。V字段746表示出错的DMA请求的页帧地址是否被锁存。当它被断言时,出错的DMA请求的页帧地址被锁存在出错地址字段中,并且不再锁存更多的地址过滤错误地址。软件应该明确地通过写对这个字段求反以重新启用地址过滤错误记录。
图8A示出了依照本发明的一个实施例的根入口520。根入口520包括存在(P)字段810和上下文入口表指针(CEP)字段815。
P字段810表示根入口是否存在。当被否定时,它表示根入口不存在并且不应该被使用。DMA重映射电路135使通过这个根入口处理的DMA请求出错。当被断言时,它表示根入口存在并且可以被用来处理事务。
CEP字段815是这个总线的上下文表的指针。上下文表的大小是4KB并且是页对齐的。
图8B示出了依照本发明的一个实施例的上下文入口535。上下文入口535包括存在(P)字段822,多级(M)字段830、地址空间根(ASR)字段834、客户机地址宽度(GAW)字段836、错误处理(FP)字段840以及域标识符(DID)字段842。上下文入口535具有与图6中所示缺省寄存器DEF_REG 640类似的字段。通常,P字段822和M字段830为单比特指示符。
P字段822、M字段830、ASR字段834和GAW字段836分别与图6中所示缺省寄存器(DEF_REG 640)中的P字段642、M字段650、ASR字段654以及GAW字段656类似。
DID字段842是这个上下文入口所属域的标识符。软件应该确保所有设备使用相同的页表结构,因此具有同样转换过的地址,在它们的上下文入口具有相同的域标识符。DMA重映射电路135可以使用域标识符标记在使用了缓存支持时它的缓存的入口。
图8C示出了依照本发明的一个实施例的页表入口(PTE)565。PTE565包括可读(R,Readable)字段850、可写(W,Writable)字段852、相干(C,Coherent)字段854、超级页面(SP,Super Page)字段856以及地址(ADDR)字段860。注意可以定义比这些或多或少的字段。
R字段850表示页面对DMA是否可读。当被否定时,它表示页面对DMA读请求不可访问。通过这个页表入口处理的DMA读请求被阻塞。如果启动了错误报告,就产生转换错误。当被断言时,它表示该页面可以对DMA读请求访问。
W字段852表示页面是否对DMA可写。当被否定时,它表示该页面对DMA写请求不可访问。通过这个页表入口处理的DMA写请求被阻塞。如果启用了错误报告,就产生转换错误。当被断言时,它表示该页面对DMA写请求可访问。
C字段854规定对转换出的主机物理地址的访问是否相干。当被否定时,它表示对转换出的主机物理地址的DMA访问遵循I/O事务中规定的相干性属性。例如,带有“no-snoop”属性集的PCI-X或PCI-Express请求访问转换出的主机物理地址而不被监听。当被断言时,它表示对转换出的主机物理地址的DMA访问被当作相干处理。软件应该确保这个字段在下列情况下被当作保留(0):在所有页表入口中,如果DMA重映射电路135不支持C字段的被断言设置(如能力寄存器中所报告的那样),以及在SP字段被否定的非叶页表入口中。
SP字段854向DMA重映射电路135表示这是一个叶子页表入口并且完成了页面游走。当被否定时,它表示继续进行页面游走并使用下级表。当被断言时,它表示停止表游走并用进行页面游走的客户机物理地址中的未使用的低位连同ADDR字段860中提供的页基址的高位形成主机物理地址。DMA重映射电路135仅在与它所支持的如能力寄存器中所报告的超级页大小对应的页表入口中才对SP字段854求值。软件在下列情况下应该将这个字段看作是保留的(如0):(1)多级页表中的4KB叶子页表入口,(2)与DMA重映射电路135不支持的超级页大小对应的多级页表中的非叶页表入口,(3)单级页表中的页表入口。
如果这是叶结点,则ADDR字段860包含了页帧的主机物理地址(HPA)。否则它包含下级页表的指针。这个字段是大小对齐的。
注意可以定义附加字段以进一步表征地址转换机制的属性。例如,可以定义下列属性:启动基址/边界转换的基址/边界属性,表示多级表转换中第一级页表大小的跨距(stride)属性,表示是否允许I/O事务不经转换就直接通过的直通(pass through)属性。
地址转换机制
为了通过软件支持不同粒度的物理存储器管理支持,DMA重映射结构定义了三种类型的地址转换结构。芯片组实现可以支持这些转换结构中的一种或多种并通过它的能力寄存器报告所支持的类型。这些机制提供了不同的成本、复杂度和性能折衷。对于支持多种转换结构的实现,可以对每个上下文入口编程以使用不同的转换结构类型。
定义了下列地址转换结构:(1)多级页表结构,以能够通过多级页面大小的页表进行以页为粒度的区域分配,每个页表都在页面大小的区域中;(2)单级页表结构,以能够通过单个连续的页表完成以页为粒度的区域分配;(3)基址/边界转换结构,以能够将连续的区域分配给域。上述任一转换结构都可以被选择为缺省或任选。
图9A示出了使用依照本发明的一个实施例的多级表的地址转换结构540。地址转换结构540包括上下文入口535、调整后的客户机物理地址(AGPA)910、第一级页表920、中间表930、叶结点表940以及页面950。多级表包括多个以分层方式布置的转换表。
上下文入口535中的ASR字段为第一级页表920提供了基址。AGPA 910包括偏移字段912、叶结点页表字段914、中间页表字段916以及第一级页表字段918。应该注意多级页表中的级数可以是取决于AGPA 910的宽度、存储器空间、存储器管理策略、字长以及任何其它实现因素的任何适当的数。
第一级页表字段918和ASR提供的第一级基址被合并在一起以索引第一级页表920。在一个实施例中,每个入口是8个字节,第一级页表字段918被移位器922移位3位,然后被加法器924加到第一级基址上以提供对第一级页表920的第一级索引。索引的第一级页表入口提供了中间级页表930的中间基址。
中间页表字段916和中间基址被合并在一起以索引中间级页表930。因为每个入口是8个字节,中间级页表字段918被移位器932移位3位,然后被加法器934加到中间级基址上以提供对中间级页表930的中间级索引。索引的中间级页表入口提供了叶结点页表940的页结点基址。
叶结点页表字段914和叶结点基址被合并在一起以索引叶结点页表940。因为每个入口是8个字节,叶结点页表字段914被移位器942移位3位,然后被加法器944加到叶结点基址上以提供对叶结点页表940的叶结点索引。索引的叶结点页表入口提供了页面950的主机基址。
偏移912和该主机基址随后被组合在一起以产生页面950中的主机物理地址。
多级页表使得软件能够以页(如4K)粒度管理主机物理存储器并用页-目录和页表设置分层结构。逻辑电路224实现了页面游走逻辑并用DMA事务中提供的GPA遍历这些结构。转换DMA请求中的GPA需要遍历的页表级最大数是相对应的上下文入口的客户机地址宽度的函数。软件可以通过能力寄存器查询由DMA重映射电路135的给定硬件实现所支持的最大客户机地址宽度。
使P为常规页面大小。使Q为每个入口的字节数。使p和q满足2p=P,2q=Q。一个域的调整后客户机地址宽度(AGAW)是调整后的它的客户机地址宽度(GAW)值,使得(AGAW-p)是(p-g)的倍数。如下确定AGAW:
R=(GAW-p)MOD(p-q);
if(R==0){
AGAW=GAW;
}else{
AGAW=GAW+(p-q)-R;
}
例如,假定P=4K,Q=8,则p=12,q=3。分配到2GB存储器的域的GAW是31。该AGAW计算如下:R=(31-12)mod 9=1,AGAW=31+9-1=39。
调整后的客户机地址宽度(AGAW)表示页面游走的级数。DMA重映射电路135支持规定的AGAW,那里相应的GAW等于主机地址宽度。当对一个域使用多级页表时,软件如上所述计算调整后的客户机地址宽度(AGAW)。软件在设置多级页表结构时使用AGAW。它将这个域的GAW和AGAW编程在指定给这个域的所有设备的上下文入口中。
DMA重映射电路135还可以支持更小的调整后的客户机地址宽度。它可以通过能力寄存器报告所支持的调整后的客户机地址宽度。软件应该确保它在为一个域设置多级页表时使用下层硬件实现所支持的AGAW。软件还应该将该域的AGAW编程在指定给这个域的设备的上下文入口中。
通过规定了多级地址转换的上下文入口处理的DMA请求由DMA重映射电路135如下处理:
1.根据DMA重映射电路135是否支持页面边界跨越使用DMA请求中规定的GPA/长度组合。如果DMA重映射电路135支持跨越页面边界的DMA请求并且GPA/长度组合表示DMA请求跨越了页面边界,就对DMA请求所指向的各个页面区域独立进行地址转换。如果DMA重映射电路135不支持跨越页面边界的DMA请求并且GPA/长度组合表示DMA请求跨越了页面边界,就产生地址转换错误。
2.如果上下文入口中所编程的GAW字段不是能力寄存器中报告的、由DMA重映射电路135支持的调整后的客户机地址宽度,该DMA请求就被阻塞,同时产生地址转换错误。
3.验证DMA请求中的GPA在该设备被指定到的域的客户机物理地址空间中。试图访问地址(2X-1)之上的存储器位置的任何DMA请求都被阻塞,其中X是用来处理这个DMA请求的上下文入口中编程的客户机地址宽度。
4.如果上述检查成功,DMA请求中的GPA被调整为X位以形成调整的客户机物理地址(AGPA),其中X是用来处理这个DMA请求的上下文入口中编程的客户机地址宽度。根据对该多级页表结构的编程,对该AGPA的DMA请求或者被阻塞,或者被转换成有效的HPA。
5.DMA重映射电路135对步骤4产生的HPA进行普通的芯片组地址解码,并将该DMA请求当作对存储器的访问或端-到-端请求处理。
6.如果转换出的HPA被解码成指向存储器,就根据对相干性(C,Coherence)属性设置的支持访问该HPA。如果DMA重映射电路135只支持页表入口中对相干性(C)属性的否定设置,就根据该DMA请求中规定的(或从中推导出的)相干性访问存储器。例如,如果PCI Express请求规定DMA请求为不被监听,存储器被访问而不被监听。如果DMA重映射电路135支持页表入口中相干性(C)属性的断言或否定设置,就根据用来对该DMA请求进行地址转换的叶子页表入口中对相干性属性的编程访问存储器。
图9B示出了使用依照本发明的一个实施例的单表的地址转换结构540。该地址转换结构540包括上下文入口535、客户机物理地址(GPA)960、单页表970和页面980。
单级页表为软件提供了一种替代机制以提供4K粒度页面分配而没有长的页面游走,但代价是预留了大的连续的页表结构。单级页表的页表入口大小(如64位)和格式与前面几节中所述多级页表结构的页表入口类似,区别是跨距(stride)字段被当作保留字段。
页表的大小取决于客户机地址空间的大小。例如,对于1GB的客户机寻址能力(GAW=30),软件需要分配2MB的页表,有218个页表入口。I/O转换后备缓冲器(TLB)也适用于使用单级页表的地址转换。
通过规定了单级地址转换的上下文入口处理的DMA请求由DMA重映射电路135如下处理:
1.根据DMA重映射电路135是否支持页面边界跨越使用DMA请求中规定的GPA/长度组合。如果DMA重映射电路135支持跨越页面边界的DMA请求并且GPA/长度组合表示该DMA请求跨越了页面边界,就对该DMA请求所指向的各个页面区域独立进行地址转换。如果DMA重映射电路135不支持跨越页面边界的DMA请求并且GPA/长度组合表示跨越页面边界的DMA请求,就产生地址转换错误。
2.如果上下文入口中所编程的GAW字段不在最小值(如21)和能力寄存器中的DMA重映射电路135报告的最大客户机地址宽度(MGAW)之间,该DMA请求就被阻塞,同时产生地址转换错误。
3.验证DMA请求将访问该设备被指定到的域的客户机物理地址空间中的地址。试图访问(2X-1)之上的存储器位置的任何DMA请求都被阻塞,X是用来处理这个DMA请求的上下文入口中编程的客户机地址宽度(GAW字段)。
4.如果上述检查成功,DMA重映射电路135使用位(X-1):12查询单级页表中的页表入口。根据对页表入口的编程,该DMA请求或者被阻塞,或者被转换成有效的HPA。
5.DMA重映射电路135对步骤4产生的HPA进行普通的芯片组地址解码,并将该DMA请求当作对存储器的访问或端-到-端请求处理。
6.如果转换出的HPA被解码成指向存储器,就根据对相干性(C,Coherency)属性设置的支持访问该HPA。如果DMA重映射电路135只支持页表入口中对相干性(C)属性的否定设置,就根据该DMA请求中规定的(或从中推导出的)相干性访问存储器。例如,如果PCI Express请求规定DMA请求为不被监听,存储器被访问而不被监听。如果DMA重映射电路135支持页表入口中相干性(C)属性的断言的或否定的设置,就根据用来对该DMA请求进行地址转换的页表入口中对相干性属性的编程访问存储器。
上下文入口535中的ASR字段提供了基址以定位单页表970。GPA960包括偏移字段962以及页表字段964。单页表970包含指向与GPA960对应的主机物理地址所在页的页表入口。
为了查找相应的页表入口,页表字段964和ASR字段提供的基址被合并在一起。因为每个入口占据了8个字节,页表字段964被移位器972移位3位然后被加法器974加到ASR上以提供对单页表970的索引。
与该索引对应的页表入口为页面980提供了基址。偏移字段962被加法器984加到了这个基址上以提供页面980中最终得到的HPA。
图9C示出了使用依照本发明的一个实施例的基址/边界转换的地址转换结构540。该地址转换结构540包括上下文入口535、客户机物理地址(GPA)960和物理存储器空间990。
基址-边界提供了最简单形式的地址转换,这里,DMA请求中的GPA被用作从那个域的基址开始的偏移。该域的基址是主机物理地址并且是通过上下文入口535的ASR字段834(图8B)被编程设置的。上下文入口中的客户机地址宽度(GAW)表示偏移限制。DMA重映射电路135阻塞对GAW所表示的限制之上的客户机地址的任何DMA请求。
在一个实施例中,主机物理地址是64位。对于有效的客户机地址(如GAW寻址能力之内的地址)来说,DMA重映射电路135进行下列操作以产生主机物理地址:
主机物理地址[63:GAW]=地址空间根[63:GAW]
主机物理地址[GAW-1:0]=客户机物理地址[GAW-1:0]
尽管已经根据若干实施例对本发明进行了说明,但本领域的技术人员将会认识到本发明并不仅限于所说明的实施例,而是可以用在所附权利要求的精神和范围内的改进和变化实践本发明。因而本说明书被看作是说明性的而非限制性的。
Claims (48)
1.一种装置,包括:
一表结构,由规定客户机物理地址并被I/O设备所请求的输入/输出(I/O)事务的源标识符索引以将I/O设备映射到指定给该I/O设备的域;和
与该表结构相耦合的一地址转换结构,以将客户机物理地址转换成与I/O事务对应的主机物理地址。
2.权利要求1的装置,其中该表结构包含:
根表,以存储由源标识符的一部分索引的根入口;和
与根表相耦合的上下文表,以存储由根入口参考的上下文入口,上下文入口将I/O设备映射到该域。
3.权利要求2的装置,其中每个根入口包含:
根存在指示符,以指示各个根入口是否存在;
上下文表指针,以参考上下文表。
4.权利要求2的装置,其中每个上下文入口包含:
上下文存在指示符,以指示各个上下文入口是否存在;
域标识符,以标识域;
客户机地址宽度,以规定域的物理地址空间的大小;
地址空间根,以规定域或地址转换结构中的页表的物理地址空间的基址。
5.权利要求4的装置,其中每个上下文入口还包含:
至少转换属性,以表征地址转换结构所用的转换机制;
至少错误处理属性,以表征处理错误的错误处理机制。
6.权利要求5的装置,其中该至少转换属性包含:
表属性,以指示是否使用单表或多级表转换。
7.权利要求4的装置,其中客户机地址宽度包含:
调整过的客户机地址宽度,指示为多级表转换而调整的客户机地址宽度。
8.权利要求1的装置,其中该地址转换结构包含:
多个多级页表,每个页表都有可配置的大小并且包含页表入口,每个页表入口提供了下级页表的基址或主机物理地址的页面基址。
9.权利要求1的装置,其中该地址转换结构包含:
其大小取决于页面大小和客户机物理地址大小的单页表,该单页表包含页表入口,每个页表入口提供了主机物理地址的页面基址。
10.权利要求4的装置,其中该地址转换结构包含:
使用地址空间根作为主机物理地址的页面基址的基址/边界转换机制。
11.权利要求8的装置,其中每个页表入口包含:
地址说明符,以规定下级页表的基址或主机物理地址的页面基址;
可读指示符,以指示页面对该I/O是否可读;
可写指示符,以指示页面对该I/O是否可读;
超级-页面属性,以指示各个页表入口是否是叶子-结点入口。
12.权利要求9的装置,其中每个页表入口还包含:
相干属性,以表示对转换的主机物理地址的访问是否相干。
13.一种方法,包括:
用规定了客户机物理地址并被一I/O设备所请求的输入/输出(I/O)事务的源标识符索引一表结构以将I/O设备映射到指定给该I/O设备的域;和
使用一地址转换结构将该客户机物理地址转换成与I/O事务对应的主机物理地址。
14.权利要求13的方法,其中索引该表结构包含:
用该源标识符索引一存储根入口的根表;
通过用根入口参考一上下文表而将该I/O设备映射到域,上下文表存储了上下文入口。
15.权利要求14的方法,其中索引该根表包含:
用根存在指示符指示各个根入口是否存在;
用上下文表指针参考上下文表。
16.权利要求14的方法,其中映射该I/O设备包含:
用上下文存在指示符指示各个上下文入口是否存在;
用域标识符标识域;
用客户机地址宽度规定域的物理地址空间的大小;
用地址空间根规定域或地址转换结构中的页表的物理地址空间的基址。
17.权利要求16的方法,其中映射该I/O设备还包含:
用至少一转换属性表征地址转换结构所用的转换机制;
用至少一错误处理属性表征处理错误的错误处理机制。
18.权利要求17的方法,其中表征转换机制包含:
用一表属性指示使用单表还是多级表转换。
19.权利要求16的方法,其中定义物理地址空间大小包含:
用调整过的客户机地址宽度指示为多级表转换而调整的客户机地址宽度。
20.权利要求13的方法,其中转换客户机物理地址包含:
由多个多级页表中的每个页表入口提供下级页表的基址或主机物理地址的页面基址,每个都有可配置的大小。
21.权利要求13的方法,其中转换客户机物理地址包含:
由其大小取决于页面大小和客户机物理地址大小的单页表的每个页表入口提供主机物理地址的页面基址。
22.权利要求16的方法,其中转换客户机物理地址包含:
在基址/边界转换机制中使用地址空间根作为主机物理地址的页面基址。
23.权利要求20的方法,其中提供下级页表的基址或主机物理地址的页面基址包含:
用地址说明符规定下级页表的基址或主机物理地址的页面基址;
指示页面对该I/O事务是否可读;
指示页面对该I/O事务是否可写;
用超级-页面属性指示各个页表入口是否是叶子-结点入口。
24.权利要求21的方法,其中提供主机物理地址的页面基址还包含:
指示对转换的主机物理地址的访问是否相干;
用超级-页面属性指示各个页表入口是否是叶子-结点入口。
25.一种系统,包含:
存储器;
请求I/O事务的输入/输出(I/O)设备,该I/O设备具有源标识符,该I/O事务指定客户机物理地址;
与该I/O设备相耦合的芯片组,该芯片组包括一重映射电路,该重映射电路包含:
一表结构,由源标识符索引以将I/O设备映射到指定给存储器中的I/O设备的域;和
与该表结构相耦合的一地址转换结构,以将客户机物理地址转换成与I/O事务对应的主机物理地址。
26.权利要求25的系统,其中该表结构包含:
根表,以存储由源标识符索引的根入口;和
与根表相耦合的上下文表,以存储由根入口参考的上下文入口,上下文入口将I/O设备映射到域。
27.权利要求26的系统,其中每个根入口包含:
根存在指示符,以指示各个根入口是否存在;
上下文表指针,以参考上下文表。
28.权利要求26的系统,其中每个上下文入口包含:
上下文存在指示符,以指示每个上下文入口是否存在;
域标识符,以标识域;
客户机地址宽度,以规定域的物理地址空间的大小;
地址空间根,以规定域或地址转换结构中的页表的物理地址空间的基址。
29.权利要求28的系统,其中每个上下文入口还包含:
至少一转换属性,以表征地址转换结构所用的转换机制;
至少一错误处理属性,以表征处理错误的错误处理机制。
30.权利要求29的系统,其中该至少转换属性包含:
表属性,以指示使用单表还是多级表转换。
31.权利要求28的系统,其中客户机地址宽度包含:
调整过的客户机地址宽度,以指示为多级表转换而调整的客户机地址宽度。
32.权利要求25的系统,其中该地址转换结构包含:
多个多级页表,每个都有可配置的大小并且包含页表入口,每个页表入口提供了下级页表的基址或主机物理地址的页面基址。
33.权利要求25的系统,其中该地址转换结构包含:
其大小取决于页面大小和客户机物理地址大小的单页表,该单页表包含页表入口,每个页表入口提供了主机物理地址的页面基址。
34.权利要求28的系统,其中该地址转换结构包含:
使用地址空间根作为主机物理地址的页面基址的基址/边界转换机制。
35.权利要求32的系统,其中每个页表入口包含:
地址说明符,以规定下级页表的基址或主机物理地址的页面基址;
可读指示符,以指示页面对该I/O是否可读;
可写指示符,以指示页面对该I/O是否可读;
超级-页面属性,以表示每个页表入口是否是叶子-结点入口。
36.权利要求33的系统,其中每个页表入口包含:
相干属性,以指示对转换的主机物理地址的访问是否相干。
37.一种制造产品,包含:
计算机可访问介质,它所包括的数据当被机器访问时使该机器完成下列操作:
用规定了客户机物理地址并被一I/O设备所请求的输入/输出(I/O)事务的源标识符索引一表结构以将I/O设备映射到指定给该I/O设备的域;和
使用一地址转换结构将该客户机物理地址转换成与I/O事务对应的主机物理地址。
38.权利要求37的制造商品,其中使该机器执行索引该表结构的数据包含使该机器进行下列操作的数据:
用该源标识符索引一根表;以及
通过用根入口参考上下文表而将该I/O设备映射到域,该上下文表存储了上下文入口。
39.权利要求38的制造商品,其中使该机器执行索引该根表的数据包含使该机器进行下列操作的数据:
用根存在指示符指示每个根入口是否存在;以及
用上下文表指针参考上下文表。
40.权利要求38的制造商品,其中使该机器执行映射I/O设备的数据包含使该机器进行下列操作的数据:
用上下文存在指示符指示每个上下文入口是否存在;
用域标识符标识域;
用客户机地址宽度规定域的物理地址空间的大小;
用地址空间根规定域或地址转换结构中的页表的物理地址空间的基址。
41.权利要求40的制造商品,其中使该机器执行映射I/O设备的数据还包含使该机器进行下列操作的数据:
用至少一转换属性表征地址转换结构所用的转换机制;
用至少一错误处理属性表征处理错误的错误处理机制。
42.权利要求41的制造商品,其中使该机器执行表征转换机制的数据包含使该机器进行下列操作的数据:
用一表属性指示使用单表还是多级表转换。
43.权利要求40的制造商品,其中使该机器执行定义物理地址空间大小的数据包含使该机器进行下列操作的数据:
用调整过的客户机地址宽度指示为多级表转换而调整的客户机地址宽度。
44.权利要求37的制造商品,其中使该机器执行客户机物理地址的转换的数据包含使该机器进行下列操作的数据:
由多个多级页表中的每个页表入口提供下级页表的基址或主机物理地址的页面基址,每个页表具有可配置的大小。
45.权利要求37的制造商品,其中使该机器进行客户机物理地址的转换的数据包含使该机器进行下列操作的数据:
由其大小取决于页面大小和客户机物理地址大小的单页表中的每个页表入口提供主机物理地址的页面基址。
46.权利要求40的制造商品,其中使该机器进行客户机物理地址的转换的数据包含使该机器进行下列操作的数据:
在基址/边界转换机制中使用地址空间根作为主机物理地址的页面基址。
47.权利要求44的制造商品,其中使该机器执行提供下级页表的基址或主机物理地址的页面基址的数据包含使该机器进行下列操作的数据:
用地址说明符指示下级页表的基址或主机物理地址的页面基址;
指示页面对该I/O事务是否可读;
指示页面对该I/O事务是否可写;
用超级-页面属性指示每个页表入口是否是叶子-结点入口。
48.权利要求45的制造商品,其中使该机器执行提供主机物理地址的页面基址的数据还包含使该机器进行下列操作的数据:
指示对转换的主机物理地址的访问是否相干;
用超级-页面属性指示每个页表入口是否是叶子-结点入口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/956,198 US7444493B2 (en) | 2004-09-30 | 2004-09-30 | Address translation for input/output devices using hierarchical translation tables |
US10/956,198 | 2004-09-30 | ||
PCT/US2005/031315 WO2006039051A1 (en) | 2004-09-30 | 2005-09-01 | Address translation for input/output devices using hierarchical translation tables |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101031893A true CN101031893A (zh) | 2007-09-05 |
CN101031893B CN101031893B (zh) | 2010-05-12 |
Family
ID=35406173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800334073A Expired - Fee Related CN101031893B (zh) | 2004-09-30 | 2005-09-01 | 使用分层转换表对输入/输出设备的地址转换 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7444493B2 (zh) |
KR (1) | KR20070052334A (zh) |
CN (1) | CN101031893B (zh) |
DE (1) | DE112005002304B4 (zh) |
GB (1) | GB2431757B (zh) |
TW (1) | TWI285315B (zh) |
WO (1) | WO2006039051A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193816A (zh) * | 2010-03-12 | 2011-09-21 | 中国长城计算机深圳股份有限公司 | 一种设备分配方法及系统 |
CN102792285A (zh) * | 2010-03-15 | 2012-11-21 | Arm有限公司 | 层级转换表控制 |
CN102906719A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 输入/输出地址到存储器地址的转换 |
CN103970687A (zh) * | 2013-02-05 | 2014-08-06 | 中兴通讯股份有限公司 | 一种访问地址处理系统及方法 |
CN104516833A (zh) * | 2013-09-26 | 2015-04-15 | 凯为公司 | 用于多个顺序地址转换的合并的tlb结构 |
US9134911B2 (en) | 2010-06-23 | 2015-09-15 | International Business Machines Corporation | Store peripheral component interconnect (PCI) function controls instruction |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
CN105938460A (zh) * | 2015-03-02 | 2016-09-14 | Arm 有限公司 | 存储器管理 |
US10042778B2 (en) | 2013-09-26 | 2018-08-07 | Cavium, Inc. | Collapsed address translation with multiple page sizes |
WO2018176393A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Techniques for virtual machine transfer and resource management |
CN109074308A (zh) * | 2016-04-22 | 2018-12-21 | 微软技术许可有限责任公司 | 适应性的块转换表(btt) |
CN110874332A (zh) * | 2016-08-26 | 2020-03-10 | 北京中科寒武纪科技有限公司 | 内存管理单元及其管理方法 |
CN113704142A (zh) * | 2021-09-02 | 2021-11-26 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
Families Citing this family (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149832B2 (en) * | 2004-11-10 | 2006-12-12 | Microsoft Corporation | System and method for interrupt handling |
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 |
US7487327B1 (en) | 2005-06-01 | 2009-02-03 | Sun Microsystems, Inc. | Processor and method for device-specific memory address translation |
US7370137B2 (en) * | 2005-06-06 | 2008-05-06 | Intel Corporation | Inter-domain data mover for a memory-to-memory copy engine |
US20060288130A1 (en) * | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
US7793067B2 (en) * | 2005-08-12 | 2010-09-07 | Globalfoundries Inc. | Translation data prefetch in an IOMMU |
US7516247B2 (en) * | 2005-08-12 | 2009-04-07 | Advanced Micro Devices, Inc. | Avoiding silent data corruption and data leakage in a virtual environment with multiple guests |
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 |
US7613898B2 (en) * | 2006-01-17 | 2009-11-03 | Globalfoundries Inc. | Virtualizing an IOMMU |
US7653803B2 (en) * | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
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 |
US8032672B2 (en) | 2006-04-14 | 2011-10-04 | Apple Inc. | Increased speed of processing of audio samples received over a serial communications link by use of channel map and steering table |
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 |
CN101715575A (zh) * | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US9189265B2 (en) | 2006-12-21 | 2015-11-17 | Vmware, Inc. | Storage architecture for virtual machines |
US9354927B2 (en) * | 2006-12-21 | 2016-05-31 | Vmware, Inc. | Securing virtual machine data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
GB2460014B (en) * | 2008-04-28 | 2011-11-23 | Virtensys Ltd | Method of processing data packets |
US8132167B2 (en) * | 2008-12-23 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Context based virtualization |
US8234432B2 (en) * | 2009-01-26 | 2012-07-31 | Advanced Micro Devices, Inc. | Memory structure to store interrupt state for inactive guests |
US8473644B2 (en) * | 2009-03-04 | 2013-06-25 | Freescale Semiconductor, Inc. | Access management technique with operation translation capability |
US20100228943A1 (en) * | 2009-03-04 | 2010-09-09 | Freescale Semiconductor, Inc. | Access management technique for storage-efficient mapping between identifier domains |
US8195917B2 (en) * | 2009-07-01 | 2012-06-05 | Advanced Micro Devices, Inc. | Extended page size using aggregated small pages |
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 |
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 |
US20110197004A1 (en) * | 2010-02-05 | 2011-08-11 | Serebrin Benjamin C | Processor Configured to Virtualize Guest Local Interrupt Controller |
US8650335B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Measurement facility for adapter functions |
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 |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8504754B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Identification of types of sources of adapter interruptions |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8683108B2 (en) | 2010-06-23 | 2014-03-25 | International Business Machines Corporation | Connected input/output hub management |
US8566480B2 (en) | 2010-06-23 | 2013-10-22 | International Business Machines Corporation | Load instruction for communicating with adapters |
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 |
US8478922B2 (en) | 2010-06-23 | 2013-07-02 | International Business Machines Corporation | Controlling a rate at which adapter interruption requests are processed |
US8549182B2 (en) | 2010-06-23 | 2013-10-01 | International Business Machines Corporation | Store/store block instructions for communicating with adapters |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
US8505032B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Operating system notification of actions to be taken responsive to adapter events |
US8650337B2 (en) * | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
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 |
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 |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8510599B2 (en) | 2010-06-23 | 2013-08-13 | International Business Machines Corporation | Managing processing associated with hardware events |
US8639858B2 (en) | 2010-06-23 | 2014-01-28 | International Business Machines Corporation | Resizing address spaces concurrent to accessing the address spaces |
US8954959B2 (en) * | 2010-09-16 | 2015-02-10 | Red Hat Israel, Ltd. | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU |
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 |
CN103188099B (zh) * | 2011-12-30 | 2016-03-30 | 中国移动通信集团上海有限公司 | 一种多应用系统的备份方法、装置及系统 |
JP5862408B2 (ja) * | 2012-03-27 | 2016-02-16 | 富士通株式会社 | エミュレーション装置、及びエミュレーションプログラム |
US9740518B2 (en) | 2012-09-12 | 2017-08-22 | Nxp Usa, Inc. | Conflict detection circuit for resolving access conflict to peripheral device by multiple virtual machines |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
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 |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9009368B2 (en) | 2012-10-23 | 2015-04-14 | Advanced Micro Devices, Inc. | Interrupt latency performance counters |
US9904802B2 (en) | 2012-11-23 | 2018-02-27 | Nxp Usa, Inc. | System on chip |
WO2015008112A1 (en) | 2013-07-18 | 2015-01-22 | Freescale Semiconductor, Inc. | System on chip and method therefor |
US9355052B2 (en) * | 2013-08-23 | 2016-05-31 | International Business Machines Corporation | Dynamically resizing direct memory access (DMA) windows |
US9268694B2 (en) * | 2013-09-26 | 2016-02-23 | Cavium, Inc. | Maintenance of cache and tags in a translation lookaside buffer |
US9208103B2 (en) * | 2013-09-26 | 2015-12-08 | Cavium, Inc. | Translation bypass in multi-stage address translation |
US9304707B1 (en) * | 2013-10-30 | 2016-04-05 | Ca, Inc. | Transferring high volume data between operating systems |
US9715449B2 (en) * | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
US9824021B2 (en) | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
US9734083B2 (en) | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
US9690719B2 (en) | 2014-09-11 | 2017-06-27 | Nxp Usa, Inc. | Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof |
WO2017058414A1 (en) * | 2015-09-29 | 2017-04-06 | Apple Inc. | Unified addressable memory |
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US10048881B2 (en) | 2016-07-11 | 2018-08-14 | Intel Corporation | Restricted address translation to protect against device-TLB vulnerabilities |
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 |
US10241925B2 (en) | 2017-02-15 | 2019-03-26 | Ati Technologies Ulc | Selecting a default page size in a variable page size TLB |
US10282309B2 (en) | 2017-02-24 | 2019-05-07 | Advanced Micro Devices, Inc. | Per-page control of physical address space distribution among memory modules |
US10339068B2 (en) | 2017-04-24 | 2019-07-02 | Advanced Micro Devices, Inc. | Fully virtualized TLBs |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10169185B1 (en) | 2017-08-12 | 2019-01-01 | International Business Machines Corporation | Efficient testing of direct memory address translation |
US10853263B1 (en) | 2019-07-23 | 2020-12-01 | Ati Technologies Ulc | Unified kernel virtual address space for heterogeneous computing |
US11593158B2 (en) | 2020-06-09 | 2023-02-28 | Kingston Digital Inc. | Universal peripheral extender for communicatively connecting peripheral I/O devices and smart host devices |
JP7537135B2 (ja) * | 2020-06-15 | 2024-08-21 | 富士通株式会社 | 半導体装置 |
US20210149815A1 (en) * | 2020-12-21 | 2021-05-20 | Intel Corporation | Technologies for offload device fetching of address translations |
US11989144B2 (en) | 2021-07-30 | 2024-05-21 | Advanced Micro Devices, Inc. | Centralized interrupt handling for chiplet processing units |
US11899593B2 (en) * | 2021-12-21 | 2024-02-13 | Intel Corporation | Method and apparatus for detecting ATS-based DMA attack |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4155119A (en) | 1977-09-21 | 1979-05-15 | Sperry Rand Corporation | Method for providing virtual addressing for externally specified addressed input/output operations |
JPS61190638A (ja) | 1985-02-20 | 1986-08-25 | Hitachi Ltd | 仮想計算機のフアイル制御方式 |
JPH0658650B2 (ja) | 1986-03-14 | 1994-08-03 | 株式会社日立製作所 | 仮想計算機システム |
US5491806A (en) * | 1990-06-26 | 1996-02-13 | Lsi Logic Corporation | Optimized translation lookaside buffer slice having stored mask bits |
GB2251102B (en) * | 1990-12-21 | 1995-03-15 | Sun Microsystems Inc | Translation lookaside buffer |
US6075938A (en) | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6233668B1 (en) * | 1999-10-27 | 2001-05-15 | Compaq Computer Corporation | Concurrent page tables |
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
CN1220143C (zh) * | 2001-01-12 | 2005-09-21 | 皇家菲利浦电子有限公司 | 存储器地址转换单元和方法以及包含这种单元的图像处理装置 |
US6938144B2 (en) * | 2001-03-22 | 2005-08-30 | Matsushita Electric Industrial Co., Ltd. | Address conversion unit for memory device |
US6725289B1 (en) | 2002-04-17 | 2004-04-20 | Vmware, Inc. | Transparent address remapping for high-speed I/O |
EP1517504B1 (en) * | 2003-09-19 | 2007-01-24 | Sun Microsystems, Inc. | Method and apparatus for protocol processing in a computer system applying memory address translation |
-
2004
- 2004-09-30 US US10/956,198 patent/US7444493B2/en not_active Expired - Fee Related
-
2005
- 2005-09-01 GB GB0703503A patent/GB2431757B/en not_active Expired - Fee Related
- 2005-09-01 WO PCT/US2005/031315 patent/WO2006039051A1/en active Application Filing
- 2005-09-01 CN CN2005800334073A patent/CN101031893B/zh not_active Expired - Fee Related
- 2005-09-01 DE DE112005002304.4T patent/DE112005002304B4/de not_active Expired - Fee Related
- 2005-09-01 KR KR1020077007259A patent/KR20070052334A/ko not_active Application Discontinuation
- 2005-09-05 TW TW094130360A patent/TWI285315B/zh not_active IP Right Cessation
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193816A (zh) * | 2010-03-12 | 2011-09-21 | 中国长城计算机深圳股份有限公司 | 一种设备分配方法及系统 |
CN102193816B (zh) * | 2010-03-12 | 2014-01-08 | 中国长城计算机深圳股份有限公司 | 一种设备分配方法及系统 |
CN102792285A (zh) * | 2010-03-15 | 2012-11-21 | Arm有限公司 | 层级转换表控制 |
CN102792285B (zh) * | 2010-03-15 | 2016-03-09 | Arm有限公司 | 用于处理数据的装置和方法 |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US9134911B2 (en) | 2010-06-23 | 2015-09-15 | International Business Machines Corporation | Store peripheral component interconnect (PCI) function controls instruction |
US9626298B2 (en) | 2010-06-23 | 2017-04-18 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
CN102906719B (zh) * | 2010-06-23 | 2015-07-08 | 国际商业机器公司 | 输入/输出地址到存储器地址的转换 |
CN102906719A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 输入/输出地址到存储器地址的转换 |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US9383931B2 (en) | 2010-06-23 | 2016-07-05 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
WO2014121639A1 (zh) * | 2013-02-05 | 2014-08-14 | 中兴通讯股份有限公司 | 一种访问地址处理系统、方法及计算机存储介质 |
CN103970687A (zh) * | 2013-02-05 | 2014-08-06 | 中兴通讯股份有限公司 | 一种访问地址处理系统及方法 |
CN103970687B (zh) * | 2013-02-05 | 2017-11-10 | 中兴通讯股份有限公司 | 一种访问地址处理系统及方法 |
CN104516833A (zh) * | 2013-09-26 | 2015-04-15 | 凯为公司 | 用于多个顺序地址转换的合并的tlb结构 |
CN104516833B (zh) * | 2013-09-26 | 2018-02-06 | 凯为公司 | 用于多个顺序地址转换的合并的tlb结构 |
US10042778B2 (en) | 2013-09-26 | 2018-08-07 | Cavium, Inc. | Collapsed address translation with multiple page sizes |
CN105938460A (zh) * | 2015-03-02 | 2016-09-14 | Arm 有限公司 | 存储器管理 |
CN105938460B (zh) * | 2015-03-02 | 2021-06-25 | Arm 有限公司 | 存储器管理 |
CN109074308A (zh) * | 2016-04-22 | 2018-12-21 | 微软技术许可有限责任公司 | 适应性的块转换表(btt) |
CN110874332A (zh) * | 2016-08-26 | 2020-03-10 | 北京中科寒武纪科技有限公司 | 内存管理单元及其管理方法 |
WO2018176393A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Techniques for virtual machine transfer and resource management |
US11556363B2 (en) | 2017-03-31 | 2023-01-17 | Intel Corporation | Techniques for virtual machine transfer and resource management |
US11995462B2 (en) | 2017-03-31 | 2024-05-28 | Intel Corporation | Techniques for virtual machine transfer and resource management |
CN113704142A (zh) * | 2021-09-02 | 2021-11-26 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
CN113704142B (zh) * | 2021-09-02 | 2022-06-14 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
Also Published As
Publication number | Publication date |
---|---|
CN101031893B (zh) | 2010-05-12 |
DE112005002304B4 (de) | 2018-01-11 |
GB2431757B (en) | 2008-09-10 |
KR20070052334A (ko) | 2007-05-21 |
TW200622620A (en) | 2006-07-01 |
TWI285315B (en) | 2007-08-11 |
GB0703503D0 (en) | 2007-04-04 |
US7444493B2 (en) | 2008-10-28 |
DE112005002304T5 (de) | 2007-09-27 |
GB2431757A (en) | 2007-05-02 |
WO2006039051A1 (en) | 2006-04-13 |
US20060075146A1 (en) | 2006-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101031893A (zh) | 使用分层转换表对输入/输出设备的地址转换 | |
JP4688879B2 (ja) | ダイレクトメモリアクセスアドレス変換のためのフォールト処理 | |
JP4772795B2 (ja) | 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上 | |
CN100585574C (zh) | 对于直接存储器存取地址转换的高速缓存支持 | |
CN101203838B (zh) | 直接存储器存取转换的地址窗口支持 | |
CA2568747C (en) | Accessing a memory in a logical partition | |
US7937534B2 (en) | Performing direct cache access transactions based on a memory access data structure | |
AMD et al. | Technology (IOMMU) specification | |
WO2013078085A1 (en) | Processor with kernel mode access to user space virtual addresses | |
US10430327B2 (en) | Virtual machine based huge page balloon support | |
US10430221B2 (en) | Post-copy virtual machine migration with assigned devices | |
US9875132B2 (en) | Input output memory management unit based zero copy virtual machine to virtual machine communication | |
US20090049204A1 (en) | Virtualization aware hard drive |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100512 Termination date: 20180901 |
|
CF01 | Termination of patent right due to non-payment of annual fee |