控制器集成的制作方法

文档序号:7759682阅读:216来源:国知局
专利名称:控制器集成的制作方法
技术领域
本发明涉及一种用于数据处理系统的网络接口的新结构和一种用于在数据处理 系统的处理器之间交换网络数据的方法,特别是一种刀片式服务器。还公开了一种PCIe设 备的新结构。
背景技术
包括了一个或更多个处理器和存储器的传统数据处理系统借助外围网络接口设 备连接到网络上。网络接口设备使数据处理系统能够通过网络接收并发送数据。数据处理 系统和网络接口设备通过诸如PCIe这样的外围数据总线通信。以太网网络接口设备包括控制器,该控制器典型地形成通过网络传输的数据分 组,控制通过该设备的数据流,并在数据处理系统和网络接口设备之间协调数据总线上数 据的传输。网络上数据的物理传输由网络接口设备的所谓“PHY”处理,“PHY”在以太网规 范的物理层级上进行网络上网络数据的信令(传输)(signalling)。在典型的数据处理系统中,网络上数据的发送或接收涉及多条数据总线。通常在 处理器和存储器之间、本地存储设备和诸如网络接口设备这样的外围设备之间有不同的总 线。在每条总线上的数据传输具有关联的开销,并且在网络上数据发送或接收期间,除了 PHY,各种数据总线电路通常是在引起的延迟和功率需求方面最昂贵的组件。并且,在网络结构上数据分组的传输速率本身受到了网络带宽的限制,这限制了 网络上的主机之间的最大数据速率。如果将网络结构用于连接刀片式服务器的刀片,那么 这可能尤其具有限制性。传统的网络接口设备被提供为通过诸如PCIe这样的外围总线与数据处理系统相 连接的外围设备。网络接口设备可以是独立的外围卡或者它可以由数据处理系统的主板来 支承,但该设备由数据处理系统通过适当的总线访问。这种配置如图1所示,其中数据处理 系统101的CPU 103通过PCIe总线106访问网络接口设备(NIC) 102。在CPU和PCIe总线 之间的接口由芯片集105提供,通常其借助于存储器控制器提供对存储器的直接存储器访 问(DMA)。网络接口设备102包括控制器107和PHY108,控制器主要处理在网络109上使 用的网络协议的链路层上的数据流,PHY根据该网络协议的物理层需求来处理网络上的网 络数据分组的发送和接收。由于在处理器103上执行的应用的接收和发送队列位于存储器104中,网络接口 设备为了通过网络发送和接收数据,必须直接读写该存储器。每个发送操作通常需要两次 或三次存储器访问来实现,并且需要一次或两次存储器访问来实现每个接收操作。通常网 络接口设备借助于直接存储器访问(DMA)来读写存储器,但还必须通过外围数据总线执行 所有的这种访问。每个发送或接收操作的功耗是不可忽视的,因为每次访问必须经过芯片 集105处的串行/去串行(serialisation/deserialisation,SERDES)电路(它为处理器 /存储器控制器提供到总线的接口)以及在网络接口设备处的SERDES电路(它为NIC提供 到总线的接口)。对于高速网络接口设备来说,每秒可执行上千次发送和/或接收操作,这种结构的总功耗将变得非常大。类似地,通过外围数据总线重复的存储器访问给通过网络 接口设备执行的发送和接收操作带来了明显的延迟。为了特定的应用已经开发了包括处理核和网络接口设备的片上系统 (System-on-a-Chip,SoC)设备,从而将网络接口设备和处理器所能访问的存储器设置得更 近。例如,SoC设备的STMicroelectronics STM32W系列提供了 32位的ARM处理器和集成 的IEEE 802. 15. 4无线电装置。然而,将包括PHY的整个网络接口集成到处理器中极大地 增加了处理器所需的功率以及热量,必须在处理器处应对该热量。并且,在PHY中处理的信 号给处理器引入了大量的附加电干扰,使得SoC结构不适用于高速CPU。已经提出了允许数据处理系统的组件(例如CPU和网络接口设备)互相通信的 改进结构,但是没有提供一种为具有到主机存储器的低延迟数据通道的网络接口提供低功 率的结构。之前所作出的用于改善数据处理系统内部通信的结构的尝试包括在MMiZZ www, transputer. net/tn/06/tn06. html 所公开的、由 INMOS Ltd 于 1988 年 1 月在 INMOS Technical Note 6, "IMS T800Architecture” 中引入的 IMST800 晶片机(transputer)。 其他的这种结构描述在以下文献中Finn,Gregory G. "An Integration of Network Communication with WorkstationArchitecture,,,ACM Computer Communication Review, 1991 年 10 月;禾口 Hayter,Μ.,McAuley, D.,"The Desk Area Network,,,ACM Transactions onOperating Systems, 14-21 页,1991 年 10 月。在申请号为10/548,121和12/105,412的美国专利申请中描述了之前提议的、描 述以太网协议封装的方案。因此,需要一种具有低功率需求并且具有到主机存储器的低延迟数据通道的改进 网络接口设备结构。

发明内容
根据本发明的第一方面,提供了一种包括中央处理单元和分离的网络接口功能组 的数据处理系统,所述分离的网络接口功能组包括与中央处理单元设置在一起的第一子 单元,被配置为通过为每个网络数据分组生成数据链路层信息来至少部分地形成发送给网 络端点的一系列网络数据分组;以及在中央处理单元外部并通过互连(interconnect)与 该中央处理单元相耦合的第二子单元,该第二子单元被配置为通过网络物理地传送所述一 系列网络数据分组。优选地,第一子单元被配置来根据在互连上使用的数据协议,将所述系列中的每 个网络数据分组封装在一个或更多个互连数据分组。优选地,第一子单元被配置为将互连 数据分组发送给第二子单元,以使第二子单元通过网络传送各个网络数据分组。优选地,第一子单元被配置为部分地形成所述一系列网络数据分组,第二子单元 被配置为在网络上使用的网络协议的数据链路层完成每一个所述一系列网络数据分组的 形成。相应地,第二子单元被配置为通过为每个网络数据分组计算一个或更多个校验和来 在数据链路层完成每一个所述一系列网络数据分组的形成。优选地,第二子单元被配置为根据在网络上使用的网络协议的物理层需求,通过 网络物理地传送一系列完成的数据分组。优选地,所述数据处理系统进一步包括与中央处理单元耦合的存储器和/或高速缓存以及中央处理单元中的存储器管理单元,该存储器管理单元被配置为为中央处理单元 和第一子单元提供到存储器和/或高速缓存的访问。优选地,存储器和/高速缓存被配置 为保存包括通过网络发送的数据的发送队列,并且第一子单元被配置为借助于对存储器管 理单元的读请求来访问发送队列,并使用通过网络发送的数据来形成所述一系列网络数据 分组。优选地,可操作第二子单元来通过网络接收一系列网络数据分组,第一子单元被 配置为在数据链路层至少部分地处理每个接收的网络数据分组以便提取携带在该网络数 据分组中的数据。优选地,第一子单元被配置为在存储器中存储转发表,该转发表包括了这样的信 息以使第一子单元能够为每个接收的网络数据分组,依赖于接收的网络数据分组的内容, 将提取的数据路由给在存储器和/或其他网络设备中的一个或更多个接收队列。相应地,第二子单元被配置为根据在接近第二子单元的互连的数据链路上使用的 数据协议,将每个接收的网络数据分组封装在一个或更多个互连数据分组中。优选地,第二子单元被配置为将互连数据分组发送给第一子单元,以使第一子单 元在数据链路层至少部分地处理每个接收的网络数据分组并提取在接收的网络数据分组 中携带的数据。根据本发明的第二个方面,提供了一种数据处理系统,包括包括网络接口控制 器的中央处理单元,该网络接口控制器被配置为通过根据网络协议在数据链路层至少部分 地将通过网络发送的数据形成帧(framing)来形成中间数据单元,每个中间数据单元包括 用于发送的数据的目的地网络地址;与中央处理单元耦合的存储器;与网络连接的媒体接 口,被配置为通过网络发送完全形成的数据分组;以及在中央处理单元和媒体接口之间延 伸的第一互连,该互连由一条或多条数据链路形成;其中所述网络接口控制器被配置为将 网络协议的中间数据单元封装在通过第一互连发送的互连数据分组中,并且所述媒体接口 被配置为从通过第一互连接收的互连数据分组中提取中间数据单元,并在物理层处理该中 间数据单元,以便根据网络协议完成数据分组的形成。优选地,网络接口控制器被配置为根据在接近中央处理单元的第一互连的数据链 路上使用的数据协议,将每个中间数据单元封装在一个或更多个互连数据分组中。优选地, 网络接口控制器被配置为促使将一个或更多个互连数据分组发送给媒体接口,以便使媒体 接口通过网络发送完全形成的网络数据分组。优选地,网络接口控制器被配置为将封装头部写到每个互连数据分组中,该封装 头部包括这样的信息以使媒体接口用互连数据分组来重组各个中间数据单元。相应地,第一互连包括两条数据链路在中央处理单元和转换单元之间延伸的第 一数据链路,以及在转换单元和媒体接口之间延伸的第二数据链路。转换单元被配置为将 根据在第一数据链路上使用的数据协议而形成帧(frame)的互连数据分组转换为根据在 第二数据链路上使用的数据协议形成帧的互连数据分组,反之亦然。优选地,转换单元被配置为通过以下方式来转换互连数据分组移除在第一数据 链路上使用的数据协议的成帧数据,并根据在第二数据链路上使用的数据协议来重新成帧 一个或更多个互连数据分组;或者,根据在第二数据链路上使用的数据协议,增加关于一个 或更多个互连数据分组的附加成帧层。优选地,第一数据链路是CPU互连,第二数据链路是外部数据总线。优选地,在外围数据总线上支持媒体接口。CPU互连可以是HyperTransport 互连、QuickPath互连和PCIe互连的其中之一。优选地外围数据总线是PCIe。优选地,中央处理单元进一步包括存储器管理单元,被配置为为中央处理单元和 网络接口控制器提供到存储器的访问。优选地,如果目的地网络地址属于中央处理单元处支持的进程,网络接口控制器 被配置为直接将用于发送的数据写入存储器中的接收队列,而不将该数据封装到一个或更 多个互连数据分组中,该接收队列对应于所述目的地网络地址。优选地,网络接口控制器进 一步被配置为不根据网络协议在数据链路层将该数据形成帧。优选地,存储器被配置为保存一个或更多个包括了通过网络发送的数据的发送队 列,并且可操作网络接口控制器来借助于对存储器管理单元的读请求,在所述用于发送的 数据的各发送队列处访问该数据。优选地,存储器管理单元包括高速缓存,可操作来存储保存在存储器中的至少一 些数据的副本,该高速缓存可由中央处理单元和网络接口控制器访问。优选地,该高速缓存 被配置为存储由中央处理单元在存储器中最近访问的数据。优选地,网络接口控制器被配置为对于任何既能从存储器中又能从高速缓存中获 得的用于发送的数据,从高速缓存中读取用于发送的数据优先于从存储器中读取该数据。 优选地,网络接口控制器被配置为对于不能从高速缓存获得的用于发送的数据,从存储器 中读取所述数据,并且不将该数据写入高速缓存。优选地,网络接口控制器被配置为当从高 速缓存读取用于发送的数据时,使高速缓存的相应的线无效以便使其他在中央处理单元处 执行的进程改写那些线。优选地,可操作媒体接口来通过网络接收网络数据分组,并将接收的网络数据分 组封装在通过第一互连发送的互连数据分组中;并且网络接口控制器被配置为从互连数据 分组中提取接收的网络数据分组,并根据网络协议在数据链路层至少部分地处理每个接收 的网络数据分组,以便提取携带在每个接收的网络数据分组中的数据。优选地,媒体接口被配置为根据在接近该媒体接口的第一互连的数据链路上使用 的数据协议,将每个接收的网络数据分组封装在一个或更多个互连数据分组中。优选地,媒 体接口被配置为将互连数据分组发送给网络接口控制器,以使网络接口控制器在数据链路 层至少部分地处理每个接收的网络数据分组并将携带在每个接收的网络数据分组中的数 据写入在由包括在所接收网络数据分组中的目的地网络地址所识别的存储器处的至少一 个接收队列中。优选地,网络接口控制器被配置为当将携带在所接收网络数据分组中的数据写入 存储器处的接收队列时,将该数据写入高速缓存。优选地,网络接口控制器被配置为在存储器处存储转发表,该转发表包括这样的 信息以使网络接口控制器依靠目的地网络地址为每个接收的网络数据分组在存储器和/ 或其他网络设备处选取一个或更多个将向其路由所接收网络数据分组的数据的接收队列。优选地,媒体接口被配置为把封装头部写给每个互连数据分组,该封装头部包括 这样的信息以使网络接口控制器用互连数据分组重组各个网络数据分组。优选地,存储器管理单元被配置为当从中央处理单元或网络接口控制器接收到访 问虚拟存储器地址的请求时,将该虚拟存储器地址转换为数据处理系统的物理存储器地址,并访问该物理存储器地址。优选地,存储器管理单元被配置为,如果代表网络接口控制器的虚拟存储器地址 的转换失败,则向网络接口控制器产生页面错误(pagefault)。优选地,网络接口控制器被 配置为,如果虚拟存储器地址涉及发送队列,响应于页面错误,使相应于该虚拟存储器地址 的发送队列暂停,直到各个页面已经被重写入存储器;或者如果虚拟存储器地址涉及接收 队列,响应于页面错误,根据提出的是哪个请求,将接收的网络数据分组的数据写入由数据 处理系统的协议处理实体检索的预留缓冲。相应地,数据处理系统进一步包括包括第二网络接口控制器的第二中央处理单 元,该第二网络接口控制器也被配置为通过根据网络协议在数据链路层至少部分地将发送 的数据形成帧,形成中间数据单元,每个中间数据单元包括用于发送的数据的目的地网络 地址;以及在第二中央处理单元和媒体接口之间延伸的第二互连,第二互连由一条或多条 数据链路形成;其中第二网络接口控制器被配置为将网络协议的中间数据单元封装在通 过第二互连发送的互连数据分组中,并且媒体接口被配置为从通过互连接收的互连数据分 组提取中间数据单元并在物理层处理中间数据单元,以便根据网络协议完成数据分组的形 成。第二互连的一条或多条数据链路可与第一互连的一条或多条数据链路共享。优选地,网络接口控制器被配置为,如果在中央处理单元处形成的中间数据单元 的目标地网络地址是在第二中央处理单元处支持的网络地址,则将包括该中间数据单元的 经封装的互连数据分组发送到第二网络接口控制器。优选地,媒体接口包括管理控制器,该管理控制器被配置为处理接收的、用于由 (a)媒体接口和网络接口控制器和(b)媒体接口和第二网络接口控制器形成的网络接口设 备的管理命令。相应地,数据处理系统是包括了在机架处支持的一个或更多个刀片的刀片式服务 器,每个刀片具有一个或更多个中央处理单元,该一个或更多个中央处理单元中的至少一 个包括网络接口控制器,媒体接口位于刀片式服务器的机架处。中央处理单元和第二中央处理单元可位于刀片式服务器的同一刀片处。优选地, 通过包括第一互连的数据链路和第二互连的数据链路的CPU互连,中央处理单元和第二中 央处理单元互相可访问。中央处理单元和第二中央处理单元可位于刀片式服务器的不同的刀片处。优选 地,网络接口控制器被配置为,如果在中央处理单元处形成的中间数据单元的目的地网络 地址是属于在第二中央处理单元处支持的进程的网络地址,使封装中间数据单元的互连数 据分组不经由媒体接口、通过CPU互连被发送给第二网络接口控制器。优选地,在外围数据总线处支持媒体接口,并且刀片式服务器的刀片被配置为通 过外围数据总线互相通信。优选地,数据处理系统在刀片式服务器的机架处进一步包括交换机,该交换机被 配置为在刀片式服务器的刀片之间路由互连数据分组。相应地,该交换机被配置为,依靠在 外围数据总线上使用的数据协议的层次上的互连数据分组的成帧信息来路由互连数据分 组。相应地,该交换机被配置为,依靠在网络协议的层级上的中间数据单元的成帧信息路由 封装中间数据单元的互连数据分组。相应地,外围数据总线是PCIe,交换机是PCIe交换机。媒体接口可以是常规PCIe设备、SR-IOV PCIe设备和MR-IOV PCIe设备的其中之一。媒体接口可以是SR-IOV PCIe设 备,并且交换机是MR-IOV PCIe交换机。相应地,媒体接口和数据处理系统的每个网络接口控制器被配置为借助于一个或 更多个互连数据分组来交换控制数据。优选地,网络协议是以太网。根据本发明的第三方面,提供了一种通过网络从数据处理系统发送数据的方法, 该数据处理系统包括,在到网络的接口处的媒体接口、具有用于访问存储器的存储器管理 单元的中央处理单元和在中央处理单元和媒体接口之间连接的互连,该方法包括借助存 储器管理单元,位于中央处理单元处的网络接口控制器从存储器中的发送队列获取通过网 络发送的数据;在数据链路层上将网络协议的包含所获取的数据的数据分组至少部分地形 成帧;并根据在互连上使用的数据协议,将网络协议的数据分组封装在通过互连发送的数 据分组中,并将该数据分组通过互连发送给媒体接口 ;媒体接口接收经封装的数据分组,从 经封装的数据分组中提取网络协议的数据分组,在物理层处理网络协议的数据分组以便根 据网络协议完成数据分组的成帧,并将完全形成的网络协议的数据分组发送到网络上。根据本发明的第四方面,提供了一种在数据处理系统中通过网络接收数据的方 法,该数据处理系统包括,位于连接到网络的接口处的媒体接口、具有用于访问存储器的存 储器管理单元的中央处理单元和在中央处理单元和媒体接口之间连接的互连,该方法包 括媒体接口通过网络接收网络数据分组,并根据在互连上使用的数据协议,将接收的网络 数据分组封装在通过互连发送的数据分组中,并将该数据分组通过互连发送给位于中央处 理单元处的网络接口控制器;网络接口控制器接收经封装的数据分组,从经封装的数据 分组提取接收的网络数据分组;根据网络协议,在数据链路层至少部分地处理每个接收的 网络数据分组,以便提取携带在每个接收的网络数据分组中的数据;并且借助于存储器管 理单元,将提取的数据写入存储器中的接收队列。根据本发明的第五方面,提供了一种用于在数据处理系统处在中央处理单元间通 信数据的方法,数据处理系统具有借助于互连耦合在一起的第一中央处理单元和第二中央 处理单元,每个中央处理单元包括各自的网络接口控制器,可操作网络接口控制器来(a) 通过根据网络协议在数据链路层至少部分地形成用于通信的数据的帧,来形成中间数据单 元,和(b)根据网络协议在数据链路层至少部分地处理中间数据单元,以便提取携带在每 个中间数据单元中的通信的数据,该方法包括第一中央处理单元将通信的数据传递给它 的第一网络接口控制器;第一网络接口控制器通过在数据链路层根据网络协议至少部分地 形成通信的数据的帧,来形成包括通信数据的中间数据单元,将网络协议的中间数据单元 封装在通过互连发送的数据分组中,并通过互连将经封装的数据分组发送给第二网络接口 控制器;第二网络接口控制器接收经封装的数据分组,从经封装的数据分组提取中间数据 单元,在数据链路层根据网络协议至少部分地处理每个中间数据单元,以便提取携带在每 个中间数据单元中的数据,并将提取的数据传递给第二中央处理单元。根据本发明的第六方面,提供了一种数据处理系统的中央处理单元,该中央处理 单元包括处理核;链路模块,用于通过数据总线通信预定数据协议的数据分组;存储器管 理单元,可操作来从与中央处理单元耦合的存储器获取数据;以及网络接口控制器,被配置 为借助于存储器管理单元,获取通过网络发送的数据,在数据链路层将网络协议的数据分组形成帧,数据分组中包括所获取数据;并且将这些分组封装在预定数据协议的数据分组 中,并通过数据总线借助链路模块通信。优选地,网络接口控制器在网络协议的物理层不将数据分组形成帧。根据本发明的第七方面,提供了一种数据处理系统的中央处理单元,该中央处理 单元包括处理核;高速缓存;存储器管理单元,可操作来从与中央处理单元耦合的存储器 获取数据;和网络接口控制器,被配置为当使用时在与中央处理单元耦合的存储器中存储 至少一些自身的状态;其中处理核和网络接口控制器被配置为,借助于存储器管理单元访 问与中央处理单元耦合的存储器,并且高速缓存被配置为,高速缓存在与中央处理单元耦 合的存储器中存储的数据。相应地,网络接口控制器的状态包括转发表和地址转换表的其中之一或两者。根据本发明的第八方面,提供一种在数据处理系统中支持的并对于该数据处理系 统将自身表现为PCIe设备的电子设备,数据处理系统包括中央处理单元和PCIe数据总线, 外围设备包括两个组件位于中央处理单元处的核心组件,操作该核心组件以处理对电子 设备的I/O请求;以及核心组件通过PCIe数据总线可访问的外围组件;其中核心组件被配 置为响应于发送给外围组件的I/O请求。优选地,为核心组件分配定义其控制范围(control aperture)的硬件地址范围, 并且外围组件被配置为,提供指示包括核心组件控制范围的基地址的硬件地址的范围的基 地址寄存器,以便在核心组件的控制范围内处理发送给由基地址寄存器指示的硬件地址范 围的I/O请求。相应地,外围组件附加的是一个或更多个其他PCIe设备的组件,并且外围组件被 配置为,为每个其他PCIe设备提供附加的基地址寄存器,每个附加的基地址寄存器被配置 以便在其他PCIe设备各自的核心组件中处理发送给由该基地址寄存器指示的硬件地址范 围的I/O请求。优选地,外围组件被配置为,将其接收的中断配置请求转发给核心组件,以在该核 心组件中处理。优选地,外围组件进一步提供支持传统(legacy)寄存器组的传统基地址寄存器, 该外围组件被配置为,当读或写传统寄存器时,将该读或写映射给该传统寄存器以对核心 组件的控制范围进行读或写,以便在核心组件的控制范围处处理发送给传统寄存器组的传 统I/O请求。


现在将参考附图以示例的方式描述本发明,其中图1是借助外围总线与数据处理系统耦合的传统网络接口设备的示意图。图2是根据本发明配置的网络接口设备的示意图。图3是具有根据本发明配置的网络接口设备的数据处理系统的示意图。图4是根据互连以太网(Ethernet-over-Intercormect)数据协议配置的数据分 组的示意图。图5a和5b是具有根据本发明配置的网络接口设备的多处理器数据处理系统的示 意图。
图6是根据本发明的教导,具有分离结构的PCIe设备的示意图。图7是根据本发明配置的控制器单元的示意图。图8是根据本发明配置的媒体接口的示意图。图9是具有根据本发明配置的媒体接口和多个控制器单元的刀片式服务器的示意图。
具体实施例方式提出以下说明以使任何本领域的技术人员能够做出并使用该发明,并且在特殊应用的上下文中提供以下说明。对公开实施例的各种变型对于那些本领域技术人员来说将是 显而易见的。在此定义的总原则可应用于其他实施例和应用,而不脱离本发明的精神和范围。 因此,并不意在将本发明限制在所展示的实施例,而是被授予与在此公开的原则和特征一 致的最宽的范围。本发明涉及一种在数据处理系统中网络接口设备的新装置。根据本发明配置的网络接口设备和处理器如图2所示。处理器202是适合在诸如 服务器或个人计算机这样的数据处理系统中使用的中央处理单元(CPU)。处理器可包括在 单一集成电路封装中的一个或更多个处理核(这些核可以位于或者不位于同一模具(die) 上)。网络接口设备包括两个单元控制器单元203,位于处理器202中,并且具有用于处理 数据分组通过网络的发送和接收的控制逻辑;以及媒体接口单元206,位于物理网络链路 210中,并且被配置为为处理器提供到网络209的物理接口。处理器202通过互连208与媒 体接口单元206相耦合。处理器被配置为使控制器单元使用互连208。控制器单元203是由控制器单元和媒体接口单元形成的网络接口设备的控制器 电路。控制器单元处理发送和接收操作的逻辑方面,例如从主机存储器以及向主机存储器 读和写数据,根据在网络(例如以太网)上使用的协议,形成通过网络发送的数据分组;根 据一个或更多个服务质量算法,执行分组优先排序;并确定所接收的数据应当被路由到的 适当端点,并相应地路由该接收的数据。媒体接口单元在控制器单元的控制下,通过网络进 行数据的物理发送和接收。媒体接口单元包括被配置为在物理层通过网络介质210(可能是光纤或铜线链路)进行信号传送的电路207。这种电路典型地被提供为集成电路,并被称为PHY。PHY是 网络接口设备的形成链路层数据分组和网络上的物理层信令之间的接口的那部分。例如, 对于以太网网络接口设备,PHY根据IEEE 802. 3执行物理层信令传输。如传统的那样,在处理器202的集成电路处提供控制器单元203,在网络接口设备 处不提供。因此,处理器和控制器单元可以直接通信,因为这两者之间的数据通路不经过互 连或任何外围总线。这减少了处理器和控制器之间通信的延迟。进一步地,控制器单元可 受益于典型地用于中央处理单元结构中的高级处理技术,减少模尺寸(die size)和网络接 口设备的净功耗,潜在地使该电路可以以更高的时钟速度运行。更高的时钟速度具有减小 延迟并增加最大数据传输速率的优点。如果互连208是CPU互连或在处理器本地的数据总线,例如QuickPath互连 (QPI)^HyperTransport(HT)或PCI Express(PCIe)链接,这将是有益的。这使控制器单元能利用处理器的互连电路,而不需要处理器包括用于控制器单元和媒体接口之间的通信的 附加电路。并且,与诸如外围组件互连(PCI)这样的外围数据总线相比,CPU互连典型地提 供高带宽和低延迟。在该情况下,媒体接口 206将被配置为通过为其提供适当的串行/去 串行(SERDES)电路来支持通过CPU互连的通信。作为另选方式,互连208可以是外围数据总线或组合,或由可选I/O集线器205耦 合在一起的两个或多个链路。例如,控制器单元和媒体接口之间的数据传输可以通过诸如 HT这样的CPU互连被携带给处理器以及从处理器被带走,并且可在I/O集线器处得以转换, 以通过在其上支持媒体接口的、诸如PCIe这样的外围数据总线来传输。在典型的数据处理 系统中,将在支持处理器202的芯片集处提供I/O集线器。如果在外围数据总线处支持媒体接口,则处理器可被配置为包括必要的电路以使 其直接通过该数据总线通信。例如,如果在PCIe数据总线上提供媒体接口,可为处理器提 供可由控制器单元访问的并被配置为支持去往和来自处理器的PCIe通信的电路。图3展示了在数据处理系统中,根据本发明配置的网络接口设备的使用。图2的 处理器形成了数据处理器系统201的中央处理单元,数据处理系统201具有处理器借助存 储器总线211可访问的存储器204。数据处理系统支持被配置为在处理器202处执行并利 用由控制器单元203和媒体接口 206形成的网络接口设备(NIC)的软件。在此所谓的数据处理系统可以是任何类型的计算机,例如服务器、刀片、桌上机器 或者便携式设备。数据处理系统包括一个或更多个处理核(这些将被称为处理器,虽然每 个物理处理器实际上可支持多个核)以及存储器,处理器借助集成在处理器中的存储器控 制器可直接访问该存储器。典型的数据处理系统可通过适当的总线和互连来支持一个或更 多个网络接口设备、存储设备以及其他外围设备。数据处理系统可使得网络接口设备经由网络发送存储在存储器204中的数据。类 似地,一旦接收到数据,网络接口设备可在由数据处理系统建立的接收队列处将接收的数 据写入存储器204。为实现数据发送/接收,由控制器单元对数据处理系统的存储器执行读 /写操作,因此通过将控制器单元设置在处理器中可以实现显著的性能优势。特别地,网络 接口设备的控制器单元被配置为,使用处理器的存储器管理单元212,并通过处理器的存储 器总线211访问存储器204。这减少了与每次发送或接收操作相关的延迟。如图1所示,考虑由处理器103和存储器104通过外围总线106可访问的传统网络 接口设备102来处理的发送操作。为了通过网络发送数据,NIC典型地(a)从存储器104读 取描述符,该描述符标识存储器的存储传输数据的位置,(b)通过总线读取经识别的数据, 并(c)通过网络发送该数据。因此每个发送操作典型地包括两次存储器访问,总线的I/O 集线器处的存储器管理单元提供存储器地址转换。并且,每次存储器访问通过外围总线来 完成。相对照地,根据本发明配置的网络接口设备的控制器单元能够通过执行以下步骤 来进行发送操作(i)借助于处理器的高速存储器总线211从存储器读取标识符;(ii)通过同一高速存储器总线读取标识的数据(典型地被存储在发送队列处);(iii)通过互连208将该数据传递给媒体接口 206,并使该媒体接口通过网络发送 该数据。
控制器单元所需的任何存储器地址转换可由处理器的存储器管理单元提供,这一 般明显的比从I/O集线器请求存储器地址转换要更快些。以这种方式控制器单元可以借助 于对存储器管理单元的读取请求访问发送队列。通常,控制器单元可访问存储器处的用于 发送的数据、标识用于发送的数据的元数据和其他控制信息(例如卸载和高速缓存选项的 控制)。如果标识符和用于发送的数据可借助于对存储器管理单元的读取请求从CPU存储 器高速缓存中直接读取,从高速缓存中读取所引起的延迟非常低,这是更优选的。如果网络接口设备的控制器和媒体接口之间的数据传输通过高带宽、低延迟的 CPU互连发生,并且附加地扩展到由网络接口设备执行的接收操作,则本发明的优点甚至更 大。将网络接口设备控制器(控制器单元)设置在CPU处的一个特殊优点是在同一处 理器处支持的网络端点之间的存储器传输通过非常低延迟的数据通道发生。这种情况频繁 地出现在虚拟化的数据处理系统中,在该系统中通过诸如管理程序(hypervisor)这样的 特权方式域支持多个访客操作系统(guest operating system)。由于每个访客OS独立于 其他访客地运行,在一个访客OS处的应用可能不知道其想发送数据到的网络端点是否在 同一处理器处、同一服务器处的不同的处理器处、或可通过物理网络自身访问的远程服务 器上被支持。因此,在一个访客OS处的应用可能请求(由控制器单元和媒体接口形成的) 网络接口设备向实际上在同一处理器处被支持的另一个客户OS处的网络端点发送数据。 在这种情况下(假设数据处理系统不是根据VEPA协议配置的),控制器单元确定目的网络 端点是它管理的一个,并将该数据写入目标端点的接收缓冲器中。因此在同一处理器处支 持的端点间的网络传输不涉及媒体接口,并且可通过从主机存储器中的发送缓冲器读取并 写入在同一主机存储器中的接收缓冲器来实现。由于这种网络数据分组不经过媒体接口, 可以仅仅部分地形成这些数据分组。当然,在原理上将包括网络接口设备的PHY的媒体接口附加地集成在处理器处 (即完全集成网络接口设备和处理器)是可能的。然而,这具有一些缺点需要在CPU包装 处的附加管脚,本质上需要定义新的插座规范(socket specification);这将增加CPU所 需的功率以及在CPU处必须处理的热量;在PHY处处理的高速信号将把大量的附加电干扰 引入CPU ;并且,因为CPU在数据处理系统的低功率状态下关闭,在网络接口设备处处理远 程系统管理和LAN上唤醒(wake-on-LAN)非常困难。互连以太网(Ethernet-over-interconnect)通常,控制器单元203被配置为根据相关网络协议的链路层需求充分地形成网络 数据分组,媒体接口 207被配置为根据网络协议的物理层需求,将那些数据分组传送到网 络结构上。一些链路层需求可留给媒体接口,例如校验和的计算或其他通常在外围网络接 口设备处的专用硬件上执行的协议处理。为了将至少部分形成的网络数据分组(即分组可能被分段和/或具有不完 整的头部或者其它数据结构)从控制器单元传输给媒体接口,提议了一种协议来将 网络数据分组封装到在互连上使用的数据协议的分组中。将该协议称为互连以太网 (Ethernet-over-interconnect)或者Eol,因为在优选实施例中,网络协议是以太网。然 而,在可选的实施例中,由控制器单元和媒体接口形成的网络接口设备可支持通过除以太 网之外的网络结构的通信,在这种情况下,上述Eol协议将替代地定义那种其它协议的数据分组的封装。例如,由控制器单元和媒体接口形成的网络接口设备可以是无限带宽 (Infiniband)网络接口设备,具有被配置为形成无限带宽数据链路层数据分组的控制器单 元和被配置为根据无限带宽规范物理层需求发送信号的媒体接口。因此,在此使用的术语 “Eol ” 一般是指对网络数据分组在数据分组中的封装进行控制的协议,该数据分组适合于 在数据处理系统中通过互连在控制器单元和媒体接口之间传输。控制器单元和媒体接口被配置为,按照在它们之间延伸的互连上使用的数据协议 来传送数据分组,那些数据分组本身的有效载荷符合Eol协议。因此,通过互连发送的数据 分组将典型地具有如图4所示的嵌套结构。互连头部401对Eol头部402进行封装,Eol 头部402反过来封装在控制器单元处形成的网络数据分组403的至少一部分。如各协议所 需,这些头部可具有相应的尾部(footer)404。如前所述,优选地,由控制器单元203和媒体接口 207形成的网络接口设备是以太 网网络接口设备。因此,控制器单元被配置为,根据IEEE802. 3的链路层需求充分地形成以 太网分组,媒体接口被配置为,根据IEEE 802. 3的物理层需求将以太网数据分组传送到网 络结构上。以太网分组优选地将包括以太网头部,但不包括帧同步(framing)、前导和在媒 体接口处计算的CRC数据。依赖于它们相对的分组大小,在控制器单元处形成的网络数据分组可横跨(span) 一个或更多个互连数据分组400。Eol头部包括正确重组每个网络数据分组部分所需的信 息和目的地设备地址。在互连上的每个设备具有互连数据分组能被寻址到的设备地址。优 选地,Eol协议支持控制分组和数据通路分组。控制分组优选地可由它们的Eol头部标识, 使控制器单元能配置、控制和查询媒体接口。媒体接口被配置为用一个或更多个控制分组 来响应来自控制器单元的查询。数据分组的Eol头部可进一步包括由中间数据总线交换机或控制器单元使用的 附加信息。这种信息可包括VLAN信息、业务类型信息和数据分组优先级信息。该信息可从 经封装的网络数据分组(例如以太网)被映射。对于严格保持两个端点间数据分组顺序的互连数据协议,可省略Eol头部。在这 种情况下,媒体接口可被配置为,通过解析输入的互连数据分组得到包括在其中的网络数 据分组的开始和结束端点,来重组网络数据分组。在本发明的该实施例中,控制分组可被支 持为封装在网络数据分组中的协议,或被支持为封装在互连数据分组中的分离控制信道。由于Eol数据分组遵守在互连上使用数据协议,依赖于互连头部,不改变地执行 数据分组的路由。因此,从控制器单元发送至媒体接口或者从媒体接口发送至控制器单 元的数据分组在互连层级上(典型地通过使用物理设备地址)被寻址到目标设备。如果 数据必须经过多于一条的在控制器单元和媒体接口之间的链路,则耦合这两条链路的I/ 0集线器或互连交换机执行任何需要的地址转换,并且可(a)剥离来自初始链路的互连头 部并将它替换为根据下一链路的协议的互连头部,或(b)根据下一链路的协议封装互连 数据分组。例如,如果正初始地通过HyperTransport链路到I/O集线器、然后通过PCIe 总线从控制器单元向媒体接口发送以太网数据分组,则互连数据分组在(a)的情况下 将其HyperTransport头部替换为PCIe头部,或者在(b)的情况下增加PCIe头部,封装 HyperTransport 数据分组。重要地,因为控制器单元和媒体接口借助于Eol数据分组互相交换数据,数据链路层网络数据作为寻址(在互连头部中)到各个目标设备的互连数据分组,在控制器单元 和媒体接口之间被传输。例如,为了通过网络执行发送操作,控制器单元将形成网络数据分 组,并使该网络数据分组被封装,并在一个或更多个互连数据分组中被发送给媒体接口。因 此,控制器单元能通过根据Eol协议封装数据并将其发送到互连上来将数据推送(push)给 媒体接口。这与传统的在外围数据总线处支持的网络接口设备形成了对比,传统的网络接 口设备通过从在主机存储器中的一个或更多个地址请求用于发送的数据来执行发送操作。 换句话说,传统的网络接口设备必须从主机存储器获取其发送操作所需的所有数据,这比 较慢,因为必须先通过外围数据总线告知网络接口设备哪些存储器地址含有用于发送的数 据。使用Eol使能了处理器和媒体接口之间对称的数据传输当处理器有数据要通过 网络发送时,它使控制器单元将该数据推送给媒体接口 ;当媒体接口通过网络接收数据时, 媒体接口将该数据推送给控制器单元。并且,在处理器处提供控制器单元和在互连上使用Eol协议,使在多处理器数据 处理系统中的处理器能够借助于由控制器单元支持的网络协议(优选的以太网协议)在 CPU层级上逻辑地通信。然而,控制器单元间的通信并不采用媒体接口提供到其的接口 的网络结构的速度,而是采用处理器间互连的速度。这种数据处理系统的处理器形成了 逻辑上由网络协议互连的、物理上由相对(与典型的以太网链路相比较)高速的互连所 互连的处理器网。优选地,这些互连是提供高带宽和低延迟链路的CPU互连,例如QPI、 HyperTransport或者PCIe。注意,根据网络协议处理的处理器间通信不需要涉及媒体接 口,优选地,该通信在通信的处理器的控制器单元间或者在两个处理器都能访问的单个控 制器单元内直接进行。如果单一的媒体接口被配置为支持多处理器系统的多个控制器单元的通信,也是 有益的。对于PCIe互连,这可通过使用PCIe媒体接口来实现。这使得媒体接口提供到其 的接口的一个或更多个物理网络端口可被具有根据本发明配置的控制器单元的多个处理 器所共享。在具有PCIe多根能力的系统中,媒体接口优选地是PCIe MR-IOV设备。数据处 理系统(多处理器或相反)可支持多个媒体接口,每一个媒体接口可提供到不同网络的访 问——控制器单元简单地寻址任何一个适合给定通信操作的媒体接口。在数据处理系统内多个控制器单元之间共享媒体接口的优点包括,由于需要更少 的PHY,减少了功率需求,以及需要更少的数据处理系统的网络交换端口。注意,所有的Eol数据分组的路由在互连层级处被执行。每个控制器单元被配置 为促使形成具有适当互连头部的互连数据分组,从而每个网络数据分组到达它的目标端 点。例如,将发送给在多处理器系统的另一个处理器处的控制器单元的网络数据分组进行 封装,并通过互连(该互连可包括一个或更多个链接,例如HyperTransport和PCIe链接) 路由给另一个处理器的控制器单元。对发送给通过网络可访问的远程数据处理系统的网络 数据分组进行封装,并通过互连路由给适当的媒体接口以发送到网络上。优选地,在处理器处提供被配置为通过互连执行数据分组的物理信令发送的 SERDES电路。对控制器单元和处理器进行配置以便使控制器单元能借助于SERDES电路通 过互连传送数据。优选地,控制器单元维护一个或更多个查找表,查找表包括网络地址和互 连上设备地址之间的对应关系。例如,将要发送到媒体接口提供到其的接口的网络上的网络地址的数据分组发送给在互连上媒体接口的设备地址;将要发送到与在另一个处理器上 执行的应用的端点相对应的网络地址的数据分组发送给那个处理器的控制器单元的设备 地址。设备地址可以在或可以不在与数据处理系统的物理存储器相同的地址空间中。在图5a和5b中展现了根据本发明原理配置的以太网网络接口设备的两种实现。在图5a中,数据处理器系统501包括两个处理器502、503,它们中的每一个具有控 制器单元504、505。媒体接口 508借助于可以是HyperTransport链路的CPU互连结构509 与每个处理器相耦合。为了在处理器502处执行的第一应用将数据发送给在处理器503处执行的第二应 用,第一应用通过(由控制器单元和媒体接口形成的)网络接口设备向第二应用的端点作 出发送操作的请求。这典型地借助于从第一应用到网络接口设备的设备驱动的软件调用来 实现。控制器单元504形成发送给第二应用的端点的以太网数据分组,并使该以太网数据 分组被封装在一个或更多个寻址的互连数据分组中,以便使该互连数据分组被路由给处理 器503的控制器单元505。互连数据分组在处理器间直接路由,不经过媒体接口。如果需 要,控制器单元504被配置为为以太网数据分组形成Eol头部。在处理器503的去串行电 路处,提取以太网数据分组,并且控制器单元将该数据写入与该数据分组的目的地以太网 地址对应的接收队列。因此,在处理器502处执行的第一应用可以仅仅以就像第二应用通过网络510在 远程数据处理系统的处理器处执行一样的方式,来向在处理器503处执行的第二应用发送 数据。然而,因为通过处理器间的CPU互连来携带以太网数据分组,数据使用低延迟、高带 宽数据通道。注意,图5a仅是示意性的,数据处理器系统501的各组件间的链接可采用任 何适当的配置。在图5b中,数据处理系统511包括两个处理器512、513,它们的每一个具有控制器 单元514、515。该实现与在图5a中所示的那个类似,但是在该例中,媒体接口 518是在外围 数据总线517上支持的外围设备,外围数据总线可以是PCIe数据总线。因此,需要I/O集线 器或交换机516来提供外围数据总线和每个处理器之间的接口。在处理器512和514之间 的通信优选地仅以如上图5a所述的相同方式通过互连结构519 (例如HyperTransport)直 接实现。然而,在处理器512和媒体接口 518之间的互连由两条链路组成在处理器和I/O 集线器之间的CPU数据总线520 (它可以是诸如HyperTransport这样的CPU互连,或者是 诸如处理器512的前侧总线这样的其他类型的数据总线),和在I/O集线器和媒体接口之间 的诸如PCIe这样的外围数据总线。目的地为媒体接口的互连数据分组被发送到CPU数据 总线上,然后在I/O集线器处被转换为适合于在PCIe总线上传输的数据分组。优选地,CPU 数据总线是CPU互连,并且最优地,I/O集线器可由处理器通过该CPU互连访问。参考图2如上所述,包括与在外围数据总线处支持的媒体接口一起形成部分网络 接口设备的控制器单元的处理器自身可包括适当的SERDES电路,以使该处理器能直接从 外围数据总线和向外围数据总线读和写。在外围数据总线是PCIe数据总线的情况下,控制 器单元自身可以是通过PCIe数据总线可寻址的PCIe设备。如果处理器/控制器单元可通 过外围数据总线直接通信,则不需要I/O集线器,因为为了与媒体接口通信,控制器单元可 以直接将封装了以太网数据的适当数据分组发送到外围数据总线上。包括被配置为与媒体 接口和一个或更多个包括控制器单元的处理器通信的控制器单元的处理器,因此能够依赖于数据分组的目的地,将以太网数据分组封装在适合于通过CPU互连或外围数据总线发送 的数据分组中。图5b仅是示意性的每个处理器可具有它自己的I/O集线器,并且在数据处理系 统511的各组件间的链路可以采取任何适当的配置。注意,由于在同一数据处理系统处的控制器单元(例如在多处理器计算机系统处 的处理器或刀片式服务器的刀片)间的数据传输不经过媒体接口,封装后的网络数据分组 在到达目的地控制器单元前(校验和和其他卸载可在媒体接口处完成)可以不根据链路层 网络协议被完全地形成。分离PCIe设备现在将描述一种新颖的分离PCIe设备结构,它是用于根据本发明配置的PCIe网 络接口设备的优选结构。如果由控制器单元和媒体接口形成的网络接口设备对于数据处理系统(和在其 上运行的软件)来说是常规的PCIe设备,这种情况是有益的。这对维护与现有软件和硬件 的兼容性有帮助。在本发明的一些实施例中,在处理器处没有提供PCIe主机电路,因此没 有为控制器单元提供任何PCIe逻辑。为了给这种数据处理系统提供PCIe网络接口设备, 向媒体接口提供PCIe逻辑。图6显示了包括PCIe设备601 (它可以不是网络接口设备)的数据处理系统600, PCIe设备601具有两个部分在处理器603处的控制器单元602和在PCIe数据总线605上 支持的接口单元604。PCIe数据总线典型地可由处理器借助于I/O集线器608访问。控制 器单元602包括PCIe设备的至少部分逻辑功能组,并被配置为借助于处理器的适当的功能 (例如存储器管理单元)访问存储器606。优选地,控制器单元也能够访问处理器的高速缓 存607,高速缓存607被配置为存储在存储器606中保存的某些数据的副本。处理器的高速 缓存可以被认为在它的存储器管理单元(处理器的提供到主机存储器的访问的部分)处。 在处理器处提供该设备的那些功能是有益的,该设备得益于对主机存储器606和处理器高 速缓存607的低延迟访问。就接口单元604物理上在PCIe数据总线处被支持的意义来说,接口单元604是 PCIe设备,它能够借助于它的PCIe主机逻辑通过PCIe数据总线通信。控制器单元602被 配置为支持一个或更多个控制范围(controlaperture)。控制范围是一个设备负责的物理 地址范围,换句话说,在数据处理系统处运行的软件可以通过从和向在设备的控制范围内 的地址读和写来与该设备交互。接口单元604被配置为支持一个或更多个基地址寄存器(BaseAddress Register, BAR),基地址寄存器根据PCI Express规范来表示PCIe设备的控制范围。称为 BAR的基地址寄存器标识控制范围的开始地址。在接口单元处支持的BAR中的至少一个 的基地址被配置为位于控制器单元的控制范围内,使得在数据处理系统处运行的软件读或 写由接口单元的BAR表示的地址范围时,那些读或写实际上被发送给控制器单元的控制范 围。换句话说,由接口单元表示的(被分配给它的)物理地址范围的至少一部分实际上被 分配给控制器单元。由于在数据处理系统处运行的主机软件从PCIe设备的BAR获取该设 备的控制范围的地址范围,该主机软件将使用分配给该控制器单元的地址范围来与由控制 器单元和接口单元两者形成的PCIe设备交互。
典型地,支持PCIe设备的数据处理系统的基本输入/输出系统(BIOS)分配将被 系统中的每个设备用作控制范围的地址范围,并且当需要使用它们时对每个设备进行编 程。这些操作可在数据处理系统启动时进行。控制器单元优选地被配置为处理PCIe接口单元的中断。由于主机软件程序在外 围PCIe设备(在该例中接口单元)处进行设备中断的配置,因此这可以通过配置接口单元 向控制器单元转发对它的中断寄存器的更新来实现,从而使控制器单元能直接在处理器自 身处引发中断。可以做出进一步的规定来允许上述分离PCIe设备支持传统的I/0BAR。传统的I/ 0 BAR允许PCIe设备能向后兼容指向传统设备地址范围的传统读和写。这可以通过将接口 单元配置为提供在控制器单元的控制范围上指向传统I/O BAR的间接的读和写来处理。传统I/O BAR的寄存器被设置为接收对网络接口设备的传统寄存器的读和写,并 将那些读和写映射为对控制单元的控制范围的读和写。对接口单元的传统寄存器的读和写 到对控制器单元的控制范围的读和写的映射可以是直接对应关系、间接映射或其他映射。 可以有分开的每次读和写的间接性,或者对传统I/O BAR寄存器的每次读和写的事实上的 多次间接性。因此,在此所述的对接口单元的传统寄存器的传统读和写变成通过PCIe总线(以 及可能附加的达到处理器的互连链路)对控制器单元的存储器读或写。这避免了在接口单 元处对被配置为处理传统I/O读的逻辑的需要,使控制器单元能维护对PCIe设备的读和写 控制。接口单元可以是支持一个或更多个物理功能(physical function, PF)和虚拟功 能(virtual function, VF)的单根输入/输出虚拟化(SR-IOV)或多根输入/输出虚拟化 (MR-IOV) PCIe 设备。对于多处理器数据处理系统或刀片式服务器中特定类型的分离PCIe设备,接口 单元可被配置为支持多个控制器单元,其中每个控制器单元位于不同的处理器处。接口单 元604因此被配置为为每个控制器单元支持一个或更多个BAR,特定控制器单元的至少一 个BAR的基地址被配置为位于那个控制器单元的控制范围内。类似地,接口单元可被配置 为以上述方式为多个控制器单元处理传统的I/O BAR。注意,接口单元优选地进一步支持设备的配置访问、VPD(VitalProduCt Data,重要产品数据)和引导ROM (boot ROM)。当应用于根据本发明配置的PCIe网络接口设备时,接口单元604是媒体接口,控制器单元602是控制器单元。在本发明的优选实施例中,参考图2-9在此描述的控制器单 元和媒体接口是具有分离PCIe设备结构的PCIe设备。在处理器处控制器单元的实现在图7中展示了在处理器处控制器单元的优选实现的示意图。如在图2和3中所 述那样,控制器单元702被配置为处理发送和接收操作的逻辑方面,是由控制器单元和媒 体接口形成的网络接口设备的控制器,媒体接口提供到网络的物理访问。控制器单元702 在处理器701处得以支持,处理器701是数据处理系统的中央处理单元(CPU),因此能够访 问主机存储器703和借助于其可访问该数据处理器系统的设备(例如在外围数据总线上的 媒体接口)的至少一个数据总线709 (例如CPU互连)。存储器703可由处理器通过专用数据总线708访问。其他存储器可由处理器通过数据总线709访问。数据总线708和709可 以是同一条数据总线。注意,处理器701可包括共享单个控制器单元702的多个处理核。控制器单元进一步包括封装电路711,封装电路711被配置为执行(a)将在控制器 单元处形成的网络数据分组封装在适合于通过数据总线709发送的数据分组中,和(b)从 通过数据总线709接收的数据分组中提取网络数据分组。网络数据分组的这种封装和提取 根据参考图4所示的Eol协议得以执行。处理器701优选地包括至少一个高速缓存705,高速缓存705被配置为存储保持在 包括703的主机存储器中的数据的副本。处理器的高速缓存705可被认为位于存储器管理 单元704。高速缓存为处理器提供在它的运行期间对所需数据的低延迟访问。最优地,高速 缓存是由CPU的所有处理核共享的片上高速缓存。将处理器配置为使控制器单元能够访问 高速缓存705以便控制器单元甚至能够比通过存储器总线708更低延迟地访问数据,这是 有益的。由于处理器支持软件应用线程以及处理形成数据分组所依据的网络协议的网络 栈,CPU通常执行被形成为用于通过网络传输的网络数据分组的数据和协议处理中的至少 一些。这种软件网络栈典型地在将部分形成的数据分组传递给网络接口设备以完成较低层 (例如以太网)上的网络数据分组和硬件卸载(例如TCP校验和卸载)之前,在OSI模型的 较高层执行数据分组(例如TCP/IP数据分组)的初始形成。由于CPU的高速缓存典型地 包括处理器频繁或最近使用的数据,因此有好的可能性控制器单元完成给定网络数据分 组所需的至少一些数据将在该高速缓存中找到。结果,如果控制器单元702被配置为,当从主机存储器请求数据时,为该数据首先 访问高速缓存,如果在高速缓存处未找到该数据,则随后从主机存储器中读取该数据,这是 有益的。特别地,如果控制器单元被配置为为保存在主机存储器中的发送队列处的分组数 据而首先访问高速缓存,这是优选的。控制器单元优选地被配置为,如果该控制器单元所需 的分组数据未在高速缓存处找到,则当该分组数据从主机存储器中被读取时不被复制入高 速缓存605。因为一旦发送数据被发送,控制器单元或处理器通常不再需要它,这避免了用 后续不太可能需要的数据污染高速缓存。控制器单元优选地被配置为,如果在高速缓存处 找到该控制器单元所需的分组数据,则使该高速缓存中该分组数据所驻存的高速缓存线无 效。由于控制器单元或处理器不太可能后续需要该分组数据,因此这释放了高速缓存中的 空间,并避免了将分组数据写回主机存储器,节约了总线和存储器带宽。最优地,是否无效 高速缓存线的决定在软件的控制下作出。类似地,一旦通过网络接收到数据分组,典型地由网络接口设备在将分组中的数 据写入主机存储器之前,在较低网络协议层上处理接收的数据分组,以使在处理器处执行 的软件网络栈能完成所接收数据分组的协议处理。因此,软件网络栈的一个或更多个进程 在网络栈执行该数据分组的协议处理时,可能访问所接收数据分组的数据。因此,如果控制 器单元被配置为一旦向主机存储器写入接收的分组数据,就将该数据的至少一些写入随后 在处理器处执行的进程(比在主机存储器中)能更高效地访问的高速缓存中,这是有益的。 控制器单元可被配置为仅向高速缓存写入所接收数据分组的所选部分,该选择优选地由该 数据分组所根据的协议来确定。所接收数据分组的所选部分可以是该数据分组的头部。控 制器单元可以被配置为,对于预定网络协议组的数据分组,不将这些数据分组的任何部分写入高速缓存。最优地,控制器单元由管理软件根据在数据处理系统上运行的软件进程的 配置来配置。特别地与控制数据相关,控制器单元优选地被配置为,当进行控制数据的读取时 首先访问高速缓存,并且当向主机存储器进行控制数据的写时将控制数据写入高速缓存。 控制数据可包括描述符、通知事件和来自地址转换表和转发表的数据。转发表典型地包括 确定网络接口设备如何处理(a)接收的网络数据分组(即应当将所接收数据分组的数据传 递给哪个(哪些)接收队列,和/或应当将该数据分组发送给哪些其他网络设备)和(b) 用于发送的网络数据分组(例如向数据分组写入哪些目的地地址信息,以使该数据分组被 路由至适当的端点)的信息。优选地,控制器单元所需的转发表706和地址转换表707存 储在主机存储器703处,而不是控制器单元的专用存储器处。这使控制器单元能在处理器 模上占用较少的空间,并且由于控制器单元能访问到主机存储器和高速缓存的处理器的低 延迟连接,因此不会对网络接口设备的性能产生负面影响。一般来说,控制器单元在主机存 储器中存储它的状态。作为另一种方式,可以为控制器单元提供它自己的专用的等级1高 速缓存710,在高速缓存710中存储由控制器单元处理的数据流的控制数据。对于在外围数据总线处支持的传统网络接口设备,数据处理系统的物理和虚拟域 之间的存储器地址转换通常在网络接口设备和主机存储器之间的数据通路上的I/O存储 器管理单元(IOMMU)处执行。由于控制器单元位于处理器处而不在外围设备处,IOMMU(如 果存在的话)不在控制器单元和主机存储器之间。因此,优选地,控制器单元被配置为将处 理器的存储器管理单元(MMU) 704用于地址转换。存储器管理单元被配置为为控制器单元 发出的从主机存储器和向主机存储器的读和写进行存储器地址转换。为控制器单元提供对 MMU的访问,使得控制器单元能够处理虚拟存储器地址。这意味着可信软件域(例如内核或 系统管理程序)和不可信软件域(例如访客操作系统或应用)都可向控制器单元标识主机 存储器缓冲(例如发送队列),因为控制器单元既能够使用物理的又能够使用虚拟的存储 器地址。并且,为控制器单元提供对处理器的MMU的访问,避免了需要控制器单元管理分离 的I/O地址空间,并简化了在虚拟化系统和利用用户级联网的系统中不可信软件域的直接 设备访问的实现。为了使MMU能代表控制器单元进行地址转换,控制器单元维护由控制器单元表示 的物理网络接口设备的每个虚拟网络接口设备(VNIC)与为其分配了 VNIC的各个虚拟化域 的地址空间之间的对应关系。这使控制器单元能够向MMU标识存储器读或写与哪个虚拟地 址空间相关。为了避免设备在主机存储器的发送队列中改写(overwrite)数据,数据处理系统 通常被配置为,当用于发送的数据已被写入存储器的页面时锁定(Pin)该页面。这预留了 存储器页面,并防止了页面被重分配。这种锁定对由根据本发明配置的网络接口设备执行 的发送操作来说不是必要的。优选地替代地,不执行存储器锁定,并且如果地址转换失败 (例如因为已向存储设备的页面文件写入存储器页面,并且该页面被重分配),MMU被配置 为产生一个错误,来指示在主机存储器中不存在虚拟地址。因此,转换失败被处理器作为页 面故障而被处理。这允许通过以下方式在数据处理系统中处理转换过程中的失败。当控制器单元对 在主机存储器处的发送队列数据发出由MMU转换的读,并且该转换失败时,MMU在控制器单元处为所述读相关的存储器页面产生页面故障错误。在响应中,控制器单元暂停与所述读 相关的发送操作关联的发送队列,并向软件实体(典型地是网络接口设备的设备驱动)发 送通知。软件使该页面在存储器中可获得(这典型地由数据处理系统的特权模式软件实体 (例如部分内核或系统管理软件)来处理)。一旦使页面可获得,处理发送操作的软件解除 暂停发送队列,并使控制器单元重新尝试发出读,并继续在发送队列处处理数据。通过减少需要锁定的存储器量,管理主机存储器的特权软件(例如内核或系统管 理软件)具有更多自由以将存储器外的页面写回数据存储(例如在非易失性存储设备处的 页面文件)中。上述机制不会给MMU引入任何附加的复杂度,并且由于不需要锁定操作,减 少了复杂度和发送通路上的CPU开销。通过在在数据目标地址转换失败的情况下能将在控制器单元处接收的数据写入 到的主机存储器处维护经锁定的接收缓冲池,也可以在接收操作期间最小化在主机存储器 处的缓冲锁定。这消除了锁定主机存储器处接收队列的页面的需要。优选地,当控制器单 元向主机存储器中的接收队列发布所接收分组数据的写并且对该接收队列的目的地址转 换在MMU处失败时,接收的分组数据被写入主机存储器中的被预留作为不能立即被写入适 当的接收队列的所接收数据分组的回退(fall back)的另选缓冲中。这是重要的,因为不 像分组发送的情况,不可能暂停接收队列,直到地址转换成功——任何时候都可能接收到 接收队列的新数据分组。在将接收的数据分组写入另选缓冲后,控制器单元继续处理接收 的数据分组,为了将接收的数据复制到它各自的接收队列中而适当时发布写请求。当地址转换失败时,由控制器单元通知在数据处理系统中处理接收操作的软件, 并通过重新分配由各个接收队列使用的一个或更多个存储器页面来作出响应。为了处理没 有被写入它的接收队列的所接收数据分组,该软件还访问另选缓冲。对于数据处理系统的 每个软件域可能有一组经锁定的另选缓冲。媒体接口的实现参考如上所述的图2和3,媒体接口为控制器单元提供到网络的物理接口。媒体接 口可以在诸如PCIe这样的外围数据总线上得以支持,或者可以借助于CPU互连直接与包括 控制器单元的处理器相耦合。由于在控制器单元和媒体接口之间的互连上采用了基于分组 的路由,单一的媒体接口优选地可操作来支持多个控制器单元的发送和接收操作。图8展示了根据本发明配置的媒体接口的示意图。媒体接口 801包括被配置为 通过网络803执行数据分组的物理传送的PHY 802,和被配置为使媒体接口能够通过数据 总线809传送网络数据分组的封装电路805。封装电路805被配置为执行(a)将通过网络 接收的网络数据分组封装在适合于通过数据总线809发送给控制器单元的数据分组中,和 (b)从通过数据总线809从控制器单元接收的数据分组中提取用于通过网络发送的网络数 据分组。根据参考图4的上述Eol协议进行网络数据分组的这种封装和提取。如果媒体接口包括用于网络接口设备的管理控制器806,这是有益的。管理控制 器使网络接口设备能够借助于通过网络接收的命令被远程地管理。通过在媒体接口处设 置管理控制器,管理控制器可以在处理器被断电的数据处理系统的低功率状态期间保持有 电。管理控制器可以被配置为与在父亲数据处理系统的基板处的基板管理控制器(BMC)通 信。这使得数据处理系统,如现有技术中众所周知的那样,能够被通过网络接收的命令远程 管理。在具有共享媒体接口的多个控制器单元的系统中,管理控制器806被配置为代表所有控制器单元处理管理命令。对于校验和的计算来说,通常将其卸载到它们能在诸如状态机这样的专用电路中 高效地被执行的外围网络接口设备。媒体接口优选地包括被配置为执行适合于在网络上使 用的网络协议的校验和计算的电路807,例如,对于以太网网络,校验和可以是32位的CRC 校验和。通常,媒体接口执行特定于在网络上使用的网络协议(例如以太网)的功能。大 多数其它功能在控制器单元处得以完成。然而,特定的逻辑操作在靠近物理网络端口 804 的媒体接口处得以完成,这通常是有益的。为了给出一些示例,对于以下协议,控制器单元 和媒体接口之间的功能组划分是优选地i.诸如IEEE 802. IQbb (每优先级暂停,Per-Priority Pause)这样的链路层流量 控制优选地在媒体接口处进行;ii. IEEE 802. IQaz (增强型传输选择,Enhanced Transmission Selection)优选 地在控制器单元处完成;iii. IEEE 802. IQau(拥塞通知,Congestion Notification)优选地既在控制器单 元又在媒体接口处完成。优选地,其他功能和任何从在父亲数据处理系统上运行的软件网络栈卸载的协议 处理在控制器单元处进行。这包括a.用于协议(例如IP、TCP、UDP、iSCSI和通过以太网的光纤信道(Fibre Channel over Ethernet, FCoE))的校验和卸载b.为iWARP结构处理的TCP卸载c. iSCSI、FCoE 卸载d. TCP 分段卸载(TCP segmentation offloading, TS0),大接收卸载(large receive offload, LR0)和接收侧调节(receive side scaling, RSS)e. NIC 虚拟化在一些实施例中,媒体接口不包括PHY,该PHY替代地可由媒体接口通过接口访问 并控制。例如,媒体接口可与支持包括控制器单元的处理器的芯片集(例如,在1/0集线器 处)集成在一起,PHY可位于数据处理系统的物理网络端口处。这种媒体接口如在此所述那 样运行,但在与媒体接口集成电路本身分离的PHY处的媒体接口的控制下执行物理传送。对刀片式服务器的应用根据本发明配置的分离网络接口设备,在刀片式服务器中有特殊的应用。刀片式 服务器是具有多个刀片的模块化计算机系统,每个刀片支持一个或更多个处理器、存储器 和用于与其他刀片和机架通信的1/0接口。通常,每个刀片的1/0接口由网络控制器利用 诸如IEEE 10GBASE-KR接口这样的高速串行数据接口在物理层提供。机架典型地支持交换 机以连接刀片和为刀片式服务器的刀片提供到更宽网络的访问。作为另一种方式,每个刀 片的1/0接口可由诸如PCIe这样的外围数据总线来提供,并且刀片共享位于机架的一个或 更多个网络控制器。在这种刀片式服务器中,网络控制器典型地是PCIe MR-IOV设备。每个刀片本身是一个数据处理系统并且能支持一个或更多个操作系统——通常 刀片具有虚拟化结构,在该结构中有多个由特权模式软件域(例如系统管理软件)支持的 访客操作系统(例如虚拟机)。因此,一个单独的刀片式服务器可以支持多个操作系统,每个操作系统反过来可以支持希望与在刀片中的其他处理器处、在其他刀片上的处理器处或 者在通过网络可访问的其他服务器或刀片式服务器上执行的其他应用进行通信的多个应用。图9展示了根据本发明配置的刀片式服务器的示意图。刀片式服务器900包括多 个刀片901、914,每个刀片具有包括控制器单元702的一个或更多个处理器701。刀片还包 括处理器可访问的一个或更多个存储器703。刀片在包括媒体接口 801的机架902处得以 支持,媒体接口 801可操作来提供到网络913的访问。媒体接口被配置为为刀片式服务器 的多个刀片提供到网络913的访问。换句话说,在该服务器的任何刀片上的任何处理器中 的控制器单元可被配置为借助于媒体接口来通信。机架902可以包括多个媒体接口,每个 媒体接口可例如提供到不同网络或子网的访问。多处理器刀片的处理器通过诸如HyperTransport或QPI这样的CPU互连相连接。 这使得控制器单元能借助于高速CPU互连直接地互相通信,如参考图5a所述那样。媒体接 口在还形成了刀片式服务器的刀片间的互连的、诸如PCIe这样的刀片式服务器的数据总 线916处得以支持。每个刀片可包括一个或更多个I/O集线器909,以使每个处理器能通过 数据总线通信。最优地,每个处理器支持到数据总线的一个接口,在该情况下不需要I/O集 线器909。通过向媒体接口提供标识每个控制器单元支持的网络端点组的一个或更多个转 发表,媒体接口可被配置为在刀片式服务器的不同刀片上的网络端点间进行数据的内部路 由。例如,如果数据总线是PCIe数据总线,媒体接口可以是被配置为支持多个PCIe根(典 型地每个刀片一个)的MR-IOV PCIe设备。一旦通过PCIe总线从在第一刀片处的控制器 单元接收到在第二刀片的处理器处支持的网络端点的Eol封装网络数据分组,媒体接口将 使用转发表确定该网络节点在第二刀片的控制单元处得以支持,然后通过PCIe数据总线 将该网络数据分组路由给那个控制器单元。以这种方式,媒体接口可在刀片式服务器的刀 片之间以及网络和刀片之间的网络协议层(例如链路层以太网)上处理数据分组的路由。然而,为了进行刀片式服务器的刀片间数据的内部路由,如果在机架处提供数据 总线交换机911而不是让媒体接口进行刀片间路由,这是优选的。这意味着刀片式服务器 的刀片间的内部数据传输并不一定要经过媒体接口到数据总线的连接,如果媒体接口被配 置为进行所有的路由,这是一个特殊的瓶颈。优选地,数据总线是PCIe数据总线,交换机 是PCIe交换机。与在单独的PCIe设备(例如媒体接口)处或在网络913上的边缘交换机 处的数据处理系统外部(例如如果刀片式服务器根据虚拟以太网端口聚合协议(Virtual Ethernet Port Aggregator Protocol)或VEPA被配置)执行交换相比,PCIe交换机能够 提供非常大的带宽。在第一实施例中,数据总线交换机911被配置为,依赖于在数据总线分组的头部 的地址信息(即在数据总线上使用的数据协议的层级上)在数据总线916上进行数据分组 的路由。由于该路由由交换机在数据总线协议的层级上进行,内部数据传输的延迟得以改 善。然而,这种设置需要每个控制器单元702的每个转发表706包括刀片式服务器的每个 控制器单元的设备地址和由每个控制器单元支持的网络端点的地址之间的对应关系。这使 得每个控制器单元能够确定是否特定的网络端点在刀片式服务器处被支持,能够将通过数 据总线发送的每个数据分组相应地寻址。
例如,假设在第一刀片的处理器处的应用有数据要发送给在第二刀片的处理器处 的应用,刀片和媒体接口由PCIe数据总线互连并提供到以太网网络的接口。第一处理器的 控制器单元形成发送给在第二刀片的处理器处的应用的端点的以太网数据分组。在形成封 装以太网数据分组的一个或更多个Eol PCIe数据分组时,控制器单元将在它的转发表中查 找在第二刀片的处理器处的控制器单元的设备地址,并将该设备地址插入PCIe数据分组 的路由信息中。一旦到达PCIe交换机,该交换机识别目标设备(在第二刀片的处理器处的 控制器单元)并将该PCIe数据分组相应地路由。注意,如果网络端点未在刀片式服务器处 得以支持(即它是远程网络地址),控制器单元将使用媒体接口的设备地址。在优选的第二实施例中,数据总线交换机911被配置为在网络协议层级(例如链 路层以太网)上在刀片式服务器的刀片间处理数据分组的路由。因此,数据总线交换机被 配置为解析封装在该交换机处接收的EolPCIe数据分组中的网络数据分组的至少一些头 部信息。只需要该交换机支持转发表,该转发表包括在刀片式服务器的每个控制单元的设 备地址和由每个控制器单元支持的网络端点的地址之间的对应关系。如果在刀片内将在控 制器单元间路由数据而不经过交换机,每个控制器单元仅需要支持用于在它的刀片处支持 的网络端点的转发表。这减小了每个控制器单元所需的转发表大小,并且简化了刀片式服 务器的控制平面。例如,假设在第一刀片的处理器处的应用有数据要发送给在第二刀片的处理器处 的应用,刀片和媒体接口由PCIe数据总线互连,并且提供到以太网网络的接口。第一处理 器的控制器单元形成发送给在第二刀片的处理器处的应用的端点的以太网数据分组。在形 成封装以太网数据分组的一个或更多个Eol PCIe数据分组时,控制器单元识别在第一刀片 处不支持数据分组将被发送至的以太网地址,结果,它将把PCIe交换机的设备地址插入到 PCIe数据分组的路由信息中。一旦到达PCIe交换机,该交换机解析该PCIe数据分组,并从 包括在其中的网络数据分组中识别目标以太网地址。该交换机然后在它的转发表中查找相 应于该目标以太网地址(即在支持该以太网地址的第二刀片的处理器处的控制器单元设 备)的设备地址,并在将该数据分组推送到适当的PCIe数据总线上前,相应地更新该PCIe 数据分组头部。第二实施例也改善了多播流量的性能,因为这种流量仅需要从控制器单元或媒体 接口传输给数据总线交换机一次交换机将把该多播流量发送到每个适当的端点上。在第 一实施例中,控制器单元必须分别将多播流量发送给在刀片式服务器中的每个接收者,因 为在交换机处的路由在数据总线层进行。如果媒体接口是PCIe设备,并且互连刀片的数据总线是PCIe数据总线,这是有益 的,因为与传统的刀片式服务器结构相比这普遍地减少了所需的PHY数量,从而降低了每 个刀片的功率需求。传统的刀片式服务器通常在每个刀片处具有到底板(backplane)的串 行I/O接口(PHY#1),每个I/O接口由PCIe总线(PHY#2)在该刀片处被支持。通过将PCIe 数据总线用作刀片式服务器的底板,不再需要PHY#1。最优地,媒体接口是支持在刀片式服务器处的每个控制器单元的通信的MR-IOV PCIe设备。换句话说,MR-IOV媒体接口支持用于刀片式服务器的每个刀片的至少一个物 理功能(physical function, PF)或虚拟功能(virtual function, VF)。如果为每个刀片 分配一个PF,并且为刀片的每个控制器单元分配一个属于那个刀片的PF的VF,这是最直接的。然而,正如对外围设备领域的技术人员而言将显而易见的那样,可使用其他设置。注意,交换机或网格拓扑可被用于刀片间的连接。在此描述的实际的刀片式服务器结构与虚拟以太网桥(VirtualEthernet Bridge, VEB)或虚拟以太网端口聚合(VEPA)协议兼容。在VEB的情况下,在刀片式服务器 的刀片处的网络端点间的数据传输如上所述那样运行。在VEPA的情况下,在端点(甚至是在同一处理器处支持的那些)之间的所有交换都在网络913的边缘交换机处进行。如果强 制采用VEPA协议,则控制器单元、数据总线交换机和媒体接口被配置为通过媒体接口将所 有网络数据分组传递给相关的边缘交换机。数据总线交换机可以形成或不形成与媒体接口相同的集成电路的一部分。参考刀片系统在此描述的实施例,可等同地应用于其他虽然没有物理刀片、但仍 然可以被认为是包括了多个数据处理系统的多处理器系统。注意,在在此描述的任何实施例中,媒体接口可支持一个或更多个物理网络端口。据此,申请人分别公开了每个在此描述的单独特征和两个或多个这种特征的任意 组合,到达了根据本领域技术人公知常识,基于作为整体的本说明书这种特征或组合能够 实现的程度,无论这种特征或特征的组合是否解决了在此公开的任何问题,而不限制权利 要求的范围。申请人指出本发明的方面可包括任意这种特征或特征的组合。鉴于前述的描 述,对于本领域技术人员来说在本发明的范围内作出各种变型将是必然的。
权利要求
一种包括中央处理器单元和分离网络接口功能组的数据处理系统,该分离网络接口功能组包括第一子单元,该第一子单元与所述中央处理单元设置在一起,并且被配置为,通过为各网络数据分组生成数据链路层信息,至少部分地形成用于发送给网络端点的一系列网络数据分组;以及第二子单元,该第二子单元在所述中央处理单元外部,并通过互连与该中央处理单元相耦合,该第二子单元被配置为通过网络物理地传送所述一系列网络数据分组。
2.如权利要求1所述的数据处理系统,其中,所述第一子单元被配置为根据在所述互 连上使用的数据协议,将所述一系列网络数据分组中的各个网络数据分组封装在一个或更 多个互连数据分组中。
3.如权利要求1或2所述的数据处理系统,其中,所述第一子单元被配置为向所述第 二子单元发送所述互连数据分组,以使所述第二子单元通过所述网络传送各个网络数据分 组。
4.如任一项前述权利要求所述的数据处理系统,其中,所述第一子单元被配置为部分 地形成所述一系列网络数据分组,并且所述第二子单元被配置为在所述网络上使用的所述 网络协议的数据链路层完成所述一系列网络数据分组中各个网络数据分组的形成。
5.如权利要求4所述的数据处理系统,其中,所述第二子单元被配置为通过针对各个 网络数据分组计算一个或更多个校验和,在所述数据链路层完成所述一系列网络数据分组 中各个网络数据分组的形成。
6.如任一项前述权利要求所述的数据处理系统,其中,所述第二子单元被配置为根据 在所述网络上使用的所述网络协议的物理层需求,通过所述网络物理传送完成后的所述一 系列网络数据分组。
7.如任一项前述权利要求所述的数据处理系统,该数据处理系统还包括与所述中央处 理单元耦合的存储器和/或高速缓存,在所述中央处理单元处,存储器管理单元被配置为 为所述中央处理单元和所述第一子单元提供到所述存储器和/或高速缓存的访问。
8.如权利要求7所述的数据处理系统,其中,所述存储器和/或高速缓存被配置为保存 包括用于通过所述网络发送的数据在内的发送队列,并且所述第一子单元被配置为借助于 对所述存储器管理单元的读请求访问所述发送队列,并使用用于通过所述网络发送的数据 来形成所述一系列网络数据分组。
9.如任一项前述权利要求所述的数据处理系统,其中,所述第二子单元能够操作以通 过所述网络接收一系列网络数据分组,并且所述第一子单元被配置为在所述数据链路层至 少部分地处理各个接收到的网络数据分组,以便提取在该网络数据分组中携带的数据。
10.如从属于权利要求7的权利要求9所述的数据处理系统,其中,所述第一子单元被 配置为在所述存储器处存储转发表,该转发表包括信息,该信息所述第一子单元能够针对 各个接收到的网络数据分组,依赖于该接收到的网络数据分组的内容将提取的数据路由至 所述存储器和/或其他网络设备中的一个或更多个接收队列。
11.如权利要求9或10所述的数据处理系统,其中,所述第二子单元被配置为根据在接 近所述第二子单元的所述互连的数据链路上使用的数据协议,将各个接收到的网络数据分 组封装在一个或更多个互连数据分组中。
12.如权利要求9至11中的任一项所述的数据处理系统,其中,所述第二子单元被配 置为向所述第一子单元发送所述互连数据分组,以便使所述第一子单元在所述数据链路层 至少部分地处理各个接收到的网络数据分组,并提取在接收到的网络数据分组内携带的数 据。
13.一种数据处理系统,该数据处理系统包括中央处理单元,该中央处理单元包括网络接口控制器,该网络接口控制器被配置为,根 据网络协议,通过在数据链路层将用于通过网络发送的数据至少部分地形成帧,来形成中 间数据单元,每个中间数据单元包括用于传输的数据的目的地网络地址;存储器,该存储器与所述中央处理单元相耦合;媒体接口,该媒体接口与所述网络相连接,并且被配置为通过所述网络发送完全形成 的数据分组;以及第一互连,该第一互连在所述中央处理单元和所述媒体接口之间延伸,该互连由一条 或更多条数据链路形成;其中,所述网络接口控制器被配置为,将所述网络协议的中间数据单元封装在通过所 述第一互连发送的互连数据分组中,并且所述媒体接口被配置为,从通过所述第一互连接 收的互连数据分组中提取中间数据单元,并在物理层处理该中间数据单元,以便根据所述 网络协议完成数据分组的形成。
14.如权利要求13所述的数据处理系统,其中,所述网络接口控制器被配置为,根据在 接近所述中央处理单元的所述第一互连的数据链路上使用的数据协议,将每个中间数据单 元封装在一个或更多个互连数据分组中。
15.如权利要求13至14所述的数据处理系统,其中,所述网络接口控制器被配置为,使 一个或更多个互连数据分组被发送给所述媒体接口,以便使所述媒体接口通过所述网络发 送完整形成的网络数据分组。
16.如权利要求13至15中的任一项所述的数据处理系统,其中,所述网络接口控制器 被配置为,将封装头部写入每个互连数据分组,该封装头部包括使所述媒体接口能根据互 连数据分组来重组各中间数据单元的信息。
17.如权利要求13至16中的任一项所述的数据处理系统,其中,所述第一互连包括以 下两条数据链路第一数据链路,该第一数据链路在所述中央处理单元和转换单元之间延伸;以及第二数据链路,该第二数据链路在所述转换单元和所述媒体接口之间延伸;所述转换单元被配置为,将根据在所述第一数据链路上使用的数据协议而形成帧的互 连数据分组转换为根据在所述第二数据链路上使用的数据协议而形成帧的互连数据分组, 和将根据在所述第二数据链路上使用的数据协议而形成帧的互连数据分组转换为根据在 所述第一数据链路上使用的数据协议而形成帧的互连数据分组。
18.如权利要求17所述的数据处理系统,其中,所述转换单元被配置为通过以下操作 来转换互连数据分组移除在所述第一数据链路上使用的数据协议的帧形成数据,并根据在所述第二数据链 路上使用的数据协议来对所述一个或更多个互连数据分组重新形成帧,或者根据在所述第二数据链路上使用的数据协议,增加关于所述一个或更多个互连数据分组的附加帧形成层。
19.如权利要求17或18所述的数据处理系统,其中,所述第一数据链路是CPU互连,并 且所述第二数据链路是外围数据总线。
20.如权利要求19所述的数据处理系统,其中,所述媒体接口在所述外围数据总线处 被支持。
21.如权利要求19或20所述的数据处理系统,其中,所述CPU互连是HyperTransport 互连、QuickPath互连和PCIe互连中的一个。
22.如权利要求19至21中的任一项所述的数据处理系统,其中,所述外围数据总线是 PCIe0
23.如权利要求13至22中的任一项所述的数据处理系统,其中,所述中央处理单元进 一步包括存储器管理单元,该存储器管理单元被配置为为所述中央处理单元和所述网络接 口控制器提供到所述存储器的访问。
24.如权利要求13至23中的任一项所述的数据处理系统,其中,所述网络接口控制器 被配置为,如果目的地网络地址属于在所述中央处理单元处支持的进程,则直接将用于发 送的数据写入所述存储器处的接收队列,而不将该数据封装在一个或更多个互连数据分组 中,所述接收队列对应于所述目的地网络地址。
25.如权利要求24所述的数据处理系统,其中,所述网络接口控制器进一步被配置为 不根据所述网络协议在所述数据链路层对所述数据形成帧。
26.如权利要求23至25中的任一项所述的数据处理系统,其中,所述存储器被配置为 保存包括用于通过所述网络发送的数据的一个或更多个发送队列,并且所述网络接口控制 器能够操作以借助于对所述存储器管理单元的读请求,在用于发送的数据各自的发送队列 处访问所述数据。
27.如权利要求23至26中的任一项所述的数据处理系统,其中,所述存储器管理单元 包括高速缓存,该高速缓存能够操作来存储在所述存储器处保存的至少一些数据的副本, 并且该高速缓存能由所述中央处理单元和所述网络接口控制器两者访问。
28.如权利要求27所述的数据处理系统,其中,所述高速缓存被配置为存储由所述中 央处理单元最近在所述存储器处访问的数据。
29.如权利要求27或28所述的数据处理系统,其中,所述网络接口控制器被配置为对 于能在所述存储器和所述高速缓存处获得的任何用于发送的数据,优先于从所述存储器读 取该用于发送的数据而从所述高速缓存读取该数据。
30.如权利要求27或28所述的数据处理系统,其中,所述网络接口控制器被配置为,对 于不能在所述高速缓存处获得的用于发送的数据,从所述存储器读取所述数据并且不向所 述高速缓存写入该数据。
31.如权利要求29所述的数据处理系统,其中,所述网络接口控制器被配置为,一旦从 所述高速缓存读取了用于发送的数据,则使所述高速缓存的相应的线无效,以使在所述中 央处理单元处执行的其他进程能改写这些线。
32.如权利要求13至31中的任一项所述的数据处理系统,其中所述媒体接口能操作来通过所述网络接收网络数据分组,并将接收到的网络数据分组 封装在用于通过所述第一互连发送的互连数据分组中;并且所述网络接口控制器被配置为,从互连数据分组中提取接收到的网络数据分组,并且 根据网络协议至少部分地在数据链路层处理各个接收到的网络数据分组,以便提取在各个 接收到的网络数据分组中携带的数据。
33.如权利要求32所述的数据处理系统,其中,所述媒体接口被配置为,根据在接近所 述媒体接口的所述第一互连的数据链路上使用的数据协议,将各个接收到的网络数据分组 封装在一个或更多个互连数据分组中。
34.如权利要求32或33所述的数据处理系统,其中,所述媒体接口被配置为,将所述互 连数据分组发送给所述网络接口控制器,以使所述网络接口控制器在所述数据链路层至少 部分地处理各个接收到的网络数据分组,并将携带在各个接收到的网络数据分组中的数据 写入在所述存储器处的至少一个接收队列,该至少一个接收队列由在接收到的网络数据分 组内包括的目的地网络地址标识。
35.如从属于权利要求27的权利要求34所述的数据处理系统,其中,所述网络接口控 制器被配置为,一旦将携带在接收到的网络数据分组内的数据写入在所述存储器处的接收 队列,就将该数据写入所述高速缓存。
36.如权利要求32至35中的任一项所述的数据处理系统,其中,所述网络接口控制器 被配置为,在所述存储器处存储转发表,该转发表包括信息,该信息使得所述网络接口控制 器能够针对各个接收到的网络数据分组,根据所述目的地网络地址选择所接收到的网络数 据分组的数据要被路由到的所述存储器和/或其他网络设备处的一个或更多个接收队列。
37.如权利要求32至36中的任一项所述的数据处理系统,其中,所述媒体接口被配置 为,将封装头部写入每个互连数据分组,该封装头部包括使所述网络接口控制器能根据互 连数据分组重组各个网络数据分组的信息。
38.如从属于权利要求23的权利要求24至37中的任一项所述的数据处理系统,其中, 所述存储器管理单元被配置为,一旦从所述中央处理单元或所述网络接口控制器接收到访 问虚拟存储器地址的请求,就将该虚拟存储器地址转换为所述数据处理系统的物理存储器 地址并访问该物理存储器地址。
39.如权利要求38所述的数据处理系统,其中,所述存储器管理单元被配置为,如果对 代表所述网络接口控制器的虚拟存储器地址的转换失败,则向所述网络接口控制器发起页 面故障。
40.如权利要求39所述的数据处理系统,其中,所述网络接口控制器被配置为响应于 页面故障执行以下操作如果虚拟存储器地址与发送队列相关,则使对应于该虚拟存储器地址的发送队列被暂 停,直到各个页面被重新写入所述存储器;或者如果虚拟存储器地址与接收队列相关,则将与所发出的请求有关的、接收到的网络数 据分组的数据写入预留缓冲,以供所述数据处理系统的协议处理实体来获取。
41.如权利要求13至40中的任一项所述的数据处理系统,该数据处理系统进一步包括第二中央处理单元,该第二中央处理单元包括第二网络接口控制器,该第二网络接口 控制器也被配置为,根据网络协议通过在数据链路层至少部分地对用于发送的数据的形成 帧,来形成中间数据单元,每个中间数据单元包括用于发送的数据的目的地网络地址;以及第二互连,该第二互连在所述第二中央处理单元和所述媒体接口之间延伸,该第二互 连由一条或更多条数据链路形成;其中,所述第二网络接口控制器被配置为,将网络协议的中间数据单元封装在用于通 过所述第二互连发送的互连数据分组中,并且所述媒体接口被配置为,从通过所述互连接 收的互连数据分组提取中间数据单元,并且在物理层处理该中间数据单元,以便根据网络 协议完成数据分组的形成。
42.如权利要求41所述的数据处理系统,其中,所述第二互连的一个或更多个数据链 路与所述第一互连的一个或更多个数据链路共享。
43.如权利要求41或42所述的数据处理系统,其中,所述网络接口控制器被配置为,如 果在所述中央处理单元处形成的中间数据单元的目的地网络地址是在所述第二中央处理 单元处支持的网络地址,则使包括中间数据单元的封装后的互连数据分组被发送给所述第 二网络接口控制器。
44.如权利要求41至43中的任一项所述的数据处理系统,其中,所述媒体接口包括管 理控制器,该管理控制器被配置为处理接收到的用于网络接口设备的管理命令,该网络接 口设备(a)由所述媒体接口和所述网络接口控制器形成和(b)由所述媒体接口和所述第二 网络接口控制器形成。
45.如权利要求13至44中的任一项所述的数据处理系统,其中,所述数据处理系统是 包括一个或更多个在机架处支持的刀片的刀片式服务器,每个刀片具有一个或更多个中央 处理单元,该一个或更多个中央处理单元中的至少一个包括网络接口控制器,并且所述媒 体接口位于刀片式服务器的机架处。
46.如权利要求45所述的数据处理系统,其中,所述中央处理单元和所述第二中央处 理单元位于刀片式服务器的同一刀片处。
47.如权利要求46所述的数据处理系统,其中,所述中央处理单元和所述第二中央处 理单元通过包括所述第一互连的数据链路和所述第二互连的数据链路在内的CPU互连能 够互相访问。
48.如权利要求45所述的数据处理系统,其中,所述中央处理单元和所述第二中央处 理单元位于刀片式服务器的不同的刀片处。
49.如权利要求45至48中的任一项所述的数据处理系统,其中,所述网络接口控制器 被配置为,如果在所述中央处理单元处形成的中间数据单元的目的地网络地址是属于在所 述第二中央处理单元处支持的进程的网络地址,则通过所述CPU互连、不经由所述媒体接 口将封装中间数据单元的互连数据分组发送给所述第二网络接口控制器。
50.如权利要求45至49中的任一项所述的数据处理系统,其中,所述媒体接口在外围 数据总线处被支持,并且所述刀片式服务器的刀片被配置为通过所述外围数据总线互相通信。
51.如权利要求50所述的数据处理系统,该数据处理系统进一步包括在所述刀片式服 务器的机架处的交换机,该交换机被配置为在所述刀片式服务器的刀片间路由互连数据分组。
52.如权利要求51所述的数据处理系统,其中,所述交换机被配置为根据互连数据分 组的帧形成信息,在所述外围数据总线上使用的数据协议的层级上路由互连数据分组。
53.如权利要求51所述的数据处理系统,其中,所述交换机被配置为,在网络协议的层级上根据中间数据单元的帧形成信息,路由封装中间数据单元的互连数据分组。
54.如权利要求51至53中的任一项所述的数据处理系统,其中,所述外围数据总线是 PCIe,并且所述交换机是PCIe交换机。
55.如权利要求13至54中的任一项所述的数据处理系统,其中,所述媒体接口是常规 PCIe设备、SR-IOV PCIe设备和MR-IOV PCIe设备中的一个。
56.如权利要求54所述的数据处理系统,其中,所述媒体接口是SR-IOVPCIe设备,并 且所述交换机是MR-IOV PCIe交换机。
57.如权利要求13至56中的任一项所述的数据处理系统,其中,所述数据处理系统的 所述媒体接口和每个网络接口控制器被配置为借助于一个或更多个互连数据分组来交换 控制数据。
58.如权利要求13至57中的任一项所述的数据处理系统,其中,所述网络协议是以太 网协议。
59.一种通过网络从数据处理系统发送数据的方法,该数据处理系统包括在到所述网 络的接口处的媒体接口、具有用于访问存储器的存储器管理单元的中央处理单元以及在所 述中央处理单元和所述媒体接口之间连接的互连,该方法包括以下步骤由位于中央处理单元处的网络接口控制器执行以下操作通过所述存储器管理单元从位于所述存储器处的发送队列中获取用于通过所述网络 发送的数据;在数据链路层上至少部分地形成网络协议的包含获取的数据的数据分组的帧;以及 根据在互连上使用的数据协议,将网络协议的数据分组封装在用于通过所述互连发送 的数据分组中,并将该数据分组通过所述互连发送给所述媒体接口 ; 由所述媒体接口执行以下操作 接收封装后的数据分组; 从封装后的数据分组提取网络协议的数据分组;在物理层处理网络协议的数据分组,以便根据网络协议完成该数据分组的帧形成;以及将完全形成的网络协议的数据分组发送到所述网络上。
60.一种通过网络在数据处理系统处接收数据的方法,该数据处理系统包括在到所述 网络的接口处的媒体接口、具有用于访问存储器的存储器管理单元的中央处理单元和在所 述中央处理单元和所述媒体接口之间连接的互连,该方法包括以下步骤由所述媒体接口执行以下操作 通过所述网络接收网络数据分组;和根据在所述互连上使用的数据协议,将接收的网络数据分组封装在用于通过所述互连 发送的数据分组中,并将该数据分组通过所述互连发送给位于所述中央处理单元处的所述 网络接口控制器;由网络接口控制器执行以下操作接收封装后的数据分组;从封装后的数据分组提取接收的网络数据分组;根据网络协议在数据链路层至少部分地处理每个接收的网络数据分组,以便提取在每 个接收的网络数据分组内携带的数据;和借助于所述存储器管理单元将提取的数据写入在所述存储器处的接收队列。
61.一种在数据处理系统处的中央处理单元间通信数据的方法,该数据处理系统具有 借助于互连耦合在一起的第一中央处理单元和第二中央处理单元,每个中央处理单元包括 各自的网络接口控制器,所述网络接口控制器能操作来(a)根据网络协议,在数据链路层 通过至少部分地形成以用于通信的数据的帧来形成中间数据单元,和(b)根据网络协议在 数据链路层至少部分地处理中间数据单元,以便提取在每个中间数据单元内携带的用于通 信的数据,该方法包括以下步骤所述第一中央处理单元将用于通信的数据传递给它的第一网络接口控制器; 由所述第一网络接口控制器执行以下操作根据网络协议在数据链路层通过至少部分地形成用于通信的数据的帧来形成包括用 于通信的数据的中间数据单元;将网络协议的中间数据单元封装在用于通过所述互连发送的数据分组中;和 将封装后的数据分组通过所述互连发送给ν第二网络接口控制器; 由所述第二网络接口控制器执行以下操作 接收封装后的数据分组; 从封装后的数据分组提取中间数据单元;根据网络协议在数据链路层至少部分地处理每个中间数据单元,以便提取在每个中间 数据单元内携带的数据;和将提取的数据传递给所述第二中央处理单元。
62.一种用于数据处理系统的中央处理单元,该中央处理单元包括 处理核;链路模块,该链路模块用于通过数据总线传送预定数据协议的数据分组; 存储器管理单元,该存储器管理单元能够操作来从与所述中央处理单元耦合的存储器 获取数据;和网络接口控制器,该网络接口控制器被配置为 借助于所述存储器管理单元获取用于通过网络发送的数据; 在数据链路层形成包含获取的数据的网络协议的数据分组的帧;和 使所述分组被封装在预定数据协议的数据分组中,并借助于所述链路模块通过数据总 线被传送。
63.如权利要求62所述的中央处理单元,其中,所述网络接口控制器不在物理层对网 络协议的数据分组形成帧。
64.一种用于数据处理系统的中央处理单元,该中央处理单元包括 处理核;高速缓存;存储器管理单元,该存储器管理单元能够操作来从与所述中央处理单元耦合的存储器 获取数据;和网络接口管理器,该网络接口管理器被配置为当使用时将至少一些它的状态存储在与所述中央处理单元耦合的所述存储器处;其中,所述处理核和所述网络接口控制器被配置为,借助于所述存储器管理单元访问 与所述中央处理单元耦合的所述存储器,并且所述高速缓存被配置为高速地缓存在与所述 中央处理单元耦合的所述存储器处存储的数据。
65.如权利要求61所述的中央处理单元,其中,所述网络接口控制器的状态包括转发 表和地址转换表中的一个或全部两个。
66.一种在数据处理系统处支持的、对该数据处理系统将其自身表现为PCIe设备的电 子设备,该数据处理系统包括中央处理单元和PCIe数据总线,并且外围设备具有以下两个 组件核心组件,该核心组件位于中央处理单元处,能够操作来处理对所述电子设备的I/O 请求;和外围组件,所述核心设备通过PCIe数据总线可访问该外围组件;其中,所述核心组件被配置为对发送给所述外围组件的I/O请求进行响应。
67.如权利要求66所述的电子设备,其中,所述核心组件被分配了定义其控制范围的 硬件地址范围,并且所述外围组件被配置为,提供指示包括了所述核心组件的控制范围的 基地址的硬件地址范围的基地址寄存器,使得针对由基地址寄存器指示的硬件地址范围的 I/O请求在所述核心组件的控制范围处得以处理。
68.如权利要求66所述的电子设备,其中,所述外围组件附加地是一个或更多个其他 PCIe设备的组件,并且所述外围组件被配置为,为每个其他PCIe设备提供附加的基地址寄 存器,每个附加的基地址寄存器被配置为使得针对由该基地址寄存器指示的硬件地址范围 的I/O请求在该其他PCIe设备的相应的核心组件处得以处理。
69.如权利要求66或67所述的电子设备,其中,所述外围组件被配置为,将其接收的中 断配置请求转发给所述核心组件以在该核心组件处处理。
70.如权利要求66至69中的任意一项所述的电子设备,其中,所述外围组件进一步提 供支持传统寄存器组的传统基地址寄存器,所述外围组件被配置为当读或写所述传统寄存 器时,将对所述传统寄存器的读或写映射为对所述核心组件的控制范围的读或写,使得针 对所述传统寄存器组的传统I/O请求在所述核心组件的控制范围处得以处理。
71. 一种本质上如参考图2至9中任一个在此描述的网络接口设备。
全文摘要
本发明涉及控制器集成。提供了一种包括中央处理单元和分离网络接口功能组的数据处理系统,该分离网络接口功能组包括与中央处理单元设置在一起的第一子单元,被配置为通过为每个网络数据分组生成数据链路层信息来至少部分地形成用于发送给网络端点的一系列网络数据分组;以及在中央处理单元外部并且通过互连部与中央处理单元相耦合的第二子单元,该第二子单元被配置为通过网络物理地传送一系列网络数据分组。
文档编号H04L29/06GK101990002SQ20101028068
公开日2011年3月23日 申请日期2010年7月29日 优先权日2009年7月29日
发明者史蒂夫·波普, 大卫·里多克, 德里克·罗伯茨 申请人:索乐弗莱尔通讯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1