用于在数据处理系统中管理地址转换的方法和装置的制作方法

文档序号:6612256阅读:207来源:国知局
专利名称:用于在数据处理系统中管理地址转换的方法和装置的制作方法
用于在数据处理系统中管理地址转换的方法和装置 技术领域本申请通常涉及改进的数据处理系统和方法。更具体地,本申 请涉及使用高速緩存的地址转换与存储器注册使能的适配器进行通 信的装置和方法。
背景技术
在具有当前的外设组件互连(PCI)协议的某些系统上,当执行直接存储器访问(DMA )操作的时候,使用地址转换和保护表(ATPT ) 来执行地址转换和访问检查。尽管ATPT已经使用了几十年,它们 对于较低端系统来说是新的,并且通过许多其他名称为人所知,诸 如直接存储器访问(DMA)重映射资源或者输入/输出存储器管理单 元(IOMMU)。 ATPT存储条目,用于将在DMA事务中使用的PCI 总线地址转换为用于访问实际存储器资源的实际存储器地址。在 ATPT中的条目存储保护信息,该保护信息标识哪些设备可以访问存 储器的相应部分、以及这样的设备可以在存储器的这些部分上执行 的特殊操作。最近,PCI-SIG ( www.pcisig.com/home )已经处于对允许驻留在 ATPT中的地址转换高速緩存在PCI系适配器中的机制进行标准化 的过程中。这些机制公知为地址转换服务(ATS) 。 ATS允许PCI 系适配器针对未转换的PCI总线地址请求转换,其中在支持ATS的 系统上,这种请求的成功完成可将已转换的(即实际存储器地址) 地址返回到PCI系适配器。然后,ATS允许PCI系适配器将在DMA 操作中使用的PCI总线地址标记为已转换。然后支持ATS的系统将 使用已转换的地址以旁路ATPT。 ATS还提供一种机制,通过该机制 主机侧(例如,硬件或者虚拟化媒介)可使先前所广告的地址转换无效。图1是示出了用于使用ATPT和PCI express ( PCIe )通信协议 执行DMA操作的传统机制的示范性图示。描绘的例子还示出了上述 PCIe地址转换服务(ATS),其通过PCIe端点(诸如使用ATS执 行地址转换操作的PCIe输入/输出(I/O )适配器)来调取(invoke )。 ATS功能在PCIe端点和主机系统的根联合体之中构建,如下所述。 有关PCIe ATS的更多信息,请参考可从外设组件互连特别兴趣组(PCI-SIG)网站www.pcisig.com处获得的PCIe ATS规范。如图1中所示,主机CPU和存储器IIO借助于系统总线115耦 合到PCIe根联合体120,该PCIe根联合体120包含地址转换和保护 表(ATPT) 130。 PCIe根联合体120接着经由PCIe链路135耦合到 一个或者多个PCIe端点140 (在PCIe规范中术语"端点"用于指支 持PCIe的I/O适配器)。根联合体120指示I/O层次的根,其将CPU/ 存储器连接到PCIe端点140。根联合体120包括主机桥(host bridge )、 零个或者多个根联合体集成的端点、零个或者多个根联合体事件采 集器、以及一个或者多个根端口。每个根端口支持分离的1/0层次。 1/0层次可以包括根联合体120、零个或者多个互联交换机和/或桥(其包括交换机或者PCI结构)、以及诸如端点140的一个或者多 个端点。例如,PCIe交换机可以用以增加诸如附加到根联合体120 的端点140的PCIe端点的数目。有关PCI和PCIe的更多信息,请 参考可从PCI-SiG网站www.pcisig.com处获得的PCI和PCIe规范。PCIe端点包括内部路由电路142、配置管理逻辑144、 一个或者 多个物理功能(PF) 146以及零个或者多个虚拟功能(VF) 148-152, 其中每个VF关联于PF。 ATS允许每个虛拟功能使用地址转换高速 緩存(ATC) 160-164,用于将已转换的PCI存储器地址高速緩存, 并且当执行DMA操作的时候,该PCI存储器地址可由虚拟功能使用 以旁路主机ATPT 130。在操作中,PCIe端点140可以调取PCIe ATS事务以请求将给定 PCI总线地址转换成为系统总线地址,并且指示后续事务(例如DMA7
操作)已经转换并且可旁路ATPT。才艮联合体120可以调取PCIe ATS 事务以使得被提供给PCIe端点140的转换无效,从而转换不再由 PCIe端点140的物理和/或虚拟功能所-使用。例如,当将要执行DMA才喿作的时候,可以在处理DMA才乘作的 特殊虚拟功能148-152的ATC 160-164中查找DMA操作的地址。如 果在ATC 160-164中没有出现地址转换,则可由PCIe端点140向才艮 联合体120提出转换请求。根联合体120则可以使用ATPT 130执行 地址转换并将已转换的地址返回PCIe端点140。 PCIe端点140则可 以在对应于处理DMA操作的物理和/或虚拟功能的适当ATC 160-164中存储该转换。使用已转换的地址可以将DMA操作传递到 系统总线115上。如果在ATC 160-164中已经存在此地址的转换,则已转换的地 址与DMA才喿作一起使用。在DMA头部中可以设置一个位来指示该 地址已经转换并且针对此DMA根联合体120中的ATPT 130可以被 旁路。作为结果,在PCIe端点140与主机CPU和存储器IIO之间 经由PCIe链路135和系统总线115来直接执行DMA操作。访问检 查仍然可以由才艮联合体120执行,用以确保PCIe端点的虚拟功能的 特歹朱BDF号对应于允许以由DMA操:作i青求的方式来访问该地址的 BDF。一段时间之后,如果提供到PCIe端点140的转换不再由PCIe 端点140所使用,诸如当转换已经在ATPT 130内部变化时,根联合 体120必须向PCIe端点140发布ATS无效请求。PCIe端点140并 不立刻冲刷针对该无效地址的所有未决请求。相反,PCIe端点140 等待引用无效的已转换的地址的所有未完成的读取请求退回 (retire),并释放ATC 160-164中的转换,诸如通过设置一个位来 将ATC 160-164中的条目标记为无效。PCIe端点140向根联合体120 返回ATS无效完成消息,指示ATC 160-164中转换无效的完成。PCIe 端点140确保无效完成指示在使用无效地址的任何先前发出的写入 之后到达根联合体120。
通常,ATPT 130可以提供为系统存储器中的树状结构转换表。 针对计算系统的每个PCI总线/设备/功能(BDF)可以提供不同的树 状结构。使用这些ATPT数据结构,设备可以共享设备地址空间, 并且设备可以具有专用的地址空间。由此,不是所有的设备可以在 系统存储器的所有地址空间上执行所有的DMA操作。作为DMA事务的一部分来同步进行ATPT 130的访问。这包括 使用 一种耗时的转换机制用于将DMA事务未转换的PCI总线存储以及检查ATPT以确保提交DMA事务的设备具有足够的许可用于访 问已转换的实际存储器地址、并且具有足够的许可以在已转换的实 际存储器地址上执行希望的DMA操作。作为访问ATPT 130的部分,必须标识对应于特 未BDF的正确 的ATPT树状数据结构、并且必须遍历(walk)树状数据结构,以 便执行转换和访问检查。ATPT树状数据结构的位置可能需要一次或 者两次访问来找到关联于BDF的树状数据结构的地址。 一旦发现, 则可以采耳又对树状数据结构的3次或者4次访问来遍历树。由此, 此转换和访问检查是造成与DMA操作关联的大量等待时间的原因。 这些等待时间可以导致端点的严重问题,端点需要低的通信等待时 间。作为减轻这些等待时间的一种方式,在PCIe端点140中实现的 ATS使用ATC 160-164来存储已经执行的地址转换,从而不必再次 执行这些转换。由此,通过ATPT和ATC的结合,PCIATS以此方 式执行地址转换和访问检查,以便减少与DMA操作相关联的等待时 间。尽管PCI SiG已经阐明针对PCIe ATS的规范,但PCI SiG没有 指定在实现PCIe ATS的系统中怎样分配用于使用ATS执行地址转 换和管理诸如ATPT和ATC的ATS结构的责任。发明内容示例性实施方式提供了一种方法和装置,用于使用高速緩存的
地址转换来与存储器注册使能的适配器或者端点进行通信。通过该 装置和方法,在设备驱动器和设备驱动器服务之间分配用于地址转 换信息的高速緩存管理的责任。设备驱动器可以提供在不受信任的任务逻辑分区(LPAR)中,而设备驱动器服务可以提供在受信任的 虚拟化媒介中,诸如虚拟化媒介操作系统、管理程序、服务分区等。设备驱动器负责管理用于在LPAR和PCIe端点中应用之间传送 请求的队列,反之亦然。设备驱动器进一步负责经由设备驱动器服 务调取存储器管理。设备驱动器服务负责管理由PCIe端点可访问的 存储器,包括PCIe端点的地址转换高速緩存(ATC)以及地址转换 和保护表(ATPT)。通过在设备驱动器和设备驱动器服务之间划分与PCIe端点进行 通信的责任,在OS内部运行的设备驱动器不能向PCIe端点提供与 另一 OS的存储器相关联的转换。作为结果,维护了与系统虚拟化相 关联的受信任模式。即,将地址转换高速緩存管理责任放置在设备 驱动器服务中可以防止一个OS请求端点对另一 OS的存储器执行 DMA操作。在一个示意性实施方式中,在主机系统的不受信任的任务逻辑 分区(LPAR)系统镜像中设备驱动器的初始化期间,用于PCIe端 点的设备驱动器调取设备驱动器服务(在下文中简单称为"驱动器 服务,,)以针对适配器资源来初始化地址转换和保护表(ATPT)条 目,并向设备驱动器返回PCI存储器地址,诸如工作、完成和事件 队列,其中该适配器资源驻留在系统存储器中,并且PCIe端点通过 直接存储器访问(DMA)操作可访问该适配器资源。。设备驱动器 和PCIe端点通过该命令、响应和事件队列通信。在此文档中,这些 队列将称作"设备驱动器的队列"。实际上,设备驱动器服务钉住(pin)用于设备驱动器的队列的 主机存储器,为设备驱动器的队列分配DMA地址,针对这些DMA 地址来对ATPT条目编程,并使能一个位,该位表示ATPT条目可 高速緩存,即,在PCIe端点上的队列上下文(例如,地址转换高速
緩存)中可高速緩存。然后,设备驱动器服务将未转换的PCIe存储 器地址(即,DMA地址)返回到设备驱动器用于ATPT条目,例如, 用于设备驱动器的队列的开始地址,其与偏移 一 起可以用于标识队 列中的特殊条目。未转换的PCIe存储器地址是这样的地址,它不处 于系统的存储器空间中,而且在其用以访问系统存储器之前必须被 转换。使用示意性实施方式的机制,这个未转换的PCIe存储器地址可 以提供到PCIe端点、并且由PCIe端点所使用以向根联合体发送转 换请求。即,PCIe端点可请求根联合体来返回与未转换的PCIe存储 器地址相关联的一个或多个已转换的PCIe存储器地址。然后,PCIe 端点可以将一个或多个已转换的PCIe存储器地址存储在与设备驱动 器的队列相关联的上下文中,例如,与PCIe端点中的一个或者多个 虚拟功能相关联的 一 个或者多个地址转换高速緩存。将未转换的PCIe存储器地址的转换存储在适配器的设备驱动器 队列上下文中允许在目标为设备驱动器队列条目的DMA时,PCIe 端点旁路根联合体的ATPT。由此,当根联合体接收到标记为已转换 的PCIe DMA事务的时候,根联合体验证转换高速緩存针对该端点 而使能,并且使用已转换的PCIe存储器地址直接访问主机的实际存 储器。在之后的某时间点处,诸如从系统移除PCIe端点之后,从系统 移除与设备驱动器相关联的功能(物理的或者虚拟的)之后等,需 要使得对应于未转换的PCIe存储器地址的ATC条目和ATPT条目 无效。为了执行这种无效,设备驱动器或者某较高级别的实体(诸 如管理程序管理组件)调取设备驱动器服务以将主机存储器解钉 (u叩in)并释放DMA地址,即,未转换的PCIe存储器地址。然后, 设备驱动器服务清除对应于未转换的PCIe存储器地址的ATPT条 目,并且根联合体向PCIe端点发布ATC条目无效请求。然后,PCIe 端点执行操作以使得对应于未转换的PCIe存储器地址的任何ATC 条目无效,并且在不再使用未转换的PCIe存储器地址之后,向设备 服务返回ATC无效完成响应。然后,设备服务将控制返回给设备驱 动器。在可替换实现中,设备驱动器服务可以向PCIe端点发布ATC 条目无效请求,并且在PCIe端点完成ATC条目无效之后,设备驱 动器服务可以清除ATPT条目并返回到设备驱动器。如上所提及,可以利用示意性实施方式的^L制来建立ATPT条 目,用于在系统镜像、运行在系统镜像中的应用等与PCIe端点之间 使用一个或者多个队列数据结构进行的通信中。在示意性实施方式 的如此实现中,以上文先前所述的方式将用于一个或者多个队列数 据结构的ATPT条目初始化。在PCIe端点的初始化阶段期间,PCIe 端点验证设备驱动器已经初始化。例如,这可以通过从PCIe端点的 PCI配置空间、重要产品数据(VPD)字段、或者存储器映射的输入 /输出(MMIO)字4殳读取信息来执行。设备驱动器可以向PCIe端点提供 一 个或者多个队列的开始和结 束地址、开始地址和长度等。例如,设备驱动器可以将这些地址写 入对应于队列配置空间的PCIe端点的PCI配置空间字段、VPD或者 MMIO字段。这些地址是未转换的PCIe地址。PCIe端点可以调取用 于队列地址的已转换的PCIeATS请求。作为结果,根联合体可以使 用ATPT来执行地址转换并将结果返回到PCIe端点,其可以将已转 换的地址在队列上下文中高速緩存,用于从 一 个或者多个队列获取 项目使用,并将项目放置在一个或者多个队列中。在一个示意性实施方式中,设备驱动器生成用于与PCIe端点进 行通信的队列数据结构。队列数据结构可以包括例如工作、完成以 及事件队列。工作队列数据结构可以发送工作队列、接收工作队列 或者共享接收工作队列。这些队列数据结构可以以包括链接的列表 队列、循环緩冲队列等的任何方式配置。在生成这些队列数据结构时,作为由设备驱动器执行操作的部 分,设备驱动器调取设备驱动器服务以针对队列数据结构来对ATPT 条目编程,并且向设备驱动器返回用于队列的未转换的PCIe地址 (即,DMA地址)。ATPT条目的编程可以包括4丁住用于队列数 据结构的主机存储器空间,利用用于从未转换PCIe地址到系统存储 器地址的转换信息来对根联合体的ATPT中的ATPT条目进行编程, 并在ATPT条目中设置一个高速緩存使能位,该位指示对应于ATPT 条目的地址转换在PCIe端点的ATC中是可高速緩存的。在执行此 操作之后,用于一个或多个ATPT条目的未转换的PCIe地址返回到 设备驱动器。这些未转换的PCIe地址可以标识例如队列数据结构的 开始和结束地址。由设备驱动器向PCIe端点提供未转换的PCIe地址,诸如通过 将地址写入PCIe端点中的队列配置空间。队列配置空间可以是例如 PCI配置空间、 一个或者多个VPD字段、 一个或者多个MMIO字段 等。响应于接收到这些用于队列数据结构的未转换的PCIe地址,PCIe 端点可以向根联合体发布针对队列地址的PCIe ATS请求。作为结 果,根联合体可以执行针对队列数据结构的未转换PCIe地址的访问 检查以及地址转换,并将已转换的地址返回PCIe端点。PCIe端点则 可以将这些地址转换存储在由PCIe端点的ATC提供的队列上下文 中。作为上文的结果,由于PCIe端点现在访问用于与队列数据结构 相关联的地址的转换,所以PCIe端点现在可以4丸行DMA操作以将 队列条目提交到队列数据结构、或者从队列数据结构获取队列条目, 而不必经历根联合体ATPT地址转换。一旦PCIe端点不再使用队列数据结构,则可以以上文先前所述目无效。例如,当PCIe端点将要从系统中移除时、在关联于设备驱 动器的功能(物理的或者虚拟的)从主机系统中移除之后等情况下, 可以执行这种无效。这种无效的处理可以包括设备驱动器调取设 备驱动器服务以将对应于队列数据结构的主机系统存储器解钉,释 放用于这些队列数据结构的DMA地址,清除用于这些DMA地址的 ATPT条目,以及向PCIe端点发布ATC条目无效请求。当由PCIe 端点完成ATC条目无效操作的时候,设备驱动器服务将控制返回给
设备驱动器,并且此时,可以从系统移除PCIe端点。如上所述,可以使用示意性实施方式的机制来在设备驱动器中 建立队列数据结构,以及数据处理系统的根联合体中建立该队列数 据结构对应的ATPT条目。 一旦通过上述机制将这种队列数据结构 初始化,则可以通过使用这些队列数据结构和ATPT条目来执行在 PCIe端点和主机系统的逻辑分区的应用实例、系统镜像等之间的通 信。可以由不同类型的PCIe端点来使用这些队列数据结构和对应的 ATPT条目。例如,PCIe端点可以是连网的适配器,诸如以太网适 配器、结构通道适配器、InfiniBand 适配器等,用于通过一个或者 多个数据网络来与其他设备进行通信。通过这种连网适配器,正在 发送或者接收的数据被放置到与主机系统的设备驱动器相关联的緩 冲器之中,并且根据数据是否正在接收或者发送而由主机系统的系 统镜像或者PCIe适配器来获取。提供了用于建立队列数据结构以及 将对应于队列的已转换的地址进行高速緩存的示意性实施方式的机 制,从而可以使用这些已转换的地址和DMA操作来将数据直接发送 到传送和/或接收緩冲器,而不必在数据传送/接收的时候经历根联合 体的地址转换。由此,该机制降低了关联于经由网络适配器的数据 传送和接收的等待时间。除了由连网适配器使用以外,示意性实施方式的机制还进一步 由其他类型的PCIe端点使用,用于与本地可用设备通信。例如,PCIe 端点可以是用于与附加至PCIe端点的存储设备直接通信的小型组件 系统接口 (SCSI)适配器。可以使用示意性实施方式的机制,通过 提供将用于SCSI读取/写入的地址信息高速緩存在SCSI适配器中的 机制,来降低SCSI适配器的DMA读取等待时间。除了网络适配器和SCSI适配器以外,PCIe端点可以是其他类型 的适配器,包括支持存储器注册的适配器,诸如InfiniBand 主机通 道适配器(HCA) 、 RNIC等。除了对根联合体中的ATPT条目编程 以外,示意性实施方式的才几制可以进 一 步对用于在执行主才几系统和 其他设备之间的通信(例如,直接存储器访问(DMA)操作)中使 用的PCIe端点中的存储器注册(MR) ATPT条目编程。在一个示意性实施方式中,提供了一种用于管理地址转换的方 法。该方法可以包括由设备驱动器调取设备驱动器服务,用于初 始化数据处理:系统中的根联合体的地址转换数据结构中的地址转换 条目,以及从设备驱动器向设备驱动器服务传递注册修改符(modifier)和设备驱动器存储器数据结构的地址。该方法可以进一 步包括由设备驱动器服务在与根联合体相关联的地址转换数据结 构中创建一个或者多个地址转换数据结构条目。 一个或者多个地址 转换数据结构条目可以指定从未转换地址到用以直接访问所述设备 驱动器存储器数据结构的已转换地址的转换。该方法还包括由设 备驱动器服务在适配器的MR ATPT数据结构中创建 一 个或者多个 存储器注册(MR)地址转换和保护表(ATPT)条目,其与一个或 者多个地址转换数据结构条目相对应。MR ATPT数据结构可以和I/O 操作一起使用来旁路与根联合体相关联的地址转换数据结构。创建一个或者多个MRATPT条目可以包括向适配器注册与i殳 备驱动器存储器数据结构相关联的被钉住的存储器区域,以及利用 用于设备驱动器存储器数据结构的一个或者多个地址来填充MR ATPT数据结构条目的一部分。创建一个或者多个MRATPT条目可 以进一步包括向适配器通知,在MRATPT的较低部分中的一个或 者多个地址是已转换地址,这些已转换地址可以在直接存储器访问(DMA)事务中使用,以旁路与根联合体相关联的地址转换数据结 构。将MRATPT条目无效可以包括向适配器解注册(de-register) 设备驱动器存储器数据结构。该方法可以进一 步包括由设备驱动器调取设备驱动器服务,用 于将数据处理系统的根联合体的地址转换数据结构中的地址转换数 据结构条目无效。此外,设备驱动器服务可以将数据处理系统的根 联合体的地址转换数据结构中的地址转换条目、以及在适配器上的 一个或者多个对应的MR ATPT条目无效。
创建一个或者多个MRATPT条目可以包括向适配器注册与设 备驱动器存储器数据结构相关联的先前钉住的存储器区域。MR ATPT数据结构条目的 一部分可以利用用于设备驱动器存储器数据 结构的一个或者多个地址来填充。可以通知适配器,在MRATPT数 据结构的较低部分中的一个或者多个地址是未转换地址,在DMA事 务中使用该地址之前将会对其进行转换,所述DMA事务旁路与根联 合体相关联的地址转换数据结构。对于由设备驱动器服务创建的MR ATPT条目,适配器可以针对与MRATPT条目相关联的一个或者多 个地址执行转换请求,并可以利用一个或者多个已转换地址来填充 MR ATPT数据结构的一部分,该一个或者多个已转换地址与关联于 MR ATPT条目的 一个或者多个未转换地址相对应。使用MRATPT数据结构和1/0操作来旁路与根联合体相关联的 地址转换数据结构,这可以包括使用适配器的MR ATPT数据结构条 目中的一个或者多个已转换地址来处理与MRATPT数据结构条目 相关联的直接存储器访问(DMA)事务。DMA事务可以使用已转换 地址而将数据从适配器放置到设备驱动器存储器数据结构之中,而 在将数据放置到设备驱动器存储器数据结构之中的期间不调取根联 合体的地址转换操作。DMA事务可以与以下处理相关联发送WQE 、 RDMA写入WQE、 RDMA读取WQE、接收WQE、进入的RDMA 写入或者进入的RDMA读取。该方法可以进 一 步包括从设备驱动器服务向设备驱动器返回与 设备驱动器存储器数据结构相关联的一个或者多个未转换地址。设 备驱动器服务可以进一步将一个或者多个注册修改符返回到设备驱 动器。可以在数据处理系统的不受信任的逻辑分区或者系统镜像之一 中提供设备驱动器,并且设备驱动器服务提供在受信任的虚拟化媒 介中。受信任的虚拟化媒介是虚拟化媒介操作系统、管理程序或者 服务分区之一。在另一示意性实施方式中,提供了包括具有计算机可读程序的
计算机可用介质的计算机程序产品。当在计算设备上执行的时候, 计算机可读程序使得计算设备执行关于方法示意性实施方式而在上文概括的各种操作、以及操作的结合。在又一示意性实施方式中,提供了一种装置。该装置可以包括 处理器以及耦合到该处理器的适配器。处理器可以由设备驱动器调 取设备驱动器服务,用于初始化数据处理系统的根联合体的地址转 换数据结构中的地址转换条目,以及从设备驱动器向设备驱动器服 务传递注册修改符和设备驱动器存储器数据结构的地址。处理器可 以进一 步由设备驱动器服务在与根联合体相关联的地址转换数据结 构中创建一个或者多个地址转换数据结构条目,该一个或者多个地 址转换数据结构条目指定从未转换地址到用以直接访问所述设备驱 动器存储器数据结构的已转换地址的转换。此外,处理器可用由设备驱动器服务在适配器的MR ATPT数据结构中创建与 一个或者多 个地址转换数据结构条目相对应的一个或者多个存储器注册地址转 换和保护表(ATPT)条目。适配器可以使用I/O操作和MR ATPT 数据结构旁路与根联合体相关联的地址转换数据结构。本发明的这些以及其他特征和优点将在以下本发明的示范性实 施方式的详细说明中描述,或者对本领域普通4支术人员而言,通过 以下本发明的示范性实施方式的详细说明,发明的这些以及其他特征和优点将变得显而易见。


当结合附图阅读的时候,通过参考以下示意性实施方式的详细 描述,将更好地理解本发明和其中使用的优选模式以及进一步的目 的和优点,其中图1是示出了用于使用ATPT和PCI express ( PCIe )通信协议 执行DMA操作的传统机制的示范性图示;图2是示出了分布式数据处理环境的示范性图示,其中可以实 现示意性实施方式的示范性方面;
图3是示出了数据处理设备的示范性图示,其中可以实现示意 性实施方式的示范性方面;图4是示出了关于设备驱动器和设备驱动器服务的一个示意性 实施方式的操作的示范性图示;图5是示出了根据一个示意性实施方式的利用DMA操作处理已 转换的和未转换的PCIe地址的示范性图示;图6是根据一个示意性实施方式的流程图,其概括了用于对用 于DMA地址的ATPT条目进行初始化的示范性才喿作;图7是根据一个示意性实施方式的流程图,其概括了用于使用 于DMA地址的ATPT条目和ATC条目无效的示范性操作;图8是根据一个示意性实施方式的流程图,其概括了用于处理 DMA操作中的已转换的和未转换的PCIe地址的示范性操作;图9示出了用于高速緩存针对PCIe端点队列的地址转换的示意 性实施方式的实现;图IO是根据一个示意性实施方式的流程图,其概括了用于初始 化主机系统和PCIe端点之间通信的队列数据结构的示范性操作;图11是一个示范性操作的图示,其示出了使用工作队列条目(被 称作"工作队列条目,,或者WQE)从PCIe端点传递主机系统的緩 冲器中数据的操作;图12是示出了使用WQE经由PCIe端点传送数据的操作的示范 性图示;图13A至图13B描绘了根据一个示意性实施方式的流程图,其 概括了用于接收网络适配器的操作的示范性操作;图14A至图14B描绘了根据一个示意性实施方式的流程图,其 概括了用于传送网络适配器的操作的示范性操作;图15是根据一个示意性实施方式的示范性图示,其示出了用于 使用Verb ATPT执行与主机系统的DMA的操作;图16A至图16C描绘了根据一个示意性实施方式的流程图,其 概括了用于将存储器向PCIe端点注册的示范性操作。
具体实施方式
示意性实施方式提供了这样的机制,通过使用该机制,通过使 用高速緩存的地址转换信息来促进进行与存储器注册使能的适配器 或者端点的通信。将地址转换信息在适配器或者端点中进行这样的 高速緩存可以促进在适配器或者端点与设备驱动器之间直接进行直接存储器访问(DMA)事务。这样,示意性实施方式可以在其中可以使用设备驱动器和设备 驱动器服务执行DMA操作的任何计算设备中实现,如下文所述。这 种计算设备可以采取多种形式并且可以具有各种配置。在下文中, 图2至图3提供了其中可以实现示意性实施方式的示范性方面的数 据处理环境和数据处理设备的例子。应该理解,图2至图3仅仅是 示范性的,并且并非旨在于限制关于其中可以使用示意性实施方式 机制的数据处理环境和设备的类型。现在参考附图,尤其是参考图2至图3,其中提供了可以实现本 发明实施方式的数据处理环境的示范性图示。应该理解,图2至图3 仅仅是示范性的并且并非旨在声明或者暗示关于可以实现本发明的 方面或者实施方式的环境的任何限制。在不偏离本发明的精神和范 围的情况下,可以对所述环境进行多种修改。现在参考附图,图2描绘了其中可以实现示意性实施方式的方 面的示范性分布式数据处理系统的图示性表示。分布式数据处理系 统200可以包括其中可以实现示意性实施方式中的实施方式的计算 才几网络。分布式数据处理系统200包含至少一个网络202,该网络是 用以在分布式数据处理系统200内部连接在一起的各种设备和计算 机之间提供通信链路的介质。网络202可以包括连接,诸如有线、 无线通信链路或者光缆。在所述例子中,服务器204和服务器206随存储单元208连接 到网络202。另外,客户端210、 212和214也连接到网络202。这 些客户端210、 212和214可以是例如个人计算机、网络计算4几等。
在所述例子中,服务器204向客户端210、 212和214提供数据,诸 如引导文件、操作系统镜像、以及应用。在所述例子中,客户端210、 212和214是针对月l务器204的客户端。分布式it据处理系统200 可以包括附加的服务器、客户端以及未示出的其他设备。在所述例子中,分布式数据处理系统200是具有网络202的因 特网,其中网络202表示使用传输控制协议/因特网协议(TCP/IP) 协议族来彼此通信的网络和网关的世界范围集合。因特网的中心是 在主节点或者主机计算机之间的高速数据通信线路骨干,包括对数 据和消息进行路由的成千上万的商业、政府、教育以及其他计算机 系统。当然,还可以实现分布式数据处理系统200以包括许多类型 的网络,诸如例如内联网、局域网(LAN)、广域网(WAN)等。 如上所述,图2旨在于作为一个例子,并不作为针对本发明不同实 施方式的构架限制,并且因而,在图2中所示的特定单元不应被认 为是关于其中可以实现本发明示意性实施方式的环境的限制。现在参考图3,示出了其中可以实现示意性实施方式的方面的示 范性数据处理系统的框图。数据处理系统300是诸如图2中的主机210的计算机的一个例子,实现用于本发明示意性实施方式的处理的 计算机可用代码或者指令可以位于其中。在所述例子中,数据处理系统200使用中心(hub)架构,其中 包括北桥和存储器控制器中心(NB/MCH) 302以及南桥和输入/输 出(I/O)控制器中心(SB/ICH) 304。处理单元306、主存储器308 和图形处理器310连接到NB/MCH302。图形处理器310可以通过 加速图形端口 ( AGP )连接到NB/MCH 302。在所述例子中,局域网(LAN)适配器312连接到SB/ICH 304。 音频适配器316、键盘和鼠标适配器220、调制解调器322、只读存 储器(ROM) 324、硬盘驱动器(HDD) 326、 CD-ROM驱动器330、 通用串行总线(USB )端口和其他通信端口 232以及PCI/PCIe设备 334通过总线338和总线340连接到SB/ICH 304。 PCI/PCIe设备可 以包括例如以太网适配器、用于笔记本计算机的PC卡、以及附加卡。 PCI使用卡总线控制器,而PCIe不使用。ROM324例如可以是快闪 二进制输入/输出系统(BIOS)。HDD 326和CD-ROM驱动器330通过总线340连接到SB/ICH 304。 HDD 326和CD-ROM驱动器330可以使用例如集成的驱动器 电子设备(IDE)或者串行高级技术附件(SATA)接口。超级1/0 (SIO )设备336可以连接到SB/ICH 204。操作系统在处理单元306上运行。操作系统对图3中的数据处 理系统300内部的各种组件进行调整并提供控制。作为客户端.,操 作系统可以是商业可获得的操作系统,诸如Microsoft Windows XP (Microsoft和Windows是微软公司在美国、其他国家或两者中的商 标)。面向对象的编程系统(例如JavaTM编程系统)可以结合操作 系统运行,并且从在数据处理系统300上执4亍的Java程序或应用向 操作系统提供调用(Java和所有基于Java的商标是Sun微系统公司 在美国、其他国家或两者中的商标)。作为服务器,数据处理系统300可以是例如IBM eServer 86^8@计算机系统,运行在高级交互执行(AIX )操作系统或者 LINUX⑧操作系统(eServer、 pSeries和AIX是国际商用机器公司在 美国、其他国家或两者中的商标,而Linux是Linus Torvalds在美国、 其他国家或两者中的商标)上。数据处理系统300可以是在处理单 元306中包括多个处理器的对称多处理器(SMP)系统。作为替换, 可以使用单处理器系统。针对操作系统、面向对象的编程系统以及应用或程序的指令位 于诸如HDD 326的存储器设备上,并且可以装载到主存储器308中 用于由处理单元306来执行。本发明示意性实施方式的处理可以由 处理单元306使用计算机可读程序代码来执行,该计算机可读程序 代码可以位于例如主存储器308、 ROM 324、或者一个或多个外围设 备326和330的存储器中。总线系统(诸如图3中所示的总线338或者总线340)可以包括 一个或多个总线。当然,可以使用在附加至该结构或架构的不同组
件或设备之间提供数据传递的任何类型的通信结构或架构来实现总线系统。通信单元(诸如图3中的调制解调器322或网络适配器312) 可以包括用以传送和接收数据的一个或多个设备。存储器可以是例 如主存储器308、 ROM 324或诸如在图3中NB/MCH 302中可以找 到的高速緩存。本领域普通技术人员应该理解,在图2至图3中的硬件可以根 据实现而改变。其他内部硬件或外围设备,诸如闪存、等同的非易 失性存储器或光盘驱动器等,可以在图2至图3中示出的硬件之外 使用或代替图2至图3中示出的硬件而使用。此外,示意性实施方 式的处理可以应用到先前提及的SMP系统以外的多处理器数据处理 系统中,而并不背离本发明的精神和范围。此外,数据处理系统300可以采取多个不同数据处理系统的4壬 意一个的形式,包括客户端计算设备、服务器计算设备、平板计算 机、膝上型计算机、电话或者其他通信设备、个人数字助理(PDA) 等。在某些示意性例子中,例如,数据处理系统300可以是便携计 算设备,其配置有闪存来提供非易失性存储器用于存储操作系统文 件和/或用户生成的数据。本质上,数据处理系统300可以是任何已 知的或者新近开发的数据处理系统,而并没有架构限制。如上所提及,示意性实施方式提供了一种系统和方法,用于将 端点地址转换高速緩存管理的责任分布在设备驱动器和设备驱动器 服务之间。设备驱动器例如可以提供在不受信任的任务逻辑分区 (LPAR)中,而设备驱动器服务例如可以提供在受信任的输入/输出 (I/O)虚拟化媒介(VI)中。尽管将在示意性实施方式的描述中使 用PCIe端点和PCIe通信协议,应该理解,示意性实施方式不应限 制于此,并且在不偏离本发明的精神和范围的情况下,可以使用任 何通信协议。关于示意性实施方式,设备驱动器负责管理和使用用于在用户 应用/库和PCIe端点之间通信的队列结构。设备驱动器进一 步负责调 取由设备驱动器服务提供的存储器管理服务。设备驱动器服务初始
化并管理计算系统的PCIe根联合体的保护表(ATPT)和地址转换、 以及PCIe端点的地址转换高速緩存(ATC)。下文将描述执行这种 初始化和管理的方式。在 一 个示意性实施方式中,在主机系统的逻辑分区的系统镜像 中,在用于PCIe端点的设备驱动器的初始化期间,用于PCIe端点 的设备驱动器调取设备驱动器服务以初始化地址转换和保护表 (ATPT)条目,并将PCI存储器地址返回到设备驱动器。在一个示 意性实施方式中,这些ATPT条目和PCI存储器地址与用于与PCIe 适配器进行通信的一个或多个设备驱动器队列(称作"设备驱动器 的队列")相关联。实质上,设备驱动器服务钉住(pin)用于一个或者多个队列的 主机系统存储器,对一个或者多个队列分配DMA地址,对ATPT条 目编程并使能一个位,该位表示ATPT条目可以高速緩存,即,可 以在PCIe端点上的地址转换高速緩存中进行高速緩存。然后,设备 驱动器服务针对可能使用的ATPT条目向设备驱动器返回一个或者 多个未转换的PCIe存储器地址,例如,作为与 一个或者多个队列(例 如,队列的开始地址,以及可选的,队列的结束队列地址)相关联 的地址。未转换的PCIe存储器地址是这样的地址,该地址不在系统 的实际存储器地址空间中,并且在使用其访问系统的实际存储器之 前必须进4于4争才奂。使用示意性实施方式的机制,可以向PCIe端点提供未转换的 PCIe存储器地址,并且该地址由PCIe端点所使用以与根联合体执行 转换请求操作。即,PCIe端点可以请求根联合体返回已转换的PCIe则可以在与设备驱动器的队列相关联的上下文中(例如,在PCIe端 点中的虚拟功能的地址转换高速緩存(ATC)中)存储一个或多个 已转换的PCIe存储器地址。在适配器的设备驱动器队列上下文中存储未转换PCIe存储器地 址的转换,这允许PCIe端点在目标为设备驱动器队列条目的DMA
时旁路根联合体的ATPT。由此,当根联合体接收到标记为已转换的 PCIe DMA事务时,根联合体将验证转换高速緩存针对端点而使能, 并且使用已转换的PCIe存储器地址直接访问主机的实际存储器。在之后的某时间点,诸如从系统移除PCIe端点之后,从系统移 除与设备驱动器关联的功能(物理的或者虚拟的)等之后等等,需 要使得对应于未转换的PCIe存储器地址的ATPT条目和ATC条目 无效。为了执行这种无效,设备驱动器或者某些较高级别实体(诸 如管理程序管理组件)调取设备驱动器服务以解钉(unpin)主机存 储器并释放DMA地址,即,未转换的PCIe存储器地址。设备服务 则清除对应于未转换的PCIe存储器地址的ATPT条目,并且根联合 体向PCIe端点发布ATC条目无效请求。然后PCIe端点执行操作.以使得对应于未转换的PCIe存储器地 址的任何ATC条目无效,并在未转换的PCIe存储器地址不再使用 之后,向设备服务返回ATC无效完成响应。设备驱动器服务则将控 制返回给设备驱动器。 一 个可替换的实现包括,使驱动器服务向PCIe 端点发布ATC条目无效请求,并且在PCIe端点完成ATC条目无效 之后,设备驱动器服务清除ATPT条目并返回到设备驱动器。图4是示出了关于设备驱动器和设备驱动器服务的一个示意性 实施方式的操作的示范性图示。如在图4中所示,主机系统可以具 有一个或者多个逻辑分区410,在该逻辑分区中可以执行例如操作系 统等的系统镜像420。可以使用系统镜像420通过访问应用库等来执 行用户应用430。系统镜像420具有相关联的文件系统440,通过其 可以访问文件、设备驱动器、库以及其他软件资源。在系统镜像420 中可以提供设备驱动器450,用于在系统镜像420和PCIe适配器4卯 之间进行通信。设备驱动器450进一步具有相关联的完成队列422,通过该完成 队列,用户应用430、系统镜像420等可以与PCIe端点490通信。 完成队列422具有完成队列条目(CQE) 424,用于与工作队列条目 相关联的完成操作,其中该工作队列条目由设备驱动器450、用户应
用430、系统镜像420、主机系统存储器以及其他主机系统资源传递, 并且已经由PCIe端点490完成。以与完成队列422和系统镜像420 相关联的方式提供门铃存储设备426,用于当完成队列422具有需要 处理的完成队列条目424的时候,通知系统镜^象420。可以由这种队 列执行的工作的例子包括与从PCIe端点490请求的工作系统镜像 420相关联的完成处理、与由PCIe端点490传送(surface)到系统 镜像420的错误或者多个事件相关联的异步事件处理等等。类似地,PCIe端点490可以具有相关联的PCIe端点工作队列 498,其中可以提供工作队列条目(WQE) 499,用于向PCIe端点 490通知系统镜像420、用户应用430等期望由PCIe端点490来执 行的操作。PCIe端点490工作队列498可以在PCIe端点490其自身 中实现,或者更普通地,如所述的那样,在由PCIe端点490可以访 问的系统镜像420存储器位置中实现。在PCIe端点490中可以提供 门铃存储设备496,用于向PCIe端点490通知WQE 499何时存在于 PCIe端点工作队列498中以便处理。工作队列可以是仅用于出站(outbound)工作的发送工作队列;仅用于入站(inbound)工作的 接收工作队列;用于共享多个接收队列中的接收工作队列条目的共 享接收工作队列;或者混合发送和接收工作队列,其中在相同队列 上可以传递出站和入站工作两者。PCIe端点490进一步具有一个或者多个物理功能(未示出)以 及虚拟功能492。虚拟功能492可以进一步维护地址转换高速緩存(ATC ) 494以用于将已转换的地址进行高速緩存,以便例如用于执 行与主机系统存储器的直接存储器访问(DMA)操作。ATC 494可 以存储在PCIe端点490的设备驱动器的队列上下文中。每个虚拟功 能可以具有一个或者多个工作队列、完成队列以及事件队列。PCIe端点490经由PCI结构485耦合到主机系统,其可以包括 通信链路、 一个或者多个PCI交换机等。主机系统具有PCIe根联合 体480用于经由PCI结构485与PCIe端点490进行通信。才艮联合体 480维护地址转换和保护表(ATPT) 482,其用于将未转换的PCIe
存储器地址转换成为在系统的实际存储器地址空间中使用的已转换 地址。ATPT 482和ATC 494的管理由在输入/输出(I/O )虚拟化4某介 (VI) 460中提供的设备驱动器服务470执行。IOVI 460例如可以 是管理程序或者其他虚拟化管理组件,诸如受信任的服务分区。当 需要初始化ATC 494和ATPT 482中的条目以及使该条目无效的时 候,设备驱动器服务470可以由设备驱动器450来调取。在设备驱动器450和设备驱动器服务470之间划分用于管理主 机系统和PCIe端点之间通信的责任。具体地,设备驱动器450负责 管理它的一个或者多个完成队列422以及PCIe端点的一个或者多个 工作队列498。设备驱动器450另外负责当需要执行必要的功能用 于初始化ATPT 482中的地址转换条目的时候,调取设备驱动器服务 470;以及当PCIe端点490不再使用转换时,使得ATPT482和ATC 494中的条目无效。在设备驱动器450的初始化期间,设备驱动器450可以针对一 个或者多个队列来初始化DMA地址空间,所述一个或者多个队列诸 如设备驱动器的一个或者多个完成队列422、 PCIe端点的一个或者 多个工作队列498 (其驻留在系统镜像420中用于与PCIe端点490 通信)等。接着,针对PCIe端点490的设备驱动器450调取设备驱 动器服务470以初始化ATPT482条目,用于将PCIe地址转换成为 DMA地址空间地址,以访问系统存储器部分。每个ATPT条目用于 连续PCI总线地址的一个集合。用于初始化地址转换和保护表条目 的机制通常在现有技术中是已知的。例如,在普通转让的美国专利 6,629,162中描述了用于初始化这种条目的机制。然后,设备驱动器 服务470向设备驱动器450返回一个或者多个PCI存储器地址。实际上,在所述例子中,设备驱动器服务470钉住用于一个或 者多个完成队列422和PCIe端点的一个或者多个工作队列498 (如 果其驻留在系统镜像420中)的主机系统存储器。设备驱动器服务 470向设备驱动器的一个或者多个完成队列422和PCIe端点的一个
或者多个工作队列498 (如果其驻留在系统镜像420中)分配DMA 地址。设备驱动器服务470对ATPT条目进行编程并且使能一个位, 该位表示用于设备驱动器的一个或者多个完成队列422以及PCIe端 点的一个或者多个工作队列498 (如果其驻留在系统镜像420中)的 ATPT条目是可高速緩存的,即可高速緩存在PCIe端点490上的ATC 494中。然后,设备驱动器服务470针对ATPT条目向设备驱动器 450返回未转换的PCIe存储器地址。使用示意性实施方式的机制,则可以向PCIe端点490提供未转 换的PCIe存储器地址,用以向PCIe端点490通知队列422和498 的位置。可以由PCIe端点490使用未转换的PCIe存储器地址来向 根联合体480发送转换请求操作。即,PCIe端点490可以请求根联存储器地址。然后,PCIe端点490可以将已转换的PCIe存储器地址 存储在与设备驱动器的队列相关联的上下文(例如,ATC494)中。 作为结果,将未转换的PCIe存储器地址的转换存储在PCIe端点的 设备驱动器队列上下文或者ATC 494中,这允许PCIe端点490在目 标为设备驱动器队列条目(例如,完成队列422中的CQE424)的 DMA上旁路根联合体ATPT482。即,当根联合体480接收标记为 已转换的PCIeDMA事务的时候,其将验证转换高速緩存针对PCIe 端点490而使能,并且将直接使用已转换的PCIe存储器地址访问主 机系统的实际存储器。在之后的某时间点处,诸如从系统移除PCIe端点490之后,从 主机系统移除与设备驱动器450相关联的功能(物理的或者虚拟的) 之后等等,需要使得对应于未转换的PCIe存储器地址的ATPT条目 和ATC条目无效。为了执行这种无效,设备驱动器450、管理程序 管理组件等调取设备驱动器服务470以将主机存储器解钉并释放 DMA地址,即,未转换的PCIe存储器地址。然后设备驱动器服务 470清除ATPT 482中对应于未转换的PCIe存储器地址的ATPT条 目,例如,通过设置ATPT482中的一个位表示该条目不再有效,或 者通过将ATPT条目"置零(zero,ing)"来指示其不再有效。然后,根联合体480向PCIe端点4卯发布ATC条目无效请求。 然后,PCIe端点490执行操作以使得ATC 494中对应于未转换PCIe 存储器地址的任何ATC条目无效。这种无效可以包括,例如,从高 速緩存已转换的任何虚拟功能的队列上下文(例如,ATC 494 )中移 除高速緩存的转换。在未转换的PCIe存储器地址不再使用之后,即, 当引用未转换PCIe存储器地址的所有未完成的DMA操作完成时, PCIe端点490向设备驱动器服务470返回ATC无效完成响应。然后, 设备驱动器服务470将控制返回给设备驱动器450。在可替换实现 中,设备驱动器服务470可以向PCIe端点490发布ATC条目无效 请求,并且在PCIe端点490完成ATC条目无效之后,设备驱动器 服务470可以清除ATPT482中的ATPT条目并返回至设备驱动器 450。图5是示出了根据一个示意性实施方式的利用DMA操作处理已 转换的和未转换的PCIe地址的示范性图示。图5中所示的操作假定, 已经使用设备驱动器和设备驱动器服务初始化了用于DMA操作的 适当ATPT条目,如先前所述。图5示出了从PCIe端点505发送到 主机系统的CPU和存储器560的使用未转换的PCIe地址的一个 DMA操作,以及从PCIe端点505发送到CPU和存储器560的使用 已转换的PCIe地址的另一个DMA^:作。如图5中所示,当在PCIe端点505的虚拟功能中接收到DMA 操作请求或生成DMA操作请求时,可以执行相应ATC的检查,以 确定在ATC中是否存在用于未转换PCIe地址的地址转换。如果在 ATC中不存在用于未转换PCIe地址的条目,则将DMA操作请求作 为使用未转换PCIe地址的未转换PCIe DMA 510而转发到根联合体 530。如果在ATC中可获得条目、并且该条目没有被无效,则可以 使用已转换的地址代替用于DMA的未转换PCIe地址。作为结果, 将使用已转换的地址520的已转换的PCIe DMA转发到根联合体 530。
对于未转换PCIe DMA 510,由于未转,换PCIe地址不在主才几系 统存储器地址空间中,有必要首先将未转换PCIe地址转换成为主机 系统存储器地址。由根联合体530使用ATPT来执行此转换。另外, 根联合体530根据PCIe端点505的BDF号以及ATPT中的条目来进 一步执行访问检查。即,根联合体530在ATPT 540中查找对应于未 转换PCIe地址的条目,获得对应于未转换PCIe地址的已转换的主 机系统存储器地址、以及用于已转换的主机系统存储器地址的相应 的保护信息。该保护信息可以标识哪些BDF号可以访问相应的主枳』 系统地址、以及可以在与这些主机系统存储器地址相对应的系统存 储器的部分上执行的特殊操作。如果允许PCIe端点505访问与已转换的系统存储器地址相对 应的系统存储器的部分,并且允许执行请求的DMA操作(例如,读 /写),则使用已转换的系统存储器地址570将DMA操作请求转发 到CPU和存储器560。如果不允许PCIe端点505访问系统存储器的 部分,则可以返回错误消息,并且DMA操作请求不被转发到CPU 和存储器560。用于未转换PCIe地址的已转换的系统存储器地址可以返回到 PCIe端点505。然后,PCIe端点505可以在提交DMA才乘作请求的 虚拟功能的ATC中存储该转换,参考图4如上所述。以此方式,代 替随后必须执行此转换的是,可以在PCIe端点中经由ATC访问已 转换的系统存储器地址,因而节省了针对未转换的PCIe地址的ATPT 转换所需的周期。对于已转换的PCIe DMA 520,由于已经借助于PCIe端点505 中的虚拟功能的ATC而将PCIe地址转换成为系统存储器地址,DMA 操作可以通过根联合体530直接传递到CPU和存储器560。例如, 已转换的PCIe DMA 520在DMA头部中设置(例如,由PCIe端点 505设置) 一个位,指示在DMA操作请求的头部中指定的地址是已 转换的地址。根联合体530可以读取此位并且确定该位是否指示 D M A操作请求中的地址是已转换的或者未转换的地址。
如果根联合体530确定该地址是未转换的地址,则执行上述关 于未转换PCIe DMA操作请求510的操作。如果根联合体530确定 该地址是已转换的地址,则根联合体530可以将DMA操作请求520 传递到CPU和存储器560。可选地,仍可以才艮据PCIe端点505的 BDF号来执行访问检查,以确保允许PCIe端点访问与已转换的系统 存储器地址相对应的系统存储器部分。此访问检查可以非常简单, 诸如通常检查以确定是否允许BDF号对地址转换进行高速緩存,如 果允许,则检查成功。如果不允许BDF号对地址转换进行高速緩存, 则该访问4全查失败。图6至图8概述了示意性实施方式的各种元素的示范性操作。 应该理解,可由计算机程序指令来实现这些流程图示的每个方框、 下文的流程图示、以及流程图示中方框的结合。可以向处理器或者 其他可编程数据处理装置提供这些计算机程序指令以生成一个机 器,以便在处理器或者其他可编程数据处理装置上执行的指令创建 用于实现一个或多个流程方框中的指定功能的器件。这些计算机程 序指令还可以存储在计算机可读存储器或者存储介质中,该指令可 以引导处理器或者其他可编程数据处理装置以特殊方式工作,以便 在计算机可读存储器或者存储介质中存储的指令产生一项产品,该 产品包括实现一个或多个流程方框中指定功能的指令器件。因而,流程图示的方框支持用于执行指定功能的器件的结合、 用于执行特定功能的步骤的结合、以及用于执行特定功能的程序指 令器件的结合。应该理解,流程图示的每个方框、以及流程图示中 方框的结合可以通过执行特定功能或者步骤的基于专用硬件的计算 机系统来实现,或者由专用硬件和计算机指令来实现。图6是根据一个示意性实施方式的流程图,概括了对用于DMA 地址的ATPT条目进行初始化的示范性操作。如在图6中所示,该 操作开始于由主机系统对用于PCIe端点的设备驱动器进行初始化, 作为对主机系统上系统镜像的初始化的一部分(步骤610)。主机系 统调用逻辑分区中的设备驱动器,该设备驱动器接着调用I/O虚拟化
媒介中的设备驱动器服务(步骤620)。设备驱动器服务钉住主机系 统存储器(步骤630)。设备驱动器服务向PCIe端点分配DMA地址(步骤640 )。设 备驱动器服务对用于DMA地址的ATPT条目编程,并且如果合适则 在ATPT条目中设置高速緩存使能位(步骤650 )。然后,设备驱动 器服务向设备驱动器返回未转换的PCIe存储器地址(步骤660), 并且操作终止。图7是根据一个示意性实施方式的流程图,概括了用于使用于 DMA地址的ATPT条目和ATC条目无效的示范性操作。如在图7 中所示,操作开始于设备驱动器调用设备驱动器服务(步骤710)。 设备驱动器服务释放DMA地址(步骤720 ),然后清除用于DMA 地址的ATPT条目(步骤730)。根联合体向PCIe端点发布ATC条目无效请求(步骤740)。 PCIe端点使得对应于将被无效的DMA地址的ATC条目无效(步骤 750 )。设备驱动器服务等待ATC无效完成响应接收(步骤760)。 一旦接收到ATC无效完成响应,则设备驱动器服务可以将主机系统 存储器解钉(步骤770),而一旦完成ATC无效则将控制返回给设 备驱动器(步骤780)。然后,操作终止。图8是根据一个示意性实施方式的流程图,概括了用于处理 DMA操作中已转换的和未转换的PCIe地址的示范性操作。如图8 中所示,操作开始于在根联合体中接收DMA事务(步骤810)。根 联合体确定是否设置了已转换的位(步骤820)。如果没有设置已转 换的位,则根联合体使用ATPT执行全面转化和BDF号访问4企查(步 骤830)。此后,接着的是操作的两个路径。在第一路径中,做出关于是 否允许DMA操作的源执行已转换的DMA操作的确定,即关于访问 检查是否成功完成的确定(步骤840)。如果没有,则返回错误(步 骤860)。如果允许源执行已转换的DMA操作,则根联合体执行 DMA(步骤850 )。然后操作终止。
如果设置了已转换的位(步骤820 ),则可以执行可选的BDF 号访问检查(步骤870)。操作旁路步骤830的地址转换而继续到步 骤840。由此,示意性实施方式4是供一种机制,通过该机制调取i殳备驱 动器服务以将主机系统的根联合体的地址转换数据结构中的地址转 换初始化和使其无效。这些设备驱动器服务可以在I/O虛拟化媒介中 提供,并且可以由在与系统镜像相关联的逻辑分区中提供的设备驱 动器来调取。设备驱动器服务可以通过根联合体创建地址转换数据 结构条目,用于将虚拟地址(例如未转换PCIe地址)转换成为系统 存储器地址。此外,设备驱动器服务可以通过根联合体来从地址转 换数据结构中清除地址转换条目,并通过PCIe端点将PCIe端点的 任何地址转换高速緩存中的条目无效。如上所提及,可以使用示意性实施方式的机制来建立ATPT条 目,用于在系统镜像、系统镜像中运行的应用等与使用一个或者多 个队列数据结构的P CI e端点之间的通信中使用。在示意性实施方式 的此实现中,以上文先前所述方式将用于一个或者多个队列数据结 构的ATPT条目初始化。在PCIe端点的初始化阶段期间,PCIe端点 对设备驱动器已经被初始化进行验证。这可以例如通过从PCIe端点 的PCI配置空间、重要产品数据(VPD)字段、或者存储器映射的 输入/输出(MMIO)字段读取信息来执行。设备驱动器可以向PCIe端点提供一 个或者多个队列的开始和 结束地址、开始地址和长度等等。例如,设备驱动器可以将这些地 址写入对应于队列配置空间的PCIe端点的PCI配置空间字段、VPD 或者MMIO字段。这些地址是未转换的PCIe地址。PCIe端点可以 调取用于队列地址转换的PCIe ATS请求。作为结果,根联合体可以 使用ATPT来执行地址转换并将结果返回到PCIe端点,其可以将已 转换的地址在队列上下文中高速緩存,用于从 一 个或者多个队列获 取项目使用,并将项目放置在一个或者多个队列中。通过以此方式 预转换队列地址,通过将转换操作的等待时间从每个操作的开始移
动到任何操作开始之前来降低在开始I/O操作中所包含的等待时间, 由此提高端点DMA操作的整体性能。图9示出了用于将用于PCIe端点队列的地址转换进行高速緩 存的示意性实施方式的实现。如图9中所示,设备驱动器910生成 用于与PCIe端点990通信的队列数据结构920 - 930。在所述例子中, 队列数据结构920- 930包括工作队列920和完成队列930,其中工 作队列920例如可以等效于图4中的PCIe端点的工作队列498,而 完成队列930例如可以等效于图4中的完成队列422。工作队列可以 是工作队列对(诸如发送和接收工作队列对)的一部分。工作队列 还可以是共享接收工作队列、单独发送工作队列、接收工作队列或 混合发送和接收工作队列。应该理解,设备驱动器910可以建立的 队列的数目不限于两个,在不偏离本发明的精神和范围的情况下, 可以使用较小或者较大数目的队列。例如,队列数据结构920- 930可以是小型组件系统接口 (SCSI)队列,用于与耦合到PCIe端点990的SCSI I/O设备进行通 信。这些队列数据结构可以以包括链接的列表队列、循环緩冲队列 等的任何方式配置。作为由设备驱动器910在生成这些队列数据结构920- 930中 执行的操作的部分,设备驱动器910调取设备驱动器服务940以对 用于队列数据结构920- 930的ATPT条目进行编程,并向设备驱动 器910返回用于队列的未转换的PCIe地址。如上文先前所述,在示 意性实施方式中,ATPT条目的编程可以包括将用于队列数据结构 的主机存储器空间950钉住,利用用于从未转换PCIe地址转换到系 统存储器地址的转换信息对根联合体970的ATPT 960中的ATPT条 目进行编程,以及在ATPT条目中设置一个高速緩存使能位,指示 对应于ATPT条目的地址转换可以在PCIe端点990的ATC 992中高 速緩存。在执行如此操作之后,用于ATPT条目的未转换的PCIe地 址返回设备驱动器910。这些未转换的PCIe地址可以标识例如队列 数据结构920- 930的开始和结束地址。
由设备驱动器910向PCIe端点990提供未转换的PCIe地址, 诸如通过将该地址写入PCIe端点990的队列配置空间994中来进行 上述提供。队列配置空间994可以例如是PCI配置空间、 一个或者 多个VPD字段、 一个或者多个MMIO字段等。响应于接收这些用于 队列数据结构920 - 930的未转换PCIe地址,PCIe端点990可以向 根联合体970发布针对队列地址的PCIeATS请求。作为结果,根联 合体970可以执行用于队列数据结构920 - 930的未转换PCIe地址 的地址转换和访问检查,并向PCIe端点990返回已转换的地址。然 后,PCIe端点990可以将这些地址转换存储在由PCIe端点990的地 址转换高速緩存(ATC) 992提供的队列上下文中。作为上文的结果,由于PCIe端点现在可以访问用于与队列数 据结构920 - 930相关联的地址的转换,所以PCIe端点现在可以执 行DMA操作以将队列条目提交到队列数据结构920- 930、或者从 队列数据结构920 - 930获取队列条目,而不必经历根联合体970 ATPT地址转换。一旦PCIe端点990不再使用队列数据结构920 - 930,则可以 以上文先前所述的方式将对应于用于这些队列数据结构920 - 930的 地址的ATPT和ATC条目无效。例如,当PCIe端点将要从系统中 移除时、在关联于设备驱动器的功能(物理的或者虚拟的)从主机 系统中移除之后等情况下,可以执行这种无效。如前所述,这种无 效的处理可以包括设备驱动器910调取设备驱动器服务940以将 对应于队列数据结构920- 930的主机系统存储器950解钉,释放用 于这些队列数据结构920- 930的DMA地址,清除用于这些DMA 地址的ATPT条目,以及向PCIe端点990发布ATC条目无效_清求。 当由PCIe端点990完成ATC条目无效操作的时候,设备驱动器服 务940将控制返回给设备驱动器910,并且此时可以从系统移除PCIe 端点990。图IO是根据一个示意性实施方式的流程图,概括了用于将用 于主机系统和PCIe端点之间的通信的队列数据结构进行初始化的示
范性操作。由于用于队列数据结构地址的无效的操作与上文图7中 概括的操作基本相同,因而在本描述中将仅仅通过流程图具体示出 用于队列数据结构的初始化操作。如图10中所示,作为主^/L系统上系统镇 泉初始化的部分,由 主机系统开始用于PCIe端点的设备驱动器的初始化(步骤IOIO)。 主机系统调用逻辑分区中的设备驱动器,设备驱动器依次调用I/O 虚拟化媒介中的设备驱动器服务(步骤1020)。设备驱动器服务钉 住用于队列数据结构的主机系统存储器(步骤1030 )。设备驱动器服务向队列数据结构分配未转换的D M A地址 一 即 未转换PCIe存储器地址(步骤1040)。设备驱动器服务对用于未转 换DMA地址的ATPT条目编程,并且如果适当的话,在ATPT条目 中设置高速緩存使能位(步骤1050)。然后,设备驱动器服务向设 备驱动器返回未转换DMA地址,即用于队列数据结构的未转换PCIe 存储器地址(步骤1060)。然后,设备驱动器向PCIe端点提供用于队列数据结构的未转 换的DMA地址(步骤1070 ) 。 PCIe端点向才艮联合体发布ATS地址 转换请求(步骤1080 )。根联合体使用ATPT来执行未转换的DMA 地址的地址转换,并向PCIe端点返回已转换的地址(步骤1090)。 PCIe端点将已转换的地址存储在用于队列数据结构的队列上下文中 (步骤1095 ),并且操作终止。此后,PCIe端点可以将队列上下文 中已转换的地址用于来往于队列数据结构的DMA请求。由此,示意性实施方式提供了一种机制,通过该机制可以创建 一个或者多个队列,用于在系统镜像、系统镜像上运行的应用等与 例如I/0适配器的PCIe端点之间进行通信。提供示意性实施方式的 机制用于根联合体中的ATPT条目的初始化和使用,以便将与一个 或者多个队列相关联的地址从未转换的地址空间(例如,PCIe总线 地址空间)转换到已转换的地址空间(例如,系统总线地址空间)。 此外,示意性实施方式提出了用于将PCIe端点中的转换存储为地址 转换高速緩存的 一部分的机制,从而使用与这些转换匹配的未转换
地址的请求可以直接转发到 一 个或者多个队列,而不必经历根联合体中的形式转换。如上所述,可以使用示意性实施方式的机制来在设备驱动器中 建立队列数据结构,并在数据处理系统的根联合体中建立它们对应的ATPT条目。 一旦通过上述机制初始化此队列数据结构,则可以 使用这些数据结构和ATPT条目来执行PCIe端点和主机系统逻辑分 区的应用实例、系统镜像等之间的通信。可以由不同类型的PCIe端点来使用这些队列数据结构和相应 的ATPT条目。例如,PCIe端点可以是连网的适配器,诸如以太网 适配器、结构通道适配器、InfiniBandTM适配器等,用于通过一个或 者多个数据网络来与其他设备进行通信。通过这种连网适配器,正 在发送或者接收的数据被放置到与主机系统的设备驱动器中的緩冲 器之中,并且根据数据是否正在接收或者发送而由主机系统的系统 镜像或者网络适配器来获取。通过预转换数据緩沖器地址,通过将 转换操作的等待时间从每个操作开始移动到任何操作开始之前,来 降低在开始I/O操作中所包含的等待时间,由此提高端点DMA操作 的整体性能。现在,将参考下文的图11和图12来描述使用关联于连网适配 器的示意性实施方式的结构来用于接收和传送数据的处理。图ll是 示出了一个示范性操作的图示,其示出了用于使用队列条目(被称 作"工作队列条目"或者WQE)从PCIe端点将数据接收到主机系 统的緩冲器中的操作。首先,设备驱动器1110调取设备驱动器服务 1140以初始化一个或者多个队列数据结构(例如,工作队列凄t据结 构1120),用于向PCIe端点1190发送请求,该PCIe端点可以是连 网适配器,诸如以太网适配器、结构通道适配器、InfinibancTM适配 器等。如前所述,此初始化可以包括钉住用于队列数据结构的主 机系统存储器,分配DMA地址,编程ATPT条目并设置一个位,该 位表示ATPT条目是可高速緩存的,并向设备驱动器1110返回未转 换PCIe存储器地址。 在初始化队列数据结构之后,设备驱动器创建WQE 1122,其 包括指向緩冲器1124的指针(即,地址),将使用该PCIe端点处 理WQE。对于接收工作队列,使用緩冲器1124存储来自入站数据 包的数据。对于发送工作队列,使用緩冲器1124来传递将被用于出 站数据包的数据。用于緩冲器的地址是未转换的PCIe地址。然后,设备驱动器1110向PCIe端点1190中的门铃存储设备 1192 (例如,寄存器)写入门铃值。该门铃值向PCIe端点1190指 示出WQE1122是可用的。PCIe端点1190响应于在门铃存储器"i殳备 1192中门铃值的设置,从工作队列数据结构1120中获取WQE 1122, 且由此获取緩冲器地址。注意,门铃值可以用以表示设备驱动器已 经向设备传递的WQE的数目。在已经获取了用于緩冲器1124的未转换PCIe地址之后,PCIe 端点1190针对緩沖器1124的未转换PCIe地址的地址转换向根联合 体1150发布请求。根联合体1150使用ATPT 1160来将未转换PCIe 地址转换成为已转换的系统存储器地址,并将已转换的系统存储器 地址返回PCIe端点1190。 PCIe端点1190将已转换的系统存储器地 址存储在PCIe端点1190中的WQE 1194的本地副本中。应该理解,可以在从针对WQE 1194的外部网络附加^殳备(未 示出)接收数据包之前,执行转换并将已转换的地址(即,系统存 储器或者实际存储器地址)存储在WQE1194的本地副本中。由此, 在由外部网络附加的设备发送数据包以及在PCIe端点1190中4矣收 数据包的时候,已转换的PCIe地址可以存储在WQE 1194的本地副 本中。一旦在PCIe端点ll卯中接收到结果数据包,则PCIe端点ll卯 发布DMA操作请求以使用本地存储的高速緩存的已转换的地址 (即,系统存储器地址,其对应于存储在WQE 1194的本地副本中 的緩冲器1124的未转换PCIe地址)来将数据放置在緩冲器1124中。 通过在DMA操作请求的头部中设置一个位,以指示在DMA^乘作请 求中 用的地址是已转换的系统存储器地址,来执行DMA操作请 求。作为结果,根联合体1150传递DMA操作请求,而不使用ATPT 1160进行地址转换,从而数据直接写入到緩冲器1124之中。一旦待写入緩冲器1124的所有数据已被以此方式DMA到緩 冲器1124,则PCIe端点1190可以类似的方式将完成队列条目(CQE) 1132 DMA到完成队列数据结构1130。 一旦设备驱动器1110接收并 处理CQE 1132,则设备驱动器1110调取设备驱动器服务1140来将 用于数据緩沖器1124的主机存储器解钉。当被调取以将用于数据緩 冲器1124的主机存储器解钉时,设备驱动器服务1140释放用于数 据緩冲器1124的DMA地址,并清除用于数据緩冲器1124的ATPT 条目。根联合体1150向PCIe端点1190发布ATC条目无效i青求, 用于清除WQE 1194的本地副本中的地址信息。PCIe端点1190向根 联合体1150返回ATC条目无效完成响应,该响应将完成通知给设 备驱动器服务1140。然后,设备驱动器服务1140将控制返回给设备 驱动器1110,并且操作完成直到需要创建下一 WQE。还可能针对多 个操作重用数据緩冲器(例如,多个WQE),在此情况下,设备驱 动器服务1140将不被调用(例如,使数据緩沖器地址无效并将存储 器解钉),直到其他操作不再需要数据緩冲器为止。图12是示出了用于使用WQE经由PCIe端点传送数据的操作 的示范性图示。当经由PCIe端点1290从主机系统中的系统镜像传 送数据的时候,设备驱动器1210调取设备驱动器服务1240来4丁住 用于緩冲器1224的主机存储器,为緩沖器1224分配DMA地址,将 针对緩冲器1224的ATPT 1260中的ATPT条目编程,并在ATPT条 目中设置一个位,该位指示在这些条目中的地址转换是可高速緩存 的。设备驱动器服务1240向设备驱动器1210返回用于緩冲器1224 的未转换PCIe地址。设备驱动器创建WQE 1222,其包含指向缓冲器1224的指针 (即,地址),PCIe端点1290将从这里经由它的一个或者多个端口 传送数据。用于緩冲器1224的地址是未转换的PCIe地址。然后,设备驱动器1210向PCIe端点1290中的门铃存储设备 (例如,寄存器)写入门铃值。门铃值向PCIe端点1290指示WQE 1222是可用的。PCIe端点1290响应于门铃存储设备1292中门铃值 的设置,从工作队列数据结构1220获取WQE 1222,并由此获取緩 冲器地址。如果PCIe端点1290中的数据緩沖器是满的,例如下游端口饱 和,则PCIe端点1290向根联合体1250发布ATS转换请求。当PCIe 端点12卯接收作为此ATS转换请求的结果的已转换的地址时,其 将已转换的地址存储在WQE的本地副本1294中。在PCIe端点1290 将传送数据从数据緩冲器1224进行DMA (例如,当端口变得可用 于传送数据的时候)并传送该数据之后,PCIe端点1290接着将WQE 1232 DMA到完成队列1230,以指示传送操作已经完成,并且如果 请求,则还可以生成中断。一旦设备驱动器1210获取CQE 1232,则设备驱动器1210调 取设备驱动器服务1240来将用于緩沖器1224的主机存储器解钉, 释放DMA地址,并清除用于緩冲器1224的未转换地址的ATPT条 目。接着根联合体1250向PCIe端点1290发布ATC条目无效请求 并等待来自PCIe端点1290的完成消息。 一旦ATC条目无效操作由 PCIe端点1290执行,则设备驱动器服务1240将控制返回给i殳备驱 动器1210。还可能将数据緩冲器重用于多个操作(例如,多个WQE ), 在此情况下,将不调用设备驱动器服务1140 (例如,使得数据緩沖 器地址无效并对存储器解钉),直到其他操作不再需要数据緩沖器 为止。图13A至图13B描述了根据一个示意性实施方式的流程图, 其概括了用于网络适配器的接收操作的示范性操作。如图13A至图 13B中所示,操作开始于设备驱动器调取设备驱动器服务来初始化 一个或者多个数据緩冲器结构(步骤1310)。更具体地,设备驱动 器调用设备驱动器服务来钉住与緩沖器相关联的主机存储器,并设 置用于緩冲器地址的ATPT。在初始化数据緩冲器结构之后,设备驱 动器创建包含指向緩冲器的指针(即,未转换PCIe存储器地址)的
队列条目,其中PCIe端点使用该緩沖器来存储来自进入的数据包的 数据(步骤1315)。然后,设备驱动器向PCIe端点中的门铃存储设 备写入门铃值(步骤1320)。PCIe端点响应于门铃存储设备中门铃值的设置,从队列数据 结构获取队列条目、以及由此获取未转换PCIe緩冲器存储器地址(步 骤1325 )。获取用于緩冲器的未转换PCIe存储器地址之后,PCIe 端点向根联合体发布关于用于緩冲器的未转换PCIe地址的地址转换 的^"求(步骤1330)。根联合体使用ATPT来将未转换PCIe地址转 换成为已转换的系统存储器地址,并且向PCIe端点返回已转换的系 统存储器地址(步骤1335 ) 。 PCIe端点将已转换的系统存储器地址 存储在PCIe端点中的队列条目的本地副本中(步骤1340 )。PCIe端点确定是否接收到数据包(步骤1345 )。如果没有, 则操作通过返回步骤1345而等待接收数据包。如果在PCIe端点中 接收了数据包,则PCIe端点发布DMA操作请求,其中位于DMA 操作请求的头部中的转换位被设置,从而使用本地存储的高速緩存 的系统存储器地址来将数据放置在主机系统的緩冲器中(步骤 1350 )。根联合体传递DMA操作请求,而无需4吏用ATPT的地址转 换,从而数据直接写入緩冲器之中(步骤1355 )。针对将要写入緩 冲器的所有数据是否已经DMA到緩沖器来做出确定(步骤1360)。 如果没有,则操作返回步骤1345。一旦待写入緩沖器的所有数据已被DMA到緩冲器,则PCIe 端点将完成队列条目DMA到完成队列数据结构(步骤1365 )。响 应于接收CQE,设备驱动器调取设备驱动器服务来将用于数据緩冲 器结构的主机存储器解钉(步骤1370 )。设备驱动器服务将用于队 列数据结构的DMA地址(即,未转换PCIe存储器地址)释放(步 骤1375 ),并清除用于队列数据结构的ATPT条目(步骤1380 )。 根联合体向PCIe端点发布ATC条目无效请求,用于清除队列条目 的本地副本中的地址信息(步骤1385 )。然后,PCIe端点使得队列 条目的本地副本中的地址信息无效,并向根联合体返回ATC条目无 效完成响应(步骤1390),其将完成通知给设备驱动器服务。然后, 设备驱动器服务将关联于数据緩沖器的主机存储器解钉(步骤 1392)。然后,设备驱动器服务将控制返回给设备驱动器(步骤1395 ) 并且操作终止。图14A至图14B描绘了根据一个示意性实施方式的流程图, 其概括了用于网络适配器传送操作的一个示范性操作。如图14A至 图14B所示,操作开始于设备驱动器调取设备驱动器服务(步骤 1410),设备驱动器服务接着将用于緩沖器的主机存储器钉住,分 配用于緩冲器的DMA地址,将用于緩沖器的ATPT中的ATPT条目 编程,并在ATPT条目中设置一个位来指示在这些条目中的地址转 换是可高速緩存的(步骤1415)。然后,设备驱动器服务向设备驱 动器返回用于緩冲器的一个或者多个未转换PCIe存储器地址,即 DMA地址(步骤1420)。设备驱动器创建包含指向緩冲器的指针(即,未转换PCIe存 储器地址)的队列条目,PCIe端点将从该緩冲器经由它的一个或者 多个端口传送数据(步骤1425 )。然后,设备驱动器向PCIe端点中 的门铃存储设备写入门铃值(步骤1430 ) 。 PCIe端点响应于在门铃 存储设备中的门铃值的设置,从队列数据结构获取队列条目并由此 获取緩冲器的未转换PCIe存储器地址(步骤1435 )。针对PCIe端点中的数据緩冲器是否是满的来做出确定(步骤 1440)。如果数据緩沖器未满,则数据经由DMA传输并被放置到 PCIe端点的数据緩冲器中用于传送(步骤1460),且PCIe端点相 应地传送数据(步骤1465 )。如果数据緩冲器是满的,则PCIe端点向根联合体发布ATS转 换请求(步骤1445 )。当PCIe端点接收作为ATS转换请求的结果 的已转换的地址时(步骤1450) , PCIe端点将已转换的地址存储在 队列条目的本地副本中(步骤1455 )。端点等待可用的緩冲器(步 骤1457 ),数据经由DMA传输并被放置到PCIe端点的数据緩冲器 中用于传送(步骤1460),然后,PCIe端点相应地传送该数据(步
骤1465 )。然后,PCIe端点将完成队列条目(CQE) DMA到完成队列, 以指示传送操作已经完成,并且如果请求,则还可以生成中断(步 骤1470)。一旦设备驱动器获取CQE,则设备驱动器调取设备驱动器服 务以将用于緩冲器的主机存储器解钉,释放DMA地址,并清除用于 緩沖器的未转换地址的ATPT条目(步骤1475 )。然后,根联合体 向PCIe端点发布ATC条目无效请求(步骤1480),并等待来自PCIe 端点的完成消息(步骤1485 )。 一旦ATC条目无效#:作由PCIe端 点执行,则设备驱动器服务将与数据緩冲器相关联的主机存储器解 钉(步骤1490),且然后将控制返回给设备驱动器(步骤1495 ), 并且操作终止。由此,示意性实施方式提供了一种机制,通过该机制,可以生 成工作队列和工作队列条目,用于经由网络适配器PCIe端点将数据 接收和/或传送到主机系统中的设备驱动器的緩冲器之中。利用在 PCIe端点中可高速緩存的与緩冲器相对应的地址的转换(以便直接 访问緩冲器,而不必执行在根联合体中的地址转换),可以建立用 于緩冲器的ATPT条目。除了网络适配器和SCSI适配器以外,PCIe端点可以是支持用 户空间存储器注册的适配器,诸如InfiniBand 主机通道适配器 (HCA) 、 iWARP远程直接存储器访问(RDMA)使能的网络接口 控制器(RNIC)、"以太网上直接RDMA"适配器、或者支持存储 器注册的网络接口控制器(NIC)。利用支持存储器注册的适配器, 通过发送和接收队列对(QP)来执行工作请求的通信,并且通过完 成队列(CQ)返回工作完成。支持存储器注册的适配器提供了一种 机制,该机制允许特许软件将用户空间緩冲器的虚拟地址到物理地 址的转换注册到适配器。然后,可以在发送和接收工作请求中引用 这些緩冲器。QP使用保护域机制来将QP与先前注册的存储器緩冲器相关
联。InfiniBand (IB )架构规范的第IO章和第ll章定义了关于IB 的这些操作的语义。类似地,RDMA协议Verb规范定义了关于 iWARP的这些操作的语义。为了获取关于InfiniBand ,主机通道 适配器、存储器注册以及队列对的更多信息,请参考InfmiBandTM商 业协会成员可用的位于http:〃www.infinibandta.org/home处的 InfiniBand 规范。为了获取关于iWARP、 RNIC、存储器注册以及 队列对的更多信息,请参考RDMA协议Verb规范,该规范位于 http:〃www.rdmaconsortium.org/home/draft-hilland-iwarp-verbs-vl.O-R DMAC.pdf。在进一步的示意性实施方式中,其中端点是支持用户空间存储 器注册的适配器,执行这种用户空间存储器注册,从而将地址转换 条目存储在PCIe端点中。即,这些进一步的示意性实施方式的机制 除了对根联合体中的ATPT条目进行编程以外,还对PCIe端点中的 存储器注册(MR) ATPT条目进行编程,用于在支持存储器注册的 PCIe适配器以及主机系统之间执行通信。图15是根据一个示意性实施方式的示范性图示,其中示出了 用于使用存储器注册(MR) ATPT来与主机系统执行DMA操作。 如图15中所示,此示意性实施方式的机制支持^(吏用MR ATPT中的 实际存储器地址,由此当先前注册的存储器区域或者存储器窗口由 工作请求或者进入的操作(诸如RDMA写入、RDMA读取、或者原 子)所引用的时候,避免主机ATPT。当由用户空间或者内核程序通过设备驱动器调取存储器区域 注册或者重注册的时候,图15中所示出的机制开始。设备驱动器 1510调取设备驱动器服务1540以将主机存储器钉住,并将钉住的存 储器注册到PCIe端点1590。设备驱动器1510向设备驱动器服务1540 传递物理存储器地址和任何注册修改符,如由适配器的存储器注册 或者重注册标准(诸如InfiniBandTMVerb规范或者RDMA协议Verb 规范或者专有接口)所定义的那样。设备驱动器服务1540钉住用于设备驱动器的数据緩冲器1524
的相应的主机存储器,并对主机ATPT 1560进行编程以使能针对 PCIe端点(适配器)的ATPT旁路,例如,通过允许适配器的PCIe 请求者标识符来执行已转换的PCIe直接存储器访问操作。就PCIe 总线号、设备号以及功能号空间来说,标识的请求者是唯一的。另外,设备驱动器服务1540对PCIe端点(适配器)1590的 MRATPT 1596中的存储器注册(MR) ATPT条目进行编程,并且 在ATPT 1560和MR ATPT 1596的ATPT和MR ATPT条目中设置 ATC使能位(即,可高速緩存的位)。设备驱动器服务1540向设备 驱动器1510返回未转换的PCIe地址和注册^f奮改符。如上所述,对MRATPT条目进行编程的设备驱动器服务部分 包括,通过在PCIe端点的MRATPT 1596中创建条目来将4丁住的存 储器区域注册到PCIe端点1590。 MRATPT 1596的较低部分(即, 页面表)填充有已转换的地址,该地址是用于数据緩沖器1524的实 际存储器地址,并且以依赖于实施的方式向PCIe端点1590通知这 些是已转换地址。然后,设备驱动器1510可以在设备驱动器1510的工作队列 (WQ) 1520中创建工作队列条目(WQE) 1522,并可以向门铃存 储位置1592写入门铃值。响应于在门铃存储位置1592中设置门铃 值,PCIe端点1590使用用于工作队列1520的已转换地址来将一个 或者多个WQE 1522 DMA到PCIe端点。针对发送WQE,即针对出站发送消息,PCIe端点159(H吏用 每个发送WQE的数据革殳来引用MRATPT 1596中的条目。如果访问 控制检查通过,则PCIe端点使用来自MRATPT 1596的已转换地址 来执行来自主机系统的数据緩沖器1524的DMA。 PCIe端点1590 将与发送WQE相关联的数据段集合作为消息在其下游链路上发送。 当DMA完成的时候,PCIe端点15卯使用用于完成队列(CQ ) 1530 的已转换地址来将完成队列条目(WQE) 1532 DMA到主机的完成 队列1530。如果请求,则PCIe端点1590还生成中断。针对出站RDMA写入WQE,即针对出站RDMA写入消息,
PCIe端点15卯使用每个RDMA写入WQE的数据段来引用MR ATPT 1596中的条目。如果访问控制检查通过,则PCIe端点1590 使用来自MR ATPT 1596的已转换地址来执4亍来自主机系统的数据 緩沖器1524的DMA。 PCIe端点将与RDMA写入WQE相关联的数 据段集合作为消息在其下游链路上传输。当DMA完成的时候,PCIe 端点1590使用用于完成队列(CQ) 1530的已转换地址,来将完成 队列条目(WQE) 1532 DMA到主机的完成队列1530。如果请求, 则PCIe端点1590还生成中断。针对出站RDMA读取WQE,即针对出站RDMA读取消息, PCIe端点1590在其下游链路上传输RDMA读取消息。当远程位置 返回RDMA读取响应的时候,PCIe端点1590使用进入的RDMA读 取响应头部的RDMA字段以引用MR ATPT 1596中的条目,其中对 于iWARP, RDMA字段包括操纵标签、加标签的偏移以及长度。对 于InfiniBand , RDMA读耳又响应不包含头部,且PCIe端点159(M吏 用内部队列对上下文来获取用以引用MR ATPT 1596中条目的 RDMA字段。如果访问控制4企查通过,则PCIe端点1590使用来自 MR ATPT 1596的已转换的地址,来执行到主机系统的数据緩沖器 1524的DMA。针对出站原子WQE,即针对出站原子消息,PCIe端点1590 在其下游链路上传输原子消息。当远程位置返回原子响应的时候, PCIe端点1590使用进入的原子响应头部的RDMA字段以引用MR ATPT 1596中的条目。对于InfiniBand ,原子响应不包含头部,且 PCIe端点1590使用内部队列对上下文来获取用以引用MR ATPT 1596中条目的RDMA字段。如果访问控制冲全查通过,则PCIe端点 1590使用来自MRATPT 1596的已转换的地址以执行到主机系统的 数据緩冲器1524的DMA。针对入站发送WQE,即针对进入的发送消息,PCIe端点15卯 使用与进入的发送相关联的WQE的数据段来引用MRATPT 1596中 的一个或者多个条目。如果访问控制4企查通过,则PCIe端点1590
使用来自MR ATPT 1596的已转换地址来执行到主机系统的数据緩 冲器1524的DMA。当DMA完成时,PCIe端点1590使用用于完成 队列1530的已转换地址来将WQE 1532 DMA到主机的完成队列 1530。如果请求,则PCIe端点1590还生成中断。针对入站RDMA写入,即针对进入的RDMA写入消息,PCIe 端点1590使用进入的RDMA写入头部的RDMA字^:来引用MR ATPT 1596中的条目,其中对于iWARP, RDMA字段包括操纵标签、 加标签的偏移以及长度,且对于InfiniBand , RDMA字段包括 R—Key、虚拟地址以及长度。如果访问控制4全查通过,则PCIe端点 1590使用来自MRATPT 1596的已转换地址来执行到主才几系统的数 据緩冲器1524的DMA。当DMA完成的时候,如果RDMA写入要 求一个完成事件,则PCIe端点1590使用用于完成队列1530的已转 换地址来将WQE 1532 DMA到主机的完成队列1530。如果请求,则 PCIe端点1590还生成中断。针对入站RDMA读取和原子,即针对进入的RDMA读取或者 原子消息,PCIe端点1590使用进入的RDMA读取或者原子头部的 RDMA字段来引用MRATPT 1596中的条目,其中对于iWART, RDMA字段包括操纵标签、加标签的偏移以及长度,且对于 InfiniBand , RDMA字段包括R_Key、虚拟地址以及长度。如果访 问控制检查通过,则PCIe端点1590执行原子操作,其包括使用来 自MRATPT 1596的已转换地址执行来自主机系统的数据緩冲器 1524的DMA。当DMA完成时,PCIe端点1590将与RDMA读耳又或 者原子相关联的数据作为消息在其下游链路上传输。当设备驱动器1510不再需要数据緩冲器1524的时候,设备驱 动器1510调取设备緩冲器服务1540来释放存储器。设备驱动器服 务154(H吏ATPT 1560中的ATPT条目无效,通过无效MR ATPT 1596 来对存储器解注册(de-register),对主机存储器解钉,并释放DMA 地址。以上描述假定,i殳备驱动器服务1540对MRATPT条目编程,
然而示意性实施方式并不局限于此。相反,在可替换实施方式中,设备驱动器服务1540可以仅仅对根联合体1550的ATPT 1560中的 ATPT条目编程。当PCIe端点1590接收存储器注册或者重注册请求 的时候,其可以向PCIe根联合体1550发布一个或者多个转换请求, 用以获取与正在注册或者重注册的存储器区域相关联的已转换的存 储器地址(即,实际存储器地址)。对于每个转换请求,PCIe根联 合体1550返回相关联的已转换的或者实际存储器地址。PCIe端点将 这些已转换的地址存储到MRATPT 1596之中,并以与先前所述示 意性实施方式类似的方式来使用它们。为了将MRATPT 1596无效,当解注册存储器区域的时候,设 备驱动器服务1540向PCIe端点15卯发布无效请求,或者设备驱动 器服务1540请求PCIe根联合体1550来向PCIe端点1590发布无效 请求。 一旦接收到无效请求,则PCIe端点1590搜索转换使用表(未 示出)来确定哪些MRATPT 1596条目4皮标记为使用已被无效的已 转换地址。如果在使用已转换地址的所有存储器区域解注册之后执 行无效请求,则针对无效请求将找不到MRATPT条目,且PCIe端 点1590将针对无效请求返回成功结果。如果使用已转换地址的存储 器区域仍然处于使用中,则无效请求从未完成,且设备驱动器服务 1540经历无效请求超时,该无效请求超时触发错误恢复处理,诸如 复位PCIe端点1590。图16A至图16C描述了根据一个示意性实施方式的流程图, 其概括了用于向PCIe端点注册存储器的示范性操作。如图16A至 16C中所示,操作开始于设备驱动器调取设备驱动器服务,来钉住 主机存储器,并将被钉住的存储器注册到PCIe端点(步骤1610)。 设备驱动器将存储器地址以及任何注册修改符传递到设备驱动器服 务(步骤1615)。设备驱动器服务钉住用于设备驱动器的数据緩冲器的相应的 主机存储器,并对主机ATPT进行编程(步骤1620),以针对适配 器使能ATPT旁路,例如通过允许适配器的PCIe请求器标识符来执行已转换PCIe直接存储器访问操作。另外,设备驱动器服务对PCIe 端点的MR中的MR ATPT条目进行编程,并设置在ATPT和MR ATPT条目中的ATC使能位(步骤1625 )。设备驱动器服务向设备 驱动器返回注册输出修改符(步骤1630)。然后,设备驱动器在设备驱动器的工作队列中创建工作队列条 目,并向门铃存储位置写入门铃值(步骤1635 )。响应于在门铃存 储设备中设置门铃值,PCIe端点获取一个或者多个WQE (步骤 1640)。然后,PCIe端点根据在WQE中指定的操作类型来选择将要执 行的功能(步骤1645 ):发送、出站RDMA写入、出站RDMA读 取、出站原子、接收(也称作入站发送)、入站RDMA写入、以及 入站RDMA读取和原子。针对发送WQE,即针对出站发送消息,PCIe端点使用发送 WQE的数据段来引用MRATPT中的条目(步骤1646)。如果访问 控制检查通过(这是假设在图16A至图16C的流程的情况下),则 PCIe端点使用来自MR ATPT的已转换地址以执行来自主机系统的 数据緩沖器的数据的DMA (步骤1647) 。 PCIe端点将与发送WQE 相关联的数据段集合作为消息在其下游链路上发送(步骤1648)。 当DMA完成时,PCIe端点使用用于完成队列的已转换地址来将 WQEDMA到主机的完成队列(步骤1649)。如果请求,贝'J PCIe 端点还生成中断。针对出站RDMA写入WQE,即针对出站RDMA写入消息, PCIe端点使用每个RDMA写入WQE的数据段来引用MR ATPT中 的条目(步骤1650 )。如果访问控制检查通过(这是假设在图16A 至图16C的流程的情况下),则PCIe端点使用来自MRATPT的已 转换地址以执行来自主机系统的数据緩冲器的DMA (步骤1651 )。 PCIe端点将与RDMA写入WQE相关联的数据段集合作为消息在其 下游链路上发送(步骤1652 )。当DMA完成时,PCIe端点使用用 于完成队列的已转换地址来将WQEDMA到主机的完成队列(步骤1653 )。如果请求,则PCIe端点还生成中断。针对出站RDMA读取WQE,即针对出站RDMA读取消息, PCIe端点在其下游链路上传送RDMA读取消息(步骤1654)。当 远程位置返回RDMA读耳又响应的时候,PCIe端点使用进入的RDMA 读耳又响应头部的RDMA字段来引用MR ATPT中的条目(步骤1655 )。 如果访问控制检查通过(这假设是在图16A至图16C的流程的情况 下),则PCIe端点使用来自MR ATPT的已转换地址执行到主机系 统的数据緩冲器的DMA (步骤1656)。针对出站原子WQE,即针对出站原子消息,PCIe端点在其下 游链路上传送原子消息(步骤1657)。当远程位置返回原子响应的 时候,PCIe端点使用进入的原子响应头部的RDMA字段来引用MR ATPT中的条目(步骤1658 )。如果访问控制检查通过(这假设是 在图16A至图16C的流程的情况下),则PCIe端点使用来自MR ATPT的已转换地址执行到主机系统的数据緩沖器的DMA (步骤 1659 )。针对入站发送WQE,即针对进入的发送消息,PCIe端点l吏用 与进入的发送相关联的WQE的数据段来引用MRATPT中的一个或 者多个条目(步骤1660)。如果访问控制检查通过(这是假设在图 16A至图16C的流程的情况下),则PCIe端点使用来自MRATPT 的已转换地址来执行到主机系统的数据緩冲器的DMA(步骤1661 )。 当DMA完成时,PCIe端点使用用于完成队列的已转换地址来将 WQEDMA到主机的完成队列(步骤1662)。如果请求,则PCIe 端点还生成中断。针对入站RDMA写入,即针对进入的RDMA写入消息,PCIe 端点使用进入的RDMA写入头部的RDMA字段来引用MRATPT中 的条目(步骤1663 )。如果访问控制检查通过(这是假设在图16A 至图16C的流程的情况下),则PCIe端点使用来自MR ATPT的已 转换地址来执行到主机系统的数据緩沖器的DMA (步骤1664)。当 DMA完成时,如果RDMA读取要求一个完成事件,则PCIe端点使
用用于完成队列的已转换地址来将WQE DMA到主机的完成队列 (步骤1665 )。如果请求,则PCIe端点还生成中断。针对入站RDMA读取和原子,即针对进入的RDMA读取或者 原子消息,PCIe端点使用进入的RDMA读耳又或者原子的头部的 RDMA字段来引用MR ATPT中的条目(步骤1666)。如果访问控 制检查通过(这是假设在图16A至图16C的流程的情况下),则PCIe 端点执行入站RDMA读取或者原子操作,其包括使用来自MR ATPT 的已转换地址来执行从主机系统的数据緩冲器的DMA(步骤1667 )。 当DMA完成时,PCIe端点将与RDMA读取或者原子相关联的凄t据 作为消息在其下游链路上传送(步骤1668 )。当设备驱动器不再需要数据緩冲器的时候(步骤1670),设 备驱动器调取设备驱动器服务来释放存储器(步骤1675 )。设备驱 动器服务将两个ATPT中的ATPT条目无效,通过将MR ATPT无效 来解注册存储器,并释放DMA地址(步骤1680 )。然后设备驱动 器服务可以将控制返回给设备驱动器(步骤1685 ),并且操作终止。由此,示意性实施方式提供用于以在设备驱动器和设备驱动器 服务上分布通信责任的方式与不同类型PCIe端点(包括网络适配器、 SCSI适配器、InfiniBandTM适配器等)进行通信的机制。示意性实施 方式促进根据所使用PCIe端点的类型以不同方式在各种类型的 PCIe端点中将已转换的地址进行高速緩存的使用。对这些已转换的 地址高速緩存允许PCIe端点直接访问主机系统的队列、緩冲器以及 系统存储器,而不必在主机系统的根联合体中经历地址转换操作。应该理解,示意性实施方式可以采取完全^5更件实施方式、完全个示范性实施方式中,以软件实现示意性实施方式的机制,软件包 括但不限于固件、驻留软件、微代码等。此外,本发明可以采用计算机程序产品的形式,可以从提供程 序代码的计算机可用或计算机可读介质来访问该计算机程序产品, 其中该程序代码由计算机或任何指令执行系统使用或结合它们来使
用。为了说明目的,计算机可用或计算机可读介质可以是任何能够 包含、存储、通信、传播或传送用于由指令执行系统、装置或设备 使用或结合指令执行系统、装置或设备使用的程序的装置。该介质可以是电子、》兹性、光学、电》兹、红外或半导体系统(或 装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只 读存储器(ROM)、刚性磁盘和光盘。光盘的当前例子包括致密盘-只读存储器(CD-ROM)、致密盘-读/写存储器(CD-R/W)和DVD。 适于存储和/或执行程序代码的数据处理系统将包括至少 一个 通过系统总线直接或间接耦合至存储器元件的处理器。该存储器元存;器以及高速緩沖存:;,其提:至少某些程序代:的临时存储, 以减少在执行期间必须从大容量存储器中获取代码的次数。输入/输出或1/0设备(包括但不限于键盘、显示器、点击设备 等)可以直接地或通过中间1/0控制器来耦合至系统。网络适配器也 可以耦合至该系统,以使得数据处理系统能够通过介入的专用或公 共网络而耦合至其他数据处理系统或远程打印机或存储设备。调制 解调器、电缆调制解调器以及以太网卡仅是当前可用类型的网络适 配器中的一些。为了示意和描述的目的已经呈现了本发明的描述,而该描述并 不旨在穷尽或将本发明限制在所公开的形式。对本领域的普通技术人员而言,许多修改和变更都是显而易见的。因此,选择并描述实 施方式是为了更好地解释本发明的原理及其实际应用,并使其他本 领域普通技术人员理解,具有各种变化的各种实施方式的本发明适 用于预期的特殊用途。
权利要求
1.一种用于在数据处理系统中管理地址转换的方法,包括由设备驱动器调取设备驱动器服务,用于初始化所述数据处理系统的根联合体的地址转换数据结构中的地址转换条目;从所述设备驱动器向所述设备驱动器服务传递注册修改符和设备驱动器存储器数据结构的地址;由所述设备驱动器服务在与所述根联合体相关联的地址转换数据结构中创建一个或者多个地址转换数据结构条目,所述一个或者多个地址转换数据结构条目指定从未转换的地址到用以直接访问所述设备驱动器存储器数据结构的已转换的地址的转换;由所述设备驱动器服务在适配器的MR ATPT数据结构中创建一个或者多个存储器注册(MR)地址转换和保护表(ATPT)条目,所述一个或者多个存储器注册(MR)地址转换和保护表(ATPT)条目与一个或者多个地址转换数据结构条目相对应;以及使用所述MR ATPT数据结构和I/O操作来旁路与所述根联合体相关联的地址转换数据结构。
2. 根据权利要求1所述的方法,其中创建一个或者多个MR ATPT条目包括向所述适配器注册与所述设备驱动器存储器数据结构相关联 的被钉住的存储器区域;利用用于所述设备驱动器存储器数据结构的 一 个或者多个地 址来填充MR ATPT数据结构条目的一部分;以及向所述适配器通知,在所述MR ATPT数据结构的较低部分中的 一个或者多个地址是已转换的地址,所述已转换的地址可在直接存 储器访问(DMA)事务中使用,以旁路与所述根联合体相关联的地 址转换数据结构。
3. 根据权利要求1所述的方法,进一步包括 由所述设备驱动器调取所述设备驱动器服务,用于对所述数据处 理系统的根联合体的地址转换数据结构中的地址转换数据结构条目进4亍无效;以及由所述设备驱动器服务来对所述数据处理系统的根联合体的地 址转换数据结构中的地址转换数据结构条目、以及所述适配器上的 一个或者多个相对应的MR ATPT条目进行无效。
4. 根据权利要求1所述的方法,其中对MRATPT条目进行无 效包括向所述适配器解注册所述设备驱动器存储器数据结构。
5. 根据权利要求1所述的方法,其中创建一个或者多个MR ATPT条目包括向所述适配器注册与所述设备驱动器存储器数据结构相关联的 先前被钉住的存储器区域;利用用于所述设备驱动器存储器数据结构的 一 个或者多个地址 来填充所述MRATPT数据结构条目的部分;以及向所述适配器通知,在所述MR ATPT数据结构的较低部分中的 一个或者多个地址是未转换的地址,其将在用于DMA事务之前转 换,所述DMA事务将与所述根联合体相关联的所述地址转换数据结 构旁路。
6. 根据权利要求5所述的方法,其中针对由所述设备驱动器服 务创建的MRATPT条目,所述适配器执行针对与所述MR A TP T条目相关联的 一 个或者多个地址的转 换请求;以及利用一个或者多个已转换的地址来填充所述MR ATPT数据结构 的所述部分,所述一个或者多个已转换的地址与关联于所述MR ATP T条目的 一 个或者多个未转换的地址相对应。
7. 根据权利要求1所述的方法,其中使用所述MRATPT数据 结构和I/O操作来旁路与所述根联体相关联的地址转换数据结构,包 括使用所述适配器的所述MRATPT数据结构条目中的一个或者多 个已转换的地址来处理与所述MR ATPT数据结构条目相关联的直 接存储器访问(DMA)事务。
8. 根据权利要求7所述的方法,其中所述DMA事务使用所述 已转换的地址将数据从所述适配器放置到所述设备驱动器存储器数 据结构之中,而在将所述数据放置到所述设备驱动器存储器数据结 构之中的期间不调取所述根联合体的地址转换操作。
9. 根据权利要求7所述的方法,其中所述DMA事务与发送 WQE、 RDMA写入WQE、 RDMA读取WQE、接收WQE、进入的 RDMA写入或者进入的RDMA读取的处理相关联。
10. 根据权利要求1所述的方法,进一步包括器存储器数据结构相关联的一个或者多个未转换的地址;以及从所述设备驱动器服务向所述设备驱动器返回一个或者多个注 册修改符。
11. 根据权利要求1所述的方法,其中所述设备驱动器提供在所 述数据处理系统的不受信任的逻辑分区或者系统镜像之一中,并且 所述设备驱动器服务提供在受信任的虚拟化媒介中。
12. 根据权利要求11所述的方法,其中所述受信任的虚拟化媒 介是虚拟化媒介操作系统、管理程序或者服务分区之一。
13. —种装置,包括 处理器;以及耦合到所述处理器的适配器,其中所述处理器 由设备驱动器调取设备驱动器服务,用于初始化所述数据处理系统的根联合体的地址转换数据结构中的地址转换条目;从所述设备驱动器向所述设备驱动器服务传递注册修改符和设备驱动器存储器数据结构的地址;据结构中创建一个或者多个地址转换数据结构条目,所述一个或者 多个地址转换数据结构条目指定从未转换的地址到用以直接访问所 述设备驱动器存储器数据结构的已转换的地址的转换;以及由所述设备驱动器服务在适配器的MR ATPT数据结构中创建 与一个或者多个地址转换数据结构条目相对应的一个或者多个存储 器注册(MR)地址转换和保护表(ATPT)条目,并且其中所述适 配器使用所述MR ATPT数据结构和I/O操作来旁路与所述根联合体 相关联的地址转换数据结构。
全文摘要
提供了一种用于与诸如InfiniBand<sup>TM</sup>主机通道适配器的存储器注册使能的适配器进行通信的装置和方法。通过该装置和方法,可以由设备驱动器调取设备驱动器服务,用于初始化根联合体的地址转换数据结构中的地址转换条目。由设备驱动器将注册修改符和设备驱动器存储器数据结构的地址传递到设备驱动器服务。设备驱动器服务可以在与根联合体相关联的地址转换数据结构中创建地址转换数据结构条目,并在适配器的存储器注册(MR)地址转换数据结构中创建MR地址转换条目。然后,可以使用MR ATPT数据结构和I/O操作来旁路与根联合体相关联的地址转换数据结构。
文档编号G06F12/10GK101165664SQ200710153328
公开日2008年4月23日 申请日期2007年9月14日 优先权日2006年10月17日
发明者C·A·萨尔茨伯格, D·F·莫特尔, R·J·雷西奥, S·M·瑟伯尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1