一种智能网卡快速DMA设计方法、系统、设备及终端

文档序号:28681091发布日期:2022-01-29 05:43阅读:876来源:国知局
一种智能网卡快速DMA设计方法、系统、设备及终端
一种智能网卡快速dma设计方法、系统、设备及终端
技术领域
1.本发明属于智能网卡技术领域,尤其涉及一种智能网卡快速dma设计方法、系统、设备及终端。


背景技术:

2.目前,随着5g通信、物联网、云计算、大数据等技术的广泛兴起,数据流量爆炸式增长,虽然cpu的性能也在不断的发展和提高,但仍然成为大数据处理的瓶颈,toe(tcp offload engine)作为最有效的解决方案之一已经成为被研究的热点,但是目前toe的主要应用场景还仅限于处理大型数据块的服务器,比如:存储备份、检索系统及企业数据库均使用大型数据有效负载,这些特定的场景决定了智能网卡更偏向于定制型网卡,这就意味着普通的dma不一定能适合智能网卡。
3.qdma作为更高性能、更适合大块数据传输、支持多队列的dma无疑是最适合智能网卡的,但智能网卡为了适配传统网卡,它支持toe和bypass两种模式,相应的提供了这两类描述符,保证完全兼容普通网卡的场景,并且为了提高dma处理短包的性能,在发送侧的两种模式下又添加了一种专门为协议短帧服务的描述符;这种混合型的描述符使得智能网卡的快速dma需要具备鉴别、解析不同描述符并执行相应操作的能力,除此之外,toe采用会话接口,在传输层与主机间进行交互,所以快速dma也还需要建立队列和session的关联;普通的qdma支持的描述符单一、架构较为固定,并不完全适合智能网卡。
4.qdma是一种基于多队列的高性能dma,通过实现在内存中创建若干个queue pairs(队列对),分别是sq(submission queue)和cq(completion queue),sq和cq均具有一定深度的,并且数量和深度是可以进行动态配置的;对于sq来说,主机是它的生产者(主机向sq的尾部写入指针),网卡上qdma引擎是它的消费者(网卡上qdma引擎从sq的头部取出描述符指令执行);对于cq来说,网卡上qdma引擎是它的生产者(网卡上qdma引擎向cq的尾部写入对应sq描述符指令的执行结果),主机是它的消费者(主机从cq的头部读取出执行结果),当主机接收到cq时,根据执行的结果相应的释放对应sq,为了保证环形队不会出现重写或者漏读的情况,在网卡上qdma引擎中维护了doorbell寄存器来记录sq和cq的头指针和尾指针,每个sq或cq都有各自的doorbell寄存器,主机维护sq的尾指针和cq的头指针,网卡上的qdma引擎维护sq二等头指针和cq的尾指针,通过这种方式实现主机和网卡之间描述符的交互。
5.xilinx推出过一款高性能的qdma,支持h2c(host to card:主机到网卡)、c2h(card to host:网卡到主机)以及c2h cmpt(card to host completion)三种类型各2k个环形队列,它是通过qdma中维护doorbell寄存器,通过解析描述符完成数据的发送和接收,支持支持2k个msix中断,最多支持4个physical function和252个virtual function,每个function最多支持8个msix中断,以及多种类型的数据接口、速率等功能配置,适用于多种普通网卡的工作场景。
6.xilinx的qdma对描述符解析格式固定,不能支持toe网卡中的混合描述符并且没
有session的概念,不能建立起队列和session之间的关系;xilinx的qdma只有c2h的cmpt的队列,没有为h2c方向提供描述符执行结果的队列。xilinx的qdma中每个function最多支持8个中断向量,这种方式无疑为multi-function的用户提供了便利,但是并不适合toe网卡,因为这样不能为每个cmpt队列提供唯一的中断向量,这样会增加网卡的设计复杂度。所以更需要一种适配toe混合描述符,更加灵活可配的新型快速dma。
7.通过上述分析,现有技术存在的问题及缺陷为:
8.(1)目前toe的主要应用场景仅限于处理大型数据块的服务器,特定的场景决定智能网卡更偏向于定制型网卡,即普通的dma不一定适合智能网卡。
9.(2)普通的qdma支持的描述符单一、架构较为固定,并不完全适合智能网卡。
10.(3)xilinx的qdma对描述符解析格式固定,不能支持toe网卡中的混合描述符并且没有session的概念,不能建立起队列和session之间的关系。
11.(4)xilinx的qdma只有c2h的cmpt的队列,没有为h2c方向提供描述符执行结果的队列。
12.(5)xilinx的qdma中每个function最多支持8个中断向量,但是并不适合toe网卡,因为这样不能为每个cmpt队列提供唯一的中断向量,这样会增加网卡的设计复杂度。
13.解决以上问题及缺陷的难度为:快速dma需要具有识别、处理不同描述符的能力,将各类描述符在适应的场景中发挥最大的优势;将session和队列进行映射,需要软硬件协同配合建立起相应的联系。
14.解决以上问题及缺陷的意义为:快速dma为智能网卡提供多场景的支持;为智能网卡间的session会话提供良好的快速dma服务;去除多function的场景更加符合智能网卡的应用,中断向量和队列的绑定减轻了设计的复杂度。


技术实现要素:

15.针对现有技术存在的问题,本发明提供了一种智能网卡快速dma设计方法、系统、设备及终端,尤其涉及一种基于混合描述符的智能网卡快速dma设计方法、系统、设备及终端。
16.本发明是这样实现的,一种智能网卡快速dma设计方法,所述智能网卡快速dma设计方法包括以下步骤:
17.步骤一,通过h2c doorbell寄存器维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;通过h2c流控调度对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;
18.步骤二,通过h2c描述符引擎根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;
19.步骤三,通过h2c cmpt引擎根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;
20.步骤四:通过c2h流控调度对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制;
21.步骤五,通过c2h doorbell寄存器维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;
22.步骤六,通过c2h描述符缓存对列对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;
23.步骤七,通过c2h描述符引擎根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;
24.步骤八,通过c2h cmpt引擎根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;
25.步骤九,当c2h和h2c的特定cq完成后以及异常状态发生时,通过中断处理模块组装特定的msix报文上传至host。
26.在本发明中步骤一:为h2c侧数据提供有效的流控调度机制;步骤二:正常的获取描述符,对描述符分类处理,是支持混合描述符的基础。步骤三:完成cq的写回,向host反馈缓存以及命令执行情况;步骤五:同步骤一,为c2h侧提供有效的流控调度机制;这一步其实和步骤一是并行的,代表两个方向。步骤六:预取描述符,减少dma传输数据的时延。步骤七:根据描述符完成c2h侧数据的搬移;步骤八:完成cq的写回,向host反馈命令执行情况。
27.进一步,所述h2c侧的数据处理流程,包括:
28.(1)host通过配置h2c侧doorbell,将描述符信息更新至硬件板卡;
29.(2)流控调度选择相应队列的描述符进行获取;
30.(3)通过doorbell寄存器给出的相关信息,通过dma引擎经过长度及4k边界等处理向axi slave发送读申请;
31.(4)获取到描述后,首先对描述度进行分类识别,根据描述符中的opcode将对应的类型传入不同的描述符引擎;
32.(5)如果是toe数据描述符,则根据描述符中的地址和长度通过dma引擎经过长度及4k边界等处理向axi slave发送读数据申请,将返回数据传输至toe,并且判断本次描述符的last位是否为1;
33.(6)如果last位为0则继续获取同一session的描述符,直至last为1,过程中重复执行步骤(5);
34.(7)如果last位为1则等待toe反馈回的状态,toe上面相应缓存空间以及执行结果的反馈,根据信息组装完成报文;
35.(8)将组装好的完成报文通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将完成报文写入对应的cmpt队列,同时更新cq的doorbell;
36.(9)组装相应向量号的msix中断上传;
37.(10)如果是toe命令描述符,则描述符中携带的就是本次将要传输的数据,所以直接将信息载荷发送至toe,等待toe的反馈状态,toe上相应命令的缓存空间以及执行结果,根据信息组装完成报文;
38.(11)同样的执行步骤(8)和步骤(9),完成本次描述符的执行;
39.(12)如果是bypass数据描述符,那本次执行的数据一定是独立的且透传过toe的,故根据描述符中的地址和长度通过dma引擎经过长度及4k边界等处理向axi slave发送读数据申请,将返回数据传输至toe;
40.(13)dma自己组装完成报文,包括本次描述符的执行结果;
41.(14)同样执行步骤(8)和步骤(9),完成本次描述符的执行;
42.(15)如果是bypass命令描述符,则描述符中携带的是本次想要bypass给toe的命令,故直接将信息载荷发送至toe,并且自己组装完成报文;
43.(16)同样的执行步骤(8)和步骤(9),完成本次描述符的执行。
44.进一步,所述c2h侧的数据处理流程,包括:
45.(1)host通过配置c2h侧doorbell,将描述符信息更新至硬件板卡;
46.(2)流控调度选择相应队列的描述符进行预取;
47.(3)通过doorbell寄存器给出的相关信息,通过dma引擎经过长度及4k边界等处理向axi slave发送读申请;
48.(4)将收到的描述符信息按照队列存进相应的缓存,并实时更新缓存信息;
49.(5)如果是toe数据描述符,则对各个队列的描述度进行提取及预解析;
50.(6)当toe有数据发送至dma时,根据对应的预解析的描述符对数据进行搬移,如果没有对应的描述度则主动去申请;
51.(7)由于有多个数据共用一条描述符或者一个数据用多条描述符的情况,所以如果是一个数据占用多条描述符,则对最后一个描述符的空间使用情况进行记录,如果是多条数据共用一个描述符,则对描述符的使用情况进行计时,一旦超时便提前结束本次传输,避免描述符过长时间不会被使用完毕;
52.(8)将数据按照描述符中的信息通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将数据写到对应的地址;
53.(9)根据描述符空间使用情况以及是否超时等信息组装完成报文,将组装好的完成报文通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将完成报文写入对应的cmpt队列,同时更新cq的doorbell;
54.(10)组装相应向量号的msix中断上传;
55.(11)如果是bypass数据描述符,则不需要解析描述符;
56.(12)当toe有bypass类型数据发送至dma时,向缓存区中提取相应队列的描述度即可,bypass类型数据不存在描述符共用或多用的情况,所以完全是数据和描述符是一对一的关系;
57.(13)将数据按照描述符中的信息通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将数据写到对应的地址;
58.(14)根据描述符空间使用情况等信息组装完成报文,将组装好的完成报文通过dma引擎经过长度以及4k边界等处理向axi slave发送写数据请求,将完成报文写入对应的cmpt队列,同时更新cq的doorbell;
59.(15)同样执行步骤(10)完成本次传输。
60.本发明的另一目的在于提供一种应用所述的智能网卡快速dma设计方法设计得到的智能网卡快速dma,所述智能网卡快速dma支持混合描述符,在h2c方向包括toe数据描述符、bypass数据描述符、直接携带短包协议数据的toe命令描述符以及bypass命令描述符四种描述符;在c2h方向包括toe数据描述符以及bypass数据描述符两种描述符;c2h和h2c方向均包含各自的完成描述符;整个系统包含八种描述符;在h2c方向每个session与唯一的队列绑定且嵌在描述符命令中,c2h方向每个session同样与唯一的队列绑定,cpu配置绑定关系且嵌在完成描述符命令中。
61.进一步,所述智能网卡快速dma,还包括:
62.h2c doorbell寄存器,用于维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;
63.h2c流控调度,用于对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;
64.h2c描述符引擎,用于根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;
65.h2c cmpt引擎,用于根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;
66.c2h doorbell寄存器,用于维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;
67.c2h流控调度,用于对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制;
68.c2h描述符缓存对列,用于对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;
69.c2h描述符引擎,用于根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;
70.c2h cmpt引擎,用于根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;
71.中断处理模块,用于当c2h和h2c的特定cq完成后以及异常状态发生时,组装特定的msix报文上传至host。
72.本发明的另一目的在于提供一种应用所述的智能网卡快速dma设计方法的智能网卡快速dma设计系统,所述智能网卡快速dma设计系统包括:
73.h2c信息获取模块,用于通过h2c doorbell寄存器维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;
74.h2c流控调度模块,用于通过h2c流控调度对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;
75.h2c描述符解析模块,用于通过h2c描述符引擎根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;
76.h2c寄存器维护模块,用于通过h2c cmpt引擎根据描述符类型及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;
77.c2h信息获取模块,用于通过c2h doorbell寄存器维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;
78.c2h流量控制模块,用于通过c2h流控调度对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制;
79.c2h描述符缓存模块,用于通过c2h描述符缓存对列对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;
80.c2h描述符解析模块,用于通过c2h描述符引擎根据队列状态及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;
81.报文组装模块,用于通过c2h cmpt引擎根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;
82.报文上传模块,用于当c2h和h2c的特定cq完成后以及异常状态发生时,通过中断处理模块组装特定的msix报文上传至host。
83.本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
84.通过h2c doorbell寄存器维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;通过h2c流控调度对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;通过h2c描述符引擎根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;通过h2c cmpt引擎根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;通过c2h doorbell寄存器维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;通过c2h流控调度对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制;通过c2h描述符缓存对列对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;通过c2h描述符引擎根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;通过c2h cmpt引擎根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;当c2h和h2c的特定cq完成后以及异常状态发生时,通过中断处理模块组装特定的msix报文上传至host。
85.本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
86.通过h2c doorbell寄存器维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;通过h2c流控调度对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;通过h2c描述符引擎根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;通过h2c cmpt引擎根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;通过c2h doorbell寄存器维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;通过c2h流控调度对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制;通过c2h描述符缓存对列对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;通过c2h描述符引擎根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;通过c2h cmpt引擎根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;当c2h和h2c的特定cq完成后以及异常状态发生时,通过中断处理模块组装特定的msix报文上传至host。
87.本发明的另一目的在于提供一种所述的智能网卡快速dma在服务器中的应用。
88.本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的智能网卡快速dma设计系统。
89.结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的智
能网卡快速dma设计方法,提出一种新的qdma引擎,能够支持多种类型的描述符,并且在session和对列之间建立起了明确的映射关系;增添h2c的cmpt队列,向主机提供描述符指令执行的结果以及toe网卡内部缓存状态;去掉function的限制,为每个队列提供唯一的中断向量。
90.本发明提供的支持智能网卡混合描述符的快速dma的实现方式,多种描述符的适应场景以及处理流程;使得网卡的适应场景更加丰富,有效的解决传统qdma短包效率低等问题,为大数量的设备提供了一个有效可行的方案。
91.本发明实现方式更定制化,通过增大部分复杂度来更加适应多种的场景,混合描述符的使用完美的兼容了普通的网卡,也为toe业务提供了较好的服务;建立起session和队列的有效关联,为智能网卡之间的session会话提供良好的快速dma服务。
92.本发明增加了两侧的cmpt队列,有效的让host获取到下层的缓存以及完成状态等信息,为有效的实现流控机制提供了信息基础,同样使得数据的处理更有保障。本发明减轻软硬件中断设计的压力,采用中断和队列绑定的方式,为中断的设计提供了便利。
附图说明
93.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
94.图1是本发明实施例提供的智能网卡快速dma设计方法流程图。
95.图2是本发明实施例提供的toe qdma框架图。
96.图3是本发明实施例提供的h2c侧的数据处理流程图。
97.图4是本发明实施例提供的c2h侧的数据处理流程图。
具体实施方式
98.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
99.针对现有技术存在的问题,本发明提供了一种智能网卡快速dma设计方法、系统、设备及终端,下面结合附图对本发明作详细的描述。
100.如图1所示,本发明实施例提供的智能网卡快速dma设计方法包括以下步骤:
101.s101,通过h2c doorbell寄存器维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;通过h2c流控调度对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;
102.s102,通过h2c描述符引擎根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;
103.s103,通过h2c cmpt引擎根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;
104.s104,通过c2h流控调度对c2h的队列按照权重以及描述符引擎的进行状况进行调
度,根据板上的credit信息对描述符进行流量控制;
105.s105,通过c2h doorbell寄存器维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;
106.s106,通过c2h描述符缓存对列对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;
107.s107,通过c2h描述符引擎根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;
108.s108,通过c2h cmpt引擎根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;
109.s109:当c2h和h2c的特定cq完成后以及异常状态发生时,通过中断处理模块组装特定的msix报文上传至host。
110.本发明实施例提供的智能网卡快速dma,支持混合描述符,在h2c方向包括toe数据描述符、bypass数据描述符、直接携带短包协议数据的toe命令描述符以及bypass命令描述符四种描述符;在c2h方向包括toe数据描述符以及bypass数据描述符两种描述符;c2h和h2c方向均包含各自的完成描述符;整个系统包含八种描述符;在h2c方向每个session与唯一的队列绑定且嵌在描述符命令中,c2h方向每个session同样与唯一的队列绑定,cpu配置绑定关系且嵌在完成描述符命令中。
111.如图2所示,本发明实施例提供的智能网卡快速dma包括:
112.h2c doorbell寄存器,用于维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息;
113.h2c流控调度,用于对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制;
114.h2c描述符引擎,用于根据调度结果往host侧获取描述符,将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx;
115.h2c cmpt引擎,用于根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里;
116.c2h doorbell寄存器,用于维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息;
117.c2h流控调度,用于对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制;
118.c2h描述符缓存对列,用于对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理;
119.c2h描述符引擎,用于根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧;
120.c2h cmpt引擎,用于根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里;
121.中断处理模块,用于当c2h和h2c的特定cq完成后以及异常状态发生时,组装特定的msix报文上传至host。
122.本发明实施例提供的智能网卡快速dma设计系统包括:
function的用户提供了便利,但是并不适合本发明的toe网卡,因为这样不能为每个cmpt队列提供唯一的中断向量,这样会增加网卡的设计复杂度,所以本发明去掉了function的限制,为每个队列提供唯一的中断向量。
143.以下对技术方案整体结构进行说明。
144.一种支持混合描述符的智能网卡的快速dma,在h2c方向包括toe数据描述符、bypass数据描述符、直接携带短包协议数据的toe命令描述符以及bypass命令描述符四种描述符;在c2h方向包括toe数据描述符以及bypass数据描述符两种描述符;c2h和h2c方向均包含各自的完成描述符;整个系统包含八种描述符。在h2c方向每个session与唯一的队列绑定且嵌在描述符命令中,c2h方向每个session同样与唯一的队列绑定,cpu配置绑定关系且嵌在完成描述符命令中。
145.toe qdma框架图如图2所示。
146.(1)h2c doorbell寄存器:维护h2c的doorbell寄存器,为h2c的流控和调度提供相关信息。
147.(2)h2c流控调度:对h2c的队列按照权重进行调度,根据板上的credit信息对描述符进行流量控制。
148.(3)h2c描述符引擎:根据调度结果往host侧获取描述符,并将描述符分类存储,描述符引擎对描述符进行解析并从host侧搬取数据传递给toe_rx。
149.(4)h2c cmpt引擎:根据描述符类型以及toe_rx侧反馈回来的状态组装成对应的完成报文写回到host侧的cmpt队列里。
150.(5)c2h doorbell寄存器:维护c2h的doorbell寄存器,为c2h的流控和调度提供相关信息。
151.(6)c2h流控调度:对c2h的队列按照权重以及描述符引擎的进行状况进行调度,根据板上的credit信息对描述符进行流量控制。
152.(7)c2h描述符缓存对列:对预取下来的描述符根据队列号进行缓存,并且给出相应的状态信息用于下级处理。
153.(8)c2h描述符引擎:根据队列状态以及本地toe的数据情况从队列中获取并解析描述符,将toe_tx侧的数据搬移至host侧。
154.(9)c2h cmpt引擎:根据本地描述符使用情况组装完成报文,并发送给host侧对应的队列里。
155.(10)中断处理模块:当c2h和h2c的特定cq完成后以及异常状态发生时,会组装特定的msix报文上传至host。
156.h2c侧的数据处理流程介绍:
157.数据流程图如图3所示。
158.(1)host通过配置h2c侧doorbell,将描述符信息更新至硬件板卡。
159.(2)流控调度选择相应队列的描述符进行获取。
160.(3)通过doorbell寄存器给出的相关信息,通过dma引擎经过长度及4k边界等处理向axi slave发送读申请。
161.(4)获取到描述后,首先对描述度进行分类识别,根据描述符中的opcode将对应的类型传入不同的描述符引擎。
162.(5)如果是toe数据描述符,则会根据描述符中的地址和长度通过dma引擎经过长度及4k边界等处理向axi slave发送读数据申请,将返回数据传输至toe,并且判断本次描述符的last位是否为1;
163.(6)如果last位为0则继续获取同一session的描述符,直至last为1,过程中重复执行过程(5);
164.(7)如果last位为1则等待toe反馈回的状态,主要是toe上面相应缓存空间以及执行结果的反馈,根据这些信息组装完成报文。
165.(8)将组装好的完成报文通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将完成报文写入对应的cmpt队列,并且同时更新cq的doorbell。
166.(9)组装相应向量号的msix中断上传。
167.(10)如果是toe命令描述符,那描述符中携带的就是本次将要传输的数据,所以直接将信息载荷发送至toe,等待toe的反馈状态,主要是toe上相应命令的缓存空间以及执行结果,根据这些信息组装完成报文。
168.(11)同样的执行过程(8)(9),完成本次描述符的执行。
169.(12)如果是bypass数据描述符,那本次执行的数据一定是独立的且透传过toe的,所以根据描述符中的地址和长度通过dma引擎经过长度及4k边界等处理向axi slave发送读数据申请,将返回数据传输至toe。
170.(13)dma自己组装完成报文,主要包括本次描述符的执行结果。
171.(14)同样的执行过程(8)(9),完成本次描述符的执行。
172.(15)如果是bypass命令描述符,那描述符中携带的就是本次想要bypass给toe的命令,所以直接将信息载荷发送至toe,并且自己组装完成报文。
173.(16)同样的执行过程(8)(9),完成本次描述符的执行。
174.c2h侧的数据处理流程介绍:
175.数据流程图如图4所示。
176.(1)host通过配置c2h侧doorbell,将描述符信息更新至硬件板卡。
177.(2)流控调度选择相应队列的描述符进行预取。
178.(3)通过doorbell寄存器给出的相关信息,通过dma引擎经过长度及4k边界等处理向axi slave发送读申请。
179.(4)将收到的描述符信息按照队列存进相应的缓存,并且实时更新缓存信息。
180.(5)如果是toe数据描述符,那么对各个队列的描述度进行提取以及预解析。
181.(6)当toe有数据发送至dma时,根据对应的预解析的描述符对数据进行搬移,如果没有对应的描述度则主动去申请。
182.(7)由于有多个数据共用一条描述符或者一个数据用多条描述符的情况,所以如果是一个数据占用多条描述符,则对最后一个描述符的空间使用情况进行记录,如果是多条数据共用一个描述符,那么需要对描述符的使用情况进行计时,一旦超时便提前结束本次传输,避免描述符过长时间不会被使用完毕。
183.(8)将数据按照描述符中的信息通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将数据写到对应的地址。
184.(9)根据描述符空间使用情况以及是否超时等信息组装完成报文,将组装好的完
成报文通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将完成报文写入对应的cmpt队列,并且同时更新cq的doorbell。
185.(10)组装相应向量号的msix中断上传。
186.(11)如果是bypass数据描述符,则不需要解析描述符。
187.(12)当toe有bypass类型数据发送至dma时,向缓存区中提取相应队列的描述度即可,bypass类型数据不存在描述符共用或多用的情况,所以完全是数据和描述符是一对一的关系。
188.(13)将数据按照描述符中的信息通过dma引擎经过长度及4k边界等处理向axi slave发送写数据请求,将数据写到对应的地址。
189.(14)根据描述符空间使用情况等信息组装完成报文,将组装好的完成报文通过dma引擎经过长度以及4k边界等处理向axi slave发送写数据请求,将完成报文写入对应的cmpt队列,并且同时更新cq的doorbell。
190.(15)同样执行过程(10)完成本次传输。
191.本发明提供的支持智能网卡混合描述符的快速dma的实现方式,多种描述符的适应场景以及处理流程;使得网卡的适应场景更加丰富,有效的解决传统qdma短包效率低等问题,为大数量的设备提供了一个有效可行的方案。
192.本发明实现方式更定制化,通过增大部分复杂度来更加适应多种的场景,混合描述符的使用完美的兼容了普通的网卡,也为toe业务提供了较好的服务;建立起session和队列的有效关联,为智能网卡之间的session会话提供良好的快速dma服务。
193.本发明增加了两侧的cmpt队列,有效的让host获取到下层的缓存以及完成状态等信息,为有效的实现流控机制提供了信息基础,同样使得数据的处理更有保障。本发明减轻软硬件中断设计的压力,采用中断和队列绑定的方式,为中断的设计提供了便利。
194.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
195.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1