欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 主机系统和集成电路加速系统之间有效而可靠的消息通道独创技术25833字

主机系统和集成电路加速系统之间有效而可靠的消息通道

2021-01-31 19:06:20

主机系统和集成电路加速系统之间有效而可靠的消息通道

  背景技术

  当今的数据中心部署了需要大数据级别并行性的工作负载,例如机器学习、深度学习和云计算工作负载等。在云数据中心中消耗大量计算资源的另一种工作负载是处理网络数据包处理和后端存储的软件层。这些工作负载促进了对硬件加速器的需求。

  硬件加速器可以卸载在诸如笔记本电脑、台式机、服务器、蜂窝设备等计算设备的主机CPU上运行的性能不是最佳的代码,从而释放主机CPU的资源。由于释放的CPU资源可以作为额外的虚拟机出售给云客户,因此就运营费用(OPEX)而言,这对云服务提供商是有利的。硬件加速器还具有专用的硬件加速引擎,该引擎可提供高数据并行性或提供软件算法的专用硬件实现。

  虽然这种卸载可以释放主机CPU的资源,但传统的硬件加速器非常有限,因为它们只能携带较小的消息,例如电池信息,热事件警报和风扇速度。因此,常规的硬件加速器不适合以及时、可靠和有效的方式传输大量数据。

  发明内容

  本公开的实施例提供了用于在主机CPU和集成电路CPU之间的高效且可靠的消息通道的处理系统和方法。该实施例通过利用内核TCP/IP网络堆栈将消息封装在以太网包中,以确保数据的可靠传输并使用硬件消息转发引擎在主机CPU和集成电路子系统的CPU之间有效地传输包,而无需考虑数据的大小写

  本公开的实施例还提供了一种集成电路,包括:芯片处理器,存储器,配置为与包括主机处理器的主机系统通信的外围接口,以及配置为获取数据包并用报头信息封装所述数据包的消息转发引擎,所述报头消息指示所获取的数据包正在所述芯片处理器和主机处理器之间进行传递。

  所述存储器被配置为存储所述封装的数据包,并且其中,所述消息转发引擎还包括帧校验处理引擎,该帧校验处理引擎被配置为确定所获取的数据包的帧校验序列,其中帧校验序列被附加到所述封装的数据包。所述封装的数据包包括报头信息的字段,其中该字段指示所获取的数据包正在所述芯片处理器与主机处理器之间进行传送,所述封装的数据包包括还具有所获取的数据包的有效负载以及该有效负载之后的帧校验序列。

  所述消息转发引擎还被配置为触发对所述芯片处理器的中断,其中,该中断被配置为使所述芯片处理器的设备驱动器从存储器访问封装的数据包,并且其中,所述芯片处理器被配置为确定所述封装的数据包是否包括报头信息,该头报信息指示所获取的数据包正在所述芯片处理器和主机处理器之间进行传送。所述芯片处理器被配置为确定封装数据包是否包括指示所获取的数据包正在所述芯片处理器与主机处理器之间进行通信的报头信息,并且还被配置为当所述封装的数据包包括报头信息时对所述封装的数据包进行解封装。

  所述消息转发引擎还包括环形缓冲器,该环形缓冲器被配置为经由外围接口从主机系统接收数据包的地址,其中,该地址被所述消息转发引擎用来从所述主机系统获取数据包,其中所述环形缓冲器还被配置为将地址存储在存储所述封装的数据包的存储器内。

  本公开的实施例还提供一种服务器,该服务器包括具有主机处理器的主机系统和集成电路;所述集成电路包括芯片处理器,存储器,配置为与所述主机处理器进行通信的外围接口,以及消息转发引擎,该消息转发引擎配置为获取数据包并用指示所述获取的数据包正在所述芯片处理器与所述主机处理器之间进行传送的报头信息封装所述数据包。

  所述消息转发引擎还包括:帧校验处理引擎,所述帧校验处理引擎被配置为确定所获取的数据包的帧校验序列,其中,所述帧校验序列被附加到所述封装后的数据包;以及,帧校验处理引擎,所述帧校验处理引擎被配置为确定所获取的数据包的帧校验序列,其中,所述帧校验序列被附加到封装的数据包。

  所述芯片处理器被配置为确定封装的数据包是否包括指示所获取的数据包正在所述芯片处理器和主机处理器之间传送的报头信息,并且当所述封装的数据包包括所述报头信息时,对所述封装的数据包进行解封装。

  所述消息转发引擎还包括环形缓冲区,该环形缓冲区被配置为经由外围接口从主机系统接收数据包的地址,其中,该地址被消息转发引擎用来从所述主机系统获取数据包。并将地址存储在存储封装的数据包的存储器中。

  本公开的实施例还提供一种由具有芯片处理器的集成电路执行的方法,其中,所述集成电路通信地连接至具有主机处理器的主机系统,所述方法包括:

  从发送处理器获取一个或更多个用于接收处理器的数据包,其中,所述发送处理器为所述芯片处理器和主机处理器之一,所述接收处理器为所述芯片处理器和主机处理器中的另一个;

  用报头信息封装一个或更多个所获取的数据包,该报头信息指示所获取的数据包正在所述芯片处理器与主机处理器之间进行传送;

  将所述一个或更多个封装的数据包存储在所述集成电路的存储器中;和

  将中断传递给所述接收处理器,其中该中断提供使所述接收处理器从所述存储器获取所述封装的一个或更多个数据包。

  所述一个或多个封装的数据包包括用于校验所获取的数据包的帧校验序列。

  本公开的实施例还提供一种由接收处理器执行的方法,该接收处理器是主机系统的主机处理器和通信地连接到该主机系统的集成电路的芯片处理器之一,该方法包括:从所述集成电路的存储器中获取一个或更多个数据包;确定一个或更多个获取的数据包是否包括附加报头信息,该附加报头信息指示获取的数据包正在所述主机处理器和芯片处理器之间进行传送;响应于所述一个或更多个获取的数据包具有所述附加报头信息,对所述一个或更多个数据包的报头信息进行解封装;和处理所述一个或更多个获取的数据包的有效负载。

  该方法还包括:在获取所述一个或多个数据包之前,接收中断,该中断被配置为使所述接收处理器从所述存储器中调用该一个或更多个数据包,并且当帧校验序列对应于所述一个或更多个获取的数据包的有效负载时,发生对所述一个或更多个获取的数据包的有效负载的处理。

  所公开的实施例的其他目的和优点将在下面的描述中部分地阐述,并且部分地从该描述中将是显而易见的,或者可以通过实施例的实施而获知。所公开的实施例的目的和优点可以通过权利要求中阐述的要素和组合来实现和获得。

  应该理解,前面的一般描述和下面的详细描述都只是示例性和说明性的,并且不限制所要求保护的公开实施例。

  附图说明

  图1示出了示例性集成电路的框图。

  图2是与本公开的实施例一致的包括示例性集成电路的客户-服务器系统的示意图。

  图3示出了与本公开的实施例一致的包括消息转发引擎的集成电路的框图。

  图4示出了与本公开的实施例一致的示例性消息转发引擎的框图。

  图5示出了根据本公开实施例的当主机处理器和集成电路处理器彼此通信数据时的示例性操作步骤的框图。

  图6示出了与本公开的实施例一致的用于获取和封装数据包的示例性方法的流程图。

  图7示出了与本公开的实施例一致的用于获取和解封装数据包的示例性方法的流程图。

  具体实施方式

  现在将详细参考示例性实施例,其示例在附图中示出。以下描述参考附图,其中除非另有说明,否则不同附图中的相同数字表示相同或相似的元件。在以下示例性实施例的描述中阐述的实施方式并不代表与本发明一致的所有实施方式。相反,它们仅仅是与如所附权利要求中所述的与本发明有关的方面一致的系统和方法的示例。

  硬件加速器可以配备有集成电路(诸如片上系统(SoC)系统),以提供在主机系统135的主机处理器140上运行的软件代码。图1示出了具有处理器105的示例性集成电路或硬件加速器100的框图,该处理器105被配置为与硬件加速引擎110通信以用于主处理器140的卸载和加速。除其他之外,集成电路100还可以包括存储器控制器115、直接存储器访问(DMA)引擎120、片上网络(NoC)结构125和外围接口130。硬件加速引擎110可以经由NoC架构125与处理器105、存储器控制器115和DMA引擎120通信。NoC架构125经由外围接口130(例如外围组件互连Express(PCIe))与包括主机处理器140的主机系统135的其他组件通信。

  通常,在主机处理器140上运行的代码与在集成电路100上运行的代码之间的通信需求可能很大。例如,在为云上的虚拟交换机网络堆栈提供卸载和加速的集成电路100中,在主机处理器140上运行的控制器代码将诸如访问控制列表(ACL)规则之类的配置信息传递给运行在集成电路100的处理器105上的网络的控制平面,ACL规则可能包含成千上万个条目,并且大小通常可能是数百兆字节。如上所述,常规硬件加速器的局限性在于它们不适合以及时、可靠和有效的方式传输大量数据。

  相反,本公开的实施例在主机处理器与集成电路的处理器之间提供了有效的通信信道,该通信信道允许及时地有效且可靠地传输大量数据。

  图2是与本公开的实施例一致的包括与示例性主机系统通信的示例性集成电路的客户端-服务器系统的示意图,该示例性集成电路用于及时有效且可靠地传输大量数据。参照图2,客户端设备210可以通过(可以被保护的)通信信道230连接到服务器220。服务器220包括主机系统240和集成电路250。主机系统240可以包括网络服务器,云计算服务器等。集成电路250可以通过诸如外围接口的连接接口连接到主机系统240。外围接口可以基于并行接口(例如,外围组件互连(PCI)接口),串行接口(例如,外围组件互连快速(PCIe)接口)等。集成电路250包括用于及时有效地和可靠地通信大量数据的消息转发引擎。在操作中,提供主机系统240的服务器220可以配备有多个集成电路250,以实现最大化的性能。

  图3示出了与本公开的实施例一致的包括消息转发引擎320的集成电路250的框图。如图3所示,集成电路250可以设置在硬件计算机外围卡上。例如,集成电路250可以被焊接或插接外围卡的插槽上。外围卡可以包括被配置为与主机系统240连接的硬件连接器。例如,外围卡可以是插入到主机系统240的电路板上的PCI卡、PCIe卡等形式。

  集成电路250可以包括芯片处理器305、存储器控制器310、DMA引擎330、硬件加速引擎325、片上网络(NoC)315、外围接口335,、消息转发引擎320。这些硬件组件可以作为单个芯片集成到集成电路250中,或者这些硬件组件中的一个或多个可以采用独立硬件设备的形式。

  芯片处理器305可以被实现为具有一个或多个核心的中央处理单元(CPU)。芯片处理器305可以执行成熟的操作系统(OS)软件,例如基于Linux的OS软件。OS软件的内核可以包括网络软件栈,例如TCP/IP栈。OS软件的内核还可以包括消息层软件栈,以与主机系统240通信。

  存储器控制器310可以控制本地存储器以便于芯片处理器305的功能。例如,存储器控制器310可以控制芯片处理器305对存储在存储器单元上的数据的访问。存储器控制器310还可以控制与集成电路250相关联的要从主机系统(例如主机系统240)传输到集成电路的数据的存储器位置,以对数据进行解封装并将数据提交给集成电路250的处理器中的应用。

  DMA引擎330可以允许输入/输出设备直接向存储器发送数据或从存储器接收数据,从而绕过芯片处理器305以加速存储器操作。

  硬件加速引擎320可以卸载在服务器220的主机系统240上运行的不是最佳性能的代码,从而释放主机系统CPU资源。由于释放的资源可以出售给例如云客户,因此对云服务提供商在财务上有利。此外,硬件加速引擎320可以配备有CPU子系统,用于提供在主机系统CPU上运行的软件代码。

  NoC 315可以提供高速片上互连,以将集成电路250上的各种硬件组件连接在一起。

  外围接口335可以包括诸如PCIe协议的外围通信协议的实现。例如,外围接口335可以包括PCIe核心,以便于集成电路250和主机系统240之间根据PCIe协议的通信。

  消息转发引擎335负责从主机系统CPU(未示出)接收数据,并向集成电路250中的芯片处理器305发送数据,反之亦然。通过消息转发引擎310传输的数据可以以标准以太网包格式打包。可以以类似于套接字接口所应用的方式来准备数据包并将其发送到主机处理器和芯片处理器305以及从主机处理器和芯片处理器305发送包,从而简化利用消息转发引擎310的软件编程模型,并允许传输大量数据被更有效、更可靠地处理。即,经由TCP/IP协议栈传送数据包可以帮助无序包传送,拥塞控制和速率控制,在此仅举几例。

  图4示出了与本公开的实施例一致的示例性消息转发引擎320的框图。消息转发引擎320可以包括包报头处理单元410、帧校验处理引擎420和环形缓冲器430以及控制逻辑单元440。

  包报头处理单元410被配置为处理从主机处理器或芯片处理器305接收的任何以太网包的报头信息。此外,包报头处理单元410可以用附加的报头信息来扩充接收到的以太网包。应当理解,所接收的以太网包被封装有附加报头信息。附加报头信息可以包括提供转发指示符的字段,该转发指示符指示在主机处理器和芯片处理器305之间正在转发信息。该字段可以包括任意数量的比特。利用该附加报头信息,在集成电路250的主处理器和/或芯片处理器305上运行的数据包接收软件可以将这些数据包与其他常规的以太网数据包快速区分开,这些常规的以太网数据包可以传递给接收处理器,并且它们可以具有数据包传递给打算接收的应用程序代码。附加报头信息也可以用于识别信息以进行控制。例如,附加报头信息可用于跟踪消息从主机处理器到芯片处理器的路径,反之亦然。如图4所示,包报头处理单元410可以与NoC 315通信。

  帧校验处理引擎420被配置为便于对接收到的以太网包的帧校验序列计算。例如,帧校验处理引擎420可以生成所接收的包的16位一个补码。可以将帧校验序列附加到接收到的以太网包(连同附加报头信息),以便接收处理器(无论其是主机处理器还是芯片处理器305)可以检测数据是否准确。帧校验处理引擎420也可以与NoC 315通信。

  环形缓冲器430被配置为具有头指针和尾指针,其中头指针指向接收到的最新包以进行传输,而尾指针指向发送的最新包。环形缓冲器430可以通过外围接口335可访问集成电路250的主机处理器和芯片处理器305。因此,环形缓冲器430可以在内部分为两个虚拟通道:一个用于主机处理器,另一个用于芯片处理器305。缓冲器430变满,不能再处理任何包,并且发送者处理器将停止发送并等待直到有条目变为可用。

  控制逻辑单元440被配置为提供拥塞和速率控制,并且可以辅助控制包报头处理单元410、帧校验处理引擎420和环形缓冲区430。

  图5示出了与本公开的实施例一致的在主机系统240的主机处理器510与集成电路250的芯片处理器305之间的示例性操作步骤(1)-(12)框图500。在该特定实施例中,主机处理器510通过发起具有某些数据的请求并将该数据发送至芯片处理器305(即,接收处理器)而作为发送处理器。在接收到请求之后,芯片处理器305检查该请求,然后通过向主处理器510(现在充当接收处理器)提供响应来充当发送处理器。例如,图5中所示的示例性步骤示出了在主机处理器510上运行的应用(例如,管理员)将ACL规则发送到在集成电路250的芯片处理器305上运行的网络控制平面。在接收到ACL规则后,控制平面根据ACL规则对其自身进行配置,并以确认消息响应主机处理器510。

  在步骤1,在主机处理器510上运行的应用程序515(例如管理员代码)准备要发送的一个或多个数据包。一个或多个数据包是例如应用层有效负载。在操作中,当应用程序515打算调用与消息转发引擎320相关联的设备驱动器530时,驱动器520将所述一个或多个数据包复制到主机存储器。

  在步骤2,主机处理器510的内核空间中的设备驱动器520调用内核TCP/IP网络(未示出)以封装所述一个或多个数据包以创建一个或多个以太网包。设备驱动程序520通过将一个或多个以太网包的地址由外围接口335写入消息转发引擎320中的环形缓冲器(例如环形缓冲器430,)来启动以太网包发送过程。

  在步骤3,消息转发引擎320通过外围接口335接收请求。在接收到请求之后,消息接收引擎320通过经由NoC 315将DMA控制命令发送给DMA引擎330,对DMA引擎330进行编程。因此,由主机处理器510发送的包被从主机处理器的存储器复制到芯片处理器的存储器中,以供消息转发引擎320处理。

  在获取包之后,消息转发引擎320使用例如帧校验处理引擎420执行帧校验序列过程。帧校验处理引擎420确定原始以太网数据包的帧校验序列(例如,诸如校验和值或循环冗余校验(CRC)值),并在最后附加帧校验序列数据包。

  在附加了帧校验序列之后,消息转发引擎320用报头信息封装该包。例如,包报头处理单元410可以通过在以太网包的前面添加附加的报头信息来封装包。附加报头信息可以包括转发指示符,其指示正在从发送处理器(在这种情况下,是主机处理器510)转发包。然后,消息转发引擎320将新创建的数据包(带有附加的标头信息和帧校验序列)复制到芯片处理器305的存储器中,并对环形缓冲区440进行编程。

  在步骤4,消息转发引擎320通过NoC 315向芯片处理器305提出中断。

  在步骤5,NoC 315将中断传递给芯片处理器305。与消息转发引擎320相关联并运行在芯片处理器305中的设备驱动器530接收中断,并在内核中调用网络数据包接收过程,并从集成电路250的存储器中读取包。设备驱动器530可以使用存储器控制器310来便于包的读取。

  在读取包时,设备驱动器530可以在内核中的包接收代码中使用挂钩函数来检查包报头。如果包报头包括由包报头处理单元410添加的转发指示符(诸如附加报头信息),则该包被识别为是从主机处理器510发送的。因此,在经历TCP/IP栈处理并提取出实际有效负载(步骤1中的数据包),信号将传递到所需的应用程序,在这种情况下,是网络控制平面代码。

  在步骤6,然后将应用程序代码调度为在应用程序525中运行。应用程序525接收包并相应地对其进行处理。在该示出的示例中,应用程序525将从主机处理器510上的管理员应用程序515发送的ACL规则编程到其流表中,并产生响应消息。

  在步骤7至步骤12,应用与步骤(1)-(6)相反的步骤。即,诸如ACL规则的接收的确认之类的响应消息被封装在以太网包中并且被发送到消息转发引擎310,在该消息转发引擎310中,响应消息被增加附加报头信息并被传送到主机处理器510。

  图6示出了根据本公开的实施例的用于获取和封装数据包的示例性方法600的流程图。方法600可以由集成电路的消息转发引擎(例如,消息转发引擎320)执行,该集成电路存储将从发送处理器接收的数据包存储到存储器中。对于该实施例,应当理解,发送处理器可以是主机处理器(例如,主机处理器510),而接收处理器可以是芯片处理器(例如,芯片处理器305)。在发送和接收处理器之间通信的数据包可以是例如应用程序层有效负载。

  在初始开始步骤605之后,在步骤610,从集成电路的存储器获取数据包。例如,消息转发引擎可以访问环形缓冲区,以从存储器中调用适当的数据包。应当理解,在将数据包存储在集成电路的存储器中之前,可以将数据包的地址存储在环形缓冲器中,之后,将与发送处理器相关联的数据包复制到集成电路的存储器中。消息转发引擎可以准备数据包以发送到接收处理器。

  在步骤615,将获取的数据包与报头信息一起封装。报头信息可以包括指示在发送处理器和接收处理器之间正在转发信息的字段。除了报头信息,还可以在最后附加一个帧校验序列,其中所获取的数据包是有效负载。在步骤620,封装的数据包被存储在集成电路的存储器中。例如,消息转发引擎可以将封装的数据包复制到集成电路的存储器,并相应地对环形缓冲区进行编程。

  在步骤625,对接收处理器触发中断,以获取封装的包。例如,消息转发引擎向接收处理器发起中断,该中断经由NoC结构(例如NoC结构315)来传递。最后,该方法在步骤630处结束。

  图7示出了与本公开的实施例一致的用于获取和解封装数据包的示例性方法的流程图。方法700可以由接收处理器执行,该接收处理器可以是主机处理器(例如,主机处理器510)或芯片处理器(例如,芯片处理器305)。

  在初始开始步骤705之后,在步骤710,接收处理器接收到中断。例如,接收处理器的设备驱动器(例如,设备驱动器530)接收源自消息转发引擎(例如,消息转发引擎320)的中断。如以上关于图6所指出的,该中断可以是步骤625处的触发的中断。

  在步骤715,从集成电路的存储器获取一个或多个包。特别地,在接收到中断之后,接收处理器的设备驱动器调用内核内的网络包接收过程以从集成电路的存储器读取包。如以上关于图1所指出的,参照图6,获取的包可以是步骤620的存储的封装包。

  在步骤720,确定所获取的包是否包括附加报头数据,该附加报头数据指示数据正在从发送处理器传送到接收处理器。例如,接收处理器可以在内核中包括挂钩函数,以检查包报头以确定该报头是否包括指示信息正从发送处理器转发到接收处理器的字段。如果未找到附加报头信息,则在步骤725,接收处理器假定已经接收到“正常”包,并相应地处理该包。

  然而,如果找到了附加报头信息,则在步骤730,将所获取的包的有效负载提供给接收处理器的应用程序处理。例如,当找到该字段时,接收处理器确认所获取的数据包的信息正在从发送处理器转发。基于TCP/IP堆栈处理,提取获取的数据包的有效负载。有效载荷可以是由发送处理器提供的原始包,诸如在图6的步骤610处获取的包。这些有效负载被传送到接收处理器的应用程序进行处理。

  在一些实施例中,可以使用附加到所获取的数据包的末尾的帧校验序列来评估原始包。如果确认了帧校验序列,则可以将有效负载传送到应用程序。

  然后,该方法继续进行到步骤730。

  在前述说明书中,已经参照可以随实施方式而变化的许多具体细节描述了实施例。可以对所描述的实施例进行某些修改和改变。通过考虑此处公开的发明的详细说明和实践,其他实施例对于本领域技术人员而言是显而易见的。所述说明书和示例仅被认为是示例性的,本发明的真实范围和精神由所附权利要求书指示。附图中所示的步骤顺序旨在仅用于说明性目的,并不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实施相同方法的同时,可以以不同顺序执行这些步骤。

《主机系统和集成电路加速系统之间有效而可靠的消息通道.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)