CN113225307A - 卸载引擎网卡中描述符预读取的优化方法、系统及终端 - Google Patents

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

Info

Publication number
CN113225307A
CN113225307A CN202110288715.1A CN202110288715A CN113225307A CN 113225307 A CN113225307 A CN 113225307A CN 202110288715 A CN202110288715 A CN 202110288715A CN 113225307 A CN113225307 A CN 113225307A
Authority
CN
China
Prior art keywords
module
descriptor
reading
queue
dma
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110288715.1A
Other languages
English (en)
Other versions
CN113225307B (zh
Inventor
潘伟涛
祝靖源
邱智亮
殷建飞
郑圆圆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN202110288715.1A priority Critical patent/CN113225307B/zh
Publication of CN113225307A publication Critical patent/CN113225307A/zh
Application granted granted Critical
Publication of CN113225307B publication Critical patent/CN113225307B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6245Modifications to standard FIFO or LIFO
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

卸载引擎网卡中描述符预读取的优化方法、系统及终端
技术领域
本发明属于数据传输网络技术领域,尤其涉及一种卸载引擎网卡中描述符预读取的优化方法、系统及终端。
背景技术
目前,在以太网广泛使用的今天,使用普通网卡处理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模块:用于负责存储队列中描述符的首个存储地址和下一跳地址,以链表的形式将首地址和下一跳地址链接起来;
队列信息寄存器堆模块:用于记录队列中描述符的个数,根据不同session 的活跃程度,给每种描述符设置一个最大存储门限和一个最小存储门限,该存储门限由主机动态配置;当达到最小存储门限时,向SQ预读取监控模块发送最小存储标志;当达到最大存储门限时,向SQ预读取监控模块发送最大存储标志。该模块也会根据队列中描述符的活跃程度判断描述符是否老化,若老化则向老化监控模块发送老化的描述符信息;
SQ预读取监控模块:用于向DMA接收模块发送预读取描述符的请求;当收到队列信息寄存器堆发送来的最小存储标志时,向DMA接收模块发送预读取描述符请求,当收到最大存储标志时,则停止发送预读取描述符请求;
老化监控模块:用于对老化的描述符信息进行监控,当收到队列信息寄存器堆发送的老化描述符信息,返回给DMA接收模块一个老化的应答信息,即老化CQ信息。
进一步,所述DMA接收模块在不同硬件设备之间用于实施中转功能;
所述总线控制模块在收到SQ请求时,则发送出队请求给逻辑出队模块,获取描述符所在的缓存地址,将描述符从BD块RAM搬移到DMA模块。
进一步,所述DMA接收模块包括:DMA_RX_SQ模块,用于存储描述符的请求信息;
DMA_RX_CQ模块,用于存储描述符的应答信息。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法。
本发明的另一目的在于提供一种网络处理器和固件及专用集成电路,所述网络处理器和固件及专用集成电路执行所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明对描述符的预读取操作采用了最大和最小存储限制。主机配置最大和最小存储门限后,描述符入队先是进行了缓存地址的申请,接着对比描述符个数与最大存储门限,最后将描述符存储起来,描述符出队先是获取描述符存储地址,接着从缓存区搬移描述符,最后更新描述符个数,使描述符一直处于最小和最大存储门限之间,不占用过多存储资源。
本发明主要解决了现有TCP/IP卸载引擎网卡中存储描述符时占用过多缓存资源的问题。该优化方式的架构包括:DMA模块、总线控制模块、逻辑入队管理模块、逻辑出队管理模块、空闲Buffer管理模块、存放BD链表的RAM模块、 BD块RAM、队列信息寄存器堆模块、SQ预读取监控模块以及老化监控模块。 DMA模块与SQ预读取监控和总线控制模块相连接,完成从SQ预读取请求到下发SQ预读取描述符之间的过程;总线控制模块与BD块RAM和逻辑出入队模块相连,负责将描述符存储在队列缓存区中;空闲Buffer管理模块与逻辑出入队模块相连,为要出队或入队的数据释放或提供空闲缓存区的地址;BD链表 RAM存储或释放入队和出队时存储数据的首地址和下一跳地址;队列信息寄存器堆模块与SQ预读取监控和老化模块相连,完成描述符在队列中的动态存储。本发明可以实现描述符在缓存区的动态存储,减少存储资源的浪费,而且软件可以根据不同session的活跃程度动态管理每个队列存储空间的最大和最小门限,继而灵活调整每个队列预读取描述符的个数,使SQ描述符的预读取更加高效和均衡。
相比于现有技术,本发明的优点进一步包括:
(1)描述符个数一直处于最大和最小存储门限之间,没有占用过多存储资源。
(2)主机可以根据session的活跃程度动态配置每个SQ队列的最大存储门限和最小存储门限。
(3)能够同时实现预读取描述符的写入和描述符的读出。
(4)节省了大量存储资源,实现由主机控制的存储可配置化,TCPIP卸载引擎网卡处理效率变高。
附图说明
图1是本发明实施例提供的针对TCPIP卸载引擎网卡中描述符预读取的优化流程图。
图2是本发明实施例提供的针对TCPIP卸载引擎网卡中描述符预读取的优化系统示意图。
图中:1、DMA接收模块;2、总线控制模块;3、逻辑入队模块;4、逻辑出队模块;5、空闲Buffer管理模块;6、BD链表RAM模块;7、队列信息寄存器堆模块;8、SQ预读取监控模块;9、老化监控模块。
图3是本发明实施例提供的针对TCPIP卸载引擎网卡中描述符预读取的优化原理图。
图4是本发明实施例提供的TOE架构下DMA接收模块的整体结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种针对TCPIP卸载引擎网卡中描述符预读取的优化方法,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的针对TCPIP卸载引擎网卡中描述符预读取的优化包括:
S101,在TCP/IP卸载引擎的DMA接收模块,对描述符进行预读取处理;
S102,预读取成功后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限。若满足,则继续向DMA接收模块发送SQ预读取请求。
所述步骤S101具体包括:
Step1:主机根据session的活跃程度动态配置每个SQ队列的最大存储门限和最小存储门限。当写入BD块RAM中的描述符达到最小存储门限时,由SQ 预读取监控模块向DMA接收模块发送一个SQ预读取请求即描述符预读取请求;
Step2:DMA接收模块收到请求之后,从主机中相应的SQ队列预读取描述符,并将描述符发往总线控制模块,总线控制模块根据逻辑入队模块提前申请的空闲Buffer地址,将描述符写入BD块RAM中,并发送入队请求给逻辑入队模块;
Step3:首先,逻辑入队模块提前向空闲Buffer管理模块申请一个缓存地址并交由总线控制模块;其次,当逻辑入队模块收到入队请求时,根据要写入 BD块RAM的描述符的个数判断是否满足队列信息寄存器堆中的最大和最小存储门限,若满足,则继续申请缓存地址,并将首个存储描述符的地址和下一跳的地址写入BD链表RAM中。
Step4:满足入队条件后,总线控制模块根据收到的下一跳Buffer地址将描述符搬移到BD块RAM中。逻辑入队之后更新描述符的数量信息并将入队信息传输给队列信息存储器堆。根据队列的最大和最小门限值判断是否继续向DMA 接收模块发送描述符预读取请求。若队列信息寄存器堆中某个队列的描述符持续处于非活跃的状态,则将此描述符发往老化监控模块,并向DMA接收模块反馈老化信息,最终将信息发往主机。
所述步骤S102具体包括:
Step1:当DMA接收模块收到TOE发来的数据信息后,向总线控制模块发送 SQ请求信号。
Step2:总线控制模块向逻辑出队模块发送出队请求,并获取描述符的存储地址,最终根据描述符的存储地址将描述符从BD块RAM中搬移至DMA接收模块。
Step3:搬移结束后,更新队列中描述符的信息,判断描述符的个数是否满足最大和最小存储门限。若满足,则继续向DMA接收模块发送SQ预读取请求。
本发明提供的针对TCPIP卸载引擎网卡中描述符预读取的优化方法,业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的针对TCPIP 卸载引擎网卡中描述符预读取的优化方法仅仅是一个具体实施例而已。
如图2所示,本发明提供的针对TCPIP卸载引擎网卡中描述符预读取的优化系统使用队列管理单元来调度描述符的写入和读取,它的主要模块如下:
DMA接收模块1:DMA在不同硬件设备之间起到中转的作用。在该结构中主要负责接收TOE传输过来的数据、发送SQ请求给总线控制模块并接收反馈回来的SQ数据即描述符、接收SQ预读取请求将其发送给Host端、从Host端预读取描述符传输给总线控制模块、接收返回的老化CQ数据。
总线控制模块2:该模块主要是将SQ预读取的描述符搬移到BD块RAM中,并根据SQ预读取的描述符发出入队请求给逻辑入队模块,从逻辑入队模块获取下一个缓存区地址,搬移剩余个数的描述符。在收到SQ请求时,则发送出队请求给逻辑出队模块,获取描述符所在的缓存地址,将描述符从BD块RAM搬移到 DMA模块。
逻辑入队模块3:该模块是采用预入队的思想,在入队请求到来之前,提前向空闲Buffer管理模块申请一个缓存地址给总线控制模块和BD链表RAM模块,当满足入队条件后,从空闲Buffer管理模块继续申请缓存地址,将下一跳地址发送给总线控制模块和BD链表RAM模块,根据预读取的描述符的个数更新队列信息。
逻辑出队模块4:该模块在接收到总线控制模块发来的出队请求时,从BD 链表RAM中得到描述符的缓存地址,发送给总线控制模块用来搬移描述符,同时发送给空闲Buffer管理模块,释放该缓存地址,根据要读取的描述符的个数更新队列信息。
空闲Buffer管理模块5:该模块在入队时,负责向逻辑入队模块提供空闲的缓存地址;出队时,负责将出队成功的描述符所占用的缓存地址进行释放。
BD链表RAM模块6:该模块负责存储队列中描述符的首个存储地址和下一跳地址,以链表的形式将首地址和下一跳地址链接起来。
队列信息寄存器堆模块7:该模块负责记录队列中描述符的个数,根据不同session的活跃程度,给每种描述符设置一个最大存储门限和一个最小存储门限,该存储门限由主机动态配置。当达到最小存储门限时,向SQ预读取监控模块发送最小存储标志;当达到最大存储门限时,向SQ预读取监控模块发送最大存储标志。该模块也会根据队列中描述符的活跃程度判断描述符是否老化,若老化则向老化监控模块发送老化的描述符信息。
SQ预读取监控模块8:该模块负责向DMA接收模块发送预读取描述符的请求。当收到队列信息寄存器堆发送来的最小存储标志时,向DMA接收模块发送预读取描述符请求,当收到最大存储标志时,则停止发送预读取描述符请求。
老化监控模块9:该模块负责对老化的描述符信息进行监控,当收到队列信息寄存器堆发送的老化描述符信息,返回给DMA接收模块一个老化的应答信息,即老化CQ信息。
如图3所示,本发明提供的针对TCPIP卸载引擎网卡中描述符预读取的优化原理图。
在本发明有实施例中,如图4所示,TOE架构下DMA接收模块的整体结构图, DMA_RX_SQ负责存储描述符的请求信息,DMA_RX_CQ负责存储描述符的应答信息,在整个结构里面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写入的数据和实际长度。
下面结合效果对本发明的技术方案作进一步描述。
在该结构下,主机可以动态配置队列的最大和最小存储门限,对于活跃度高的session可适当增加最大存储门限值,对于活跃度低的session可适当减小最小存储门限值,这种由主机参与配置的方式可以实现描述符在缓存区的动态存储,减少了存储资源的浪费。另外,这种方式还可以使描述符的逻辑入队和逻辑出队同时进行,效率更高且更加均衡。
在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上;术语“上”、“下”、“左”、“右”、“内”、“外”、“前端”、“后端”、“头部”、“尾部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

Claims (10)

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任意一项所述优化方法的针对TCPIP卸载引擎网卡中描述符预读取的优化系统,其特征在于,所述针对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模块:用于负责存储队列中描述符的首个存储地址和下一跳地址,以链表的形式将首地址和下一跳地址链接起来;
队列信息寄存器堆模块:用于记录队列中描述符的个数,根据不同session的活跃程度,给每种描述符设置一个最大存储门限和一个最小存储门限,该存储门限由主机动态配置;当达到最小存储门限时,向SQ预读取监控模块发送最小存储标志;当达到最大存储门限时,向SQ预读取监控模块发送最大存储标志。该模块也会根据队列中描述符的活跃程度判断描述符是否老化,若老化则向老化监控模块发送老化的描述符信息;
SQ预读取监控模块:用于向DMA接收模块发送预读取描述符的请求;当收到队列信息寄存器堆发送来的最小存储标志时,向DMA接收模块发送预读取描述符请求,当收到最大存储标志时,则停止发送预读取描述符请求;
老化监控模块:用于对老化的描述符信息进行监控,当收到队列信息寄存器堆发送的老化描述符信息,返回给DMA接收模块一个老化的应答信息,即老化CQ信息。
6.如权利要求5所述的针对TCPIP卸载引擎网卡中描述符预读取的优化系统,其特征在于,所述DMA接收模块在不同硬件设备之间用于实施中转功能;
所述总线控制模块在收到SQ请求时,则发送出队请求给逻辑出队模块,获取描述符所在的缓存地址,将描述符从BD块RAM搬移到DMA模块。
7.如权利要求5所述的针对TCPIP卸载引擎网卡中描述符预读取的优化系统,其特征在于,所述DMA接收模块包括:DMA_RX_SQ模块,用于存储描述符的请求信息;
DMA_RX_CQ模块,用于存储描述符的应答信息。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1~4任意一项所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法。
9.一种信息数据处理终端,其特征在于,所述信息数据处理终端包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1~4任意一项所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法。
10.一种网络处理器和固件及专用集成电路,其特征在于,所述网络处理器和固件及专用集成电路执行权利要求1~4任意一项所述的针对TCPIP卸载引擎网卡中描述符预读取的优化方法。
CN202110288715.1A 2021-03-18 2021-03-18 卸载引擎网卡中描述符预读取的优化方法、系统及终端 Active CN113225307B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110288715.1A CN113225307B (zh) 2021-03-18 2021-03-18 卸载引擎网卡中描述符预读取的优化方法、系统及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110288715.1A CN113225307B (zh) 2021-03-18 2021-03-18 卸载引擎网卡中描述符预读取的优化方法、系统及终端

Publications (2)

Publication Number Publication Date
CN113225307A true CN113225307A (zh) 2021-08-06
CN113225307B CN113225307B (zh) 2022-06-28

Family

ID=77083843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110288715.1A Active CN113225307B (zh) 2021-03-18 2021-03-18 卸载引擎网卡中描述符预读取的优化方法、系统及终端

Country Status (1)

Country Link
CN (1) CN113225307B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721999A (zh) * 2021-09-10 2021-11-30 京东科技信息技术有限公司 描述符链表的处理方法、装置、设备、系统及介质
CN113835891A (zh) * 2021-09-24 2021-12-24 哲库科技(北京)有限公司 资源分配方法、装置、电子设备及计算机可读存储介质
CN113986791A (zh) * 2021-09-13 2022-01-28 西安电子科技大学 一种智能网卡快速dma设计方法、系统、设备及终端
CN115473861A (zh) * 2022-08-18 2022-12-13 珠海高凌信息科技股份有限公司 基于通信与计算分离的高性能处理系统和方法、存储介质
CN115905046A (zh) * 2022-12-23 2023-04-04 科东(广州)软件科技有限公司 网卡驱动数据包处理方法、装置、电子设备及存储介质
CN117411842A (zh) * 2023-12-13 2024-01-16 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647436B1 (en) * 2005-04-29 2010-01-12 Sun Microsystems, Inc. Method and apparatus to interface an offload engine network interface with a host machine
CN102377682A (zh) * 2011-12-12 2012-03-14 西安电子科技大学 基于定长单元存储变长分组的队列管理方法及设备
WO2016179968A1 (zh) * 2015-05-13 2016-11-17 深圳市中兴微电子技术有限公司 一种队列管理方法、装置及存储介质
CN107948094A (zh) * 2017-10-20 2018-04-20 西安电子科技大学 一种高速数据帧无冲突入队处理的装置及方法
CN109471816A (zh) * 2018-11-06 2019-03-15 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法
US20190243781A1 (en) * 2018-02-08 2019-08-08 Xilinx, Inc. Customizable multi queue dma interface

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647436B1 (en) * 2005-04-29 2010-01-12 Sun Microsystems, Inc. Method and apparatus to interface an offload engine network interface with a host machine
CN102377682A (zh) * 2011-12-12 2012-03-14 西安电子科技大学 基于定长单元存储变长分组的队列管理方法及设备
WO2016179968A1 (zh) * 2015-05-13 2016-11-17 深圳市中兴微电子技术有限公司 一种队列管理方法、装置及存储介质
CN107948094A (zh) * 2017-10-20 2018-04-20 西安电子科技大学 一种高速数据帧无冲突入队处理的装置及方法
US20190243781A1 (en) * 2018-02-08 2019-08-08 Xilinx, Inc. Customizable multi queue dma interface
CN109471816A (zh) * 2018-11-06 2019-03-15 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姜晨: "《专用交换机队列调度管理及总线控制的设计与实现》", 《工程科技Ⅱ辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721999A (zh) * 2021-09-10 2021-11-30 京东科技信息技术有限公司 描述符链表的处理方法、装置、设备、系统及介质
CN113986791A (zh) * 2021-09-13 2022-01-28 西安电子科技大学 一种智能网卡快速dma设计方法、系统、设备及终端
CN113986791B (zh) * 2021-09-13 2024-02-02 西安电子科技大学 一种智能网卡快速dma设计方法、系统、设备及终端
CN113835891A (zh) * 2021-09-24 2021-12-24 哲库科技(北京)有限公司 资源分配方法、装置、电子设备及计算机可读存储介质
CN115473861A (zh) * 2022-08-18 2022-12-13 珠海高凌信息科技股份有限公司 基于通信与计算分离的高性能处理系统和方法、存储介质
CN115473861B (zh) * 2022-08-18 2023-11-03 珠海高凌信息科技股份有限公司 基于通信与计算分离的高性能处理系统和方法、存储介质
CN115905046A (zh) * 2022-12-23 2023-04-04 科东(广州)软件科技有限公司 网卡驱动数据包处理方法、装置、电子设备及存储介质
CN115905046B (zh) * 2022-12-23 2023-07-07 科东(广州)软件科技有限公司 网卡驱动数据包处理方法、装置、电子设备及存储介质
CN117411842A (zh) * 2023-12-13 2024-01-16 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质
CN117411842B (zh) * 2023-12-13 2024-02-27 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质

Also Published As

Publication number Publication date
CN113225307B (zh) 2022-06-28

Similar Documents

Publication Publication Date Title
CN113225307B (zh) 卸载引擎网卡中描述符预读取的优化方法、系统及终端
US11899596B2 (en) System and method for facilitating dynamic command management in a network interface controller (NIC)
US20180159803A1 (en) Header replication in accelerated tcp (transport control protocol) stack processing
US7930437B2 (en) Network adapter with shared database for message context information
US7295565B2 (en) System and method for sharing a resource among multiple queues
US6615282B1 (en) Adaptive messaging
CN112084136B (zh) 队列缓存管理方法、系统、存储介质、计算机设备及应用
US11301408B1 (en) Asymmetric read / write architecture for enhanced throughput and reduced latency
CN112953967A (zh) 网络协议卸载装置和数据传输系统
US20230283578A1 (en) Method for forwarding data packet, electronic device, and storage medium for the same
CN112559436B (zh) 一种rdma通信设备的上下文访问方法及系统
US20080162663A1 (en) Computer system with network interface retransmit
EP1891503B1 (en) Concurrent read response acknowledge enhanced direct memory access unit
CN113079113B (zh) 数据传输装置和数据传输系统
US9176912B2 (en) Processor to message-based network interface using speculative techniques
US7822051B1 (en) Method and system for transmitting packets
US10990447B1 (en) System and method for controlling a flow of storage access requests
US20230325075A1 (en) Methods and systems for managing memory buffer usage while processing computer system operations
CN117873920A (zh) 一种rdma的内存翻译表应用方法及系统
CN117785766A (zh) 基于dpdk+qdma的cpu与外设的数据传输方法
CN117931391A (zh) 一种基于rmda的无损高效的数据处理方法及网络接口卡
CN113867945A (zh) 数据处理方法、fpga加速卡及计算机可读存储介质
CN115086310A (zh) 一种高吞吐量、低延迟的数据包转发方法
CN115080258A (zh) 数据传输系统及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant