首页 > 技术 > CAE其它 > > [技术分享] 高性能网卡----DPAA

[技术分享] 高性能网卡----DPAA

作者:迪捷软件    来源:    发布时间:2020-05-21    收藏】 【打印】  复制连接  【 】 我来说两句:(0逛逛论坛

 

       现如今,网络通信是我们进行社交、获取信息的主要途径,于硬件设备而言,网卡的性能就显得尤为重要。飞思卡尔的QorIQ系列在网络通信这块采用高性能数据通道加速结构(Data Path Acceleration Architecture简称DPAA),相比传统的网卡,DPAA网卡的结构更为复杂,主要在数据分发和队列拥塞管理和内容加速处理两方面减少CPU开销,以提升性能。以飞思卡尔的T2080处理器上的DPAA网卡为例,DPAA网卡依赖于Buffer Manager(BMan)、Quenue Manager(QMan)和Frame Manager(FMan)三部分进行数据的接收和发送。

 
图1:T2080-DPAA架构(图片选自官方手册)


       BMan

       缓冲管理模块(BMan)的主要是为了把处于空闲状态的内存给集中的管理起来,这样来减少空闲缓冲区对软件的开销。T2080的BMan模块有64个单独的空闲缓冲池,而且每个池可以存储最多64个缓冲区。BMan在T2080上有两块地址空间,其中在配置、控制与状态寄存器(CCSR)空间内占有4KB的管理接口空间,此外,有18个软件入口映射在32MB的系统内存中。其他硬件可以通过软件入口请求获取或释放缓冲。BMan为T2080的中断控制器提供18个软件入口产生中断的中断号。
 
 
图2:BMan结构


       QMan

       队列管理模块(QMan)的主要是为了管理多处理器内核、网络接口和硬件加速器之间的数据排队。QMan操作的实体是帧描述符,帧描述符里保存了数据缓冲的地址,数据缓冲地址指向数据缓冲区的内存地址。因此,QMan管理的对象是数据包的指针而不是数据包本身。多个帧描述符构成一个帧队列(FQ),每个帧队列由唯一的标识符表示每一个通道由8个工作队列加优先级调度器组成。每一个软件入口可以访问16个通道,QMan会根据内部局域优先级的调度策略自动为软件入口选出合适的帧队列进行出队操作。与BMan类似,QMan在CCSR中有4k配置空间,同样也提供了18个软件入口的内存映射方式的寄存器组,通过这些寄存器硬件和软件可以运行时访问QMan,例如帧描述符入队和出队操作。帧队列的配置,例如出队方式、工作队列和通道分配,都是通过软件入口的寄存器组完成的。QMan的中断信号结构与BMan相同。
 
图3:QMan内部结构


       FMan

       帧管理模块(FMan)负责处理DPAA发送和接收的网络数据包。因此FMan管理物理网卡并且在正常模式下收发数据时,使用BMan提供的缓冲保存数据,使用QMan的队列机制对带有数据的帧描述符进行组织管理。FMan在CCSR中有1M大小的配置空间,其中包括了缓冲管理模块接口(BMI)寄存器组和帧队列模块接口(QMI)寄存器组,通过这些寄存器可以配置数据包在FMan内部存储空间与外部缓冲之间的传输,以及帧描述符的入队和出队。另外配置空间内还有DMA控制寄存器,可以控制DMA方式下数据包传输过程。多组网卡配置寄存器可以用来配置网卡,查看状态。但与BMan和QMan不同的是,FMan没有软件入口的内存映射方式的寄存器组,因为软件在收发数据时不直接操作FMan。
 
图4:FMan接口
 

       在网卡开始正常工作之前,需要先初始化BMan和QMan的基本功能和软件入口,之后初始化FMan,将网卡进行复位操作后,将发送、接收的中断处理函数挂在对应的软件入口上,网卡会一直读PHY芯片,当读到的PHY芯片的速率和状态等信息,将初始化要使用的QMan中的队列,并使用BMan的缓冲区,使能中断状态寄存器。至此,网卡处于up running状态,即可正常工作。对于网卡来说,最重要的功能是对网络数据的处理----数据发送与接收。DPAA网卡的数据接收与发送都支持中断和轮询两种方式,二者的主要区别在于轮询方式不会产生中断。我们将主要介绍数据收发的中断方式。

       数据发送

       数据发送的中断模式下,发送操作由硬件和软件配合完成,驱动中发送函数根据输入参数构造帧描述符(FD),并将其加入QMan的发送帧队列(Tx)后返回。FMan在检测到帧队列非空时进行DMA操作,从内存中拷贝数据到FMan内部存储空间,并使用对应的网卡发送数据。发送完成后FMan会向发送完成帧队列TxD中加入发送完成确认帧,此时QMan产生中断。

       数据接收

       数据采用中断的方式接收数据,网卡收到数据后首先将数据存储在FMan内部空间,由FMan进行校验、分类等一系列操作,然后将数据拷贝到BMan管理的数据缓冲区中,并向QMan接收帧队列(Rx)中加入对应的帧描述符,同时产生接收中断,进而调用网卡的接收中断处理函数。

       中断处理

       传统的eTSEC8641d网卡,无论是发送还是接收中断都是由该网卡产生的;而DPAA网卡的中断则是由帧队列管理模块产生的,它可以通知多种事件发生,如入队、出队、消息环的使能等,网卡只是使能出队寄存器和消息环。在初始化阶段,网卡注册了portal8,对应的中断号为104,当有中断产生时,中断控制器判断该中断类型,调用相应的中断处理函数。
 
 
图5:QMan中断处理
 
微信公众号:迪捷数原
 
联系电话:15600442810、13260299730 (微信同号)
联系邮箱:contact@digiproto.com
工作地址:北京市海淀区中关村软件园
                 浙江省绍兴市越城区绍兴水木湾区科学园3号楼8层802
公司网址:www.digiproto.com




 
分享到: 收藏