卸载引擎网卡中描述符预读取的优化方法、系统及终端技术方案

技术编号:29594147 阅读:103 留言:0更新日期:2021-08-06 19:55
本发明专利技术属于数据传输网络技术领域,公开了一种卸载引擎网卡中描述符预读取的优化方法、系统及终端,在TCP/IP卸载引擎的DMA接收模块,对描述符进行预读取处理;预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限;若满足,则继续向DMA接收模块发送SQ预读取请求。本发明专利技术解决了现有TCP/IP卸载引擎网卡中存储描述符时占用过多缓存资源的问题。本发明专利技术可以实现描述符在缓存区的动态存储,减少存储资源的浪费,而且软件可以根据不同session的活跃程度动态管理每个队列存储空间的最大和最小门限,继而灵活调整每个队列预读取描述符的个数,使SQ描述符的预读取更加高效和均衡。

【技术实现步骤摘要】
卸载引擎网卡中描述符预读取的优化方法、系统及终端
本专利技术属于数据传输网络
,尤其涉及一种卸载引擎网卡中描述符预读取的优化方法、系统及终端。
技术介绍
目前,在以太网广泛使用的今天,使用普通网卡处理TCP/IP的数据包,会加重服务器的处理负担。所以,为了限制网络链路中CPU的数据处理量,TCP/IP卸载引擎技术将TCP/IP堆叠的工作卸载到适配器或系统硬件中,通过网络处理器和固件及专用集成电路来实现TCP/IP加速。TCP/IP卸载引擎技术使应用系统充分利用了网络的容量,在提高了网络性能的同时也降低了网络的成本,在现如今的以太网环境中逐渐显现出巨大的潜力。在现有的TCP/IP卸载引擎技术的架构设计中,DMA接收模块在收到SQ预读取请求时会从主机处读取描述符,并将SQ预读取数据即描述符存储在固定大小的FIFO中,在收到TOE模块传输的数据后,DMA接收模块会下发SQ请求,从FIFO中读取描述符并利用描述符中的空闲地址空间将数据发送至主机。通过上述分析,现有技术存在的问题及缺陷为:(1)现有技术中,将描述符存储在固定大小的FIFO中,由于不同SQ队列的活跃程度不同,所以在设计中为了能满足描述符存储的要求,会给每个描述符分配大容量的存储资源,这样就会使得存储资源大量浪费,影响存储的效率。(2)现有技术没有充分考虑每个session的活跃程度,将每种描述符进行统一存储,缺乏灵活性。(3)占用存储资源过多,会导致整个卸载引擎网卡处理效率变低。解决以上问题及缺陷的难度为:新的方法需要考虑SQ队列的活跃程度;新的方法需要把每种描述符都能完整存储起来;新的方法需要尽可能少的占用存储资源。解决以上问题及缺陷的意义为:本专利技术提升了存储资源的利用率,实现不同SQ队列的动态管理和分配,为不同的SQ队列提供不同的存储优先级。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种卸载引擎网卡中描述符预读取的优化方法、系统及终端,具体涉及一种针对TCPIP卸载引擎网卡中描述符预读取的优化方法。本专利技术是这样实现的,一种针对TCPIP卸载引擎网卡中描述符预读取的优化方法,包括:在TCP/IP卸载引擎的DMA接收模块,对描述符进行预读取处理;预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限;若满足,则继续向DMA接收模块发送SQ预读取请求。进一步,所述对描述符进行预读取处理包括:第一步,主机根据session的活跃程度动态配置每个SQ队列的最大存储门限和最小存储门限;当写入BD块RAM中的描述符达到最小存储门限时,由SQ预读取监控模块向DMA接收模块发送一个SQ预读取请求即描述符预读取请求;第二步,DMA接收模块收到请求之后,从主机中相应的SQ队列预读取描述符,并将描述符发往总线控制模块,总线控制模块根据逻辑入队模块提前申请的空闲Buffer地址,将描述符写入BD块RAM中,并发送入队请求给逻辑入队模块;第三步,逻辑入队模块提前向空闲Buffer管理模块申请一个缓存地址并交由总线控制模块;当逻辑入队模块收到入队请求时,根据要写入BD块RAM的描述符的个数判断是否满足队列信息寄存器堆中的最大和最小存储门限,若满足,则继续申请缓存地址,并将首个存储描述符的地址和下一跳的地址写入BD链表RAM中;第四步,满足入队条件后,总线控制模块根据收到的下一跳Buffer地址将描述符搬移到BD块RAM中;逻辑入队之后更新描述符的数量信息并将入队信息传输给队列信息存储器堆;根据队列的最大和最小门限值判断是否继续向DMA接收模块发送描述符预读取请求;若队列信息寄存器堆中某个队列的描述符持续处于非活跃的状态,则将此描述符发往老化监控模块,并向DMA接收模块反馈老化信息,最终将信息发往主机。进一步,所述预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限具体包括:步骤1,当DMA接收模块收到TOE发来的数据信息后,向总线控制模块发送SQ请求信号;步骤2,总线控制模块向逻辑出队模块发送出队请求,并获取描述符的存储地址,最终根据描述符的存储地址将描述符从BD块RAM中搬移至DMA接收模块;步骤3,搬移结束后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限;若满足,则继续向DMA接收模块发送SQ预读取请求。进一步,所述DMA接收模块还用于存储描述符,存储描述符方法包括:(1)主机driver为session预分配内存,并且写入DMA_RX_SQ队列;(2)主机driver写入FPGA的door_bell寄存器,通知FPGA在DMA_RX_SQ处有未处理的RX_SQ;(3)DMA_RX模块轮询每个队列的door_bell寄存器,读取相应队列的空闲RX_SQ,将其缓存到FPGA本地的RX_SQ队列池。其中,每个队列预读取描述符的数量可配置。(4)DMA_RX模块从TOE接收数据,存入data_ingress,根据session的属性表找到对应队列ID号,从对应的RX_SQ缓存队列获取空闲SQ;(5)解析RX_SQ,将data_ingress的数据包通过dma传输到HOST的相应内存空间里;(6)DMA完成一个RX_SQ的所有地址的消耗。写入HOST中DMA_RX_CQ队列,通知主机driver写入的数据和实际长度。本专利技术的另一目的在于提供一种实施所述优化方法的针对TCPIP卸载引擎网卡中描述符预读取的优化系统,包括:DMA接收模块:用于接收TOE传输过来的数据、发送SQ请求给总线控制模块并接收反馈回来的SQ数据即描述符、接收SQ预读取请求发送给Host端、从Host端预读取描述符传输给总线控制模块、接收返回的老化CQ数据;总线控制模块:用于将SQ预读取的描述符搬移到BD块RAM中,并根据SQ预读取的描述符发出入队请求给逻辑入队模块,从逻辑入队模块获取下一个缓存区地址,搬移剩余个数的描述符;逻辑入队模块:用于在入队请求到来前,提前向空闲Buffer管理模块申请一个缓存地址给总线控制模块和BD链表RAM模块,当满足入队条件后,从空闲Buffer管理模块继续申请缓存地址,将下一跳地址发送给总线控制模块和BD链表RAM模块,根据预读取的描述符的个数更新队列信息;逻辑出队模块:用于在接收到总线控制模块发来的出队请求时,从BD链表RAM中得到描述符的缓存地址,发送给总线控制模块用来搬移描述符,同时发送给空闲Buffer管理模块,释放该缓存地址,根据要读取的描述符的个数更新队列信息;空闲Buffer管理模块:该模块在入队时,用于向逻辑入队模块提供空闲的缓存地址;出队时,用于负责将出队成功的描述符所占用的缓存地址进行释放;BD链表RAM模块:用于负责存储队列中描述符的首个存储地址和下一跳地址,以链表的形式将首地址和下一跳地址链接起来;队列信息寄存器堆模块:本文档来自技高网
...

【技术保护点】
1.一种针对TCPIP卸载引擎网卡中描述符预读取的优化方法,其特征在于,所述针对TCPIP卸载引擎网卡中描述符预读取的优化方法包括:/n在TCP/IP卸载引擎的DMA接收模块,对描述符进行预读取处理;/n预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限;若满足,则继续向DMA接收模块发送SQ预读取请求。/n

【技术特征摘要】
1.一种针对TCPIP卸载引擎网卡中描述符预读取的优化方法,其特征在于,所述针对TCPIP卸载引擎网卡中描述符预读取的优化方法包括:
在TCP/IP卸载引擎的DMA接收模块,对描述符进行预读取处理;
预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限;若满足,则继续向DMA接收模块发送SQ预读取请求。


2.如权利要求1所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法,其特征在于,所述对描述符进行预读取处理包括:
第一步,主机根据session的活跃程度动态配置每个SQ队列的最大存储门限和最小存储门限;当写入BD块RAM中的描述符达到最小存储门限时,由SQ预读取监控模块向DMA接收模块发送一个SQ预读取请求即描述符预读取请求;
第二步,DMA接收模块收到请求之后,从主机中相应的SQ队列预读取描述符,并将描述符发往总线控制模块,总线控制模块根据逻辑入队模块提前申请的空闲Buffer地址,将描述符写入BD块RAM中,并发送入队请求给逻辑入队模块;
第三步,逻辑入队模块提前向空闲Buffer管理模块申请一个缓存地址并交由总线控制模块;当逻辑入队模块收到入队请求时,根据要写入BD块RAM的描述符的个数判断是否满足队列信息寄存器堆中的最大和最小存储门限,若满足,则继续申请缓存地址,并将首个存储描述符的地址和下一跳的地址写入BD链表RAM中;
第四步,满足入队条件后,总线控制模块根据收到的下一跳Buffer地址将描述符搬移到BD块RAM中;逻辑入队之后更新描述符的数量信息并将入队信息传输给队列信息存储器堆;根据队列的最大和最小门限值判断是否继续向DMA接收模块发送描述符预读取请求;若队列信息寄存器堆中某个队列的描述符持续处于非活跃的状态,则将此描述符发往老化监控模块,并向DMA接收模块反馈老化信息,最终将信息发往主机。


3.如权利要求1所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法,其特征在于,所述预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限具体包括:
步骤1,当DMA接收模块收到TOE发来的数据信息后,向总线控制模块发送SQ请求信号;
步骤2,总线控制模块向逻辑出队模块发送出队请求,并获取描述符的存储地址,最终根据描述符的存储地址将描述符从BD块RAM中搬移至DMA接收模块;
步骤3,搬移结束后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限;若满足,则继续向DMA接收模块发送SQ预读取请求。


4.如权利要求1~3任意一项所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法,其特征在于,所述DMA接收模块还用于存储描述符,存储描述符方法包括:
(1)主机driver为session预分配内存,并且写入DMA_RX_SQ队列;
(2)主机driver写入FPGA的door_bell寄存器,通知FPGA在DMA_RX_SQ处有未处理的RX_SQ;
(3)DMA_RX模块轮询每个队列的door_bell寄存器,读取相应队列的空闲RX_SQ,将其缓存到FPGA本地的RX_SQ队列池。其中,每个队列预读取描述符的数量可配置。
(4)DMA_RX模块从TOE接收数据,存入data_ingress,根据session的属性表找到对应队列ID号,从对应的RX_SQ缓存队列获取空闲SQ;
(5)解析RX_SQ,将data_ingress的数据包通过dma传输到HOST的相应内存空间里;
(6)DMA完成一个RX_SQ的所有地址的消耗。写入HOST中DMA_RX_CQ队列,通知主机driver写入的数据和实际长度。


5.一种实施权利要求1~3任意一项...

【专利技术属性】
技术研发人员:潘伟涛祝靖源邱智亮殷建飞郑圆圆
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

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

1