利用覆盖较大地址空间的转换表的地址转换性能增强的制作方法

文档序号:6656890阅读:260来源:国知局
专利名称:利用覆盖较大地址空间的转换表的地址转换性能增强的制作方法
背景发明领域本发明的实施例涉及微处理器领域,尤其涉及输入/输出(I/O)虚拟化。
相关技术的描述随着微处理器架构变得越来越复杂以支持高性能应用,I/O管理提出了挑战。
解决I/O管理的问题的现有技术具有几个缺点。一种技术利用仅软件的I/O虚拟化来支持虚拟机(VM)I/O。该技术具有有限的功能、性能和健壮性。由客机操作系统(OS)看到的功能和应用受到由VM监控程序(VMM)软件中仿真的虚拟设备所支持的功能的限制。客机I/O操作由VMM捕获,并在提交给底层物理设备硬件之前被代理或仿真,从而导致不良的性能。此外,用于硬件设备的设备驱动程序的全部或部分作为特许VMM软件的一部分来运行,这对平台的总体健壮性产生了不利的影响。采用专门的转换结构的技术可能仅支持特定的设备或有限的使用模型。一般的I/O存储器管理单元仅为有限大小或复杂度的I/O虚拟地址空间提供支持。
附图简述通过参考以下描述和用于示出本发明实施例的附图可最好地理解本发明的实施例。附图中

图1是示出其中可实施本发明的一个实施例的系统的图。
图2是示出根据本发明的一个实施例的输入/输出(I/O)设备分配的图。
图3是示出根据本发明的一个实施例的利用直接存储器存取(DMA)重映射的虚拟化的图。
图4是示出根据本发明的一个实施例的I/O地址转换的图。
图5是示出根据本发明的一个实施例的DMA重映射结构的图。
图6是示出根据本发明的一个实施例的含有共用寄存器的寄存器组的图。
图7是示出根据本发明的一个实施例的含有地址过滤寄存器的寄存器组的图。
图8A是示出根据本发明的一个实施例的根条目的图。
图8B是示出根据本发明的一个实施例的上下文条目的图。
图8C是示出根据本发明的一个实施例的页表条目的图。
图9A是示出根据本发明的一个实施例的利用多级表的地址转换结构的图。
图9B是示出根据本发明的一个实施例的利用单个表的地址转换结构的图。
图9C是示出根据本发明的一个实施例的利用基址/边界转换的地址转换结构的图。
图10是示出根据本发明的一个实施例的含有能力寄存器的寄存器组的图。
图11A是示出根据本发明的一个实施例的利用多表和跨距的地址转换结构的图。
图11B是示出根据本发明的一个实施例的利用多表和超页的地址转换结构的图。
描述本发明的一个实施例是一种用于增强地址转换性能的技术。寄存器存储能力指示符,以指示用于客机物理地址到主机物理地址的地址转换的芯片组中的电路所支持的能力。使用多个多级页表以在地址转换中进行页走查(page walking)。页表中的每一个具有页表条目。页表条目中的每一个至少具有一个对应于由能力指示符指示的能力的条目分类符(specifier)。
在以下描述中,陈述了众多具体细节。然而,应该理解,可在缺少这些具体细节的情况下实施本发明。在其它情况下,没有示出公知的电路、结构和技术以免使该描述的理解不清楚。
图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和ICH 150之类的存储器和输入/输出设备的控制和配置。MCH 130可被集成到集成了诸如隔离执行模式、主机到外围总线接口、存储器控制等多种功能的芯片组中。MCH 130直接地或经由ICH 150接口到外围总线155。为了清楚起见,没有示出所有的外围总线。可以构想系统100也可包括诸如外围部件互连(PCI)、PCI Express、加速图形断口(AGP)、工业标准架构(ISA)总线以及通用串行总线(USB)等的外围总线。
MCH 130包括直接存储器存取(DMA)重映射电路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)或静态随机存取存储器(SRAM)来实现。系统存储器可包括实现本发明的一个实施例的程序代码或代码段。系统存储器包括操作系统(OS)142,或OS的一部分,或内核以及I/O驱动程序145。OS 142或I/O驱动程序145的元素中的任一个可由硬件、软件、固件、微码或其任何组合来实现。系统存储器140也可包括未示出的其它程序或数据。
ICH 150具有被设计成支持I/O功能的多种功能。ICH 150也可与芯片组集成在一起或从MCH 130分离以执行I/O功能。ICH 150可包括多个接口和I/O功能,如接口到外围总线155的PCI总线接口、处理器接口、中断控制器、直接存储器存取(DMA)控制器、电源管理逻辑、定时器、系统管理总线(SM总线)、通用串行总线(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链路等传输介质传播的任何信号。代码段可经由诸如因特网、内联网等计算机网络来下载。机器可访问介质可被包含在制品中。机器可访问介质可包括数据,该数据在由机器访问时使得机器执行以下所述的操作。机器可访问介质也可包括嵌入于其中的程序代码。程序代码可包括用于执行以下所述的操作的机器可读代码。术语“数据”这里指的是为了机器可读的目的而编码的任何类型的信息。因此,它可包括程序、代码、数据、文件等。
本发明的全部或部分实施例可由硬件、软件、固件或其任何组合来实现。硬件、软件或固件元素可具有互相耦合的几个模块。硬件模块通过机械、电、光、电磁或任何物理连接耦合到另一个模块。软件模块通过功能、过程、方法、子程序、或子例程调用、跳转、链接、参数、变量以及形参传递、函数返回等耦合到另一个模块。软件模块耦合到另一个模块以接收变量、参数、形参、指针等,和/或生成或传递结果、更新的变量、指针等。固件模块可通过以上的硬件和软件耦合方法的任何组合来耦合到另一个模块。硬件、软件或固件模块可被耦合到另一硬件、软件或固件模块中的任一个。模块也可以是软件驱动程序或接口以与平台上运行的操作系统接口。模块也可以是硬件驱动程序以配置、设置、初始化、发送和接收至和自硬件设备的数据。装置可包括硬件、软件和固件模块的任何组合。
本发明的一个实施例可被描述为一般作为流程图、流图、结构图或框图来描述的进程。尽管流程图可将操作描述为顺序进程,但很多操作可并行或并发地执行。此外,可重新安排操作的顺序。进程在其操作完成时终止。进程可对应于方法、程序、过程、制造或加工的方法等。
在标准计算平台中,I/O子系统组件起到单个域的一部分的作用并由操作系统软件管理。本发明的一个实施例提供将计算平台中的I/O设备分配到多个域所需的硬件支持。
域被抽象地定义为平台中的隔离环境,并将主机物理存储器的子集分配给它。主机物理存储器被包括在系统存储器140中。允许直接访问分配给域的物理存储器的I/O设备称为域的已分配设备。域的隔离特性是通过阻断从未分配给它的资源对其物理存储器的访问来实现的。多个隔离的域通过确保所有的I/O设备被分配给某一域(可能是默认域),并通过限制从每一个分配的设备仅对分配给其域的物理存储器的访问来支持。
每一个域都具有物理存储器的视图、或物理地址空间,它与物理存储器的系统视图不同。由域的资源使用以访问其物理地址空间的地址称为其客机物理地址(GPA)。主机物理地址(HPA)指的是用于访问存储器的系统物理地址。如果域的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包括寄存器组200、DMA重映射结构222和逻辑电路224。寄存器组220包括提供由DMA重映射结构222、逻辑电路224和用于I/O设备的程序或驱动程序所使用的控制或状态信息的多个寄存器。DMA重映射结构222提供在客机物理地址到适当的域中的主机物理地址的重映射或地址转换中使用的基本结构、存储或表。逻辑电路224包括执行重映射或地址转换操作以及其它接口功能的电路。DMA重映射电路135可具有不同的实现以支持不同的配置并提供用于重映射或地址转换操作的不同能力。
利用DAM重映射电路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利用硬件将这些I/O缓冲器分配给特定的域以加强DMA域保护。在该模型中,OS将I/O地址转换和保护机制用作I/O存储管理单元(I/O MMU)。
虚拟化应用虚拟化技术允许在单个系统上创建一个或多个虚拟机(VM)。每一个VM可利用底层物理硬件资源同时运行。虚拟机允许多个操作系统实例在同一处理器上运行,从而提供诸如系统合并、传统迁移、活动分区和安全性等优点。
虚拟化架构一般涉及两类主要的软件组件(a)虚拟机监视监控程序(VMM)和(b)虚拟机(VM)。VMM软件层在最高特权级处运行,并具有对底层系统硬件的完整所有权。VMM允许VM共享底层硬件,并且还提供VM之间的隔离。
用于I/O虚拟化的仅软件方法的限制可通过利用DMA重映射电路135将I/O设备直接分配给VM来去除。采用设备的直接分配,用于已分配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。对于可在物理存储器中重新分配的VM(即,与HPA不同的GPA),可对DMA重映射电路135编程以完成必要的GPA到HPA转换。
有了对I/O设备分配的硬件支持,VMM实现可选择仅软件I/O虚拟化方法和用于将I/O设备资源呈现给VM的直接设备分配的组合。
图3是示出根据本发明的一个实施例的利用直接存储器访问(DMA)重映射的虚拟化的图。该虚拟化包括两个设备-设备A 310和设备B 312、DMA重映射电路135、VMM或主机OS 320、VM0340和VMn360。
两个设备-设备A 310和设备B 312是分别由两个VM 340和VM 360支持的两个I/O设备。DMA重映射电路315在缺少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重映射提供了DMA请求中的客机物理地址(GPA)从I/O设备到分配给其域的相应主机物理地址(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设备-设备1410和设备2412、DMA重映射电路135、物理存储器420和客机视图440。
I/O设备1 410和设备2 420被分配给两个分离的域。它们执行对地址DMA_ADR的I/O请求或DMA请求。DMA重映射电路135将这两个设备映射到物理存储器420中分配的相应的域。物理存储器420分配域1422和424以及域2426和428。可为这些设备分配更多或更少的已分配存储器部分。域1 422和424对应于设备1410,而域2424和428对应于设备1412。在图4所示的示例中,设备1 410被映射到域1 422,而设备2 412被映射或分配到域2 428。
客机视图440是来自客机I/O设备的逻辑视图。它包括域1 442和域2 444。域1 442对应于物理存储器420中的两个域1 422和424。域2 444对应于两个域2426和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事务的请求者身份确定始发设备以及向向其分配该始发设备的域。源标识符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到530U。在图5所示的示例中,有利用总线0和总线m的两个I/O事务。
对于PCI Express设备,根表520存储由源标识符510或源标识符510的总线编号516索引的根条目5250到525M-1。根条目起到顶级结构的作用以将特定总线上的设备映射到其相应的父域。根条目05250对应于利用总线0的I/O事务。根条目m 525m对应于利用总线m的I/O事务。根条目0 5250和根条目m 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)寄存器的主机物理地址空间中。转换硬件BAR寄存器以实现相关的方式被展示给软件。这可被展示为诸如存储器控制器设备之类的芯片组集成设备中之一中的PCI配置空间寄存器。在一个实施例中,BAR寄存器提供最小4K的地址窗口。寄存器组220中的一个寄存器可具有多个字段。可将字段置为肯定或否定。当字段仅由单个位组成时,置为肯定意味着该位被设为已定义的逻辑状态(例如,TRUE,逻辑1),而置为否定意味着该位被复位成作为置为肯定的状态的互补的已定义逻辑状态(例如,FALSE,逻辑0)。在下文中,对置为肯定或否定的状态的使用是任意的。可将一个字段置为肯定以指示第一状态,且可将其置为否定以指示第二状态,反之亦然。
寄存器中的字段可由DAM重映射电路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)字段622和写缓冲器刷新(WBF)字段624。
HE字段622是用于启用或禁用转换硬件的软件可编程控制字段。当被置为否定时,它指示禁止转换硬件。当被置为肯定时,它指示启用转换硬件。当更新该字段时,软件应读回并校验该字段以确认启用/禁用状态。
WBF字段624用于刷新芯片组内部写缓冲器。这用来确保对上下文表或页表的任何更新不被保持在任何内部写入缓冲器中。软件将该字段置为肯定以发出写缓冲器转储清楚命令。逻辑电路224将其置为否定以提供写缓冲器刷新完成的指示。软件应读回该断并校验它将被置为否定以确认刷新完成。
RTADDR_REG 630设置存储器驻留根表的基地址。软件应通过最后写入较低的双字(DWORD)来对该寄存器编程。它包括根表基地址(RTA)字段632和启用上下文条目(ECE)字段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。如果上下文条目没有被启用,则根据DEF_REG 640来处理DMA请求。
类似于其它上下文条目,可对默认上下文编程以加强特定类型的转换功能,如阻断、通过、过滤的地址、利用转换结构转换的地址等。
DEF_REG 640包括存在(P)字段642、单/多级表(M)字段650、地址空间根(ASR)字段654、客机地址宽度(GAW)字段656、错误处理字段660和域标识符(DID)字段662。通常,P字段642和M字段650是一位指示符。
在处理事务时应始终校验P字段642。当被置为否定时,它指示阻断通过该上下文条目的所有事务。当被置为肯定时,它指示基于其它字段的编程来处理通过该上下文条目的事务。
M字段650用于指示是否采用多级表转换。当被置为肯定时,它指示用于该上下文条目位的单级页表应用于索引在页表中的条目。当被置为否定时,它指示用于该上下文条目的多级页表应用于查找根表中的条目。
ASR字段654是地址空间根的按大小对齐的主机物理地址。当使用连续的地址空间时,该字段包含域的物理地址空间的基地址。当使用页表(单级或多级)时,该字段指向根表的基址。
GAW字段656仅对指定单级或多级页表的上下文条目有效。当采用多级页表时,该字段指示将由DMA重映射电路135用于页表走查的经调整的客机地址宽度(AGAM)。在该字段中指定的值是由DMA重映射电路135支持并在能力寄存器中报告的AGAM值。能力寄存器是指示由DMA重映射电路135支持的能力的寄存器。当采用单级页表时,该字段指示域的客机地址宽度。在该字段中指定的值在用于单级页表的最小GAM和由DMA重映射电路135在能力寄存器中报告的MGAM值之间。
如果DMA重映射电路135在该字段中检测到不被底层实现支持的值,则阻断通过该上下文条目的所有DMA请求并导致转换错误。通过该上下文条目处理并访问2GAM-1以上的客机物理地址的DMA请求被阻断并导致转换错误。
FP字段660由通过该上下文条目处理的DMA请求来启用或禁用对错误的记录。
DID字段662指示用于默认域的域标识符。
地址过滤基于多级页表结构的地址转换通过允许软件以常规(例如,4KB)的页粒度管理存储器来提供最大的灵活性。然而,多级页表结构产生最多的地址转换延迟时间,因为它需要硬件走查页表。即使硬件实现可利用转换高速缓存以减小转换额外开销,I/O转换后备总线(TLB)未命中上产生的页走查延迟也可能不适于某些类型的I/O传输。例如,来自诸如高清晰度音频设备之类的利用等时通道的PCI-Express设备和诸如集成图形设备之类的某些芯片组集成设备的DMA请求不会导致非确定性DMA重映射等待时间。
对于支持受到DMA重映射等待时间的消极影响的I/O设备的硬件实现,该架构通过DMA地址过滤(代替地址转换)来定义设备对非重分配域的分配。非重分配域是其客机物理地址空间是系统的主机物理地址空间的子集的域。地址过滤硬件保存软件灵活性以管理常规(例如,4KB)大小的页中的主机存储器,并且仅导致最小的额外开销。
对地址过滤的支持由DMA重映射电路135通过寄存器组220中的能力寄存器来报告。诸如不支持等时通道的硬件等能够对来自所有设备的DMA请求进行地址转换的硬件实现不要求支持地址过滤。如果平台配置需要多个DMA重映射硬件单元,诸如每芯片组一个的组件或PCI-Express根端口,并且如果单元之一要求地址过滤支持,则它由所有的硬件单元支持。
对于地址过滤,存储器中已分配给非重分配域的页通过如图7所示的称为过滤位图表的存储器驻留表来指示。该架构仅支持单个非重分配域,并由此对每一个报告的DMA重映射硬件有单个过滤位图表指针。过滤位图表的位置和大小通过如图7所示的地址过滤基址和大小寄存器来编程。位图表的大小被计算为(4KB*2S),其中S是被编程到地址过滤大小寄存器的值。表中的每一位表示4K主机页,且第一位表示第一个4K主机物理地址空间。过滤位图表的最小大小是4KB,它映射主机存储器的第一个128MB区。
其DMA请求仅由硬件进行地址过滤的设备由平台固件报告给软件。对用于这些设备的上下文条目的任何编程应确保它被设置成进行地址过滤而不是阻断、允许通过、或对DMA请求进行地址转换。
其DMA请求也可被地址转换或地址过滤的I/O设备可通过对相应的上下文条目编程以指示地址过滤来分配给非重分配域。类似地,可通过对默认上下文寄存器编程以指示地址过滤来使非重分配域与默认域相同。
如果将上下文条目编程为指示地址过滤,则其余的上下文条目字段(除有效、存在和通过字段外被由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查找对应于由DMA请求在过滤位图表中的位偏移[GPA>>12]处访问的页的位字段。如果该位被清零,则按正常处理该DMA请求。如果该位被置位,则阻断该DMA请求。
图7是示出根据本发明的一个实施例的含有地址过滤寄存器的寄存器组220的图。寄存器组220包括过滤大小寄存器(FSIZE_REG)710、过滤基址寄存器(FBASE_REG)720、过滤控制寄存器(FCTL_REG)730和过滤错误寄存器(FFLT_REG)740。
FSIZE_REG 710指示地址过滤位图表的大小。如果DMA重映射电路135不支持地址过滤,则可将该寄存器作为保留来对待(例如,忽略写,且读返回0)。它包括过滤表大小(FTS)字段712和过滤位图存储器类型(BMT)字段715。BMT字段715指示位图区是否可被高速缓存。当被置为否定时,它指示该位图区不可高速缓存。对该字段的写被忽略。当被置为肯定时,它指示该位图区可以在可高速缓存区中。FTS字段712指示地址过滤表的大小。该大小由以下公式计算。表大小=4K*2FSIZE_REG字节。例如,000h:4KB表支持128MB存储器,0001h:8KB表支持256MB主存储器,0005h:128KB表支持4GB主存储器等等。
FBASE_REG 720保持指向地址过滤位图表的基地址的指针。如果DMA重映射电路135不支持地址过滤,则可将该寄存器作为保留来对待(例如,写被忽略,读返回0)。它包括过滤表基址(FTB)字段725。FTB字段725是指向存储器中的地址过滤表的基地址的指针。该表是按大小对齐的。最小的表大小是支持4GB可寻址性的128K。
FCTL_REG 730控制地址过滤位图表的高速缓存。如果DMA重映射电路135不支持地址过滤,则将该寄存器作为保留来对待(例如,写被忽略,且读返回0)。它包括过滤硬件启用(FHE)字段732、写缓冲器刷新(WBF)字段734、过滤高速缓存无效(FCI)字段736和过滤表保护(FTP)字段738。FHE字段732是启用或禁用地址过滤硬件的软件可编程控制字段。当被置为否定时,它指示禁用地址过滤硬件。以其他方式进行地址过滤的任何DMA请求作为通过来处理。当被置为肯定时,它指示启用地址过滤硬件。在通过该字段启用地址过滤硬件之前对过滤基址和大小寄存器编程。WBF字段734用于刷新芯片组内部写缓冲器。进行该操作以确保不将过滤位图表更新保持在任何内部写入缓冲器中。软件将该字段置为肯定以发出写缓冲器刷新命令。DMA重映射电路135将其置为否定以提供对写缓冲器刷新完成的指示。软件应读回该字段并校验它将被置为否定以确认刷新完成。FCI字段736使地址过滤位图高速缓存无效。软件将该字段置为肯定以请求地址过滤高速缓存无效。DMA重映射电路135将其置为否定以确认无效完成。软件应读回该字段并校验它将被置为否定以确认无效完成。FTP字段738指示保护地址过滤位图区。当由软件置为肯定时,硬件开始保护地址过滤位图区不被DMA访问。软件应读回该字段并检验它将被置为肯定以确认地址过滤位图区被保护。当由软件置为否定时,DMA重映射电路135停止保护地址过滤位图区不被DMA访问。
FFTL_REG报告由地址过滤硬件检测到的错误。如果DMA重映射电路135不支持地址过滤,则将该寄存器作为保留来对待(例如,写被忽略,且读返回0)。它包括错误地址(FA)字段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的图。PTE 565包括可读(R)字段850、可写(W)字段852、一致(C)字段854、超页(SP)字段856和地址(ADDR)字段860。注意,可定义比这些字段多或少的字段。
R字段指示页对于DMA是否可读。当被置为否定时,它指示对于DMA读请求该页不可访问。阻断通过该页表处理的DMA读请求。如果启用错误报告,则生成转换错误。当被置为肯定时,它指示对于DMA读请求该页可访问。
W字段852指示页对于DMA是否可写。当被置为否定时,它指示对于DMA写请求该页不可访问。阻断通过该页表条目处理的DMA写请求。如果启用错误报告,则生成转换错误。当被置为肯定时,它指示对于DMA写请求该页可访问。
C字段854指定对所转换的主机物理地址的访问是否一致。当被置为否定时,它指示对所转换的主机物理地址的DMA访问遵循I/O事务中指定的一致性属性。例如,设置了“无监听”属性的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在页帧是叶节点的情况下含有该页帧的主机物理地址。否则,它含有指向下一级页表的指针。该字段是按大小对齐的。
注意,可定义另外的字段以进一步表征地址转换机制的属性。例如,可定义以下属性用于启用基址/边界转换的基址/边界属性、用于指示多级表转换中的第一级页表的大小的跨距属性、以及用于指示是否允许I/O事务在不转换的情况下通过的通过属性。
地址转换机制为了支持由软件改变物理存储管理支持的粒度,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-q)的倍数。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=1AGAW=31+9-1=39调整的客机地址宽度指示页走查的级数。DMA重映射电路135支持其中对应的GAW等于主机地址宽度的定义的AGAW。当对域使用多级页表时,软件如上所述地计算调整的客机地址宽度(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.如果上下文条目中编程的GAM字段不是在能力寄存器中报告的由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)属性的支持来访问HPA。如果DMA重映射电路135仅支持对页表条目中的一致(C)属性的置为否定的设置,则根据DMA请求中指定(或从其推断)的一致性来访问存储器。例如,如果PCI Express请求将DMA请求指定为非监听,则在不监听的情况下访问存储器。如果DMA重映射电路135支持对页表条目中的一致性(C)属性的置为肯定和否定的设置,则根据用于对DMA请求进行地址转换的叶页表条目中的一致性属性的编程来访问存储器。
图9B是示出根据本发明的一个实施例的使用单张表的地址转换结构540的图。地址转换结构540包括上下文条目535、客机物理地址(GPA)960、单个页表970和页980。
单级页表向软件提供一替换机制,该机制提供了在没有长页走查的情况下的4K粒度页分配,但以保留大的连续页表结构为代价。除将跨距字段作为保留来对待外,用于单级页表的页表条目大小(例如,64位)和格式类似于用于前面部分中所述的多级结构的页表条目的大小和格式。
页表的大小取决于客机地址空间的大小。例如,对于1GB的客机可寻址性(GAS=30),软件需要分配具有218个页表条目的2MB的页表。I/O转换后备缓冲器(TLB)也适用于利用单级页表的DMA地址转换。
通过指定单级地址转换的上下文条目处理的DMA请求由DMA重映射电路135如下处理1.根据DMA重映射电路135是否支持页边界交叉来使用DMA请求中指定的GPA/长度组合。如果DMA重映射电路135支持交叉页边界的DMA请求,且GPA/长度组合指示DMA请求交叉页边界,则独立地对由DMA请求确定为目标的每一个页区进行地址转换。如果DMA重映射电路135不支持交叉页边界的DMA请求,且GPA/长度组合指示DMA请求交叉页边界,则导致地址转换错误。
2.如果上下文条目中编程的GAM字段不在最小值(例如,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)属性的设置的支持来访问HPA。如果DMA重映射电路135仅支持页表条目中的一致(C)属性的置为否定的设置,则根据DMA请求中指定(或从其推断)的一致性来访问存储器。例如,如果PCI Express请求将DMA请求指定为非监听,则在不监听的情况下访问存储器。如果DMA重映射电路135支持页表条目中的一致性(C)属性的置为肯定和否定的设置,则根据用于对DMA请求进行地址转换的页表条目中的一致性属性的编程来访问存储器。
上下文条目535的ASR字段提供定位单页表970的基地址。GPA 960包括偏移字段962和页表字段964。单页表970含有指向对应于GPA 960的主机物理地址的页的页表条目。
为了查找对应的页表条目,页表字段964与由ASR字段提供的基地址组合。因为每一个条目占8字节,所以页表字段964由移位器972移位3位,然后由加法器974加到ASR上以提供对单页表970的索引。
对应于该索引的页表条目然后提供用于页980的基地址。由加法器984将偏移字段962加到该基地址上以提供页980中的所得的HPA。
图9C是示出根据本发明的一个实施例的利用基址/边界转换的地址转换结构540的图。地址转换结构540包括上下文条目535、客机物理地址(GPA)960和物理存储器空间990。
基址-边界提供其中DMA请求中的GPA用作从用于该域的基地址的偏移的最简单形式的地址转换。域的基地址是主机物理地址并通过上下文条目535(图8B)的ASR字段834来编程。上下文条目中客机地址宽度(GAW)指示偏移限制。具有在由GAW指示的限制以上的客机地址的任何DMA请求被DMA重映射电路135阻断。
在一个实施例中,主机物理地址是64位。对于有效客机地址(例如,GAW可寻址性内的地址),DMA重映射电路135执行以下操作以生成主机物理地址主机物理地址[63:GAW]=地址空间根[63:GAW]主机物理地址[GAW-1:0]=客机物理地址[GAW-1:0]性能增强可增强以上所述的地址转换机制以提高性能和/或灵活性。一种增强技术是在多级页表结构中使用变化大小的转换表,包括小表和大表。这可通过利用页表条目或默认上下文寄存器640中的跨距(S)字段来实现。S字段可指定任何数量的表大小和任何适当的表大小。在一个实施例中,使用两个表大小,4KB和2MB。4KB表对应于9位的跨距,而2MB表对应于18位的跨距。在页表的走查或遍历期间可混和小和大的跨距而没有特定的顺序。它们由前一页表条目中的跨距字段来定义。
另一种增强技术是定义可由芯片组硬件支持的多个页大小。在页表条目中定义一般化的超页字段以允许大量超过2MB的超页大小。一般化的超页字段适合于在引导过程的早期将存储器分配给VM的使用模型。可通过显著减少转换步骤的数量来实现直接的性能优点。此外,也可显著降低与页表相关联的存储器额外开销。
页表条目中的超页字段允许较大的页分配。当在页表走查时遇到被置为肯定的具有超页字段的页表条目时,通过将页表条目中的页基地址与未使用的客机物理地址位组合来立即形成转换的地址。基于将具有超页字段的页表条目置为肯定的页表分层级别,该架构定义了2MB、1GB、512GB、256TB和128PB大小的超页。正如本领域的技术人员已知的,可采用任何其它超页大小。
含有DMA重映射电路135以支持这些增前和其它重映射操作的芯片组的能力可在能力寄存器中报告。软件可读取该能力寄存器以找出由芯片组或DMA重映射电路135支持的各种能力。
图10是示出根据本发明的一个实施例的含有能力寄存器的寄存器组220的图。寄存器组220包括能力寄存器(CAP_REG)1010。
CAP_REG 1010报告一般的转换硬件能力。它包括指示由DMA重映射电路135支持的能力的多个指示符。这些指示符包括单级页表支持(SL)字段1012,多级页表支持(ML)字段1014、所需写缓冲器刷新(RWBF)字段1016、高级错误日志记录支持(AFL)字段1018、一致性控制支持(CC)字段1020、支持的调整客机地址宽度(SAGAW)字段1022、超页支持(SPS)字段1024以及最大客机地址宽度(MGAW)字段1026。
SL字段1012指示是否支持单级页表。当被置为否定时,不支持单级页表。当被置为肯定时,支持单级页表。
ML字段1014指示是否支持多级页表。当被置为否定时,不支持多级页表。当被置为肯定时,支持多级页表。
RWBF字段1016指示所序的写缓冲器刷新。当被置为否定时,它指示不需要写缓冲器刷新来反映DMA重映射电路135对存储器驻留结构的改变。当被置为肯定时,它向软件指示DMA重映射电路135的实现需要写缓冲器的刷新(例如,通过全局命令寄存器)来反映DMA重映射电路135对存储器驻留结构进行的更新。
AFL字段1018指示高级错误日志记录支持。当被置为否定时,它指示不支持通过存储器驻留错误日志的高级错误日志记录。只有首先检测到的错误通过错误记录寄存器来记录。当被置为肯定时,它指示支持高级错误日志记录。高级错误日志记录通过错误日志寄存器来启用。
CC字段1020指示一致性控制支持。当被置为否定时,它指示DMA重映射电路135仅支持对页表条目中的一致性(C)字段的置为否定的设置。当被置为肯定时,它指示DMA重映射电路135支持对页表条目中的一致性(C)字段的置为否定和置为肯定的设置。
SAGAW字段1022指示所支持的调整客机地址宽度,它进而表示底层DMA重映射电路135的实现所支持的页表走查的级别。该字段仅在通过对ML字段1014的置为肯定的设置来指示多级页表支持时有效。
这些位中的任一位的置为肯定的值指示支持对应的客机地址宽度。在一个实施例中,对应于该字段中的各位位置的客机地址宽度是021位客机地址宽度(1级页表)130位客机地址宽度(2级页表)239位客机地址宽度3级页表)348位客机地址宽度(4级页表)457位客机地址宽度(5级页表)DMA重映射电路135支持覆盖底层主机地址宽度的客机地址宽度。例如,支持40位主机地址宽度的实现支持48位客机地址宽度。DMA重映射电路135还可任选地支持较小的客机地址宽度。软件应确保用于设置页表的调整的客机地址宽度是该字段中报告的所支持的客机地址宽度中的一个。
SPS字段1024指示底层DMA重映射电路135的实现支持的所支持的超页大小。该字段仅在通过对ML字段1014的置为肯定来指示的支持多级页表时有效。
这些位中的任一位中的置为肯定的值指示支持对应的超页大小。在一个实施例中,对应于该字段内的各位位置的超页大小是02MB超页(对页帧的21位偏移)11GB超页(对页帧的30位偏移)2512GB超页(对页帧的39位偏移)3256TB超页(对页帧的48位偏移)4128PB超页(对页帧的57位偏移)当所有这些位都被置为否定时,支持常规页大小。DMA重映射电路可任选地支持一个或多个超页大小。
MGAM字段1026指示在利用单级页表转换时由DMA重映射电路135支持的最大客机地址宽度。该字段仅在通过对SL字段1012的置为肯定的设置指示单级页表支持时有效。
图11A是示出根据本发明的一个实施例的利用多级表和跨距的地址转换结构540的图。地址转换结构540包括上下文条目535、调整的客机物理地址(AGPA)910、第一级页表1120、叶节点页表1130和页1140。
上下文条目535中的ASR字段提供用于第一级页表1120的基地址。AGPA 910包括偏移字段912、叶节点页表字段914和第一级页表字段916。
第一级页表字段916与由ASR字段提供的第一级基地址组合以索引第一级页表1120。因为每个条目是8字节,所以第一级页表字段916由移位器1122移3位然后由加法器1124加到第一级基地址上以提供对第一级页表1120的第一级索引。索引的第一级页表条目提供用于叶节点页表1130的叶节点基地址。此外,将索引的第一级页表条目中的S字段置为肯定(例如,设为1)以指示用于下一表的跨距是大表(例如,2MB)。
叶节点页表1130具有由索引的第一级页表条目中的S字段指示的大小。在图11A所示的示例中,将S字段置为肯定,指示叶节点页表1130的大小是大(例如,2MB)。叶节点页表字段914与叶节点基地址组合以索引叶节点页表1130。因为每一条目是8字节,所以叶节点页表914由移位器1132移3位然后由加法器1134加到叶节点基地址上以提供对叶节点页表1130的叶节点索引。索引的叶节点页表条目提供用于页1140的主机基地址。
偏移912然后与主机基地址组合以在页1140中生成主机物理地址。
图11B是示出根据本发明的一个实施例的利用多级页表和超页的地址转换结构的图。地址转换结构540包括上下文条目535、调整的客机物理地址(AGPA)910、第一级页表1150、叶节点页表1160和页1170。
上下文条目535中的ASR字段提供用于第一级页表1150的基地址。AGPA 910包括偏移字段912、叶节点页表字段914和第一级页表字段916。
第一级页表字段916与由ASR字段提供的第一级基地址组合以索引第一级页表1150。因为每一个条目是8字节,所以第一级页表字段916由移位器1152移3位然后由加法器1154加到第一级基地址上以提供对第一级页表1150的第一级索引。索引的第一级页表条目提供用于叶节点页表1160的叶节点基地址。此外,将索引的第一级页表条目中的S字段置为肯定(例如,设为0)以指示下一表的跨距是小表(例如,4KB)。
叶节点页表1160具有由索引的第一级页表条目中的S字段指示的大小。在图11B所示的示例中,将S字段置为否定,指示叶节点页表1160的大小是小(例如,4KB)。叶节点页表字段914与叶节点基地址组合以索引叶节点页表1160。因为每一条目是8字节,所以叶节点页表914由移位器1162移3位然后由加法器1164加到叶节点基地址上以提供对叶节点页表1160的叶节点索引。索引的叶节点页表条目提供用于页1170的主机基地址。此外,将索引的叶节点页表条目的SP字段置为肯定,指示它是叶节点表。
页1170的大小由如能力寄存器中提供的芯片组所支持的能力来确定。在图11B所示的示例中,能力寄存器指示支持2MB的超页大小。然后由加法器1144将偏移912与主机基地址组合以生成页1170中的主机物理地址。
尽管根据各实施例描述了本发明,但本领域中的普通技术人员将认识到本发明不限于所述的实施例,而是可用所附权利要求书的精神和范围内的修改和改变来实施。因此说明书应被理解为说明性的而不是限制。
权利要求
1.一种装置,包括用于存储指示用于客机物理地址到主机物理地址的地址转换的芯片组中的电路所支持的能力的能力指示符的寄存器;以及用于在所述地址转换中进行页走查的多个多级页表,所述页表中的每一个都具有页表条目,所述页表条目中的每一个至少具有一个对应于由所述能力指示符指示的能力的条目分类符。
2.如权利要求1所述的装置,其特征在于,所述能力指示符包括单级页表支持、多级页表支持、所需的写缓冲器刷新、高级错误日志记录支持、一致性控制支持、支持的调整客机地址宽度、超页支持以及最大客机地址宽度(MGAM)中的至少一个。
3.如权利要求2所述的装置,其特征在于,所述超页指示符指示用于所述地址转换的常规页大小和超页大小中的一个。
4.如权利要求2所述的装置,其特征在于,所述超页大小范围达到128千兆兆字节(PB)。
5.如权利要求3所述的装置,其特征在于,所述至少一个条目分类符包括跨距字段和超页字段中的一个,所述跨距字段确定用于索引所述多级页表中的下一级表的客机地址位的数量,所述超页字段指示所述页表条目中的每一个是否是叶页表条目。
6.如权利要求5所述的装置,其特征在于,如果所述超页指示所述页表条目中的每一个都是非叶页表条目,则继续所述页走查。
7.如权利要求5所述的装置,其特征在于,如果所述超页字段指示所述页表条目中的每一个都是叶页表条目,则停止所述页走查且在具有由所述超页指示符指示的页大小的页中形成所述主机物理地址。
8.如权利要求5所述的装置,其特征在于,在所述大页表指示符指示支持多个页表大小时对所述跨距字段求值。
9.如权利要求5所述的装置,其特征在于,用于索引所述下一级页表的客机地址位的数量对应于常规页大小或大页大小。
10.如权利要求1所述的装置,其特征在于,所述能力指示符是只读的。
11.一种方法,包括将指示用于客机物理地址到主机物理地址的地址转换的芯片组中的电路所支持的能力的能力指示符存储在寄存器中;以及在所述地址转换中走查多个多级页表,所述页表中的每一个都具有页表条目,所述页表条目中的每一个至少具有一个对应于由所述能力指示符指示的能力的条目分类符。
12.如权利要求11所述的方法,其特征在于,所述能力指示符包括单级页表支持、多级页表支持、所需的写缓冲器刷新、高级错误日志记录支持、一致性控制支持、所支持的调整客机地址宽度、超页支持以及最大客机地址宽度(MGAM)中的至少一个。
13.如权利要求12所述的方法,其特征在于,所述超页指示符指示用于所述地址转换的常规页大小和超页大小中的一个。
14.如权利要求12所述的方法,其特征在于,所述超页大小范围达到128千兆兆字节(PB)。
15.如权利要求13所述的方法,其特征在于,所述至少一个条目分类符包括跨距字段和超页字段中的一个,所述跨距字段确定用于索引所述多级页表中的下一级表的客机地址位的数量,所述超页字段指示所述页表条目中的每一个是否是叶页表条目。
16.如权利要求15所述的方法,其特征在于,所述走查包括如果所述超页指示所述页表条目中的每一个都是非叶页表条目,则继续所述走查。
17.如权利要求15所述的方法,其特征在于,所述走查包括如果所述超页字段指示所述页表条目中的每一个都是叶页表条目,则在具有由所述超页指示符指示的页大小的页中形成所述主机物理地址。
18.如权利要求15所述的方法,其特征在于,所述走查包括在所述大页表指示符指示支持多个页表大小时对所述跨距字段求值。
19.如权利要求15所述的方法,其特征在于,用于索引所述下一级页表的客机地址位的数量对应于常规页大小或大页大小。
20.如权利要求11所述的方法,其特征在于,所述存储包括存储只读的所述能力指示符。
21.一种系统,包括存储器;在访问所述存储器的请求中生成客机物理地址的输入/输出(I/O)设备;耦合到所述I/O设备和所述存储器的芯片组,所述芯片组包括电路,所述电路包括用于存储指示用于客机物理地址到主机物理地址的地址转换的所述芯片组所支持的能力的能力指示符的寄存器;以及用于在所述地址转换中进行页走查的多个多级页表,所述页表中的每一个都具有页表条目,所述页表条目中的每一个至少具有一个对应于由所述能力指示符指示的能力的条目分类符。
22.如权利要求21所述的系统,其特征在于,所述能力指示符包括单级页表支持、多级页表支持、所需的写缓冲器刷新、高级错误日志记录支持、一致性控制支持、所支持的调整客机地址宽度、超页支持以及最大客机地址宽度(MGAM)中的至少一个。
23.如权利要求22所述的系统,其特征在于,所述超页指示符指示用于所述地址转换的常规页大小和超页大小中的一个。
24.如权利要求22所述的系统,其特征在于,所述超页大小范围达到128千兆兆字节(PB)。
25.如权利要求23所述的系统,其特征在于,所述至少一个条目分类符包括跨距字段和超页字段中的一个,所述跨距字段确定用于索引所述多级页表中的下一级表的客机地址位的数量,所述超页字段指示所述页表条目中的每一个是否是叶页表条目。
26.如权利要求25所述的系统,其特征在于,如果所述超页指示所述页表条目中的每一个都是非叶页表条目,则继续所述页走查。
27.如权利要求25所述的系统,其特征在于,如果所述超页字段指示所述页表条目中的每一个都是叶页表条目,则停止所述页走查,且在具有由所述超页指示符指示的页大小的页中形成所述主机物理地址。
28.如权利要求25所述的系统,其特征在于,在所述大页表指示符指示支持多个页表大小时对所述跨距字段求值。
29.如权利要求25所述的系统,其特征在于,用于索引所述下一级页表的客机地址位的数量对应于常规页大小或大页大小。
30.如权利要求21所述的系统,其特征在于,所述能力指示符是只读的。
31.一种制品,包括包括数据的机器可访问介质,当所述数据由机器访问时,使得所述机器执行以下操作将指示用于客机物理地址到主机物理地址的地址转换的芯片组中的电路所支持的能力的能力指示符存储在寄存器中;以及在所述地址转换中走查多个多级页表,所述页表中的每一个都具有页表条目,所述页表条目中的每一个至少具有一个对应于由所述能力指示符指示的能力的条目分类符。
32.如权利要求31所述的制品,其特征在于,所述能力指示符包括单级页表支持、多级页表支持、所需的写缓冲器刷新、高级错误日志记录支持、一致性控制支持、所支持的调整客机地址宽度、超页支持以及最大客机地址宽度(MGAM)中的至少一个。
33.如权利要求32所述的制品,其特征在于,所述超页指示符指示用于所述地址转换的常规页大小和超页大小中的一个。
34.如权利要求32所述的制品,其特征在于,所述超页大小范围达到128千兆兆字节(PB)。
35.如权利要求33所述的制品,其特征在于,所述至少一个条目分类符包括跨距字段和超页字段中的一个,所述跨距字段确定用于索引所述多级页表中的下一级表的客机地址位的数量,所述超页字段指示所述页表条目中的每一个是否是叶页表条目。
36.如权利要求35所述的制品,其特征在于,所述走查包括如果所述超页指示所述页表条目中的每一个都是非叶页表条目,则继续所述走查。
37.如权利要求35所述的制品,其特征在于,使得所述机器执行走查的数据包括使得所述机器执行以下操作的数据如果所述超页字段指示所述页表条目中的每一个都是叶页表条目,则在具有由所述超页指示符指示的页大小的页中形成所述主机物理地址。
38.如权利要求35所述的制品,其特征在于,使得所述机器执行走查的数据包括使得所述机器执行以下操作的数据在所述大页表指示符指示支持多个页表大小时对所述跨距字段求值。
39.如权利要求35所述的制品,其特征在于,用于索引所述下一级页表的客机地址位的数量对应于常规页大小或大页大小。
40.如权利要求31所述的制品,其特征在于,使得所述机器执行走查的数据包括使得所述机器执行以下操作的数据存储只读的所述能力指示符。
全文摘要
本发明的一个实施例是一种用于增强地址转换性能的技术。寄存器存储指示用于客机物理地址到主机物理地址的地址转换的芯片组中的电路所支持的能力的能力指示符。在地址转换中使用多个多级页表来进行页走查。页表中的每一个都具有页表条目。页表条目中的每一个至少具有一个对应于由能力指示符指示的能力的条目分类符。
文档编号G06F12/10GK101027653SQ200580032491
公开日2007年8月29日 申请日期2005年9月1日 优先权日2004年9月30日
发明者I·舍纳斯, G·尼格, R·曼杜卡鲁姆库玛纳, K·金, R·乌利希, A·扎哈尔, 山田浩一 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1