【技术实现步骤摘要】
卸载引擎网卡中描述符预读取的优化方法、系统及终端
本专利技术属于数据传输网络
,尤其涉及一种卸载引擎网卡中描述符预读取的优化方法、系统及终端。
技术介绍
目前,在以太网广泛使用的今天,使用普通网卡处理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)占用存储资源过多,会导致整个卸载引擎网卡处理效率变低。解决以上问题及缺陷的难度为:新 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。