专利名称:直接存储器存取转换的地址窗口支持的制作方法
技术领域:
本发明一般涉及微处理器,更具体地说,本发明涉及输入/输出(1/0)
虛拟化。
背景技术:
随着微处理器体系结构变得越来越复杂以支持高性能应用程序,I/O管理提出了挑战。解决I/O管理问题的现有技术有许多缺点。一 种技术使用只有软件的I/O虚拟化来支持虚拟机(VM) I/O。此技术具 有有限的功能、性能和鲁棒性。
客户操作系统(OS)和应用程序所看到的功能受VM监控器(VMM) 软件中模拟的虛拟装置支持的功能限制。客户1/0操作由VMM捕获, 并在提交到基础物理装置硬件前被代理或模拟,从而导致性能差。
另外,硬件装置的所有或部分装置驱动程序作为部分特权VMM 软件运行,这可能对平台的整体鲁棒性有负面影响。使用专用转换结 构的技术只能支持特定的装置或有限的使用模型。通用1/0存储器管 理部件只对大小或复杂性有限的I/O虚拟地址空间提供支持。
通过下面给出的详细说明和本发明各种实施例的附图,将更全面 地理解本发明。然而,附图不应视为将本发明局限于具体实施例,而 只是为了便于说明和理解。
图1示出计算机系统的一个实施例;
图2示出输入/输出(I/0)装置指定的一个实施例;
图3示出使用直接存储器存取(DMA)重新映射的虚拟化的一个实 施例;
图4示出1/0地址转换的一个实施例;
图5示出DMA重新映射结构的一个实施例;
图6示出地址窗口页表项目格式的一个实施例;
图7示出基于地址窗口的DMA地址转换进程的一个实施例;
图8示出地址窗口表格式的一个实施例;
图9示出地址窗口刷新寄存器的一个实施例;
图IO示出地址窗口刷新寄存器格式的一个实施例;
图11示出DMA转换的一个实施例的流程图;以及
图12示出计算机系统的另一个实施例。
具体实施例方式
下面描述实现基于地址窗口的转换的直接存储器存取(DMA)转换 体系结构。在说明书中提到"一个实施例"或"实施例"是指结合该实施 例描述的特定特性、结构或特征包括在本发明的至少一个实施例中。 在说明书中各个位置出现的短语"在一个实施例中"不一定全部都指同 一实施例。
在下面的描述中,阐述了许多细节。然而,本领域的技术人员将 明白,本发明可在没有这些具体细节的情况下实施。其它情况下,熟 知的结构和装置以框图形式显示,而不是详细显示,以免混淆本发明。
图1示出计算机系统100的一个实施例。计算机系统100包括处 理器110、处理器总线120、存储器控制中心(MCH) 130、系统存储 器140、输入/输出控制中心(ICH) 150、外围总线155、海量存储器装 置/接口 170以及输入/输出装置180,到180K和185 。注意,系统100 可包括比上述更多或更少的单元。
处理器110表示任一类型体系结棉的中央处理器,诸如嵌入式处 理器、移动处理器、微控制器、数字信号处理器、超标量处理器、多 线程处理器、多核处理器、向量处理器、单指令多数据(SIMD)计算 机、复杂指令集计算机(CISC)、精简指令集计算机(RJSC)、超长指令字(VLI W)或混合伴系结构。
处理器碌线120提供接口信号,以允许处理器UO与例如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。在I/O 事务处理中,DMA重新映射电路135辨1/0装置(例如,I/O装置180, 到180k和185之一)映射到系统存储器140中的一个域。I/O事务处 理一般为DMA请求。DMA重新映射电路135提供硬件支持,以便 于或增强I/O装置指定和/或管理。DMA重新映射电路135还可包括 在除MCH 130外的任何芯片组中,诸如ICH 150。它也可部分或完 全实现在处理器110中,或者实现为单独的处理器或与其它处理器或 装置的协处理器。
系统存储器140存储系统代码和数据。系统存储器140 —般用动
统存储器可包括实现本发明 一个实施例的程序代码或代码段。系统存 储器包括操作系统(OS) 142或一部分OS或内核及I/0驱动程序145。 OS 142或I/0驱动程序145中的任一单元可通过硬件、软件、固件、 微代码或其任意组合实现。系统存储器140还可包括未示出的其它程 序或数据。
ICH 150具有设计为支持I/O功能的多个功能。ICH 150也可与
MCH130—起或与其分开集成到芯片组中,以执行I/0功能。ICH150 可包括多个接口和I/O功能,诸如PCI总线接口 ,以对接到外围总线 155、处理器接口、中断控制器、'直接存储器存取(DMA)控制器、电 源管理逻辑、计时器、系统管理总线(SMBus)、通用串行总线(USB) 接口、海量存储器接口、低引脚数(LPC)接口等。
海量存储器装置/接口 170提供诸如代码、程序、文件、数据、应 用程序及操作系统等档案信息的存储。海量存储器装置/接口 170可 对接到压缩盘(CD) ROM 172、数字视频/多功能盘(DVD) 173、软盘 驱动器174、硬盘驱动器176以及任何其它磁或光存储装置。海量存 储器装置/接口 170提供一种读取机器可存取介质的机制。机器可存 取介质可包含执行如下所述任务的计算机可读程序代码。
I/O装置180,到180k可包括批行包括DMA请求等I/O功能的任 何I/0装置。它们对接到外围总线155。 I/O装置180,到180k的示例 包括用于输入装置(例如,键盘、鼠标、跟踪球、定点装置)的控制器、 媒体卡(例如,音频、视频、图形)、网卡以及任何其它外围控制器。I/O
装置185直接对接到ICH 150。外围总线155是支持I/O事务处理的 任何总线。外围总线155的示例包括PCI总线、PQ Express等。
本发明一个实施例的单元可通过硬件、固件、软件或其任意组合 实现。术语"硬件" 一般指具有物理结构的单元,诸如电、电磁、光、 光电、机械、机电部件等。术语"软件" 一般指逻辑结构、方法、过 程、程序、例程、进程、算法、公式、函数、表达式等。术语"固件" 一般指在硬件结构(例如,闪存、只读存储器、可擦除只读存储器)中 实现或包含的逻辑结构、方法、过程、程序、例程、进程、算法、公 式、函数、表达式等。固件的示例可包括微代码、可写控制存储器、 微程序设计结构。当用软件或固件实现时,本发明实施例的单元实质 上是执行必需任务的代码段。^L件/固件可包括执行在本发明 一 个实 施例中所述操作的实际代码,或者模拟或模仿该操作的代码。程序或 代码段可存储在处理器或机器可存取介质中,或者通过传输介质,由载波中包含的计算机数据信号或由载波调制的信号传输。"处理器可 读或可存取介质"或"机器可读或可存取介质"可包括任何可存储、传 输或传送信息的介质。处理器可读或机ll可存取介质的示例包括电子电路、半导体存储器件、只读存储器(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中的域1 240。域l可 具有用于装置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可通过创建多个域并将一个或多个1/0 装置指定给各个域来管理I/O。在这种使用中,装置驱动程序显式地向OS登记其I/O緩冲器,并且OS将这些I/O緩冲器指定给特定域, 使用硬件来实施DMA域保护。在此模型中,OS将I/O地址转换和 保护机制用作1/0存储器管理部件(I/Q MMU)。
虚拟化应用虛拟化技术允许在单个系统上创建一个或多个虛拟 机(VM)。每个VM可利用基础物理硬件资源同时运行。虛拟机允许 多个操作系统实例运行在同一处理器上,提供了诸如系统强化、传统 迁移、活动分区和安全性等优点。
虚拟化体系结构一般涉及两个主要种类的软件组件(a)虚拟机监 控程序(VMM)和(b)虚拟机(VM)。 VMM软件层在最高特权级运行, 并具有基础系统硬件的全部所有权。VMM允许VM共享基础硬件, 并且还提供VM之间的隔离。
通过使用DMA重新映射电路135将I/O装置直接指定给VM, 可消除I/0虚拟化只有软件方法的限制。用装置的直接指定,指定1/0 装置的驱动程序只运行在其指定到的VM中,并被允许直接与装置硬 件交互作用,而不捕获到VMM。硬件支持实现了 DMA重新映射, 而在VMM中无需装置特定的知识。
在此模型中,VMM将其自身限制为控制功能,其中它显式地进 行建立和拆毁对VM的装置指定。不同于在I/O虚拟化只有软件方法 的情况下对客户I/O存取捕获到VMM, VMM只需要客户I/O存取 捕获,以保护影响系统功能的特定资游、,诸如装置配置空间存取、中 断管理等。
为支持I/O装置到VM的直4矣指定,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/Q 虛拟化方法与直接装置指定的組合,以便向VM呈现I/O装置资源。
图3示出了使用DMA重新映射的虛拟化的一个实施例。虛拟化 包括两个装置A 310和B 312、 DMA重新映射电路135、 VMM或宿 主OS 32Q、 VM。340以及VMn360。两个装置A 310和B 312是分别 由两个VM 340和360支持的两个I/O装置。DMA重新映射电路135 将这两个装置直接映射到相应的VM 340和360,无需VMM或宿主 OS 320的特定知识。支持的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是驱动、控制、对接或支持装置B312的 驱动程序。
由DMA重新映射电路135提供的DMA重新映射体系结构便于 I/O装置指定到任意数量的域。每个域具有可与系统物理地址空间不 同的物理地址空间。DMA重新映射提供来自I/O装置的DMA请求变换。
为支持它,平台可支持一个或多个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示出了 1/0地址转换的一个实施例。I/0地址转换包括两个I/0 装置l 410和2 412、 DMA重新映射电路135、物理存储器420以及 客户视图430。 1/0装置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地址净皮映射到
位于域l 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、多个上下文表(显 示了两个530。与530m)以及多个地址转换结构(显示了两个540。与 540J。重新映射结构222从I/O装置接收源标识符510和客户物理地 址,并将指定域中的客户物理地址转换成主机物理地址。该转换可使 用以分级结构方式布置的转换表执行。.转换机制从根表520开始,并 遍历或走过上下文表(例如,530。与530m)和地址转换结构(例如,540Q 与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和上下文表(例如,530。和 530m)。在图5所示的示例中,通过DMA重新映射结构222的其路径 被示为用于分别使用总线0和总线m的两个I/O事务处理。
对于PCI Express装置,根表520存储由源标识符510或源标识 符510的总线编号516索引的才艮项目525。到5252,,。根项目用作顶 层结构,以将特定总线上的装置映射到其相应的父域。根项目0 525。 对应于使用总线0的I/O事务处理。根项目m 525m对应于使用总线 m的I/O事务处理。根项目0 525。与525m分别指向上下文表530。与 530m。在一个实施例中,这些项目提供对应上下文表的基地址。
上下文表530 (例如,530o与530J存储由根项目引用的上下文项 目535 (例如,535()与535J。上下文项目535将I/O装置映射到其对 应的域。装置编号514和功能编号512用于获得与I/O事务处理对应 的上下文项目。在一个实施例中,它们形成索引以指向或引用由对应 根项目引用的上下文表。在所有上下文表中有2^2"2K或2"+1^个 上下文项目。在一个实施例中,K=3, L=5,并且M=8,产生了总共 64K个项目,组织成2M (28=256)个上下文表。在图4所示的示例中, 用于两个I/O事务处理的两个上下文项目是上下文表530。中的上下文 项目535。和上下文表530m中的上下文项目535m。上下文项目535。和 535m分别指向地址转换结构540。和540m。
地址转换结构540(例如,540。与540J提供使用对应于I/O事务 处理的客户物理地址到主机物理地址的地址转换。每个地址转换结构 可以为分别对应于使用多表、单表和基本/绑定转换的三种转换机制 的多表550、单表560或基本/绑定570。在下面的描述中,使用常规 页面大小4KB。正如本领域的技术人员所熟知的一样,还可使用任何 其它大小。
为提供DMA重新映射电路135的软件灵活控制,DMA重新映 射电路135具有图2所示的寄存器组220中包括的多个寄存器。寄存器组220通过基地址寄存器(BAR)位于主机物理地址空间中。转换硬 件BAR以实现相关方式显露^^软件。在芯片组集成装置之一诸如存 储器控制器装置中,这可显露为PCI配置空间寄存器。在一个实施例 中,BAR提供最小4K地址窗口 。寄存器组220中的寄存器可具有多 个字段。字段可被断言或否定。在字段只由单个位组成时,断言表示 该位被设为定义的逻辑状态(例如,真,逻辑1),并且否定表示该位 被复位为定义的逻辑状态,该状态是断言状态的互补(例如,假,逻 辑0)。在下文中,断言或否定状态的使用是任意的。字段可被断言以 指示第一状态,并且可被否定以指示第二状态,或反之亦然。
寄存器中的字段可由DMA重新映4于电路135和/或软件进行编 程、初始化或配置。它也可对应于专用硬件电路或由数据结构、函数、 例程或方法实现的功能。在下文中,字段被分组到寄存器中。在下面 寄存器中这些字段或位的分组、格式化或組织是为了便于说明。可使 用其它方式分组、格式化或组织这些字段。字段也可复制在不止一个 寄存器中。寄存器可具有比所述字段更多或更少的字段。另外,寄存 器可以多种方式实现,包括作为存储单元或内存单元。
上述DMA重新映射体系结构包括如图5所示使用单级或多级页 表(TLB)转换的DMA。此类体系结构适用于传统软件使用(例如,其 中OS或VMM不知道驱动程序DMA使用)。此外,单级或多级页表 转换可为大多数I/O装置提供良好到一般的DMA性能(根据DMA吞 吐量测量)。然而,此类系统具有限制。
一个限制是,对于其性能取决于保证的最坏情况(等时)DMA性能 的I/O装置而言,由多个顺序存储器存取为有关TLB未中的走页而 弓1入的最坏情况等待时间是禁止的。这些类型装置的示例包括支持等 时DMA的PCI Express装置(如高性能音频控制器)、图形装置的显示 引擎以及USB控制器装置。
另一个限制是,对于可能更了解驱动程序DMA使用的非传统软 件使用(例如,较新的OS和VMM),当前体系结构未提供任何部件
使软件提供DMA使用提示,以改进DMA重新映射性能。
最后,用于走页的存储器存取等待时间例如随着平台配置移到在
处理器复合体内实现的存储器控制器而增大。
基于地址窗口的DMA地址净争换
基于上述DMA重新映射体系结构的限制,DMA重新映射电^各135 配置为除了基于单级和多级页表的地址转换外,还支持基于地址窗口 的地址转换。因此,每个DMA重新映射电路135可支持多个地址窗 口,其中所支持的地址窗口的确切数量随硬件实现而变化。在一个实 施例中,系统固件为每个DMA重新映射电3各135指定一个地址窗口 (AW)范围(开始和结束AW编号)。
在又一实施例中,除了现有重新映射电路135高速緩存结构外, 芯片组还支持附加的高速緩存结构。这些附加的结构称作为地址窗口 转换而实现的AWPTR表。下面将更详细地论述AWPTR表。
根据一个实施例,装置物理地址(DPA)是指由I/O装置在其DMA 请求中规定的目标地址。在一个实施例中,DPA地址空间跨越计算 机系统中的所有I/O装置,并再分成多个AW。在此类实施例中,每 个AW覆盖DPA空间的连续2MB区域。例如,A WO可覆盖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/0装置。为此,驱动 程序向绑定到装置的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的1/0装置。在一个实施例中,始发存取(例如,确定装 置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一FUJSH寄存器的格式的 一个实施例。
再参照图7,如果在用于I/O装置的上下文项目中已规定,则发 生基于地址窗口的转换。在一个实施例中,上下文项目可由重新映射 电路135高速緩存,排除了存耳又存储器以作出此确定的需要。在又一 实施例中,上下文项目高速緩存结构可由软件直接存取,使软件可以 预填充高速緩存以减少第一次存取上下文项目的等待时间。这样,软 件能保证特定装置的最坏情况存储器存取行为限于单次存储器存取, 如下所述。
如果规定基于地址窗口的转换,则重新映射电路135进行检验以 确定DMA请求中的DPA所属的AW是否为绑定到规定装置的AW 之一。根据一个实施例,重新映射电路135通过先找到对应于DMA 请求中DPA的地址窗口编号(AW存)(例如,通过AW# = DPA[(HAW-l): 21]计算得出,其中HAW是系统的支持物理地址宽度)来执行此检验。
随后,确定该AW弁是否分配给转换该DMA请求的重新映射电^各 135。如果AW^未分配给重新映射电路135,则发生转换故障。在一 个实施例中,转换故障可生成处理器的中断。在另一实施例中,管理 重新映射电路135的软件负责定期轮询重新映射电路135,以确定是 否已发生了任何转换故障。如果AW^有效,则找到相关联AW表项 目索引(通过INDEX = AW# - START—AW计算得出)。接着,存取在 AWPTR[INDEX]处的AW表项目,并确定它是否标记有DMA请求 中的装置ID。如果检验成功,贝'J AWPTR值指示AW页表的基址。 DPA[21:12]字段中的值用于取AW页表中的适当AWPTE。
基于AWPTE的编程,DMA请求净皮完成到在AWPTE中规定的 HPA,或者它被阻止。AWPTE处理类似于在重新映射电路135中如 何为所述的多级I/O页表处理叶PTE。在一个实施例中,如果转换成 功,它由重新映射电路135在I/O转换后备緩冲器(1/0 TLB)高速緩存。
如上所述,除了基于单级和多级页表的地址转换外,重新映射电 路135还执行基于地址窗口的转换。图11是一个流程图,示出了重 新映射电路135执行基于地址窗口的转换和基于单级和多级页表的地 址转换的操作的 一 个实施例。
在处理框1110, 1/0装置生成DMA请求。在处理框1120, DMA 请求经重新映射电路135以常规方式处理。在判定框1130,确定在I/O TLB中是否找到在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包括在处理器UO或系统存储器 140中。
上述重新映射体系结构实现了类似于多级页表的4K粒度DMA 地址转换,并仍提供了限制于与单个存储器查找相关联的开销的最坏 情况性能保证。
尽管在阅读了上述说明后,本领域的技术人员将毫无疑问地明白 本发明的许多变化和修改,但要理解,通过图示显示和描述的任何具 体实施例决不可视为限制。因此,对各种实施例细节的引用无意限制 权利要求书的范围,在其自身中只叙述了被视为本发明的那些特性。
权利要求
1.一种设备,包括重新映射电路以便于一个或多个输入/输出(I/O)装置使用直接存储器存取(DMA)事务处理存取存储器装置,所述重新映射电路包括第一转换机制以经基于地址窗口的转换对I/O DMA事务处理执行存储器地址转换。
2. 如权利要求1所述的设备,还包括第二转换机制以经单级页表和多级页表中至少一个对I/O DMA事务处理执行存储器地址转换。
3. 如权利要求1所述的设备,其中第一转换机制包括地址窗口指针表(AWPTR)以执行所述基于地址窗口的转换。
4. 如权利要求3所述的设备,其中所述AWPTR包括至少一个项目,所述项目包含至少一个地址窗口(AW)的地址窗口页表(AWPT)的基址。
5. 如权利要求4所述的设备,其中每个AWPTR项目标记有指示相关联AW被分配到的1/0装置的装置ID。
6. 如权利要求5所述的设备,其中所述装置ID还包括指示总线、装置和所述装置内功能中至少一项的信息。
7. 如权利要求4所述的设备,其中每个AWPT项目为所述AW内的4KB槽提供转换。
8. 如权利要求4所述的设备,其中每个AWPT项目包括存取控制位,所述存取控制位规定是否允许对用于存取所述AWPT项目的装置物理地址进行读存取或写存取。
9. 一种方法,包括在重新映射电路从请求输入/输出(I/0)装置接收直接存储器存取 (DMA)请求;确定是否容许完成所述DMA请求;以及如果容许所述存取,则在存储器中将装置物理地址(DPA)转换成 主才几物理地址(HPA)。
10. 如权利要求9所述的方法,其中确定是否容许完成所述DMA 请求包括计算与所述DPA相关联的被请求地址窗口 (AW); 确定所述被请求AW是否绑定到所述重新映射电路;以及 确定所述被请求AW是否绑定到所述请求I/O装置。
11. 如权利要求10所述的方法,其中如果确定所述被请求AW 未绑定到所述请求I/0装置,则发生转换故障。
12. 如权利要求10所述的方法,其中如果确定所述被请求AW 未绑定到所述重新映射电路,则发生所述转换故障。
13. 如权利要求9所述的方法,还包括 找到所述DPA的相关联AW指针表项目索引;以及 在所述索引处查找所述AW指针表项目。
14. 如权利要求13所述的方法,还包括确定所述AW指针表项 目是否标记有对应于所述请求I/O装置的装置ID。
15. 如权利要求13所述的方法,还包括存取存储器中与所述AW 指针表项目和所述DPA相关联的AW页表项目(AWPTE)。
16. 如权利要求15所述的方法,还包括#_用所述AWPTE计算与 所述DPA相关^:的所述HPA。
17. 如权利要求16所述的方法,还包括基于所述AWPTE中至少一个容许位和所述DMA请求类型,确 定是否允许完成所述DMA请求;以及如果在所述至少一个容许位不允许所述DMA请求类型,则阻止 完成所述DMA请求。
18. 如权利要求9所述的方法,还包括高速缓存所完成的转换。
19. 一种计算机系统,包括 主存储器装置;一个或多个输入/输出(1/0)装置,经直接存储器存取(DMA)存取所 述存储器装置;以及存储器控制器,耦合到所述存储器装置,具有DMA重新映射电 路以便于所述一个或多个I/O装置存取所述存储器装置,所述DMA 重新映射电路包括第一转换机制,经基于地址窗口的转换对I/O DMA事务处 理执行存储器地址转换。
20. 如权利要求19所述的计算机系统,il包括第二转换机制,以 经单级页表和多级页表中至少一个对I/O DMA事务处理执行存储器 地址转换。
21. 如权利要求19所述的计算机系统,其中所述存储器装置再分 成至少一个地址窗口(AW)。
22. 如权利要求21所述的计算机系统,其中所述存储器装置还包 括AW页表(AWPT),所述AWPT定义装置物理地址(DPA)到主机物 理地址(HPA)转换。
23. 如权利要求22所述的计算机系统,其中所述AWPT包括至 少一个AW页表项目(AWPTE),所述AWPTE为所述AW内的至少 一个地址提供转换。
24. 如权利要求21所述的计算机系统,其中所述至少一个AW 中的每个被绑定到一个I/O装置。
25. 如权利要求22所述的计算机系统,其中第一转换机制包括执 行所述基于地址窗口的转换的束(AWPTR)。
26. 如权利要求22所述的计算机系统,其中所述AWPTR包括至 少一个项目,所述项目包括特定AW的AWPT的基址。
27. 如权利要求26所述的计算机系统,其中每个AWPTR项目标 记有指示相关联AW被分配到的I/O装置的装置ID。
全文摘要
本文公开了一种设备。该设备包括重新映射电路以便于一个或多个I/O装置为直接存储器存取(DMA)事务处理存取存储器装置。重新映射电路包括一种转换机制以经基于地址窗口的转换对I/ODMA事务处理执行存储器地址转换。
文档编号G06F13/20GK101203838SQ200680022186
公开日2008年6月18日 申请日期2006年6月20日 优先权日2005年6月21日
发明者A·安德森, G·奈格尔, R·桑卡兰, S·本内特, U·施泰因伯格 申请人:英特尔公司