首页> 中国专利> 用于管理和支持INFINIBAND(IB)上的虚拟主机总线适配器(VHBA)和用于支持利用单个外部存储器接口的高效缓冲区使用的系统和方法

用于管理和支持INFINIBAND(IB)上的虚拟主机总线适配器(VHBA)和用于支持利用单个外部存储器接口的高效缓冲区使用的系统和方法

摘要

系统和方法可以支持计算环境中的输入/输出(I/O)虚拟化。该系统包括包含与一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向一个或多个数据包缓冲区的缓冲区指针的主链表。此外,可以在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表维护指向为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表。I/O设备可以在其从物理主机总线适配器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及当上下文表被关闭时,将临时链表合并到主链表中。

著录项

  • 公开/公告号CN105793835A

    专利类型发明专利

  • 公开/公告日2016-07-20

    原文格式PDF

  • 申请/专利权人 甲骨文国际公司;

    申请/专利号CN201480063821.8

  • 发明设计人 U·阿加沃尔;

    申请日2014-10-21

  • 分类号G06F13/38;G06F3/06;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人边海梅

  • 地址 美国加利福尼亚

  • 入库时间 2023-06-19 00:05:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-07

    授权

    授权

  • 2016-08-17

    实质审查的生效 IPC(主分类):G06F13/38 申请日:20141021

    实质审查的生效

  • 2016-07-20

    公开

    公开

说明书

版权声明:

本专利文档公开内容的一部分包含受版权保护的素材。版权拥有 者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利 文件或记录中出现那样进行的传真复制,但是除此之外在任何情况下 都保留所有版权。

技术领域

本发明一般而言涉及计算机系统,并且具体而言,涉及支持计算 环境中的输入/输出(I/O)虚拟化。

背景技术

已经看到InfiniBand(无限带宽,IB)技术日益增长地被部署为 用于云计算架构的基础。此外,随着更大的云计算体系架构的引入, 与传统的网络和存储相关联的性能和管理瓶颈已变成重要的问题。这 是本发明的实施例旨在解决的大致领域。

发明内容

一种系统和方法可以支持计算环境中的输入/输出(I/O)虚拟化。 该系统可以包括与网络架构上的服务器相关联的芯片。此外,该芯片 与包含多个数据包缓冲区的外部存储器相关联。而且,芯片上存储器 维护包含从物理主机总线适配器(HBA)接收到的盘读取数据的一 个或多个数据包的状态。此外,该芯片操作来将所述一个或多个数据 包在外部存储器上的多个数据包缓冲区中排队(en-queue)、基于所 述一个或多个数据包的状态从外部存储器中读出所述一个或多个数据 包、以及将所述一个或多个数据包发送给服务器。

一种系统和方法可以支持计算环境中的输入/输出(I/O)虚拟化。 该系统包括包含与一个或多个虚拟主机总线适配器(vHBA)相关联 的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指 向一个或多个数据包缓冲区的缓冲区指针的主链表。此外,可以在与 输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中 上下文表维护指向为盘读取操作分配的一个或多个数据包缓冲区的缓 冲区指针的临时链表。I/O设备可以在其从物理主机总线适配器 (HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临 时链表、以及当上下文表被关闭时,将临时链表合并到主链表中。

本文所描述的是可以支持计算环境中的输入/输出(I/O)虚拟化 的系统和方法。该系统可以包括在存储器中的空闲缓冲区池。I/O设 备操作来使用空闲缓冲区池存储从物理主机总线适配器(HBA)接 收到的盘读取数据。空闲缓冲区池可以包含二维链表和一维链表。二 维链表的每个条目包含在连续存储器位置中的多个数据包缓冲区,并 且一维链表的每个条目包含单个数据包缓冲区。

附图说明

图1示出了利用不同的存储器接口支持输入/输出(I/O)虚拟化 的示图。

图2示出了根据本发明的实施例的、利用单个存储器接口支持输 入/输出(I/O)虚拟化的示图。

图3示出了根据本发明的实施例的、支持用于利用单个存储器接 口处理入口流量的方案的示图。

图4示出了根据本发明的实施例的、在I/O设备上启动盘读取操 作的示图。

图5示出了根据本发明的实施例的、在I/O设备上提取请求 IOCB的示图。

图6示出了根据本发明的实施例的、在I/O设备上处理盘读取数 据的示图。

图7示出了根据本发明的实施例的、在I/O设备上处理盘读取操 作的完成的示图。

图8示出了根据本发明的实施例的、利用多个虚拟主机总线适配 器(vHBA)支持I/O虚拟化的示图。

图9示出了根据本发明的实施例的、支持虚拟主机总线适配器 (vHBA)中的多个上下文的示图。

图10示出了根据本发明的实施例的、利用芯片上存储器来维护 在外部存储器中排队的数据包的状态的示图。

图11示出了根据本发明的实施例的、用于利用单个存储器接口 支持输入/输出(I/O)虚拟化的示例性流程图。

图12示出了根据本发明的实施例的、利用空闲缓冲区池来支持 多个虚拟主机总线适配器(vHBA)的示图。

图13示出了根据本发明的实施例的、利用混合链表结构来支持 盘读取操作的示图。

图14示出了根据本发明的实施例的、利用混合链表结构来避免 队头阻塞(head-of-lineblocking)的示图。

图15示出了根据本发明的实施例的、用于利用混合链表结构来 避免队头阻塞的示例性流程图。

图16示出了根据本发明的实施例的、支持用于I/O设备的二维 链表结构的示图。

图17示出了根据本发明的实施例的、支持I/O设备的高效存储 器利用率的示图。

图18示出了根据本发明的实施例的、用于支持计算环境中的高 效数据包处理的示例性流程图。

具体实施方式

本发明是作为例子而不是作为限制在附图中说明的,并且在附图 中,相同的标号指示相似的元件。应当指出,在本公开内容中对“一 个”或“一种”或“一些”实施例的引用不一定指同一实施例,并且 这种引用意味着至少一个。

以下本发明的描述使用InfiniBand(无限带宽,IB)网络作为高 性能网络的例子。对本领域技术人员来说,将很显然,可以使用其它 类型的高性能网络,而没有限制。此外,以下本发明使用光纤通道 (FC)存储网络作为存储网络的例子。对于本领域技术人员来说, 将很显然,可以使用其它类型的存储网络,而没有限制。

本文所描述的是可以利用一个或多个虚拟主机总线适配器 (vHBA)支持输入/输出(I/O)虚拟化的系统和方法。

输入/输出(I/O)虚拟化

可以基于两种不同的存储器接口支持IB架构上的I/O虚拟化。

图1示出了利用不同的存储器接口支持输入/输出(I/O)虚拟化 的示图。如在图1中所示,I/O设备100可以使用光纤通道(FC)域 101和InfiniBand(IB)域102来处理入口流量,诸如从存储网络 105到IB架构104的盘读取数据。

如在图1中所示,光纤通道(FC)域101可以连接到物理主机 总线适配器(HBA)103。物理HBA103可以例如利用FC命令执行 盘读取操作,并且可以例如利用外围组件互连快速(PCIExpress或 PCIe)命令将数据和上下文发送给FC域101。

FC域101可以维护FC上下文列表121,其可以包括各种虚拟 主机总线适配器(vHBA)有关的信息和上下文。此外,FC域101 可以将接收到的盘读取数据和/或上下文存储到外部存储器中,例如 同步动态随机存取存储器(SDRAM)111。

如在图1中所示,FC域101和IB域102直接利用串行互连连 接。此外,IB域102可以从FC域101接收FC数据和上下文,并且 可以将接收到的FC数据和上下文映射到IB上下文列表122中的不 同队列对(QP),用于序列排序和上下文管理。另外,IB域102可 以在例如SDRAM112的外部存储器中存储可以是IB格式的接收到 的盘读取数据和上下文。然后,IB域102可以将该信息传输到IB架 构104。

因此,系统可以使用多个不同的存储器接口用于处理从存储网络 105到IB架构104的入口流量。

单个存储器接口

根据本发明的实施例,系统可以使用单个存储器接口来支持I/O 虚拟化,诸如为在IB架构上创建的不同虚拟HBA为入口流量和出 口流量两者管理并行的FC上下文。

图2示出了根据本发明的实施例的、利用单个存储器接口支持输 入/输出(I/O)虚拟化的示图。如在图2中所示,I/O设备200可以 使用表示单个FC/IB域201的芯片来处理入口流量,诸如从存储网 络205到IB架构204的盘读取数据。

单个FC/IB域201可以直接连接到物理主机总线适配器(HBA) 203,其可以利用FC命令执行盘读取操作。物理HBA203可以利用 PCIe命令将盘读取数据和上下文发送给FC/IB域201。然后,FC/IB 域201可以利用IB协议将接收到的盘读取数据和上下文发送给IB 架构204。

如在图2中所示,FC/IB域201可以维护vHBA/QP信息列表 220,该信息列表220将接收到的FC数据和上下文映射到IB上下文 列表中的不同队列对(QP),用于序列排序和上下文管理。另外, FC/IB域201可以将IB格式的盘读取数据和上下文存储到外部存储 器(例如SDRAM210)中。

根据本发明的实施例,FC上下文列表与IB可靠连接(RC)队 列对(QP)列表的合并允许使用单个存储器接口,而不是两个不同 的存储器接口。例如,系统可以在将临时列表映射到IB域之前维护 外部存储器缓冲区的该临时上下文列表的动态列表。这种方法可以避 免使用两个不同的外部存储器,并且也可以避免将背压消息(back pressuremessage)从IB域发送给FC域。因此,系统可以避免多次 存储相同的数据和/或上下文,并且可以改善延迟时间。此外,使用 单个芯片和存储器接口,而不是两个不同的芯片和存储器接口可以降 低系统的成本。

此外,系统消除了对在两个不同域之间进行通信的外部(例如, 特定于供应商的)接口的依赖性。由于使用了单个存储器接口,因此 FC/IB域201知道缓冲区的大小,并且可以避免超过(overrun)在 例如SDRAM210的外部存储器中的缓冲区。这种单个存储器接口方 法也允许在vHBA操作失灵(godown)时进行更好的刷新操作。由 于没有消息在IB域和FC域之间来回传递,因此刷新操作可以以干 净和快速的方式来执行。

图3示出了根据本发明的实施例的、支持用于利用单个存储器接 口处理入口流量的方案300的示图。如在图3中所示,可以使用与单 个存储器接口相关联的FC/IB域320来处理从连接到存储网络的物 理主机总线适配器(HBA)330到IB架构上的服务器310的入口流 量。

在步骤301,服务器310可以通过例如作为RC发送消息将初始 化块发送给FC/IB域320来发起盘读取操作。然后,在步骤302, FC/IB域320可以向服务器310确认消息的接收。

接着,在步骤303,服务器310可以更新用于描述符环的写索引, 并且可以向FC/IB域320指示存在一个或多个新的输入/输出控制块 (IOCB)。然后,在步骤304,FC/IB域320可以向服务器310确 认消息的接收。

此外,FC/IB域320可以将接收到的写索引值与读索引值进行比 较。如果不同,则在步骤305,FC/IB域320可以尝试利用RDMA 读取命令从服务器310获取一个或多个IOCB。然后,在步骤306, 服务器310可以将一个或多个IOCB作为RDMA读取响应数据发送 给FC/IB域320。

一旦FC/IB域320从服务器310接收到IOCB,FC/IB域320就 可以打开上下文,如果它可用的话。这里,上下文是利用芯片上存储 器维护在芯片上的特定命令的状态。然后,FC/IB域320可以将该 IOCB命令推送到物理HBA330。

例如,在步骤307,FC/IB域320可以更新指针(例如响应写索 引),该指针向HBA330指示请求IOCB可用。然后,在步骤308, HBA330可以尝试读取请求IOCB,并且在步骤309,FC/IB域320 可以将IOCB请求读数据发送给HBA330。因此,HBA330可以相 应地执行盘读取操作。

根据本发明的实施例,以上步骤301-309可以并发发生,以用于 处理并行的服务器IOCB命令,即,FC/IB域320可以同时维护和处 理多个并行的上下文。

此外,在步骤311-319,HBA330可以将盘读取数据发送给 FC/IB域320,FC/IB域320在步骤321-329继而可以执行RDMA写 操作来将盘读取数据发送给IB架构上的服务器310。

根据本发明的实施例,系统可以确保盘读取数据被完全传送到服 务器310或主机。在步骤331,服务器310可以发送消息到FC/IB域 320,以用于确认盘读取数据的接收。

此外,在步骤332,一旦完整盘读取数据已通过物理HBA330 传送,物理HBA330就可以发送响应IOCB到FC/IB域320来指示 对应的IOCB请求已被完全处理。相应地,在步骤333,FC/IB域 320可以利用RC发送消息将响应IOCB发送给服务器310。

最后,在步骤334,服务器可以确认响应IOCB的接收,并且在 步骤335,FC/IB域320可以更新指针(例如响应读取索引),该指 针向HBA330指示响应IOCB已被发送给服务器310。

根据本发明的实施例,FC/IB域320可以处理入口数据路径中不 同类型的流量,诸如对vHBA上的上下文的RDMA读取请求、来自 物理HBA的盘读取数据、以及从物理HBA接收到的对vHBA上的 上下文的响应IOCB。这里,用于盘写入数据取回的RDMA读取请 求可以由FC/IB域320内部产生,而盘读取数据和响应IOCB可以 经由PCI-Express总线从物理HBA接收。

图4示出了根据本发明的实施例的、在I/O设备上启动盘读取操 作的示图。如在图4中所示,I/O设备400(诸如表示FC/IB域401 的芯片)可以从IB架构上的服务器402获得写索引412。

FC/IB域401可以将获得的写索引412的值与读索引值的拷贝进 行比较。如果不同,则FC/IB域401可以利用RDMA读取命令413 从服务器402取回一个或多个请求IOCB411。此外,这些RDMA 读取命令413可以被转换为IB格式,并且可以存储在与FC/IB域 401相关联的外部入口存储器410中的空闲缓冲区池420中。

这里,在将RDMA读取命令421存储在入口DRAM410之前, 排队逻辑可以确保在外部入口存储器410中有可用的缓冲区用于 RDMA读取请求。然后,FC/IB域401可以继续处理从物理HBA 403到服务器402的入口流量。

图5示出了根据本发明的实施例的、在I/O设备上提取请求 IOCB的示图。如在图5中所示,I/O设备500(诸如表示FC/IB域 501的芯片)可以从IB架构上的服务器502接收RDMA读取响应数 据。

一旦如所期望的,利用IB协议从服务器502接收到完整RDMA 读取响应数据512,FC/IB域501就可以使在外部入口存储器510中 的空闲缓冲区池520中存储的RDMA读取请求命令521离队。然后, FC/IB域501可以将接收到的RDMA读取响应数据512与存储的 RDMA读取请求521进行匹配。

此外,FC/IB域501可以解析接收到的RDMA读取响应数据 512,并且在将请求IOCB511传递到HBA503之前提取包含在 RDMA读取响应数据512中的请求IOCB511。

图6示出了根据本发明的实施例的、在I/O设备上处理盘读取数 据的示图。如在图6中所示,I/O设备600(诸如表示FC/IB域601 的芯片)可以在将IOCB613传递到HBA603之前为请求IOCB613 打开上下文612。

根据本发明的实施例,FC/IB域601可以确保在为请求IOCB 613打开上下文612之前有足够的空间(例如,在外部入口存储器 610中预留的DRAM空间621)来存储来自HBA603的用于请求 IOCB命令613的盘读取数据611。因此,系统可以确保一旦发出盘 读取命令(例如,在请求ICOB613中),FC/IB域601不背压物理 HBA603。

此外,在从FC/IB域601接收到IOCB命令613中的盘读取命 令之后,HBA603可以在储存器上执行实际的盘读取操作(例如, 利用FC协议),并且HBA603可以利用PCI/PCIe写事务将盘读取 数据611返回给FC/IB域601。

由于当打开上下文时,FC/IB域601已经在外部入口存储器610 中的空闲缓冲区池620中为盘读取命令预留了空间621,因此FC/IB 域601可以开始将接收到的盘读取数据611写入到外部入口存储器 610中的数据包缓冲区中。此外,FC/IB域601可以在将盘读取数据 写入到外部入口存储器610中的数据包缓冲区之前,将IB头部和序 列号添加到为盘读取数据611接收到的数据包。因此,为盘读取数据 611接收到的存储的数据包可以是IB格式的。

此外,当完整消息(例如,RDMA读取请求)可用时,或者当 IB最大传输单元(MTU)数据包(例如RDMA只写数据包)可用 时,FC/IB域601可以读出在外部入口存储器610中存储的盘读取数 据611。随后,FC/IB域601可以将从外部入口存储器610中的空闲 缓冲区池620中读出的IB数据包作为盘读取数据631发送给IB架 构上的服务器602。

图7示出了根据本发明的实施例的、在I/O设备上处理盘读取操 作的完成的示图。如在图7中所示,可以使用I/O设备700(诸如表 示FC/IB域701的芯片)来处理从物理HBA703到IB架构上的服 务器702的入口流量。

一旦盘读取数据已被完全传输,HBA703就可以发送响应IOCB 711到FC/IB域701,以指示与上下文712相关联的对应的IOCB请 求731已被完全处理。然后,FC/IB域701可以将IB头部和序列号 添加到响应IOCB711,并且可以将响应IOCB721存储在外部入口 存储器710中的空闲缓冲区池720中。

一旦消息或数据包准备好要被发送出,FC/IB域701就可以利用 IB协议将响应IOCB721发送给主机/服务器702。然后,主机/服务 器702可以在接收到响应IOCB713之后,知道盘读取请求IOCB命 令731已被硬件完全处理。

此外,在为有关的上下文712发送响应IOCB721之后,FC/IB 域701可以关闭该上下文(即,可以清除状态存储器,并且删除在外 部入口存储器710中预留的空间)。

多个上下文

图8示出了根据本发明的实施例的、利用多个虚拟主机总线适配 器(vHBA)支持I/O虚拟化的示图。如在图8中所示,可以使用 I/O设备800(例如表示FC/IB域801的芯片)来处理入口流量830。 入口流量830可以包括从物理HBA803传输到IB架构上的服务器 802的多个数据包,例如数据包831-839。

此外,FC/IB域801可以支持一个或多个vHBA,例如vHBAA- B851-853,其中每个可以对应于与IB服务器802相关联的队列对 (QP),例如QPA-C841-843。

此外,FC/IB域801可以使用外部入口存储器810来存储一个或 多个接收到的数据包。FC/IB域801可以将诸如vHBAA-C851-853 的FC上下文信息与诸如QPA-C841-843的IB上下文列表合并,以 便支持使用单个存储器接口。

如在图8中所示,外部入口存储器810可以提供空闲缓冲区池 820。空闲缓冲区池820包括一个或多个缓冲区列表,例如缓冲区列 表A-C821-823,其中每个可以用来存储针对特定QP(或vHBA) 的一个或多个接收到的数据包。

例如,FC/IB域801可以将针对QPA841的数据包832和839 在与vHBAA851相关联的缓冲区列表A821中排队。此外,FC/IB 域801可以将针对QPB842的数据包833和838在与vHBAB852 相关联的缓冲区列表B822中排队,并且FC/IB域801可以将针对 QPC843的数据包831在与vHBAC853相关联的缓冲区列表C823 中排队。

此外,FC/IB域801可以包括控制结构811,其可以维护多个接 收到的数据包831-839的状态。另外,FC/IB域801可以使用读取逻 辑812读出一个或多个存储的数据包831-839。

根据本发明的实施例,FC/IB域801可以在vHBAA-C851-853 中打开多个上下文,以便对IB域中的QP支持多个盘读取命令、 RDMA读取请求和RC发送命令的复用。

图9示出了根据本发明的实施例的、支持虚拟主机总线适配器 (vHBA)中的多个上下文的示图。如在图9中所示,I/O设备(例 如表示FC/IB域900的芯片)可以在单个vHBA901中打开多个上下 文(诸如上下文I910和上下文II920),例如用于在物理HBA903 上对QP904执行多个盘读取命令。

例如,上下文I910可以包括从物理HBA903接收到的若干个数 据包,诸如C1D1911、C1D2912和C1D3913。这里,C1D1911可 以包含用于上下文I910的盘读取数据D1,C1D2912可以包含用于 上下文I910的盘读取数据D2,并且C1D3913可以包含用于上下文 I910的盘读取数据D1。

此外,上下文II920可以包括从物理HBA903接收到的若干个 数据包,诸如C2D1921和C2D2922。这里,C2D1921可以包含用 于上下文II920的盘读取数据D1,并且C2D2922可以包含用于上 下文II920的盘读取数据D2。

此外,在将从物理HBA903接收到的数据包发送给IB架构上的 QP904之前,FC/IB域900可以添加对应的序列号(PSN)和不同 的IB头部。

根据本发明的实施例,针对同一QP(例如QP904(即与vHBA 901相关联))的所有数据包可以在IB域内共享单个PSN空间902。 如在图9中所示,在PSN空间902内,数据包可以在序列中按照从 P0、P1至P(N)的次序进行组织。这里,P1等于P0加1、P2等于 P1加1、并且每个后续的数据包会具有下一个序列号。

另一方面,在IB域中共享PSN空间902会复杂化将IB头部和 序列号添加到基于单个存储器接口在不同上下文中从HBA803接收 到的数据包,因为它可能无法利用IB域中的PSN号分配方案实时地 (onthefly)改变传出数据包的次序。

如在图9中所示,当用于上下文II920的盘读取数据在用于上下 文I910的盘读取数据的处理被完全处理之前到达时,可能会在 vHBA901中发生对头阻塞问题。例如,这种情况会在当系统正在执 行盘写入操作时,当FC/IB域900试图安排对另一个磁盘写入操作 的RDMA读取请求时出现。

图10示出了根据本发明的实施例的、利用芯片上存储器来维护 在外部存储器中排队的一个或多个数据包的状态的示图。如在图10 中所示,I/O设备1000(例如表示FC/IB域1000的芯片)可以在单 个VHBA/QP1003中同时打开多个上下文,例如上下文I1010和上 下文II1020。每个上下文可以包括一个或多个数据包,例如上下文I 1010包括数据包C1D11011、C1D21012和C1D31013,并且上下文 II1020包括数据包C2D11021和C2D21022。

根据本发明的实施例,FC/IB域1000可以将序列号和各种IB头 部添加到从物理HBA1005接收到的每个数据包。IB头部可以包括 当特定数据包被发送给IB架构1004时可应用到该特定数据包的IB 命令。

例如,如果用于上下文的盘读取数据的大小等于IB最大传输单 元(MTU)的大小,则在IB头部中排队的IB命令可以是具有在上 下文存储器中指向的虚拟地址(VA)的“RDMA只写”命令。否则, 如果用于给定上下文的盘读取数据的大小超过IBMTU的大小,则 盘读取数据可以被分割成多个数据包。在IB头部中排队的用于每个 数据包的命令可以是以下中的一个:“RDMA写第一个”命令、 “RDMA写中间”命令和“RDMA写最后一个”命令,其中上下文 存储器指向VA。取决于盘读取的长度,可能存在零个或多个以 “RDMA写中间”命令排队的数据包。

如在图10中所示,起始PSN是P0,并且盘读取数据大于IB MTU。当第一个数据包(C1D11011)到达时,系统可以将“RDMA 写第一个”命令连同PSN(P0)一起添加到数据包。此外,当下一 个数据包(C1D21012)到达时,系统可以将“RDMA写中间”命令 连同PSN(P1(P0+1))一起添加。然后,当第三个数据包 (C2D11021)到达时,系统可以将“RDMA写第一个”命令连同 PSN(P2(即,P1+1))一起添加到数据包。此外,当数据包 (C2D21022)到达时,系统可以将“RDMA写最后一个”命令连同 PSN(P3(即P2+1))一起添加到数据包。

在以上动作序列中存在一致性问题。添加到数据包C1D21012 的IB命令是“RDMA写中间”命令。取决于盘读取的长度,系统可 以期望添加到下一个数据包的命令为或者“RDMA写中间”命令或 者为“RDMA写最后一个”命令。如在图10中所示,由于下一个数 据包即C2D11021来自不同的上下文II1020,因此FC/IB域1000 可以将新的命令,即“RDMA写第一个”命令或“RDMA只写”命 令添加到数据包(尽管PSN是正确的)。此外,当FC/IB域1000试 图或者为了描述符取回或者为了执行用于另一个上下文的RC发送 IOCB响应将RDMA读取请求排队时,会出现类似的问题。

为了解决这个问题,系统可以相应地更新与先前排队的数据包相 关联的IB命令。例如,在FC/IB域1000接收到数据包C2D11021 之后,用于C1D21012的IB命令即“RDMA写中间”1007可以被 改变为“RDMA写最后一个”1008。

根据本发明的实施例,为了确保一致性,FC/IB域1000可以维 护芯片上存储器1002来存储外部存储器1001上的排队的数据包 1006的状态1009。

这种芯片上存储器1002可以在不同的方面是有利的。首先,可 以确保只有当数据包已被完全排队并且与数据包相关联的IB命令已 被更新时,如果有必要,读取逻辑才从外部存储器读出数据包(并且 将数据包发送给主机)。其次,与先前排队的数据包相关联的IB命 令可以相应地被更新,以便支持多个上下文。

例如,芯片上存储器1002可以是两比特宽(和64K深)。用于 芯片上存储器1002中的条目的第一比特(例如比特0)可以指示IB 命令是否需要被改变或更新,并且第二比特(例如比特1)可以指示 在FC/IB域1000中的读取逻辑是否可以将排队的数据包从外部存储 器1001中取回。

以下表1示出了当数据包序列到达时,存储在示例性芯片上存储 器中的不同数据包状态。

表1

如在以上表1中所示,当第一数据包即C2D1被排队时,芯片上 状态存储器是2'b00,其指示读取逻辑不能将这个数据包读出。这是 因为系统可能在以后当来自其它上下文的数据包到达时必须改变这个 数据包的命令。

当下一个数据包C2D2到来时,前一个数据包即C2D1的芯片上 状态被改变为2'b10,其向读取逻辑指示数据包已被成功地排队并且 已准备好被读出。在这种情况下不需要改变命令,因为C2D2来自同 一上下文II(C2)。

此外,当第三数据包即C1D1到达时,用于C2D2的芯片上存储 器的状态被改变为2'b11,其向读取逻辑指示数据包已被排队并且命 令可能需要在读取侧被改变。读取逻辑可以读出数据包并且在将数据 包发送出之前将命令从“RDMA写中间”改变为“RDMA写最后一 个”。

图11示出了根据本发明的实施例的、用于利用单个存储器接口 支持输入/输出(I/O)虚拟化的示例性流程图。如在图11中所示, 在步骤1101,系统可以提供与网络架构上的服务器相关联的芯片, 其中该芯片与包含多个数据包缓冲区的外部存储器相关联。此外,在 步骤1102,系统可以在芯片上存储器中维护包含从物理主机总线适 配器(HBA)接收到的盘读取数据的一个或多个数据包的状态。此 外,在步骤1103,系统允许芯片将所述一个或多个数据包在外部存 储器上的多个数据包缓冲区中排队、基于所述一个或多个数据包的状 态从外部存储器中读出所述一个或多个数据包、并且将所述一个或多 个数据包发送给网络架构上的服务器。

混合链表结构

根据本发明的实施例,系统可以使用混合链表结构来处理与虚拟 主机总线适配器(vHBA)中的多个上下文相关联的入口流量。这种 混合链表结构可以包括主链表和临时链表。

图12示出了根据本发明的实施例的、利用空闲缓冲区池来支持 多个虚拟主机总线适配器(vHBA)的示图。如在图12中所示,I/O 设备1200(例如表示FC/IB域1204的芯片)可以使用空闲缓冲区池 1210来处理可能与不同的虚拟主机总线适配器(vHBA)(例如 vHBAI-II1201-1202)相关联的入口流量1203。

此外,每个vHBA可以维护缓冲区指针的一个或多个链表,用 于支持将从入口流量1203接收到的各种数据包存储在空闲缓冲区池 1210中的数据包缓冲区中。例如,vHBAI1201可以维护主链表I 1211,而vHBAII1202可以维护主链表II1212。

图13示出了根据本发明的实施例的、利用混合链表结构来支持 各种盘读取操作的示图。如在图13中所示,I/O设备1300(例如表 示FC/IB域的芯片)可以在单个vHBA1303中打开多个上下文(例 如上下文A1301和上下文B1302),用于并行地执行多个盘读取操 作。

根据本发明的实施例,FC/IB域可以在芯片上存储器中定义用于 每个盘读取操作的上下文表。例如,当FC/IB域接收到用于上下文 A1301的盘读取数据时,FC/IB域可以在芯片上存储器1310中打开 上下文表A1311。此外,上下文表A1311可以维护缓冲区指针的临 时链表1321,缓冲区指针指向从空闲缓冲区池1320中分配的一个或 多个数据包缓冲区。上下文表A1311也可以维护用于给定事务的虚 拟地址。

此外,当用于上下文A1301的入口数据到来时,盘数据可以连 同添加的IB头部和PSN号一起写入到外部SDRAM存储器中的空闲 缓冲区池1320中。如在图13中所示,只有上下文存储器中的缓冲区 指针的临时链表1321被更新,而用于给定vHBA的缓冲区指针的主 链表1330保持不变。

根据本发明的实施例,可以打开多个上下文用于不同的盘读取操 作。当用于新打开的上下文的盘读取数据到达时,系统可以从外部 SDRAM存储器中读出用于先前打开的上下文的存储的数据,并且如 果需要,则更新在上下文列表的末尾处的IB头部中的命令。例如, 如果用于给定上下文的盘读取数据大于IBMTU,则在IB头部中排 队的命令“RDMA写第一个”可以被改变为“RDMA只写”,并且 如果在IB头部中排队的命令是“RDMA写中间”,则它可以被改变 为“RDMA写最后一个”。

如在图13中所示,当FC/IB域从不同的上下文B1302接收到 数据时,临时链表1321可以合并到用于vHBA1303的主链表1330。 例如,用于vHBA1303的主链表1330的尾指针可以被改变为临时链 表1321的头指针,并且临时链表1321的尾指针可以变为主链表 1330的新的尾指针。然后,用于新的上下文的数据可以与新的PSN 一起写入到新的上下文存储器中,并且用于那个上下文的临时指针可 以被相应地更新。

类似地,当系统需要在新的上下文中执行诸如“RDMA只写” 命令、“RDMA写最后一个”命令、“只发送”命令、以及RDMA 读取请求的命令时,先前打开的上下文可以被关闭并且临时链表 1321可以合并到主链表1330中。

图14示出了根据本发明的实施例的、利用混合链表结构来避免 队头阻塞的示图。如在图14中所示,当上下文A1401被关闭并且用 于vHBA1403的主链表1430被更新之后,I/O设备1400(例如表示 FC/IB域的芯片)可以在芯片上存储器1410中打开用于上下文B 1402的新的上下文表B1412。此外,上下文表B1412可以维护新的 临时链表B1422,该临时链表B1422包含指向从空闲缓冲区池1420 中分配的数据包缓冲区的缓冲区指针。

如在图14中所示,在系统可以避免其中在上下文B1402中接收 到的盘读取数据(或RDMA读取请求)的处理被在上下文A1401中 接收到的盘读取数据的处理阻塞的队头阻塞之后,因此,用于给定 vHBA中不同上下文的盘读取数据可以被并行处理。

图15示出了根据本发明的实施例的、用于利用混合链表结构来 避免队头阻塞的示例性流程图。如在图5中所示,在步骤1501,系 统可以提供包含与在网络环境中的一个或多个虚拟主机总线适配器 (vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所 述vHBA维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓 冲区指针的主链表。此外,在步骤1502,系统可以在与输入/输出 (I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表 维护指向从空闲缓冲区池中为盘读取操作分配的一个或多个数据包缓 冲区的缓冲区指针的临时链表。然后,在步骤1503,系统可以允许 I/O设备在该I/O设备从执行盘读取操作的物理主机总线适配器 (HBA)中接收到盘读取数据时打开上下文表、更新缓冲区指针的 临时链表、以及当上下文表被关闭时将缓冲区指针的临时链表合并到 缓冲区指针的主链表中。

统一存储器结构

根据本发明的实施例,当盘读取数据来自HBA芯片时,系统可 以在统一存储器结构中将盘读取数据存储在各种数据缓冲区中。

图16示出了根据本发明的实施例的、支持用于I/O设备的二维 链表结构的示图。如在图16中所示,系统可以在空闲缓冲区池1600 中使用两维链表1610来管理入口数据包缓冲区。二维链表1610可以 包括多个条目,其中每个条目可以是超级块(例如超级块1601至 1609)。

根据本发明的实施例,超级块1601至1609可以表示存储在连续 存储器位置中的多个数据包。此外,每个超级块1601至1609可以在 内部指向用于缓冲区管理的数据包缓冲区列表。因此,二维链表结构 在芯片上资源利用率的角度看可以是非常高效的,并且系统可以在最 大化缓冲的数据包的数量的同时,最小化芯片上链表存储器的大小。

例如,为了容纳各种大小的IB数据包(包括额外开销),二维 链表1610可以包括8K个超级块。此外,每个超级块可以是可容纳 八个数据包(每个具有8KB的大小)的64KB(512Kb)的大小。如 在图16中所示,超级块1601可以包括八个数据包缓冲区,诸如数据 包缓冲区1611至1618。

此外,二维链表1610允许FC/IB域存储针对IB域中不同QP 的盘读取数据。如在图16中所示,FC/IB域可以使用不同的指针来 访问二维链表1610中的各种超级块链表。例如,FC/IB域可以维护 指向包括超级块1602、超级块1604和超级块1608的超级块链表的 QPA头部指针1621(和/或QPA尾指针1622)。此外,FC/IB域 芯片可以维护指向包括超级块1606、超级块1605和超级块1609的 超级块链表的QPB头部指针1623(和/或QPB尾指针1624)。

根据本发明的实施例,系统可以通过动态地将二维混合链表 1610与用于给定Infiniband(IB)RCQP连接的一维链表合并来支 持外部DRAM存储器的高效使用。因此,系统可以避免在其中大小 固定的超级块中存储小尺寸数据包而浪费存储器空间。

例如,FC/IB域可以向空闲缓冲区池1600查询执行盘读取请求 的缓冲区。然后,如果在空闲缓冲区池1600中有足够的数据包缓冲 区可用,则FC/IB域可以将盘读取请求IOCB提交(post)给物理 HBA。由盘读取请求所请求的缓冲区的量可以在空闲缓冲区池中预 留,并且不能被任何其它后续的请求使用,直到当前的上下文被 FC/IB域释放为止。

此外,系统可以定义用于存储RDMA读取请求的缓冲区列表 (例如4K缓冲区)。系统可以确保每当发出RDMA读取请求时, 在外部存储器中保证的空间可用于RDMA读取请求并且RDMA读 取请求不会被RDMA写操作阻塞。

如果只使用二维链表1610,则系统可能需要在存储器中预留 64K(超级块的大小)*4K*128字节,以便提供跨128个队列对(或 vHBA)共享的用于RDMA读取请求的保证的4K数据包缓冲区。这 种方法会是浪费的,因为它明显大于8K(数据包缓冲区的大小) *4K*128字节的数据包缓冲区存储器使用。

图17示出了根据本发明的实施例的、支持I/O设备的高效存储 器利用率的示图。如在图17中所示,I/O设备1700(例如表示 FC/IB域的芯片)可以使用空闲缓冲区池1701来支持各种数据包的 排队1730。空闲缓冲区池1701可以包括可包含超级块1711-1719的 二维链表1710以及包括数据包缓冲区1721-1729的一维链表1720。 这里,二维链表1710可以类似于如在图16中所示的二维链表1610。

根据本发明的实施例,不同类型的事务可以在空闲缓冲区池 1701中排队。例如,可以使用这些事务来执行RDMA写命令1742 和RDMA读取请求1741。

当数据包被排队1730时,基于事务的类型,空闲缓冲区可以或 者从二维链表1710中或者从单个一维链表1720中进行分配。

此外,系统可以在芯片上维护链表控制结构1740,以维护各种 缓冲的数据包的状态。例如,控制结构1740可以存储存储器超级块 位置的头指针(例如具有13比特的SBLKHEAD)、在超级块中的 数据包偏移位置的头指针(例如具有3比特的PKTHEAD)、用于 存储器超级块位置的尾指针(例如具有13比特的SBLKTAIL)、用 于超级块中的数据包偏移位置的尾指针(例如具有3比特的 PKTTAIL)、以及指示数据包缓冲区是从二维链表还是一维链表进 行分配的标志(例如具有1比特的LISTTYPE)。此外,控制结构 1740可以基于QP/vHBA的数量存储深度信息,并且可以基于所需的 控制信息存储宽度信息。

根据本发明的实施例,系统可以支持不同的排队方案。

如果排队的事务是用于RDMA写命令的,则系统可以从二维链 表1710得到缓冲区或超级块。

否则,如果排队的事务是用于RDMA读取请求的,则当在为先 前排队的事务分配的超级块中没有剩余数据包缓冲区时,系统可以从 一维链表1720得到缓冲区。

另一方面,用于RDMA读取请求的排队的事务会在RDMA写 操作正在进行时发生。如果数据包缓冲区可用,则系统可以在为 RDMA写操作分配的超级块中的当前数据包位置处将RDMA读取请 求排队。

此外,来自单链表1720的数据包缓冲区可以预留给特定的 QP/vHBA。来自单链表1720的这个预留的缓冲区可以被RDMA写 数据包或者被RDMA读取请求数据包使用。此外,系统可以在控制 存储器中标记LISTTYPE字段,使得离队逻辑和/或读取逻辑知道在 单链表1720中存在一个排队的数据包。

因此,系统可以实现高效的数据包处理,并且可以避免浪费外部 存储器。

图18示出了根据本发明的实施例的、用于支持计算环境中的高 效数据包处理的示例性流程图。如在图18中所示,在步骤1801,系 统可以在存储器中提供空闲缓冲区池,其中空闲缓冲区池包含二维链 表和一维链表。此外,在步骤1802,系统可以允许二维链表的每个 条目包含在连续存储器位置中的多个数据包缓冲区,并且一维链表的 每个条目包含单个数据包缓冲区。然后,在步骤1803,I/O设备可以 使用空闲缓冲区池来存储从物理主机总线适配器(HBA)接收到的 盘读取数据。

本发明的实施例包括用于支持计算环境中的I/O虚拟化的系统, 包括:包含与网络环境中的一个或多个虚拟主机总线适配器(vHBA) 相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA 维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的 主链表;以及用于在与输入/输出(I/O)设备相关联的芯片上存储器 中定义的上下文表的装置,其中上下文表维护指向从空闲缓冲区池为 盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表; 以及其中I/O设备操作来在其从执行盘读取操作的物理主机总线适配 器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的 临时链表、并且当上下文表被关闭时将缓冲区指针的临时链表合并到 缓冲区指针的主链表中。

如以上所提供的系统,其中I/O设备允许InfiniBand(IB)架构 上的服务器发起盘读取操作。

如以上所提供的系统,其中I/O设备将IB头部和序列号添加到 从物理HBA接收到的每个数据包。

如以上所提供的系统,其中当完整消息可用时或者当IB最大传 输单元(MTU)数据包可用时,I/O设备操作来读出存储在外部存储 器中的盘读取数据。

如以上所提供的系统,其中每个虚拟HBA在IB域中维护单独 的数据包序列号(PSN)空间。

如以上所提供的系统,其中I/O设备为与所述vHBA相关联的 不同盘读取操作维护不同的上下文表。

如以上所提供的系统,其中上下文表在I/O设备打开与虚拟 HBA相关联的另一个上下文表时被关闭。

如以上所提供的系统,其中所述另一个上下文表维护指向从空闲 缓冲区池中分配的一个或多个数据包缓冲区的缓冲区指针的新的临时 链表。

如以上所提供的系统,其中当虚拟HBA从另一个盘读取操作接 收到数据时,I/O设备打开另一个上下文表。

如以上所提供的系统,其中当虚拟HBA接收作为RDMA只写 命令、RDMA写最后一个命令、只发送命令和RDMA读取请求命令 中的一个的命令时,I/O设备打开另一个上下文表。

本发明的实施例包括用于支持计算环境中的高效数据包处理的方 法,包括:提供包含与网络环境中的一个或多个虚拟主机总线适配器 (vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所 述vHBA维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓 冲区指针的主链表;在与输入/输出(I/O)设备相关联的芯片上存储 器中定义上下文表,其中上下文表维护指向从空闲缓冲区池中为盘读 取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;以 及允许I/O设备在该I/O设备从执行盘读取操作的物理主机总线适配 器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的 临时链表、以及当上下文表被关闭时将缓冲区指针的临时链表合并到 缓冲区指针的主链表中。

如以上所提供的方法,允许InfiniBand(IB)架构上的服务器发 起盘读取操作。

如以上所提供的方法,还包括将IB头部和序列号添加到从物理 HBA接收到的每个数据包。

如以上所提供的方法,还包括当完整消息可用时或者当IB最大 传输单元(MTU)数据包可用时,读出存储在外部存储器中的盘读 取数据。

如以上所提供的方法,还包括配置每个虚拟HBA,以在IB域中 维护单独的数据包序列号(PSN)空间。

如以上所提供的方法,还包括为与所述vHBA相关联的不同盘 读取操作维护不同的上下文表。

如以上所提供的方法,还包括在I/O设备打开与虚拟HBA相关 联的另一个上下文表时关闭上下文表。

如以上所提供的方法,还包括配置所述另一个上下文表,以维护 指向从空闲缓冲区池中分配的一个或多个数据包缓冲区的缓冲区指针 的新的临时链表。

如以上所提供的方法,还包括当虚拟HBA从另一个盘读取操作 接收到数据或者接收到RDMA只写命令、RDMA写最后一个命令、 只发送命令和RDMA读取请求命令中的一个命令时,打开另一个上 下文表。

本发明的实施例包括其上存储有指令的非临时性机器可读存储介 质,所述指令在被执行时,使得系统执行包括以下各项的步骤:提供 包含与网络环境中的一个或多个虚拟主机总线适配器(vHBA)相关 联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护 指向空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链 表;在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文 表,其中上下文表维护指向从空闲缓冲区池中为盘读取操作分配的一 个或多个数据包缓冲区的缓冲区指针的临时链表;以及允许I/O设备 在该I/O设备从执行盘读取操作的物理主机总线适配器(HBA)接 收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及 当上下文表被关闭时将缓冲区指针的临时链表合并到缓冲区指针的主 链表中。

本发明的实施例包括用于支持计算环境中的输入/输出(I/O)虚 拟化的系统,包括:存储器中的空闲缓冲区池,其中空闲缓冲区池包 含二维链表和一维链表,其中二维链表的每个条目包含在连续存储器 位置中的多个数据包缓冲区,并且一维链表的每个条目包含单个数据 包缓冲区,以及其中I/O设备操作来使用空闲缓冲区池存储从物理主 机总线适配器(HBA)接收到的盘读取数据。

如以上所提供的系统,其中I/O设备允许InfiniBand(IB)架构 上的服务器发起盘读取操作。

如以上所提供的系统,其中I/O设备将一个或多个IB头部和序 列号添加到从物理HBA接收到的每个数据包。

如以上所提供的系统,其中当完整消息可用时或者当IB最大传 输单元(MTU)数据包可用时,I/O设备操作来读出存储在外部存储 器中的盘读取数据。

如以上所提供的系统,其中I/O设备支持一个或多个虚拟主机总 线适配器(vHBA),其中每个vHBA在IB域中维护单独的数据包 序列号(PSN)空间。

如以上所提供的系统,其中如果数据包执行远程直接存储器存取 (RDMA)写事务或RDMA读取请求事务中的一个,则I/O设备操 作来将数据包在外部存储器中排队。

如以上所提供的系统,其中如果数据包的排队是为了RDMA写, 则I/O设备操作来从二维链表中分配超级块。

如以上所提供的系统,其中如果数据包的排队是为了RDMA读 取请求事务的并且在超级块中剩余一个或多个数据包缓冲区,则I/O 设备操作来从一维链表中分配数据包缓冲区。

如以上所提供的系统,其中如果排队事务是为了RDMA读取请 求事务的并且在超级块中没有剩余数据包缓冲区,则I/O设备操作来 从二维链表中分配超级块。

如以上所提供的系统,其中I/O设备操作来在简单链表中为所述 vHBA预留数据包缓冲区。

本发明的实施例包括用于支持网络环境中的高效数据包处理的方 法,包括:在存储器中提供空闲缓冲区池,其中空闲缓冲区池包含二 维链表和一维链表;允许二维链表的每个条目包含在连续存储器位置 中的多个数据包缓冲区,并且允许一维链表中的每个条目包含单个数 据包缓冲区;以及经由I/O设备利用空闲缓冲区池来存储从物理主机 总线适配器(HBA)接收到的盘读取数据。

如以上所提供的方法,其中允许InfiniBand(IB)架构上的服务 器发起盘读取操作。

如以上所提供的方法,还包括将一个或多个IB头部和序列号添 加到从物理HBA接收到的每个数据包。

如以上所提供的方法,还包括当完整消息可用时或者当IB最大 传输单元(MTU)数据包可用时,读出存储在外部存储器中的盘读 取数据。

如以上所提供的方法,还包括支持一个或多个虚拟主机总线适配 器(vHBA),其中每个vHBA在IB域中维护单独的数据包序列号 (PSN)空间。

如以上所提供的方法,还包括如果数据包执行远程直接存储器存 取(RDMA)写事务或RDMA读取请求事务中的一个,则将数据包 在外部存储器中排队。

如以上所提供的方法,还包括如果数据包的排队是为了RDMA 写,则从二维链表中分配超级块。

如以上所提供的方法,还包括如果数据包的排队是为了RDMA 读取请求事务的并且在超级块中剩余一个或多个数据包缓冲区,则从 一维链表中分配数据包缓冲区。

如以上所提供的方法,还包括如果排队事务是为了RDMA读取 请求事务的并且在超级块中没有剩余数据包缓冲区,则从二维链表中 分配超级块,以及在简单链表中为所述vHBA预留数据包缓冲区。

本发明的实施例包括其上存储有指令的非临时性机器可读存储介 质,所述指令在被执行时,使得系统执行包括以下各项的步骤:在存 储器中提供空闲缓冲区池,其中空闲缓冲区池包含二维链表和一维链 表;允许二维链表的每个条目包含在连续存储器位置中的多个数据包 缓冲区,并且允许一维链表的每个条目包含单个数据包缓冲区;以及 经由I/O设备利用空闲缓冲区池来存储从物理主机总线适配器 (HBA)接收到的盘读取数据。

本发明的许多特征可以在硬件、软件、固件或其组合中、利用硬 件、软件、固件或其组合、或者在硬件、软件、固件或其组合的帮助 下执行。因此,本发明的特征可以利用处理系统(例如,包括一个或 多个处理器)来实现。

本发明的特征可以在计算机程序产品中、利用计算机程序产品、 或者在计算机程序产品的帮助下执行,其中计算机程序产品是其上/ 其中存储有可用来编程处理系统以执行本文所呈现的任何特征的指令 的存储介质或计算机可读介质。存储介质可以包括但不限于,任何类 型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动器、以及磁光 盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存 储器设备、磁或光卡、纳米系统(包括分子存储器IC)、或适于存 储指令和/或数据的任何类型的媒体或设备。

存储在任何一种机器可读介质中,本发明的特征可以被结合到软 件和/或固件中,用于控制处理系统的硬件,并且用于使处理系统能 够利用本发明的结果与其它机制交互。这种软件或固件可以包括但不 限于,应用代码、设备驱动程序、操作系统和执行环境/容器。

本发明的特征也可以利用例如诸如专用集成电路(ASIC)的硬 件部件在硬件中实现。实现硬件状态机使得执行本文所描述的功能对 相关领域的技术人员将是显而易见的。

此外,本发明可以方便地利用一个或多个常规的通用或专用数字 计算机、计算设备、机器或微处理器来实现,其中包括一个或多个处 理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介 质。适当的软件编码可以容易地由熟练的程序员基于本公开内容的教 导来准备,如对软件领域的技术人员将显而易见的。

虽然以上已经描述了本发明的各种实施例,但是应该理解,它们 已作为例子而不是限制给出。对相关领域的技术人员来说,将很显然, 在不背离本发明的精神和范围的情况下,其中可以做出各种形式和细 节上的变化。

本发明已经借助说明具体功能及其关系的执行的功能构建块进行 了描述。这些功能构建块的边界在本文中通常是为了方便描述而任意 定义的。可以定义可替代的边界,只要具体的功能及其关系被适当地 执行。任何这种可替代的边界因此在本发明的范围和精神之内。

本发明的以上描述是为了说明和描述的目的提供。它不是穷尽的 或者要把本发明限定到所公开的精确形式。本发明的广度和范围不应 该由任何上述示例性实施例来限制。许多修改和变化对本领域技术人 员来说将显而易见。修改和变化包括所公开特征的任何相关组合。实 施例的选择与描述是为了最好地解释本发明的原理及其实践应用,从 而使本领域其他技术人员能够理解本发明用于各种实施例并且可以进 行适于预期特定用途的各种修改。本发明的范围要由以下权利要求及 其等价物来定义。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号