System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种多引擎多流并行运行的方法及系统技术方案_技高网

一种多引擎多流并行运行的方法及系统技术方案

技术编号:40286446 阅读:13 留言:0更新日期:2024-02-07 20:38
本发明专利技术公开了一种多引擎多流并行运行的方法及系统,该方法应用于智能网卡SmartNIC/数据处理器DPU架构的多个业务引擎处理中;包括:多个业务引擎之间共享一个RAM缓存,且多个业务引擎之间共享线程资源;同一个业务的不同数据流之间多线程并行处理,同一个业务的相同数据流之间保序处理;其中,多线程并行处理是采用多线程时分复用方式进入线程调度流程,共享Memory访问逻辑。本发明专利技术解决SmartNIC/DPU的多个引擎之间的多线程资源共享问题,极大程度减少了芯片资源的浪费,降低了芯片成本,同时也解决了同一个数据流的多个报文之间的保序问题;并提高线程并发数量和提升性能。

【技术实现步骤摘要】

本专利技术涉及智能网卡(smartnic)/数据处理器(dpu)设计领域,具体涉及一种多引擎多流并行运行的方法及系统


技术介绍

1、智能网卡(smartnic)或数据处理器(dpu)具有多种网络硬件卸载功能(如roce、tcp卸载、nof卸载、ovs卸载等),这些卸载引擎在大部分应用场景下,只会使用其中一种硬件卸载功能。且每种业务都存在多条数据流并行处理的情况,smartnic/dpu只需要保证同一条数据流的多个报文按照输入的顺序处理即可,不同数据流之间的报文不用保序。

2、传统的smartnic/dpu的多引擎架构类似如图1所示。传统的smartnic/dpu的多引擎架构为了适应多种应用场景,不得不将这些硬件卸载功能做成一个个独立的硬件引擎放置在芯片中,放置的引擎数量越多,芯片面积就越大。存在以下缺陷:

3、(1)dpu/smartnic处理业务多,需要加速引擎也多,每个引擎都会或多或少占用一些缓存(ram),而ram常常占用了芯片60%的面积。传统的设计方法造成芯片在添加很多硬件加速引擎的情况下,芯片面积、布线难度、功耗和成本都会线性增加;

4、(2)每个单独的处理引擎里都会有多线程并发处理逻辑,a引擎的多个线程逻辑无法共享b引擎的多线程资源;

5、(3)实际应用中,跑的业务会比较单一,但这个单一业务的数据带宽却很大。比如只跑ovs业务时,只有ovs引擎工作。nof引擎、toe引擎和roce引擎都不工作。ovs引擎的数据带宽压力很大,但ovs却无法享受nof引擎、toe引擎和roce引擎的多线程资源,造成资源浪费和性能不足;

6、(4)多个引擎会争夺总线,影响性能;

7、(5)同一个数据流的多个报文之间的保序困难。


技术实现思路

1、本专利技术目的在于提供一种多引擎多流并行运行的方法及系统,将不同的业务引擎的线程资源共享起来,同时把不同数据流之间的线程也并发运行起来。本专利技术解决smartnic/dpu的多个引擎之间的多线程资源共享问题,极大程度减少了芯片资源的浪费,降低了芯片成本,还解决了芯片在单一业务下性能瓶颈问题,也解决了内存墙(memorywall)带来的memory访问效率问题,同时也解决了同一个数据流的多个报文之间的保序问题,还利用l0cache提升了单条数据流的处理性能;并提高线程并发数量和提升性能。

2、本专利技术通过下述技术方案实现:

3、第一方面,本专利技术提供了一种多引擎多流并行运行的方法,该方法应用于智能网卡smartnic/数据处理器dpu架构的多个业务引擎处理中;该方法包括:

4、多个业务引擎之间共享一个ram缓存,且多个业务引擎之间共享线程资源;

5、同一个业务的不同数据流之间多线程并行处理,并行处理提升不同流报文的总体性能;同一个业务的相同数据流之间保序处理,同流报文命中同一个l0cache,提升同流报文的性能;

6、其中,多线程并行处理是采用多线程时分复用方式进入线程调度流程,共享memory访问逻辑。

7、进一步地,多个业务引擎之间共享一个ram缓存,且多个业务引擎之间共享线程资源,包括:

8、将多个业务引擎的处理逻辑需要的ram资源和线程资源分别相对应地共享为一个大的ram缓存和一个线程资源池(线程资源池也会用一些小的ram来存储各个线程的0级缓存和线程的上下文)。每个业务引擎里只保留有时序逻辑和组合逻辑资源。

9、进一步地,将每个业务引擎的处理逻辑转化为有限状态机(fsm)的处理逻辑,使用不同有限状态机即可实现不同的协议处理流程。

10、进一步地,线程资源池中每个线程资源包括0级线程缓存(l0 cathe)和各线程上下文,0级线程缓存为访问延时最低的线程缓存,并有cache的读写地址命中或不命中等属性。数据报文读写操作命中0级线程缓存后,可以减少对外部ram的访问次数,大大降低访问延时,提升引擎的处理性能。0级线程缓存一般用于存储一条数据流的上下文,数据流id相同的报文属于同一条数据流,同一条数据流的多个报文入队列时,总是找寻其数据流id和本报文数据流id相同的线程的队列入队,这样不仅便于同流保序,也可以大大提高l0cache的命中率,提升单条数据流的处理性能;

11、当调度api输入请求命令里的报文时,则优先选择上次处理的数据流id(flowid)和当前报文的数据流id(flowid)相同的线程进行报文调度,便于命中线程里的0级线程缓存(l0cathe),提升性能。

12、进一步地,当调度api输入请求命令里的报文时,则优先选择上次处理的数据流id(flowid)和当前报文的数据流id(flowid)相同的线程进行报文调度,包括:

13、根据收到的api输入请求命令,判断api输入请求命令里报文的数据流id(flowid)和当前活跃线程中的数据流id(flowid)是否相同,得到第一判断结果;

14、若第一判断结果为相同,则到当前活跃线程的接收命令队列(fifo)里排队,进入线程调度流程;

15、若第一判断结果为不同,则判断在已经释放的空闲线程(idle thread)里上次处理的数据流id(flowid)和api输入请求命令里报文的数据流id(flowid)是否相同,得到第二判断结果;

16、若第二判断结果相同,则入队数据流id(flowid)匹配的空闲线程(idle thread),且该线程进入调入状态,不再是空闲状态;

17、若第二判断结果不同,则判断是否有空闲线程;若有,则采用轮询调度方式(roundrobin)选择一个空闲线程,将该线程的数据流id(flowid)且换成该报文的数据流id(flowid),并剔除该线程的0级线程缓存(l0 cathe)和上下文;若无,则api输入请求命令停在入口队列,等待有空闲线程再调度,并返回至判断是否有空闲线程。

18、进一步地,多线程时分复用方式,包括:

19、根据每个api输入请求命令在输入时携带这次操作的所有需要的指示信息,有限状态机记录了每个api输入请求命令的每个状态的跳转条件和执行动作等信息;

20、采用时分复用方式,当所有线程都申请到指定数量的时间片后,运行指定状态机的一个状态;当前状态运行完毕,要把下一个状态需要的信息全部存入该线程的上下文里即可。

21、进一步地,采用多线程时分复用方式进入线程调度流程,共享memory访问逻辑,具体为:

22、判断当前线程是否得以调度,并分配该线程申请的时间片;

23、若否,则等待调度;若是,则根据api输入请求命令的业务引擎id、操作码和状态码进入指定业务引擎的指定有限状态机的指定状态,同时将该线程的上文和0级线程缓存一起加载给对应的业务引擎的有限状态机;

24、进行有限状态机在处理:每次申请的时间片只处理有限状态机当前的状态,下一个状态的本文档来自技高网...

【技术保护点】

1.一种多引擎多流并行运行的方法,其特征在于,该方法应用于智能网卡SmartNIC/数据处理器DPU架构的多个业务引擎处理中;该方法包括:

2.根据权利要求1所述的一种多引擎多流并行运行的方法,其特征在于,多个业务引擎之间共享一个RAM缓存,且多个业务引擎之间共享线程资源,包括:

3.根据权利要求2所述的一种多引擎多流并行运行的方法,其特征在于,将每个业务引擎的处理逻辑转化为有限状态机的处理逻辑,使用不同有限状态机即可实现不同的协议处理流程。

4.根据权利要求2所述的一种多引擎多流并行运行的方法,其特征在于,所述线程资源池中每个线程资源包括0级线程缓存和各线程上下文,所述0级线程缓存为访问延时最低的线程缓存;

5.根据权利要求4所述的一种多引擎多流并行运行的方法,其特征在于,当调度API输入请求命令里的报文时,则优先选择上次处理的数据流ID和当前报文的数据流ID相同的线程进行报文调度,包括:

6.根据权利要求1所述的一种多引擎多流并行运行的方法,其特征在于,所述多线程时分复用方式,包括:

7.根据权利要求6所述的一种多引擎多流并行运行的方法,其特征在于,采用多线程时分复用方式进入线程调度流程,共享Memory访问逻辑,具体为:

8.一种多引擎多流并行运行的系统,其特征在于,该系统使用如权利要求1至7中任一所述的一种多引擎多流并行运行的方法,该系统包括:

9.根据权利要求8所述的一种多引擎多流并行运行的系统,其特征在于,多个业务引擎之间共享一个RAM缓存,且多个业务引擎之间共享线程资源,包括:

10.根据权利要求9所述的一种多引擎多流并行运行的系统,其特征在于,所述线程资源池中每个线程资源包括0级线程缓存和各线程上下文,所述0级线程缓存为访问延时最低的线程缓存;

...

【技术特征摘要】

1.一种多引擎多流并行运行的方法,其特征在于,该方法应用于智能网卡smartnic/数据处理器dpu架构的多个业务引擎处理中;该方法包括:

2.根据权利要求1所述的一种多引擎多流并行运行的方法,其特征在于,多个业务引擎之间共享一个ram缓存,且多个业务引擎之间共享线程资源,包括:

3.根据权利要求2所述的一种多引擎多流并行运行的方法,其特征在于,将每个业务引擎的处理逻辑转化为有限状态机的处理逻辑,使用不同有限状态机即可实现不同的协议处理流程。

4.根据权利要求2所述的一种多引擎多流并行运行的方法,其特征在于,所述线程资源池中每个线程资源包括0级线程缓存和各线程上下文,所述0级线程缓存为访问延时最低的线程缓存;

5.根据权利要求4所述的一种多引擎多流并行运行的方法,其特征在于,当调度api输入请求命令里的报文时,则优先选择上次处理的数据流i...

【专利技术属性】
技术研发人员:杨成勇王寅王万财于洪涛何朝晖
申请(专利权)人:成都北中网芯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1