一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种网卡控制器、网卡控制方法、设备及介质与流程

2023-01-15 08:26:00 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体涉及数据处理技术领域,尤其涉及一种网卡控制器、网卡控制方法、设备及介质。


背景技术:

2.随着云计算、互联网及数据中心的迅速发展,需要处理的网络负载、网络通信、报文发送等日益增加。为了降低中央处理器(central processing unit,cpu)的负担,通过专门处理网络负载及提供网络接口功能的加速引擎或者专用处理器来协助cpu处理网络负载。其中,网卡(network interface card,nic)也叫网络适配器,提供计算机的网络传输功能,智能网卡通过整合可编程功能和计算资源可以更好地提供如网络虚拟化、负载均衡等功能。但是,智能网卡自身的存储资源有限,一般需要借助外部存储资源来存储及读取需要进行网络传输的数据例如待发送的网络报文,而这些外部存储资源的数据读取及反馈带来的延时是不确定的,每一次数据读取所涉及到的数据规模也是难以预计的,因此造成了如何提升数据读取及发送效率的技术难题。
3.为此,本技术提供了一种网卡控制器、网卡控制方法、设备及介质,用于解决现有技术中存在的问题。


技术实现要素:

4.本技术实施例提供了一种网卡控制器、网卡控制方法、设备及介质,用于解决现有技术中存在的问题。
5.第一方面,本技术提供了一种网卡控制器。所述网卡控制器包括:第一先进先出存储器,用于存储多个待发送报文各自的存储地址和报文长度,其中所述网卡控制器通过所述第一先进先出存储器发起多个成对的读取操作和写入操作,第一读取操作和第一写入操作是同一对且属于所述多个成对的读取操作和写入操作中的任一对;报文读取控制器,与所述第一先进先出存储器连接,响应于所述第一读取操作,获取所述第一先进先出存储器输出的存储地址作为当前存储地址,其中所述报文读取控制器还用于发送与所述当前存储地址相关联的待发送报文给发送端口控制器;第二先进先出存储器,与所述第一先进先出存储器连接,响应于所述第一写入操作,获取所述第一先进先出存储器输出的报文长度作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器,其中所述当前端口信息是基于所述第一读取操作生成;所述发送端口控制器,与所述报文读取控制器和所述第二先进先出存储器连接,响应于接收到来自所述报文读取控制器的报文数据,发送所述报文数据给所述第二先进先出存储器输出的端口信息所指示的端口以及当所发送的报文数据的发送长度等于所述第二先进先出存储器输出的长度信息所指示的长度时确定结束发送与所述报文数据相关联的待发送报文。
6.在本技术的第一方面的一种可能的实现方式中,所述第一读取操作和所述第一写入操作同时被发起。
7.在本技术的第一方面的一种可能的实现方式中,所述报文读取控制器响应于所述第一读取操作所获取的所述当前存储地址和所述第二先进先出存储器响应于所述第一写入操作所获取的所述当前长度信息分别对应所述多个待发送报文各自的存储地址和报文长度中的同一对待发送报文的存储地址和报文长度。
8.在本技术的第一方面的一种可能的实现方式中,所述网卡控制器在通过所述第一先进先出存储器发起所述第一读取操作时生成所述当前端口信息。
9.在本技术的第一方面的一种可能的实现方式中,至少在所述报文读取控制器发送与所述当前存储地址相关联的待发送报文给所述发送端口控制器之前,基于所述第一读取操作生成的所述当前端口信息被生成并且被写入所述第二先进先出存储器。
10.在本技术的第一方面的一种可能的实现方式中,所述多个成对的读取操作和写入操作被连续地发起,所述报文读取控制器响应于被连续发起的多个读取操作依次获取所述第一先进先出存储器输出的多个存储地址作为所述当前存储地址,所述第二先进先出存储器响应于被连续发起的多个写入操作依次获取所述第一先进先出存储器输出的多个报文长度作为所述当前长度信息。
11.在本技术的第一方面的一种可能的实现方式中,所述发送端口控制器在确定结束发送与所述报文数据相关联的待发送报文之后,响应于接收到来自所述报文读取控制器的下一报文数据,发送所述下一报文数据给所述第二先进先出存储器输出的下一端口信息所指示的端口以及当所发送的下一报文数据的发送长度等于所述第二先进先出存储器输出的下一长度信息所指示的长度时确定结束发送与所述下一报文数据相关联的待发送报文。
12.在本技术的第一方面的一种可能的实现方式中,所述下一报文数据是在所述发送端口控制器确定结束发送与所述报文数据相关联的待发送报文之后从所述报文读取控制器接收,所述下一端口信息相对于所述第二先进先出存储器输出的端口信息,所述下一长度信息相对于所述第二先进先出存储器输出的长度信息。
13.在本技术的第一方面的一种可能的实现方式中,所述报文读取控制器与数据存储器连接并且根据所述当前存储地址从所述数据存储器获取与所述当前存储地址相关联的待发送报文。
14.在本技术的第一方面的一种可能的实现方式中,所述数据存储器相对于所述网卡控制器单独提供。
15.第二方面,本技术提供了一种网卡控制方法。所述网卡控制方法包括:通过第一先进先出存储器发起多个成对的读取操作和写入操作,其中,所述第一先进先出存储器用于存储多个待发送报文各自的存储地址和报文长度,第一读取操作和第一写入操作是同一对且属于所述多个成对的读取操作和写入操作中的任一对;通过与所述第一先进先出存储器连接的报文读取控制器,响应于所述第一读取操作,获取所述第一先进先出存储器输出的存储地址作为当前存储地址,其中所述报文读取控制器还用于发送与所述当前存储地址相关联的待发送报文给发送端口控制器;通过与所述第一先进先出存储器连接的第二先进先出存储器,响应于所述第一写入操作,获取所述第一先进先出存储器输出的报文长度作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器,其中所述当前端口信息是基于所述第一读取操作生成;通过与所述报文读取控制器和所述第二先进先出存储器连接的所述发送端口控制器,响应于接收到来自所述报文读取控制器的
报文数据,发送所述报文数据给所述第二先进先出存储器输出的端口信息所指示的端口以及当所发送的报文数据的发送长度等于所述第二先进先出存储器输出的长度信息所指示的长度时确定结束发送与所述报文数据相关联的待发送报文。
16.在本技术的第二方面的一种可能的实现方式中,所述报文读取控制器响应于所述第一读取操作所获取的所述当前存储地址和所述第二先进先出存储器响应于所述第一写入操作所获取的所述当前长度信息分别对应所述多个待发送报文各自的存储地址和报文长度中的同一对待发送报文的存储地址和报文长度,其中,至少在所述报文读取控制器发送与所述当前存储地址相关联的待发送报文给所述发送端口控制器之前,基于所述第一读取操作生成的所述当前端口信息被生成并且被写入所述第二先进先出存储器。
17.在本技术的第二方面的一种可能的实现方式中,所述多个成对的读取操作和写入操作被连续地发起,所述报文读取控制器响应于被连续发起的多个读取操作依次获取所述第一先进先出存储器输出的多个存储地址作为所述当前存储地址,所述第二先进先出存储器响应于被连续发起的多个写入操作依次获取所述第一先进先出存储器输出的多个报文长度作为所述当前长度信息。
18.在本技术的第二方面的一种可能的实现方式中,所述发送端口控制器在确定结束发送与所述报文数据相关联的待发送报文之后,响应于接收到来自所述报文读取控制器的下一报文数据,发送所述下一报文数据给所述第二先进先出存储器输出的下一端口信息所指示的端口以及当所发送的下一报文数据的发送长度等于所述第二先进先出存储器输出的下一长度信息所指示的长度时确定结束发送与所述下一报文数据相关联的待发送报文,其中,所述下一报文数据是在所述发送端口控制器确定结束发送与所述报文数据相关联的待发送报文之后从所述报文读取控制器接收,所述下一端口信息相对于所述第二先进先出存储器输出的端口信息,所述下一长度信息相对于所述第二先进先出存储器输出的长度信息。
19.第三方面,本技术实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
20.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
21.第五方面,本技术实施例还提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
22.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本技术实施例提供的一种网卡发送报文数据的示意图;图2为本技术实施例提供的一种网卡控制器的示意图;
图3为本技术实施例提供的一种网卡控制方法的流程示意图;图4为本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
24.下面将结合附图对本技术实施例作进一步地详细描述。
25.本技术实施例提供了一种网卡控制器、网卡控制方法、设备及介质,用于解决现有技术中存在的问题。其中,本技术实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。
26.应当理解的是,在本技术的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
27.图1为本技术实施例提供的一种网卡发送报文数据的示意图。如图1所示,网卡控制器100与数据存储器120连接。图1中示例性地示出了三个端口,分别为端口110、端口112及端口114。网卡控制器100从外部获取待发送报文的存储地址130,然后根据待发送报文的存储地址130从数据存储器120中获取相关的报文数据,最后从网卡控制器100的多个端口中通过相应端口发送。应当理解的是,随着云计算、互联网及数据中心的迅速发展,需要通过网卡如智能网卡来进行网络传输的数据规模、进行发送的网络报文的数量也日益增加。而网卡自身的存储资源有限,例如基于现场可编程逻辑门阵列(field-programmable gate array,fpga)实现的网卡所能提供的存储空间是受限于fpga的存储能力,因此需要借助外部存储资源如图1所示的数据存储器120。具体地,外部存储资源如图1所示的数据存储器120用于存储需要通过网卡进行网络传输的数据例如待发送的网络报文。网卡控制器100是网卡如智能网卡的内部控制单元,或者说代表了网卡在网络报文读取及发送方面的控制功能。另外,网卡一般还包括多个端口,例如图1中示例性示出的端口110、端口112及端口114。网卡的多个端口可以是网卡控制器100的一部分,也可能另行提供。图1中示例性地示出了多个端口如端口110、端口112及端口114在代表了网卡控制器100的方框中,这些端口也可以理解为相对于网卡控制器100而另行提供。网卡控制器100用于确定待发送的网络报文需要通过哪个端口进行发送,例如可以通过端口110发送或者例如可以通过端口114发送。实践中,网卡控制器100在通过某个端口发送数据之前,需要先从数据存储器120中读取数据,并且在数据存储器120返回数据之后开始发送数据。但是,数据存储器120作为相对于网卡控制器100的外部存储器,可能位于同一台服务器上,也可能不位于同一台服务器上,而且数据存储器120可能还包括多个存储区域或者数据存储器120本身也可能是多个存储设备的集合例如多个存储节点的集合等。因此,网卡控制器100难以事先判断从数据存储器120读取及返回数据所带来的延时,网卡控制器100根据待发送报文的存储地址130向数据存储器120进行数据读取操作并且只能等到数据存储器120返回数据后才能进行后续的数据发送,而延时可能高达几百纳秒(ns)。此外,网卡控制器100需要进行网络传输的数据规模,例如需要通过端口发送的网络报文的长度,也是难以预计的。因此,具体的要发送的网络报文在数据存储器120中的存储格式、所占据的存储空间的大小还有网卡控制器100与数据存储器120之间的数据传输方式等,这些因素以及其它可能的因素会影响从网卡控制器100向数
据存储器120发出数据读取请求到数据存储器120返回数据之间的延时,还可能影响这一次的数据读取所涉及到的数据规模及耗时。而且,因为网卡控制器100自身的存储资源有限,因此一般不通过网卡控制器100或者网卡来存储待发送的网络报文本身,而是向网卡控制器100提供待发送报文的存储地址130,然后由网卡控制器100来根据待发送报文的存储地址130向数据存储器120发起数据读取请求,例如根据待发送报文的存储地址130请求获取数据存储器120中的特定存储块、存储区域的数据,再例如当数据存储器120代表多个存储节点时根据待发送报文的存储地址130从指定节点的指定位置获取数据。这样意味着网络报文的读取及转发必须充分考虑外部存储资源如数据存储器120所带来的不确定的且难以预计的延时及数据规模。进一步地,因为从数据存储器120返回的是报文数据例如待发送的网络报文,因此数据存储器120返回的信息里一般是不包括如返回的数据该发送给哪个端口的内容。而网卡一般对接多个端口,例如图1中示例性示出的端口110、端口112及端口114,但是网卡控制器100在数据存储器120返回数据后应尽快开始发送数据到对应的端口。如果存在多个端口都有要发送的报文数据,必须确保每个待发送的网络报文被传输到对应的正确的端口。如果等待当前端口的数据返回并且完成数据发送后才再次发起数据读取,虽然能保证待发送的网络报文被发送到正确的端口,但是这样做也降低了网络报文读取及发送的并行度,不利于提升数据读取及发送效率,也不利于降低整体延时。下面结合图2详细说明本技术实施例提供的网卡控制器的各种改进以克服这样的技术难题。
28.图2为本技术实施例提供的一种网卡控制器的示意图。如图2所示,所述网卡控制器200包括:第一先进先出(first input first output,fifo)存储器202,用于存储多个待发送报文各自的存储地址和报文长度,其中所述网卡控制器200通过所述第一先进先出存储器202发起多个成对的读取操作和写入操作,第一读取操作和第一写入操作是同一对且属于所述多个成对的读取操作和写入操作中的任一对;报文读取控制器204,与所述第一先进先出存储器202连接,响应于所述第一读取操作,获取所述第一先进先出存储器202输出的存储地址230作为当前存储地址,其中所述报文读取控制器204还用于发送与所述当前存储地址(也即存储地址230)相关联的待发送报文给发送端口控制器208;第二先进先出存储器206,与所述第一先进先出存储器202连接,响应于所述第一写入操作,获取所述第一先进先出存储器202输出的报文长度232作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器206,其中所述当前端口信息是基于所述第一读取操作生成;所述发送端口控制器208,与所述报文读取控制器204和所述第二先进先出存储器206连接,响应于接收到来自所述报文读取控制器204的报文数据240,发送所述报文数据240给所述第二先进先出存储器206输出的端口信息所指示的端口(图2中标识为端口信息及长度信息242)以及当所发送的报文数据240的发送长度等于所述第二先进先出存储器206输出的长度信息(图2中标识为端口信息及长度信息242)所指示的长度时确定结束发送与所述报文数据240相关联的待发送报文。
29.继续参阅图2,第一先进先出存储器202和第二先进先出存储器206均采用先进先出存储机制,也就是先进先出,这意味着按照写入的先后次序,第一先进先出存储器202和第二先进先出存储器206各自输出其中存储的数据。其中,第一先进先出存储器202存储多个待发送报文各自的存储地址和报文长度,这意味着先写入第一先进先出存储器202的给定待发送报文的存储地址和报文长度也先输出,并且在该给定待发送报文输出后,第一先
进先出存储器202输出的是相对于该给定待发送报文的下一个被写入的待发送报文的存储地址和报文长度。应当理解的是,先进先出存储机制的具体实现,可以采用任意合适的电子电路、逻辑元件、代码、固件、软件、硬件或者这些的组合,在此不做具体限定。第一先进先出存储器202和第二先进先出存储器206的运行原理均满足先进先出的定义,也就是先写入的数据被先输出,或者说按照写入数据的先后次序来依次输出数据,这样输出数据所生成的数据流有利于后续处理。另外,第一先进先出存储器202所存储的多个待发送报文各自的存储地址和报文长度,这些多个待发送报文各自的存储地址和报文长度被写入第一先进先出存储器202的先后次序,也是第一先进先出存储器202的输出的先后次序,可以参考任何合适的方式。在一些实施例中,网卡控制器200从外部获取待发送报文的存储地址及报文长度,并且可以参考从外部获取的待发送报文的存储地址及报文长度的先后次序。在另一些实施例中,网卡控制器200可以按照预先编写的程序或者接收到的指令来确定第一先进先出存储器202的写入的先后次序,而且第一先进先出存储器202的写入的先后次序可以与网卡控制器200从外部获取的先后次序一致或者不一致。但是,第二先进先出存储器206的写入的先后次序是基于第一先进先出存储器202的输出的先后次序,这是因为,第二先进先出存储器206,与所述第一先进先出存储器202连接,响应于所述第一写入操作,获取所述第一先进先出存储器202输出的报文长度232作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器206。也就是说,第一先进先出存储器202先输出的报文长度例如报文长度232会被先写入第二先进先出存储器206,并且也会先被第二先进先出存储器206输出。
30.继续参阅图2,所述网卡控制器200通过所述第一先进先出存储器202发起多个成对的读取操作和写入操作,第一读取操作和第一写入操作是同一对且属于所述多个成对的读取操作和写入操作中的任一对。这里,成对的读取操作和写入操作分别是针对报文读取控制器204和第二先进先出存储器206,读取操作用于使得报文读取控制器204开始读取存储在数据存储器220的报文数据也就是获取待发送的网络报文的内容,而写入操作用于使得第二先进先出存储器206将第一先进先出存储器202的输出的报文长度写入第二先进先出存储器206。上面提到,第一先进先出存储器202所存储的多个待发送报文各自的存储地址和报文长度,这里成对的读取操作和写入操作与多个待发送报文对应,同一对的读取操作和写入操作对应的也是同一个待发送报文的存储地址和报文长度,例如图2中示出的报文长度232和存储地址230对应同一个待发送报文。因此,网卡控制器200需要发送报文时,通过第一先进先出存储器202发起多个成对的读取操作和写入操作,成对的读取操作和写入操作中的每一对的读取操作和写入操作对应多个待发送报文中的一个待发送报文。应当理解的是,网卡控制器200发送网络报文的时间、频率等可以是任意的,在一些实施例中网卡控制器200可以不间断地连续发送多个网络报文,在另一些实施例中网卡控制器200可以按照预设间隔或者不固定间隔发送多个网络报文。只要当网卡控制器200要发送给定网络报文时,通过第一先进先出存储器202发起与该给定网络报文对应的同一对的读取操作和写入操作。因此,网卡控制器200可以按照任意合适的次序发送多个网络报文以及按照任意合适的时间安排来启动多个网络报文各自的发送。并且,通过第一先进先出存储器202发起多个成对的读取操作和写入操作,可以采用任意合适的控制机制,例如网卡控制器200可以发出控制指令,再例如第一先进先出存储器202可以将控制信息与输出的数据一起传输给
下游元件如第二先进先出存储器206,下游元件如第二先进先出存储器206在接到来自第一先进先出存储器202的输出同时也从控制信息如写入操作的信号获悉第一先进先出存储器202发起了新的写入操作。只要能使得下游元件可以响应于被发起的读取操作或者写入操作执行后续流程,网卡控制器200可以采用任意合适的控制机制来通过第一先进先出存储器202发起多个成对的读取操作和写入操作。
31.继续参阅图2,针对所述多个成对的读取操作和写入操作中的任一对,设为第一读取操作和第一写入操作。报文读取控制器204,响应于所述第一读取操作,获取所述第一先进先出存储器202输出的存储地址230作为当前存储地址,其中所述报文读取控制器204还用于发送与所述当前存储地址(也即存储地址230)相关联的待发送报文给发送端口控制器208。这里,报文读取控制器204可以从外部存储资源如数据存储器220获取报文数据,也可以从内部存储资源例如网卡自身的内存获取报文数据,在此不做具体限定。因为网卡控制器200自身的存储资源有限,因此一般不通过网卡控制器200或者网卡来存储待发送的网络报文本身,而是向报文读取控制器204提供待发送的网络报文的存储地址例如存储地址230,然后由报文读取控制器204来根据待发送报文的存储地址发起数据读取请求,例如根据待发送报文的存储地址请求获取数据存储器220中的特定存储块、存储区域的数据,再例如当数据存储器220代表多个存储节点时根据待发送报文的存储地址从指定节点的指定位置获取数据。一般情况下,数据存储器220是外部存储资源,这样意味着网络报文的读取及转发必须充分考虑外部存储资源如数据存储器220所带来的不确定的且难以预计的延时及数据规模。与第一读取操作对应的是第一写入操作。第二先进先出存储器206,与所述第一先进先出存储器202连接,响应于所述第一写入操作,获取所述第一先进先出存储器202输出的报文长度232作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器206,其中所述当前端口信息是基于所述第一读取操作生成。这里,一方面报文读取控制器204从第一先进先出存储器202获取与第一读取操作对应的存储地址230,另一方面第二先进先出存储器206从第一先进先出存储器202获取与第一写入操作对应的报文长度232。并且,第二先进先出存储器206还写入报文长度232也就是当前长度信息和当前端口信息。这里,当前端口信息是基于第一读取操作生成,因此也代表了与存储地址230和报文长度232所对应待发送的网络报文要被发送的端口。当前端口信息是基于第一读取操作生成,因此至少要等到第一读取操作被发起时才会生成当前端口信息。当前端口信息可以是在第一读取操作被发起同时生成也可以在此之后,但是当前端口信息必须跟报文长度232所对应的当前长度信息一起被写入第二先进先出存储器206。因此,第二先进先出存储器206响应于第一写入操作来获取报文长度232,并且要将与报文长度232对应的长度信息和基于第一读取操作生成的当前端口信息一起写入第二先进先出存储器206。第一读取操作和第一写入操作是所述多个成对的读取操作和写入操作中的任一对,在一些实施例中被同时发起,在另一些实施例中不被同时发起,只要满足上述的运行原理。
32.继续参阅图2,所述发送端口控制器208,与所述报文读取控制器204和所述第二先进先出存储器206连接,响应于接收到来自所述报文读取控制器204的报文数据240,发送所述报文数据240给所述第二先进先出存储器206输出的端口信息所指示的端口(图2中标识为端口信息及长度信息242)以及当所发送的报文数据240的发送长度等于所述第二先进先出存储器206输出的长度信息(图2中标识为端口信息及长度信息242)所指示的长度时确定
结束发送与所述报文数据240相关联的待发送报文。这里,发送端口控制器208的运行逻辑是数据流驱动的,也就是由来自报文读取控制器204所发送的数据如报文数据240驱动。上面提到,网络报文的读取及转发必须充分考虑外部存储资源如数据存储器220所带来的不确定的且难以预计的延时及数据规模。因此,当网卡控制器200要发送给定网络报文时,发起与该给定网络报文对应的同一对的读取操作和写入操作,然后第二先进先出存储器206根据写入操作写入长度信息和端口信息以及报文读取控制器204根据读取操作向数据存储器220提出数据读取请求。数据存储器220返回数据的时间,是难以预计的,可能延时高达几百纳秒(ns)。而发送端口控制器208从报文读取控制器204获取的报文数据本身,或者说通过报文读取控制器204间接地从数据存储器220读取的数据,不会指示这些报文数据要被发送到哪个端口。如果存在多个端口都有要发送的报文数据,发送端口控制器208必须确保每个待发送的网络报文被传输到对应的正确的端口。为此,发送端口控制器208,响应于接收到来自所述报文读取控制器204的报文数据240,读取第二先进先出存储器206输出的端口信息和长度信息,例如图2所示的端口信息及长度信息242,并且将所述第二先进先出存储器206输出的端口信息所指示的端口作为报文数据240要被发送的端口,以及将所述第二先进先出存储器206输出的长度信息作为判断与所述报文数据240相关联的待发送报文是否发送完成的参考。应当理解的是,网卡控制器200在处理多个网络报文的发送需求时,仅在最初通过第一先进先出存储器202发起多个成对的读取操作和写入操作,之后的处理流程都是由数据流驱动,也就是各个下游元件(第二先进先出存储器206、报文读取控制器204以及发送端口控制器208)均各自按照所接收到的数据来执行相应的操作,特别是发送端口控制器208是响应于通过报文读取控制器204间接地从数据存储器220读取的数据。因此,数据存储器220带来的延时,可能从几十纳秒到几百纳秒甚至更高,这些都不会影响发送端口控制器208的运行也不会影响整体流程。而且发送端口控制器208通过比对端口信息及长度信息242所指示的长度以及所发送的报文数据240的发送长度,这样可以区分开不同的网络报文各自的报文数据。如此,发送端口控制器208根据端口信息及长度信息242,也就是所述第二先进先出存储器206输出的端口信息所指示的端口以及所述第二先进先出存储器206输出的长度信息,可以区分开从报文读取控制器204传输过来的不同的网络报文各自对应的端口并且能区分开不同的网络报文各自的报文数据,从而使得不同的网络报文被准确地发送给各自对应的端口,实现了多个网络报文的发送。
33.进一步地,只要第一先进先出存储器202满足所述网卡控制器200通过所述第一先进先出存储器202发起多个成对的读取操作和写入操作,第二先进先出存储器206满足响应于所述第一写入操作获取所述第一先进先出存储器202输出的报文长度232作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器206,以及报文读取控制器204满足响应于所述第一读取操作获取所述第一先进先出存储器202输出的存储地址230作为当前存储地址,这样就使得发送端口控制器208响应于接收到来自所述报文读取控制器204的报文数据240时,可以从第二先进先出存储器206获取与报文数据240相关联的待发送报文的端口信息及长度信息242,并且将该待发送报文发送给正确的端口以及确定结束发送该待发送报文。如此,网卡控制器200发送多个网络报文的时间以及频率等灵活设定,例如不间断地连续发送多个网络报文,或者可以按照预设间隔或者不固定间隔发送多个网络报文。并且,报文读取控制器204也可以响应于被发起的多个读取操作,向数
据存储器220发起请求并将数据存储器220返回的数据传输给发送端口控制器208。一般情况下,数据存储器220返回数据的先后次序也是遵循来自报文读取控制器204的请求的次序,也因此对应多个读取操作的发起次序也就是多个网络报文的发送次序。因此,网卡控制器200的各个元件,按照多个网络报文的发送次序,首先通过第一先进先出存储器202发起多个成对的读取操作和写入操作,接着第一先进先出存储器202的各个下游元件(第二先进先出存储器206、报文读取控制器204以及发送端口控制器208)均各自按照所接收到的数据来执行相应的操作,从而实现了正确地获取多个网络报文的报文数据并将这些报文数据发送给正确的端口,进一步地还将原本复杂的控制设计转化为数据流驱动的方式实现,特别是简化了发送端口控制器208的控制逻辑。
34.总之,图2所示的网卡控制器,只要已知端口信息及长度信息,在发送网络报文完成之前就可以再次提前读取下一个网络报文的端口信息及长度信息,这样对于要通过多个端口发送多个网络报文的情况,无论报文交织或者报文不交织都可以做到连续发送,从而提高了网络报文读取及发送的并行度,也有利于提升报文数据读取及发送效率,有利于降低整体延时。并且,因为将原本复杂的控制设计转化为数据流驱动的方式实现,特别是简化了发送端口控制器208的控制逻辑,可以灵活地适配发送多个网络报文的时间、频率和安排等。
35.应当理解的是,图2所示的网卡控制器200是网卡如智能网卡的内部控制单元,或者说代表了网卡在网络报文读取及发送方面的控制功能。网卡控制器200可以是物理网卡,例如基于fpga实现的网卡中的控制单元。网卡控制器200还可以是虚拟网卡,例如通过网络虚拟化等技术在数据处理器(data processing unit,dpu)上实现。网卡控制器200可以采用软件、硬件、固件、软硬结合或者其组合的形态,只要能实现其工作原理和上述的其中部件的功能。另外,网卡控制器200作为网卡的内部控制单元或者其控制功能的集合,可以适用于任意可能的具有网络报文收发功能或者用于网络报文的读取及发送的设备,包括但是不限于,dpu或者其它适用于网络协议处理或者数据中心的网络需要的专用处理器、算力芯片、加速架构等,或者网络接口控制器(network interface controller,nic)、网络适配器(network adapter)、网络接口卡(network interface card)、局域网接收器(lan adapter)等。另外,图2中示例性示出了三个端口,分别为端口210、端口212及端口214。图2中示出的端口数量及命名仅为示例性,本技术实施例提供的网卡控制器可以与任意数量的端口对接并且这些端口可以被视为网卡的一部分也可以另行提供。
36.在一种可能的实施方式中,所述第一读取操作和所述第一写入操作同时被发起。第一读取操作和第一写入操作是所述多个成对的读取操作和写入操作中的任一对,在一些实施例中被同时发起,在另一些实施例中不被同时发起,只要满足上述的运行原理。
37.在一种可能的实施方式中,所述报文读取控制器204响应于所述第一读取操作所获取的所述当前存储地址和所述第二先进先出存储器206响应于所述第一写入操作所获取的所述当前长度信息分别对应所述多个待发送报文各自的存储地址和报文长度中的同一对待发送报文的存储地址和报文长度。在一些实施例中,所述网卡控制器200在通过所述第一先进先出存储器202发起所述第一读取操作时生成所述当前端口信息。在一些实施例中,至少在所述报文读取控制器204发送与所述当前存储地址相关联的待发送报文给所述发送端口控制器208之前,基于所述第一读取操作生成的所述当前端口信息被生成并且被写入
所述第二先进先出存储器206。如此,发送端口控制器208根据端口信息及长度信息242,也就是所述第二先进先出存储器206输出的端口信息所指示的端口以及所述第二先进先出存储器206输出的长度信息,可以区分开从报文读取控制器204传输过来的不同的网络报文各自对应的端口并且能区分开不同的网络报文各自的报文数据,从而使得不同的网络报文被准确地发送给各自对应的端口,实现了多个网络报文的发送。
38.在一些实施例中,所述多个成对的读取操作和写入操作被连续地发起,所述报文读取控制器204响应于被连续发起的多个读取操作依次获取所述第一先进先出存储器202输出的多个存储地址作为所述当前存储地址,所述第二先进先出存储器206响应于被连续发起的多个写入操作依次获取所述第一先进先出存储器202输出的多个报文长度作为所述当前长度信息。在一些实施例中,所述发送端口控制器208在确定结束发送与所述报文数据相关联的待发送报文之后,响应于接收到来自所述报文读取控制器204的下一报文数据,发送所述下一报文数据给所述第二先进先出存储器206输出的下一端口信息所指示的端口以及当所发送的下一报文数据的发送长度等于所述第二先进先出存储器206输出的下一长度信息所指示的长度时确定结束发送与所述下一报文数据相关联的待发送报文。在一些实施例中,所述下一报文数据是在所述发送端口控制器208确定结束发送与所述报文数据相关联的待发送报文之后从所述报文读取控制器204接收,所述下一端口信息相对于所述第二先进先出存储器输出的端口信息,所述下一长度信息相对于所述第二先进先出存储器输出的长度信息。如此,发送端口控制器208根据端口信息及长度信息242,也就是所述第二先进先出存储器206输出的端口信息所指示的端口以及所述第二先进先出存储器206输出的长度信息,可以区分开从报文读取控制器204传输过来的不同的网络报文各自对应的端口并且能区分开不同的网络报文各自的报文数据,从而使得不同的网络报文被准确地发送给各自对应的端口,实现了多个网络报文的发送。
39.在一种可能的实施方式中,所述报文读取控制器204与数据存储器220连接并且根据所述当前存储地址从所述数据存储器220获取与所述当前存储地址相关联的待发送报文。如此实现了获取正确的待发送报文。
40.在一种可能的实施方式中,所述数据存储器220是双倍速率同步动态随机存储器(double data rate sdram),是在同步动态随机存储器(synchronous dynamic random-access memory,sdram)基础上做的改进,double data rate sdram也简称为ddr,也就是双倍速率同步动态随机存储器ddr。
41.在一种可能的实施方式中,所述数据存储器220相对于所述网卡控制器200单独提供。
42.图3为本技术实施例提供的一种网卡控制方法的流程示意图。如图3所示,网卡控制方法包括以下步骤。
43.步骤s302:通过第一先进先出存储器发起多个成对的读取操作和写入操作,其中,所述第一先进先出存储器用于存储多个待发送报文各自的存储地址和报文长度,第一读取操作和第一写入操作是同一对且属于所述多个成对的读取操作和写入操作中的任一对。
44.步骤s304:通过与所述第一先进先出存储器连接的报文读取控制器,响应于所述第一读取操作,获取所述第一先进先出存储器输出的存储地址作为当前存储地址,其中所述报文读取控制器还用于发送与所述当前存储地址相关联的待发送报文给发送端口控制
器。
45.步骤s306:通过与所述第一先进先出存储器连接的第二先进先出存储器,响应于所述第一写入操作,获取所述第一先进先出存储器输出的报文长度作为当前长度信息以及写入所述当前长度信息和当前端口信息到所述第二先进先出存储器,其中所述当前端口信息是基于所述第一读取操作生成。
46.步骤s308:通过与所述报文读取控制器和所述第二先进先出存储器连接的所述发送端口控制器,响应于接收到来自所述报文读取控制器的报文数据,发送所述报文数据给所述第二先进先出存储器输出的端口信息所指示的端口以及当所发送的报文数据的发送长度等于所述第二先进先出存储器输出的长度信息所指示的长度时确定结束发送与所述报文数据相关联的待发送报文。
47.图3所示的网卡控制方法,只要已知端口信息及长度信息,在发送网络报文完成之前就可以再次提前读取下一个网络报文的端口信息及长度信息,这样对于要通过多个端口发送多个网络报文的情况,无论报文交织或者报文不交织都可以做到连续发送,从而提高了网络报文读取及发送的并行度,也有利于提升报文数据读取及发送效率,有利于降低整体延时。并且,因为将原本复杂的控制设计转化为数据流驱动的方式实现,特别是简化了发送端口控制器208的控制逻辑,可以灵活地适配发送多个网络报文的时间、频率和安排等。
48.在一种可能的实施方式中,所述报文读取控制器响应于所述第一读取操作所获取的所述当前存储地址和所述第二先进先出存储器响应于所述第一写入操作所获取的所述当前长度信息分别对应所述多个待发送报文各自的存储地址和报文长度中的同一对待发送报文的存储地址和报文长度,其中,至少在所述报文读取控制器发送与所述当前存储地址相关联的待发送报文给所述发送端口控制器之前,基于所述第一读取操作生成的所述当前端口信息被生成并且被写入所述第二先进先出存储器。
49.在一种可能的实施方式中,所述多个成对的读取操作和写入操作被连续地发起,所述报文读取控制器响应于被连续发起的多个读取操作依次获取所述第一先进先出存储器输出的多个存储地址作为所述当前存储地址,所述第二先进先出存储器响应于被连续发起的多个写入操作依次获取所述第一先进先出存储器输出的多个报文长度作为所述当前长度信息。
50.在一种可能的实施方式中,所述发送端口控制器在确定结束发送与所述报文数据相关联的待发送报文之后,响应于接收到来自所述报文读取控制器的下一报文数据,发送所述下一报文数据给所述第二先进先出存储器输出的下一端口信息所指示的端口以及当所发送的下一报文数据的发送长度等于所述第二先进先出存储器输出的下一长度信息所指示的长度时确定结束发送与所述下一报文数据相关联的待发送报文,其中,所述下一报文数据是在所述发送端口控制器确定结束发送与所述报文数据相关联的待发送报文之后从所述报文读取控制器接收,所述下一端口信息相对于所述第二先进先出存储器输出的端口信息,所述下一长度信息相对于所述第二先进先出存储器输出的长度信息。
51.参见图4,图4是本技术实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备
400能够用于实现上述的本技术实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本技术实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本技术实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
52.应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
53.处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processing unit,cpu)、图形处理器(graphic processing unit,gpu)、神经网络处理器(neural-network processing unit,npu)、张量处理器(tensor processing unit,tpu)或数据处理器(data processing unit,dpu)等一种或多种的组合,本技术实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如fpga或数字信号处理器(digital signal processor,dsp)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,lin)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
54.存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。存储器430也可用于存储程序代码和数据,
以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
55.总线440可以是快捷外围部件互连标准(peripheral component interconnect express,pcie)总线,或扩展工业标准结构(extended industry standard architecture,eisa)总线、统一总线(unified bus,ubus或ub)、计算机快速链接(compute express link,cxl)、缓存一致互联协议(cache coherent interconnect for accelerators,ccix)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
56.本技术实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。本技术实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行上述方法实施例中的方法步骤。
57.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本技术实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
58.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到
通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
59.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本技术实施例进行各种改动和变型而不脱离本技术实施例的精神和范围。本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本技术实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本技术实施例的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献